From f0479fa5625f46d5fa4b5fd72908433261dee01d Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Mon, 17 Mar 2025 11:47:58 +0800
Subject: [PATCH 1/7] feat(grid): support copy to clipbpard and paste to
 ai-table #WIK-16631

---
 package-lock.json                             | 4589 ++++++-----------
 package.json                                  |    2 +-
 .../context-menu/context-menu.component.html  |   33 +-
 .../context-menu/context-menu.component.ts    |   19 +-
 packages/grid/src/grid.component.ts           |   24 +
 packages/grid/src/types/clipboard.ts          |    4 +
 packages/grid/src/types/index.ts              |    1 +
 packages/grid/src/types/row.ts                |    1 +
 packages/grid/src/utils/clipboard.ts          |  124 +
 packages/grid/src/utils/index.ts              |    1 +
 packages/state/src/action/general.ts          |    2 +-
 .../state/src/constants/context-menu-item.ts  |   42 +-
 .../common/content/content.component.ts       |   19 +
 13 files changed, 1806 insertions(+), 3055 deletions(-)
 create mode 100644 packages/grid/src/types/clipboard.ts
 create mode 100644 packages/grid/src/utils/clipboard.ts

diff --git a/package-lock.json b/package-lock.json
index a7795b72..08d57903 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
                 "@angular/platform-browser-dynamic": "^18.1.4",
                 "@angular/router": "^18.1.4",
                 "@tethys/cdk": "^18.2.1",
-                "@tethys/icons": "^1.4.69",
+                "@tethys/icons": "^1.4.77",
                 "bson-objectid": "^2.0.4",
                 "date-fns": "^3.6.0",
                 "grapheme-splitter": "^1.0.4",
@@ -229,350 +229,338 @@
                 }
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": {
+        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": {
             "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
-            "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+            "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
             "cpu": [
-                "ppc64"
+                "arm64"
             ],
             "dev": true,
             "license": "MIT",
             "optional": true,
             "os": [
-                "aix"
+                "darwin"
             ],
             "engines": {
                 "node": ">=12"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
-            "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
-            "cpu": [
-                "arm"
-            ],
+        "node_modules/@angular-devkit/build-angular/node_modules/@types/node": {
+            "version": "22.10.2",
+            "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.10.2.tgz",
+            "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
             "dev": true,
             "license": "MIT",
             "optional": true,
-            "os": [
-                "android"
-            ],
-            "engines": {
-                "node": ">=12"
+            "peer": true,
+            "dependencies": {
+                "undici-types": "~6.20.0"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
-            "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmmirror.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz",
+            "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
             "engines": {
-                "node": ">=12"
+                "node": ">=14.6.0"
+            },
+            "peerDependencies": {
+                "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
-            "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@angular-devkit/build-angular/node_modules/tslib": {
+            "version": "2.6.3",
+            "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
+            "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+            "dev": true,
+            "license": "0BSD"
+        },
+        "node_modules/@angular-devkit/build-angular/node_modules/vite": {
+            "version": "5.4.6",
+            "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.6.tgz",
+            "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
+            "dependencies": {
+                "esbuild": "^0.21.3",
+                "postcss": "^8.4.43",
+                "rollup": "^4.20.0"
+            },
+            "bin": {
+                "vite": "bin/vite.js"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.0.0 || >=20.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/vitejs/vite?sponsor=1"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.3"
+            },
+            "peerDependencies": {
+                "@types/node": "^18.0.0 || >=20.0.0",
+                "less": "*",
+                "lightningcss": "^1.21.0",
+                "sass": "*",
+                "sass-embedded": "*",
+                "stylus": "*",
+                "sugarss": "*",
+                "terser": "^5.4.0"
+            },
+            "peerDependenciesMeta": {
+                "@types/node": {
+                    "optional": true
+                },
+                "less": {
+                    "optional": true
+                },
+                "lightningcss": {
+                    "optional": true
+                },
+                "sass": {
+                    "optional": true
+                },
+                "sass-embedded": {
+                    "optional": true
+                },
+                "stylus": {
+                    "optional": true
+                },
+                "sugarss": {
+                    "optional": true
+                },
+                "terser": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": {
+        "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/esbuild": {
             "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
-            "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
-            "cpu": [
-                "arm64"
-            ],
+            "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz",
+            "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
             "dev": true,
+            "hasInstallScript": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
+            "bin": {
+                "esbuild": "bin/esbuild"
+            },
             "engines": {
                 "node": ">=12"
+            },
+            "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"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
-            "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/postcss": {
+            "version": "8.4.49",
+            "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz",
+            "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
+            "funding": [
+                {
+                    "type": "opencollective",
+                    "url": "https://opencollective.com/postcss/"
+                },
+                {
+                    "type": "tidelift",
+                    "url": "https://tidelift.com/funding/github/npm/postcss"
+                },
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/ai"
+                }
             ],
+            "license": "MIT",
+            "dependencies": {
+                "nanoid": "^3.3.7",
+                "picocolors": "^1.1.1",
+                "source-map-js": "^1.2.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^10 || ^12 || >=14"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
-            "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@angular-devkit/build-webpack": {
+            "version": "0.1802.12",
+            "resolved": "https://registry.npmmirror.com/@angular-devkit/build-webpack/-/build-webpack-0.1802.12.tgz",
+            "integrity": "sha512-0Z3fdbZVRnjYWE2/VYyfy+uieY+6YZyEp4ylzklVkc+fmLNsnz4Zw6cK1LzzcBqAwKIyh1IdW20Cg7o8b0sONA==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "freebsd"
-            ],
+            "dependencies": {
+                "@angular-devkit/architect": "0.1802.12",
+                "rxjs": "7.8.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+                "yarn": ">= 1.13.0"
+            },
+            "peerDependencies": {
+                "webpack": "^5.30.0",
+                "webpack-dev-server": "^5.0.2"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
-            "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@angular-devkit/core": {
+            "version": "18.2.12",
+            "resolved": "https://registry.npmmirror.com/@angular-devkit/core/-/core-18.2.12.tgz",
+            "integrity": "sha512-NtB6ypsaDyPE6/fqWOdfTmACs+yK5RqfH5tStEzWFeeDsIEDYKsJ06ypuRep7qTjYus5Rmttk0Ds+cFgz8JdUQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "freebsd"
-            ],
+            "dependencies": {
+                "ajv": "8.17.1",
+                "ajv-formats": "3.0.1",
+                "jsonc-parser": "3.3.1",
+                "picomatch": "4.0.2",
+                "rxjs": "7.8.1",
+                "source-map": "0.7.4"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+                "yarn": ">= 1.13.0"
+            },
+            "peerDependencies": {
+                "chokidar": "^3.5.2"
+            },
+            "peerDependenciesMeta": {
+                "chokidar": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
-            "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
-            "cpu": [
-                "arm"
-            ],
+        "node_modules/@angular-devkit/schematics": {
+            "version": "18.2.12",
+            "resolved": "https://registry.npmmirror.com/@angular-devkit/schematics/-/schematics-18.2.12.tgz",
+            "integrity": "sha512-mMea9txHbnCX5lXLHlo0RAgfhFHDio45/jMsREM2PA8UtVf2S8ltXz7ZwUrUyMQRv8vaSfn4ijDstF4hDMnRgQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@angular-devkit/core": "18.2.12",
+                "jsonc-parser": "3.3.1",
+                "magic-string": "0.30.11",
+                "ora": "5.4.1",
+                "rxjs": "7.8.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+                "yarn": ">= 1.13.0"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
-            "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
-            "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
-            "cpu": [
-                "ia32"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
-            "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
-            "cpu": [
-                "loong64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
-            "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
-            "cpu": [
-                "mips64el"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
-            "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
-            "cpu": [
-                "ppc64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
-            "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
-            "cpu": [
-                "riscv64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
-            "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
-            "cpu": [
-                "s390x"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
-            "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
-            "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "netbsd"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
-            "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
+        "node_modules/@angular/animations": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/animations/-/animations-18.2.13.tgz",
+            "integrity": "sha512-rG5J5Ek5Hg+Tz2NjkNOaG6PupiNK/lPfophXpsR1t/nWujqnMWX2krahD/i6kgD+jNWNKCJCYSOVvCx/BHOtKA==",
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "openbsd"
-            ],
+            "dependencies": {
+                "tslib": "^2.3.0"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "@angular/core": "18.2.13"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
-            "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@angular/build": {
+            "version": "18.2.12",
+            "resolved": "https://registry.npmmirror.com/@angular/build/-/build-18.2.12.tgz",
+            "integrity": "sha512-4Ohz+OSILoL+cCAQ4UTiCT5v6pctu3fXNoNpTEUK46OmxELk9jDITO5rNyNS7TxBn9wY69kjX5VcDf7MenquFQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "sunos"
-            ],
+            "dependencies": {
+                "@ampproject/remapping": "2.3.0",
+                "@angular-devkit/architect": "0.1802.12",
+                "@babel/core": "7.25.2",
+                "@babel/helper-annotate-as-pure": "7.24.7",
+                "@babel/helper-split-export-declaration": "7.24.7",
+                "@babel/plugin-syntax-import-attributes": "7.24.7",
+                "@inquirer/confirm": "3.1.22",
+                "@vitejs/plugin-basic-ssl": "1.1.0",
+                "browserslist": "^4.23.0",
+                "critters": "0.0.24",
+                "esbuild": "0.23.0",
+                "fast-glob": "3.3.2",
+                "https-proxy-agent": "7.0.5",
+                "listr2": "8.2.4",
+                "lmdb": "3.0.13",
+                "magic-string": "0.30.11",
+                "mrmime": "2.0.0",
+                "parse5-html-rewriting-stream": "7.0.0",
+                "picomatch": "4.0.2",
+                "piscina": "4.6.1",
+                "rollup": "4.22.4",
+                "sass": "1.77.6",
+                "semver": "7.6.3",
+                "vite": "5.4.6",
+                "watchpack": "2.4.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+                "yarn": ">= 1.13.0"
+            },
+            "peerDependencies": {
+                "@angular/compiler-cli": "^18.0.0",
+                "@angular/localize": "^18.0.0",
+                "@angular/platform-server": "^18.0.0",
+                "@angular/service-worker": "^18.0.0",
+                "less": "^4.2.0",
+                "postcss": "^8.4.0",
+                "tailwindcss": "^2.0.0 || ^3.0.0",
+                "typescript": ">=5.4 <5.6"
+            },
+            "peerDependenciesMeta": {
+                "@angular/localize": {
+                    "optional": true
+                },
+                "@angular/platform-server": {
+                    "optional": true
+                },
+                "@angular/service-worker": {
+                    "optional": true
+                },
+                "less": {
+                    "optional": true
+                },
+                "postcss": {
+                    "optional": true
+                },
+                "tailwindcss": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": {
+        "node_modules/@angular/build/node_modules/@esbuild/darwin-arm64": {
             "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
-            "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+            "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
             "cpu": [
                 "arm64"
             ],
@@ -580,47 +568,13 @@
             "license": "MIT",
             "optional": true,
             "os": [
-                "win32"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
-            "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
-            "cpu": [
-                "ia32"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-            "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
+                "darwin"
             ],
             "engines": {
                 "node": ">=12"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@types/node": {
+        "node_modules/@angular/build/node_modules/@types/node": {
             "version": "22.10.2",
             "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.10.2.tgz",
             "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
@@ -632,7 +586,7 @@
                 "undici-types": "~6.20.0"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": {
+        "node_modules/@angular/build/node_modules/@vitejs/plugin-basic-ssl": {
             "version": "1.1.0",
             "resolved": "https://registry.npmmirror.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz",
             "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==",
@@ -645,14 +599,7 @@
                 "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/tslib": {
-            "version": "2.6.3",
-            "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-            "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
-            "dev": true,
-            "license": "0BSD"
-        },
-        "node_modules/@angular-devkit/build-angular/node_modules/vite": {
+        "node_modules/@angular/build/node_modules/vite": {
             "version": "5.4.6",
             "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.6.tgz",
             "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==",
@@ -712,7 +659,7 @@
                 }
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/esbuild": {
+        "node_modules/@angular/build/node_modules/vite/node_modules/esbuild": {
             "version": "0.21.5",
             "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz",
             "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
@@ -751,7 +698,7 @@
                 "@esbuild/win32-x64": "0.21.5"
             }
         },
-        "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/postcss": {
+        "node_modules/@angular/build/node_modules/vite/node_modules/postcss": {
             "version": "8.4.49",
             "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz",
             "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
@@ -780,77 +727,77 @@
                 "node": "^10 || ^12 || >=14"
             }
         },
-        "node_modules/@angular-devkit/build-webpack": {
-            "version": "0.1802.12",
-            "resolved": "https://registry.npmmirror.com/@angular-devkit/build-webpack/-/build-webpack-0.1802.12.tgz",
-            "integrity": "sha512-0Z3fdbZVRnjYWE2/VYyfy+uieY+6YZyEp4ylzklVkc+fmLNsnz4Zw6cK1LzzcBqAwKIyh1IdW20Cg7o8b0sONA==",
-            "dev": true,
+        "node_modules/@angular/cdk": {
+            "version": "18.2.14",
+            "resolved": "https://registry.npmmirror.com/@angular/cdk/-/cdk-18.2.14.tgz",
+            "integrity": "sha512-vDyOh1lwjfVk9OqoroZAP8pf3xxKUvyl+TVR8nJxL4c5fOfUFkD7l94HaanqKSRwJcI2xiztuu92IVoHn8T33Q==",
             "license": "MIT",
             "dependencies": {
-                "@angular-devkit/architect": "0.1802.12",
-                "rxjs": "7.8.1"
+                "tslib": "^2.3.0"
             },
-            "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
-                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
-                "yarn": ">= 1.13.0"
+            "optionalDependencies": {
+                "parse5": "^7.1.2"
             },
             "peerDependencies": {
-                "webpack": "^5.30.0",
-                "webpack-dev-server": "^5.0.2"
+                "@angular/common": "^18.0.0 || ^19.0.0",
+                "@angular/core": "^18.0.0 || ^19.0.0",
+                "rxjs": "^6.5.3 || ^7.4.0"
             }
         },
-        "node_modules/@angular-devkit/core": {
+        "node_modules/@angular/cli": {
             "version": "18.2.12",
-            "resolved": "https://registry.npmmirror.com/@angular-devkit/core/-/core-18.2.12.tgz",
-            "integrity": "sha512-NtB6ypsaDyPE6/fqWOdfTmACs+yK5RqfH5tStEzWFeeDsIEDYKsJ06ypuRep7qTjYus5Rmttk0Ds+cFgz8JdUQ==",
+            "resolved": "https://registry.npmmirror.com/@angular/cli/-/cli-18.2.12.tgz",
+            "integrity": "sha512-xhuZ/b7IhqNw1MgXf+arWf4x+GfUSt/IwbdWU4+CO8A7h0Y46zQywouP/KUK3cMQZfVdHdciTBvlpF3vFacA6Q==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "ajv": "8.17.1",
-                "ajv-formats": "3.0.1",
+                "@angular-devkit/architect": "0.1802.12",
+                "@angular-devkit/core": "18.2.12",
+                "@angular-devkit/schematics": "18.2.12",
+                "@inquirer/prompts": "5.3.8",
+                "@listr2/prompt-adapter-inquirer": "2.0.15",
+                "@schematics/angular": "18.2.12",
+                "@yarnpkg/lockfile": "1.1.0",
+                "ini": "4.1.3",
                 "jsonc-parser": "3.3.1",
-                "picomatch": "4.0.2",
-                "rxjs": "7.8.1",
-                "source-map": "0.7.4"
+                "listr2": "8.2.4",
+                "npm-package-arg": "11.0.3",
+                "npm-pick-manifest": "9.1.0",
+                "pacote": "18.0.6",
+                "resolve": "1.22.8",
+                "semver": "7.6.3",
+                "symbol-observable": "4.0.0",
+                "yargs": "17.7.2"
+            },
+            "bin": {
+                "ng": "bin/ng.js"
             },
             "engines": {
                 "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
                 "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
                 "yarn": ">= 1.13.0"
-            },
-            "peerDependencies": {
-                "chokidar": "^3.5.2"
-            },
-            "peerDependenciesMeta": {
-                "chokidar": {
-                    "optional": true
-                }
             }
         },
-        "node_modules/@angular-devkit/schematics": {
-            "version": "18.2.12",
-            "resolved": "https://registry.npmmirror.com/@angular-devkit/schematics/-/schematics-18.2.12.tgz",
-            "integrity": "sha512-mMea9txHbnCX5lXLHlo0RAgfhFHDio45/jMsREM2PA8UtVf2S8ltXz7ZwUrUyMQRv8vaSfn4ijDstF4hDMnRgQ==",
-            "dev": true,
+        "node_modules/@angular/common": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/common/-/common-18.2.13.tgz",
+            "integrity": "sha512-4ZqrNp1PoZo7VNvW+sbSc2CB2axP1sCH2wXl8B0wdjsj8JY1hF1OhuugwhpAHtGxqewed2kCXayE+ZJqSTV4jw==",
             "license": "MIT",
             "dependencies": {
-                "@angular-devkit/core": "18.2.12",
-                "jsonc-parser": "3.3.1",
-                "magic-string": "0.30.11",
-                "ora": "5.4.1",
-                "rxjs": "7.8.1"
+                "tslib": "^2.3.0"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
-                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
-                "yarn": ">= 1.13.0"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "@angular/core": "18.2.13",
+                "rxjs": "^6.5.3 || ^7.4.0"
             }
         },
-        "node_modules/@angular/animations": {
+        "node_modules/@angular/compiler": {
             "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/animations/-/animations-18.2.13.tgz",
-            "integrity": "sha512-rG5J5Ek5Hg+Tz2NjkNOaG6PupiNK/lPfophXpsR1t/nWujqnMWX2krahD/i6kgD+jNWNKCJCYSOVvCx/BHOtKA==",
+            "resolved": "https://registry.npmmirror.com/@angular/compiler/-/compiler-18.2.13.tgz",
+            "integrity": "sha512-TzWcrkopyjFF+WeDr2cRe8CcHjU72KfYV3Sm2TkBkcXrkYX5sDjGWrBGrG3hRB4e4okqchrOCvm1MiTdy2vKMA==",
             "license": "MIT",
             "dependencies": {
                 "tslib": "^2.3.0"
@@ -860,1359 +807,1167 @@
             },
             "peerDependencies": {
                 "@angular/core": "18.2.13"
+            },
+            "peerDependenciesMeta": {
+                "@angular/core": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@angular/build": {
-            "version": "18.2.12",
-            "resolved": "https://registry.npmmirror.com/@angular/build/-/build-18.2.12.tgz",
-            "integrity": "sha512-4Ohz+OSILoL+cCAQ4UTiCT5v6pctu3fXNoNpTEUK46OmxELk9jDITO5rNyNS7TxBn9wY69kjX5VcDf7MenquFQ==",
+        "node_modules/@angular/compiler-cli": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/compiler-cli/-/compiler-cli-18.2.13.tgz",
+            "integrity": "sha512-DBSh4AQwkiJDSiVvJATRmjxf6wyUs9pwQLgaFdSlfuTRO+sdb0J2z1r3BYm8t0IqdoyXzdZq2YCH43EmyvD71g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@ampproject/remapping": "2.3.0",
-                "@angular-devkit/architect": "0.1802.12",
                 "@babel/core": "7.25.2",
-                "@babel/helper-annotate-as-pure": "7.24.7",
-                "@babel/helper-split-export-declaration": "7.24.7",
-                "@babel/plugin-syntax-import-attributes": "7.24.7",
-                "@inquirer/confirm": "3.1.22",
-                "@vitejs/plugin-basic-ssl": "1.1.0",
-                "browserslist": "^4.23.0",
-                "critters": "0.0.24",
-                "esbuild": "0.23.0",
-                "fast-glob": "3.3.2",
-                "https-proxy-agent": "7.0.5",
-                "listr2": "8.2.4",
-                "lmdb": "3.0.13",
-                "magic-string": "0.30.11",
-                "mrmime": "2.0.0",
-                "parse5-html-rewriting-stream": "7.0.0",
-                "picomatch": "4.0.2",
-                "piscina": "4.6.1",
-                "rollup": "4.22.4",
-                "sass": "1.77.6",
-                "semver": "7.6.3",
-                "vite": "5.4.6",
-                "watchpack": "2.4.1"
+                "@jridgewell/sourcemap-codec": "^1.4.14",
+                "chokidar": "^4.0.0",
+                "convert-source-map": "^1.5.1",
+                "reflect-metadata": "^0.2.0",
+                "semver": "^7.0.0",
+                "tslib": "^2.3.0",
+                "yargs": "^17.2.1"
+            },
+            "bin": {
+                "ng-xi18n": "bundles/src/bin/ng_xi18n.js",
+                "ngc": "bundles/src/bin/ngc.js",
+                "ngcc": "bundles/ngcc/index.js"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
-                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
-                "yarn": ">= 1.13.0"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
             },
             "peerDependencies": {
-                "@angular/compiler-cli": "^18.0.0",
-                "@angular/localize": "^18.0.0",
-                "@angular/platform-server": "^18.0.0",
-                "@angular/service-worker": "^18.0.0",
-                "less": "^4.2.0",
-                "postcss": "^8.4.0",
-                "tailwindcss": "^2.0.0 || ^3.0.0",
+                "@angular/compiler": "18.2.13",
                 "typescript": ">=5.4 <5.6"
-            },
-            "peerDependenciesMeta": {
-                "@angular/localize": {
-                    "optional": true
-                },
-                "@angular/platform-server": {
-                    "optional": true
-                },
-                "@angular/service-worker": {
-                    "optional": true
-                },
-                "less": {
-                    "optional": true
-                },
-                "postcss": {
-                    "optional": true
-                },
-                "tailwindcss": {
-                    "optional": true
-                }
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/aix-ppc64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
-            "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
-            "cpu": [
-                "ppc64"
-            ],
+        "node_modules/@angular/compiler-cli/node_modules/chokidar": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
+            "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "aix"
-            ],
+            "dependencies": {
+                "readdirp": "^4.0.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">= 14.16.0"
+            },
+            "funding": {
+                "url": "https://paulmillr.com/funding/"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/android-arm": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
-            "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
-            "cpu": [
-                "arm"
-            ],
+        "node_modules/@angular/compiler-cli/node_modules/readdirp": {
+            "version": "4.0.2",
+            "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz",
+            "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
             "engines": {
-                "node": ">=12"
+                "node": ">= 14.16.0"
+            },
+            "funding": {
+                "type": "individual",
+                "url": "https://paulmillr.com/funding/"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/android-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
-            "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
+        "node_modules/@angular/core": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/core/-/core-18.2.13.tgz",
+            "integrity": "sha512-8mbWHMgO95OuFV1Ejy4oKmbe9NOJ3WazQf/f7wks8Bck7pcihd0IKhlPBNjFllbF5o+04EYSwFhEtvEgjMDClA==",
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
+            "dependencies": {
+                "tslib": "^2.3.0"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "rxjs": "^6.5.3 || ^7.4.0",
+                "zone.js": "~0.14.10"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/android-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
-            "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
+        "node_modules/@angular/forms": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/forms/-/forms-18.2.13.tgz",
+            "integrity": "sha512-A67D867fu3DSBhdLWWZl/F5pr7v2+dRM2u3U7ZJ0ewh4a+sv+0yqWdJW+a8xIoiHxS+btGEJL2qAKJiH+MCFfg==",
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
+            "dependencies": {
+                "tslib": "^2.3.0"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "@angular/common": "18.2.13",
+                "@angular/core": "18.2.13",
+                "@angular/platform-browser": "18.2.13",
+                "rxjs": "^6.5.3 || ^7.4.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/darwin-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
-            "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
+        "node_modules/@angular/platform-browser": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/platform-browser/-/platform-browser-18.2.13.tgz",
+            "integrity": "sha512-tu7ZzY6qD3ATdWFzcTcsAKe7M6cJeWbT/4/bF9unyGO3XBPcNYDKoiz10+7ap2PUd0fmPwvuvTvSNJiFEBnB8Q==",
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
+            "dependencies": {
+                "tslib": "^2.3.0"
+            },
             "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@angular/build/node_modules/@esbuild/darwin-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
-            "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
-            "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "@angular/animations": "18.2.13",
+                "@angular/common": "18.2.13",
+                "@angular/core": "18.2.13"
+            },
+            "peerDependenciesMeta": {
+                "@angular/animations": {
+                    "optional": true
+                }
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
-            "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
+        "node_modules/@angular/platform-browser-dynamic": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.13.tgz",
+            "integrity": "sha512-kbQCf9+8EpuJC7buBxhSiwBtXvjAwAKh6MznD6zd2pyCYqfY6gfRCZQRtK59IfgVtKmEONWI9grEyNIRoTmqJg==",
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "freebsd"
-            ],
+            "dependencies": {
+                "tslib": "^2.3.0"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "@angular/common": "18.2.13",
+                "@angular/compiler": "18.2.13",
+                "@angular/core": "18.2.13",
+                "@angular/platform-browser": "18.2.13"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/freebsd-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
-            "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
+        "node_modules/@angular/router": {
+            "version": "18.2.13",
+            "resolved": "https://registry.npmmirror.com/@angular/router/-/router-18.2.13.tgz",
+            "integrity": "sha512-VKmfgi/r/CkyBq9nChQ/ptmfu0JT/8ONnLVJ5H+SkFLRYJcIRyHLKjRihMCyVm6xM5yktOdCaW73NTQrFz7+bg==",
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "freebsd"
-            ],
+            "dependencies": {
+                "tslib": "^2.3.0"
+            },
             "engines": {
-                "node": ">=12"
+                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            },
+            "peerDependencies": {
+                "@angular/common": "18.2.13",
+                "@angular/core": "18.2.13",
+                "@angular/platform-browser": "18.2.13",
+                "rxjs": "^6.5.3 || ^7.4.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-arm": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
-            "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
-            "cpu": [
-                "arm"
-            ],
+        "node_modules/@asamuzakjp/dom-selector": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmmirror.com/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz",
+            "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
+            "dependencies": {
+                "bidi-js": "^1.0.3",
+                "css-tree": "^2.3.1",
+                "is-potential-custom-element-name": "^1.0.1"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
-            "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@babel/code-frame": {
+            "version": "7.26.2",
+            "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz",
+            "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/helper-validator-identifier": "^7.25.9",
+                "js-tokens": "^4.0.0",
+                "picocolors": "^1.0.0"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-ia32": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
-            "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
-            "cpu": [
-                "ia32"
-            ],
+        "node_modules/@babel/compat-data": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.3.tgz",
+            "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-loong64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
-            "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
-            "cpu": [
-                "loong64"
-            ],
+        "node_modules/@babel/core": {
+            "version": "7.25.2",
+            "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.25.2.tgz",
+            "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@ampproject/remapping": "^2.2.0",
+                "@babel/code-frame": "^7.24.7",
+                "@babel/generator": "^7.25.0",
+                "@babel/helper-compilation-targets": "^7.25.2",
+                "@babel/helper-module-transforms": "^7.25.2",
+                "@babel/helpers": "^7.25.0",
+                "@babel/parser": "^7.25.0",
+                "@babel/template": "^7.25.0",
+                "@babel/traverse": "^7.25.2",
+                "@babel/types": "^7.25.2",
+                "convert-source-map": "^2.0.0",
+                "debug": "^4.1.0",
+                "gensync": "^1.0.0-beta.2",
+                "json5": "^2.2.3",
+                "semver": "^6.3.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
+            },
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/babel"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-mips64el": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
-            "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
-            "cpu": [
-                "mips64el"
-            ],
+        "node_modules/@babel/core/node_modules/convert-source-map": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
+            "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
-            }
+            "license": "MIT"
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-ppc64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
-            "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
-            "cpu": [
-                "ppc64"
-            ],
+        "node_modules/@babel/core/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=12"
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-riscv64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
-            "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
-            "cpu": [
-                "riscv64"
-            ],
+        "node_modules/@babel/generator": {
+            "version": "7.25.0",
+            "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.25.0.tgz",
+            "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/types": "^7.25.0",
+                "@jridgewell/gen-mapping": "^0.3.5",
+                "@jridgewell/trace-mapping": "^0.3.25",
+                "jsesc": "^2.5.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-s390x": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
-            "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
-            "cpu": [
-                "s390x"
-            ],
+        "node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.24.7",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
+            "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/types": "^7.24.7"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/linux-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
-            "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@babel/helper-compilation-targets": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+            "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/compat-data": "^7.25.9",
+                "@babel/helper-validator-option": "^7.25.9",
+                "browserslist": "^4.24.0",
+                "lru-cache": "^5.1.1",
+                "semver": "^6.3.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/netbsd-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
-            "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+            "version": "5.1.1",
+            "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+            "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "netbsd"
-            ],
-            "engines": {
-                "node": ">=12"
+            "license": "ISC",
+            "dependencies": {
+                "yallist": "^3.0.2"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/openbsd-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
-            "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "openbsd"
-            ],
-            "engines": {
-                "node": ">=12"
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/sunos-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
-            "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+            "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+            "dev": true,
+            "license": "ISC"
+        },
+        "node_modules/@babel/helper-create-class-features-plugin": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+            "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "sunos"
-            ],
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.25.9",
+                "@babel/helper-member-expression-to-functions": "^7.25.9",
+                "@babel/helper-optimise-call-expression": "^7.25.9",
+                "@babel/helper-replace-supers": "^7.25.9",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+                "@babel/traverse": "^7.25.9",
+                "semver": "^6.3.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/win32-arm64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
-            "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ],
+            "dependencies": {
+                "@babel/types": "^7.25.9"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/win32-ia32": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
-            "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
-            "cpu": [
-                "ia32"
-            ],
+        "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
             "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ],
-            "engines": {
-                "node": ">=12"
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "node_modules/@angular/build/node_modules/@esbuild/win32-x64": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-            "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@babel/helper-create-regexp-features-plugin": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
+            "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ],
+            "dependencies": {
+                "@babel/helper-annotate-as-pure": "^7.25.9",
+                "regexpu-core": "^6.2.0",
+                "semver": "^6.3.1"
+            },
             "engines": {
-                "node": ">=12"
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@types/node": {
-            "version": "22.10.2",
-            "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.10.2.tgz",
-            "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
+        "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "peer": true,
             "dependencies": {
-                "undici-types": "~6.20.0"
+                "@babel/types": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/@vitejs/plugin-basic-ssl": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmmirror.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz",
-            "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==",
+        "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
             "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=14.6.0"
-            },
-            "peerDependencies": {
-                "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "node_modules/@angular/build/node_modules/vite": {
-            "version": "5.4.6",
-            "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.6.tgz",
-            "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==",
+        "node_modules/@babel/helper-define-polyfill-provider": {
+            "version": "0.6.3",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
+            "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "esbuild": "^0.21.3",
-                "postcss": "^8.4.43",
-                "rollup": "^4.20.0"
-            },
-            "bin": {
-                "vite": "bin/vite.js"
-            },
-            "engines": {
-                "node": "^18.0.0 || >=20.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/vitejs/vite?sponsor=1"
-            },
-            "optionalDependencies": {
-                "fsevents": "~2.3.3"
+                "@babel/helper-compilation-targets": "^7.22.6",
+                "@babel/helper-plugin-utils": "^7.22.5",
+                "debug": "^4.1.1",
+                "lodash.debounce": "^4.0.8",
+                "resolve": "^1.14.2"
             },
             "peerDependencies": {
-                "@types/node": "^18.0.0 || >=20.0.0",
-                "less": "*",
-                "lightningcss": "^1.21.0",
-                "sass": "*",
-                "sass-embedded": "*",
-                "stylus": "*",
-                "sugarss": "*",
-                "terser": "^5.4.0"
-            },
-            "peerDependenciesMeta": {
-                "@types/node": {
-                    "optional": true
-                },
-                "less": {
-                    "optional": true
-                },
-                "lightningcss": {
-                    "optional": true
-                },
-                "sass": {
-                    "optional": true
-                },
-                "sass-embedded": {
-                    "optional": true
-                },
-                "stylus": {
-                    "optional": true
-                },
-                "sugarss": {
-                    "optional": true
-                },
-                "terser": {
-                    "optional": true
-                }
+                "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
             }
         },
-        "node_modules/@angular/build/node_modules/vite/node_modules/esbuild": {
-            "version": "0.21.5",
-            "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz",
-            "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+        "node_modules/@babel/helper-member-expression-to-functions": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+            "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
             "dev": true,
-            "hasInstallScript": true,
             "license": "MIT",
-            "bin": {
-                "esbuild": "bin/esbuild"
+            "dependencies": {
+                "@babel/traverse": "^7.25.9",
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": ">=12"
-            },
-            "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"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/build/node_modules/vite/node_modules/postcss": {
-            "version": "8.4.49",
-            "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz",
-            "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+        "node_modules/@babel/helper-module-imports": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+            "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
             "dev": true,
-            "funding": [
-                {
-                    "type": "opencollective",
-                    "url": "https://opencollective.com/postcss/"
-                },
-                {
-                    "type": "tidelift",
-                    "url": "https://tidelift.com/funding/github/npm/postcss"
-                },
-                {
-                    "type": "github",
-                    "url": "https://github.com/sponsors/ai"
-                }
-            ],
             "license": "MIT",
             "dependencies": {
-                "nanoid": "^3.3.7",
-                "picocolors": "^1.1.1",
-                "source-map-js": "^1.2.1"
+                "@babel/traverse": "^7.25.9",
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": "^10 || ^12 || >=14"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/cdk": {
-            "version": "18.2.14",
-            "resolved": "https://registry.npmmirror.com/@angular/cdk/-/cdk-18.2.14.tgz",
-            "integrity": "sha512-vDyOh1lwjfVk9OqoroZAP8pf3xxKUvyl+TVR8nJxL4c5fOfUFkD7l94HaanqKSRwJcI2xiztuu92IVoHn8T33Q==",
+        "node_modules/@babel/helper-module-transforms": {
+            "version": "7.26.0",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+            "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+            "dev": true,
             "license": "MIT",
             "dependencies": {
-                "tslib": "^2.3.0"
+                "@babel/helper-module-imports": "^7.25.9",
+                "@babel/helper-validator-identifier": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
             },
-            "optionalDependencies": {
-                "parse5": "^7.1.2"
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@angular/common": "^18.0.0 || ^19.0.0",
-                "@angular/core": "^18.0.0 || ^19.0.0",
-                "rxjs": "^6.5.3 || ^7.4.0"
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@angular/cli": {
-            "version": "18.2.12",
-            "resolved": "https://registry.npmmirror.com/@angular/cli/-/cli-18.2.12.tgz",
-            "integrity": "sha512-xhuZ/b7IhqNw1MgXf+arWf4x+GfUSt/IwbdWU4+CO8A7h0Y46zQywouP/KUK3cMQZfVdHdciTBvlpF3vFacA6Q==",
+        "node_modules/@babel/helper-optimise-call-expression": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+            "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@angular-devkit/architect": "0.1802.12",
-                "@angular-devkit/core": "18.2.12",
-                "@angular-devkit/schematics": "18.2.12",
-                "@inquirer/prompts": "5.3.8",
-                "@listr2/prompt-adapter-inquirer": "2.0.15",
-                "@schematics/angular": "18.2.12",
-                "@yarnpkg/lockfile": "1.1.0",
-                "ini": "4.1.3",
-                "jsonc-parser": "3.3.1",
-                "listr2": "8.2.4",
-                "npm-package-arg": "11.0.3",
-                "npm-pick-manifest": "9.1.0",
-                "pacote": "18.0.6",
-                "resolve": "1.22.8",
-                "semver": "7.6.3",
-                "symbol-observable": "4.0.0",
-                "yargs": "17.7.2"
-            },
-            "bin": {
-                "ng": "bin/ng.js"
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
-                "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
-                "yarn": ">= 1.13.0"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/common": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/common/-/common-18.2.13.tgz",
-            "integrity": "sha512-4ZqrNp1PoZo7VNvW+sbSc2CB2axP1sCH2wXl8B0wdjsj8JY1hF1OhuugwhpAHtGxqewed2kCXayE+ZJqSTV4jw==",
+        "node_modules/@babel/helper-plugin-utils": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+            "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+            "dev": true,
+            "license": "MIT",
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-remap-async-to-generator": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
+            "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+            "dev": true,
             "license": "MIT",
             "dependencies": {
-                "tslib": "^2.3.0"
+                "@babel/helper-annotate-as-pure": "^7.25.9",
+                "@babel/helper-wrap-function": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@angular/core": "18.2.13",
-                "rxjs": "^6.5.3 || ^7.4.0"
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@angular/compiler": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/compiler/-/compiler-18.2.13.tgz",
-            "integrity": "sha512-TzWcrkopyjFF+WeDr2cRe8CcHjU72KfYV3Sm2TkBkcXrkYX5sDjGWrBGrG3hRB4e4okqchrOCvm1MiTdy2vKMA==",
+        "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+            "dev": true,
             "license": "MIT",
             "dependencies": {
-                "tslib": "^2.3.0"
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
-            },
-            "peerDependencies": {
-                "@angular/core": "18.2.13"
-            },
-            "peerDependenciesMeta": {
-                "@angular/core": {
-                    "optional": true
-                }
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/compiler-cli": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/compiler-cli/-/compiler-cli-18.2.13.tgz",
-            "integrity": "sha512-DBSh4AQwkiJDSiVvJATRmjxf6wyUs9pwQLgaFdSlfuTRO+sdb0J2z1r3BYm8t0IqdoyXzdZq2YCH43EmyvD71g==",
+        "node_modules/@babel/helper-replace-supers": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
+            "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/core": "7.25.2",
-                "@jridgewell/sourcemap-codec": "^1.4.14",
-                "chokidar": "^4.0.0",
-                "convert-source-map": "^1.5.1",
-                "reflect-metadata": "^0.2.0",
-                "semver": "^7.0.0",
-                "tslib": "^2.3.0",
-                "yargs": "^17.2.1"
-            },
-            "bin": {
-                "ng-xi18n": "bundles/src/bin/ng_xi18n.js",
-                "ngc": "bundles/src/bin/ngc.js",
-                "ngcc": "bundles/ngcc/index.js"
+                "@babel/helper-member-expression-to-functions": "^7.25.9",
+                "@babel/helper-optimise-call-expression": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@angular/compiler": "18.2.13",
-                "typescript": ">=5.4 <5.6"
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@angular/compiler-cli/node_modules/chokidar": {
-            "version": "4.0.3",
-            "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
-            "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+        "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+            "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
             "dev": true,
+            "license": "MIT",
             "dependencies": {
-                "readdirp": "^4.0.1"
+                "@babel/traverse": "^7.25.9",
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": ">= 14.16.0"
+                "node": ">=6.9.0"
+            }
+        },
+        "node_modules/@babel/helper-split-export-declaration": {
+            "version": "7.24.7",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+            "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "@babel/types": "^7.24.7"
             },
-            "funding": {
-                "url": "https://paulmillr.com/funding/"
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/compiler-cli/node_modules/readdirp": {
-            "version": "4.0.2",
-            "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz",
-            "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+        "node_modules/@babel/helper-string-parser": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+            "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
             "dev": true,
+            "license": "MIT",
             "engines": {
-                "node": ">= 14.16.0"
-            },
-            "funding": {
-                "type": "individual",
-                "url": "https://paulmillr.com/funding/"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/core": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/core/-/core-18.2.13.tgz",
-            "integrity": "sha512-8mbWHMgO95OuFV1Ejy4oKmbe9NOJ3WazQf/f7wks8Bck7pcihd0IKhlPBNjFllbF5o+04EYSwFhEtvEgjMDClA==",
+        "node_modules/@babel/helper-validator-identifier": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+            "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+            "dev": true,
             "license": "MIT",
-            "dependencies": {
-                "tslib": "^2.3.0"
-            },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
-            },
-            "peerDependencies": {
-                "rxjs": "^6.5.3 || ^7.4.0",
-                "zone.js": "~0.14.10"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/forms": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/forms/-/forms-18.2.13.tgz",
-            "integrity": "sha512-A67D867fu3DSBhdLWWZl/F5pr7v2+dRM2u3U7ZJ0ewh4a+sv+0yqWdJW+a8xIoiHxS+btGEJL2qAKJiH+MCFfg==",
+        "node_modules/@babel/helper-validator-option": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+            "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+            "dev": true,
             "license": "MIT",
-            "dependencies": {
-                "tslib": "^2.3.0"
-            },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
-            },
-            "peerDependencies": {
-                "@angular/common": "18.2.13",
-                "@angular/core": "18.2.13",
-                "@angular/platform-browser": "18.2.13",
-                "rxjs": "^6.5.3 || ^7.4.0"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/platform-browser": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/platform-browser/-/platform-browser-18.2.13.tgz",
-            "integrity": "sha512-tu7ZzY6qD3ATdWFzcTcsAKe7M6cJeWbT/4/bF9unyGO3XBPcNYDKoiz10+7ap2PUd0fmPwvuvTvSNJiFEBnB8Q==",
+        "node_modules/@babel/helper-wrap-function": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
+            "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+            "dev": true,
             "license": "MIT",
             "dependencies": {
-                "tslib": "^2.3.0"
+                "@babel/template": "^7.25.9",
+                "@babel/traverse": "^7.25.9",
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
-            },
-            "peerDependencies": {
-                "@angular/animations": "18.2.13",
-                "@angular/common": "18.2.13",
-                "@angular/core": "18.2.13"
-            },
-            "peerDependenciesMeta": {
-                "@angular/animations": {
-                    "optional": true
-                }
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/platform-browser-dynamic": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.13.tgz",
-            "integrity": "sha512-kbQCf9+8EpuJC7buBxhSiwBtXvjAwAKh6MznD6zd2pyCYqfY6gfRCZQRtK59IfgVtKmEONWI9grEyNIRoTmqJg==",
+        "node_modules/@babel/helpers": {
+            "version": "7.26.0",
+            "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz",
+            "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+            "dev": true,
             "license": "MIT",
             "dependencies": {
-                "tslib": "^2.3.0"
+                "@babel/template": "^7.25.9",
+                "@babel/types": "^7.26.0"
             },
             "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
-            },
-            "peerDependencies": {
-                "@angular/common": "18.2.13",
-                "@angular/compiler": "18.2.13",
-                "@angular/core": "18.2.13",
-                "@angular/platform-browser": "18.2.13"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@angular/router": {
-            "version": "18.2.13",
-            "resolved": "https://registry.npmmirror.com/@angular/router/-/router-18.2.13.tgz",
-            "integrity": "sha512-VKmfgi/r/CkyBq9nChQ/ptmfu0JT/8ONnLVJ5H+SkFLRYJcIRyHLKjRihMCyVm6xM5yktOdCaW73NTQrFz7+bg==",
+        "node_modules/@babel/parser": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.3.tgz",
+            "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+            "dev": true,
             "license": "MIT",
             "dependencies": {
-                "tslib": "^2.3.0"
+                "@babel/types": "^7.26.3"
             },
-            "engines": {
-                "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
+            "bin": {
+                "parser": "bin/babel-parser.js"
             },
-            "peerDependencies": {
-                "@angular/common": "18.2.13",
-                "@angular/core": "18.2.13",
-                "@angular/platform-browser": "18.2.13",
-                "rxjs": "^6.5.3 || ^7.4.0"
+            "engines": {
+                "node": ">=6.0.0"
             }
         },
-        "node_modules/@asamuzakjp/dom-selector": {
-            "version": "2.0.2",
-            "resolved": "https://registry.npmmirror.com/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz",
-            "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==",
+        "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
+            "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "bidi-js": "^1.0.3",
-                "css-tree": "^2.3.1",
-                "is-potential-custom-element-name": "^1.0.1"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/code-frame": {
-            "version": "7.26.2",
-            "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz",
-            "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+        "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
+            "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-validator-identifier": "^7.25.9",
-                "js-tokens": "^4.0.0",
-                "picocolors": "^1.0.0"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/compat-data": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.3.tgz",
-            "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
+        "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
+            "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
             "dev": true,
             "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/core": {
-            "version": "7.25.2",
-            "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.25.2.tgz",
-            "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
+        "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
+            "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@ampproject/remapping": "^2.2.0",
-                "@babel/code-frame": "^7.24.7",
-                "@babel/generator": "^7.25.0",
-                "@babel/helper-compilation-targets": "^7.25.2",
-                "@babel/helper-module-transforms": "^7.25.2",
-                "@babel/helpers": "^7.25.0",
-                "@babel/parser": "^7.25.0",
-                "@babel/template": "^7.25.0",
-                "@babel/traverse": "^7.25.2",
-                "@babel/types": "^7.25.2",
-                "convert-source-map": "^2.0.0",
-                "debug": "^4.1.0",
-                "gensync": "^1.0.0-beta.2",
-                "json5": "^2.2.3",
-                "semver": "^6.3.1"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+                "@babel/plugin-transform-optional-chaining": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
-            "funding": {
-                "type": "opencollective",
-                "url": "https://opencollective.com/babel"
+            "peerDependencies": {
+                "@babel/core": "^7.13.0"
             }
         },
-        "node_modules/@babel/core/node_modules/convert-source-map": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
-            "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+        "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
+            "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
             "dev": true,
-            "license": "MIT"
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
+            }
         },
-        "node_modules/@babel/core/node_modules/semver": {
-            "version": "6.3.1",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
-            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+        "node_modules/@babel/plugin-proposal-private-property-in-object": {
+            "version": "7.21.0-placeholder-for-preset-env.2",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+            "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
             "dev": true,
-            "license": "ISC",
-            "bin": {
-                "semver": "bin/semver.js"
+            "license": "MIT",
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/generator": {
-            "version": "7.25.0",
-            "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.25.0.tgz",
-            "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
+        "node_modules/@babel/plugin-syntax-async-generators": {
+            "version": "7.8.4",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+            "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.25.0",
-                "@jridgewell/gen-mapping": "^0.3.5",
-                "@jridgewell/trace-mapping": "^0.3.25",
-                "jsesc": "^2.5.1"
+                "@babel/helper-plugin-utils": "^7.8.0"
             },
-            "engines": {
-                "node": ">=6.9.0"
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-annotate-as-pure": {
-            "version": "7.24.7",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
-            "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
+        "node_modules/@babel/plugin-syntax-class-properties": {
+            "version": "7.12.13",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+            "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.24.7"
+                "@babel/helper-plugin-utils": "^7.12.13"
             },
-            "engines": {
-                "node": ">=6.9.0"
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-compilation-targets": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
-            "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+        "node_modules/@babel/plugin-syntax-class-static-block": {
+            "version": "7.14.5",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+            "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/compat-data": "^7.25.9",
-                "@babel/helper-validator-option": "^7.25.9",
-                "browserslist": "^4.24.0",
-                "lru-cache": "^5.1.1",
-                "semver": "^6.3.1"
+                "@babel/helper-plugin-utils": "^7.14.5"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
-            "version": "5.1.1",
-            "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
-            "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+        "node_modules/@babel/plugin-syntax-dynamic-import": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+            "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
             "dev": true,
-            "license": "ISC",
+            "license": "MIT",
             "dependencies": {
-                "yallist": "^3.0.2"
+                "@babel/helper-plugin-utils": "^7.8.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
-            "version": "6.3.1",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
-            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+        "node_modules/@babel/plugin-syntax-export-namespace-from": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+            "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
             "dev": true,
-            "license": "ISC",
-            "bin": {
-                "semver": "bin/semver.js"
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.8.3"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
-            "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-            "dev": true,
-            "license": "ISC"
-        },
-        "node_modules/@babel/helper-create-class-features-plugin": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
-            "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+        "node_modules/@babel/plugin-syntax-import-assertions": {
+            "version": "7.26.0",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
+            "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-annotate-as-pure": "^7.25.9",
-                "@babel/helper-member-expression-to-functions": "^7.25.9",
-                "@babel/helper-optimise-call-expression": "^7.25.9",
-                "@babel/helper-replace-supers": "^7.25.9",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-                "@babel/traverse": "^7.25.9",
-                "semver": "^6.3.1"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
-            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+        "node_modules/@babel/plugin-syntax-import-attributes": {
+            "version": "7.24.7",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
+            "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.24.7"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
-            "version": "6.3.1",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
-            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-            "dev": true,
-            "license": "ISC",
-            "bin": {
-                "semver": "bin/semver.js"
-            }
-        },
-        "node_modules/@babel/helper-create-regexp-features-plugin": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
-            "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
+        "node_modules/@babel/plugin-syntax-import-meta": {
+            "version": "7.10.4",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+            "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-annotate-as-pure": "^7.25.9",
-                "regexpu-core": "^6.2.0",
-                "semver": "^6.3.1"
-            },
-            "engines": {
-                "node": ">=6.9.0"
+                "@babel/helper-plugin-utils": "^7.10.4"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
-            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+        "node_modules/@babel/plugin-syntax-json-strings": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+            "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.8.0"
             },
-            "engines": {
-                "node": ">=6.9.0"
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
-            "version": "6.3.1",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
-            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+        "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+            "version": "7.10.4",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+            "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
             "dev": true,
-            "license": "ISC",
-            "bin": {
-                "semver": "bin/semver.js"
+            "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.10.4"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-define-polyfill-provider": {
-            "version": "0.6.3",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
-            "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
+        "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+            "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-compilation-targets": "^7.22.6",
-                "@babel/helper-plugin-utils": "^7.22.5",
-                "debug": "^4.1.1",
-                "lodash.debounce": "^4.0.8",
-                "resolve": "^1.14.2"
+                "@babel/helper-plugin-utils": "^7.8.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-member-expression-to-functions": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
-            "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+        "node_modules/@babel/plugin-syntax-numeric-separator": {
+            "version": "7.10.4",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+            "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/traverse": "^7.25.9",
-                "@babel/types": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.10.4"
             },
-            "engines": {
-                "node": ">=6.9.0"
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-module-imports": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
-            "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+        "node_modules/@babel/plugin-syntax-object-rest-spread": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+            "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/traverse": "^7.25.9",
-                "@babel/types": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.8.0"
             },
-            "engines": {
-                "node": ">=6.9.0"
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-module-transforms": {
-            "version": "7.26.0",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
-            "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+        "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+            "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-module-imports": "^7.25.9",
-                "@babel/helper-validator-identifier": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
+                "@babel/helper-plugin-utils": "^7.8.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-optimise-call-expression": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
-            "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+        "node_modules/@babel/plugin-syntax-optional-chaining": {
+            "version": "7.8.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+            "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.8.0"
             },
-            "engines": {
-                "node": ">=6.9.0"
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-plugin-utils": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
-            "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+        "node_modules/@babel/plugin-syntax-private-property-in-object": {
+            "version": "7.14.5",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+            "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
             "dev": true,
             "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.14.5"
+            },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-remap-async-to-generator": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
-            "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+        "node_modules/@babel/plugin-syntax-top-level-await": {
+            "version": "7.14.5",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+            "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-annotate-as-pure": "^7.25.9",
-                "@babel/helper-wrap-function": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.14.5"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
-            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+        "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+            "version": "7.18.6",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+            "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.25.9"
+                "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+                "@babel/helper-plugin-utils": "^7.18.6"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/helper-replace-supers": {
+        "node_modules/@babel/plugin-transform-arrow-functions": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
-            "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
+            "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-member-expression-to-functions": "^7.25.9",
-                "@babel/helper-optimise-call-expression": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
-            "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+        "node_modules/@babel/plugin-transform-async-generator-functions": {
+            "version": "7.25.0",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz",
+            "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/traverse": "^7.25.9",
-                "@babel/types": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.24.8",
+                "@babel/helper-remap-async-to-generator": "^7.25.0",
+                "@babel/plugin-syntax-async-generators": "^7.8.4",
+                "@babel/traverse": "^7.25.0"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-split-export-declaration": {
+        "node_modules/@babel/plugin-transform-async-to-generator": {
             "version": "7.24.7",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
-            "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
+            "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.24.7"
+                "@babel/helper-module-imports": "^7.24.7",
+                "@babel/helper-plugin-utils": "^7.24.7",
+                "@babel/helper-remap-async-to-generator": "^7.24.7"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-string-parser": {
+        "node_modules/@babel/plugin-transform-block-scoped-functions": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
-            "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
+            "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
             "dev": true,
             "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-validator-identifier": {
+        "node_modules/@babel/plugin-transform-block-scoping": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
-            "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
+            "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
             "dev": true,
             "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-validator-option": {
+        "node_modules/@babel/plugin-transform-class-properties": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
-            "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
+            "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
             "dev": true,
             "license": "MIT",
+            "dependencies": {
+                "@babel/helper-create-class-features-plugin": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/helper-wrap-function": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
-            "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+        "node_modules/@babel/plugin-transform-class-static-block": {
+            "version": "7.26.0",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
+            "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/template": "^7.25.9",
-                "@babel/traverse": "^7.25.9",
-                "@babel/types": "^7.25.9"
+                "@babel/helper-create-class-features-plugin": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.12.0"
             }
         },
-        "node_modules/@babel/helpers": {
-            "version": "7.26.0",
-            "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz",
-            "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+        "node_modules/@babel/plugin-transform-classes": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
+            "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/template": "^7.25.9",
-                "@babel/types": "^7.26.0"
+                "@babel/helper-annotate-as-pure": "^7.25.9",
+                "@babel/helper-compilation-targets": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-replace-supers": "^7.25.9",
+                "@babel/traverse": "^7.25.9",
+                "globals": "^11.1.0"
             },
             "engines": {
                 "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/parser": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.3.tgz",
-            "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+        "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/types": "^7.26.3"
-            },
-            "bin": {
-                "parser": "bin/babel-parser.js"
+                "@babel/types": "^7.25.9"
             },
             "engines": {
-                "node": ">=6.0.0"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+        "node_modules/@babel/plugin-transform-computed-properties": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
-            "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
+            "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
+                "@babel/template": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+        "node_modules/@babel/plugin-transform-destructuring": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
-            "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
+            "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2222,52 +1977,51 @@
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+        "node_modules/@babel/plugin-transform-dotall-regex": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
-            "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
+            "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
+                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
                 "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+        "node_modules/@babel/plugin-transform-duplicate-keys": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
-            "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
+            "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-                "@babel/plugin-transform-optional-chaining": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.13.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+        "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
-            "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
+            "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
+                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2276,12 +2030,15 @@
                 "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/plugin-proposal-private-property-in-object": {
-            "version": "7.21.0-placeholder-for-preset-env.2",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
-            "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+        "node_modules/@babel/plugin-transform-dynamic-import": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
+            "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
             "dev": true,
             "license": "MIT",
+            "dependencies": {
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
             "engines": {
                 "node": ">=6.9.0"
             },
@@ -2289,40 +2046,47 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-async-generators": {
-            "version": "7.8.4",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
-            "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+        "node_modules/@babel/plugin-transform-exponentiation-operator": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
+            "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-class-properties": {
-            "version": "7.12.13",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
-            "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+        "node_modules/@babel/plugin-transform-export-namespace-from": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
+            "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.12.13"
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-class-static-block": {
-            "version": "7.14.5",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
-            "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+        "node_modules/@babel/plugin-transform-for-of": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
+            "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.14.5"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2331,36 +2095,44 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-dynamic-import": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
-            "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+        "node_modules/@babel/plugin-transform-function-name": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
+            "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
+                "@babel/helper-compilation-targets": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-export-namespace-from": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
-            "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+        "node_modules/@babel/plugin-transform-json-strings": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
+            "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.3"
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-import-assertions": {
-            "version": "7.26.0",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
-            "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
+        "node_modules/@babel/plugin-transform-literals": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
+            "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2373,14 +2145,14 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-import-attributes": {
-            "version": "7.24.7",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
-            "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
+        "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
+            "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.24.7"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2389,134 +2161,117 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-import-meta": {
-            "version": "7.10.4",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
-            "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+        "node_modules/@babel/plugin-transform-member-expression-literals": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
+            "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-json-strings": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
-            "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+        "node_modules/@babel/plugin-transform-modules-amd": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
+            "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
+                "@babel/helper-module-transforms": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
-            "version": "7.10.4",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
-            "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+        "node_modules/@babel/plugin-transform-modules-commonjs": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
+            "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-module-transforms": "^7.26.0",
+                "@babel/helper-plugin-utils": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
-            "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+        "node_modules/@babel/plugin-transform-modules-systemjs": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
+            "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
+                "@babel/helper-module-transforms": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-validator-identifier": "^7.25.9",
+                "@babel/traverse": "^7.25.9"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-numeric-separator": {
-            "version": "7.10.4",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
-            "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-syntax-object-rest-spread": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
-            "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-syntax-optional-catch-binding": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
-            "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+        "node_modules/@babel/plugin-transform-modules-umd": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
+            "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
+                "@babel/helper-module-transforms": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-syntax-optional-chaining": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
-            "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.8.0"
+            "engines": {
+                "node": ">=6.9.0"
             },
             "peerDependencies": {
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-private-property-in-object": {
-            "version": "7.14.5",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
-            "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+        "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
+            "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.14.5"
+                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+                "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/plugin-syntax-top-level-await": {
-            "version": "7.14.5",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
-            "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+        "node_modules/@babel/plugin-transform-new-target": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
+            "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.14.5"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2525,27 +2280,26 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
-            "version": "7.18.6",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
-            "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+        "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
+            "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-                "@babel/helper-plugin-utils": "^7.18.6"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-arrow-functions": {
+        "node_modules/@babel/plugin-transform-numeric-separator": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
-            "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
+            "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2558,17 +2312,16 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-async-generator-functions": {
-            "version": "7.25.0",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz",
-            "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==",
+        "node_modules/@babel/plugin-transform-object-rest-spread": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
+            "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.24.8",
-                "@babel/helper-remap-async-to-generator": "^7.25.0",
-                "@babel/plugin-syntax-async-generators": "^7.8.4",
-                "@babel/traverse": "^7.25.0"
+                "@babel/helper-compilation-targets": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/plugin-transform-parameters": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2577,16 +2330,15 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-async-to-generator": {
-            "version": "7.24.7",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
-            "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
+        "node_modules/@babel/plugin-transform-object-super": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
+            "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-module-imports": "^7.24.7",
-                "@babel/helper-plugin-utils": "^7.24.7",
-                "@babel/helper-remap-async-to-generator": "^7.24.7"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-replace-supers": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2595,10 +2347,10 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-block-scoped-functions": {
+        "node_modules/@babel/plugin-transform-optional-catch-binding": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
-            "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
+            "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2611,14 +2363,15 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-block-scoping": {
+        "node_modules/@babel/plugin-transform-optional-chaining": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
-            "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
+            "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2627,14 +2380,13 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-class-properties": {
+        "node_modules/@babel/plugin-transform-parameters": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
-            "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
+            "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-create-class-features-plugin": "^7.25.9",
                 "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
@@ -2644,10 +2396,10 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-class-static-block": {
-            "version": "7.26.0",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
-            "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
+        "node_modules/@babel/plugin-transform-private-methods": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
+            "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2658,22 +2410,19 @@
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.12.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-classes": {
+        "node_modules/@babel/plugin-transform-private-property-in-object": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
-            "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
+            "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
                 "@babel/helper-annotate-as-pure": "^7.25.9",
-                "@babel/helper-compilation-targets": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-replace-supers": "^7.25.9",
-                "@babel/traverse": "^7.25.9",
-                "globals": "^11.1.0"
+                "@babel/helper-create-class-features-plugin": "^7.25.9",
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2682,7 +2431,7 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": {
+        "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": {
             "version": "7.25.9",
             "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
             "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
@@ -2695,15 +2444,14 @@
                 "node": ">=6.9.0"
             }
         },
-        "node_modules/@babel/plugin-transform-computed-properties": {
+        "node_modules/@babel/plugin-transform-property-literals": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
-            "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
+            "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/template": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2712,14 +2460,15 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-destructuring": {
+        "node_modules/@babel/plugin-transform-regenerator": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
-            "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
+            "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "regenerator-transform": "^0.15.2"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2728,14 +2477,13 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-dotall-regex": {
+        "node_modules/@babel/plugin-transform-reserved-words": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
-            "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
+            "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
                 "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
@@ -2745,14 +2493,19 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-duplicate-keys": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
-            "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
+        "node_modules/@babel/plugin-transform-runtime": {
+            "version": "7.24.7",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz",
+            "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
+                "@babel/helper-module-imports": "^7.24.7",
+                "@babel/helper-plugin-utils": "^7.24.7",
+                "babel-plugin-polyfill-corejs2": "^0.4.10",
+                "babel-plugin-polyfill-corejs3": "^0.10.1",
+                "babel-plugin-polyfill-regenerator": "^0.6.1",
+                "semver": "^6.3.1"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2761,31 +2514,41 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+        "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+            "dev": true,
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/@babel/plugin-transform-shorthand-properties": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
-            "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
+            "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
                 "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0"
+                "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-dynamic-import": {
+        "node_modules/@babel/plugin-transform-spread": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
-            "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
+            "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2794,10 +2557,10 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-exponentiation-operator": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
-            "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
+        "node_modules/@babel/plugin-transform-sticky-regex": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
+            "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2810,10 +2573,10 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-export-namespace-from": {
+        "node_modules/@babel/plugin-transform-template-literals": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
-            "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
+            "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2826,15 +2589,14 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-for-of": {
+        "node_modules/@babel/plugin-transform-typeof-symbol": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
-            "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
+            "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+                "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -2843,76 +2605,10 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-function-name": {
+        "node_modules/@babel/plugin-transform-unicode-escapes": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
-            "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-compilation-targets": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-json-strings": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
-            "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-literals": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
-            "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-logical-assignment-operators": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
-            "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-member-expression-literals": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
-            "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
+            "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -2925,31 +2621,14 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-modules-amd": {
+        "node_modules/@babel/plugin-transform-unicode-property-regex": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
-            "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-module-transforms": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-modules-commonjs": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
-            "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
+            "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-module-transforms": "^7.26.0",
+                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
                 "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
@@ -2959,33 +2638,14 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-modules-systemjs": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
-            "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-module-transforms": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-validator-identifier": "^7.25.9",
-                "@babel/traverse": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-modules-umd": {
+        "node_modules/@babel/plugin-transform-unicode-regex": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
-            "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
+            "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-module-transforms": "^7.25.9",
+                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
                 "@babel/helper-plugin-utils": "^7.25.9"
             },
             "engines": {
@@ -2995,10 +2655,10 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+        "node_modules/@babel/plugin-transform-unicode-sets-regex": {
             "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
-            "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
+            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
+            "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -3012,14 +2672,96 @@
                 "@babel/core": "^7.0.0"
             }
         },
-        "node_modules/@babel/plugin-transform-new-target": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
-            "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
+        "node_modules/@babel/preset-env": {
+            "version": "7.25.3",
+            "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.25.3.tgz",
+            "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
+                "@babel/compat-data": "^7.25.2",
+                "@babel/helper-compilation-targets": "^7.25.2",
+                "@babel/helper-plugin-utils": "^7.24.8",
+                "@babel/helper-validator-option": "^7.24.8",
+                "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
+                "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
+                "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
+                "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
+                "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
+                "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+                "@babel/plugin-syntax-async-generators": "^7.8.4",
+                "@babel/plugin-syntax-class-properties": "^7.12.13",
+                "@babel/plugin-syntax-class-static-block": "^7.14.5",
+                "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+                "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+                "@babel/plugin-syntax-import-assertions": "^7.24.7",
+                "@babel/plugin-syntax-import-attributes": "^7.24.7",
+                "@babel/plugin-syntax-import-meta": "^7.10.4",
+                "@babel/plugin-syntax-json-strings": "^7.8.3",
+                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+                "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+                "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+                "@babel/plugin-syntax-top-level-await": "^7.14.5",
+                "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+                "@babel/plugin-transform-arrow-functions": "^7.24.7",
+                "@babel/plugin-transform-async-generator-functions": "^7.25.0",
+                "@babel/plugin-transform-async-to-generator": "^7.24.7",
+                "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
+                "@babel/plugin-transform-block-scoping": "^7.25.0",
+                "@babel/plugin-transform-class-properties": "^7.24.7",
+                "@babel/plugin-transform-class-static-block": "^7.24.7",
+                "@babel/plugin-transform-classes": "^7.25.0",
+                "@babel/plugin-transform-computed-properties": "^7.24.7",
+                "@babel/plugin-transform-destructuring": "^7.24.8",
+                "@babel/plugin-transform-dotall-regex": "^7.24.7",
+                "@babel/plugin-transform-duplicate-keys": "^7.24.7",
+                "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
+                "@babel/plugin-transform-dynamic-import": "^7.24.7",
+                "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
+                "@babel/plugin-transform-export-namespace-from": "^7.24.7",
+                "@babel/plugin-transform-for-of": "^7.24.7",
+                "@babel/plugin-transform-function-name": "^7.25.1",
+                "@babel/plugin-transform-json-strings": "^7.24.7",
+                "@babel/plugin-transform-literals": "^7.25.2",
+                "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+                "@babel/plugin-transform-member-expression-literals": "^7.24.7",
+                "@babel/plugin-transform-modules-amd": "^7.24.7",
+                "@babel/plugin-transform-modules-commonjs": "^7.24.8",
+                "@babel/plugin-transform-modules-systemjs": "^7.25.0",
+                "@babel/plugin-transform-modules-umd": "^7.24.7",
+                "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+                "@babel/plugin-transform-new-target": "^7.24.7",
+                "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+                "@babel/plugin-transform-numeric-separator": "^7.24.7",
+                "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+                "@babel/plugin-transform-object-super": "^7.24.7",
+                "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+                "@babel/plugin-transform-optional-chaining": "^7.24.8",
+                "@babel/plugin-transform-parameters": "^7.24.7",
+                "@babel/plugin-transform-private-methods": "^7.24.7",
+                "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+                "@babel/plugin-transform-property-literals": "^7.24.7",
+                "@babel/plugin-transform-regenerator": "^7.24.7",
+                "@babel/plugin-transform-reserved-words": "^7.24.7",
+                "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+                "@babel/plugin-transform-spread": "^7.24.7",
+                "@babel/plugin-transform-sticky-regex": "^7.24.7",
+                "@babel/plugin-transform-template-literals": "^7.24.7",
+                "@babel/plugin-transform-typeof-symbol": "^7.24.8",
+                "@babel/plugin-transform-unicode-escapes": "^7.24.7",
+                "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
+                "@babel/plugin-transform-unicode-regex": "^7.24.7",
+                "@babel/plugin-transform-unicode-sets-regex": "^7.24.7",
+                "@babel/preset-modules": "0.1.6-no-external-plugins",
+                "babel-plugin-polyfill-corejs2": "^0.4.10",
+                "babel-plugin-polyfill-corejs3": "^0.10.4",
+                "babel-plugin-polyfill-regenerator": "^0.6.1",
+                "core-js-compat": "^3.37.1",
+                "semver": "^6.3.1"
             },
             "engines": {
                 "node": ">=6.9.0"
@@ -3028,1161 +2770,280 @@
                 "@babel/core": "^7.0.0-0"
             }
         },
-        "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
-            "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
+        "node_modules/@babel/preset-env/node_modules/semver": {
+            "version": "6.3.1",
+            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
             "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+            "license": "ISC",
+            "bin": {
+                "semver": "bin/semver.js"
             }
         },
-        "node_modules/@babel/plugin-transform-numeric-separator": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
-            "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
+        "node_modules/@babel/preset-modules": {
+            "version": "0.1.6-no-external-plugins",
+            "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+            "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
+                "@babel/helper-plugin-utils": "^7.0.0",
+                "@babel/types": "^7.4.4",
+                "esutils": "^2.0.2"
             },
             "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
+                "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
             }
         },
-        "node_modules/@babel/plugin-transform-object-rest-spread": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
-            "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-compilation-targets": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/plugin-transform-parameters": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-object-super": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
-            "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-replace-supers": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-optional-catch-binding": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
-            "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-optional-chaining": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
-            "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-parameters": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
-            "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-private-methods": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
-            "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-create-class-features-plugin": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-private-property-in-object": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
-            "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-annotate-as-pure": "^7.25.9",
-                "@babel/helper-create-class-features-plugin": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
-            "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/types": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-property-literals": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
-            "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-regenerator": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
-            "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "regenerator-transform": "^0.15.2"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-reserved-words": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
-            "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-runtime": {
-            "version": "7.24.7",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz",
-            "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-module-imports": "^7.24.7",
-                "@babel/helper-plugin-utils": "^7.24.7",
-                "babel-plugin-polyfill-corejs2": "^0.4.10",
-                "babel-plugin-polyfill-corejs3": "^0.10.1",
-                "babel-plugin-polyfill-regenerator": "^0.6.1",
-                "semver": "^6.3.1"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
-            "version": "6.3.1",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
-            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-            "dev": true,
-            "license": "ISC",
-            "bin": {
-                "semver": "bin/semver.js"
-            }
-        },
-        "node_modules/@babel/plugin-transform-shorthand-properties": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
-            "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-spread": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
-            "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-sticky-regex": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
-            "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-template-literals": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
-            "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-typeof-symbol": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
-            "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-unicode-escapes": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
-            "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-unicode-property-regex": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
-            "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-unicode-regex": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
-            "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/plugin-transform-unicode-sets-regex": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
-            "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-                "@babel/helper-plugin-utils": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0"
-            }
-        },
-        "node_modules/@babel/preset-env": {
-            "version": "7.25.3",
-            "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.25.3.tgz",
-            "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/compat-data": "^7.25.2",
-                "@babel/helper-compilation-targets": "^7.25.2",
-                "@babel/helper-plugin-utils": "^7.24.8",
-                "@babel/helper-validator-option": "^7.24.8",
-                "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
-                "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
-                "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
-                "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
-                "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
-                "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
-                "@babel/plugin-syntax-async-generators": "^7.8.4",
-                "@babel/plugin-syntax-class-properties": "^7.12.13",
-                "@babel/plugin-syntax-class-static-block": "^7.14.5",
-                "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-                "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
-                "@babel/plugin-syntax-import-assertions": "^7.24.7",
-                "@babel/plugin-syntax-import-attributes": "^7.24.7",
-                "@babel/plugin-syntax-import-meta": "^7.10.4",
-                "@babel/plugin-syntax-json-strings": "^7.8.3",
-                "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
-                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
-                "@babel/plugin-syntax-numeric-separator": "^7.10.4",
-                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-                "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
-                "@babel/plugin-syntax-optional-chaining": "^7.8.3",
-                "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
-                "@babel/plugin-syntax-top-level-await": "^7.14.5",
-                "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
-                "@babel/plugin-transform-arrow-functions": "^7.24.7",
-                "@babel/plugin-transform-async-generator-functions": "^7.25.0",
-                "@babel/plugin-transform-async-to-generator": "^7.24.7",
-                "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
-                "@babel/plugin-transform-block-scoping": "^7.25.0",
-                "@babel/plugin-transform-class-properties": "^7.24.7",
-                "@babel/plugin-transform-class-static-block": "^7.24.7",
-                "@babel/plugin-transform-classes": "^7.25.0",
-                "@babel/plugin-transform-computed-properties": "^7.24.7",
-                "@babel/plugin-transform-destructuring": "^7.24.8",
-                "@babel/plugin-transform-dotall-regex": "^7.24.7",
-                "@babel/plugin-transform-duplicate-keys": "^7.24.7",
-                "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
-                "@babel/plugin-transform-dynamic-import": "^7.24.7",
-                "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
-                "@babel/plugin-transform-export-namespace-from": "^7.24.7",
-                "@babel/plugin-transform-for-of": "^7.24.7",
-                "@babel/plugin-transform-function-name": "^7.25.1",
-                "@babel/plugin-transform-json-strings": "^7.24.7",
-                "@babel/plugin-transform-literals": "^7.25.2",
-                "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
-                "@babel/plugin-transform-member-expression-literals": "^7.24.7",
-                "@babel/plugin-transform-modules-amd": "^7.24.7",
-                "@babel/plugin-transform-modules-commonjs": "^7.24.8",
-                "@babel/plugin-transform-modules-systemjs": "^7.25.0",
-                "@babel/plugin-transform-modules-umd": "^7.24.7",
-                "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
-                "@babel/plugin-transform-new-target": "^7.24.7",
-                "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
-                "@babel/plugin-transform-numeric-separator": "^7.24.7",
-                "@babel/plugin-transform-object-rest-spread": "^7.24.7",
-                "@babel/plugin-transform-object-super": "^7.24.7",
-                "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
-                "@babel/plugin-transform-optional-chaining": "^7.24.8",
-                "@babel/plugin-transform-parameters": "^7.24.7",
-                "@babel/plugin-transform-private-methods": "^7.24.7",
-                "@babel/plugin-transform-private-property-in-object": "^7.24.7",
-                "@babel/plugin-transform-property-literals": "^7.24.7",
-                "@babel/plugin-transform-regenerator": "^7.24.7",
-                "@babel/plugin-transform-reserved-words": "^7.24.7",
-                "@babel/plugin-transform-shorthand-properties": "^7.24.7",
-                "@babel/plugin-transform-spread": "^7.24.7",
-                "@babel/plugin-transform-sticky-regex": "^7.24.7",
-                "@babel/plugin-transform-template-literals": "^7.24.7",
-                "@babel/plugin-transform-typeof-symbol": "^7.24.8",
-                "@babel/plugin-transform-unicode-escapes": "^7.24.7",
-                "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
-                "@babel/plugin-transform-unicode-regex": "^7.24.7",
-                "@babel/plugin-transform-unicode-sets-regex": "^7.24.7",
-                "@babel/preset-modules": "0.1.6-no-external-plugins",
-                "babel-plugin-polyfill-corejs2": "^0.4.10",
-                "babel-plugin-polyfill-corejs3": "^0.10.4",
-                "babel-plugin-polyfill-regenerator": "^0.6.1",
-                "core-js-compat": "^3.37.1",
-                "semver": "^6.3.1"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0"
-            }
-        },
-        "node_modules/@babel/preset-env/node_modules/semver": {
-            "version": "6.3.1",
-            "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
-            "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
-            "dev": true,
-            "license": "ISC",
-            "bin": {
-                "semver": "bin/semver.js"
-            }
-        },
-        "node_modules/@babel/preset-modules": {
-            "version": "0.1.6-no-external-plugins",
-            "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
-            "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-plugin-utils": "^7.0.0",
-                "@babel/types": "^7.4.4",
-                "esutils": "^2.0.2"
-            },
-            "peerDependencies": {
-                "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
-            }
-        },
-        "node_modules/@babel/runtime": {
-            "version": "7.25.0",
-            "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.0.tgz",
-            "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "regenerator-runtime": "^0.14.0"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            }
-        },
-        "node_modules/@babel/template": {
-            "version": "7.25.9",
-            "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz",
-            "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/code-frame": "^7.25.9",
-                "@babel/parser": "^7.25.9",
-                "@babel/types": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            }
-        },
-        "node_modules/@babel/traverse": {
-            "version": "7.26.4",
-            "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.4.tgz",
-            "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/code-frame": "^7.26.2",
-                "@babel/generator": "^7.26.3",
-                "@babel/parser": "^7.26.3",
-                "@babel/template": "^7.25.9",
-                "@babel/types": "^7.26.3",
-                "debug": "^4.3.1",
-                "globals": "^11.1.0"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            }
-        },
-        "node_modules/@babel/traverse/node_modules/@babel/generator": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.3.tgz",
-            "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/parser": "^7.26.3",
-                "@babel/types": "^7.26.3",
-                "@jridgewell/gen-mapping": "^0.3.5",
-                "@jridgewell/trace-mapping": "^0.3.25",
-                "jsesc": "^3.0.2"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            }
-        },
-        "node_modules/@babel/traverse/node_modules/jsesc": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz",
-            "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
-            "dev": true,
-            "license": "MIT",
-            "bin": {
-                "jsesc": "bin/jsesc"
-            },
-            "engines": {
-                "node": ">=6"
-            }
-        },
-        "node_modules/@babel/types": {
-            "version": "7.26.3",
-            "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz",
-            "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@babel/helper-string-parser": "^7.25.9",
-                "@babel/helper-validator-identifier": "^7.25.9"
-            },
-            "engines": {
-                "node": ">=6.9.0"
-            }
-        },
-        "node_modules/@colors/colors": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz",
-            "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=0.1.90"
-            }
-        },
-        "node_modules/@cspotcode/source-map-support": {
-            "version": "0.8.1",
-            "resolved": "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
-            "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@jridgewell/trace-mapping": "0.3.9"
-            },
-            "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
-            "version": "0.3.9",
-            "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
-            "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@jridgewell/resolve-uri": "^3.0.3",
-                "@jridgewell/sourcemap-codec": "^1.4.10"
-            }
-        },
-        "node_modules/@discoveryjs/json-ext": {
-            "version": "0.6.1",
-            "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz",
-            "integrity": "sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=14.17.0"
-            }
-        },
-        "node_modules/@docgeni/toolkit": {
-            "version": "2.4.0",
-            "resolved": "https://registry.npmmirror.com/@docgeni/toolkit/-/toolkit-2.4.0.tgz",
-            "integrity": "sha512-tLjfcgyyr6whcIh4EeyQskiyp+DRnmFwm7eHaocWSmQzuWa9fvpAkmTsycc+e4lR5XvhHAlanTMis7CAtGm4zA==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "@angular-devkit/core": "^18.2.0",
-                "camelcase": "^6.0.0",
-                "chalk": "^3.0.0",
-                "change-case": "^4.1.1",
-                "chokidar": "^3.3.1",
-                "debug": "^4.3.3",
-                "fancy-log": "^1.3.3",
-                "front-matter": "^3.1.0",
-                "fs-extra": "^9.0.0",
-                "glob": "^7.1.6",
-                "handlebars": "^4.7.3",
-                "lodash": "^4.17.21",
-                "minimatch": "3.0.5",
-                "ora": "^5.4.1",
-                "param-case": "^3.0.2",
-                "pluralize": "^8.0.0",
-                "shelljs": "0.8.5",
-                "tapable": "^1.1.3",
-                "time-stamp": "^2.2.0",
-                "title-case": "^3.0.2"
-            }
-        },
-        "node_modules/@docgeni/toolkit/node_modules/ansi-styles": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "color-convert": "^2.0.1"
-            },
-            "engines": {
-                "node": ">=8"
-            },
-            "funding": {
-                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-            }
-        },
-        "node_modules/@docgeni/toolkit/node_modules/chalk": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
-            "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "ansi-styles": "^4.1.0",
-                "supports-color": "^7.1.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/@docgeni/toolkit/node_modules/color-convert": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-            "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "color-name": "~1.1.4"
-            },
-            "engines": {
-                "node": ">=7.0.0"
-            }
-        },
-        "node_modules/@docgeni/toolkit/node_modules/color-name": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-            "dev": true,
-            "license": "MIT"
-        },
-        "node_modules/@docgeni/toolkit/node_modules/has-flag": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-            "dev": true,
-            "license": "MIT",
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/@docgeni/toolkit/node_modules/supports-color": {
-            "version": "7.2.0",
-            "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
-            "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-            "dev": true,
-            "license": "MIT",
-            "dependencies": {
-                "has-flag": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz",
-            "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==",
-            "cpu": [
-                "ppc64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "aix"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/android-arm": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.23.0.tgz",
-            "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==",
-            "cpu": [
-                "arm"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/android-arm64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz",
-            "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/android-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.23.0.tgz",
-            "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz",
-            "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/darwin-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz",
-            "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz",
-            "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "freebsd"
-            ],
-            "engines": {
-                "node": ">=18"
-            }
-        },
-        "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz",
-            "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@babel/runtime": {
+            "version": "7.25.0",
+            "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.0.tgz",
+            "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "freebsd"
-            ],
+            "dependencies": {
+                "regenerator-runtime": "^0.14.0"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@esbuild/linux-arm": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz",
-            "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==",
-            "cpu": [
-                "arm"
-            ],
+        "node_modules/@babel/template": {
+            "version": "7.25.9",
+            "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz",
+            "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/code-frame": "^7.25.9",
+                "@babel/parser": "^7.25.9",
+                "@babel/types": "^7.25.9"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@esbuild/linux-arm64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz",
-            "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@babel/traverse": {
+            "version": "7.26.4",
+            "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.4.tgz",
+            "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/code-frame": "^7.26.2",
+                "@babel/generator": "^7.26.3",
+                "@babel/parser": "^7.26.3",
+                "@babel/template": "^7.25.9",
+                "@babel/types": "^7.26.3",
+                "debug": "^4.3.1",
+                "globals": "^11.1.0"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@esbuild/linux-ia32": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz",
-            "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==",
-            "cpu": [
-                "ia32"
-            ],
+        "node_modules/@babel/traverse/node_modules/@babel/generator": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.3.tgz",
+            "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/parser": "^7.26.3",
+                "@babel/types": "^7.26.3",
+                "@jridgewell/gen-mapping": "^0.3.5",
+                "@jridgewell/trace-mapping": "^0.3.25",
+                "jsesc": "^3.0.2"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@esbuild/linux-loong64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz",
-            "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==",
-            "cpu": [
-                "loong64"
-            ],
+        "node_modules/@babel/traverse/node_modules/jsesc": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz",
+            "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "bin": {
+                "jsesc": "bin/jsesc"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=6"
             }
         },
-        "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz",
-            "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==",
-            "cpu": [
-                "mips64el"
-            ],
+        "node_modules/@babel/types": {
+            "version": "7.26.3",
+            "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz",
+            "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@babel/helper-string-parser": "^7.25.9",
+                "@babel/helper-validator-identifier": "^7.25.9"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=6.9.0"
             }
         },
-        "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz",
-            "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==",
-            "cpu": [
-                "ppc64"
-            ],
+        "node_modules/@colors/colors": {
+            "version": "1.5.0",
+            "resolved": "https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz",
+            "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
             "engines": {
-                "node": ">=18"
+                "node": ">=0.1.90"
             }
         },
-        "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz",
-            "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==",
-            "cpu": [
-                "riscv64"
-            ],
+        "node_modules/@cspotcode/source-map-support": {
+            "version": "0.8.1",
+            "resolved": "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+            "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
+            "dependencies": {
+                "@jridgewell/trace-mapping": "0.3.9"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=12"
             }
         },
-        "node_modules/@esbuild/linux-s390x": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz",
-            "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==",
-            "cpu": [
-                "s390x"
-            ],
+        "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+            "version": "0.3.9",
+            "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+            "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
-            "engines": {
-                "node": ">=18"
+            "dependencies": {
+                "@jridgewell/resolve-uri": "^3.0.3",
+                "@jridgewell/sourcemap-codec": "^1.4.10"
             }
         },
-        "node_modules/@esbuild/linux-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz",
-            "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@discoveryjs/json-ext": {
+            "version": "0.6.1",
+            "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz",
+            "integrity": "sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ],
             "engines": {
-                "node": ">=18"
+                "node": ">=14.17.0"
             }
         },
-        "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz",
-            "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@docgeni/toolkit": {
+            "version": "2.4.0",
+            "resolved": "https://registry.npmmirror.com/@docgeni/toolkit/-/toolkit-2.4.0.tgz",
+            "integrity": "sha512-tLjfcgyyr6whcIh4EeyQskiyp+DRnmFwm7eHaocWSmQzuWa9fvpAkmTsycc+e4lR5XvhHAlanTMis7CAtGm4zA==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "netbsd"
-            ],
-            "engines": {
-                "node": ">=18"
+            "dependencies": {
+                "@angular-devkit/core": "^18.2.0",
+                "camelcase": "^6.0.0",
+                "chalk": "^3.0.0",
+                "change-case": "^4.1.1",
+                "chokidar": "^3.3.1",
+                "debug": "^4.3.3",
+                "fancy-log": "^1.3.3",
+                "front-matter": "^3.1.0",
+                "fs-extra": "^9.0.0",
+                "glob": "^7.1.6",
+                "handlebars": "^4.7.3",
+                "lodash": "^4.17.21",
+                "minimatch": "3.0.5",
+                "ora": "^5.4.1",
+                "param-case": "^3.0.2",
+                "pluralize": "^8.0.0",
+                "shelljs": "0.8.5",
+                "tapable": "^1.1.3",
+                "time-stamp": "^2.2.0",
+                "title-case": "^3.0.2"
             }
         },
-        "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz",
-            "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@docgeni/toolkit/node_modules/ansi-styles": {
+            "version": "4.3.0",
+            "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "openbsd"
-            ],
+            "dependencies": {
+                "color-convert": "^2.0.1"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
-        "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz",
-            "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@docgeni/toolkit/node_modules/chalk": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
+            "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "openbsd"
-            ],
+            "dependencies": {
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=8"
             }
         },
-        "node_modules/@esbuild/sunos-x64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz",
-            "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==",
-            "cpu": [
-                "x64"
-            ],
+        "node_modules/@docgeni/toolkit/node_modules/color-convert": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+            "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "sunos"
-            ],
+            "dependencies": {
+                "color-name": "~1.1.4"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=7.0.0"
             }
         },
-        "node_modules/@esbuild/win32-arm64": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz",
-            "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==",
-            "cpu": [
-                "arm64"
-            ],
+        "node_modules/@docgeni/toolkit/node_modules/color-name": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+            "dev": true,
+            "license": "MIT"
+        },
+        "node_modules/@docgeni/toolkit/node_modules/has-flag": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ],
             "engines": {
-                "node": ">=18"
+                "node": ">=8"
             }
         },
-        "node_modules/@esbuild/win32-ia32": {
-            "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz",
-            "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==",
-            "cpu": [
-                "ia32"
-            ],
+        "node_modules/@docgeni/toolkit/node_modules/supports-color": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+            "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
             "dev": true,
             "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ],
+            "dependencies": {
+                "has-flag": "^4.0.0"
+            },
             "engines": {
-                "node": ">=18"
+                "node": ">=8"
             }
         },
-        "node_modules/@esbuild/win32-x64": {
+        "node_modules/@esbuild/darwin-arm64": {
             "version": "0.23.0",
-            "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz",
-            "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==",
+            "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz",
+            "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==",
             "cpu": [
-                "x64"
+                "arm64"
             ],
             "dev": true,
             "license": "MIT",
             "optional": true,
             "os": [
-                "win32"
+                "darwin"
             ],
             "engines": {
                 "node": ">=18"
@@ -4730,76 +3591,6 @@
                 "darwin"
             ]
         },
-        "node_modules/@lmdb/lmdb-darwin-x64": {
-            "version": "3.0.13",
-            "resolved": "https://registry.npmmirror.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.13.tgz",
-            "integrity": "sha512-bEVIIfK5mSQoG1R19qA+fJOvCB+0wVGGnXHT3smchBVahYBdlPn2OsZZKzlHWfb1E+PhLBmYfqB5zQXFP7hJig==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ]
-        },
-        "node_modules/@lmdb/lmdb-linux-arm": {
-            "version": "3.0.13",
-            "resolved": "https://registry.npmmirror.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.13.tgz",
-            "integrity": "sha512-Yml1KlMzOnXj/tnW7yX8U78iAzTk39aILYvCPbqeewAq1kSzl+w59k/fiVkTBfvDi/oW/5YRxL+Fq+Y1Fr1r2Q==",
-            "cpu": [
-                "arm"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@lmdb/lmdb-linux-arm64": {
-            "version": "3.0.13",
-            "resolved": "https://registry.npmmirror.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.13.tgz",
-            "integrity": "sha512-afbVrsMgZ9dUTNUchFpj5VkmJRxvht/u335jUJ7o23YTbNbnpmXif3VKQGCtnjSh+CZaqm6N3CPG8KO3zwyZ1Q==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@lmdb/lmdb-linux-x64": {
-            "version": "3.0.13",
-            "resolved": "https://registry.npmmirror.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.13.tgz",
-            "integrity": "sha512-vOtxu0xC0SLdQ2WRXg8Qgd8T32ak4SPqk5zjItRszrJk2BdeXqfGxBJbP7o4aOvSPSmSSv46Lr1EP4HXU8v7Kg==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@lmdb/lmdb-win32-x64": {
-            "version": "3.0.13",
-            "resolved": "https://registry.npmmirror.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.13.tgz",
-            "integrity": "sha512-UCrMJQY/gJnOl3XgbWRZZUvGGBuKy6i0YNSptgMzHBjs+QYDYR1Mt/RLTOPy4fzzves65O1EDmlL//OzEqoLlA==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ]
-        },
         "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
             "version": "3.0.3",
             "resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
@@ -4814,76 +3605,6 @@
                 "darwin"
             ]
         },
-        "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
-            "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ]
-        },
-        "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
-            "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
-            "cpu": [
-                "arm"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
-            "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
-            "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmmirror.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
-            "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ]
-        },
         "node_modules/@ngtools/webpack": {
             "version": "18.2.12",
             "resolved": "https://registry.npmmirror.com/@ngtools/webpack/-/webpack-18.2.12.tgz",
@@ -5331,34 +4052,6 @@
                 }
             }
         },
-        "node_modules/@rollup/rollup-android-arm-eabi": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
-            "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
-            "cpu": [
-                "arm"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ]
-        },
-        "node_modules/@rollup/rollup-android-arm64": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
-            "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "android"
-            ]
-        },
         "node_modules/@rollup/rollup-darwin-arm64": {
             "version": "4.22.4",
             "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
@@ -5373,188 +4066,6 @@
                 "darwin"
             ]
         },
-        "node_modules/@rollup/rollup-darwin-x64": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
-            "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "darwin"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
-            "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
-            "cpu": [
-                "arm"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
-            "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
-            "cpu": [
-                "arm"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-arm64-gnu": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
-            "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-arm64-musl": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
-            "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
-            "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
-            "cpu": [
-                "ppc64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
-            "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
-            "cpu": [
-                "riscv64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-s390x-gnu": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
-            "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
-            "cpu": [
-                "s390x"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-x64-gnu": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
-            "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-linux-x64-musl": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
-            "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "linux"
-            ]
-        },
-        "node_modules/@rollup/rollup-win32-arm64-msvc": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
-            "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
-            "cpu": [
-                "arm64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ]
-        },
-        "node_modules/@rollup/rollup-win32-ia32-msvc": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
-            "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
-            "cpu": [
-                "ia32"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ]
-        },
-        "node_modules/@rollup/rollup-win32-x64-msvc": {
-            "version": "4.22.4",
-            "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
-            "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
-            "cpu": [
-                "x64"
-            ],
-            "dev": true,
-            "license": "MIT",
-            "optional": true,
-            "os": [
-                "win32"
-            ]
-        },
         "node_modules/@rollup/wasm-node": {
             "version": "4.29.1",
             "resolved": "https://registry.npmmirror.com/@rollup/wasm-node/-/wasm-node-4.29.1.tgz",
@@ -5706,9 +4217,9 @@
             }
         },
         "node_modules/@tethys/icons": {
-            "version": "1.4.76",
-            "resolved": "https://registry.npmmirror.com/@tethys/icons/-/icons-1.4.76.tgz",
-            "integrity": "sha512-/js7qrFJqClOhqaAPRqPzmE98bg2MVqR3vtOuC+MCEeeWmfn95IZKepZJRh9ZO3vXjtQPqUrP/FIoKgyozymWA=="
+            "version": "1.4.77",
+            "resolved": "https://registry.npmmirror.com/@tethys/icons/-/icons-1.4.77.tgz",
+            "integrity": "sha512-Z0MAs/7TAhWJmvEoSTQqVv2hSbi0cO/2mFN64VBL+oZEDfxk2gIk3Y4zo5zhW7nfVay+7VF693PhkDt8Iu5BXg=="
         },
         "node_modules/@tsconfig/node10": {
             "version": "1.0.11",
@@ -23941,7 +22452,7 @@
         },
         "packages/grid": {
             "name": "@ai-table/grid",
-            "version": "0.0.32",
+            "version": "0.0.37",
             "dependencies": {
                 "tslib": "^2.3.0"
             },
@@ -23956,7 +22467,7 @@
         },
         "packages/state": {
             "name": "@ai-table/state",
-            "version": "0.0.32",
+            "version": "0.0.37",
             "dependencies": {
                 "tslib": "^2.3.0"
             },
diff --git a/package.json b/package.json
index 023ed257..09ad5974 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
         "@angular/platform-browser-dynamic": "^18.1.4",
         "@angular/router": "^18.1.4",
         "@tethys/cdk": "^18.2.1",
-        "@tethys/icons": "^1.4.69",
+        "@tethys/icons": "^1.4.77",
         "bson-objectid": "^2.0.4",
         "nanoid": "^3.3.8",
         "date-fns": "^3.6.0",
diff --git a/packages/grid/src/components/context-menu/context-menu.component.html b/packages/grid/src/components/context-menu/context-menu.component.html
index 02eaeb9b..ac4e7810 100644
--- a/packages/grid/src/components/context-menu/context-menu.component.html
+++ b/packages/grid/src/components/context-menu/context-menu.component.html
@@ -1,15 +1,26 @@
 @for (menu of menuItems(); track $index) {
     @if ((menu.hidden && !menu.hidden(aiTable(), targetName(), position())) || !menu.hidden) {
-        @let disabled = !!(menu.disabled && menu.disabled(aiTable(), targetName(), position()));
-        <a
-            thyDropdownMenuItem
-            href="javascript:;"
-            [ngClass]="{ 'ai-table-prevent-clear-selection remove-record': !disabled }"
-            (click)="execute(menu)"
-            [thyDisabled]="disabled"
-        >
-            <thy-icon [thyIconName]="menu.icon!"></thy-icon>
-            <span>{{ menu.name }}</span>
-        </a>
+        @if (menu.type === 'divider') {
+            <thy-divider thyStyle="solid"></thy-divider>
+        } @else {
+            @let disabled = !!(menu.disabled && menu.disabled(aiTable(), targetName(), position()));
+            @let isRemoveRecords = menu.type === 'removeRecords';
+            @let isPreventClearSelection = menu.type === 'copyCells' || menu.type === 'pasteCells' || menu.type === 'removeRecords';
+
+            <a
+                thyDropdownMenuItem
+                href="javascript:;"
+                [ngClass]="{
+                    'remove-record': isRemoveRecords && !disabled,
+                    'ai-table-prevent-clear-selection': isPreventClearSelection && !disabled
+                }"
+                (click)="execute(menu)"
+                [thyDisabled]="disabled"
+            >
+                <thy-icon thyDropdownMenuItemIcon [thyIconName]="menu.icon!"></thy-icon>
+                <span thyDropdownMenuItemName>{{ menu.name }}</span>
+                <span thyDropdownMenuItemMeta class="text-desc">{{ menu.shortcutKey }}</span>
+            </a>
+        }
     }
 }
diff --git a/packages/grid/src/components/context-menu/context-menu.component.ts b/packages/grid/src/components/context-menu/context-menu.component.ts
index 77eb92ff..bb8f6451 100644
--- a/packages/grid/src/components/context-menu/context-menu.component.ts
+++ b/packages/grid/src/components/context-menu/context-menu.component.ts
@@ -1,7 +1,14 @@
 import { NgClass } from '@angular/common';
 import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
-import { ThyDropdownAbstractMenu, ThyDropdownMenuItemDirective } from 'ngx-tethys/dropdown';
+import {
+    ThyDropdownAbstractMenu,
+    ThyDropdownMenuItemDirective,
+    ThyDropdownMenuItemNameDirective,
+    ThyDropdownMenuItemIconDirective,
+    ThyDropdownMenuItemMetaDirective
+} from 'ngx-tethys/dropdown';
 import { ThyIcon } from 'ngx-tethys/icon';
+import { ThyDivider } from 'ngx-tethys/divider';
 import { AITable } from '../../core';
 import { AITableContextMenuItem } from '../../types';
 import { AITableGridSelectionService } from '../../services/selection.service';
@@ -14,7 +21,15 @@ import { AITableGridSelectionService } from '../../services/selection.service';
     host: {
         class: 'context-menu'
     },
-    imports: [ThyDropdownMenuItemDirective, ThyIcon, NgClass]
+    imports: [
+        ThyDropdownMenuItemDirective,
+        ThyDropdownMenuItemNameDirective,
+        ThyDropdownMenuItemIconDirective,
+        ThyDropdownMenuItemMetaDirective,
+        ThyIcon,
+        NgClass,
+        ThyDivider
+    ]
 })
 export class AITableContextMenu extends ThyDropdownAbstractMenu {
     private aiTableGridSelectionService = inject(AITableGridSelectionService);
diff --git a/packages/grid/src/grid.component.ts b/packages/grid/src/grid.component.ts
index 1c07081a..d4b0ea9a 100644
--- a/packages/grid/src/grid.component.ts
+++ b/packages/grid/src/grid.component.ts
@@ -51,6 +51,7 @@ import {
     isWindows
 } from './utils';
 import { getMousePosition } from './utils/position';
+import { buildClipboardData, writeToClipboard, writeToAITable } from './utils/clipboard';
 
 @Component({
     selector: 'ai-table-grid',
@@ -150,6 +151,7 @@ export class AITableGrid extends AITableGridBase implements OnInit, OnDestroy {
             this.bindGlobalMousedown();
             this.containerResizeListener();
             this.bindWheel();
+            this.bindClipboardShortcuts();
         });
         effect(() => {
             if (this.hasContainerRect() && this.horizontalBarRef() && this.verticalBarRef()) {
@@ -594,4 +596,26 @@ export class AITableGrid extends AITableGridBase implements OnInit, OnDestroy {
             }
         }
     }
+
+    private bindClipboardShortcuts() {
+        fromEvent<KeyboardEvent>(document, 'keydown')
+            .pipe(
+                filter((event) => (event.ctrlKey || event.metaKey) && (event.key === 'c' || event.key === 'v')),
+                takeUntilDestroyed(this.destroyRef)
+            )
+            .subscribe(async (event) => {
+                if (event.key === 'c') {
+                    const clipboardData = buildClipboardData(this.aiTable);
+                    if (clipboardData) {
+                        writeToClipboard(clipboardData);
+                    }
+                } else if (event.key === 'v') {
+                    event.preventDefault();
+                    const updateValueFn = (data: UpdateFieldValueOptions) => {
+                        this.aiUpdateFieldValue.emit(data);
+                    };
+                    writeToAITable(this.aiTable, updateValueFn);
+                }
+            });
+    }
 }
diff --git a/packages/grid/src/types/clipboard.ts b/packages/grid/src/types/clipboard.ts
new file mode 100644
index 00000000..3c5a5530
--- /dev/null
+++ b/packages/grid/src/types/clipboard.ts
@@ -0,0 +1,4 @@
+export interface ClipboardData {
+    text?: string;
+    html?: string;
+}
diff --git a/packages/grid/src/types/index.ts b/packages/grid/src/types/index.ts
index c576beb6..2eb812d2 100644
--- a/packages/grid/src/types/index.ts
+++ b/packages/grid/src/types/index.ts
@@ -7,3 +7,4 @@ export * from './grid';
 export * from './layout';
 export * from './row';
 export * from './view';
+export * from './clipboard';
diff --git a/packages/grid/src/types/row.ts b/packages/grid/src/types/row.ts
index be704966..491bf275 100644
--- a/packages/grid/src/types/row.ts
+++ b/packages/grid/src/types/row.ts
@@ -38,6 +38,7 @@ export interface AITableContextMenuItem {
     type: string;
     name?: string;
     icon?: string;
+    shortcutKey?: string;
     exec?: (
         aiTable: AITable,
         targetName: string,
diff --git a/packages/grid/src/utils/clipboard.ts b/packages/grid/src/utils/clipboard.ts
new file mode 100644
index 00000000..9cac847a
--- /dev/null
+++ b/packages/grid/src/utils/clipboard.ts
@@ -0,0 +1,124 @@
+import { AITable, AITableField, AITableFieldType, AITableQueries, UpdateFieldValueOptions } from '../core';
+import { ViewOperationMap } from './field/model';
+import { transformCellValue } from './cell';
+import { ClipboardData } from '../types';
+
+export const isClipboardWriteSupported = () => {
+    return 'clipboard' in navigator && 'write' in navigator.clipboard;
+};
+
+export const isClipboardWriteTextSupported = () => {
+    return 'clipboard' in navigator && 'writeText' in navigator.clipboard;
+};
+
+export const isClipboardReadSupported = () => {
+    return 'clipboard' in navigator && 'read' in navigator.clipboard;
+};
+
+export const writeToClipboard = async (data: ClipboardData) => {
+    const { text, html } = data;
+    if (isClipboardWriteSupported()) {
+        const clipboardItem = new ClipboardItem({
+            'text/plain': new Blob([text!], { type: 'text/plain' }),
+            'text/html': new Blob([html!], { type: 'text/html' })
+        });
+        await navigator.clipboard.write([clipboardItem]);
+    } else if (isClipboardWriteTextSupported()) {
+        await navigator.clipboard.writeText(text!);
+    } else {
+        const textarea = document.createElement('textarea');
+        textarea.value = text!;
+        document.body.appendChild(textarea);
+        textarea.select();
+        document.execCommand('copy');
+        document.body.removeChild(textarea);
+    }
+};
+
+export const readFromClipboard = async () => {
+    const clipboardText = await navigator.clipboard.readText();
+    return clipboardText;
+};
+
+export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
+    const copiedCells = Array.from(aiTable.selection().selectedCells);
+    const contentsByRecordId = new Map<string, ClipboardData[]>();
+    if (!copiedCells.length) {
+        return null;
+    }
+
+    copiedCells.forEach((cellPath: string) => {
+        const [recordId, fieldId] = cellPath.split(':');
+        const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
+        const field = aiTable.fieldsMap()[fieldId!];
+        const transformValue = transformCellValue(aiTable, field, cellValue);
+        const references = aiTable.context!.references();
+        const cellTexts: string[] = ViewOperationMap[field.type].cellFullText(transformValue, field, references);
+        let cellContent = {
+            text: cellTexts.join(','),
+            html: cellTexts.join(',')
+        };
+        if (field.type === AITableFieldType.link && cellValue && cellValue.url) {
+            cellContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
+        }
+        contentsByRecordId.set(recordId, [...(contentsByRecordId.get(recordId) || []), cellContent]);
+    });
+
+    const rows = Array.from(contentsByRecordId.values());
+    const formatClipboardData: ClipboardData = {
+        text: rows.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
+        html: `<table>${rows.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
+    };
+
+    return formatClipboardData;
+};
+
+export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: UpdateFieldValueOptions) => void) => {
+    const selectedCells = Array.from(aiTable.selection().selectedCells);
+    if (!selectedCells.length) {
+        return;
+    }
+
+    const clipboardText = await readFromClipboard();
+    if (!clipboardText) {
+        return;
+    }
+    const pasteData = clipboardText
+        .split('\n')
+        .map((row) => row.split('\t'))
+        .filter((row) => row.length > 0 && row.some((cell) => cell.trim().length > 0));
+
+    const [firstCell] = selectedCells;
+    const [startRecordId, startFieldId] = firstCell.split(':');
+
+    const startRowIndex = aiTable.context!.visibleRowsIndexMap().get(startRecordId) ?? 0;
+    const startColIndex = aiTable.context!.visibleColumnsIndexMap().get(startFieldId) ?? 0;
+    const visibleFields = AITable.getVisibleFields(aiTable);
+    const linearRows = aiTable.context!.linearRows();
+
+    pasteData.forEach((row, i) => {
+        row.forEach((value, j) => {
+            const targetRowIndex = startRowIndex + i;
+            const targetColIndex = startColIndex + j;
+            if (targetRowIndex >= linearRows.length || targetColIndex >= visibleFields.length) {
+                return;
+            }
+
+            const targetRecord = linearRows[targetRowIndex];
+            const targetField = visibleFields[targetColIndex];
+
+            // TODO 完善 handlePasteData 逻辑之后,移除这个 if 判断
+            if (targetField.type === AITableFieldType.text) {
+                updateValueFn({
+                    value: handlePasteData(value.trim(), targetField),
+                    path: [targetRecord._id, targetField._id]
+                });
+            }
+        });
+    });
+};
+
+export const handlePasteData = (text: string, field: AITableField) => {
+    // TODO 处理不同 field 类型,处理粘贴数据
+    return text;
+};
diff --git a/packages/grid/src/utils/index.ts b/packages/grid/src/utils/index.ts
index 46520f59..fbd1216d 100644
--- a/packages/grid/src/utils/index.ts
+++ b/packages/grid/src/utils/index.ts
@@ -5,6 +5,7 @@ export * from './get-placeholder-cells';
 export * from './get-text-width';
 export * from './image-cache';
 export * from './os';
+export * from './clipboard';
 export * from './position';
 export * from './style';
 export * from './text-measure';
diff --git a/packages/state/src/action/general.ts b/packages/state/src/action/general.ts
index aded7acb..4ab813ab 100644
--- a/packages/state/src/action/general.ts
+++ b/packages/state/src/action/general.ts
@@ -9,7 +9,7 @@ import {
     AIViewTable
 } from '../types';
 import { createDraft, finishDraft } from 'immer';
-import { AITableField, AITableFields, AITableSelectAllState, getDefaultFieldValue } from '@ai-table/grid';
+import { AITableField, AITableFields, getDefaultFieldValue } from '@ai-table/grid';
 import { createDefaultPositions, isPathEqual } from '../utils';
 
 const apply = (aiTable: AIViewTable, records: AITableViewRecords, fields: AITableFields, views: AITableView[], action: AITableAction) => {
diff --git a/packages/state/src/constants/context-menu-item.ts b/packages/state/src/constants/context-menu-item.ts
index d797bfe1..21f7747a 100644
--- a/packages/state/src/constants/context-menu-item.ts
+++ b/packages/state/src/constants/context-menu-item.ts
@@ -1,6 +1,14 @@
-import { AITable, AITableContextMenuItem, AITableGridSelectionService } from '@ai-table/grid';
+import {
+    AITable,
+    AITableContextMenuItem,
+    AITableGridSelectionService,
+    isMac,
+    UpdateFieldValueOptions,
+    writeToAITable
+} from '@ai-table/grid';
 import { Actions } from '../action';
 import { AIViewTable } from '../types';
+import { buildClipboardData, writeToClipboard } from '@ai-table/grid';
 
 export const RemoveRecordsItem: AITableContextMenuItem = {
     type: 'removeRecords',
@@ -21,3 +29,35 @@ export const RemoveRecordsItem: AITableContextMenuItem = {
         aiTableGridSelectionService.clearSelection();
     }
 };
+
+export const CopyCellsItem: AITableContextMenuItem = {
+    type: 'copyCells',
+    name: '复制',
+    shortcutKey: isMac() ? `⌘ + C` : `Ctrl + C`,
+    icon: 'copy',
+    exec: (aiTable: AITable) => {
+        const clipboardData = buildClipboardData(aiTable);
+        if (clipboardData) {
+            writeToClipboard(clipboardData);
+        }
+    }
+};
+
+export const PasteCellsItem: (updateValueFn: (data: UpdateFieldValueOptions) => void) => AITableContextMenuItem = (
+    updateValueFn: (data: UpdateFieldValueOptions) => void
+) => {
+    return {
+        type: 'pasteCells',
+        name: '粘贴',
+        shortcutKey: isMac() ? `⌘ + V` : `Ctrl + V`,
+        icon: 'paste',
+        exec: async (
+            aiTable: AITable,
+            targetName: string,
+            position: { x: number; y: number },
+            aiTableGridSelectionService: AITableGridSelectionService
+        ) => {
+            writeToAITable(aiTable, updateValueFn);
+        }
+    };
+};
diff --git a/src/app/component/common/content/content.component.ts b/src/app/component/common/content/content.component.ts
index 4290857f..a83515f7 100644
--- a/src/app/component/common/content/content.component.ts
+++ b/src/app/component/common/content/content.component.ts
@@ -22,9 +22,11 @@ import {
     AIViewTable,
     applyActionOps,
     buildRemoveFieldItem,
+    CopyCellsItem,
     DividerMenuItem,
     EditFieldPropertyItem,
     CopyFieldPropertyItem,
+    PasteCellsItem,
     RemoveRecordsItem,
     updateFieldValue,
     withState,
@@ -116,6 +118,23 @@ export class DemoTableContent {
     });
 
     contextMenuItems: AITableContextMenuItem[] = [
+        {
+            ...CopyCellsItem,
+            disabled: (aiTable: AITable, targetName: string, position: { x: number; y: number }) => false,
+            hidden: (aiTable: AITable, targetname: string, position: { x: number; y: number }) => this.tableService.readonly()
+        },
+        {
+            ...PasteCellsItem((data: UpdateFieldValueOptions) => {
+                this.updateFieldValue(data);
+            }),
+            disabled: (aiTable: AITable, targetName: string, position: { x: number; y: number }) => false,
+            hidden: (aiTable: AITable, targetname: string, position: { x: number; y: number }) => this.tableService.readonly()
+        },
+        {
+            ...DividerMenuItem,
+            disabled: (aiTable: AITable, targetName: string, position: { x: number; y: number }) => false,
+            hidden: (aiTable: AITable, targetname: string, position: { x: number; y: number }) => this.tableService.readonly()
+        },
         {
             ...RemoveRecordsItem,
             disabled: (aiTable: AITable, targetName: string, position: { x: number; y: number }) => false,

From c4d711c29a8ec273ae0227c6935259e8d39ea8ca Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Tue, 18 Mar 2025 11:44:42 +0800
Subject: [PATCH 2/7] feat(grid): support copy to clipbpard and paste to
 ai-table #WIK-16631

---
 packages/grid/src/utils/clipboard.ts          | 124 ---------------
 .../grid/src/utils/clipboard/clipboard.ts     | 144 ++++++++++++++++++
 packages/grid/src/utils/clipboard/common.ts   |  77 ++++++++++
 packages/grid/src/utils/clipboard/index.ts    |   2 +
 packages/state/src/action/record.ts           |   1 +
 5 files changed, 224 insertions(+), 124 deletions(-)
 delete mode 100644 packages/grid/src/utils/clipboard.ts
 create mode 100644 packages/grid/src/utils/clipboard/clipboard.ts
 create mode 100644 packages/grid/src/utils/clipboard/common.ts
 create mode 100644 packages/grid/src/utils/clipboard/index.ts

diff --git a/packages/grid/src/utils/clipboard.ts b/packages/grid/src/utils/clipboard.ts
deleted file mode 100644
index 9cac847a..00000000
--- a/packages/grid/src/utils/clipboard.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import { AITable, AITableField, AITableFieldType, AITableQueries, UpdateFieldValueOptions } from '../core';
-import { ViewOperationMap } from './field/model';
-import { transformCellValue } from './cell';
-import { ClipboardData } from '../types';
-
-export const isClipboardWriteSupported = () => {
-    return 'clipboard' in navigator && 'write' in navigator.clipboard;
-};
-
-export const isClipboardWriteTextSupported = () => {
-    return 'clipboard' in navigator && 'writeText' in navigator.clipboard;
-};
-
-export const isClipboardReadSupported = () => {
-    return 'clipboard' in navigator && 'read' in navigator.clipboard;
-};
-
-export const writeToClipboard = async (data: ClipboardData) => {
-    const { text, html } = data;
-    if (isClipboardWriteSupported()) {
-        const clipboardItem = new ClipboardItem({
-            'text/plain': new Blob([text!], { type: 'text/plain' }),
-            'text/html': new Blob([html!], { type: 'text/html' })
-        });
-        await navigator.clipboard.write([clipboardItem]);
-    } else if (isClipboardWriteTextSupported()) {
-        await navigator.clipboard.writeText(text!);
-    } else {
-        const textarea = document.createElement('textarea');
-        textarea.value = text!;
-        document.body.appendChild(textarea);
-        textarea.select();
-        document.execCommand('copy');
-        document.body.removeChild(textarea);
-    }
-};
-
-export const readFromClipboard = async () => {
-    const clipboardText = await navigator.clipboard.readText();
-    return clipboardText;
-};
-
-export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
-    const copiedCells = Array.from(aiTable.selection().selectedCells);
-    const contentsByRecordId = new Map<string, ClipboardData[]>();
-    if (!copiedCells.length) {
-        return null;
-    }
-
-    copiedCells.forEach((cellPath: string) => {
-        const [recordId, fieldId] = cellPath.split(':');
-        const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
-        const field = aiTable.fieldsMap()[fieldId!];
-        const transformValue = transformCellValue(aiTable, field, cellValue);
-        const references = aiTable.context!.references();
-        const cellTexts: string[] = ViewOperationMap[field.type].cellFullText(transformValue, field, references);
-        let cellContent = {
-            text: cellTexts.join(','),
-            html: cellTexts.join(',')
-        };
-        if (field.type === AITableFieldType.link && cellValue && cellValue.url) {
-            cellContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
-        }
-        contentsByRecordId.set(recordId, [...(contentsByRecordId.get(recordId) || []), cellContent]);
-    });
-
-    const rows = Array.from(contentsByRecordId.values());
-    const formatClipboardData: ClipboardData = {
-        text: rows.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
-        html: `<table>${rows.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
-    };
-
-    return formatClipboardData;
-};
-
-export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: UpdateFieldValueOptions) => void) => {
-    const selectedCells = Array.from(aiTable.selection().selectedCells);
-    if (!selectedCells.length) {
-        return;
-    }
-
-    const clipboardText = await readFromClipboard();
-    if (!clipboardText) {
-        return;
-    }
-    const pasteData = clipboardText
-        .split('\n')
-        .map((row) => row.split('\t'))
-        .filter((row) => row.length > 0 && row.some((cell) => cell.trim().length > 0));
-
-    const [firstCell] = selectedCells;
-    const [startRecordId, startFieldId] = firstCell.split(':');
-
-    const startRowIndex = aiTable.context!.visibleRowsIndexMap().get(startRecordId) ?? 0;
-    const startColIndex = aiTable.context!.visibleColumnsIndexMap().get(startFieldId) ?? 0;
-    const visibleFields = AITable.getVisibleFields(aiTable);
-    const linearRows = aiTable.context!.linearRows();
-
-    pasteData.forEach((row, i) => {
-        row.forEach((value, j) => {
-            const targetRowIndex = startRowIndex + i;
-            const targetColIndex = startColIndex + j;
-            if (targetRowIndex >= linearRows.length || targetColIndex >= visibleFields.length) {
-                return;
-            }
-
-            const targetRecord = linearRows[targetRowIndex];
-            const targetField = visibleFields[targetColIndex];
-
-            // TODO 完善 handlePasteData 逻辑之后,移除这个 if 判断
-            if (targetField.type === AITableFieldType.text) {
-                updateValueFn({
-                    value: handlePasteData(value.trim(), targetField),
-                    path: [targetRecord._id, targetField._id]
-                });
-            }
-        });
-    });
-};
-
-export const handlePasteData = (text: string, field: AITableField) => {
-    // TODO 处理不同 field 类型,处理粘贴数据
-    return text;
-};
diff --git a/packages/grid/src/utils/clipboard/clipboard.ts b/packages/grid/src/utils/clipboard/clipboard.ts
new file mode 100644
index 00000000..3b9df40d
--- /dev/null
+++ b/packages/grid/src/utils/clipboard/clipboard.ts
@@ -0,0 +1,144 @@
+import { AITable, AITableFieldType, AITableQueries, UpdateFieldValueOptions } from '../../core';
+import { ViewOperationMap } from '../field/model';
+import { transformCellValue } from '../cell';
+import { ClipboardData } from '../../types';
+import { readFromClipboard } from './common';
+
+const aiTableSpecialAttribute = 'ai-table-json-value';
+
+const aiTableAttributePattern = new RegExp(`${aiTableSpecialAttribute}="(.+?)"`, 'm');
+
+const encodeClipboardJsonData = (data: any) => {
+    const stringifiedData = JSON.stringify(data);
+    return window.btoa(encodeURIComponent(stringifiedData));
+};
+
+const decodeClipboardJsonData = (encoded: string) => {
+    const decoded = decodeURIComponent(window.atob(encoded));
+    return JSON.parse(decoded);
+};
+
+function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): ClipboardData {
+    const encodeData = encodeClipboardJsonData(jsonData);
+    const formatClipboardData = {
+        text: data.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
+        html: `<table ${aiTableSpecialAttribute}="${encodeData}">${data.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
+    };
+    return formatClipboardData;
+}
+
+export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
+    const copiedCells = Array.from(aiTable.selection().selectedCells);
+    const dataByRecordId = new Map<string, ClipboardData[]>();
+    const jsonDataByRecordId = new Map<string, string[]>();
+    if (!copiedCells.length) {
+        return null;
+    }
+
+    copiedCells.forEach((cellPath: string) => {
+        const [recordId, fieldId] = cellPath.split(':');
+        const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
+        const field = aiTable.fieldsMap()[fieldId!];
+        const transformValue = transformCellValue(aiTable, field, cellValue);
+        const references = aiTable.context!.references();
+        const cellTexts: string[] = ViewOperationMap[field.type].cellFullText(transformValue, field, references);
+
+        let cellContent = {
+            text: cellTexts.join(','),
+            html: cellTexts.join(',')
+        };
+        if (field.type === AITableFieldType.link && cellValue && cellValue.url) {
+            cellContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
+        }
+        dataByRecordId.set(recordId, [...(dataByRecordId.get(recordId) || []), cellContent]);
+
+        const cellJsonData = JSON.stringify({
+            fieldId,
+            cellValue,
+            cellFullText: cellTexts.join(',')
+        });
+        jsonDataByRecordId.set(recordId, [...(jsonDataByRecordId.get(recordId) || []), cellJsonData]);
+    });
+
+    const clipboardData = Array.from(dataByRecordId.values());
+    const jsonData = Array.from(jsonDataByRecordId.values());
+    return formatClipboardData(clipboardData, jsonData);
+};
+
+const readClipboardData = async (): Promise<{ pasteData: string[][]; isJson: boolean }> => {
+    const clipboardData = await readFromClipboard();
+    let pasteData: string[][];
+
+    if (clipboardData && clipboardData.html) {
+        const aiTableAttribute = clipboardData.html.match(aiTableAttributePattern);
+        if (aiTableAttribute && aiTableAttribute[1]) {
+            pasteData = decodeClipboardJsonData(aiTableAttribute[1]);
+            return {
+                pasteData,
+                isJson: true
+            };
+        }
+    }
+
+    if (clipboardData && clipboardData.text) {
+        pasteData = clipboardData.text
+            .split('\n')
+            .map((row) => row.split('\t'))
+            .filter((row) => row.length > 0 && row.some((cell) => cell.trim().length > 0));
+
+        return {
+            pasteData,
+            isJson: false
+        };
+    }
+
+    return {
+        pasteData: [],
+        isJson: false
+    };
+};
+
+export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: UpdateFieldValueOptions) => void) => {
+    const selectedCells = Array.from(aiTable.selection().selectedCells);
+    if (!selectedCells.length) {
+        return;
+    }
+    const { pasteData, isJson } = await readClipboardData();
+    if (!pasteData.length) {
+        return;
+    }
+
+    const [firstCell] = selectedCells;
+    const [startRecordId, startFieldId] = firstCell.split(':');
+
+    const startRowIndex = aiTable.context!.visibleRowsIndexMap().get(startRecordId) ?? 0;
+    const startColIndex = aiTable.context!.visibleColumnsIndexMap().get(startFieldId) ?? 0;
+    const visibleFields = AITable.getVisibleFields(aiTable);
+    const linearRows = aiTable.context!.linearRows();
+
+    pasteData.forEach((row, i) => {
+        row.forEach((value, j) => {
+            const targetRowIndex = startRowIndex + i;
+            const targetColIndex = startColIndex + j;
+            if (targetRowIndex >= linearRows.length || targetColIndex >= visibleFields.length) {
+                return;
+            }
+
+            const targetRecord = linearRows[targetRowIndex];
+            const targetField = visibleFields[targetColIndex];
+
+            // TODO 完善 handlePasteData 逻辑之后,移除这个 if 判断
+            if (targetField.type === AITableFieldType.text) {
+                updateValueFn({
+                    value: handlePasteData(aiTable, value, isJson),
+                    path: [targetRecord._id, targetField._id]
+                });
+            }
+        });
+    });
+};
+
+export const handlePasteData = (aiTable: AITable, value: string, isJson: boolean) => {
+    // TODO 处理不同 field 类型、处理边界粘贴
+    return isJson ? (JSON.parse(value)?.cellFullText ?? value) : value;
+};
diff --git a/packages/grid/src/utils/clipboard/common.ts b/packages/grid/src/utils/clipboard/common.ts
new file mode 100644
index 00000000..f9fb7983
--- /dev/null
+++ b/packages/grid/src/utils/clipboard/common.ts
@@ -0,0 +1,77 @@
+import { ClipboardData } from '../../types';
+
+export const isClipboardWriteSupported = () => {
+    return 'clipboard' in navigator && 'write' in navigator.clipboard;
+};
+
+export const isClipboardWriteTextSupported = () => {
+    return 'clipboard' in navigator && 'writeText' in navigator.clipboard;
+};
+
+export const isClipboardReadSupported = () => {
+    return 'clipboard' in navigator && 'read' in navigator.clipboard;
+};
+
+export const isClipboardReadTextSupported = () => {
+    return 'clipboard' in navigator && 'readText' in navigator.clipboard;
+};
+
+export const writeToClipboard = async (data: ClipboardData) => {
+    try {
+        const { text, html } = data;
+        if (isClipboardWriteSupported()) {
+            const clipboardItem = new ClipboardItem({
+                'text/plain': new Blob([text!], { type: 'text/plain' }),
+                'text/html': new Blob([html!], { type: 'text/html' })
+            });
+            await navigator.clipboard.write([clipboardItem]);
+        } else if (isClipboardWriteTextSupported()) {
+            await navigator.clipboard.writeText(text!);
+        } else {
+            const textarea = document.createElement('textarea');
+            textarea.value = text!;
+            document.body.appendChild(textarea);
+            textarea.select();
+            document.execCommand('copy');
+            document.body.removeChild(textarea);
+        }
+    } catch (error) {
+        console.warn('Failed to write clipboard:', error);
+    }
+};
+
+export const readFromClipboard = async () => {
+    try {
+        let clipboardData: ClipboardData = {};
+        if (isClipboardReadSupported()) {
+            const clipboardItems = await navigator.clipboard.read();
+            if (Array.isArray(clipboardItems) && clipboardItems[0] instanceof ClipboardItem) {
+                for (const item of clipboardItems) {
+                    if (item.types.includes('text/html')) {
+                        const blob = await item.getType('text/html');
+                        clipboardData.html = await blob.text();
+                    }
+                    if (item.types.includes('text/plain')) {
+                        const blob = await item.getType('text/plain');
+                        clipboardData.text = await blob.text();
+                    }
+                }
+            }
+        } else if (isClipboardReadTextSupported()) {
+            const clipboardText = await navigator.clipboard.readText();
+            clipboardData.text = clipboardText;
+        } else {
+            const textarea = document.createElement('textarea');
+            document.body.appendChild(textarea);
+            textarea.focus();
+            document.execCommand('paste');
+            const text = textarea.value;
+            document.body.removeChild(textarea);
+            clipboardData.text = text;
+        }
+        return clipboardData;
+    } catch (error) {
+        console.warn('Failed to read clipboard:', error);
+        return null;
+    }
+};
diff --git a/packages/grid/src/utils/clipboard/index.ts b/packages/grid/src/utils/clipboard/index.ts
new file mode 100644
index 00000000..9384ecf4
--- /dev/null
+++ b/packages/grid/src/utils/clipboard/index.ts
@@ -0,0 +1,2 @@
+export * from './clipboard';
+export * from './common';
diff --git a/packages/state/src/action/record.ts b/packages/state/src/action/record.ts
index b3d9bbac..77bf458c 100644
--- a/packages/state/src/action/record.ts
+++ b/packages/state/src/action/record.ts
@@ -9,6 +9,7 @@ import {
     UpdateSystemFieldValue
 } from '../types';
 
+//
 export function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {
     const oldValue = AITableQueries.getFieldValue(aiTable, path);
     const operation: UpdateFieldValueAction = {

From 1f1858b12191eb2df6eec2f0a413731c4ab46ab5 Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Wed, 19 Mar 2025 10:30:20 +0800
Subject: [PATCH 3/7] feat(grid): support copy to clipbpard and paste to
 ai-table #WIK-16631

---
 .../grid/src/utils/clipboard/clipboard.ts     | 191 ++++++------------
 packages/grid/src/utils/clipboard/common.ts   |  77 -------
 packages/grid/src/utils/clipboard/copy.ts     |  58 ++++++
 packages/grid/src/utils/clipboard/index.ts    |   3 +-
 packages/grid/src/utils/clipboard/paste.ts    |  87 ++++++++
 5 files changed, 209 insertions(+), 207 deletions(-)
 delete mode 100644 packages/grid/src/utils/clipboard/common.ts
 create mode 100644 packages/grid/src/utils/clipboard/copy.ts
 create mode 100644 packages/grid/src/utils/clipboard/paste.ts

diff --git a/packages/grid/src/utils/clipboard/clipboard.ts b/packages/grid/src/utils/clipboard/clipboard.ts
index 3b9df40d..f9fb7983 100644
--- a/packages/grid/src/utils/clipboard/clipboard.ts
+++ b/packages/grid/src/utils/clipboard/clipboard.ts
@@ -1,144 +1,77 @@
-import { AITable, AITableFieldType, AITableQueries, UpdateFieldValueOptions } from '../../core';
-import { ViewOperationMap } from '../field/model';
-import { transformCellValue } from '../cell';
 import { ClipboardData } from '../../types';
-import { readFromClipboard } from './common';
 
-const aiTableSpecialAttribute = 'ai-table-json-value';
-
-const aiTableAttributePattern = new RegExp(`${aiTableSpecialAttribute}="(.+?)"`, 'm');
-
-const encodeClipboardJsonData = (data: any) => {
-    const stringifiedData = JSON.stringify(data);
-    return window.btoa(encodeURIComponent(stringifiedData));
+export const isClipboardWriteSupported = () => {
+    return 'clipboard' in navigator && 'write' in navigator.clipboard;
 };
 
-const decodeClipboardJsonData = (encoded: string) => {
-    const decoded = decodeURIComponent(window.atob(encoded));
-    return JSON.parse(decoded);
+export const isClipboardWriteTextSupported = () => {
+    return 'clipboard' in navigator && 'writeText' in navigator.clipboard;
 };
 
-function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): ClipboardData {
-    const encodeData = encodeClipboardJsonData(jsonData);
-    const formatClipboardData = {
-        text: data.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
-        html: `<table ${aiTableSpecialAttribute}="${encodeData}">${data.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
-    };
-    return formatClipboardData;
-}
-
-export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
-    const copiedCells = Array.from(aiTable.selection().selectedCells);
-    const dataByRecordId = new Map<string, ClipboardData[]>();
-    const jsonDataByRecordId = new Map<string, string[]>();
-    if (!copiedCells.length) {
-        return null;
-    }
-
-    copiedCells.forEach((cellPath: string) => {
-        const [recordId, fieldId] = cellPath.split(':');
-        const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
-        const field = aiTable.fieldsMap()[fieldId!];
-        const transformValue = transformCellValue(aiTable, field, cellValue);
-        const references = aiTable.context!.references();
-        const cellTexts: string[] = ViewOperationMap[field.type].cellFullText(transformValue, field, references);
-
-        let cellContent = {
-            text: cellTexts.join(','),
-            html: cellTexts.join(',')
-        };
-        if (field.type === AITableFieldType.link && cellValue && cellValue.url) {
-            cellContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
-        }
-        dataByRecordId.set(recordId, [...(dataByRecordId.get(recordId) || []), cellContent]);
-
-        const cellJsonData = JSON.stringify({
-            fieldId,
-            cellValue,
-            cellFullText: cellTexts.join(',')
-        });
-        jsonDataByRecordId.set(recordId, [...(jsonDataByRecordId.get(recordId) || []), cellJsonData]);
-    });
-
-    const clipboardData = Array.from(dataByRecordId.values());
-    const jsonData = Array.from(jsonDataByRecordId.values());
-    return formatClipboardData(clipboardData, jsonData);
+export const isClipboardReadSupported = () => {
+    return 'clipboard' in navigator && 'read' in navigator.clipboard;
 };
 
-const readClipboardData = async (): Promise<{ pasteData: string[][]; isJson: boolean }> => {
-    const clipboardData = await readFromClipboard();
-    let pasteData: string[][];
+export const isClipboardReadTextSupported = () => {
+    return 'clipboard' in navigator && 'readText' in navigator.clipboard;
+};
 
-    if (clipboardData && clipboardData.html) {
-        const aiTableAttribute = clipboardData.html.match(aiTableAttributePattern);
-        if (aiTableAttribute && aiTableAttribute[1]) {
-            pasteData = decodeClipboardJsonData(aiTableAttribute[1]);
-            return {
-                pasteData,
-                isJson: true
-            };
+export const writeToClipboard = async (data: ClipboardData) => {
+    try {
+        const { text, html } = data;
+        if (isClipboardWriteSupported()) {
+            const clipboardItem = new ClipboardItem({
+                'text/plain': new Blob([text!], { type: 'text/plain' }),
+                'text/html': new Blob([html!], { type: 'text/html' })
+            });
+            await navigator.clipboard.write([clipboardItem]);
+        } else if (isClipboardWriteTextSupported()) {
+            await navigator.clipboard.writeText(text!);
+        } else {
+            const textarea = document.createElement('textarea');
+            textarea.value = text!;
+            document.body.appendChild(textarea);
+            textarea.select();
+            document.execCommand('copy');
+            document.body.removeChild(textarea);
         }
+    } catch (error) {
+        console.warn('Failed to write clipboard:', error);
     }
-
-    if (clipboardData && clipboardData.text) {
-        pasteData = clipboardData.text
-            .split('\n')
-            .map((row) => row.split('\t'))
-            .filter((row) => row.length > 0 && row.some((cell) => cell.trim().length > 0));
-
-        return {
-            pasteData,
-            isJson: false
-        };
-    }
-
-    return {
-        pasteData: [],
-        isJson: false
-    };
 };
 
-export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: UpdateFieldValueOptions) => void) => {
-    const selectedCells = Array.from(aiTable.selection().selectedCells);
-    if (!selectedCells.length) {
-        return;
-    }
-    const { pasteData, isJson } = await readClipboardData();
-    if (!pasteData.length) {
-        return;
-    }
-
-    const [firstCell] = selectedCells;
-    const [startRecordId, startFieldId] = firstCell.split(':');
-
-    const startRowIndex = aiTable.context!.visibleRowsIndexMap().get(startRecordId) ?? 0;
-    const startColIndex = aiTable.context!.visibleColumnsIndexMap().get(startFieldId) ?? 0;
-    const visibleFields = AITable.getVisibleFields(aiTable);
-    const linearRows = aiTable.context!.linearRows();
-
-    pasteData.forEach((row, i) => {
-        row.forEach((value, j) => {
-            const targetRowIndex = startRowIndex + i;
-            const targetColIndex = startColIndex + j;
-            if (targetRowIndex >= linearRows.length || targetColIndex >= visibleFields.length) {
-                return;
-            }
-
-            const targetRecord = linearRows[targetRowIndex];
-            const targetField = visibleFields[targetColIndex];
-
-            // TODO 完善 handlePasteData 逻辑之后,移除这个 if 判断
-            if (targetField.type === AITableFieldType.text) {
-                updateValueFn({
-                    value: handlePasteData(aiTable, value, isJson),
-                    path: [targetRecord._id, targetField._id]
-                });
+export const readFromClipboard = async () => {
+    try {
+        let clipboardData: ClipboardData = {};
+        if (isClipboardReadSupported()) {
+            const clipboardItems = await navigator.clipboard.read();
+            if (Array.isArray(clipboardItems) && clipboardItems[0] instanceof ClipboardItem) {
+                for (const item of clipboardItems) {
+                    if (item.types.includes('text/html')) {
+                        const blob = await item.getType('text/html');
+                        clipboardData.html = await blob.text();
+                    }
+                    if (item.types.includes('text/plain')) {
+                        const blob = await item.getType('text/plain');
+                        clipboardData.text = await blob.text();
+                    }
+                }
             }
-        });
-    });
-};
-
-export const handlePasteData = (aiTable: AITable, value: string, isJson: boolean) => {
-    // TODO 处理不同 field 类型、处理边界粘贴
-    return isJson ? (JSON.parse(value)?.cellFullText ?? value) : value;
+        } else if (isClipboardReadTextSupported()) {
+            const clipboardText = await navigator.clipboard.readText();
+            clipboardData.text = clipboardText;
+        } else {
+            const textarea = document.createElement('textarea');
+            document.body.appendChild(textarea);
+            textarea.focus();
+            document.execCommand('paste');
+            const text = textarea.value;
+            document.body.removeChild(textarea);
+            clipboardData.text = text;
+        }
+        return clipboardData;
+    } catch (error) {
+        console.warn('Failed to read clipboard:', error);
+        return null;
+    }
 };
diff --git a/packages/grid/src/utils/clipboard/common.ts b/packages/grid/src/utils/clipboard/common.ts
deleted file mode 100644
index f9fb7983..00000000
--- a/packages/grid/src/utils/clipboard/common.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import { ClipboardData } from '../../types';
-
-export const isClipboardWriteSupported = () => {
-    return 'clipboard' in navigator && 'write' in navigator.clipboard;
-};
-
-export const isClipboardWriteTextSupported = () => {
-    return 'clipboard' in navigator && 'writeText' in navigator.clipboard;
-};
-
-export const isClipboardReadSupported = () => {
-    return 'clipboard' in navigator && 'read' in navigator.clipboard;
-};
-
-export const isClipboardReadTextSupported = () => {
-    return 'clipboard' in navigator && 'readText' in navigator.clipboard;
-};
-
-export const writeToClipboard = async (data: ClipboardData) => {
-    try {
-        const { text, html } = data;
-        if (isClipboardWriteSupported()) {
-            const clipboardItem = new ClipboardItem({
-                'text/plain': new Blob([text!], { type: 'text/plain' }),
-                'text/html': new Blob([html!], { type: 'text/html' })
-            });
-            await navigator.clipboard.write([clipboardItem]);
-        } else if (isClipboardWriteTextSupported()) {
-            await navigator.clipboard.writeText(text!);
-        } else {
-            const textarea = document.createElement('textarea');
-            textarea.value = text!;
-            document.body.appendChild(textarea);
-            textarea.select();
-            document.execCommand('copy');
-            document.body.removeChild(textarea);
-        }
-    } catch (error) {
-        console.warn('Failed to write clipboard:', error);
-    }
-};
-
-export const readFromClipboard = async () => {
-    try {
-        let clipboardData: ClipboardData = {};
-        if (isClipboardReadSupported()) {
-            const clipboardItems = await navigator.clipboard.read();
-            if (Array.isArray(clipboardItems) && clipboardItems[0] instanceof ClipboardItem) {
-                for (const item of clipboardItems) {
-                    if (item.types.includes('text/html')) {
-                        const blob = await item.getType('text/html');
-                        clipboardData.html = await blob.text();
-                    }
-                    if (item.types.includes('text/plain')) {
-                        const blob = await item.getType('text/plain');
-                        clipboardData.text = await blob.text();
-                    }
-                }
-            }
-        } else if (isClipboardReadTextSupported()) {
-            const clipboardText = await navigator.clipboard.readText();
-            clipboardData.text = clipboardText;
-        } else {
-            const textarea = document.createElement('textarea');
-            document.body.appendChild(textarea);
-            textarea.focus();
-            document.execCommand('paste');
-            const text = textarea.value;
-            document.body.removeChild(textarea);
-            clipboardData.text = text;
-        }
-        return clipboardData;
-    } catch (error) {
-        console.warn('Failed to read clipboard:', error);
-        return null;
-    }
-};
diff --git a/packages/grid/src/utils/clipboard/copy.ts b/packages/grid/src/utils/clipboard/copy.ts
new file mode 100644
index 00000000..e12ec6ac
--- /dev/null
+++ b/packages/grid/src/utils/clipboard/copy.ts
@@ -0,0 +1,58 @@
+import { AITable, AITableFieldType, AITableQueries } from '../../core';
+import { ViewOperationMap } from '../field/model';
+import { transformCellValue } from '../cell';
+import { ClipboardData } from '../../types';
+
+export const aiTableSpecialAttribute = 'ai-table-json-value';
+
+const encodeClipboardJsonData = (data: any) => {
+    const stringifiedData = JSON.stringify(data);
+    return window.btoa(encodeURIComponent(stringifiedData));
+};
+
+function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): ClipboardData {
+    const encodeData = encodeClipboardJsonData(jsonData);
+    const formatClipboardData = {
+        text: data.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
+        html: `<table ${aiTableSpecialAttribute}="${encodeData}">${data.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
+    };
+    return formatClipboardData;
+}
+
+export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
+    const copiedCells = Array.from(aiTable.selection().selectedCells);
+    const dataByRecordId = new Map<string, ClipboardData[]>();
+    const jsonDataByRecordId = new Map<string, string[]>();
+    if (!copiedCells.length) {
+        return null;
+    }
+
+    copiedCells.forEach((cellPath: string) => {
+        const [recordId, fieldId] = cellPath.split(':');
+        const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, fieldId]);
+        const field = aiTable.fieldsMap()[fieldId!];
+        const transformValue = transformCellValue(aiTable, field, cellValue);
+        const references = aiTable.context!.references();
+        const cellTexts: string[] = ViewOperationMap[field.type].cellFullText(transformValue, field, references);
+
+        let cellContent = {
+            text: cellTexts.join(','),
+            html: cellTexts.join(',')
+        };
+        if (field.type === AITableFieldType.link && cellValue && cellValue.url) {
+            cellContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
+        }
+        dataByRecordId.set(recordId, [...(dataByRecordId.get(recordId) || []), cellContent]);
+
+        const cellJsonData = JSON.stringify({
+            fieldId,
+            cellValue,
+            cellFullText: cellTexts.join(',')
+        });
+        jsonDataByRecordId.set(recordId, [...(jsonDataByRecordId.get(recordId) || []), cellJsonData]);
+    });
+
+    const clipboardData = Array.from(dataByRecordId.values());
+    const jsonData = Array.from(jsonDataByRecordId.values());
+    return formatClipboardData(clipboardData, jsonData);
+};
diff --git a/packages/grid/src/utils/clipboard/index.ts b/packages/grid/src/utils/clipboard/index.ts
index 9384ecf4..443eb82e 100644
--- a/packages/grid/src/utils/clipboard/index.ts
+++ b/packages/grid/src/utils/clipboard/index.ts
@@ -1,2 +1,3 @@
 export * from './clipboard';
-export * from './common';
+export * from './copy';
+export * from './paste';
diff --git a/packages/grid/src/utils/clipboard/paste.ts b/packages/grid/src/utils/clipboard/paste.ts
new file mode 100644
index 00000000..f8ae58f3
--- /dev/null
+++ b/packages/grid/src/utils/clipboard/paste.ts
@@ -0,0 +1,87 @@
+import { AITable, AITableFieldType, UpdateFieldValueOptions } from '../../core';
+import { readFromClipboard, aiTableSpecialAttribute } from '../clipboard';
+
+const aiTableAttributePattern = new RegExp(`${aiTableSpecialAttribute}="(.+?)"`, 'm');
+
+const decodeClipboardJsonData = (encoded: string) => {
+    const decoded = decodeURIComponent(window.atob(encoded));
+    return JSON.parse(decoded);
+};
+
+const readClipboardData = async (): Promise<{ pasteData: string[][]; isJson: boolean }> => {
+    const clipboardData = await readFromClipboard();
+    let pasteData: string[][];
+
+    if (clipboardData && clipboardData.html) {
+        const aiTableAttribute = clipboardData.html.match(aiTableAttributePattern);
+        if (aiTableAttribute && aiTableAttribute[1]) {
+            pasteData = decodeClipboardJsonData(aiTableAttribute[1]);
+            return {
+                pasteData,
+                isJson: true
+            };
+        }
+    }
+
+    if (clipboardData && clipboardData.text) {
+        pasteData = clipboardData.text
+            .split('\n')
+            .map((row) => row.split('\t'))
+            .filter((row) => row.length > 0 && row.some((cell) => cell.trim().length > 0));
+
+        return {
+            pasteData,
+            isJson: false
+        };
+    }
+
+    return {
+        pasteData: [],
+        isJson: false
+    };
+};
+
+export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: UpdateFieldValueOptions) => void) => {
+    const selectedCells = Array.from(aiTable.selection().selectedCells);
+    if (!selectedCells.length) {
+        return;
+    }
+    const { pasteData, isJson } = await readClipboardData();
+    if (!pasteData.length) {
+        return;
+    }
+
+    const [firstCell] = selectedCells;
+    const [startRecordId, startFieldId] = firstCell.split(':');
+
+    const startRowIndex = aiTable.context!.visibleRowsIndexMap().get(startRecordId) ?? 0;
+    const startColIndex = aiTable.context!.visibleColumnsIndexMap().get(startFieldId) ?? 0;
+    const visibleFields = AITable.getVisibleFields(aiTable);
+    const linearRows = aiTable.context!.linearRows();
+
+    pasteData.forEach((row, i) => {
+        row.forEach((value, j) => {
+            const targetRowIndex = startRowIndex + i;
+            const targetColIndex = startColIndex + j;
+            if (targetRowIndex >= linearRows.length || targetColIndex >= visibleFields.length) {
+                return;
+            }
+
+            const targetRecord = linearRows[targetRowIndex];
+            const targetField = visibleFields[targetColIndex];
+
+            // TODO 完善 handlePasteData 逻辑之后,移除这个 if 判断
+            if (targetField.type === AITableFieldType.text) {
+                updateValueFn({
+                    value: handlePasteData(aiTable, value, isJson),
+                    path: [targetRecord._id, targetField._id]
+                });
+            }
+        });
+    });
+};
+
+export const handlePasteData = (aiTable: AITable, value: string, isJson: boolean) => {
+    // TODO 处理不同 field 类型、处理边界粘贴
+    return isJson ? (JSON.parse(value)?.cellFullText ?? value) : value;
+};

From d4c431c25c7f7f4696b44a20b456524dd13ae37f Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Wed, 19 Mar 2025 10:34:02 +0800
Subject: [PATCH 4/7] refactor: remove useless comment

---
 packages/state/src/action/record.ts | 1 -
 1 file changed, 1 deletion(-)

diff --git a/packages/state/src/action/record.ts b/packages/state/src/action/record.ts
index 77bf458c..b3d9bbac 100644
--- a/packages/state/src/action/record.ts
+++ b/packages/state/src/action/record.ts
@@ -9,7 +9,6 @@ import {
     UpdateSystemFieldValue
 } from '../types';
 
-//
 export function updateFieldValue(aiTable: AIViewTable, value: any, path: AIRecordFieldIdPath) {
     const oldValue = AITableQueries.getFieldValue(aiTable, path);
     const operation: UpdateFieldValueAction = {

From a3e3c3f71d73bf058f2ebb244ebd73585249ef77 Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Wed, 19 Mar 2025 17:38:52 +0800
Subject: [PATCH 5/7] feat(grid): support to pase different field value
 #WIK-16631

---
 packages/grid/src/utils/clipboard/copy.ts     |  3 ++
 packages/grid/src/utils/clipboard/paste.ts    | 30 +++++++----
 packages/grid/src/utils/field/model/date.ts   | 51 ++++++++++++++++++-
 packages/grid/src/utils/field/model/field.ts  |  8 +++
 packages/grid/src/utils/field/model/link.ts   |  4 ++
 packages/grid/src/utils/field/model/member.ts | 47 ++++++++++++++++-
 packages/grid/src/utils/field/model/number.ts | 36 ++++++++++++-
 .../grid/src/utils/field/model/progress.ts    | 40 ++++++++++++++-
 packages/grid/src/utils/field/model/rate.ts   | 41 ++++++++++++++-
 packages/grid/src/utils/field/model/select.ts |  9 ++++
 packages/grid/src/utils/field/model/text.ts   |  4 ++
 11 files changed, 257 insertions(+), 16 deletions(-)

diff --git a/packages/grid/src/utils/clipboard/copy.ts b/packages/grid/src/utils/clipboard/copy.ts
index e12ec6ac..b62d3325 100644
--- a/packages/grid/src/utils/clipboard/copy.ts
+++ b/packages/grid/src/utils/clipboard/copy.ts
@@ -16,6 +16,7 @@ function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): Cli
         text: data.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
         html: `<table ${aiTableSpecialAttribute}="${encodeData}">${data.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
     };
+    console.log('====> formatClipboardData', formatClipboardData);
     return formatClipboardData;
 }
 
@@ -54,5 +55,7 @@ export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
 
     const clipboardData = Array.from(dataByRecordId.values());
     const jsonData = Array.from(jsonDataByRecordId.values());
+    // console.log('====> clipboardData', clipboardData);
+    console.log('====> jsonData', jsonData);
     return formatClipboardData(clipboardData, jsonData);
 };
diff --git a/packages/grid/src/utils/clipboard/paste.ts b/packages/grid/src/utils/clipboard/paste.ts
index f8ae58f3..761b1325 100644
--- a/packages/grid/src/utils/clipboard/paste.ts
+++ b/packages/grid/src/utils/clipboard/paste.ts
@@ -1,5 +1,6 @@
-import { AITable, AITableFieldType, UpdateFieldValueOptions } from '../../core';
+import { AITable, FieldValue, UpdateFieldValueOptions } from '../../core';
 import { readFromClipboard, aiTableSpecialAttribute } from '../clipboard';
+import { ViewOperationMap } from '../field/model';
 
 const aiTableAttributePattern = new RegExp(`${aiTableSpecialAttribute}="(.+?)"`, 'm');
 
@@ -58,9 +59,10 @@ export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: Upd
     const startColIndex = aiTable.context!.visibleColumnsIndexMap().get(startFieldId) ?? 0;
     const visibleFields = AITable.getVisibleFields(aiTable);
     const linearRows = aiTable.context!.linearRows();
+    const references = aiTable.context!.references();
 
     pasteData.forEach((row, i) => {
-        row.forEach((value, j) => {
+        row.forEach((data, j) => {
             const targetRowIndex = startRowIndex + i;
             const targetColIndex = startColIndex + j;
             if (targetRowIndex >= linearRows.length || targetColIndex >= visibleFields.length) {
@@ -70,18 +72,26 @@ export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: Upd
             const targetRecord = linearRows[targetRowIndex];
             const targetField = visibleFields[targetColIndex];
 
-            // TODO 完善 handlePasteData 逻辑之后,移除这个 if 判断
-            if (targetField.type === AITableFieldType.text) {
+            let value: FieldValue | null = null;
+            if (isJson) {
+                const jsonData = JSON.parse(data);
+                const field = aiTable.fieldsMap()[jsonData.fieldId!];
+                const cellValue = jsonData.cellValue;
+                const originData = {
+                    field,
+                    cellValue
+                };
+                value = ViewOperationMap[targetField.type].pasteValue(jsonData.cellFullText, targetField, originData, references);
+            } else {
+                value = ViewOperationMap[targetField.type].pasteValue(data, targetField, null, references);
+            }
+
+            if (value !== null) {
                 updateValueFn({
-                    value: handlePasteData(aiTable, value, isJson),
+                    value,
                     path: [targetRecord._id, targetField._id]
                 });
             }
         });
     });
 };
-
-export const handlePasteData = (aiTable: AITable, value: string, isJson: boolean) => {
-    // TODO 处理不同 field 类型、处理边界粘贴
-    return isJson ? (JSON.parse(value)?.cellFullText ?? value) : value;
-};
diff --git a/packages/grid/src/utils/field/model/date.ts b/packages/grid/src/utils/field/model/date.ts
index d45ac83e..1afdfcb6 100644
--- a/packages/grid/src/utils/field/model/date.ts
+++ b/packages/grid/src/utils/field/model/date.ts
@@ -1,9 +1,10 @@
 import { fromUnixTime, subDays } from 'date-fns';
-import { isArray, isEmpty, TinyDate } from 'ngx-tethys/util';
+import { isArray, TinyDate } from 'ngx-tethys/util';
 import { Field } from './field';
 import { AITableFilterCondition, AITableFilterOperation } from '../../../types';
-import { DateFieldValue } from '../../../core';
+import { AITableField, AITableFieldType, DateFieldValue, FieldValue } from '../../../core';
 import { compareNumber } from '../operate';
+import { isEmpty } from '../../common';
 
 export class DateField extends Field {
     override isMeetFilter(condition: AITableFilterCondition<string>, cellValue: DateFieldValue) {
@@ -32,6 +33,39 @@ export class DateField extends Field {
         return compareNumber(value1, value2);
     }
 
+    override pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue }
+    ): FieldValue | null {
+        if (targetField.type === AITableFieldType.createdAt || targetField.type === AITableFieldType.updatedAt) {
+            return null;
+        }
+
+        if (originData) {
+            const { field, cellValue } = originData;
+            switch (field.type) {
+                case AITableFieldType.date:
+                    return cellValue;
+                case AITableFieldType.text:
+                    const dateValue = transformDateValue(cellValue);
+                    if (dateValue) {
+                        return dateValue;
+                    }
+                    break;
+                default:
+                    break;
+            }
+        } else {
+            const dateValue = transformDateValue(plainText);
+            if (dateValue) {
+                return dateValue;
+            }
+        }
+
+        return null;
+    }
+
     getTimeRange(value: string | number | number[]) {
         switch (value) {
             case 'today':
@@ -66,3 +100,16 @@ export class DateField extends Field {
 function cellValueToSortValue(cellValue: DateFieldValue): number {
     return cellValue?.timestamp;
 }
+
+function transformDateValue(text: string): FieldValue | null {
+    const value = text.trim();
+    const pattern = /^\d{4}-\d{1,2}-\d{1,2}$/;
+
+    if (value && !isEmpty(value) && pattern.test(value)) {
+        const dateValue = {
+            timestamp: new TinyDate(value).getUnixTime()
+        };
+        return dateValue;
+    }
+    return null;
+}
diff --git a/packages/grid/src/utils/field/model/field.ts b/packages/grid/src/utils/field/model/field.ts
index 5d1a782e..875fef6a 100644
--- a/packages/grid/src/utils/field/model/field.ts
+++ b/packages/grid/src/utils/field/model/field.ts
@@ -12,6 +12,14 @@ export abstract class Field {
         sortKey?: string
     ): number;
 
+    // 粘贴
+    abstract pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue } | null,
+        references?: AITableReferences
+    ): FieldValue | null;
+
     // 筛选
     isMeetFilter(condition: AITableFilterCondition, cellValue: FieldValue) {
         switch (condition.operation) {
diff --git a/packages/grid/src/utils/field/model/link.ts b/packages/grid/src/utils/field/model/link.ts
index a539b457..7e84671d 100644
--- a/packages/grid/src/utils/field/model/link.ts
+++ b/packages/grid/src/utils/field/model/link.ts
@@ -30,6 +30,10 @@ export class LinkField extends Field {
         }
         return texts;
     }
+
+    override pasteValue(): FieldValue | null {
+        return null;
+    }
 }
 
 function cellValueToSortValue(cellValue: LinkFieldValue): string | null {
diff --git a/packages/grid/src/utils/field/model/member.ts b/packages/grid/src/utils/field/model/member.ts
index 130557cc..847811f1 100644
--- a/packages/grid/src/utils/field/model/member.ts
+++ b/packages/grid/src/utils/field/model/member.ts
@@ -1,4 +1,5 @@
-import { AITableField, FieldValue, MemberFieldValue } from '../../../core';
+import { Id } from 'ngx-tethys/types';
+import { AITableField, AITableFieldType, FieldValue, MemberFieldValue, MemberSettings } from '../../../core';
 import { AITableFilterCondition, AITableFilterOperation, AITableReferences } from '../../../types';
 import { isEmpty } from '../../common';
 import { compareString, hasIntersect } from '../operate';
@@ -47,6 +48,50 @@ export class MemberField extends Field {
         }
         return fullText;
     }
+
+    override pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue },
+        references?: AITableReferences
+    ): FieldValue | null {
+        if (targetField.type == AITableFieldType.createdBy || targetField.type == AITableFieldType.updatedBy) {
+            return null;
+        }
+
+        const isMultiple = (targetField.settings as MemberSettings)?.is_multiple;
+        if (originData) {
+            const { field, cellValue } = originData;
+            switch (field.type) {
+                case AITableFieldType.member:
+                    if (Array.isArray(cellValue) && cellValue.length) {
+                        return isMultiple ? cellValue : [cellValue[0]];
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        plainText = plainText.trim();
+        const hasMemberInfo = references && references.members && Object.keys(references.members).length;
+        if (plainText && hasMemberInfo) {
+            const memberNames = plainText.split(',').map((id) => id.trim());
+            const memberInfos = Object.values(references.members);
+            let validMemberIds: MemberFieldValue = [];
+            memberNames.forEach((memberName) => {
+                const memberInfo = memberInfos.find((member) => member.display_name === memberName);
+                if (memberInfo) {
+                    validMemberIds.push(memberInfo.uid as Id);
+                }
+            });
+            if (validMemberIds.length) {
+                return isMultiple ? validMemberIds : [validMemberIds[0]];
+            }
+        }
+
+        return null;
+    }
 }
 
 function cellValueToSortValue(
diff --git a/packages/grid/src/utils/field/model/number.ts b/packages/grid/src/utils/field/model/number.ts
index e5224d7f..b4d303f2 100644
--- a/packages/grid/src/utils/field/model/number.ts
+++ b/packages/grid/src/utils/field/model/number.ts
@@ -1,4 +1,5 @@
-import { FieldValue } from '../../../core';
+import { helpers } from 'ngx-tethys/util';
+import { AITableField, AITableFieldType, FieldValue, SelectSettings } from '../../../core';
 import { AITableFilterCondition, AITableFilterOperation } from '../../../types';
 import { isEmpty } from '../../common';
 import { compareNumber } from '../operate';
@@ -31,4 +32,37 @@ export class NumberField extends Field {
     override compare(cellValue1: number, cellValue2: number): number {
         return compareNumber(cellValue1, cellValue2);
     }
+
+    override pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue }
+    ): FieldValue | null {
+        let text = plainText.trim();
+
+        if (originData) {
+            const { field, cellValue } = originData;
+            const fieldType = field.type;
+
+            switch (fieldType) {
+                case AITableFieldType.number:
+                case AITableFieldType.rate:
+                case AITableFieldType.progress:
+                    return cellValue;
+                case AITableFieldType.select:
+                    if (cellValue && Array.isArray(cellValue) && cellValue.length) {
+                        const optionsMap = helpers.keyBy((field.settings as SelectSettings).options || [], '_id');
+                        text = optionsMap[cellValue[0]]?.text;
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        if (text && !isEmpty(text) && !Number.isNaN(Number(text))) {
+            return Number(text);
+        }
+        return null;
+    }
 }
diff --git a/packages/grid/src/utils/field/model/progress.ts b/packages/grid/src/utils/field/model/progress.ts
index 18ee7713..3e68c60a 100644
--- a/packages/grid/src/utils/field/model/progress.ts
+++ b/packages/grid/src/utils/field/model/progress.ts
@@ -1,4 +1,5 @@
-import { FieldValue } from '../../../core';
+import { helpers } from 'ngx-tethys/util';
+import { AITableField, AITableFieldType, FieldValue, SelectSettings } from '../../../core';
 import { AITableFilterCondition, AITableFilterOperation } from '../../../types';
 import { compareNumber, isEmpty } from '../../index';
 import { Field } from './field';
@@ -38,4 +39,41 @@ export class ProgressField extends Field {
         }
         return fullText;
     }
+
+    override pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue }
+    ): FieldValue | null {
+        //  进度支持选中单元格后、验证、再提交
+
+        // let value: any = plainText.trim();
+        // if (originData) {
+        //     const { field, cellValue } = originData;
+        //     switch (field.type) {
+        //         case AITableFieldType.progress:
+        //         case AITableFieldType.rate:
+        //         case AITableFieldType.number:
+        //             value = cellValue;
+        //             break;
+        //         case AITableFieldType.select:
+        //             if (cellValue && Array.isArray(cellValue) && cellValue.length) {
+        //                 const optionsMap = helpers.keyBy((field.settings as SelectSettings).options || [], '_id');
+        //                 value = optionsMap[cellValue[0]]?.text;
+        //             }
+        //             break;
+        //         default:
+        //             break;
+        //     }
+        // }
+
+        // if (!isEmpty(value)) {
+        //     const progressValue = Number(value);
+        //     if (!Number.isNaN(progressValue) && progressValue >= 0 && progressValue <= 100) {
+        //         return progressValue;
+        //     }
+        // }
+
+        return null;
+    }
 }
diff --git a/packages/grid/src/utils/field/model/rate.ts b/packages/grid/src/utils/field/model/rate.ts
index ea489e26..9511b3c9 100644
--- a/packages/grid/src/utils/field/model/rate.ts
+++ b/packages/grid/src/utils/field/model/rate.ts
@@ -1,4 +1,5 @@
-import { RateFieldValue } from '../../../core';
+import { helpers } from 'ngx-tethys/util';
+import { AITableField, AITableFieldType, FieldValue, RateFieldValue, SelectSettings } from '../../../core';
 import { AITableFilterCondition, AITableFilterOperation } from '../../../types';
 import { isEmpty } from '../../common';
 import { compareNumber } from '../operate';
@@ -25,4 +26,42 @@ export class RateField extends Field {
     override compare(cellValue1: number, cellValue2: number): number {
         return compareNumber(cellValue1, cellValue2);
     }
+
+    override pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue }
+    ): FieldValue | null {
+        //  评分支持选中单元格后、验证、再提交
+
+        // let value: any = plainText.trim();
+        // if (originData) {
+        //     const { field, cellValue } = originData;
+        //     switch (field.type) {
+        //         case AITableFieldType.rate:
+        //         case AITableFieldType.number:
+        //         case AITableFieldType.progress:
+        //             value = cellValue;
+        //             break;
+        //         case AITableFieldType.select:
+        //             if (cellValue && Array.isArray(cellValue) && cellValue.length) {
+        //                 const optionsMap = helpers.keyBy((field.settings as SelectSettings).options || [], '_id');
+        //                 value = optionsMap[cellValue[0]]?.text;
+        //             }
+        //             break;
+        //         default:
+        //             break;
+        //     }
+        // }
+
+        // if (!isEmpty(value)) {
+        //     const rateValue = Number(value);
+        //     if (!Number.isNaN(rateValue) && rateValue > 0 && rateValue < 5) {
+        //         return Math.round(rateValue);
+        //     }
+        //     return 5;
+        // }
+
+        return null;
+    }
 }
diff --git a/packages/grid/src/utils/field/model/select.ts b/packages/grid/src/utils/field/model/select.ts
index 3713a495..9c63ea2b 100644
--- a/packages/grid/src/utils/field/model/select.ts
+++ b/packages/grid/src/utils/field/model/select.ts
@@ -40,6 +40,15 @@ export class SelectField extends Field {
         }
         return fullText;
     }
+
+    override pasteValue(
+        plainText: string,
+        targetField: AITableField,
+        originData?: { field: AITableField; cellValue: FieldValue }
+    ): FieldValue | null {
+        // TODO 后面接着做
+        return null;
+    }
 }
 
 function cellValueToSortValue(cellValue: SelectFieldValue, field: AITableField): string | null {
diff --git a/packages/grid/src/utils/field/model/text.ts b/packages/grid/src/utils/field/model/text.ts
index c70bcb42..3b7f9e0b 100644
--- a/packages/grid/src/utils/field/model/text.ts
+++ b/packages/grid/src/utils/field/model/text.ts
@@ -23,6 +23,10 @@ export class TextField extends Field {
         const value2 = cellValueToSortValue(cellValue2);
         return compareString(value1, value2);
     }
+
+    override pasteValue(plainText: string): FieldValue | null {
+        return plainText.trim();
+    }
 }
 
 function cellValueToSortValue(cellValue: FieldValue): string | null {

From 8ef58aa9e5d7014798f2b51d31099015e5b769f8 Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Wed, 19 Mar 2025 17:43:18 +0800
Subject: [PATCH 6/7] feat(grid): rename aiTableSpecialAttribute

---
 packages/grid/src/utils/clipboard/copy.ts | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/packages/grid/src/utils/clipboard/copy.ts b/packages/grid/src/utils/clipboard/copy.ts
index b62d3325..d9e0f865 100644
--- a/packages/grid/src/utils/clipboard/copy.ts
+++ b/packages/grid/src/utils/clipboard/copy.ts
@@ -3,7 +3,7 @@ import { ViewOperationMap } from '../field/model';
 import { transformCellValue } from '../cell';
 import { ClipboardData } from '../../types';
 
-export const aiTableSpecialAttribute = 'ai-table-json-value';
+export const aiTableSpecialAttribute = 'ai-table-fragment';
 
 const encodeClipboardJsonData = (data: any) => {
     const stringifiedData = JSON.stringify(data);
@@ -16,7 +16,6 @@ function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): Cli
         text: data.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
         html: `<table ${aiTableSpecialAttribute}="${encodeData}">${data.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
     };
-    console.log('====> formatClipboardData', formatClipboardData);
     return formatClipboardData;
 }
 
@@ -55,7 +54,5 @@ export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
 
     const clipboardData = Array.from(dataByRecordId.values());
     const jsonData = Array.from(jsonDataByRecordId.values());
-    // console.log('====> clipboardData', clipboardData);
-    console.log('====> jsonData', jsonData);
     return formatClipboardData(clipboardData, jsonData);
 };

From d8764dbd9b0fffafc89727a2310293b5560eb305 Mon Sep 17 00:00:00 2001
From: minlovehua <321512939@qq.com>
Date: Wed, 19 Mar 2025 18:25:16 +0800
Subject: [PATCH 7/7] feat(grid): support copy to clipbpard and paste to
 ai-table #WIK-16631

---
 packages/grid/src/types/clipboard.ts       |  8 +++++++
 packages/grid/src/utils/clipboard/copy.ts  | 28 +++++++++++-----------
 packages/grid/src/utils/clipboard/paste.ts |  8 +++----
 3 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/packages/grid/src/types/clipboard.ts b/packages/grid/src/types/clipboard.ts
index 3c5a5530..6cc4e9e7 100644
--- a/packages/grid/src/types/clipboard.ts
+++ b/packages/grid/src/types/clipboard.ts
@@ -1,4 +1,12 @@
+import { AITableField, FieldValue } from '../core';
+
 export interface ClipboardData {
     text?: string;
     html?: string;
 }
+
+export interface AITableCellContent {
+    field: AITableField;
+    cellValue: FieldValue;
+    cellFullText: string;
+}
diff --git a/packages/grid/src/utils/clipboard/copy.ts b/packages/grid/src/utils/clipboard/copy.ts
index d9e0f865..62ffc829 100644
--- a/packages/grid/src/utils/clipboard/copy.ts
+++ b/packages/grid/src/utils/clipboard/copy.ts
@@ -1,7 +1,7 @@
 import { AITable, AITableFieldType, AITableQueries } from '../../core';
 import { ViewOperationMap } from '../field/model';
 import { transformCellValue } from '../cell';
-import { ClipboardData } from '../../types';
+import { AITableCellContent, ClipboardData } from '../../types';
 
 export const aiTableSpecialAttribute = 'ai-table-fragment';
 
@@ -12,7 +12,7 @@ const encodeClipboardJsonData = (data: any) => {
 
 function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): ClipboardData {
     const encodeData = encodeClipboardJsonData(jsonData);
-    const formatClipboardData = {
+    const formatClipboardData: ClipboardData = {
         text: data.map((row) => row.map((column) => column.text).join('\t')).join('\r\n'),
         html: `<table ${aiTableSpecialAttribute}="${encodeData}">${data.map((row) => `<tr>${row.map((column) => `<td>${column.html}</td>`).join('')}</tr>`).join('')}</table>`
     };
@@ -21,8 +21,8 @@ function formatClipboardData(data: ClipboardData[][], jsonData: string[][]): Cli
 
 export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
     const copiedCells = Array.from(aiTable.selection().selectedCells);
-    const dataByRecordId = new Map<string, ClipboardData[]>();
-    const jsonDataByRecordId = new Map<string, string[]>();
+    const clipboardContentByRecordId = new Map<string, ClipboardData[]>();
+    const aiTableContentByRecordId = new Map<string, string[]>();
     if (!copiedCells.length) {
         return null;
     }
@@ -35,24 +35,24 @@ export const buildClipboardData = (aiTable: AITable): ClipboardData | null => {
         const references = aiTable.context!.references();
         const cellTexts: string[] = ViewOperationMap[field.type].cellFullText(transformValue, field, references);
 
-        let cellContent = {
+        let cellClipboardContent = {
             text: cellTexts.join(','),
             html: cellTexts.join(',')
         };
         if (field.type === AITableFieldType.link && cellValue && cellValue.url) {
-            cellContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
+            cellClipboardContent.html = `<a href="${cellValue.url}" target="_blank">${cellValue.text}</a>`;
         }
-        dataByRecordId.set(recordId, [...(dataByRecordId.get(recordId) || []), cellContent]);
+        clipboardContentByRecordId.set(recordId, [...(clipboardContentByRecordId.get(recordId) || []), cellClipboardContent]);
 
-        const cellJsonData = JSON.stringify({
-            fieldId,
+        const cellAITableContent: AITableCellContent = {
+            field,
             cellValue,
             cellFullText: cellTexts.join(',')
-        });
-        jsonDataByRecordId.set(recordId, [...(jsonDataByRecordId.get(recordId) || []), cellJsonData]);
+        };
+        aiTableContentByRecordId.set(recordId, [...(aiTableContentByRecordId.get(recordId) || []), JSON.stringify(cellAITableContent)]);
     });
 
-    const clipboardData = Array.from(dataByRecordId.values());
-    const jsonData = Array.from(jsonDataByRecordId.values());
-    return formatClipboardData(clipboardData, jsonData);
+    const clipboardData = Array.from(clipboardContentByRecordId.values());
+    const aiTableContentData = Array.from(aiTableContentByRecordId.values());
+    return formatClipboardData(clipboardData, aiTableContentData);
 };
diff --git a/packages/grid/src/utils/clipboard/paste.ts b/packages/grid/src/utils/clipboard/paste.ts
index 761b1325..fbfb255b 100644
--- a/packages/grid/src/utils/clipboard/paste.ts
+++ b/packages/grid/src/utils/clipboard/paste.ts
@@ -1,3 +1,4 @@
+import { AITableCellContent } from '../../types';
 import { AITable, FieldValue, UpdateFieldValueOptions } from '../../core';
 import { readFromClipboard, aiTableSpecialAttribute } from '../clipboard';
 import { ViewOperationMap } from '../field/model';
@@ -74,14 +75,13 @@ export const writeToAITable = async (aiTable: AITable, updateValueFn: (data: Upd
 
             let value: FieldValue | null = null;
             if (isJson) {
-                const jsonData = JSON.parse(data);
-                const field = aiTable.fieldsMap()[jsonData.fieldId!];
-                const cellValue = jsonData.cellValue;
+                const cellContent: AITableCellContent = JSON.parse(data);
+                const { field, cellValue, cellFullText } = cellContent;
                 const originData = {
                     field,
                     cellValue
                 };
-                value = ViewOperationMap[targetField.type].pasteValue(jsonData.cellFullText, targetField, originData, references);
+                value = ViewOperationMap[targetField.type].pasteValue(cellFullText, targetField, originData, references);
             } else {
                 value = ViewOperationMap[targetField.type].pasteValue(data, targetField, null, references);
             }