diff --git a/.env b/.env
index fc20761..3ec5250 100644
--- a/.env
+++ b/.env
@@ -6,3 +6,6 @@ BITBUCKET_SERVER_URL=
 BITBUCKET_SERVER_TOKEN=
 BITBUCKET_SERVER_TEST_PROJECT_KEY=
 BITBUCKET_SERVER_TEST_PROJECT_NAME=
+
+SKIP_BITBUCKET_CLOUD=false
+SKIP_BITBUCKET_SERVER=true
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..2dc9af9
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+pnpm-lock.yaml linguist-generated
+src/cloud/openapi/openapi-typescript.ts linguist-generated
+src/cloud/openapi/swagger.v3.json linguist-generated
+src/server/openapi/openapi-typescript.ts linguist-generated
+src/server/openapi/swagger.v3.json linguist-generated
diff --git a/.github/authorized_keys b/.github/authorized_keys
deleted file mode 100644
index 8b4592d..0000000
--- a/.github/authorized_keys
+++ /dev/null
@@ -1 +0,0 @@
-41898282+github-actions[bot]@users.noreply.github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJwlBXpWbU695PCyqzVdh+pmps81LzlZak63ODGmlo8P @coderabbitai/bitbucket
diff --git a/.github/workflows/node.js.yaml b/.github/workflows/node.js.yaml
index afa34ee..f41aaf7 100644
--- a/.github/workflows/node.js.yaml
+++ b/.github/workflows/node.js.yaml
@@ -1,10 +1,15 @@
 name: Node.js CI
 
 on:
-  push:
-    branches: main
+  merge_group:
+    branches:
+      - main
   pull_request:
-    branches: main
+    branches:
+      - main
+  push:
+    branches:
+      - main
 
 jobs:
   test:
@@ -19,10 +24,28 @@ jobs:
         with:
           node-version: latest
           cache: pnpm
+
+      - name: Install Twingate
+        run: |
+          echo "deb [trusted=yes] https://packages.twingate.com/apt/ /" | sudo tee /etc/apt/sources.list.d/twingate.list
+          sudo apt update -yq
+          sudo apt install -yq twingate
+
+      - name: Setup and start Twingate
+        env:
+          TWINGATE_SERVICE_KEY: ${{ secrets.TWINGATE_SCM_TOOLS_SERVICE_KEY }}
+        run: |
+          echo $TWINGATE_SERVICE_KEY | sudo twingate setup --headless=-
+          sudo twingate start
+
+      - name: Twingate status
+        run: twingate status
+
       - run: pnpm install --frozen-lockfile --strict-peer-dependencies
       - run: pnpm run build --noEmit
       - run: pnpm run lint
-      - run: pnpm run test run
+
+      - run: pnpm run test
         if: github.actor != 'dependabot[bot]'
         env:
           BITBUCKET_CLOUD_USERNAME: ${{ secrets.BITBUCKET_CLOUD_USERNAME }}
@@ -31,3 +54,72 @@ jobs:
           BITBUCKET_SERVER_TOKEN: ${{ secrets.BITBUCKET_SERVER_TOKEN }}
           BITBUCKET_SERVER_TEST_PROJECT_KEY: ${{ vars.BITBUCKET_SERVER_TEST_PROJECT_KEY }}
           BITBUCKET_SERVER_TEST_PROJECT_NAME: ${{ vars.BITBUCKET_SERVER_TEST_PROJECT_NAME }}
+
+  fix:
+    runs-on: ubuntu-latest
+
+    permissions:
+      contents: write
+
+    needs:
+      - test
+
+    if: failure() && github.event_name != 'merge_group' && github.actor != 'github-actions[bot]' && github.actor != 'nektos/act'
+
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          ref: ${{ github.ref }}
+          ssh-key: ${{ secrets.DEPLOY_KEY_PRIVATE }}
+      - uses: pnpm/action-setup@v4
+        with:
+          version: latest
+      - uses: actions/setup-node@v4
+        with:
+          cache: pnpm
+          node-version: latest
+
+      - run: |
+          pnpm install --fix-lockfile --no-frozen-lockfile
+          git add .
+      - id: commit-lockfile
+        uses: qoomon/actions--create-commit@v1
+        with:
+          message: |
+            📌 pnpm install --fix-lockfile
+
+            [dependabot skip]
+          skip-empty: true
+
+      - run: |
+          pnpm run format
+          git add .
+      - id: commit-format
+        uses: qoomon/actions--create-commit@v1
+        with:
+          message: |
+            🎨 pnpm run format
+
+            [dependabot skip]
+          skip-empty: true
+
+      - run: |
+          pnpm run lint:fix
+          git add .
+      - id: commit-lint
+        uses: qoomon/actions--create-commit@v1
+        with:
+          message: |
+            🚨 pnpm run lint:fix
+
+            [dependabot skip]
+          skip-empty: true
+
+      - name: Push
+        if: steps.commit-lockfile.outputs.commit || steps.commit-format.outputs.commit || steps.commit-lint.outputs.commit
+        run: |
+          eval `ssh-agent -s`
+          ssh-add - <<< "$DEPLOY_KEY_PRIVATE"
+          git push
+        env:
+          DEPLOY_KEY_PRIVATE: ${{ secrets.DEPLOY_KEY_PRIVATE }}
diff --git a/.github/workflows/pnpm-publish.yaml b/.github/workflows/pnpm-publish.yaml
index 85e6772..6d831f3 100644
--- a/.github/workflows/pnpm-publish.yaml
+++ b/.github/workflows/pnpm-publish.yaml
@@ -45,13 +45,6 @@ jobs:
           NODE_AUTH_TOKEN: ${{ secrets.CODERABBIT_NPM_TOKEN }}
 
       - run: pnpm pack --pack-gzip-level 9
-      - name: Sign
-        run: |
-          eval `ssh-agent -s`
-          ssh-add - <<< '${{ secrets.DEPLOY_KEY_PRIVATE }}'
-          echo '${{ vars.DEPLOY_KEY_PUBLIC }}' > '${{ runner.temp }}/DEPLOY_KEY_PUBLIC.pub'
-          ssh-keygen -Y sign -f '${{ runner.temp }}/DEPLOY_KEY_PUBLIC.pub' -n file coderabbitai-bitbucket-*.tgz
-          ssh-keygen -Y verify -f ./.github/authorized_keys -I '41898282+github-actions[bot]@users.noreply.github.com' -n file -s coderabbitai-bitbucket-*.tgz.sig < coderabbitai-bitbucket-*.tgz
-      - run: gh release upload ${{ github.ref_name }} coderabbitai-bitbucket-*.tgz coderabbitai-bitbucket-*.tgz.sig
+      - run: gh release upload ${{ github.ref_name }} coderabbitai-bitbucket-*.tgz
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/pnpm-version-patch.yaml b/.github/workflows/pnpm-version-patch.yaml
index 06c3a6c..e752fbf 100644
--- a/.github/workflows/pnpm-version-patch.yaml
+++ b/.github/workflows/pnpm-version-patch.yaml
@@ -6,43 +6,91 @@ jobs:
   patch:
     runs-on: ubuntu-latest
 
+    if: github.actor != 'nektos/act' && github.ref_name == 'main'
+
     permissions:
       contents: write
 
-    if: github.actor != 'nektos/act' && github.ref_name == 'main'
+    outputs:
+      version: ${{ steps.patch.outputs.VERSION }}
 
     steps:
       - uses: actions/checkout@v4
         with:
+          ref: ${{ github.ref }}
           ssh-key: ${{ secrets.DEPLOY_KEY_PRIVATE }}
       - uses: pnpm/action-setup@v4
         with:
           version: latest
-      - uses: actions/setup-node@v4
-        with:
-          cache: pnpm
-          node-version: latest
-      - name: Configure Git, patch, release and push
+
+      - id: patch
         run: |
-          git config user.name 'github-actions[bot]'
-          git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
+          echo "VERSION=$(pnpm version patch --no-git-tag-version)" >> "$GITHUB_OUTPUT"
+          git add .
 
-          git config commit.gpgsign true
-          git config gpg.format ssh
-          git config push.gpgSign 'if-asked'
-          git config tag.gpgSign true
-          git config user.signingkey 'key::${{ vars.DEPLOY_KEY_PUBLIC }}'
+      - id: commit
+        uses: qoomon/actions--create-commit@v1
+        with:
+          message: 🔖 ${{ steps.patch.outputs.VERSION }}
 
+      - name: Push
+        run: |
           eval `ssh-agent -s`
-          ssh-add - <<< '${{ secrets.DEPLOY_KEY_PRIVATE }}'
+          ssh-add - <<< "$DEPLOY_KEY_PRIVATE"
+          git push
+        env:
+          DEPLOY_KEY_PRIVATE: ${{ secrets.DEPLOY_KEY_PRIVATE }}
 
-          VERSION=$(pnpm version patch --no-git-tag-version)
+      - run: gh release create "$VERSION" --generate-notes --target "$COMMIT" --title "$VERSION"
+        env:
+          COMMIT: ${{ steps.commit.outputs.commit }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          VERSION: ${{ steps.patch.outputs.VERSION }}
 
-          git commit --all --message "🔖 $VERSION"
-          git tag --annotate --message "🔖 $VERSION" --sign $VERSION
-          git push
-          git push --tags
+  publish:
+    runs-on: ubuntu-latest
+
+    needs: patch
+
+    permissions:
+      contents: write # Upload the release files
+      id-token: write # Add `--provenance`
+      packages: write # Publish the package
+
+    if: github.actor != 'nektos/act'
+
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          ref: ${{ needs.patch.outputs.version }}
+      - uses: pnpm/action-setup@v4
+        with:
+          version: latest
+      - uses: actions/setup-node@v4
+        with:
+          cache: pnpm
+          node-version: latest
+      - run: pnpm install
+      - run: pnpm build
+
+      - uses: actions/setup-node@v4
+        with:
+          registry-url: https://npm.pkg.github.com
+          scope: "@coderabbitai"
+      - run: pnpm publish --access public --no-git-checks --provenance
+        env:
+          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+      - uses: actions/setup-node@v4
+        with:
+          registry-url: https://registry.npmjs.org
+          scope: "@coderabbitai"
+      - run: pnpm publish --access public --no-git-checks --provenance
+        env:
+          NODE_AUTH_TOKEN: ${{ secrets.CODERABBIT_NPM_TOKEN }}
 
-          gh release create $VERSION --generate-notes --title $VERSION --verify-tag
+      - run: pnpm pack --pack-gzip-level 9
+      - run: gh release upload "$VERSION" coderabbitai-bitbucket-*.tgz
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          VERSION: ${{ needs.patch.outputs.version }}
diff --git a/package.json b/package.json
index 2adedbb..f82e099 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "@coderabbitai/bitbucket",
-	"version": "1.1.1",
+	"version": "1.1.2",
 	"description": "CodeRabbit's TypeScript API client for connecting to Bitbucket Cloud and Bitbucket Data Center",
 	"keywords": [
 		"bitbucket-api-v1",
@@ -33,13 +33,14 @@
 	"scripts": {
 		"build": "tsc",
 		"clean": "rm -rf dist docs node_modules tsconfig.tsbuildinfo",
-		"dev": "tsx ./src/main.ts",
+		"dev": "node ./src/main.ts",
 		"docs": "typedoc",
 		"format": "prettier --write .",
 		"lint": "eslint . && markdownlint-cli2 \"**/*.md\" && prettier --check .",
 		"lint:fix": "eslint --fix --quiet .; markdownlint-cli2 \"**/*.md\" --fix; prettier --list-different --write .",
 		"start": "node dist/main.js",
-		"test": "vitest",
+		"test": "vitest run",
+		"test:watch": "vitest",
 		"openapi-typescript": "pnpm run openapi-typescript:cloud && pnpm run openapi-typescript:server",
 		"preopenapi-typescript:cloud": "curl --output ./src/cloud/openapi/swagger.v3.json https://dac-static.atlassian.com/cloud/bitbucket/swagger.v3.json",
 		"openapi-typescript:cloud": "openapi-typescript ./src/cloud/openapi/swagger.v3.json --output ./src/cloud/openapi/openapi-typescript.ts --immutable --empty-objects-unknown --alphabetize --root-types",
@@ -49,24 +50,24 @@
 		"postopenapi-typescript:server": "ts-autofix ./src/server/openapi && pnpm run lint:fix"
 	},
 	"dependencies": {
-		"openapi-fetch": "^0.12.2"
+		"openapi-fetch": "^0.13.4"
 	},
 	"devDependencies": {
-		"@eslint/js": "^9.12.0",
-		"@types/node": "^22.7.6",
-		"dotenv": "^16.4.5",
-		"eslint": "^9.12.0",
-		"eslint-config-prettier": "^9.1.0",
-		"globals": "^15.11.0",
-		"markdownlint-cli2": "^0.14.0",
-		"openapi-typescript": "^7.4.1",
-		"prettier": "^3.3.3",
+		"@eslint/js": "^9.21.0",
+		"@natoboram/load_env": "^1.0.0",
+		"@types/node": "^22.13.5",
+		"dotenv": "^16.4.7",
+		"eslint": "^9.21.0",
+		"eslint-config-prettier": "^10.0.2",
+		"globals": "^16.0.0",
+		"markdownlint-cli2": "^0.17.2",
+		"openapi-typescript": "^7.6.1",
+		"prettier": "^3.5.2",
 		"ts-autofix": "^1.0.0",
-		"tsx": "^4.19.1",
-		"typedoc": "^0.26.10",
-		"typescript": "5.7.0-beta",
-		"typescript-eslint": "^8.10.0",
-		"vitest": "^2.1.3"
+		"typedoc": "^0.27.9",
+		"typescript": "5.8.2",
+		"typescript-eslint": "^8.25.0",
+		"vitest": "^3.0.7"
 	},
 	"type": "module",
 	"exports": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c0f4365..c23c740 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,86 +9,76 @@ importers:
   .:
     dependencies:
       openapi-fetch:
-        specifier: ^0.12.2
-        version: 0.12.2
+        specifier: ^0.13.4
+        version: 0.13.4
     devDependencies:
       '@eslint/js':
-        specifier: ^9.12.0
-        version: 9.12.0
+        specifier: ^9.21.0
+        version: 9.21.0
+      '@natoboram/load_env':
+        specifier: ^1.0.0
+        version: 1.0.0
       '@types/node':
-        specifier: ^22.7.6
-        version: 22.7.6
+        specifier: ^22.13.5
+        version: 22.13.8
       dotenv:
-        specifier: ^16.4.5
-        version: 16.4.5
+        specifier: ^16.4.7
+        version: 16.4.7
       eslint:
-        specifier: ^9.12.0
-        version: 9.12.0
+        specifier: ^9.21.0
+        version: 9.21.0
       eslint-config-prettier:
-        specifier: ^9.1.0
-        version: 9.1.0(eslint@9.12.0)
+        specifier: ^10.0.2
+        version: 10.0.2(eslint@9.21.0)
       globals:
-        specifier: ^15.11.0
-        version: 15.11.0
+        specifier: ^16.0.0
+        version: 16.0.0
       markdownlint-cli2:
-        specifier: ^0.14.0
-        version: 0.14.0
+        specifier: ^0.17.2
+        version: 0.17.2
       openapi-typescript:
-        specifier: ^7.4.1
-        version: 7.4.1(typescript@5.7.0-beta)
+        specifier: ^7.6.1
+        version: 7.6.1(typescript@5.8.2)
       prettier:
-        specifier: ^3.3.3
-        version: 3.3.3
+        specifier: ^3.5.2
+        version: 3.5.2
       ts-autofix:
         specifier: ^1.0.0
         version: 1.0.0
-      tsx:
-        specifier: ^4.19.1
-        version: 4.19.1
       typedoc:
-        specifier: ^0.26.10
-        version: 0.26.10(typescript@5.7.0-beta)
+        specifier: ^0.27.9
+        version: 0.27.9(typescript@5.8.2)
       typescript:
-        specifier: 5.7.0-beta
-        version: 5.7.0-beta
+        specifier: 5.8.2
+        version: 5.8.2
       typescript-eslint:
-        specifier: ^8.10.0
-        version: 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
+        specifier: ^8.25.0
+        version: 8.25.0(eslint@9.21.0)(typescript@5.8.2)
       vitest:
-        specifier: ^2.1.3
-        version: 2.1.3(@types/node@22.7.6)
+        specifier: ^3.0.7
+        version: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0)
 
 packages:
 
-  '@babel/code-frame@7.25.7':
-    resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==}
+  '@babel/code-frame@7.26.2':
+    resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/helper-validator-identifier@7.25.7':
-    resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
+  '@babel/helper-validator-identifier@7.25.9':
+    resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/highlight@7.25.7':
-    resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==}
-    engines: {node: '>=6.9.0'}
-
-  '@esbuild/aix-ppc64@0.21.5':
-    resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [aix]
-
   '@esbuild/aix-ppc64@0.23.1':
     resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
     engines: {node: '>=18'}
     cpu: [ppc64]
     os: [aix]
 
-  '@esbuild/android-arm64@0.21.5':
-    resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [android]
+  '@esbuild/aix-ppc64@0.25.0':
+    resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
+    engines: {node: '>=18'}
+    cpu: [ppc64]
+    os: [aix]
 
   '@esbuild/android-arm64@0.23.1':
     resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
@@ -96,10 +86,10 @@ packages:
     cpu: [arm64]
     os: [android]
 
-  '@esbuild/android-arm@0.21.5':
-    resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
-    engines: {node: '>=12'}
-    cpu: [arm]
+  '@esbuild/android-arm64@0.25.0':
+    resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [android]
 
   '@esbuild/android-arm@0.23.1':
@@ -108,10 +98,10 @@ packages:
     cpu: [arm]
     os: [android]
 
-  '@esbuild/android-x64@0.21.5':
-    resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
+  '@esbuild/android-arm@0.25.0':
+    resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
+    engines: {node: '>=18'}
+    cpu: [arm]
     os: [android]
 
   '@esbuild/android-x64@0.23.1':
@@ -120,11 +110,11 @@ packages:
     cpu: [x64]
     os: [android]
 
-  '@esbuild/darwin-arm64@0.21.5':
-    resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [darwin]
+  '@esbuild/android-x64@0.25.0':
+    resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [android]
 
   '@esbuild/darwin-arm64@0.23.1':
     resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
@@ -132,10 +122,10 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
-  '@esbuild/darwin-x64@0.21.5':
-    resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
+  '@esbuild/darwin-arm64@0.25.0':
+    resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [darwin]
 
   '@esbuild/darwin-x64@0.23.1':
@@ -144,11 +134,11 @@ packages:
     cpu: [x64]
     os: [darwin]
 
-  '@esbuild/freebsd-arm64@0.21.5':
-    resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [freebsd]
+  '@esbuild/darwin-x64@0.25.0':
+    resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [darwin]
 
   '@esbuild/freebsd-arm64@0.23.1':
     resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
@@ -156,10 +146,10 @@ packages:
     cpu: [arm64]
     os: [freebsd]
 
-  '@esbuild/freebsd-x64@0.21.5':
-    resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
+  '@esbuild/freebsd-arm64@0.25.0':
+    resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [freebsd]
 
   '@esbuild/freebsd-x64@0.23.1':
@@ -168,11 +158,11 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
-  '@esbuild/linux-arm64@0.21.5':
-    resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [linux]
+  '@esbuild/freebsd-x64@0.25.0':
+    resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [freebsd]
 
   '@esbuild/linux-arm64@0.23.1':
     resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
@@ -180,10 +170,10 @@ packages:
     cpu: [arm64]
     os: [linux]
 
-  '@esbuild/linux-arm@0.21.5':
-    resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
-    engines: {node: '>=12'}
-    cpu: [arm]
+  '@esbuild/linux-arm64@0.25.0':
+    resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [linux]
 
   '@esbuild/linux-arm@0.23.1':
@@ -192,10 +182,10 @@ packages:
     cpu: [arm]
     os: [linux]
 
-  '@esbuild/linux-ia32@0.21.5':
-    resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
+  '@esbuild/linux-arm@0.25.0':
+    resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
+    engines: {node: '>=18'}
+    cpu: [arm]
     os: [linux]
 
   '@esbuild/linux-ia32@0.23.1':
@@ -204,10 +194,10 @@ packages:
     cpu: [ia32]
     os: [linux]
 
-  '@esbuild/linux-loong64@0.21.5':
-    resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
-    engines: {node: '>=12'}
-    cpu: [loong64]
+  '@esbuild/linux-ia32@0.25.0':
+    resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
+    engines: {node: '>=18'}
+    cpu: [ia32]
     os: [linux]
 
   '@esbuild/linux-loong64@0.23.1':
@@ -216,10 +206,10 @@ packages:
     cpu: [loong64]
     os: [linux]
 
-  '@esbuild/linux-mips64el@0.21.5':
-    resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
-    engines: {node: '>=12'}
-    cpu: [mips64el]
+  '@esbuild/linux-loong64@0.25.0':
+    resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
+    engines: {node: '>=18'}
+    cpu: [loong64]
     os: [linux]
 
   '@esbuild/linux-mips64el@0.23.1':
@@ -228,10 +218,10 @@ packages:
     cpu: [mips64el]
     os: [linux]
 
-  '@esbuild/linux-ppc64@0.21.5':
-    resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
+  '@esbuild/linux-mips64el@0.25.0':
+    resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
+    engines: {node: '>=18'}
+    cpu: [mips64el]
     os: [linux]
 
   '@esbuild/linux-ppc64@0.23.1':
@@ -240,10 +230,10 @@ packages:
     cpu: [ppc64]
     os: [linux]
 
-  '@esbuild/linux-riscv64@0.21.5':
-    resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
-    engines: {node: '>=12'}
-    cpu: [riscv64]
+  '@esbuild/linux-ppc64@0.25.0':
+    resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
+    engines: {node: '>=18'}
+    cpu: [ppc64]
     os: [linux]
 
   '@esbuild/linux-riscv64@0.23.1':
@@ -252,10 +242,10 @@ packages:
     cpu: [riscv64]
     os: [linux]
 
-  '@esbuild/linux-s390x@0.21.5':
-    resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
-    engines: {node: '>=12'}
-    cpu: [s390x]
+  '@esbuild/linux-riscv64@0.25.0':
+    resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
+    engines: {node: '>=18'}
+    cpu: [riscv64]
     os: [linux]
 
   '@esbuild/linux-s390x@0.23.1':
@@ -264,10 +254,10 @@ packages:
     cpu: [s390x]
     os: [linux]
 
-  '@esbuild/linux-x64@0.21.5':
-    resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
+  '@esbuild/linux-s390x@0.25.0':
+    resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
+    engines: {node: '>=18'}
+    cpu: [s390x]
     os: [linux]
 
   '@esbuild/linux-x64@0.23.1':
@@ -276,10 +266,16 @@ packages:
     cpu: [x64]
     os: [linux]
 
-  '@esbuild/netbsd-x64@0.21.5':
-    resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
-    engines: {node: '>=12'}
+  '@esbuild/linux-x64@0.25.0':
+    resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
+    engines: {node: '>=18'}
     cpu: [x64]
+    os: [linux]
+
+  '@esbuild/netbsd-arm64@0.25.0':
+    resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [netbsd]
 
   '@esbuild/netbsd-x64@0.23.1':
@@ -288,16 +284,22 @@ packages:
     cpu: [x64]
     os: [netbsd]
 
+  '@esbuild/netbsd-x64@0.25.0':
+    resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [netbsd]
+
   '@esbuild/openbsd-arm64@0.23.1':
     resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
     engines: {node: '>=18'}
     cpu: [arm64]
     os: [openbsd]
 
-  '@esbuild/openbsd-x64@0.21.5':
-    resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
-    engines: {node: '>=12'}
-    cpu: [x64]
+  '@esbuild/openbsd-arm64@0.25.0':
+    resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [openbsd]
 
   '@esbuild/openbsd-x64@0.23.1':
@@ -306,11 +308,11 @@ packages:
     cpu: [x64]
     os: [openbsd]
 
-  '@esbuild/sunos-x64@0.21.5':
-    resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
-    engines: {node: '>=12'}
+  '@esbuild/openbsd-x64@0.25.0':
+    resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
+    engines: {node: '>=18'}
     cpu: [x64]
-    os: [sunos]
+    os: [openbsd]
 
   '@esbuild/sunos-x64@0.23.1':
     resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
@@ -318,11 +320,11 @@ packages:
     cpu: [x64]
     os: [sunos]
 
-  '@esbuild/win32-arm64@0.21.5':
-    resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [win32]
+  '@esbuild/sunos-x64@0.25.0':
+    resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [sunos]
 
   '@esbuild/win32-arm64@0.23.1':
     resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
@@ -330,10 +332,10 @@ packages:
     cpu: [arm64]
     os: [win32]
 
-  '@esbuild/win32-ia32@0.21.5':
-    resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
+  '@esbuild/win32-arm64@0.25.0':
+    resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
     os: [win32]
 
   '@esbuild/win32-ia32@0.23.1':
@@ -342,10 +344,10 @@ packages:
     cpu: [ia32]
     os: [win32]
 
-  '@esbuild/win32-x64@0.21.5':
-    resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
+  '@esbuild/win32-ia32@0.25.0':
+    resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
+    engines: {node: '>=18'}
+    cpu: [ia32]
     os: [win32]
 
   '@esbuild/win32-x64@0.23.1':
@@ -354,46 +356,55 @@ packages:
     cpu: [x64]
     os: [win32]
 
-  '@eslint-community/eslint-utils@4.4.0':
-    resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+  '@esbuild/win32-x64@0.25.0':
+    resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [win32]
+
+  '@eslint-community/eslint-utils@4.4.1':
+    resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
       eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
 
-  '@eslint-community/regexpp@4.11.1':
-    resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==}
+  '@eslint-community/regexpp@4.12.1':
+    resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
     engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
 
-  '@eslint/config-array@0.18.0':
-    resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+  '@eslint/config-array@0.19.2':
+    resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@eslint/core@0.6.0':
-    resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==}
+  '@eslint/core@0.12.0':
+    resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@eslint/eslintrc@3.1.0':
-    resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
+  '@eslint/eslintrc@3.3.0':
+    resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@eslint/js@9.12.0':
-    resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==}
+  '@eslint/js@9.21.0':
+    resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@eslint/object-schema@2.1.4':
-    resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
+  '@eslint/object-schema@2.1.6':
+    resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@eslint/plugin-kit@0.2.0':
-    resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==}
+  '@eslint/plugin-kit@0.2.7':
+    resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@humanfs/core@0.19.0':
-    resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==}
+  '@gerrit0/mini-shiki@1.27.2':
+    resolution: {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==}
+
+  '@humanfs/core@0.19.1':
+    resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
     engines: {node: '>=18.18.0'}
 
-  '@humanfs/node@0.16.5':
-    resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==}
+  '@humanfs/node@0.16.6':
+    resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
     engines: {node: '>=18.18.0'}
 
   '@humanwhocodes/module-importer@1.0.1':
@@ -404,9 +415,16 @@ packages:
     resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
     engines: {node: '>=18.18'}
 
+  '@humanwhocodes/retry@0.4.2':
+    resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
+    engines: {node: '>=18.18'}
+
   '@jridgewell/sourcemap-codec@1.5.0':
     resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
 
+  '@natoboram/load_env@1.0.0':
+    resolution: {integrity: sha512-nlrFCVlEV9Z0FhsTrC3I0vDV9dhCtiK28OV2QBxDtwjXd3p6Ed52Ftyhc3LGlan9Yy+9UDR1Hqw8W5Fqf0q//w==}
+
   '@nodelib/fs.scandir@2.1.5':
     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
     engines: {node: '>= 8'}
@@ -422,112 +440,124 @@ packages:
   '@redocly/ajv@8.11.2':
     resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==}
 
-  '@redocly/config@0.12.1':
-    resolution: {integrity: sha512-RW3rSirfsPdr0uvATijRDU3f55SuZV3m7/ppdTDvGw4IB0cmeZRkFmqTrchxMqWP50Gfg1tpHnjdxUCNo0E2qg==}
+  '@redocly/config@0.21.0':
+    resolution: {integrity: sha512-JBtrrjBIURTnzb7KUIWOF46vSgpfC3rO6Mm8LjtRjtTNCLTyB+mOuU7HrTkVcvUCEBuSuzkivlTHMWT4JETz9A==}
 
-  '@redocly/openapi-core@1.25.7':
-    resolution: {integrity: sha512-qidGKk4Bq0Ud0O8gRuXnDSLwVopwrf5+roNvpkvdQPVIHFSYJ5dscJkThdsn7OW8bNqahumQPWWczEh9l93FZw==}
-    engines: {node: '>=14.19.0', npm: '>=7.0.0'}
+  '@redocly/openapi-core@1.31.2':
+    resolution: {integrity: sha512-HScpiSuluLic9+QpsI2JWaegeDuRn3hximPBpiUpy4WdXf74Ev094kpUgjhiD3xDuP/KpVdchooAkLnzQ0X+vg==}
+    engines: {node: '>=18.17.0', npm: '>=9.5.0'}
 
-  '@rollup/rollup-android-arm-eabi@4.24.0':
-    resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==}
+  '@rollup/rollup-android-arm-eabi@4.34.8':
+    resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==}
     cpu: [arm]
     os: [android]
 
-  '@rollup/rollup-android-arm64@4.24.0':
-    resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==}
+  '@rollup/rollup-android-arm64@4.34.8':
+    resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==}
     cpu: [arm64]
     os: [android]
 
-  '@rollup/rollup-darwin-arm64@4.24.0':
-    resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==}
+  '@rollup/rollup-darwin-arm64@4.34.8':
+    resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==}
     cpu: [arm64]
     os: [darwin]
 
-  '@rollup/rollup-darwin-x64@4.24.0':
-    resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==}
+  '@rollup/rollup-darwin-x64@4.34.8':
+    resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==}
     cpu: [x64]
     os: [darwin]
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.24.0':
-    resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
+  '@rollup/rollup-freebsd-arm64@4.34.8':
+    resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==}
+    cpu: [arm64]
+    os: [freebsd]
+
+  '@rollup/rollup-freebsd-x64@4.34.8':
+    resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==}
+    cpu: [x64]
+    os: [freebsd]
+
+  '@rollup/rollup-linux-arm-gnueabihf@4.34.8':
+    resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm-musleabihf@4.24.0':
-    resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
+  '@rollup/rollup-linux-arm-musleabihf@4.34.8':
+    resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-gnu@4.24.0':
-    resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
+  '@rollup/rollup-linux-arm64-gnu@4.34.8':
+    resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-musl@4.24.0':
-    resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
+  '@rollup/rollup-linux-arm64-musl@4.34.8':
+    resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
-    resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
+  '@rollup/rollup-linux-loongarch64-gnu@4.34.8':
+    resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==}
+    cpu: [loong64]
+    os: [linux]
+
+  '@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
+    resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==}
     cpu: [ppc64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-gnu@4.24.0':
-    resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
+  '@rollup/rollup-linux-riscv64-gnu@4.34.8':
+    resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-s390x-gnu@4.24.0':
-    resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
+  '@rollup/rollup-linux-s390x-gnu@4.34.8':
+    resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==}
     cpu: [s390x]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-gnu@4.24.0':
-    resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
+  '@rollup/rollup-linux-x64-gnu@4.34.8':
+    resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-musl@4.24.0':
-    resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
+  '@rollup/rollup-linux-x64-musl@4.34.8':
+    resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-win32-arm64-msvc@4.24.0':
-    resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
+  '@rollup/rollup-win32-arm64-msvc@4.34.8':
+    resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==}
     cpu: [arm64]
     os: [win32]
 
-  '@rollup/rollup-win32-ia32-msvc@4.24.0':
-    resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
+  '@rollup/rollup-win32-ia32-msvc@4.34.8':
+    resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==}
     cpu: [ia32]
     os: [win32]
 
-  '@rollup/rollup-win32-x64-msvc@4.24.0':
-    resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==}
+  '@rollup/rollup-win32-x64-msvc@4.34.8':
+    resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==}
     cpu: [x64]
     os: [win32]
 
-  '@shikijs/core@1.22.0':
-    resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==}
-
-  '@shikijs/engine-javascript@1.22.0':
-    resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==}
+  '@shikijs/engine-oniguruma@1.29.2':
+    resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
 
-  '@shikijs/engine-oniguruma@1.22.0':
-    resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==}
+  '@shikijs/types@1.29.2':
+    resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
 
-  '@shikijs/types@1.22.0':
-    resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==}
-
-  '@shikijs/vscode-textmate@9.3.0':
-    resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==}
+  '@shikijs/vscode-textmate@10.0.2':
+    resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
 
   '@sindresorhus/merge-streams@2.3.0':
     resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
     engines: {node: '>=18'}
 
+  '@types/debug@4.1.12':
+    resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
   '@types/estree@1.0.6':
     resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
 
@@ -537,117 +567,109 @@ packages:
   '@types/json-schema@7.0.15':
     resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
 
-  '@types/mdast@4.0.4':
-    resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+  '@types/katex@0.16.7':
+    resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
+
+  '@types/ms@2.1.0':
+    resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
 
-  '@types/node@22.7.6':
-    resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==}
+  '@types/node@22.13.8':
+    resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==}
+
+  '@types/unist@2.0.11':
+    resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
 
   '@types/unist@3.0.3':
     resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
 
-  '@typescript-eslint/eslint-plugin@8.10.0':
-    resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==}
+  '@typescript-eslint/eslint-plugin@8.25.0':
+    resolution: {integrity: sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
       eslint: ^8.57.0 || ^9.0.0
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+      typescript: '>=4.8.4 <5.8.0'
 
-  '@typescript-eslint/parser@8.10.0':
-    resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==}
+  '@typescript-eslint/parser@8.25.0':
+    resolution: {integrity: sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       eslint: ^8.57.0 || ^9.0.0
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+      typescript: '>=4.8.4 <5.8.0'
 
-  '@typescript-eslint/scope-manager@8.10.0':
-    resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==}
+  '@typescript-eslint/scope-manager@8.25.0':
+    resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@typescript-eslint/type-utils@8.10.0':
-    resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==}
+  '@typescript-eslint/type-utils@8.25.0':
+    resolution: {integrity: sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+      eslint: ^8.57.0 || ^9.0.0
+      typescript: '>=4.8.4 <5.8.0'
 
-  '@typescript-eslint/types@8.10.0':
-    resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==}
+  '@typescript-eslint/types@8.25.0':
+    resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@typescript-eslint/typescript-estree@8.10.0':
-    resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==}
+  '@typescript-eslint/typescript-estree@8.25.0':
+    resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+      typescript: '>=4.8.4 <5.8.0'
 
-  '@typescript-eslint/utils@8.10.0':
-    resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==}
+  '@typescript-eslint/utils@8.25.0':
+    resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
       eslint: ^8.57.0 || ^9.0.0
+      typescript: '>=4.8.4 <5.8.0'
 
-  '@typescript-eslint/visitor-keys@8.10.0':
-    resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==}
+  '@typescript-eslint/visitor-keys@8.25.0':
+    resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@ungap/structured-clone@1.2.0':
-    resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
-
-  '@vitest/expect@2.1.3':
-    resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==}
+  '@vitest/expect@3.0.7':
+    resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==}
 
-  '@vitest/mocker@2.1.3':
-    resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==}
+  '@vitest/mocker@3.0.7':
+    resolution: {integrity: sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==}
     peerDependencies:
-      '@vitest/spy': 2.1.3
-      msw: ^2.3.5
-      vite: ^5.0.0
+      msw: ^2.4.9
+      vite: ^5.0.0 || ^6.0.0
     peerDependenciesMeta:
       msw:
         optional: true
       vite:
         optional: true
 
-  '@vitest/pretty-format@2.1.3':
-    resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==}
+  '@vitest/pretty-format@3.0.7':
+    resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==}
 
-  '@vitest/runner@2.1.3':
-    resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==}
+  '@vitest/runner@3.0.7':
+    resolution: {integrity: sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==}
 
-  '@vitest/snapshot@2.1.3':
-    resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==}
+  '@vitest/snapshot@3.0.7':
+    resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==}
 
-  '@vitest/spy@2.1.3':
-    resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==}
+  '@vitest/spy@3.0.7':
+    resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==}
 
-  '@vitest/utils@2.1.3':
-    resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==}
+  '@vitest/utils@3.0.7':
+    resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==}
 
   acorn-jsx@5.3.2:
     resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
     peerDependencies:
       acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
 
-  acorn@8.13.0:
-    resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==}
+  acorn@8.14.0:
+    resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
     engines: {node: '>=0.4.0'}
     hasBin: true
 
-  agent-base@7.1.1:
-    resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
+  agent-base@7.1.3:
+    resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
     engines: {node: '>= 14'}
 
   ajv@6.12.6:
@@ -661,10 +683,6 @@ packages:
     resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
     engines: {node: '>=8'}
 
-  ansi-styles@3.2.1:
-    resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
-    engines: {node: '>=4'}
-
   ansi-styles@4.3.0:
     resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
     engines: {node: '>=8'}
@@ -697,17 +715,10 @@ packages:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
 
-  ccount@2.0.1:
-    resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
-
-  chai@5.1.1:
-    resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
+  chai@5.2.0:
+    resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
     engines: {node: '>=12'}
 
-  chalk@2.4.2:
-    resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
-    engines: {node: '>=4'}
-
   chalk@4.1.2:
     resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
     engines: {node: '>=10'}
@@ -715,12 +726,15 @@ packages:
   change-case@5.4.4:
     resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==}
 
-  character-entities-html4@2.1.0:
-    resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
-
   character-entities-legacy@3.0.0:
     resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
 
+  character-entities@2.0.2:
+    resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+  character-reference-invalid@2.0.1:
+    resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
   check-error@2.1.1:
     resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
     engines: {node: '>= 16'}
@@ -729,16 +743,10 @@ packages:
     resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
     engines: {node: '>=0.8'}
 
-  color-convert@1.9.3:
-    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
   color-convert@2.0.1:
     resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
     engines: {node: '>=7.0.0'}
 
-  color-name@1.1.3:
-    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
   color-name@1.1.4:
     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
 
@@ -749,9 +757,6 @@ packages:
     resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
     engines: {node: '>=8.0.0'}
 
-  comma-separated-tokens@2.0.3:
-    resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
-
   commander@8.3.0:
     resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
     engines: {node: '>= 12'}
@@ -759,12 +764,12 @@ packages:
   concat-map@0.0.1:
     resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
 
-  cross-spawn@7.0.3:
-    resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+  cross-spawn@7.0.6:
+    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
     engines: {node: '>= 8'}
 
-  debug@4.3.7:
-    resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+  debug@4.4.0:
+    resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
     engines: {node: '>=6.0'}
     peerDependencies:
       supports-color: '*'
@@ -772,6 +777,9 @@ packages:
       supports-color:
         optional: true
 
+  decode-named-character-reference@1.0.2:
+    resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+
   deep-eql@5.0.2:
     resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
     engines: {node: '>=6'}
@@ -789,52 +797,51 @@ packages:
   devlop@1.1.0:
     resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
 
-  dotenv@16.4.5:
-    resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+  dotenv@16.4.7:
+    resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
     engines: {node: '>=12'}
 
   entities@4.5.0:
     resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
     engines: {node: '>=0.12'}
 
-  esbuild@0.21.5:
-    resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
-    engines: {node: '>=12'}
-    hasBin: true
+  es-module-lexer@1.6.0:
+    resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
 
   esbuild@0.23.1:
     resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
     engines: {node: '>=18'}
     hasBin: true
 
-  escape-string-regexp@1.0.5:
-    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
-    engines: {node: '>=0.8.0'}
+  esbuild@0.25.0:
+    resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
+    engines: {node: '>=18'}
+    hasBin: true
 
   escape-string-regexp@4.0.0:
     resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
     engines: {node: '>=10'}
 
-  eslint-config-prettier@9.1.0:
-    resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
+  eslint-config-prettier@10.0.2:
+    resolution: {integrity: sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==}
     hasBin: true
     peerDependencies:
       eslint: '>=7.0.0'
 
-  eslint-scope@8.1.0:
-    resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==}
+  eslint-scope@8.2.0:
+    resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
   eslint-visitor-keys@3.4.3:
     resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  eslint-visitor-keys@4.1.0:
-    resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
+  eslint-visitor-keys@4.2.0:
+    resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  eslint@9.12.0:
-    resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==}
+  eslint@9.21.0:
+    resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     hasBin: true
     peerDependencies:
@@ -843,8 +850,8 @@ packages:
       jiti:
         optional: true
 
-  espree@10.2.0:
-    resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==}
+  espree@10.3.0:
+    resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
   esquery@1.6.0:
@@ -866,11 +873,15 @@ packages:
     resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
     engines: {node: '>=0.10.0'}
 
+  expect-type@1.1.0:
+    resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==}
+    engines: {node: '>=12.0.0'}
+
   fast-deep-equal@3.1.3:
     resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
 
-  fast-glob@3.3.2:
-    resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+  fast-glob@3.3.3:
+    resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
     engines: {node: '>=8.6.0'}
 
   fast-json-stable-stringify@2.1.0:
@@ -879,8 +890,8 @@ packages:
   fast-levenshtein@2.0.6:
     resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
 
-  fastq@1.17.1:
-    resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+  fastq@1.19.1:
+    resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
 
   file-entry-cache@8.0.0:
     resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
@@ -898,16 +909,16 @@ packages:
     resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
     engines: {node: '>=16'}
 
-  flatted@3.3.1:
-    resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+  flatted@3.3.3:
+    resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
 
   fsevents@2.3.3:
     resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
     engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
     os: [darwin]
 
-  get-tsconfig@4.8.1:
-    resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
+  get-tsconfig@4.10.0:
+    resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
 
   glob-parent@5.1.2:
     resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -921,8 +932,8 @@ packages:
     resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
     engines: {node: '>=18'}
 
-  globals@15.11.0:
-    resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==}
+  globals@16.0.0:
+    resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==}
     engines: {node: '>=18'}
 
   globby@14.0.2:
@@ -932,33 +943,20 @@ packages:
   graphemer@1.4.0:
     resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
 
-  has-flag@3.0.0:
-    resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
-    engines: {node: '>=4'}
-
   has-flag@4.0.0:
     resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
     engines: {node: '>=8'}
 
-  hast-util-to-html@9.0.3:
-    resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==}
-
-  hast-util-whitespace@3.0.0:
-    resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
-
-  html-void-elements@3.0.0:
-    resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
-
-  https-proxy-agent@7.0.5:
-    resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
+  https-proxy-agent@7.0.6:
+    resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
     engines: {node: '>= 14'}
 
   ignore@5.3.2:
     resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
     engines: {node: '>= 4'}
 
-  import-fresh@3.3.0:
-    resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+  import-fresh@3.3.1:
+    resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
     engines: {node: '>=6'}
 
   imurmurhash@0.1.4:
@@ -969,6 +967,15 @@ packages:
     resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==}
     engines: {node: '>=18'}
 
+  is-alphabetical@2.0.1:
+    resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+  is-alphanumerical@2.0.1:
+    resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
+  is-decimal@2.0.1:
+    resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
   is-extglob@2.1.1:
     resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
     engines: {node: '>=0.10.0'}
@@ -977,6 +984,9 @@ packages:
     resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
     engines: {node: '>=0.10.0'}
 
+  is-hexadecimal@2.0.1:
+    resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
   is-number@7.0.0:
     resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
     engines: {node: '>=0.12.0'}
@@ -1010,6 +1020,10 @@ packages:
   jsonc-parser@3.3.1:
     resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
 
+  katex@0.16.21:
+    resolution: {integrity: sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==}
+    hasBin: true
+
   keyv@4.5.4:
     resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
 
@@ -1024,20 +1038,17 @@ packages:
     resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
     engines: {node: '>=10'}
 
-  lodash.isequal@4.5.0:
-    resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
-
   lodash.merge@4.6.2:
     resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
 
-  loupe@3.1.2:
-    resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
+  loupe@3.1.3:
+    resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
 
   lunr@2.3.9:
     resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==}
 
-  magic-string@0.30.12:
-    resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
+  magic-string@0.30.17:
+    resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
 
   markdown-it@14.1.0:
     resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
@@ -1048,22 +1059,15 @@ packages:
     peerDependencies:
       markdownlint-cli2: '>=0.0.4'
 
-  markdownlint-cli2@0.14.0:
-    resolution: {integrity: sha512-2cqdWy56frU2FTpbuGb83mEWWYuUIYv6xS8RVEoUAuKNw/hXPar2UYGpuzUhlFMngE8Omaz4RBH52MzfRbGshw==}
+  markdownlint-cli2@0.17.2:
+    resolution: {integrity: sha512-XH06ZOi8wCrtOSSj3p8y3yJzwgzYOSa7lglNyS3fP05JPRzRGyjauBb5UvlLUSCGysMmULS1moxdRHHudV+g/Q==}
     engines: {node: '>=18'}
     hasBin: true
 
-  markdownlint-micromark@0.1.10:
-    resolution: {integrity: sha512-no5ZfdqAdWGxftCLlySHSgddEjyW4kui4z7amQcGsSKfYC5v/ou+8mIQVyg9KQMeEZLNtz9OPDTj7nnTnoR4FQ==}
+  markdownlint@0.37.4:
+    resolution: {integrity: sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ==}
     engines: {node: '>=18'}
 
-  markdownlint@0.35.0:
-    resolution: {integrity: sha512-wgp8yesWjFBL7bycA3hxwHRdsZGJhjhyP1dSxKVKrza0EPFYtn+mHtkVy6dvP1kGSjovyG5B8yNP6Frj0UFUJg==}
-    engines: {node: '>=18'}
-
-  mdast-util-to-hast@13.2.0:
-    resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
-
   mdurl@2.0.0:
     resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
 
@@ -1071,20 +1075,80 @@ packages:
     resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
     engines: {node: '>= 8'}
 
-  micromark-util-character@2.1.0:
-    resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==}
+  micromark-core-commonmark@2.0.2:
+    resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==}
+
+  micromark-extension-directive@3.0.2:
+    resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==}
+
+  micromark-extension-gfm-autolink-literal@2.1.0:
+    resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
+
+  micromark-extension-gfm-footnote@2.1.0:
+    resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
+
+  micromark-extension-gfm-table@2.1.0:
+    resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==}
+
+  micromark-extension-math@3.1.0:
+    resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==}
+
+  micromark-factory-destination@2.0.1:
+    resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
 
-  micromark-util-encode@2.0.0:
-    resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
+  micromark-factory-label@2.0.1:
+    resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
 
-  micromark-util-sanitize-uri@2.0.0:
-    resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
+  micromark-factory-space@2.0.1:
+    resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
 
-  micromark-util-symbol@2.0.0:
-    resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
+  micromark-factory-title@2.0.1:
+    resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
 
-  micromark-util-types@2.0.0:
-    resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
+  micromark-factory-whitespace@2.0.1:
+    resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
+  micromark-util-character@2.1.1:
+    resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+  micromark-util-chunked@2.0.1:
+    resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+  micromark-util-classify-character@2.0.1:
+    resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+  micromark-util-combine-extensions@2.0.1:
+    resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+  micromark-util-decode-numeric-character-reference@2.0.2:
+    resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+  micromark-util-encode@2.0.1:
+    resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+  micromark-util-html-tag-name@2.0.1:
+    resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+  micromark-util-normalize-identifier@2.0.1:
+    resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+  micromark-util-resolve-all@2.0.1:
+    resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
+  micromark-util-sanitize-uri@2.0.1:
+    resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+  micromark-util-subtokenize@2.1.0:
+    resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
+
+  micromark-util-symbol@2.0.1:
+    resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+  micromark-util-types@2.0.1:
+    resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==}
+
+  micromark@4.0.1:
+    resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==}
 
   micromatch@4.0.8:
     resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
@@ -1104,34 +1168,22 @@ packages:
   ms@2.1.3:
     resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
 
-  nanoid@3.3.7:
-    resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+  nanoid@3.3.8:
+    resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
     hasBin: true
 
   natural-compare@1.4.0:
     resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
 
-  node-fetch@2.7.0:
-    resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
-    engines: {node: 4.x || >=6.0.0}
-    peerDependencies:
-      encoding: ^0.1.0
-    peerDependenciesMeta:
-      encoding:
-        optional: true
+  openapi-fetch@0.13.4:
+    resolution: {integrity: sha512-JHX7UYjLEiHuQGCPxa3CCCIqe/nc4bTIF9c4UYVC8BegAbWoS3g4gJxKX5XcG7UtYQs2060kY6DH64KkvNZahg==}
 
-  oniguruma-to-js@0.4.3:
-    resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==}
+  openapi-typescript-helpers@0.0.15:
+    resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==}
 
-  openapi-fetch@0.12.2:
-    resolution: {integrity: sha512-ctMQ4LkkSWfIDUMuf1SYuPMsQ7ePcWAkYaMPW1lCDdk4WlV3Vulq1zoyGrwnFVvrBs5t7OOqNF+EKa8SAaovEA==}
-
-  openapi-typescript-helpers@0.0.13:
-    resolution: {integrity: sha512-z44WK2e7ygW3aUtAtiurfEACohf/Qt9g6BsejmIYgEoY4REHeRzgFJmO3ium0libsuzPc145I+8lE9aiiZrQvQ==}
-
-  openapi-typescript@7.4.1:
-    resolution: {integrity: sha512-HrRoWveViADezHCNgQqZmPKmQ74q7nuH/yg9ursFucZaYQNUqsX38fE/V2sKBHVM+pws4tAHpuh/ext2UJ/AoQ==}
+  openapi-typescript@7.6.1:
+    resolution: {integrity: sha512-F7RXEeo/heF3O9lOXo2bNjCOtfp7u+D6W3a3VNEH2xE6v+fxLtn5nq0uvUcA1F5aT+CMhNeC5Uqtg5tlXFX/ag==}
     hasBin: true
     peerDependencies:
       typescript: ^5.x
@@ -1152,6 +1204,9 @@ packages:
     resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
     engines: {node: '>=6'}
 
+  parse-entities@4.0.2:
+    resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+
   parse-json@8.1.0:
     resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==}
     engines: {node: '>=18'}
@@ -1168,8 +1223,8 @@ packages:
     resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
     engines: {node: '>=12'}
 
-  pathe@1.1.2:
-    resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+  pathe@2.0.3:
+    resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
 
   pathval@2.0.0:
     resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
@@ -1186,22 +1241,19 @@ packages:
     resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
     engines: {node: '>=4'}
 
-  postcss@8.4.47:
-    resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
+  postcss@8.5.3:
+    resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
     engines: {node: ^10 || ^12 || >=14}
 
   prelude-ls@1.2.1:
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
     engines: {node: '>= 0.8.0'}
 
-  prettier@3.3.3:
-    resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
+  prettier@3.5.2:
+    resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==}
     engines: {node: '>=14'}
     hasBin: true
 
-  property-information@6.5.0:
-    resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
-
   punycode.js@2.3.1:
     resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
     engines: {node: '>=6'}
@@ -1213,9 +1265,6 @@ packages:
   queue-microtask@1.2.3:
     resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
 
-  regex@4.3.3:
-    resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==}
-
   require-from-string@2.0.2:
     resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
     engines: {node: '>=0.10.0'}
@@ -1227,20 +1276,20 @@ packages:
   resolve-pkg-maps@1.0.0:
     resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
 
-  reusify@1.0.4:
-    resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+  reusify@1.1.0:
+    resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
     engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
 
-  rollup@4.24.0:
-    resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
+  rollup@4.34.8:
+    resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==}
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
   run-parallel@1.2.0:
     resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
 
-  semver@7.6.3:
-    resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+  semver@7.7.1:
+    resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
     engines: {node: '>=10'}
     hasBin: true
 
@@ -1252,9 +1301,6 @@ packages:
     resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
     engines: {node: '>=8'}
 
-  shiki@1.22.0:
-    resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==}
-
   siginfo@2.0.0:
     resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
 
@@ -1266,17 +1312,11 @@ packages:
     resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
     engines: {node: '>=0.10.0'}
 
-  space-separated-tokens@2.0.2:
-    resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
-
   stackback@0.0.2:
     resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
 
-  std-env@3.7.0:
-    resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
-
-  stringify-entities@4.0.4:
-    resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+  std-env@3.8.0:
+    resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==}
 
   strip-ansi@6.0.1:
     resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
@@ -1286,10 +1326,6 @@ packages:
     resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
     engines: {node: '>=8'}
 
-  supports-color@5.5.0:
-    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
-    engines: {node: '>=4'}
-
   supports-color@7.2.0:
     resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
     engines: {node: '>=8'}
@@ -1298,21 +1334,18 @@ packages:
     resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
     engines: {node: '>=12'}
 
-  text-table@0.2.0:
-    resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
   tinybench@2.9.0:
     resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
 
-  tinyexec@0.3.1:
-    resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
+  tinyexec@0.3.2:
+    resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
 
-  tinypool@1.0.1:
-    resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==}
+  tinypool@1.0.2:
+    resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
     engines: {node: ^18.0.0 || >=20.0.0}
 
-  tinyrainbow@1.2.0:
-    resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+  tinyrainbow@2.0.0:
+    resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
     engines: {node: '>=14.0.0'}
 
   tinyspy@3.0.2:
@@ -1323,24 +1356,18 @@ packages:
     resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
     engines: {node: '>=8.0'}
 
-  tr46@0.0.3:
-    resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
-
-  trim-lines@3.0.1:
-    resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
-
-  ts-api-utils@1.3.0:
-    resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
-    engines: {node: '>=16'}
+  ts-api-utils@2.0.1:
+    resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
+    engines: {node: '>=18.12'}
     peerDependencies:
-      typescript: '>=4.2.0'
+      typescript: '>=4.8.4'
 
   ts-autofix@1.0.0:
     resolution: {integrity: sha512-U35/EZm3p7d9lrq6+i6lLBhqBOEZ8LsFXSYHdUgQzcpTc/jQ8XVavD77j0IWNi3ASK3pnv2TCmN1Rx+uXO/lKw==}
     hasBin: true
 
-  tsx@4.19.1:
-    resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
+  tsx@4.19.2:
+    resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==}
     engines: {node: '>=18.0.0'}
     hasBin: true
 
@@ -1348,94 +1375,76 @@ packages:
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}
 
-  type-fest@4.26.1:
-    resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==}
+  type-fest@4.35.0:
+    resolution: {integrity: sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==}
     engines: {node: '>=16'}
 
-  typedoc@0.26.10:
-    resolution: {integrity: sha512-xLmVKJ8S21t+JeuQLNueebEuTVphx6IrP06CdV7+0WVflUSW3SPmR+h1fnWVdAR/FQePEgsSWCUHXqKKjzuUAw==}
+  typedoc@0.27.9:
+    resolution: {integrity: sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==}
     engines: {node: '>= 18'}
     hasBin: true
     peerDependencies:
-      typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x
+      typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x
 
-  typescript-eslint@8.10.0:
-    resolution: {integrity: sha512-YIu230PeN7z9zpu/EtqCIuRVHPs4iSlqW6TEvjbyDAE3MZsSl2RXBo+5ag+lbABCG8sFM1WVKEXhlQ8Ml8A3Fw==}
+  typescript-eslint@8.25.0:
+    resolution: {integrity: sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
     peerDependencies:
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+      eslint: ^8.57.0 || ^9.0.0
+      typescript: '>=4.8.4 <5.8.0'
 
   typescript@4.9.5:
     resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
     engines: {node: '>=4.2.0'}
     hasBin: true
 
-  typescript@5.7.0-beta:
-    resolution: {integrity: sha512-opDlmEnzKdl082N5piLS43lsyugg0aORdv+XnNzMv5yP5VtBWuZhFDxU8lizmhW+PEFa/fZiShYRBxKsrkTDMQ==}
+  typescript@5.8.2:
+    resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
     engines: {node: '>=14.17'}
     hasBin: true
 
   uc.micro@2.1.0:
     resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
 
-  undici-types@6.19.8:
-    resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+  undici-types@6.20.0:
+    resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
 
   unicorn-magic@0.1.0:
     resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
     engines: {node: '>=18'}
 
-  unist-util-is@6.0.0:
-    resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
-
-  unist-util-position@5.0.0:
-    resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
-
-  unist-util-stringify-position@4.0.0:
-    resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
-
-  unist-util-visit-parents@6.0.1:
-    resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
-
-  unist-util-visit@5.0.0:
-    resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
-
   uri-js-replace@1.0.1:
     resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==}
 
   uri-js@4.4.1:
     resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
 
-  vfile-message@4.0.2:
-    resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
-
-  vfile@6.0.3:
-    resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
-
-  vite-node@2.1.3:
-    resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==}
-    engines: {node: ^18.0.0 || >=20.0.0}
+  vite-node@3.0.7:
+    resolution: {integrity: sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==}
+    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
     hasBin: true
 
-  vite@5.4.9:
-    resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
-    engines: {node: ^18.0.0 || >=20.0.0}
+  vite@6.2.0:
+    resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==}
+    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
     hasBin: true
     peerDependencies:
-      '@types/node': ^18.0.0 || >=20.0.0
+      '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+      jiti: '>=1.21.0'
       less: '*'
       lightningcss: ^1.21.0
       sass: '*'
       sass-embedded: '*'
       stylus: '*'
       sugarss: '*'
-      terser: ^5.4.0
+      terser: ^5.16.0
+      tsx: ^4.8.1
+      yaml: ^2.4.2
     peerDependenciesMeta:
       '@types/node':
         optional: true
+      jiti:
+        optional: true
       less:
         optional: true
       lightningcss:
@@ -1450,21 +1459,28 @@ packages:
         optional: true
       terser:
         optional: true
+      tsx:
+        optional: true
+      yaml:
+        optional: true
 
-  vitest@2.1.3:
-    resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==}
-    engines: {node: ^18.0.0 || >=20.0.0}
+  vitest@3.0.7:
+    resolution: {integrity: sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==}
+    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
     hasBin: true
     peerDependencies:
       '@edge-runtime/vm': '*'
-      '@types/node': ^18.0.0 || >=20.0.0
-      '@vitest/browser': 2.1.3
-      '@vitest/ui': 2.1.3
+      '@types/debug': ^4.1.12
+      '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+      '@vitest/browser': 3.0.7
+      '@vitest/ui': 3.0.7
       happy-dom: '*'
       jsdom: '*'
     peerDependenciesMeta:
       '@edge-runtime/vm':
         optional: true
+      '@types/debug':
+        optional: true
       '@types/node':
         optional: true
       '@vitest/browser':
@@ -1479,12 +1495,6 @@ packages:
   wcwidth@1.0.1:
     resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
 
-  webidl-conversions@3.0.1:
-    resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
-
-  whatwg-url@5.0.0:
-    resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
-
   which@2.0.2:
     resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
     engines: {node: '>= 8'}
@@ -1502,8 +1512,8 @@ packages:
   yaml-ast-parser@0.0.43:
     resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==}
 
-  yaml@2.6.0:
-    resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==}
+  yaml@2.7.0:
+    resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==}
     engines: {node: '>= 14'}
     hasBin: true
 
@@ -1515,218 +1525,230 @@ packages:
     resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
     engines: {node: '>=10'}
 
-  zwitch@2.0.4:
-    resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
-
 snapshots:
 
-  '@babel/code-frame@7.25.7':
+  '@babel/code-frame@7.26.2':
     dependencies:
-      '@babel/highlight': 7.25.7
-      picocolors: 1.1.1
-
-  '@babel/helper-validator-identifier@7.25.7': {}
-
-  '@babel/highlight@7.25.7':
-    dependencies:
-      '@babel/helper-validator-identifier': 7.25.7
-      chalk: 2.4.2
+      '@babel/helper-validator-identifier': 7.25.9
       js-tokens: 4.0.0
       picocolors: 1.1.1
 
-  '@esbuild/aix-ppc64@0.21.5':
-    optional: true
+  '@babel/helper-validator-identifier@7.25.9': {}
 
   '@esbuild/aix-ppc64@0.23.1':
     optional: true
 
-  '@esbuild/android-arm64@0.21.5':
+  '@esbuild/aix-ppc64@0.25.0':
     optional: true
 
   '@esbuild/android-arm64@0.23.1':
     optional: true
 
-  '@esbuild/android-arm@0.21.5':
+  '@esbuild/android-arm64@0.25.0':
     optional: true
 
   '@esbuild/android-arm@0.23.1':
     optional: true
 
-  '@esbuild/android-x64@0.21.5':
+  '@esbuild/android-arm@0.25.0':
     optional: true
 
   '@esbuild/android-x64@0.23.1':
     optional: true
 
-  '@esbuild/darwin-arm64@0.21.5':
+  '@esbuild/android-x64@0.25.0':
     optional: true
 
   '@esbuild/darwin-arm64@0.23.1':
     optional: true
 
-  '@esbuild/darwin-x64@0.21.5':
+  '@esbuild/darwin-arm64@0.25.0':
     optional: true
 
   '@esbuild/darwin-x64@0.23.1':
     optional: true
 
-  '@esbuild/freebsd-arm64@0.21.5':
+  '@esbuild/darwin-x64@0.25.0':
     optional: true
 
   '@esbuild/freebsd-arm64@0.23.1':
     optional: true
 
-  '@esbuild/freebsd-x64@0.21.5':
+  '@esbuild/freebsd-arm64@0.25.0':
     optional: true
 
   '@esbuild/freebsd-x64@0.23.1':
     optional: true
 
-  '@esbuild/linux-arm64@0.21.5':
+  '@esbuild/freebsd-x64@0.25.0':
     optional: true
 
   '@esbuild/linux-arm64@0.23.1':
     optional: true
 
-  '@esbuild/linux-arm@0.21.5':
+  '@esbuild/linux-arm64@0.25.0':
     optional: true
 
   '@esbuild/linux-arm@0.23.1':
     optional: true
 
-  '@esbuild/linux-ia32@0.21.5':
+  '@esbuild/linux-arm@0.25.0':
     optional: true
 
   '@esbuild/linux-ia32@0.23.1':
     optional: true
 
-  '@esbuild/linux-loong64@0.21.5':
+  '@esbuild/linux-ia32@0.25.0':
     optional: true
 
   '@esbuild/linux-loong64@0.23.1':
     optional: true
 
-  '@esbuild/linux-mips64el@0.21.5':
+  '@esbuild/linux-loong64@0.25.0':
     optional: true
 
   '@esbuild/linux-mips64el@0.23.1':
     optional: true
 
-  '@esbuild/linux-ppc64@0.21.5':
+  '@esbuild/linux-mips64el@0.25.0':
     optional: true
 
   '@esbuild/linux-ppc64@0.23.1':
     optional: true
 
-  '@esbuild/linux-riscv64@0.21.5':
+  '@esbuild/linux-ppc64@0.25.0':
     optional: true
 
   '@esbuild/linux-riscv64@0.23.1':
     optional: true
 
-  '@esbuild/linux-s390x@0.21.5':
+  '@esbuild/linux-riscv64@0.25.0':
     optional: true
 
   '@esbuild/linux-s390x@0.23.1':
     optional: true
 
-  '@esbuild/linux-x64@0.21.5':
+  '@esbuild/linux-s390x@0.25.0':
     optional: true
 
   '@esbuild/linux-x64@0.23.1':
     optional: true
 
-  '@esbuild/netbsd-x64@0.21.5':
+  '@esbuild/linux-x64@0.25.0':
+    optional: true
+
+  '@esbuild/netbsd-arm64@0.25.0':
     optional: true
 
   '@esbuild/netbsd-x64@0.23.1':
     optional: true
 
+  '@esbuild/netbsd-x64@0.25.0':
+    optional: true
+
   '@esbuild/openbsd-arm64@0.23.1':
     optional: true
 
-  '@esbuild/openbsd-x64@0.21.5':
+  '@esbuild/openbsd-arm64@0.25.0':
     optional: true
 
   '@esbuild/openbsd-x64@0.23.1':
     optional: true
 
-  '@esbuild/sunos-x64@0.21.5':
+  '@esbuild/openbsd-x64@0.25.0':
     optional: true
 
   '@esbuild/sunos-x64@0.23.1':
     optional: true
 
-  '@esbuild/win32-arm64@0.21.5':
+  '@esbuild/sunos-x64@0.25.0':
     optional: true
 
   '@esbuild/win32-arm64@0.23.1':
     optional: true
 
-  '@esbuild/win32-ia32@0.21.5':
+  '@esbuild/win32-arm64@0.25.0':
     optional: true
 
   '@esbuild/win32-ia32@0.23.1':
     optional: true
 
-  '@esbuild/win32-x64@0.21.5':
+  '@esbuild/win32-ia32@0.25.0':
     optional: true
 
   '@esbuild/win32-x64@0.23.1':
     optional: true
 
-  '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0)':
+  '@esbuild/win32-x64@0.25.0':
+    optional: true
+
+  '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0)':
     dependencies:
-      eslint: 9.12.0
+      eslint: 9.21.0
       eslint-visitor-keys: 3.4.3
 
-  '@eslint-community/regexpp@4.11.1': {}
+  '@eslint-community/regexpp@4.12.1': {}
 
-  '@eslint/config-array@0.18.0':
+  '@eslint/config-array@0.19.2':
     dependencies:
-      '@eslint/object-schema': 2.1.4
-      debug: 4.3.7(supports-color@9.4.0)
+      '@eslint/object-schema': 2.1.6
+      debug: 4.4.0(supports-color@9.4.0)
       minimatch: 3.1.2
     transitivePeerDependencies:
       - supports-color
 
-  '@eslint/core@0.6.0': {}
+  '@eslint/core@0.12.0':
+    dependencies:
+      '@types/json-schema': 7.0.15
 
-  '@eslint/eslintrc@3.1.0':
+  '@eslint/eslintrc@3.3.0':
     dependencies:
       ajv: 6.12.6
-      debug: 4.3.7(supports-color@9.4.0)
-      espree: 10.2.0
+      debug: 4.4.0(supports-color@9.4.0)
+      espree: 10.3.0
       globals: 14.0.0
       ignore: 5.3.2
-      import-fresh: 3.3.0
+      import-fresh: 3.3.1
       js-yaml: 4.1.0
       minimatch: 3.1.2
       strip-json-comments: 3.1.1
     transitivePeerDependencies:
       - supports-color
 
-  '@eslint/js@9.12.0': {}
+  '@eslint/js@9.21.0': {}
 
-  '@eslint/object-schema@2.1.4': {}
+  '@eslint/object-schema@2.1.6': {}
 
-  '@eslint/plugin-kit@0.2.0':
+  '@eslint/plugin-kit@0.2.7':
     dependencies:
+      '@eslint/core': 0.12.0
       levn: 0.4.1
 
-  '@humanfs/core@0.19.0': {}
+  '@gerrit0/mini-shiki@1.27.2':
+    dependencies:
+      '@shikijs/engine-oniguruma': 1.29.2
+      '@shikijs/types': 1.29.2
+      '@shikijs/vscode-textmate': 10.0.2
+
+  '@humanfs/core@0.19.1': {}
 
-  '@humanfs/node@0.16.5':
+  '@humanfs/node@0.16.6':
     dependencies:
-      '@humanfs/core': 0.19.0
+      '@humanfs/core': 0.19.1
       '@humanwhocodes/retry': 0.3.1
 
   '@humanwhocodes/module-importer@1.0.1': {}
 
   '@humanwhocodes/retry@0.3.1': {}
 
+  '@humanwhocodes/retry@0.4.2': {}
+
   '@jridgewell/sourcemap-codec@1.5.0': {}
 
+  '@natoboram/load_env@1.0.0':
+    dependencies:
+      dotenv: 16.4.7
+
   '@nodelib/fs.scandir@2.1.5':
     dependencies:
       '@nodelib/fs.stat': 2.0.5
@@ -1737,7 +1759,7 @@ snapshots:
   '@nodelib/fs.walk@1.2.8':
     dependencies:
       '@nodelib/fs.scandir': 2.1.5
-      fastq: 1.17.1
+      fastq: 1.19.1
 
   '@redocly/ajv@8.11.2':
     dependencies:
@@ -1746,102 +1768,97 @@ snapshots:
       require-from-string: 2.0.2
       uri-js-replace: 1.0.1
 
-  '@redocly/config@0.12.1': {}
+  '@redocly/config@0.21.0': {}
 
-  '@redocly/openapi-core@1.25.7(supports-color@9.4.0)':
+  '@redocly/openapi-core@1.31.2(supports-color@9.4.0)':
     dependencies:
       '@redocly/ajv': 8.11.2
-      '@redocly/config': 0.12.1
+      '@redocly/config': 0.21.0
       colorette: 1.4.0
-      https-proxy-agent: 7.0.5(supports-color@9.4.0)
+      https-proxy-agent: 7.0.6(supports-color@9.4.0)
       js-levenshtein: 1.1.6
       js-yaml: 4.1.0
-      lodash.isequal: 4.5.0
       minimatch: 5.1.6
-      node-fetch: 2.7.0
       pluralize: 8.0.0
       yaml-ast-parser: 0.0.43
     transitivePeerDependencies:
-      - encoding
       - supports-color
 
-  '@rollup/rollup-android-arm-eabi@4.24.0':
+  '@rollup/rollup-android-arm-eabi@4.34.8':
     optional: true
 
-  '@rollup/rollup-android-arm64@4.24.0':
+  '@rollup/rollup-android-arm64@4.34.8':
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.24.0':
+  '@rollup/rollup-darwin-arm64@4.34.8':
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.24.0':
+  '@rollup/rollup-darwin-x64@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.24.0':
+  '@rollup/rollup-freebsd-arm64@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.24.0':
+  '@rollup/rollup-freebsd-x64@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.24.0':
+  '@rollup/rollup-linux-arm-gnueabihf@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.24.0':
+  '@rollup/rollup-linux-arm-musleabihf@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
+  '@rollup/rollup-linux-arm64-gnu@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.24.0':
+  '@rollup/rollup-linux-arm64-musl@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.24.0':
+  '@rollup/rollup-linux-loongarch64-gnu@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.24.0':
+  '@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.24.0':
+  '@rollup/rollup-linux-riscv64-gnu@4.34.8':
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.24.0':
+  '@rollup/rollup-linux-s390x-gnu@4.34.8':
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.24.0':
+  '@rollup/rollup-linux-x64-gnu@4.34.8':
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.24.0':
+  '@rollup/rollup-linux-x64-musl@4.34.8':
     optional: true
 
-  '@shikijs/core@1.22.0':
-    dependencies:
-      '@shikijs/engine-javascript': 1.22.0
-      '@shikijs/engine-oniguruma': 1.22.0
-      '@shikijs/types': 1.22.0
-      '@shikijs/vscode-textmate': 9.3.0
-      '@types/hast': 3.0.4
-      hast-util-to-html: 9.0.3
+  '@rollup/rollup-win32-arm64-msvc@4.34.8':
+    optional: true
 
-  '@shikijs/engine-javascript@1.22.0':
-    dependencies:
-      '@shikijs/types': 1.22.0
-      '@shikijs/vscode-textmate': 9.3.0
-      oniguruma-to-js: 0.4.3
+  '@rollup/rollup-win32-ia32-msvc@4.34.8':
+    optional: true
+
+  '@rollup/rollup-win32-x64-msvc@4.34.8':
+    optional: true
 
-  '@shikijs/engine-oniguruma@1.22.0':
+  '@shikijs/engine-oniguruma@1.29.2':
     dependencies:
-      '@shikijs/types': 1.22.0
-      '@shikijs/vscode-textmate': 9.3.0
+      '@shikijs/types': 1.29.2
+      '@shikijs/vscode-textmate': 10.0.2
 
-  '@shikijs/types@1.22.0':
+  '@shikijs/types@1.29.2':
     dependencies:
-      '@shikijs/vscode-textmate': 9.3.0
+      '@shikijs/vscode-textmate': 10.0.2
       '@types/hast': 3.0.4
 
-  '@shikijs/vscode-textmate@9.3.0': {}
+  '@shikijs/vscode-textmate@10.0.2': {}
 
   '@sindresorhus/merge-streams@2.3.0': {}
 
+  '@types/debug@4.1.12':
+    dependencies:
+      '@types/ms': 2.1.0
+
   '@types/estree@1.0.6': {}
 
   '@types/hast@3.0.4':
@@ -1850,150 +1867,142 @@ snapshots:
 
   '@types/json-schema@7.0.15': {}
 
-  '@types/mdast@4.0.4':
-    dependencies:
-      '@types/unist': 3.0.3
+  '@types/katex@0.16.7': {}
 
-  '@types/node@22.7.6':
+  '@types/ms@2.1.0': {}
+
+  '@types/node@22.13.8':
     dependencies:
-      undici-types: 6.19.8
+      undici-types: 6.20.0
+
+  '@types/unist@2.0.11': {}
 
   '@types/unist@3.0.3': {}
 
-  '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0)(typescript@5.7.0-beta))(eslint@9.12.0)(typescript@5.7.0-beta)':
+  '@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint@9.21.0)(typescript@5.8.2)':
     dependencies:
-      '@eslint-community/regexpp': 4.11.1
-      '@typescript-eslint/parser': 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
-      '@typescript-eslint/scope-manager': 8.10.0
-      '@typescript-eslint/type-utils': 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
-      '@typescript-eslint/utils': 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
-      '@typescript-eslint/visitor-keys': 8.10.0
-      eslint: 9.12.0
+      '@eslint-community/regexpp': 4.12.1
+      '@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
+      '@typescript-eslint/scope-manager': 8.25.0
+      '@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
+      '@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
+      '@typescript-eslint/visitor-keys': 8.25.0
+      eslint: 9.21.0
       graphemer: 1.4.0
       ignore: 5.3.2
       natural-compare: 1.4.0
-      ts-api-utils: 1.3.0(typescript@5.7.0-beta)
-    optionalDependencies:
-      typescript: 5.7.0-beta
+      ts-api-utils: 2.0.1(typescript@5.8.2)
+      typescript: 5.8.2
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/parser@8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)':
+  '@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2)':
     dependencies:
-      '@typescript-eslint/scope-manager': 8.10.0
-      '@typescript-eslint/types': 8.10.0
-      '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.7.0-beta)
-      '@typescript-eslint/visitor-keys': 8.10.0
-      debug: 4.3.7(supports-color@9.4.0)
-      eslint: 9.12.0
-    optionalDependencies:
-      typescript: 5.7.0-beta
+      '@typescript-eslint/scope-manager': 8.25.0
+      '@typescript-eslint/types': 8.25.0
+      '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2)
+      '@typescript-eslint/visitor-keys': 8.25.0
+      debug: 4.4.0(supports-color@9.4.0)
+      eslint: 9.21.0
+      typescript: 5.8.2
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/scope-manager@8.10.0':
+  '@typescript-eslint/scope-manager@8.25.0':
     dependencies:
-      '@typescript-eslint/types': 8.10.0
-      '@typescript-eslint/visitor-keys': 8.10.0
+      '@typescript-eslint/types': 8.25.0
+      '@typescript-eslint/visitor-keys': 8.25.0
 
-  '@typescript-eslint/type-utils@8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)':
+  '@typescript-eslint/type-utils@8.25.0(eslint@9.21.0)(typescript@5.8.2)':
     dependencies:
-      '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.7.0-beta)
-      '@typescript-eslint/utils': 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
-      debug: 4.3.7(supports-color@9.4.0)
-      ts-api-utils: 1.3.0(typescript@5.7.0-beta)
-    optionalDependencies:
-      typescript: 5.7.0-beta
+      '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2)
+      '@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
+      debug: 4.4.0(supports-color@9.4.0)
+      eslint: 9.21.0
+      ts-api-utils: 2.0.1(typescript@5.8.2)
+      typescript: 5.8.2
     transitivePeerDependencies:
-      - eslint
       - supports-color
 
-  '@typescript-eslint/types@8.10.0': {}
+  '@typescript-eslint/types@8.25.0': {}
 
-  '@typescript-eslint/typescript-estree@8.10.0(typescript@5.7.0-beta)':
+  '@typescript-eslint/typescript-estree@8.25.0(typescript@5.8.2)':
     dependencies:
-      '@typescript-eslint/types': 8.10.0
-      '@typescript-eslint/visitor-keys': 8.10.0
-      debug: 4.3.7(supports-color@9.4.0)
-      fast-glob: 3.3.2
+      '@typescript-eslint/types': 8.25.0
+      '@typescript-eslint/visitor-keys': 8.25.0
+      debug: 4.4.0(supports-color@9.4.0)
+      fast-glob: 3.3.3
       is-glob: 4.0.3
       minimatch: 9.0.5
-      semver: 7.6.3
-      ts-api-utils: 1.3.0(typescript@5.7.0-beta)
-    optionalDependencies:
-      typescript: 5.7.0-beta
+      semver: 7.7.1
+      ts-api-utils: 2.0.1(typescript@5.8.2)
+      typescript: 5.8.2
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/utils@8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)':
+  '@typescript-eslint/utils@8.25.0(eslint@9.21.0)(typescript@5.8.2)':
     dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0)
-      '@typescript-eslint/scope-manager': 8.10.0
-      '@typescript-eslint/types': 8.10.0
-      '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.7.0-beta)
-      eslint: 9.12.0
+      '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0)
+      '@typescript-eslint/scope-manager': 8.25.0
+      '@typescript-eslint/types': 8.25.0
+      '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.8.2)
+      eslint: 9.21.0
+      typescript: 5.8.2
     transitivePeerDependencies:
       - supports-color
-      - typescript
 
-  '@typescript-eslint/visitor-keys@8.10.0':
+  '@typescript-eslint/visitor-keys@8.25.0':
     dependencies:
-      '@typescript-eslint/types': 8.10.0
-      eslint-visitor-keys: 3.4.3
+      '@typescript-eslint/types': 8.25.0
+      eslint-visitor-keys: 4.2.0
 
-  '@ungap/structured-clone@1.2.0': {}
-
-  '@vitest/expect@2.1.3':
+  '@vitest/expect@3.0.7':
     dependencies:
-      '@vitest/spy': 2.1.3
-      '@vitest/utils': 2.1.3
-      chai: 5.1.1
-      tinyrainbow: 1.2.0
+      '@vitest/spy': 3.0.7
+      '@vitest/utils': 3.0.7
+      chai: 5.2.0
+      tinyrainbow: 2.0.0
 
-  '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.6))':
+  '@vitest/mocker@3.0.7(vite@6.2.0(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0))':
     dependencies:
-      '@vitest/spy': 2.1.3
+      '@vitest/spy': 3.0.7
       estree-walker: 3.0.3
-      magic-string: 0.30.12
+      magic-string: 0.30.17
     optionalDependencies:
-      vite: 5.4.9(@types/node@22.7.6)
+      vite: 6.2.0(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0)
 
-  '@vitest/pretty-format@2.1.3':
+  '@vitest/pretty-format@3.0.7':
     dependencies:
-      tinyrainbow: 1.2.0
+      tinyrainbow: 2.0.0
 
-  '@vitest/runner@2.1.3':
+  '@vitest/runner@3.0.7':
     dependencies:
-      '@vitest/utils': 2.1.3
-      pathe: 1.1.2
+      '@vitest/utils': 3.0.7
+      pathe: 2.0.3
 
-  '@vitest/snapshot@2.1.3':
+  '@vitest/snapshot@3.0.7':
     dependencies:
-      '@vitest/pretty-format': 2.1.3
-      magic-string: 0.30.12
-      pathe: 1.1.2
+      '@vitest/pretty-format': 3.0.7
+      magic-string: 0.30.17
+      pathe: 2.0.3
 
-  '@vitest/spy@2.1.3':
+  '@vitest/spy@3.0.7':
     dependencies:
       tinyspy: 3.0.2
 
-  '@vitest/utils@2.1.3':
+  '@vitest/utils@3.0.7':
     dependencies:
-      '@vitest/pretty-format': 2.1.3
-      loupe: 3.1.2
-      tinyrainbow: 1.2.0
+      '@vitest/pretty-format': 3.0.7
+      loupe: 3.1.3
+      tinyrainbow: 2.0.0
 
-  acorn-jsx@5.3.2(acorn@8.13.0):
+  acorn-jsx@5.3.2(acorn@8.14.0):
     dependencies:
-      acorn: 8.13.0
+      acorn: 8.14.0
 
-  acorn@8.13.0: {}
+  acorn@8.14.0: {}
 
-  agent-base@7.1.1(supports-color@9.4.0):
-    dependencies:
-      debug: 4.3.7(supports-color@9.4.0)
-    transitivePeerDependencies:
-      - supports-color
+  agent-base@7.1.3: {}
 
   ajv@6.12.6:
     dependencies:
@@ -2006,10 +2015,6 @@ snapshots:
 
   ansi-regex@5.0.1: {}
 
-  ansi-styles@3.2.1:
-    dependencies:
-      color-convert: 1.9.3
-
   ansi-styles@4.3.0:
     dependencies:
       color-convert: 2.0.1
@@ -2037,22 +2042,14 @@ snapshots:
 
   callsites@3.1.0: {}
 
-  ccount@2.0.1: {}
-
-  chai@5.1.1:
+  chai@5.2.0:
     dependencies:
       assertion-error: 2.0.1
       check-error: 2.1.1
       deep-eql: 5.0.2
-      loupe: 3.1.2
+      loupe: 3.1.3
       pathval: 2.0.0
 
-  chalk@2.4.2:
-    dependencies:
-      ansi-styles: 3.2.1
-      escape-string-regexp: 1.0.5
-      supports-color: 5.5.0
-
   chalk@4.1.2:
     dependencies:
       ansi-styles: 4.3.0
@@ -2060,24 +2057,20 @@ snapshots:
 
   change-case@5.4.4: {}
 
-  character-entities-html4@2.1.0: {}
-
   character-entities-legacy@3.0.0: {}
 
+  character-entities@2.0.2: {}
+
+  character-reference-invalid@2.0.1: {}
+
   check-error@2.1.1: {}
 
   clone@1.0.4: {}
 
-  color-convert@1.9.3:
-    dependencies:
-      color-name: 1.1.3
-
   color-convert@2.0.1:
     dependencies:
       color-name: 1.1.4
 
-  color-name@1.1.3: {}
-
   color-name@1.1.4: {}
 
   colorette@1.4.0: {}
@@ -2087,24 +2080,26 @@ snapshots:
       strip-ansi: 6.0.1
       wcwidth: 1.0.1
 
-  comma-separated-tokens@2.0.3: {}
-
   commander@8.3.0: {}
 
   concat-map@0.0.1: {}
 
-  cross-spawn@7.0.3:
+  cross-spawn@7.0.6:
     dependencies:
       path-key: 3.1.1
       shebang-command: 2.0.0
       which: 2.0.2
 
-  debug@4.3.7(supports-color@9.4.0):
+  debug@4.4.0(supports-color@9.4.0):
     dependencies:
       ms: 2.1.3
     optionalDependencies:
       supports-color: 9.4.0
 
+  decode-named-character-reference@1.0.2:
+    dependencies:
+      character-entities: 2.0.2
+
   deep-eql@5.0.2: {}
 
   deep-is@0.1.4: {}
@@ -2119,35 +2114,11 @@ snapshots:
     dependencies:
       dequal: 2.0.3
 
-  dotenv@16.4.5: {}
+  dotenv@16.4.7: {}
 
   entities@4.5.0: {}
 
-  esbuild@0.21.5:
-    optionalDependencies:
-      '@esbuild/aix-ppc64': 0.21.5
-      '@esbuild/android-arm': 0.21.5
-      '@esbuild/android-arm64': 0.21.5
-      '@esbuild/android-x64': 0.21.5
-      '@esbuild/darwin-arm64': 0.21.5
-      '@esbuild/darwin-x64': 0.21.5
-      '@esbuild/freebsd-arm64': 0.21.5
-      '@esbuild/freebsd-x64': 0.21.5
-      '@esbuild/linux-arm': 0.21.5
-      '@esbuild/linux-arm64': 0.21.5
-      '@esbuild/linux-ia32': 0.21.5
-      '@esbuild/linux-loong64': 0.21.5
-      '@esbuild/linux-mips64el': 0.21.5
-      '@esbuild/linux-ppc64': 0.21.5
-      '@esbuild/linux-riscv64': 0.21.5
-      '@esbuild/linux-s390x': 0.21.5
-      '@esbuild/linux-x64': 0.21.5
-      '@esbuild/netbsd-x64': 0.21.5
-      '@esbuild/openbsd-x64': 0.21.5
-      '@esbuild/sunos-x64': 0.21.5
-      '@esbuild/win32-arm64': 0.21.5
-      '@esbuild/win32-ia32': 0.21.5
-      '@esbuild/win32-x64': 0.21.5
+  es-module-lexer@1.6.0: {}
 
   esbuild@0.23.1:
     optionalDependencies:
@@ -2175,46 +2146,73 @@ snapshots:
       '@esbuild/win32-arm64': 0.23.1
       '@esbuild/win32-ia32': 0.23.1
       '@esbuild/win32-x64': 0.23.1
+    optional: true
 
-  escape-string-regexp@1.0.5: {}
+  esbuild@0.25.0:
+    optionalDependencies:
+      '@esbuild/aix-ppc64': 0.25.0
+      '@esbuild/android-arm': 0.25.0
+      '@esbuild/android-arm64': 0.25.0
+      '@esbuild/android-x64': 0.25.0
+      '@esbuild/darwin-arm64': 0.25.0
+      '@esbuild/darwin-x64': 0.25.0
+      '@esbuild/freebsd-arm64': 0.25.0
+      '@esbuild/freebsd-x64': 0.25.0
+      '@esbuild/linux-arm': 0.25.0
+      '@esbuild/linux-arm64': 0.25.0
+      '@esbuild/linux-ia32': 0.25.0
+      '@esbuild/linux-loong64': 0.25.0
+      '@esbuild/linux-mips64el': 0.25.0
+      '@esbuild/linux-ppc64': 0.25.0
+      '@esbuild/linux-riscv64': 0.25.0
+      '@esbuild/linux-s390x': 0.25.0
+      '@esbuild/linux-x64': 0.25.0
+      '@esbuild/netbsd-arm64': 0.25.0
+      '@esbuild/netbsd-x64': 0.25.0
+      '@esbuild/openbsd-arm64': 0.25.0
+      '@esbuild/openbsd-x64': 0.25.0
+      '@esbuild/sunos-x64': 0.25.0
+      '@esbuild/win32-arm64': 0.25.0
+      '@esbuild/win32-ia32': 0.25.0
+      '@esbuild/win32-x64': 0.25.0
 
   escape-string-regexp@4.0.0: {}
 
-  eslint-config-prettier@9.1.0(eslint@9.12.0):
+  eslint-config-prettier@10.0.2(eslint@9.21.0):
     dependencies:
-      eslint: 9.12.0
+      eslint: 9.21.0
 
-  eslint-scope@8.1.0:
+  eslint-scope@8.2.0:
     dependencies:
       esrecurse: 4.3.0
       estraverse: 5.3.0
 
   eslint-visitor-keys@3.4.3: {}
 
-  eslint-visitor-keys@4.1.0: {}
+  eslint-visitor-keys@4.2.0: {}
 
-  eslint@9.12.0:
+  eslint@9.21.0:
     dependencies:
-      '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0)
-      '@eslint-community/regexpp': 4.11.1
-      '@eslint/config-array': 0.18.0
-      '@eslint/core': 0.6.0
-      '@eslint/eslintrc': 3.1.0
-      '@eslint/js': 9.12.0
-      '@eslint/plugin-kit': 0.2.0
-      '@humanfs/node': 0.16.5
+      '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0)
+      '@eslint-community/regexpp': 4.12.1
+      '@eslint/config-array': 0.19.2
+      '@eslint/core': 0.12.0
+      '@eslint/eslintrc': 3.3.0
+      '@eslint/js': 9.21.0
+      '@eslint/plugin-kit': 0.2.7
+      '@humanfs/node': 0.16.6
       '@humanwhocodes/module-importer': 1.0.1
-      '@humanwhocodes/retry': 0.3.1
+      '@humanwhocodes/retry': 0.4.2
       '@types/estree': 1.0.6
       '@types/json-schema': 7.0.15
       ajv: 6.12.6
       chalk: 4.1.2
-      cross-spawn: 7.0.3
-      debug: 4.3.7(supports-color@9.4.0)
+      cross-spawn: 7.0.6
+      debug: 4.4.0(supports-color@9.4.0)
       escape-string-regexp: 4.0.0
-      eslint-scope: 8.1.0
-      eslint-visitor-keys: 4.1.0
-      espree: 10.2.0
+      eslint-scope: 8.2.0
+      eslint-visitor-keys: 4.2.0
+      espree: 10.3.0
       esquery: 1.6.0
       esutils: 2.0.3
       fast-deep-equal: 3.1.3
@@ -2229,15 +2227,14 @@ snapshots:
       minimatch: 3.1.2
       natural-compare: 1.4.0
       optionator: 0.9.4
-      text-table: 0.2.0
     transitivePeerDependencies:
       - supports-color
 
-  espree@10.2.0:
+  espree@10.3.0:
     dependencies:
-      acorn: 8.13.0
-      acorn-jsx: 5.3.2(acorn@8.13.0)
-      eslint-visitor-keys: 4.1.0
+      acorn: 8.14.0
+      acorn-jsx: 5.3.2(acorn@8.14.0)
+      eslint-visitor-keys: 4.2.0
 
   esquery@1.6.0:
     dependencies:
@@ -2255,9 +2252,11 @@ snapshots:
 
   esutils@2.0.3: {}
 
+  expect-type@1.1.0: {}
+
   fast-deep-equal@3.1.3: {}
 
-  fast-glob@3.3.2:
+  fast-glob@3.3.3:
     dependencies:
       '@nodelib/fs.stat': 2.0.5
       '@nodelib/fs.walk': 1.2.8
@@ -2269,9 +2268,9 @@ snapshots:
 
   fast-levenshtein@2.0.6: {}
 
-  fastq@1.17.1:
+  fastq@1.19.1:
     dependencies:
-      reusify: 1.0.4
+      reusify: 1.1.0
 
   file-entry-cache@8.0.0:
     dependencies:
@@ -2288,17 +2287,18 @@ snapshots:
 
   flat-cache@4.0.1:
     dependencies:
-      flatted: 3.3.1
+      flatted: 3.3.3
       keyv: 4.5.4
 
-  flatted@3.3.1: {}
+  flatted@3.3.3: {}
 
   fsevents@2.3.3:
     optional: true
 
-  get-tsconfig@4.8.1:
+  get-tsconfig@4.10.0:
     dependencies:
       resolve-pkg-maps: 1.0.0
+    optional: true
 
   glob-parent@5.1.2:
     dependencies:
@@ -2310,12 +2310,12 @@ snapshots:
 
   globals@14.0.0: {}
 
-  globals@15.11.0: {}
+  globals@16.0.0: {}
 
   globby@14.0.2:
     dependencies:
       '@sindresorhus/merge-streams': 2.3.0
-      fast-glob: 3.3.2
+      fast-glob: 3.3.3
       ignore: 5.3.2
       path-type: 5.0.0
       slash: 5.1.0
@@ -2323,40 +2323,18 @@ snapshots:
 
   graphemer@1.4.0: {}
 
-  has-flag@3.0.0: {}
-
   has-flag@4.0.0: {}
 
-  hast-util-to-html@9.0.3:
-    dependencies:
-      '@types/hast': 3.0.4
-      '@types/unist': 3.0.3
-      ccount: 2.0.1
-      comma-separated-tokens: 2.0.3
-      hast-util-whitespace: 3.0.0
-      html-void-elements: 3.0.0
-      mdast-util-to-hast: 13.2.0
-      property-information: 6.5.0
-      space-separated-tokens: 2.0.2
-      stringify-entities: 4.0.4
-      zwitch: 2.0.4
-
-  hast-util-whitespace@3.0.0:
-    dependencies:
-      '@types/hast': 3.0.4
-
-  html-void-elements@3.0.0: {}
-
-  https-proxy-agent@7.0.5(supports-color@9.4.0):
+  https-proxy-agent@7.0.6(supports-color@9.4.0):
     dependencies:
-      agent-base: 7.1.1(supports-color@9.4.0)
-      debug: 4.3.7(supports-color@9.4.0)
+      agent-base: 7.1.3
+      debug: 4.4.0(supports-color@9.4.0)
     transitivePeerDependencies:
       - supports-color
 
   ignore@5.3.2: {}
 
-  import-fresh@3.3.0:
+  import-fresh@3.3.1:
     dependencies:
       parent-module: 1.0.1
       resolve-from: 4.0.0
@@ -2365,12 +2343,23 @@ snapshots:
 
   index-to-position@0.1.2: {}
 
+  is-alphabetical@2.0.1: {}
+
+  is-alphanumerical@2.0.1:
+    dependencies:
+      is-alphabetical: 2.0.1
+      is-decimal: 2.0.1
+
+  is-decimal@2.0.1: {}
+
   is-extglob@2.1.1: {}
 
   is-glob@4.0.3:
     dependencies:
       is-extglob: 2.1.1
 
+  is-hexadecimal@2.0.1: {}
+
   is-number@7.0.0: {}
 
   isexe@2.0.0: {}
@@ -2393,6 +2382,10 @@ snapshots:
 
   jsonc-parser@3.3.1: {}
 
+  katex@0.16.21:
+    dependencies:
+      commander: 8.3.0
+
   keyv@4.5.4:
     dependencies:
       json-buffer: 3.0.1
@@ -2410,15 +2403,13 @@ snapshots:
     dependencies:
       p-locate: 5.0.0
 
-  lodash.isequal@4.5.0: {}
-
   lodash.merge@4.6.2: {}
 
-  loupe@3.1.2: {}
+  loupe@3.1.3: {}
 
   lunr@2.3.9: {}
 
-  magic-string@0.30.12:
+  magic-string@0.30.17:
     dependencies:
       '@jridgewell/sourcemap-codec': 1.5.0
 
@@ -2431,58 +2422,210 @@ snapshots:
       punycode.js: 2.3.1
       uc.micro: 2.1.0
 
-  markdownlint-cli2-formatter-default@0.0.5(markdownlint-cli2@0.14.0):
+  markdownlint-cli2-formatter-default@0.0.5(markdownlint-cli2@0.17.2):
     dependencies:
-      markdownlint-cli2: 0.14.0
+      markdownlint-cli2: 0.17.2
 
-  markdownlint-cli2@0.14.0:
+  markdownlint-cli2@0.17.2:
     dependencies:
       globby: 14.0.2
       js-yaml: 4.1.0
       jsonc-parser: 3.3.1
-      markdownlint: 0.35.0
-      markdownlint-cli2-formatter-default: 0.0.5(markdownlint-cli2@0.14.0)
+      markdownlint: 0.37.4
+      markdownlint-cli2-formatter-default: 0.0.5(markdownlint-cli2@0.17.2)
       micromatch: 4.0.8
+    transitivePeerDependencies:
+      - supports-color
 
-  markdownlint-micromark@0.1.10: {}
-
-  markdownlint@0.35.0:
+  markdownlint@0.37.4:
     dependencies:
       markdown-it: 14.1.0
-      markdownlint-micromark: 0.1.10
+      micromark: 4.0.1
+      micromark-core-commonmark: 2.0.2
+      micromark-extension-directive: 3.0.2
+      micromark-extension-gfm-autolink-literal: 2.1.0
+      micromark-extension-gfm-footnote: 2.1.0
+      micromark-extension-gfm-table: 2.1.0
+      micromark-extension-math: 3.1.0
+      micromark-util-types: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
+
+  mdurl@2.0.0: {}
+
+  merge2@1.4.1: {}
 
-  mdast-util-to-hast@13.2.0:
+  micromark-core-commonmark@2.0.2:
+    dependencies:
+      decode-named-character-reference: 1.0.2
+      devlop: 1.1.0
+      micromark-factory-destination: 2.0.1
+      micromark-factory-label: 2.0.1
+      micromark-factory-space: 2.0.1
+      micromark-factory-title: 2.0.1
+      micromark-factory-whitespace: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-chunked: 2.0.1
+      micromark-util-classify-character: 2.0.1
+      micromark-util-html-tag-name: 2.0.1
+      micromark-util-normalize-identifier: 2.0.1
+      micromark-util-resolve-all: 2.0.1
+      micromark-util-subtokenize: 2.1.0
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-extension-directive@3.0.2:
     dependencies:
-      '@types/hast': 3.0.4
-      '@types/mdast': 4.0.4
-      '@ungap/structured-clone': 1.2.0
       devlop: 1.1.0
-      micromark-util-sanitize-uri: 2.0.0
-      trim-lines: 3.0.1
-      unist-util-position: 5.0.0
-      unist-util-visit: 5.0.0
-      vfile: 6.0.3
+      micromark-factory-space: 2.0.1
+      micromark-factory-whitespace: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+      parse-entities: 4.0.2
 
-  mdurl@2.0.0: {}
+  micromark-extension-gfm-autolink-literal@2.1.0:
+    dependencies:
+      micromark-util-character: 2.1.1
+      micromark-util-sanitize-uri: 2.0.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
 
-  merge2@1.4.1: {}
+  micromark-extension-gfm-footnote@2.1.0:
+    dependencies:
+      devlop: 1.1.0
+      micromark-core-commonmark: 2.0.2
+      micromark-factory-space: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-normalize-identifier: 2.0.1
+      micromark-util-sanitize-uri: 2.0.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
 
-  micromark-util-character@2.1.0:
+  micromark-extension-gfm-table@2.1.0:
     dependencies:
-      micromark-util-symbol: 2.0.0
-      micromark-util-types: 2.0.0
+      devlop: 1.1.0
+      micromark-factory-space: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
 
-  micromark-util-encode@2.0.0: {}
+  micromark-extension-math@3.1.0:
+    dependencies:
+      '@types/katex': 0.16.7
+      devlop: 1.1.0
+      katex: 0.16.21
+      micromark-factory-space: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
 
-  micromark-util-sanitize-uri@2.0.0:
+  micromark-factory-destination@2.0.1:
     dependencies:
-      micromark-util-character: 2.1.0
-      micromark-util-encode: 2.0.0
-      micromark-util-symbol: 2.0.0
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
 
-  micromark-util-symbol@2.0.0: {}
+  micromark-factory-label@2.0.1:
+    dependencies:
+      devlop: 1.1.0
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-factory-space@2.0.1:
+    dependencies:
+      micromark-util-character: 2.1.1
+      micromark-util-types: 2.0.1
+
+  micromark-factory-title@2.0.1:
+    dependencies:
+      micromark-factory-space: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-factory-whitespace@2.0.1:
+    dependencies:
+      micromark-factory-space: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
 
-  micromark-util-types@2.0.0: {}
+  micromark-util-character@2.1.1:
+    dependencies:
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-util-chunked@2.0.1:
+    dependencies:
+      micromark-util-symbol: 2.0.1
+
+  micromark-util-classify-character@2.0.1:
+    dependencies:
+      micromark-util-character: 2.1.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-util-combine-extensions@2.0.1:
+    dependencies:
+      micromark-util-chunked: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-util-decode-numeric-character-reference@2.0.2:
+    dependencies:
+      micromark-util-symbol: 2.0.1
+
+  micromark-util-encode@2.0.1: {}
+
+  micromark-util-html-tag-name@2.0.1: {}
+
+  micromark-util-normalize-identifier@2.0.1:
+    dependencies:
+      micromark-util-symbol: 2.0.1
+
+  micromark-util-resolve-all@2.0.1:
+    dependencies:
+      micromark-util-types: 2.0.1
+
+  micromark-util-sanitize-uri@2.0.1:
+    dependencies:
+      micromark-util-character: 2.1.1
+      micromark-util-encode: 2.0.1
+      micromark-util-symbol: 2.0.1
+
+  micromark-util-subtokenize@2.1.0:
+    dependencies:
+      devlop: 1.1.0
+      micromark-util-chunked: 2.0.1
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+
+  micromark-util-symbol@2.0.1: {}
+
+  micromark-util-types@2.0.1: {}
+
+  micromark@4.0.1:
+    dependencies:
+      '@types/debug': 4.1.12
+      debug: 4.4.0(supports-color@9.4.0)
+      decode-named-character-reference: 1.0.2
+      devlop: 1.1.0
+      micromark-core-commonmark: 2.0.2
+      micromark-factory-space: 2.0.1
+      micromark-util-character: 2.1.1
+      micromark-util-chunked: 2.0.1
+      micromark-util-combine-extensions: 2.0.1
+      micromark-util-decode-numeric-character-reference: 2.0.2
+      micromark-util-encode: 2.0.1
+      micromark-util-normalize-identifier: 2.0.1
+      micromark-util-resolve-all: 2.0.1
+      micromark-util-sanitize-uri: 2.0.1
+      micromark-util-subtokenize: 2.1.0
+      micromark-util-symbol: 2.0.1
+      micromark-util-types: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
 
   micromatch@4.0.8:
     dependencies:
@@ -2503,35 +2646,25 @@ snapshots:
 
   ms@2.1.3: {}
 
-  nanoid@3.3.7: {}
+  nanoid@3.3.8: {}
 
   natural-compare@1.4.0: {}
 
-  node-fetch@2.7.0:
+  openapi-fetch@0.13.4:
     dependencies:
-      whatwg-url: 5.0.0
+      openapi-typescript-helpers: 0.0.15
 
-  oniguruma-to-js@0.4.3:
-    dependencies:
-      regex: 4.3.3
+  openapi-typescript-helpers@0.0.15: {}
 
-  openapi-fetch@0.12.2:
+  openapi-typescript@7.6.1(typescript@5.8.2):
     dependencies:
-      openapi-typescript-helpers: 0.0.13
-
-  openapi-typescript-helpers@0.0.13: {}
-
-  openapi-typescript@7.4.1(typescript@5.7.0-beta):
-    dependencies:
-      '@redocly/openapi-core': 1.25.7(supports-color@9.4.0)
+      '@redocly/openapi-core': 1.31.2(supports-color@9.4.0)
       ansi-colors: 4.1.3
       change-case: 5.4.4
       parse-json: 8.1.0
       supports-color: 9.4.0
-      typescript: 5.7.0-beta
+      typescript: 5.8.2
       yargs-parser: 21.1.1
-    transitivePeerDependencies:
-      - encoding
 
   optionator@0.9.4:
     dependencies:
@@ -2554,11 +2687,21 @@ snapshots:
     dependencies:
       callsites: 3.1.0
 
+  parse-entities@4.0.2:
+    dependencies:
+      '@types/unist': 2.0.11
+      character-entities-legacy: 3.0.0
+      character-reference-invalid: 2.0.1
+      decode-named-character-reference: 1.0.2
+      is-alphanumerical: 2.0.1
+      is-decimal: 2.0.1
+      is-hexadecimal: 2.0.1
+
   parse-json@8.1.0:
     dependencies:
-      '@babel/code-frame': 7.25.7
+      '@babel/code-frame': 7.26.2
       index-to-position: 0.1.2
-      type-fest: 4.26.1
+      type-fest: 4.35.0
 
   path-exists@4.0.0: {}
 
@@ -2566,7 +2709,7 @@ snapshots:
 
   path-type@5.0.0: {}
 
-  pathe@1.1.2: {}
+  pathe@2.0.3: {}
 
   pathval@2.0.0: {}
 
@@ -2576,17 +2719,15 @@ snapshots:
 
   pluralize@8.0.0: {}
 
-  postcss@8.4.47:
+  postcss@8.5.3:
     dependencies:
-      nanoid: 3.3.7
+      nanoid: 3.3.8
       picocolors: 1.1.1
       source-map-js: 1.2.1
 
   prelude-ls@1.2.1: {}
 
-  prettier@3.3.3: {}
-
-  property-information@6.5.0: {}
+  prettier@3.5.2: {}
 
   punycode.js@2.3.1: {}
 
@@ -2594,43 +2735,45 @@ snapshots:
 
   queue-microtask@1.2.3: {}
 
-  regex@4.3.3: {}
-
   require-from-string@2.0.2: {}
 
   resolve-from@4.0.0: {}
 
-  resolve-pkg-maps@1.0.0: {}
+  resolve-pkg-maps@1.0.0:
+    optional: true
 
-  reusify@1.0.4: {}
+  reusify@1.1.0: {}
 
-  rollup@4.24.0:
+  rollup@4.34.8:
     dependencies:
       '@types/estree': 1.0.6
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.24.0
-      '@rollup/rollup-android-arm64': 4.24.0
-      '@rollup/rollup-darwin-arm64': 4.24.0
-      '@rollup/rollup-darwin-x64': 4.24.0
-      '@rollup/rollup-linux-arm-gnueabihf': 4.24.0
-      '@rollup/rollup-linux-arm-musleabihf': 4.24.0
-      '@rollup/rollup-linux-arm64-gnu': 4.24.0
-      '@rollup/rollup-linux-arm64-musl': 4.24.0
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0
-      '@rollup/rollup-linux-riscv64-gnu': 4.24.0
-      '@rollup/rollup-linux-s390x-gnu': 4.24.0
-      '@rollup/rollup-linux-x64-gnu': 4.24.0
-      '@rollup/rollup-linux-x64-musl': 4.24.0
-      '@rollup/rollup-win32-arm64-msvc': 4.24.0
-      '@rollup/rollup-win32-ia32-msvc': 4.24.0
-      '@rollup/rollup-win32-x64-msvc': 4.24.0
+      '@rollup/rollup-android-arm-eabi': 4.34.8
+      '@rollup/rollup-android-arm64': 4.34.8
+      '@rollup/rollup-darwin-arm64': 4.34.8
+      '@rollup/rollup-darwin-x64': 4.34.8
+      '@rollup/rollup-freebsd-arm64': 4.34.8
+      '@rollup/rollup-freebsd-x64': 4.34.8
+      '@rollup/rollup-linux-arm-gnueabihf': 4.34.8
+      '@rollup/rollup-linux-arm-musleabihf': 4.34.8
+      '@rollup/rollup-linux-arm64-gnu': 4.34.8
+      '@rollup/rollup-linux-arm64-musl': 4.34.8
+      '@rollup/rollup-linux-loongarch64-gnu': 4.34.8
+      '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8
+      '@rollup/rollup-linux-riscv64-gnu': 4.34.8
+      '@rollup/rollup-linux-s390x-gnu': 4.34.8
+      '@rollup/rollup-linux-x64-gnu': 4.34.8
+      '@rollup/rollup-linux-x64-musl': 4.34.8
+      '@rollup/rollup-win32-arm64-msvc': 4.34.8
+      '@rollup/rollup-win32-ia32-msvc': 4.34.8
+      '@rollup/rollup-win32-x64-msvc': 4.34.8
       fsevents: 2.3.3
 
   run-parallel@1.2.0:
     dependencies:
       queue-microtask: 1.2.3
 
-  semver@7.6.3: {}
+  semver@7.7.1: {}
 
   shebang-command@2.0.0:
     dependencies:
@@ -2638,31 +2781,15 @@ snapshots:
 
   shebang-regex@3.0.0: {}
 
-  shiki@1.22.0:
-    dependencies:
-      '@shikijs/core': 1.22.0
-      '@shikijs/engine-javascript': 1.22.0
-      '@shikijs/engine-oniguruma': 1.22.0
-      '@shikijs/types': 1.22.0
-      '@shikijs/vscode-textmate': 9.3.0
-      '@types/hast': 3.0.4
-
   siginfo@2.0.0: {}
 
   slash@5.1.0: {}
 
   source-map-js@1.2.1: {}
 
-  space-separated-tokens@2.0.2: {}
-
   stackback@0.0.2: {}
 
-  std-env@3.7.0: {}
-
-  stringify-entities@4.0.4:
-    dependencies:
-      character-entities-html4: 2.1.0
-      character-entities-legacy: 3.0.0
+  std-env@3.8.0: {}
 
   strip-ansi@6.0.1:
     dependencies:
@@ -2670,25 +2797,19 @@ snapshots:
 
   strip-json-comments@3.1.1: {}
 
-  supports-color@5.5.0:
-    dependencies:
-      has-flag: 3.0.0
-
   supports-color@7.2.0:
     dependencies:
       has-flag: 4.0.0
 
   supports-color@9.4.0: {}
 
-  text-table@0.2.0: {}
-
   tinybench@2.9.0: {}
 
-  tinyexec@0.3.1: {}
+  tinyexec@0.3.2: {}
 
-  tinypool@1.0.1: {}
+  tinypool@1.0.2: {}
 
-  tinyrainbow@1.2.0: {}
+  tinyrainbow@2.0.0: {}
 
   tinyspy@3.0.2: {}
 
@@ -2696,13 +2817,9 @@ snapshots:
     dependencies:
       is-number: 7.0.0
 
-  tr46@0.0.3: {}
-
-  trim-lines@3.0.1: {}
-
-  ts-api-utils@1.3.0(typescript@5.7.0-beta):
+  ts-api-utils@2.0.1(typescript@5.8.2):
     dependencies:
-      typescript: 5.7.0-beta
+      typescript: 5.8.2
 
   ts-autofix@1.0.0:
     dependencies:
@@ -2711,96 +2828,65 @@ snapshots:
       commander: 8.3.0
       typescript: 4.9.5
 
-  tsx@4.19.1:
+  tsx@4.19.2:
     dependencies:
       esbuild: 0.23.1
-      get-tsconfig: 4.8.1
+      get-tsconfig: 4.10.0
     optionalDependencies:
       fsevents: 2.3.3
+    optional: true
 
   type-check@0.4.0:
     dependencies:
       prelude-ls: 1.2.1
 
-  type-fest@4.26.1: {}
+  type-fest@4.35.0: {}
 
-  typedoc@0.26.10(typescript@5.7.0-beta):
+  typedoc@0.27.9(typescript@5.8.2):
     dependencies:
+      '@gerrit0/mini-shiki': 1.27.2
       lunr: 2.3.9
       markdown-it: 14.1.0
       minimatch: 9.0.5
-      shiki: 1.22.0
-      typescript: 5.7.0-beta
-      yaml: 2.6.0
+      typescript: 5.8.2
+      yaml: 2.7.0
 
-  typescript-eslint@8.10.0(eslint@9.12.0)(typescript@5.7.0-beta):
+  typescript-eslint@8.25.0(eslint@9.21.0)(typescript@5.8.2):
     dependencies:
-      '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0)(typescript@5.7.0-beta))(eslint@9.12.0)(typescript@5.7.0-beta)
-      '@typescript-eslint/parser': 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
-      '@typescript-eslint/utils': 8.10.0(eslint@9.12.0)(typescript@5.7.0-beta)
-    optionalDependencies:
-      typescript: 5.7.0-beta
+      '@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0)(typescript@5.8.2))(eslint@9.21.0)(typescript@5.8.2)
+      '@typescript-eslint/parser': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
+      '@typescript-eslint/utils': 8.25.0(eslint@9.21.0)(typescript@5.8.2)
+      eslint: 9.21.0
+      typescript: 5.8.2
     transitivePeerDependencies:
-      - eslint
       - supports-color
 
   typescript@4.9.5: {}
 
-  typescript@5.7.0-beta: {}
+  typescript@5.8.2: {}
 
   uc.micro@2.1.0: {}
 
-  undici-types@6.19.8: {}
+  undici-types@6.20.0: {}
 
   unicorn-magic@0.1.0: {}
 
-  unist-util-is@6.0.0:
-    dependencies:
-      '@types/unist': 3.0.3
-
-  unist-util-position@5.0.0:
-    dependencies:
-      '@types/unist': 3.0.3
-
-  unist-util-stringify-position@4.0.0:
-    dependencies:
-      '@types/unist': 3.0.3
-
-  unist-util-visit-parents@6.0.1:
-    dependencies:
-      '@types/unist': 3.0.3
-      unist-util-is: 6.0.0
-
-  unist-util-visit@5.0.0:
-    dependencies:
-      '@types/unist': 3.0.3
-      unist-util-is: 6.0.0
-      unist-util-visit-parents: 6.0.1
-
   uri-js-replace@1.0.1: {}
 
   uri-js@4.4.1:
     dependencies:
       punycode: 2.3.1
 
-  vfile-message@4.0.2:
-    dependencies:
-      '@types/unist': 3.0.3
-      unist-util-stringify-position: 4.0.0
-
-  vfile@6.0.3:
-    dependencies:
-      '@types/unist': 3.0.3
-      vfile-message: 4.0.2
-
-  vite-node@2.1.3(@types/node@22.7.6):
+  vite-node@3.0.7(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0):
     dependencies:
       cac: 6.7.14
-      debug: 4.3.7(supports-color@9.4.0)
-      pathe: 1.1.2
-      vite: 5.4.9(@types/node@22.7.6)
+      debug: 4.4.0(supports-color@9.4.0)
+      es-module-lexer: 1.6.0
+      pathe: 2.0.3
+      vite: 6.2.0(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0)
     transitivePeerDependencies:
       - '@types/node'
+      - jiti
       - less
       - lightningcss
       - sass
@@ -2809,40 +2895,47 @@ snapshots:
       - sugarss
       - supports-color
       - terser
+      - tsx
+      - yaml
 
-  vite@5.4.9(@types/node@22.7.6):
+  vite@6.2.0(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0):
     dependencies:
-      esbuild: 0.21.5
-      postcss: 8.4.47
-      rollup: 4.24.0
+      esbuild: 0.25.0
+      postcss: 8.5.3
+      rollup: 4.34.8
     optionalDependencies:
-      '@types/node': 22.7.6
+      '@types/node': 22.13.8
       fsevents: 2.3.3
-
-  vitest@2.1.3(@types/node@22.7.6):
-    dependencies:
-      '@vitest/expect': 2.1.3
-      '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.6))
-      '@vitest/pretty-format': 2.1.3
-      '@vitest/runner': 2.1.3
-      '@vitest/snapshot': 2.1.3
-      '@vitest/spy': 2.1.3
-      '@vitest/utils': 2.1.3
-      chai: 5.1.1
-      debug: 4.3.7(supports-color@9.4.0)
-      magic-string: 0.30.12
-      pathe: 1.1.2
-      std-env: 3.7.0
+      tsx: 4.19.2
+      yaml: 2.7.0
+
+  vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0):
+    dependencies:
+      '@vitest/expect': 3.0.7
+      '@vitest/mocker': 3.0.7(vite@6.2.0(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0))
+      '@vitest/pretty-format': 3.0.7
+      '@vitest/runner': 3.0.7
+      '@vitest/snapshot': 3.0.7
+      '@vitest/spy': 3.0.7
+      '@vitest/utils': 3.0.7
+      chai: 5.2.0
+      debug: 4.4.0(supports-color@9.4.0)
+      expect-type: 1.1.0
+      magic-string: 0.30.17
+      pathe: 2.0.3
+      std-env: 3.8.0
       tinybench: 2.9.0
-      tinyexec: 0.3.1
-      tinypool: 1.0.1
-      tinyrainbow: 1.2.0
-      vite: 5.4.9(@types/node@22.7.6)
-      vite-node: 2.1.3(@types/node@22.7.6)
+      tinyexec: 0.3.2
+      tinypool: 1.0.2
+      tinyrainbow: 2.0.0
+      vite: 6.2.0(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0)
+      vite-node: 3.0.7(@types/node@22.13.8)(tsx@4.19.2)(yaml@2.7.0)
       why-is-node-running: 2.3.0
     optionalDependencies:
-      '@types/node': 22.7.6
+      '@types/debug': 4.1.12
+      '@types/node': 22.13.8
     transitivePeerDependencies:
+      - jiti
       - less
       - lightningcss
       - msw
@@ -2852,18 +2945,13 @@ snapshots:
       - sugarss
       - supports-color
       - terser
+      - tsx
+      - yaml
 
   wcwidth@1.0.1:
     dependencies:
       defaults: 1.0.4
 
-  webidl-conversions@3.0.1: {}
-
-  whatwg-url@5.0.0:
-    dependencies:
-      tr46: 0.0.3
-      webidl-conversions: 3.0.1
-
   which@2.0.2:
     dependencies:
       isexe: 2.0.0
@@ -2877,10 +2965,8 @@ snapshots:
 
   yaml-ast-parser@0.0.43: {}
 
-  yaml@2.6.0: {}
+  yaml@2.7.0: {}
 
   yargs-parser@21.1.1: {}
 
   yocto-queue@0.1.0: {}
-
-  zwitch@2.0.4: {}
diff --git a/src/cloud/openapi/openapi-typescript.ts b/src/cloud/openapi/openapi-typescript.ts
index 3a96ec3..9dc434d 100644
--- a/src/cloud/openapi/openapi-typescript.ts
+++ b/src/cloud/openapi/openapi-typescript.ts
@@ -665,72 +665,6 @@ export interface paths {
 		readonly patch?: never
 		readonly trace?: never
 	}
-	readonly "/pullrequests/{selected_user}": {
-		readonly parameters: {
-			readonly query?: never
-			readonly header?: never
-			readonly path: {
-				/** @description This can either be the username of the pull request author, the author's UUID
-				 *     surrounded by curly-braces, for example: `{account UUID}`, or the author's Atlassian ID.
-				 *      */
-				readonly selected_user: string
-			}
-			readonly cookie?: never
-		}
-		/**
-		 * List pull requests for a user
-		 * @deprecated
-		 * @description Returns all pull requests authored by the specified user.
-		 *
-		 *     By default only open pull requests are returned. This can be controlled
-		 *     using the `state` query parameter. To retrieve pull requests that are
-		 *     in one of multiple states, repeat the `state` parameter for each
-		 *     individual state.
-		 *
-		 *     This endpoint also supports filtering and sorting of the results. See
-		 *     [filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for more details.
-		 */
-		readonly get: {
-			readonly parameters: {
-				readonly query?: {
-					/** @description Only return pull requests that are in this state. This parameter can be repeated. */
-					readonly state?: "DECLINED" | "MERGED" | "OPEN" | "SUPERSEDED"
-				}
-				readonly header?: never
-				readonly path: {
-					/** @description This can either be the username of the pull request author, the author's UUID
-					 *     surrounded by curly-braces, for example: `{account UUID}`, or the author's Atlassian ID.
-					 *      */
-					readonly selected_user: string
-				}
-				readonly cookie?: never
-			}
-			readonly requestBody?: never
-			readonly responses: {
-				/** @description All pull requests authored by the specified user. */
-				readonly 200: {
-					headers: Readonly<Record<string, unknown>>
-					content: {
-						readonly "application/json": components["schemas"]["paginated_pullrequests"]
-					}
-				}
-				/** @description If the specified user does not exist. */
-				readonly 404: {
-					headers: Readonly<Record<string, unknown>>
-					content: {
-						readonly "application/json": components["schemas"]["error"]
-					}
-				}
-			}
-		}
-		readonly put?: never
-		readonly post?: never
-		readonly delete?: never
-		readonly options?: never
-		readonly head?: never
-		readonly patch?: never
-		readonly trace?: never
-	}
 	readonly "/repositories": {
 		readonly parameters: {
 			readonly query?: never
@@ -2684,6 +2618,20 @@ export interface paths {
 		 *     For example, one could use `https://foo.com/builds/{repository.full_name}`
 		 *     which Bitbucket will turn into `https://foo.com/builds/foo/bar` at render time.
 		 *     The context variables available are `repository` and `commit`.
+		 *
+		 *     To associate a commit status to a pull request, the refname field must be set to the source branch
+		 *     of the pull request.
+		 *
+		 *     Example:
+		 *     ```
+		 *     curl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo/commit/e10dae226959c2194f2b07b077c07762d93821cf/statuses/build/           -X POST -u jdoe -H 'Content-Type: application/json'           -d '{
+		 *         "key": "MY-BUILD",
+		 *         "state": "SUCCESSFUL",
+		 *         "description": "42 tests passed",
+		 *         "url": "https://www.example.org/my-build-result",
+		 *         "refname": "my-pr-branch"
+		 *       }'
+		 *     ```
 		 */
 		readonly post: {
 			readonly parameters: {
@@ -5568,12 +5516,10 @@ export interface paths {
 			}
 			readonly requestBody?: never
 			readonly responses: {
-				/** @description The issue object. */
-				readonly 200: {
+				/** @description Indicates the issue was deleted successfully. */
+				readonly 204: {
 					headers: Readonly<Record<string, unknown>>
-					content: {
-						readonly "application/json": components["schemas"]["issue"]
-					}
+					content?: never
 				}
 				/** @description When the authenticated user isn't authorized to delete the issue. */
 				readonly 403: {
@@ -8078,7 +8024,12 @@ export interface paths {
 		}
 		/**
 		 * List pipelines
-		 * @description Find pipelines
+		 * @description Find pipelines in a repository.
+		 *
+		 *     Note that unlike other endpoints in the Bitbucket API, this endpoint utilizes query parameters to allow filtering
+		 *     and sorting of returned results. See [query parameters](#api-repositories-workspace-repo-slug-pipelines-get-request-Query%20parameters)
+		 *     for specific details.
+		 *
 		 */
 		readonly get: operations["getPipelinesForRepository"]
 		readonly put?: never
@@ -15682,6 +15633,238 @@ export interface paths {
 		readonly patch?: never
 		readonly trace?: never
 	}
+	readonly "/users/{selected_user}/gpg-keys": {
+		readonly parameters: {
+			readonly query?: never
+			readonly header?: never
+			readonly path: {
+				/** @description This can either be an Atlassian Account ID OR the UUID of the account,
+				 *     surrounded by curly-braces, for example: `{account UUID}`.
+				 *      */
+				readonly selected_user: string
+			}
+			readonly cookie?: never
+		}
+		/**
+		 * List GPG keys
+		 * @description Returns a paginated list of the user's GPG public keys.
+		 *     The `key` and `subkeys` fields can also be requested from the endpoint.
+		 *     See [Partial Responses](/cloud/bitbucket/rest/intro/#partial-response) for more details.
+		 */
+		readonly get: {
+			readonly parameters: {
+				readonly query?: never
+				readonly header?: never
+				readonly path: {
+					/** @description This can either be an Atlassian Account ID OR the UUID of the account,
+					 *     surrounded by curly-braces, for example: `{account UUID}`.
+					 *      */
+					readonly selected_user: string
+				}
+				readonly cookie?: never
+			}
+			readonly requestBody?: never
+			readonly responses: {
+				/** @description A list of the GPG keys associated with the account. */
+				readonly 200: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["paginated_gpg_user_keys"]
+					}
+				}
+				/** @description If the specified user's keys are not accessible to the current user */
+				readonly 403: {
+					headers: Readonly<Record<string, unknown>>
+					content?: never
+				}
+				/** @description If the specified user does not exist */
+				readonly 404: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["error"]
+					}
+				}
+			}
+		}
+		readonly put?: never
+		/**
+		 * Add a new GPG key
+		 * @description Adds a new GPG public key to the specified user account and returns the resulting key.
+		 *
+		 *     Example:
+		 *
+		 *     ```
+		 *     $ curl -X POST -H "Content-Type: application/json" -d
+		 *     '{"key": "<insert GPG Key>"}'
+		 *     https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys
+		 *     ```
+		 */
+		readonly post: {
+			readonly parameters: {
+				readonly query?: never
+				readonly header?: never
+				readonly path: {
+					/** @description This can either be an Atlassian Account ID OR the UUID of the account,
+					 *     surrounded by curly-braces, for example: `{account UUID}`.
+					 *      */
+					readonly selected_user: string
+				}
+				readonly cookie?: never
+			}
+			/** @description The new GPG key object. */
+			readonly requestBody?: {
+				readonly content: {
+					readonly "application/json": components["schemas"]["GPG_account_key"]
+				}
+			}
+			readonly responses: {
+				/** @description The newly created GPG key. */
+				readonly 201: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["GPG_account_key"]
+					}
+				}
+				/** @description If the submitted key or related value is invalid */
+				readonly 400: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["error"]
+					}
+				}
+				/** @description If the current user does not have permission to add a key for the specified user */
+				readonly 403: {
+					headers: Readonly<Record<string, unknown>>
+					content?: never
+				}
+				/** @description If the specified user does not exist */
+				readonly 404: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["error"]
+					}
+				}
+			}
+		}
+		readonly delete?: never
+		readonly options?: never
+		readonly head?: never
+		readonly patch?: never
+		readonly trace?: never
+	}
+	readonly "/users/{selected_user}/gpg-keys/{fingerprint}": {
+		readonly parameters: {
+			readonly query?: never
+			readonly header?: never
+			readonly path: {
+				/** @description A GPG key fingerprint.
+				 *      */
+				readonly fingerprint: string
+				/** @description This can either be an Atlassian Account ID OR the UUID of the account,
+				 *     surrounded by curly-braces, for example: `{account UUID}`.
+				 *      */
+				readonly selected_user: string
+			}
+			readonly cookie?: never
+		}
+		/**
+		 * Get a GPG key
+		 * @description Returns a specific GPG public key belonging to a user.
+		 *     The `key` and `subkeys` fields can also be requested from the endpoint.
+		 *     See [Partial Responses](/cloud/bitbucket/rest/intro/#partial-response) for more details.
+		 */
+		readonly get: {
+			readonly parameters: {
+				readonly query?: never
+				readonly header?: never
+				readonly path: {
+					/** @description A GPG key fingerprint.
+					 *      */
+					readonly fingerprint: string
+					/** @description This can either be an Atlassian Account ID OR the UUID of the account,
+					 *     surrounded by curly-braces, for example: `{account UUID}`.
+					 *      */
+					readonly selected_user: string
+				}
+				readonly cookie?: never
+			}
+			readonly requestBody?: never
+			readonly responses: {
+				/** @description The specific GPG key matching the user and fingerprint. */
+				readonly 200: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["GPG_account_key"]
+					}
+				}
+				/** @description If the specified user's keys are not accessible to the current user */
+				readonly 403: {
+					headers: Readonly<Record<string, unknown>>
+					content?: never
+				}
+				/** @description If the specified user does not exist */
+				readonly 404: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["error"]
+					}
+				}
+			}
+		}
+		readonly put?: never
+		readonly post?: never
+		/**
+		 * Delete a GPG key
+		 * @description Deletes a specific GPG public key from a user's account.
+		 */
+		readonly delete: {
+			readonly parameters: {
+				readonly query?: never
+				readonly header?: never
+				readonly path: {
+					/** @description A GPG key fingerprint.
+					 *      */
+					readonly fingerprint: string
+					/** @description This can either be an Atlassian Account ID OR the UUID of the account,
+					 *     surrounded by curly-braces, for example: `{account UUID}`.
+					 *      */
+					readonly selected_user: string
+				}
+				readonly cookie?: never
+			}
+			readonly requestBody?: never
+			readonly responses: {
+				/** @description The key has been deleted */
+				readonly 204: {
+					headers: Readonly<Record<string, unknown>>
+					content?: never
+				}
+				/** @description If the submitted key or related value is invalid */
+				readonly 400: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["error"]
+					}
+				}
+				/** @description If the current user does not have permission to delete a key for the specified user, or the submitted key is a subkey */
+				readonly 403: {
+					headers: Readonly<Record<string, unknown>>
+					content?: never
+				}
+				/** @description If the specified key does not exist */
+				readonly 404: {
+					headers: Readonly<Record<string, unknown>>
+					content: {
+						readonly "application/json": components["schemas"]["error"]
+					}
+				}
+			}
+		}
+		readonly options?: never
+		readonly head?: never
+		readonly patch?: never
+		readonly trace?: never
+	}
 	readonly "/users/{selected_user}/pipelines_config/variables": {
 		readonly parameters: {
 			readonly query?: never
@@ -18926,6 +19109,7 @@ export interface components {
 		} & (Omit<components["schemas"]["object"], "type"> &
 			(Readonly<Record<string, unknown>> & {
 				readonly author?: components["schemas"]["author"]
+				readonly committer?: components["schemas"]["committer"]
 				/** Format: date-time */
 				readonly date?: string
 				readonly hash?: string
@@ -19271,6 +19455,14 @@ export interface components {
 				/** @description The commit status' id. */
 				readonly uuid?: string
 			}))
+		readonly committer: {
+			readonly type: "committer"
+		} & (Omit<components["schemas"]["object"], "type"> &
+			(Readonly<Record<string, unknown>> & {
+				/** @description The raw committer value from the repository. This may be the only value available if the committer does not match a user in Bitbucket. */
+				readonly raw?: string
+				readonly user?: components["schemas"]["account"]
+			}))
 		readonly component: {
 			readonly type: "component"
 		} & (Omit<components["schemas"]["object"], "type"> &
@@ -19554,6 +19746,44 @@ export interface components {
 			readonly send_email?: boolean
 			readonly type: string
 		}
+		readonly GPG_account_key: {
+			readonly type: "GPG_account_key"
+		} & (Omit<components["schemas"]["object"], "type"> &
+			(Readonly<Record<string, unknown>> & {
+				/** Format: date-time */
+				readonly added_on?: string
+				/** @description The comment parsed from the GPG key (if present) */
+				readonly comment?: string
+				/** Format: date-time */
+				readonly created_on?: string
+				/** Format: date-time */
+				readonly expires_on?: string
+				/** @description The GPG key fingerprint. */
+				readonly fingerprint?: string
+				/** @description The GPG key value in X format. */
+				readonly key?: string
+				/** @description The unique identifier for the GPG key */
+				readonly key_id?: string
+				/** Format: date-time */
+				readonly last_used?: string
+				readonly links?: {
+					/**
+					 * Link
+					 * @description A link to a resource related to this object.
+					 */
+					readonly self?: {
+						/** Format: uri */
+						readonly href?: string
+						readonly name?: string
+					}
+				}
+				/** @description The user-defined label for the GPG key */
+				readonly name?: string
+				readonly owner?: components["schemas"]["account"]
+				/** @description The fingerprint of the parent key. This value is null unless the current key is a subkey. */
+				readonly parent_fingerprint?: string
+				readonly subkeys?: readonly components["schemas"]["GPG_account_key"][]
+			}))
 		readonly group: {
 			readonly type: "group"
 		} & (Omit<components["schemas"]["object"], "type"> &
@@ -20245,6 +20475,29 @@ export interface components {
 			readonly size?: number
 			readonly values?: readonly components["schemas"]["commit_file"][]
 		}
+		/**
+		 * Paginated GPG User Keys
+		 * @description A paginated list of GPG keys.
+		 */
+		readonly paginated_gpg_user_keys: {
+			/**
+			 * Format: uri
+			 * @description Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.
+			 */
+			readonly next?: string
+			/** @description Page number of the current results. This is an optional element that is not provided in all responses. */
+			readonly page?: number
+			/** @description Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values. */
+			readonly pagelen?: number
+			/**
+			 * Format: uri
+			 * @description Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.
+			 */
+			readonly previous?: string
+			/** @description Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute. */
+			readonly size?: number
+			readonly values?: readonly components["schemas"]["GPG_account_key"][]
+		}
 		/**
 		 * Paginated Hook Events
 		 * @description A paginated list of webhook types available to subscribe on.
@@ -23035,6 +23288,7 @@ export type SchemaCommit = components["schemas"]["commit"]
 export type SchemaCommitComment = components["schemas"]["commit_comment"]
 export type SchemaCommitFile = components["schemas"]["commit_file"]
 export type SchemaCommitstatus = components["schemas"]["commitstatus"]
+export type SchemaCommitter = components["schemas"]["committer"]
 export type SchemaComponent = components["schemas"]["component"]
 export type SchemaDefaultReviewerAndType =
 	components["schemas"]["default_reviewer_and_type"]
@@ -23066,6 +23320,7 @@ export type SchemaEffectiveRepoBranchingModel =
 	components["schemas"]["effective_repo_branching_model"]
 export type SchemaError = components["schemas"]["error"]
 export type SchemaExportOptions = components["schemas"]["export_options"]
+export type SchemaGpgAccountKey = components["schemas"]["GPG_account_key"]
 export type SchemaGroup = components["schemas"]["group"]
 export type SchemaHookEvent = components["schemas"]["hook_event"]
 export type SchemaIssue = components["schemas"]["issue"]
@@ -23105,6 +23360,8 @@ export type SchemaPaginatedDiffstats =
 export type SchemaPaginatedEnvironments =
 	components["schemas"]["paginated_environments"]
 export type SchemaPaginatedFiles = components["schemas"]["paginated_files"]
+export type SchemaPaginatedGpgUserKeys =
+	components["schemas"]["paginated_gpg_user_keys"]
 export type SchemaPaginatedHookEvents =
 	components["schemas"]["paginated_hook_events"]
 export type SchemaPaginatedIssueAttachments =
@@ -24120,7 +24377,49 @@ export interface operations {
 	}
 	readonly getPipelinesForRepository: {
 		readonly parameters: {
-			readonly query?: never
+			readonly query?: {
+				/** @description The creation date to filter by. */
+				readonly created_on?: string
+				/** @description The UUID of the creator of the pipeline to filter by. */
+				readonly "creator.uuid"?: string
+				/** @description The page number of elements to retrieve. */
+				readonly page?: number
+				/** @description The maximum number of results to return. */
+				readonly pagelen?: number
+				/** @description The attribute name to sort on. */
+				readonly sort?: "created_on" | "creator.uuid" | "run_creation_date"
+				/** @description The pipeline status to filter by. */
+				readonly status?:
+					| "BUILDING"
+					| "ERROR"
+					| "FAILED"
+					| "HALTED"
+					| "PARSING"
+					| "PASSED"
+					| "PAUSED"
+					| "PENDING"
+					| "STOPPED"
+					| "UNKNOWN"
+				/** @description The name of the branch to filter by. */
+				readonly "target.branch"?: string
+				/** @description The revision to filter by. */
+				readonly "target.commit.hash"?: string
+				/** @description The reference name to filter by. */
+				readonly "target.ref_name"?: string
+				/** @description The type of the reference to filter by. */
+				readonly "target.ref_type"?: "ANNOTATED_TAG" | "BRANCH" | "TAG"
+				/** @description The pipeline pattern to filter by. */
+				readonly "target.selector.pattern"?: string
+				/** @description The type of pipeline to filter by. */
+				readonly "target.selector.type"?:
+					| "BRANCH"
+					| "CUSTOM"
+					| "DEFAULT"
+					| "PULLREQUESTS"
+					| "TAG"
+				/** @description The trigger type to filter by. */
+				readonly trigger_type?: "MANUAL" | "PARENT_STEP" | "PUSH" | "SCHEDULED"
+			}
 			readonly header?: never
 			readonly path: {
 				/** @description The repository. */
@@ -25167,6 +25466,11 @@ export interface operations {
 					readonly "application/octet-stream": components["schemas"]["error"]
 				}
 			}
+			/** @description After the step is completed, the log is moved to long term storage and a redirection to the log file is returned. */
+			readonly 307: {
+				headers: Readonly<Record<string, unknown>>
+				content?: never
+			}
 			/** @description A pipeline with the given UUID does not exist, a step with the given UUID does not exist in the pipeline or a log file does not exist for the given step. */
 			readonly 404: {
 				headers: Readonly<Record<string, unknown>>
@@ -25208,6 +25512,11 @@ export interface operations {
 				headers: Readonly<Record<string, unknown>>
 				content?: never
 			}
+			/** @description After the step is completed, the log is moved to long term storage and a redirection to the log file is returned. */
+			readonly 307: {
+				headers: Readonly<Record<string, unknown>>
+				content?: never
+			}
 			/** @description No account, repository, pipeline, step or log exist for the provided path. */
 			readonly 404: {
 				headers: Readonly<Record<string, unknown>>
diff --git a/src/cloud/openapi/swagger.v3.json b/src/cloud/openapi/swagger.v3.json
index f4a1ac1..f78bc3e 100644
--- a/src/cloud/openapi/swagger.v3.json
+++ b/src/cloud/openapi/swagger.v3.json
@@ -634,69 +634,6 @@
 				}
 			]
 		},
-		"/pullrequests/{selected_user}": {
-			"get": {
-				"tags": ["Pullrequests"],
-				"description": "Returns all pull requests authored by the specified user.\n\nBy default only open pull requests are returned. This can be controlled\nusing the `state` query parameter. To retrieve pull requests that are\nin one of multiple states, repeat the `state` parameter for each\nindividual state.\n\nThis endpoint also supports filtering and sorting of the results. See\n[filtering and sorting](/cloud/bitbucket/rest/intro/#filtering) for more details.",
-				"summary": "List pull requests for a user",
-				"responses": {
-					"200": {
-						"description": "All pull requests authored by the specified user.",
-						"content": {
-							"application/json": {
-								"schema": {
-									"$ref": "#/components/schemas/paginated_pullrequests"
-								}
-							}
-						}
-					},
-					"404": {
-						"description": "If the specified user does not exist.",
-						"content": {
-							"application/json": {
-								"schema": {
-									"$ref": "#/components/schemas/error"
-								}
-							}
-						}
-					}
-				},
-				"parameters": [
-					{
-						"name": "state",
-						"in": "query",
-						"description": "Only return pull requests that are in this state. This parameter can be repeated.",
-						"schema": {
-							"type": "string",
-							"enum": ["OPEN", "MERGED", "DECLINED", "SUPERSEDED"]
-						}
-					}
-				],
-				"security": [
-					{
-						"oauth2": ["pullrequest"]
-					},
-					{
-						"basic": []
-					},
-					{
-						"api_key": []
-					}
-				],
-				"deprecated": true
-			},
-			"parameters": [
-				{
-					"name": "selected_user",
-					"in": "path",
-					"description": "This can either be the username of the pull request author, the author's UUID\nsurrounded by curly-braces, for example: `{account UUID}`, or the author's Atlassian ID.\n",
-					"required": true,
-					"schema": {
-						"type": "string"
-					}
-				}
-			]
-		},
 		"/repositories": {
 			"get": {
 				"tags": ["Repositories"],
@@ -2847,13 +2784,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pullrequest:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pullrequest"]
@@ -2864,6 +2794,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pullrequest:bitbucket"]
+					}
 				]
 			}
 		},
@@ -2914,13 +2851,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -2931,6 +2861,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			}
 		},
@@ -3011,13 +2948,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3028,6 +2958,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			},
 			"get": {
@@ -3095,13 +3032,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3112,6 +3042,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -3162,13 +3099,6 @@
 						"description": "No content"
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3179,6 +3109,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			}
 		},
@@ -3238,13 +3175,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3255,6 +3185,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -3331,13 +3268,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3348,6 +3278,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			}
 		},
@@ -3426,13 +3363,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3443,6 +3373,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -3530,13 +3467,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3547,6 +3477,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -3606,13 +3543,6 @@
 						"description": "No content"
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -3623,6 +3553,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			}
 		},
@@ -3737,7 +3674,7 @@
 		"/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build": {
 			"post": {
 				"tags": ["Commit statuses"],
-				"description": "Creates a new build status against the specified commit.\n\nIf the specified key already exists, the existing status object will\nbe overwritten.\n\nExample:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo/commit/e10dae226959c2194f2b07b077c07762d93821cf/statuses/build/           -X POST -u jdoe -H 'Content-Type: application/json'           -d '{\n    \"key\": \"MY-BUILD\",\n    \"state\": \"SUCCESSFUL\",\n    \"description\": \"42 tests passed\",\n    \"url\": \"https://www.example.org/my-build-result\"\n  }'\n```\n\nWhen creating a new commit status, you can use a URI template for the URL.\nTemplates are URLs that contain variable names that Bitbucket will\nevaluate at runtime whenever the URL is displayed anywhere similar to\nparameter substitution in\n[Bitbucket Connect](https://developer.atlassian.com/bitbucket/concepts/context-parameters.html).\nFor example, one could use `https://foo.com/builds/{repository.full_name}`\nwhich Bitbucket will turn into `https://foo.com/builds/foo/bar` at render time.\nThe context variables available are `repository` and `commit`.",
+				"description": "Creates a new build status against the specified commit.\n\nIf the specified key already exists, the existing status object will\nbe overwritten.\n\nExample:\n\n```\ncurl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo/commit/e10dae226959c2194f2b07b077c07762d93821cf/statuses/build/           -X POST -u jdoe -H 'Content-Type: application/json'           -d '{\n    \"key\": \"MY-BUILD\",\n    \"state\": \"SUCCESSFUL\",\n    \"description\": \"42 tests passed\",\n    \"url\": \"https://www.example.org/my-build-result\"\n  }'\n```\n\nWhen creating a new commit status, you can use a URI template for the URL.\nTemplates are URLs that contain variable names that Bitbucket will\nevaluate at runtime whenever the URL is displayed anywhere similar to\nparameter substitution in\n[Bitbucket Connect](https://developer.atlassian.com/bitbucket/concepts/context-parameters.html).\nFor example, one could use `https://foo.com/builds/{repository.full_name}`\nwhich Bitbucket will turn into `https://foo.com/builds/foo/bar` at render time.\nThe context variables available are `repository` and `commit`.\n\nTo associate a commit status to a pull request, the refname field must be set to the source branch\nof the pull request.\n\nExample:\n```\ncurl https://api.bitbucket.org/2.0/repositories/my-workspace/my-repo/commit/e10dae226959c2194f2b07b077c07762d93821cf/statuses/build/           -X POST -u jdoe -H 'Content-Type: application/json'           -d '{\n    \"key\": \"MY-BUILD\",\n    \"state\": \"SUCCESSFUL\",\n    \"description\": \"42 tests passed\",\n    \"url\": \"https://www.example.org/my-build-result\",\n    \"refname\": \"my-pr-branch\"\n  }'\n```",
 				"summary": "Create a build status for a commit",
 				"responses": {
 					"201": {
@@ -5002,13 +4939,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -5019,6 +4949,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -5079,13 +5016,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -5096,6 +5026,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -5146,13 +5083,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -5163,6 +5093,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -5250,13 +5187,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -5267,6 +5197,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -5347,13 +5284,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -5364,6 +5294,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -5424,13 +5361,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -5441,6 +5371,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -5824,6 +5761,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["write:repository:bitbucket"]
+					}
 				]
 			},
 			"parameters": [
@@ -5935,6 +5879,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			},
 			"parameters": [
@@ -6186,13 +6137,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -6203,6 +6147,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -6281,13 +6232,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -6298,6 +6242,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -6358,13 +6309,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -6375,6 +6319,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -6426,13 +6377,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -6443,6 +6387,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -6496,13 +6447,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -6513,6 +6457,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -7601,15 +7552,8 @@
 				"description": "Deletes the specified issue. This requires write access to the\nrepository.",
 				"summary": "Delete an issue",
 				"responses": {
-					"200": {
-						"description": "The issue object.",
-						"content": {
-							"application/json": {
-								"schema": {
-									"$ref": "#/components/schemas/issue"
-								}
-							}
-						}
+					"204": {
+						"description": "Indicates the issue was deleted successfully."
 					},
 					"403": {
 						"description": "When the authenticated user isn't authorized to delete the issue.",
@@ -9436,7 +9380,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:repository:bitbucket"]
 					}
 				]
 			},
@@ -9593,7 +9537,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:repository:bitbucket"]
 					}
 				]
 			},
@@ -9830,7 +9774,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:repository:bitbucket"]
 					}
 				]
 			},
@@ -9988,7 +9932,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:repository:bitbucket"]
 					}
 				]
 			},
@@ -10127,7 +10071,7 @@
 			"get": {
 				"tags": ["Pipelines"],
 				"summary": "List pipelines",
-				"description": "Find pipelines",
+				"description": "Find pipelines in a repository.\n\nNote that unlike other endpoints in the Bitbucket API, this endpoint utilizes query parameters to allow filtering\nand sorting of returned results. See [query parameters](#api-repositories-workspace-repo-slug-pipelines-get-request-Query%20parameters)\nfor specific details.\n",
 				"operationId": "getPipelinesForRepository",
 				"parameters": [
 					{
@@ -10147,6 +10091,148 @@
 						"schema": {
 							"type": "string"
 						}
+					},
+					{
+						"name": "creator.uuid",
+						"description": "The UUID of the creator of the pipeline to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"format": "uuid"
+						}
+					},
+					{
+						"name": "target.ref_type",
+						"description": "The type of the reference to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"enum": ["BRANCH", "TAG", "ANNOTATED_TAG"]
+						}
+					},
+					{
+						"name": "target.ref_name",
+						"description": "The reference name to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"name": "target.branch",
+						"description": "The name of the branch to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"name": "target.commit.hash",
+						"description": "The revision to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"name": "target.selector.pattern",
+						"description": "The pipeline pattern to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"name": "target.selector.type",
+						"description": "The type of pipeline to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"enum": ["BRANCH", "TAG", "CUSTOM", "PULLREQUESTS", "DEFAULT"]
+						}
+					},
+					{
+						"name": "created_on",
+						"description": "The creation date to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"format": "date-time"
+						}
+					},
+					{
+						"name": "trigger_type",
+						"description": "The trigger type to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"enum": ["PUSH", "MANUAL", "SCHEDULED", "PARENT_STEP"]
+						}
+					},
+					{
+						"name": "status",
+						"description": "The pipeline status to filter by.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"enum": [
+								"PARSING",
+								"PENDING",
+								"PAUSED",
+								"HALTED",
+								"BUILDING",
+								"ERROR",
+								"PASSED",
+								"FAILED",
+								"STOPPED",
+								"UNKNOWN"
+							]
+						}
+					},
+					{
+						"name": "sort",
+						"description": "The attribute name to sort on.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "string",
+							"enum": ["creator.uuid", "created_on", "run_creation_date"]
+						}
+					},
+					{
+						"name": "page",
+						"description": "The page number of elements to retrieve.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "integer",
+							"format": "int32",
+							"minimum": 1,
+							"default": 1
+						}
+					},
+					{
+						"name": "pagelen",
+						"description": "The maximum number of results to return.",
+						"required": false,
+						"in": "query",
+						"schema": {
+							"type": "integer",
+							"format": "int32",
+							"minimum": 1,
+							"maximum": 100,
+							"default": 10
+						}
 					}
 				],
 				"responses": {
@@ -10161,13 +10247,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10178,6 +10257,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -10256,13 +10342,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket", "write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10273,6 +10352,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket", "write:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10324,14 +10410,7 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
-				"security": [
+				"security": [
 					{
 						"oauth2": ["pipeline"]
 					},
@@ -10341,6 +10420,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -10392,13 +10478,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:write"]
@@ -10409,6 +10488,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["write:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10462,13 +10548,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:write"]
@@ -10479,6 +10558,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["write:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10539,13 +10625,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10556,6 +10635,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10616,13 +10702,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10633,6 +10712,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10683,13 +10769,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10700,6 +10779,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10769,13 +10855,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10786,6 +10865,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10847,6 +10933,9 @@
 							}
 						}
 					},
+					"307": {
+						"description": "After the step is completed, the log is moved to long term storage and a redirection to the log file is returned."
+					},
 					"404": {
 						"description": "A pipeline with the given UUID does not exist, a step with the given UUID does not exist in the pipeline or a log file does not exist for the given step.",
 						"content": {
@@ -10868,13 +10957,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10885,6 +10967,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -10945,6 +11034,9 @@
 					"200": {
 						"description": "The raw log file for the build container or service container."
 					},
+					"307": {
+						"description": "After the step is completed, the log is moved to long term storage and a redirection to the log file is returned."
+					},
 					"404": {
 						"description": "No account, repository, pipeline, step or log exist for the provided path.",
 						"content": {
@@ -10956,13 +11048,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -10973,6 +11058,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11034,13 +11126,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -11051,6 +11136,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11112,13 +11204,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -11129,6 +11214,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11199,13 +11291,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -11216,6 +11301,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11279,13 +11371,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:write"]
@@ -11296,6 +11381,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["write:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11337,13 +11429,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository:admin"]
@@ -11354,6 +11439,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:repository:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -11404,13 +11496,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository:admin"]
@@ -11421,6 +11506,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:repository:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11493,13 +11585,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -11510,6 +11595,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11600,13 +11692,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket", "write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:write"]
@@ -11617,6 +11702,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket", "write:pipeline:bitbucket"]
+					}
 				]
 			},
 			"get": {
@@ -11666,13 +11758,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -11683,6 +11768,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11743,14 +11835,7 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
-				"security": [
+				"security": [
 					{
 						"oauth2": ["pipeline"]
 					},
@@ -11760,6 +11845,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -11829,13 +11921,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket", "write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:write"]
@@ -11846,6 +11931,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket", "write:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -11897,13 +11989,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["write:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:write"]
@@ -11914,6 +11999,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["write:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -11974,13 +12066,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -11991,6 +12076,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -12042,13 +12134,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -12059,6 +12144,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -12119,13 +12211,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12136,6 +12221,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -12178,13 +12270,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12195,6 +12280,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -12236,13 +12328,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -12253,6 +12338,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -12331,13 +12423,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12348,6 +12433,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -12408,13 +12500,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -12425,6 +12510,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -12494,13 +12586,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12511,6 +12596,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -12562,13 +12654,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12579,6 +12664,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -12620,13 +12712,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -12637,6 +12722,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -12715,13 +12807,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12732,6 +12817,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -12792,13 +12884,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -12809,6 +12894,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -12878,13 +12970,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12895,6 +12980,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -12946,13 +13038,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -12963,6 +13048,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -19700,39 +19792,84 @@
 				}
 			]
 		},
-		"/users/{selected_user}/pipelines_config/variables": {
+		"/users/{selected_user}/gpg-keys": {
 			"get": {
-				"tags": ["Pipelines"],
-				"deprecated": true,
-				"summary": "List variables for a user",
-				"description": "Find user level variables.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
-				"operationId": "getPipelineVariablesForUser",
-				"parameters": [
-					{
-						"name": "selected_user",
-						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"required": true,
-						"in": "path",
-						"schema": {
-							"type": "string"
-						}
-					}
-				],
+				"tags": ["GPG"],
+				"description": "Returns a paginated list of the user's GPG public keys.\nThe `key` and `subkeys` fields can also be requested from the endpoint.\nSee [Partial Responses](/cloud/bitbucket/rest/intro/#partial-response) for more details.",
+				"summary": "List GPG keys",
 				"responses": {
 					"200": {
-						"description": "The found user level variables.",
+						"description": "A list of the GPG keys associated with the account.",
 						"content": {
 							"application/json": {
 								"schema": {
-									"$ref": "#/components/schemas/paginated_pipeline_variables"
-								}
+									"$ref": "#/components/schemas/paginated_gpg_user_keys"
+								},
+								"examples": {
+									"response": {
+										"value": {
+											"page": 1,
+											"pagelen": 10,
+											"size": 1,
+											"values": [
+												{
+													"added_on": "2024-09-24T12:09:33.154081+00:00",
+													"created_on": "2018-03-20T13:09:04.207005+00:00",
+													"expires_on": null,
+													"fingerprint": "h4m26ppxrol7blr7spbc7lhyymokdbnkxd06kzrt",
+													"key_id": "ymokdbnkxd06kzrt",
+													"last_used": "2024-09-25T15:18:05.196003+00:00",
+													"links": {
+														"self": {
+															"href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys/H4M26PPXROL7BLR7SPBC7LHYYMOKDBNKXD06KZRT"
+														}
+													},
+													"name": "Alice's OpenPGP key",
+													"owner": {
+														"display_name": "Mark Adams",
+														"links": {
+															"avatar": {
+																"href": "https://bitbucket.org/account/markadams-atl/avatar/32/"
+															},
+															"html": {
+																"href": "https://bitbucket.org/markadams-atl/"
+															},
+															"self": {
+																"href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}"
+															}
+														},
+														"type": "user",
+														"username": "markadams-atl",
+														"nickname": "markadams-atl",
+														"uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}"
+													},
+													"parent_fingerprint": null,
+													"type": "gpg_key"
+												}
+											]
+										}
+									}
+								}
+							}
+						}
+					},
+					"403": {
+						"description": "If the specified user's keys are not accessible to the current user"
+					},
+					"404": {
+						"description": "If the specified user does not exist",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/error"
+								}
 							}
 						}
 					}
 				},
 				"security": [
 					{
-						"oauth2": ["pipeline"]
+						"oauth2": ["account"]
 					},
 					{
 						"basic": []
@@ -19743,46 +19880,60 @@
 				]
 			},
 			"post": {
-				"tags": ["Pipelines"],
-				"deprecated": true,
-				"summary": "Create a variable for a user",
-				"description": "Create a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
-				"operationId": "createPipelineVariableForUser",
-				"parameters": [
-					{
-						"name": "selected_user",
-						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"required": true,
-						"in": "path",
-						"schema": {
-							"type": "string"
-						}
-					}
-				],
-				"requestBody": {
-					"$ref": "#/components/requestBodies/pipeline_variable2"
-				},
+				"tags": ["GPG"],
+				"description": "Adds a new GPG public key to the specified user account and returns the resulting key.\n\nExample:\n\n```\n$ curl -X POST -H \"Content-Type: application/json\" -d\n'{\"key\": \"<insert GPG Key>\"}'\nhttps://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys\n```",
+				"summary": "Add a new GPG key",
 				"responses": {
 					"201": {
-						"description": "The created variable.",
-						"headers": {
-							"Location": {
-								"description": "The URL of the newly created pipeline variable.",
-								"schema": {
-									"type": "string"
-								}
-							}
-						},
+						"description": "The newly created GPG key.",
 						"content": {
 							"application/json": {
 								"schema": {
-									"$ref": "#/components/schemas/pipeline_variable"
+									"$ref": "#/components/schemas/GPG_account_key"
+								},
+								"examples": {
+									"response": {
+										"value": {
+											"added_on": "2024-09-24T12:09:33.154081+00:00",
+											"created_on": "2018-03-20T13:09:04.207005+00:00",
+											"expires_on": null,
+											"fingerprint": "h4m26ppxrol7blr7spbc7lhyymokdbnkxd06kzrt",
+											"key_id": "ymokdbnkxd06kzrt",
+											"last_used": "2024-09-25T15:18:05.196003+00:00",
+											"links": {
+												"self": {
+													"href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys/H4M26PPXROL7BLR7SPBC7LHYYMOKDBNKXD06KZRT"
+												}
+											},
+											"name": "Alice's OpenPGP key",
+											"owner": {
+												"display_name": "Mark Adams",
+												"links": {
+													"avatar": {
+														"href": "https://bitbucket.org/account/markadams-atl/avatar/32/"
+													},
+													"html": {
+														"href": "https://bitbucket.org/markadams-atl/"
+													},
+													"self": {
+														"href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}"
+													}
+												},
+												"type": "user",
+												"username": "markadams-atl",
+												"nickname": "markadams-atl",
+												"uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}"
+											},
+											"parent_fingerprint": null,
+											"type": "gpg_key"
+										}
+									}
 								}
 							}
 						}
 					},
-					"404": {
-						"description": "The account does not exist.",
+					"400": {
+						"description": "If the submitted key or related value is invalid",
 						"content": {
 							"application/json": {
 								"schema": {
@@ -19791,8 +19942,11 @@
 							}
 						}
 					},
-					"409": {
-						"description": "A variable with the provided key already exists.",
+					"403": {
+						"description": "If the current user does not have permission to add a key for the specified user"
+					},
+					"404": {
+						"description": "If the specified user does not exist",
 						"content": {
 							"application/json": {
 								"schema": {
@@ -19802,9 +19956,19 @@
 						}
 					}
 				},
+				"requestBody": {
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/GPG_account_key"
+							}
+						}
+					},
+					"description": "The new GPG key object."
+				},
 				"security": [
 					{
-						"oauth2": ["pipeline:variable"]
+						"oauth2": ["account:write"]
 					},
 					{
 						"basic": []
@@ -19813,48 +19977,43 @@
 						"api_key": []
 					}
 				]
-			}
-		},
-		"/users/{selected_user}/pipelines_config/variables/{variable_uuid}": {
-			"get": {
-				"tags": ["Pipelines"],
-				"deprecated": true,
-				"summary": "Get a variable for a user",
-				"description": "Retrieve a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
-				"operationId": "getPipelineVariableForUser",
-				"parameters": [
-					{
-						"name": "selected_user",
-						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"required": true,
-						"in": "path",
-						"schema": {
-							"type": "string"
-						}
-					},
-					{
-						"name": "variable_uuid",
-						"description": "The UUID of the variable to retrieve.",
-						"required": true,
-						"in": "path",
-						"schema": {
-							"type": "string"
-						}
+			},
+			"parameters": [
+				{
+					"name": "selected_user",
+					"in": "path",
+					"description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n",
+					"required": true,
+					"schema": {
+						"type": "string"
 					}
-				],
+				}
+			]
+		},
+		"/users/{selected_user}/gpg-keys/{fingerprint}": {
+			"delete": {
+				"tags": ["GPG"],
+				"description": "Deletes a specific GPG public key from a user's account.",
+				"summary": "Delete a GPG key",
 				"responses": {
-					"200": {
-						"description": "The variable.",
+					"204": {
+						"description": "The key has been deleted"
+					},
+					"400": {
+						"description": "If the submitted key or related value is invalid",
 						"content": {
 							"application/json": {
 								"schema": {
-									"$ref": "#/components/schemas/pipeline_variable"
+									"$ref": "#/components/schemas/error"
 								}
 							}
 						}
 					},
+					"403": {
+						"description": "If the current user does not have permission to delete a key for the specified user, or the submitted key is a subkey"
+					},
 					"404": {
-						"description": "The account or variable with the given UUID was not found.",
+						"description": "If the specified key does not exist",
 						"content": {
 							"application/json": {
 								"schema": {
@@ -19866,7 +20025,7 @@
 				},
 				"security": [
 					{
-						"oauth2": ["pipeline"]
+						"oauth2": ["account:write"]
 					},
 					{
 						"basic": []
@@ -19876,48 +20035,64 @@
 					}
 				]
 			},
-			"put": {
-				"tags": ["Pipelines"],
-				"deprecated": true,
-				"summary": "Update a variable for a user",
-				"description": "Update a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
-				"operationId": "updatePipelineVariableForUser",
-				"parameters": [
-					{
-						"name": "selected_user",
-						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"required": true,
-						"in": "path",
-						"schema": {
-							"type": "string"
-						}
-					},
-					{
-						"name": "variable_uuid",
-						"description": "The UUID of the variable.",
-						"required": true,
-						"in": "path",
-						"schema": {
-							"type": "string"
-						}
-					}
-				],
-				"requestBody": {
-					"$ref": "#/components/requestBodies/pipeline_variable"
-				},
+			"get": {
+				"tags": ["GPG"],
+				"description": "Returns a specific GPG public key belonging to a user.\nThe `key` and `subkeys` fields can also be requested from the endpoint.\nSee [Partial Responses](/cloud/bitbucket/rest/intro/#partial-response) for more details.",
+				"summary": "Get a GPG key",
 				"responses": {
 					"200": {
-						"description": "The variable was updated.",
+						"description": "The specific GPG key matching the user and fingerprint.",
 						"content": {
 							"application/json": {
 								"schema": {
-									"$ref": "#/components/schemas/pipeline_variable"
+									"$ref": "#/components/schemas/GPG_account_key"
+								},
+								"examples": {
+									"response": {
+										"value": {
+											"added_on": "2024-09-24T12:09:33.154081+00:00",
+											"created_on": "2018-03-20T13:09:04.207005+00:00",
+											"expires_on": null,
+											"fingerprint": "h4m26ppxrol7blr7spbc7lhyymokdbnkxd06kzrt",
+											"key_id": "ymokdbnkxd06kzrt",
+											"last_used": "2024-09-25T15:18:05.196003+00:00",
+											"links": {
+												"self": {
+													"href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}/gpg-keys/H4M26PPXROL7BLR7SPBC7LHYYMOKDBNKXD06KZRT"
+												}
+											},
+											"name": "Alice's OpenPGP key",
+											"owner": {
+												"display_name": "Mark Adams",
+												"links": {
+													"avatar": {
+														"href": "https://bitbucket.org/account/markadams-atl/avatar/32/"
+													},
+													"html": {
+														"href": "https://bitbucket.org/markadams-atl/"
+													},
+													"self": {
+														"href": "https://api.bitbucket.org/2.0/users/{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}"
+													}
+												},
+												"type": "user",
+												"username": "markadams-atl",
+												"nickname": "markadams-atl",
+												"uuid": "{d7dd0e2d-3994-4a50-a9ee-d260b6cefdab}"
+											},
+											"parent_fingerprint": null,
+											"type": "gpg_key"
+										}
+									}
 								}
 							}
 						}
 					},
+					"403": {
+						"description": "If the specified user's keys are not accessible to the current user"
+					},
 					"404": {
-						"description": "The account or the variable was not found.",
+						"description": "If the specified user does not exist",
 						"content": {
 							"application/json": {
 								"schema": {
@@ -19929,7 +20104,7 @@
 				},
 				"security": [
 					{
-						"oauth2": ["pipeline:variable"]
+						"oauth2": ["account"]
 					},
 					{
 						"basic": []
@@ -19939,14 +20114,36 @@
 					}
 				]
 			},
-			"delete": {
-				"tags": ["Pipelines"],
-				"deprecated": true,
-				"summary": "Delete a variable for a user",
-				"description": "Delete an account level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
-				"operationId": "deletePipelineVariableForUser",
-				"parameters": [
-					{
+			"parameters": [
+				{
+					"name": "fingerprint",
+					"in": "path",
+					"description": "A GPG key fingerprint.\n",
+					"required": true,
+					"schema": {
+						"type": "string"
+					}
+				},
+				{
+					"name": "selected_user",
+					"in": "path",
+					"description": "This can either be an Atlassian Account ID OR the UUID of the account,\nsurrounded by curly-braces, for example: `{account UUID}`.\n",
+					"required": true,
+					"schema": {
+						"type": "string"
+					}
+				}
+			]
+		},
+		"/users/{selected_user}/pipelines_config/variables": {
+			"get": {
+				"tags": ["Pipelines"],
+				"deprecated": true,
+				"summary": "List variables for a user",
+				"description": "Find user level variables.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
+				"operationId": "getPipelineVariablesForUser",
+				"parameters": [
+					{
 						"name": "selected_user",
 						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
 						"required": true,
@@ -19954,10 +20151,42 @@
 						"schema": {
 							"type": "string"
 						}
+					}
+				],
+				"responses": {
+					"200": {
+						"description": "The found user level variables.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/paginated_pipeline_variables"
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"oauth2": ["pipeline"]
 					},
 					{
-						"name": "variable_uuid",
-						"description": "The UUID of the variable to delete.",
+						"basic": []
+					},
+					{
+						"api_key": []
+					}
+				]
+			},
+			"post": {
+				"tags": ["Pipelines"],
+				"deprecated": true,
+				"summary": "Create a variable for a user",
+				"description": "Create a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
+				"operationId": "createPipelineVariableForUser",
+				"parameters": [
+					{
+						"name": "selected_user",
+						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
 						"required": true,
 						"in": "path",
 						"schema": {
@@ -19965,12 +20194,40 @@
 						}
 					}
 				],
+				"requestBody": {
+					"$ref": "#/components/requestBodies/pipeline_variable2"
+				},
 				"responses": {
-					"204": {
-						"description": "The variable was deleted"
+					"201": {
+						"description": "The created variable.",
+						"headers": {
+							"Location": {
+								"description": "The URL of the newly created pipeline variable.",
+								"schema": {
+									"type": "string"
+								}
+							}
+						},
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/pipeline_variable"
+								}
+							}
+						}
 					},
 					"404": {
-						"description": "The account or the variable with the provided UUID does not exist.",
+						"description": "The account does not exist.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/error"
+								}
+							}
+						}
+					},
+					"409": {
+						"description": "A variable with the provided key already exists.",
 						"content": {
 							"application/json": {
 								"schema": {
@@ -19993,52 +20250,58 @@
 				]
 			}
 		},
-		"/users/{selected_user}/properties/{app_key}/{property_name}": {
-			"put": {
-				"responses": {
-					"204": {
-						"description": "An empty response."
-					}
-				},
-				"operationId": "updateUserHostedPropertyValue",
-				"summary": "Update a user application property",
-				"description": "Update an [application property](/cloud/bitbucket/application-properties/) value stored against a user.",
+		"/users/{selected_user}/pipelines_config/variables/{variable_uuid}": {
+			"get": {
+				"tags": ["Pipelines"],
+				"deprecated": true,
+				"summary": "Get a variable for a user",
+				"description": "Retrieve a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
+				"operationId": "getPipelineVariableForUser",
 				"parameters": [
 					{
-						"required": true,
-						"in": "path",
 						"name": "selected_user",
 						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"schema": {
-							"type": "string"
-						}
-					},
-					{
 						"required": true,
 						"in": "path",
-						"name": "app_key",
-						"description": "The key of the Connect app.",
 						"schema": {
 							"type": "string"
 						}
 					},
 					{
+						"name": "variable_uuid",
+						"description": "The UUID of the variable to retrieve.",
 						"required": true,
 						"in": "path",
-						"name": "property_name",
-						"description": "The name of the property.",
 						"schema": {
 							"type": "string"
 						}
 					}
 				],
-				"requestBody": {
-					"$ref": "#/components/requestBodies/application_property"
+				"responses": {
+					"200": {
+						"description": "The variable.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/pipeline_variable"
+								}
+							}
+						}
+					},
+					"404": {
+						"description": "The account or variable with the given UUID was not found.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/error"
+								}
+							}
+						}
+					}
 				},
-				"tags": ["properties"],
 				"security": [
 					{
-						"oauth2": []
+						"oauth2": ["pipeline"]
 					},
 					{
 						"basic": []
@@ -20048,48 +20311,60 @@
 					}
 				]
 			},
-			"delete": {
-				"responses": {
-					"204": {
-						"description": "An empty response."
-					}
-				},
-				"operationId": "deleteUserHostedPropertyValue",
-				"summary": "Delete a user application property",
-				"description": "Delete an [application property](/cloud/bitbucket/application-properties/) value stored against a user.",
+			"put": {
+				"tags": ["Pipelines"],
+				"deprecated": true,
+				"summary": "Update a variable for a user",
+				"description": "Update a user level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
+				"operationId": "updatePipelineVariableForUser",
 				"parameters": [
 					{
-						"required": true,
-						"in": "path",
 						"name": "selected_user",
 						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"schema": {
-							"type": "string"
-						}
-					},
-					{
 						"required": true,
 						"in": "path",
-						"name": "app_key",
-						"description": "The key of the Connect app.",
 						"schema": {
 							"type": "string"
 						}
 					},
 					{
+						"name": "variable_uuid",
+						"description": "The UUID of the variable.",
 						"required": true,
 						"in": "path",
-						"name": "property_name",
-						"description": "The name of the property.",
 						"schema": {
 							"type": "string"
 						}
 					}
 				],
-				"tags": ["properties"],
+				"requestBody": {
+					"$ref": "#/components/requestBodies/pipeline_variable"
+				},
+				"responses": {
+					"200": {
+						"description": "The variable was updated.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/pipeline_variable"
+								}
+							}
+						}
+					},
+					"404": {
+						"description": "The account or the variable was not found.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/error"
+								}
+							}
+						}
+					}
+				},
 				"security": [
 					{
-						"oauth2": []
+						"oauth2": ["pipeline:variable"]
 					},
 					{
 						"basic": []
@@ -20099,60 +20374,220 @@
 					}
 				]
 			},
-			"get": {
-				"responses": {
-					"200": {
-						"description": "The value of the property.",
-						"content": {
-							"application/json": {
-								"schema": {
-									"$ref": "#/components/schemas/application_property"
-								}
-							}
-						}
-					}
-				},
-				"operationId": "retrieveUserHostedPropertyValue",
-				"summary": "Get a user application property",
-				"description": "Retrieve an [application property](/cloud/bitbucket/application-properties/) value stored against a user.",
+			"delete": {
+				"tags": ["Pipelines"],
+				"deprecated": true,
+				"summary": "Delete a variable for a user",
+				"description": "Delete an account level variable.\nThis endpoint has been deprecated, and you should use the new workspaces endpoint. For more information, see [the announcement](https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-teams-deprecation/).",
+				"operationId": "deletePipelineVariableForUser",
 				"parameters": [
 					{
-						"required": true,
-						"in": "path",
 						"name": "selected_user",
 						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
-						"schema": {
-							"type": "string"
-						}
-					},
-					{
 						"required": true,
 						"in": "path",
-						"name": "app_key",
-						"description": "The key of the Connect app.",
 						"schema": {
 							"type": "string"
 						}
 					},
 					{
+						"name": "variable_uuid",
+						"description": "The UUID of the variable to delete.",
 						"required": true,
 						"in": "path",
-						"name": "property_name",
-						"description": "The name of the property.",
 						"schema": {
 							"type": "string"
 						}
 					}
 				],
-				"tags": ["properties"],
-				"security": [
-					{
-						"oauth2": []
-					},
-					{
-						"basic": []
+				"responses": {
+					"204": {
+						"description": "The variable was deleted"
 					},
-					{
+					"404": {
+						"description": "The account or the variable with the provided UUID does not exist.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/error"
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"oauth2": ["pipeline:variable"]
+					},
+					{
+						"basic": []
+					},
+					{
+						"api_key": []
+					}
+				]
+			}
+		},
+		"/users/{selected_user}/properties/{app_key}/{property_name}": {
+			"put": {
+				"responses": {
+					"204": {
+						"description": "An empty response."
+					}
+				},
+				"operationId": "updateUserHostedPropertyValue",
+				"summary": "Update a user application property",
+				"description": "Update an [application property](/cloud/bitbucket/application-properties/) value stored against a user.",
+				"parameters": [
+					{
+						"required": true,
+						"in": "path",
+						"name": "selected_user",
+						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"required": true,
+						"in": "path",
+						"name": "app_key",
+						"description": "The key of the Connect app.",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"required": true,
+						"in": "path",
+						"name": "property_name",
+						"description": "The name of the property.",
+						"schema": {
+							"type": "string"
+						}
+					}
+				],
+				"requestBody": {
+					"$ref": "#/components/requestBodies/application_property"
+				},
+				"tags": ["properties"],
+				"security": [
+					{
+						"oauth2": []
+					},
+					{
+						"basic": []
+					},
+					{
+						"api_key": []
+					}
+				]
+			},
+			"delete": {
+				"responses": {
+					"204": {
+						"description": "An empty response."
+					}
+				},
+				"operationId": "deleteUserHostedPropertyValue",
+				"summary": "Delete a user application property",
+				"description": "Delete an [application property](/cloud/bitbucket/application-properties/) value stored against a user.",
+				"parameters": [
+					{
+						"required": true,
+						"in": "path",
+						"name": "selected_user",
+						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"required": true,
+						"in": "path",
+						"name": "app_key",
+						"description": "The key of the Connect app.",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"required": true,
+						"in": "path",
+						"name": "property_name",
+						"description": "The name of the property.",
+						"schema": {
+							"type": "string"
+						}
+					}
+				],
+				"tags": ["properties"],
+				"security": [
+					{
+						"oauth2": []
+					},
+					{
+						"basic": []
+					},
+					{
+						"api_key": []
+					}
+				]
+			},
+			"get": {
+				"responses": {
+					"200": {
+						"description": "The value of the property.",
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/application_property"
+								}
+							}
+						}
+					}
+				},
+				"operationId": "retrieveUserHostedPropertyValue",
+				"summary": "Get a user application property",
+				"description": "Retrieve an [application property](/cloud/bitbucket/application-properties/) value stored against a user.",
+				"parameters": [
+					{
+						"required": true,
+						"in": "path",
+						"name": "selected_user",
+						"description": "Either the UUID of the account surrounded by curly-braces, for example `{account UUID}`, OR an Atlassian Account ID.",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"required": true,
+						"in": "path",
+						"name": "app_key",
+						"description": "The key of the Connect app.",
+						"schema": {
+							"type": "string"
+						}
+					},
+					{
+						"required": true,
+						"in": "path",
+						"name": "property_name",
+						"description": "The name of the property.",
+						"schema": {
+							"type": "string"
+						}
+					}
+				],
+				"tags": ["properties"],
+				"security": [
+					{
+						"oauth2": []
+					},
+					{
+						"basic": []
+					},
+					{
 						"api_key": []
 					}
 				]
@@ -20337,7 +20772,7 @@
 		},
 		"/users/{selected_user}/ssh-keys": {
 			"get": {
-				"tags": ["Ssh"],
+				"tags": ["SSH"],
 				"description": "Returns a paginated list of the user's SSH public keys.",
 				"summary": "List SSH keys",
 				"responses": {
@@ -20421,7 +20856,7 @@
 				]
 			},
 			"post": {
-				"tags": ["Ssh"],
+				"tags": ["SSH"],
 				"description": "Adds a new SSH public key to the specified user account and returns the resulting key.\n\nExample:\n\n```\n$ curl -X POST -H \"Content-Type: application/json\" -d '{\"key\": \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqP3Cr632C2dNhhgKVcon4ldUSAeKiku2yP9O9/bDtY user@myhost\"}' https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys\n```",
 				"summary": "Add a new SSH key",
 				"responses": {
@@ -20531,7 +20966,7 @@
 		},
 		"/users/{selected_user}/ssh-keys/{key_id}": {
 			"delete": {
-				"tags": ["Ssh"],
+				"tags": ["SSH"],
 				"description": "Deletes a specific SSH public key from a user's account.",
 				"summary": "Delete a SSH key",
 				"responses": {
@@ -20575,7 +21010,7 @@
 				]
 			},
 			"get": {
-				"tags": ["Ssh"],
+				"tags": ["SSH"],
 				"description": "Returns a specific SSH public key belonging to a user.",
 				"summary": "Get a SSH key",
 				"responses": {
@@ -20652,7 +21087,7 @@
 				]
 			},
 			"put": {
-				"tags": ["Ssh"],
+				"tags": ["SSH"],
 				"description": "Updates a specific SSH public key on a user's account\n\nNote: Only the 'comment' field can be updated using this API. To modify the key or comment values, you must delete and add the key again.\n\nExample:\n\n```\n$ curl -X PUT -H \"Content-Type: application/json\" -d '{\"label\": \"Work key\"}' https://api.bitbucket.org/2.0/users/{ed08f5e1-605b-4f4a-aee4-6c97628a673e}/ssh-keys/{b15b6026-9c02-4626-b4ad-b905f99f763a}\n```",
 				"summary": "Update a SSH key",
 				"responses": {
@@ -21254,7 +21689,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:workspace:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:workspace:bitbucket"]
 					}
 				]
 			},
@@ -21322,7 +21757,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:workspace:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:workspace:bitbucket"]
 					}
 				]
 			},
@@ -21442,7 +21877,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:workspace:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:workspace:bitbucket"]
 					}
 				]
 			},
@@ -21576,7 +22011,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:repository:bitbucket"]
 					}
 				]
 			},
@@ -21695,7 +22130,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:repository:bitbucket"]
 					}
 				]
 			},
@@ -21839,13 +22274,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -21856,6 +22284,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"post": {
@@ -21917,13 +22352,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -21934,6 +22362,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -21985,13 +22420,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline"]
@@ -22002,6 +22430,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:pipeline:bitbucket"]
+					}
 				]
 			},
 			"put": {
@@ -22054,13 +22489,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -22071,6 +22499,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			},
 			"delete": {
@@ -22113,13 +22548,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["admin:pipeline:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["pipeline:variable"]
@@ -22130,6 +22558,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["admin:pipeline:bitbucket"]
+					}
 				]
 			}
 		},
@@ -23642,7 +24077,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:project:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:project:bitbucket"]
 					}
 				]
 			},
@@ -23798,7 +24233,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:project:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:project:bitbucket"]
 					}
 				]
 			},
@@ -24034,7 +24469,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:project:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:project:bitbucket"]
 					}
 				]
 			},
@@ -24191,7 +24626,7 @@
 					{
 						"state": "Current",
 						"scheme": "oauth2",
-						"scopes": ["read:project:bitbucket", "read:user:bitbucket"]
+						"scopes": ["read:project:bitbucket"]
 					}
 				]
 			},
@@ -24560,13 +24995,6 @@
 						}
 					}
 				},
-				"x-atlassian-oauth2-scopes": [
-					{
-						"state": "Current",
-						"scheme": "oauth2",
-						"scopes": ["read:repository:bitbucket"]
-					}
-				],
 				"security": [
 					{
 						"oauth2": ["repository"]
@@ -24577,6 +25005,13 @@
 					{
 						"api_key": []
 					}
+				],
+				"x-atlassian-oauth2-scopes": [
+					{
+						"state": "Current",
+						"scheme": "oauth2",
+						"scopes": ["read:repository:bitbucket"]
+					}
 				]
 			}
 		}
@@ -24610,6 +25045,10 @@
 			"name": "Downloads",
 			"description": "Access the list of download links associated with the repository."
 		},
+		{
+			"name": "GPG",
+			"description": "The GPG resource allows you to manage GPG keys.\n"
+		},
 		{
 			"name": "Issue tracker",
 			"description": "The issue resources provide functionality for getting information on\nissues in an issue tracker, creating new issues, updating them and deleting\nthem.\n\nYou can access public issues without authentication, but you can't gain access\nto private repositories' issues. By authenticating, you will get the ability\nto create issues, as well as access to updating data or deleting issues you\nhave access to. Issue Tracker features are not supported for repositories in workspaces administered through admin.atlassian.com.\n"
@@ -24638,6 +25077,10 @@
 			"name": "Repositories",
 			"description": "A Git repository is a virtual storage of your project. It\nallows you to save versions of your code, which you can access\nwhen needed. The repo resource allows you to access public repos,\nor repos that belong to a specific workspace.\n"
 		},
+		{
+			"name": "SSH",
+			"description": "The SSH resource allows you to manage SSH keys.\n"
+		},
 		{
 			"name": "Snippets",
 			"description": "Snippets allow you share code segments or files with yourself, members of\nyour workspace, or the world.\n\nLike pull requests, repositories and workspaces, the full set of snippets\nis defined by what the current user has access to. This includes all\nsnippets owned by any of the workspaces the user is a member of, or\nsnippets by other users that the current user is either watching or has\n collaborated on (for instance by commenting on it).\n"
@@ -24646,10 +25089,6 @@
 			"name": "Source",
 			"description": "Browse the source code in the repository and\n                              create new commits by uploading."
 		},
-		{
-			"name": "Ssh",
-			"description": "The SSH resource allows you to manage SSH keys.\n"
-		},
 		{
 			"name": "Teams",
 			"description": "The teams resource has been deprecated, and the workspaces\nendpoint should be used instead.\n\nThe teams resource returns all the teams that the authenticated\nuser is associated with.\n"
@@ -24671,7 +25110,7 @@
 			"description": "A workspace is where you create repositories, collaborate on\nyour code, and organize different streams of work in your Bitbucket\nCloud account. Workspaces replace the use of teams and users in API\ncalls.\n"
 		}
 	],
-	"x-revision": "6e8ad69baf7f",
+	"x-revision": "541f4db5487d",
 	"x-atlassian-narrative": {
 		"documents": [
 			{
@@ -24679,7 +25118,7 @@
 				"title": "Authentication methods",
 				"description": "How to authenticate API actions",
 				"icon": "data:image/svg+xml;base64,b'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTcuNjQ3MyAxODYuODEzOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlOwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICNkZTM1MGI7CiAgICAgIH0KCiAgICAgIC5jbHMtMyB7CiAgICAgICAgZmlsbDogI2ZmNTYzMDsKICAgICAgfQoKICAgICAgLmNscy00IHsKICAgICAgICBmaWxsOiAjZGZlMWU1OwogICAgICAgIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTsKICAgICAgfQoKICAgICAgLmNscy01IHsKICAgICAgICBmaWxsOiAjZmFmYmZjOwogICAgICB9CgogICAgICAuY2xzLTYgewogICAgICAgIGZpbGw6ICNlYmVjZjA7CiAgICAgIH0KCiAgICAgIC5jbHMtNyB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6ICMwMDY1ZmY7CiAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOwogICAgICAgIHN0cm9rZS13aWR0aDogMnB4OwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6ICM1ZTZjODQ7CiAgICAgIH0KCiAgICAgIC5jbHMtOSB7CiAgICAgICAgZmlsbDogIzI1Mzg1ODsKICAgICAgfQoKICAgICAgLmNscy0xMCB7CiAgICAgICAgZmlsbDogIzI2ODRmZjsKICAgICAgfQoKICAgICAgLmNscy0xMSB7CiAgICAgICAgZmlsbDogIzAwNjVmZjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPlNlY3VyaXR5IHdpdGggS2V5PC90aXRsZT4KICA8ZyBjbGFzcz0iY2xzLTEiPgogICAgPGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+CiAgICAgIDxnIGlkPSJPYmplY3RzIj4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Mi4wNjcyLDBoLjYxMTRhOCw4LDAsMCwxLDgsOFYyMy4yMzM4YTAsMCwwLDAsMSwwLDBIMzQuMDY3MmEwLDAsMCwwLDEsMCwwVjhBOCw4LDAsMCwxLDQyLjA2NzIsMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMDguMjIsMGguNjExNGE4LDgsMCwwLDEsOCw4VjIzLjIzMzhhMCwwLDAsMCwxLDAsMEgxMDAuMjJhMCwwLDAsMCwxLDAsMFY4QTgsOCwwLDAsMSwxMDguMjIsMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzQuMzcyMiwwaC42MTE0YTgsOCwwLDAsMSw4LDhWMjMuMjMzOGEwLDAsMCwwLDEsMCwwSDE2Ni4zNzIyYTAsMCwwLDAsMSwwLDBWOEE4LDgsMCwwLDEsMTc0LjM3MjIsMFoiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjM0LjA2NzIiIHk9IjIzLjIzMzgiIHdpZHRoPSIxNjMuNTgiIGhlaWdodD0iMTYzLjU4Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDIuMDY3MiwwSDU5LjI5YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDM0LjA2NzJhMCwwLDAsMCwxLDAsMFY4YTgsOCwwLDAsMSw4LThaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTA3LjI0NTgsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDk5LjI0NThhMCwwLDAsMCwxLDAsMFY4YTgsOCwwLDAsMSw4LThaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTcyLjQyNDQsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDE2NC40MjQ0YTAsMCwwLDAsMSwwLDBWOGE4LDgsMCwwLDEsOC04WiIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTcuNDU1OCIgeT0iMjMuMjMzOCIgd2lkdGg9IjE2My41OCIgaGVpZ2h0PSIxNjMuNTgiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNS40NTU4LDBINDIuNjc4NmE4LDgsMCwwLDEsOCw4VjIzLjIyMjhhMCwwLDAsMCwxLDAsMEgxNy40NTU4YTAsMCwwLDAsMSwwLDBWOEE4LDgsMCwwLDEsMjUuNDU1OCwwWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTkwLjYzNDQsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDgyLjYzNDRhMCwwLDAsMCwxLDAsMFY4QTgsOCwwLDAsMSw5MC42MzQ0LDBaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTU1LjgxMywwaDE3LjIyMjhhOCw4LDAsMCwxLDgsOFYyMy4yMjI4YTAsMCwwLDAsMSwwLDBIMTQ3LjgxM2EwLDAsMCwwLDEsMCwwVjhBOCw4LDAsMCwxLDE1NS44MTMsMFoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yNS40NTU4LDBINDIuNjc4NmE4LDgsMCwwLDEsOCw4VjIzLjIyMjhhMCwwLDAsMCwxLDAsMEgxNy40NTU4YTAsMCwwLDAsMSwwLDBWOEE4LDgsMCwwLDEsMjUuNDU1OCwwWiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTkwLjYzNDQsMGgxNy4yMjI4YTgsOCwwLDAsMSw4LDhWMjMuMjIyOGEwLDAsMCwwLDEsMCwwSDgyLjYzNDRhMCwwLDAsMCwxLDAsMFY4QTgsOCwwLDAsMSw5MC42MzQ0LDBaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTU1LjgxMywwaDE3LjIyMjhhOCw4LDAsMCwxLDgsOFYyMy4yMjI4YTAsMCwwLDAsMSwwLDBIMTQ3LjgxM2EwLDAsMCwwLDEsMCwwVjhBOCw4LDAsMCwxLDE1NS44MTMsMFoiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjM1Ljc1OTYiIHk9IjU2LjgwNjUiIHdpZHRoPSIzMy4yMjI4IiBoZWlnaHQ9IjE1LjYwMzgiLz4KICAgICAgICA8cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjEzMS4yMDE2IiB5PSIxMzYuOTYxNSIgd2lkdGg9IjMzLjIyMjgiIGhlaWdodD0iMTUuNjAzOCIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTU3LjM3MDksNzEuNjAzNmg3MC43NWE5LDksMCwwLDEsOSw5djM1LjM3NDlhNDQuMzc0OCw0NC4zNzQ4LDAsMCwxLTQ0LjM3NDgsNDQuMzc0OGgwYTQ0LjM3NDgsNDQuMzc0OCwwLDAsMS00NC4zNzQ4LTQ0LjM3NDhWODAuNjAzNkE5LDksMCwwLDEsNTcuMzcwOSw3MS42MDM2WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTY2LjM3MSw2Ni42NjE3aDcwLjc1YTksOSwwLDAsMSw5LDl2MzUuMzc0OWE0NC4zNzQ4LDQ0LjM3NDgsMCwwLDEtNDQuMzc0OCw0NC4zNzQ4aDBBNDQuMzc0OCw0NC4zNzQ4LDAsMCwxLDU3LjM3MSwxMTEuMDM2NlY3NS42NjE3YTksOSwwLDAsMSw5LTlaIi8+CiAgICAgICAgPHBhdGggaWQ9Il9SZWN0YW5nbGVfIiBkYXRhLW5hbWU9IiZsdDtSZWN0YW5nbGUmZ3Q7IiBjbGFzcz0iY2xzLTYiIGQ9Ik02MS4zNzEsNjYuNjYxN2g3MC43NWE5LDksMCwwLDEsOSw5djM1LjM3NDlhNDQuMzc0OCw0NC4zNzQ4LDAsMCwxLTQ0LjM3NDgsNDQuMzc0OGgwQTQ0LjM3NDgsNDQuMzc0OCwwLDAsMSw1Mi4zNzEsMTExLjAzNjZWNzUuNjYxN0E5LDksMCwwLDEsNjEuMzcxLDY2LjY2MTdaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy03IiBkPSJNOTYuNzQ1OSwxNDcuNzQ0MWEzNi43NDg3LDM2Ljc0ODcsMCwwLDEtMzYuNzA3NC0zNi43MDc0Vjc4LjA1ODRhMy43MzMzLDMuNzMzMywwLDAsMSwzLjcyOS0zLjcyOWg2NS45NTYzYTMuNzMzMywzLjczMzMsMCwwLDEsMy43MjksMy43Mjl2MzIuOTc4NEEzNi43NDg2LDM2Ljc0ODYsMCwwLDEsOTYuNzQ1OSwxNDcuNzQ0MVoiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMDAuNjg5MywxNjMuMzE2N1YxMTEuMDk3M2EzLjk0NDMsMy45NDQzLDAsMCwwLTcuODg4NywwdjUyLjIyYTIyLjUyNTIsMjIuNTI1MiwwLDAsMC0xOC41NDc5LDIyLjE0YzAsLjQ1Ni4wMTc4LjkwNzguMDQ0NywxLjM1NzFIODIuMjFjLS4wNDE0LS40NDc0LS4wNjg4LS44OTktLjA2ODgtMS4zNTcxYTE0LjYyLDE0LjYyLDAsMCwxLDE0LjU5NzQtMTQuNjA0MWwuMDA2MS4wMDA2LjAwNjgtLjAwMDdBMTQuNjIxMSwxNC42MjExLDAsMCwxLDExMS4zNSwxODUuNDU2NmMwLC40NTgxLS4wMjczLjkxLS4wNjg4LDEuMzU3MWg3LjkxMjhjLjAyNjktLjQ0OTMuMDQ0Ny0uOTAxMS4wNDQ3LTEuMzU3MUEyMi41MjU5LDIyLjUyNTksMCwwLDAsMTAwLjY4OTMsMTYzLjMxNjdaIi8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNy40NTU4IiB5PSIzNi40NzAyIiB3aWR0aD0iMzMuMjIyOCIgaGVpZ2h0PSIxNS42MDM4Ii8+CiAgICAgICAgPHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNy40NTU4IiB5PSIxNTguMTIxNyIgd2lkdGg9IjMzLjIyMjgiIGhlaWdodD0iMTUuNjAzOCIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTQ3LjgxMyIgeT0iMzYuNDcwMiIgd2lkdGg9IjMzLjIyMjgiIGhlaWdodD0iMTUuNjAzOCIvPgogICAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTUwLjA2NDMiIHk9IjE1Ny41NTEzIiB3aWR0aD0iMzMuMjIyOCIgaGVpZ2h0PSIxNS42MDM4Ii8+CiAgICAgICAgPHBhdGggaWQ9Il9QYXRoXyIgZGF0YS1uYW1lPSImbHQ7UGF0aCZndDsiIGNsYXNzPSJjbHMtOCIgZD0iTTEwNy41MjU0LDEwMS4wMDI3YTExLjc3OTQsMTEuNzc5NCwwLDEsMC0xOS44Niw4LjU1NDhBNC4wNDE3LDQuMDQxNywwLDAsMSw4OC44NSwxMTMuNjJsLTIuMTA0LDcuMjY4MWEzLDMsMCwwLDAsMi44ODE3LDMuODM0MmgxMi4yMzcxYTMsMywwLDAsMCwyLjg4MTctMy44MzQybC0yLjA5NTktNy4yNGE0LjA3NDMsNC4wNzQzLDAsMCwxLDEuMTgwOC00LjA5NDVBMTEuNzE3MiwxMS43MTcyLDAsMCwwLDEwNy41MjU0LDEwMS4wMDI3WiIvPgogICAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTEwNC43NDYxLDEyMC44ODc3bC0yLjA5NTktNy4yNGE0LjA3NDQsNC4wNzQ0LDAsMCwxLDEuMTgwOC00LjA5NDUsMTEuNzYyOSwxMS43NjI5LDAsMCwwLTUuMDYtMTkuOTMxMywxMS45MSwxMS45MSwwLDAsMC04Ljc5OCwxMC45OTQ5LDExLjcxODUsMTEuNzE4NSwwLDAsMCwzLjY5MjksOC45NDFBNC4wNDE2LDQuMDQxNiwwLDAsMSw5NC44NSwxMTMuNjJsLTMuMjE0LDExLjEwMjNoMTAuMjI4OEEzLDMsMCwwLDAsMTA0Ljc0NjEsMTIwLjg4NzdaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xMCIgZD0iTTgxLjc5NzUsMTAwLjMxYTMuOTQzOSwzLjk0MzksMCwwLDAtMy45NDQzLTMuOTQ0M0g0MS4wNDE3YTMuOTQ0MywzLjk0NDMsMCwwLDAsMCw3Ljg4ODdINzcuODUzMkEzLjk0MzksMy45NDM5LDAsMCwwLDgxLjc5NzUsMTAwLjMxWiIvPgogICAgICAgIDxwYXRoIGlkPSJfUGF0aF8yIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgY2xhc3M9ImNscy0xMSIgZD0iTTQxLjA0MTYsMTA0LjI1MzlIOTYuODUzMmEzLjk0NDMsMy45NDQzLDAsMCwwLDAtNy44ODg3SDQxLjA0MTZhMy45NDQzLDMuOTQ0MywwLDAsMCwwLDcuODg4N1oiLz4KICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNODEuNzk3NSwxMDAuMzFhMy45NDM5LDMuOTQzOSwwLDAsMC0zLjk0NDMtMy45NDQzSDQxLjA0MTdhMy45NDQzLDMuOTQ0MywwLDAsMCwwLDcuODg4N0g3Ny44NTMyQTMuOTQzOSwzLjk0MzksMCwwLDAsODEuNzk3NSwxMDAuMzFaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xMCIgZD0iTTIyLjQ5MzIsMTIyLjgwMjlBMjIuNDkyOSwyMi40OTI5LDAsMSwxLDQ0Ljk4NTgsMTAwLjMxLDIyLjUxODUsMjIuNTE4NSwwLDAsMSwyMi40OTMyLDEyMi44MDI5Wm0wLTM3LjA5NzJBMTQuNjA0MiwxNC42MDQyLDAsMSwwLDM3LjA5NzIsMTAwLjMxLDE0LjYyMDcsMTQuNjIwNywwLDAsMCwyMi40OTMyLDg1LjcwNTdaIi8+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo='",
-				"body": "\nThe purpose of this section is to describe how to authenticate when making API calls using the Bitbucket REST API.\n\n-----\n\n* [Basic auth](#basic-auth)\n* [Access Tokens](#access-tokens)\n  * [Repository Access Tokens](#repository-access-tokens)\n  * [Project Access Tokens](#project-access-tokens)\n  * [Workspace Access Tokens](#workspace-access-tokens)\n* [App passwords](#app-passwords)\n* [OAuth 2.0](#oauth-2-0)\n  * [Making requests](#making-requests)\n  * [Repository cloning](#repository-cloning)\n  * [Refresh tokens](#refresh-tokens)\n* [Bitbucket OAuth 2.0 Scopes](#bitbucket-oauth-2-0-scopes)\n* [Forge App Scopes](#forge-app-scopes)\n\n---\n\n### Basic auth\n\nBasic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported).\nNote that Basic Auth is available only with username and [app password](https://bitbucket.org/account/settings/app-passwords/) as credentials.\n\n### Access Tokens\n\nAccess Tokens are passwords (or tokens) that provide access to a _single_ repository, project or workspace.\nThese tokens can authenticate with Bitbucket APIs for scripting, CI/CD tools, Bitbucket Cloud-connected apps,\nand Bitbucket Cloud integrations.\n\nAccess Tokens are linked to a repository, project, or workspace, not a user account.\nThe level of access provided by the token is set when a repository, or workspace admin creates it,\nby setting permission scopes.\n\nThere are three types of Access Token:\n\n* **Repository Access Tokens** can connect to a single repository, preventing them from accessing any other repositories or workspaces.\n* **Project Access Tokens** can connect to a single project, providing access to any repositories within the project.\n* **Workspace Access Tokens** can connect to a single workspace and have access to any projects and repositories within that workspace.\n\nWhen using Bitbucket APIs with an Access Token, the token will be treated as the \"user\" in the\nBitbucket UI and Bitbucket logs. This includes when using the Access Token to leave a comment on a pull request,\npush a commit, or merge a pull request. The Bitbucket UI and API responses will show the\nRepository/Project/Workspace Access Token as a user. The username shown in the Bitbucket UI is the Access\nToken _name_, and a custom icon is used to differentiate it from a regular user in the UI.\n\n#### Considerations for using Access Tokens\n\n* After creation, an Access Token can't be viewed or modified. The token's name, created date,\nlast accessed date, and scopes are visible on the repository, project, or workspace **Access Tokens** page.\n* Access Tokens can access a limited set of Bitbucket's permission scopes.\n* Provided you set the correct permission scopes, you can use an Access Token to clone (`repository`)\nand push (`repository:write`) code to the token's repository or the repositories the token can access.\n* You can't use an Access Token to log into the Bitbucket website.\n* Access Tokens don't require two-step verification.\n* You can set permission scopes (specific access rights) for each Access Token.\n* You can't use an Access Token to manipulate or query repository, project, or workspace permissions.\n* Access Tokens are not listed in any repository or workspace permission API response.\n* Access Tokens are deactivated when deleting the resource tied to it (a repository, project, or workspace).\nRepository Access Tokens are also revoked when transferring the repository to another workspace.\n* Any content created by the Access Token will persist after the Access Token has been revoked.\n* Access Tokens can interact with branch restriction APIs, but the token can't be configured as a user with merge access when using branch restrictions.\n\nThere are some APIs which are inaccessible for Access Tokens, these are:\n\n* [Add a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-post)\n* [Update a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-key-id-put)\n* [Delete a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-key-id-delete)\n\n#### Repository Access Tokens\n\nFor details on creating, managing, and using Repository Access Tokens, visit\n[Repository Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/repository-access-tokens/).\n\nThe available scopes for Repository Access Tokens are:\n\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n#### Project Access Tokens\n\nFor details on creating, managing, and using Project Access Tokens, visit\n[Project Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/project-access-tokens/).\n\nThe available scopes for Project Access Tokens are:\n\n- [`project`](#project)\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n#### Workspace Access Tokens\n\nFor details on creating, managing, and using Workspace Access Tokens, visit\n[Workspace Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/workspace-access-tokens/).\n\nThe available scopes for Workspace Access Tokens are:\n\n- [`project`](#project)\n- [`project:admin`](#project-admin)\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`account`](#account)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n### App passwords\n\nApp passwords allow users to make API calls to their Bitbucket account through apps such as Sourcetree.\n\nSome important points about app passwords:\n\n* You cannot view an app password or adjust permissions after you create the app password. Because app passwords are encrypted on our database and cannot be viewed by anyone. They are essentially designed to be disposable. If you need to change the scopes or lost the password just create a new one.\n* You cannot use them to log into your Bitbucket account.\n* You cannot use app passwords to manage team actions.\n\n    App passwords are tied to an individual account's credentials and should not be shared. If you're sharing your app password you're essentially giving direct, authenticated, access to everything that password has been scoped to do with the Bitbucket API's.\n\n* You can use them for API call authentication, even if you don't have two-step verification enabled.\n* You can set permission scopes (specific access rights) for each app password.\n\nFor details on creating, managing, and using App passwords, visit\n[App passwords](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/).\n\n### OAuth 2.0\n\nOur OAuth 2 implementation is merged in with our existing OAuth 1 in\nsuch a way that existing OAuth 1 consumers automatically become\nvalid OAuth 2 clients. The only thing you need to do is edit your\nexisting consumer and configure a callback URL.\n\nOnce that is in place, you'll have the following 2 URLs:\n\n    https://bitbucket.org/site/oauth2/authorize\n    https://bitbucket.org/site/oauth2/access_token\n\nFor obtaining access/bearer tokens, we support three of RFC-6749's grant\nflows, plus a custom Bitbucket flow for exchanging JWT tokens for access tokens.\nNote that Resource Owner Password Credentials Grant (4.3) is no longer supported.\n\n\n#### 1. Authorization Code Grant (4.1)\n\nThe full-blown 3-LO flow. Request authorization from the end user by\nsending their browser to:\n\n    https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=code\n\nThe callback includes the `?code={}` query parameter that you can swap\nfor an access token:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=authorization_code -d code={code}\n\n\n#### 2. Implicit Grant (4.2)\n\nThis flow is useful for browser-based add-ons that operate without server-side backends.\n\nRequest the end user for authorization by directing the browser to:\n\n    https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=token\n\nThat will redirect to your preconfigured callback URL with a fragment\ncontaining the access token\n(`#access_token={token}&token_type=bearer`) where your page's js can\npull it out of the URL.\n\n\n#### 3. Client Credentials Grant (4.4)\n\nSomewhat like our existing \"2-LO\" flow for OAuth 1. Obtain an access\ntoken that represents not an end user, but the owner of the\nclient/consumer:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=client_credentials\n\n\n#### 4. Bitbucket Cloud JWT Grant (urn:bitbucket:oauth2:jwt)\n\nIf your Atlassian Connect add-on uses JWT authentication, you can swap a\nJWT for an OAuth access token. The resulting access token represents the\naccount for which the add-on is installed.\n\nMake sure you send the JWT token in the Authorization request header\nusing the \"JWT\" scheme (case sensitive). Note that this custom scheme\nmakes this different from HTTP Basic Auth (and so you cannot use \"curl\n-u\").\n\n    $ curl -X POST -H \"Authorization: JWT {jwt_token}\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=urn:bitbucket:oauth2:jwt\n\n\n#### Making Requests\n\nOnce you have an access token, as per RFC-6750, you can use it in a request in any of\nthe following ways (in decreasing order of desirability):\n\n1. Send it in a request header: `Authorization: Bearer {access_token}`\n2. Include it in a (application/x-www-form-urlencoded) POST body as `access_token={access_token}`\n3. Put it in the query string of a non-POST: `?access_token={access_token}`\n\n\n#### Repository Cloning\n\nSince add-ons will not be able to upload their own SSH keys to clone\nwith, access tokens can be used as Basic HTTP Auth credentials to\nclone securely over HTTPS. This is much like GitHub, yet slightly\ndifferent:\n\n    $ git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git\n\nThe literal string `x-token-auth` as a substitute for username is\nrequired (note the difference with GitHub where the actual token is in\nthe username field).\n\n\n#### Refresh Tokens\n\nOur access tokens expire in one hour. When this happens you'll get 401\nresponses.\n\nMost access tokens grant responses (Implicit and JWT excluded). Therefore, you should include a\nrefresh token that can then be used to generate a new access token,\nwithout the need for end user participation:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=refresh_token -d refresh_token={refresh_token}\n\n\n### Bitbucket OAuth 2.0 scopes\n\nBitbucket's API applies a number of privilege scopes to endpoints. In order to access an endpoint, a request will need to have the necessary scopes.\n\nOAuth 2.0 Scopes are applicable for OAuth 2, Access Tokens, and App passwords auth mechanisms as well as Bitbucket Connect apps.\n\nScopes are declared in the descriptor as a list of strings, with each string being the name of a unique scope.\n\nA descriptor lacking the `scopes` element is implicitly assumed to require all scopes and as a result, Bitbucket will require end users authorizing/installing the add-on\nto explicitly accept all scopes.\n\nOur best practice suggests you add only the scopes your add-on needs, but no more than it needs.\n\nInvalid scope strings will cause the descriptor to be rejected and the installation to fail.\n\nThe available scopes are:\n\n- [project](#project)\n- [project:write](#project-write)\n- [project:admin](#project-admin)\n- [repository](#repository)\n- [repository:write](#repository-write)\n- [repository:admin](#repository-admin)\n- [repository:delete](#repository-delete)\n- [pullrequest](#pullrequest)\n- [pullrequest:write](#pullrequest-write)\n- [issue](#issue)\n- [issue:write](#issue-write)\n- [wiki](#wiki)\n- [webhook](#webhook)\n- [snippet](#snippet)\n- [snippet:write](#snippet-write)\n- [email](#email)\n- [account](#account)\n- [account:write](#account-write)\n- [pipeline](#pipeline)\n- [pipeline:write](#pipeline-write)\n- [pipeline:variable](#pipeline-variable)\n- [runner](#runner)\n- [runner:write](#runner-write)\n\n#### project\n\nProvides access to view the project or projects.\nThis scope implies the [`repository`](#repository) scope, giving read access to all the repositories in a project or projects.\n\n#### project:write\n\nThis scope is deprecated, and has been made obsolete by `project:admin`. Please see the deprecation notice [here](/cloud/bitbucket/deprecation-notice-project-write-scope).\n\n#### project:admin\n\nProvides admin access to a project or projects. No distinction is made between public and private projects. This scope doesn't implicitly grant the [`project`](#project) scope or the [`repository:write`](#repository-write) scope on any repositories under the project. It gives access to the admin features of a project only, not direct access to its repositories' contents.\n\n* ability to create the project\n* ability to update the project\n* ability to delete the project\n\n#### repository\n\nProvides read access to a repository or repositories.\nNote that this scope does not give access to a repository's pull requests.\n\n* access to the repo's source code\n* clone over HTTPS\n* access the file browsing API\n* download zip archives of the repo's contents\n* the ability to view and use the issue tracker on any repo (created issues, comment, vote, etc)\n* the ability to view and use the wiki on any repo (create/edit pages)\n\n#### repository:write\n\nProvides write (not admin) access to a repository or repositories. No distinction is made between public and private repositories. This scope implicitly grants the [`repository`](#repository) scope, which does not need to be requested separately.\nThis scope alone does not give access to the pull requests API.\n\n* push access over HTTPS\n* fork repos\n\n#### repository:admin\n\nProvides admin access to a repository or repositories. No distinction is made between public and private repositories. This scope doesn't implicitly grant the [`repository`](#repository) or the [`repository:write`](#repository-write) scopes. It gives access to the admin features of a repo only, not direct access to its contents. This scope can be used or misused to grant read access to other users, who can then clone the repo, but users that need to read and write source code would also request explicit read or write.\nThis scope comes with access to the following functionality:\n\n* View and manipulate committer mappings\n* List and edit deploy keys\n* Ability to delete the repo\n* View and edit repo permissions\n* View and edit branch permissions\n* Import and export the issue tracker\n* Enable and disable the issue tracker\n* List and edit issue tracker version, milestones and components\n* Enable and disable the wiki\n* List and edit default reviewers\n* List and edit repo links (Jira/Bamboo/Custom)\n* List and edit the repository webhooks\n* Initiate a repo ownership transfer\n\n#### repository:delete\n\nProvides access to delete a repository or repositories.\n\n#### pullrequest\n\nProvides read access to pull requests.\nThis scope implies the [`repository`](#repository) scope, giving read access to the pull request's destination repository.\n\n* see and list pull requests\n* create and resolve tasks\n* comment on pull requests\n\n#### pullrequest:write\n\nImplicitly grants the [`pullrequest`](#pullrequest) scope and adds the ability to create, merge and decline pull requests.\nThis scope also implicitly grants the [`repository:write`](#repository-write) scope, giving write access to the pull request's destination repository. This is necessary to allow merging.\n\n* merge pull requests\n* decline pull requests\n* create pull requests\n* approve pull requests\n\n#### issue\n\nAbility to interact with issue trackers the way non-repo members can.\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* view, list and search issues\n* create new issues\n* comment on issues\n* watch issues\n* vote for issues\n\n#### issue:write\n\nThis scope implicitly grants the [`issue`](#issue) scope and adds the ability to transition and delete issues.\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* transition issues\n* delete issues\n\n#### wiki\n\nProvides access to wikis. This scope provides both read and write access (wikis are always editable by anyone with access to them).\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* view wikis\n* create pages\n* edit pages\n* push to wikis\n* clone wikis\n\n#### webhook\n\nGives access to webhooks. This scope is required for any webhook-related operation.\n\nThis scope gives read access to existing webhook subscriptions on all\nresources the authorization mechanism can access, without needing further scopes.\nFor example:\n\n- A client can list all existing webhook subscriptions on a repository. The [`repository`](#repository) scope is not required.\n- Existing webhook subscriptions for the issue tracker on a repo can be retrieved without the [`issue`](#issue) scope. All that is required is the `webhook` scope.\n\nTo create webhooks, the client will need read access to the resource. Such as: for [`issue:created`](#issue-created), the client will need to\nhave both the `webhook` and the [`issue`](#issue) scope.\n\n* list webhook subscriptions on any accessible repository, user, team, or snippet\n* create/update/delete webhook subscriptions.\n\n#### snippet\n\nProvides read access to snippets.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\n\n* view any snippet\n* create snippet comments\n\n#### snippet:write\n\nProvides write access to snippets.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\nThis scope implicitly grants the [`snippet`](#snippet) scope which does not need to be requested separately.\n\n* create snippets\n* edit snippets\n* delete snippets\n\n#### email\n\nAbility to see the user's primary email address. This should make it easier to use Bitbucket Cloud as a login provider for apps or external applications.\n\n#### account\n\nWhen used for:\n* **user-related APIs** — Gives read-only access to the user's account information.\nNote that this doesn't include any ability to change any of the data. This scope allows you to view the user's:\n  * email addresses\n  * language\n  * location\n  * website\n  * full name\n  * SSH keys\n  * user groups\n* **workspace-related APIs** — Grants access to view the workspace's:\n  * users\n  * user permissions\n  * projects\n\n#### account:write\n\nAbility to change properties on the user's account.\n\n* delete the authorizing user's account\n* manage the user's groups\n* change a user's email addresses\n* change username, display name and avatar\n\n#### pipeline\n\nGives read-only access to pipelines, steps, deployment environments and variables.\n\n#### pipeline:write\n\nGives write access to pipelines. This scope allows a user to:\n* Stop pipelines\n* Rerun failed pipelines\n* Resume halted pipelines\n* Trigger manual pipelines.\n\nThis scope is not needed to trigger a build using a push. Performing a `git push` (or equivalent actions) will trigger the build. The token doing the push only needs the [`repository:write`](#repository-write) scope.\n\nThis doesn't give write access to create variables.\n\n#### pipeline:variable\n\nGives write access to create variables in pipelines at the various levels:\n* Workspace\n* Repository\n* Deployment\n\n#### runner\n\nGives read-only access to pipelines runners setup against a workspace or repository.\n\n#### runner:write\n\nGives write access to create/edit/disable/delete pipelines runners setup against a workspace or repository.\n### Forge app scopes\n\nIn order for a Forge app integration to access Bitbucket API endpoints, it needs to include certain privilege scopes in the app manifest. These are different from Bitbucket OAuth 2.0 scopes.\n\nUnlike OAuth 2.0 scopes, Forge app scopes do not implicitly grant other scopes, for example, `write:repository:bitbucket` does not implicitly grant `read:repository:bitbucket`.\n\nOnly a subset of Bitbucket API endpoints are currently available for Forge app integrations. These will be labeled with Forge app scopes.\n\nOur best practice suggests you only add the scopes your app needs, but no more than it needs.\n\nThe available scopes are:\n\n- [`read:repository:bitbucket`](#read-repository-bitbucket)\n- [`write:repository:bitbucket`](#write-repository-bitbucket)\n- [`admin:repository:bitbucket`](#admin-repository-bitbucket)\n- [`delete:repository:bitbucket`](#delete-repository-bitbucket)\n- [`read:pullrequest:bitbucket`](#read-pullrequest-bitbucket)\n- [`write:pullrequest:bitbucket`](#write-pullrequest-bitbucket)\n- [`read:project:bitbucket`](#read-project-bitbucket)\n- [`admin:project:bitbucket`](#admin-project-bitbucket)\n- [`read:workspace:bitbucket`](#read-workspace-bitbucket)\n- [`read:user:bitbucket`](#read-user-bitbucket)\n- [`read:pipeline:bitbucket`](#read-pipeline-bitbucket)\n- [`write:pipeline:bitbucket`](#write-pipeline-bitbucket)\n- [`admin:pipeline:bitbucket`](#admin-pipeline-bitbucket)\n- [`read:runner:bitbucket`](#read-runner-bitbucket)\n- [`write:runner:bitbucket`](#write-runner-bitbucket)\n\n#### read:repository:bitbucket\n\nAllows viewing of repository data. Note that this scope does not give access to a repository's pull requests.\n* access to the repository's source code\n* access the file browsing API\n* access to certain repository configurations such as branching model, default reviewers, etc.\n\n#### write:repository:bitbucket\n\nAllows modification of repository data. No distinction is made between public and private repositories. This scope does not imply the `read:repository:bitbucket` scope, so you need to request that separately if required. This scope alone does not give access to the pull request API.\n* update/delete source, branches, tags, etc.\n* fork repositories\n\n#### admin:repository:bitbucket\n\nAllows admin activities on repositories. No distinction is made between public and private repositories. This scope does not implicitly grant the `read:repository:bitbucket` or the `write:repository:bitbucket` scopes. It gives access to the admin features of a repository only, not direct access to its contents. This scope does not allow modification of repository permissions. This scope comes with access to the following functionality:\n* create repository\n* view repository permissions\n* view and edit branch restrictions\n* edit branching model settings\n* edit default reviewers\n* view and edit inheritance state for repository settings\n\n#### delete:repository:bitbucket\nAllows deletion of repositories.\n\n#### read:pullrequest:bitbucket\nAllows viewing of pull requests, plus the ability to comment on pull requests.\n\nThis scope does not imply the `read:repository:bitbucket` scope. With this scope, you could retrieve some data specific to the source/destination repositories of a pull request using pull request endpoints, but it does not give access to repository API endpoints.\n\n#### write:pullrequest:bitbucket\nAllows the ability to create, update, approve, decline, and merge pull requests.\n\nThis scope does not imply the `write:repository:bitbucket` scope.\n\n#### read:project:bitbucket\nAllows viewing of project and project permission data.\n\n#### admin:project:bitbucket\nAllows the ability to create, update, and delete project. No distinction is made between public and private projects.\n\nThis scope does not implicitly grant the `read:project:bitbucket` scope or any repository scopes. It gives access to the admin features of a project only, not direct access to its repositories' contents.\n\n#### read:workspace:bitbucket\nAllows viewing of workspace and workspace permission data.\n\n#### read:user:bitbucket\nAllows viewing of user data. This scope is typically required for permission related endpoints.\n\n#### read:pipeline:bitbucket\nAllows read access to all pipeline information (pipelines, steps, caches, artifacts, logs, tests, code-insights).\n\n#### write:pipeline:bitbucket\nAllows running pipelines (i.e., start/stop/create pipeline) and uploading tests/code-insights.\n\nThis scope does not imply the `read:pipeline:bitbucket` scope.\n\n#### admin:pipeline:bitbucket\nAllows admin activities, such as creating pipeline variables.\n\nThis scope does not implicitly grant the `read:pipeline:bitbucket` or the `write:pipeline:bitbucket` scopes.\n\n#### read:runner:bitbucket\nAllows viewing of runners information.\n\n#### write:runner:bitbucket\nAllows runners management.\n\nThis scope does not imply the `read:runners:bitbucket` scope.\n"
+				"body": "\nThe purpose of this section is to describe how to authenticate when making API calls using the Bitbucket REST API.\n\n-----\n\n* [Basic auth](#basic-auth)\n* [Access Tokens](#access-tokens)\n  * [Repository Access Tokens](#repository-access-tokens)\n  * [Project Access Tokens](#project-access-tokens)\n  * [Workspace Access Tokens](#workspace-access-tokens)\n* [App passwords](#app-passwords)\n* [OAuth 2.0](#oauth-2-0)\n  * [Making requests](#making-requests)\n  * [Repository cloning](#repository-cloning)\n  * [Refresh tokens](#refresh-tokens)\n* [Bitbucket OAuth 2.0 Scopes](#bitbucket-oauth-2-0-scopes)\n* [Forge App Scopes](#forge-app-scopes)\n\n---\n\n### Basic auth\n\nBasic HTTP Authentication as per [RFC-2617](https://tools.ietf.org/html/rfc2617) (Digest not supported).\nNote that Basic Auth is available only with username and [app password](https://bitbucket.org/account/settings/app-passwords/) as credentials.\n\n### Access Tokens\n\nAccess Tokens are passwords (or tokens) that provide access to a _single_ repository, project or workspace.\nThese tokens can authenticate with Bitbucket APIs for scripting, CI/CD tools, Bitbucket Cloud-connected apps,\nand Bitbucket Cloud integrations.\n\nAccess Tokens are linked to a repository, project, or workspace, not a user account.\nThe level of access provided by the token is set when a repository, or workspace admin creates it,\nby setting permission scopes.\n\nThere are three types of Access Token:\n\n* **Repository Access Tokens** can connect to a single repository, preventing them from accessing any other repositories or workspaces.\n* **Project Access Tokens** can connect to a single project, providing access to any repositories within the project.\n* **Workspace Access Tokens** can connect to a single workspace and have access to any projects and repositories within that workspace.\n\nWhen using Bitbucket APIs with an Access Token, the token will be treated as the \"user\" in the\nBitbucket UI and Bitbucket logs. This includes when using the Access Token to leave a comment on a pull request,\npush a commit, or merge a pull request. The Bitbucket UI and API responses will show the\nRepository/Project/Workspace Access Token as a user. The username shown in the Bitbucket UI is the Access\nToken _name_, and a custom icon is used to differentiate it from a regular user in the UI.\n\n#### Considerations for using Access Tokens\n\n* After creation, an Access Token can't be viewed or modified. The token's name, created date,\nlast accessed date, and scopes are visible on the repository, project, or workspace **Access Tokens** page.\n* Access Tokens can access a limited set of Bitbucket's permission scopes.\n* Provided you set the correct permission scopes, you can use an Access Token to clone (`repository`)\nand push (`repository:write`) code to the token's repository or the repositories the token can access.\n* You can't use an Access Token to log into the Bitbucket website.\n* Access Tokens don't require two-step verification.\n* You can set permission scopes (specific access rights) for each Access Token.\n* You can't use an Access Token to manipulate or query repository, project, or workspace permissions.\n* Access Tokens are not listed in any repository or workspace permission API response.\n* Access Tokens are deactivated when deleting the resource tied to it (a repository, project, or workspace).\nRepository Access Tokens are also revoked when transferring the repository to another workspace.\n* Any content created by the Access Token will persist after the Access Token has been revoked.\n* Access Tokens can interact with branch restriction APIs, but the token can't be configured as a user with merge access when using branch restrictions.\n\nThere are some APIs which are inaccessible for Access Tokens, these are:\n\n* [Add a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-post)\n* [Update a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-key-id-put)\n* [Delete a repository deploy key](/cloud/bitbucket/rest/api-group-deployments/#api-repositories-workspace-repo-slug-deploy-keys-key-id-delete)\n\n#### Repository Access Tokens\n\nFor details on creating, managing, and using Repository Access Tokens, visit\n[Repository Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/repository-access-tokens/).\n\nThe available scopes for Repository Access Tokens are:\n\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n#### Project Access Tokens\n\nFor details on creating, managing, and using Project Access Tokens, visit\n[Project Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/project-access-tokens/).\n\nThe available scopes for Project Access Tokens are:\n\n- [`project`](#project)\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n#### Workspace Access Tokens\n\nFor details on creating, managing, and using Workspace Access Tokens, visit\n[Workspace Access Tokens](https://support.atlassian.com/bitbucket-cloud/docs/workspace-access-tokens/).\n\nThe available scopes for Workspace Access Tokens are:\n\n- [`project`](#project)\n- [`project:admin`](#project-admin)\n- [`repository`](#repository)\n- [`repository:write`](#repository-write)\n- [`repository:admin`](#repository-admin)\n- [`repository:delete`](#repository-delete)\n- [`pullrequest`](#pullrequest)\n- [`pullrequest:write`](#pullrequest-write)\n- [`webhook`](#webhook)\n- [`account`](#account)\n- [`pipeline`](#pipeline)\n- [`pipeline:write`](#pipeline-write)\n- [`pipeline:variable`](#pipeline-variable)\n- [`runner`](#runner)\n- [`runner:write`](#runner-write)\n\n### App passwords\n\nApp passwords allow users to make API calls to their Bitbucket account through apps such as Sourcetree.\n\nSome important points about app passwords:\n\n* You cannot view an app password or adjust permissions after you create the app password. Because app passwords are encrypted on our database and cannot be viewed by anyone. They are essentially designed to be disposable. If you need to change the scopes or lost the password just create a new one.\n* You cannot use them to log into your Bitbucket account.\n* You cannot use app passwords to manage team actions.\n\n    App passwords are tied to an individual account's credentials and should not be shared. If you're sharing your app password you're essentially giving direct, authenticated, access to everything that password has been scoped to do with the Bitbucket API's.\n\n* You can use them for API call authentication, even if you don't have two-step verification enabled.\n* You can set permission scopes (specific access rights) for each app password.\n\nFor details on creating, managing, and using App passwords, visit\n[App passwords](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/).\n\n### OAuth 2.0\n\nOur OAuth 2 implementation is merged in with our existing OAuth 1 in\nsuch a way that existing OAuth 1 consumers automatically become\nvalid OAuth 2 clients. The only thing you need to do is edit your\nexisting consumer and configure a callback URL.\n\nOnce that is in place, you'll have the following 2 URLs:\n\n    https://bitbucket.org/site/oauth2/authorize\n    https://bitbucket.org/site/oauth2/access_token\n\nFor obtaining access/bearer tokens, we support three of RFC-6749's grant\nflows, plus a custom Bitbucket flow for exchanging JWT tokens for access tokens.\nNote that Resource Owner Password Credentials Grant (4.3) is no longer supported.\n\n\n#### 1. Authorization Code Grant (4.1)\n\nThe full-blown 3-LO flow. Request authorization from the end user by\nsending their browser to:\n\n    https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=code\n\nThe callback includes the `?code={}` query parameter that you can swap\nfor an access token:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=authorization_code -d code={code}\n\n\n#### 2. Implicit Grant (4.2)\n\nThis flow is useful for browser-based add-ons that operate without server-side backends.\n\nRequest the end user for authorization by directing the browser to:\n\n    https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=token\n\nThat will redirect to your preconfigured callback URL with a fragment\ncontaining the access token\n(`#access_token={token}&token_type=bearer`) where your page's js can\npull it out of the URL.\n\n\n#### 3. Client Credentials Grant (4.4)\n\nSomewhat like our existing \"2-LO\" flow for OAuth 1. Obtain an access\ntoken that represents not an end user, but the owner of the\nclient/consumer:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=client_credentials\n\n\n#### 4. Bitbucket Cloud JWT Grant (urn:bitbucket:oauth2:jwt)\n\nIf your Atlassian Connect add-on uses JWT authentication, you can swap a\nJWT for an OAuth access token. The resulting access token represents the\naccount for which the add-on is installed.\n\nMake sure you send the JWT token in the Authorization request header\nusing the \"JWT\" scheme (case sensitive). Note that this custom scheme\nmakes this different from HTTP Basic Auth (and so you cannot use \"curl\n-u\").\n\n    $ curl -X POST -H \"Authorization: JWT {jwt_token}\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=urn:bitbucket:oauth2:jwt\n\n\n#### Making Requests\n\nOnce you have an access token, as per RFC-6750, you can use it in a request in any of\nthe following ways (in decreasing order of desirability):\n\n1. Send it in a request header: `Authorization: Bearer {access_token}`\n2. Include it in a (application/x-www-form-urlencoded) POST body as `access_token={access_token}`\n3. Put it in the query string of a non-POST: `?access_token={access_token}`\n\n\n#### Repository Cloning\n\nSince add-ons will not be able to upload their own SSH keys to clone\nwith, access tokens can be used as Basic HTTP Auth credentials to\nclone securely over HTTPS. This is much like GitHub, yet slightly\ndifferent:\n\n    $ git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git\n\nThe literal string `x-token-auth` as a substitute for username is\nrequired (note the difference with GitHub where the actual token is in\nthe username field).\n\n\n#### Refresh Tokens\n\nOur access tokens expire in one hour. When this happens you'll get 401\nresponses.\n\nMost access tokens grant responses (Implicit and JWT excluded). Therefore, you should include a\nrefresh token that can then be used to generate a new access token,\nwithout the need for end user participation:\n\n    $ curl -X POST -u \"client_id:secret\" \\\n      https://bitbucket.org/site/oauth2/access_token \\\n      -d grant_type=refresh_token -d refresh_token={refresh_token}\n\n\n### Bitbucket OAuth 2.0 scopes\n\nBitbucket's API applies a number of privilege scopes to endpoints. In order to access an endpoint, a request will need to have the necessary scopes.\n\nOAuth 2.0 Scopes are applicable for OAuth 2, Access Tokens, and App passwords auth mechanisms as well as Bitbucket Connect apps.\n\nScopes are declared in the descriptor as a list of strings, with each string being the name of a unique scope.\n\nA descriptor lacking the `scopes` element is implicitly assumed to require all scopes and as a result, Bitbucket will require end users authorizing/installing the add-on\nto explicitly accept all scopes.\n\nOur best practice suggests you add only the scopes your add-on needs, but no more than it needs.\n\nInvalid scope strings will cause the descriptor to be rejected and the installation to fail.\n\nThe available scopes are:\n\n- [project](#project)\n- [project:write](#project-write)\n- [project:admin](#project-admin)\n- [repository](#repository)\n- [repository:write](#repository-write)\n- [repository:admin](#repository-admin)\n- [repository:delete](#repository-delete)\n- [pullrequest](#pullrequest)\n- [pullrequest:write](#pullrequest-write)\n- [issue](#issue)\n- [issue:write](#issue-write)\n- [wiki](#wiki)\n- [webhook](#webhook)\n- [snippet](#snippet)\n- [snippet:write](#snippet-write)\n- [email](#email)\n- [account](#account)\n- [account:write](#account-write)\n- [pipeline](#pipeline)\n- [pipeline:write](#pipeline-write)\n- [pipeline:variable](#pipeline-variable)\n- [runner](#runner)\n- [runner:write](#runner-write)\n\n#### project\n\nProvides access to view the project or projects.\nThis scope implies the [`repository`](#repository) scope, giving read access to all the repositories in a project or projects.\n\n#### project:write\n\nThis scope is deprecated, and has been made obsolete by `project:admin`. Please see the deprecation notice [here](/cloud/bitbucket/deprecation-notice-project-write-scope).\n\n#### project:admin\n\nProvides admin access to a project or projects. No distinction is made between public and private projects. This scope doesn't implicitly grant the [`project`](#project) scope or the [`repository:write`](#repository-write) scope on any repositories under the project. It gives access to the admin features of a project only, not direct access to its repositories' contents.\n\n* ability to create the project\n* ability to update the project\n* ability to delete the project\n\n#### repository\n\nProvides read access to a repository or repositories.\nNote that this scope does not give access to a repository's pull requests.\n\n* access to the repo's source code\n* clone over HTTPS\n* access the file browsing API\n* download zip archives of the repo's contents\n* the ability to view and use the issue tracker on any repo (created issues, comment, vote, etc)\n* the ability to view and use the wiki on any repo (create/edit pages)\n\n#### repository:write\n\nProvides write (not admin) access to a repository or repositories. No distinction is made between public and private repositories. This scope implicitly grants the [`repository`](#repository) scope, which does not need to be requested separately.\nThis scope alone does not give access to the pull requests API.\n\n* push access over HTTPS\n* fork repos\n\n#### repository:admin\n\nProvides admin access to a repository or repositories. No distinction is made between public and private repositories. This scope doesn't implicitly grant the [`repository`](#repository) or the [`repository:write`](#repository-write) scopes. It gives access to the admin features of a repo only, not direct access to its contents. This scope can be used or misused to grant read access to other users, who can then clone the repo, but users that need to read and write source code would also request explicit read or write.\nThis scope comes with access to the following functionality:\n\n* View and manipulate committer mappings\n* List and edit deploy keys\n* Ability to delete the repo\n* View and edit repo permissions\n* View and edit branch permissions\n* Import and export the issue tracker\n* Enable and disable the issue tracker\n* List and edit issue tracker version, milestones and components\n* Enable and disable the wiki\n* List and edit default reviewers\n* List and edit repo links (Jira/Bamboo/Custom)\n* List and edit the repository webhooks\n* Initiate a repo ownership transfer\n\n#### repository:delete\n\nProvides access to delete a repository or repositories.\n\n#### pullrequest\n\nProvides read access to pull requests.\nThis scope implies the [`repository`](#repository) scope, giving read access to the pull request's destination repository.\n\n* see and list pull requests\n* create and resolve tasks\n* comment on pull requests\n\n#### pullrequest:write\n\nImplicitly grants the [`pullrequest`](#pullrequest) scope and adds the ability to create, merge and decline pull requests.\nThis scope also implicitly grants the [`repository:write`](#repository-write) scope, giving write access to the pull request's destination repository. This is necessary to allow merging.\n\n* merge pull requests\n* decline pull requests\n* create pull requests\n* approve pull requests\n\n#### issue\n\nAbility to interact with issue trackers the way non-repo members can.\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* view, list and search issues\n* create new issues\n* comment on issues\n* watch issues\n* vote for issues\n\n#### issue:write\n\nThis scope implicitly grants the [`issue`](#issue) scope and adds the ability to transition and delete issues.\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* transition issues\n* delete issues\n\n#### wiki\n\nProvides access to wikis. This scope provides both read and write access (wikis are always editable by anyone with access to them).\nThis scope doesn't implicitly grant any other scopes and doesn't give implicit access to the repository.\n\n* view wikis\n* create pages\n* edit pages\n* push to wikis\n* clone wikis\n\n#### webhook\n\nGives access to webhooks. This scope is required for any webhook-related operation.\n\nThis scope gives read access to existing webhook subscriptions on all\nresources the authorization mechanism can access, without needing further scopes.\nFor example:\n\n- A client can list all existing webhook subscriptions on a repository. The [`repository`](#repository) scope is not required.\n- Existing webhook subscriptions for the issue tracker on a repo can be retrieved without the [`issue`](#issue) scope. All that is required is the `webhook` scope.\n\nTo create webhooks, the client will need read access to the resource. Such as: for [`issue:created`](#issue-created), the client will need to\nhave both the `webhook` and the [`issue`](#issue) scope.\n\n* list webhook subscriptions on any accessible repository, user, team, or snippet\n* create/update/delete webhook subscriptions.\n\n#### snippet\n\nProvides read access to snippets.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\n\n* view any snippet\n* create snippet comments\n\n#### snippet:write\n\nProvides write access to snippets.\nNo distinction is made between public and private snippets (public snippets are accessible without any form of authentication).\nThis scope implicitly grants the [`snippet`](#snippet) scope which does not need to be requested separately.\n\n* create snippets\n* edit snippets\n* delete snippets\n\n#### email\n\nAbility to see the user's primary email address. This should make it easier to use Bitbucket Cloud as a login provider for apps or external applications.\n\n#### account\n\nWhen used for:\n* **user-related APIs** — Gives read-only access to the user's account information.\nNote that this doesn't include any ability to change any of the data. This scope allows you to view the user's:\n  * email addresses\n  * language\n  * location\n  * website\n  * full name\n  * SSH keys\n  * user groups\n* **workspace-related APIs** — Grants access to view the workspace's:\n  * users\n  * user permissions\n  * projects\n\n#### account:write\n\nAbility to change properties on the user's account.\n\n* delete the authorizing user's account\n* manage the user's groups\n* change a user's email addresses\n* change username, display name and avatar\n\n#### pipeline\n\nGives read-only access to pipelines, steps, deployment environments and variables.\n\n#### pipeline:write\n\nGives write access to pipelines. This scope allows a user to:\n* Stop pipelines\n* Rerun failed pipelines\n* Resume halted pipelines\n* Trigger manual pipelines.\n\nThis scope is not needed to trigger a build using a push. Performing a `git push` (or equivalent actions) will trigger the build. The token doing the push only needs the [`repository:write`](#repository-write) scope.\n\nThis doesn't give write access to create variables.\n\n#### pipeline:variable\n\nGives write access to create variables in pipelines at the various levels:\n* Workspace\n* Repository\n* Deployment\n\n#### runner\n\nGives read-only access to pipelines runners setup against a workspace or repository.\n\n#### runner:write\n\nGives write access to create/edit/disable/delete pipelines runners setup against a workspace or repository.\n### Forge app scopes\n\nIn order for a Forge app integration to access Bitbucket API endpoints, it needs to include certain privilege scopes in the app manifest. These are different from Bitbucket OAuth 2.0 scopes.\n\nUnlike OAuth 2.0 scopes, Forge app scopes do not implicitly grant other scopes, for example, `write:repository:bitbucket` does not implicitly grant `read:repository:bitbucket`.\n\nOnly a subset of Bitbucket API endpoints are currently available for Forge app integrations. These will be labeled with Forge app scopes.\n\nOur best practice suggests you only add the scopes your app needs, but no more than it needs.\n\nThe available scopes are:\n\n- [`read:repository:bitbucket`](#read-repository-bitbucket)\n- [`write:repository:bitbucket`](#write-repository-bitbucket)\n- [`admin:repository:bitbucket`](#admin-repository-bitbucket)\n- [`delete:repository:bitbucket`](#delete-repository-bitbucket)\n- [`read:pullrequest:bitbucket`](#read-pullrequest-bitbucket)\n- [`write:pullrequest:bitbucket`](#write-pullrequest-bitbucket)\n- [`read:project:bitbucket`](#read-project-bitbucket)\n- [`admin:project:bitbucket`](#admin-project-bitbucket)\n- [`read:workspace:bitbucket`](#read-workspace-bitbucket)\n- [`read:user:bitbucket`](#read-user-bitbucket)\n- [`read:pipeline:bitbucket`](#read-pipeline-bitbucket)\n- [`write:pipeline:bitbucket`](#write-pipeline-bitbucket)\n- [`admin:pipeline:bitbucket`](#admin-pipeline-bitbucket)\n- [`read:runner:bitbucket`](#read-runner-bitbucket)\n- [`write:runner:bitbucket`](#write-runner-bitbucket)\n\n#### read:repository:bitbucket\n\nAllows viewing of repository data. Note that this scope does not give access to a repository's pull requests.\n* access to the repository's source code\n* access the file browsing API\n* access to certain repository configurations such as branching model, default reviewers, etc.\n\n#### write:repository:bitbucket\n\nAllows modification of repository data. No distinction is made between public and private repositories. This scope does not imply the `read:repository:bitbucket` scope, so you need to request that separately if required. This scope alone does not give access to the pull request API.\n* update/delete source, branches, tags, etc.\n* fork repositories\n\n#### admin:repository:bitbucket\n\nAllows admin activities on repositories. No distinction is made between public and private repositories. This scope does not implicitly grant the `read:repository:bitbucket` or the `write:repository:bitbucket` scopes. It gives access to the admin features of a repository only, not direct access to its contents. This scope does not allow modification of repository permissions. This scope comes with access to the following functionality:\n* create repository\n* view repository permissions\n* view and edit branch restrictions\n* edit branching model settings\n* edit default reviewers\n* view and edit inheritance state for repository settings\n\n#### delete:repository:bitbucket\nAllows deletion of repositories.\n\n#### read:pullrequest:bitbucket\nAllows viewing of pull requests, plus the ability to comment on pull requests.\n\nThis scope does not imply the `read:repository:bitbucket` scope. With this scope, you could retrieve some data specific to the source/destination repositories of a pull request using pull request endpoints, but it does not give access to repository API endpoints.\n\n#### write:pullrequest:bitbucket\nAllows the ability to create, update, approve, decline, and merge pull requests.\n\nThis scope does not imply the `write:repository:bitbucket` scope.\n\n#### read:project:bitbucket\nAllows viewing of project and project permission data.\n\n#### admin:project:bitbucket\nAllows the ability to create, update, and delete project. No distinction is made between public and private projects.\n\nThis scope does not implicitly grant the `read:project:bitbucket` scope or any repository scopes. It gives access to the admin features of a project only, not direct access to its repositories' contents.\n\n#### read:workspace:bitbucket\nAllows viewing of workspace and workspace permission data.\n\n#### read:user:bitbucket\nAllows viewing of data related to the current user.\n\n#### read:pipeline:bitbucket\nAllows read access to all pipeline information (pipelines, steps, caches, artifacts, logs, tests, code-insights).\n\n#### write:pipeline:bitbucket\nAllows running pipelines (i.e., start/stop/create pipeline) and uploading tests/code-insights.\n\nThis scope does not imply the `read:pipeline:bitbucket` scope.\n\n#### admin:pipeline:bitbucket\nAllows admin activities, such as creating pipeline variables.\n\nThis scope does not implicitly grant the `read:pipeline:bitbucket` or the `write:pipeline:bitbucket` scopes.\n\n#### read:runner:bitbucket\nAllows viewing of runners information.\n\n#### write:runner:bitbucket\nAllows runners management.\n\nThis scope does not imply the `read:runners:bitbucket` scope.\n"
 			},
 			{
 				"anchor": "filtering",
@@ -24865,6 +25304,21 @@
 			}
 		},
 		"schemas": {
+			"application_property": {
+				"additionalProperties": true,
+				"type": "object",
+				"title": "Application Property",
+				"description": "An application property. It is a caller defined JSON object that Bitbucket will store and return. \nThe `_attributes` field at its top level can be used to control who is allowed to read and update the property. \nThe keys of the JSON object must match an allowed pattern. For details, \nsee [Application properties](/cloud/bitbucket/application-properties/).\n",
+				"properties": {
+					"_attributes": {
+						"type": "array",
+						"items": {
+							"type": "string",
+							"enum": ["public", "read_only"]
+						}
+					}
+				}
+			},
 			"deployment_environment": {
 				"allOf": [
 					{
@@ -25279,21 +25733,6 @@
 					}
 				}
 			},
-			"application_property": {
-				"additionalProperties": true,
-				"type": "object",
-				"title": "Application Property",
-				"description": "An application property. It is a caller defined JSON object that Bitbucket will store and return. \nThe `_attributes` field at its top level can be used to control who is allowed to read and update the property. \nThe keys of the JSON object must match an allowed pattern. For details, \nsee [Application properties](/cloud/bitbucket/application-properties/).\n",
-				"properties": {
-					"_attributes": {
-						"type": "array",
-						"items": {
-							"type": "string",
-							"enum": ["public", "read_only"]
-						}
-					}
-				}
-			},
 			"paginated_pullrequests": {
 				"type": "object",
 				"title": "Paginated Pull Requests",
@@ -25335,117 +25774,255 @@
 				},
 				"additionalProperties": false
 			},
-			"search_code_search_result": {
+			"report": {
+				"allOf": [
+					{
+						"$ref": "#/components/schemas/object"
+					},
+					{
+						"additionalProperties": true,
+						"type": "object",
+						"title": "Commit Report",
+						"description": "A report for a commit.",
+						"properties": {
+							"uuid": {
+								"type": "string",
+								"description": "The UUID that can be used to identify the report."
+							},
+							"title": {
+								"type": "string",
+								"description": "The title of the report."
+							},
+							"details": {
+								"type": "string",
+								"description": "A string to describe the purpose of the report."
+							},
+							"external_id": {
+								"type": "string",
+								"description": "ID of the report provided by the report creator. It can be used to identify the report as an alternative to it's generated uuid. It is not used by Bitbucket, but only by the report creator for updating or deleting this specific report. Needs to be unique."
+							},
+							"reporter": {
+								"type": "string",
+								"description": "A string to describe the tool or company who created the report."
+							},
+							"link": {
+								"type": "string",
+								"format": "uri",
+								"description": "A URL linking to the results of the report in an external tool."
+							},
+							"remote_link_enabled": {
+								"type": "boolean",
+								"description": "If enabled, a remote link is created in Jira for the issue associated with the commit the report belongs to."
+							},
+							"logo_url": {
+								"type": "string",
+								"format": "uri",
+								"description": "A URL to the report logo. If none is provided, the default insights logo will be used."
+							},
+							"report_type": {
+								"enum": ["SECURITY", "COVERAGE", "TEST", "BUG"],
+								"type": "string",
+								"description": "The type of the report."
+							},
+							"result": {
+								"enum": ["PASSED", "FAILED", "PENDING"],
+								"type": "string",
+								"description": "The state of the report. May be set to PENDING and later updated."
+							},
+							"data": {
+								"type": "array",
+								"items": {
+									"$ref": "#/components/schemas/report_data"
+								},
+								"description": "An array of data fields to display information on the report. Maximum 10."
+							},
+							"created_on": {
+								"type": "string",
+								"format": "date-time",
+								"description": "The timestamp when the report was created."
+							},
+							"updated_on": {
+								"type": "string",
+								"format": "date-time",
+								"description": "The timestamp when the report was updated."
+							}
+						}
+					}
+				],
+				"x-bb-default-fields": ["uuid", "commitHash"],
+				"x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/commits/{commitHash}/reports/{uuid}"
+			},
+			"report_data": {
 				"type": "object",
+				"title": "Report Data",
+				"description": "A key-value element that will be displayed along with the report.",
 				"properties": {
 					"type": {
+						"enum": [
+							"BOOLEAN",
+							"DATE",
+							"DURATION",
+							"LINK",
+							"NUMBER",
+							"PERCENTAGE",
+							"TEXT"
+						],
 						"type": "string",
-						"readOnly": true
-					},
-					"content_match_count": {
-						"type": "integer",
-						"format": "int64",
-						"readOnly": true
-					},
-					"content_matches": {
-						"type": "array",
-						"readOnly": true,
-						"items": {
-							"$ref": "#/components/schemas/search_content_match"
-						}
+						"description": "The type of data contained in the value field. If not provided, then the value will be detected as a boolean, number or string."
 					},
-					"path_matches": {
-						"type": "array",
-						"readOnly": true,
-						"items": {
-							"$ref": "#/components/schemas/search_segment"
-						}
+					"title": {
+						"type": "string",
+						"description": "A string describing what this data field represents."
 					},
-					"file": {
-						"$ref": "#/components/schemas/commit_file"
+					"value": {
+						"type": "object",
+						"description": "The value of the data element."
 					}
 				}
 			},
-			"search_content_match": {
-				"type": "object",
-				"properties": {
-					"lines": {
-						"type": "array",
-						"readOnly": true,
-						"items": {
-							"$ref": "#/components/schemas/search_line"
+			"report_annotation": {
+				"allOf": [
+					{
+						"$ref": "#/components/schemas/object"
+					},
+					{
+						"additionalProperties": true,
+						"type": "object",
+						"title": "Report Annotation",
+						"description": "A report for a commit.",
+						"properties": {
+							"external_id": {
+								"type": "string",
+								"description": "ID of the annotation provided by the annotation creator. It can be used to identify the annotation as an alternative to it's generated uuid. It is not used by Bitbucket, but only by the annotation creator for updating or deleting this specific annotation. Needs to be unique."
+							},
+							"uuid": {
+								"type": "string",
+								"description": "The UUID that can be used to identify the annotation."
+							},
+							"annotation_type": {
+								"enum": ["VULNERABILITY", "CODE_SMELL", "BUG"],
+								"type": "string",
+								"description": "The type of the report."
+							},
+							"path": {
+								"type": "string",
+								"description": "The path of the file on which this annotation should be placed. This is the path of the file relative to the git repository. If no path is provided, then it will appear in the overview modal on all pull requests where the tip of the branch is the given commit, regardless of which files were modified."
+							},
+							"line": {
+								"type": "integer",
+								"description": "The line number that the annotation should belong to. If no line number is provided, then it will default to 0 and in a pull request it will appear at the top of the file specified by the path field.",
+								"minimum": 1
+							},
+							"summary": {
+								"type": "string",
+								"description": "The message to display to users."
+							},
+							"details": {
+								"type": "string",
+								"description": "The details to show to users when clicking on the annotation."
+							},
+							"result": {
+								"enum": ["PASSED", "FAILED", "SKIPPED", "IGNORED"],
+								"type": "string",
+								"description": "The state of the report. May be set to PENDING and later updated."
+							},
+							"severity": {
+								"enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"],
+								"type": "string",
+								"description": "The severity of the annotation."
+							},
+							"link": {
+								"type": "string",
+								"format": "uri",
+								"description": "A URL linking to the annotation in an external tool."
+							},
+							"created_on": {
+								"type": "string",
+								"format": "date-time",
+								"description": "The timestamp when the report was created."
+							},
+							"updated_on": {
+								"type": "string",
+								"format": "date-time",
+								"description": "The timestamp when the report was updated."
+							}
 						}
 					}
-				}
+				],
+				"x-bb-default-fields": ["uuid"],
+				"x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/commits/{commit.hash}/reports/{reportUuid}/annotations/{uuid}"
 			},
-			"search_line": {
+			"paginated_reports": {
 				"type": "object",
+				"title": "Paginated Reports",
+				"description": "A paginated list of reports.",
 				"properties": {
-					"line": {
+					"page": {
 						"type": "integer",
-						"format": "int32",
-						"readOnly": true
+						"description": "Page number of the current results. This is an optional element that is not provided in all responses."
 					},
-					"segments": {
+					"values": {
 						"type": "array",
-						"readOnly": true,
+						"minItems": 0,
 						"items": {
-							"$ref": "#/components/schemas/search_segment"
-						}
+							"$ref": "#/components/schemas/report"
+						},
+						"description": "The values of the current page."
+					},
+					"size": {
+						"type": "integer",
+						"description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute."
+					},
+					"pagelen": {
+						"type": "integer",
+						"description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values."
+					},
+					"next": {
+						"type": "string",
+						"format": "uri",
+						"description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs."
+					},
+					"previous": {
+						"type": "string",
+						"format": "uri",
+						"description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs."
 					}
 				}
 			},
-			"search_result_page": {
+			"paginated_annotations": {
 				"type": "object",
+				"title": "Paginated Annotations",
+				"description": "A paginated list of annotations.",
 				"properties": {
-					"size": {
+					"page": {
 						"type": "integer",
-						"format": "int64",
-						"readOnly": true
+						"description": "Page number of the current results. This is an optional element that is not provided in all responses."
 					},
-					"page": {
+					"values": {
+						"type": "array",
+						"minItems": 0,
+						"items": {
+							"$ref": "#/components/schemas/report_annotation"
+						},
+						"description": "The values of the current page."
+					},
+					"size": {
 						"type": "integer",
-						"format": "int32",
-						"readOnly": true
+						"description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute."
 					},
 					"pagelen": {
 						"type": "integer",
-						"format": "int32",
-						"readOnly": true
-					},
-					"query_substituted": {
-						"type": "boolean",
-						"readOnly": true
+						"description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values."
 					},
 					"next": {
 						"type": "string",
 						"format": "uri",
-						"readOnly": true
+						"description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs."
 					},
 					"previous": {
 						"type": "string",
 						"format": "uri",
-						"readOnly": true
-					},
-					"values": {
-						"type": "array",
-						"readOnly": true,
-						"items": {
-							"$ref": "#/components/schemas/search_code_search_result"
-						}
-					}
-				}
-			},
-			"search_segment": {
-				"type": "object",
-				"properties": {
-					"text": {
-						"type": "string",
-						"readOnly": true
-					},
-					"match": {
-						"type": "boolean",
-						"readOnly": true
+						"description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs."
 					}
 				}
 			},
@@ -26880,241 +27457,10 @@
 					}
 				}
 			},
-			"paginated_pipeline_steps": {
-				"type": "object",
-				"title": "Paginated Pipeline Steps",
-				"description": "A paged list of pipeline steps.",
-				"properties": {
-					"page": {
-						"type": "integer",
-						"description": "Page number of the current results. This is an optional element that is not provided in all responses."
-					},
-					"values": {
-						"type": "array",
-						"minItems": 0,
-						"items": {
-							"$ref": "#/components/schemas/pipeline_step"
-						},
-						"description": "The values of the current page."
-					},
-					"size": {
-						"type": "integer",
-						"description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute."
-					},
-					"pagelen": {
-						"type": "integer",
-						"description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values."
-					},
-					"next": {
-						"type": "string",
-						"format": "uri",
-						"description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs."
-					},
-					"previous": {
-						"type": "string",
-						"format": "uri",
-						"description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs."
-					}
-				}
-			},
-			"pipeline_configuration_source": {
-				"type": "object",
-				"description": "Information about the source of the pipeline configuration",
-				"properties": {
-					"source": {
-						"type": "string",
-						"description": "Identifier of the configuration source"
-					},
-					"uri": {
-						"type": "string",
-						"format": "uri",
-						"description": "Link to the configuration source view or its immediate content"
-					}
-				},
-				"required": ["source", "uri"]
-			},
-			"report": {
-				"allOf": [
-					{
-						"$ref": "#/components/schemas/object"
-					},
-					{
-						"additionalProperties": true,
-						"type": "object",
-						"title": "Commit Report",
-						"description": "A report for a commit.",
-						"properties": {
-							"uuid": {
-								"type": "string",
-								"description": "The UUID that can be used to identify the report."
-							},
-							"title": {
-								"type": "string",
-								"description": "The title of the report."
-							},
-							"details": {
-								"type": "string",
-								"description": "A string to describe the purpose of the report."
-							},
-							"external_id": {
-								"type": "string",
-								"description": "ID of the report provided by the report creator. It can be used to identify the report as an alternative to it's generated uuid. It is not used by Bitbucket, but only by the report creator for updating or deleting this specific report. Needs to be unique."
-							},
-							"reporter": {
-								"type": "string",
-								"description": "A string to describe the tool or company who created the report."
-							},
-							"link": {
-								"type": "string",
-								"format": "uri",
-								"description": "A URL linking to the results of the report in an external tool."
-							},
-							"remote_link_enabled": {
-								"type": "boolean",
-								"description": "If enabled, a remote link is created in Jira for the issue associated with the commit the report belongs to."
-							},
-							"logo_url": {
-								"type": "string",
-								"format": "uri",
-								"description": "A URL to the report logo. If none is provided, the default insights logo will be used."
-							},
-							"report_type": {
-								"enum": ["SECURITY", "COVERAGE", "TEST", "BUG"],
-								"type": "string",
-								"description": "The type of the report."
-							},
-							"result": {
-								"enum": ["PASSED", "FAILED", "PENDING"],
-								"type": "string",
-								"description": "The state of the report. May be set to PENDING and later updated."
-							},
-							"data": {
-								"type": "array",
-								"items": {
-									"$ref": "#/components/schemas/report_data"
-								},
-								"description": "An array of data fields to display information on the report. Maximum 10."
-							},
-							"created_on": {
-								"type": "string",
-								"format": "date-time",
-								"description": "The timestamp when the report was created."
-							},
-							"updated_on": {
-								"type": "string",
-								"format": "date-time",
-								"description": "The timestamp when the report was updated."
-							}
-						}
-					}
-				],
-				"x-bb-default-fields": ["uuid", "commitHash"],
-				"x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/commits/{commitHash}/reports/{uuid}"
-			},
-			"report_data": {
-				"type": "object",
-				"title": "Report Data",
-				"description": "A key-value element that will be displayed along with the report.",
-				"properties": {
-					"type": {
-						"enum": [
-							"BOOLEAN",
-							"DATE",
-							"DURATION",
-							"LINK",
-							"NUMBER",
-							"PERCENTAGE",
-							"TEXT"
-						],
-						"type": "string",
-						"description": "The type of data contained in the value field. If not provided, then the value will be detected as a boolean, number or string."
-					},
-					"title": {
-						"type": "string",
-						"description": "A string describing what this data field represents."
-					},
-					"value": {
-						"type": "object",
-						"description": "The value of the data element."
-					}
-				}
-			},
-			"report_annotation": {
-				"allOf": [
-					{
-						"$ref": "#/components/schemas/object"
-					},
-					{
-						"additionalProperties": true,
-						"type": "object",
-						"title": "Report Annotation",
-						"description": "A report for a commit.",
-						"properties": {
-							"external_id": {
-								"type": "string",
-								"description": "ID of the annotation provided by the annotation creator. It can be used to identify the annotation as an alternative to it's generated uuid. It is not used by Bitbucket, but only by the annotation creator for updating or deleting this specific annotation. Needs to be unique."
-							},
-							"uuid": {
-								"type": "string",
-								"description": "The UUID that can be used to identify the annotation."
-							},
-							"annotation_type": {
-								"enum": ["VULNERABILITY", "CODE_SMELL", "BUG"],
-								"type": "string",
-								"description": "The type of the report."
-							},
-							"path": {
-								"type": "string",
-								"description": "The path of the file on which this annotation should be placed. This is the path of the file relative to the git repository. If no path is provided, then it will appear in the overview modal on all pull requests where the tip of the branch is the given commit, regardless of which files were modified."
-							},
-							"line": {
-								"type": "integer",
-								"description": "The line number that the annotation should belong to. If no line number is provided, then it will default to 0 and in a pull request it will appear at the top of the file specified by the path field.",
-								"minimum": 1
-							},
-							"summary": {
-								"type": "string",
-								"description": "The message to display to users."
-							},
-							"details": {
-								"type": "string",
-								"description": "The details to show to users when clicking on the annotation."
-							},
-							"result": {
-								"enum": ["PASSED", "FAILED", "SKIPPED", "IGNORED"],
-								"type": "string",
-								"description": "The state of the report. May be set to PENDING and later updated."
-							},
-							"severity": {
-								"enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"],
-								"type": "string",
-								"description": "The severity of the annotation."
-							},
-							"link": {
-								"type": "string",
-								"format": "uri",
-								"description": "A URL linking to the annotation in an external tool."
-							},
-							"created_on": {
-								"type": "string",
-								"format": "date-time",
-								"description": "The timestamp when the report was created."
-							},
-							"updated_on": {
-								"type": "string",
-								"format": "date-time",
-								"description": "The timestamp when the report was updated."
-							}
-						}
-					}
-				],
-				"x-bb-default-fields": ["uuid"],
-				"x-bb-url": "/rest/2.0/accounts/{target_user.uuid}/repositories/{repository.uuid}/commits/{commit.hash}/reports/{reportUuid}/annotations/{uuid}"
-			},
-			"paginated_reports": {
+			"paginated_pipeline_steps": {
 				"type": "object",
-				"title": "Paginated Reports",
-				"description": "A paginated list of reports.",
+				"title": "Paginated Pipeline Steps",
+				"description": "A paged list of pipeline steps.",
 				"properties": {
 					"page": {
 						"type": "integer",
@@ -27124,7 +27470,7 @@
 						"type": "array",
 						"minItems": 0,
 						"items": {
-							"$ref": "#/components/schemas/report"
+							"$ref": "#/components/schemas/pipeline_step"
 						},
 						"description": "The values of the current page."
 					},
@@ -27148,40 +27494,133 @@
 					}
 				}
 			},
-			"paginated_annotations": {
+			"pipeline_configuration_source": {
 				"type": "object",
-				"title": "Paginated Annotations",
-				"description": "A paginated list of annotations.",
+				"description": "Information about the source of the pipeline configuration",
 				"properties": {
-					"page": {
+					"source": {
+						"type": "string",
+						"description": "Identifier of the configuration source"
+					},
+					"uri": {
+						"type": "string",
+						"format": "uri",
+						"description": "Link to the configuration source view or its immediate content"
+					}
+				},
+				"required": ["source", "uri"]
+			},
+			"search_code_search_result": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"type": "string",
+						"readOnly": true
+					},
+					"content_match_count": {
 						"type": "integer",
-						"description": "Page number of the current results. This is an optional element that is not provided in all responses."
+						"format": "int64",
+						"readOnly": true
 					},
-					"values": {
+					"content_matches": {
 						"type": "array",
-						"minItems": 0,
+						"readOnly": true,
 						"items": {
-							"$ref": "#/components/schemas/report_annotation"
-						},
-						"description": "The values of the current page."
+							"$ref": "#/components/schemas/search_content_match"
+						}
+					},
+					"path_matches": {
+						"type": "array",
+						"readOnly": true,
+						"items": {
+							"$ref": "#/components/schemas/search_segment"
+						}
+					},
+					"file": {
+						"$ref": "#/components/schemas/commit_file"
+					}
+				}
+			},
+			"search_content_match": {
+				"type": "object",
+				"properties": {
+					"lines": {
+						"type": "array",
+						"readOnly": true,
+						"items": {
+							"$ref": "#/components/schemas/search_line"
+						}
+					}
+				}
+			},
+			"search_line": {
+				"type": "object",
+				"properties": {
+					"line": {
+						"type": "integer",
+						"format": "int32",
+						"readOnly": true
 					},
+					"segments": {
+						"type": "array",
+						"readOnly": true,
+						"items": {
+							"$ref": "#/components/schemas/search_segment"
+						}
+					}
+				}
+			},
+			"search_result_page": {
+				"type": "object",
+				"properties": {
 					"size": {
 						"type": "integer",
-						"description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute."
+						"format": "int64",
+						"readOnly": true
+					},
+					"page": {
+						"type": "integer",
+						"format": "int32",
+						"readOnly": true
 					},
 					"pagelen": {
 						"type": "integer",
-						"description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values."
+						"format": "int32",
+						"readOnly": true
+					},
+					"query_substituted": {
+						"type": "boolean",
+						"readOnly": true
 					},
 					"next": {
 						"type": "string",
 						"format": "uri",
-						"description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs."
+						"readOnly": true
 					},
 					"previous": {
 						"type": "string",
 						"format": "uri",
-						"description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs."
+						"readOnly": true
+					},
+					"values": {
+						"type": "array",
+						"readOnly": true,
+						"items": {
+							"$ref": "#/components/schemas/search_code_search_result"
+						}
+					}
+				}
+			},
+			"search_segment": {
+				"type": "object",
+				"properties": {
+					"text": {
+						"type": "string",
+						"readOnly": true
+					},
+					"match": {
+						"type": "boolean",
+						"readOnly": true
 					}
 				}
 			},
@@ -30460,6 +30899,28 @@
 					}
 				]
 			},
+			"committer": {
+				"allOf": [
+					{
+						"$ref": "#/components/schemas/object"
+					},
+					{
+						"type": "object",
+						"title": "Committer",
+						"description": "The committer of a change in a repository",
+						"properties": {
+							"raw": {
+								"type": "string",
+								"description": "The raw committer value from the repository. This may be the only value available if the committer does not match a user in Bitbucket."
+							},
+							"user": {
+								"$ref": "#/components/schemas/account"
+							}
+						},
+						"additionalProperties": true
+					}
+				]
+			},
 			"base_commit": {
 				"allOf": [
 					{
@@ -30481,6 +30942,9 @@
 							"author": {
 								"$ref": "#/components/schemas/author"
 							},
+							"committer": {
+								"$ref": "#/components/schemas/committer"
+							},
 							"message": {
 								"type": "string"
 							},
@@ -31187,6 +31651,93 @@
 					}
 				]
 			},
+			"GPG_account_key": {
+				"allOf": [
+					{
+						"$ref": "#/components/schemas/object"
+					},
+					{
+						"type": "object",
+						"title": "GPG Account Key",
+						"description": "Represents a GPG public key for a user.",
+						"properties": {
+							"owner": {
+								"$ref": "#/components/schemas/account"
+							},
+							"key": {
+								"type": "string",
+								"description": "The GPG key value in X format."
+							},
+							"key_id": {
+								"type": "string",
+								"description": "The unique identifier for the GPG key"
+							},
+							"fingerprint": {
+								"type": "string",
+								"description": "The GPG key fingerprint."
+							},
+							"parent_fingerprint": {
+								"type": "string",
+								"description": "The fingerprint of the parent key. This value is null unless the current key is a subkey."
+							},
+							"comment": {
+								"type": "string",
+								"description": "The comment parsed from the GPG key (if present)"
+							},
+							"name": {
+								"type": "string",
+								"description": "The user-defined label for the GPG key"
+							},
+							"expires_on": {
+								"type": "string",
+								"format": "date-time"
+							},
+							"created_on": {
+								"type": "string",
+								"format": "date-time"
+							},
+							"added_on": {
+								"type": "string",
+								"format": "date-time"
+							},
+							"last_used": {
+								"type": "string",
+								"format": "date-time"
+							},
+							"subkeys": {
+								"type": "array",
+								"items": {
+									"$ref": "#/components/schemas/GPG_account_key"
+								},
+								"minItems": 0,
+								"uniqueItems": true
+							},
+							"links": {
+								"type": "object",
+								"properties": {
+									"self": {
+										"type": "object",
+										"title": "Link",
+										"description": "A link to a resource related to this object.",
+										"properties": {
+											"href": {
+												"type": "string",
+												"format": "uri"
+											},
+											"name": {
+												"type": "string"
+											}
+										},
+										"additionalProperties": false
+									}
+								},
+								"additionalProperties": false
+							}
+						},
+						"additionalProperties": true
+					}
+				]
+			},
 			"paginated_deploy_keys": {
 				"type": "object",
 				"title": "Paginated Deploy Keys",
@@ -31228,6 +31779,47 @@
 				},
 				"additionalProperties": false
 			},
+			"paginated_gpg_user_keys": {
+				"type": "object",
+				"title": "Paginated GPG User Keys",
+				"description": "A paginated list of GPG keys.",
+				"properties": {
+					"size": {
+						"type": "integer",
+						"description": "Total number of objects in the response. This is an optional element that is not provided in all responses, as it can be expensive to compute.",
+						"minimum": 0
+					},
+					"page": {
+						"type": "integer",
+						"description": "Page number of the current results. This is an optional element that is not provided in all responses.",
+						"minimum": 1
+					},
+					"pagelen": {
+						"type": "integer",
+						"description": "Current number of objects on the existing page. The default value is 10 with 100 being the maximum allowed value. Individual APIs may enforce different values.",
+						"minimum": 1
+					},
+					"next": {
+						"type": "string",
+						"description": "Link to the next page if it exists. The last page of a collection does not have this value. Use this link to navigate the result set and refrain from constructing your own URLs.",
+						"format": "uri"
+					},
+					"previous": {
+						"type": "string",
+						"description": "Link to previous page if it exists. A collections first page does not have this value. This is an optional element that is not provided in all responses. Some result sets strictly support forward navigation and never provide previous links. Clients must anticipate that backwards navigation is not always available. Use this link to navigate the result set and refrain from constructing your own URLs.",
+						"format": "uri"
+					},
+					"values": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/GPG_account_key"
+						},
+						"minItems": 0,
+						"uniqueItems": true
+					}
+				},
+				"additionalProperties": false
+			},
 			"paginated_project_deploy_keys": {
 				"type": "object",
 				"title": "Paginated Project Deploy Keys",
diff --git a/tests/cloud/repositories.test.ts b/tests/cloud/repositories.test.ts
index 3bb3d3f..3553c7d 100644
--- a/tests/cloud/repositories.test.ts
+++ b/tests/cloud/repositories.test.ts
@@ -1,7 +1,8 @@
 import { test } from "vitest"
+import { SKIP_BITBUCKET_CLOUD } from "../env.ts"
 import { client } from "./client.ts"
 
-test("GET /repositories", async ({ expect }) => {
+test.skipIf(SKIP_BITBUCKET_CLOUD)("GET /repositories", async ({ expect }) => {
 	const got = await client.GET("/repositories")
 
 	expect(got.data?.next).toBeTypeOf("string")
diff --git a/tests/env.ts b/tests/env.ts
index 4658126..3a1dbf4 100644
--- a/tests/env.ts
+++ b/tests/env.ts
@@ -1,77 +1,21 @@
-import { config } from "dotenv"
-import path from "path"
+import { envBool, envString, envUrl, loadEnv } from "@natoboram/load_env"
 
 /**
  * @see https://nodejs.org/en/learn/getting-started/nodejs-the-difference-between-development-and-production
  * @see https://vitest.dev/guide/migration.html#envs
  */
-export type NodeEnv = (typeof nodeEnvs)[keyof typeof nodeEnvs]
-export type ProcessEnv = typeof process.env
+type NodeEnv = (typeof NodeEnv)[keyof typeof NodeEnv]
 
-interface LoadedEnv extends ProcessEnv {
-	readonly NODE_ENV: NodeEnv
+function isNodeEnv(value: unknown): value is NodeEnv {
+	return Object.values<unknown>(NodeEnv).includes(value)
 }
 
-function envString(key: string) {
-	const value = parsed[key]
-	if (!value) throw new Error(`$${key} is missing`)
-	return value
-}
-
-function envUrl(key: string) {
-	const str = envString(key)
-	try {
-		return new URL(str)
-	} catch (error) {
-		throw new Error(`$${key} is not a URL: ${str}`, { cause: error })
-	}
-}
-
-export function isNodeEnv(value: unknown): value is NodeEnv {
-	return Object.values<unknown>(nodeEnvs).includes(value)
-}
-
-/** Loads environment variables from the `.env` files. `NODE_ENV` has to be
- * set in the environment and will not be picked up from there.
- *
- * If `NODE_ENV` is not set, it will default to `development`.
- *
- * Environment variables are loaded in the following order:
- *
- * 1. `.env.development.local`
- * 2. `.env.development`
- * 3. `.env.local`
- * 4. `.env`
- */
-function loadEnv(): LoadedEnv {
-	const cwd = process.cwd()
-	const NODE_ENV = toNodeEnv(process.env.NODE_ENV?.trim())
-
-	const { parsed, error } = config({
-		path: [
-			path.resolve(cwd, `.env.${NODE_ENV}.local`),
-			path.resolve(cwd, `.env.${NODE_ENV}`),
-			path.resolve(cwd, ".env.local"),
-			path.resolve(cwd, ".env"),
-		],
-	})
-
-	if (!parsed)
-		throw new Error("Environment variables could not be loaded.", {
-			cause: error,
-		})
-
-	const merged = Object.assign(parsed, process.env, { NODE_ENV })
-	process.env = merged
-	return merged
-}
-
-export function toNodeEnv(value: unknown): NodeEnv {
+function toNodeEnv(value: unknown): NodeEnv {
 	if (isNodeEnv(value)) return value
-	return nodeEnvs.development
+	return NodeEnv.development
 }
 
-const nodeEnvs = {
+const NodeEnv = {
 	development: "development",
 	production: "production",
 	/**
@@ -80,18 +24,32 @@ const nodeEnvs = {
 	 */
 	test: "test",
 } as const
+
 const parsed = loadEnv()
+
+export const NODE_ENV = toNodeEnv(parsed.NODE_ENV)
+
 export const BITBUCKET_CLOUD_URL = envUrl("BITBUCKET_CLOUD_URL")
 export const BITBUCKET_CLOUD_USERNAME = envString("BITBUCKET_CLOUD_USERNAME")
 export const BITBUCKET_CLOUD_APP_PASSWORD = envString(
 	"BITBUCKET_CLOUD_APP_PASSWORD",
 )
+
 export const BITBUCKET_SERVER_URL = envUrl("BITBUCKET_SERVER_URL")
 export const BITBUCKET_SERVER_TOKEN = envString("BITBUCKET_SERVER_TOKEN")
-export const NODE_ENV = parsed.NODE_ENV
 export const BITBUCKET_SERVER_TEST_PROJECT_KEY = envString(
 	"BITBUCKET_SERVER_TEST_PROJECT_KEY",
 )
 export const BITBUCKET_SERVER_TEST_PROJECT_NAME = envString(
 	"BITBUCKET_SERVER_TEST_PROJECT_NAME",
 )
+
+export const SKIP_BITBUCKET_CLOUD = envBool("SKIP_BITBUCKET_CLOUD")
+
+/** Considering that single instance for a single user costs 2300 USD annually,
+ * most people aren't going to have a Bitbucket Data Center instance to test on.
+ * Therefore, end-to-end tests for Bitbucket Data Center are skipped by default.
+ *
+ * @see https://www.atlassian.com/software/bitbucket/enterprise
+ */
+export const SKIP_BITBUCKET_SERVER = envBool("SKIP_BITBUCKET_SERVER")
diff --git a/tests/server/projects.test.ts b/tests/server/projects.test.ts
index 9b5b9f4..a362bab 100644
--- a/tests/server/projects.test.ts
+++ b/tests/server/projects.test.ts
@@ -2,10 +2,11 @@ import { describe, test } from "vitest"
 import {
 	BITBUCKET_SERVER_TEST_PROJECT_KEY,
 	BITBUCKET_SERVER_TEST_PROJECT_NAME,
+	SKIP_BITBUCKET_SERVER,
 } from "../env.ts"
 import { client } from "./client.ts"
 
-describe("Projects", () => {
+describe.skipIf(SKIP_BITBUCKET_SERVER)("Projects", () => {
 	const key = BITBUCKET_SERVER_TEST_PROJECT_KEY
 	const name = BITBUCKET_SERVER_TEST_PROJECT_NAME
 
diff --git a/tests/server/repositories.test.ts b/tests/server/repositories.test.ts
index d77c1df..46eacc9 100644
--- a/tests/server/repositories.test.ts
+++ b/tests/server/repositories.test.ts
@@ -2,61 +2,69 @@ import { describe, test } from "vitest"
 import {
 	BITBUCKET_SERVER_TEST_PROJECT_KEY,
 	BITBUCKET_SERVER_TEST_PROJECT_NAME,
+	SKIP_BITBUCKET_SERVER,
 } from "../env.ts"
 import { client } from "./client.ts"
 
-describe("Repositories", { concurrent: false, sequential: true }, () => {
-	const projectKey = BITBUCKET_SERVER_TEST_PROJECT_KEY
-	const projectName = BITBUCKET_SERVER_TEST_PROJECT_NAME
-	const slug = "test-repository"
-	const name = "Test Repository"
+describe.skipIf(SKIP_BITBUCKET_SERVER)(
+	"Repositories",
+	{ concurrent: false, sequential: true },
+	() => {
+		const projectKey = BITBUCKET_SERVER_TEST_PROJECT_KEY
+		const projectName = BITBUCKET_SERVER_TEST_PROJECT_NAME
+		const slug = "test-repository"
+		const name = "Test Repository"
 
-	test("Create repository", async ({ expect }) => {
-		const created = await client.POST(
-			"/api/latest/projects/{projectKey}/repos",
-			{ params: { path: { projectKey } }, body: { name, scmId: "git", slug } },
-		)
+		test("Create repository", async ({ expect }) => {
+			const created = await client.POST(
+				"/api/latest/projects/{projectKey}/repos",
+				{
+					params: { path: { projectKey } },
+					body: { name, scmId: "git", slug },
+				},
+			)
 
-		if (created.error)
-			console.error("Failed to create a repository", created.error)
+			if (created.error)
+				console.error("Failed to create a repository", created.error)
 
-		expect(created).toMatchObject({
-			data: {
+			expect(created).toMatchObject({
+				data: {
+					slug,
+					name,
+					project: { key: projectKey, name: projectName },
+					scmId: "git",
+				},
+				response: { status: 201 },
+			})
+		})
+
+		test("Get a repository", async ({ expect }) => {
+			const repository = await client.GET(
+				"/api/latest/projects/{projectKey}/repos/{repositorySlug}",
+				{ params: { path: { projectKey, repositorySlug: slug } } },
+			)
+
+			if (repository.error)
+				console.error("Failed to get a repository", repository.error)
+
+			expect(repository.data).toMatchObject({
 				slug,
 				name,
 				project: { key: projectKey, name: projectName },
 				scmId: "git",
-			},
-			response: { status: 201 },
-		})
-	})
-
-	test("Get a repository", async ({ expect }) => {
-		const repository = await client.GET(
-			"/api/latest/projects/{projectKey}/repos/{repositorySlug}",
-			{ params: { path: { projectKey, repositorySlug: slug } } },
-		)
-
-		if (repository.error)
-			console.error("Failed to get a repository", repository.error)
-
-		expect(repository.data).toMatchObject({
-			slug,
-			name,
-			project: { key: projectKey, name: projectName },
-			scmId: "git",
+			})
 		})
-	})
 
-	test("Delete a repository", async ({ expect }) => {
-		const deleted = await client.DELETE(
-			"/api/latest/projects/{projectKey}/repos/{repositorySlug}",
-			{ params: { path: { projectKey, repositorySlug: slug } } },
-		)
+		test("Delete a repository", async ({ expect }) => {
+			const deleted = await client.DELETE(
+				"/api/latest/projects/{projectKey}/repos/{repositorySlug}",
+				{ params: { path: { projectKey, repositorySlug: slug } } },
+			)
 
-		if (deleted.error)
-			console.error("Failed to delete a repository", deleted.error)
+			if (deleted.error)
+				console.error("Failed to delete a repository", deleted.error)
 
-		expect(deleted.response.status).toBe(202)
-	})
-})
+			expect(deleted.response.status).toBe(202)
+		})
+	},
+)
diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json
index 1fddd34..73fc034 100644
--- a/tsconfig.eslint.json
+++ b/tsconfig.eslint.json
@@ -31,6 +31,7 @@
 		"isolatedModules": true,
 		"verbatimModuleSyntax": true,
 		"isolatedDeclarations": true,
+		"erasableSyntaxOnly": true,
 		"forceConsistentCasingInFileNames": true,
 
 		/* Type Checking */
diff --git a/tsconfig.json b/tsconfig.json
index 5cc25bc..f9bb6b3 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -32,6 +32,7 @@
 		"isolatedModules": true,
 		"verbatimModuleSyntax": true,
 		"isolatedDeclarations": true,
+		"erasableSyntaxOnly": true,
 		"forceConsistentCasingInFileNames": true,
 
 		/* Type Checking */
