From 5a4b6fa7a427cfc7a4e3aed2dab882110c83cb0d Mon Sep 17 00:00:00 2001 From: Liang Jiaqing Date: Fri, 16 Oct 2026 11:38:19 +0800 Subject: [PATCH] chore(desktop): keep only private desktop placeholder --- frontends/desktop/.gitignore | 11 +- frontends/desktop/DESIGN.md | 100 - frontends/desktop/README.md | 8 + frontends/desktop/dist/README.md | 66 - .../desktop/dist/THIRD_PARTY_NOTICES.txt | 83 - .../desktop/dist/assets/Animation-DbFrgT1j.js | 1 - .../dist/assets/CollabPage-CG38jm3S.css | 1 - .../dist/assets/CollabPage-DD4zkzQv.js | 1 - .../desktop/dist/assets/IconFile-C8B3WX2U.js | 1 - .../assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 | Bin 28076 -> 0 bytes .../assets/KaTeX_AMS-Regular-DMm9YOAa.woff | Bin 33516 -> 0 bytes .../assets/KaTeX_AMS-Regular-DRggAlZN.ttf | Bin 63632 -> 0 bytes .../KaTeX_Caligraphic-Bold-ATXxdsX0.ttf | Bin 12368 -> 0 bytes .../KaTeX_Caligraphic-Bold-BEiXGLvX.woff | Bin 7716 -> 0 bytes .../KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 | Bin 6912 -> 0 bytes .../KaTeX_Caligraphic-Regular-CTRA-rTL.woff | Bin 7656 -> 0 bytes .../KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 | Bin 6908 -> 0 bytes .../KaTeX_Caligraphic-Regular-wX97UBjC.ttf | Bin 12344 -> 0 bytes .../assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf | Bin 19584 -> 0 bytes .../assets/KaTeX_Fraktur-Bold-BsDP51OF.woff | Bin 13296 -> 0 bytes .../assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 | Bin 11348 -> 0 bytes .../assets/KaTeX_Fraktur-Regular-CB_wures.ttf | Bin 19572 -> 0 bytes .../KaTeX_Fraktur-Regular-CTYiF6lA.woff2 | Bin 11316 -> 0 bytes .../KaTeX_Fraktur-Regular-Dxdc4cR9.woff | Bin 13208 -> 0 bytes .../assets/KaTeX_Main-Bold-Cx986IdX.woff2 | Bin 25324 -> 0 bytes .../dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff | Bin 29912 -> 0 bytes .../dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf | Bin 51336 -> 0 bytes .../KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 | Bin 16780 -> 0 bytes .../assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf | Bin 32968 -> 0 bytes .../KaTeX_Main-BoldItalic-SpSLRI95.woff | Bin 19412 -> 0 bytes .../assets/KaTeX_Main-Italic-3WenGoN9.ttf | Bin 33580 -> 0 bytes .../assets/KaTeX_Main-Italic-BMLOBm91.woff | Bin 19676 -> 0 bytes .../assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 | Bin 16988 -> 0 bytes .../assets/KaTeX_Main-Regular-B22Nviop.woff2 | Bin 26272 -> 0 bytes .../assets/KaTeX_Main-Regular-Dr94JaBh.woff | Bin 30772 -> 0 bytes .../assets/KaTeX_Main-Regular-ypZvNtVU.ttf | Bin 53580 -> 0 bytes .../assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf | Bin 31196 -> 0 bytes .../KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 | Bin 16400 -> 0 bytes .../KaTeX_Math-BoldItalic-iY-2wyZ7.woff | Bin 18668 -> 0 bytes .../assets/KaTeX_Math-Italic-DA0__PXp.woff | Bin 18748 -> 0 bytes .../assets/KaTeX_Math-Italic-flOr_0UB.ttf | Bin 31308 -> 0 bytes .../assets/KaTeX_Math-Italic-t53AETM-.woff2 | Bin 16440 -> 0 bytes .../assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf | Bin 24504 -> 0 bytes .../KaTeX_SansSerif-Bold-D1sUS0GD.woff2 | Bin 12216 -> 0 bytes .../assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff | Bin 14408 -> 0 bytes .../KaTeX_SansSerif-Italic-C3H0VqGB.woff2 | Bin 12028 -> 0 bytes .../KaTeX_SansSerif-Italic-DN2j7dab.woff | Bin 14112 -> 0 bytes .../KaTeX_SansSerif-Italic-YYjJ1zSn.ttf | Bin 22364 -> 0 bytes .../KaTeX_SansSerif-Regular-BNo7hRIc.ttf | Bin 19436 -> 0 bytes .../KaTeX_SansSerif-Regular-CS6fqUqJ.woff | Bin 12316 -> 0 bytes .../KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 | Bin 10344 -> 0 bytes .../assets/KaTeX_Script-Regular-C5JkGWo-.ttf | Bin 16648 -> 0 bytes .../KaTeX_Script-Regular-D3wIWfF6.woff2 | Bin 9644 -> 0 bytes .../assets/KaTeX_Script-Regular-D5yQViql.woff | Bin 10588 -> 0 bytes .../assets/KaTeX_Size1-Regular-C195tn64.woff | Bin 6496 -> 0 bytes .../assets/KaTeX_Size1-Regular-Dbsnue_I.ttf | Bin 12228 -> 0 bytes .../assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 | Bin 5468 -> 0 bytes .../assets/KaTeX_Size2-Regular-B7gKUWhC.ttf | Bin 11508 -> 0 bytes .../assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 | Bin 5208 -> 0 bytes .../assets/KaTeX_Size2-Regular-oD1tc_U0.woff | Bin 6188 -> 0 bytes .../assets/KaTeX_Size3-Regular-CTq5MqoE.woff | Bin 4420 -> 0 bytes .../assets/KaTeX_Size3-Regular-DgpXs0kz.ttf | Bin 7588 -> 0 bytes .../assets/KaTeX_Size4-Regular-BF-4gkZK.woff | Bin 5980 -> 0 bytes .../assets/KaTeX_Size4-Regular-DWFBv043.ttf | Bin 10364 -> 0 bytes .../assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 | Bin 4928 -> 0 bytes .../KaTeX_Typewriter-Regular-C0xS9mPB.woff | Bin 16028 -> 0 bytes .../KaTeX_Typewriter-Regular-CO6r4hn1.woff2 | Bin 13568 -> 0 bytes .../KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf | Bin 27556 -> 0 bytes .../dist/assets/MarkdownPart-Cp90Gu77.css | 1 - .../dist/assets/MarkdownPart-ZJKeOipX.js | 271 - .../dist/assets/ServicesPage-9DKyWUIu.js | 4 - .../dist/assets/ServicesPage-Cbm5nbW7.css | 1 - .../dist/assets/SummaryPart-zs-In9mf.js | 1 - .../desktop/dist/assets/TokenPage-8X0HZ3hU.js | 2 - .../dist/assets/TokenPage-DwLDOw_j.css | 1 - .../dist/assets/WindowsTitlebar-Byi-SYR_.js | 1 - .../dist/assets/WindowsTitlebar-U0YG9JNA.css | 1 - .../desktop/dist/assets/codicon-DjkITdqj.ttf | Bin 125828 -> 0 bytes .../desktop/dist/assets/feishu-9hxxyz3-.svg | 12 - frontends/desktop/dist/assets/ga-logo.svg | 58 - .../desktop/dist/assets/index-9FI8Jlf5.js | 1 - .../desktop/dist/assets/index-BkPDmlaQ.js | 4 - .../desktop/dist/assets/index-C-iCGtYr.js | 1 - .../desktop/dist/assets/index-ClU1uQYs.css | 1 - .../desktop/dist/assets/index-D0pGtk0y.css | 1 - .../desktop/dist/assets/index-D9Nakaf3.js | 1 - .../desktop/dist/assets/index-DkG9Cu-r.css | 1 - .../desktop/dist/assets/index-gTPS8Hpa.css | 1 - .../desktop/dist/assets/loading-6Qy4iUUr.css | 1 - .../desktop/dist/assets/loading-C2VTZYXF.js | 2 - .../desktop/dist/assets/main-gzsbzrvY.css | 1 - .../desktop/dist/assets/main-j7e_THPB.js | 36 - .../assets/markdown-preprocess-Cc2i34eF.js | 295 - .../assets/markdown-preprocess-Cp579UoJ.css | 1 - .../desktop/dist/assets/setup-BpPmqi-U.js | 2 - .../desktop/dist/assets/setup-D74O8rBf.css | 1 - .../dist/assets/tauri-compat-BTcpEvqB.css | 1 - .../dist/assets/tauri-compat-D_GD_wMe.js | 47 - frontends/desktop/dist/build-provenance.json | 9 - frontends/desktop/dist/fallback.html | 80 - frontends/desktop/dist/index.html | 38 - frontends/desktop/dist/loading.html | 36 - frontends/desktop/dist/setup.html | 54 - frontends/desktop/package.json | 12 - frontends/desktop/packaging/CHECKLIST.md | 48 - frontends/desktop/packaging/README.md | 118 - frontends/desktop/packaging/TODO.md | 85 - .../packaging/dmg-build-requirements.txt | 5 - .../packaging/python-runtime-requirements.txt | 37 - .../packaging/scripts/linux/install_linux.sh | 459 -- .../packaging/scripts/linux/uninstall.sh | 115 - .../packaging/scripts/macos/install_macos.sh | 208 - .../packaging/scripts/macos/uninstall.command | 115 - .../scripts/merge_desktop_settings.py | 39 - .../scripts/windows/install_windows.ps1 | 421 -- .../packaging/scripts/windows/uninstall.bat | 37 - .../scripts/windows/uninstall_windows.ps1 | 161 - .../desktop/release_qualification/README.md | 29 - .../release_qualification/linux/README.md | 23 - .../linux/run_linux_release_qualification.sh | 72 - .../release_qualification/macos/README.md | 28 - .../macos/run_macos_release_qualification.sh | 85 - .../run_release_qualification.py | 1027 --- .../verify_release_evidence.py | 181 - .../Invoke-WindowsReleaseQualification.ps1 | 661 -- .../release_qualification/windows/README.md | 65 - .../fixtures/foreign-port-listener.ps1 | 35 - frontends/desktop/scripts/gen_ds_store.py | 68 - frontends/desktop/scripts/post-dmg.sh | 153 - .../desktop/scripts/verify-compiled-dist.mjs | 401 -- .../desktop/src-tauri/.cargo/config.toml | 7 - frontends/desktop/src-tauri/Cargo.lock | 5789 --------------- frontends/desktop/src-tauri/Cargo.toml | 29 - frontends/desktop/src-tauri/build.rs | 39 - .../src-tauri/capabilities/default.json | 30 - .../desktop/src-tauri/capabilities/setup.json | 16 - frontends/desktop/src-tauri/icons/128x128.png | Bin 5253 -> 0 bytes .../desktop/src-tauri/icons/128x128@2x.png | Bin 10977 -> 0 bytes frontends/desktop/src-tauri/icons/32x32.png | Bin 1121 -> 0 bytes frontends/desktop/src-tauri/icons/icon.icns | Bin 108452 -> 0 bytes frontends/desktop/src-tauri/icons/icon.ico | Bin 19298 -> 0 bytes frontends/desktop/src-tauri/icons/icon.png | Bin 23564 -> 0 bytes .../permissions/bridge-commands.toml | 94 - frontends/desktop/src-tauri/src/lib.rs | 3792 ---------- frontends/desktop/src-tauri/src/main.rs | 5 - frontends/desktop/src-tauri/tauri.conf.json | 90 - .../desktop/src-tauri/tauri.e2e.conf.json | 19 - frontends/desktop/static/app.js | 6245 ----------------- .../desktop/static/assets/fonts/README.md | 34 - .../static/assets/fonts/azonix-wordmark.woff2 | Bin 6848 -> 0 bytes .../desktop/static/assets/fonts/fonts.css | 21 - .../assets/fonts/jetbrains-mono-latin.woff2 | Bin 31340 -> 0 bytes .../static/assets/fonts/lexend-latin.woff2 | Bin 39692 -> 0 bytes .../static/assets/fonts/noto-sans-latin.woff2 | Bin 35856 -> 0 bytes frontends/desktop/static/fallback.html | 142 - frontends/desktop/static/ga-web.js | 142 - frontends/desktop/static/i18n.js | 528 -- frontends/desktop/static/index.html | 705 -- frontends/desktop/static/loading.html | 50 - frontends/desktop/static/phosphor-icons.js | 101 - frontends/desktop/static/styles.css | 2668 ------- frontends/desktop/static/vendor/marked.min.js | 6 - 162 files changed, 12 insertions(+), 26468 deletions(-) delete mode 100644 frontends/desktop/DESIGN.md create mode 100644 frontends/desktop/README.md delete mode 100644 frontends/desktop/dist/README.md delete mode 100644 frontends/desktop/dist/THIRD_PARTY_NOTICES.txt delete mode 100644 frontends/desktop/dist/assets/Animation-DbFrgT1j.js delete mode 100644 frontends/desktop/dist/assets/CollabPage-CG38jm3S.css delete mode 100644 frontends/desktop/dist/assets/CollabPage-DD4zkzQv.js delete mode 100644 frontends/desktop/dist/assets/IconFile-C8B3WX2U.js delete mode 100644 frontends/desktop/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Script-Regular-D5yQViql.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size1-Regular-C195tn64.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf delete mode 100644 frontends/desktop/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff delete mode 100644 frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 delete mode 100644 frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf delete mode 100644 frontends/desktop/dist/assets/MarkdownPart-Cp90Gu77.css delete mode 100644 frontends/desktop/dist/assets/MarkdownPart-ZJKeOipX.js delete mode 100644 frontends/desktop/dist/assets/ServicesPage-9DKyWUIu.js delete mode 100644 frontends/desktop/dist/assets/ServicesPage-Cbm5nbW7.css delete mode 100644 frontends/desktop/dist/assets/SummaryPart-zs-In9mf.js delete mode 100644 frontends/desktop/dist/assets/TokenPage-8X0HZ3hU.js delete mode 100644 frontends/desktop/dist/assets/TokenPage-DwLDOw_j.css delete mode 100644 frontends/desktop/dist/assets/WindowsTitlebar-Byi-SYR_.js delete mode 100644 frontends/desktop/dist/assets/WindowsTitlebar-U0YG9JNA.css delete mode 100644 frontends/desktop/dist/assets/codicon-DjkITdqj.ttf delete mode 100644 frontends/desktop/dist/assets/feishu-9hxxyz3-.svg delete mode 100644 frontends/desktop/dist/assets/ga-logo.svg delete mode 100644 frontends/desktop/dist/assets/index-9FI8Jlf5.js delete mode 100644 frontends/desktop/dist/assets/index-BkPDmlaQ.js delete mode 100644 frontends/desktop/dist/assets/index-C-iCGtYr.js delete mode 100644 frontends/desktop/dist/assets/index-ClU1uQYs.css delete mode 100644 frontends/desktop/dist/assets/index-D0pGtk0y.css delete mode 100644 frontends/desktop/dist/assets/index-D9Nakaf3.js delete mode 100644 frontends/desktop/dist/assets/index-DkG9Cu-r.css delete mode 100644 frontends/desktop/dist/assets/index-gTPS8Hpa.css delete mode 100644 frontends/desktop/dist/assets/loading-6Qy4iUUr.css delete mode 100644 frontends/desktop/dist/assets/loading-C2VTZYXF.js delete mode 100644 frontends/desktop/dist/assets/main-gzsbzrvY.css delete mode 100644 frontends/desktop/dist/assets/main-j7e_THPB.js delete mode 100644 frontends/desktop/dist/assets/markdown-preprocess-Cc2i34eF.js delete mode 100644 frontends/desktop/dist/assets/markdown-preprocess-Cp579UoJ.css delete mode 100644 frontends/desktop/dist/assets/setup-BpPmqi-U.js delete mode 100644 frontends/desktop/dist/assets/setup-D74O8rBf.css delete mode 100644 frontends/desktop/dist/assets/tauri-compat-BTcpEvqB.css delete mode 100644 frontends/desktop/dist/assets/tauri-compat-D_GD_wMe.js delete mode 100644 frontends/desktop/dist/build-provenance.json delete mode 100644 frontends/desktop/dist/fallback.html delete mode 100644 frontends/desktop/dist/index.html delete mode 100644 frontends/desktop/dist/loading.html delete mode 100644 frontends/desktop/dist/setup.html delete mode 100644 frontends/desktop/package.json delete mode 100644 frontends/desktop/packaging/CHECKLIST.md delete mode 100644 frontends/desktop/packaging/README.md delete mode 100644 frontends/desktop/packaging/TODO.md delete mode 100644 frontends/desktop/packaging/dmg-build-requirements.txt delete mode 100644 frontends/desktop/packaging/python-runtime-requirements.txt delete mode 100755 frontends/desktop/packaging/scripts/linux/install_linux.sh delete mode 100644 frontends/desktop/packaging/scripts/linux/uninstall.sh delete mode 100755 frontends/desktop/packaging/scripts/macos/install_macos.sh delete mode 100644 frontends/desktop/packaging/scripts/macos/uninstall.command delete mode 100644 frontends/desktop/packaging/scripts/merge_desktop_settings.py delete mode 100644 frontends/desktop/packaging/scripts/windows/install_windows.ps1 delete mode 100644 frontends/desktop/packaging/scripts/windows/uninstall.bat delete mode 100644 frontends/desktop/packaging/scripts/windows/uninstall_windows.ps1 delete mode 100644 frontends/desktop/release_qualification/README.md delete mode 100644 frontends/desktop/release_qualification/linux/README.md delete mode 100755 frontends/desktop/release_qualification/linux/run_linux_release_qualification.sh delete mode 100644 frontends/desktop/release_qualification/macos/README.md delete mode 100755 frontends/desktop/release_qualification/macos/run_macos_release_qualification.sh delete mode 100644 frontends/desktop/release_qualification/run_release_qualification.py delete mode 100644 frontends/desktop/release_qualification/verify_release_evidence.py delete mode 100644 frontends/desktop/release_qualification/windows/Invoke-WindowsReleaseQualification.ps1 delete mode 100644 frontends/desktop/release_qualification/windows/README.md delete mode 100644 frontends/desktop/release_qualification/windows/fixtures/foreign-port-listener.ps1 delete mode 100644 frontends/desktop/scripts/gen_ds_store.py delete mode 100644 frontends/desktop/scripts/post-dmg.sh delete mode 100644 frontends/desktop/scripts/verify-compiled-dist.mjs delete mode 100644 frontends/desktop/src-tauri/.cargo/config.toml delete mode 100644 frontends/desktop/src-tauri/Cargo.lock delete mode 100644 frontends/desktop/src-tauri/Cargo.toml delete mode 100644 frontends/desktop/src-tauri/build.rs delete mode 100644 frontends/desktop/src-tauri/capabilities/default.json delete mode 100644 frontends/desktop/src-tauri/capabilities/setup.json delete mode 100644 frontends/desktop/src-tauri/icons/128x128.png delete mode 100644 frontends/desktop/src-tauri/icons/128x128@2x.png delete mode 100644 frontends/desktop/src-tauri/icons/32x32.png delete mode 100644 frontends/desktop/src-tauri/icons/icon.icns delete mode 100644 frontends/desktop/src-tauri/icons/icon.ico delete mode 100644 frontends/desktop/src-tauri/icons/icon.png delete mode 100644 frontends/desktop/src-tauri/permissions/bridge-commands.toml delete mode 100644 frontends/desktop/src-tauri/src/lib.rs delete mode 100644 frontends/desktop/src-tauri/src/main.rs delete mode 100644 frontends/desktop/src-tauri/tauri.conf.json delete mode 100644 frontends/desktop/src-tauri/tauri.e2e.conf.json delete mode 100644 frontends/desktop/static/app.js delete mode 100644 frontends/desktop/static/assets/fonts/README.md delete mode 100644 frontends/desktop/static/assets/fonts/azonix-wordmark.woff2 delete mode 100644 frontends/desktop/static/assets/fonts/fonts.css delete mode 100644 frontends/desktop/static/assets/fonts/jetbrains-mono-latin.woff2 delete mode 100644 frontends/desktop/static/assets/fonts/lexend-latin.woff2 delete mode 100644 frontends/desktop/static/assets/fonts/noto-sans-latin.woff2 delete mode 100644 frontends/desktop/static/fallback.html delete mode 100644 frontends/desktop/static/ga-web.js delete mode 100644 frontends/desktop/static/i18n.js delete mode 100644 frontends/desktop/static/index.html delete mode 100644 frontends/desktop/static/loading.html delete mode 100644 frontends/desktop/static/phosphor-icons.js delete mode 100644 frontends/desktop/static/styles.css delete mode 100644 frontends/desktop/static/vendor/marked.min.js diff --git a/frontends/desktop/.gitignore b/frontends/desktop/.gitignore index b051b24a..8e0dd943 100644 --- a/frontends/desktop/.gitignore +++ b/frontends/desktop/.gitignore @@ -1,7 +1,4 @@ -# Rust build artifacts -src-tauri/target/ -src-tauri/gen/ - -# Node -node_modules/ -package-lock.json +# Desktop is maintained separately. Local files are not part of this repository. +/* +!/.gitignore +!/README.md diff --git a/frontends/desktop/DESIGN.md b/frontends/desktop/DESIGN.md deleted file mode 100644 index 84788279..00000000 --- a/frontends/desktop/DESIGN.md +++ /dev/null @@ -1,100 +0,0 @@ -# GenericAgent Desktop 2.0 integration boundary - -GenericAgent Desktop 2.0 is a packaged Tauri desktop application with a generated React renderer and -Desktop-specific Python services. The React source is intentionally developed outside this upstream tree; -the generated distribution and all runtime interfaces required to execute it are tracked here. - -## Renderer ownership - -- `frontends/desktop/dist/**` contains the generated Desktop 2.0 HTML, JavaScript, CSS, fonts, and images. -- `frontends/desktop/static/**` is the independent Desktop v1 implementation and remains available unchanged. -- Tauri packages `dist/**`; it does not compile React during an upstream build. -- The public React source, issue tracker, and contribution home is - . -- The exact fork commit and generated-file content manifest are recorded in - `dist/build-provenance.json`. - -Generated files must not be edited by hand. Renderer changes are made and tested in the fork, rebuilt from an -accepted fork `main` commit, and submitted upstream as a refreshed `dist/**` tree with matching provenance. -The manifest identifies the submitted bytes; it is not a claim that later builds are bit-for-bit reproducible. - -The production Tauri configuration loads only the tracked asset origin and applies an explicit Content Security -Policy. React source tooling is absent from the upstream package path, while WebDriver permission remains isolated -to `tauri.e2e.conf.json` and is not granted by the production configuration. - -## Desktop runtime ownership - -Desktop 2.0 uses these repository-owned integration layers: - -- `frontends/desktop_bridge.py`: local HTTP/WebSocket API, model/session/upload/data routes, service control, - identity, and Desktop diagnostics. -- `frontends/conductor.py`: Desktop collaboration and model-routing integration. -- `frontends/cost_tracker.py`: Desktop usage and cost ledger. -- `frontends/data_backup.py`: validated Desktop data export, inspection, and import/merge behavior. -- `frontends/desktop_settings.py`: locked, atomic read/modify/write updates for shared Desktop preferences. -- `frontends/desktop/src-tauri/**`: native bootstrap, permissions, file pickers, runtime/source switching, - process/port recovery, window behavior, and package resource resolution. - -The package-owned bridge remains the executable service boundary. `GA_ROOT` can point it at a compatible -external GenericAgent repository, but does not replace the package-owned bridge or Tauri shell. - -Desktop data import first backs up the complete destination `memory/**` tree, then applies source-wins memory -files. Model responses remain add-only, and Desktop sessions are de-duplicated by session ID. Activation is staged -and rolled back on failure. Import is rejected while a managed session or Desktop extra has unfinished work; users -must also stop any independent TUI, CLI, or automation process before importing because those external processes -are outside the bridge's maintenance gate. The persistent cost ledger is initialized by the Desktop bridge only; -existing TUI and conductor processes retain their previous in-memory accounting hot path. - -Browser-origin requests are accepted only from the production Tauri origins, the fixed development origin, the -explicit E2E origin, or the bridge's own same origin. Native clients without an Origin remain supported, while -cross-site, null, lookalike, wrong-port, preflight, and WebSocket requests are rejected before route handling. -Backup exports cannot be written into any managed data or HTTP-readable directory. - -Managed-service state is based on the bridge-owned live child process, not merely a listener on the configured -port. A foreign conductor on production port `8900` is reported as an external port conflict and is never stopped -or counted as an owned running extra. The alternate conductor port is available only to the isolated package E2E -journey; production renderer and CSP contracts remain fixed to `8900`. - -On macOS, the package runtime uses a stable writable root and is refreshed through a package/build/source marker -with staged atomic activation. A previously shipped versioned runtime is migrated into that stable root. User -configuration, memory, responses, sessions, and token ledger data are preserved; a failed migration or activation -restores the previous runtime and marker. Matching markers keep the hot-start copy untouched. - -## Core runtime boundary - -Desktop 2.0 does not own or modify GenericAgent's Agent/LLM/Harness business runtime. In particular, the -integration does not change `agentmain.py`, LLM execution, Harness/Agent execution, inference, tool-calling, -or memory-scheduling semantics. Desktop bridge and conductor changes translate Desktop requests onto those -existing core contracts. - -## Version and release contract - -Desktop package metadata is `0.2.1` across npm, Cargo, Tauri, and generated provenance. Upstream packages consume -the tracked `dist/**` tree, so an upstream maintainer can build official Windows, Linux, and macOS artifacts -without the React source. A `desktop-portable-*` tag starts three read-only platform builders. One separate -publisher receives write permission only after all three succeed, validates the six expected files and checksums, -creates an invisible draft with all assets, and then exposes that single entry as a prerelease. Manual -`workflow_dispatch` runs produce candidate artifacts only and skip the publisher. - -The Linux builder runs on Ubuntu 22.04, isolates Rust target/bin caches from newer runner ABIs, and rejects any -ELF requiring a GLIBC version newer than 2.35. Windows remains unsigned and documents SmartScreen plus checksum -verification; macOS remains ad-hoc signed and unnotarized. - -The renderer still uses the existing local loopback bridge contract. This integration neither treats that inherited -platform requirement as a new release blocker nor claims to have changed operating-system loopback policy. - -## Validation layers - -- Compiled distribution contract: required entries, asset references, source-map/source leakage, E2E markers, - version consistency, exact provenance manifest, and the `dist` package entry. -- Python contracts: bridge, conductor, model routing, sessions, uploads, cost ledger, `GA_ROOT`, and data backup. -- Rust contracts: formatting, clippy, production and E2E feature tests, and - path/identity/port/diagnostic/bootstrap behavior. -- Native package contract: Linux Tauri build smoke plus the platform release workflow. - -Optional platform release qualification lives under `frontends/desktop/release_qualification/**`. -Its automated evidence gate validates package behavior and cleanup; screenshots and manual visual checklists -remain separate release-owner review material rather than CI pass/fail inputs. - -The richer React unit/browser/native E2E suites remain in the fork and run before its accepted `main` SHA is -used to refresh the generated upstream distribution. diff --git a/frontends/desktop/README.md b/frontends/desktop/README.md new file mode 100644 index 00000000..26cf25e1 --- /dev/null +++ b/frontends/desktop/README.md @@ -0,0 +1,8 @@ +# Desktop placeholder + +The desktop application is maintained independently in a private repository. +Its source code and build artifacts are not included in this repository. + +This directory is a placeholder, not a Git submodule or a repository link. +Desktop files may be placed here locally or by packaging tools; all contents +except this README and `.gitignore` are ignored by Git. diff --git a/frontends/desktop/dist/README.md b/frontends/desktop/dist/README.md deleted file mode 100644 index 58ba6682..00000000 --- a/frontends/desktop/dist/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# GenericAgent React Desktop 2.0 — compiled distribution - -This directory contains the v0.2.1 generated HTML, JavaScript, CSS, fonts, images, and license notices for the -GenericAgent React Desktop 2.0 renderer. It is build output, not the React development tree. - -## Source and contributions - -The public React source of truth and the place for renderer issues, pull requests, and design feedback is: - -- -- Exact source used for this distribution: - [`4a67226e18cb003db1210357ea4a283774773acc`](https://github.com/abraxas914/GenericAgent/commit/4a67226e18cb003db1210357ea4a283774773acc) - -Over the two-month React Desktop 2.0 development cycle, [abraxas914](https://github.com/abraxas914) led the new -renderer architecture and UI, Desktop bridge and Tauri integration, startup and recovery surfaces, package -validation, browser/native end-to-end coverage, renderer security hardening, and bundle optimization. Please -open an Issue or pull request in the fork above when proposing React renderer changes so source and generated -output stay synchronized. - -[yiqi-017](https://github.com/yiqi-017) contributed user-facing help and feedback contacts that remain in the -compiled renderer, including the -[`help and feedback` settings work](https://github.com/abraxas914/GenericAgent/commit/5ddf03bb152666637bdfcfa44f1fac3cff5a66b6) -and [`startup recovery` support contacts](https://github.com/abraxas914/GenericAgent/commit/2fb55d944e4444b08cb9ad76c13aef7a5788186b). -He also produced an earlier -[`compiled-only delivery` prototype](https://github.com/abraxas914/GenericAgent/commit/3e7ca6a2b20eefdb3ee335dc0d520c3b6d9d57f8) -that helped establish this upstream packaging boundary. The current generated tree was rebuilt by abraxas914 -from the exact merged source commit recorded above. - -## Third-party software: Semi Design - -This distribution contains code from these nine Semi Design packages, all resolved at version `2.101.0`: - -- `@douyinfe/semi-animation` -- `@douyinfe/semi-animation-react` -- `@douyinfe/semi-animation-styled` -- `@douyinfe/semi-foundation` -- `@douyinfe/semi-icons` -- `@douyinfe/semi-illustrations` -- `@douyinfe/semi-json-viewer-core` -- `@douyinfe/semi-theme-default` -- `@douyinfe/semi-ui` - -- Project: -- Website: -- Copyright (c) 2021 DouyinFE -- License: MIT - -The complete license text and bundled third-party notices are in -[`THIRD_PARTY_NOTICES.txt`](./THIRD_PARTY_NOTICES.txt) in this directory. - -## Repository boundary - -- `frontends/desktop/dist/**` is the generated React Desktop 2.0 renderer used by the packaged Tauri app. -- `frontends/desktop/static/**` remains the independent legacy Desktop v1 implementation; this distribution - neither replaces nor modifies its source files. -- The complete Desktop 2.0 integration also uses the repository's Desktop-specific bridge, conductor, cost - tracking, data-backup, bootstrap, permissions, and Tauri shell code. -- The integration does **not** modify GenericAgent's Agent, LLM, Harness, inference, tool-calling, or memory - scheduling core runtime. -- `build-provenance.json` records the source repository, exact source commit, generated file count, and a - content-manifest SHA-256. This README and the provenance file are excluded from that manifest. The manifest - identifies this exact generated tree; it is not a claim that later builds are bit-for-bit reproducible. - -Upstream maintainers can package the tracked distribution directly without the React source. React changes -should be built and validated in the fork, then submitted here as a refreshed generated tree with updated -provenance and matching Desktop integration contracts. diff --git a/frontends/desktop/dist/THIRD_PARTY_NOTICES.txt b/frontends/desktop/dist/THIRD_PARTY_NOTICES.txt deleted file mode 100644 index c21c5cc7..00000000 --- a/frontends/desktop/dist/THIRD_PARTY_NOTICES.txt +++ /dev/null @@ -1,83 +0,0 @@ -MIT License - -Copyright (c) 2021 DouyinFE - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -The code implementation of the external library is referenced by DouyinFe are: - -- animate.css - - The MIT License (MIT) - - Copyright (c) 2020 Daniel Eden - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - -- Ant Design - MIT LICENSE - - Copyright (c) 2015-present Ant UED, https://xtech.antfin.com/ - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -- rc-tree - - MIT LICENSE - - Copyright (c) 2015-present Alipay.com, https://www.alipay.com/ - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/frontends/desktop/dist/assets/Animation-DbFrgT1j.js b/frontends/desktop/dist/assets/Animation-DbFrgT1j.js deleted file mode 100644 index df4a0e28..00000000 --- a/frontends/desktop/dist/assets/Animation-DbFrgT1j.js +++ /dev/null @@ -1 +0,0 @@ -import{g as q}from"./tauri-compat-D_GD_wMe.js";var x,P;function Q(){if(P)return x;P=1;var i=4,t=.001,e=1e-7,s=10,n=11,a=1/(n-1),c=typeof Float32Array=="function";function l(u,o){return 1-3*o+3*u}function g(u,o){return 3*o-6*u}function T(u){return 3*u}function r(u,o,f){return((l(o,f)*u+g(o,f))*u+T(o))*u}function h(u,o,f){return 3*l(o,f)*u*u+2*g(o,f)*u+T(o)}function C(u,o,f,p,y){var m,_,F=0;do _=o+(f-o)/2,m=r(_,p,y)-u,m>0?f=_:o=_;while(Math.abs(m)>e&&++F=t?b(v,A,o,p):k===0?A:C(v,S,S+a,o,p)}return function(S){return S===0?0:S===1?1:r(F(S),f,y)}},x}var K=Q();const z=q(K);function B(i,t,e){return Math.min(Math.max(i,t),e)}function W(i){const t=/\(([^)]+)\)/.exec(i);return t?t[1].split(",").map(e=>parseFloat(e)):[]}function V(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.5;const e=B(i,1,10),s=B(t,.1,2);return n=>n===0||n===1?n:-e*Math.pow(2,10*(n-1))*Math.sin((n-1-s/(Math.PI*2)*Math.asin(1/e))*(Math.PI*2)/s)}const N=(()=>{const i=["Quad","Cubic","Quart","Quint","Sine","Expo","Circ","Back","Elastic"],t={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],V],Out:[[.25,.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],(s,n)=>a=>1-V(s,n)(1-a)],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],(s,n)=>a=>a<.5?V(s,n)(a*2)/2:1-V(s,n)(a*-2+2)/2]},e={linear:[.25,.25,.75,.75]};for(const s of Object.keys(t))t[s].forEach((n,a)=>{e["ease"+s+i[a]]=n});return e})();function D(i){if(typeof i=="function")return i;!i||typeof i!="string"?i="linear":i=i.trim();let t=i.split("(")[0];const e=W(i);let s;return t==="cubic-bezier"||t==="cubicBezier"?z(...e.length?e:N.linear):((!t||typeof t!="string"||typeof t=="string"&&N[t]==null)&&(t="linear"),s=N[t],typeof s=="function"?s(...e):e.length?z(...e):z(...s))}class Z{constructor(){this._eventMap=new Map}on(t,e){return t&&typeof e=="function"&&(this._eventMap.has(t)||this._eventMap.set(t,[]),this._eventMap.get(t).push(e)),this}once(t,e){var s=this;if(t&&typeof e=="function"){const n=function(){e(...arguments),s.off(t,n)};this.on(t,n)}}off(t,e){if(t)if(typeof e=="function"){const s=this._eventMap.get(t);if(Array.isArray(s)&&s.length){let n=-1;for(;(n=s.findIndex(a=>a===e))>-1;)s.splice(n,1)}}else e==null&&this._eventMap.delete(t);return this}emit(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),n=1;na(...s)),!0):!1}}function M(i){return!!(i&&typeof i=="object"&&(i.duration>0||typeof i.easing=="string"||typeof i.easing=="function"))}function H(i,t,e,s,n){for(const a of Object.keys(t)){const c=t[a],l=typeof c=="number"?c:c.val;if(!(typeof c=="object"&&c.done)){if(M(c)&&s&&n&&c.duration){if(c.duration+s<=n||l!==i[a])return!1}else if(typeof e[a]=="number"&&e[a]!==0)return!1;if(i[a]!==l)return!1}}return!0}function E(i){const t={};for(const e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=typeof i[e]=="number"?i[e]:i[e].val);return t}const I=[0,0];function L(i,t,e,s,n,a,c){const l=-n*(t-s),g=-a*e,T=l+g,r=e+T*i,h=t+r*i;return Math.abs(r)1&&arguments[1]!==void 0?arguments[1]:{};if(M(t)){const s=D(t.easing),n=typeof t.duration=="number"&&t.duration>0?t.duration:1e3;t=Object.assign(Object.assign({},t),{easing:s,duration:n})}let e=Object.assign(Object.assign(Object.assign({},Y),t),{done:!1});if(i&&typeof i=="object"&&"val"in i){if(M(i)){const s=D(i.easing),n=typeof i.duration=="number"&&i.duration>0?i.duration:parseInt(t.duration)||1e3;i=Object.assign(Object.assign({},i),{easing:s,duration:n})}e=Object.assign(Object.assign({},e),i)}else e=Object.assign(Object.assign({},e),{val:i});return e}const w=()=>Date.now(),O=1e3/60;class tt extends Z{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),this._props=Object.assign({},t),this._config=Object.assign({},e),this.initStates()}_wrapConfig(t,e){e=e&&typeof e=="object"?e:this._config;const s={};for(const n of Object.keys(t))s[n]=G(t[n],e);return s}initStates(t,e){t=t&&typeof t=="object"?t:this._props,e=e&&typeof e=="object"?e:this._config;const{from:s,to:n}=t;if(this._from={},s)for(const l of Object.keys(s))this._from[l]=typeof s[l]=="object"&&s[l].val?s[l].val:s[l];this._to=this._wrapConfig(n,e),this._delay=parseInt(e.delay)||0;const a=this._from&&E(this._from)||E(this._to),c=J(a);this._currentStyle=Object.assign({},a),this._currentVelocity=Object.assign({},c),this._lastIdealStyle=Object.assign({},a),this._lastIdealVelocity=Object.assign({},c),this.resetPlayStates(),this._frameCount=0,this._prevTime=0}animate(){this._timer==null&&(this._timer=requestAnimationFrame(t=>{const e=w();if(H(this._currentStyle,this._to,this._currentVelocity,this._startedTime||e,e)||this._ended||this._stopped){this._wasAnimating&&!this._ended&&!this._stopped&&(this._timer=setTimeout(()=>{clearTimeout(this._timer),this._timer=null,this._ended=!0,this.emit("rest",this.getCurrentStates())},O)),this.resetPlayStates();return}this._started||(this._started=!0,this.emit("start",this.getCurrentStates())),this._stopped=!1,this._paused=!1,this._wasAnimating=!0,this._startedTime===0&&(this._startedTime=e);const s=e,n=s-this._prevTime;this._prevTime=s,s-this._startedTime=this._startedTime+f&&(d=b,h.done=!0),a[r]=d,l[r]=d}else if(b!=null&&b===this._currentStyle[r])l[r]=b,g[r]=0,a[r]=b,c[r]=0;else{const o=(this._accumulatedTime[r]-Math.floor(this._accumulatedTime[r]/O)*O)/O,f=Math.floor(this._accumulatedTime[r]/O);for(let m=0;m0&&l.jsx("div",{className:"collab-msg-images",children:a.images.map((c,s)=>l.jsx("img",{src:c.base64||c.path,alt:c.name,className:"collab-msg-img"},s))}),a.files&&a.files.length>0&&l.jsx("div",{className:"collab-msg-files",children:a.files.map((c,s)=>l.jsx("span",{className:"collab-msg-file-chip",children:c.name},s))}),e||a.role==="system"?l.jsx(w,{content:a.msg}):l.jsx("span",{className:"collab-msg-text",children:a.msg})]})})}function P({since:a}){const{t:n}=N();return l.jsx("div",{className:"collab-msg collab-msg--conductor","data-slot":"collab-typing",children:l.jsxs("div",{className:"collab-thinking-bar",children:[l.jsx("span",{className:"collab-thinking-dot"}),l.jsx("span",{className:"collab-thinking-label",children:n("collab.typing")}),l.jsx("span",{className:"collab-thinking-time",children:l.jsx(S,{since:a})})]})})}function B(){const a=i(o=>o.messages),n=i(o=>o.conductorTyping),e=i(o=>o.connectionStatus),{t:c}=N(),{scrollRef:s}=C(),[m,x]=r.useState(1),d=r.useRef(null),p=r.useRef(0);r.useEffect(()=>{(e==="connecting"||a.length===0)&&x(1)},[e,a.length]);const b=$*m,u=Math.max(0,a.length-b),k=a.slice(u),t=u,g=r.useCallback(()=>{const o=s.current;o&&(d.current=o.scrollHeight-o.scrollTop),x(h=>h+1)},[s]);r.useLayoutEffect(()=>{if(d.current==null)return;if(u>=p.current){d.current=null,p.current=u;return}const o=s.current;o&&(o.scrollTop=o.scrollHeight-d.current),d.current=null,p.current=u},[u,s]),r.useEffect(()=>{p.current=u},[u]);const j=[...a].reverse().find(o=>o.role==="user"),y=o=>o>1e12?o:o*1e3,f=r.useRef(Date.now());return j!=null&&j.ts&&(f.current=y(j.ts)),e==="connecting"?l.jsx("div",{className:"collab-messages-area","data-slot":"collab-messages",children:l.jsxs("div",{className:"collab-connecting",children:[l.jsx("span",{className:"collab-connecting-dot"}),l.jsx("span",{children:c("status.connecting")})]})}):a.length===0?l.jsx("div",{className:"collab-messages-area","data-slot":"collab-messages",children:l.jsx("div",{className:"collab-empty",children:l.jsx("p",{children:c("collab.placeholder")})})}):l.jsx("div",{className:"collab-messages-area","data-slot":"collab-messages",ref:s,children:l.jsxs("div",{className:"collab-messages-scroll",children:[t>0&&l.jsxs("button",{type:"button","data-slot":"show-earlier-btn",onClick:g,children:["Show ",t," earlier"]}),k.map((o,h)=>l.jsx(D,{message:o},o.id||u+h)),n&&l.jsx(P,{since:f.current})]})})}function H(){const a=i(t=>t.sendMessage),n=i(t=>t.conductorTyping),e=i(t=>t.connectionStatus),c=i(t=>t.modelConfig),s=i(t=>t.runtimeModel),m=i(t=>t.loadModel),x=i(t=>t.selectModel),d=M(t=>t.defaultModelNo);r.useEffect(()=>{m()},[m]);const p=r.useCallback((t,g)=>{var f,o;const j=(f=g==null?void 0:g.files)==null?void 0:f.map(h=>({name:h.name,path:h.path})),y=(o=g==null?void 0:g.images)==null?void 0:o.map(h=>({name:h.name,path:h.path,base64:h.base64}));a(t,j,y)},[a]),b=r.useCallback(()=>{},[]),u=e!=="ready",k=(c==null?void 0:c.effective)??(c==null?void 0:c.configured)??d;return l.jsx("div",{className:"collab-composer-wrap","data-slot":"collab-composer","data-disabled":u||void 0,children:l.jsx(T,{onSend:p,onStop:b,isGenerating:n,hideStatusStack:!0,modelControl:l.jsx(W,{selectedNo:k,runningNo:s!=null&&s.running?s.effective:null,isRunning:!!(s!=null&&s.running),onSelect:x})})})}const L=[{key:"1",icon:"comment"},{key:"2",icon:"symbol-misc"},{key:"3",icon:"graph"},{key:"4",icon:"edit"}],F=["collab.chipProgress","collab.chipPause","collab.chipSummary"];function I({onChipClick:a}){const{t:n}=N();return l.jsxs("div",{className:"collab-welcome","data-slot":"collab-welcome",children:[l.jsx("h2",{className:"collab-welcome-title",children:n("collab.guideTitle")}),l.jsx("p",{className:"collab-welcome-sub",children:n("collab.guideWhen")}),l.jsx("div",{className:"collab-welcome-steps",children:L.map(e=>l.jsxs("div",{className:"collab-welcome-step",children:[l.jsx("span",{className:"collab-welcome-step-icon",children:l.jsx(v,{name:e.icon,size:"1rem"})}),l.jsxs("span",{className:"collab-welcome-step-text",children:[l.jsx("span",{className:"collab-welcome-step-label",children:n(`collab.guideStep${e.key}t`)}),l.jsx("span",{className:"collab-welcome-step-desc",children:n(`collab.guideStep${e.key}d`)})]})]},e.key))}),l.jsx("div",{className:"collab-welcome-chips",children:F.map(e=>l.jsx("button",{type:"button",className:"collab-welcome-chip",onClick:()=>a(n(e)),children:n(e)},e))})]})}function O(){const a=i(s=>s.workers),n=a.filter(s=>s.status==="running").length,e=a.filter(s=>s.status==="reported").length,c=a.filter(s=>s.status==="failed").length;return l.jsxs("div",{className:"collab-rail","data-slot":"collab-rail",children:[n>0&&l.jsxs("span",{className:"collab-rail-badge collab-rail-badge--running","data-slot":"collab-rail-run",children:[l.jsx("span",{className:"collab-rail-dot collab-rail-dot--running"}),l.jsx("span",{className:"collab-rail-n",children:n}),l.jsx("span",{className:"collab-rail-label",children:"active"})]}),e>0&&l.jsxs("span",{className:"collab-rail-badge collab-rail-badge--done","data-slot":"collab-rail-done",children:[l.jsx("span",{className:"collab-rail-dot collab-rail-dot--done"}),l.jsx("span",{className:"collab-rail-n",children:e}),l.jsx("span",{className:"collab-rail-label",children:"reported"})]}),c>0&&l.jsxs("span",{className:"collab-rail-badge collab-rail-badge--issue","data-slot":"collab-rail-issue",children:[l.jsx("span",{className:"collab-rail-dot collab-rail-dot--issue"}),l.jsx("span",{className:"collab-rail-n",children:c}),l.jsx("span",{className:"collab-rail-label",children:"failed"})]})]})}function A(a){if(!a)return"";const n=a>1e12?a:a*1e3,e=Math.max(0,Math.floor((Date.now()-n)/1e3));if(e<10)return"just now";if(e<60)return`${e}s ago`;const c=Math.floor(e/60);if(c<60)return`${c}m ago`;const s=Math.floor(c/60);return s<24?`${s}h ago`:`${Math.floor(s/24)}d ago`}function G({status:a}){switch(a){case"running":return l.jsx("span",{className:"collab-card-glyph collab-card-glyph--running"});case"reported":return l.jsx("span",{className:"collab-card-glyph collab-card-glyph--done",children:"✓"});case"paused":return l.jsx("span",{className:"collab-card-glyph collab-card-glyph--paused",children:"⏸"});case"failed":return l.jsx("span",{className:"collab-card-glyph collab-card-glyph--failed",children:"!"});case"terminated":return l.jsx("span",{className:"collab-card-glyph collab-card-glyph--terminated",children:"×"})}}function z({worker:a,onClick:n}){const{t:e}=N(),c=i(m=>m.killWorker),s=r.useCallback(m=>{m.preventDefault(),R.confirm({title:e("collab.terminateWorker"),content:e("collab.terminateWorkerConfirm",{name:a.title}),okText:e("collab.terminateWorker"),cancelText:e("common.cancel"),okType:"danger",onOk:async()=>{try{await c(a.id)}catch{E.error({content:e("collab.terminateWorkerFailed")})}}})},[a.id,a.title,c,e]);return l.jsxs("article",{className:`collab-card collab-card--${a.status}`,"data-slot":"collab-card",onClick:()=>n(a),onContextMenu:s,children:[l.jsxs("div",{className:"collab-card-status",children:[l.jsx(G,{status:a.status}),l.jsx("span",{className:"collab-card-status-text",children:a.status}),a.updatedAt&&l.jsx("span",{className:"collab-card-time",children:A(a.updatedAt)})]}),l.jsx("div",{className:"collab-card-title",children:a.title}),l.jsx("div",{className:"collab-card-summary",children:a.summary})]})}function J({worker:a,onClose:n}){return l.jsxs("div",{className:"collab-drawer-wrap","data-slot":"collab-drawer-wrap",children:[l.jsx("div",{className:"collab-drawer-backdrop",onClick:n}),l.jsxs("aside",{className:"collab-drawer","data-slot":"collab-drawer",children:[l.jsxs("div",{className:"collab-drawer-head",children:[l.jsx("span",{className:"collab-drawer-title",children:a.title}),l.jsx("button",{className:"collab-drawer-close",onClick:n,"aria-label":"Close",children:l.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:l.jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]}),l.jsx("div",{className:"collab-drawer-body",children:a.fullReply?l.jsx(w,{content:a.fullReply}):l.jsx("p",{className:"collab-drawer-empty",children:"No output yet."})})]})]})}function K({collapsed:a,onToggle:n}){const e=i(d=>d.workers),[c,s]=r.useState(null),m=r.useCallback(d=>{s(d)},[]),x=r.useCallback(()=>{s(null)},[]);return l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:`collab-worker-panel ${a?"collab-worker-panel--collapsed":""}`,"data-slot":"collab-worker-panel",children:[l.jsxs("div",{className:"collab-worker-panel-head",children:[!a&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"collab-worker-panel-title",children:"Agents"}),l.jsx("span",{className:"collab-worker-panel-count",children:e.length})]}),l.jsx("button",{className:"collab-panel-collapse-btn",onClick:n,"aria-label":a?"Show agents panel":"Hide agents panel",children:l.jsx(v,{name:a?"layout-sidebar-right-off":"layout-sidebar-right",size:"1rem"})})]}),!a&&(e.length>0?l.jsx("div",{className:"collab-worker-list",children:e.map(d=>l.jsx(z,{worker:d,onClick:m},d.id))}):l.jsx("div",{className:"collab-worker-empty",children:"No agents yet"}))]}),c&&l.jsx(J,{worker:c,onClose:x})]})}function Y(){const{t:a}=N(),n=i(b=>b.connectionStatus),e=i(b=>b.messages),c=i(b=>b.connect),s=i(b=>b.sendMessage),[m,x]=r.useState(!0);r.useEffect(()=>{c()},[c]);const d=r.useCallback(b=>{s(b)},[s]);if(n==="offline")return l.jsx("div",{className:"collab-page","data-slot":"collab-page",children:l.jsxs("div",{className:"collab-offline",children:[l.jsx("div",{className:"collab-offline-icon",children:"⚡"}),l.jsx("h3",{children:a("collab.offlineTitle")}),l.jsx("p",{children:a("collab.offlineSub")}),l.jsx("button",{className:"collab-retry-btn",onClick:c,children:a("collab.retry")})]})});const p=n==="ready"&&e.length===0;return l.jsxs("div",{className:"collab-page","data-slot":"collab-page","data-empty":p||void 0,children:[l.jsxs("div",{className:"collab-main",children:[l.jsx(O,{}),l.jsxs("div",{className:"collab-chat-area",children:[p?l.jsx(I,{onChipClick:d}):l.jsx(B,{}),l.jsx(H,{})]})]}),l.jsx(K,{collapsed:!m,onToggle:()=>x(b=>!b)})]})}export{Y as CollabPage}; diff --git a/frontends/desktop/dist/assets/IconFile-C8B3WX2U.js b/frontends/desktop/dist/assets/IconFile-C8B3WX2U.js deleted file mode 100644 index bdfcba8c..00000000 --- a/frontends/desktop/dist/assets/IconFile-C8B3WX2U.js +++ /dev/null @@ -1 +0,0 @@ -import{c as t,b as e}from"./tauri-compat-D_GD_wMe.js";function n(a){return e.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},a),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2a1 1 0 0 0-1-1H6a2 2 0 0 0-2 2v18c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V10a1 1 0 0 0-1-1h-5a2 2 0 0 1-2-2V2ZM7 8a1 1 0 0 1 1-1h1a1 1 0 0 1 0 2H8a1 1 0 0 1-1-1Zm0 5a1 1 0 0 1 1-1h8a1 1 0 1 1 0 2H8a1 1 0 0 1-1-1Zm1 4a1 1 0 1 0 0 2h8a1 1 0 1 0 0-2H8Zm11.07-9.5H14.5a1 1 0 0 1-1-1V1.93a.8.8 0 0 1 1.37-.56l4.76 4.76a.8.8 0 0 1-.56 1.37Z",fill:"currentColor"}))}const l=t(n,"file");export{l as I}; diff --git a/frontends/desktop/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 b/frontends/desktop/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 deleted file mode 100644 index 0acaaff03d4bb7606de02a827aeee338e5a86910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28076 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 diff --git a/frontends/desktop/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf b/frontends/desktop/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf deleted file mode 100644 index c6f9a5e7c03f9e64e9c7b4773a8e37ade8eaf406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63632 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 G2<`xUL{2yW diff --git a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff b/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff deleted file mode 100644 index 9bdd534fd2beb9b878f0219da9d63ffba56677e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7656 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 Mepdy)y#Y}F4=Hd9=l}o! diff --git a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 b/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 deleted file mode 100644 index 75344a1f98e37e2c631e178065854c3a81fb842f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6908 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 CFgb+) diff --git a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf b/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf deleted file mode 100644 index f522294ff0f3f8c52dfdaef7ebfaa06ebfcfaabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12344 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 b/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 deleted file mode 100644 index 395f28beac23c7b0f7f3a1e714bd8dac253dd3bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11348 zcmV-aEUVLZPew8T0RR9104!7h4gdfE08HQj04x0f0RR9100000000000000000000 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 bnfbLfgSm6Day;iB;wah|00962|Nj6Fv8wea diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf b/frontends/desktop/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf deleted file mode 100644 index 4060e627dc341c1854260cbc3f7386e222a4d297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51336 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 Y{My=5Zj3WbM|mX<0#Lulu=APmKiR?A3IG5A diff --git a/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 b/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 deleted file mode 100644 index 5931794de4a2a485fa70099bf2659b145976d043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16780 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf b/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf deleted file mode 100644 index dc007977ee709a236d9e82719cf7d4e5577a81b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32968 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff b/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff deleted file mode 100644 index 67807b0bd4f867853271f5917fb3adf377f93f53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19412 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff b/frontends/desktop/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff deleted file mode 100644 index 6f43b594b6c1d863a0e3f93b001f8dd503316464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19676 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 b/frontends/desktop/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 deleted file mode 100644 index b50920e138807f385d0b0359f4f0f09891f18406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16988 zcmV(>K-j-`Pew8T0RR91076^<4gdfE0E4su073x(0RR9100000000000000000000 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 b/frontends/desktop/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 deleted file mode 100644 index eb24a7ba282b03d830fa6c63ee897d92a5188736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26272 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�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 bkH82T%!~T~dOL3iZSfI!+IWoKhyte*`46Vs diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff b/frontends/desktop/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff deleted file mode 100644 index 21f5812968c42392a3eaea9b0c6320870b6b8b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30772 zcmY&;Q;;r9tnD|p_t>^=+qP}nwr$(?9^1C|*tX7p>YkU|Rjay_TB|yF>U1UU@?v5D zAi#gig9QNpzx#sB|Fi%1{Qoa`WqKw6z~bmXukwE|5bcxVG`2N#001mG003Yt002aV zZ0}US*v*9i0C1}KkHhsJw190f+07ixZ2@XBpBBLOzc5i3*0K1{`Clx<|JelpfdmQz z0^Y*b#p6F-%zv@`#{+elC*ydxu{ZvYXM*vckNZFH^=qeE+ZuZOcdzl=|7i(;=HTb; z3~f#Si}}CYfb##-dgxdCCOFtTy8r+#A^+u71^_^asJbaN9Tqy4u;eOgen$MYFMjKr&ti>na+jqz-Ybx;jUT7rpi=M zufa(yA-TkdCn1q)EGvM2_hiax`gmi(0EflrdclzrY4)wlE?XoOGM65Zbzu31KryOv zDKlP~=VUIvYc(&_n4V2Nx|(ZkU{Ya`SLxl|_7eInvM;JKdC-~hF59%J{8gZ8s*xA(-Zy@VkPzVn;oDCiUoZ~y zd`=a4_!T~VIKf`-zr{LHRR`Z6oArG{z)^ZL&nGLA+uSoxbS8Ol`V7aokBT3Xo(hP( z+9AA$K0@4d8K?G(+Z{kE=#z$hPB}TJAG|HIE* zTQ)h#44y8HVIs_R_t=|UHjp!==565A(?KYTQlro?#(5^lyUz(WLb73Dy7B!}-xD1P zBH1c+Te}vNYtBs%bFya8%x)LtSejr>!emav;;Tc**d7miFAk0r&T!Ij7OY$jnucxy z%HMehZ4oCYujr8myR;h2H!=^$hH>=^?wg_l19r=c?+gwXnd~g$Cboc^n#T;Gt@e15 zn;uQUSO<7RPYBQesCs?#bF7jh#u$!u`;-2GfOQ>eAgjw|dNTNpOt#&dof28b+4b-D z1fmEtM39qlX9b~H_kRdEv@cz%FS=d&YVOA|qbvJy8))2-CdMgS5Wl}~c^%9v&l3l- zS+#zbDbs7Mcu{2*_CV!qJn2B{UA9m%FVT}&&KZ`nx4;WB%$(@KPfUVSfPtjFo-EwJfkt27^E z8Z)JXmXhG|m;gy3`tV#s08jr&+bll_DV@5LksaIScMWbwYM|7_m z*q7eiB(rN%wd`+50sA4=p8%zW24;l;l4=}Qre-<E_K3s81mK+|tN8@qM z@~FGC@FbM5wrjISp(V$f=I=6`o)0`4&8lfVAS#R~s{pImvBny$#a@WXCicNcM3rwr z`-uMJHht8Q6Am=sG#SWExcG^#6K@)Ywm`%UXh>yIZIxgkcN<5=Rp4C$Hy4XsKO|q6 z8Ah@dL1L9~vD(b4?ty|*nqYZL65V+vT2wCqWK=vUKmSi}pA38d*ZRRP<9Ny^nKR_g zJ!Mr2PCX~Dn0GYi;7d{_r@d3urdBG|ab=$i%To_h)LHWcu9_x}06{$Beo8A2s6@(^4B_=o#4

Yqh7OdB% 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�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 diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf b/frontends/desktop/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf deleted file mode 100644 index dd45e1ed2e18b32c516d9b481ebed3cb8bffa711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53580 zcmd442bd&Rc`n@NRIci-?&_|t>YUT0p3ptrljF|J##wFDMrl{lYJ<`$AR#0nAqkX0 zB*_AcWPEL|Ot6Fyw%{5tV8CQ!urb%h27>@|eYu1m8*T6Zo>M&=KoUHD{`)-t&g@Kg zRdv<(edo*JjF0$yKGS!HPw*Yux?^x;=`S{p`+QG+5JwMPdez~Rm4EvFoX_`^?ehsc zFTL@G9K9;u_W3?l!})!epFDciCG}Ic`g|WchMV}09=`r0j)#1{udKsw_2`v1U;ang zqqx`bO~kGc*cp6`!wRHLPmGDvmsI z*~kcup8C-U`BPl8>Lb3tqM!E#eQBTiv=h=P9qEfSTa6JXYEwln7OE8*aqz}_J=$!o z7UQvUjZiC0No_WsO9mo67A?{@M+#7xRgd8%o*f;Adap z7`erk{R?~jMllgDR&oQ=t)6u71r7nWvC}hx2H1A^4g$7)yG9gFg?0n5F_>%`Rl2Vk zS@6aqNKsMjF33eiW)uPv;nDW_Z*UBE0+PjwgdglPjrN%N)7~CY^oQv-@=?5!bvbYW zc`~TW7hP;eZ@5m@gX{wD@HrQlp^w#qxue_+?)KiMBp9)GK>h2_pSM9N-iiqZLd zfhqyNBy8S71ljPe(3JowQ+`SJr4k5AxI&T%er^Wa``V{JLq0-j#9Xz|4Rs5=j&G^x88+PKDM3+Xqqt5z`Sj zn{mbT9x>RH=o#8Lp45f9d{HGU5Gmc8nWti;Sa0+SGNqH6K>DW}&pJ7wIwBGhC6p3- zXK&xk0oPFLbrP8D8@Hs0lXaaeq3aCtpMnui9U5IZ5!DCl;feZOSc

viU|OFj=e4 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 T)YS6}E-Q5R&CfXgJ?`xQe`ny2 diff --git a/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 b/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 deleted file mode 100644 index 29657023adc09956249f6295746c8ce4469b50d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16400 zcmV+rK<~eIPew8T0RR9106-7`4gdfE0D43K06(+<0RR9100000000000000000000 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff b/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff deleted file mode 100644 index 0ae390d74c9f665cf8b1e5ea5483395da7513444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18668 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�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 J00IC101u*7EU^Fp diff --git a/frontends/desktop/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff b/frontends/desktop/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff deleted file mode 100644 index eb5159d4c1ca83fb92b3190223698427df0e010c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18748 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 G#ECDig^RoZ diff --git a/frontends/desktop/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 b/frontends/desktop/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 deleted file mode 100644 index 215c143fd7805a5c2b222bd7892a1a2b09610020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16440 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 diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 b/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 deleted file mode 100644 index cfaa3bda59246b49e94298478d6de3b3208066c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12216 zcmV;pFGtXKPew8T0RR91057-z4gdfE0AMHp054wv0RR9100000000000000000000 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 G>;nKVNojrn diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff b/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff deleted file mode 100644 index 8d47c02d9408d34b2a9d566c0fe0d42bf82fb735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14408 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 diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 b/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 deleted file mode 100644 index 349c06dc609f896392fd5bc8b364d3bc3efc9330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12028 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 ZM6wWJqL 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 diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf b/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf deleted file mode 100644 index 537279f6bd2184ed32f1a5168850609147d58ee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19436 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 diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff b/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff deleted file mode 100644 index 31b84829b42edae20d0148eeec0d922dad2108c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12316 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 DqysK0 diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 b/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 deleted file mode 100644 index a90eea85f6f7bded69ff5d40114447a6d8b48cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10344 zcmV-uD3{lFPew8T0RR9104Qhx4gdfE08C&204NXu0RR9100000000000000000000 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 GG{*pT{>~Tx diff --git a/frontends/desktop/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf b/frontends/desktop/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf deleted file mode 100644 index fd679bf374af72f2a183b97b40c9c7e9e51fbe5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16648 zcmb_@36LAtd1k-Y_kl*^YTQ5r7yvW42fzTBdj^<$hU8o%XLyJ+vfV%vWZ=rbvYF$PU20Kv*pw#uJR@}x&P}1 zhNL1To74g%`t^JNyT1Q?fA>&`q9~Pmj-sip18c?d40rxZ6qS1kYPU{Z+`dA+jB;@Q z*Kj{|>aj-+=`^)SQNw=*_oXve&R#rO_{XOxDi1WOa(4Ub6{y!JY7#D#aQ4CzXOQrv z6qNslqB1+@PH*p=`iJHXipsX3u67P81Q+^WF#ZnQ_nf=<==F_XVxe=E%=h$#%cr(q zJMxKnxF_RIT-?5Xh57^aAK-o&?u|>^7f)~h?z1ma)CkPUymaOA)kg<^=hiro{sgq2 zyYk5CE8m&=%azFJ?9IV9=Bjr`W>aZ&lHZ`ec$VGU!2{p@epxWT;0*f>TQn^!PL zV}y$Z4vP|Y^)&ls^~`~yR}&o}m)+?}`$UxM(_M3{R#YA)Q?l2rrx5YFMRIJPkww& zq03nmCqSF{RqDVV0x$gPcI*Y@36|CccmOORbY)WA0iQ5>pxR+sf?yB-y4(Za0qfGh zBc0H7zV&K4l>qKpv>vzBWGB$v+&r!-m!GqKajiDeFn?txs7Pmc$ICKSTzLUHqj z^~+NdRvfIlRFAAg1V=sZnc0_6F%~q3u8uTfk@4%i;-2sr(TGl0j;+%Or9jkFgpq>4 zm|-e#=R0%-{}1Xa^#Ub){+VkhLKq~$4a|-wOuo2*X_ayf#Bk)u!79Ow_zHv7ot=%QU@)IVQ|=w2M0FZZNny)u(!1eZ=L>1tS0fX|9z_eSFBQJF5P4n99vSrYJk%LpzU z($G*OGq642kFk!!LuWjQ?tiiZIyiaf&*=@&!Bf=Z)O$e(pMK)uvk3`w&_z_sQV#-H z1%M%Xkce}hJ=6iSj$urvOkBMLOB2ry`UFQyow_Y>wMK%LWNl!;M4IElWLkVhdZj`- z!@qy5ju&Hob$QqDEcF$6pv1o7WVty-bD7rraow;;zVa>-fGNPTL(5o^*ee}|kQzKFQG_5W8 z+zT_DHjKETcx#4Xd5jRvV}1XJBeq@Mt;*$Rw`%JpEb`9An-_22#Ed2Ng*)K0@RzCg zQy&GX|M1Jt2t?{l=m}DLP~Ek3T|;*duwal(you0qUci@_Nnq7pE%8VMUKsK|TA;bh zWbj$06@{rfp3WOjr4q!wmHTVRCt~fn16fu17!v1m9!DsV^+%$r$g`qN@i>H-Pgi3+ zuZ0#pT)N*FW-y%+Yi^+!Dkpd>Ct^zuh4DNzR17yHj9nvcE|eF*wFMa7;g0sid1q}_ zK(zkZ)!9=T&lf)ZlZcZUI~D`rdOqX~x`lmD`jxXbHn;2)B7soTsWYl1!U(b_?v%WC zIp=cPb$bwrx$Jtci=|zH2>WJz`srfCFR9}Z*KC+q6*i2OR>p>~BP^s(U-;B(XX-iPqfB+M97`GivuuWG zp$N#J4*+(@UG2ea3P0cpUu1>}9a~l>7S6Ipmg6Hv3I5e!%i#(T(PkT9+jk5>dThpBSVA@|R2pmm2dVAA3 zEC+Oj%M?{5iX=~6MYMy)y*-H695kDDlzw+79G^In^ar!OJ`KO=P%vgh2Y#7nLjhQr z5HL9GOl=ioxq(J+5bHE{BE&g+Rc<^pw@>A=rKQUPVuWx&5P$Slm5*xnfU#Jdk~qm7 zgjH~Me;zb0XdD~}4n$ks!qUn!xW_I1(8` zb*Bvq9bJNMR^Sm&$2rbT)Ujjk$bj`~hxzGh0(#sHGcAKl8c7e-@k^W;r`CQys?dTS zeX#IQOOfUo%=JOP0&xqppHk3uB$f1uloY=SEh#7Ro-i}0t;CK5vQfO zl3NG_Be|@OS*b6nip61?)?*KpVtUWq;igTH1T8Q$k>P!KC>p7RyrF9%qyN++9yErr z7)|y+ojR`I5mg9AA6xI!5jb`n5>rF?Sr>K-n6ZcAF-LNwmFS<0234oKWHUnt2(lTO zbNevo^^Pp27#;~x9_P~nQ;L<+x#>nzU}V)6JTYE!+A8RfyAp~d-*6!Lz%N8ev=F}Y zC(Jj1OK(!Y3S9d9XAg;Hw9wHf(*y#KyybeuR3yue0+IlK!i))lXSMnmt`j4xTf9u{ zdAtGeKUN)J-{r_%7Fy;M!arc187gq#uDXU4DuJcYi&PABd6wuBfJrwsI@xKlLdtp# z3*r8P+i_qtMDq+?{uvZ72F0^)E(^W|S}r{BbqK)`8<=!e2FueBoq=_7I5;sH8tfMx zS9sB|Rh@z8pnyl_{EZiff{7gu%_?~_gj6)P5(v-|UU__YL5)AyV0i4%`L$nhA|}mZ z7U6XIpyJl-y4NXl0~uUdg>a5>!QD@*4;# z?|((bqna`>e9eJS&#~CSQjtADa}35pQ`*qna=(DylP9 zgcy?7du=>Y-&ot00#mFAJCm;XY0MNMXoka3R&_-ks_qZkS&o+%buk$51YOT0+0Yx4 z#KR)r$^=Nm@SX3`w?GX1IE8yQ=c=GDmIYj)M z30lYZz;Rf`rnuh=-X3-;_PB}A?`avaisWkvy@?d~t^q)|qhe6ScU8wkvksg>B)qp~ zvAijaz^qFM^uhVsiqD`WFm53E9AD}yh=>6l2yhGthU0qEF0l1{W6{aloSf>dJ?NsH z&%A$aM0OnjYZw~4T6xfGe-F(h^Ga~M_ri&1Di|%F9ZXCrT+~S?m&VqA_?v?euVrU0 z??ae5db3{*F$n)Q12H*myZGMpG^aZlP5@N3R4xzB!s`O@^czmMv;U->wh7ZCJa+ba z!K`sEXFA5x?hidMXv5QPK0f2g8+I@2eiM$qwxLWUzA}_72NPxNkLSZDGagskZKDUT zudn~`iv`3DZk<7TzM@r~jA`e-$$TF8^I7T(#LnG3ZpMf4lm!rRFC<{tb1wIsfQaau z5rO4Tx|S&6PFQ_Rmqhq$c`qW%L|HoK$y2IByh!v0EF@_I&cKZhaRAH>j3NI>ssz5B z0q$XcHx8*KxQ-31)bLr}L*wy%mrw2=n8kN(6I0K*o!N4JdjCA{chFKY5e#aI=JE(O zZ^nilZsd(j>a-9|JB83-jrVeKPOW9YcR|ADb?|nKJ*6Q*JbKQ!(vKzDr!gD@hfz9l zG|Yzi(v!my&BrpDG$3;WP08UE9HHfsBv%>%TY!|?SQPgAf;P?;XMEr>?6nL+E`gr=8hAkz zVK{E+)!ZD1c%<_Pl@eU9Fmf)+$??)yG3;+(?}o}TvNyOa)8n;DH8{c1IXjXQa2}>9 z_0IPg894t4^*m&=q%Yif@u|mhlo@&Mg@oO6s&1O74g-KA#AT(;v{To4nY@f(P_X(K zTd#MkO{M}5fu#wPrNpwqS)pRtO^9HtW?GBpi4=gbvn0M>u1*c~!3%W+QKYqm`u>o6hB`ZFDAzwUXjUvnHF#CYuM2b|DMsgycbeqlPP}{ z|6V4QAKM=EYK-k+eYhlfB;Sz8u|js@Jj;NgFGh@-D z=w5!6XF<&o?lU5@k*Gf+A-b<39;=P}+^b%VqXW19j-`|PN5KMIkD3 z=l7Z4#D56qX71K;JL)DGEu_dVaWAH(V4@}vj6j_UBfzfndod*6$wiIPWr#%}bSKoE zcmY%xzR-U!IH{Y>PzgraWVGe5NW{OargeT~IzBm@p84dZmce-tXu=g5|AluT=*Mil z_FD7kvMvd~NDDrCWK_+TM<+&TT1+&t-mRaVJaKt<^$M2d@3Y4az1Do&aP+~PV{yfsnhPHpvpfH6_zk$8gq{nOC5=D#>}L-f4=%YBrF{OW*GGzVS~jwWuP^yU zh!iC!oJDBa#z_LCc!YjhUK*IWwB&&lB!{KQ+2c>mdqtd0%YeTO7Kz|`h z2dR$(t{;8%!FltH0hSWZ+bV0G0*E@-Q+wgceNd7kBf!(i9~1cZa3jp|dP!?1FzxcH zb2BM-G**dXnojh;wR!oah#cw$<=3Pz*paD5qVV|rvymI}=H#RTK z1+zRGk3hDpx0q=-d4zEgi*R-;eq>A&@)h2A?3JI<>-Ni|yj&!Q55$E*#C!W=*Czy@ z%a$D2{Q9wTAk^Ve(00Fz#?|D|hv({fXD`n%{A`c>0~&9iL(=d{41)Y$r-PXGVv*rl zfl+1Yjp1RJTu5(r~H5^Ky3y1h=wqXry4sa%}7q~LrupkLUypdz`Kks_+h zGZ9D<_+e~ zht%`lvdQgwjRtmi{B|N&6IQi^v9 zEV8-uBphe(z=RiaDA=di?Tu#-_T{23WjXHjC_Zqu_?AX%jm47c5+HdetyN?DY!1k= ziQ$8g0|g%X_CE)X8sR5B0r(a4fR_H$7fuch*cj34&2Jg|!kn$4YNNKkOs^9Rqus$M zeJ8VyriAiYx3Ic;sFY0dK}|xeD2U0NuH>`1B$OFe^#mf?R9%Yr;IPGW5zS_2_Z{sK zA+%+D54@1oWj^lI-Fe05LBE)QV61#>ALN5@Xn+6hXB?Q5)6)t$)9*V8_PCS7fhV@V zMIEOugMB@}wO9i^t>5!t4xY*Y3oSzk5>qkH@O(TD(JJA&sbP@cA>X}3dFM<*+PgLs z8auunRa0>@ZsK_>7;6pp+IT`(kmYo!p8&B-Qx^Pe~@?EJsGzr-B6KwX;RM)hoX%4 zk>313Ktxpv~qy@P9S%SVdFRwTH3CO+2+_m9~j@a>r{ zOOd|F{BtqQYYT-vQ`sPd3H!0jkX@PmzWS2J9sQgg(SqR<;86rgCu5dj7|%vEF?_WD z@KXx?_Ozo@Oel%>=P#b>8!O9@P(b#mfH-w)BJT7n9P5}Vq_Ir^T+!~z?GJep6H0YUQ%zMS*`877iShO-hMorn{vKzhxG zW8K6d^us-+UWHrxblne6P;7naXuNL_Vn-a}1i{m4t|*=f$VxbV{nBu5auLh@%&&1p zNC>Mvn{n*EcB2_83SP#E694h~s1{|1Mx83hf&mch=>zj@iI#)*nNrK3Ppy`mQM}dD zgM^3Il8`g9!|MVNht(k|4>_yq!$ZS%T!AOM!s>3)H8HHHQ*-?7?+bH%D&|J|aOmgS z>oGX=0;6*O`R5J>t2QKzXpjtMImr_rS0*&UEoKkFlh)_Yw-RH3bOVrH1*Fdb((An@ z(jZ>E%EZA|@5wL0is-xrq3M>p@bMgh&w>_!z3UfDaA7FkIzL$ykexLHSVWg1eF=C( z02w-lcQJvjjObo*`?2H-MR-3TNtaa4wh^1aDlv(lj0tMgW(7tNW^O%N<; z9;*tDSSBc=A1GedabjKp^%r}Wr=Ps~(20qYOK^zf827@}vn$h2gSi#w*9ZDe%%x^} z9e`{c!Ydp+yi|!5Glk=a`t2Mm_YZkKFZHZ>eINPGP6W~gj4*v?s|0S+<_$O<-CXn` zCk}f9VFh?`7I^Ux@M0Huu}XLWS&}`W^}+!XKqvS_AWcfFEVRJ^!o=Flc$Phc0|~PZ zWL5EfnM;AV2l-KO^%R8(>Iz?sX2_5rz0fQ+5jx6 zBN)(zPNe!&-`UC0{B!UKm!Vs4)C9lR=PQLAI>UM*;mW=Py-D6pgZaidmy?thx8b%= zFN+MwE5dFzmDA^otX3P9;i(XP;J{FU^UcS#h|8^~ups{0cn992L}^_}rTX{<+Co~`00Tb-{**iJdi$-U+3(6NDuS07_Y`37VY*>%~sphGPbsw zyV%`o?k4G08@JZ48*L>4h1T{?n_0eo6QV*GrX4#Sijmrzss}Yg1{4#`n=a&nwnUp+ z-Z;H^6a1AqA(Ly<*|w*(LFQ}gtyYI1XzUp6FDH)3r%xw(3D z1Bin+HjMW2GE_}$290)ulp33x#;!#TE9!-+&YjUNk@gay{L=D<0chOVHrmqi#un5V zq)j5F8Y$Jbf?J!Ln?XRUt+Y<=_G&l2YHfKy5Z6>)5d*WNm8*M((Yzv7dZ~(e&<=dPIHy~l`?D8j@ z25BVQ4O+`5zd$#As?BC%(AY9=7&l<9-4dGwgjP1TmV?`?n;VJE*rw5*SlfWMAi<@x zlzf}dwZ&HUCa9Z|*!q?+eIv0=m}-Je1qnmiMi3U+T_vzK zu{~u?VSAVE?H=d_o%gnOZzq+=f1-KIrcm@Wuqc>_ZDv4-?YUiyr`tQ*Q~9=*gDn_F z+um9rJA(pnsI8H^Rk+hkemP(u%>=~&3{Jtq+m6zP+nHNj-`Hh#rZ#)p zw$q90`L-*!xU#XhW>p4bQ13G9-ML-L**dtf>vRGOx0`K8mZ%(vR&&=*el+-LBOQ1_ zCzm&Ni5>!6%^SdBm{!Zg640$%26-Uuqzh;=Y2AdK%)Daw@qkXvnP z>?U|pQyx4y2r=;V`bOKCXd2UP6~xa56K^$*tuOd|h;mRas@ZH31l-Vuws+k^w*7K8 z7zgpzVUM0{zU|HJB69Ts-sI}f?b75L$n7%Z8qDpopo#qpSQM3 z_IdCAVz560))j~Sk!u3>N3K1vKXOgN{>U{2`y2m2$}4D63w3pr!N zRHS0g*lPQ>3^00Vi^#+_T-yaAv!z_Sm~9t9ANxTSWMP zvUpeJrisM0`!l;N@=R}lQ6yZf+yl?M(NuHBfVuJk7|j}I`k$H!us-j&T2fExp95C~ zf2}i?XzW&zhwQZmc)$kUvCkGL%XTB*uICEgk$k)HFOh;^p91nhU=gJ!je;>tOaeeV zf8)k%Viru$1~@*jy5Nx-2zlIq@DSK8z3l}u2Fz*FB->S}W?OD$Pv0mc3}fU5j5&Ni znNhIDYjcTam)dA=5t}lxvT=(sSR;6gNwI;=Cb6^<7;TszR*;z4YIDHt`_&aR3uP^@ z#I&|{5^WZoDi}MawH<`=)+X48xA)nGrGfoV%xpJ;37BC9_6Zkr78vgxCV_Xz35+eZ9=w4G>0%KwrGl^L; zDdFN+x6Ry)g>;)*-zXR(;LyqHu~i9!?y;iHCE;!!n)YHBi;4eK^0pEkZh_^`x5vA) zndo=ewM7D)w{N-2;t8-H1%l#C+uPb$4uVfLMm7t(CFBOZoxHDgHMo3VYxBO=Zr^*y zdwY*ou052!m!R9JJK|m7^f`cw;@1lT3aXL zoB&NLfaX~nn#t`-;A@EVo09*p6Y1G^60m=Z6cfCO9UDnBg0Xw#CAQgF=PVfDp==kG zIk+3n#t6>{E}h-%K`;*xcr3Mt=ma#}RcO~h%NO3Iei4R4ZdbbwG)uYmAYAql6sG}h zV+NdX7p?s{BGB!90P}&|O^TXUiE z3fp8(QaDNGB!yFiW)2EFgoYGO6B<%DLug3hthuf!D4jFcMM~$*b&=A8=DJAfA#+`% zbirH~DP1(zMM{^!C(cm`<4_QrdUd1sFI ztW_lB&sjx6{yg*?v&MU`RU`y2SVcncBG8WSjrTtD&K&Q@tRf+Qzf~mUFG0_7YrGFw zMM7}HDiVU1b2nu(vTbw0n~=<(hC>thvdw0;Eu3!CJZU zd{=fUz6mU+GNf=zWsqc*+}JD$&9~?;L9-0CV)HF(!YuzXIh0QA_Mn$m;2iMM2D#sv z+U+IxUlb^-f|}Y4?xsoATf%b`VkTZXwQf>E1Nq$2;APy*7tx*fwV4lsXP&yn?r_x9 z6o~}>>8C&ys9`EV^-w+dzu);=_!kmw+^a`wV73$7X*Qg87{s=V#`?v(P z1tW zhCQ7(*F{i$%%o}nWd-p4*C9`^{eQ)t%rydk2}r&Lz;GK@a*lcsuGit-!em2GpzNoobIgo8sc7SYc~VLd}s5x!Sp z7hP?*3Y;Z+d0~&kMOgU^?BL(h2NP37QFmSd9eSq^{P7N$PYjl%he}c@Dh(3XM`fri v*nm8&pa^=`4}B}3;{#NUs#6WHBSWAcBh)DTY5KKG=S!u@5{!W$=V$-F(ixm= diff --git a/frontends/desktop/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 b/frontends/desktop/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 deleted file mode 100644 index b3048fc115681ee6c1bc86b0aa158cfbbf59daa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9644 zcmV;dB~#jWPew8T0RR91041yd4gdfE06`=G03}%f0RR9100000000000000000000 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Script-Regular-D5yQViql.woff b/frontends/desktop/dist/assets/KaTeX_Script-Regular-D5yQViql.woff deleted file mode 100644 index 0e7da821eee0dd05a0a6f0b16c2c1345dc573a84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10588 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf b/frontends/desktop/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf deleted file mode 100644 index 871fd7d19d8658f64d8696ed9cdfc82c821ed76d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12228 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 a^|k5z`r34UeQg~YeP3G~_EX$#+W!Ytlnjvo diff --git a/frontends/desktop/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 b/frontends/desktop/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 deleted file mode 100644 index e1bccfe2403a4ed770c1697ae7c15b9e1cd9bc4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5208 zcmV-e6sPNVPew8T0RR9102EjN4gdfE04)>%02BcL0RR9100000000000000000000 z00006U;u$c2o4FH3=s$lsxYAz0X7081A!h3QUC-X1&II$f+P%q92+wyBN29Uw8B&T zjAYNE z*U5HIKt@(Y5~%9o_QfZTG-V({TgpY1umY=WfOG*epq`8% z1ttI4MeU-#t{R;oNdjV3`v1RHY2W=-wG4JSL>@>d!p4|Cue#>c|G%39Rl^N~Jtte$ zyJ6&>4iG9Q^=4aj#Y#*NCJeFlO8dM= z0T@1kwgCeG+ko8*0Gp&sMjwJBfPq-!GJqe%@a=c-d}@b9ec(lwnK(J)(Hg16J4t}8 zoj8ciNH-U5QF3U|av}lIkV4k)A{$6Xb{!U4>=^bq_AZWVCE5h7P5X$BXZXs5nFtee zW+ng<#jXuM5z~rRZ`MAjV;jCS!8iBrBJT}bZ87*?$$!rO1n*<-{r%q8@3p+Acr){L z-Rs)dHGn|;!_@F7K!B&viz4g)VC-%k=EL_u`ZCm8I+G^w3Ksc4TLz>W>WQ%ycmt^2 z7F3wL0|7EWb6`-b)`3In3w-9*i0>eyq~r@W)A1#>n_xUR7x)gwPOc$t&s(gki^-$u zJg{x?RyaF)@IXRLeJj&x#qB9@8%|@Z)UJMsh~WtZLz0uE^z@#pky?2079#uJQaZ}s zum|%fSn!B@KY}H0nr5T+wxPUx9*;ced5cn@m}{u$siaEKn#R+E5jm4)L%|SNC0UaQ z&6S0l+(C-b&;Tspa|qlA;9{w)=$j}~YEv%qKd}sP_wkP*WsG%>pcG>q6kiIIR39A- zNKYUl*8+<>0hW8%?v1s^a_(RzT_#Ecg;jdd;Xxpj^@C7|x*MM&=;*mjvdV5)-(Tm9 zT`k#yauk^A9Qsn&7*u#9DFOrwUqmyAw+Wh40gs(wPGT)Y_-2FkUKF>jnwu3#gW`@d zy6R{|!~tT^)Z2}m?U790V*!zA7ervEMXKAEO@WaDT}KB2se9=mbdSJ++)MhaS{Rkd zksBl4dmc#spg~2E4OAgENJuS@2b4vWrkrTx2R>+m%D?+PO^f+$5>0TowkhFwJo4GdZsbTH^) zNQEH{1_KNf3`Q7Cu(Ay@H*U!uPpER~C~G>Il_Za?a{FjtPoEp6?QlS3ASEqnp3>|4 z9>;0J0XY+^QW5qY)!pskXcvag_QLxZYtogZJ&r7=L%z^&pM??FpCix54@!i%wFGmQ zAhuJupi?DXXCuBs+>kjLL=gb2A0S5tsylNIPlqCiLsNrH6inuxNhJfoFPXm8X2XfU zPdQ6CF*btSw;t8mo39;N0Op8u4-whbu3z|a0FQ4@8=H&FH6FJ%*#)VVTL?_|CM`nu zjb)qOyKq6+q!~DnO)f=$yRC95jm|94eyYbsuo(E3mv}VY0>M-(4CcBvak*@gPPe<= zGz_!K%n+IO^ORAz?1KezeI0I+nO0ERSBVs1L zfsq9|H#IOkw*VLA_dWN`rA+4`+#x0SmhvhdLnU)+P4l`_U}PkO8PdL1-@znuxw|#* zl}!7{-)BCZG_$7D+nn7Tcyp!$FI3H3N>D$JVaM#nAak)Qw9dTItkt*SJ+rg_eg}Kl z>;e~ntkiF`5M-x@+_}<@VB_f^RYg|Nb5vA-xhhR&{10aM?i0Y{)K_D-R66A)UW~%+ z3Gesvk-bz5YMCSBo7p+%bjsMO+0;g|RMG((Z@5vVlH517I_H>nl?aq2XV3n83zxZn zqdUUgUN_}^6)2!wj*L{S1eu7c?h595DwXsbUBOwt8sj=g6%(sL3sPKAE0pR+Awj)R z-GD@iXk?(kC?p69jW^)}1PU^mEv1&xNYHAjZbJ(s+J%Y^p`uf$?(&Qx(TyX~gCo(4 zBOOAbRP^B#O#QB!W?RVIK@Nr10Lv5}jQ|k~nK{6KK?~8)XapFx(83W*407^lMpe0} zm$Ap-)8nakC-D0d?Ic2uh)z1lnsN|LZw|SxG1tz;JUiFS2ls#l-hmc6h!#0WExv~5 zVTqlGrFI^c*?Cy*0j+Qlt#puD<%j2EwVjVOc0ShH`B>)xt#=S@a8P-pOkiy|z5;B0`Dg&Duo z{{GExjj`Kag0huo_(dR^h~Ac9fGQZA5J)lG!fb|9YMK+p6$Ei|f*{3QRDUXpSRL25 zR%YDCSzjJY=y?X$m*(@e8O9XQOx5hp{ z367|%NIeBpe`Dq~DxN^fxg$6&KAc`mH#m)dpPOZz8%k&8IZ`WLTH|I|q=H{&X-$Y_ zY_4DH4_jJ4PsS?+#-Ide&dEEM+HF&9yZ+jUj}U@Afzie8yGN@iAA4)NvT{jDvaVgj zTJa=B%tbExX?KaZn`}p;VSO>w;$C-taFZ|lacbIf8+RtQ?;k37Cnxql3 zecblysBw18*zXr^xD;M!y|7IzGxSw#`2Vqwuk7$o{js0pv=}VjK4rV3n3nOK|X=sugo0QRG+Dm zV)13{zr%&7-`U14>_6$G;XOxc)+hO(s_0#W!&Bbydt{`EekLc?97ykv9K5GEtB6;S z>SHfoW=*8pTfno{38~p$Z_`XoB43wH?}qBDKoG61`&f5`pr z+uqNdLn_GgK(|@k@&)c=pJcD&^wr+R`*c!L9aE5|fHz)m5zU_^kv;evsS(btcTwGK zzJFU%2B?z2as?$q30E+9`I41j47Xf}8#pxtl;@KsZQ2CZNcC}>w<*ivmM!x9d1l9Q z)C?@vS)!Ad19oqE?5+BNn&GbB9DV;*cUh!{QOE;>(k~{6gZxbJP@a$6LHR%a@L%8` zq`vB7Ek5jR?a>F*^0Pq|i1Lw_5NlUH1EIC>S{yyyzVsLXChNk=BBx}j)Q8Q>A&Vs+s#Ad4tff%Nd`UxQ*s&x?5Aw>QU>m9O}pnRQY7(4rj~>^ac+k^#}L0;gpy%R_^A3FHxJ|{Pa&|{oNt035`@LYj?X*C^#Wi`Mnr`o z!K1IeU+b2Z7XA1YlUY!Fp=70=FVL_2e`nCkZDD@(W0AD9*8To#j|zkVA;;sq?r_)C z?%>0li7~79%I1$xt{kH+#pbOv2cCnUm^*4}-Hz){5Bzc$`eGH1oxrhIiXoW%<*XM! zfuTod{Z#<=4+&MsopXO1`CBZlx+dw-KgfEq*igFE5j3r_RN48r{2k`2g|9Bd0z2ELs z|LedXxuI!o&0O=my5b`}HAK}lyG9D0;bS(?&!3;CK)9#{y>ec%j#(zzp{wsH&!JMY zPi7uyhSpRa3zMbAt={J?<=7DNHE(;|Q^gq+Dj;_@naP)G2+ij=l(Qv#c|rO;$IKte ze_t!vJerw(+GpI_z!ZIwcIeMAX_^vknuf*l1KUyTKRf+~>opqJ7_A{2+ zmFpvuUP_FcQB|sR+P#{uqzv(&WGmTXcshBz>Ohx%DN-*{`1K=qJ@2*V6{wS5ocI~K z{tYLJ3-}lC4-2-c$7q%SOXMy*ZRD8HJ9KTfBDre|#zUHlo1-(I8u*%tvl1bG{ zt7*-W5(P8)UO}aGD1N#2-9_-H{G#@Leu)}62{L?s6J#46bph5D%s)vNRS;wN{ZuaXs)Wh_iN6p=oWl>C*{_I;x; zVn7~lD$}FeL?ex5?(V~a=1Qoy^c^Q}X;0Jmy$^6W+dg^qR9R8{kYU4h)(Gc;dvW@- z_7;gh0Z(w_9^N{=bO7*`Th(WzlAALsU+dr~JMk#FEol|yTXvL2oO3Oo26%_+k939Q zYy2i22@}+=Z_TS$f2g(V6gRta|FOOHC9;uDCNCRzt222E{I3yRPKC$P*93tvher5Z<_nUOyOQe2%_q z%RaV35O%yXd+@EYou?;LNAmC5x!}->C*spb_1EH*&sXf;zS+AL99b1CI_9!BM3t+@ z7Dlp8CbxATt=?3!@Rt)u1d`+=#}KF6(r-I_+88zuPn9U{E-lVa?aCngXIU-SCdR)yS72!ybSNc^_@>`|6U?i*{S?b3xsU?x0Ni_R+ zO>6M!DgD&6zxtS4u9@_<|%l4L30K~60L8uy>;&1E>X^J zY!UwDq-Rm?@PpF*{44wS1nXW#Eda0qGnJz3bwO*?qZ#r4B3AEO3>f?kP8f-*=E-c#63Q zlupdWKnQov#i7{aa|uWb@aHnXA8_uI**aH%%|?^2q!7|WZ$p6*qvjhIc839zNR$vG zk`s-V$to*HSd>(#--Ll0E@+Se{VD{j7NjybaW-7{(;d>`Q58zl;~KuOM_=t9GGB#& z##J`!(jaU>zf-;ba8FYP^%z%d#IQ+8jdxAICu5_1Lb8yK_QSf|E3hgknQHhZbDD36nD@~Pgk{Q$Ex7DXkQJs{9TcmK(s8{y4bwa3kQdE=C*eGNMxxVV#)hJeJSinGR z?99rX($rrw-*>X~*F>o%DNiL&Xz3S>GH(XiG~J{Vch|Q4CoA7=Q`Z%01^@ z0Ki*H*Z>D8yw;<2b(q>268sE(N4Zy1PrdK^jF-K;Rvp z=lSt{_rC7ytaa}d`}UB~OWk`e#{P@sSU`2U{Jpa1p$+5bPD>+%W!0A3qP)kF~v zGf(-2a5Q%T0DN4OACF>RPDHl~;*AFb0Fch1{6{GMr>eD!jU&p;0su@@K0dAm&o$D< z+#Qum!Gemx`X32x9DJ++0Hg>2IAW+8_@PV_{kB%-mH>czfr=6NM~ffwi?%2cbrw`T zfF4B_>~|nPTSpIXl*WPb-B8SVa|#-Fa7LiwaR0^W{G$;}kJ!=N8`T&09m=OgkpXDM zA9XT!v_kdUMD@-C0Q3N}S-)BrXLk<(AP)clARnc(xRhi$xVTxNa!CzQ8WP1UzedSM z@8vxMjCU(Tbqgnt9F`KfjW_$^_)}<|prbsODe39-$!}w=Z^G^6KH7JQ`UxinfWyt4l!nK!=qM~h7r zCW1QJjz6U?x32rkgr6RZo8Ur@3sZuzs`i%rG@qWnI|~y}(!#h!WMWWS*@!oKzD6yB z+a}~X!E*Ka`F1|-(xi-ggYR#VWiXTFG*Hd(D#^pri#bh(p%#NFGp|?;2I20nDb%l* z8A!B0jp9!)y!ookAFp?RNwYuvvc%1$EJ!f7VGE!Zz z7;RS+D~RsBntPrb5pMUzM+M3`zkUg_iJ2vgZ70E4=~QI%!X{;nHJUF(bk=;6Y zbripTbq(eu)8~9Vcuwccr?<%9vNiEa+$cX!I7U6{UUS9aA-=j&IEc()M4xcFi>bmA1+YIQCMWjLzWfr*g(x9Gi`5Jly?pcDOh3|*{^ZYZeZ6n2 zIqSI_dCN`DxyY1}htDc?D`!_XFlw54wV;|s61HQB176>{bdEA5I#+)^k-DIp24A>_ zlT9zHl4|>L`5HmmSz8I}lE0m5YHwL^7568kx?-Ov&Twe#$%-W6Z|n+S-Ky7S{iTIy zFQEm3m*jb4N(v99LM(xU<_xB;1@>5hKk0e;BEQ&%R;=9kAr|bO+j5tVYnP| zkX=(;m=$R7`I8DMmnXvv{1#D3vRUZ4!-N;jG#r{iSavB`GHSO9Uy+P`s(yWG>=^Q@ z&Sgvnuf*El6!;RgQ_~m7&>L-2TyyEs>(u6GwY4;U@En)xGN)~ngf`^F@LCS&_+mX1 zI6(jS(wc?jEclsX&5@E6BU|}-guWZ&YEE-4hRrf1TS0G1kZoGcm%~i`%4wA%A|-m7 zczac11RX>kSFJ>+#k+sCLABwTuR>>7#}H*hfhW^|0M-Ecv5W$v9>43~5?6amS$Al5 z%v_|<6$4$HV9AEh5dT6_YPYgzkL*1N$>myI%;;a>sdLIS`c54IMyxbgv6NIY|R=&m; z+2sT#AQ1=)@pOrf{O&&^;dGw`V$zOo2JZb*Qe>>Y-0MoC9*+~ zLZ3Es@y1RUS1ws(!I4fa=2S{8rYg6)y4#Y_>_y^`fH|yd{F|{`ip2+`+>d-I zKE;HKkNJKVh|{xB+LE+gQW8!KGlofeiK);$XOjC6#A31BBfC6pgb&@-#<>qRz|UnD z00Iz)9C%%w9!J&PqYsN;)NbxbBmW&a9;*hi1Q^`Ee>Ubaed+kH~()pz0czvxYA zseIzo+9?&0su%ln{ZZ4k)2e$ybcOTM{bx#?MICJv4)S&m- z4Y8S=oXi-E=E;-x zCkh*e&SLDa!nVJc$iho|8zHMks;kR|r4xnSvV#g!yVFQ?0aH0`RzVsrWsFjIX&+uV zX~P(Xsn7QsZD(1mywp`1eMdXcH2DQA{!S$X2i}yu3rsE{_B-{U%Y`R3S-cGA=&jDZKFaMGHeXwLMTZc9W2 z5A)@U)$m8bgPiIIztRY-?|2%eyrwnBlnk*n7LKEo9J%9rb^1^kKW#+?W6F0z`xycw zs#Jj@hdlZf&W&C`!q;1_?1BPl=hZQM?C0QE4jE`{I>4(j-Tv2R>dHQk-+rV zp9pcYd&o$mD4AMWwBW!Zao7!hq?dJ3RSFs71~>#s}^{l$3<4j4)U4H!5s}A^I?< zT$_w^kLyV&p;4GQnVul{0vK*JK_V+4dw8> z^t6%u0$Q9Jc3^OS5@LNs&Dr6H#b!tdNx$Oj!MkaXudY7tbxyN5_=^T?U!;R1oWsa*FzPa+X$>Uz#WTr1z#V3J2Bak4fRFtv9$>A7QdnC0iF=H7zfC+Z_Ja*h z#otCi*~NO4>)qLZJ$OlpXnQXs;FfUs6#VOG*9d^74zDFwy!alV0?;vlQc%M+3Pk@~ z(traH0i**>zz|3pRE1j8XtZcDXwhhWU;u0eP6Gcx|Af(siNvhJ+=lQ%{2+0V97rXk z9de9CffbESf?f4U=21ARBIv)=Q^D*rBY64?AOL^+*XaMnU*f+7kTwi0l!gVM{dWg- z)<6C5J^($Y0~c3T1gy)^OUCfRdcnFH-qw8qsAPidKqX7KdknZby??hKocGBYUipUv z8V2pr2V-E>@tE^Lq7DQP`O@mXqG-gI7QD1omZlo81tP@hIu3O z54R7$?Dksg`^}Pedt&?JZg3gXRuym?bq#4WfALv-*2wTE?-KmL$6y~ocD=uuQT=ef(5$7 zyQbvxf&Pwj48YkhV)|6naQUu0eo{RPzbBsX{5GvzS>_hjY1^4V;kg;x;b<$#Bko}M`~ z$=QL3tCw`CPd9qrNqxP}d_G})0(Nptu#atXjWckU1621lNHvl^wSu#(ZlOLiAEgPY zUD3sw_ri-njd(wfFse*LtSQg~RUNjfo$|ka*KRYniN4yWZW}Cr>s&y;Q_xQ*6Sd8N zwX7WwMvMLm9aN7U?*WEHKPn57mts=)MUD}@ZHTBxub%3cbjKX3hWsK~&Z>o{rDScXVbF}Lbu=vKeHofmz6$#{)1mCum+07{P z*6ztGY>pyo^RrE6DsC?HTWcB`t*-evqKY6fKpM2z6Y#1hwtiV|o|1xe+1;k1u$xk+ z6k;bP*gTDg)-ZE4U@5nqIdT-F!z)-2rLij#F!Ap5pb$$&B5dfxiEhESQ_q1 zjaaBXNy}%X(^cg;Fqd3*aWP4F0>m9Iz5}?+6vQT4X_sS5?=rON)l@;-d9ZX>`EbJU z0Aj_=;H0DRoLrJ+>TU%Z@#I_@Xu0Uhede0F-OD20(wiu?zM}QtNyDnKO1s-3w0uP- zYZ?Q8UT1Yom8mkY82k17d~7Nj7dRU?X_(l9d@Wd~i{-1MA*+(1=buzxn(3*EL(Djm z_-BUWg+!Qn(b^}jgov!BgPkIe?q2P~?FhxkUkLp=eP#)X3!o;8R+wCtf(1o0&O82& zm!N5V<{15zZfY)m!*!MpqjeqCoIS@B62lBG&f2!ZM557Fu0w>+bJjcPdAVgkaiwLv zKQy$jJ_M8MVRL0WPr|%{mhvH+GMjkdBlC{G05eA*;;L8-du|bzYv*a?B-1-tPbr3X zP}VKP_4|vO3S#M0-H`abTrB!gyPm-xlPDW^3$dhCos56N46}0%%VTvEZc1hm@wT=h zm9G8%cx`a-Q6BaO4_zhqMEVm0WLnI#^sQ|V|!%choG@@3zN}KeA^tLKZf;JTMkNDg2%Ajp>PN5R*x=ogb&0V1#|L*%6x@$Tozxlf`3VRj+$RwGK9e!^=h871 z+H}&L0oS)`?wYbfk#rmh0Xy0sNoNk~EP-vMyKKJg39H8*>8rc|tBqfR$(IFI96JV%a9DcJC1Y4my4GG%Hx0a^_A*mn!ThL8Dsb!E zLHrxEr=^FLughOS$VWuV5}+L#z@Nd>FNT+v2TBrxb8&?cF6+&5@fQ~q{Hdo*NwYpg zAD>R&KUBx@D1j|3r@Qe^V8`Gh>W9sv=UZh?0uk=QJi{*Uc z`e!!Fg@UKE>G(e>7TMV^rj%N&_Y&%0K4WrC+U0SY1#NxfoIm%+s3J4nvs)OAjxd;W znZdqs&%Rx!@UY{5&WDIj1sgk3C+)5A|M*LXya%NG=frn5v5^zoJQ+Um?t;# z4$h}839<$8rSlGDN%?=g>2ahU| z4#agu;NjCgX7Gy|Rl+0mhd{tuKm~&ivQR?BmRuPOW{y@+cEeIfLl+UausenS-S`q% z?8QtRJZil_B7#Xy4kXiXLH=`(%c8~{{C~5K_i|+-hP{IviQ;54!M&^ZkQWNk`R1!@ zHsW?)*Ewwko)=$+R>pect4L8A#QoWpD!SJ zca_VUeWxI47VG?2M(3J`KqMvC_Po_zpyVbsi-Wg6Y{H*>GV+6As#)mAKXea5A1Jig znZuv|u%BsaD8CExS*@j(nf+?Ev#*(gc)_hTRe?J;yTj8YloNep51YrWZ{#R1IP5^$ z>OU7cbN>~Rz9Hs!RB{=V&|s{_t6+AcUx{#PaWHlLMPp`DiWt|oYFs>V>5wx?A#MF& zGkgV|%-?T&v-&K`FJbzyC$Os2U)^!S?d(+S+Dwlm_N2XNlk4cEd#dqd3tpek}xRYYUJNBwvb8Tj3Zp#|_ zo921N0XCAoWVH$m)XMD{G25d wY{_LX=H;XpKCoO0;vIG=&MNPm!DONaTgB3E>)@~e@w0#9F9-lVJOBj$2Tjs3JOBUy diff --git a/frontends/desktop/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff b/frontends/desktop/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff deleted file mode 100644 index e6e9b658dcf1cd031ac82b6b8f312444c55d4fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4420 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 CPy?p` diff --git a/frontends/desktop/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff b/frontends/desktop/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff deleted file mode 100644 index e1ec5457664f438ce5a1cc6dd8409bf60ca7804b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5980 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 b/frontends/desktop/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 deleted file mode 100644 index 680c13085076a2f6c5a7e695935ec3f21cddb65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4928 zcmV-G6Tj?tPew8T0RR91024p}4gdfE04S^g021l|0RR9100000000000000000000 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 diff --git a/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff b/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff deleted file mode 100644 index 2432419f28936aff53ddfa2a732d027e6a6648fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16028 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 G0ssIW}E$%rmP@UWH#*azT!5^S^@#OiXi?5ka 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 MzaRX}iWL5T03x1QQ2+n{ diff --git a/frontends/desktop/dist/assets/MarkdownPart-Cp90Gu77.css b/frontends/desktop/dist/assets/MarkdownPart-Cp90Gu77.css deleted file mode 100644 index f25ebff2..00000000 --- a/frontends/desktop/dist/assets/MarkdownPart-Cp90Gu77.css +++ /dev/null @@ -1 +0,0 @@ -[data-slot=code-card]{position:relative;margin:.5rem 0;border-radius:.375rem;border:1px solid var(--semi-color-border);background:var(--semi-color-fill-0);overflow:hidden}[data-slot=code-card-header]{display:flex;align-items:center;justify-content:space-between;padding:.25rem .5rem;border-bottom:1px solid var(--semi-color-border);background:color-mix(in srgb,var(--semi-color-fill-0) 60%,var(--semi-color-bg-0));min-height:1.5rem}[data-slot=code-card-lang]{font-size:.6875rem;font-family:SF Mono,Cascadia Code,Fira Code,monospace;color:var(--semi-color-text-2);text-transform:lowercase}[data-slot=code-card-copy]{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border:none;border-radius:.25rem;background:transparent;color:var(--semi-color-text-2);cursor:pointer;opacity:.55;transition:opacity .12s,background .12s}[data-slot=code-card-copy]:hover{opacity:1;background:var(--semi-color-fill-1)}[data-slot=code-card-body]{position:relative;padding:.625rem .75rem;overflow-x:auto;overflow-y:auto;max-height:7.5rem;font-family:SF Mono,Cascadia Code,Fira Code,monospace;font-size:.7rem;line-height:1.6;color:var(--semi-color-text-0);white-space:pre;-moz-tab-size:2;tab-size:2}[data-slot=code-card-body][data-expanded]{max-height:40dvh}[data-slot=code-card-expand]{position:absolute;inset-inline:0;bottom:0;display:flex;height:1.75rem;cursor:pointer;align-items:flex-end;justify-content:center;padding-bottom:.25rem;border:none;background:linear-gradient(to top,var(--semi-color-fill-0),transparent);color:var(--ui-text-tertiary);transition:color .12s ease-out}[data-slot=code-card-expand]:hover{color:var(--foreground)}[data-slot=code-card-expand] svg{width:.875rem;height:.875rem;transition:transform .15s ease-out}[data-slot=code-card-body][data-expanded]+[data-slot=code-card-expand]{background:none}[data-slot=code-card-body][data-expanded]+[data-slot=code-card-expand] svg{transform:rotate(180deg)}[data-slot=code-card-body] code{font-family:inherit;font-size:inherit;background:none!important;padding:0;display:block}[data-slot=code-card][data-streaming]{animation:code-card-glow 1.8s ease-in-out infinite alternate;border-color:color-mix(in srgb,var(--semi-color-primary) 24%,var(--semi-color-border))}[data-slot=code-card][data-streaming] [data-slot=code-card-body]{mask-image:linear-gradient(to bottom,#000,#000 calc(100% - 1.5rem),#00000080);-webkit-mask-image:linear-gradient(to bottom,black 0%,black calc(100% - 1.5rem),rgba(0,0,0,.5) 100%)}@keyframes code-card-glow{0%{box-shadow:0 0 0 .5px color-mix(in srgb,var(--semi-color-primary) 10%,transparent)}to{box-shadow:0 0 0 .5px color-mix(in srgb,var(--semi-color-primary) 10%,transparent),0 .5rem 1.5rem color-mix(in srgb,var(--semi-color-primary) 6%,transparent)}}:root{--code-keyword: #d73a49;--code-string: #032f62;--code-comment: #6a737d;--code-function: #6f42c1;--code-number: #005cc5;--code-operator: #d73a49;--code-class-name: #6f42c1;--code-punctuation: #24292e;--code-property: #005cc5;--code-builtin: #e36209;--code-attr-name: #6f42c1;--code-attr-value: #032f62;--code-tag: #22863a;--code-selector: #22863a;--code-inserted: #22863a;--code-deleted: #d73a49}[data-appearance=dark]{--code-keyword: #ff7b72;--code-string: #a5d6ff;--code-comment: #8b949e;--code-function: #d2a8ff;--code-number: #79c0ff;--code-operator: #ff7b72;--code-class-name: #f0c674;--code-punctuation: #c9d1d9;--code-property: #79c0ff;--code-builtin: #ffa657;--code-attr-name: #d2a8ff;--code-attr-value: #a5d6ff;--code-tag: #7ee787;--code-selector: #7ee787;--code-inserted: #7ee787;--code-deleted: #ff7b72}.token.keyword,.token.control,.token.directive,.token.important{color:var(--code-keyword)}.token.string,.token.template-string,.token.url{color:var(--code-string)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--code-comment);font-style:italic}.token.function{color:var(--code-function)}.token.number,.token.boolean{color:var(--code-number)}.token.operator,.token.entity{color:var(--code-operator)}.token.class-name,.token.maybe-class-name{color:var(--code-class-name)}.token.punctuation{color:var(--code-punctuation)}.token.property,.token.constant,.token.variable{color:var(--code-property)}.token.builtin,.token.symbol{color:var(--code-builtin)}.token.attr-name{color:var(--code-attr-name)}.token.attr-value{color:var(--code-attr-value)}.token.tag{color:var(--code-tag)}.token.selector{color:var(--code-selector)}.token.inserted{color:var(--code-inserted)}.token.deleted{color:var(--code-deleted);text-decoration:line-through}.token.italic{font-style:italic}.token.bold{font-weight:700}[data-slot=diff-block]{margin:.5rem 0;border-radius:.375rem;border:1px solid var(--semi-color-border);overflow-x:auto;overscroll-behavior-x:contain;font-family:SF Mono,Cascadia Code,Fira Code,monospace;font-size:var(--font-size-code, 13px);line-height:1.375rem}[data-slot=diff-line]{display:flex;padding:0 .5rem;min-height:1.375rem;line-height:1.375rem;border-left:2px solid transparent}[data-diff-kind=add]{background:color-mix(in srgb,var(--semi-color-success, #00b42a) 10%,transparent);border-left:2px solid var(--semi-color-success, #00b42a)}[data-diff-kind=remove]{background:color-mix(in srgb,var(--semi-color-danger, #f53f3f) 10%,transparent);border-left:2px solid var(--semi-color-danger, #f53f3f)}[data-diff-kind=context]{border-left:2px solid transparent}[data-diff-kind=header]{background:var(--semi-color-fill-0);font-style:italic;color:var(--semi-color-text-2);padding:.25rem .5rem}[data-slot=diff-gutter]{display:flex;gap:.25rem;min-width:4rem;-webkit-user-select:none;user-select:none;color:var(--semi-color-text-3);font-size:.6875rem;justify-content:flex-end;padding-right:.5rem;border-right:1px solid var(--semi-color-border)}[data-slot=diff-line-old],[data-slot=diff-line-new]{min-width:1.5rem;text-align:right}[data-slot=diff-content]{flex:1;white-space:pre-wrap;word-break:break-all;padding-left:.5rem}[data-slot=diff-sign]{display:inline-block;width:1ch;-webkit-user-select:none;user-select:none} diff --git a/frontends/desktop/dist/assets/MarkdownPart-ZJKeOipX.js b/frontends/desktop/dist/assets/MarkdownPart-ZJKeOipX.js deleted file mode 100644 index 67ac1b83..00000000 --- a/frontends/desktop/dist/assets/MarkdownPart-ZJKeOipX.js +++ /dev/null @@ -1,271 +0,0 @@ -var an=Object.defineProperty;var nn=(r,e,t)=>e in r?an(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var nr=(r,e,t)=>nn(r,typeof e!="symbol"?e+"":e,t);import{bs as ir,g as sn,b as a0,aj as U}from"./tauri-compat-D_GD_wMe.js";import{M as ln,r as on,a as un,b as cn,p as hn,S as dn}from"./markdown-preprocess-Cc2i34eF.js";import{S as sr,U as mn,V as pn}from"./main-j7e_THPB.js";import"./index-9FI8Jlf5.js";import"./WindowsTitlebar-Byi-SYR_.js";var at={exports:{}},lr;function fn(){return lr||(lr=1,(function(r){var e=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */var t=(function(a){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,o={},u={manual:a.Prism&&a.Prism.manual,disableWorkerMessageHandler:a.Prism&&a.Prism.disableWorkerMessageHandler,util:{encode:function y(w){return w instanceof h?new h(w.type,y(w.content),w.alias):Array.isArray(w)?w.map(y):w.replace(/&/g,"&").replace(/"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(A){var y=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(A.stack)||[])[1];if(y){var w=document.getElementsByTagName("script");for(var k in w)if(w[k].src==y)return w[k]}return null}},isActive:function(y,w,k){for(var A="no-"+w;y;){var T=y.classList;if(T.contains(w))return!0;if(T.contains(A))return!1;y=y.parentElement}return!!k}},languages:{plain:o,plaintext:o,text:o,txt:o,extend:function(y,w){var k=u.util.clone(u.languages[y]);for(var A in w)k[A]=w[A];return k},insertBefore:function(y,w,k,A){A=A||u.languages;var T=A[y],O={};for(var P in T)if(T.hasOwnProperty(P)){if(P==w)for(var B in k)k.hasOwnProperty(B)&&(O[B]=k[B]);k.hasOwnProperty(P)||(O[P]=T[P])}var j=A[y];return A[y]=O,u.languages.DFS(u.languages,function(W,Y){Y===j&&W!=y&&(this[W]=O)}),O},DFS:function y(w,k,A,T){T=T||{};var O=u.util.objId;for(var P in w)if(w.hasOwnProperty(P)){k.call(w,P,w[P],A||P);var B=w[P],j=u.util.type(B);j==="Object"&&!T[O(B)]?(T[O(B)]=!0,y(B,k,null,T)):j==="Array"&&!T[O(B)]&&(T[O(B)]=!0,y(B,k,P,T))}}},plugins:{},highlightAll:function(y,w){u.highlightAllUnder(document,y,w)},highlightAllUnder:function(y,w,k){var A={callback:k,container:y,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};u.hooks.run("before-highlightall",A),A.elements=Array.prototype.slice.apply(A.container.querySelectorAll(A.selector)),u.hooks.run("before-all-elements-highlight",A);for(var T=0,O;O=A.elements[T++];)u.highlightElement(O,w===!0,A.callback)},highlightElement:function(y,w,k){var A=u.util.getLanguage(y),T=u.languages[A];u.util.setLanguage(y,A);var O=y.parentElement;O&&O.nodeName.toLowerCase()==="pre"&&u.util.setLanguage(O,A);var P=y.textContent,B={element:y,language:A,grammar:T,code:P};function j(Y){B.highlightedCode=Y,u.hooks.run("before-insert",B),B.element.innerHTML=B.highlightedCode,u.hooks.run("after-highlight",B),u.hooks.run("complete",B),k&&k.call(B.element)}if(u.hooks.run("before-sanity-check",B),O=B.element.parentElement,O&&O.nodeName.toLowerCase()==="pre"&&!O.hasAttribute("tabindex")&&O.setAttribute("tabindex","0"),!B.code){u.hooks.run("complete",B),k&&k.call(B.element);return}if(u.hooks.run("before-highlight",B),!B.grammar){j(u.util.encode(B.code));return}if(w&&a.Worker){var W=new Worker(u.filename);W.onmessage=function(Y){j(Y.data)},W.postMessage(JSON.stringify({language:B.language,code:B.code,immediateClose:!0}))}else j(u.highlight(B.code,B.grammar,B.language))},highlight:function(y,w,k){var A={code:y,grammar:w,language:k};if(u.hooks.run("before-tokenize",A),!A.grammar)throw new Error('The language "'+A.language+'" has no grammar.');return A.tokens=u.tokenize(A.code,A.grammar),u.hooks.run("after-tokenize",A),h.stringify(u.util.encode(A.tokens),A.language)},tokenize:function(y,w){var k=w.rest;if(k){for(var A in k)w[A]=k[A];delete w.rest}var T=new g;return S(T,T.head,y),p(y,T,w,T.head,0),D(T)},hooks:{all:{},add:function(y,w){var k=u.hooks.all;k[y]=k[y]||[],k[y].push(w)},run:function(y,w){var k=u.hooks.all[y];if(!(!k||!k.length))for(var A=0,T;T=k[A++];)T(w)}},Token:h};a.Prism=u;function h(y,w,k,A){this.type=y,this.content=w,this.alias=k,this.length=(A||"").length|0}h.stringify=function y(w,k){if(typeof w=="string")return w;if(Array.isArray(w)){var A="";return w.forEach(function(j){A+=y(j,k)}),A}var T={type:w.type,content:y(w.content,k),tag:"span",classes:["token",w.type],attributes:{},language:k},O=w.alias;O&&(Array.isArray(O)?Array.prototype.push.apply(T.classes,O):T.classes.push(O)),u.hooks.run("wrap",T);var P="";for(var B in T.attributes)P+=" "+B+'="'+(T.attributes[B]||"").replace(/"/g,""")+'"';return"<"+T.tag+' class="'+T.classes.join(" ")+'"'+P+">"+T.content+""};function m(y,w,k,A){y.lastIndex=w;var T=y.exec(k);if(T&&A&&T[1]){var O=T[1].length;T.index+=O,T[0]=T[0].slice(O)}return T}function p(y,w,k,A,T,O){for(var P in k)if(!(!k.hasOwnProperty(P)||!k[P])){var B=k[P];B=Array.isArray(B)?B:[B];for(var j=0;j=O.reach);v0+=Q.value.length,Q=Q.next){var h0=Q.value;if(w.length>y.length)return;if(!(h0 instanceof h)){var x0=1,u0;if(b0){if(u0=m(O0,v0,y,j0),!u0||u0.index>=y.length)break;var le=u0.index,w0=u0.index+u0[0].length,S0=v0;for(S0+=Q.value.length;le>=S0;)Q=Q.next,S0+=Q.value.length;if(S0-=Q.value.length,v0=S0,Q.value instanceof h)continue;for(var X0=Q;X0!==w.tail&&(S0O.reach&&(O.reach=ue);var re=Q.prev;oe&&(re=S(w,re,oe),v0+=oe.length),x(w,re,x0);var Te=new h(P,Y?u.tokenize(C0,Y):C0,y0,C0);if(Q=S(w,re,Te),L0&&S(w,Q,L0),x0>1){var V0={cause:P+","+j,reach:ue};p(y,w,k,Q.prev,v0,V0),O&&V0.reach>O.reach&&(O.reach=V0.reach)}}}}}}function g(){var y={value:null,prev:null,next:null},w={value:null,prev:y,next:null};y.next=w,this.head=y,this.tail=w,this.length=0}function S(y,w,k){var A=w.next,T={value:k,prev:w,next:A};return w.next=T,A.prev=T,y.length++,T}function x(y,w,k){for(var A=w.next,T=0;T/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},t.languages.markup.tag.inside["attr-value"].inside.entity=t.languages.markup.entity,t.languages.markup.doctype.inside["internal-subset"].inside=t.languages.markup,t.hooks.add("wrap",function(a){a.type==="entity"&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(t.languages.markup.tag,"addInlined",{value:function(n,s){var o={};o["language-"+s]={pattern:/(^$)/i,lookbehind:!0,inside:t.languages[s]},o.cdata=/^$/i;var u={"included-cdata":{pattern://i,inside:o}};u["language-"+s]={pattern:/[\s\S]+/,inside:t.languages[s]};var h={};h[n]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:u},t.languages.insertBefore("markup","cdata",h)}}),Object.defineProperty(t.languages.markup.tag,"addAttribute",{value:function(a,n){t.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+a+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:t.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),t.languages.html=t.languages.markup,t.languages.mathml=t.languages.markup,t.languages.svg=t.languages.markup,t.languages.xml=t.languages.extend("markup",{}),t.languages.ssml=t.languages.xml,t.languages.atom=t.languages.xml,t.languages.rss=t.languages.xml,(function(a){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},a.languages.css.atrule.inside.rest=a.languages.css;var s=a.languages.markup;s&&(s.tag.addInlined("style","css"),s.tag.addAttribute("style","css"))})(t),t.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},t.languages.javascript=t.languages.extend("clike",{"class-name":[t.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),t.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,t.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:t.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:t.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:t.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:t.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:t.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),t.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:t.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),t.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),t.languages.markup&&(t.languages.markup.tag.addInlined("script","javascript"),t.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),t.languages.js=t.languages.javascript,(function(){if(typeof t>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var a="Loading…",n=function(E,M){return"✖ Error "+E+" while fetching file: "+M},s="✖ Error: File does not exist or is empty",o={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},u="data-src-status",h="loading",m="loaded",p="failed",g="pre[data-src]:not(["+u+'="'+m+'"]):not(['+u+'="'+h+'"])';function S(E,M,R){var y=new XMLHttpRequest;y.open("GET",E,!0),y.onreadystatechange=function(){y.readyState==4&&(y.status<400&&y.responseText?M(y.responseText):y.status>=400?R(n(y.status,y.statusText)):R(s))},y.send(null)}function x(E){var M=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(E||"");if(M){var R=Number(M[1]),y=M[2],w=M[3];return y?w?[R,Number(w)]:[R,void 0]:[R,R]}}t.hooks.add("before-highlightall",function(E){E.selector+=", "+g}),t.hooks.add("before-sanity-check",function(E){var M=E.element;if(M.matches(g)){E.code="",M.setAttribute(u,h);var R=M.appendChild(document.createElement("CODE"));R.textContent=a;var y=M.getAttribute("data-src"),w=E.language;if(w==="none"){var k=(/\.(\w+)$/.exec(y)||[,"none"])[1];w=o[k]||k}t.util.setLanguage(R,w),t.util.setLanguage(M,w);var A=t.plugins.autoloader;A&&A.loadLanguages(w),S(y,function(T){M.setAttribute(u,m);var O=x(M.getAttribute("data-range"));if(O){var P=T.split(/\r\n?|\n/g),B=O[0],j=O[1]==null?P.length:O[1];B<0&&(B+=P.length),B=Math.max(0,Math.min(B-1,P.length)),j<0&&(j+=P.length),j=Math.max(0,Math.min(j,P.length)),T=P.slice(B,j).join(` -`),M.hasAttribute("data-start")||M.setAttribute("data-start",String(B+1))}R.textContent=T,t.highlightElement(R)},function(T){M.setAttribute(u,p),R.textContent=T})}}),t.plugins.fileHighlight={highlight:function(M){for(var R=(M||document).querySelectorAll(g),y=0,w;w=R[y++];)t.highlightElement(w)}};var D=!1;t.fileHighlight=function(){D||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),D=!0),t.plugins.fileHighlight.highlight.apply(this,arguments)}})()})(at)),at.exports}var vn=fn();const $e=sn(vn);(function(r){var e=r.util.clone(r.languages.javascript),t=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,a=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,n=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function s(h,m){return h=h.replace(//g,function(){return t}).replace(//g,function(){return a}).replace(//g,function(){return n}),RegExp(h,m)}n=s(n).source,r.languages.jsx=r.languages.extend("markup",e),r.languages.jsx.tag.pattern=s(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),r.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,r.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,r.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,r.languages.jsx.tag.inside.comment=e.comment,r.languages.insertBefore("inside","attr-name",{spread:{pattern:s(//.source),inside:r.languages.jsx}},r.languages.jsx.tag),r.languages.insertBefore("inside","special-attr",{script:{pattern:s(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:r.languages.jsx}}},r.languages.jsx.tag);var o=function(h){return h?typeof h=="string"?h:typeof h.content=="string"?h.content:h.content.map(o).join(""):""},u=function(h){for(var m=[],p=0;p0&&m[m.length-1].tagName===o(g.content[0].content[1])&&m.pop():g.content[g.content.length-1].content==="/>"||m.push({tagName:o(g.content[0].content[1]),openedBraces:0}):m.length>0&&g.type==="punctuation"&&g.content==="{"?m[m.length-1].openedBraces++:m.length>0&&m[m.length-1].openedBraces>0&&g.type==="punctuation"&&g.content==="}"?m[m.length-1].openedBraces--:S=!0),(S||typeof g=="string")&&m.length>0&&m[m.length-1].openedBraces===0){var x=o(g);p0&&(typeof h[p-1]=="string"||h[p-1].type==="plain-text")&&(x=o(h[p-1])+x,h.splice(p-1,1),p--),h[p]=new r.Token("plain-text",x,null,x)}g.content&&typeof g.content!="string"&&u(g.content)}};r.hooks.add("after-tokenize",function(h){h.language!=="jsx"&&h.language!=="tsx"||u(h.tokens)})})(Prism);(function(r){var e=r.util.clone(r.languages.typescript);r.languages.tsx=r.languages.extend("jsx",e),delete r.languages.tsx.parameter,delete r.languages.tsx["literal-property"];var t=r.languages.tsx.tag;t.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0})(Prism);Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,t){var a={};a["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[t]},a.cdata=/^$/i;var n={"included-cdata":{pattern://i,inside:a}};n["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]};var s={};s[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",s)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(r,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml;(function(r){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+e.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var t=r.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))})(Prism);Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/});Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}});Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}});Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/});delete Prism.languages.c.boolean;(function(r){var e="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",t={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:t,environment:{pattern:RegExp("\\$"+e),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+e),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};r.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+e),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:t}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+e),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},t.inside=r.languages.bash;for(var n=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,o=0;o|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,a="(?:"+t.source+"(?:[ ]+"+e.source+")?|"+e.source+"(?:[ ]+"+t.source+")?)",n=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),s=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function o(u,h){h=(h||"").replace(/m/g,"")+"m";var m=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return a}).replace(/<>/g,function(){return u});return RegExp(m,h)}r.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return a})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return a}).replace(/<>/g,function(){return"(?:"+n+"|"+s+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:o(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:o(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:o(s),lookbehind:!0,greedy:!0},number:{pattern:o(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:t,important:e,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},r.languages.yml=r.languages.yaml})(Prism);(function(r){var e=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function t(a){return a.replace(/__/g,function(){return e})}r.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(t(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(t(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}})(Prism);(function(r){r.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var e={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(e).forEach(function(t){var a=e[t],n=[];/^\w+$/.test(t)||n.push(/\w+/.exec(t)[0]),t==="diff"&&n.push("bold"),r.languages.diff[t]={pattern:RegExp("^(?:["+a+`].*(?:\r -?| -|(?![\\s\\S])))+`,"m"),alias:n,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(t)[0]}}}}),Object.defineProperty(r.languages.diff,"PREFIXES",{value:e})})(Prism);Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};var or={},ur;function gn(){return ur||(ur=1,(function(r){for(var e=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,t=0;t<2;t++)e=e.replace(//g,function(){return e});e=e.replace(//g,function(){return/[^\s\S]/.source}),r.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+e),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},r.languages.rust["closure-params"].inside.rest=r.languages.rust,r.languages.rust.attribute.inside.string=r.languages.rust.string})(Prism)),or}gn();Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/});Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}});delete Prism.languages.go["class-name"];var cr={},hr;function bn(){return hr||(hr=1,Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python),cr}bn();var dr={},mr;function yn(){return mr||(mr=1,(function(r){var e=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,t=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,function(){return e.source});r.languages.cpp=r.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return e.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:e,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),r.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,function(){return t})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),r.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:r.languages.cpp}}}}),r.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),r.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:r.languages.extend("cpp",{})}}),r.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},r.languages.cpp["base-clause"])})(Prism)),dr}yn();var pr={},fr;function xn(){return fr||(fr=1,(function(r){var e=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,t=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,a={pattern:RegExp(/(^|[^\w.])/.source+t+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};r.languages.java=r.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[a,{pattern:RegExp(/(^|[^\w.])/.source+t+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:a.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+t+/[A-Z]\w*\b/.source),lookbehind:!0,inside:a.inside}],keyword:e,function:[r.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),r.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),r.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:e,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+t+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:a.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+t+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:a.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,function(){return e.source})),lookbehind:!0,inside:{punctuation:/\./}}})})(Prism)),pr}xn();Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;var vr={},gr;function wn(){return gr||(gr=1,(function(r){r.languages.typescript=r.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),r.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete r.languages.typescript.parameter,delete r.languages.typescript["literal-property"];var e=r.languages.extend("typescript",{});delete e["class-name"],r.languages.typescript["class-name"].inside=e,r.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e}}}}),r.languages.ts=r.languages.typescript})(Prism)),vr}wn();(function(r){var e=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function t(p){return p=p.replace(//g,function(){return e}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+p+")")}var a=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,n=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return a}),s=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;r.languages.markdown=r.languages.extend("markup",{}),r.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:r.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+n+s+"(?:"+n+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+n+s+")(?:"+n+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(a),inside:r.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+n+")"+s+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+n+"$"),inside:{"table-header":{pattern:RegExp(a),alias:"important",inside:r.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:t(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:t(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(p){["url","bold","italic","strike","code-snippet"].forEach(function(g){p!==g&&(r.languages.markdown[p].inside.content.inside[g]=r.languages.markdown[g])})}),r.hooks.add("after-tokenize",function(p){if(p.language!=="markdown"&&p.language!=="md")return;function g(S){if(!(!S||typeof S=="string"))for(var x=0,D=S.length;x",quot:'"'},h=String.fromCodePoint||String.fromCharCode;function m(p){var g=p.replace(o,"");return g=g.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(S,x){if(x=x.toLowerCase(),x[0]==="#"){var D;return x[1]==="x"?D=parseInt(x.slice(2),16):D=Number(x.slice(1)),h(D)}else{var E=u[x];return E||S}}),g}r.languages.md=r.languages.markdown})(Prism);const Sn={py:"python",ts:"typescript",js:"javascript",sh:"bash",shell:"bash",yml:"yaml",html:"markup",xml:"markup",svg:"markup",text:"plaintext",txt:"plaintext"};function kn(r){const e=r.toLowerCase().trim(),t=Sn[e]||e;return $e.languages[t]?t:$e.languages[e]?e:"plaintext"}const An=5e4;function Tn(r){return r.length>An}function En(r,e){const t=$e.languages[e];return t?$e.highlight(r,t,e):Mn(r)}function Mn(r){return r.replace(/&/g,"&").replace(//g,">")}const br=a0.memo(function({language:e,code:t,isStreaming:a}){const n=e?kn(e):"plaintext",s=e||"",o=!a&&n!=="plaintext"&&!Tn(t),u=a0.useRef(null),[h,m]=a0.useState(!1),[p,g]=a0.useState(!1);return a0.useLayoutEffect(()=>{const S=u.current;if(!S)return;const x=()=>m(S.scrollHeight>121);x();const D=new ResizeObserver(x);return D.observe(S),()=>D.disconnect()},[]),U.jsxs("div",{"data-slot":"code-card","data-streaming":a||void 0,children:[U.jsxs("div",{"data-slot":"code-card-header",children:[s&&U.jsx("span",{"data-slot":"code-card-lang",children:s}),U.jsx(zn,{text:t})]}),U.jsx("div",{"data-slot":"code-card-body",ref:u,"data-expanded":p||void 0,children:o?U.jsx("code",{dangerouslySetInnerHTML:{__html:En(t,n)}}):U.jsx("code",{children:t})}),h&&U.jsx("button",{"data-slot":"code-card-expand","aria-expanded":p,"aria-label":p?"Collapse":"Expand",onClick:()=>g(S=>!S),children:U.jsx("svg",{viewBox:"0 0 16 16",fill:"none",children:U.jsx("path",{d:"M4 6l4 4 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]})});function zn({text:r}){const[e,t]=a0.useState(!1),a=a0.useRef(),n=a0.useCallback(()=>{navigator.clipboard.writeText(r).then(()=>{t(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>t(!1),2e3)})},[r]);return typeof navigator>"u"||!navigator.clipboard?null:U.jsx("button",{"data-slot":"code-card-copy",onClick:n,title:e?"Copied":"Copy",children:e?U.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:U.jsx("path",{d:"M3 8.5l3 3 7-7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}):U.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[U.jsx("rect",{x:"5.5",y:"5.5",width:"7",height:"7",rx:"1",stroke:"currentColor",strokeWidth:"1.2"}),U.jsx("path",{d:"M3.5 10.5v-7a1 1 0 011-1h7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})})}function Cn(r){const e=r.split(` -`),t=[];let a=0,n=0;for(const s of e){if(s.startsWith("diff --git")||s.startsWith("index ")||s.startsWith("--- ")||s.startsWith("+++ ")||s.startsWith("new file")||s.startsWith("deleted file")||s.startsWith("similarity index")||s.startsWith("rename from")||s.startsWith("rename to"))continue;const o=s.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);if(o){a=parseInt(o[1],10),n=parseInt(o[2],10),t.push({kind:"header",text:s});continue}if(s.startsWith("+"))t.push({kind:"add",text:s.slice(1),newLine:n++});else if(s.startsWith("-"))t.push({kind:"remove",text:s.slice(1),oldLine:a++});else{const u=s.startsWith(" ")?s.slice(1):s;t.push({kind:"context",text:u,oldLine:a++,newLine:n++})}}return t}const Rn=a0.memo(function({code:e}){const t=a0.useMemo(()=>Cn(e),[e]);return U.jsx("div",{"data-slot":"diff-block",children:t.map((a,n)=>U.jsxs("div",{"data-slot":"diff-line","data-diff-kind":a.kind,children:[a.kind!=="header"&&U.jsxs("span",{"data-slot":"diff-gutter",children:[U.jsx("span",{"data-slot":"diff-line-old",children:a.oldLine??""}),U.jsx("span",{"data-slot":"diff-line-new",children:a.newLine??""})]}),U.jsxs("span",{"data-slot":"diff-content",children:[a.kind==="add"&&U.jsx("span",{"data-slot":"diff-sign",children:"+"}),a.kind==="remove"&&U.jsx("span",{"data-slot":"diff-sign",children:"-"}),a.text]})]},n))})});class F extends Error{constructor(e,t){var a="KaTeX parse error: "+e,n,s,o=t&&t.loc;if(o&&o.start<=o.end){var u=o.lexer.input;n=o.start,s=o.end,n===u.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var h=u.slice(n,s).replace(/[^]/g,"$&̲"),m;n>15?m="…"+u.slice(n-15,n):m=u.slice(0,n);var p;s+15r.replace(Fn,"-$1").toLowerCase(),Dn={"&":"&",">":">","<":"<",'"':""","'":"'"},Nn=/[&><"']/g,c0=r=>String(r).replace(Nn,e=>Dn[e]),Pe=r=>r.type==="ordgroup"||r.type==="color"?r.body.length===1?Pe(r.body[0]):r:r.type==="font"?Pe(r.body):r,Bn=new Set(["mathord","textord","atom"]),_0=r=>Bn.has(Pe(r).type),On=r=>{var e=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(r);return e?e[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(e[1])?null:e[1].toLowerCase():"_relative"},xt={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:r=>"#"+r},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(r,e)=>(e.push(r),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:r=>Math.max(0,r),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:r=>Math.max(0,r),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:r=>Math.max(0,r),cli:"-e, --max-expand ",cliProcessor:r=>r==="Infinity"?1/0:parseInt(r)},globalGroup:{type:"boolean",cli:!1}};function Ln(r){if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function qn(r){if(r.default!==void 0)return r.default;var e=Array.isArray(r.type)?r.type[0]:r.type;return Ln(e)}function Pn(r,e,t,a){var n=t[e];r[e]=n!==void 0?a.processor?a.processor(n):n:qn(a)}class Pt{constructor(e){e===void 0&&(e={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var t of Object.keys(xt)){var a=xt[t];a&&Pn(this,t,e,a)}}reportNonstrict(e,t,a){var n=this.strict;if(typeof n=="function"&&(n=n(e,t,a)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new F("LaTeX-incompatible input and strict mode is set to 'error': "+(t+" ["+e+"]"),a);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]"))}}useStrictBehavior(e,t,a){var n=this.strict;if(typeof n=="function")try{n=n(e,t,a)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]")),!1)}isTrusted(e){if("url"in e&&e.url&&!e.protocol){var t=On(e.url);if(t==null)return!1;e.protocol=t}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}}class W0{constructor(e,t,a){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=a}sup(){return F0[Hn[this.id]]}sub(){return F0[$n[this.id]]}fracNum(){return F0[_n[this.id]]}fracDen(){return F0[Gn[this.id]]}cramp(){return F0[Un[this.id]]}text(){return F0[jn[this.id]]}isTight(){return this.size>=2}}var Ht=0,_e=1,he=2,H0=3,xe=4,M0=5,de=6,p0=7,F0=[new W0(Ht,0,!1),new W0(_e,0,!0),new W0(he,1,!1),new W0(H0,1,!0),new W0(xe,2,!1),new W0(M0,2,!0),new W0(de,3,!1),new W0(p0,3,!0)],Hn=[xe,M0,xe,M0,de,p0,de,p0],$n=[M0,M0,M0,M0,p0,p0,p0,p0],_n=[he,H0,xe,M0,de,p0,de,p0],Gn=[H0,H0,M0,M0,p0,p0,p0,p0],Un=[_e,_e,H0,H0,M0,M0,p0,p0],jn=[Ht,_e,he,H0,he,H0,he,H0],_={DISPLAY:F0[Ht],TEXT:F0[he],SCRIPT:F0[xe],SCRIPTSCRIPT:F0[de]},wt=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Xn(r){for(var e=0;e=n[0]&&r<=n[1])return t.name}return null}var He=[];wt.forEach(r=>r.blocks.forEach(e=>He.push(...e)));function ia(r){for(var e=0;e=He[e]&&r<=He[e+1])return!0;return!1}var l0=r=>r+" "+r,ce=80,Vn=function(e,t){return"M95,"+(622+e+t)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+e/2.075+" -"+e+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+e)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Wn=function(e,t){return"M263,"+(601+e+t)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+e/2.084+" -"+e+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+e)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Yn=function(e,t){return"M983 "+(10+e+t)+` -l`+e/3.13+" -"+e+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Zn=function(e,t){return"M424,"+(2398+e+t)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+e)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+t+` -h400000v`+(40+e)+"h-400000z"},Kn=function(e,t){return"M473,"+(2713+e+t)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"},Jn=function(e){var t=e/2;return"M400000 "+e+" H0 L"+t+" 0 l65 45 L145 "+(e-80)+" H400000z"},Qn=function(e,t,a){var n=a-54-t-e;return"M702 "+(e+t)+"H400000"+(40+e)+` -H742v`+n+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+t+"H400000v"+(40+e)+"H742z"},ei=function(e,t,a){t=1e3*t;var n="";switch(e){case"sqrtMain":n=Vn(t,ce);break;case"sqrtSize1":n=Wn(t,ce);break;case"sqrtSize2":n=Yn(t,ce);break;case"sqrtSize3":n=Zn(t,ce);break;case"sqrtSize4":n=Kn(t,ce);break;case"sqrtTall":n=Qn(t,ce,a)}return n},ti=function(e,t){switch(e){case"⎜":return l0("M291 0 H417 V"+t+" H291z");case"∣":return l0("M145 0 H188 V"+t+" H145z");case"∥":return l0("M145 0 H188 V"+t+" H145z")+l0("M367 0 H410 V"+t+" H367z");case"⎟":return l0("M457 0 H583 V"+t+" H457z");case"⎢":return l0("M319 0 H403 V"+t+" H319z");case"⎥":return l0("M263 0 H347 V"+t+" H263z");case"⎪":return l0("M384 0 H504 V"+t+" H384z");case"⏐":return l0("M312 0 H355 V"+t+" H312z");case"‖":return l0("M257 0 H300 V"+t+" H257z")+l0("M478 0 H521 V"+t+" H478z");default:return""}},yr={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:l0("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:l0("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:l0("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:l0("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:l0("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:l0("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:l0("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:l0("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},ri=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+t+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+` v585 h43z -M367 15 v585 v`+t+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v602 h84z -M403 1759 V0 H319 V1759 v`+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v602 h84z -M347 1759 V0 h-84 V1759 v`+t+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(t+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(t+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(t+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function ai(r){return"toText"in r}class fe{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),t=0;t{if(ai(e))return e.toText();throw new Error("Expected MathDomNode with toText, got "+e.constructor.name)}).join("")}}var St={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},ni={ex:!0,em:!0,mu:!0},sa=function(e){return typeof e!="string"&&(e=e.unit),e in St||e in ni||e==="ex"},t0=function(e,t){var a;if(e.unit in St)a=St[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if(e.unit==="mu")a=t.fontMetrics().cssEmPerMu;else{var n;if(t.style.isTight()?n=t.havingStyle(t.style.text()):n=t,e.unit==="ex")a=n.fontMetrics().xHeight;else if(e.unit==="em")a=n.fontMetrics().quad;else throw new F("Invalid unit: '"+e.unit+"'");n!==t&&(a*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*a,t.maxSize)},N=function(e){return+e.toFixed(4)+"em"},K0=function(e){return e.filter(t=>t).join(" ")},$t=function(e){var t="";for(var a of Object.keys(e)){var n=e[a];n!==void 0&&(t+=In(a)+":"+n+";")}return t},la=function(e,t,a){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=a||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},oa=function(e){var t=document.createElement(e);t.className=K0(this.classes),Object.assign(t.style,this.style);for(var a of Object.keys(this.attributes))t.setAttribute(a,this.attributes[a]);for(var n=0;n/=\x00-\x1f]/,ua=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+c0(K0(this.classes))+'"');var a=$t(this.style);a&&(t+=' style="'+c0(a)+'"');for(var n of Object.keys(this.attributes)){if(ii.test(n))throw new F("Invalid attribute name '"+n+"'");t+=" "+n+'="'+c0(this.attributes[n])+'"'}t+=">";for(var s=0;s",t};class ve{constructor(e,t,a,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,la.call(this,e,a,n),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return oa.call(this,"span")}toMarkup(){return ua.call(this,"span")}}class je{constructor(e,t,a,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,la.call(this,t,n),this.children=a||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return oa.call(this,"a")}toMarkup(){return ua.call(this,"a")}}class si{constructor(e,t,a){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=a}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");return e.src=this.src,e.alt=this.alt,e.className="mord",Object.assign(e.style,this.style),e}toMarkup(){var e=''+c0(this.alt)+'0&&(t=document.createElement("span"),t.style.marginRight=N(this.italic)),this.classes.length>0&&(t=t||document.createElement("span"),t.className=K0(this.classes)),Object.keys(this.style).length>0&&(t=t||document.createElement("span"),Object.assign(t.style,this.style)),t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(a+="margin-right:"+N(this.italic)+";"),a+=$t(this.style),a&&(e=!0,t+=' style="'+c0(a)+'"');var n=c0(this.text);return e?(t+=">",t+=n,t+="",t):n}}class $0{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");for(var a of Object.keys(this.attributes))t.setAttribute(a,this.attributes[a]);for(var n=0;n':''}}class kt{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"line");for(var a of Object.keys(this.attributes))t.setAttribute(a,this.attributes[a]);return t}toMarkup(){var e=" but got "+String(r)+".")}var ci=r=>r instanceof ve||r instanceof je||r instanceof fe,I0={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Re={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},xr={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function hi(r,e){I0[r]=e}function _t(r,e,t){if(!I0[e])throw new Error("Font metrics not found for font: "+e+".");var a=r.charCodeAt(0),n=I0[e][a];if(!n&&r[0]in xr&&(a=xr[r[0]].charCodeAt(0),n=I0[e][a]),!n&&t==="text"&&ia(a)&&(n=I0[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var nt={};function di(r){var e;if(r>=5?e=0:r>=3?e=1:e=2,!nt[e]){var t=nt[e]={cssEmPerMu:Re.quad[e]/18};for(var a in Re)Re.hasOwnProperty(a)&&(t[a]=Re[a][e])}return nt[e]}var K={math:{},text:{}};function i(r,e,t,a,n,s){K[r][n]={font:e,group:t,replace:a},s&&a&&(K[r][a]=K[r][n])}var l="math",z="text",c="main",f="ams",J="accent-token",q="bin",f0="close",ge="inner",H="mathord",s0="op-token",T0="open",Ae="punct",v="rel",G0="spacing",b="textord";i(l,c,v,"≡","\\equiv",!0);i(l,c,v,"≺","\\prec",!0);i(l,c,v,"≻","\\succ",!0);i(l,c,v,"∼","\\sim",!0);i(l,c,v,"⊥","\\perp");i(l,c,v,"⪯","\\preceq",!0);i(l,c,v,"⪰","\\succeq",!0);i(l,c,v,"≃","\\simeq",!0);i(l,c,v,"∣","\\mid",!0);i(l,c,v,"≪","\\ll",!0);i(l,c,v,"≫","\\gg",!0);i(l,c,v,"≍","\\asymp",!0);i(l,c,v,"∥","\\parallel");i(l,c,v,"⋈","\\bowtie",!0);i(l,c,v,"⌣","\\smile",!0);i(l,c,v,"⊑","\\sqsubseteq",!0);i(l,c,v,"⊒","\\sqsupseteq",!0);i(l,c,v,"≐","\\doteq",!0);i(l,c,v,"⌢","\\frown",!0);i(l,c,v,"∋","\\ni",!0);i(l,c,v,"∝","\\propto",!0);i(l,c,v,"⊢","\\vdash",!0);i(l,c,v,"⊣","\\dashv",!0);i(l,c,v,"∋","\\owns");i(l,c,Ae,".","\\ldotp");i(l,c,Ae,"⋅","\\cdotp");i(l,c,Ae,"⋅","·");i(z,c,b,"⋅","·");i(l,c,b,"#","\\#");i(z,c,b,"#","\\#");i(l,c,b,"&","\\&");i(z,c,b,"&","\\&");i(l,c,b,"ℵ","\\aleph",!0);i(l,c,b,"∀","\\forall",!0);i(l,c,b,"ℏ","\\hbar",!0);i(l,c,b,"∃","\\exists",!0);i(l,c,b,"∇","\\nabla",!0);i(l,c,b,"♭","\\flat",!0);i(l,c,b,"ℓ","\\ell",!0);i(l,c,b,"♮","\\natural",!0);i(l,c,b,"♣","\\clubsuit",!0);i(l,c,b,"℘","\\wp",!0);i(l,c,b,"♯","\\sharp",!0);i(l,c,b,"♢","\\diamondsuit",!0);i(l,c,b,"ℜ","\\Re",!0);i(l,c,b,"♡","\\heartsuit",!0);i(l,c,b,"ℑ","\\Im",!0);i(l,c,b,"♠","\\spadesuit",!0);i(l,c,b,"§","\\S",!0);i(z,c,b,"§","\\S");i(l,c,b,"¶","\\P",!0);i(z,c,b,"¶","\\P");i(l,c,b,"†","\\dag");i(z,c,b,"†","\\dag");i(z,c,b,"†","\\textdagger");i(l,c,b,"‡","\\ddag");i(z,c,b,"‡","\\ddag");i(z,c,b,"‡","\\textdaggerdbl");i(l,c,f0,"⎱","\\rmoustache",!0);i(l,c,T0,"⎰","\\lmoustache",!0);i(l,c,f0,"⟯","\\rgroup",!0);i(l,c,T0,"⟮","\\lgroup",!0);i(l,c,q,"∓","\\mp",!0);i(l,c,q,"⊖","\\ominus",!0);i(l,c,q,"⊎","\\uplus",!0);i(l,c,q,"⊓","\\sqcap",!0);i(l,c,q,"∗","\\ast");i(l,c,q,"⊔","\\sqcup",!0);i(l,c,q,"◯","\\bigcirc",!0);i(l,c,q,"∙","\\bullet",!0);i(l,c,q,"‡","\\ddagger");i(l,c,q,"≀","\\wr",!0);i(l,c,q,"⨿","\\amalg");i(l,c,q,"&","\\And");i(l,c,v,"⟵","\\longleftarrow",!0);i(l,c,v,"⇐","\\Leftarrow",!0);i(l,c,v,"⟸","\\Longleftarrow",!0);i(l,c,v,"⟶","\\longrightarrow",!0);i(l,c,v,"⇒","\\Rightarrow",!0);i(l,c,v,"⟹","\\Longrightarrow",!0);i(l,c,v,"↔","\\leftrightarrow",!0);i(l,c,v,"⟷","\\longleftrightarrow",!0);i(l,c,v,"⇔","\\Leftrightarrow",!0);i(l,c,v,"⟺","\\Longleftrightarrow",!0);i(l,c,v,"↦","\\mapsto",!0);i(l,c,v,"⟼","\\longmapsto",!0);i(l,c,v,"↗","\\nearrow",!0);i(l,c,v,"↩","\\hookleftarrow",!0);i(l,c,v,"↪","\\hookrightarrow",!0);i(l,c,v,"↘","\\searrow",!0);i(l,c,v,"↼","\\leftharpoonup",!0);i(l,c,v,"⇀","\\rightharpoonup",!0);i(l,c,v,"↙","\\swarrow",!0);i(l,c,v,"↽","\\leftharpoondown",!0);i(l,c,v,"⇁","\\rightharpoondown",!0);i(l,c,v,"↖","\\nwarrow",!0);i(l,c,v,"⇌","\\rightleftharpoons",!0);i(l,f,v,"≮","\\nless",!0);i(l,f,v,"","\\@nleqslant");i(l,f,v,"","\\@nleqq");i(l,f,v,"⪇","\\lneq",!0);i(l,f,v,"≨","\\lneqq",!0);i(l,f,v,"","\\@lvertneqq");i(l,f,v,"⋦","\\lnsim",!0);i(l,f,v,"⪉","\\lnapprox",!0);i(l,f,v,"⊀","\\nprec",!0);i(l,f,v,"⋠","\\npreceq",!0);i(l,f,v,"⋨","\\precnsim",!0);i(l,f,v,"⪹","\\precnapprox",!0);i(l,f,v,"≁","\\nsim",!0);i(l,f,v,"","\\@nshortmid");i(l,f,v,"∤","\\nmid",!0);i(l,f,v,"⊬","\\nvdash",!0);i(l,f,v,"⊭","\\nvDash",!0);i(l,f,v,"⋪","\\ntriangleleft");i(l,f,v,"⋬","\\ntrianglelefteq",!0);i(l,f,v,"⊊","\\subsetneq",!0);i(l,f,v,"","\\@varsubsetneq");i(l,f,v,"⫋","\\subsetneqq",!0);i(l,f,v,"","\\@varsubsetneqq");i(l,f,v,"≯","\\ngtr",!0);i(l,f,v,"","\\@ngeqslant");i(l,f,v,"","\\@ngeqq");i(l,f,v,"⪈","\\gneq",!0);i(l,f,v,"≩","\\gneqq",!0);i(l,f,v,"","\\@gvertneqq");i(l,f,v,"⋧","\\gnsim",!0);i(l,f,v,"⪊","\\gnapprox",!0);i(l,f,v,"⊁","\\nsucc",!0);i(l,f,v,"⋡","\\nsucceq",!0);i(l,f,v,"⋩","\\succnsim",!0);i(l,f,v,"⪺","\\succnapprox",!0);i(l,f,v,"≆","\\ncong",!0);i(l,f,v,"","\\@nshortparallel");i(l,f,v,"∦","\\nparallel",!0);i(l,f,v,"⊯","\\nVDash",!0);i(l,f,v,"⋫","\\ntriangleright");i(l,f,v,"⋭","\\ntrianglerighteq",!0);i(l,f,v,"","\\@nsupseteqq");i(l,f,v,"⊋","\\supsetneq",!0);i(l,f,v,"","\\@varsupsetneq");i(l,f,v,"⫌","\\supsetneqq",!0);i(l,f,v,"","\\@varsupsetneqq");i(l,f,v,"⊮","\\nVdash",!0);i(l,f,v,"⪵","\\precneqq",!0);i(l,f,v,"⪶","\\succneqq",!0);i(l,f,v,"","\\@nsubseteqq");i(l,f,q,"⊴","\\unlhd");i(l,f,q,"⊵","\\unrhd");i(l,f,v,"↚","\\nleftarrow",!0);i(l,f,v,"↛","\\nrightarrow",!0);i(l,f,v,"⇍","\\nLeftarrow",!0);i(l,f,v,"⇏","\\nRightarrow",!0);i(l,f,v,"↮","\\nleftrightarrow",!0);i(l,f,v,"⇎","\\nLeftrightarrow",!0);i(l,f,v,"△","\\vartriangle");i(l,f,b,"ℏ","\\hslash");i(l,f,b,"▽","\\triangledown");i(l,f,b,"◊","\\lozenge");i(l,f,b,"Ⓢ","\\circledS");i(l,f,b,"®","\\circledR");i(z,f,b,"®","\\circledR");i(l,f,b,"∡","\\measuredangle",!0);i(l,f,b,"∄","\\nexists");i(l,f,b,"℧","\\mho");i(l,f,b,"Ⅎ","\\Finv",!0);i(l,f,b,"⅁","\\Game",!0);i(l,f,b,"‵","\\backprime");i(l,f,b,"▲","\\blacktriangle");i(l,f,b,"▼","\\blacktriangledown");i(l,f,b,"■","\\blacksquare");i(l,f,b,"⧫","\\blacklozenge");i(l,f,b,"★","\\bigstar");i(l,f,b,"∢","\\sphericalangle",!0);i(l,f,b,"∁","\\complement",!0);i(l,f,b,"ð","\\eth",!0);i(z,c,b,"ð","ð");i(l,f,b,"╱","\\diagup");i(l,f,b,"╲","\\diagdown");i(l,f,b,"□","\\square");i(l,f,b,"□","\\Box");i(l,f,b,"◊","\\Diamond");i(l,f,b,"¥","\\yen",!0);i(z,f,b,"¥","\\yen",!0);i(l,f,b,"✓","\\checkmark",!0);i(z,f,b,"✓","\\checkmark");i(l,f,b,"ℶ","\\beth",!0);i(l,f,b,"ℸ","\\daleth",!0);i(l,f,b,"ℷ","\\gimel",!0);i(l,f,b,"ϝ","\\digamma",!0);i(l,f,b,"ϰ","\\varkappa");i(l,f,T0,"┌","\\@ulcorner",!0);i(l,f,f0,"┐","\\@urcorner",!0);i(l,f,T0,"└","\\@llcorner",!0);i(l,f,f0,"┘","\\@lrcorner",!0);i(l,f,v,"≦","\\leqq",!0);i(l,f,v,"⩽","\\leqslant",!0);i(l,f,v,"⪕","\\eqslantless",!0);i(l,f,v,"≲","\\lesssim",!0);i(l,f,v,"⪅","\\lessapprox",!0);i(l,f,v,"≊","\\approxeq",!0);i(l,f,q,"⋖","\\lessdot");i(l,f,v,"⋘","\\lll",!0);i(l,f,v,"≶","\\lessgtr",!0);i(l,f,v,"⋚","\\lesseqgtr",!0);i(l,f,v,"⪋","\\lesseqqgtr",!0);i(l,f,v,"≑","\\doteqdot");i(l,f,v,"≓","\\risingdotseq",!0);i(l,f,v,"≒","\\fallingdotseq",!0);i(l,f,v,"∽","\\backsim",!0);i(l,f,v,"⋍","\\backsimeq",!0);i(l,f,v,"⫅","\\subseteqq",!0);i(l,f,v,"⋐","\\Subset",!0);i(l,f,v,"⊏","\\sqsubset",!0);i(l,f,v,"≼","\\preccurlyeq",!0);i(l,f,v,"⋞","\\curlyeqprec",!0);i(l,f,v,"≾","\\precsim",!0);i(l,f,v,"⪷","\\precapprox",!0);i(l,f,v,"⊲","\\vartriangleleft");i(l,f,v,"⊴","\\trianglelefteq");i(l,f,v,"⊨","\\vDash",!0);i(l,f,v,"⊪","\\Vvdash",!0);i(l,f,v,"⌣","\\smallsmile");i(l,f,v,"⌢","\\smallfrown");i(l,f,v,"≏","\\bumpeq",!0);i(l,f,v,"≎","\\Bumpeq",!0);i(l,f,v,"≧","\\geqq",!0);i(l,f,v,"⩾","\\geqslant",!0);i(l,f,v,"⪖","\\eqslantgtr",!0);i(l,f,v,"≳","\\gtrsim",!0);i(l,f,v,"⪆","\\gtrapprox",!0);i(l,f,q,"⋗","\\gtrdot");i(l,f,v,"⋙","\\ggg",!0);i(l,f,v,"≷","\\gtrless",!0);i(l,f,v,"⋛","\\gtreqless",!0);i(l,f,v,"⪌","\\gtreqqless",!0);i(l,f,v,"≖","\\eqcirc",!0);i(l,f,v,"≗","\\circeq",!0);i(l,f,v,"≜","\\triangleq",!0);i(l,f,v,"∼","\\thicksim");i(l,f,v,"≈","\\thickapprox");i(l,f,v,"⫆","\\supseteqq",!0);i(l,f,v,"⋑","\\Supset",!0);i(l,f,v,"⊐","\\sqsupset",!0);i(l,f,v,"≽","\\succcurlyeq",!0);i(l,f,v,"⋟","\\curlyeqsucc",!0);i(l,f,v,"≿","\\succsim",!0);i(l,f,v,"⪸","\\succapprox",!0);i(l,f,v,"⊳","\\vartriangleright");i(l,f,v,"⊵","\\trianglerighteq");i(l,f,v,"⊩","\\Vdash",!0);i(l,f,v,"∣","\\shortmid");i(l,f,v,"∥","\\shortparallel");i(l,f,v,"≬","\\between",!0);i(l,f,v,"⋔","\\pitchfork",!0);i(l,f,v,"∝","\\varpropto");i(l,f,v,"◀","\\blacktriangleleft");i(l,f,v,"∴","\\therefore",!0);i(l,f,v,"∍","\\backepsilon");i(l,f,v,"▶","\\blacktriangleright");i(l,f,v,"∵","\\because",!0);i(l,f,v,"⋘","\\llless");i(l,f,v,"⋙","\\gggtr");i(l,f,q,"⊲","\\lhd");i(l,f,q,"⊳","\\rhd");i(l,f,v,"≂","\\eqsim",!0);i(l,c,v,"⋈","\\Join");i(l,f,v,"≑","\\Doteq",!0);i(l,f,q,"∔","\\dotplus",!0);i(l,f,q,"∖","\\smallsetminus");i(l,f,q,"⋒","\\Cap",!0);i(l,f,q,"⋓","\\Cup",!0);i(l,f,q,"⩞","\\doublebarwedge",!0);i(l,f,q,"⊟","\\boxminus",!0);i(l,f,q,"⊞","\\boxplus",!0);i(l,f,q,"⋇","\\divideontimes",!0);i(l,f,q,"⋉","\\ltimes",!0);i(l,f,q,"⋊","\\rtimes",!0);i(l,f,q,"⋋","\\leftthreetimes",!0);i(l,f,q,"⋌","\\rightthreetimes",!0);i(l,f,q,"⋏","\\curlywedge",!0);i(l,f,q,"⋎","\\curlyvee",!0);i(l,f,q,"⊝","\\circleddash",!0);i(l,f,q,"⊛","\\circledast",!0);i(l,f,q,"⋅","\\centerdot");i(l,f,q,"⊺","\\intercal",!0);i(l,f,q,"⋒","\\doublecap");i(l,f,q,"⋓","\\doublecup");i(l,f,q,"⊠","\\boxtimes",!0);i(l,f,v,"⇢","\\dashrightarrow",!0);i(l,f,v,"⇠","\\dashleftarrow",!0);i(l,f,v,"⇇","\\leftleftarrows",!0);i(l,f,v,"⇆","\\leftrightarrows",!0);i(l,f,v,"⇚","\\Lleftarrow",!0);i(l,f,v,"↞","\\twoheadleftarrow",!0);i(l,f,v,"↢","\\leftarrowtail",!0);i(l,f,v,"↫","\\looparrowleft",!0);i(l,f,v,"⇋","\\leftrightharpoons",!0);i(l,f,v,"↶","\\curvearrowleft",!0);i(l,f,v,"↺","\\circlearrowleft",!0);i(l,f,v,"↰","\\Lsh",!0);i(l,f,v,"⇈","\\upuparrows",!0);i(l,f,v,"↿","\\upharpoonleft",!0);i(l,f,v,"⇃","\\downharpoonleft",!0);i(l,c,v,"⊶","\\origof",!0);i(l,c,v,"⊷","\\imageof",!0);i(l,f,v,"⊸","\\multimap",!0);i(l,f,v,"↭","\\leftrightsquigarrow",!0);i(l,f,v,"⇉","\\rightrightarrows",!0);i(l,f,v,"⇄","\\rightleftarrows",!0);i(l,f,v,"↠","\\twoheadrightarrow",!0);i(l,f,v,"↣","\\rightarrowtail",!0);i(l,f,v,"↬","\\looparrowright",!0);i(l,f,v,"↷","\\curvearrowright",!0);i(l,f,v,"↻","\\circlearrowright",!0);i(l,f,v,"↱","\\Rsh",!0);i(l,f,v,"⇊","\\downdownarrows",!0);i(l,f,v,"↾","\\upharpoonright",!0);i(l,f,v,"⇂","\\downharpoonright",!0);i(l,f,v,"⇝","\\rightsquigarrow",!0);i(l,f,v,"⇝","\\leadsto");i(l,f,v,"⇛","\\Rrightarrow",!0);i(l,f,v,"↾","\\restriction");i(l,c,b,"‘","`");i(l,c,b,"$","\\$");i(z,c,b,"$","\\$");i(z,c,b,"$","\\textdollar");i(l,c,b,"%","\\%");i(z,c,b,"%","\\%");i(l,c,b,"_","\\_");i(z,c,b,"_","\\_");i(z,c,b,"_","\\textunderscore");i(l,c,b,"∠","\\angle",!0);i(l,c,b,"∞","\\infty",!0);i(l,c,b,"′","\\prime");i(l,c,b,"△","\\triangle");i(l,c,b,"Γ","\\Gamma",!0);i(l,c,b,"Δ","\\Delta",!0);i(l,c,b,"Θ","\\Theta",!0);i(l,c,b,"Λ","\\Lambda",!0);i(l,c,b,"Ξ","\\Xi",!0);i(l,c,b,"Π","\\Pi",!0);i(l,c,b,"Σ","\\Sigma",!0);i(l,c,b,"Υ","\\Upsilon",!0);i(l,c,b,"Φ","\\Phi",!0);i(l,c,b,"Ψ","\\Psi",!0);i(l,c,b,"Ω","\\Omega",!0);i(l,c,b,"A","Α");i(l,c,b,"B","Β");i(l,c,b,"E","Ε");i(l,c,b,"Z","Ζ");i(l,c,b,"H","Η");i(l,c,b,"I","Ι");i(l,c,b,"K","Κ");i(l,c,b,"M","Μ");i(l,c,b,"N","Ν");i(l,c,b,"O","Ο");i(l,c,b,"P","Ρ");i(l,c,b,"T","Τ");i(l,c,b,"X","Χ");i(l,c,b,"¬","\\neg",!0);i(l,c,b,"¬","\\lnot");i(l,c,b,"⊤","\\top");i(l,c,b,"⊥","\\bot");i(l,c,b,"∅","\\emptyset");i(l,f,b,"∅","\\varnothing");i(l,c,H,"α","\\alpha",!0);i(l,c,H,"β","\\beta",!0);i(l,c,H,"γ","\\gamma",!0);i(l,c,H,"δ","\\delta",!0);i(l,c,H,"ϵ","\\epsilon",!0);i(l,c,H,"ζ","\\zeta",!0);i(l,c,H,"η","\\eta",!0);i(l,c,H,"θ","\\theta",!0);i(l,c,H,"ι","\\iota",!0);i(l,c,H,"κ","\\kappa",!0);i(l,c,H,"λ","\\lambda",!0);i(l,c,H,"μ","\\mu",!0);i(l,c,H,"ν","\\nu",!0);i(l,c,H,"ξ","\\xi",!0);i(l,c,H,"ο","\\omicron",!0);i(l,c,H,"π","\\pi",!0);i(l,c,H,"ρ","\\rho",!0);i(l,c,H,"σ","\\sigma",!0);i(l,c,H,"τ","\\tau",!0);i(l,c,H,"υ","\\upsilon",!0);i(l,c,H,"ϕ","\\phi",!0);i(l,c,H,"χ","\\chi",!0);i(l,c,H,"ψ","\\psi",!0);i(l,c,H,"ω","\\omega",!0);i(l,c,H,"ε","\\varepsilon",!0);i(l,c,H,"ϑ","\\vartheta",!0);i(l,c,H,"ϖ","\\varpi",!0);i(l,c,H,"ϱ","\\varrho",!0);i(l,c,H,"ς","\\varsigma",!0);i(l,c,H,"φ","\\varphi",!0);i(l,c,q,"∗","*",!0);i(l,c,q,"+","+");i(l,c,q,"−","-",!0);i(l,c,q,"⋅","\\cdot",!0);i(l,c,q,"∘","\\circ",!0);i(l,c,q,"÷","\\div",!0);i(l,c,q,"±","\\pm",!0);i(l,c,q,"×","\\times",!0);i(l,c,q,"∩","\\cap",!0);i(l,c,q,"∪","\\cup",!0);i(l,c,q,"∖","\\setminus",!0);i(l,c,q,"∧","\\land");i(l,c,q,"∨","\\lor");i(l,c,q,"∧","\\wedge",!0);i(l,c,q,"∨","\\vee",!0);i(l,c,b,"√","\\surd");i(l,c,T0,"⟨","\\langle",!0);i(l,c,T0,"∣","\\lvert");i(l,c,T0,"∥","\\lVert");i(l,c,f0,"?","?");i(l,c,f0,"!","!");i(l,c,f0,"⟩","\\rangle",!0);i(l,c,f0,"∣","\\rvert");i(l,c,f0,"∥","\\rVert");i(l,c,v,"=","=");i(l,c,v,":",":");i(l,c,v,"≈","\\approx",!0);i(l,c,v,"≅","\\cong",!0);i(l,c,v,"≥","\\ge");i(l,c,v,"≥","\\geq",!0);i(l,c,v,"←","\\gets");i(l,c,v,">","\\gt",!0);i(l,c,v,"∈","\\in",!0);i(l,c,v,"","\\@not");i(l,c,v,"⊂","\\subset",!0);i(l,c,v,"⊃","\\supset",!0);i(l,c,v,"⊆","\\subseteq",!0);i(l,c,v,"⊇","\\supseteq",!0);i(l,f,v,"⊈","\\nsubseteq",!0);i(l,f,v,"⊉","\\nsupseteq",!0);i(l,c,v,"⊨","\\models");i(l,c,v,"←","\\leftarrow",!0);i(l,c,v,"≤","\\le");i(l,c,v,"≤","\\leq",!0);i(l,c,v,"<","\\lt",!0);i(l,c,v,"→","\\rightarrow",!0);i(l,c,v,"→","\\to");i(l,f,v,"≱","\\ngeq",!0);i(l,f,v,"≰","\\nleq",!0);i(l,c,G0," ","\\ ");i(l,c,G0," ","\\space");i(l,c,G0," ","\\nobreakspace");i(z,c,G0," ","\\ ");i(z,c,G0," "," ");i(z,c,G0," ","\\space");i(z,c,G0," ","\\nobreakspace");i(l,c,G0,"","\\nobreak");i(l,c,G0,"","\\allowbreak");i(l,c,Ae,",",",");i(l,c,Ae,";",";");i(l,f,q,"⊼","\\barwedge",!0);i(l,f,q,"⊻","\\veebar",!0);i(l,c,q,"⊙","\\odot",!0);i(l,c,q,"⊕","\\oplus",!0);i(l,c,q,"⊗","\\otimes",!0);i(l,c,b,"∂","\\partial",!0);i(l,c,q,"⊘","\\oslash",!0);i(l,f,q,"⊚","\\circledcirc",!0);i(l,f,q,"⊡","\\boxdot",!0);i(l,c,q,"△","\\bigtriangleup");i(l,c,q,"▽","\\bigtriangledown");i(l,c,q,"†","\\dagger");i(l,c,q,"⋄","\\diamond");i(l,c,q,"⋆","\\star");i(l,c,q,"◃","\\triangleleft");i(l,c,q,"▹","\\triangleright");i(l,c,T0,"{","\\{");i(z,c,b,"{","\\{");i(z,c,b,"{","\\textbraceleft");i(l,c,f0,"}","\\}");i(z,c,b,"}","\\}");i(z,c,b,"}","\\textbraceright");i(l,c,T0,"{","\\lbrace");i(l,c,f0,"}","\\rbrace");i(l,c,T0,"[","\\lbrack",!0);i(z,c,b,"[","\\lbrack",!0);i(l,c,f0,"]","\\rbrack",!0);i(z,c,b,"]","\\rbrack",!0);i(l,c,T0,"(","\\lparen",!0);i(l,c,f0,")","\\rparen",!0);i(z,c,b,"<","\\textless",!0);i(z,c,b,">","\\textgreater",!0);i(l,c,T0,"⌊","\\lfloor",!0);i(l,c,f0,"⌋","\\rfloor",!0);i(l,c,T0,"⌈","\\lceil",!0);i(l,c,f0,"⌉","\\rceil",!0);i(l,c,b,"\\","\\backslash");i(l,c,b,"∣","|");i(l,c,b,"∣","\\vert");i(z,c,b,"|","\\textbar",!0);i(l,c,b,"∥","\\|");i(l,c,b,"∥","\\Vert");i(z,c,b,"∥","\\textbardbl");i(z,c,b,"~","\\textasciitilde");i(z,c,b,"\\","\\textbackslash");i(z,c,b,"^","\\textasciicircum");i(l,c,v,"↑","\\uparrow",!0);i(l,c,v,"⇑","\\Uparrow",!0);i(l,c,v,"↓","\\downarrow",!0);i(l,c,v,"⇓","\\Downarrow",!0);i(l,c,v,"↕","\\updownarrow",!0);i(l,c,v,"⇕","\\Updownarrow",!0);i(l,c,s0,"∐","\\coprod");i(l,c,s0,"⋁","\\bigvee");i(l,c,s0,"⋀","\\bigwedge");i(l,c,s0,"⨄","\\biguplus");i(l,c,s0,"⋂","\\bigcap");i(l,c,s0,"⋃","\\bigcup");i(l,c,s0,"∫","\\int");i(l,c,s0,"∫","\\intop");i(l,c,s0,"∬","\\iint");i(l,c,s0,"∭","\\iiint");i(l,c,s0,"∏","\\prod");i(l,c,s0,"∑","\\sum");i(l,c,s0,"⨂","\\bigotimes");i(l,c,s0,"⨁","\\bigoplus");i(l,c,s0,"⨀","\\bigodot");i(l,c,s0,"∮","\\oint");i(l,c,s0,"∯","\\oiint");i(l,c,s0,"∰","\\oiiint");i(l,c,s0,"⨆","\\bigsqcup");i(l,c,s0,"∫","\\smallint");i(z,c,ge,"…","\\textellipsis");i(l,c,ge,"…","\\mathellipsis");i(z,c,ge,"…","\\ldots",!0);i(l,c,ge,"…","\\ldots",!0);i(l,c,ge,"⋯","\\@cdots",!0);i(l,c,ge,"⋱","\\ddots",!0);i(l,c,b,"⋮","\\varvdots");i(z,c,b,"⋮","\\varvdots");i(l,c,J,"ˊ","\\acute");i(l,c,J,"ˋ","\\grave");i(l,c,J,"¨","\\ddot");i(l,c,J,"~","\\tilde");i(l,c,J,"ˉ","\\bar");i(l,c,J,"˘","\\breve");i(l,c,J,"ˇ","\\check");i(l,c,J,"^","\\hat");i(l,c,J,"⃗","\\vec");i(l,c,J,"˙","\\dot");i(l,c,J,"˚","\\mathring");i(l,c,H,"","\\@imath");i(l,c,H,"","\\@jmath");i(l,c,b,"ı","ı");i(l,c,b,"ȷ","ȷ");i(z,c,b,"ı","\\i",!0);i(z,c,b,"ȷ","\\j",!0);i(z,c,b,"ß","\\ss",!0);i(z,c,b,"æ","\\ae",!0);i(z,c,b,"œ","\\oe",!0);i(z,c,b,"ø","\\o",!0);i(z,c,b,"Æ","\\AE",!0);i(z,c,b,"Œ","\\OE",!0);i(z,c,b,"Ø","\\O",!0);i(z,c,J,"ˊ","\\'");i(z,c,J,"ˋ","\\`");i(z,c,J,"ˆ","\\^");i(z,c,J,"˜","\\~");i(z,c,J,"ˉ","\\=");i(z,c,J,"˘","\\u");i(z,c,J,"˙","\\.");i(z,c,J,"¸","\\c");i(z,c,J,"˚","\\r");i(z,c,J,"ˇ","\\v");i(z,c,J,"¨",'\\"');i(z,c,J,"˝","\\H");i(z,c,J,"◯","\\textcircled");var ca={"--":!0,"---":!0,"``":!0,"''":!0};i(z,c,b,"–","--",!0);i(z,c,b,"–","\\textendash");i(z,c,b,"—","---",!0);i(z,c,b,"—","\\textemdash");i(z,c,b,"‘","`",!0);i(z,c,b,"‘","\\textquoteleft");i(z,c,b,"’","'",!0);i(z,c,b,"’","\\textquoteright");i(z,c,b,"“","``",!0);i(z,c,b,"“","\\textquotedblleft");i(z,c,b,"”","''",!0);i(z,c,b,"”","\\textquotedblright");i(l,c,b,"°","\\degree",!0);i(z,c,b,"°","\\degree");i(z,c,b,"°","\\textdegree",!0);i(l,c,b,"£","\\pounds");i(l,c,b,"£","\\mathsterling",!0);i(z,c,b,"£","\\pounds");i(z,c,b,"£","\\textsterling",!0);i(l,f,b,"✠","\\maltese");i(z,f,b,"✠","\\maltese");var wr='0123456789/@."';for(var it=0;it{var e=r.charCodeAt(0),t=r.charCodeAt(1),a=(e-55296)*1024+(t-56320)+65536;if(119808<=a&&a<120484){var n=Math.floor((a-119808)/26);return Fr[n]}else if(120782<=a&&a<=120831){var s=Math.floor((a-120782)/10);return pi[s]}else{if(a===120485||a===120486)return Fr[0];if(120486{if(K0(r.classes)!==K0(e.classes)||r.skew!==e.skew||r.maxFontSize!==e.maxFontSize||r.italic!==0&&r.hasClass("mathnormal"))return!1;if(r.classes.length===1){var t=r.classes[0];if(t==="mbin"||t==="mord")return!1}for(var a of Object.keys(r.style))if(r.style[a]!==e.style[a])return!1;for(var n of Object.keys(e.style))if(r.style[n]!==e.style[n])return!1;return!0},ha=r=>{for(var e=0;et&&(t=o.height),o.depth>a&&(a=o.depth),o.maxFontSize>n&&(n=o.maxFontSize)}e.height=t,e.depth=a,e.maxFontSize=n},C=function(e,t,a,n){var s=new ve(e,t,a,n);return Ut(s),s},Q0=(r,e,t,a)=>new ve(r,e,t,a),me=function(e,t,a){var n=C([e],[],t);return n.height=Math.max(a||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=N(n.height),n.maxFontSize=1,n},bi=function(e,t,a,n){var s=new je(e,t,a,n);return Ut(s),s},U0=function(e){var t=new fe(e);return Ut(t),t},pe=function(e,t){return e instanceof fe?C([],[e],t):e},yi=function(e){if(e.positionType==="individualShift"){for(var t=e.children,a=[t[0]],n=-t[0].shift-t[0].elem.depth,s=n,o=1;o{var t=C(["mspace"],[],e),a=t0(r,e);return t.style.marginRight=N(a),t},De=(r,e,t)=>{var a,n;switch(r){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=r}return e==="textbf"&&t==="textit"?n="BoldItalic":e==="textbf"?n="Bold":t==="textit"?n="Italic":n="Regular",a+"-"+n},Ct={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},ma={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},pa=function(e,t){var[a,n,s]=ma[e],o=new J0(a),u=new $0([o],{width:N(n),height:N(s),style:"width:"+N(n),viewBox:"0 0 "+1e3*n+" "+1e3*s,preserveAspectRatio:"xMinYMin"}),h=Q0(["overlay"],[u],t);return h.height=s,h.style.height=N(s),h.style.width=N(n),h},e0={number:3,unit:"mu"},ne={number:4,unit:"mu"},q0={number:5,unit:"mu"},xi={mord:{mop:e0,mbin:ne,mrel:q0,minner:e0},mop:{mord:e0,mop:e0,mrel:q0,minner:e0},mbin:{mord:ne,mop:ne,mopen:ne,minner:ne},mrel:{mord:q0,mop:q0,mopen:q0,minner:q0},mopen:{},mclose:{mop:e0,mbin:ne,mrel:q0,minner:e0},mpunct:{mord:e0,mop:e0,mrel:q0,mopen:e0,mclose:e0,mpunct:e0,minner:e0},minner:{mord:e0,mop:e0,mbin:ne,mrel:q0,mopen:e0,mpunct:e0,minner:e0}},wi={mord:{mop:e0},mop:{mord:e0,mop:e0},mbin:{},mrel:{},mopen:{},mclose:{mop:e0},mpunct:{},minner:{mop:e0}},fa={},we={},Se={};function L(r){for(var{type:e,names:t,htmlBuilder:a,mathmlBuilder:n}=r,s=0;s{var M=E.classes[0],R=D.classes[0];M==="mbin"&&ki.has(R)?E.classes[0]="mord":R==="mbin"&&Si.has(M)&&(D.classes[0]="mord")},{node:g},S,x),Rt(s,(D,E)=>{var M,R,y=It(E),w=It(D),k=y&&w?D.hasClass("mtight")?(M=wi[y])==null?void 0:M[w]:(R=xi[y])==null?void 0:R[w]:null;if(k)return da(k,m)},{node:g},S,x),s},Rt=function(e,t,a,n,s){n&&e.push(n);for(var o=0;oS=>{e.splice(g+1,0,S),o++})(o)}n&&e.pop()},va=function(e){return e instanceof fe||e instanceof je||e instanceof ve&&e.hasClass("enclosing")?e:null},Ft=function(e,t){var a=va(e);if(a){var n=a.children;if(n.length){if(t==="right")return Ft(n[n.length-1],"right");if(t==="left")return Ft(n[0],"left")}}return e},It=function(e,t){if(!e)return null;t&&(e=Ft(e,t));var a=e.classes[0];return Ti[a]||null},ke=function(e,t){var a=["nulldelimiter"].concat(e.baseSizingClasses());return C(t.concat(a))},V=function(e,t,a){if(!e)return C();if(we[e.type]){var n=we[e.type](e,t);if(a&&t.size!==a.size){n=C(t.sizingClasses(a),[n],t);var s=t.sizeMultiplier/a.sizeMultiplier;n.height*=s,n.depth*=s}return n}else throw new F("Got group of unknown type: '"+e.type+"'")};function Ne(r,e){var t=C(["base"],r,e),a=C(["strut"]);return a.style.height=N(t.height+t.depth),t.depth&&(a.style.verticalAlign=N(-t.depth)),t.children.unshift(a),t}function Dt(r,e){var t=null;r.length===1&&r[0].type==="tag"&&(t=r[0].tag,r=r[0].body);var a=o0(r,e,"root"),n;a.length===2&&a[1].hasClass("tag")&&(n=a.pop());for(var s=[],o=[],u=0;u0&&(s.push(Ne(o,e)),o=[]),s.push(a[u]));o.length>0&&s.push(Ne(o,e));var m;t?(m=Ne(o0(t,e,!0),e),m.classes=["tag"],s.push(m)):n&&s.push(n);var p=C(["katex-html"],s);if(p.setAttribute("aria-hidden","true"),m){var g=m.children[0];g.style.height=N(p.height+p.depth),p.depth&&(g.style.verticalAlign=N(-p.depth))}return p}function ga(r){return new fe(r)}class I{constructor(e,t,a){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=a||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=K0(this.classes));for(var a=0;a0&&(e+=' class ="'+c0(K0(this.classes))+'"'),e+=">";for(var a=0;a",e}toText(){return this.children.map(e=>e.toText()).join("")}}class i0{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return c0(this.toText())}toText(){return this.text}}class ba{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",N(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var Ei=new Set(["\\imath","\\jmath"]),Mi=new Set(["mrow","mtable"]),z0=function(e,t,a){return K[t][e]&&K[t][e].replace&&e.charCodeAt(0)!==55349&&!(ca.hasOwnProperty(e)&&a&&(a.fontFamily&&a.fontFamily.slice(4,6)==="tt"||a.font&&a.font.slice(4,6)==="tt"))&&(e=K[t][e].replace),new i0(e)},jt=function(e){return e.length===1?e[0]:new I("mrow",e)},zi={mathit:"italic",boldsymbol:r=>r.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},Xt=(r,e)=>{if(r.mode==="text"){if(e.fontFamily==="texttt")return"monospace";if(e.fontFamily==="textsf")return e.fontShape==="textit"&&e.fontWeight==="textbf"?"sans-serif-bold-italic":e.fontShape==="textit"?"sans-serif-italic":e.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(e.fontShape==="textit"&&e.fontWeight==="textbf")return"bold-italic";if(e.fontShape==="textit")return"italic";if(e.fontWeight==="textbf")return"bold"}var t=e.font;if(!t||t==="mathnormal")return null;var a=r.mode,n=zi[t];if(n)return typeof n=="function"?n(r):n;var s=r.text;if(Ei.has(s))return null;if(K[a][s]){var o=K[a][s].replace;o&&(s=o)}var u=Ct[t].fontName;return _t(s,u,a)?Ct[t].variant:null};function ut(r){if(!r)return!1;if(r.type==="mi"&&r.children.length===1){var e=r.children[0];return e instanceof i0&&e.text==="."}else if(r.type==="mo"&&r.children.length===1&&r.getAttribute("separator")==="true"&&r.getAttribute("lspace")==="0em"&&r.getAttribute("rspace")==="0em"){var t=r.children[0];return t instanceof i0&&t.text===","}else return!1}var E0=function(e,t,a){if(e.length===1){var n=Z(e[0],t);return a&&n instanceof I&&n.type==="mo"&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var s=[],o,u=0;u=1&&(o.type==="mn"||ut(o))){var m=h.children[0];m instanceof I&&m.type==="mn"&&(m.children=[...o.children,...m.children],s.pop())}else if(o.type==="mi"&&o.children.length===1){var p=o.children[0];if(p instanceof i0&&p.text==="̸"&&(h.type==="mo"||h.type==="mi"||h.type==="mn")){var g=h.children[0];g instanceof i0&&g.text.length>0&&(g.text=g.text.slice(0,1)+"̸"+g.text.slice(1),s.pop())}}}s.push(h),o=h}return s},ee=function(e,t,a){return jt(E0(e,t,a))},Z=function(e,t){if(!e)return new I("mrow");if(Se[e.type])return Se[e.type](e,t);throw new F("Got group of unknown type: '"+e.type+"'")};function Ir(r,e,t,a,n){var s=E0(r,t),o;s.length===1&&s[0]instanceof I&&Mi.has(s[0].type)?o=s[0]:o=new I("mrow",s);var u=new I("annotation",[new i0(e)]);u.setAttribute("encoding","application/x-tex");var h=new I("semantics",[o,u]),m=new I("math",[h]);m.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&m.setAttribute("display","block");var p=n?"katex":"katex-mathml";return C([p],[m])}var Ci=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Dr=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Nr=function(e,t){return t.size<2?e:Ci[e-1][t.size-1]};class P0{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||P0.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=Dr[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(t,e),new P0(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Nr(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Dr[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=Nr(P0.BASESIZE,e);return this.size===t&&this.textSize===P0.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==P0.BASESIZE?["sizing","reset-size"+this.size,"size"+P0.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=di(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}P0.BASESIZE=6;var ya=function(e){return new P0({style:e.displayMode?_.DISPLAY:_.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},xa=function(e,t){if(t.displayMode){var a=["katex-display"];t.leqno&&a.push("leqno"),t.fleqn&&a.push("fleqn"),e=C(a,[e])}return e},Ri=function(e,t,a){var n=ya(a),s;if(a.output==="mathml")return Ir(e,t,n,a.displayMode,!0);if(a.output==="html"){var o=Dt(e,n);s=C(["katex"],[o])}else{var u=Ir(e,t,n,a.displayMode,!1),h=Dt(e,n);s=C(["katex"],[u,h])}return xa(s,a)},Fi=function(e,t,a){var n=ya(a),s=Dt(e,n),o=C(["katex"],[s]);return xa(o,a)},Ii={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},We=function(e){var t=new I("mo",[new i0(Ii[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Di={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ni=new Set(["widehat","widecheck","widetilde","utilde"]),Ye=function(e,t){function a(){var u=4e5,h=e.label.slice(1);if(Ni.has(h)&&"base"in e){var m=e.base.type==="ordgroup"?e.base.body.length:1,p,g,S;if(m>5)h==="widehat"||h==="widecheck"?(p=420,u=2364,S=.42,g=h+"4"):(p=312,u=2340,S=.34,g="tilde4");else{var x=[1,1,2,2,3,3][m];h==="widehat"||h==="widecheck"?(u=[0,1062,2364,2364,2364][x],p=[0,239,300,360,420][x],S=[0,.24,.3,.3,.36,.42][x],g=h+x):(u=[0,600,1033,2339,2340][x],p=[0,260,286,306,312][x],S=[0,.26,.286,.3,.306,.34][x],g="tilde"+x)}var D=new J0(g),E=new $0([D],{width:"100%",height:N(S),viewBox:"0 0 "+u+" "+p,preserveAspectRatio:"none"});return{span:Q0([],[E],t),minWidth:0,height:S}}else{var M=[],R=Di[h];if(!R)throw new Error('No SVG data for "'+h+'".');var[y,w,k]=R,A=k/1e3,T=y.length,O,P;if(T===1){if(R.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+h+'".');O=["hide-tail"],P=[R[3]]}else if(T===2)O=["halfarrow-left","halfarrow-right"],P=["xMinYMin","xMaxYMin"];else if(T===3)O=["brace-left","brace-center","brace-right"],P=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+T+" children.");for(var B=0;B0&&(n.style.minWidth=N(s)),n},Bi=function(e,t,a,n,s){var o,u=e.height+e.depth+a+n;if(/fbox|color|angl/.test(t)){if(o=C(["stretchy",t],[],s),t==="fbox"){var h=s.color&&s.getColor();h&&(o.style.borderColor=h)}}else{var m=[];/^[bx]cancel$/.test(t)&&m.push(new kt({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&m.push(new kt({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var p=new $0(m,{width:"100%",height:N(u)});o=Q0([],[p],s)}return o.height=u,o.style.height=N(u),o},Oi={bin:1,close:1,inner:1,open:1,punct:1,rel:1},Li={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function qi(r){return r in Oi}function G(r,e){if(!r||r.type!==e)throw new Error("Expected node of type "+e+", but got "+(r?"node of type "+r.type:String(r)));return r}function Ze(r){var e=Ke(r);if(!e)throw new Error("Expected node of symbol group type, but got "+(r?"node of type "+r.type:String(r)));return e}function Ke(r){return r&&(r.type==="atom"||Li.hasOwnProperty(r.type))?r:null}var wa=r=>{if(r instanceof A0)return r;if(ci(r)&&r.children.length===1)return wa(r.children[0])},Sa=(r,e)=>{var t,a,n;r&&r.type==="supsub"?(a=G(r.base,"accent"),t=a.base,r.base=t,n=ui(V(r,e)),r.base=a):(a=G(r,"accent"),t=a.base);var s=V(t,e.havingCrampedStyle()),o=a.isShifty&&_0(t),u=0;if(o){var h,m;u=(h=(m=wa(s))==null?void 0:m.skew)!=null?h:0}var p=a.label==="\\c",g=p?s.height+s.depth:Math.min(s.height,e.fontMetrics().xHeight),S;if(a.isStretchy)S=Ye(a,e),S=X({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:S,wrapperClasses:["svg-align"],wrapperStyle:u>0?{width:"calc(100% - "+N(2*u)+")",marginLeft:N(2*u)}:void 0}]});else{var x,D;a.label==="\\vec"?(x=pa("vec",e),D=ma.vec[1]):(x=Ve({type:"textord",mode:a.mode,text:a.label},e),x=oi(x),x.italic=0,D=x.width,p&&(g+=x.depth)),S=C(["accent-body"],[x]);var E=a.label==="\\textcircled";E&&(S.classes.push("accent-full"),g=s.height);var M=u;E||(M-=D/2),S.style.left=N(M),a.label==="\\textcircled"&&(S.style.top=".2em"),S=X({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-g},{type:"elem",elem:S}]})}var R=C(["mord","accent"],[S],e);return n?(n.children[0]=R,n.height=Math.max(R.height,n.height),n.classes[0]="mord",n):R},Pi=(r,e)=>{var t=r.isStretchy?We(r.label):new I("mo",[z0(r.label,r.mode)]),a=new I("mover",[Z(r.base,e),t]);return a.setAttribute("accent","true"),a},Hi=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(r=>"\\"+r).join("|"));L({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],numArgs:1,handler:(r,e)=>{var t=Ue(e[0]),a=!Hi.test(r.funcName),n=!a||r.funcName==="\\widehat"||r.funcName==="\\widetilde"||r.funcName==="\\widecheck";return{type:"accent",mode:r.parser.mode,label:r.funcName,isStretchy:a,isShifty:n,base:t}},htmlBuilder:Sa,mathmlBuilder:Pi});L({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"],handler:(r,e)=>{var t=e[0],a=r.parser.mode;return a==="math"&&(r.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+r.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:r.funcName,isStretchy:!1,isShifty:!0,base:t}}});L({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],numArgs:1,handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"accentUnder",mode:t.mode,label:a,base:n}},htmlBuilder:(r,e)=>{var t=V(r.base,e),a=Ye(r,e),n=r.label==="\\utilde"?.12:0,s=X({positionType:"top",positionData:t.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:t}]});return C(["mord","accentunder"],[s],e)},mathmlBuilder:(r,e)=>{var t=We(r.label),a=new I("munder",[Z(r.base,e),t]);return a.setAttribute("accentunder","true"),a}});var Be=r=>{var e=new I("mpadded",r?[r]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};L({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],numArgs:1,numOptionalArgs:1,handler(r,e,t){var{parser:a,funcName:n}=r;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:t[0]}},htmlBuilder(r,e){var t=e.style,a=e.havingStyle(t.sup()),n=pe(V(r.body,a,e),e),s=r.label.slice(0,2)==="\\x"?"x":"cd";n.classes.push(s+"-arrow-pad");var o;r.below&&(a=e.havingStyle(t.sub()),o=pe(V(r.below,a,e),e),o.classes.push(s+"-arrow-pad"));var u=Ye(r,e),h=-e.fontMetrics().axisHeight+.5*u.height,m=-e.fontMetrics().axisHeight-.5*u.height-.111;(n.depth>.25||r.label==="\\xleftequilibrium")&&(m-=n.depth);var p;if(o){var g=-e.fontMetrics().axisHeight+o.height+.5*u.height+.111;p=X({positionType:"individualShift",children:[{type:"elem",elem:n,shift:m},{type:"elem",elem:u,shift:h,wrapperClasses:["svg-align"]},{type:"elem",elem:o,shift:g}]})}else p=X({positionType:"individualShift",children:[{type:"elem",elem:n,shift:m},{type:"elem",elem:u,shift:h,wrapperClasses:["svg-align"]}]});return C(["mrel","x-arrow"],[p],e)},mathmlBuilder(r,e){var t=We(r.label);t.setAttribute("minsize",r.label.charAt(0)==="x"?"1.75em":"3.0em");var a;if(r.body){var n=Be(Z(r.body,e));if(r.below){var s=Be(Z(r.below,e));a=new I("munderover",[t,s,n])}else a=new I("mover",[t,n])}else if(r.below){var o=Be(Z(r.below,e));a=new I("munder",[t,o])}else a=Be(),a=new I("mover",[t,a]);return a}});function $i(r,e){var t=o0(r.body,e,!0);return C([r.mclass],t,e)}function _i(r,e){var t,a=E0(r.body,e);return r.mclass==="minner"?t=new I("mpadded",a):r.mclass==="mord"?r.isCharacterBox?(t=a[0],t.type="mi"):t=new I("mi",a):(r.isCharacterBox?(t=a[0],t.type="mo"):t=new I("mo",a),r.mclass==="mbin"?(t.attributes.lspace="0.22em",t.attributes.rspace="0.22em"):r.mclass==="mpunct"?(t.attributes.lspace="0em",t.attributes.rspace="0.17em"):(r.mclass==="mopen"||r.mclass==="mclose")&&(t.attributes.lspace="0em",t.attributes.rspace="0em")),t}L({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],numArgs:1,primitive:!0,handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"mclass",mode:t.mode,mclass:"m"+a.slice(5),body:n0(n),isCharacterBox:_0(n)}},htmlBuilder:$i,mathmlBuilder:_i});var Je=r=>{var e=r.type==="ordgroup"&&r.body.length?r.body[0]:r;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};L({type:"mclass",names:["\\@binrel"],numArgs:2,handler(r,e){var{parser:t}=r;return{type:"mclass",mode:t.mode,mclass:Je(e[0]),body:n0(e[1]),isCharacterBox:_0(e[1])}}});L({type:"mclass",names:["\\stackrel","\\overset","\\underset"],numArgs:2,handler(r,e){var{parser:t,funcName:a}=r,n=e[1],s=e[0],o;a!=="\\stackrel"?o=Je(n):o="mrel";var u={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:a!=="\\stackrel",body:n0(n)},h=a==="\\underset"?{type:"supsub",mode:s.mode,base:u,sub:s}:{type:"supsub",mode:s.mode,base:u,sup:s};return{type:"mclass",mode:t.mode,mclass:o,body:[h],isCharacterBox:_0(h)}}});L({type:"pmb",names:["\\pmb"],numArgs:1,allowedInText:!0,handler(r,e){var{parser:t}=r;return{type:"pmb",mode:t.mode,mclass:Je(e[0]),body:n0(e[0])}},htmlBuilder(r,e){var t=o0(r.body,e,!0),a=C([r.mclass],t,e);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(r,e){var t=E0(r.body,e),a=new I("mstyle",t);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var Gi={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Br=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),Or=r=>r.type==="textord"&&r.text==="@",Ui=(r,e)=>(r.type==="mathord"||r.type==="atom")&&r.text===e;function ji(r,e,t){var a=Gi[r];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return t.callFunction(a,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var n=t.callFunction("\\\\cdleft",[e[0]],[]),s={type:"atom",text:a,mode:"math",family:"rel"},o=t.callFunction("\\Big",[s],[]),u=t.callFunction("\\\\cdright",[e[1]],[]),h={type:"ordgroup",mode:"math",body:[n,o,u]};return t.callFunction("\\\\cdparent",[h],[])}case"\\\\cdlongequal":return t.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var m={type:"textord",text:"\\Vert",mode:"math"};return t.callFunction("\\Big",[m],[])}default:return{type:"textord",text:" ",mode:"math"}}}function Xi(r){var e=[];for(r.gullet.beginGroup(),r.gullet.macros.set("\\cr","\\\\\\relax"),r.gullet.beginGroup();;){e.push(r.parseExpression(!1,"\\\\")),r.gullet.endGroup(),r.gullet.beginGroup();var t=r.fetch().text;if(t==="&"||t==="\\\\")r.consume();else if(t==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new F("Expected \\\\ or \\cr or \\end",r.nextToken)}for(var a=[],n=[a],s=0;sAV".includes(m))for(var g=0;g<2;g++){for(var S=!0,x=h+1;xAV=|." after @',o[h]);var D=ji(m,p,r),E={type:"styling",body:[D],mode:"math",style:"display",resetFont:!0};a.push(E),u=Br()}s%2===0?a.push(u):a.shift(),a=[],n.push(a)}r.gullet.endGroup(),r.gullet.endGroup();var M=new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:M,colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}L({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],numArgs:1,handler(r,e){var{parser:t,funcName:a}=r;return{type:"cdlabel",mode:t.mode,side:a.slice(4),label:e[0]}},htmlBuilder(r,e){var t=e.havingStyle(e.style.sup()),a=pe(V(r.label,t,e),e);return a.classes.push("cd-label-"+r.side),a.style.bottom=N(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(r,e){var t=new I("mrow",[Z(r.label,e)]);return t=new I("mpadded",[t]),t.setAttribute("width","0"),r.side==="left"&&t.setAttribute("lspace","-1width"),t.setAttribute("voffset","0.7em"),t=new I("mstyle",[t]),t.setAttribute("displaystyle","false"),t.setAttribute("scriptlevel","1"),t}});L({type:"cdlabelparent",names:["\\\\cdparent"],numArgs:1,handler(r,e){var{parser:t}=r;return{type:"cdlabelparent",mode:t.mode,fragment:e[0]}},htmlBuilder(r,e){var t=pe(V(r.fragment,e),e);return t.classes.push("cd-vert-arrow"),t},mathmlBuilder(r,e){return new I("mrow",[Z(r.fragment,e)])}});L({type:"textord",names:["\\@char"],numArgs:1,allowedInText:!0,handler(r,e){for(var{parser:t}=r,a=G(e[0],"ordgroup"),n=a.body,s="",o=0;o=1114111)throw new F("\\@char with invalid code point "+s);return h<=65535?m=String.fromCharCode(h):(h-=65536,m=String.fromCharCode((h>>10)+55296,(h&1023)+56320)),{type:"textord",mode:t.mode,text:m}}});var Vi=(r,e)=>{var t=o0(r.body,e.withColor(r.color),!1);return U0(t)},Wi=(r,e)=>{var t=E0(r.body,e.withColor(r.color)),a=new I("mstyle",t);return a.setAttribute("mathcolor",r.color),a};L({type:"color",names:["\\textcolor"],numArgs:2,allowedInText:!0,argTypes:["color","original"],handler(r,e){var{parser:t}=r,a=G(e[0],"color-token").color,n=e[1];return{type:"color",mode:t.mode,color:a,body:n0(n)}},htmlBuilder:Vi,mathmlBuilder:Wi});L({type:"color",names:["\\color"],numArgs:1,allowedInText:!0,argTypes:["color"],handler(r,e){var{parser:t,breakOnTokenText:a}=r,n=G(e[0],"color-token").color;t.gullet.macros.set("\\current@color",n);var s=t.parseExpression(!0,a);return{type:"color",mode:t.mode,color:n,body:s}}});L({type:"cr",names:["\\\\"],numArgs:0,numOptionalArgs:0,allowedInText:!0,handler(r,e,t){var{parser:a}=r,n=a.gullet.future().text==="["?a.parseSizeGroup(!0):null,s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:s,size:n&&G(n,"size").value}},htmlBuilder(r,e){var t=C(["mspace"],[],e);return r.newLine&&(t.classes.push("newline"),r.size&&(t.style.marginTop=N(t0(r.size,e)))),t},mathmlBuilder(r,e){var t=new I("mspace");return r.newLine&&(t.setAttribute("linebreak","newline"),r.size&&t.setAttribute("height",N(t0(r.size,e)))),t}});var Nt={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},ka=r=>{var e=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new F("Expected a control sequence",r);return e},Yi=r=>{var e=r.gullet.popToken();return e.text==="="&&(e=r.gullet.popToken(),e.text===" "&&(e=r.gullet.popToken())),e},Aa=(r,e,t,a)=>{var n=r.gullet.macros.get(t.text);n==null&&(t.noexpand=!0,n={tokens:[t],numArgs:0,unexpandable:!r.gullet.isExpandable(t.text)}),r.gullet.macros.set(e,n,a)};L({type:"internal",names:["\\global","\\long","\\\\globallong"],numArgs:0,allowedInText:!0,handler(r){var{parser:e,funcName:t}=r;e.consumeSpaces();var a=e.fetch();if(Nt[a.text])return(t==="\\global"||t==="\\\\globallong")&&(a.text=Nt[a.text]),G(e.parseFunction(),"internal");throw new F("Invalid token after macro prefix",a)}});L({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],numArgs:0,allowedInText:!0,primitive:!0,handler(r){var{parser:e,funcName:t}=r,a=e.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new F("Expected a control sequence",a);for(var s=0,o,u=[[]];e.gullet.future().text!=="{";)if(a=e.gullet.popToken(),a.text==="#"){if(e.gullet.future().text==="{"){o=e.gullet.future(),u[s].push("{");break}if(a=e.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new F('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new F('Argument number "'+a.text+'" out of order');s++,u.push([])}else{if(a.text==="EOF")throw new F("Expected a macro definition");u[s].push(a.text)}var{tokens:h}=e.gullet.consumeArg();return o&&h.unshift(o),(t==="\\edef"||t==="\\xdef")&&(h=e.gullet.expandTokens(h),h.reverse()),e.gullet.macros.set(n,{tokens:h,numArgs:s,delimiters:u},t===Nt[t]),{type:"internal",mode:e.mode}}});L({type:"internal",names:["\\let","\\\\globallet"],numArgs:0,allowedInText:!0,primitive:!0,handler(r){var{parser:e,funcName:t}=r,a=ka(e.gullet.popToken());e.gullet.consumeSpaces();var n=Yi(e);return Aa(e,a,n,t==="\\\\globallet"),{type:"internal",mode:e.mode}}});L({type:"internal",names:["\\futurelet","\\\\globalfuture"],numArgs:0,allowedInText:!0,primitive:!0,handler(r){var{parser:e,funcName:t}=r,a=ka(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return Aa(e,a,s,t==="\\\\globalfuture"),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}});var be=function(e,t,a){var n=K.math[e]&&K.math[e].replace,s=_t(n||e,t,a);if(!s)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return s},Vt=function(e,t,a,n){var s=a.havingBaseStyle(t),o=C(n.concat(s.sizingClasses(a)),[e],a),u=s.sizeMultiplier/a.sizeMultiplier;return o.height*=u,o.depth*=u,o.maxFontSize=s.sizeMultiplier,o},Ta=function(e,t,a){var n=t.havingBaseStyle(a),s=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=N(s),e.height-=s,e.depth+=s},Zi=function(e,t,a,n,s,o){var u=m0(e,"Main-Regular",s,n),h=Vt(u,t,n,o);return Ta(h,n,t),h},Ki=function(e,t,a,n){return m0(e,"Size"+t+"-Regular",a,n)},Ea=function(e,t,a,n,s,o){var u=Ki(e,t,s,n),h=Vt(C(["delimsizing","size"+t],[u],n),_.TEXT,n,o);return a&&Ta(h,n,_.TEXT),h},ct=function(e,t,a){var n;t==="Size1-Regular"?n="delim-size1":n="delim-size4";var s=C(["delimsizinginner",n],[C([],[m0(e,t,a)])]);return{type:"elem",elem:s}},ht=function(e,t,a){var n=I0["Size4-Regular"][e.charCodeAt(0)]?I0["Size4-Regular"][e.charCodeAt(0)][4]:I0["Size1-Regular"][e.charCodeAt(0)][4],s=new J0("inner",ti(e,Math.round(1e3*t))),o=new $0([s],{width:N(n),height:N(t),style:"width:"+N(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),u=Q0([],[o],a);return u.height=t,u.style.height=N(t),u.style.width=N(n),{type:"elem",elem:u}},Bt=.008,Oe={type:"kern",size:-1*Bt},Ji=new Set(["|","\\lvert","\\rvert","\\vert"]),Qi=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),Ma=function(e,t,a,n,s,o){var u,h,m,p,g="",S=0;u=m=p=e,h=null;var x="Size1-Regular";e==="\\uparrow"?m=p="⏐":e==="\\Uparrow"?m=p="‖":e==="\\downarrow"?u=m="⏐":e==="\\Downarrow"?u=m="‖":e==="\\updownarrow"?(u="\\uparrow",m="⏐",p="\\downarrow"):e==="\\Updownarrow"?(u="\\Uparrow",m="‖",p="\\Downarrow"):Ji.has(e)?(m="∣",g="vert",S=333):Qi.has(e)?(m="∥",g="doublevert",S=556):e==="["||e==="\\lbrack"?(u="⎡",m="⎢",p="⎣",x="Size4-Regular",g="lbrack",S=667):e==="]"||e==="\\rbrack"?(u="⎤",m="⎥",p="⎦",x="Size4-Regular",g="rbrack",S=667):e==="\\lfloor"||e==="⌊"?(m=u="⎢",p="⎣",x="Size4-Regular",g="lfloor",S=667):e==="\\lceil"||e==="⌈"?(u="⎡",m=p="⎢",x="Size4-Regular",g="lceil",S=667):e==="\\rfloor"||e==="⌋"?(m=u="⎥",p="⎦",x="Size4-Regular",g="rfloor",S=667):e==="\\rceil"||e==="⌉"?(u="⎤",m=p="⎥",x="Size4-Regular",g="rceil",S=667):e==="("||e==="\\lparen"?(u="⎛",m="⎜",p="⎝",x="Size4-Regular",g="lparen",S=875):e===")"||e==="\\rparen"?(u="⎞",m="⎟",p="⎠",x="Size4-Regular",g="rparen",S=875):e==="\\{"||e==="\\lbrace"?(u="⎧",h="⎨",p="⎩",m="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(u="⎫",h="⎬",p="⎭",m="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(u="⎧",p="⎩",m="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(u="⎫",p="⎭",m="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(u="⎧",p="⎭",m="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(u="⎫",p="⎩",m="⎪",x="Size4-Regular");var D=be(u,x,s),E=D.height+D.depth,M=be(m,x,s),R=M.height+M.depth,y=be(p,x,s),w=y.height+y.depth,k=0,A=1;if(h!==null){var T=be(h,x,s);k=T.height+T.depth,A=2}var O=E+w+k,P=Math.max(0,Math.ceil((t-O)/(A*R))),B=O+P*A*R,j=n.fontMetrics().axisHeight;a&&(j*=n.sizeMultiplier);var W=B/2-j,Y=[];if(g.length>0){var j0=B-E-w,b0=Math.round(B*1e3),y0=ri(g,Math.round(j0*1e3)),R0=new J0(g,y0),O0=N(S/1e3),Q=N(b0/1e3),v0=new $0([R0],{width:O0,height:Q,viewBox:"0 0 "+S+" "+b0}),h0=Q0([],[v0],n);h0.height=b0/1e3,h0.style.width=O0,h0.style.height=Q,Y.push({type:"elem",elem:h0})}else{if(Y.push(ct(p,x,s)),Y.push(Oe),h===null){var x0=B-E-w+2*Bt;Y.push(ht(m,x0,n))}else{var u0=(B-E-w-k)/2+2*Bt;Y.push(ht(m,u0,n)),Y.push(Oe),Y.push(ct(h,x,s)),Y.push(Oe),Y.push(ht(m,u0,n))}Y.push(Oe),Y.push(ct(u,x,s))}var w0=n.havingBaseStyle(_.TEXT),S0=X({positionType:"bottom",positionData:W,children:Y});return Vt(C(["delimsizing","mult"],[S0],w0),_.TEXT,n,o)},dt=80,mt=.08,pt=function(e,t,a,n,s){var o=ei(e,n,a),u=new J0(e,o),h=new $0([u],{width:"400em",height:N(t),viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return Q0(["hide-tail"],[h],s)},es=function(e,t){var a=t.havingBaseSizing(),n=Ia("\\surd",e*a.sizeMultiplier,Fa,a),s=a.sizeMultiplier,o=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),u,h,m,p,g;return n.type==="small"?(p=1e3+1e3*o+dt,e<1?s=1:e<1.4&&(s=.7),h=(1+o+mt)/s,m=(1+o)/s,u=pt("sqrtMain",h,p,o,t),u.style.minWidth="0.853em",g=.833/s):n.type==="large"?(p=(1e3+dt)*ye[n.size],m=(ye[n.size]+o)/s,h=(ye[n.size]+o+mt)/s,u=pt("sqrtSize"+n.size,h,p,o,t),u.style.minWidth="1.02em",g=1/s):(h=e+o+mt,m=e+o,p=Math.floor(1e3*e+o)+dt,u=pt("sqrtTall",h,p,o,t),u.style.minWidth="0.742em",g=1.056),u.height=m,u.style.height=N(h),{span:u,advanceWidth:g,ruleWidth:(t.fontMetrics().sqrtRuleThickness+o)*s}},za=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),ts=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),Ca=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),ye=[0,1.2,1.8,2.4,3],Ra=function(e,t,a,n,s){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),za.has(e)||Ca.has(e))return Ea(e,t,!1,a,n,s);if(ts.has(e))return Ma(e,ye[t],!1,a,n,s);throw new F("Illegal delimiter: '"+e+"'")},rs=[{type:"small",style:_.SCRIPTSCRIPT},{type:"small",style:_.SCRIPT},{type:"small",style:_.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],as=[{type:"small",style:_.SCRIPTSCRIPT},{type:"small",style:_.SCRIPT},{type:"small",style:_.TEXT},{type:"stack"}],Fa=[{type:"small",style:_.SCRIPTSCRIPT},{type:"small",style:_.SCRIPT},{type:"small",style:_.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ns=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";var t=e.type;throw new Error("Add support for delim type '"+t+"' here.")},Ia=function(e,t,a,n){for(var s=Math.min(2,3-n.style.size),o=s;ot)return u}return a[a.length-1]},Ot=function(e,t,a,n,s,o){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var u;Ca.has(e)?u=rs:za.has(e)?u=Fa:u=as;var h=Ia(e,t,u,n);return h.type==="small"?Zi(e,h.style,a,n,s,o):h.type==="large"?Ea(e,h.size,a,n,s,o):Ma(e,t,a,n,s,o)},ft=function(e,t,a,n,s,o){var u=n.fontMetrics().axisHeight*n.sizeMultiplier,h=901,m=5/n.fontMetrics().ptPerEm,p=Math.max(t-u,a+u),g=Math.max(p/500*h,2*p-m);return Ot(e,g,!0,n,s,o)},Lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},is=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function qr(r){return"isMiddle"in r}function Qe(r,e){var t=Ke(r);if(t&&is.has(t.text))return t;throw t?new F("Invalid delimiter '"+t.text+"' after '"+e.funcName+"'",r):new F("Invalid delimiter type '"+r.type+"'",r)}L({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],numArgs:1,argTypes:["primitive"],handler:(r,e)=>{var t=Qe(e[0],r);return{type:"delimsizing",mode:r.parser.mode,size:Lr[r.funcName].size,mclass:Lr[r.funcName].mclass,delim:t.text}},htmlBuilder:(r,e)=>r.delim==="."?C([r.mclass]):Ra(r.delim,r.size,e,r.mode,[r.mclass]),mathmlBuilder:r=>{var e=[];r.delim!=="."&&e.push(z0(r.delim,r.mode));var t=new I("mo",e);r.mclass==="mopen"||r.mclass==="mclose"?t.setAttribute("fence","true"):t.setAttribute("fence","false"),t.setAttribute("stretchy","true");var a=N(ye[r.size]);return t.setAttribute("minsize",a),t.setAttribute("maxsize",a),t}});function Pr(r){if(!r.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}L({type:"leftright-right",names:["\\right"],numArgs:1,primitive:!0,handler:(r,e)=>{var t=r.parser.gullet.macros.get("\\current@color");if(t&&typeof t!="string")throw new F("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:r.parser.mode,delim:Qe(e[0],r).text,color:t}}});L({type:"leftright",names:["\\left"],numArgs:1,primitive:!0,handler:(r,e)=>{var t=Qe(e[0],r),a=r.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var s=G(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:t.text,right:s.delim,rightColor:s.color}},htmlBuilder:(r,e)=>{Pr(r);for(var t=o0(r.body,e,!0,["mopen","mclose"]),a=0,n=0,s=!1,o=0;o{Pr(r);var t=E0(r.body,e);if(r.left!=="."){var a=new I("mo",[z0(r.left,r.mode)]);a.setAttribute("fence","true"),t.unshift(a)}if(r.right!=="."){var n=new I("mo",[z0(r.right,r.mode)]);n.setAttribute("fence","true"),r.rightColor&&n.setAttribute("mathcolor",r.rightColor),t.push(n)}return jt(t)}});L({type:"middle",names:["\\middle"],numArgs:1,primitive:!0,handler:(r,e)=>{var t=Qe(e[0],r);if(!r.parser.leftrightDepth)throw new F("\\middle without preceding \\left",t);return{type:"middle",mode:r.parser.mode,delim:t.text}},htmlBuilder:(r,e)=>{var t;return r.delim==="."?t=ke(e,[]):(t=Ra(r.delim,1,e,r.mode,[]),t.isMiddle={delim:r.delim,options:e}),t},mathmlBuilder:(r,e)=>{var t=r.delim==="\\vert"||r.delim==="|"?z0("|","text"):z0(r.delim,r.mode),a=new I("mo",[t]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var ss=(r,e)=>{var t=pe(V(r.body,e),e),a=r.label.slice(1),n=e.sizeMultiplier,s,o,u=_0(r.body);if(a==="sout")s=C(["stretchy","sout"]),s.height=e.fontMetrics().defaultRuleThickness/n,o=-.5*e.fontMetrics().xHeight;else if(a==="phase"){var h=t0({number:.6,unit:"pt"},e),m=t0({number:.35,unit:"ex"},e),p=e.havingBaseSizing();n=n/p.sizeMultiplier;var g=t.height+t.depth+h+m;t.style.paddingLeft=N(g/2+h);var S=Math.floor(1e3*g*n),x=Jn(S),D=new $0([new J0("phase",x)],{width:"400em",height:N(S/1e3),viewBox:"0 0 400000 "+S,preserveAspectRatio:"xMinYMin slice"});s=Q0(["hide-tail"],[D],e),s.style.height=N(g),o=t.depth+h+m}else{/cancel/.test(a)?u||t.classes.push("cancel-pad"):a==="angl"?t.classes.push("anglpad"):t.classes.push("boxpad");var E,M,R=0;/box/.test(a)?(R=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),E=e.fontMetrics().fboxsep+(a==="colorbox"?0:R),M=E):a==="angl"?(R=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),E=4*R,M=Math.max(0,.25-t.depth)):(E=u?.2:0,M=E),s=Bi(t,a,E,M,e),/fbox|boxed|fcolorbox/.test(a)?(s.style.borderStyle="solid",s.style.borderWidth=N(R)):a==="angl"&&R!==.049&&(s.style.borderTopWidth=N(R),s.style.borderRightWidth=N(R)),o=t.depth+M,r.backgroundColor&&(s.style.backgroundColor=r.backgroundColor,r.borderColor&&(s.style.borderColor=r.borderColor))}var y;if(r.backgroundColor)y=X({positionType:"individualShift",children:[{type:"elem",elem:s,shift:o},{type:"elem",elem:t,shift:0}]});else{var w=/cancel|phase/.test(a)?["svg-align"]:[];y=X({positionType:"individualShift",children:[{type:"elem",elem:t,shift:0},{type:"elem",elem:s,shift:o,wrapperClasses:w}]})}return/cancel/.test(a)&&(y.height=t.height,y.depth=t.depth),/cancel/.test(a)&&!u?C(["mord","cancel-lap"],[y],e):C(["mord"],[y],e)},ls=(r,e)=>{var t,a=new I(r.label.includes("colorbox")?"mpadded":"menclose",[Z(r.body,e)]);switch(r.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(t=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*t+"pt"),a.setAttribute("height","+"+2*t+"pt"),a.setAttribute("lspace",t+"pt"),a.setAttribute("voffset",t+"pt"),r.label==="\\fcolorbox"){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+N(n)+" solid "+r.borderColor)}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return r.backgroundColor&&a.setAttribute("mathbackground",r.backgroundColor),a};L({type:"enclose",names:["\\colorbox"],numArgs:2,allowedInText:!0,argTypes:["color","hbox"],handler(r,e,t){var{parser:a,funcName:n}=r,s=G(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:s,body:o}},htmlBuilder:ss,mathmlBuilder:ls});L({type:"enclose",names:["\\fcolorbox"],numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"],handler(r,e,t){var{parser:a,funcName:n}=r,s=G(e[0],"color-token").color,o=G(e[1],"color-token").color,u=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:s,body:u}}});L({type:"enclose",names:["\\fbox"],numArgs:1,argTypes:["hbox"],allowedInText:!0,handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\fbox",body:e[0]}}});L({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],numArgs:1,handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"enclose",mode:t.mode,label:a,body:n}}});L({type:"enclose",names:["\\sout"],numArgs:1,allowedInText:!0,handler(r,e){var{parser:t,funcName:a}=r;t.mode==="math"&&t.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var n=e[0];return{type:"enclose",mode:t.mode,label:a,body:n}}});L({type:"enclose",names:["\\angl"],numArgs:1,argTypes:["hbox"],allowedInText:!1,handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\angl",body:e[0]}}});var Da={};function D0(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:o}=r,u={type:e,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h{var e=r.parser.settings;if(!e.displayMode)throw new F("{"+r.envName+"} can be used only in display mode.")},os=new Set(["gather","gather*"]);function Wt(r){if(!r.includes("ed"))return!r.includes("*")}function te(r,e,t){var{hskipBeforeAndAfter:a,addJot:n,cols:s,arraystretch:o,colSeparationType:u,autoTag:h,singleRow:m,emptySingleRow:p,maxNumCols:g,leqno:S}=e;if(r.gullet.beginGroup(),m||r.gullet.macros.set("\\cr","\\\\\\relax"),!o){var x=r.gullet.expandMacroAsText("\\arraystretch");if(x==null)o=1;else if(o=parseFloat(x),!o||o<0)throw new F("Invalid \\arraystretch: "+x)}r.gullet.beginGroup();var D=[],E=[D],M=[],R=[],y=h!=null?[]:void 0;function w(){h&&r.gullet.macros.set("\\@eqnsw","1",!0)}function k(){y&&(r.gullet.macros.get("\\df@tag")?(y.push(r.subparse([new k0("\\df@tag")])),r.gullet.macros.set("\\df@tag",void 0,!0)):y.push(!!h&&r.gullet.macros.get("\\@eqnsw")==="1"))}for(w(),R.push(Hr(r));;){var A=r.parseExpression(!1,m?"\\end":"\\\\");r.gullet.endGroup(),r.gullet.beginGroup();var T={type:"ordgroup",mode:r.mode,body:A};t&&(T={type:"styling",mode:r.mode,style:t,resetFont:!0,body:[T]}),D.push(T);var O=r.fetch().text;if(O==="&"){if(g&&D.length===g){if(m||u)throw new F("Too many tab characters: &",r.nextToken);r.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}r.consume()}else if(O==="\\end"){k(),D.length===1&&T.type==="styling"&&T.body.length===1&&T.body[0].type==="ordgroup"&&T.body[0].body.length===0&&(E.length>1||!p)&&E.pop(),R.length0&&(w+=.25),m.push({pos:w,isDashed:ze[Ce]})}for(k(o[0]),a=0;a0&&(W+=y,Oze))for(a=0;a=u)){var L0=void 0;if(n>0||e.hskipBeforeAndAfter){var ue,re;L0=(ue=(re=w0)==null?void 0:re.pregap)!=null?ue:S,L0!==0&&(y0=C(["arraycolsep"],[]),y0.style.width=N(L0),b0.push(y0))}var Te=[];for(a=0;a0){for(var Qa=me("hline",t,p),en=me("hdashline",t,p),rt=[{type:"elem",elem:Me,shift:0}];m.length>0;){var rr=m.pop(),ar=rr.pos-Y;rr.isDashed?rt.push({type:"elem",elem:en,shift:ar}):rt.push({type:"elem",elem:Qa,shift:ar})}Me=X({positionType:"individualShift",children:rt})}if(O0.length===0)return C(["mord"],[Me],t);var tn=X({positionType:"individualShift",children:O0}),rn=C(["tag"],[tn],t);return U0([Me,rn])},us={c:"center ",l:"left ",r:"right "},B0=function(e,t){for(var a=[],n=new I("mtd",[],["mtr-glue"]),s=new I("mtd",[],["mml-eqn-num"]),o=0;o0){var D=e.cols,E="",M=!1,R=0,y=D.length;D[0].type==="separator"&&(S+="top ",R=1),D[D.length-1].type==="separator"&&(S+="bottom ",y-=1);for(var w=R;w0?"left ":"",S+=B[B.length-1].length>0?"right ":"";for(var j=1;j0&&S&&(E=1),a[x]={type:"align",align:D,pregap:E,postgap:0}}return s.colSeparationType=S?"align":"alignat",s};D0({type:"array",names:["array","darray"],props:{numArgs:1},handler(r,e){var t=Ke(e[0]),a=t?[e[0]]:G(e[0],"ordgroup").body,n=a.map(function(o){var u=Ze(o),h=u.text;if("lcr".includes(h))return{type:"align",align:h};if(h==="|")return{type:"separator",separator:"|"};if(h===":")return{type:"separator",separator:":"};throw new F("Unknown column alignment: "+h,o)}),s={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return te(r.parser,s,Yt(r.envName))},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(r){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[r.envName.replace("*","")],t="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:t}]};if(r.envName.charAt(r.envName.length-1)==="*"){var n=r.parser;if(n.consumeSpaces(),n.fetch().text==="["){if(n.consume(),n.consumeSpaces(),t=n.fetch().text,!"lcr".includes(t))throw new F("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:t}]}}var s=te(r.parser,a,Yt(r.envName)),o=Math.max(0,...s.body.map(u=>u.length));return s.cols=new Array(o).fill({type:"align",align:t}),e?{type:"leftright",mode:r.mode,body:[s],left:e[0],right:e[1],rightColor:void 0}:s},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(r){var e={arraystretch:.5},t=te(r.parser,e,"script");return t.colSeparationType="small",t},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["subarray"],props:{numArgs:1},handler(r,e){var t=Ke(e[0]),a=t?[e[0]]:G(e[0],"ordgroup").body,n=a.map(function(u){var h=Ze(u),m=h.text;if("lc".includes(m))return{type:"align",align:m};throw new F("Unknown column alignment: "+m,u)});if(n.length>1)throw new F("{subarray} can contain only one column");var s={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5},o=te(r.parser,s,"script");if(o.body.length>0&&o.body[0].length>1)throw new F("{subarray} can contain only one column");return o},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(r){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},t=te(r.parser,e,Yt(r.envName));return{type:"leftright",mode:r.mode,body:[t],left:r.envName.includes("r")?".":"\\{",right:r.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Ba,htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(r){os.has(r.envName)&&et(r);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Wt(r.envName),emptySingleRow:!0,leqno:r.parser.settings.leqno};return te(r.parser,e,"display")},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Ba,htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(r){et(r);var e={autoTag:Wt(r.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:r.parser.settings.leqno};return te(r.parser,e,"display")},htmlBuilder:N0,mathmlBuilder:B0});D0({type:"array",names:["CD"],props:{numArgs:0},handler(r){return et(r),Xi(r.parser)},htmlBuilder:N0,mathmlBuilder:B0});d("\\nonumber","\\gdef\\@eqnsw{0}");d("\\notag","\\nonumber");L({type:"text",names:["\\hline","\\hdashline"],numArgs:0,allowedInText:!0,allowedInMath:!0,handler(r,e){throw new F(r.funcName+" valid only within array environment")}});var $r=Da;L({type:"environment",names:["\\begin","\\end"],numArgs:1,argTypes:["text"],handler(r,e){var{parser:t,funcName:a}=r,n=e[0];if(n.type!=="ordgroup")throw new F("Invalid environment name",n);for(var s="",o=0;o{var t=r.font,a=e.withFont(t);return V(r.body,a)},hs=(r,e)=>{var t=r.font,a=e.withFont(t);return Z(r.body,a)},_r={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};L({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],numArgs:1,allowedInArgument:!0,handler:(r,e)=>{var{parser:t,funcName:a}=r,n=Ue(e[0]),s=a in _r?_r[a]:a;return{type:"font",mode:t.mode,font:s.slice(1),body:n}},htmlBuilder:cs,mathmlBuilder:hs});L({type:"mclass",names:["\\boldsymbol","\\bm"],numArgs:1,handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"mclass",mode:t.mode,mclass:Je(a),body:[{type:"font",mode:t.mode,font:"boldsymbol",body:a}],isCharacterBox:_0(a)}}});L({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],numArgs:0,allowedInText:!0,handler:(r,e)=>{var{parser:t,funcName:a,breakOnTokenText:n}=r,{mode:s}=t,o=t.parseExpression(!0,n);return{type:"font",mode:s,font:"math"+a.slice(1),body:{type:"ordgroup",mode:t.mode,body:o}}}});var ds=(r,e)=>{var t=e.style,a=t.fracNum(),n=t.fracDen(),s;s=e.havingStyle(a);var o=V(r.numer,s,e);if(r.continued){var u=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height0?D=3*S:D=7*S,E=e.fontMetrics().denom1):(g>0?(x=e.fontMetrics().num2,D=S):(x=e.fontMetrics().num3,D=3*S),E=e.fontMetrics().denom2);var M;if(p){var y=e.fontMetrics().axisHeight;x-o.depth-(y+.5*g){var t=new I("mfrac",[Z(r.numer,e),Z(r.denom,e)]);if(!r.hasBarLine)t.setAttribute("linethickness","0px");else if(r.barSize){var a=t0(r.barSize,e);t.setAttribute("linethickness",N(a))}if(r.leftDelim!=null||r.rightDelim!=null){var n=[];if(r.leftDelim!=null){var s=new I("mo",[new i0(r.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),n.push(s)}if(n.push(t),r.rightDelim!=null){var o=new I("mo",[new i0(r.rightDelim.replace("\\",""))]);o.setAttribute("fence","true"),n.push(o)}return jt(n)}return t},Oa=(r,e)=>{if(!e)return r;var t={type:"styling",mode:r.mode,style:e,body:[r]};return t};L({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],numArgs:2,allowedInArgument:!0,handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1],o,u=null,h=null;switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":o=!0;break;case"\\\\atopfrac":o=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":o=!1,u="(",h=")";break;case"\\\\bracefrac":o=!1,u="\\{",h="\\}";break;case"\\\\brackfrac":o=!1,u="[",h="]";break;default:throw new Error("Unrecognized genfrac command")}var m=a==="\\cfrac",p=null;return m||a.startsWith("\\d")?p="display":a.startsWith("\\t")&&(p="text"),Oa({type:"genfrac",mode:t.mode,numer:n,denom:s,continued:m,hasBarLine:o,leftDelim:u,rightDelim:h,barSize:null},p)},htmlBuilder:ds,mathmlBuilder:ms});L({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],numArgs:0,infix:!0,handler(r){var{parser:e,funcName:t,token:a}=r,n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:a}}});var Gr=["display","text","script","scriptscript"],Ur=function(e){var t=null;return e.length>0&&(t=e,t=t==="."?null:t),t};L({type:"genfrac",names:["\\genfrac"],numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"],handler(r,e){var{parser:t}=r,a=e[4],n=e[5],s=Ue(e[0]),o=s.type==="atom"&&s.family==="open"?Ur(s.text):null,u=Ue(e[1]),h=u.type==="atom"&&u.family==="close"?Ur(u.text):null,m=G(e[2],"size"),p,g=null;m.isBlank?p=!0:(g=m.value,p=g.number>0);var S=null,x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var D=G(x.body[0],"textord");S=Gr[Number(D.text)]}}else x=G(x,"textord"),S=Gr[Number(x.text)];return Oa({type:"genfrac",mode:t.mode,numer:a,denom:n,continued:!1,hasBarLine:p,barSize:g,leftDelim:o,rightDelim:h},S)}});L({type:"infix",names:["\\above"],numArgs:1,argTypes:["size"],infix:!0,handler(r,e){var{parser:t,funcName:a,token:n}=r;return{type:"infix",mode:t.mode,replaceWith:"\\\\abovefrac",size:G(e[0],"size").value,token:n}}});L({type:"genfrac",names:["\\\\abovefrac"],numArgs:3,argTypes:["math","size","math"],handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=G(e[1],"infix").size;if(!s)throw new Error("\\\\abovefrac expected size, but got "+String(s));var o=e[2],u=s.number>0;return{type:"genfrac",mode:t.mode,numer:n,denom:o,continued:!1,hasBarLine:u,barSize:s,leftDelim:null,rightDelim:null}}});var La=(r,e)=>{var t=e.style,a,n;r.type==="supsub"?(a=r.sup?V(r.sup,e.havingStyle(t.sup()),e):V(r.sub,e.havingStyle(t.sub()),e),n=G(r.base,"horizBrace")):n=G(r,"horizBrace");var s=V(n.base,e.havingBaseStyle(_.DISPLAY)),o=Ye(n,e),u;if(n.isOver?u=X({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o,wrapperClasses:["svg-align"]}]}):u=X({positionType:"bottom",positionData:s.depth+.1+o.height,children:[{type:"elem",elem:o,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:s}]}),a){var h=C(["minner",n.isOver?"mover":"munder"],[u],e);n.isOver?u=X({positionType:"firstBaseline",children:[{type:"elem",elem:h},{type:"kern",size:.2},{type:"elem",elem:a}]}):u=X({positionType:"bottom",positionData:h.depth+.2+a.height+a.depth,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:h}]})}return C(["minner",n.isOver?"mover":"munder"],[u],e)},ps=(r,e)=>{var t=We(r.label);return new I(r.isOver?"mover":"munder",[Z(r.base,e),t])};L({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],numArgs:1,handler(r,e){var{parser:t,funcName:a}=r;return{type:"horizBrace",mode:t.mode,label:a,isOver:a.includes("\\over"),base:e[0]}},htmlBuilder:La,mathmlBuilder:ps});L({type:"href",names:["\\href"],numArgs:2,argTypes:["url","original"],allowedInText:!0,handler:(r,e)=>{var{parser:t}=r,a=e[1],n=G(e[0],"url").url;return t.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:t.mode,href:n,body:n0(a)}:t.formatUnsupportedCmd("\\href")},htmlBuilder:(r,e)=>{var t=o0(r.body,e,!1);return bi(r.href,[],t,e)},mathmlBuilder:(r,e)=>{var t=ee(r.body,e);return t instanceof I||(t=new I("mrow",[t])),t.setAttribute("href",r.href),t}});L({type:"href",names:["\\url"],numArgs:1,argTypes:["url"],allowedInText:!0,handler:(r,e)=>{var{parser:t}=r,a=G(e[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:a}))return t.formatUnsupportedCmd("\\url");for(var n=[],s=0;s{var{parser:t,funcName:a,token:n}=r,s=G(e[0],"raw").string,o=e[1];t.settings.strict&&t.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var u,h={};switch(a){case"\\htmlClass":h.class=s,u={command:"\\htmlClass",class:s};break;case"\\htmlId":h.id=s,u={command:"\\htmlId",id:s};break;case"\\htmlStyle":h.style=s,u={command:"\\htmlStyle",style:s};break;case"\\htmlData":{for(var m=s.split(","),p=0;p{var t=o0(r.body,e,!1),a=["enclosing"];r.attributes.class&&a.push(...r.attributes.class.trim().split(/\s+/));var n=C(a,t,e);for(var s in r.attributes)s!=="class"&&r.attributes.hasOwnProperty(s)&&n.setAttribute(s,r.attributes[s]);return n},mathmlBuilder:(r,e)=>ee(r.body,e)});L({type:"htmlmathml",names:["\\html@mathml"],numArgs:2,allowedInArgument:!0,allowedInText:!0,handler:(r,e)=>{var{parser:t}=r;return{type:"htmlmathml",mode:t.mode,html:n0(e[0]),mathml:n0(e[1])}},htmlBuilder:(r,e)=>{var t=o0(r.html,e,!1);return U0(t)},mathmlBuilder:(r,e)=>ee(r.mathml,e)});var vt=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new F("Invalid size: '"+e+"' in \\includegraphics");var a={number:+(t[1]+t[2]),unit:t[3]};if(!sa(a))throw new F("Invalid unit: '"+a.unit+"' in \\includegraphics.");return a};L({type:"includegraphics",names:["\\includegraphics"],numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1,handler:(r,e,t)=>{var{parser:a}=r,n={number:0,unit:"em"},s={number:.9,unit:"em"},o={number:0,unit:"em"},u="";if(t[0])for(var h=G(t[0],"raw").string,m=h.split(","),p=0;p{var t=t0(r.height,e),a=0;r.totalheight.number>0&&(a=t0(r.totalheight,e)-t);var n=0;r.width.number>0&&(n=t0(r.width,e));var s={height:N(t+a)};n>0&&(s.width=N(n)),a>0&&(s.verticalAlign=N(-a));var o=new si(r.src,r.alt,s);return o.height=t,o.depth=a,o},mathmlBuilder:(r,e)=>{var t=new I("mglyph",[]);t.setAttribute("alt",r.alt);var a=t0(r.height,e),n=0;if(r.totalheight.number>0&&(n=t0(r.totalheight,e)-a,t.setAttribute("valign",N(-n))),t.setAttribute("height",N(a+n)),r.width.number>0){var s=t0(r.width,e);t.setAttribute("width",N(s))}return t.setAttribute("src",r.src),t}});L({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0,handler(r,e){var{parser:t,funcName:a}=r,n=G(e[0],"size");if(t.settings.strict){var s=a[1]==="m",o=n.value.unit==="mu";s?(o||t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, "+("not "+n.value.unit+" units")),t.mode!=="math"&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:t.mode,dimension:n.value}},htmlBuilder(r,e){return da(r.dimension,e)},mathmlBuilder(r,e){var t=t0(r.dimension,e);return new ba(t)}});L({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],numArgs:1,allowedInText:!0,handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"lap",mode:t.mode,alignment:a.slice(5),body:n}},htmlBuilder:(r,e)=>{var t;r.alignment==="clap"?(t=C([],[V(r.body,e)]),t=C(["inner"],[t],e)):t=C(["inner"],[V(r.body,e)]);var a=C(["fix"],[]),n=C([r.alignment],[t,a],e),s=C(["strut"]);return s.style.height=N(n.height+n.depth),n.depth&&(s.style.verticalAlign=N(-n.depth)),n.children.unshift(s),n=C(["thinbox"],[n],e),C(["mord","vbox"],[n],e)},mathmlBuilder:(r,e)=>{var t=new I("mpadded",[Z(r.body,e)]);if(r.alignment!=="rlap"){var a=r.alignment==="llap"?"-1":"-0.5";t.setAttribute("lspace",a+"width")}return t.setAttribute("width","0px"),t}});L({type:"styling",names:["\\(","$"],numArgs:0,allowedInText:!0,allowedInMath:!1,handler(r,e){var{funcName:t,parser:a}=r,n=a.mode;a.switchMode("math");var s=t==="\\("?"\\)":"$",o=a.parseExpression(!1,s);return a.expect(s),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",resetFont:!0,body:o}}});L({type:"text",names:["\\)","\\]"],numArgs:0,allowedInText:!0,allowedInMath:!1,handler(r,e){throw new F("Mismatched "+r.funcName)}});var jr=(r,e)=>{switch(e.style.size){case _.DISPLAY.size:return r.display;case _.TEXT.size:return r.text;case _.SCRIPT.size:return r.script;case _.SCRIPTSCRIPT.size:return r.scriptscript;default:return r.text}};L({type:"mathchoice",names:["\\mathchoice"],numArgs:4,primitive:!0,handler:(r,e)=>{var{parser:t}=r;return{type:"mathchoice",mode:t.mode,display:n0(e[0]),text:n0(e[1]),script:n0(e[2]),scriptscript:n0(e[3])}},htmlBuilder:(r,e)=>{var t=jr(r,e),a=o0(t,e,!1);return U0(a)},mathmlBuilder:(r,e)=>{var t=jr(r,e);return ee(t,e)}});var qa=(r,e,t,a,n,s,o)=>{r=C([],[r]);var u=t&&_0(t),h,m;if(e){var p=V(e,a.havingStyle(n.sup()),a);m={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-p.depth)}}if(t){var g=V(t,a.havingStyle(n.sub()),a);h={elem:g,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-g.height)}}var S;if(m&&h){var x=a.fontMetrics().bigOpSpacing5+h.elem.height+h.elem.depth+h.kern+r.depth+o;S=X({positionType:"bottom",positionData:x,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:h.elem,marginLeft:N(-s)},{type:"kern",size:h.kern},{type:"elem",elem:r},{type:"kern",size:m.kern},{type:"elem",elem:m.elem,marginLeft:N(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else if(h){var D=r.height-o;S=X({positionType:"top",positionData:D,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:h.elem,marginLeft:N(-s)},{type:"kern",size:h.kern},{type:"elem",elem:r}]})}else if(m){var E=r.depth+o;S=X({positionType:"bottom",positionData:E,children:[{type:"elem",elem:r},{type:"kern",size:m.kern},{type:"elem",elem:m.elem,marginLeft:N(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else return r;var M=[S];if(h&&s!==0&&!u){var R=C(["mspace"],[],a);R.style.marginRight=N(s),M.unshift(R)}return C(["mop","op-limits"],M,a)},Pa=new Set(["\\smallint"]),Ha=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=G(r.base,"op"),n=!0):s=G(r,"op");var o=e.style,u=!1;o.size===_.DISPLAY.size&&s.symbol&&!Pa.has(s.name)&&(u=!0);var h,m;if(s.symbol){var p=u?"Size2-Regular":"Size1-Regular",g="";if((s.name==="\\oiint"||s.name==="\\oiiint")&&(g=s.name.slice(1),s.name=g==="oiint"?"\\iint":"\\iiint"),h=m0(s.name,p,"math",e,["mop","op-symbol",u?"large-op":"small-op"]),m=h.italic,g.length>0){var S=pa(g+"Size"+(u?"2":"1"),e);h=X({positionType:"individualShift",children:[{type:"elem",elem:h,shift:0},{type:"elem",elem:S,shift:u?.08:0}]}),s.name="\\"+g,h.classes.unshift("mop"),h.italic=m}}else if(s.body){var x=o0(s.body,e,!0);x.length===1&&x[0]instanceof A0?(h=x[0],h.classes[0]="mop"):h=C(["mop"],x,e)}else{for(var D=[],E=1;E{var t;if(r.symbol)t=new I("mo",[z0(r.name,r.mode)]),Pa.has(r.name)&&t.setAttribute("largeop","false");else if(r.body)t=new I("mo",E0(r.body,e));else{t=new I("mi",[new i0(r.name.slice(1))]);var a=new I("mo",[z0("⁡","text")]);r.parentIsSupSub?t=new I("mrow",[t,a]):t=ga([t,a])}return t},vs={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};L({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],numArgs:0,handler:(r,e)=>{var{parser:t,funcName:a}=r,n=a;return n.length===1&&(n=vs[n]),{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:Ha,mathmlBuilder:fs});L({type:"op",names:["\\mathop"],numArgs:1,primitive:!0,handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:n0(a)}}});var gs={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};L({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],numArgs:0,handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:t}}});L({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],numArgs:0,handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:t}}});L({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],numArgs:0,allowedInArgument:!0,handler(r){var{parser:e,funcName:t}=r,a=t;return a.length===1&&(a=gs[a]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}}});var $a=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=G(r.base,"operatorname"),n=!0):s=G(r,"operatorname");var o;if(s.body.length>0){for(var u=s.body.map(g=>{var S="text"in g?g.text:void 0;return typeof S=="string"?{type:"textord",mode:g.mode,text:S}:g}),h=o0(u,e.withFont("mathrm"),!0),m=0;m{for(var t=E0(r.body,e.withFont("mathrm")),a=!0,n=0;np.toText()).join("");t=[new i0(u)]}var h=new I("mi",t);h.setAttribute("mathvariant","normal");var m=new I("mo",[z0("⁡","text")]);return r.parentIsSupSub?new I("mrow",[h,m]):ga([h,m])};L({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],numArgs:1,handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"operatorname",mode:t.mode,body:n0(n),alwaysHandleSupSub:a==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:$a,mathmlBuilder:bs});d("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");se({type:"ordgroup",htmlBuilder(r,e){return r.semisimple?U0(o0(r.body,e,!1)):C(["mord"],o0(r.body,e,!0),e)},mathmlBuilder(r,e){return ee(r.body,e,!0)}});L({type:"overline",names:["\\overline"],numArgs:1,handler(r,e){var{parser:t}=r,a=e[0];return{type:"overline",mode:t.mode,body:a}},htmlBuilder(r,e){var t=V(r.body,e.havingCrampedStyle()),a=me("overline-line",e),n=e.fontMetrics().defaultRuleThickness,s=X({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]});return C(["mord","overline"],[s],e)},mathmlBuilder(r,e){var t=new I("mo",[new i0("‾")]);t.setAttribute("stretchy","true");var a=new I("mover",[Z(r.body,e),t]);return a.setAttribute("accent","true"),a}});L({type:"phantom",names:["\\phantom"],numArgs:1,allowedInText:!0,handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"phantom",mode:t.mode,body:n0(a)}},htmlBuilder:(r,e)=>{var t=o0(r.body,e.withPhantom(),!1);return U0(t)},mathmlBuilder:(r,e)=>{var t=E0(r.body,e);return new I("mphantom",t)}});d("\\hphantom","\\smash{\\phantom{#1}}");L({type:"vphantom",names:["\\vphantom"],numArgs:1,allowedInText:!0,handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"vphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=C(["inner"],[V(r.body,e.withPhantom())]),a=C(["fix"],[]);return C(["mord","rlap"],[t,a],e)},mathmlBuilder:(r,e)=>{var t=E0(n0(r.body),e),a=new I("mphantom",t),n=new I("mpadded",[a]);return n.setAttribute("width","0px"),n}});L({type:"raisebox",names:["\\raisebox"],numArgs:2,argTypes:["size","hbox"],allowedInText:!0,handler(r,e){var{parser:t}=r,a=G(e[0],"size").value,n=e[1];return{type:"raisebox",mode:t.mode,dy:a,body:n}},htmlBuilder(r,e){var t=V(r.body,e),a=t0(r.dy,e);return X({positionType:"shift",positionData:-a,children:[{type:"elem",elem:t}]})},mathmlBuilder(r,e){var t=new I("mpadded",[Z(r.body,e)]),a=r.dy.number+r.dy.unit;return t.setAttribute("voffset",a),t}});L({type:"internal",names:["\\relax"],numArgs:0,allowedInText:!0,allowedInArgument:!0,handler(r){var{parser:e}=r;return{type:"internal",mode:e.mode}}});L({type:"rule",names:["\\rule"],numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"],handler(r,e,t){var{parser:a}=r,n=t[0],s=G(e[0],"size"),o=G(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&G(n,"size").value,width:s.value,height:o.value}},htmlBuilder(r,e){var t=C(["mord","rule"],[],e),a=t0(r.width,e),n=t0(r.height,e),s=r.shift?t0(r.shift,e):0;return t.style.borderRightWidth=N(a),t.style.borderTopWidth=N(n),t.style.bottom=N(s),t.width=a,t.height=n+s,t.depth=-s,t.maxFontSize=n*1.125*e.sizeMultiplier,t},mathmlBuilder(r,e){var t=t0(r.width,e),a=t0(r.height,e),n=r.shift?t0(r.shift,e):0,s=e.color&&e.getColor()||"black",o=new I("mspace");o.setAttribute("mathbackground",s),o.setAttribute("width",N(t)),o.setAttribute("height",N(a));var u=new I("mpadded",[o]);return n>=0?u.setAttribute("height",N(n)):(u.setAttribute("height",N(n)),u.setAttribute("depth",N(-n))),u.setAttribute("voffset",N(n)),u}});function _a(r,e,t){for(var a=o0(r,e,!1),n=e.sizeMultiplier/t.sizeMultiplier,s=0;s{var t=e.havingSize(r.size);return _a(r.body,t,e)};L({type:"sizing",names:Xr,numArgs:0,allowedInText:!0,handler:(r,e)=>{var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!1,t);return{type:"sizing",mode:n.mode,size:Xr.indexOf(a)+1,body:s}},htmlBuilder:ys,mathmlBuilder:(r,e)=>{var t=e.havingSize(r.size),a=E0(r.body,t),n=new I("mstyle",a);return n.setAttribute("mathsize",N(t.sizeMultiplier)),n}});L({type:"smash",names:["\\smash"],numArgs:1,numOptionalArgs:1,allowedInText:!0,handler:(r,e,t)=>{var{parser:a}=r,n=!1,s=!1,o=t[0]&&G(t[0],"ordgroup");if(o)for(var u,h=0;h{var t=C([],[V(r.body,e)]);if(!r.smashHeight&&!r.smashDepth)return t;if(r.smashHeight&&(t.height=0),r.smashDepth&&(t.depth=0),r.smashHeight&&r.smashDepth)return C(["mord","smash"],[t],e);if(t.children)for(var a=0;a{var t=new I("mpadded",[Z(r.body,e)]);return r.smashHeight&&t.setAttribute("height","0px"),r.smashDepth&&t.setAttribute("depth","0px"),t}});L({type:"sqrt",names:["\\sqrt"],numArgs:1,numOptionalArgs:1,handler(r,e,t){var{parser:a}=r,n=t[0],s=e[0];return{type:"sqrt",mode:a.mode,body:s,index:n}},htmlBuilder(r,e){var t=V(r.body,e.havingCrampedStyle());t.height===0&&(t.height=e.fontMetrics().xHeight),t=pe(t,e);var a=e.fontMetrics(),n=a.defaultRuleThickness,s=n;e.style.id<_.TEXT.id&&(s=e.fontMetrics().xHeight);var o=n+s/4,u=t.height+t.depth+o+n,{span:h,ruleWidth:m,advanceWidth:p}=es(u,e),g=h.height-m;g>t.height+t.depth+o&&(o=(o+g-t.height-t.depth)/2);var S=h.height-t.height-o-m;t.style.paddingLeft=N(p);var x=X({positionType:"firstBaseline",children:[{type:"elem",elem:t,wrapperClasses:["svg-align"]},{type:"kern",size:-(t.height+S)},{type:"elem",elem:h},{type:"kern",size:m}]});if(r.index){var D=e.havingStyle(_.SCRIPTSCRIPT),E=V(r.index,D,e),M=.6*(x.height-x.depth),R=X({positionType:"shift",positionData:-M,children:[{type:"elem",elem:E}]}),y=C(["root"],[R]);return C(["mord","sqrt"],[y,x],e)}else return C(["mord","sqrt"],[x],e)},mathmlBuilder(r,e){var{body:t,index:a}=r;return a?new I("mroot",[Z(t,e),Z(a,e)]):new I("msqrt",[Z(t,e)])}});var Lt={display:_.DISPLAY,text:_.TEXT,script:_.SCRIPT,scriptscript:_.SCRIPTSCRIPT};function xs(r){return r in Lt}L({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],numArgs:0,allowedInText:!0,primitive:!0,handler(r,e){var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!0,t),o=a.slice(1,a.length-5);if(!xs(o))throw new Error("Unknown style: "+o);return{type:"styling",mode:n.mode,style:o,body:s}},htmlBuilder(r,e){var t=Lt[r.style],a=e.havingStyle(t);return r.resetFont&&(a=a.withFont("")),_a(r.body,a,e)},mathmlBuilder(r,e){var t=Lt[r.style],a=e.havingStyle(t);r.resetFont&&(a=a.withFont(""));var n=E0(r.body,a),s=new I("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},u=o[r.style];return s.setAttribute("scriptlevel",u[0]),s.setAttribute("displaystyle",u[1]),s}});var ws=function(e,t){var a=e.base;if(a)if(a.type==="op"){var n=a.limits&&(t.style.size===_.DISPLAY.size||a.alwaysHandleSupSub);return n?Ha:null}else if(a.type==="operatorname"){var s=a.alwaysHandleSupSub&&(t.style.size===_.DISPLAY.size||a.limits);return s?$a:null}else{if(a.type==="accent")return _0(a.base)?Sa:null;if(a.type==="horizBrace"){var o=!e.sub;return o===a.isOver?La:null}else return null}else return null};se({type:"supsub",htmlBuilder(r,e){var t=ws(r,e);if(t)return t(r,e);var{base:a,sup:n,sub:s}=r,o=V(a,e),u,h,m=e.fontMetrics(),p=0,g=0,S=a&&_0(a);if(n){var x=e.havingStyle(e.style.sup());u=V(n,x,e),S||(p=o.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(s){var D=e.havingStyle(e.style.sub());h=V(s,D,e),S||(g=o.depth+D.fontMetrics().subDrop*D.sizeMultiplier/e.sizeMultiplier)}var E;e.style===_.DISPLAY?E=m.sup1:e.style.cramped?E=m.sup3:E=m.sup2;var M=e.sizeMultiplier,R=N(.5/m.ptPerEm/M),y=null;if(h){var w=r.base&&r.base.type==="op"&&r.base.name&&(r.base.name==="\\oiint"||r.base.name==="\\oiiint");if(o instanceof A0||w){var k;y=N(-((k=o.italic)!=null?k:0))}}var A;if(u&&h){p=Math.max(p,E,u.depth+.25*m.xHeight),g=Math.max(g,m.sub2);var T=m.defaultRuleThickness,O=4*T;if(p-u.depth-(h.height-g)0&&(p+=P,g-=P)}var B=[{type:"elem",elem:h,shift:g,marginRight:R,marginLeft:y},{type:"elem",elem:u,shift:-p,marginRight:R}];A=X({positionType:"individualShift",children:B})}else if(h){g=Math.max(g,m.sub1,h.height-.8*m.xHeight);var j=[{type:"elem",elem:h,marginLeft:y,marginRight:R}];A=X({positionType:"shift",positionData:g,children:j})}else if(u)p=Math.max(p,E,u.depth+.25*m.xHeight),A=X({positionType:"shift",positionData:-p,children:[{type:"elem",elem:u,marginRight:R}]});else throw new Error("supsub must have either sup or sub.");var W=It(o,"right")||"mord";return C([W],[o,C(["msupsub"],[A])],e)},mathmlBuilder(r,e){var t=!1,a,n;r.base&&r.base.type==="horizBrace"&&(n=!!r.sup,n===r.base.isOver&&(t=!0,a=r.base.isOver)),r.base&&(r.base.type==="op"||r.base.type==="operatorname")&&(r.base.parentIsSupSub=!0);var s=[Z(r.base,e)];r.sub&&s.push(Z(r.sub,e)),r.sup&&s.push(Z(r.sup,e));var o;if(t)o=a?"mover":"munder";else if(r.sub)if(r.sup){var m=r.base;m&&m.type==="op"&&m.limits&&e.style===_.DISPLAY||m&&m.type==="operatorname"&&m.alwaysHandleSupSub&&(e.style===_.DISPLAY||m.limits)?o="munderover":o="msubsup"}else{var h=r.base;h&&h.type==="op"&&h.limits&&(e.style===_.DISPLAY||h.alwaysHandleSupSub)||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(h.limits||e.style===_.DISPLAY)?o="munder":o="msub"}else{var u=r.base;u&&u.type==="op"&&u.limits&&(e.style===_.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===_.DISPLAY)?o="mover":o="msup"}return new I(o,s)}});se({type:"atom",htmlBuilder(r,e){return Gt(r.text,r.mode,e,["m"+r.family])},mathmlBuilder(r,e){var t=new I("mo",[z0(r.text,r.mode)]);if(r.family==="bin"){var a=Xt(r,e);a==="bold-italic"&&t.setAttribute("mathvariant",a)}else r.family==="punct"?t.setAttribute("separator","true"):(r.family==="open"||r.family==="close")&&t.setAttribute("stretchy","false");return t}});var Ga={mi:"italic",mn:"normal",mtext:"normal"};se({type:"mathord",htmlBuilder(r,e){return Ve(r,e)},mathmlBuilder(r,e){var t=new I("mi",[z0(r.text,r.mode,e)]),a=Xt(r,e)||"italic";return a!==Ga[t.type]&&t.setAttribute("mathvariant",a),t}});se({type:"textord",htmlBuilder(r,e){return Ve(r,e)},mathmlBuilder(r,e){var t=z0(r.text,r.mode,e),a=Xt(r,e)||"normal",n;return r.mode==="text"?n=new I("mtext",[t]):/[0-9]/.test(r.text)?n=new I("mn",[t]):r.text==="\\prime"?n=new I("mo",[t]):n=new I("mi",[t]),a!==Ga[n.type]&&n.setAttribute("mathvariant",a),n}});var gt={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},bt={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};se({type:"spacing",htmlBuilder(r,e){if(bt.hasOwnProperty(r.text)){var t=bt[r.text].className||"";if(r.mode==="text"){var a=Ve(r,e);return a.classes.push(t),a}else return C(["mspace",t],[Gt(r.text,r.mode,e)],e)}else{if(gt.hasOwnProperty(r.text))return C(["mspace",gt[r.text]],[],e);throw new F('Unknown type of space "'+r.text+'"')}},mathmlBuilder(r,e){var t;if(bt.hasOwnProperty(r.text))t=new I("mtext",[new i0(" ")]);else{if(gt.hasOwnProperty(r.text))return new I("mspace");throw new F('Unknown type of space "'+r.text+'"')}return t}});var Vr=()=>{var r=new I("mtd",[]);return r.setAttribute("width","50%"),r};se({type:"tag",mathmlBuilder(r,e){var t=new I("mtable",[new I("mtr",[Vr(),new I("mtd",[ee(r.body,e)]),Vr(),new I("mtd",[ee(r.tag,e)])])]);return t.setAttribute("width","100%"),t}});var Wr={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Yr={"\\textbf":"textbf","\\textmd":"textmd"},Ss={"\\textit":"textit","\\textup":"textup"},Zr=(r,e)=>{var t=r.font;if(t){if(Wr[t])return e.withTextFontFamily(Wr[t]);if(Yr[t])return e.withTextFontWeight(Yr[t]);if(t==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(Ss[t])};L({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0,handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"text",mode:t.mode,body:n0(n),font:a}},htmlBuilder(r,e){var t=Zr(r,e),a=o0(r.body,t,!0);return C(["mord","text"],a,t)},mathmlBuilder(r,e){var t=Zr(r,e);return ee(r.body,t)}});L({type:"underline",names:["\\underline"],numArgs:1,allowedInText:!0,handler(r,e){var{parser:t}=r;return{type:"underline",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=V(r.body,e),a=me("underline-line",e),n=e.fontMetrics().defaultRuleThickness,s=X({positionType:"top",positionData:t.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:t}]});return C(["mord","underline"],[s],e)},mathmlBuilder(r,e){var t=new I("mo",[new i0("‾")]);t.setAttribute("stretchy","true");var a=new I("munder",[Z(r.body,e),t]);return a.setAttribute("accentunder","true"),a}});L({type:"vcenter",names:["\\vcenter"],numArgs:1,argTypes:["original"],allowedInText:!1,handler(r,e){var{parser:t}=r;return{type:"vcenter",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=V(r.body,e),a=e.fontMetrics().axisHeight,n=.5*(t.height-a-(t.depth+a));return X({positionType:"shift",positionData:n,children:[{type:"elem",elem:t}]})},mathmlBuilder(r,e){var t=new I("mpadded",[Z(r.body,e)],["vcenter"]);return new I("mrow",[t])}});L({type:"verb",names:["\\verb"],numArgs:0,allowedInText:!0,handler(r,e,t){throw new F("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(r,e){for(var t=Kr(r),a=[],n=e.havingStyle(e.style.text()),s=0;sr.body.replace(/ /g,r.star?"␣":" "),Z0=fa,Ua=`[ \r - ]`,ks="\\\\[a-zA-Z@]+",As="\\\\[^\uD800-\uDFFF]",Ts="("+ks+")"+Ua+"*",Es=`\\\\( -|[ \r ]+ -?)[ \r ]*`,qt="[̀-ͯ]",Ms=new RegExp(qt+"+$"),zs="("+Ua+"+)|"+(Es+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(qt+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(qt+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+Ts)+("|"+As+")");class Jr{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(zs,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new k0("EOF",new g0(this,t,t));var a=this.tokenRegex.exec(e);if(a===null||a.index!==t)throw new F("Unexpected character: '"+e[t]+"'",new k0(e[t],new g0(this,t,t+1)));var n=a[6]||a[3]||(a[2]?"\\ ":" ");if(this.catcodes[n]===14){var s=e.indexOf(` -`,this.tokenRegex.lastIndex);return s===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new k0(n,new g0(this,t,this.tokenRegex.lastIndex))}}class Cs{constructor(e,t){e===void 0&&(e={}),t===void 0&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new F("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(e[t]==null?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,a){if(a===void 0&&(a=!1),a){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var s=this.undefStack[this.undefStack.length-1];s&&!s.hasOwnProperty(e)&&(s[e]=this.current[e])}t==null?delete this.current[e]:this.current[e]=t}}var Rs=Na;d("\\noexpand",function(r){var e=r.popToken();return r.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});d("\\expandafter",function(r){var e=r.popToken();return r.expandOnce(!0),{tokens:[e],numArgs:0}});d("\\@firstoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[0],numArgs:0}});d("\\@secondoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[1],numArgs:0}});d("\\@ifnextchar",function(r){var e=r.consumeArgs(3);r.consumeSpaces();var t=r.future();return e[0].length===1&&e[0][0].text===t.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});d("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");d("\\TextOrMath",function(r){var e=r.consumeArgs(2);return r.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var Qr={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};d("\\char",function(r){var e=r.popToken(),t,a=0;if(e.text==="'")t=8,e=r.popToken();else if(e.text==='"')t=16,e=r.popToken();else if(e.text==="`")if(e=r.popToken(),e.text[0]==="\\")a=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new F("\\char` missing argument");a=e.text.charCodeAt(0)}else t=10;if(t){if(a=Qr[e.text],a==null||a>=t)throw new F("Invalid base-"+t+" digit "+e.text);for(var n;(n=Qr[r.future().text])!=null&&n{var n=r.consumeArg().tokens;if(n.length!==1)throw new F("\\newcommand's first argument must be a macro name");var s=n[0].text,o=r.isDefined(s);if(o&&!e)throw new F("\\newcommand{"+s+"} attempting to redefine "+(s+"; use \\renewcommand"));if(!o&&!t)throw new F("\\renewcommand{"+s+"} when command "+s+" does not yet exist; use \\newcommand");var u=0;if(n=r.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var h="",m=r.expandNextToken();m.text!=="]"&&m.text!=="EOF";)h+=m.text,m=r.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new F("Invalid number of arguments: "+h);u=parseInt(h),n=r.consumeArg().tokens}return o&&a||r.macros.set(s,{tokens:n,numArgs:u}),""};d("\\newcommand",r=>Zt(r,!1,!0,!1));d("\\renewcommand",r=>Zt(r,!0,!1,!1));d("\\providecommand",r=>Zt(r,!0,!0,!0));d("\\message",r=>{var e=r.consumeArgs(1)[0];return console.log(e.reverse().map(t=>t.text).join("")),""});d("\\errmessage",r=>{var e=r.consumeArgs(1)[0];return console.error(e.reverse().map(t=>t.text).join("")),""});d("\\show",r=>{var e=r.popToken(),t=e.text;return console.log(e,r.macros.get(t),Z0[t],K.math[t],K.text[t]),""});d("\\bgroup","{");d("\\egroup","}");d("~","\\nobreakspace");d("\\lq","`");d("\\rq","'");d("\\aa","\\r a");d("\\AA","\\r A");d("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");d("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");d("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");d("ℬ","\\mathscr{B}");d("ℰ","\\mathscr{E}");d("ℱ","\\mathscr{F}");d("ℋ","\\mathscr{H}");d("ℐ","\\mathscr{I}");d("ℒ","\\mathscr{L}");d("ℳ","\\mathscr{M}");d("ℛ","\\mathscr{R}");d("ℭ","\\mathfrak{C}");d("ℌ","\\mathfrak{H}");d("ℨ","\\mathfrak{Z}");d("\\Bbbk","\\Bbb{k}");d("\\llap","\\mathllap{\\textrm{#1}}");d("\\rlap","\\mathrlap{\\textrm{#1}}");d("\\clap","\\mathclap{\\textrm{#1}}");d("\\mathstrut","\\vphantom{(}");d("\\underbar","\\underline{\\text{#1}}");d("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');d("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");d("\\ne","\\neq");d("≠","\\neq");d("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");d("∉","\\notin");d("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");d("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");d("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");d("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");d("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");d("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");d("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");d("⟂","\\perp");d("‼","\\mathclose{!\\mkern-0.8mu!}");d("∌","\\notni");d("⌜","\\ulcorner");d("⌝","\\urcorner");d("⌞","\\llcorner");d("⌟","\\lrcorner");d("©","\\copyright");d("®","\\textregistered");d("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');d("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');d("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');d("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');d("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");d("⋮","\\vdots");d("\\varGamma","\\mathit{\\Gamma}");d("\\varDelta","\\mathit{\\Delta}");d("\\varTheta","\\mathit{\\Theta}");d("\\varLambda","\\mathit{\\Lambda}");d("\\varXi","\\mathit{\\Xi}");d("\\varPi","\\mathit{\\Pi}");d("\\varSigma","\\mathit{\\Sigma}");d("\\varUpsilon","\\mathit{\\Upsilon}");d("\\varPhi","\\mathit{\\Phi}");d("\\varPsi","\\mathit{\\Psi}");d("\\varOmega","\\mathit{\\Omega}");d("\\substack","\\begin{subarray}{c}#1\\end{subarray}");d("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");d("\\boxed","\\fbox{$\\displaystyle{#1}$}");d("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");d("\\implies","\\DOTSB\\;\\Longrightarrow\\;");d("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");d("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");d("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var ea={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},Fs=new Set(["bin","rel"]);d("\\dots",function(r){var e="\\dotso",t=r.expandAfterFuture().text;return t in ea?e=ea[t]:(t.slice(0,4)==="\\not"||t in K.math&&Fs.has(K.math[t].group))&&(e="\\dotsb"),e});var Kt={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};d("\\dotso",function(r){var e=r.future().text;return e in Kt?"\\ldots\\,":"\\ldots"});d("\\dotsc",function(r){var e=r.future().text;return e in Kt&&e!==","?"\\ldots\\,":"\\ldots"});d("\\cdots",function(r){var e=r.future().text;return e in Kt?"\\@cdots\\,":"\\@cdots"});d("\\dotsb","\\cdots");d("\\dotsm","\\cdots");d("\\dotsi","\\!\\cdots");d("\\dotsx","\\ldots\\,");d("\\DOTSI","\\relax");d("\\DOTSB","\\relax");d("\\DOTSX","\\relax");d("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");d("\\,","\\tmspace+{3mu}{.1667em}");d("\\thinspace","\\,");d("\\>","\\mskip{4mu}");d("\\:","\\tmspace+{4mu}{.2222em}");d("\\medspace","\\:");d("\\;","\\tmspace+{5mu}{.2777em}");d("\\thickspace","\\;");d("\\!","\\tmspace-{3mu}{.1667em}");d("\\negthinspace","\\!");d("\\negmedspace","\\tmspace-{4mu}{.2222em}");d("\\negthickspace","\\tmspace-{5mu}{.277em}");d("\\enspace","\\kern.5em ");d("\\enskip","\\hskip.5em\\relax");d("\\quad","\\hskip1em\\relax");d("\\qquad","\\hskip2em\\relax");d("\\tag","\\@ifstar\\tag@literal\\tag@paren");d("\\tag@paren","\\tag@literal{({#1})}");d("\\tag@literal",r=>{if(r.macros.get("\\df@tag"))throw new F("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});d("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");d("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");d("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");d("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");d("\\newline","\\\\\\relax");d("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ja=N(I0["Main-Regular"][84][1]-.7*I0["Main-Regular"][65][1]);d("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+ja+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");d("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+ja+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");d("\\hspace","\\@ifstar\\@hspacer\\@hspace");d("\\@hspace","\\hskip #1\\relax");d("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");d("\\ordinarycolon",":");d("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");d("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');d("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');d("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');d("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');d("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');d("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');d("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');d("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');d("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');d("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');d("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');d("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');d("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');d("∷","\\dblcolon");d("∹","\\eqcolon");d("≔","\\coloneqq");d("≕","\\eqqcolon");d("⩴","\\Coloneqq");d("\\ratio","\\vcentcolon");d("\\coloncolon","\\dblcolon");d("\\colonequals","\\coloneqq");d("\\coloncolonequals","\\Coloneqq");d("\\equalscolon","\\eqqcolon");d("\\equalscoloncolon","\\Eqqcolon");d("\\colonminus","\\coloneq");d("\\coloncolonminus","\\Coloneq");d("\\minuscolon","\\eqcolon");d("\\minuscoloncolon","\\Eqcolon");d("\\coloncolonapprox","\\Colonapprox");d("\\coloncolonsim","\\Colonsim");d("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");d("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");d("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");d("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");d("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");d("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");d("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");d("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");d("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");d("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");d("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");d("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");d("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");d("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");d("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");d("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");d("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");d("\\nleqq","\\html@mathml{\\@nleqq}{≰}");d("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");d("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");d("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");d("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");d("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");d("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");d("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");d("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");d("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");d("\\imath","\\html@mathml{\\@imath}{ı}");d("\\jmath","\\html@mathml{\\@jmath}{ȷ}");d("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");d("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");d("⟦","\\llbracket");d("⟧","\\rrbracket");d("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");d("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");d("⦃","\\lBrace");d("⦄","\\rBrace");d("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");d("⦵","\\minuso");d("\\darr","\\downarrow");d("\\dArr","\\Downarrow");d("\\Darr","\\Downarrow");d("\\lang","\\langle");d("\\rang","\\rangle");d("\\uarr","\\uparrow");d("\\uArr","\\Uparrow");d("\\Uarr","\\Uparrow");d("\\N","\\mathbb{N}");d("\\R","\\mathbb{R}");d("\\Z","\\mathbb{Z}");d("\\alef","\\aleph");d("\\alefsym","\\aleph");d("\\Alpha","\\mathrm{A}");d("\\Beta","\\mathrm{B}");d("\\bull","\\bullet");d("\\Chi","\\mathrm{X}");d("\\clubs","\\clubsuit");d("\\cnums","\\mathbb{C}");d("\\Complex","\\mathbb{C}");d("\\Dagger","\\ddagger");d("\\diamonds","\\diamondsuit");d("\\empty","\\emptyset");d("\\Epsilon","\\mathrm{E}");d("\\Eta","\\mathrm{H}");d("\\exist","\\exists");d("\\harr","\\leftrightarrow");d("\\hArr","\\Leftrightarrow");d("\\Harr","\\Leftrightarrow");d("\\hearts","\\heartsuit");d("\\image","\\Im");d("\\infin","\\infty");d("\\Iota","\\mathrm{I}");d("\\isin","\\in");d("\\Kappa","\\mathrm{K}");d("\\larr","\\leftarrow");d("\\lArr","\\Leftarrow");d("\\Larr","\\Leftarrow");d("\\lrarr","\\leftrightarrow");d("\\lrArr","\\Leftrightarrow");d("\\Lrarr","\\Leftrightarrow");d("\\Mu","\\mathrm{M}");d("\\natnums","\\mathbb{N}");d("\\Nu","\\mathrm{N}");d("\\Omicron","\\mathrm{O}");d("\\plusmn","\\pm");d("\\rarr","\\rightarrow");d("\\rArr","\\Rightarrow");d("\\Rarr","\\Rightarrow");d("\\real","\\Re");d("\\reals","\\mathbb{R}");d("\\Reals","\\mathbb{R}");d("\\Rho","\\mathrm{P}");d("\\sdot","\\cdot");d("\\sect","\\S");d("\\spades","\\spadesuit");d("\\sub","\\subset");d("\\sube","\\subseteq");d("\\supe","\\supseteq");d("\\Tau","\\mathrm{T}");d("\\thetasym","\\vartheta");d("\\weierp","\\wp");d("\\Zeta","\\mathrm{Z}");d("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");d("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");d("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");d("\\bra","\\mathinner{\\langle{#1}|}");d("\\ket","\\mathinner{|{#1}\\rangle}");d("\\braket","\\mathinner{\\langle{#1}\\rangle}");d("\\Bra","\\left\\langle#1\\right|");d("\\Ket","\\left|#1\\right\\rangle");var Xa=r=>e=>{var t=e.consumeArg().tokens,a=e.consumeArg().tokens,n=e.consumeArg().tokens,s=e.consumeArg().tokens,o=e.macros.get("|"),u=e.macros.get("\\|");e.macros.beginGroup();var h=g=>S=>{r&&(S.macros.set("|",o),n.length&&S.macros.set("\\|",u));var x=g;if(!g&&n.length){var D=S.future();D.text==="|"&&(S.popToken(),x=!0)}return{tokens:x?n:a,numArgs:0}};e.macros.set("|",h(!1)),n.length&&e.macros.set("\\|",h(!0));var m=e.consumeArg().tokens,p=e.expandTokens([...s,...m,...t]);return e.macros.endGroup(),{tokens:p.reverse(),numArgs:0}};d("\\bra@ket",Xa(!1));d("\\bra@set",Xa(!0));d("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");d("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");d("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");d("\\angln","{\\angl n}");d("\\blue","\\textcolor{##6495ed}{#1}");d("\\orange","\\textcolor{##ffa500}{#1}");d("\\pink","\\textcolor{##ff00af}{#1}");d("\\red","\\textcolor{##df0030}{#1}");d("\\green","\\textcolor{##28ae7b}{#1}");d("\\gray","\\textcolor{gray}{#1}");d("\\purple","\\textcolor{##9d38bd}{#1}");d("\\blueA","\\textcolor{##ccfaff}{#1}");d("\\blueB","\\textcolor{##80f6ff}{#1}");d("\\blueC","\\textcolor{##63d9ea}{#1}");d("\\blueD","\\textcolor{##11accd}{#1}");d("\\blueE","\\textcolor{##0c7f99}{#1}");d("\\tealA","\\textcolor{##94fff5}{#1}");d("\\tealB","\\textcolor{##26edd5}{#1}");d("\\tealC","\\textcolor{##01d1c1}{#1}");d("\\tealD","\\textcolor{##01a995}{#1}");d("\\tealE","\\textcolor{##208170}{#1}");d("\\greenA","\\textcolor{##b6ffb0}{#1}");d("\\greenB","\\textcolor{##8af281}{#1}");d("\\greenC","\\textcolor{##74cf70}{#1}");d("\\greenD","\\textcolor{##1fab54}{#1}");d("\\greenE","\\textcolor{##0d923f}{#1}");d("\\goldA","\\textcolor{##ffd0a9}{#1}");d("\\goldB","\\textcolor{##ffbb71}{#1}");d("\\goldC","\\textcolor{##ff9c39}{#1}");d("\\goldD","\\textcolor{##e07d10}{#1}");d("\\goldE","\\textcolor{##a75a05}{#1}");d("\\redA","\\textcolor{##fca9a9}{#1}");d("\\redB","\\textcolor{##ff8482}{#1}");d("\\redC","\\textcolor{##f9685d}{#1}");d("\\redD","\\textcolor{##e84d39}{#1}");d("\\redE","\\textcolor{##bc2612}{#1}");d("\\maroonA","\\textcolor{##ffbde0}{#1}");d("\\maroonB","\\textcolor{##ff92c6}{#1}");d("\\maroonC","\\textcolor{##ed5fa6}{#1}");d("\\maroonD","\\textcolor{##ca337c}{#1}");d("\\maroonE","\\textcolor{##9e034e}{#1}");d("\\purpleA","\\textcolor{##ddd7ff}{#1}");d("\\purpleB","\\textcolor{##c6b9fc}{#1}");d("\\purpleC","\\textcolor{##aa87ff}{#1}");d("\\purpleD","\\textcolor{##7854ab}{#1}");d("\\purpleE","\\textcolor{##543b78}{#1}");d("\\mintA","\\textcolor{##f5f9e8}{#1}");d("\\mintB","\\textcolor{##edf2df}{#1}");d("\\mintC","\\textcolor{##e0e5cc}{#1}");d("\\grayA","\\textcolor{##f6f7f7}{#1}");d("\\grayB","\\textcolor{##f0f1f2}{#1}");d("\\grayC","\\textcolor{##e3e5e6}{#1}");d("\\grayD","\\textcolor{##d6d8da}{#1}");d("\\grayE","\\textcolor{##babec2}{#1}");d("\\grayF","\\textcolor{##888d93}{#1}");d("\\grayG","\\textcolor{##626569}{#1}");d("\\grayH","\\textcolor{##3b3e40}{#1}");d("\\grayI","\\textcolor{##21242c}{#1}");d("\\kaBlue","\\textcolor{##314453}{#1}");d("\\kaGreen","\\textcolor{##71B307}{#1}");var Va={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Is{constructor(e,t,a){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Cs(Rs,t.macros),this.mode=a,this.stack=[]}feed(e){this.lexer=new Jr(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,a,n;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;t=this.popToken(),{tokens:n,end:a}=this.consumeArg(["]"])}else({tokens:n,start:t,end:a}=this.consumeArg());return this.pushToken(new k0("EOF",a.loc)),this.pushTokens(n),new k0("",g0.range(t,a))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var t=[],a=e&&e.length>0;a||this.consumeSpaces();var n=this.future(),s,o=0,u=0;do{if(s=this.popToken(),t.push(s),s.text==="{")++o;else if(s.text==="}"){if(--o,o===-1)throw new F("Extra }",s)}else if(s.text==="EOF")throw new F("Unexpected end of input in a macro argument, expected '"+(e&&a?e[u]:"}")+"'",s);if(e&&a)if((o===0||o===1&&e[u]==="{")&&s.text===e[u]){if(++u,u===e.length){t.splice(-u,u);break}}else u=0}while(o!==0||a);return n.text==="{"&&t[t.length-1].text==="}"&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:s}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new F("The length of delimiters doesn't match the number of args!");for(var a=t[0],n=0;nthis.settings.maxExpand)throw new F("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),a=t.text,n=t.noexpand?null:this._getExpansion(a);if(n==null||e&&n.unexpandable){if(e&&n==null&&a[0]==="\\"&&!this.isDefined(a))throw new F("Undefined control sequence: "+a);return this.pushToken(t),!1}this.countExpansion(1);var s=n.tokens,o=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs){s=s.slice();for(var u=s.length-1;u>=0;--u){var h=s[u];if(h.text==="#"){if(u===0)throw new F("Incomplete placeholder at end of macro body",h);if(h=s[--u],h.text==="#")s.splice(u+1,1);else if(/^[1-9]$/.test(h.text))s.splice(u,2,...o[+h.text-1]);else throw new F("Not a valid argument number",h)}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}}expandMacro(e){return this.macros.has(e)?this.expandTokens([new k0(e)]):void 0}expandTokens(e){var t=[],a=this.stack.length;for(this.pushTokens(e);this.stack.length>a;)if(this.expandOnce(!0)===!1){var n=this.stack.pop();n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(n)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t&&t.map(a=>a.text).join("")}_getExpansion(e){var t=this.macros.get(e);if(t==null)return t;if(e.length===1){var a=this.lexer.catcodes[e];if(a!=null&&a!==13)return}var n=typeof t=="function"?t(this):t;if(typeof n=="string"){var s=0;if(n.includes("#"))for(var o=n.replace(/##/g,"");o.includes("#"+(s+1));)++s;for(var u=new Jr(n,this.settings),h=[],m=u.lex();m.text!=="EOF";)h.push(m),m=u.lex();h.reverse();var p={tokens:h,numArgs:s};return p}return n}isDefined(e){return this.macros.has(e)||Z0.hasOwnProperty(e)||K.math.hasOwnProperty(e)||K.text.hasOwnProperty(e)||Va.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return t!=null?typeof t=="string"||typeof t=="function"||!t.unexpandable:Z0.hasOwnProperty(e)&&!Z0[e].primitive}}var ta=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Le=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),yt={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ra={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class tt{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Is(e,t,this.mode),this.settings=t,this.leftrightDepth=0,this.nextToken=null}expect(e,t){if(t===void 0&&(t=!0),this.fetch().text!==e)throw new F("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new k0("}")),this.gullet.pushTokens(e);var a=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,a}parseExpression(e,t){for(var a=[];;){this.mode==="math"&&this.consumeSpaces();var n=this.fetch();if(tt.endOfExpression.has(n.text)||t&&n.text===t||e&&Z0[n.text]&&Z0[n.text].infix)break;var s=this.parseAtom(t);if(s){if(s.type==="internal")continue}else break;a.push(s)}return this.mode==="text"&&this.formLigatures(a),this.handleInfixNodes(a)}handleInfixNodes(e){for(var t=-1,a,n=0;n=128)this.settings.strict&&(ia(t.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'"'+(" ("+t.charCodeAt(0)+")"),e)),o={type:"textord",mode:"text",loc:g0.range(e),text:t};else return null;if(this.consume(),s)for(var p=0;p=qs){const a=this.map.keys().next().value;a!==void 0&&this.map.delete(a)}this.map.set(e,t)}get size(){return this.map.size}}const qe=new Ps;function Hs(r,e){return`d\0${e}`}function $s(r,e,t={}){const a=Hs(e,r),n=qe.get(a);if(n!==void 0)return n;const{errorColor:s="var(--semi-color-text-2)",macros:o}=t;let u;try{return u=aa.renderToString(r,{displayMode:e,throwOnError:!0,macros:o,trust:sr}),qe.set(a,u),u}catch{}try{return u=aa.renderToString(r,{displayMode:e,throwOnError:!1,strict:"ignore",errorColor:s,macros:o,trust:sr}),qe.set(a,u),u}catch{}return u=`${_s(r)}`,qe.set(a,u),u}function _s(r){return r.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}const Gs=a0.memo(function({expr:e}){const t=$s(e,!0);return U.jsx("div",{"data-slot":"math-display",dangerouslySetInnerHTML:{__html:t}})}),na=200,Us=a0.memo(function({text:e}){const t=a0.useMemo(()=>{const a=e.split(` -`),n=[];for(let s=0;sU.jsx("pre",{style:{contentVisibility:"auto",containIntrinsicSize:"0 400px",margin:0,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"var(--font-mono, monospace)",fontSize:"var(--font-size-code, 13px)",lineHeight:1.5},children:a},n))})}),js=500,Xs=30,Vs=33,Ws=5e3;function Ys(r,e){const[t,a]=a0.useState(r),n=a0.useRef(r),s=a0.useRef(0),o=a0.useRef(null),u=a0.useRef(r);return u.current=r,a0.useEffect(()=>{if(!e){o.current!==null&&(cancelAnimationFrame(o.current),o.current=null),n.current=r,a(r);return}if(!r.startsWith(n.current)){n.current=r,a(r);return}if(r.length-n.current.length>Ws){n.current=r,a(r);return}function h(){o.current=null;const m=performance.now();if(m-s.current{o.current!==null&&(cancelAnimationFrame(o.current),o.current=null)}},[r,e]),e?t:r}const Zs={macros:{"\\vline":"\\vert","\\R":"\\mathbb{R}","\\N":"\\mathbb{N}","\\Z":"\\mathbb{Z}","\\Q":"\\mathbb{Q}","\\C":"\\mathbb{C}","\\norm":"\\left\\lVert #1 \\right\\rVert","\\abs":"\\left\\lvert #1 \\right\\rvert"},...pn,errorColor:"var(--semi-color-text-2)"},Ks=15e4;function Js(r){return{...dn,pre({children:e}){return U.jsx(U.Fragment,{children:e})},code({className:e,children:t}){const a=/language-(\w+)/.exec(e||""),n=String(t).replace(/\n$/,"");return a?a[1]==="math"?U.jsx(Gs,{expr:n}):a[1]==="diff"?U.jsx(Rn,{code:n}):U.jsx(br,{language:a[1],code:n,isStreaming:r}):n.includes(` -`)?U.jsx(br,{code:n,isStreaming:r}):U.jsx("code",{className:e,children:t})},table({children:e}){return U.jsx("div",{"data-slot":"md-table-wrap",children:U.jsx("table",{children:e})})}}}const i1=a0.memo(function({content:e,isStreaming:t=!1}){const a=a0.useMemo(()=>Js(t),[t]),n=Ys(e,t),s=a0.useDeferredValue(n);return s.length>Ks?U.jsx("div",{"data-slot":"aui_markdown-part",children:U.jsx(Us,{text:s})}):U.jsx("div",{"data-slot":"aui_markdown-part",children:U.jsx(ln,{remarkPlugins:[un,cn],rehypePlugins:[[on,Zs]],components:a,urlTransform:mn,children:hn(s)})})});export{i1 as MarkdownPart}; diff --git a/frontends/desktop/dist/assets/ServicesPage-9DKyWUIu.js b/frontends/desktop/dist/assets/ServicesPage-9DKyWUIu.js deleted file mode 100644 index 8356d58f..00000000 --- a/frontends/desktop/dist/assets/ServicesPage-9DKyWUIu.js +++ /dev/null @@ -1,4 +0,0 @@ -import{c as se,b as u,ax as Le,f as Ee,h as S,_ as K,i as oe,R as v,k as Te,ay as re,l as D,n as le,V as Oe,az as X,P as f,aj as i,ab as Me}from"./tauri-compat-D_GD_wMe.js";import{T as He,a as Ve,b as ce}from"./index-BkPDmlaQ.js";import{_ as he,t as Fe,c as Pe,I as Ie,a as $e,u as Be,b as q,d as z,M as fe,e as xe,i as be,f as Y,E as ye,T as ee,g as Ae,h as de}from"./main-j7e_THPB.js";import{B as _,c as Q,I as Ke}from"./index-9FI8Jlf5.js";import{S as G}from"./index-D9Nakaf3.js";import{I as ve}from"./IconFile-C8B3WX2U.js";import"./WindowsTitlebar-Byi-SYR_.js";function We(s){return u.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),u.createElement("path",{d:"M5 2.9a1 1 0 0 1 1.57-.82l13.23 9.1a1 1 0 0 1 0 1.64l-13.23 9.1A1 1 0 0 1 5 21.1V2.9Z",fill:"currentColor"}))}const we=se(We,"play");function Ue(s){return u.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),u.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 5.07c-.8.47-1.8.46-2.6 0l-.24-.15a1.4 1.4 0 0 0-1.82.29c-.64.82-1.16 1.73-1.55 2.7a1.4 1.4 0 0 0 .66 1.71l.24.14a2.57 2.57 0 0 1 0 4.48l-.24.14a1.4 1.4 0 0 0-.66 1.72 11.1 11.1 0 0 0 1.55 2.69 1.4 1.4 0 0 0 1.82.3l.25-.15a2.57 2.57 0 0 1 3.88 2.24v.28c-.01.7.46 1.33 1.16 1.43a11 11 0 0 0 3.1 0 1.4 1.4 0 0 0 1.17-1.43v-.28a2.57 2.57 0 0 1 3.87-2.24l.25.14c.6.36 1.38.26 1.82-.29.64-.82 1.16-1.73 1.55-2.7a1.4 1.4 0 0 0-.66-1.71l-.24-.14a2.57 2.57 0 0 1 0-4.48l.24-.14a1.4 1.4 0 0 0 .66-1.72 11.08 11.08 0 0 0-1.55-2.69 1.4 1.4 0 0 0-1.82-.3l-.25.15a2.57 2.57 0 0 1-3.88-2.24v-.28c.01-.7-.46-1.33-1.16-1.43a10.99 10.99 0 0 0-3.1 0c-.7.1-1.17.72-1.17 1.43v.28C9.3 3.75 8.8 4.61 8 5.07Zm6 10.4a4 4 0 1 0-4-6.93 4 4 0 0 0 4 6.92Z",fill:"currentColor"}))}const De=se(Ue,"setting");function qe(s){return u.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),u.createElement("path",{d:"M3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Z",fill:"currentColor"}))}const Se=se(qe,"stop");let R=null;const ue={"min-height":"0","max-height":"none",height:"0",visibility:"hidden",overflow:"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},ge=s=>{Object.keys(ue).forEach(e=>{s.style.setProperty(e,ue[e],"important")})},pe=(s,e)=>{const t=s.scrollHeight;return e.sizingStyle.boxSizing==="border-box"?t+e.borderSize:t-e.paddingSize};function Ze(s,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1/0;R||(R=document.createElement("textarea"),R.setAttribute("tab-index","-1"),R.setAttribute("aria-hidden","true"),ge(R)),R.parentNode===null&&document.body.appendChild(R);const{paddingSize:a,borderSize:o,sizingStyle:r}=s,{boxSizing:l}=r;Object.keys(r).forEach(x=>{R.style[x]=r[x]}),ge(R),R.value=e;let c=pe(R,s);R.value="x";const g=pe(R,s)-a-o;let m=g*t;l==="border-box"&&(m=m+a+o),c=Math.max(m,c);let w=g*n;return l==="border-box"&&(w=w+a+o),c=Math.min(w,c),c}const Xe=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","boxSizing","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","paddingBottom","paddingLeft","paddingRight","paddingTop","tabSize","textIndent","textRendering","textTransform","width"],Ye=s=>{const e=window.getComputedStyle(s);if(e===null)return null;const t=Le(e,Xe),{boxSizing:n}=t;if(n==="")return null;const a=parseFloat(t.paddingBottom)+parseFloat(t.paddingTop),o=parseFloat(t.borderBottomWidth)+parseFloat(t.borderTopWidth);return{sizingStyle:t,paddingSize:a,borderSize:o}};class ne extends Ee{static get textAreaDefaultAdapter(){return{notifyChange:S,setValue:S,toggleFocusing:S,toggleHovering:S,notifyFocus:S,notifyBlur:S,notifyKeyDown:S,notifyEnterPress:S}}constructor(e){super(Object.assign(Object.assign({},ne.textAreaDefaultAdapter),e)),this.compositionEnter=!1,this._changeValue=(t,n)=>{this._isControlledComponent()?this._adapter.notifyChange(t,n):(this._adapter.setValue(t),this._adapter.notifyChange(t,n))},this.getNextValue=t=>{const{maxLength:n,minLength:a,getValueLength:o}=this._adapter.getProps();return K(o)?n?this.handleVisibleMaxLength(t):(a&&this.handleVisibleMinLength(t),t):t},this.handleCompositionStart=t=>{this.compositionEnter=!0,this._adapter.notifyCompositionStart(t)},this.handleCompositionEnd=t=>{const{composition:n}=this._adapter.getProps(),a=t.target.value;if(this.compositionEnter=!1,this._adapter.notifyCompositionEnd(t),n){const c=this.getNextValue(a);this._changeValue(c,t);return}const{getValueLength:o,maxLength:r,minLength:l}=this.getProps();if(K(o)){if(r){const c=this.handleVisibleMaxLength(a);c!==a&&this._changeValue(c,t)}l&&this.handleVisibleMinLength(a)}},this.handleCompositionUpdate=t=>{this._adapter.notifyCompositionUpdate(t)},this.resizeTextarea=()=>{var t;const{height:n}=this.getStates(),{rows:a,autosize:o}=this.getProps(),r=this._adapter.getRef(),l=Ye(r);if(!l)return;const[c,g]=o!==null&&typeof o=="object"?[(t=o==null?void 0:o.minRows)!==null&&t!==void 0?t:a,o==null?void 0:o.maxRows]:[a],m=Ze(l,r.value||r.placeholder||"x",c,g);if(n!==m){this._adapter.notifyHeightUpdate(m),r.style.height=`${m}px`;return}}}destroy(){}handleValueChange(e){this._adapter.setValue(e)}handleChange(e,t){const{composition:n}=this._adapter.getProps();let a=e;if(n&&this.compositionEnter){this._adapter.setValue(a);return}this.compositionEnter||(a=this.getNextValue(a)),this._changeValue(a,t)}handleVisibleMinLength(e){const{minLength:t,getValueLength:n}=this._adapter.getProps(),{minLength:a}=this._adapter.getStates();if(he(t)&&t>=0&&K(n)&&oe(e)){const o=n(e);if(o=0&&oe(e)){if(K(n)){if(n(e)>t)return console.warn("[Semi TextArea] The input character is truncated because the input length exceeds the maximum length limit"),this.handleTruncateValue(e,t)}else if(e.length>t)return console.warn("[Semi TextArea] The input character is truncated because the input length exceeds the maximum length limit"),e.slice(0,t);return e}}handleTruncateValue(e,t){const{getValueLength:n}=this._adapter.getProps();return Fe({value:e,maxLength:t,getValueLength:n})}handleFocus(e){const{value:t}=this.getStates();this._adapter.toggleFocusing(!0),this._adapter.notifyFocus(t,e)}handleBlur(e){const{value:t}=this.getStates(),{maxLength:n}=this.getProps();let a=t;n&&(a=this.handleVisibleMaxLength(t),a!==t&&(this._isControlledComponent()||this._adapter.setValue(a),this._adapter.notifyChange(a,e))),this._adapter.toggleFocusing(!1),this._adapter.notifyBlur(a,e)}handleKeyDown(e){const{disabledEnterStartNewLine:t}=this.getProps();t&&e.key==="Enter"&&!e.shiftKey&&e.preventDefault(),this._adapter.notifyKeyDown(e),e.keyCode===13&&this._adapter.notifyPressEnter(e)}handleMouseEnter(e){this._adapter.toggleHovering(!0)}handleMouseLeave(e){this._adapter.toggleHovering(!1)}isAllowClear(){const{value:e,isFocus:t,isHover:n}=this._adapter.getStates(),{showClear:a,disabled:o,readonly:r}=this._adapter.getProps();return e&&a&&!o&&(t||n)&&!r}handleClear(e){const{isFocus:t}=this.getStates();this._isControlledComponent("value")?this._adapter.setState({isFocus:!1}):this._adapter.setState({value:"",isFocus:!1}),t&&this._adapter.notifyBlur("",e),this._adapter.notifyChange("",e),this._adapter.notifyClear(e),this.stopPropagation(e)}handleClick(e){const{disabled:t,readonly:n}=this._adapter.getProps(),{isFocus:a}=this._adapter.getStates();t||n||a||this._adapter.isEventTarget(e)&&(this._adapter.focusInput(),this._adapter.toggleFocusing(!0))}handleCounterClick(e){const{disabled:t,readonly:n}=this._adapter.getProps(),{isFocus:a}=this._adapter.getStates();t||n||a||(this._adapter.focusInput(),this._adapter.toggleFocusing(!0))}}var Qe=function(s,e){var t={};for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(s);a{var a,o;if(this.props.autosize)return;const r=n&&n[0],l=r&&r.contentRect;if(!l)return;const c=l.width,g=l.height;if(!this.nativeResizeObservedOnce){this.nativeResizeObservedOnce=!0,this.lastNativeSize={width:c,height:g};return}const m=this.lastNativeSize;m&&m.width===c&&m.height===g||(this.lastNativeSize={width:c,height:g},(o=(a=this.props).onResize)===null||o===void 0||o.call(a,{height:g,width:c}))},this.handleClear=n=>{this.foundation.handleClear(n)},this.handleClick=n=>{this.foundation.handleClick(n)},this.handleCounterClick=n=>{this.foundation.handleCounterClick(n)},this.setRef=n=>{this.libRef.current=n;const{forwardRef:a}=this.props;typeof a=="function"?a(n):a&&typeof a=="object"&&(a.current=n)},this.handleTextAreaScroll=n=>{const{showLineNumber:a}=this.props;a&&this.lineNumberRef.current&&requestAnimationFrame(()=>{const o=this.lineNumberRef.current;o&&(o.scrollTop=n.target.scrollTop)})},this.getTextareaLineHeightPx=n=>{const a=window.getComputedStyle(n),o=a.lineHeight,r=parseFloat(a.fontSize)||14;if(!o||o==="normal")return r*1.5;const l=parseFloat(o);return Number.isFinite(l)&&l>0?l:r*1.5},this.calculateWrappedLines=(n,a)=>{if(!n)return 1;const o=window.getComputedStyle(a),l=document.createElement("canvas").getContext("2d");if(!l)return 1;const c=o.fontSize,g=o.fontFamily;l.font=`${c} ${g}`;const m=parseFloat(o.paddingLeft)||0,w=parseFloat(o.paddingRight)||0,x=a.clientWidth-m-w;if(x<=0)return 1;const C=l.measureText(n).width,k=Math.ceil(C/x);return Math.max(1,k)};const t="value"in e?e.value:e.defaultValue;this.state={value:t,isFocus:!1,isHover:!1,height:0,minLength:e.minLength,cachedValue:e.value,textareaWidth:0,textareaHeight:0},this.focusing=!1,this.foundation=new ne(this.adapter),this.lineNumberResizeObserver=null,this.libRef=v.createRef(),this.lineNumberRef=v.createRef(),this.throttledResizeTextarea=re(this.foundation.resizeTextarea,10),this.throttledNotifyNativeResize=re(this.handleNativeResize,10),this.nativeResizeObservedOnce=!1,this.lastNativeSize=null}get adapter(){return Object.assign(Object.assign({},super.adapter),{setValue:e=>this.setState({value:e},()=>{this.props.autosize&&this.foundation.resizeTextarea()}),getRef:()=>this.libRef.current,toggleFocusing:e=>this.setState({isFocus:e}),toggleHovering:e=>this.setState({isHover:e}),notifyChange:(e,t)=>{this.props.onChange(e,t)},notifyClear:e=>this.props.onClear(e),notifyBlur:(e,t)=>this.props.onBlur(t),notifyFocus:(e,t)=>this.props.onFocus(t),notifyKeyDown:e=>{this.props.onKeyDown(e)},notifyHeightUpdate:e=>{this.setState({height:e}),this.props.onResize({height:e})},notifyPressEnter:e=>{this.props.onEnterPress&&this.props.onEnterPress(e)},notifyCompositionStart:e=>this.props.onCompositionStart(e),notifyCompositionEnd:e=>this.props.onCompositionEnd(e),notifyCompositionUpdate:e=>this.props.onCompositionUpdate(e),setMinLength:e=>this.setState({minLength:e}),focusInput:()=>{const e=this.libRef&&this.libRef.current;e&&e.focus()},isEventTarget:e=>e&&e.target===e.currentTarget})}static getDerivedStateFromProps(e,t){const n={};return e.value!==t.cachedValue&&(n.value=e.value,n.cachedValue=e.value),n}componentDidMount(){if(this.props.showLineNumber&&this.libRef.current&&typeof globalThis.ResizeObserver<"u"){const e=this.libRef.current;this.setState({textareaWidth:e.clientWidth,textareaHeight:e.clientHeight}),this.lineNumberResizeObserver=new globalThis.ResizeObserver(t=>{for(const n of t){const a=n.contentRect.width,o=n.contentRect.height;this.setState({textareaWidth:a,textareaHeight:o})}}),this.lineNumberResizeObserver.observe(e)}}componentWillUnmount(){var e,t,n,a;this.throttledResizeTextarea&&((t=(e=this.throttledResizeTextarea)===null||e===void 0?void 0:e.cancel)===null||t===void 0||t.call(e),this.throttledResizeTextarea=null),this.throttledNotifyNativeResize&&((a=(n=this.throttledNotifyNativeResize)===null||n===void 0?void 0:n.cancel)===null||a===void 0||a.call(n),this.throttledNotifyNativeResize=null),this.lineNumberResizeObserver&&(this.lineNumberResizeObserver.disconnect(),this.lineNumberResizeObserver=null)}componentDidUpdate(e,t){if((this.props.value!==e.value||this.props.placeholder!==e.placeholder)&&this.props.autosize&&this.foundation.resizeTextarea(),this.props.showLineNumber!==e.showLineNumber)if(this.props.showLineNumber&&this.libRef.current&&typeof globalThis.ResizeObserver<"u"){const n=this.libRef.current;this.setState({textareaWidth:n.clientWidth,textareaHeight:n.clientHeight}),this.lineNumberResizeObserver||(this.lineNumberResizeObserver=new globalThis.ResizeObserver(a=>{for(const o of a){const r=o.contentRect.width,l=o.contentRect.height;this.setState({textareaWidth:r,textareaHeight:l})}})),this.lineNumberResizeObserver.observe(n)}else this.lineNumberResizeObserver&&(this.lineNumberResizeObserver.disconnect(),this.lineNumberResizeObserver=null)}renderClearBtn(){const{showClear:e}=this.props,t=this.foundation.isAllowClear(),n=D(`${y}-clearbtn`,{[`${y}-clearbtn-hidden`]:!t});return e?v.createElement("div",{className:n,onClick:this.handleClear},v.createElement(Ie,null)):null}renderCounter(){let e,t,n,a;const{showCounter:o,maxCount:r,getValueLength:l}=this.props;if(o||r){const{value:c}=this.state;t=c?K(l)?l(c):c.length:0,n=r||null,a=D(`${y}-textarea-counter`,{[`${y}-textarea-counter-exceed`]:t>n}),e=v.createElement("div",{className:a,onClick:this.handleCounterClick},t,n?"/":null,n)}else e=null;return e}renderLineNumbers(){const{showLineNumber:e,lineNumberStart:t=1,lineNumberClassName:n,lineNumberStyle:a}=this.props;if(!e)return null;const{value:o,textareaWidth:r,textareaHeight:l}=this.state,c=this.libRef.current,g=o?o.split(` -`):[""],m=D(`${y}-textarea-lineNumber`,n),w=c?this.getTextareaLineHeightPx(c):21,x=Object.assign(Object.assign({},a||{}),{height:l?`${l}px`:void 0,maxHeight:l?`${l}px`:void 0});return v.createElement("div",{ref:this.lineNumberRef,className:m,style:x},g.map((E,C)=>{const k=c?this.calculateWrappedLines(E,c):1;return v.createElement("div",{key:C,className:`${y}-textarea-lineNumber-item`,style:{minHeight:`${k*w}px`,lineHeight:`${w}px`}},t+C)}))}render(){const e=this.props,{autosize:t,placeholder:n,onEnterPress:a,onResize:o,resize:r,disabled:l,readonly:c,className:g,showCounter:m,validateStatus:w,maxCount:x,defaultValue:E,style:C,textareaStyle:k,forwardRef:T,getValueLength:H,maxLength:p,minLength:N,showClear:O,borderless:L,autoFocus:I,showLineNumber:h,lineNumberStart:d,lineNumberClassName:b,lineNumberStyle:M,composition:U}=e,$=Qe(e,["autosize","placeholder","onEnterPress","onResize","resize","disabled","readonly","className","showCounter","validateStatus","maxCount","defaultValue","style","textareaStyle","forwardRef","getValueLength","maxLength","minLength","showClear","borderless","autoFocus","showLineNumber","lineNumberStart","lineNumberClassName","lineNumberStyle","composition"]),{isFocus:Z,value:B,minLength:F}=this.state,A=!le(r),je=!t&&A&&["horizontal","both","inline"].includes(r),Re=!t&&A&&["vertical","both","block"].includes(r),_e=D(g,`${y}-textarea-wrapper`,{[`${y}-textarea-borderless`]:L,[`${y}-textarea-wrapper-disabled`]:l,[`${y}-textarea-wrapper-readonly`]:c,[`${y}-textarea-wrapper-${w}`]:!!w,[`${y}-textarea-wrapper-focus`]:Z,[`${y}-textarea-wrapper-withLineNumber`]:h,[`${y}-textarea-wrapper-resizeX`]:je,[`${y}-textarea-wrapper-resizeY`]:Re}),ke=D(`${y}-textarea`,{[`${y}-textarea-disabled`]:l,[`${y}-textarea-readonly`]:c,[`${y}-textarea-autosize`]:$e(t)?le(t==null?void 0:t.maxRows):t,[`${y}-textarea-showClear`]:O}),J=Object.assign({},k||{});t?J.resize="none":A&&(J.resize=r);const ie=!t&&A&&r&&r!=="none",V=Object.assign(Object.assign({},Oe($,"insetLabel","insetLabelId","getValueLength","onClear","showClear","disabledEnterStartNewLine","composition")),{style:J,autoFocus:I||this.props.autofocus,className:ke,disabled:l,readOnly:c,placeholder:n||null,onChange:j=>this.foundation.handleChange(j.target.value,j),onFocus:j=>this.foundation.handleFocus(j),onBlur:j=>this.foundation.handleBlur(j.nativeEvent),onKeyDown:j=>this.foundation.handleKeyDown(j),onScroll:this.handleTextAreaScroll,value:B??"",onCompositionStart:this.foundation.handleCompositionStart,onCompositionEnd:this.foundation.handleCompositionEnd,onCompositionUpdate:this.foundation.handleCompositionUpdate});return K(H)||(V.maxLength=p),F&&(V.minLength=F),v.createElement("div",{className:_e,style:C,onMouseEnter:j=>this.foundation.handleMouseEnter(j),onMouseLeave:j=>this.foundation.handleMouseLeave(j),onClick:j=>this.handleClick(j)},this.renderLineNumbers(),h?v.createElement("div",{className:`${y}-textarea-content`},t?v.createElement(X,{onResize:this.throttledResizeTextarea},v.createElement("textarea",Object.assign({},V,{ref:this.setRef}))):ie?v.createElement(X,{onResize:this.throttledNotifyNativeResize},v.createElement("textarea",Object.assign({},V,{ref:this.setRef}))):v.createElement("textarea",Object.assign({},V,{ref:this.setRef}))):t?v.createElement(X,{onResize:this.throttledResizeTextarea},v.createElement("textarea",Object.assign({},V,{ref:this.setRef}))):ie?v.createElement(X,{onResize:this.throttledNotifyNativeResize},v.createElement("textarea",Object.assign({},V,{ref:this.setRef}))):v.createElement("textarea",Object.assign({},V,{ref:this.setRef})),this.renderClearBtn(),this.renderCounter())}}ae.propTypes={autosize:f.oneOfType([f.bool,f.object]),borderless:f.bool,placeholder:f.string,value:f.string,rows:f.number,cols:f.number,maxCount:f.number,onEnterPress:f.func,validateStatus:f.string,className:f.string,style:f.object,textareaStyle:f.object,showClear:f.bool,onClear:f.func,onResize:f.func,onCompositionStart:f.func,onCompositionEnd:f.func,onCompositionUpdate:f.func,getValueLength:f.func,disabledEnterStartNewLine:f.bool,composition:f.bool,showLineNumber:f.bool,lineNumberStart:f.number,lineNumberClassName:f.string,lineNumberStyle:f.object,resize:f.oneOf(["none","both","horizontal","vertical","block","inline"])};ae.defaultProps={autosize:!1,borderless:!1,rows:4,cols:20,showCounter:!1,showClear:!1,onEnterPress:S,onChange:S,onBlur:S,onFocus:S,onKeyDown:S,onResize:S,onClear:S,onCompositionStart:S,onCompositionEnd:S,onCompositionUpdate:S,composition:!1,showLineNumber:!1,lineNumberStart:1};const Ge=v.forwardRef((s,e)=>v.createElement(ae,Object.assign({},s,{forwardRef:e})));function Je({lines:s,emptyLabel:e="No logs",className:t}){const n=u.useRef(null),a=u.useRef(!0),[o,r]=u.useState(!1);u.useEffect(()=>{const g=n.current;g&&a.current&&(g.scrollTop=g.scrollHeight)},[s]);const l=u.useCallback(g=>{const m=g.currentTarget;a.current=m.scrollHeight-m.scrollTop-m.clientHeight<24},[]),c=u.useCallback(()=>{s!=null&&s.length&&navigator.clipboard.writeText(s.join(` -`)).then(()=>{r(!0),setTimeout(()=>r(!1),1500)})},[s]);return i.jsxs("div",{className:`ga-log-tail ${t??""}`,children:[i.jsx("button",{type:"button",className:`ga-log-tail-copy ${o?"copied":""}`,onClick:c,title:"Copy",children:o?"✓":"⎘"}),i.jsx("div",{ref:n,className:"ga-log-tail-scroll",onScroll:l,children:s===null?i.jsx("p",{className:"ga-log-tail-empty",children:"…"}):s.length===0?i.jsx("p",{className:"ga-log-tail-empty",children:e}):i.jsx("pre",{className:"ga-log-tail-pre",children:s.map((g,m)=>i.jsxs("span",{className:g.startsWith("=====")?"ga-log-separator":void 0,children:[g,` -`]},m))})})]})}function Ce(s,e){Be.getState().notify({kind:e,message:s})}function W(s){Ce(s,"error")}function P(s){Ce(s,"success")}const et=3e3;function ze({serviceId:s,onClose:e}){const{t}=q(),n=z(c=>c.fetchLogs),[a,o]=u.useState(null),r=u.useRef(null),l=u.useCallback(async()=>{if(!s)return;const c=await n(s);o(c)},[s,n]);return u.useEffect(()=>(s&&(o(null),l(),r.current=setInterval(l,et)),()=>{r.current&&(clearInterval(r.current),r.current=null)}),[s,l]),i.jsx(fe,{title:t("modal.channelLogs"),visible:s!==null,onCancel:e,footer:null,width:870,centered:!0,closeOnEsc:!0,className:"ga-log-dialog",children:a===null?i.jsx("div",{className:"ga-services-loading",style:{padding:24},children:i.jsx(G,{})}):i.jsx(Je,{lines:a,emptyLabel:t("ch.logEmpty"),className:"ga-log-modal-body"})})}function tt({visible:s,onClose:e}){const{t}=q(),n=z(x=>x.fetchMykey),a=z(x=>x.saveMykey),o=z(x=>x.mykeyContent),r=z(x=>x.mykeyLoading),[l,c]=u.useState(""),[g,m]=u.useState(!1);u.useEffect(()=>{s&&n()},[s,n]),u.useEffect(()=>{c(o)},[o]);const w=async()=>{m(!0);const x=await a(l);m(!1),x?(P(t("sys.configSaved")),e()):W(t("err.mykeyExport"))};return i.jsx(fe,{title:t("modal.mykeyConfig"),visible:s,onCancel:e,width:870,centered:!0,closeOnEsc:!0,className:"ga-settings-dialog",footer:i.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",padding:"8px 0"},children:[i.jsx(_,{onClick:e,children:t("common.cancel")}),i.jsx(_,{type:"primary",loading:g,onClick:w,children:t("common.save")})]}),children:r?i.jsx("div",{className:"ga-services-loading",children:i.jsx(G,{})}):i.jsx(Ge,{value:l,onChange:x=>c(x),autosize:{minRows:16,maxRows:30},style:{fontFamily:"var(--font-mono)",fontSize:13}})})}const st="data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eTencent%20QQ%3c/title%3e%3cpath%20d='M21.395%2015.035a40%2040%200%200%200-.803-2.264l-1.079-2.695c.001-.032.014-.562.014-.836C19.526%204.632%2017.351%200%2012%200S4.474%204.632%204.474%209.241c0%20.274.013.804.014.836l-1.08%202.695a39%2039%200%200%200-.802%202.264c-1.021%203.283-.69%204.643-.438%204.673.54.065%202.103-2.472%202.103-2.472%200%201.469.756%203.387%202.394%204.771-.612.188-1.363.479-1.845.835-.434.32-.379.646-.301.778.343.578%205.883.369%207.482.189%201.6.18%207.14.389%207.483-.189.078-.132.132-.458-.301-.778-.483-.356-1.233-.646-1.846-.836%201.637-1.384%202.393-3.302%202.393-4.771%200%200%201.563%202.537%202.103%202.472.251-.03.581-1.39-.438-4.673'/%3e%3c/svg%3e",nt="data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eWeChat%3c/title%3e%3cpath%20d='M8.691%202.188C3.891%202.188%200%205.476%200%209.53c0%202.212%201.17%204.203%203.002%205.55a.59.59%200%200%201%20.213.665l-.39%201.48c-.019.07-.048.141-.048.213%200%20.163.13.295.29.295a.326.326%200%200%200%20.167-.054l1.903-1.114a.864.864%200%200%201%20.717-.098%2010.16%2010.16%200%200%200%202.837.403c.276%200%20.543-.027.811-.05-.857-2.578.157-4.972%201.932-6.446%201.703-1.415%203.882-1.98%205.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785%205.991c.642%200%201.162.529%201.162%201.18a1.17%201.17%200%200%201-1.162%201.178A1.17%201.17%200%200%201%204.623%207.17c0-.651.52-1.18%201.162-1.18zm5.813%200c.642%200%201.162.529%201.162%201.18a1.17%201.17%200%200%201-1.162%201.178%201.17%201.17%200%200%201-1.162-1.178c0-.651.52-1.18%201.162-1.18zm5.34%202.867c-1.797-.052-3.746.512-5.28%201.786-1.72%201.428-2.687%203.72-1.78%206.22.942%202.453%203.666%204.229%206.884%204.229.826%200%201.622-.12%202.361-.336a.722.722%200%200%201%20.598.082l1.584.926a.272.272%200%200%200%20.14.047c.134%200%20.24-.111.24-.247%200-.06-.023-.12-.038-.177l-.327-1.233a.582.582%200%200%201-.023-.156.49.49%200%200%201%20.201-.398C23.024%2018.48%2024%2016.82%2024%2014.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53%203.274c.535%200%20.969.44.969.982a.976.976%200%200%201-.969.983.976.976%200%200%201-.969-.983c0-.542.434-.982.97-.982zm4.844%200c.535%200%20.969.44.969.982a.976.976%200%200%201-.969.983.976.976%200%200%201-.969-.983c0-.542.434-.982.969-.982z'/%3e%3c/svg%3e",at="data:image/svg+xml,%3csvg%20width='46'%20height='46'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_338_13245)'%3e%3cpath%20d='M39.743%200H6.257A6.257%206.257%200%200%200%200%206.257v33.487A6.257%206.257%200%200%200%206.257%2046h33.487A6.257%206.257%200%200%200%2046%2039.743V6.257A6.257%206.257%200%200%200%2039.743%200'%20fill='%23fff'/%3e%3cmask%20id='mask0_338_13245'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='8'%20width='36'%20height='30'%3e%3cpath%20d='M40.514%208.373H5.484v29.262h35.03z'%20fill='%23fff'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_338_13245)'%3e%3cpath%20d='M28.856%2031.647a.483.483%200%200%200%20.06.738%206.2%206.2%200%200%201%201.911%203.725%202.02%202.02%200%201%200%202.16-2.54%206.2%206.2%200%200%201-3.448-1.922.483.483%200%200%200-.683-.001'%20fill='%23fb6500'/%3e%3c/g%3e%3cmask%20id='mask1_338_13245'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='8'%20width='36'%20height='30'%3e%3cpath%20d='M40.514%208.373H5.484v29.262h35.03z'%20fill='%23fff'/%3e%3c/mask%3e%3cg%20mask='url(%23mask1_338_13245)'%3e%3cpath%20d='M37.057%2028.448a2%202%200%200%200-.58%201.215%206.2%206.2%200%200%201-1.918%203.454.484.484%200%201%200%20.738.616%206.2%206.2%200%200%201%203.725-1.91%202.02%202.02%200%201%200-1.96-3.376z'%20fill='%230082ef'/%3e%3c/g%3e%3cpath%20d='M31.366%2022.75a2.02%202.02%200%200%200%201.215%203.435%206.2%206.2%200%200%201%203.454%201.918.483.483%200%200%200%20.829-.27.48.48%200%200%200-.212-.468%206.2%206.2%200%200%201-1.911-3.726%202.02%202.02%200%200%200-3.375-.889'%20fill='%232dbc00'/%3e%3cmask%20id='mask2_338_13245'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='8'%20width='36'%20height='30'%3e%3cpath%20d='M40.514%208.373H5.484v29.262h35.03z'%20fill='%23fff'/%3e%3c/mask%3e%3cg%20mask='url(%23mask2_338_13245)'%3e%3cpath%20d='m30.374%2025.907-.037.037a6.2%206.2%200%200%201-3.78%201.978%202.007%202.007%200%200%200-.895%203.374%202.02%202.02%200%200%200%203.435-1.216%206.2%206.2%200%200%201%201.923-3.453.484.484%200%200%200-.646-.72'%20fill='%23fc0'/%3e%3c/g%3e%3cmask%20id='mask3_338_13245'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='8'%20width='36'%20height='30'%3e%3cpath%20d='M40.514%208.373H5.484v29.262h35.03z'%20fill='%23fff'/%3e%3c/mask%3e%3cg%20mask='url(%23mask3_338_13245)'%3e%3cpath%20d='M18.17%208.471c-3.624.4-6.908%201.948-9.266%204.367-.938.956-1.7%202.032-2.262%203.182a11.08%2011.08%200%200%200%20.78%2011.188c.64.968%201.693%202.178%202.654%203.037l-.435%203.423-.048.145c-.012.042-.012.09-.018.133l-.012.108.012.11a1.1%201.1%200%200%200%201.657.852h.018l.067-.049%201.04-.52%203.102-1.56a16%2016%200%200%200%204.537.623c1.897.004%203.78-.323%205.564-.968a2.014%202.014%200%200%201-1.373-2.11%2013.7%2013.7%200%200%201-5.721.568l-.309-.042a14%2014%200%200%201-2.056-.43%201.4%201.4%200%200%200-1.1.116l-.085.042-2.552%201.5-.109.066c-.06.036-.09.048-.12.048a.176.176%200%200%201-.164-.181l.097-.393.115-.43.181-.707.212-.787a1.07%201.07%200%200%200-.387-1.19%2011.2%2011.2%200%200%201-2.577-2.686%208.73%208.73%200%200%201-.629-8.818c.46-.92%201.065-1.773%201.815-2.54%201.935-1.997%204.657-3.267%207.669-3.593a14.3%2014.3%200%200%201%203.132%200c2.994.344%205.704%201.633%207.627%203.617a10%2010%200%200%201%201.796%202.551%208.7%208.7%200%200%201%20.901%203.84c0%20.14-.012.279-.018.412a2.015%202.015%200%200%201%202.48.29l.09.109a11%2011%200%200%200-1.1-5.733%2012.3%2012.3%200%200%200-2.238-3.182%2015.18%2015.18%200%200%200-9.229-4.397%2017%2017%200%200%200-3.739-.01'%20fill='%230082ef'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_338_13245'%3e%3cpath%20fill='%23fff'%20d='M0%200h46v46H0z'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",it="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='64%2064%20896%20896'%20fill='%233089F2'%3e%3cpath%20d='M573.7%20252.5C422.5%20197.4%20201.3%2096.7%20201.3%2096.7c-15.7-4.1-17.9%2011.1-17.9%2011.1-5%2061.1%2033.6%20160.5%2053.6%20182.8%2019.9%2022.3%20319.1%20113.7%20319.1%20113.7S326%20357.9%20270.5%20341.9c-55.6-16-37.9%2017.8-37.9%2017.8%2011.4%2061.7%2064.9%20131.8%20107.2%20138.4%2042.2%206.6%20220.1%204%20220.1%204s-35.5%204.1-93.2%2011.9c-42.7%205.8-97%2012.5-111.1%2017.8-33.1%2012.5%2024%2062.6%2024%2062.6%2084.7%2076.8%20129.7%2050.5%20129.7%2050.5%2033.3-10.7%2061.4-18.5%2085.2-24.2L565%20743.1h84.6L603%20928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8%20496.1%20829%20433.8l.6-1h-.1c5-10.8%208.6-19.7%2010-25.8%2017-71.3-114.5-99.4-265.8-154.5z'%20/%3e%3c/svg%3e",ot="data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eTelegram%3c/title%3e%3cpath%20d='M11.944%200A12%2012%200%200%200%200%2012a12%2012%200%200%200%2012%2012%2012%2012%200%200%200%2012-12A12%2012%200%200%200%2012%200a12%2012%200%200%200-.056%200zm4.962%207.224c.1-.002.321.023.465.14a.506.506%200%200%201%20.171.325c.016.093.036.306.02.472-.18%201.898-.962%206.502-1.36%208.627-.168.9-.499%201.201-.82%201.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184%203.247-2.977%203.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793%201.14-5.061%203.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663%203.498-1.524%205.83-2.529%206.998-3.014%203.332-1.386%204.025-1.627%204.476-1.635z'/%3e%3c/svg%3e",rt="data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDiscord%3c/title%3e%3cpath%20d='M20.317%204.3698a19.7913%2019.7913%200%2000-4.8851-1.5152.0741.0741%200%2000-.0785.0371c-.211.3753-.4447.8648-.6083%201.2495-1.8447-.2762-3.68-.2762-5.4868%200-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077%200%2000-.0785-.037%2019.7363%2019.7363%200%2000-4.8852%201.515.0699.0699%200%2000-.0321.0277C.5334%209.0458-.319%2013.5799.0992%2018.0578a.0824.0824%200%2000.0312.0561c2.0528%201.5076%204.0413%202.4228%205.9929%203.0294a.0777.0777%200%2000.0842-.0276c.4616-.6304.8731-1.2952%201.226-1.9942a.076.076%200%2000-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077%200%2001-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743%200%2001.0776-.0105c3.9278%201.7933%208.18%201.7933%2012.0614%200a.0739.0739%200%2001.0785.0095c.1202.099.246.1981.3728.2924a.077.077%200%2001-.0066.1276%2012.2986%2012.2986%200%2001-1.873.8914.0766.0766%200%2000-.0407.1067c.3604.698.7719%201.3628%201.225%201.9932a.076.076%200%2000.0842.0286c1.961-.6067%203.9495-1.5219%206.0023-3.0294a.077.077%200%2000.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061%200%2000-.0312-.0286zM8.02%2015.3312c-1.1825%200-2.1569-1.0857-2.1569-2.419%200-1.3332.9555-2.4189%202.157-2.4189%201.2108%200%202.1757%201.0952%202.1568%202.419%200%201.3332-.9555%202.4189-2.1569%202.4189zm7.9748%200c-1.1825%200-2.1569-1.0857-2.1569-2.419%200-1.3332.9554-2.4189%202.1569-2.4189%201.2108%200%202.1757%201.0952%202.1568%202.419%200%201.3332-.946%202.4189-2.1568%202.4189Z'/%3e%3c/svg%3e",lt="/assets/feishu-9hxxyz3-.svg",te={"frontends/qqapp.py":{label:"ch.qq",icon:st},"frontends/wechatapp.py":{label:"ch.wechat",icon:nt},"frontends/wecomapp.py":{label:"ch.wecom",icon:at},"frontends/dingtalkapp.py":{label:"ch.dingtalk",icon:it},"frontends/tgapp.py":{label:"ch.telegram",icon:ot},"frontends/dcapp.py":{label:"ch.discord",icon:rt},"frontends/fsapp.py":{label:"ch.lark",icon:lt}},ct=Object.fromEntries(Object.entries(te).map(([s,e])=>[s,e.label])),me=new Set(Object.keys(ct));function Ne(s){return me.has(s.id)||me.has(s.name)}function ht(){const{t:s}=q(),e=xe(),t=z(p=>p.services),n=z(p=>p.loading),a=z(p=>p.startService),o=z(p=>p.stopService),[r,l]=u.useState(new Set),[c,g]=u.useState(null),[m,w]=u.useState(!1),[x,E]=u.useState(!1),C=t.filter(Ne),k=u.useCallback(async()=>{E(!0);try{await be()}catch{W(s("err.bridge"))}finally{E(!1)}},[s]),T=u.useCallback(async p=>{l(N=>new Set([...N,p.id]));try{p.running?await o(p.id)?P(s("sys.channelStopped")):W(s("err.channelStop")):await a(p.id)?P(s("sys.channelStarted")):W(s("err.channelStart"))}finally{l(N=>{const O=new Set(N);return O.delete(p.id),O})}},[a,o,s]),H=e!=="ready";return H&&C.length===0?i.jsxs("div",{className:"ga-services-loading ga-services-loading--col",children:[i.jsx(Q,{style:{color:"var(--semi-color-warning)",fontSize:24}}),i.jsx("span",{children:s("bridge.notRunning")}),Y()?i.jsx(_,{"data-testid":"bridge-restart",loading:x,onClick:k,theme:"light",type:"primary",children:s("bridge.restart")}):i.jsx("code",{className:"ga-bridge-hint",children:s("bridge.notRunningHint")})]}):n&&C.length===0?i.jsxs("div",{className:"ga-services-loading",children:[i.jsx(G,{size:"large"}),i.jsx("span",{children:s("ch.loading")})]}):!H&&C.length===0?i.jsx(ye,{description:s("ch.empty")}):i.jsxs("div",{className:"ga-channel-list",children:[H&&i.jsxs("div",{className:"ga-offline-banner",children:[i.jsx(Q,{size:"small"}),i.jsx("span",{children:s("bridge.staleData")}),Y()&&i.jsx(_,{"data-testid":"bridge-restart",size:"small",loading:x,onClick:k,theme:"light",children:s("bridge.restart")})]}),C.map(p=>{const N=te[p.id]||te[p.name],O=(N==null?void 0:N.label)||"",L=O?s(O):p.name,I=N==null?void 0:N.icon,h=r.has(p.id);return i.jsxs("div",{className:"ga-channel-card",children:[i.jsxs("div",{className:"ga-channel-card-info",children:[I&&i.jsx("img",{src:I,alt:"",className:"ga-channel-icon"}),i.jsx("span",{className:"ga-channel-card-name",children:L}),i.jsx(ee,{size:"small",color:p.running?"green":"grey",type:"ghost",children:p.running?s("st.online"):s("st.offline")}),p.lastError&&i.jsx(ee,{size:"small",color:"red",type:"ghost",children:p.lastError})]}),i.jsxs("div",{className:"ga-channel-card-actions",children:[i.jsx(_,{size:"small",icon:p.running?i.jsx(Se,{}):i.jsx(we,{}),loading:h,disabled:H,onClick:()=>T(p),type:p.running?"danger":"primary",theme:"light",children:p.running?s("act.stop"):s("act.start")}),i.jsx(_,{size:"small",icon:i.jsx(ve,{}),theme:"borderless",onClick:()=>g(p.id),children:s("act.logs")}),i.jsx(_,{size:"small",icon:i.jsx(De,{}),theme:"borderless",onClick:()=>w(!0),children:s("act.configure")})]})]},p.id)}),i.jsx(ze,{serviceId:c,onClose:()=>g(null)}),i.jsx(tt,{visible:m,onClose:()=>w(!1)})]})}const dt={__bridge__:{labelKey:"proc.bridge",summaryKey:"proc.bridgeSummary",tipKey:"proc.bridgeTip"},"frontends/conductor.py":{labelKey:"proc.conductor",summaryKey:"proc.conductorSummary",tipKey:"proc.conductorTip"},"reflect/scheduler.py":{labelKey:"proc.scheduler",summaryKey:"proc.schedulerSummary",tipKey:"proc.schedulerTip"}};function ut(){const{t:s}=q(),e=xe(),t=z(h=>h.services),n=z(h=>h.loading),a=z(h=>h.startService),o=z(h=>h.stopService),r=z(h=>h.exitBridge),l=z(h=>h.restartService),[c,g]=u.useState(new Set),[m,w]=u.useState(null),[x,E]=u.useState(!1),C=t.filter(h=>!Ne(h)),k=u.useCallback(async()=>{E(!0);try{await be()}catch{W(s("err.bridge"))}finally{E(!1)}},[s]),T=u.useCallback(async(h,d)=>{g(b=>new Set([...b,h]));try{await d()||W(s("err.channelStop"))}finally{g(b=>{const M=new Set(b);return M.delete(h),M})}},[s]),H=u.useCallback(h=>T(h.id,async()=>{const d=await a(h.id);return d&&P(s("sys.channelStarted")),d}),[a,s,T]),p=u.useCallback(h=>T(h.id,async()=>{if(!h.managed){const b=await r();return b&&P(s("sys.bridgeDisconnecting")),b}const d=await o(h.id);return d&&P(s("sys.channelStopped")),d}),[r,o,s,T]),N=u.useCallback(h=>T(h.id,async()=>{const d=await l(h.id);return d&&P(s("sys.channelStarted")),d}),[l,s,T]),O=h=>{const{status:d,errorKey:b,warningKey:M,lastError:U,lastWarning:$}=h,Z={running:{color:"green",text:s("st.running")},offline:{color:"grey",text:s("st.stopped")},error:{color:"red",text:s("st.abnormal")},warning:{color:"amber",text:s("st.warning")}},B=Z[d]??Z.offline,F=b?s(b):M?s(M):U||$||"",A=d==="error"||d==="running"&&M;return i.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[i.jsx(ee,{size:"small",color:B.color,type:"light",children:B.text}),A&&F&&i.jsx("span",{title:U||$||"",style:{fontSize:11,color:d==="error"?"var(--semi-color-danger)":"var(--semi-color-warning)",maxWidth:200,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:F.length>50?F.slice(0,50)+"…":F})]})},L=e!=="ready",I=[{title:s("svc.colName"),dataIndex:"name",key:"name",render:(h,d)=>{const b=dt[d.id],M=s(b?b.labelKey:"proc.runtimeComponent"),U=s(b?b.summaryKey:"proc.runtimeComponentSummary"),$=s(b?b.tipKey:"proc.runtimeComponentTip");return i.jsx(Me,{content:$,position:"topLeft",children:i.jsxs("span",{className:"ga-service-identity",children:[i.jsx("span",{className:"ga-service-identity-name",children:M}),i.jsx("span",{className:"ga-service-identity-summary",children:U})]})})}},{title:s("svc.colStatus"),dataIndex:"status",key:"status",width:220,render:(h,d)=>O(d)},{title:s("svc.colPid"),dataIndex:"pid",key:"pid",width:80,render:(h,d)=>i.jsx("span",{style:{fontFamily:"var(--font-mono)",fontSize:12},children:d.pid??"—"})},{title:s("svc.colMemory"),dataIndex:"memMb",key:"memMb",width:100,render:(h,d)=>i.jsx("span",{style:{fontFamily:"var(--font-mono)",fontSize:12},children:d.memMb!=null?d.memMb.toFixed(1):"—"})},{title:s("svc.colCpu"),dataIndex:"cpuPct",key:"cpuPct",width:90,render:(h,d)=>i.jsx("span",{style:{fontFamily:"var(--font-mono)",fontSize:12},children:d.cpuPct!=null?d.cpuPct.toFixed(1):"—"})},{title:s("svc.colActions"),key:"actions",width:200,render:(h,d)=>{const b=c.has(d.id);return i.jsxs("div",{className:"ga-status-actions",children:[d.running?i.jsxs(i.Fragment,{children:[d.managed&&i.jsx(_,{size:"small",icon:i.jsx(Ae,{}),theme:"borderless",loading:b,disabled:L,onClick:()=>N(d),children:s("act.restart")}),i.jsx(_,{size:"small",icon:d.managed?i.jsx(Se,{}):i.jsx(Ke,{}),theme:"borderless",type:"danger",loading:b,disabled:L,onClick:()=>p(d),children:d.managed?s("act.stop"):s("act.disconnect")})]}):d.managed&&i.jsx(_,{size:"small",icon:i.jsx(we,{}),theme:"borderless",type:"primary",loading:b,disabled:L,onClick:()=>H(d),children:s("act.start")}),i.jsx(_,{size:"small",icon:i.jsx(ve,{}),theme:"borderless",onClick:()=>w(d.id),children:s("act.logs")})]})}}];return L&&C.length===0?i.jsxs("div",{className:"ga-services-loading ga-services-loading--col",children:[i.jsx(Q,{style:{color:"var(--semi-color-warning)",fontSize:24}}),i.jsx("span",{children:s("bridge.notRunning")}),Y()?i.jsx(_,{"data-testid":"bridge-restart",loading:x,onClick:k,theme:"light",type:"primary",children:s("bridge.restart")}):i.jsx("code",{className:"ga-bridge-hint",children:s("bridge.notRunningHint")})]}):n&&C.length===0?i.jsx("div",{className:"ga-services-loading",children:i.jsx(G,{size:"large"})}):!L&&C.length===0?i.jsx(ye,{description:s("svc.empty")}):i.jsxs("div",{className:"ga-status-panel",children:[L&&i.jsxs("div",{className:"ga-offline-banner",children:[i.jsx(Q,{size:"small"}),i.jsx("span",{children:s("bridge.staleData")}),Y()&&i.jsx(_,{"data-testid":"bridge-restart",size:"small",loading:x,onClick:k,theme:"light",children:s("bridge.restart")})]}),i.jsx(He,{columns:I,dataSource:C,rowKey:"id",pagination:!1,size:"small",bordered:!1}),i.jsx(ze,{serviceId:m,onClose:()=>w(null)})]})}function vt(){const{t:s}=q(),e=z(a=>a.fetchServices),t=de(a=>a.servicesTab),n=de(a=>a.setServicesTab);return u.useEffect(()=>{e()},[e]),i.jsx("div",{className:"ga-services-page",children:i.jsxs(Ve,{type:"line",activeKey:t,onChange:n,children:[i.jsx(ce,{tab:s("nav.channels"),itemKey:"channels",children:i.jsx(ht,{})}),i.jsx(ce,{tab:s("nav.status"),itemKey:"status",children:i.jsx(ut,{})})]})})}export{vt as ServicesPage}; diff --git a/frontends/desktop/dist/assets/ServicesPage-Cbm5nbW7.css b/frontends/desktop/dist/assets/ServicesPage-Cbm5nbW7.css deleted file mode 100644 index a5496d0b..00000000 --- a/frontends/desktop/dist/assets/ServicesPage-Cbm5nbW7.css +++ /dev/null @@ -1 +0,0 @@ -.semi-input-textarea-wrapper{box-sizing:border-box;display:inline-block;position:relative;width:100%;border:1px transparent solid;border-radius:var(--semi-border-radius-small);vertical-align:bottom;background-color:var(--semi-color-fill-0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-input-textarea-wrapper-resizeX{display:inline-block;width:fit-content;max-width:100%}.semi-input-textarea-wrapper:hover{background-color:var(--semi-color-fill-1)}.semi-input-textarea-wrapper-focus{background-color:var(--semi-color-fill-0);border:1px var(--semi-color-focus-border) solid}.semi-input-textarea-wrapper-focus:hover,.semi-input-textarea-wrapper-focus:active{background-color:var(--semi-color-fill-0)}.semi-input-textarea-wrapper:active{background-color:var(--semi-color-fill-2)}.semi-input-textarea-wrapper .semi-input-clearbtn{position:absolute;top:0;min-width:24px;color:var(--semi-color-text-2);right:4px;height:32px;display:flex;align-items:center;justify-content:center}.semi-input-textarea-wrapper .semi-input-clearbtn>svg{pointer-events:none}.semi-input-textarea-wrapper .semi-input-clearbtn:hover{cursor:pointer}.semi-input-textarea-wrapper .semi-input-clearbtn:hover .semi-icon{color:var(--semi-color-primary-hover)}.semi-input-textarea-wrapper .semi-input-clearbtn-hidden{visibility:hidden}.semi-input-textarea-wrapper-disabled,.semi-input-textarea-wrapper-readonly{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:var(--semi-color-disabled-fill)}.semi-input-textarea-wrapper-disabled:hover,.semi-input-textarea-wrapper-readonly:hover{background-color:var(--semi-color-disabled-fill)}.semi-input-textarea-wrapper-disabled::placeholder,.semi-input-textarea-wrapper-readonly::placeholder{color:var(--semi-color-disabled-text)}.semi-input-textarea-wrapper-readonly{cursor:text}.semi-input-textarea-wrapper-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-input-textarea-wrapper-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-input-textarea-wrapper-error.semi-input-textarea-wrapper-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-textarea-wrapper-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger)}.semi-input-textarea-wrapper-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-input-textarea-wrapper-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-input-textarea-wrapper-warning.semi-input-textarea-wrapper-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-textarea-wrapper-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning)}.semi-input-textarea{position:relative;resize:none;padding:5px 12px;box-shadow:none;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:transparent;border:0 solid transparent;vertical-align:bottom;width:100%;outline:none;cursor:text;box-sizing:border-box;color:var(--semi-color-text-0)}.semi-input-textarea:hover{border-color:transparent}.semi-input-textarea::placeholder{color:var(--semi-color-text-2)}.semi-input-textarea-showClear{padding-right:36px}.semi-input-textarea-disabled,.semi-input-textarea-readonly{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:transparent}.semi-input-textarea-disabled:hover,.semi-input-textarea-readonly:hover{background-color:transparent}.semi-input-textarea-disabled::placeholder,.semi-input-textarea-readonly::placeholder{color:var(--semi-color-disabled-text)}.semi-input-textarea-readonly{cursor:text}.semi-input-textarea-autosize{overflow:hidden;resize:none}.semi-input-textarea-counter{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;flex-direction:column;justify-content:center;padding:3px 12px 5px;min-height:24px;text-align:right;color:var(--semi-color-text-2)}.semi-input-textarea-counter-exceed{color:var(--semi-color-danger)}.semi-input-textarea-borderless:not(:focus-within):not(:hover){background-color:transparent;border-color:transparent}.semi-input-textarea-borderless:focus-within:not(:active){background-color:transparent}.semi-input-textarea-borderless.semi-input-textarea-wrapper-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-input-textarea-borderless.semi-input-textarea-wrapper-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-input-textarea-borderless.semi-input-textarea-wrapper-error .semi-input-textarea-counter{color:var(--semi-color-danger)}.semi-input-textarea-borderless.semi-input-textarea-wrapper-warning .semi-input-textarea-counter{color:var(--semi-color-warning)}.semi-input-textarea-wrapper-withLineNumber{display:flex;padding:0;align-items:flex-start}.semi-input-textarea-wrapper-withLineNumber.semi-input-textarea-wrapper-resizeX{display:inline-flex;width:fit-content;max-width:100%}.semi-input-textarea-wrapper-withLineNumber.semi-input-textarea-wrapper-resizeX .semi-input-textarea-content{flex:0 0 auto}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber{flex-shrink:0;padding:5px 12px;background-color:var(--semi-color-fill-1);border-right:1px solid var(--semi-color-border);color:var(--semi-color-text-2);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:inherit;line-height:1.5;text-align:right;-webkit-user-select:none;user-select:none;min-width:36px;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small);overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-ms-overflow-style:none}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber::-webkit-scrollbar{display:none}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-content{display:flex;flex:1;min-width:0}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber-item{display:flex;align-items:flex-start;justify-content:flex-end;box-sizing:border-box}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;line-height:1.5;flex:1}.semi-rtl .semi-input-wrapper,.semi-portal-rtl .semi-input-wrapper{direction:rtl}.semi-rtl .semi-input-wrapper__with-prefix .semi-input,.semi-portal-rtl .semi-input-wrapper__with-prefix .semi-input{padding-left:auto;padding-right:0}.semi-rtl .semi-input-wrapper__with-suffix .semi-input,.semi-portal-rtl .semi-input-wrapper__with-suffix .semi-input{padding-right:auto;padding-left:0}.semi-rtl .semi-input,.semi-portal-rtl .semi-input{padding-left:12px;padding-right:12px}.semi-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-portal-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-portal-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-text{margin-left:auto;margin-right:0}.semi-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-portal-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-portal-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-icon{margin-left:auto;margin-right:0}.semi-rtl .semi-input-append,.semi-portal-rtl .semi-input-append{border-left:0;border-right:1px transparent solid}.semi-rtl .semi-input-prepend,.semi-portal-rtl .semi-input-prepend{border-right:0;border-left:1px transparent solid}.semi-rtl .semi-input-group .semi-select:not(:last-child):after,.semi-rtl .semi-input-group .semi-cascader:not(:last-child):after,.semi-rtl .semi-input-group .semi-tree-select:not(:last-child):after,.semi-rtl .semi-input-group>.semi-input-wrapper:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-select:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-cascader:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-tree-select:not(:last-child):after,.semi-portal-rtl .semi-input-group>.semi-input-wrapper:not(:last-child):after{right:auto;left:-1px}.semi-rtl .semi-input-group .semi-input-number:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-input-number:not(:last-child):after{right:auto;left:-1px}.semi-rtl .semi-input-textarea-wrapper,.semi-portal-rtl .semi-input-textarea-wrapper{direction:rtl}.semi-rtl .semi-input-textarea-counter,.semi-portal-rtl .semi-input-textarea-counter{text-align:left}.semi-rtl .semi-input-textarea-showClear,.semi-portal-rtl .semi-input-textarea-showClear{padding-right:0;padding-left:36px}.ga-services-page{padding:16px 12px;height:100%;width:100%;overflow-y:auto}.ga-services-loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:48px 0}.ga-services-loading--col{flex-direction:column;gap:6px}.ga-bridge-hint{font-size:12px;color:var(--semi-color-text-2);background:var(--semi-color-fill-0);padding:4px 10px;border-radius:4px;margin-top:4px}.ga-channel-list{display:flex;flex-direction:column;gap:8px;padding:4px 0 12px;width:100%}.ga-channel-card{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;background:var(--dt-card);border:1px solid var(--ui-stroke-tertiary);transition:border-color .15s}.ga-channel-card:hover{border-color:var(--ui-stroke-secondary)}.ga-channel-card-info{display:flex;align-items:center;gap:6px}.ga-channel-icon{width:18px;height:18px;flex-shrink:0}.ga-channel-card-name{font-weight:500;margin-right:8px}.ga-channel-card-actions{display:flex;align-items:center;gap:4px}.ga-status-panel{padding:4px 0 12px}.ga-service-identity{display:inline-flex;min-width:0;flex-direction:column;gap:2px;padding:2px 0}.ga-service-identity-name{color:var(--semi-color-text-0);font-weight:600;line-height:20px}.ga-service-identity-summary{color:var(--semi-color-text-2);font-size:12px;line-height:18px;white-space:normal}.ga-offline-banner{display:flex;align-items:center;gap:6px;padding:6px 12px;margin-bottom:8px;border-radius:6px;background:var(--semi-color-warning-light-default);color:var(--semi-color-warning);font-size:12px;line-height:1.4}.ga-offline-banner>span{flex:1}.ga-status-actions{display:flex;gap:4px;align-items:center}.ga-log-dialog .semi-modal-content{padding-left:24px;padding-right:0;max-height:85vh;display:flex;flex-direction:column}.ga-log-dialog .semi-modal-header{padding-right:24px;flex-shrink:0}.ga-log-dialog .semi-modal-body{padding:0 24px 0 0;flex:1;min-height:0} diff --git a/frontends/desktop/dist/assets/SummaryPart-zs-In9mf.js b/frontends/desktop/dist/assets/SummaryPart-zs-In9mf.js deleted file mode 100644 index 6d9f336a..00000000 --- a/frontends/desktop/dist/assets/SummaryPart-zs-In9mf.js +++ /dev/null @@ -1 +0,0 @@ -import{b as s,aj as r}from"./tauri-compat-D_GD_wMe.js";import{M as o,S as m,r as t,a as e,b as n,p}from"./markdown-preprocess-Cc2i34eF.js";import{U as i,V as c}from"./main-j7e_THPB.js";import"./index-9FI8Jlf5.js";import"./WindowsTitlebar-Byi-SYR_.js";const u={...c},O=s.memo(function({content:a}){return r.jsx("div",{"data-slot":"summary-block",children:r.jsx(o,{remarkPlugins:[e,n],rehypePlugins:[[t,u]],components:m,urlTransform:i,children:p(a)})})});export{O as SummaryPart}; diff --git a/frontends/desktop/dist/assets/TokenPage-8X0HZ3hU.js b/frontends/desktop/dist/assets/TokenPage-8X0HZ3hU.js deleted file mode 100644 index 0d043044..00000000 --- a/frontends/desktop/dist/assets/TokenPage-8X0HZ3hU.js +++ /dev/null @@ -1,2 +0,0 @@ -import{aA as F,aB as L,aC as ee,aD as ze,aE as Xe,aF as wt,aG as Vr,c as Dt,b as J,aH as Br,aI as Gr,B,d as Yi,e as Li,x as $i,aJ as Hi,g as ia,aK as Ui,_ as st,f as He,ae as Be,w as qi,i as Wi,aL as De,N as oe,j as ji,R as b,k as Ue,l as Y,P as p,q as We,h as Q,aM as Vi,aN as Bi,M as K,aO as Gi,aP as zi,ay as Xi,X as zr,T as Zi,O as Xr,s as Qi,aQ as Ki,ax as Ji,aj as A}from"./tauri-compat-D_GD_wMe.js";import{_ as es,c as M,V as ts,i as Sn,d as ns,e as Et,I as Zr,f as as,r as rs,g as rt,h as Un,j as Qn,k as is,l as ss,T as os,a as us,b as Ta}from"./index-BkPDmlaQ.js";import{s as Qr,a as Kr,F as gt,I as ls,j as cs,k as ds,B as Jr,C as fs,l as hs,m as wa,b as lt,n as ps,T as ms,E as ei,g as gs}from"./main-j7e_THPB.js";import{a as pt,B as yt}from"./index-9FI8Jlf5.js";import{A as vs}from"./Animation-DbFrgT1j.js";import{B as Da}from"./index-C-iCGtYr.js";import{S as ys}from"./index-D9Nakaf3.js";import"./WindowsTitlebar-Byi-SYR_.js";function Le(s,e){F(2,arguments);var t=L(s),n=ee(e);if(isNaN(n))return new Date(NaN);if(!n)return t;var a=t.getDate(),i=new Date(t.getTime());i.setMonth(t.getMonth()+n+1,0);var r=i.getDate();return a>=r?i:(t.setFullYear(i.getFullYear(),i.getMonth(),a),t)}function Ts(s,e){F(2,arguments);var t=L(s).getTime(),n=ee(e);return new Date(t+n)}function ti(s){var e=new Date(Date.UTC(s.getFullYear(),s.getMonth(),s.getDate(),s.getHours(),s.getMinutes(),s.getSeconds(),s.getMilliseconds()));return e.setUTCFullYear(s.getFullYear()),s.getTime()-e.getTime()}function Kn(s){F(1,arguments);var e=L(s);return e.setHours(0,0,0,0),e}function xn(s,e){F(2,arguments);var t=ee(e);return Le(s,t*12)}var sa=6e4,oa=36e5,ws=1e3;function ua(s,e){F(2,arguments);var t=Kn(s),n=Kn(e);return t.getTime()===n.getTime()}function Jn(s){return F(1,arguments),s instanceof Date||ze(s)==="object"&&Object.prototype.toString.call(s)==="[object Date]"}function Ce(s){if(F(1,arguments),!Jn(s)&&typeof s!="number")return!1;var e=L(s);return!isNaN(Number(e))}function je(s,e){F(2,arguments);var t=L(s),n=L(e),a=t.getFullYear()-n.getFullYear(),i=t.getMonth()-n.getMonth();return a*12+i}function Ds(s,e){F(2,arguments);var t=L(s),n=L(e);return t.getFullYear()-n.getFullYear()}function bs(s){F(1,arguments);var e=L(s);return e.setDate(1),e.setHours(0,0,0,0),e}function ni(s,e){F(2,arguments);var t=ee(e);return Ts(s,-t)}var _s=864e5;function Cs(s){F(1,arguments);var e=L(s),t=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var n=e.getTime(),a=t-n;return Math.floor(a/_s)+1}function ot(s){F(1,arguments);var e=1,t=L(s),n=t.getUTCDay(),a=(n=a.getTime()?t+1:e.getTime()>=r.getTime()?t:t-1}function Is(s){F(1,arguments);var e=ai(s),t=new Date(0);t.setUTCFullYear(e,0,4),t.setUTCHours(0,0,0,0);var n=ot(t);return n}var Rs=6048e5;function ri(s){F(1,arguments);var e=L(s),t=ot(e).getTime()-Is(e).getTime();return Math.round(t/Rs)+1}function la(s,e){var t,n,a,i,r,u,o,l;F(1,arguments);var c=L(s),d=c.getUTCFullYear(),f=wt(),h=ee((t=(n=(a=(i=e==null?void 0:e.firstWeekContainsDate)!==null&&i!==void 0?i:e==null||(r=e.locale)===null||r===void 0||(u=r.options)===null||u===void 0?void 0:u.firstWeekContainsDate)!==null&&a!==void 0?a:f.firstWeekContainsDate)!==null&&n!==void 0?n:(o=f.locale)===null||o===void 0||(l=o.options)===null||l===void 0?void 0:l.firstWeekContainsDate)!==null&&t!==void 0?t:1);if(!(h>=1&&h<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var v=new Date(0);v.setUTCFullYear(d+1,0,h),v.setUTCHours(0,0,0,0);var w=Xe(v,e),m=new Date(0);m.setUTCFullYear(d,0,h),m.setUTCHours(0,0,0,0);var g=Xe(m,e);return c.getTime()>=w.getTime()?d+1:c.getTime()>=g.getTime()?d:d-1}function Ps(s,e){var t,n,a,i,r,u,o,l;F(1,arguments);var c=wt(),d=ee((t=(n=(a=(i=e==null?void 0:e.firstWeekContainsDate)!==null&&i!==void 0?i:e==null||(r=e.locale)===null||r===void 0||(u=r.options)===null||u===void 0?void 0:u.firstWeekContainsDate)!==null&&a!==void 0?a:c.firstWeekContainsDate)!==null&&n!==void 0?n:(o=c.locale)===null||o===void 0||(l=o.options)===null||l===void 0?void 0:l.firstWeekContainsDate)!==null&&t!==void 0?t:1),f=la(s,e),h=new Date(0);h.setUTCFullYear(f,0,d),h.setUTCHours(0,0,0,0);var v=Xe(h,e);return v}var Es=6048e5;function ii(s,e){F(1,arguments);var t=L(s),n=Xe(t,e).getTime()-Ps(t,e).getTime();return Math.round(n/Es)+1}function z(s,e){for(var t=s<0?"-":"",n=Math.abs(s).toString();n.length0?n:1-n;return z(t==="yy"?a%100:a,t.length)},M:function(e,t){var n=e.getUTCMonth();return t==="M"?String(n+1):z(n+1,2)},d:function(e,t){return z(e.getUTCDate(),t.length)},a:function(e,t){var n=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h:function(e,t){return z(e.getUTCHours()%12||12,t.length)},H:function(e,t){return z(e.getUTCHours(),t.length)},m:function(e,t){return z(e.getUTCMinutes(),t.length)},s:function(e,t){return z(e.getUTCSeconds(),t.length)},S:function(e,t){var n=t.length,a=e.getUTCMilliseconds(),i=Math.floor(a*Math.pow(10,n-3));return z(i,t.length)}},Je={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Os={G:function(e,t,n){var a=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});case"GGGG":default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if(t==="yo"){var a=e.getUTCFullYear(),i=a>0?a:1-a;return n.ordinalNumber(i,{unit:"year"})}return Fe.y(e,t)},Y:function(e,t,n,a){var i=la(e,a),r=i>0?i:1-i;if(t==="YY"){var u=r%100;return z(u,2)}return t==="Yo"?n.ordinalNumber(r,{unit:"year"}):z(r,t.length)},R:function(e,t){var n=ai(e);return z(n,t.length)},u:function(e,t){var n=e.getUTCFullYear();return z(n,t.length)},Q:function(e,t,n){var a=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return z(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){var a=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return z(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){var a=e.getUTCMonth();switch(t){case"M":case"MM":return Fe.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){var a=e.getUTCMonth();switch(t){case"L":return String(a+1);case"LL":return z(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){var i=ii(e,a);return t==="wo"?n.ordinalNumber(i,{unit:"week"}):z(i,t.length)},I:function(e,t,n){var a=ri(e);return t==="Io"?n.ordinalNumber(a,{unit:"week"}):z(a,t.length)},d:function(e,t,n){return t==="do"?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):Fe.d(e,t)},D:function(e,t,n){var a=Cs(e);return t==="Do"?n.ordinalNumber(a,{unit:"dayOfYear"}):z(a,t.length)},E:function(e,t,n){var a=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});case"EEEE":default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){var i=e.getUTCDay(),r=(i-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(r);case"ee":return z(r,2);case"eo":return n.ordinalNumber(r,{unit:"day"});case"eee":return n.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(i,{width:"short",context:"formatting"});case"eeee":default:return n.day(i,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){var i=e.getUTCDay(),r=(i-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(r);case"cc":return z(r,t.length);case"co":return n.ordinalNumber(r,{unit:"day"});case"ccc":return n.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(i,{width:"narrow",context:"standalone"});case"cccccc":return n.day(i,{width:"short",context:"standalone"});case"cccc":default:return n.day(i,{width:"wide",context:"standalone"})}},i:function(e,t,n){var a=e.getUTCDay(),i=a===0?7:a;switch(t){case"i":return String(i);case"ii":return z(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});case"iiii":default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){var a=e.getUTCHours(),i=a/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(i,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},b:function(e,t,n){var a=e.getUTCHours(),i;switch(a===12?i=Je.noon:a===0?i=Je.midnight:i=a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(i,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},B:function(e,t,n){var a=e.getUTCHours(),i;switch(a>=17?i=Je.evening:a>=12?i=Je.afternoon:a>=4?i=Je.morning:i=Je.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(i,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},h:function(e,t,n){if(t==="ho"){var a=e.getUTCHours()%12;return a===0&&(a=12),n.ordinalNumber(a,{unit:"hour"})}return Fe.h(e,t)},H:function(e,t,n){return t==="Ho"?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):Fe.H(e,t)},K:function(e,t,n){var a=e.getUTCHours()%12;return t==="Ko"?n.ordinalNumber(a,{unit:"hour"}):z(a,t.length)},k:function(e,t,n){var a=e.getUTCHours();return a===0&&(a=24),t==="ko"?n.ordinalNumber(a,{unit:"hour"}):z(a,t.length)},m:function(e,t,n){return t==="mo"?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):Fe.m(e,t)},s:function(e,t,n){return t==="so"?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):Fe.s(e,t)},S:function(e,t){return Fe.S(e,t)},X:function(e,t,n,a){var i=a._originalDate||e,r=i.getTimezoneOffset();if(r===0)return"Z";switch(t){case"X":return _a(r);case"XXXX":case"XX":return Ve(r);case"XXXXX":case"XXX":default:return Ve(r,":")}},x:function(e,t,n,a){var i=a._originalDate||e,r=i.getTimezoneOffset();switch(t){case"x":return _a(r);case"xxxx":case"xx":return Ve(r);case"xxxxx":case"xxx":default:return Ve(r,":")}},O:function(e,t,n,a){var i=a._originalDate||e,r=i.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+ba(r,":");case"OOOO":default:return"GMT"+Ve(r,":")}},z:function(e,t,n,a){var i=a._originalDate||e,r=i.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+ba(r,":");case"zzzz":default:return"GMT"+Ve(r,":")}},t:function(e,t,n,a){var i=a._originalDate||e,r=Math.floor(i.getTime()/1e3);return z(r,t.length)},T:function(e,t,n,a){var i=a._originalDate||e,r=i.getTime();return z(r,t.length)}};function ba(s,e){var t=s>0?"-":"+",n=Math.abs(s),a=Math.floor(n/60),i=n%60;if(i===0)return t+String(a);var r=e;return t+String(a)+r+z(i,2)}function _a(s,e){if(s%60===0){var t=s>0?"-":"+";return t+z(Math.abs(s)/60,2)}return Ve(s,e)}function Ve(s,e){var t=e||"",n=s>0?"-":"+",a=Math.abs(s),i=z(Math.floor(a/60),2),r=z(a%60,2);return n+i+t+r}var Ca=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},si=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},Ss=function(e,t){var n=e.match(/(P+)(p+)?/)||[],a=n[1],i=n[2];if(!i)return Ca(e,t);var r;switch(a){case"P":r=t.dateTime({width:"short"});break;case"PP":r=t.dateTime({width:"medium"});break;case"PPP":r=t.dateTime({width:"long"});break;case"PPPP":default:r=t.dateTime({width:"full"});break}return r.replace("{{date}}",Ca(a,t)).replace("{{time}}",si(i,t))},ea={p:si,P:Ss},xs=["D","DD"],Ms=["YY","YYYY"];function oi(s){return xs.indexOf(s)!==-1}function ui(s){return Ms.indexOf(s)!==-1}function Mn(s,e,t){if(s==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(s==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(s==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(s==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(t,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var ks=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Ns=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,As=/^'([^]*?)'?$/,Fs=/''/g,Ys=/[a-zA-Z]/;function X(s,e,t){var n,a,i,r,u,o,l,c,d,f,h,v,w,m,g,T,y,D;F(2,arguments);var _=String(e),I=wt(),x=(n=(a=t==null?void 0:t.locale)!==null&&a!==void 0?a:I.locale)!==null&&n!==void 0?n:Vr,R=ee((i=(r=(u=(o=t==null?void 0:t.firstWeekContainsDate)!==null&&o!==void 0?o:t==null||(l=t.locale)===null||l===void 0||(c=l.options)===null||c===void 0?void 0:c.firstWeekContainsDate)!==null&&u!==void 0?u:I.firstWeekContainsDate)!==null&&r!==void 0?r:(d=I.locale)===null||d===void 0||(f=d.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&i!==void 0?i:1);if(!(R>=1&&R<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var C=ee((h=(v=(w=(m=t==null?void 0:t.weekStartsOn)!==null&&m!==void 0?m:t==null||(g=t.locale)===null||g===void 0||(T=g.options)===null||T===void 0?void 0:T.weekStartsOn)!==null&&w!==void 0?w:I.weekStartsOn)!==null&&v!==void 0?v:(y=I.locale)===null||y===void 0||(D=y.options)===null||D===void 0?void 0:D.weekStartsOn)!==null&&h!==void 0?h:0);if(!(C>=0&&C<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!x.localize)throw new RangeError("locale must contain localize property");if(!x.formatLong)throw new RangeError("locale must contain formatLong property");var E=L(s);if(!Ce(E))throw new RangeError("Invalid time value");var O=ti(E),k=ni(E,O),U={firstWeekContainsDate:R,weekStartsOn:C,locale:x,_originalDate:E},se=_.match(Ns).map(function(G){var Z=G[0];if(Z==="p"||Z==="P"){var ce=ea[Z];return ce(G,x.formatLong)}return G}).join("").match(ks).map(function(G){if(G==="''")return"'";var Z=G[0];if(Z==="'")return Ls(G);var ce=Os[Z];if(ce)return!(t!=null&&t.useAdditionalWeekYearTokens)&&ui(G)&&Mn(G,e,String(s)),!(t!=null&&t.useAdditionalDayOfYearTokens)&&oi(G)&&Mn(G,e,String(s)),ce(k,G,x.localize,U);if(Z.match(Ys))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Z+"`");return G}).join("");return se}function Ls(s){var e=s.match(As);return e?e[1].replace(Fs,"'"):s}function $s(s,e){if(s==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(s[t]=e[t]);return s}function li(s){F(1,arguments);var e=L(s),t=e.getFullYear(),n=e.getMonth(),a=new Date(0);return a.setFullYear(t,n+1,0),a.setHours(0,0,0,0),a.getDate()}function Hs(s){F(1,arguments);var e=L(s),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(0,0,0,0),e}function Us(s,e){F(2,arguments);var t=L(s),n=L(e);return t.getTime()>n.getTime()}function ci(s,e){F(2,arguments);var t=L(s),n=L(e);return t.getTime()s.length)&&(e=s.length);for(var t=0,n=Array(e);t=s.length?{done:!0}:{done:!1,value:s[n++]}},e:function(l){throw l},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,r=!0,u=!1;return{s:function(){t=t.call(s)},n:function(){var l=t.next();return r=l.done,l},e:function(l){u=!0,i=l},f:function(){try{r||t.return==null||t.return()}finally{if(u)throw i}}}}function q(s,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");s.prototype=Object.create(e&&e.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),Object.defineProperty(s,"prototype",{writable:!1}),e&&es(s,e)}function Nn(s){return Nn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Nn(s)}function di(){try{var s=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(di=function(){return!!s})()}function Ws(s,e){if(e&&(ze(e)=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return M(s)}function W(s){var e=di();return function(){var t,n=Nn(s);if(e){var a=Nn(this).constructor;t=Reflect.construct(n,arguments,a)}else t=n.apply(this,arguments);return Ws(this,t)}}function $(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}function js(s,e){if(ze(s)!="object"||!s)return s;var t=s[Symbol.toPrimitive];if(t!==void 0){var n=t.call(s,e);if(ze(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(s)}function fi(s){var e=js(s,"string");return ze(e)=="symbol"?e:e+""}function Vs(s,e){for(var t=0;t0,n=t?e:1-e,a;if(n<=50)a=s||100;else{var i=n+50,r=Math.floor(i/100)*100,u=s>=i%100;a=s+r-(u?100:0)}return t?a:1-a}function gi(s){return s%400===0||s%4===0&&s%100!==0}var Zs=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r0}},{key:"set",value:function(a,i,r){var u=a.getUTCFullYear();if(r.isTwoDigitYear){var o=mi(r.year,u);return a.setUTCFullYear(o,0,1),a.setUTCHours(0,0,0,0),a}var l=!("era"in i)||i.era===1?r.year:1-r.year;return a.setUTCFullYear(l,0,1),a.setUTCHours(0,0,0,0),a}}]),t})(j),Qs=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r0}},{key:"set",value:function(a,i,r,u){var o=la(a,u);if(r.isTwoDigitYear){var l=mi(r.year,o);return a.setUTCFullYear(l,0,u.firstWeekContainsDate),a.setUTCHours(0,0,0,0),Xe(a,u)}var c=!("era"in i)||i.era===1?r.year:1-r.year;return a.setUTCFullYear(c,0,u.firstWeekContainsDate),a.setUTCHours(0,0,0,0),Xe(a,u)}}]),t})(j),Ks=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=4}},{key:"set",value:function(a,i,r){return a.setUTCMonth((r-1)*3,1),a.setUTCHours(0,0,0,0),a}}]),t})(j),to=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=4}},{key:"set",value:function(a,i,r){return a.setUTCMonth((r-1)*3,1),a.setUTCHours(0,0,0,0),a}}]),t})(j),no=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=11}},{key:"set",value:function(a,i,r){return a.setUTCMonth(r,1),a.setUTCHours(0,0,0,0),a}}]),t})(j),ao=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=11}},{key:"set",value:function(a,i,r){return a.setUTCMonth(r,1),a.setUTCHours(0,0,0,0),a}}]),t})(j);function ro(s,e,t){F(2,arguments);var n=L(s),a=ee(e),i=ii(n,t)-a;return n.setUTCDate(n.getUTCDate()-i*7),n}var io=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=53}},{key:"set",value:function(a,i,r,u){return Xe(ro(a,r,u),u)}}]),t})(j);function so(s,e){F(2,arguments);var t=L(s),n=ee(e),a=ri(t)-n;return t.setUTCDate(t.getUTCDate()-a*7),t}var oo=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=53}},{key:"set",value:function(a,i,r){return ot(so(a,r))}}]),t})(j),uo=[31,28,31,30,31,30,31,31,30,31,30,31],lo=[31,29,31,30,31,30,31,31,30,31,30,31],co=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=lo[o]:i>=1&&i<=uo[o]}},{key:"set",value:function(a,i,r){return a.setUTCDate(r),a.setUTCHours(0,0,0,0),a}}]),t})(j),fo=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=366:i>=1&&i<=365}},{key:"set",value:function(a,i,r){return a.setUTCMonth(0,r),a.setUTCHours(0,0,0,0),a}}]),t})(j);function da(s,e,t){var n,a,i,r,u,o,l,c;F(2,arguments);var d=wt(),f=ee((n=(a=(i=(r=t==null?void 0:t.weekStartsOn)!==null&&r!==void 0?r:t==null||(u=t.locale)===null||u===void 0||(o=u.options)===null||o===void 0?void 0:o.weekStartsOn)!==null&&i!==void 0?i:d.weekStartsOn)!==null&&a!==void 0?a:(l=d.locale)===null||l===void 0||(c=l.options)===null||c===void 0?void 0:c.weekStartsOn)!==null&&n!==void 0?n:0);if(!(f>=0&&f<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var h=L(s),v=ee(e),w=h.getUTCDay(),m=v%7,g=(m+7)%7,T=(g=0&&i<=6}},{key:"set",value:function(a,i,r,u){return a=da(a,r,u),a.setUTCHours(0,0,0,0),a}}]),t})(j),po=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=6}},{key:"set",value:function(a,i,r,u){return a=da(a,r,u),a.setUTCHours(0,0,0,0),a}}]),t})(j),mo=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=6}},{key:"set",value:function(a,i,r,u){return a=da(a,r,u),a.setUTCHours(0,0,0,0),a}}]),t})(j);function go(s,e){F(2,arguments);var t=ee(e);t%7===0&&(t=t-7);var n=1,a=L(s),i=a.getUTCDay(),r=t%7,u=(r+7)%7,o=(u=1&&i<=7}},{key:"set",value:function(a,i,r){return a=go(a,r),a.setUTCHours(0,0,0,0),a}}]),t})(j),yo=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=12}},{key:"set",value:function(a,i,r){var u=a.getUTCHours()>=12;return u&&r<12?a.setUTCHours(r+12,0,0,0):!u&&r===12?a.setUTCHours(0,0,0,0):a.setUTCHours(r,0,0,0),a}}]),t})(j),bo=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=23}},{key:"set",value:function(a,i,r){return a.setUTCHours(r,0,0,0),a}}]),t})(j),_o=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=11}},{key:"set",value:function(a,i,r){var u=a.getUTCHours()>=12;return u&&r<12?a.setUTCHours(r+12,0,0,0):a.setUTCHours(r,0,0,0),a}}]),t})(j),Co=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&i<=24}},{key:"set",value:function(a,i,r){var u=r<=24?r%24:r;return a.setUTCHours(u,0,0,0),a}}]),t})(j),Io=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=59}},{key:"set",value:function(a,i,r){return a.setUTCMinutes(r,0,0),a}}]),t})(j),Ro=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=0&&i<=59}},{key:"set",value:function(a,i,r){return a.setUTCSeconds(r,0),a}}]),t})(j),Po=(function(s){q(t,s);var e=W(t);function t(){var n;$(this,t);for(var a=arguments.length,i=new Array(a),r=0;r=1&&E<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var O=ee((v=(w=(m=(g=n==null?void 0:n.weekStartsOn)!==null&&g!==void 0?g:n==null||(T=n.locale)===null||T===void 0||(y=T.options)===null||y===void 0?void 0:y.weekStartsOn)!==null&&m!==void 0?m:R.weekStartsOn)!==null&&w!==void 0?w:(D=R.locale)===null||D===void 0||(_=D.options)===null||_===void 0?void 0:_.weekStartsOn)!==null&&v!==void 0?v:0);if(!(O>=0&&O<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(x==="")return I===""?L(t):new Date(NaN);var k={firstWeekContainsDate:E,weekStartsOn:O,locale:C},U=[new zs],se=x.match(No).map(function(te){var V=te[0];if(V in ea){var fe=ea[V];return fe(te,C.formatLong)}return te}).join("").match(ko),G=[],Z=Ra(se),ce;try{var me=function(){var V=ce.value;!(n!=null&&n.useAdditionalWeekYearTokens)&&ui(V)&&Mn(V,x,s),!(n!=null&&n.useAdditionalDayOfYearTokens)&&oi(V)&&Mn(V,x,s);var fe=V[0],Me=Mo[fe];if(Me){var Ct=Me.incompatibleTokens;if(Array.isArray(Ct)){var It=G.find(function(Rt){return Ct.includes(Rt.token)||Rt.token===fe});if(It)throw new RangeError("The format string mustn't contain `".concat(It.fullToken,"` and `").concat(V,"` at the same time"))}else if(Me.incompatibleTokens==="*"&&G.length>0)throw new RangeError("The format string mustn't contain `".concat(V,"` and any other token at the same time"));G.push({token:fe,fullToken:V});var ct=Me.run(I,V,C.match,k);if(!ct)return{v:new Date(NaN)};U.push(ct.setter),I=ct.rest}else{if(fe.match(Lo))throw new RangeError("Format string contains an unescaped latin alphabet character `"+fe+"`");if(V==="''"?V="'":fe==="'"&&(V=Ho(V)),I.indexOf(V)===0)I=I.slice(V.length);else return{v:new Date(NaN)}}};for(Z.s();!(ce=Z.n()).done;){var he=me();if(ze(he)==="object")return he.v}}catch(te){Z.e(te)}finally{Z.f()}if(I.length>0&&Yo.test(I))return new Date(NaN);var qe=U.map(function(te){return te.priority}).sort(function(te,V){return V-te}).filter(function(te,V,fe){return fe.indexOf(te)===V}).map(function(te){return U.filter(function(V){return V.priority===te}).sort(function(V,fe){return fe.subPriority-V.subPriority})}).map(function(te){return te[0]}),Ie=L(t);if(isNaN(Ie.getTime()))return new Date(NaN);var ge=ni(Ie,ti(Ie)),xe={},Re=Ra(qe),Ke;try{for(Re.s();!(Ke=Re.n()).done;){var _t=Ke.value;if(!_t.validate(ge,k))return new Date(NaN);var Pe=_t.set(ge,xe,k);Array.isArray(Pe)?(ge=Pe[0],$s(xe,Pe[1])):ge=Pe}}catch(te){Re.e(te)}finally{Re.f()}return ge}function Ho(s){return s.match(Ao)[1].replace(Fo,"'")}function Pa(s){F(1,arguments);var e=L(s);return e.setMilliseconds(0),e}function Ea(s,e){F(2,arguments);var t=Pa(s),n=Pa(e);return t.getTime()===n.getTime()}function Uo(s,e){F(2,arguments);var t=L(s).getTime(),n=L(e.start).getTime(),a=L(e.end).getTime();if(!(n<=a))throw new RangeError("Invalid interval");return t>=n&&t<=a}function be(s,e){var t;F(1,arguments);var n=ee((t=void 0)!==null&&t!==void 0?t:2);if(n!==2&&n!==1&&n!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if(!(typeof s=="string"||Object.prototype.toString.call(s)==="[object String]"))return new Date(NaN);var a=Vo(s),i;if(a.date){var r=Bo(a.date,n);i=Go(r.restDateString,r.year)}if(!i||isNaN(i.getTime()))return new Date(NaN);var u=i.getTime(),o=0,l;if(a.time&&(o=zo(a.time),isNaN(o)))return new Date(NaN);if(a.timezone){if(l=Xo(a.timezone),isNaN(l))return new Date(NaN)}else{var c=new Date(u+o),d=new Date(0);return d.setFullYear(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()),d.setHours(c.getUTCHours(),c.getUTCMinutes(),c.getUTCSeconds(),c.getUTCMilliseconds()),d}return new Date(u+o+l)}var Ot={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},qo=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,Wo=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,jo=/^([+-])(\d{2})(?::?(\d{2}))?$/;function Vo(s){var e={},t=s.split(Ot.dateTimeDelimiter),n;if(t.length>2)return e;if(/:/.test(t[0])?n=t[0]:(e.date=t[0],n=t[1],Ot.timeZoneDelimiter.test(e.date)&&(e.date=s.split(Ot.timeZoneDelimiter)[0],n=s.substr(e.date.length,s.length))),n){var a=Ot.timezone.exec(n);a?(e.time=n.replace(a[1],""),e.timezone=a[1]):e.time=n}return e}function Bo(s,e){var t=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\d{2}|[+-]\\d{"+(2+e)+"})$)"),n=s.match(t);if(!n)return{year:NaN,restDateString:""};var a=n[1]?parseInt(n[1]):null,i=n[2]?parseInt(n[2]):null;return{year:i===null?a:i*100,restDateString:s.slice((n[1]||n[2]).length)}}function Go(s,e){if(e===null)return new Date(NaN);var t=s.match(qo);if(!t)return new Date(NaN);var n=!!t[4],a=dt(t[1]),i=dt(t[2])-1,r=dt(t[3]),u=dt(t[4]),o=dt(t[5])-1;if(n)return eu(e,u,o)?Zo(e,u,o):new Date(NaN);var l=new Date(0);return!Ko(e,i,r)||!Jo(e,a)?new Date(NaN):(l.setUTCFullYear(e,i,Math.max(a,r)),l)}function dt(s){return s?parseInt(s):1}function zo(s){var e=s.match(Wo);if(!e)return NaN;var t=qn(e[1]),n=qn(e[2]),a=qn(e[3]);return tu(t,n,a)?t*oa+n*sa+a*1e3:NaN}function qn(s){return s&&parseFloat(s.replace(",","."))||0}function Xo(s){if(s==="Z")return 0;var e=s.match(jo);if(!e)return 0;var t=e[1]==="+"?-1:1,n=parseInt(e[2]),a=e[3]&&parseInt(e[3])||0;return nu(n,a)?t*(n*oa+a*sa):NaN}function Zo(s,e,t){var n=new Date(0);n.setUTCFullYear(s,0,4);var a=n.getUTCDay()||7,i=(e-1)*7+t+1-a;return n.setUTCDate(n.getUTCDate()+i),n}var Qo=[31,null,31,30,31,30,31,31,30,31,30,31];function vi(s){return s%400===0||s%4===0&&s%100!==0}function Ko(s,e,t){return e>=0&&e<=11&&t>=1&&t<=(Qo[e]||(vi(s)?29:28))}function Jo(s,e){return e>=1&&e<=(vi(s)?366:365)}function eu(s,e,t){return e>=1&&e<=53&&t>=0&&t<=6}function tu(s,e,t){return s===24?e===0&&t===0:t>=0&&t<60&&e>=0&&e<60&&s>=0&&s<25}function nu(s,e){return e>=0&&e<=59}function Ge(s,e){F(2,arguments);var t=L(s),n=ee(e),a=t.getFullYear(),i=t.getDate(),r=new Date(0);r.setFullYear(a,n,15),r.setHours(0,0,0,0);var u=li(r);return t.setMonth(n,Math.min(i,u)),t}function yi(s,e){if(F(2,arguments),ze(e)!=="object"||e===null)throw new RangeError("values parameter must be an object");var t=L(s);return isNaN(t.getTime())?new Date(NaN):(e.year!=null&&t.setFullYear(e.year),e.month!=null&&(t=Ge(t,e.month)),e.date!=null&&t.setDate(ee(e.date)),e.hours!=null&&t.setHours(ee(e.hours)),e.minutes!=null&&t.setMinutes(ee(e.minutes)),e.seconds!=null&&t.setSeconds(ee(e.seconds)),e.milliseconds!=null&&t.setMilliseconds(ee(e.milliseconds)),t)}function ta(s,e){F(2,arguments);var t=L(s),n=ee(e);return isNaN(t.getTime())?new Date(NaN):(t.setFullYear(n),t)}function au(s,e){F(2,arguments);var t=ee(e);return Le(s,-t)}function ru(s,e){F(2,arguments);var t=ee(e);return xn(s,-t)}function iu(s){return J.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4 20V8h16v12H4ZM2 4c0-1.1.9-2 2-2h16a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4Zm4 6.5c0-.28.22-.5.5-.5h2c.28 0 .5.22.5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2Zm.5 4.5a.5.5 0 0 0-.5.5v2c0 .28.22.5.5.5h2a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-2Zm4-4.5c0-.28.22-.5.5-.5h2c.28 0 .5.22.5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2ZM11 15a.5.5 0 0 0-.5.5v2c0 .28.22.5.5.5h2a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-2Zm4-4.5c0-.28.22-.5.5-.5h2c.28 0 .5.22.5.5v2a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-2Zm.5 4.5a.5.5 0 0 0-.5.5v2c0 .28.22.5.5.5h2a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-2Z",fill:"currentColor"}))}const Ti=Dt(iu,"calendar");function su(s){return J.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),J.createElement("path",{d:"M2 5v14a3 3 0 0 0 3 3h7.1a7.02 7.02 0 0 1-1.43-2H6a2 2 0 0 1-2-2V8a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2.67c.75.36 1.43.85 2 1.43V5a3 3 0 0 0-3-3H5a3 3 0 0 0-3 3Z",fill:"currentColor"}),J.createElement("path",{d:"M16 10h1c-.54 0-1.06.06-1.57.18A1 1 0 0 1 16 10Z",fill:"currentColor"}),J.createElement("path",{d:"M13.5 10.94a1 1 0 0 0-1-.94h-1a1 1 0 0 0-1 1v1a1 1 0 0 0 .77.97 7.03 7.03 0 0 1 2.23-2.03Z",fill:"currentColor"}),J.createElement("path",{d:"M7 10a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H7Z",fill:"currentColor"}),J.createElement("path",{d:"M6 16a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-1Z",fill:"currentColor"}),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M22 17a5 5 0 1 1-10 0 5 5 0 0 1 10 0Zm-4-2a1 1 0 1 0-2 0v2c0 .27.1.52.3.7l1.5 1.5a1 1 0 0 0 1.4-1.4L18 16.58V15Z",fill:"currentColor"}))}const ou=Dt(su,"calendar_clock");function uu(s){return J.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1.5-16.5v4.88l3.56 3.56a1.5 1.5 0 0 1-2.12 2.12l-4-4A1.5 1.5 0 0 1 10.5 12V6.5a1.5 1.5 0 0 1 3 0Z",fill:"currentColor"}))}const lu=Dt(uu,"clock");function cu(s){return J.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.62 4.4c.5.53.5 1.38 0 1.91L7.14 12l5.48 5.69c.5.53.5 1.38 0 1.91-.51.53-1.33.53-1.84 0l-6.4-6.64a1.4 1.4 0 0 1 0-1.92l6.4-6.64c.5-.53 1.33-.53 1.84 0Z",fill:"currentColor"}),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M19.62 4.4c.5.53.5 1.38 0 1.91L14.14 12l5.48 5.69c.5.53.5 1.38 0 1.91-.51.53-1.34.53-1.84 0l-6.4-6.64a1.4 1.4 0 0 1 0-1.92l6.4-6.64c.5-.53 1.33-.53 1.84 0Z",fill:"currentColor"}))}const du=Dt(cu,"double_chevron_left");function fu(s){return J.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.38 4.4c.51-.53 1.34-.53 1.84 0l6.4 6.64c.5.53.5 1.39 0 1.92l-6.4 6.64c-.5.53-1.33.53-1.84 0a1.4 1.4 0 0 1 0-1.91L9.86 12 4.38 6.31a1.4 1.4 0 0 1 0-1.91Z",fill:"currentColor"}),J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.38 4.4c.51-.53 1.33-.53 1.84 0l6.4 6.64c.5.53.5 1.39 0 1.92l-6.4 6.64c-.5.53-1.33.53-1.84 0a1.4 1.4 0 0 1 0-1.91L16.86 12l-5.48-5.69a1.4 1.4 0 0 1 0-1.91Z",fill:"currentColor"}))}const hu=Dt(fu,"double_chevron_right"),pu={DAY_TODAY:`${B}-datepicker-day-today`,DAY_IN_RANGE:`${B}-datepicker-day-inrange`,DAY_HOVER:`${B}-datepicker-day-inhover`,DAY_SELECTED:`${B}-datepicker-day-selected`,DAY_SELECTED_START:`${B}-datepicker-day-selected-start`,DAY_SELECTED_END:`${B}-datepicker-day-selected-end`,DAY_DISABLED:`${B}-datepicker-day-disabled`,DAY_HOVER_DAY:`${B}-datepicker-day-hoverday`,DAY_HOVER_DAY_OFFSET:`${B}-datepicker-day-hoverday-offset`,DAY_IN_OFFSET_RANGE:`${B}-datepicker-day-inoffsetrange`,DAY_SELECTED_RANGE_HOVER:`${B}-datepicker-day-selectedrange-hover`,DAY_OFFSET_RANGE_START:`${B}-datepicker-day-offsetrange-start`,DAY_OFFSET_RANGE_END:`${B}-datepicker-day-offsetrange-end`,DAY_SELECTED_START_AFTER_HOVER:`${B}-datepicker-day-selected-start-afterhover`,DAY_SELECTED_END_BEFORE_HOVER:`${B}-datepicker-day-selected-end-beforehover`,DAY_HOVER_DAY_BEFORE_RANGE:`${B}-datepicker-day-hoverday-beforerange`,DAY_HOVER_DAY_AFTER_RANGE:`${B}-datepicker-day-hoverday-afterrange`,DAY_HOVER_DAY_IN_RANGE:`${B}-datepicker-day-hoverday-inrange`,DAY_HOVER_DAY_AROUND_SINGLE_SELECTED:`${B}-datepicker-day-hoverday-around-singleselected`},N=Object.assign({PREFIX:`${B}-datepicker`,NAVIGATION:`${B}-datepicker-navigation`,PANEL_YAM:`${B}-datepicker-panel-yam`,MONTH:`${B}-datepicker-month`,WEEKDAY:`${B}-datepicker-weekday`,WEEKS:`${B}-datepicker-weeks`,WEEK:`${B}-datepicker-week`,DAY:`${B}-datepicker-day`},pu),mu={FORMAT_FULL_DATE:"yyyy-MM-dd",FORMAT_TIME_PICKER:"HH:mm:ss",FORMAT_DATE_TIME:"yyyy-MM-dd HH:mm:ss",FORMAT_YEAR_MONTH:"yyyy-MM"},P=Object.assign({DEFAULT_SEPARATOR_MULTIPLE:",",DEFAULT_SEPARATOR_RANGE:" ~ ",SIZE_SET:["small","default","large"],TYPE_SET:["date","dateRange","year","month","monthRange","dateTime","dateTimeRange"],PRESET_POSITION_SET:["left","right","top","bottom"],DENSITY_SET:["default","compact"],PANEL_TYPE_LEFT:"left",PANEL_TYPE_RIGHT:"right",STATUS:ts,POSITION_SET:Gr.POSITION_SET,POSITION_INLINE_INPUT:"leftTopOver"},mu),ut={WEEK_START_ON:0,WEEK_HEIGHT:36,SPACING:Br.SPACING,SPACING_INSET_INPUT:1};var Wn,Oa;function gu(){if(Oa)return Wn;Oa=1;var s=Yi(),e=Li(),t="[object Date]";function n(a){return e(a)&&s(a)==t}return Wn=n,Wn}var jn,Sa;function vu(){if(Sa)return jn;Sa=1;var s=gu(),e=$i(),t=Hi(),n=t&&t.isDate,a=n?e(n):s;return jn=a,jn}var yu=vu();const xa=ia(yu);var Tu=Ui();const Tt=ia(Tu);function Ne(s){return typeof s=="string"}function Ma(s,e){const t=Ne(s)?be(s):s,n=Ne(e)?be(e):e;return Us(t,n)}function it(s,e){const t=Ne(s)?be(s):s,n=Ne(e)?be(e):e;return ci(t,n)}function et(s,e){let{start:t,end:n}=e;const a=Ne(s)?be(s):s,i=Ne(t)?be(t):t,r=Ne(n)?be(n):n;return ci(i,r)&&Uo(a,{start:i,end:r})&&!kn(a,i)&&!kn(a,r)}function Ye(s,e){const t=Ne(s)?be(s):s,n=Ne(e)?be(e):e;return ua(t,n)}function _e(s){return s&&Object.prototype.toString.call(s)==="[object Date]"&&!isNaN(s)}function wu(s){return typeof s=="number"||Object.prototype.toString.call(s)==="[object Number]"}function na(s){return wu(s)&&_e(new Date(s))}const wi={date:P.FORMAT_FULL_DATE,dateTime:P.FORMAT_DATE_TIME,dateRange:P.FORMAT_FULL_DATE,dateTimeRange:P.FORMAT_DATE_TIME,month:P.FORMAT_YEAR_MONTH,monthRange:P.FORMAT_YEAR_MONTH},Du=s=>wi;function $e(s){return s&&wi[s]}const bu=(s,e)=>{const t=new Date().getFullYear();let n=typeof s=="number"?s:t-100,a=typeof e=="number"?e:t+100;return an+r)},St=(s,e)=>{if(!e)return"";const t=new Date(e),n=st(s)?s(t):t;return X(new Date(n),P.FORMAT_FULL_DATE)};function ka(s,e){const t=new Date().getFullYear(),n=new Date().getMonth(),a=e.right||n+2,i=s.right||(a<=12?t:t+1);return{year:{left:s.left||t,right:i},month:{left:e.left||n+1,right:a<=12?a:1}}}var xt={exports:{}},Mt={exports:{}},Vn={exports:{}},Na;function re(){return Na||(Na=1,(function(s){function e(t){return t&&t.__esModule?t:{default:t}}s.exports=e,s.exports.__esModule=!0,s.exports.default=s.exports})(Vn)),Vn.exports}var kt={exports:{}},Nt={exports:{}},Bn={exports:{}},Aa;function Di(){return Aa||(Aa=1,(function(s){function e(t){"@babel/helpers - typeof";return s.exports=e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},s.exports.__esModule=!0,s.exports.default=s.exports,e(t)}s.exports=e,s.exports.__esModule=!0,s.exports.default=s.exports})(Bn)),Bn.exports}var At={exports:{}},Fa;function pe(){return Fa||(Fa=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n,a){if(a.length1?"s":"")+" required, but only "+a.length+" present")}s.exports=e.default})(At,At.exports)),At.exports}var Ya;function _u(){return Ya||(Ya=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=i;var n=t(Di()),a=t(pe());function i(r){return(0,a.default)(1,arguments),r instanceof Date||(0,n.default)(r)==="object"&&Object.prototype.toString.call(r)==="[object Date]"}s.exports=e.default})(Nt,Nt.exports)),Nt.exports}var Ft={exports:{}},La;function Se(){return La||(La=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=i;var n=t(Di()),a=t(pe());function i(r){(0,a.default)(1,arguments);var u=Object.prototype.toString.call(r);return r instanceof Date||(0,n.default)(r)==="object"&&u==="[object Date]"?new Date(r.getTime()):typeof r=="number"||u==="[object Number]"?new Date(r):((typeof r=="string"||u==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}s.exports=e.default})(Ft,Ft.exports)),Ft.exports}var $a;function Cu(){return $a||($a=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(_u()),a=t(Se()),i=t(pe());function r(u){if((0,i.default)(1,arguments),!(0,n.default)(u)&&typeof u!="number")return!1;var o=(0,a.default)(u);return!isNaN(Number(o))}s.exports=e.default})(kt,kt.exports)),kt.exports}var Yt={exports:{}},Lt={exports:{}},$t={exports:{}},Ha;function Qe(){return Ha||(Ha=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n){if(n===null||n===!0||n===!1)return NaN;var a=Number(n);return isNaN(a)?a:a<0?Math.ceil(a):Math.floor(a)}s.exports=e.default})($t,$t.exports)),$t.exports}var Ua;function Iu(){return Ua||(Ua=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Qe()),a=t(Se()),i=t(pe());function r(u,o){(0,i.default)(2,arguments);var l=(0,a.default)(u).getTime(),c=(0,n.default)(o);return new Date(l+c)}s.exports=e.default})(Lt,Lt.exports)),Lt.exports}var qa;function Ru(){return qa||(qa=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Iu()),a=t(pe()),i=t(Qe());function r(u,o){(0,a.default)(2,arguments);var l=(0,i.default)(o);return(0,n.default)(u,-l)}s.exports=e.default})(Yt,Yt.exports)),Yt.exports}var Ht={exports:{}},Ut={exports:{}},Wa;function Pu(){return Wa||(Wa=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Se()),a=t(pe()),i=864e5;function r(u){(0,a.default)(1,arguments);var o=(0,n.default)(u),l=o.getTime();o.setUTCMonth(0,1),o.setUTCHours(0,0,0,0);var c=o.getTime(),d=l-c;return Math.floor(d/i)+1}s.exports=e.default})(Ut,Ut.exports)),Ut.exports}var qt={exports:{}},Wt={exports:{}},ja;function fa(){return ja||(ja=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=i;var n=t(Se()),a=t(pe());function i(r){(0,a.default)(1,arguments);var u=1,o=(0,n.default)(r),l=o.getUTCDay(),c=(l=d.getTime()?l+1:o.getTime()>=h.getTime()?l:l-1}s.exports=e.default})(Vt,Vt.exports)),Vt.exports}var Ba;function Eu(){return Ba||(Ba=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(bi()),a=t(fa()),i=t(pe());function r(u){(0,i.default)(1,arguments);var o=(0,n.default)(u),l=new Date(0);l.setUTCFullYear(o,0,4),l.setUTCHours(0,0,0,0);var c=(0,a.default)(l);return c}s.exports=e.default})(jt,jt.exports)),jt.exports}var Ga;function Ou(){return Ga||(Ga=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var n=t(Se()),a=t(fa()),i=t(Eu()),r=t(pe()),u=6048e5;function o(l){(0,r.default)(1,arguments);var c=(0,n.default)(l),d=(0,a.default)(c).getTime()-(0,i.default)(c).getTime();return Math.round(d/u)+1}s.exports=e.default})(qt,qt.exports)),qt.exports}var Bt={exports:{}},Gt={exports:{}},ft={},za;function Yn(){if(za)return ft;za=1,Object.defineProperty(ft,"__esModule",{value:!0}),ft.getDefaultOptions=e,ft.setDefaultOptions=t;var s={};function e(){return s}function t(n){s=n}return ft}var Xa;function ha(){return Xa||(Xa=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=u;var n=t(Se()),a=t(pe()),i=t(Qe()),r=Yn();function u(o,l){var c,d,f,h,v,w,m,g;(0,a.default)(1,arguments);var T=(0,r.getDefaultOptions)(),y=(0,i.default)((c=(d=(f=(h=l==null?void 0:l.weekStartsOn)!==null&&h!==void 0?h:l==null||(v=l.locale)===null||v===void 0||(w=v.options)===null||w===void 0?void 0:w.weekStartsOn)!==null&&f!==void 0?f:T.weekStartsOn)!==null&&d!==void 0?d:(m=T.locale)===null||m===void 0||(g=m.options)===null||g===void 0?void 0:g.weekStartsOn)!==null&&c!==void 0?c:0);if(!(y>=0&&y<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var D=(0,n.default)(o),_=D.getUTCDay(),I=(_=1&&I<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var x=new Date(0);x.setUTCFullYear(D+1,0,I),x.setUTCHours(0,0,0,0);var R=(0,i.default)(x,c),C=new Date(0);C.setUTCFullYear(D,0,I),C.setUTCHours(0,0,0,0);var E=(0,i.default)(C,c);return y.getTime()>=R.getTime()?D+1:y.getTime()>=E.getTime()?D:D-1}s.exports=e.default})(Xt,Xt.exports)),Xt.exports}var Qa;function Su(){return Qa||(Qa=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var n=t(_i()),a=t(pe()),i=t(ha()),r=t(Qe()),u=Yn();function o(l,c){var d,f,h,v,w,m,g,T;(0,a.default)(1,arguments);var y=(0,u.getDefaultOptions)(),D=(0,r.default)((d=(f=(h=(v=c==null?void 0:c.firstWeekContainsDate)!==null&&v!==void 0?v:c==null||(w=c.locale)===null||w===void 0||(m=w.options)===null||m===void 0?void 0:m.firstWeekContainsDate)!==null&&h!==void 0?h:y.firstWeekContainsDate)!==null&&f!==void 0?f:(g=y.locale)===null||g===void 0||(T=g.options)===null||T===void 0?void 0:T.firstWeekContainsDate)!==null&&d!==void 0?d:1),_=(0,n.default)(l,c),I=new Date(0);I.setUTCFullYear(_,0,D),I.setUTCHours(0,0,0,0);var x=(0,i.default)(I,c);return x}s.exports=e.default})(zt,zt.exports)),zt.exports}var Ka;function xu(){return Ka||(Ka=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var n=t(Se()),a=t(ha()),i=t(Su()),r=t(pe()),u=6048e5;function o(l,c){(0,r.default)(1,arguments);var d=(0,n.default)(l),f=(0,a.default)(d,c).getTime()-(0,i.default)(d,c).getTime();return Math.round(f/u)+1}s.exports=e.default})(Bt,Bt.exports)),Bt.exports}var Zt={exports:{}},Ja;function Ci(){return Ja||(Ja=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n,a){for(var i=n<0?"-":"",r=Math.abs(n).toString();r.length0?l:1-l;return(0,n.default)(o==="yy"?c%100:c,o.length)},M:function(u,o){var l=u.getUTCMonth();return o==="M"?String(l+1):(0,n.default)(l+1,2)},d:function(u,o){return(0,n.default)(u.getUTCDate(),o.length)},a:function(u,o){var l=u.getUTCHours()/12>=1?"pm":"am";switch(o){case"a":case"aa":return l.toUpperCase();case"aaa":return l;case"aaaaa":return l[0];case"aaaa":default:return l==="am"?"a.m.":"p.m."}},h:function(u,o){return(0,n.default)(u.getUTCHours()%12||12,o.length)},H:function(u,o){return(0,n.default)(u.getUTCHours(),o.length)},m:function(u,o){return(0,n.default)(u.getUTCMinutes(),o.length)},s:function(u,o){return(0,n.default)(u.getUTCSeconds(),o.length)},S:function(u,o){var l=o.length,c=u.getUTCMilliseconds(),d=Math.floor(c*Math.pow(10,l-3));return(0,n.default)(d,o.length)}},i=a;e.default=i,s.exports=e.default})(Qt,Qt.exports)),Qt.exports}var tr;function ku(){return tr||(tr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(Pu()),a=t(Ou()),i=t(bi()),r=t(xu()),u=t(_i()),o=t(Ci()),l=t(Mu()),c={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},d={G:function(g,T,y){var D=g.getUTCFullYear()>0?1:0;switch(T){case"G":case"GG":case"GGG":return y.era(D,{width:"abbreviated"});case"GGGGG":return y.era(D,{width:"narrow"});case"GGGG":default:return y.era(D,{width:"wide"})}},y:function(g,T,y){if(T==="yo"){var D=g.getUTCFullYear(),_=D>0?D:1-D;return y.ordinalNumber(_,{unit:"year"})}return l.default.y(g,T)},Y:function(g,T,y,D){var _=(0,u.default)(g,D),I=_>0?_:1-_;if(T==="YY"){var x=I%100;return(0,o.default)(x,2)}return T==="Yo"?y.ordinalNumber(I,{unit:"year"}):(0,o.default)(I,T.length)},R:function(g,T){var y=(0,i.default)(g);return(0,o.default)(y,T.length)},u:function(g,T){var y=g.getUTCFullYear();return(0,o.default)(y,T.length)},Q:function(g,T,y){var D=Math.ceil((g.getUTCMonth()+1)/3);switch(T){case"Q":return String(D);case"QQ":return(0,o.default)(D,2);case"Qo":return y.ordinalNumber(D,{unit:"quarter"});case"QQQ":return y.quarter(D,{width:"abbreviated",context:"formatting"});case"QQQQQ":return y.quarter(D,{width:"narrow",context:"formatting"});case"QQQQ":default:return y.quarter(D,{width:"wide",context:"formatting"})}},q:function(g,T,y){var D=Math.ceil((g.getUTCMonth()+1)/3);switch(T){case"q":return String(D);case"qq":return(0,o.default)(D,2);case"qo":return y.ordinalNumber(D,{unit:"quarter"});case"qqq":return y.quarter(D,{width:"abbreviated",context:"standalone"});case"qqqqq":return y.quarter(D,{width:"narrow",context:"standalone"});case"qqqq":default:return y.quarter(D,{width:"wide",context:"standalone"})}},M:function(g,T,y){var D=g.getUTCMonth();switch(T){case"M":case"MM":return l.default.M(g,T);case"Mo":return y.ordinalNumber(D+1,{unit:"month"});case"MMM":return y.month(D,{width:"abbreviated",context:"formatting"});case"MMMMM":return y.month(D,{width:"narrow",context:"formatting"});case"MMMM":default:return y.month(D,{width:"wide",context:"formatting"})}},L:function(g,T,y){var D=g.getUTCMonth();switch(T){case"L":return String(D+1);case"LL":return(0,o.default)(D+1,2);case"Lo":return y.ordinalNumber(D+1,{unit:"month"});case"LLL":return y.month(D,{width:"abbreviated",context:"standalone"});case"LLLLL":return y.month(D,{width:"narrow",context:"standalone"});case"LLLL":default:return y.month(D,{width:"wide",context:"standalone"})}},w:function(g,T,y,D){var _=(0,r.default)(g,D);return T==="wo"?y.ordinalNumber(_,{unit:"week"}):(0,o.default)(_,T.length)},I:function(g,T,y){var D=(0,a.default)(g);return T==="Io"?y.ordinalNumber(D,{unit:"week"}):(0,o.default)(D,T.length)},d:function(g,T,y){return T==="do"?y.ordinalNumber(g.getUTCDate(),{unit:"date"}):l.default.d(g,T)},D:function(g,T,y){var D=(0,n.default)(g);return T==="Do"?y.ordinalNumber(D,{unit:"dayOfYear"}):(0,o.default)(D,T.length)},E:function(g,T,y){var D=g.getUTCDay();switch(T){case"E":case"EE":case"EEE":return y.day(D,{width:"abbreviated",context:"formatting"});case"EEEEE":return y.day(D,{width:"narrow",context:"formatting"});case"EEEEEE":return y.day(D,{width:"short",context:"formatting"});case"EEEE":default:return y.day(D,{width:"wide",context:"formatting"})}},e:function(g,T,y,D){var _=g.getUTCDay(),I=(_-D.weekStartsOn+8)%7||7;switch(T){case"e":return String(I);case"ee":return(0,o.default)(I,2);case"eo":return y.ordinalNumber(I,{unit:"day"});case"eee":return y.day(_,{width:"abbreviated",context:"formatting"});case"eeeee":return y.day(_,{width:"narrow",context:"formatting"});case"eeeeee":return y.day(_,{width:"short",context:"formatting"});case"eeee":default:return y.day(_,{width:"wide",context:"formatting"})}},c:function(g,T,y,D){var _=g.getUTCDay(),I=(_-D.weekStartsOn+8)%7||7;switch(T){case"c":return String(I);case"cc":return(0,o.default)(I,T.length);case"co":return y.ordinalNumber(I,{unit:"day"});case"ccc":return y.day(_,{width:"abbreviated",context:"standalone"});case"ccccc":return y.day(_,{width:"narrow",context:"standalone"});case"cccccc":return y.day(_,{width:"short",context:"standalone"});case"cccc":default:return y.day(_,{width:"wide",context:"standalone"})}},i:function(g,T,y){var D=g.getUTCDay(),_=D===0?7:D;switch(T){case"i":return String(_);case"ii":return(0,o.default)(_,T.length);case"io":return y.ordinalNumber(_,{unit:"day"});case"iii":return y.day(D,{width:"abbreviated",context:"formatting"});case"iiiii":return y.day(D,{width:"narrow",context:"formatting"});case"iiiiii":return y.day(D,{width:"short",context:"formatting"});case"iiii":default:return y.day(D,{width:"wide",context:"formatting"})}},a:function(g,T,y){var D=g.getUTCHours(),_=D/12>=1?"pm":"am";switch(T){case"a":case"aa":return y.dayPeriod(_,{width:"abbreviated",context:"formatting"});case"aaa":return y.dayPeriod(_,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return y.dayPeriod(_,{width:"narrow",context:"formatting"});case"aaaa":default:return y.dayPeriod(_,{width:"wide",context:"formatting"})}},b:function(g,T,y){var D=g.getUTCHours(),_;switch(D===12?_=c.noon:D===0?_=c.midnight:_=D/12>=1?"pm":"am",T){case"b":case"bb":return y.dayPeriod(_,{width:"abbreviated",context:"formatting"});case"bbb":return y.dayPeriod(_,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return y.dayPeriod(_,{width:"narrow",context:"formatting"});case"bbbb":default:return y.dayPeriod(_,{width:"wide",context:"formatting"})}},B:function(g,T,y){var D=g.getUTCHours(),_;switch(D>=17?_=c.evening:D>=12?_=c.afternoon:D>=4?_=c.morning:_=c.night,T){case"B":case"BB":case"BBB":return y.dayPeriod(_,{width:"abbreviated",context:"formatting"});case"BBBBB":return y.dayPeriod(_,{width:"narrow",context:"formatting"});case"BBBB":default:return y.dayPeriod(_,{width:"wide",context:"formatting"})}},h:function(g,T,y){if(T==="ho"){var D=g.getUTCHours()%12;return D===0&&(D=12),y.ordinalNumber(D,{unit:"hour"})}return l.default.h(g,T)},H:function(g,T,y){return T==="Ho"?y.ordinalNumber(g.getUTCHours(),{unit:"hour"}):l.default.H(g,T)},K:function(g,T,y){var D=g.getUTCHours()%12;return T==="Ko"?y.ordinalNumber(D,{unit:"hour"}):(0,o.default)(D,T.length)},k:function(g,T,y){var D=g.getUTCHours();return D===0&&(D=24),T==="ko"?y.ordinalNumber(D,{unit:"hour"}):(0,o.default)(D,T.length)},m:function(g,T,y){return T==="mo"?y.ordinalNumber(g.getUTCMinutes(),{unit:"minute"}):l.default.m(g,T)},s:function(g,T,y){return T==="so"?y.ordinalNumber(g.getUTCSeconds(),{unit:"second"}):l.default.s(g,T)},S:function(g,T){return l.default.S(g,T)},X:function(g,T,y,D){var _=D._originalDate||g,I=_.getTimezoneOffset();if(I===0)return"Z";switch(T){case"X":return h(I);case"XXXX":case"XX":return v(I);case"XXXXX":case"XXX":default:return v(I,":")}},x:function(g,T,y,D){var _=D._originalDate||g,I=_.getTimezoneOffset();switch(T){case"x":return h(I);case"xxxx":case"xx":return v(I);case"xxxxx":case"xxx":default:return v(I,":")}},O:function(g,T,y,D){var _=D._originalDate||g,I=_.getTimezoneOffset();switch(T){case"O":case"OO":case"OOO":return"GMT"+f(I,":");case"OOOO":default:return"GMT"+v(I,":")}},z:function(g,T,y,D){var _=D._originalDate||g,I=_.getTimezoneOffset();switch(T){case"z":case"zz":case"zzz":return"GMT"+f(I,":");case"zzzz":default:return"GMT"+v(I,":")}},t:function(g,T,y,D){var _=D._originalDate||g,I=Math.floor(_.getTime()/1e3);return(0,o.default)(I,T.length)},T:function(g,T,y,D){var _=D._originalDate||g,I=_.getTime();return(0,o.default)(I,T.length)}};function f(m,g){var T=m>0?"-":"+",y=Math.abs(m),D=Math.floor(y/60),_=y%60;if(_===0)return T+String(D);var I=g;return T+String(D)+I+(0,o.default)(_,2)}function h(m,g){if(m%60===0){var T=m>0?"-":"+";return T+(0,o.default)(Math.abs(m)/60,2)}return v(m,g)}function v(m,g){var T=g||"",y=m>0?"-":"+",D=Math.abs(m),_=(0,o.default)(Math.floor(D/60),2),I=(0,o.default)(D%60,2);return y+_+T+I}var w=d;e.default=w,s.exports=e.default})(Ht,Ht.exports)),Ht.exports}var Kt={exports:{}},nr;function Nu(){return nr||(nr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=function(o,l){switch(o){case"P":return l.date({width:"short"});case"PP":return l.date({width:"medium"});case"PPP":return l.date({width:"long"});case"PPPP":default:return l.date({width:"full"})}},n=function(o,l){switch(o){case"p":return l.time({width:"short"});case"pp":return l.time({width:"medium"});case"ppp":return l.time({width:"long"});case"pppp":default:return l.time({width:"full"})}},a=function(o,l){var c=o.match(/(P+)(p+)?/)||[],d=c[1],f=c[2];if(!f)return t(o,l);var h;switch(d){case"P":h=l.dateTime({width:"short"});break;case"PP":h=l.dateTime({width:"medium"});break;case"PPP":h=l.dateTime({width:"long"});break;case"PPPP":default:h=l.dateTime({width:"full"});break}return h.replace("{{date}}",t(d,l)).replace("{{time}}",n(f,l))},i={p:n,P:a},r=i;e.default=r,s.exports=e.default})(Kt,Kt.exports)),Kt.exports}var Jt={exports:{}},ar;function Ii(){return ar||(ar=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n){var a=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return a.setUTCFullYear(n.getFullYear()),n.getTime()-a.getTime()}s.exports=e.default})(Jt,Jt.exports)),Jt.exports}var tt={},rr;function Au(){if(rr)return tt;rr=1,Object.defineProperty(tt,"__esModule",{value:!0}),tt.isProtectedDayOfYearToken=t,tt.isProtectedWeekYearToken=n,tt.throwProtectedError=a;var s=["D","DD"],e=["YY","YYYY"];function t(i){return s.indexOf(i)!==-1}function n(i){return e.indexOf(i)!==-1}function a(i,r,u){if(i==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(r,"`) for formatting years to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(i==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(r,"`) for formatting years to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(i==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(r,"`) for formatting days of the month to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(i==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(r,"`) for formatting days of the month to the input `").concat(u,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}return tt}var en={exports:{}},tn={exports:{}},nn={exports:{}},ir;function Fu(){return ir||(ir=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},n=function(r,u,o){var l,c=t[r];return typeof c=="string"?l=c:u===1?l=c.one:l=c.other.replace("{{count}}",u.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+l:l+" ago":l},a=n;e.default=a,s.exports=e.default})(nn,nn.exports)),nn.exports}var an={exports:{}},rn={exports:{}},sr;function Yu(){return sr||(sr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n){return function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=a.width?String(a.width):n.defaultWidth,r=n.formats[i]||n.formats[n.defaultWidth];return r}}s.exports=e.default})(rn,rn.exports)),rn.exports}var or;function Lu(){return or||(or=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(Yu()),a={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},i={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},r={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:(0,n.default)({formats:a,defaultWidth:"full"}),time:(0,n.default)({formats:i,defaultWidth:"full"}),dateTime:(0,n.default)({formats:r,defaultWidth:"full"})},o=u;e.default=o,s.exports=e.default})(an,an.exports)),an.exports}var sn={exports:{}},ur;function $u(){return ur||(ur=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},n=function(r,u,o,l){return t[r]},a=n;e.default=a,s.exports=e.default})(sn,sn.exports)),sn.exports}var on={exports:{}},un={exports:{}},lr;function Hu(){return lr||(lr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n){return function(a,i){var r=i!=null&&i.context?String(i.context):"standalone",u;if(r==="formatting"&&n.formattingValues){var o=n.defaultFormattingWidth||n.defaultWidth,l=i!=null&&i.width?String(i.width):o;u=n.formattingValues[l]||n.formattingValues[o]}else{var c=n.defaultWidth,d=i!=null&&i.width?String(i.width):n.defaultWidth;u=n.values[d]||n.values[c]}var f=n.argumentCallback?n.argumentCallback(a):a;return u[f]}}s.exports=e.default})(un,un.exports)),un.exports}var cr;function Uu(){return cr||(cr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(Hu()),a={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},i={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},r={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},u={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},o={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},l={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},c=function(v,w){var m=Number(v),g=m%100;if(g>20||g<10)switch(g%10){case 1:return m+"st";case 2:return m+"nd";case 3:return m+"rd"}return m+"th"},d={ordinalNumber:c,era:(0,n.default)({values:a,defaultWidth:"wide"}),quarter:(0,n.default)({values:i,defaultWidth:"wide",argumentCallback:function(v){return v-1}}),month:(0,n.default)({values:r,defaultWidth:"wide"}),day:(0,n.default)({values:u,defaultWidth:"wide"}),dayPeriod:(0,n.default)({values:o,defaultWidth:"wide",formattingValues:l,defaultFormattingWidth:"wide"})},f=d;e.default=f,s.exports=e.default})(on,on.exports)),on.exports}var ln={exports:{}},cn={exports:{}},dr;function qu(){return dr||(dr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(i){return function(r){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=u.width,l=o&&i.matchPatterns[o]||i.matchPatterns[i.defaultMatchWidth],c=r.match(l);if(!c)return null;var d=c[0],f=o&&i.parsePatterns[o]||i.parsePatterns[i.defaultParseWidth],h=Array.isArray(f)?a(f,function(m){return m.test(d)}):n(f,function(m){return m.test(d)}),v;v=i.valueCallback?i.valueCallback(h):h,v=u.valueCallback?u.valueCallback(v):v;var w=r.slice(d.length);return{value:v,rest:w}}}function n(i,r){for(var u in i)if(i.hasOwnProperty(u)&&r(i[u]))return u}function a(i,r){for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:{},r=a.match(n.matchPattern);if(!r)return null;var u=r[0],o=a.match(n.parsePattern);if(!o)return null;var l=n.valueCallback?n.valueCallback(o[0]):o[0];l=i.valueCallback?i.valueCallback(l):l;var c=a.slice(u.length);return{value:l,rest:c}}}s.exports=e.default})(dn,dn.exports)),dn.exports}var hr;function ju(){return hr||(hr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(qu()),a=t(Wu()),i=/^(\d+)(th|st|nd|rd)?/i,r=/\d+/i,u={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},o={any:[/^b/i,/^(a|c)/i]},l={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},c={any:[/1/i,/2/i,/3/i,/4/i]},d={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},f={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},h={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},v={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},w={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},m={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},g={ordinalNumber:(0,a.default)({matchPattern:i,parsePattern:r,valueCallback:function(D){return parseInt(D,10)}}),era:(0,n.default)({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:o,defaultParseWidth:"any"}),quarter:(0,n.default)({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(D){return D+1}}),month:(0,n.default)({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:f,defaultParseWidth:"any"}),day:(0,n.default)({matchPatterns:h,defaultMatchWidth:"wide",parsePatterns:v,defaultParseWidth:"any"}),dayPeriod:(0,n.default)({matchPatterns:w,defaultMatchWidth:"any",parsePatterns:m,defaultParseWidth:"any"})},T=g;e.default=T,s.exports=e.default})(ln,ln.exports)),ln.exports}var pr;function Vu(){return pr||(pr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(Fu()),a=t(Lu()),i=t($u()),r=t(Uu()),u=t(ju()),o={code:"en-US",formatDistance:n.default,formatLong:a.default,formatRelative:i.default,localize:r.default,match:u.default,options:{weekStartsOn:0,firstWeekContainsDate:1}},l=o;e.default=l,s.exports=e.default})(tn,tn.exports)),tn.exports}var mr;function Bu(){return mr||(mr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(Vu()),a=n.default;e.default=a,s.exports=e.default})(en,en.exports)),en.exports}var gr;function Gu(){return gr||(gr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=y;var n=t(Cu()),a=t(Ru()),i=t(Se()),r=t(ku()),u=t(Nu()),o=t(Ii()),l=Au(),c=t(Qe()),d=t(pe()),f=Yn(),h=t(Bu()),v=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,w=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,m=/^'([^]*?)'?$/,g=/''/g,T=/[a-zA-Z]/;function y(_,I,x){var R,C,E,O,k,U,se,G,Z,ce,me,he,qe,Ie,ge,xe,Re,Ke;(0,d.default)(2,arguments);var _t=String(I),Pe=(0,f.getDefaultOptions)(),te=(R=(C=x==null?void 0:x.locale)!==null&&C!==void 0?C:Pe.locale)!==null&&R!==void 0?R:h.default,V=(0,c.default)((E=(O=(k=(U=x==null?void 0:x.firstWeekContainsDate)!==null&&U!==void 0?U:x==null||(se=x.locale)===null||se===void 0||(G=se.options)===null||G===void 0?void 0:G.firstWeekContainsDate)!==null&&k!==void 0?k:Pe.firstWeekContainsDate)!==null&&O!==void 0?O:(Z=Pe.locale)===null||Z===void 0||(ce=Z.options)===null||ce===void 0?void 0:ce.firstWeekContainsDate)!==null&&E!==void 0?E:1);if(!(V>=1&&V<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var fe=(0,c.default)((me=(he=(qe=(Ie=x==null?void 0:x.weekStartsOn)!==null&&Ie!==void 0?Ie:x==null||(ge=x.locale)===null||ge===void 0||(xe=ge.options)===null||xe===void 0?void 0:xe.weekStartsOn)!==null&&qe!==void 0?qe:Pe.weekStartsOn)!==null&&he!==void 0?he:(Re=Pe.locale)===null||Re===void 0||(Ke=Re.options)===null||Ke===void 0?void 0:Ke.weekStartsOn)!==null&&me!==void 0?me:0);if(!(fe>=0&&fe<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!te.localize)throw new RangeError("locale must contain localize property");if(!te.formatLong)throw new RangeError("locale must contain formatLong property");var Me=(0,i.default)(_);if(!(0,n.default)(Me))throw new RangeError("Invalid time value");var Ct=(0,o.default)(Me),It=(0,a.default)(Me,Ct),ct={firstWeekContainsDate:V,weekStartsOn:fe,locale:te,_originalDate:Me},Rt=_t.match(w).map(function(Te){var Ae=Te[0];if(Ae==="p"||Ae==="P"){var Pt=u.default[Ae];return Pt(Te,te.formatLong)}return Te}).join("").match(v).map(function(Te){if(Te==="''")return"'";var Ae=Te[0];if(Ae==="'")return D(Te);var Pt=r.default[Ae];if(Pt)return!(x!=null&&x.useAdditionalWeekYearTokens)&&(0,l.isProtectedWeekYearToken)(Te)&&(0,l.throwProtectedError)(Te,I,String(_)),!(x!=null&&x.useAdditionalDayOfYearTokens)&&(0,l.isProtectedDayOfYearToken)(Te)&&(0,l.throwProtectedError)(Te,I,String(_)),Pt(It,Te,te.localize,ct);if(Ae.match(T))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Ae+"`");return Te}).join("");return Rt}function D(_){var I=_.match(m);return I?I[1].replace(g,"'"):_}s.exports=e.default})(Mt,Mt.exports)),Mt.exports}var fn={exports:{}},hn={exports:{}},vr;function zu(){return vr||(vr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(r,u,o){var l=i(r,o.timeZone,o.locale);return l.formatToParts?n(l,u):a(l,u)}function n(r,u){for(var o=r.formatToParts(u),l=o.length-1;l>=0;--l)if(o[l].type==="timeZoneName")return o[l].value}function a(r,u){var o=r.format(u).replace(/\u200E/g,""),l=/ [\w-+ ]+$/.exec(o);return l?l[0].substr(1):""}function i(r,u,o){if(o&&!o.code)throw new Error("date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`");return new Intl.DateTimeFormat(o?[o.code,"en-US"]:void 0,{timeZone:u,timeZoneName:r})}s.exports=e.default})(hn,hn.exports)),hn.exports}var pn={exports:{}},mn={exports:{}},yr;function Xu(){return yr||(yr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(o,l){var c=u(l);return c.formatToParts?a(c,o):i(c,o)}var n={year:0,month:1,day:2,hour:3,minute:4,second:5};function a(o,l){try{for(var c=o.formatToParts(l),d=[],f=0;f=0&&(d[h]=parseInt(c[f].value,10))}return d}catch(v){if(v instanceof RangeError)return[NaN];throw v}}function i(o,l){var c=o.format(l).replace(/\u200E/g,""),d=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(c);return[d[3],d[1],d[2],d[4],d[5],d[6]]}var r={};function u(o){if(!r[o]){var l=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),c=l==="06/25/2014, 00:00:00"||l==="‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00";r[o]=c?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:o,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:o,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return r[o]}s.exports=e.default})(mn,mn.exports)),mn.exports}var gn={exports:{}},Tr;function Ri(){return Tr||(Tr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n,a,i,r,u,o,l){var c=new Date(0);return c.setUTCFullYear(n,a,i),c.setUTCHours(r,u,o,l),c}s.exports=e.default})(gn,gn.exports)),gn.exports}var wr;function bt(){return wr||(wr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var t=a(Xu()),n=a(Ri());function a(w){return w&&w.__esModule?w:{default:w}}var i=36e5,r=6e4,u={timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function o(w,m,g){var T,y;if(!w||(T=u.timezoneZ.exec(w),T))return 0;var D;if(T=u.timezoneHH.exec(w),T)return D=parseInt(T[1],10),f(D)?-(D*i):NaN;if(T=u.timezoneHHMM.exec(w),T){D=parseInt(T[1],10);var _=parseInt(T[2],10);return f(D,_)?(y=Math.abs(D)*i+_*r,D>0?-y:y):NaN}if(v(w)){m=new Date(m||Date.now());var I=g?m:l(m),x=c(I,w),R=g?x:d(m,x,w);return-R}return NaN}function l(w){return(0,n.default)(w.getFullYear(),w.getMonth(),w.getDate(),w.getHours(),w.getMinutes(),w.getSeconds(),w.getMilliseconds())}function c(w,m){var g=(0,t.default)(w,m),T=(0,n.default)(g[0],g[1]-1,g[2],g[3]%24,g[4],g[5],0).getTime(),y=w.getTime(),D=y%1e3;return y-=D>=0?D:1e3+D,T-y}function d(w,m,g){var T=w.getTime(),y=T-m,D=c(new Date(y),g);if(m===D)return m;y-=D-m;var _=c(new Date(y),g);return D===_?D:Math.max(D,_)}function f(w,m){return-23<=w&&w<=23&&(m==null||0<=m&&m<=59)}var h={};function v(w){if(h[w])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:w}),h[w]=!0,!0}catch{return!1}}s.exports=e.default})(pn,pn.exports)),pn.exports}var Dr;function Zu(){return Dr||(Dr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=a(zu()),n=a(bt());function a(h){return h&&h.__esModule?h:{default:h}}var i=60*1e3,r={X:function(h,v,w,m){var g=u(m.timeZone,m._originalDate||h);if(g===0)return"Z";switch(v){case"X":return c(g);case"XXXX":case"XX":return l(g);case"XXXXX":case"XXX":default:return l(g,":")}},x:function(h,v,w,m){var g=u(m.timeZone,m._originalDate||h);switch(v){case"x":return c(g);case"xxxx":case"xx":return l(g);case"xxxxx":case"xxx":default:return l(g,":")}},O:function(h,v,w,m){var g=u(m.timeZone,m._originalDate||h);switch(v){case"O":case"OO":case"OOO":return"GMT"+d(g,":");case"OOOO":default:return"GMT"+l(g,":")}},z:function(h,v,w,m){var g=m._originalDate||h;switch(v){case"z":case"zz":case"zzz":return(0,t.default)("short",g,m);case"zzzz":default:return(0,t.default)("long",g,m)}}};function u(h,v){var w=h?(0,n.default)(h,v,!0)/i:v.getTimezoneOffset();if(Number.isNaN(w))throw new RangeError("Invalid time zone specified: "+h);return w}function o(h,v){for(var w=h<0?"-":"",m=Math.abs(h).toString();m.length0?"-":"+",g=Math.abs(h),T=o(Math.floor(g/60),2),y=o(Math.floor(g%60),2);return m+T+w+y}function c(h,v){if(h%60===0){var w=h>0?"-":"+";return w+o(Math.abs(h)/60,2)}return l(h,v)}function d(h,v){var w=h>0?"-":"+",m=Math.abs(h),g=Math.floor(m/60),T=m%60;if(T===0)return w+String(g);var y=v;return w+String(g)+y+o(T,2)}var f=r;e.default=f,s.exports=e.default})(fn,fn.exports)),fn.exports}var vn={exports:{}},yn={exports:{}},br;function Pi(){return br||(br=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/,n=t;e.default=n,s.exports=e.default})(yn,yn.exports)),yn.exports}var _r;function Ln(){return _r||(_r=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=d;var t=r(Qe()),n=r(Ii()),a=r(bt()),i=r(Pi());function r(R){return R&&R.__esModule?R:{default:R}}var u=36e5,o=6e4,l=2,c={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:i.default};function d(R,C){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(R===null)return new Date(NaN);var E=C||{},O=E.additionalDigits==null?l:(0,t.default)(E.additionalDigits);if(O!==2&&O!==1&&O!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if(R instanceof Date||typeof R=="object"&&Object.prototype.toString.call(R)==="[object Date]")return new Date(R.getTime());if(typeof R=="number"||Object.prototype.toString.call(R)==="[object Number]")return new Date(R);if(!(typeof R=="string"||Object.prototype.toString.call(R)==="[object String]"))return new Date(NaN);var k=f(R),U=h(k.date,O),se=U.year,G=U.restDateString,Z=v(G,se);if(isNaN(Z))return new Date(NaN);if(Z){var ce=Z.getTime(),me=0,he;if(k.time&&(me=w(k.time),isNaN(me)))return new Date(NaN);if(k.timeZone||E.timeZone){if(he=(0,a.default)(k.timeZone||E.timeZone,new Date(ce+me)),isNaN(he))return new Date(NaN)}else he=(0,n.default)(new Date(ce+me)),he=(0,n.default)(new Date(ce+me+he));return new Date(ce+me+he)}else return new Date(NaN)}function f(R){var C={},E=c.dateTimePattern.exec(R),O;if(E?(C.date=E[1],O=E[3]):(E=c.datePattern.exec(R),E?(C.date=E[1],O=E[2]):(C.date=null,O=R)),O){var k=c.timeZone.exec(O);k?(C.time=O.replace(k[1],""),C.timeZone=k[1].trim()):C.time=O}return C}function h(R,C){var E=c.YYY[C],O=c.YYYYY[C],k;if(k=c.YYYY.exec(R)||O.exec(R),k){var U=k[1];return{year:parseInt(U,10),restDateString:R.slice(U.length)}}if(k=c.YY.exec(R)||E.exec(R),k){var se=k[1];return{year:parseInt(se,10)*100,restDateString:R.slice(se.length)}}return{year:null}}function v(R,C){if(C===null)return null;var E,O,k,U;if(R.length===0)return O=new Date(0),O.setUTCFullYear(C),O;if(E=c.MM.exec(R),E)return O=new Date(0),k=parseInt(E[1],10)-1,D(C,k)?(O.setUTCFullYear(C,k),O):new Date(NaN);if(E=c.DDD.exec(R),E){O=new Date(0);var se=parseInt(E[1],10);return _(C,se)?(O.setUTCFullYear(C,0,se),O):new Date(NaN)}if(E=c.MMDD.exec(R),E){O=new Date(0),k=parseInt(E[1],10)-1;var G=parseInt(E[2],10);return D(C,k,G)?(O.setUTCFullYear(C,k,G),O):new Date(NaN)}if(E=c.Www.exec(R),E)return U=parseInt(E[1],10)-1,I(C,U)?m(C,U):new Date(NaN);if(E=c.WwwD.exec(R),E){U=parseInt(E[1],10)-1;var Z=parseInt(E[2],10)-1;return I(C,U,Z)?m(C,U,Z):new Date(NaN)}return null}function w(R){var C,E,O;if(C=c.HH.exec(R),C)return E=parseFloat(C[1].replace(",",".")),x(E)?E%24*u:NaN;if(C=c.HHMM.exec(R),C)return E=parseInt(C[1],10),O=parseFloat(C[2].replace(",",".")),x(E,O)?E%24*u+O*o:NaN;if(C=c.HHMMSS.exec(R),C){E=parseInt(C[1],10),O=parseInt(C[2],10);var k=parseFloat(C[3].replace(",","."));return x(E,O,k)?E%24*u+O*o+k*1e3:NaN}return null}function m(R,C,E){C=C||0,E=E||0;var O=new Date(0);O.setUTCFullYear(R,0,4);var k=O.getUTCDay()||7,U=C*7+E+1-k;return O.setUTCDate(O.getUTCDate()+U),O}var g=[31,28,31,30,31,30,31,31,30,31,30,31],T=[31,29,31,30,31,30,31,31,30,31,30,31];function y(R){return R%400===0||R%4===0&&R%100!==0}function D(R,C,E){if(C<0||C>11)return!1;if(E!=null){if(E<1)return!1;var O=y(R);if(O&&E>T[C]||!O&&E>g[C])return!1}return!0}function _(R,C){if(C<1)return!1;var E=y(R);return!(E&&C>366||!E&&C>365)}function I(R,C,E){return!(C<0||C>52||E!=null&&(E<0||E>6))}function x(R,C,E){return!(R!=null&&(R<0||R>=25)||C!=null&&(C<0||C>=60)||E!=null&&(E<0||E>=60))}s.exports=e.default})(vn,vn.exports)),vn.exports}var Cr;function Ei(){return Cr||(Cr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=u;var t=i(Gu()),n=i(Zu()),a=i(Ln());function i(o){return o&&o.__esModule?o:{default:o}}var r=/([xXOz]+)|''|'(''|[^'])+('|$)/g;function u(o,l,c){var d=String(l),f=c||{},h=d.match(r);if(h){var v=(0,a.default)(o,f);d=h.reduce(function(w,m){if(m[0]==="'")return w;var g=w.indexOf(m),T=w[g-1]==="'",y=w.replace(m,"'"+n.default[m[0]](v,m,null,f)+"'");return T?y.substring(0,g-1)+y.substring(g+1):y},d)}return(0,t.default)(o,d,f)}s.exports=e.default})(xt,xt.exports)),xt.exports}var Tn={exports:{}},wn={exports:{}},Dn={exports:{}},Ir;function Qu(){return Ir||(Ir=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(n,a){if(n==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(n[i]=a[i]);return n}s.exports=e.default})(Dn,Dn.exports)),Dn.exports}var Rr;function Oi(){return Rr||(Rr=1,(function(s,e){var t=re().default;Object.defineProperty(e,"__esModule",{value:!0}),e.default=a;var n=t(Qu());function a(i){return(0,n.default)({},i)}s.exports=e.default})(wn,wn.exports)),wn.exports}var bn={exports:{}},Pr;function Si(){return Pr||(Pr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=i;var t=a(bt()),n=a(Ln());function a(r){return r&&r.__esModule?r:{default:r}}function i(r,u,o){var l=(0,n.default)(r,o),c=(0,t.default)(u,l,!0),d=new Date(l.getTime()-c),f=new Date(0);return f.setFullYear(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate()),f.setHours(d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds()),f}s.exports=e.default})(bn,bn.exports)),bn.exports}var Er;function Ku(){return Er||(Er=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var t=i(Oi()),n=i(Ei()),a=i(Si());function i(u){return u&&u.__esModule?u:{default:u}}function r(u,o,l,c){var d=(0,t.default)(c);return d.timeZone=o,(0,n.default)((0,a.default)(u,o),l,d)}s.exports=e.default})(Tn,Tn.exports)),Tn.exports}var _n={exports:{}},Or;function Ju(){return Or||(Or=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=a;var t=n(bt());function n(i){return i&&i.__esModule?i:{default:i}}function a(i,r){return-(0,t.default)(i,r)}s.exports=e.default})(_n,_n.exports)),_n.exports}var Cn={exports:{}},Sr;function el(){return Sr||(Sr=1,(function(s,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var t=u(Oi()),n=u(Ln()),a=u(Pi()),i=u(bt()),r=u(Ri());function u(l){return l&&l.__esModule?l:{default:l}}function o(l,c,d){if(typeof l=="string"&&!l.match(a.default)){var f=(0,t.default)(d);return f.timeZone=c,(0,n.default)(l,f)}var h=(0,n.default)(l,d),v=(0,r.default)(h.getFullYear(),h.getMonth(),h.getDate(),h.getHours(),h.getMinutes(),h.getSeconds(),h.getMilliseconds()).getTime(),w=(0,i.default)(c,new Date(v));return new Date(v+w)}s.exports=e.default})(Cn,Cn.exports)),Cn.exports}var Gn,xr;function tl(){return xr||(xr=1,Gn={format:Ei(),formatInTimeZone:Ku(),getTimezoneOffset:Ju(),toDate:Ln(),utcToZonedTime:Si(),zonedTimeToUtc:el()}),Gn}var xi=tl();const nl=[[-11,["Pacific/Midway"]],[-10,["Pacific/Honolulu"]],[-9.5,["Pacific/Marquesas"]],[-9,["Pacific/Gambier"]],[-8,["Pacific/Pitcairn"]],[-7,["America/Phoenix"]],[-6,["America/Tegucigalpa"]],[-5,["America/Bogota"]],[-4,["America/Puerto_Rico"]],[-3.5,["America/St_Johns"]],[-3,["America/Montevideo"]],[-2,["Atlantic/South_Georgia"]],[-1,["Atlantic/Cape_Verde"]],[0,["Africa/Accra"]],[1,["Africa/Bangui"]],[2,["Africa/Cairo"]],[3,["Asia/Bahrain","Indian/Antananarivo"]],[3.5,["Asia/Tehran"]],[4,["Asia/Dubai","Asia/Muscat"]],[4.5,["Asia/Kabul"]],[5,["Asia/Samarkand","Asia/Karachi"]],[5.5,["Asia/Kolkata"]],[5.75,["Asia/Kathmandu"]],[6,["Asia/Dhaka"]],[6.5,["Asia/Rangoon","Asia/Rangoon"]],[7,["Asia/Jakarta","Asia/Phnom_Penh","Asia/Bangkok"]],[8,["Asia/Shanghai","Asia/Singapore"]],[8.75,["Australia/Eucla"]],[9,["Asia/Tokyo","Asia/Seoul","Asia/Pyongyang"]],[9.5,["Australia/Darwin"]],[10,["Pacific/Guam"]],[10.5,["Australia/Adelaide"]],[11,["Pacific/Guadalcanal"]],[12,["Pacific/Funafuti"]],[13,["Pacific/Enderbury"]],[13.75,["Pacific/Chatham"]],[14,["Pacific/Kiritimati"]]],Mr={0:"Etc/GMT",1:"Etc/GMT-1",2:"Etc/GMT-2",3:"Etc/GMT-3",4:"Etc/GMT-4",5:"Etc/GMT-5",6:"Etc/GMT-6",7:"Etc/GMT-7",8:"Etc/GMT-8",9:"Etc/GMT-9",10:"Etc/GMT-10",11:"Etc/GMT-11",12:"Etc/GMT-12",13:"Etc/GMT-13",14:"Etc/GMT-14","-1":"Etc/GMT+1","-2":"Etc/GMT+2","-3":"Etc/GMT+3","-4":"Etc/GMT+4","-5":"Etc/GMT+5","-6":"Etc/GMT+6","-7":"Etc/GMT+7","-8":"Etc/GMT+8","-9":"Etc/GMT+9","-10":"Etc/GMT+10","-11":"Etc/GMT+11","-12":"Etc/GMT+12"},al=/([\-\+]{1})(\d{2})\:(\d{2})/,Mi=s=>{let e=null;if(typeof s=="string"){if(e=s.match(al),!e)return s;const t=parseInt(e[1]+1,10),n=parseInt(e[2],10),a=parseInt(e[3],10);s=t*(n+a/60)}if(typeof s=="number"){if(s in Mr){const n=Mr[s];if(rl(n))return n}const t=nl.find(n=>n[0]===s);return t&&t[1][0]}},kr={};function rl(s){if(kr[s])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:s}),kr[s]=!0,!0}catch{return!1}}const il=(s,e,t)=>xi.utcToZonedTime(s,Mi(e),t),aa=(s,e,t)=>xi.zonedTimeToUtc(s,Mi(e),t);function ne(s,e,t,n){let a=null;if(s){e&&(t=t||new Date,a=$o(s,e,t,{locale:n})),Ce(a)||(a=be(s)),Ce(a)||(a=new Date(Date.parse(s)));const i=Ce(a)&&String(a.getFullYear()).length>4;(!Ce(a)||i)&&(a=null)}return a}function Pn(s){const{format:e,type:t}=s,n=/([yMd]{0,4}[^a-z\s]*[yMd]{0,4}[^a-z\s]*[yMd]{0,4})/i,a=/([yMd]{0,4}[^a-z\s]*[yMd]{0,4}[^a-z\s]*[yMd]{0,4}) (H{0,2}[^a-z\s]*m{0,2}[^a-z\s]*s{0,2})/i,i=$e(t);let r;switch(t){case"dateTime":case"dateTimeRange":const u=a.exec(e);r=u&&u[1]&&u[2]?`${u[1]} ${u[2]}`:i;break;case"date":case"month":case"monthRange":case"dateRange":default:const o=n.exec(e);r=o&&o[1]||i;break}return r}function ra(s){const{inputValue:t="",rangeSeparator:n,type:a}=s;let i,r,u,o;const l={monthLeft:{dateInput:"",timeInput:""},monthRight:{dateInput:"",timeInput:""}};switch(a){case"date":case"month":case"monthRange":l.monthLeft.dateInput=t;break;case"dateRange":[i="",u=""]=t.split(n),l.monthLeft.dateInput=i,l.monthRight.dateInput=u;break;case"dateTime":[i="",r=""]=t.split(" "),l.monthLeft.dateInput=i,l.monthLeft.timeInput=r;break;case"dateTimeRange":const[c="",d=""]=t.split(n);[i="",r=""]=c.split(" "),[u="",o=""]=d.split(" "),l.monthLeft.dateInput=i,l.monthLeft.timeInput=r,l.monthRight.dateInput=u,l.monthRight.timeInput=o;break}return l}function En(s){return["string","number"].includes(typeof s)&&s!==""}class sl extends He{constructor(e){super(Object.assign({},e)),this.clearRangeInputFocus=()=>{const{type:t}=this._adapter.getProps(),{rangeInputFocus:n}=this._adapter.getStates();t==="dateTimeRange"&&n&&this._adapter.setRangeInputFocus(!1)},this._isRangeType=()=>{const t=this._adapter.getProp("type");return/range/i.test(t)},this._isRangeValueComplete=t=>{let n=!1;return Array.isArray(t)&&(n=!t.some(a=>Be(a))),n}}init(){const e=this.getProp("timeZone");this._isControlledComponent()?this.initFromProps({timeZone:e,value:this.getProp("value")}):this._isInProps("defaultValue")&&this.initFromProps({timeZone:e,value:this.getProp("defaultValue")}),this.initPanelOpenStatus(this.getProp("defaultOpen"))}initFromProps(e){let{value:t,timeZone:n,prevTimeZone:a}=e;const i=(Array.isArray(t)?[...t]:(t||t===0)&&[t])||[],r=this.parseWithTimezone(i,n,a);this._adapter.updatePrevTimezone(a),this.clearInputValue(),this._adapter.updateValue(r),this.resetCachedSelectedValue(r),this.initRangeInputFocus(r),this._adapter.needConfirm()&&this._adapter.updateCachedSelectedValue(r)}initRangeInputFocus(e){const{triggerRender:t}=this.getProps();this._isRangeType()&&st(t)&&e.length===0&&this._adapter.setRangeInputFocus("rangeStart")}parseWithTimezone(e,t,n){const a=[];if(Array.isArray(e)&&e.length)for(const i of e){let r=(i||i===0)&&this._parseValue(i);r?(En(n)&&(r=aa(r,n)),a.push(En(t)?il(r,t):r)):qi(!0,`[Semi DatePicker] value cannot be parsed, value: ${String(i)}`)}return a}_isMultiple(){return!!this.getProp("multiple")}_parseValue(e){const t=this._adapter.getProp("dateFnsLocale");let n;if(!e&&e!==0)return new Date;if(_e(e))n=e;else if(Wi(e))n=ne(e,this.getProp("format"),void 0,t);else if(na(e))n=new Date(e);else throw new TypeError("defaultValue should be valid Date object/timestamp or string");return n}destroy(){this._adapter.togglePanel(!1),this._adapter.unregisterClickOutSide()}initPanelOpenStatus(e){(this.getProp("open")||e)&&!this.getProp("disabled")?(this._adapter.togglePanel(!0),this._adapter.registerClickOutSide()):(this._adapter.togglePanel(!1),this._adapter.unregisterClickOutSide())}openPanel(){this.getProp("disabled")||(this._isControlledComponent("open")||this.open(),this._adapter.notifyOpenChange(!0))}clearInsetInputValue(){const{insetInput:e}=this._adapter.getProps();e&&this._adapter.updateInsetInputValue(null)}resetCachedSelectedValue(e){const{value:t,cachedSelectedValue:n}=this._adapter.getStates(),a=Array.isArray(e)?e:t;De(a,n)||this._adapter.updateCachedSelectedValue(a)}closePanel(){this._isControlledComponent("open")?this.resetInnerSelectedStates():this.close(),this._adapter.notifyOpenChange(!1)}open(){this._adapter.togglePanel(!0),this._adapter.registerClickOutSide()}close(){this._adapter.togglePanel(!1),this.resetInnerSelectedStates(),this._adapter.unregisterClickOutSide()}focus(e){if(this._isRangeType()){const t=e??"rangeStart";this._adapter.setRangeInputFocus(t)}else this._adapter.setInputFocus()}blur(){this._isRangeType()?this._adapter.setRangeInputBlur():this._adapter.setInputBlur()}resetInnerSelectedStates(){setTimeout(()=>{const{value:e,cachedSelectedValue:t}=this._adapter.getStates();De(e,t)||this.resetCachedSelectedValue(e)},0),this.resetFocus(),this.clearInputValue()}resetFocus(e){this._adapter.setRangeInputFocus(!1),this._adapter.notifyBlur(e)}isCachedSelectedValueValid(e){const t=e||this._adapter.getState("cachedSelectedValue"),{type:n}=this._adapter.getProps();let a=!0;switch(!0){case n==="dateRange":case n==="dateTimeRange":this._isRangeValueComplete(t)||(a=!1);break;default:const i=t==null?void 0:t.filter(r=>r);Array.isArray(i)&&i.length||(a=!1);break}return a}clearInputValue(){this._adapter.updateInputValue(null),this._adapter.updateInsetInputValue(null)}handleInputChange(e,t){const n=this._isMultiple()?this.parseMultipleInput(e):this.parseInput(e),{value:a}=this.getStates();if(this._updateCachedSelectedValueFromInput(e),n&&n.length||e===""){if(oe(t,Qr.CLEARBTN_CLICKED_EVENT_FLAG)&&this._isControlledComponent("value")){this._notifyChange(n);return}this._updateValueAndInput(n,e==="",e);const i=this._getChangedDates(n);this._someDateDisabled(i,n)||De(n,a)||this._notifyChange(n)}else this._adapter.updateInputValue(e)}handleInsetInputChange(e){const{insetInputStr:t,format:n,insetInputValue:a}=e,i=this._isMultiple(),r=i?this.parseMultipleInput(t,n):this.parseInput(t,n),{value:u}=this.getStates();if(this._updateCachedSelectedValueFromInput(t),r&&r.length){const o=this._getChangedDates(r);if(!this._someDateDisabled(o,r)){De(r,u)||(!this._isControlledComponent()&&!this._adapter.needConfirm()&&this._adapter.updateValue(r),this._notifyChange(r));const l=i?this.formatMultipleDates(r):this.formatDates(r);this._adapter.updateInputValue(l)}}this._adapter.updateInsetInputValue(a)}_updateCachedSelectedValueFromInput(e){const t=this.getLooseDateFromInput(e),n=this._getChangedDates(t);this._someDateDisabled(n,t)||this.resetCachedSelectedValue(t)}handleInputBlur(){}handleRangeEndTabPress(e){this._adapter.setRangeInputFocus(!1)}handleInputFocus(e,t){const n=this._adapter.getState("rangeInputFocus");t&&this._adapter.setRangeInputFocus(t),(!t||!["rangeStart","rangeEnd"].includes(n))&&this._adapter.notifyFocus(e,t)}handleSetRangeFocus(e){this._adapter.setRangeInputFocus(e)}handleInputClear(e){this._adapter.notifyClear(e)}handleRangeInputClear(e){const t=[];this._isControlledComponent("value")||(this._updateValueAndInput(t,!0,""),this._adapter.updateInsetInputValue(null),this.resetCachedSelectedValue(t)),this._notifyChange(t),this._adapter.setRangeInputFocus(!1),this._adapter.notifyClear(e)}handleRangeInputBlur(e,t){}handleInputComplete(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=e?this._isMultiple()?this.parseMultipleInput(e,",",!0):this.parseInput(e):[];if(t=t&&t.length?t:this.getState("value"),!t||!t.length){const i=new Date;this._isRangeType()?t=[i,i]:t=[i]}this._updateValueAndInput(t);const{value:n}=this.getStates(),a=this._getChangedDates(t);!this._someDateDisabled(a,t)&&!De(t,n)&&this._notifyChange(t)}parseInput(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=[];const{dateFnsLocale:a,rangeSeparator:i}=this.getProps();if(e&&e.length){const r=this.getProp("type"),u=t||this.getProp("format")||$e(r);let o,l;const c=new Date;switch(r){case"date":case"dateTime":case"month":o=e?ne(e,u,c,a):"",l=o&&Ce(o)&&this.localeFormat(o,u),o&&l===e&&(n=[o]);break;case"dateRange":case"dateTimeRange":case"monthRange":const d=i,f=e.split(d);o=f&&f.reduce((h,v)=>{const w=v&&ne(v,u,c,a);return w&&h.push(w),h},[]),l=o&&o.map(h=>h&&Ce(h)&&this.localeFormat(h,u)).join(d),o&&l===e&&(o.sort((h,v)=>h.getTime()-v.getTime()),n=o);break}}return n}getLooseDateFromInput(e){return this._isMultiple()?this.parseMultipleInputLoose(e):this.parseInputLoose(e)}parseInputLoose(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=[];const{dateFnsLocale:n,rangeSeparator:a,type:i,format:r}=this.getProps();if(e&&e.length){const u=r||$e(i);let o,l;const c=new Date;switch(i){case"date":case"dateTime":case"month":const d=ne(e,u,c,n);_e(d)?(l=this.localeFormat(d,u),l===e&&(o=d)):o=null,t=[o];break;case"dateRange":case"dateTimeRange":const f=a,h=e.split(f);o=h&&h.reduce((v,w)=>{let m=null;const g=ne(w,u,c,n);return _e(g)&&(l=this.localeFormat(g,u),l===w&&(m=g)),v.push(m),v},[]),Array.isArray(o)&&o.every(v=>Ce(v))&&o.sort((v,w)=>v.getTime()-w.getTime()),t=o;break}}return t}parseMultipleInputLoose(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P.DEFAULT_SEPARATOR_MULTIPLE,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const a=this.getProp("max"),i=e.split(t),r=[];for(const u of i){let o=u&&this.parseInputLoose(u);if(o=Array.isArray(o)?o:o&&[o],o&&o.length)n?!r.filter(l=>!!o.find(c=>Ea(l,c)))&&r.push(...o):r.push(...o);else return[];if(a&&a>0&&r.length>a)return[]}return r}parseMultipleInput(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P.DEFAULT_SEPARATOR_MULTIPLE,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const a=this.getProp("max"),i=e.split(t),r=[];for(const u of i){let o=u&&this.parseInput(u);if(o=Array.isArray(o)?o:o&&[o],o&&o.length)n?!r.filter(l=>!!o.find(c=>Ea(l,c)))&&r.push(...o):r.push(...o);else return[];if(a&&a>0&&r.length>a)return[]}return r}formatDates(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n="";const a=this.getProp("rangeSeparator");if(Array.isArray(e)&&e.length){const i=this.getProp("type"),r=t||this.getProp("format")||$e(i);switch(i){case"date":case"dateTime":case"month":n=this.localeFormat(e[0],r);break;case"dateRange":case"dateTimeRange":case"monthRange":const u=!Be(e[0]),o=!Be(e[1]);u&&o?n=`${this.localeFormat(e[0],r)}${a}${this.localeFormat(e[1],r)}`:u?n=`${this.localeFormat(e[0],r)}${a}`:o&&(n=`${a}${this.localeFormat(e[1],r)}`);break}}return n}formatMultipleDates(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P.DEFAULT_SEPARATOR_MULTIPLE,n=arguments.length>2?arguments[2]:void 0;const a=[];if(Array.isArray(e)&&e.length)switch(this.getProp("type")){case"date":case"dateTime":case"month":e.forEach(r=>a.push(this.formatDates([r],n)));break;case"dateRange":case"dateTimeRange":case"monthRange":for(let r=0;r0&&arguments[0]!==void 0?arguments[0]:{};const{currentMonth:t,currentYear:n}=e,{type:a}=this.getProps();if(a==="month"){const i=new Date(n.left,t.left-1);this.handleSelectedChange([i])}else{const i=new Date(n.left,t.left-1),r=new Date(n.right,t.right-1);this.handleSelectedChange([i,r])}}handleConfirm(){const{cachedSelectedValue:e,value:t}=this._adapter.getStates(),n=this._isRangeValueComplete(e),a=n?e:t;if(this._adapter.needConfirm()&&!this._isControlledComponent()&&this._adapter.updateValue(a),this.closePanel(),n){const{notifyValue:i,notifyDate:r}=this.disposeCallbackArgs(e);this._adapter.notifyConfirm(r,i)}}handleCancel(){this.closePanel();const e=this.getState("value"),{notifyValue:t,notifyDate:n}=this.disposeCallbackArgs(e);this._adapter.notifyCancel(n,t)}handlePresetClick(e,t){const{type:n,timeZone:a}=this.getProps(),i=this.getState("prevTimezone"),r=typeof e.start=="function"?e.start():e.start,u=typeof e.end=="function"?e.end():e.end;let o;switch(n){case"month":case"dateTime":case"date":o=this.parseWithTimezone([r],a,i),this.handleSelectedChange(o);break;case"dateTimeRange":case"dateRange":o=this.parseWithTimezone([r,u],a,i),this.handleSelectedChange(o,{needCheckFocusRecord:!1});break}this._adapter.notifyPresetsClick(e,t)}disposeCallbackArgs(e){let t=Array.isArray(e)?e:e&&[e]||[];const n=this.getProp("timeZone");En(n)&&(t=t.map(o=>aa(o,n)));const a=this.getProp("type"),i=this.getProp("format")||$e(a);let r,u;switch(a){case"date":case"dateTime":case"month":this._isMultiple()?(r=t.map(o=>o&&this.localeFormat(o,i)),u=[...t]):(r=t[0]&&this.localeFormat(t[0],i),[u]=t);break;case"dateRange":case"dateTimeRange":case"monthRange":r=t.map(o=>o&&this.localeFormat(o,i)),u=[...t];break}return{notifyValue:r,notifyDate:u}}_notifyChange(e){if(this._isRangeType()&&!this._isRangeValueComplete(e))return;const{onChangeWithDateFirst:t}=this.getProps(),{notifyValue:n,notifyDate:a}=this.disposeCallbackArgs(e);t?this._adapter.notifyChange(a,n):this._adapter.notifyChange(n,a)}_getChangedDates(e){const t=this._adapter.getProp("type"),{cachedSelectedValue:n}=this._adapter.getStates(),a=[];switch(t){case"dateRange":case"dateTimeRange":const[i,r]=n,[u,o]=e;kn(u,i)||a.push(u),kn(o,r)||a.push(o);break;default:const l=new Set;n.forEach(c=>l.add(Jn(c)&&c.valueOf()));for(const c of e)l.has(Jn(c)&&c.valueOf())||a.push(c)}return a}_someDateDisabled(e,t){const{rangeInputFocus:n}=this.getStates(),a={rangeStart:"",rangeEnd:"",rangeInputFocus:n};if(this._isRangeType()&&Array.isArray(t)){if(Ce(t[0])){const r=X(t[0],"yyyy-MM-dd");a.rangeStart=r}if(Ce(t[1])){const r=X(t[1],"yyyy-MM-dd");a.rangeEnd=r}}let i=!1;for(const r of e)if(!Be(r)){const u=this._isRangeType()&&Ce(r)?Kn(r):r;if(this.disabledDisposeDate(u,a)){i=!0;break}}return i}localeFormat(e,t){const n=this._adapter.getProp("dateFnsLocale");return X(e,t,{locale:n})}disposeDateFn(e,t){const{notifyDate:n}=this.disposeCallbackArgs(t),a=Array.isArray(t),i=Array.isArray(n);let r;a===i?r=n:r=a?[n]:n[0];for(var u=arguments.length,o=new Array(u>2?u-2:0),l=2;l1?n-1:0),i=1;i1?n-1:0),i=1;i{this.handleInputFocus(e,"rangeStart")},0):st(n)&&this._adapter.setRangeInputFocus("rangeStart"),this.openPanel()):this.openPanel())}handlePanelVisibleChange(e){e?(this._adapter.setInsetInputFocus(),setTimeout(()=>{this._adapter.setTriggerDisabled(!0)},0)):this._adapter.setTriggerDisabled(!1)}}function nt(s,e){let{groupInnerSeparator:t=P.DEFAULT_SEPARATOR_RANGE,groupSize:n=1,groupSeparator:a=P.DEFAULT_SEPARATOR_MULTIPLE}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0,r="";if((n<=0||typeof n!="number")&&(n=1),Array.isArray(s)&&s.length){const u=[],{length:o}=s;for(let l=0;ll.map(c=>c?X(c,e,{locale:i}):"").join(t)).join(a)}return r}function ki(s){const{defaultPickerValue:e,format:t,dateFnsLocale:n}=s;let a=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;switch(!0){case _e(a):break;case na(a):a=new Date(a);break;case typeof a=="string":a=ne(a,t,void 0,n);break;default:a=new Date;break}switch(!0){case _e(i):break;case na(i):i=new Date(i);break;case typeof i=="string":i=ne(i,t,void 0,n);break;default:i=Le(a,1);break}return{nowDate:a,nextDate:i}}const Nr="Enter",ol="Tab";class ul extends He{constructor(e){super(Object.assign({},e))}init(){}destroy(){}handleClick(e){this._adapter.notifyClick(e)}handleChange(e,t){this._adapter.notifyChange(e,t)}handleInputComplete(e){e.key===Nr&&this._adapter.notifyEnter(e.target.value)}handleInputClear(e){this._adapter.notifyClear(e)}handleRangeInputClear(e){this.stopPropagation(e),this._adapter.notifyRangeInputClear(e)}handleRangeInputEnterPress(e,t){e.key===Nr&&this._adapter.notifyEnter(t)}handleRangeInputEndKeyPress(e){e.key===ol&&this._adapter.notifyTabPress(e)}handleRangeInputFocus(e,t){this._adapter.notifyRangeInputFocus(e,t)}formatShowText(e,t){const{type:n,dateFnsLocale:a,format:i,rangeSeparator:r}=this._adapter.getProps(),u=t||i||$e(n);let o="";switch(n){case"date":o=nt(e,u,void 0,a);break;case"dateRange":o=nt(e,u,{groupSize:2,groupInnerSeparator:r},a);break;case"dateTime":o=nt(e,u,void 0,a);break;case"dateTimeRange":o=nt(e,u,{groupSize:2,groupInnerSeparator:r},a);break;case"month":o=nt(e,u,void 0,a);break;case"monthRange":o=nt(e,u,{groupSize:2,groupInnerSeparator:r},a);break}return o}handleInsetInputChange(e){const{value:t,valuePath:n,insetInputValue:a}=e,{format:i,type:r,rangeSeparator:u}=this._adapter.getProps(),o=Pn({type:r,format:i}),l=ji(Sn(a),n,t),c=this.concatInsetInputValue({insetInputValue:l}),d=ra({inputValue:c,type:r,rangeSeparator:u}),f=this._autoFillTimeToInsetInputValue({insetInputValue:d,valuePath:n,format:o}),h=this.concatInsetInputValue({insetInputValue:f});this._adapter.notifyInsetInputChange({insetInputValue:f,format:o,insetInputStr:h})}_autoFillTimeToInsetInputValue(e){const{valuePath:t,insetInputValue:n,format:a}=e,{type:i,defaultPickerValue:r,dateFnsLocale:u}=this._adapter.getProps(),o=Sn(n),{nowDate:l,nextDate:c}=ki({defaultPickerValue:r,format:a,dateFnsLocale:u});if(i.includes("Time")){let d="";const f=oe(a.split(" "),"0",P.FORMAT_FULL_DATE),h=oe(a.split(" "),"1",P.FORMAT_TIME_PICKER);switch(t){case"monthLeft.dateInput":const v=o.monthLeft.dateInput;if(!o.monthLeft.timeInput&&v.length===f.length){const m=ne(o.monthLeft.dateInput,f);_e(m)&&(d=X(l,h),o.monthLeft.timeInput=d)}break;case"monthRight.dateInput":const w=o.monthRight.dateInput;if(!o.monthRight.timeInput&&w.length===f.length){const m=ne(w,f);_e(m)&&(d=X(c,h),o.monthRight.timeInput=d)}break}}return o}getInsetInputPlaceholder(){const{type:e,format:t,rangeSeparator:n}=this._adapter.getProps(),a=Pn({type:e,format:t});let i,r;switch(e){case"date":case"month":case"dateRange":i=a;break;case"dateTime":case"dateTimeRange":[i,r]=a.split(" ");break;case"monthRange":i=a+n+a;break}return{datePlaceholder:i,timePlaceholder:r}}getInsetInputValue(e){let{value:t,insetInputValue:n}=e;const{type:a,rangeSeparator:i,format:r}=this._adapter.getProps();let u="";if(Kr(n))u=this.concatInsetInputValue({insetInputValue:n});else{const l=Pn({format:r,type:a});u=this.formatShowText(t,l)}return ra({inputValue:u,type:a,rangeSeparator:i})}concatInsetDateAndTime(e){let{date:t,time:n}=e;return`${t} ${n}`}concatInsetDateRange(e){let{rangeStart:t,rangeEnd:n}=e;const{rangeSeparator:a}=this._adapter.getProps();return`${t}${a}${n}`}concatInsetInputValue(e){let{insetInputValue:t}=e;const{type:n}=this._adapter.getProps();let a="";switch(n){case"date":case"month":case"monthRange":a=t.monthLeft.dateInput;break;case"dateRange":a=this.concatInsetDateRange({rangeStart:t.monthLeft.dateInput,rangeEnd:t.monthRight.dateInput});break;case"dateTime":a=this.concatInsetDateAndTime({date:t.monthLeft.dateInput,time:t.monthLeft.timeInput});break;case"dateTimeRange":const i=this.concatInsetDateAndTime({date:t.monthLeft.dateInput,time:t.monthLeft.timeInput}),r=this.concatInsetDateAndTime({date:t.monthRight.dateInput,time:t.monthRight.timeInput});a=this.concatInsetDateRange({rangeStart:i,rangeEnd:r});break}return a}}function Ar(s){const{insetInputValue:e,valuePath:t,onFocus:n,onChange:a,placeholder:i,forwardRef:r}=s,u=oe(e,t);return b.createElement(gt,{value:u,onChange:(o,l)=>{a({value:o,event:l,insetInputValue:e,valuePath:t})},onFocus:n,placeholder:i,ref:r})}function Fr(s){const{insetInputValue:e,valuePath:t,type:n,onFocus:a,onChange:i,placeholder:r,disabled:u}=s;if(!n.includes("Time"))return null;const l=oe(e,t);return b.createElement(gt,{value:l,onChange:(c,d)=>{i({value:c,event:d,insetInputValue:e,valuePath:t})},onFocus:a,placeholder:r,disabled:u})}var ll=function(s,e){var t={};for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(s);athis.foundation.handleChange(t,n),this.handleEnterPress=t=>this.foundation.handleInputComplete(t),this.handleInputClear=t=>this.foundation.handleInputClear(t),this.handleRangeInputChange=(t,n,a)=>{const i=this.getRangeInputValue(t,n);this.foundation.handleChange(i,a)},this.handleRangeInputClear=t=>{this.foundation.handleRangeInputClear(t)},this.handleRangeInputEnterPress=(t,n,a)=>{const i=this.getRangeInputValue(n,a);this.foundation.handleRangeInputEnterPress(t,i)},this.handleRangeInputEndKeyPress=t=>{this.foundation.handleRangeInputEndKeyPress(t)},this.handleRangeInputFocus=(t,n)=>{this.foundation.handleRangeInputFocus(t,n)},this.handleRangeStartFocus=t=>{this.handleRangeInputFocus(t,"rangeStart")},this.handleInsetInputChange=t=>{this.foundation.handleInsetInputChange(t)},this.getRangeInputValue=(t,n)=>{const{rangeSeparator:a}=this.props;return`${t}${a}${n}`},this.foundation=new ul(this.adapter)}get adapter(){var e=this;return Object.assign(Object.assign({},super.adapter),{updateIsFocusing:t=>this.setState({isFocusing:t}),notifyClick:function(){return e.props.onClick(...arguments)},notifyChange:function(){return e.props.onChange(...arguments)},notifyEnter:function(){return e.props.onEnterPress(...arguments)},notifyBlur:function(){return e.props.onBlur(...arguments)},notifyClear:function(){return e.props.onClear(...arguments)},notifyFocus:function(){return e.props.onFocus(...arguments)},notifyRangeInputClear:function(){return e.props.onRangeClear(...arguments)},notifyRangeInputFocus:function(){return e.props.onFocus(...arguments)},notifyTabPress:function(){return e.props.onRangeEndTabPress(...arguments)},notifyInsetInputChange:t=>this.props.onInsetInputChange(t)})}componentDidMount(){this.foundation.init()}componentWillUnmount(){this.foundation.destroy()}formatText(e){return e&&e.length?this.foundation.formatShowText(e):""}renderRangePrefix(){const{prefix:e,insetLabel:t,prefixCls:n,disabled:a,rangeInputFocus:i}=this.props,r=e||t;return r?b.createElement("div",{className:`${n}-range-input-prefix`,onClick:u=>!a&&!i&&this.handleRangeStartFocus(u),"x-semi-prop":"prefix,insetLabel"},r):null}renderRangeSeparator(e,t){const{disabled:n,rangeSeparator:a,rangeSeparatorNode:i}=this.props,r=Y({[`${N.PREFIX}-range-input-separator`]:!0,[`${N.PREFIX}-range-input-separator-active`]:(e||t)&&!n});return b.createElement("span",{onClick:u=>!n&&this.handleRangeStartFocus(u),className:r},i??a)}renderRangeClearBtn(e,t){const{showClear:n,prefixCls:a,disabled:i,clearIcon:r,showClearIgnoreDisabled:u}=this.props;return(e||t)&&n&&!(i&&!u)?b.createElement("div",{role:"button",tabIndex:0,"aria-label":"Clear range input value",className:`${a}-range-input-clearbtn`,onMouseDown:c=>this.handleRangeInputClear(c)},r||b.createElement(ls,{"aria-hidden":!0})):null}renderRangeSuffix(e){const{prefixCls:t,disabled:n,rangeInputFocus:a}=this.props;return e?b.createElement("div",{className:`${t}-range-input-suffix`,onClick:r=>!n&&!a&&this.handleRangeStartFocus(r)},e):null}renderRangeInput(e){const{placeholder:t,inputStyle:n,disabled:a,inputReadOnly:i,autofocus:r,size:u,text:o,suffix:l,inputCls:c,rangeInputStartRef:d,rangeInputEndRef:f,rangeInputFocus:h,prefixCls:v,rangeSeparator:w,borderless:m}=e,[g,T=""]=o.split(w)||[],y=u==="large"?"default":"small",D=Array.isArray(t)?t:[t,t],[_,I]=D,x=Y(`${v}-range-input-wrapper-start`,`${v}-range-input-wrapper`,{[`${v}-range-input-wrapper-active`]:h==="rangeStart"&&!a,[`${v}-range-input-wrapper-start-with-prefix`]:this.props.prefix||this.props.insetLabel,[`${v}-borderless`]:m}),R=Y(`${v}-range-input-wrapper-end`,`${v}-range-input-wrapper`,{[`${v}-range-input-wrapper-active`]:h==="rangeEnd"&&!a,[`${v}-borderless`]:m});return b.createElement(b.Fragment,null,this.renderRangePrefix(),b.createElement("div",{onClick:C=>!a&&this.handleRangeInputFocus(C,"rangeStart"),className:`${c} ${x}`},b.createElement(gt,{borderless:m,size:y,style:n,disabled:a,readonly:i,placeholder:_,value:g,onChange:(C,E)=>this.handleRangeInputChange(C,T,E),onEnterPress:C=>this.handleRangeInputEnterPress(C,g,T),onFocus:C=>this.handleRangeInputFocus(C,"rangeStart"),autoFocus:r,ref:d})),this.renderRangeSeparator(g,T),b.createElement("div",{className:`${c} ${R}`,onClick:C=>!a&&this.handleRangeInputFocus(C,"rangeEnd")},b.createElement(gt,{borderless:m,size:y,style:n,disabled:a,readonly:i,placeholder:I,value:T,onChange:(C,E)=>this.handleRangeInputChange(g,C,E),onEnterPress:C=>this.handleRangeInputEnterPress(C,g,T),onFocus:C=>this.handleRangeInputFocus(C,"rangeEnd"),onKeyDown:this.handleRangeInputEndKeyPress,ref:f})),this.renderRangeClearBtn(g,T),this.renderRangeSuffix(l))}isRenderMultipleInputs(){const{type:e}=this.props;return e.includes("Range")&&e!=="monthRange"}renderInputInset(){const{type:e,handleInsetDateFocus:t,handleInsetTimeFocus:n,value:a,insetInputValue:i,prefixCls:r,rangeInputStartRef:u,rangeInputEndRef:o,density:l,insetInput:c}=this.props,d=this.foundation.getInsetInputValue({value:a,insetInputValue:i}),{dateStart:f,dateEnd:h,timeStart:v,timeEnd:w}=oe(c,"placeholder",{}),{datePlaceholder:m,timePlaceholder:g}=this.foundation.getInsetInputPlaceholder(),T=`${r}-inset-input-wrapper`,y=`${r}-inset-input-separator`;return b.createElement("div",{className:T,"x-type":e},b.createElement(Ar,{forwardRef:u,insetInputValue:d,placeholder:f??m,valuePath:"monthLeft.dateInput",onChange:this.handleInsetInputChange,onFocus:D=>t(D,"rangeStart")}),b.createElement(Fr,{disabled:!d.monthLeft.dateInput,insetInputValue:d,placeholder:v??g,type:e,valuePath:"monthLeft.timeInput",onChange:this.handleInsetInputChange,onFocus:n}),this.isRenderMultipleInputs()&&b.createElement(b.Fragment,null,b.createElement("div",{className:y},l==="compact"?null:"-"),b.createElement(Ar,{forwardRef:o,insetInputValue:d,placeholder:h??m,valuePath:"monthRight.dateInput",onChange:this.handleInsetInputChange,onFocus:D=>t(D,"rangeEnd")}),b.createElement(Fr,{disabled:!d.monthRight.dateInput,insetInputValue:d,placeholder:w??g,type:e,valuePath:"monthRight.timeInput",onChange:this.handleInsetInputChange,onFocus:n})))}renderTriggerInput(){const e=this.props,{placeholder:t,type:n,value:a,inputValue:i,inputStyle:r,disabled:u,showClear:o,inputReadOnly:l,insetLabel:c,validateStatus:d,block:f,prefixCls:h,multiple:v,dateFnsLocale:w,onBlur:m,onClear:g,onFocus:T,prefix:y,autofocus:D,size:_,inputRef:I,rangeInputStartRef:x,rangeInputEndRef:R,onRangeClear:C,onRangeBlur:E,onRangeEndTabPress:O,rangeInputFocus:k,rangeSeparator:U,insetInput:se,insetInputValue:G,defaultPickerValue:Z,showClearIgnoreDisabled:ce}=e,me=ll(e,["placeholder","type","value","inputValue","inputStyle","disabled","showClear","inputReadOnly","insetLabel","validateStatus","block","prefixCls","multiple","dateFnsLocale","onBlur","onClear","onFocus","prefix","autofocus","size","inputRef","rangeInputStartRef","rangeInputEndRef","onRangeClear","onRangeBlur","onRangeEndTabPress","rangeInputFocus","rangeSeparator","insetInput","insetInputValue","defaultPickerValue","showClearIgnoreDisabled"]),he=b.createElement(Ti,{"aria-hidden":!0}),qe=b.createElement(ou,{"aria-hidden":!0}),Ie=n.includes("Time")?qe:he;let ge="";Be(i)?a&&(ge=this.formatText(a)):ge=i;const xe=Y({[`${h}-input-readonly`]:l,[`${h}-monthRange-input`]:n==="monthRange"}),Re=Object.assign(Object.assign({},this.props),{text:ge,suffix:Ie,inputCls:xe});return this.isRenderMultipleInputs()?this.renderRangeInput(Re):b.createElement(gt,Object.assign({},me,{ref:I,insetLabel:c,disabled:u,showClearIgnoreDisabled:ce,readonly:l,className:xe,style:r,hideSuffix:o,placeholder:n==="monthRange"&&Array.isArray(t)?t[0]+U+t[1]:t,onEnterPress:this.handleEnterPress,onChange:this.handleChange,onClear:this.handleInputClear,suffix:Ie,showClear:o,value:ge,validateStatus:d,prefix:y,autoFocus:D,size:_,onBlur:m,onFocus:T}))}render(){const{insetInput:e}=this.props;return e?this.renderInputInset():this.renderTriggerInput()}}Fn.propTypes={borderless:p.bool,onClick:p.func,onChange:p.func,onEnterPress:p.func,onBlur:p.func,onClear:p.func,onFocus:p.func,value:p.array,disabled:p.bool,type:p.oneOf(P.TYPE_SET),showClear:p.bool,format:p.string,inputStyle:p.object,inputReadOnly:p.bool,insetLabel:p.node,validateStatus:p.string,prefix:p.node,prefixCls:p.string,dateFnsLocale:p.object.isRequired,placeholder:p.oneOfType([p.string,p.array]),rangeInputFocus:p.oneOfType([p.string,p.bool]),rangeInputStartRef:p.object,rangeInputEndRef:p.object,rangeSeparator:p.string,rangeSeparatorNode:p.node,insetInput:p.oneOfType([p.bool,p.object]),insetInputValue:p.object,defaultPickerValue:p.oneOfType([p.string,p.number,p.object,p.array])};Fn.defaultProps={borderless:!1,showClear:!0,onClick:We,onChange:We,onEnterPress:We,onBlur:We,onClear:We,onFocus:We,type:"date",inputStyle:{},inputReadOnly:!1,prefixCls:N.PREFIX,rangeSeparator:P.DEFAULT_SEPARATOR_RANGE};function Ni(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"",n="";const a=typeof e=="number"&&e<10?`0${e}`:e.toString(),i=typeof t=="number"&&t<10?`0${t}`:t.toString();return n=`${String(s)}-${a}-${i}`,n}function cl(s){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const t={dayNumber:"",dateNumberFull:"",fullDate:""},n=li(s),a=X(s,"yyyy"),i=X(s,"MM"),r=Hs(s),u=bs(s),o=Number(X(u,"e",{weekStartsOn:e})),l=[];let c=[];for(let d=1;d{const t=cl(s,e);return{monthText:X(s,"yyyy-MM"),weeks:t,month:s}},Yr={month:je,year:Ds},fl={prevMonth:au,nextMonth:Le,prevYear:ru,nextYear:xn};class hl extends He{constructor(e){super(Object.assign({},e)),this.newBiMonthPanelDate=[this.getState("monthLeft").pickerDate,this.getState("monthRight").pickerDate]}init(){const e=this.getProp("defaultValue");this.initDefaultPickerValue(),this.updateSelectedFromProps(e)}initDefaultPickerValue(){const e=ne(this.getProp("defaultPickerValue"));e&&_e(e)&&(this._updatePanelDetail(P.PANEL_TYPE_LEFT,{pickerDate:e}),this._updatePanelDetail(P.PANEL_TYPE_RIGHT,{pickerDate:Le(e,1)}))}updateSelectedFromProps(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const n=this.getProp("type"),{selected:a,rangeStart:i,rangeEnd:r}=this.getStates();if(e&&(e!=null&&e.length))switch(n){case"date":this._initDatePickerFromValue(e,t);break;case"dateRange":this._initDateRangePickerFromValue(e);break;case"dateTime":this._initDateTimePickerFromValue(e);break;case"dateTimeRange":this._initDateTimeRangePickerFormValue(e);break}else(Array.isArray(e)&&!e.length||!e)&&(ns(a)&&a.size&&this._adapter.updateDaySelected(new Set),i&&this._adapter.setRangeStart(""),r&&this._adapter.setRangeEnd(""))}calcDisabledTime(e){const{disabledTime:t,type:n}=this.getProps();if(typeof t=="function"&&e&&["dateTime","dateTimeRange"].includes(n)){const{rangeStart:a,rangeEnd:i,monthLeft:r}=this.getStates(),u=[];n==="dateTimeRange"?(a&&u.push(a),a&&i&&u.push(i)):r&&r.showDate&&u.push(r.showDate);const o=u.map(c=>c instanceof Date?c:be(c)),l=n==="dateTimeRange"?o:o[0];return t(l,e)}}_initDatePickerFromValue(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const{monthLeft:n}=this._adapter.getStates(),a=Object.assign({},n);this._adapter.updateMonthOnLeft(a);const i=new Set,r=this._isMultiple();r?e.forEach(u=>{u&&i.add(X(u,P.FORMAT_FULL_DATE))}):e[0]&&i.add(X(e[0],P.FORMAT_FULL_DATE)),t?r?!(e!=null&&e.some(o=>o&&je(o,n.pickerDate)===0))&&this.handleShowDateAndTime(P.PANEL_TYPE_LEFT,e[0]||a.pickerDate):this.handleShowDateAndTime(P.PANEL_TYPE_LEFT,e[0]||a.pickerDate):this.handleShowDateAndTime(P.PANEL_TYPE_LEFT,a.pickerDate),this._adapter.updateDaySelected(i)}_initDateRangePickerFromValue(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=this.getState("monthLeft"),a=this.getState("monthRight"),i=this._autoAdjustMonth(Object.assign(Object.assign({},n),{pickerDate:e[0]||n.pickerDate}),Object.assign(Object.assign({},a),{pickerDate:e[1]||a.pickerDate}));if(Array.isArray(e)&&e.filter(c=>c).length>1)this.handleShowDateAndTime(P.PANEL_TYPE_LEFT,i.monthLeft.pickerDate),this.handleShowDateAndTime(P.PANEL_TYPE_RIGHT,i.monthRight.pickerDate);else{const c=e.find(d=>d);if(c){const d=Math.abs(je(c,n.pickerDate))>0,f=Math.abs(je(c,a.pickerDate))>0;d&&f&&(this.handleShowDateAndTime(P.PANEL_TYPE_LEFT,i.monthLeft.pickerDate),this.handleShowDateAndTime(P.PANEL_TYPE_RIGHT,i.monthRight.pickerDate))}}const u=t?P.FORMAT_DATE_TIME:P.FORMAT_FULL_DATE;let o=e[0]&&X(e[0],u),l=e[1]&&X(e[1],u);this._isNeedSwap(o,l)&&([o,l]=[l,o]),this._adapter.setRangeStart(o),this._adapter.setRangeEnd(l),this._adapter.setHoverDay(l)}_initDateTimePickerFromValue(e){this._initDatePickerFromValue(e)}_initDateTimeRangePickerFormValue(e){this._initDateRangePickerFromValue(e,!0)}destroy(){}handleSyncChangeMonths(e){const{panelType:t,target:n}=e,{type:a}=this._adapter.getProps(),{monthLeft:i,monthRight:r}=this._adapter.getStates();this.isRangeType(a)&&(t==="right"&&je(n,i.pickerDate)===0?this.handleYearOrMonthChange("prevMonth","left",1,!0):t==="left"&&je(r.pickerDate,n)===0&&this.handleYearOrMonthChange("nextMonth","right",1,!0))}getTargetChangeDate(e){const{panelType:t,switchType:n}=e,{monthRight:a,monthLeft:i}=this._adapter.getStates(),r=t==="left"?i.pickerDate:a.pickerDate;let u;switch(n){case"prevMonth":u=Le(r,-1);break;case"nextMonth":u=Le(r,1);break;case"prevYear":u=xn(r,-1);break;case"nextYear":u=xn(r,1);break}return u}toMonth(e,t){const{type:n}=this._adapter.getProps(),a=this._getDiff("month",t,e);this.handleYearOrMonthChange(a<0?"prevMonth":"nextMonth",e,Math.abs(a),!1),this.isRangeType(n)&&this.handleSyncChangeMonths({panelType:e,target:t})}toYear(e,t){const n=this._getDiff("year",t,e);this.handleYearOrMonthChange(n<0?"prevYear":"nextYear",e,Math.abs(n),!1)}toYearMonth(e,t){this.toYear(e,t),this.toMonth(e,t)}isRangeType(e){const{type:t}=this.getProps(),n=e||t;return typeof n=="string"&&/range/i.test(n)}handleSwitchMonthOrYear(e,t){const{type:n,syncSwitchMonth:a}=this.getProps(),i=this.isRangeType(n);if(i&&a)this.handleYearOrMonthChange(e,"left",1,!0),this.handleYearOrMonthChange(e,"right",1,!0);else if(this.handleYearOrMonthChange(e,t),i){const r=this.getTargetChangeDate({panelType:t,switchType:e});this.handleSyncChangeMonths({panelType:t,target:r})}}prevMonth(e){this.handleSwitchMonthOrYear("prevMonth",e)}nextMonth(e){this.handleSwitchMonthOrYear("nextMonth",e)}prevYear(e){this.handleSwitchMonthOrYear("prevYear",e)}nextYear(e){this.handleSwitchMonthOrYear("nextYear",e)}_getDiff(e,t,n){const a=this._getPanelDetail(n);return Yr[e]&&Yr[e](t,a.pickerDate)}_getPanelDetail(e){return e===P.PANEL_TYPE_RIGHT?this.getState("monthRight"):this.getState("monthLeft")}localeFormat(e,t){const n=this._adapter.getProp("dateFnsLocale");return X(e,t,{locale:n})}disposeCallbackArgs(e){let t=Array.isArray(e)?e:e&&[e]||[];const n=this.getProp("timeZone");En(n)&&(t=t.map(o=>aa(o,n)));const a=this.getProp("type"),i=this.getProp("format")||$e(a);let r,u;switch(a){case"date":case"dateTime":case"month":this._isMultiple()?(r=t.map(o=>o&&this.localeFormat(o,i)),u=[...t]):(r=t[0]&&this.localeFormat(t[0],i),[u]=t);break;case"dateRange":case"dateTimeRange":r=t.map(o=>o&&this.localeFormat(o,i)),u=[...t];break}return{notifyValue:r,notifyDate:u}}handleYearOrMonthChange(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P.PANEL_TYPE_LEFT,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{autoSwitchDate:i,type:r}=this.getProps(),{monthLeft:u,monthRight:o}=this.getStates(),l=this.isRangeType(r),c=l&&t===P.PANEL_TYPE_LEFT,d=this._getPanelDetail(t),{pickerDate:f}=d,h=fl[e],v=h(f,n),w=t===P.PANEL_TYPE_LEFT&&!De(v,u.pickerDate)||t===P.PANEL_TYPE_RIGHT&&!De(v,o.pickerDate);if(this._updatePanelDetail(t,{pickerDate:v}),w)if(l){if(c?this.newBiMonthPanelDate[0]=v:this.newBiMonthPanelDate[1]=v,!(c&&a)){const{notifyValue:m,notifyDate:g}=this.disposeCallbackArgs(this.newBiMonthPanelDate);this._adapter.notifyPanelChange(g,m)}}else{const{notifyValue:m,notifyDate:g}=this.disposeCallbackArgs(v);this._adapter.notifyPanelChange(g,m)}i&&this.updateDateAfterChangeYM(e,v)}updateDateAfterChangeYM(e,t){const{multiple:n,disabledDate:a,type:i}=this.getProps(),{selected:r,rangeStart:u,rangeEnd:o,monthLeft:l}=this.getStates(),c=["dateRange","dateTimeRange"].includes(e),d={closePanel:!1};if(!n&&!c&&r.size){const f=Array.from(r)[0],h=new Date(f),v=t.getFullYear(),w=t.getMonth();let m=yi(h,{year:v,month:w});if(i==="dateTime"&&(m=this._mergeDateAndTime(m,l.pickerDate)),a(m,{rangeStart:u,rangeEnd:o}))return;this._adapter.notifySelectedChange([m],d)}}_isMultiple(){return!!this.getProp("multiple")&&this.getProp("type")==="date"}_isRange(){}handleDayClick(e,t){const n=this.getProp("type");switch(!0){case(n==="date"||n==="dateTime"):this.handleDateSelected(e,t);break;case(n==="dateRange"||n==="dateTimeRange"):this.handleRangeSelected(e);break}}handleDateSelected(e,t){const{max:n,type:a,isControlledComponent:i,dateFnsLocale:r}=this.getProps(),u=this._isMultiple(),{selected:o}=this.getStates(),l=this._getPanelDetail(t),c=new Set(u?[...o]:[]),{fullDate:d}=e,f=l.pickerDate,h=d;u?c.has(h)?c.delete(h):n&&c.size===n?this._adapter.notifyMaxLimit():c.add(h):c.add(h);const v=[...c].map(w=>a==="dateTime"?this._mergeDateAndTime(w,f):ne(w,P.FORMAT_FULL_DATE,void 0,r));this.handleShowDateAndTime(t,f),i||this._adapter.updateDaySelected(c),this._adapter.notifySelectedChange(v)}handleShowDateAndTime(e,t,n){const a=n||t;this._updatePanelDetail(e,{showDate:a,pickerDate:t})}_mergeDateAndTime(e,t){const n=this._adapter.getProp("dateFnsLocale"),a=X(_e(e)?e:ne(e,P.FORMAT_FULL_DATE,void 0,n),P.FORMAT_FULL_DATE),i=X(_e(t)?t:ne(t,P.FORMAT_TIME_PICKER,void 0,n),P.FORMAT_TIME_PICKER),r=this.getValidTimeFormat();return ne(`${a} ${i}`,r,void 0,n)}handleRangeSelected(e){let{rangeStart:t,rangeEnd:n}=this.getStates();const{startDateOffset:a,endDateOffset:i,type:r,dateFnsLocale:u,rangeInputFocus:o,triggerRender:l}=this._adapter.getProps(),{fullDate:c}=e;let d=!1,f=!1;const h=(a||i)&&r==="dateRange";h?(t=St(a,c),n=St(i,c)):o==="rangeEnd"?(n=c,t&&n&&it(n,t.trim().split(/\s+/)[0])&&(t=null,d=!0)):(o==="rangeStart"||!o)&&(t=c,t&&n&&it(n.trim().split(/\s+/)[0],t)&&(n=null,f=!0)),/range/i.test(r)&&(h?(this._adapter.setRangeStart(t),this._adapter.setRangeEnd(n)):o==="rangeEnd"?(this._adapter.setRangeEnd(n),d&&this._adapter.setRangeStart(t),(!this._adapter.isAnotherPanelHasOpened("rangeEnd")||!t)&&this._adapter.setRangeInputFocus("rangeStart")):(o==="rangeStart"||!o)&&(this._adapter.setRangeStart(t),f&&this._adapter.setRangeEnd(n),(!this._adapter.isAnotherPanelHasOpened("rangeStart")||!n)&&this._adapter.setRangeInputFocus("rangeEnd")));const w=this.getValidDateFormat();if(t||n){const[m,g]=[ne(t,w,void 0,u),ne(n,w,void 0,u)];let T=[m,g];if(r==="dateTimeRange"){const D=this.getState("monthLeft").pickerDate,_=this.getState("monthRight").pickerDate,I=t?this._mergeDateAndTime(t,D):null,x=n?this._mergeDateAndTime(n,_):null;ua(m,g)&&it(x,I)?T=[I,I]:T=[I,x]}const y=!(r==="dateRange"&&h);this._adapter.notifySelectedChange(T,{needCheckFocusRecord:y})}}_isNeedSwap(e,t){return e&&t&&it(t,e)}handleDayHover(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{fullDate:""};const{fullDate:t}=e,{startDateOffset:n,endDateOffset:a,type:i}=this.getProps();if(this._adapter.setHoverDay(t),(n||a)&&i==="dateRange"){const r=St(n,t),u=St(a,t);this._adapter.setOffsetRangeStart(r),this._adapter.setOffsetRangeEnd(u)}}_autoAdjustMonth(e,t){let n=e,a=t;const i=je(e.pickerDate,t.pickerDate);return i>0?(n=Object.assign({},t),a=Object.assign({},e)):i===0&&(n=e,a=Object.assign(Object.assign({},t),{pickerDate:Le(t.pickerDate,1)})),{monthLeft:n,monthRight:a}}getValidTimeFormat(){const e=this.getProp("format")||P.FORMAT_TIME_PICKER,t=[];return(Et(e,"h")||Et(e,"H"))&&t.push("HH"),Et(e,"m")&&t.push("mm"),Et(e,"s")&&t.push("ss"),t.join(":")}getValidDateFormat(){return this.getProp("format")||Du(this.getProp("type"))}handleTimeChange(e,t){const{rangeEnd:n,rangeStart:a}=this.getStates(),i=this.getProp("dateFnsLocale"),r=e.timeStampValue,u=this.getProp("type"),o=this._getPanelDetail(t),{showDate:l}=o,c=new Date(r),d=this.getValidDateFormat(),f=t===P.PANEL_TYPE_RIGHT?n:a;let h,v,w;if(u==="dateTimeRange"&&f){const I=ne(f,d,void 0,i);h=I.getFullYear(),v=I.getMonth(),w=I.getDate()}else h=l.getFullYear(),v=l.getMonth(),w=l.getDate();const m=c.getHours(),g=c.getMinutes(),T=c.getSeconds(),y=c.getMilliseconds(),D=[h,v,w,m,g,T,y],_=new Date(...D);if(u==="dateTimeRange")this.handleShowDateAndTime(t,_,l),this._updateTimeInDateRange(t,_);else{const I=Ni(h,v+1,w);this.handleDateSelected({fullDate:I,fullValidDate:_},t),this.handleShowDateAndTime(t,_),this._adapter.notifySelectedChange([_])}}_updateTimeInDateRange(e,t){const{isControlledComponent:n,dateFnsLocale:a}=this.getProps();let i=this.getState("rangeStart"),r=this.getState("rangeEnd");const u=this.getValidDateFormat();if(i&&r){let o=ne(i,u,void 0,a),l=ne(r,u,void 0,a);e===P.PANEL_TYPE_RIGHT?(l=this._mergeDateAndTime(t,t),r=X(l,P.FORMAT_DATE_TIME),this._isNeedSwap(i,r)&&([i,r]=[r,i],[o,l]=[l,o]),n||this._adapter.setRangeEnd(r)):(o=this._mergeDateAndTime(t,t),i=X(o,P.FORMAT_DATE_TIME),this._isNeedSwap(i,r)&&([i,r]=[r,i],[o,l]=[l,o]),n||this._adapter.setRangeStart(i)),this._adapter.notifySelectedChange([o,l])}}_updatePanelDetail(e,t){const{monthLeft:n,monthRight:a}=this.getStates();e===P.PANEL_TYPE_RIGHT?this._adapter.updateMonthOnRight(Object.assign(Object.assign({},a),t)):this._adapter.updateMonthOnLeft(Object.assign(Object.assign({},n),t))}showYearPicker(e){this._updatePanelDetail(e,{isTimePickerOpen:!1,isYearPickerOpen:!0})}showTimePicker(e,t){this.getProp("disabledTimePicker")||this._updatePanelDetail(e,{isTimePickerOpen:!0,isYearPickerOpen:!1})}showDatePanel(e){this._updatePanelDetail(e,{isTimePickerOpen:!1,isYearPickerOpen:!1})}getYAMOpenType(){const{monthLeft:e,monthRight:t}=this._adapter.getStates(),n=e.isYearPickerOpen,a=t.isYearPickerOpen;return n&&a?"both":n?"left":a?"right":"none"}}const Lr=N.NAVIGATION;class pa extends J.PureComponent{constructor(e){super(e),this.navRef=b.createRef()}render(){const{forwardRef:e,monthText:t,onMonthClick:n,onNextMonth:a,onPrevMonth:i,onPrevYear:r,onNextYear:u,density:o,shouldBimonthSwitch:l,panelType:c}=this.props,d="borderless",f=o==="compact"?"default":"large",h=!0,v=o==="compact"?"small":"default",w=c===P.PANEL_TYPE_LEFT,m=c===P.PANEL_TYPE_RIGHT,g=l&&w,T=l&&m,y={},D={};T&&(y.visibility="hidden"),g&&(D.visibility="hidden");const _=e||this.navRef;return b.createElement("div",{className:Lr,ref:_},b.createElement(pt,{key:"double-chevron-left","aria-label":"Previous year",icon:b.createElement(du,{"aria-hidden":!0,size:f}),size:v,theme:d,noHorizontalPadding:h,onClick:r,style:y}),b.createElement(pt,{key:"chevron-left","aria-label":"Previous month",icon:b.createElement(Zr,{"aria-hidden":!0,size:f}),size:v,onClick:i,theme:d,noHorizontalPadding:h,style:y}),b.createElement("div",{className:`${Lr}-month`},b.createElement(yt,{onClick:n,theme:d,size:v},b.createElement("span",null,t))),b.createElement(pt,{key:"chevron-right","aria-label":"Next month",icon:b.createElement(as,{"aria-hidden":!0,size:f}),size:v,onClick:a,theme:d,noHorizontalPadding:h,style:D}),b.createElement(pt,{key:"double-chevron-right","aria-label":"Next year",icon:b.createElement(hu,{"aria-hidden":!0,size:f}),size:v,theme:d,noHorizontalPadding:h,onClick:u,style:D}))}}pa.propTypes={monthText:p.string,density:p.string,onMonthClick:p.func,onNextMonth:p.func,onPrevMonth:p.func,onNextYear:p.func,onPrevYear:p.func,navPrev:p.node,navNext:p.node,shouldBimonthSwitch:p.bool,panelType:p.oneOf([P.PANEL_TYPE_LEFT,P.PANEL_TYPE_RIGHT])};pa.defaultProps={monthText:"",onMonthClick:Q,onNextMonth:Q,onPrevMonth:Q,onNextYear:Q,onPrevYear:Q};const pl=s=>{let{weekStartsOn:e=0}=s;const t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let n=0;n{this._adapter.notifyWeeksRowNumChange(i.length)})}}updateWeekDays(){const e=this._adapter.getProp("weekStartsOn"),t=pl({weekStartsOn:e});this._adapter.setWeekDays(t)}destroy(){}handleClick(e){this._adapter.notifyDayClick(e)}handleHover(e){this._adapter.notifyDayHover(e)}}const gl=N.PREFIX;class ma extends Ue{constructor(e){super(e),this.state={weekdays:[],month:{weeks:[],monthText:""},todayText:"",weeksRowNum:e.weeksRowNum},this.monthRef=b.createRef()}get adapter(){return Object.assign(Object.assign({},super.adapter),{updateToday:e=>this.setState({todayText:e}),setWeekDays:e=>this.setState({weekdays:e}),setWeeksRowNum:(e,t)=>this.setState({weeksRowNum:e},t),updateMonthTable:e=>this.setState({month:e}),notifyDayClick:e=>this.props.onDayClick(e),notifyDayHover:e=>this.props.onDayHover(e),notifyWeeksRowNumChange:e=>this.props.onWeeksRowNumChange(e)})}componentDidMount(){this.foundation=new ml(this.adapter),this.foundation.init()}componentWillUnmount(){this.foundation.destroy()}componentDidUpdate(e,t){e.month!==this.props.month&&this.foundation.getMonthTable()}getSingleDayStatus(e){const{rangeInputFocus:t}=this.props,{fullDate:n,todayText:a,selected:i,disabledDate:r,rangeStart:u,rangeEnd:o}=e,l={rangeStart:u,rangeEnd:o,rangeInputFocus:t},c=n===a,d=i.has(n);let f=r&&r(be(n),l);return!f&&this.props.rangeInputFocus==="rangeStart"&&o&&this.props.focusRecordsRef&&this.props.focusRecordsRef.current.rangeEnd&&(f=Ma(n,o.trim().split(/\s+/)[0])),!f&&this.props.rangeInputFocus==="rangeEnd"&&u&&this.props.focusRecordsRef&&this.props.focusRecordsRef.current.rangeStart&&(f=it(n,u.trim().split(/\s+/)[0])),{isToday:c,isSelected:d,isDisabled:f}}getDateRangeStatus(e){const{rangeStart:t,rangeEnd:n,fullDate:a,hoverDay:i,offsetRangeStart:r,offsetRangeEnd:u,rangeInputFocus:o}=e,l=!!(t||n),c=!!(t&&n),d=r||u;if(!l)return{};const f=Ye(i,a);let h,v,w,m,g;t&&(w=Ye(a,t),o==="rangeEnd"&&(h=et(a,{start:t,end:i}))),n&&(m=Ye(a,n),o==="rangeStart"&&(v=et(a,{start:i,end:n}))),!c&&l&&(g=f);let T;d||(T=h||v||f);let y,D,_,I,x,R;return c&&(y=et(a,{start:t,end:n}),d||(D=w&&Ma(t,i),_=m&&it(n,i),I=f&&o==="rangeStart",x=f&&o==="rangeEnd",R=f&&et(i,{start:t,end:n}))),{isHoverDay:f,isSelectedStart:w,isSelectedEnd:m,isInRange:y,isHover:T,isSelectedStartAfterHover:D,isSelectedEndBeforeHover:_,isHoverDayInRange:R,isHoverDayInStartSelection:I,isHoverDayInEndSelection:x,isHoverDayAroundOneSelected:g}}getOffsetDateStatus(e){const{offsetRangeStart:t,offsetRangeEnd:n,rangeStart:a,rangeEnd:i,fullDate:r,hoverDay:u}=e;if(!(t||n))return{};const l=et(r,{start:a,end:i}),c=Ye(u,r),d=a&&Ye(r,a),f=i&&Ye(r,i),h=!!(a&&i),v=Ye(r,t),w=Ye(r,n),m=c;let g,T;return h&&(g=l&&c),!!(t&&n)&&(T=d||et(r,{start:t,end:n})||f),{isOffsetRangeStart:v,isOffsetRangeEnd:w,isHoverInOffsetRange:g,isHoverDayOffset:m,isInOffsetRange:T}}getDayStatus(e,t){const{fullDate:n}=e,{hoverDay:a,rangeStart:i,rangeEnd:r,todayText:u,offsetRangeStart:o,offsetRangeEnd:l,disabledDate:c,selected:d,rangeInputFocus:f}=t,h=this.getSingleDayStatus({fullDate:n,todayText:u,hoverDay:a,selected:d,disabledDate:c,rangeStart:i,rangeEnd:r}),v=this.getDateRangeStatus(Object.assign({fullDate:n,rangeStart:i,rangeEnd:r,hoverDay:a,offsetRangeStart:o,offsetRangeEnd:l,rangeInputFocus:f},h)),w=this.getOffsetDateStatus(Object.assign(Object.assign({offsetRangeStart:o,offsetRangeEnd:l,rangeStart:i,rangeEnd:r,fullDate:n,hoverDay:a},h),v));return Object.assign(Object.assign(Object.assign({},h),v),w)}renderDayOfWeek(){const{locale:e}=this.props,t=Y(N.WEEKDAY),n=Y(`${gl}-weekday-item`),{weekdays:a}=this.state,i=a.map(r=>e.weeks[r]);return b.createElement("div",{role:"row",className:t},i.map((r,u)=>b.createElement("div",{role:"columnheader",key:r+u,className:n},r)))}renderWeeks(){const{month:e}=this.state,{weeks:t}=e,{weeksRowNum:n}=this.props;let a={};n&&(a={height:n*ut.WEEK_HEIGHT});const i=Y(N.WEEKS);return b.createElement("div",{className:i,style:a},t.map((r,u)=>this.renderWeek(r,u)))}renderWeek(e,t){const n=N.WEEK;return b.createElement("div",{role:"row",className:n,key:t},e.map((a,i)=>this.renderDay(a,i)))}renderDay(e,t){const{todayText:n}=this.state,{renderFullDate:a,renderDate:i}=this.props,{fullDate:r,dayNumber:u}=e;if(!r)return b.createElement("div",{role:"gridcell",tabIndex:-1,key:u+t,className:N.DAY},b.createElement("span",null));const o=this.getDayStatus(e,Object.assign({todayText:n},this.props)),l=Y(N.DAY,{[N.DAY_TODAY]:o.isToday,[N.DAY_IN_RANGE]:o.isInRange,[N.DAY_HOVER]:o.isHover,[N.DAY_SELECTED]:o.isSelected,[N.DAY_SELECTED_START]:o.isSelectedStart,[N.DAY_SELECTED_END]:o.isSelectedEnd,[N.DAY_DISABLED]:o.isDisabled,[N.DAY_HOVER_DAY]:o.isHoverDayOffset,[N.DAY_IN_OFFSET_RANGE]:o.isInOffsetRange,[N.DAY_SELECTED_RANGE_HOVER]:o.isHoverInOffsetRange,[N.DAY_OFFSET_RANGE_START]:o.isOffsetRangeStart,[N.DAY_OFFSET_RANGE_END]:o.isOffsetRangeEnd,[N.DAY_SELECTED_START_AFTER_HOVER]:o.isSelectedStartAfterHover,[N.DAY_SELECTED_END_BEFORE_HOVER]:o.isSelectedEndBeforeHover,[N.DAY_HOVER_DAY_BEFORE_RANGE]:o.isHoverDayInStartSelection,[N.DAY_HOVER_DAY_AFTER_RANGE]:o.isHoverDayInEndSelection,[N.DAY_HOVER_DAY_AROUND_SINGLE_SELECTED]:o.isHoverDayAroundOneSelected}),c=Y({[`${N.DAY}-main`]:!0}),d=[u,r,o],f=st(a);return b.createElement("div",{role:"gridcell",tabIndex:o.isDisabled?-1:0,"aria-disabled":o.isDisabled,"aria-selected":o.isSelected,"aria-label":r,className:f?N.DAY:l,title:r,key:u+t,onClick:h=>!o.isDisabled&&this.foundation.handleClick(e),onMouseEnter:()=>this.foundation.handleHover(e),onMouseLeave:()=>this.foundation.handleHover()},f?a(...d):b.createElement("div",{className:c},st(i)?i(u,r):b.createElement("span",null,u)))}render(){const{forwardRef:e,multiple:t}=this.props,n=this.renderDayOfWeek(),a=this.renderWeeks(),i=Y(N.MONTH),r=e||this.monthRef;return b.createElement("div",{role:"grid","aria-multiselectable":t,ref:r,className:i},n,a)}}ma.propTypes={month:p.object,selected:p.object,rangeStart:p.string,rangeEnd:p.string,offsetRangeStart:p.string,offsetRangeEnd:p.string,onDayClick:p.func,onDayHover:p.func,weekStartsOn:p.number,disabledDate:p.func,weeksRowNum:p.number,onWeeksRowNumChange:p.func,renderDate:p.func,renderFullDate:p.func,hoverDay:p.string,startDateOffset:p.func,endDateOffset:p.func,rangeInputFocus:p.oneOfType([p.string,p.bool]),focusRecordsRef:p.object,multiple:p.bool};ma.defaultProps={month:new Date,selected:new Set,rangeStart:"",rangeEnd:"",onDayClick:Q,onDayHover:Q,onWeeksRowNumChange:Q,weekStartsOn:ut.WEEK_START_ON,disabledDate:Tt,weeksRowNum:0};const $r="time",vl="timeRange",at={DEFAULT_TYPE:$r,SIZE:Qr.SIZE,DEFAULT_FORMAT:"HH:mm:ss",DEFAULT_FORMAT_A:"a h:mm:ss",DEFAULT_POSITION:{[$r]:"bottomLeft",[vl]:"bottomLeft"}},ye={PREFIX:`${B}-scrolllist`,SELECTED:`${B}-scrolllist-item-selected`},yl={MODE:["normal","wheel"]},In={DEFAULT_ITEM_HEIGHT:36,DEFAULT_SCROLL_DURATION:120};var zn,Hr;function Tl(){if(Hr)return zn;Hr=1;var s=Vi(),e=Bi(),t=rs(),n=9007199254740991,a=4294967295,i=Math.min;function r(u,o){if(u=t(u),u<1||u>n)return[];var l=a,c=i(u,a);o=e(o),u-=a;for(var d=s(c,o);++l-1&&Array.isArray(a)&&a.length&&K(t)){const i=e%a.length,r=a[i],u=t.children[e];this._adapter.setSelectedNode(u),this._adapter.notifySelectItem(Object.assign(Object.assign({},r),{value:r.value,type:n,index:i}))}}selectNode(e,t){const{type:n,list:a}=this.getProps();if(K(e)&&K(t)){const r=rt(t.children,c=>c===e)%a.length,o=rt(t.children,c=>c===this._cachedSelectedNode)%a.length,l=a[r];this._adapter.setSelectedNode(e),this._adapter.scrollToCenter(e),this._cachedSelectedNode!==e&&(this._cachedSelectedNode=e,o!==r&&this._adapter.notifySelectItem(Object.assign(Object.assign({},l),{value:l.value,type:n,index:r})))}}shouldAppend(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:2;const a="li";if(K(e)&&K(t)){const i=e.querySelectorAll(a),r=i[i.length-1],{list:u}=this.getProps();if(r){const o=t.getBoundingClientRect(),l=r.getBoundingClientRect(),c=l.height*u.length;if(c<=0)return 0;let d=l.top,f=0;for(;d<=o.top+o.height*n;)f+=1,d+=c;return f}}return!1}shouldPrepend(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:2;const a="li";if(K(e)&&K(t)){const r=e.querySelectorAll(a)[0],{list:u}=this.getProps();if(r){const o=t.getBoundingClientRect(),l=r.getBoundingClientRect(),c=l.height*u.length;if(c<=0)return 0;let d=l.top,f=0;for(;d+l.height>=o.top-o.height*n;)f+=1,d-=c;return f}}return 0}initWheelList(e,t,n){const{list:a}=this.getProps();if(K(t)&&K(e)&&a&&a.length){const i=e.children;Un(i,0,a.length);const r=this.shouldPrepend(e,t),u=this.shouldAppend(e,t);this._adapter.setState({prependCount:r,appendCount:u},n)}}adjustInfiniteList(e,t,n){const{list:a}=this.getProps(),i="li";if(K(t)&&K(e)&&a&&a.length){const r=e.querySelectorAll(i),u=r.length,o=1,l=this.shouldPrepend(e,t,o),c=this.shouldAppend(e,t,o);if(l)for(let d=0;d{const f=l.getBoundingClientRect().top,h=Math.abs(f-a);h{if(f===a||f.contains(a))return o=h,u>0&&(l=h%u),!0});return l>-1&&(c=r[l]),{targetNode:d,targetIndex:o,indexInList:l,infoInList:c}}return null}}const bl=(s,e,t)=>{const n=new vs({from:{scrollTop:s.scrollTop},to:{scrollTop:e}},{duration:t});return n.on("frame",a=>{let{scrollTop:i}=a;s.scrollTop=i}),n},qr=1e3/60,Wr=/^\s*$/,On="wheel";class ke extends Ue{constructor(){var e;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(t),e=this,this._cacheNode=(n,a)=>n&&a&&Object.prototype.hasOwnProperty.call(this,n)&&(this[n]=a),this._cacheSelectedNode=n=>this._cacheNode("selectedNode",n),this._cacheWillSelectNode=n=>this._cacheNode("willSelectNode",n),this._cacheListNode=n=>this._cacheNode("list",n),this._cacheSelectorNode=n=>this._cacheNode("selector",n),this._cacheWrapperNode=n=>this._cacheNode("wrapper",n),this._isFirst=n=>{const{list:a}=this;if(K(n)&&K(a)){const i=a.children;return rt(i,n)===0}return!1},this._isLast=n=>{const{list:a}=this;if(K(n)&&K(a)){const{children:i}=a;return rt(i,n)===i.length-1}return!1},this.indexIsSame=(n,a)=>{const{list:i}=this.props;if(i.length)return n%i.length===a%i.length},this.isDisabledIndex=n=>{const{list:a}=this.props;if(Array.isArray(a)&&a.length&&n>-1){const i=a.length,r=n%i;return this.isDisabledData(a[r])}return!1},this.isDisabledNode=n=>{const a=this.list;if(K(n)&&K(a)){const i=rt(a.children,r=>r===n);return this.isDisabledIndex(i)}return!1},this.isDisabledData=n=>n&&typeof n=="object"&&n.disabled,this.isWheelMode=()=>this.props.mode===On,this.addClassToNode=function(n){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ye.SELECTED;const{list:i}=e;if(n=n||e.selectedNode,K(n)&&K(i)){const{children:r}=i,u=new RegExp(`\\s*${a}\\s*`,"g");is(r,o=>{o.className=o.className&&o.className.replace(u," "),Wr.test(o.className)&&(o.className="")}),n.className&&!Wr.test(n.className)?n.className+=` ${a}`:n.className=a}},this.getIndexByNode=n=>rt(this.list.children,n),this.getNodeByIndex=n=>n>-1?Qn(this.list.children,(i,r)=>r===n):Qn(this.list.children,i=>!this.isDisabledNode(i)),this.scrollToIndex=(n,a)=>{a=typeof a=="number"?a:In.DEFAULT_SCROLL_DURATION,n=n??this.props.selectedIndex,this.scrollToNode(this.selectedNode,a)},this.scrollToNode=(n,a)=>{const{wrapper:i}=this,r=i.offsetHeight,u=this.getItmHeight(n),o=(n.offsetTop||this.list.children.length*u/2)-(r-u)/2;this.scrollToPos(o,a)},this.scrollToPos=function(n){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:In.DEFAULT_SCROLL_DURATION;const{wrapper:i}=e;if(a&&e.props.motion)if(e.scrollAnimation&&(e.scrollAnimation.destroy(),e.scrolling=!1),i.scrollTop===n){if(e.isWheelMode()){const r=e.foundation.getNearestNodeInfo(e.list,e.selector);e.addClassToNode(r.nearestNode)}}else e.scrollAnimation=bl(i,n,a),e.scrollAnimation.on("rest",()=>{if(e.isWheelMode()){const r=e.foundation.getNearestNodeInfo(e.list,e.selector);e.addClassToNode(r.nearestNode)}}),e.scrollAnimation.start();else i.scrollTop=n},this.scrollToSelectItem=n=>{const{nearestNode:a}=this.foundation.getNearestNodeInfo(this.list,this.selector);this.props.cycled&&this.throttledAdjustList(n,a),this.debouncedSelect(n,a)},this.scrollToCenter=(n,a,i)=>{if(n=n||this.selectedNode,a=a||this.wrapper,K(n)&&K(a)){const r=a.getBoundingClientRect(),u=n.getBoundingClientRect(),o=a.scrollTop+(u.top-(r.top+r.height/2-u.height/2));this.scrollToPos(o,typeof i=="number"?i:In.DEFAULT_SCROLL_DURATION)}},this.clickToSelectItem=n=>{n&&n.nativeEvent&&n.nativeEvent.stopImmediatePropagation();const{targetNode:a,infoInList:i}=this.foundation.getTargetNode(n,this.list);a&&i&&!i.disabled&&this.debouncedSelect(null,a)},this.getItmHeight=n=>n&&n.offsetHeight||In.DEFAULT_ITEM_HEIGHT,this.renderItemList=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";const{selectedIndex:a,mode:i,transform:r,list:u}=e.props;return u.map((o,l)=>{const{transform:c}=o,d=typeof c=="function"?c:r,f=a===l,h=Y({[`${ye.PREFIX}-item-sel`]:f&&i!==On,[`${ye.PREFIX}-item-disabled`]:!!o.disabled});let v="";f&&typeof d=="function"?v=d(o.value,o.text):v=o.text==null?o.value:o.text;const w={};return!e.isWheelMode()&&!o.disabled&&(w.onClick=()=>e.foundation.selectIndex(l,e.list)),b.createElement("li",Object.assign({key:n+l},w,{className:h,role:"option","aria-disabled":o.disabled}),v)})},this.renderNormalList=()=>{const{list:n,className:a,style:i}=this.props,r=this.renderItemList(),u=Y(`${ye.PREFIX}-item`,a);return b.createElement("div",{style:i,className:u,ref:this._cacheWrapperNode},b.createElement("ul",{role:"listbox","aria-multiselectable":!1,"aria-label":this.props["aria-label"],ref:this._cacheListNode},r))},this.renderInfiniteList=()=>{const{list:n,cycled:a,className:i,style:r}=this.props,{prependCount:u,appendCount:o}=this.state,l=Ur(u).reduce((g,T)=>{const y=this.renderItemList(`pre_${T}_`);return g.unshift(...y),g},[]),c=Ur(o).reduce((g,T)=>{const y=this.renderItemList(`app_${T}_`);return g.push(...y),g},[]),d=this.renderItemList(),f=Y(`${ye.PREFIX}-list-outer`,{[`${ye.PREFIX}-list-outer-nocycle`]:!a}),h=Y(`${ye.PREFIX}-item-wheel`,i),v=Y(`${ye.PREFIX}-selector`),w=Y(`${ye.PREFIX}-shade`,`${ye.PREFIX}-shade-pre`),m=Y(`${ye.PREFIX}-shade`,`${ye.PREFIX}-shade-post`);return b.createElement("div",{className:h,style:r},b.createElement("div",{className:w}),b.createElement("div",{className:v,ref:this._cacheSelectorNode}),b.createElement("div",{className:m}),b.createElement("div",{className:f,ref:this._cacheWrapperNode,onScroll:this.scrollToSelectItem},b.createElement("ul",{role:"listbox","aria-label":this.props["aria-label"],"aria-multiselectable":!1,ref:this._cacheListNode,onClick:this.clickToSelectItem},l,d,c)))},this.state={prependCount:0,appendCount:0},this.selectedNode=null,this.willSelectNode=null,this.list=null,this.wrapper=null,this.selector=null,this.scrollAnimation=null,this.foundation=new Dl(this.adapter),this.throttledAdjustList=Xi((n,a)=>{this.foundation.adjustInfiniteList(this.list,this.wrapper,a)},qr),this.debouncedSelect=cs((n,a)=>{this._cacheSelectedNode(a),this.foundation.selectNode(a,this.list)},qr*2)}get adapter(){var e=this;return Object.assign(Object.assign({},super.adapter),{setState:(t,n)=>this.setState(Object.assign({},t),n),setPrependCount:t=>this.setState({prependCount:t}),setAppendCount:t=>this.setState({appendCount:t}),isDisabledIndex:this.isDisabledIndex,setSelectedNode:t=>this._cacheWillSelectNode(t),notifySelectItem:function(){return e.props.onSelect(...arguments)},scrollToCenter:this.scrollToCenter})}componentWillUnmount(){this.props.cycled&&(this.throttledAdjustList.cancel(),this.debouncedSelect.cancel())}componentDidMount(){this.foundation.init();const{mode:e,cycled:t,selectedIndex:n,list:a}=this.props,i=this.getNodeByIndex(typeof n=="number"&&n>-1?n:0);this._cacheSelectedNode(i),this._cacheWillSelectNode(i),e===On&&t?this.foundation.initWheelList(this.list,this.wrapper,()=>{this.scrollToNode(i,0)}):this.scrollToNode(i,0)}componentDidUpdate(e){const{selectedIndex:t}=this.props;if(e.selectedIndex!==t){const n=this.getIndexByNode(this.willSelectNode);if(!this.indexIsSame(n,t)){const a=this.getNodeByOffset(this.selectedNode,t-e.selectedIndex,this.list);this._cacheWillSelectNode(a)}this._cacheSelectedNode(this.willSelectNode),this.scrollToIndex(t)}}getNodeByOffset(e,t,n){const{list:a}=this.props;if(K(e)&&K(n)&&typeof t=="number"&&Array.isArray(a)&&a.length){t=t%a.length;let r=this.getIndexByNode(e)+t;for(;r<0;)r+=a.length;if(t)return this.getNodeByIndex(r)}return e}render(){return this.isWheelMode()?this.renderInfiniteList():this.renderNormalList()}}ke.propTypes={mode:p.oneOf(yl.MODE),cycled:p.bool,list:p.array,selectedIndex:p.number,onSelect:p.func,transform:p.func,className:p.string,style:p.object,motion:p.oneOfType([p.func,p.bool]),type:p.oneOfType([p.string,p.number])};ke.defaultProps={selectedIndex:0,motion:!0,list:[],onSelect:Q,cycled:!1,mode:On};class _l extends He{}var Cl=function(s,e){var t={};for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(s);a{let t=`${s}`;s<10&&(t=`0${s}`);let n=!1;return e&&e.indexOf(s)>=0&&(n=!0),{value:t,disabled:n}};function Zn(s,e,t){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;const a=[];for(let i=0;ia<12).map(a=>a===0?12:a):n=n.map(a=>a===12?12:a-12)),n}getValidFormat(e){let t=Be(e)?this.getProp("format"):e;return t=this.getDefaultFormatIfNeed(),t=typeof t=="string"?t:at.DEFAULT_FORMAT,t}getDisplayDateFromTimeStamp(e){let t;return e&&(t=new Date(e)),!e||!_e(t)?this.createDateDefault():t}createDateDefault(){const e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate())}}class ga extends Ue{constructor(e){super(e),this.cacheRefCurrent=(t,n)=>{t&&typeof t=="string"&&this.adapter.setCache(t,n)},this.reselect=()=>{["ampm","hour","minute","second"].forEach(n=>{const a=this.adapter.getCache(n);a&&a.scrollToIndex&&a.scrollToIndex()})},this.onItemChange=t=>{let{type:n,value:a,disabled:i}=t,{onChange:r,use12Hours:u,isAM:o,format:l,timeStampValue:c}=this.props;const d=this.foundation.getDisplayDateFromTimeStamp(c);if(n==="hour")u?o?d.setHours(Number(a)%12):d.setHours(Number(a)%12+12):d.setHours(Number(a));else if(n==="minute")d.setMinutes(Number(a));else if(n==="ampm"){const f=a.toUpperCase();u&&(f==="PM"&&(o=!1,d.getHours()<12&&d.setHours(d.getHours()%12+12)),f==="AM"&&(o=!0,d.getHours()>=12&&d.setHours(d.getHours()-12)))}else d.setSeconds(Number(a));r&&r({isAM:o,value:X(d,l&&l.replace(/(\s+)A/g,"$1a")),timeStampValue:Number(d)})},this.onEnterSelectPanel=t=>{const{onCurrentSelectPanelChange:n}=this.props;n(t)},this.getDisplayDateFromTimeStamp=t=>this.foundation.getDisplayDateFromTimeStamp(t),this.foundation=new Il(this.adapter),this.state=Object.assign({},this.foundation.initData())}componentDidUpdate(e,t){(e.timeStampValue!==this.props.timeStampValue||e.format!==this.props.format||e.hideDisabledOptions!==this.props.hideDisabledOptions||e.use12Hours!==this.props.use12Hours||e.hourStep!==this.props.hourStep||e.minuteStep!==this.props.minuteStep||e.secondStep!==this.props.secondStep||e.disabledHours!==this.props.disabledHours||e.disabledMinutes!==this.props.disabledMinutes||e.disabledSeconds!==this.props.disabledSeconds)&&this.setState(Object.assign({},this.foundation.initData()))}componentWillUnmount(){}componentDidMount(){}renderHourSelect(e,t){const{prefixCls:n,disabledHours:a,use12Hours:i,scrollItemProps:r}=this.props,{showHour:u,hourOptions:o}=this.state;if(!u)return null;const l=a();let c,d;i?(c=[12].concat(o.filter(v=>v<12&&v>0)),d=e%12||12):(c=o,d=e);const f=v=>v+t.hour,h=`${n}-list-hour`;return b.createElement(ke,Object.assign({ref:v=>this.cacheRefCurrent("hour",v),mode:"normal",transform:f,className:h,list:c.map(v=>Xn(v,l)),selectedIndex:c.indexOf(d),type:"hour",onSelect:this.onItemChange},r))}renderMinuteSelect(e,t){const{prefixCls:n,disabledMinutes:a,timeStampValue:i,scrollItemProps:r}=this.props,{showMinute:u,minuteOptions:o}=this.state;if(!u)return null;const l=new Date(i),c=a&&a(l.getHours()),d=`${n}-list-minute`,f=h=>h+t.minute;return b.createElement(ke,Object.assign({ref:h=>this.cacheRefCurrent("minute",h),mode:"normal",transform:f,list:o.map(h=>Xn(h,c)),selectedIndex:o.indexOf(e),type:"minute",onSelect:this.onItemChange,className:d},r))}renderSecondSelect(e,t){const{prefixCls:n,disabledSeconds:a,timeStampValue:i,scrollItemProps:r}=this.props,{showSecond:u,secondOptions:o}=this.state;if(!u)return null;const l=new Date(i),c=a&&a(l.getHours(),l.getMinutes()),d=`${n}-list-second`,f=h=>String(h)+t.second;return b.createElement(ke,Object.assign({ref:h=>this.cacheRefCurrent("second",h),mode:"normal",transform:f,list:o.map(h=>Xn(h,c)),selectedIndex:o.indexOf(e),className:d,type:"second",onSelect:this.onItemChange},r))}renderAMPMSelect(e,t){const{prefixCls:n,use12Hours:a,isAM:i,scrollItemProps:r}=this.props;if(!a)return null;const u=[{value:"AM",text:e.AM||"上午"},{value:"PM",text:e.PM||"下午"}],o=i?0:1,l=`${n}-list-ampm`;return b.createElement(ke,Object.assign({ref:c=>this.cacheRefCurrent("ampm",c),mode:"normal",className:l,list:u,selectedIndex:o,type:"ampm",onSelect:this.onItemChange},r))}render(){const{timeStampValue:e,panelHeader:t,panelFooter:n}=this.props,a=this.getDisplayDateFromTimeStamp(e);return b.createElement(zr,{componentName:"TimePicker"},(i,r)=>b.createElement($n,{header:t,footer:n,"x-semi-header-alias":"panelHeader","x-semi-footer-alias":"panelFooter"},this.renderAMPMSelect(i,r),this.renderHourSelect(a.getHours(),i),this.renderMinuteSelect(a.getMinutes(),i),this.renderSecondSelect(a.getSeconds(),i)))}}ga.propTypes={format:p.string,defaultOpenValue:p.object,prefixCls:p.string,onChange:p.func,showHour:p.bool,showMinute:p.bool,showSecond:p.bool,disabledHours:p.func,disabledMinutes:p.func,disabledSeconds:p.func,hideDisabledOptions:p.bool,onCurrentSelectPanelChange:p.func,use12Hours:p.bool,isAM:p.bool,timeStampValue:p.any,scrollItemProps:p.object};ga.defaultProps={disabledHours:Q,disabledMinutes:Q,disabledSeconds:Q,format:at.DEFAULT_FORMAT};class Rl extends He{constructor(e){super(Object.assign({},e))}init(){}destroy(){}selectYear(e,t){const{currentYear:n,currentMonth:a}=this.getStates(),{type:i}=this.getProps(),r=P.PANEL_TYPE_LEFT,u=P.PANEL_TYPE_RIGHT,o=Sn(n);if(o[t]=e.value,i==="monthRange"){const l=o[r]===o[u]&&a[r]>a[u];t===r&&e.value>o[u]||t===r&&l?o[u]=e.value+1:t===u&&l&&(o[r]=e.value-1)}this._adapter.setCurrentYear(o,()=>this.autoSelectMonth(e,t,o)),this._adapter.notifySelectYear(o)}selectMonth(e,t){const{currentMonth:n,currentYear:a}=this.getStates(),{type:i}=this.getProps(),r=P.PANEL_TYPE_LEFT,u=P.PANEL_TYPE_RIGHT,o=Sn(n);o[t]=e.month,i==="monthRange"&&t===r&&a[r]===a[u]&&e.month>o[u]&&(o[u]=e.month),this._adapter.setCurrentMonth(o),this._adapter.notifySelectMonth(o)}autoSelectMonth(e,t,n){const{disabledDate:a,locale:i}=this._adapter.getProps(),{months:r,currentMonth:u}=this._adapter.getStates(),o=t===P.PANEL_TYPE_LEFT?"right":"left",l=ta(Date.now(),e.year),c=a(Ge(l,u[t]-1)),d=a(Ge(ta(Date.now(),n[o]),u[o]-1));if(!c&&!d)return;let f=n,h=u;if(c){const v=r.findIndex(m=>{let{month:g}=m;return g===u[t]});let w;w=r.slice(v).find(m=>{let{month:g}=m;return!a(Ge(l,g-1))}),w||(w=r.slice(0,v).find(m=>{let{month:g}=m;return!a(Ge(l,g-1))})),w&&!d?h[t]=w.month:w&&d&&(f={left:e.year,right:e.year},h={left:w.month,right:w.month})}else!c&&d&&(f={left:e.year,right:e.year},h={left:u[t],right:u[t]});this._adapter.setCurrentYearAndMonth(f,h),this._adapter.notifySelectYearAndMonth(f,h)}backToMain(){this._adapter.notifyBackToMain()}}const jr=`${B}-datepicker`;class Hn extends Ue{constructor(e){super(e),this.selectYear=(r,u)=>{this.foundation.selectYear(r,u)},this.selectMonth=(r,u)=>{this.foundation.selectMonth(r,u)},this.reselect=()=>{["yearRef","monthRef"].forEach(u=>{const o=this[u];o&&o.current&&o.current.scrollToIndex&&o.current.scrollToIndex()})},this.backToMain=r=>{r.nativeEvent.stopImmediatePropagation(),this.foundation.backToMain()};let{currentYear:t,currentMonth:n}=e;const{year:a,month:i}=ka(t,n);this.state={years:bu(e.startYear,e.endYear).map(r=>({value:r,year:r})),months:Array(12).fill(0).map((r,u)=>({value:u+1,month:u+1})),currentYear:a,currentMonth:i},this.yearRef=b.createRef(),this.monthRef=b.createRef(),this.foundation=new Rl(this.adapter)}get adapter(){return Object.assign(Object.assign({},super.adapter),{setCurrentYear:(e,t)=>this.setState({currentYear:e},t),setCurrentMonth:e=>this.setState({currentMonth:e}),setCurrentYearAndMonth:(e,t)=>this.setState({currentYear:e,currentMonth:t}),notifySelectYear:e=>this.props.onSelect({currentMonth:this.state.currentMonth,currentYear:e}),notifySelectMonth:e=>this.props.onSelect({currentYear:this.state.currentYear,currentMonth:e}),notifySelectYearAndMonth:(e,t)=>this.props.onSelect({currentYear:e,currentMonth:t}),notifyBackToMain:()=>this.props.onBackToMain()})}static getDerivedStateFromProps(e,t){const n={},{year:a,month:i}=ka(e.currentYear,e.currentMonth);return De(e.currentYear,t.currentYear)||(n.currentYear=a),De(e.currentMonth,t.currentMonth)||(n.currentMonth=i),n}renderColYear(e){const{years:t,currentYear:n,currentMonth:a,months:i}=this.state,{disabledDate:r,localeCode:u,yearCycled:o,yearAndMonthOpts:l}=this.props,c=Ge(Date.now(),a[e]-1),d=P.PANEL_TYPE_LEFT,f=P.PANEL_TYPE_RIGHT,h=m=>e===f&&n[d]?n[d]>m:!1,v=t.map(m=>{let{value:g,year:T}=m;const y=i.every(_=>{let{month:I}=_;return r(yi(c,{year:T,month:I-1}))}),D=h(T);return{year:T,value:g,disabled:y||D}});let w=m=>m;return(u==="zh-CN"||u==="zh-TW")&&(w=m=>`${m}年`),b.createElement(ke,Object.assign({ref:this.yearRef,cycled:o,list:v,transform:w,selectedIndex:t.findIndex(m=>m.value===n[e]),type:"year",onSelect:m=>this.selectYear(m,e),mode:"normal"},l))}renderColMonth(e){const{months:t,currentMonth:n,currentYear:a}=this.state,{locale:i,localeCode:r,monthCycled:u,disabledDate:o,yearAndMonthOpts:l}=this.props;let c=m=>m;const d=ta(Date.now(),a[e]),f=P.PANEL_TYPE_LEFT,h=P.PANEL_TYPE_RIGHT;(r==="zh-CN"||r==="zh-TW")&&(c=m=>`${m}月`);const v=t.map(m=>{let{value:g,month:T}=m;const y=e===h&&n[f]&&a[f]===a[h]&&n[f]>T;return{month:T,disabled:o(Ge(d,T-1))||y,value:i.fullMonths[g]}}),w=v.findIndex(m=>m.month===n[e]);return b.createElement(ke,Object.assign({ref:this.monthRef,cycled:u,list:v,transform:c,selectedIndex:w,type:"month",onSelect:m=>this.selectMonth(m,e),mode:"normal"},l))}renderPanel(e){return b.createElement(b.Fragment,null,b.createElement($n,null,this.renderColYear(e),this.renderColMonth(e)))}render(){const{locale:e,noBackBtn:t,density:n,presetPosition:a,renderQuickControls:i,renderDateInput:r,type:u}=this.props,o=`${jr}-yearmonth-header`,l=`${jr}-yearmonth-body`,c=e.selectDate,d=n==="compact"?"default":"large",f=n==="compact"?"small":"default",h=P.PANEL_TYPE_LEFT,v=P.PANEL_TYPE_RIGHT;let w=null;return u==="month"?w=this.renderPanel(h):w=b.createElement("div",{className:l},this.renderPanel(h),this.renderPanel(v)),b.createElement(b.Fragment,null,t?null:b.createElement("div",{className:o},b.createElement(pt,{noHorizontalPadding:!1,icon:b.createElement(Zr,{"aria-hidden":!0,size:d}),size:f,onClick:this.backToMain},b.createElement("span",null,c))),a?b.createElement("div",{style:{display:"flex"}},a==="left"&&u!=="monthRange"&&i,b.createElement("div",null,r,w),a==="right"&&u!=="monthRange"&&i):b.createElement(b.Fragment,null,r,w))}}Hn.propTypes={currentYear:p.object,currentMonth:p.object,onSelect:p.func,locale:p.object,localeCode:p.string,monthCycled:p.bool,yearCycled:p.bool,noBackBtn:p.bool,disabledDate:p.func,density:p.string,presetPosition:p.oneOf(P.PRESET_POSITION_SET),renderQuickControls:p.node,renderDateInput:p.node,type:p.oneOf(P.TYPE_SET),startYear:p.number,endYear:p.number};Hn.defaultProps={disabledDate:Tt,monthCycled:!1,yearCycled:!1,noBackBtn:!1,onSelect:Q,type:"month"};const we=N.PREFIX;class va extends Ue{constructor(e){super(e),this.cacheRefCurrent=(u,o)=>{typeof u=="string"&&u.length&&this.adapter.setCache(u,o)},this.leftIsYearOrTime=u=>{const{monthLeft:o}=u||this.state;return!!(o&&(o.isTimePickerOpen||o.isYearPickerOpen))},this.rightIsYearOrTime=u=>{const{monthRight:o}=u||this.state;return!!(o&&(o.isTimePickerOpen||o.isYearPickerOpen))},this.calcScrollListHeight=()=>{const u=this.adapter.getCache(`wrap-${P.PANEL_TYPE_LEFT}`),o=this.adapter.getCache(`wrap-${P.PANEL_TYPE_RIGHT}`),l=this.adapter.getCache(`switch-${P.PANEL_TYPE_LEFT}`),c=this.adapter.getCache(`switch-${P.PANEL_TYPE_RIGHT}`),d=u&&u.getBoundingClientRect(),f=o&&o.getBoundingClientRect();let h=d&&d.height||0,v=f&&f.height||0;return l&&(h+=l.getBoundingClientRect().height),c&&(v+=c.getBoundingClientRect().height),Math.max(h,v)},this.handleWeeksRowNumChange=(u,o)=>{const l=o===P.PANEL_TYPE_RIGHT,c=o===P.PANEL_TYPE_RIGHT,d=this.leftIsYearOrTime()&&this.rightIsYearOrTime();if(this.foundation.isRangeType()&&!d){const f={weeksRowNum:u,currentPanelHeight:this.calcScrollListHeight()};this.setState(f,()=>{(this.leftIsYearOrTime()&&c||this.rightIsYearOrTime()&&l)&&this.reselect()})}},this.reselect=()=>{[`timepicker-${P.PANEL_TYPE_LEFT}`,`timepicker-${P.PANEL_TYPE_RIGHT}`,`yam-${P.PANEL_TYPE_LEFT}`,`yam-${P.PANEL_TYPE_RIGHT}`].forEach(o=>{const l=this.adapter.getCache(o);l&&typeof l.reselect=="function"&&l.reselect()})},this.getYAMOpenType=()=>this.foundation.getYAMOpenType();const t=e.format||$e(e.type),{nowDate:n,nextDate:a}=ki({defaultPickerValue:e.defaultPickerValue,format:t,dateFnsLocale:e.dateFnsLocale}),i={selected:new Set},r={monthLeft:{pickerDate:n,showDate:n,isTimePickerOpen:!1,isYearPickerOpen:!1},monthRight:{pickerDate:a,showDate:a,isTimePickerOpen:!1,isYearPickerOpen:!1},maxWeekNum:0,hoverDay:"",rangeStart:e.rangeStart,rangeEnd:"",currentPanelHeight:0,offsetRangeStart:"",offsetRangeEnd:""};this.state=Object.assign(Object.assign({},i),r),this.foundation=new hl(this.adapter)}get dateAdapter(){return{updateDaySelected:e=>this.setState({selected:e})}}get rangeAdapter(){return{setRangeStart:e=>this.setState({rangeStart:e}),setRangeEnd:e=>this.setState({rangeEnd:e}),setHoverDay:e=>this.setState({hoverDay:e}),setWeeksHeight:e=>this.setState({maxWeekNum:e}),setOffsetRangeStart:e=>this.setState({offsetRangeStart:e}),setOffsetRangeEnd:e=>this.setState({offsetRangeEnd:e})}}get adapter(){return Object.assign(Object.assign(Object.assign(Object.assign({},super.adapter),this.dateAdapter),this.rangeAdapter),{updateMonthOnLeft:e=>this.setState({monthLeft:e}),updateMonthOnRight:e=>this.setState({monthRight:e}),notifySelectedChange:(e,t)=>this.props.onChange(e,t),notifyMaxLimit:e=>this.props.onMaxSelect(e),notifyPanelChange:(e,t)=>this.props.onPanelChange(e,t),setRangeInputFocus:e=>this.props.setRangeInputFocus(e),isAnotherPanelHasOpened:e=>this.props.isAnotherPanelHasOpened(e)})}componentDidMount(){super.componentDidMount()}componentDidUpdate(e,t){const{defaultValue:n,defaultPickerValue:a}=this.props;if(e.defaultValue!==n&&this.foundation.updateSelectedFromProps(n),e.defaultPickerValue!==a&&this.foundation.initDefaultPickerValue(),this.foundation.isRangeType()){const r=this.leftIsYearOrTime(t)&&this.rightIsYearOrTime(t),u=this.leftIsYearOrTime(t)&&!this.rightIsYearOrTime(t)||!this.leftIsYearOrTime(t)&&this.rightIsYearOrTime(t),o=this.leftIsYearOrTime()&&this.rightIsYearOrTime(),l=this.leftIsYearOrTime()&&!this.rightIsYearOrTime()||!this.leftIsYearOrTime()&&this.rightIsYearOrTime();u&&o?this.setState({currentPanelHeight:this.calcScrollListHeight()},this.reselect):r&&l&&this.reselect()}}renderPanel(e,t){let n=Y(`${we}-month-grid-${t}`);const{monthLeft:a,monthRight:i,currentPanelHeight:r}=this.state,{insetInput:u}=this.props,o=t===P.PANEL_TYPE_RIGHT?i:a,{isTimePickerOpen:l,isYearPickerOpen:c}=o,d=this.renderMonth(e,t),f=c?b.createElement("div",{className:`${we}-yam`},this.renderYearAndMonth(t,o)):null,h=l?b.createElement("div",{className:`${we}-tpk`},this.renderTimePicker(t,o)):null,v={},w=this.adapter.getCache(`wrap-${P.PANEL_TYPE_LEFT}`),m=this.adapter.getCache(`wrap-${P.PANEL_TYPE_RIGHT}`),g=t===P.PANEL_TYPE_RIGHT?m:w;this.foundation.isRangeType()?((c||l)&&(v.minWidth=g.getBoundingClientRect().width),this.leftIsYearOrTime()&&this.rightIsYearOrTime()&&!u&&(v.minHeight=r||this.calcScrollListHeight())):this.props.type!=="year"&&this.props.type!=="month"&&(l||c)&&(n=Y(n,`${we}-yam-showing`));const y=!(c||l)?"date":c?"year":"time";return b.createElement("div",{className:n,key:t,style:v,"x-open-type":y},f,h,this.foundation.isRangeType()?d:c||l?null:d,this.renderSwitch(t))}showYearPicker(e,t){t.nativeEvent.stopImmediatePropagation(),this.foundation.showYearPicker(e)}renderMonth(e,t){const{selected:n,rangeStart:a,rangeEnd:i,hoverDay:r,maxWeekNum:u,offsetRangeStart:o,offsetRangeEnd:l}=this.state,{weekStartsOn:c,disabledDate:d,locale:f,localeCode:h,renderDate:v,renderFullDate:w,startDateOffset:m,endDateOffset:g,density:T,rangeInputFocus:y,syncSwitchMonth:D,multiple:_}=this.props;let I="";if(e){const O=e?X(e,"yyyy"):"",k=e?X(e,"L"):"",U=f.months[k];I=f.monthText.replace("${year}",O).replace("${month}",U)}let x={};const R=t===P.PANEL_TYPE_RIGHT?this.state.monthRight:this.state.monthLeft,C=this.foundation.isRangeType(),E=C&&D;return C&&R&&(R.isYearPickerOpen||R.isTimePickerOpen)&&(x={visibility:"hidden",position:"absolute",pointerEvents:"none"}),b.createElement("div",{ref:O=>this.cacheRefCurrent(`wrap-${t}`,O),style:x},b.createElement(pa,{forwardRef:O=>this.cacheRefCurrent(`nav-${t}`,O),monthText:I,density:T,onMonthClick:O=>this.showYearPicker(t,O),onPrevMonth:()=>this.foundation.prevMonth(t),onNextMonth:()=>this.foundation.nextMonth(t),onNextYear:()=>this.foundation.nextYear(t),onPrevYear:()=>this.foundation.prevYear(t),shouldBimonthSwitch:E,panelType:t}),b.createElement(ma,{locale:f,localeCode:h,forwardRef:O=>this.cacheRefCurrent(`month-${t}`,O),disabledDate:d,weekStartsOn:c,month:e,selected:n,rangeStart:a,rangeEnd:i,rangeInputFocus:y,offsetRangeStart:o,offsetRangeEnd:l,hoverDay:r,weeksRowNum:u,renderDate:v,renderFullDate:w,onDayClick:O=>this.foundation.handleDayClick(O,t),onDayHover:O=>this.foundation.handleDayHover(O,t),onWeeksRowNumChange:O=>this.handleWeeksRowNumChange(O,t),startDateOffset:m,endDateOffset:g,focusRecordsRef:this.props.focusRecordsRef,multiple:_}))}renderTimePicker(e,t){const{type:n,locale:a,format:i,hideDisabledOptions:r,timePickerOpts:u,dateFnsLocale:o}=this.props,{pickerDate:l}=t,c=Y(`${we}-time`),d=Object.assign(Object.assign({},u),{hideDisabledOptions:r}),f=this.foundation.calcDisabledTime(e);f&&["disabledHours","disabledMinutes","disabledSeconds"].forEach(y=>{f[y]&&(d[y]=f[y])});const{rangeStart:h,rangeEnd:v}=this.state,w=this.foundation.getValidDateFormat();let m,g;n==="dateTimeRange"&&h&&v&&ua(m=ne(h,w,void 0,o),g=ne(v,w,void 0,o))&&(e===P.PANEL_TYPE_RIGHT?h&&(d.startDate=m):v&&(d.endDate=g));const T=a.selectTime;return b.createElement("div",{className:c},b.createElement(ga,Object.assign({ref:y=>this.cacheRefCurrent(`timepicker-${e}`,y),panelHeader:T,format:i||P.FORMAT_TIME_PICKER,timeStampValue:l,onChange:y=>this.foundation.handleTimeChange(y,e)},d)))}renderYearAndMonth(e,t){const{pickerDate:n}=t,{locale:a,localeCode:i,density:r,yearAndMonthOpts:u,startYear:o,endYear:l}=this.props,c=n.getFullYear(),d=n.getMonth()+1;return b.createElement(Hn,{ref:f=>this.cacheRefCurrent(`yam-${e}`,f),locale:a,localeCode:i,currentYear:{left:c,right:0},currentMonth:{left:d,right:0},onSelect:f=>this.foundation.toYearMonth(e,new Date(f.currentYear.left,f.currentMonth.left-1)),onBackToMain:()=>{this.foundation.showDatePanel(e);const f=this.adapter.getCache(`wrap-${e}`);f&&(f.style.height="auto")},density:r,yearAndMonthOpts:u,startYear:o,endYear:l})}renderSwitch(e){const{rangeStart:t,rangeEnd:n,monthLeft:a,monthRight:i}=this.state,{type:r,locale:u,disabledTimePicker:o,density:l,dateFnsLocale:c,insetInput:d}=this.props;if(!r.includes("Time")||d)return null;let f,h;const{FORMAT_SWITCH_DATE:v}=u.localeFormatToken,w=this.foundation.getValidTimeFormat(),m=this.foundation.getValidDateFormat();e===P.PANEL_TYPE_LEFT?(f=a,h=t?X(ne(t,m,void 0,c),v):""):(f=i,h=n?X(ne(n,m,void 0,c),v):"");const{isTimePickerOpen:g,showDate:T}=f,y=T?X(T,v):"",D=T?X(T,w):"",_=["default"].includes(l),I=Y(`${we}-switch`),x=Y({[`${we}-switch-date`]:!0,[`${we}-switch-date-active`]:!g}),R=Y({[`${we}-switch-time`]:!0,[`${we}-switch-time-disabled`]:o,[`${we}-switch-date-active`]:g}),C=Y(`${we}-switch-text`);return b.createElement("div",{className:I,ref:E=>this.adapter.setCache(`switch-${e}`,E)},b.createElement("div",{role:"button","aria-label":"Switch to date panel",className:x,onClick:E=>this.foundation.showDatePanel(e)},_&&b.createElement(Ti,{"aria-hidden":!0}),b.createElement("span",{className:C},h||y)),b.createElement("div",{role:"button","aria-label":"Switch to time panel",className:R,onClick:E=>this.foundation.showTimePicker(e,!0)},_&&b.createElement(lu,{"aria-hidden":!0}),b.createElement("span",{className:C},D)))}render(){const{monthLeft:e,monthRight:t}=this.state,{type:n,insetInput:a,presetPosition:i,renderQuickControls:r,renderDateInput:u}=this.props,o=Y({[`${we}-month-grid`]:!0}),l=P.PANEL_TYPE_LEFT,c=P.PANEL_TYPE_RIGHT;let d=null;n==="date"||n==="dateTime"?d=this.renderPanel(e.pickerDate,l):n==="dateRange"||n==="dateTimeRange"?d=[this.renderPanel(e.pickerDate,l),this.renderPanel(t.pickerDate,c)]:(n==="year"||n==="month")&&(d="year month");const f=this.getYAMOpenType();return b.createElement("div",{style:{display:"flex"}},i==="left"&&r,b.createElement("div",null,u,b.createElement("div",{className:o,"x-type":n,"x-panel-yearandmonth-open-type":f,"x-insetinput":a?"true":"false","x-preset-position":r===null?"null":i,ref:h=>this.cacheRefCurrent("monthGrid",h)},d)),i==="right"&&r)}}va.propTypes={type:p.oneOf(P.TYPE_SET),defaultValue:p.array,defaultPickerValue:p.oneOfType([p.string,p.number,p.object,p.array]),multiple:p.bool,max:p.number,weekStartsOn:p.number,disabledDate:p.func,disabledTime:p.func,disabledTimePicker:p.bool,hideDisabledOptions:p.bool,navPrev:p.node,navNext:p.node,onMaxSelect:p.func,timePickerOpts:p.object,isControlledComponent:p.bool,rangeStart:p.oneOfType([p.string]),rangeInputFocus:p.oneOfType([p.bool,p.string]),locale:p.object,localeCode:p.string,format:p.string,renderDate:p.func,renderFullDate:p.func,startDateOffset:p.func,endDateOffset:p.func,autoSwitchDate:p.bool,density:p.string,dateFnsLocale:p.object.isRequired,timeZone:p.oneOfType([p.string,p.number]),syncSwitchMonth:p.bool,onPanelChange:p.func,focusRecordsRef:p.object,triggerRender:p.func,presetPosition:p.oneOf(P.PRESET_POSITION_SET),renderQuickControls:p.node,renderDateInput:p.node};va.defaultProps={type:"date",rangeStart:"",multiple:!1,weekStartsOn:ut.WEEK_START_ON,disabledDate:Tt,onMaxSelect:Q,locale:{}};const ve=N.PREFIX,{Text:Pl}=Zi;class ya extends J.PureComponent{render(){const{presets:e,onPresetClick:t,type:n,presetPosition:a,insetInput:i,locale:r}=this.props,u=n==="dateRange"||n==="dateTimeRange",o=a==="top"||a==="bottom",l=n==="month",c=o&&u,d=o&&l,f=Y(`${ve}-quick-control`,{[`${ve}-quick-control-${n}`]:n,[`${ve}-quick-control-${a}`]:!0}),h=Y({[`${ve}-quick-control-header`]:!0}),v=Y({[`${ve}-quick-control-${a}-content-wrapper`]:!0}),w=Y({[`${ve}-quick-control-${a}-content`]:!c&&!d,[`${ve}-quick-control-${a}-range-content`]:c,[`${ve}-quick-control-${a}-month-content`]:d}),m=Y({[`${ve}-quick-control-${a}-content-item`]:!c&&!d,[`${ve}-quick-control-${a}-range-content-item`]:c,[`${ve}-quick-control-${a}-month-content-item`]:d}),g=Y({[`${ve}-quick-control-${a}-content-item-ellipsis`]:!c&&!d,[`${ve}-quick-control-${a}-range-content-item-ellipsis`]:c,[`${ve}-quick-control-${a}-month-content-item-ellipsis`]:d});return e.length?b.createElement("div",{className:f,"x-insetinput":i?"true":"false"},!o&&b.createElement("div",{className:h},r.presets),b.createElement("div",{className:v},b.createElement("div",{className:w},e.map((T,y)=>{const D=typeof T=="function"?T():T;return b.createElement(yt,{size:"small",type:"primary",onClick:_=>t(D,_),key:y},b.createElement("div",{className:m},b.createElement(Pl,{ellipsis:{showTooltip:!0},className:g},D.text)))})))):null}}ya.propTypes={presets:p.array,presetPosition:p.oneOf(P.PRESET_POSITION_SET),onPresetClick:p.func,type:p.string,insetInput:p.oneOfType([p.bool,p.object]),locale:p.object};ya.defaultProps={presets:[],presetPosition:"bottom",onPresetClick:We};function El(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{prefixCls:e,locale:t,onCancelClick:n,onConfirmClick:a,disabledConfirm:i}=s,r=Y(`${e}-footer`);return b.createElement("div",{className:r},b.createElement(yt,{theme:"borderless",onClick:n},oe(t,"footer.cancel","")),b.createElement(yt,{theme:"solid",onClick:a,disabled:i},oe(t,"footer.confirm","")))}var Ol=function(s,e){var t={};for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,n=Object.getOwnPropertySymbols(s);athis.triggerElRef.current=n,this.handleSelectedChange=(n,a)=>this.foundation.handleSelectedChange(n,a),this.handleYMSelectedChange=n=>this.foundation.handleYMSelectedChange(n),this.disabledDisposeDate=function(n){for(var a=arguments.length,i=new Array(a>1?a-1:0),r=1;r1?a-1:0),r=1;rthis.foundation.openPanel(),this.handleInputChange=function(){return t.foundation.handleInputChange(...arguments)},this.handleInsetInputChange=n=>this.foundation.handleInsetInputChange(n),this.handleInputComplete=n=>this.foundation.handleInputComplete(n),this.handleInputBlur=n=>this.foundation.handleInputBlur(oe(n,"nativeEvent.target.value"),n),this.handleInputFocus=function(){return t.foundation.handleInputFocus(...arguments)},this.handleInputClear=n=>this.foundation.handleInputClear(n),this.handleTriggerWrapperClick=n=>this.foundation.handleTriggerWrapperClick(n),this.handleSetRangeFocus=n=>this.foundation.handleSetRangeFocus(n),this.handleRangeInputBlur=(n,a)=>this.foundation.handleRangeInputBlur(n,a),this.handleRangeInputClear=n=>this.foundation.handleRangeInputClear(n),this.handleRangeEndTabPress=n=>this.foundation.handleRangeEndTabPress(n),this.isAnotherPanelHasOpened=n=>n==="rangeStart"?this.focusRecordsRef.current.rangeEnd:this.focusRecordsRef.current.rangeStart,this.handleInsetDateFocus=(n,a)=>{const i=oe(this,"monthGrid.current.foundation");i&&(i.showDatePanel(P.PANEL_TYPE_LEFT),i.showDatePanel(P.PANEL_TYPE_RIGHT)),this.handleInputFocus(n,a)},this.handleInsetTimeFocus=()=>{const n=oe(this,"monthGrid.current.foundation");n&&(n.showTimePicker(P.PANEL_TYPE_LEFT),n.showTimePicker(P.PANEL_TYPE_RIGHT))},this.handlePanelVisibleChange=n=>{this.foundation.handlePanelVisibleChange(n)},this.handleConfirm=n=>this.foundation.handleConfirm(),this.handleCancel=n=>this.foundation.handleCancel(),this.renderFooter=(n,a)=>{var i;if(this.adapter.needConfirm()){const{cachedSelectedValue:r}=this.state,u=/range/i.test((i=this.props.type)!==null&&i!==void 0?i:""),o=Array.isArray(r)&&(r.length===0||r.length===2&&r.every(c=>c!=null)),l=u?!o:!1;return b.createElement(El,Object.assign({},this.props,{locale:n,localeCode:a,onConfirmClick:this.handleConfirm,onCancelClick:this.handleCancel,disabledConfirm:l}))}return null},this.renderPanel=(n,a,i)=>{const{dropdownClassName:r,dropdownStyle:u,density:o,topSlot:l,bottomSlot:c,presetPosition:d,type:f,leftSlot:h,rightSlot:v}=this.props,w=Y(N.PREFIX,{[N.PANEL_YAM]:this.adapter.typeIsYearOrMonth(),[`${N.PREFIX}-compact`]:o==="compact"},r);return b.createElement("div",{ref:this.panelRef,className:w,style:u,"x-type":f},b.createElement("div",{className:`${N.PREFIX}-container`},h&&b.createElement("div",{className:`${N.PREFIX}-leftSlot`,"x-semi-prop":"leftSlot"},h),b.createElement("div",null,l&&b.createElement("div",{className:`${N.PREFIX}-topSlot`,"x-semi-prop":"topSlot"},l),d==="top"&&f!=="monthRange"&&this.renderQuickControls(),this.adapter.typeIsYearOrMonth()?this.renderYearMonthPanel(n,a):this.renderMonthGrid(n,a,i),d==="bottom"&&f!=="monthRange"&&this.renderQuickControls(),c&&b.createElement("div",{className:`${N.PREFIX}-bottomSlot`,"x-semi-prop":"bottomSlot"},c)),v&&b.createElement("div",{className:`${N.PREFIX}-rightSlot`,"x-semi-prop":"rightSlot"},v)),this.renderFooter(n,a))},this.renderYearMonthPanel=(n,a)=>{const{density:i,presetPosition:r,yearAndMonthOpts:u,type:o,startYear:l,endYear:c}=this.props,d=this.state.value[0],f={left:0,right:0},h={left:0,right:0};if(xa(d)&&(f.left=d.getFullYear(),h.left=d.getMonth()+1),o==="monthRange"){const v=this.state.value[1];xa(v)&&(f.right=v.getFullYear(),h.right=v.getMonth()+1)}return b.createElement(Hn,{locale:n,localeCode:a,disabledDate:this.disabledDisposeDate,noBackBtn:!0,monthCycled:!0,onSelect:this.handleYMSelectedChange,currentYear:f,currentMonth:h,density:i,presetPosition:r,renderQuickControls:this.renderQuickControls(),renderDateInput:this.renderDateInput(),type:o,yearAndMonthOpts:u,startYear:l,endYear:c})},this.wrapPopover=n=>{const{panelShow:a}=this.state,{direction:i}=this.context,r=i==="rtl"?"bottomRight":"bottomLeft",{motion:u,zIndex:o,position:l=r,getPopupContainer:c,locale:d,localeCode:f,dateFnsLocale:h,stopPropagation:v,autoAdjustOverflow:w,spacing:m,dropdownMargin:g}=this.props;return b.createElement(Ki,{getPopupContainer:c,autoAdjustOverflow:w,zIndex:o,motion:u,margin:g,content:this.renderPanel(d,f,h),trigger:"custom",position:l,visible:a,stopPropagation:v,spacing:m,onVisibleChange:this.handlePanelVisibleChange},n)},this.state={panelShow:e.open||e.defaultOpen,isRange:!1,inputValue:null,value:[],cachedSelectedValue:[],prevTimeZone:null,rangeInputFocus:void 0,autofocus:e.autoFocus||this.isRangeType(e.type,e.triggerRender)&&(e.open||e.defaultOpen),insetInputValue:null,triggerDisabled:void 0},this.triggerElRef=b.createRef(),this.panelRef=b.createRef(),this.monthGrid=b.createRef(),this.inputRef=b.createRef(),this.rangeInputStartRef=b.createRef(),this.rangeInputEndRef=b.createRef(),this.focusRecordsRef=b.createRef(),this.focusRecordsRef.current={rangeStart:!1,rangeEnd:!1},this.foundation=new sl(this.adapter)}get adapter(){var e=this;return Object.assign(Object.assign({},super.adapter),{togglePanel:(t,n)=>{this.setState({panelShow:t},n),t||(this.focusRecordsRef.current.rangeEnd=!1,this.focusRecordsRef.current.rangeStart=!1)},registerClickOutSide:()=>{this.clickOutSideHandler&&(this.adapter.unregisterClickOutSide(),this.clickOutSideHandler=null),this.clickOutSideHandler=t=>{const n=this.triggerElRef&&this.triggerElRef.current,a=this.panelRef&&this.panelRef.current,i=t.target,r=t.composedPath&&t.composedPath()||[i];!(n&&n.contains(i))&&!(a&&a.contains(i))&&!(r.includes(n)||r.includes(a))&&(this.props.onClickOutSide(t),this.adapter.needConfirm()||this.foundation.closePanel())},document.addEventListener("mousedown",this.clickOutSideHandler)},unregisterClickOutSide:()=>{document.removeEventListener("mousedown",this.clickOutSideHandler)},notifyBlur:function(){return e.props.onBlur(...arguments)},notifyFocus:function(){return e.props.onFocus(...arguments)},notifyClear:function(){return e.props.onClear(...arguments)},notifyChange:function(){return e.props.onChange(...arguments)},notifyCancel:function(){return e.props.onCancel(...arguments)},notifyConfirm:function(){return e.props.onConfirm(...arguments)},notifyOpenChange:function(){return e.props.onOpenChange(...arguments)},notifyPresetsClick:function(){return e.props.onPresetClick(...arguments)},updateValue:t=>this.setState({value:t}),updatePrevTimezone:t=>this.setState({prevTimeZone:t}),updateCachedSelectedValue:t=>{let n=t;t&&!Array.isArray(t)&&(n=[...t]),this.setState({cachedSelectedValue:n})},updateInputValue:t=>{this.setState({inputValue:t})},updateInsetInputValue:t=>{const{insetInput:n}=this.props;n&&!De(t,this.state.insetInputValue)&&this.setState({insetInputValue:t})},needConfirm:()=>["dateTime","dateTimeRange"].includes(this.props.type)&&this.props.needConfirm===!0,typeIsYearOrMonth:()=>["month","year","monthRange"].includes(this.props.type),setRangeInputFocus:t=>{const{preventScroll:n}=this.props;switch(t!==this.state.rangeInputFocus&&this.setState({rangeInputFocus:t}),t){case"rangeStart":const a=oe(this,"rangeInputStartRef.current");a&&a.focus({preventScroll:n}),setTimeout(()=>{this.focusRecordsRef.current.rangeStart=!0},0);break;case"rangeEnd":const i=oe(this,"rangeInputEndRef.current");i&&i.focus({preventScroll:n}),setTimeout(()=>{this.focusRecordsRef.current.rangeEnd=!0},0);break;default:return}},couldPanelClosed:()=>this.focusRecordsRef.current.rangeStart&&this.focusRecordsRef.current.rangeEnd,isEventTarget:t=>t&&t.target===t.currentTarget,setInsetInputFocus:()=>{const{preventScroll:t}=this.props,{rangeInputFocus:n}=this.state;switch(n){case"rangeEnd":if(document.activeElement!==this.rangeInputEndRef.current){const a=oe(this,"rangeInputEndRef.current");a&&a.focus({preventScroll:t})}break;case"rangeStart":default:if(document.activeElement!==this.rangeInputStartRef.current){const a=oe(this,"rangeInputStartRef.current");a&&a.focus({preventScroll:t})}break}},setInputFocus:()=>{const{preventScroll:t}=this.props,n=oe(this,"inputRef.current");n&&n.focus({preventScroll:t})},setInputBlur:()=>{const t=oe(this,"inputRef.current");t&&t.blur()},setRangeInputBlur:()=>{const{rangeInputFocus:t}=this.state;if(t==="rangeStart"){const n=oe(this,"rangeInputStartRef.current");n&&n.blur()}else if(t==="rangeEnd"){const n=oe(this,"rangeInputEndRef.current");n&&n.blur()}this.adapter.setRangeInputFocus(!1)},setTriggerDisabled:t=>{this.setState({triggerDisabled:t})}})}isRangeType(e,t){return/range/i.test(e)&&!st(t)}componentDidUpdate(e){De(e.value,this.props.value)?this.props.timeZone!==e.timeZone&&this.foundation.initFromProps({value:this.state.value,timeZone:this.props.timeZone,prevTimeZone:e.timeZone}):this.foundation.initFromProps(Object.assign({},this.props)),e.open!==this.props.open&&(this.foundation.initPanelOpenStatus(),this.props.open||this.foundation.clearRangeInputFocus())}componentDidMount(){this._mounted=!0,super.componentDidMount()}componentWillUnmount(){this._mounted=!1,super.componentWillUnmount()}open(){this.foundation.open()}close(){this.foundation.close()}focus(e){this.foundation.focus(e)}blur(){this.foundation.blur()}renderMonthGrid(e,t,n){const{type:a,multiple:i,max:r,weekStartsOn:u,timePickerOpts:o,defaultPickerValue:l,format:c,hideDisabledOptions:d,disabledTimePicker:f,renderDate:h,renderFullDate:v,startDateOffset:w,endDateOffset:m,autoSwitchDate:g,density:T,syncSwitchMonth:y,onPanelChange:D,timeZone:_,triggerRender:I,insetInput:x,presetPosition:R,yearAndMonthOpts:C,startYear:E,endYear:O}=this.props,{cachedSelectedValue:k,rangeInputFocus:U}=this.state,se=k;return b.createElement(va,{ref:this.monthGrid,locale:e,localeCode:t,dateFnsLocale:n,weekStartsOn:u,type:a,multiple:i,max:r,format:c,disabledDate:this.disabledDisposeDate,hideDisabledOptions:d,disabledTimePicker:f,disabledTime:this.disabledDisposeTime,defaultValue:se,defaultPickerValue:l,timePickerOpts:o,isControlledComponent:!this.adapter.needConfirm()&&this.isControlled("value"),onChange:this.handleSelectedChange,renderDate:h,renderFullDate:v,startDateOffset:w,endDateOffset:m,autoSwitchDate:g,density:T,rangeInputFocus:U,setRangeInputFocus:this.handleSetRangeFocus,isAnotherPanelHasOpened:this.isAnotherPanelHasOpened,syncSwitchMonth:y,onPanelChange:D,timeZone:_,focusRecordsRef:this.focusRecordsRef,triggerRender:I,insetInput:x,presetPosition:R,renderQuickControls:this.renderQuickControls(),renderDateInput:this.renderDateInput(),yearAndMonthOpts:C,startYear:E,endYear:O})}renderQuickControls(){const{presets:e,type:t,presetPosition:n,insetInput:a,locale:i}=this.props;return b.createElement(ya,{type:t,presets:e,insetInput:a,presetPosition:n,onPresetClick:(r,u)=>this.foundation.handlePresetClick(r,u),locale:i})}renderDateInput(){const{insetInput:e,dateFnsLocale:t,density:n,type:a,format:i,rangeSeparator:r,rangeSeparatorNode:u,defaultPickerValue:o}=this.props,{insetInputValue:l,value:c}=this.state,d={dateFnsLocale:t,format:i,insetInputValue:l,rangeSeparator:r,rangeSeparatorNode:u,type:a,value:c,handleInsetDateFocus:this.handleInsetDateFocus,handleInsetTimeFocus:this.handleInsetTimeFocus,onInsetInputChange:this.handleInsetInputChange,rangeInputStartRef:this.rangeInputStartRef,rangeInputEndRef:this.rangeInputEndRef,density:n,defaultPickerValue:o};return e?b.createElement(Fn,Object.assign({},d,{insetInput:e})):null}renderInner(e){const{clearIcon:t,type:n,format:a,multiple:i,disabled:r,showClear:u,insetLabel:o,insetLabelId:l,placeholder:c,validateStatus:d,inputStyle:f,prefix:h,locale:v,dateFnsLocale:w,triggerRender:m,size:g,inputReadOnly:T,rangeSeparator:y,rangeSeparatorNode:D,insetInput:_,defaultPickerValue:I,borderless:x}=this.props,{value:R,inputValue:C,rangeInputFocus:E,triggerDisabled:O}=this.state,k=this.isRangeType(n,m),U=r||_&&O,se=Y(`${N.PREFIX}-input`,{[`${N.PREFIX}-range-input`]:k,[`${N.PREFIX}-range-input-${g}`]:k&&g,[`${N.PREFIX}-range-input-active`]:k&&E&&!U,[`${N.PREFIX}-range-input-disabled`]:k&&U,[`${N.PREFIX}-range-input-${d}`]:k&&d,[`${N.PREFIX}-borderless`]:x}),G=c||v.placeholder[n],Z=Object.assign(Object.assign({},e),{showClearIgnoreDisabled:!!_,placeholder:G,clearIcon:t,disabled:U,inputValue:C,value:R,defaultPickerValue:I,onChange:this.handleInputChange,onEnterPress:this.handleInputComplete,block:!0,inputStyle:f,showClear:u,insetLabel:o,insetLabelId:l,type:n,format:a,multiple:i,validateStatus:d,inputReadOnly:T||!!_,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,onClear:this.handleInputClear,prefix:h,size:g,autofocus:this.state.autofocus,dateFnsLocale:w,rangeInputFocus:E,rangeSeparator:y,rangeSeparatorNode:D,onRangeBlur:this.handleRangeInputBlur,onRangeClear:this.handleRangeInputClear,onRangeEndTabPress:this.handleRangeEndTabPress,rangeInputStartRef:_?null:this.rangeInputStartRef,rangeInputEndRef:_?null:this.rangeInputEndRef,inputRef:this.inputRef});return b.createElement("div",{role:"combobox","aria-label":Array.isArray(R)&&R.length?"Change date":"Choose date","aria-disabled":r,onClick:this.handleTriggerWrapperClick,className:se},typeof m=="function"?b.createElement(ss,Object.assign({},Z,{triggerRender:m,componentName:"DatePicker",componentProps:Object.assign({},this.props)})):b.createElement(Fn,Object.assign({},Z)))}render(){const e=this.props,{style:t,className:n,prefixCls:a,type:i}=e,r=Ol(e,["style","className","prefixCls","type"]),u=Object.assign({style:t,className:Y(n,{[a]:!0}),ref:this.setTriggerRef,"aria-invalid":this.props["aria-invalid"],"aria-errormessage":this.props["aria-errormessage"],"aria-labelledby":this.props["aria-labelledby"],"aria-describedby":this.props["aria-describedby"],"aria-required":this.props["aria-required"]},this.getDataAttr(r)),o=[];i.toLowerCase().includes("range")||o.push("borderless");const l=this.renderInner(Ji(this.props,o)),c=this.wrapPopover(l);return b.createElement("div",Object.assign({},u),c)}};Ze.contextType=Xr;Ze.propTypes={"aria-describedby":p.string,"aria-errormessage":p.string,"aria-invalid":p.bool,"aria-labelledby":p.string,"aria-required":p.bool,borderless:p.bool,type:p.oneOf(P.TYPE_SET),size:p.oneOf(P.SIZE_SET),clearIcon:p.node,density:p.oneOf(P.DENSITY_SET),defaultValue:p.oneOfType([p.string,p.number,p.object,p.array]),value:p.oneOfType([p.string,p.number,p.object,p.array]),defaultPickerValue:p.oneOfType([p.string,p.number,p.object,p.array]),disabledTime:p.func,disabledTimePicker:p.bool,hideDisabledOptions:p.bool,format:p.string,disabled:p.bool,multiple:p.bool,max:p.number,placeholder:p.oneOfType([p.string,p.array]),presets:p.array,presetPosition:p.oneOf(P.PRESET_POSITION_SET),onChange:p.func,onChangeWithDateFirst:p.bool,weekStartsOn:p.number,disabledDate:p.func,timePickerOpts:p.object,showClear:p.bool,onOpenChange:p.func,open:p.bool,defaultOpen:p.bool,motion:p.oneOfType([p.bool,p.func,p.object]),className:p.string,prefixCls:p.string,prefix:p.node,insetLabel:p.node,insetLabelId:p.string,zIndex:p.number,position:p.oneOf(Gr.POSITION_SET),getPopupContainer:p.func,onCancel:p.func,onConfirm:p.func,needConfirm:p.bool,inputStyle:p.object,timeZone:p.oneOfType([p.string,p.number]),triggerRender:p.func,stopPropagation:p.oneOfType([p.bool,p.string]),autoAdjustOverflow:p.bool,onBlur:p.func,onFocus:p.func,onClear:p.func,style:p.object,autoFocus:p.bool,inputReadOnly:p.bool,validateStatus:p.oneOf(P.STATUS),renderDate:p.func,renderFullDate:p.func,spacing:p.oneOfType([p.number,p.object]),startDateOffset:p.func,endDateOffset:p.func,autoSwitchDate:p.bool,dropdownClassName:p.string,dropdownStyle:p.object,dropdownMargin:p.oneOfType([p.number,p.object]),topSlot:p.node,bottomSlot:p.node,dateFnsLocale:p.object,syncSwitchMonth:p.bool,onPanelChange:p.func,rangeSeparator:p.string,rangeSeparatorNode:p.node,preventScroll:p.bool,yearAndMonthOpts:p.object,onClickOutSide:p.func};Ze.__SemiComponentName__="DatePicker";Ze.defaultProps=Qi(Ze.__SemiComponentName__,{onChangeWithDateFirst:!0,borderless:!1,autoAdjustOverflow:!0,stopPropagation:!0,motion:!0,prefixCls:N.PREFIX,presetPosition:"bottom",zIndex:Br.DEFAULT_Z_INDEX,type:"date",size:"default",density:"default",multiple:!1,defaultOpen:!1,disabledHours:Q,disabledMinutes:Q,disabledSeconds:Q,hideDisabledOptions:!1,onBlur:Q,onFocus:Q,onClear:Q,onCancel:Q,onConfirm:Q,onChange:Q,onOpenChange:Q,onPanelChange:Q,onPresetClick:Q,weekStartsOn:ut.WEEK_START_ON,disabledDate:Tt,disabledTime:Tt,inputReadOnly:!1,spacing:ut.SPACING,autoSwitchDate:!0,syncSwitchMonth:!1,rangeSeparator:P.DEFAULT_SEPARATOR_RANGE,insetInput:!1,onClickOutSide:Q});const Sl=ds(b.forwardRef((s,e)=>{const t=Object.assign({},s),{type:n,format:a,rangeSeparator:i}=t;return typeof a=="string"&&a&&(/[Hhms]+/.test(a)||(n==="dateTime"?t.type="date":n==="dateTimeRange"&&(t.type="dateRange"))),i&&typeof i=="string"&&(t.rangeSeparator=` ${i.trim()} `),t.insetInput&&(t.position||(t.position=P.POSITION_INLINE_INPUT),t.position.includes("Over")&&!t.spacing&&(t.spacing=ut.SPACING_INSET_INPUT)),b.createElement(Xr.Consumer,null,r=>{let{timeZone:u}=r;return b.createElement(zr,{componentName:"DatePicker"},(o,l,c)=>b.createElement(Ze,Object.assign({timeZone:u,localeCode:l,locale:o,dateFnsLocale:c},t,{ref:e})))})}),Ze);function mt(){return{totalInput:0,totalOutput:0,totalCacheWrite:0,totalCacheRead:0}}async function xl(){const s=await fetch(`${Jr}/token-history`);if(!s.ok)throw new Error(`HTTP ${s.status}`);const e=await s.json(),n=(e.history??[]).map(o=>{const l=Number(o.ts??0);return{id:String(o.sessionId??o.id??""),title:String(o.title??""),input:Number(o.input??0),output:Number(o.output??0),cacheWrite:Number(o.cacheCreate??o.cacheWrite??0),cacheRead:Number(o.cacheRead??0),model:String(o.model??""),ts:l<1e12?l*1e3:l,deleted:o.deleted}}),a=e.snap??{},i=Object.values(a).reduce((o,l)=>({totalInput:o.totalInput+(l.input??0),totalOutput:o.totalOutput+(l.output??0),totalCacheWrite:o.totalCacheWrite+(l.cacheCreate??l.cacheWrite??0),totalCacheRead:o.totalCacheRead+(l.cacheRead??0)}),mt()),r=e.conductorLast,u=r?{totalInput:r.input??0,totalOutput:r.output??0,totalCacheWrite:r.cacheCreate??0,totalCacheRead:r.cacheRead??0}:void 0;return{history:n,snap:i,conductorSnapshot:u}}async function Ml(){const s=await fetch(`${fs}/token-stats`);if(!s.ok)throw new Error(`HTTP ${s.status}`);return(await s.json()).records??[]}async function kl(){const s=await fetch(`${Jr}/token-stats`);if(!s.ok)throw new Error(`HTTP ${s.status}`);return(await s.json()).records??[]}const Nl=15e3;let ht=null;const de=hs((s,e)=>(wa("token.snapshot",t=>{const n=t;n.snap&&s({snapshot:n.snap}),n.history&&s({history:n.history,loading:!1})}),wa("token.changed",t=>{const n=t;n.entry&&s(a=>({history:[...a.history,n.entry],snapshot:{totalInput:a.snapshot.totalInput+n.entry.input,totalOutput:a.snapshot.totalOutput+n.entry.output,totalCacheWrite:a.snapshot.totalCacheWrite+n.entry.cacheWrite,totalCacheRead:a.snapshot.totalCacheRead+n.entry.cacheRead}}))}),{history:[],snapshot:mt(),loading:!0,error:null,conductorHistory:[],conductorSnapshot:mt(),conductorLoading:!1,conductorOffline:!1,dateRange:[null,null],async fetchHistory(){s({loading:!0,error:null});try{const t=await xl();s({history:t.history,snapshot:t.snap,loading:!1}),t.conductorSnapshot&&s({conductorSnapshot:t.conductorSnapshot})}catch(t){s({loading:!1,error:t.message})}},async fetchConductorHistory(){s({conductorLoading:!0});try{const n=(await Ml()).map((i,r)=>({id:`cond-${r}`,title:i.thread||`Conductor ${r+1}`,input:i.input,output:i.output,cacheWrite:i.cacheCreate,cacheRead:i.cacheRead,model:i.model,ts:Date.now()})),a=n.reduce((i,r)=>({totalInput:i.totalInput+r.input,totalOutput:i.totalOutput+r.output,totalCacheWrite:i.totalCacheWrite+r.cacheWrite,totalCacheRead:i.totalCacheRead+r.cacheRead}),mt());s({conductorHistory:n,conductorSnapshot:a,conductorLoading:!1,conductorOffline:!1})}catch{s({conductorLoading:!1,conductorOffline:!0})}},async fetchLiveStats(){try{const n=(await kl()).reduce((a,i)=>({totalInput:a.totalInput+i.input,totalOutput:a.totalOutput+i.output,totalCacheWrite:a.totalCacheWrite+i.cacheCreate,totalCacheRead:a.totalCacheRead+i.cacheRead}),mt());s({snapshot:n})}catch{}},startPolling(){ht||(ht=setInterval(()=>{e().fetchHistory()},Nl))},stopPolling(){ht&&(clearInterval(ht),ht=null)},setDateRange(t){s({dateRange:t})},resetFilters(){s({dateRange:[null,null]})}}));function vt(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:String(s)}function Rn(s){return s>=1e6?`${(s/1e6).toFixed(2)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:String(s)}function Ai({snapshot:s,history:e,cards:t}){const{t:n}=lt(),a=de(m=>m.snapshot),i=de(m=>m.history),r=de(m=>m.dateRange),u=s??a,o=e??i,l=J.useMemo(()=>{const[m,g]=r;if(!s&&(m||g)){const y=o.filter(R=>{const C=R.ts<1e12?R.ts*1e3:R.ts;return!(m&&Cg.getTime())}),D=y.reduce((R,C)=>R+C.input,0),_=y.reduce((R,C)=>R+C.output,0),I=y.reduce((R,C)=>R+C.cacheWrite,0),x=y.reduce((R,C)=>R+C.cacheRead,0);return{totalInput:D,totalOutput:_,totalCacheWrite:I,totalCacheRead:x}}return u},[o,u,r,s]),c=J.useMemo(()=>{const m=new Date;m.setHours(0,0,0,0);const g=m.getTime();return o.filter(T=>(T.ts<1e12?T.ts*1e3:T.ts)>=g).reduce((T,y)=>T+y.input+y.output,0)},[o]),d=l.totalInput+l.totalOutput,f=l.totalInput+l.totalCacheWrite+l.totalCacheRead,h=f>0?(l.totalCacheRead/f*100).toFixed(1):"0",v=[{labelKey:"tok.total",value:vt(d)},{labelKey:"tok.cost",value:`${h}%`},{labelKey:"tok.today",value:vt(c)}],w=t??v;return A.jsx("div",{className:"ga-token-stats",children:w.map(m=>A.jsxs("div",{className:"ga-token-stat-card","data-testid":`token-stat-${m.labelKey}`,children:[A.jsx("div",{className:"ga-token-stat-label",children:n(m.labelKey)}),A.jsx("div",{className:"ga-token-stat-value","data-testid":`token-stat-value-${m.labelKey}`,children:m.value})]},m.labelKey))})}function Al(s,e){const t=new Map;for(const n of s){const a=n.id,i=t.get(a);if(i)i.input+=n.input,i.output+=n.output,i.cacheWrite+=n.cacheWrite,i.cacheRead+=n.cacheRead,n.ts>i.ts&&(i.ts=n.ts),n.deleted&&(i.deleted=!0);else{const r=e.get(n.id);t.set(a,{id:n.id,title:r||n.title||n.id,input:n.input,output:n.output,cacheWrite:n.cacheWrite,cacheRead:n.cacheRead,model:n.model,ts:n.ts,deleted:n.deleted})}}return[...t.values()]}function Fi({dataSource:s,loading:e}){const{t}=lt(),n=de(f=>f.history),a=de(f=>f.loading),i=de(f=>f.dateRange),r=ps(f=>f.sessions),u=s??n,o=e??a,l=J.useMemo(()=>{const f=new Map;for(const h of r)h.title&&f.set(h.id,h.title);return f},[r]),c=J.useMemo(()=>{let f=u;if(!s){const[v,w]=i;(v||w)&&(f=f.filter(m=>{const g=m.ts<1e12?m.ts*1e3:m.ts;return!(v&&gw.getTime())}))}const h=Al(f,l);return h.sort((v,w)=>w.ts-v.ts),h},[u,i,s,l]),d=[{title:t("tok.colSession"),dataIndex:"title",key:"title",render:(f,h)=>A.jsxs("span",{style:{display:"flex",alignItems:"center",gap:6},children:[A.jsx("span",{children:h.title||h.id}),h.deleted&&A.jsx(ms,{size:"small",color:"orange",type:"ghost",children:t("tok.deleted")})]})},{title:t("tok.colIn"),dataIndex:"input",key:"input",width:100,sorter:(f,h)=>((f==null?void 0:f.input)??0)-((h==null?void 0:h.input)??0),render:(f,h)=>A.jsx("span",{className:"ga-token-mono",children:Rn(h.input)})},{title:t("tok.colOut"),dataIndex:"output",key:"output",width:100,sorter:(f,h)=>((f==null?void 0:f.output)??0)-((h==null?void 0:h.output)??0),render:(f,h)=>A.jsx("span",{className:"ga-token-mono",children:Rn(h.output)})},{title:t("tok.colCacheW"),dataIndex:"cacheWrite",key:"cacheWrite",width:110,sorter:(f,h)=>((f==null?void 0:f.cacheWrite)??0)-((h==null?void 0:h.cacheWrite)??0),render:(f,h)=>A.jsx("span",{className:"ga-token-mono",children:Rn(h.cacheWrite)})},{title:t("tok.colCache"),dataIndex:"cacheRead",key:"cacheRead",width:110,sorter:(f,h)=>((f==null?void 0:f.cacheRead)??0)-((h==null?void 0:h.cacheRead)??0),render:(f,h)=>A.jsx("span",{className:"ga-token-mono",children:Rn(h.cacheRead)})},{title:t("tok.cost"),key:"cacheRate",width:100,render:(f,h)=>{const v=h.input+h.cacheWrite+h.cacheRead,w=v>0?(h.cacheRead/v*100).toFixed(1):"0";return A.jsxs("span",{className:"ga-token-mono",children:[w,"%"]})}}];return!o&&c.length===0?A.jsx(ei,{description:t("tok.noData"),style:{marginTop:32}}):A.jsx(os,{columns:d,dataSource:c,rowKey:"id",loading:o,pagination:{pageSize:15,showTotal:!0},size:"small",bordered:!1})}function Fl(){const{t:s}=lt(),e=de(a=>a.dateRange),t=de(a=>a.setDateRange),n=de(a=>a.resetFilters);return A.jsxs("div",{className:"ga-token-filter",children:[A.jsx(Sl,{type:"dateTimeRange",value:e[0]&&e[1]?[e[0],e[1]]:void 0,onChange:a=>{Array.isArray(a)&&a.length===2?t([a[0]?new Date(a[0]):null,a[1]?new Date(a[1]):null]):t([null,null])},placeholder:[s("tok.from"),s("tok.to")],density:"compact",style:{width:340}}),A.jsx(yt,{size:"small",icon:A.jsx(gs,{}),theme:"borderless",onClick:n,children:s("tok.reset")})]})}function Yl(){const{t:s}=lt(),e=de(n=>n.conductorHistory),t=de(n=>n.conductorLoading);return!t&&e.length===0?A.jsx(ei,{description:s("tok.noData"),style:{marginTop:32}}):t?A.jsx("div",{className:"ga-token-loading",children:A.jsx(ys,{})}):A.jsx(Fi,{dataSource:e,loading:!1})}function Ll(){const{t:s}=lt(),e=de(i=>i.fetchConductorHistory),t=de(i=>i.conductorOffline),n=de(i=>i.conductorSnapshot);J.useEffect(()=>{e()},[e]);const a=J.useMemo(()=>{const i=n.totalInput+n.totalOutput;return[{labelKey:"tok.condTotal",value:vt(i)},{labelKey:"tok.colIn",value:vt(n.totalInput)},{labelKey:"tok.colOut",value:vt(n.totalOutput)}]},[n]);return A.jsxs("div",{className:"ga-token-content",children:[A.jsx(Da,{type:"info",description:s("tok.condTip"),style:{marginBottom:12}}),t?A.jsx(Da,{type:"warning",description:s("tok.condOffline")}):A.jsxs(A.Fragment,{children:[A.jsx(Ai,{cards:a}),A.jsx(Yl,{})]})]})}function zl(){const{t:s}=lt(),e=de(a=>a.fetchHistory),t=de(a=>a.startPolling),n=de(a=>a.stopPolling);return J.useEffect(()=>(e(),t(),()=>n()),[e,t,n]),A.jsxs("div",{className:"ga-token-page",children:[A.jsxs(us,{type:"line",defaultActiveKey:"chat",children:[A.jsx(Ta,{tab:s("tok.tabAll"),itemKey:"chat",children:A.jsxs("div",{className:"ga-token-content",children:[A.jsx(Ai,{}),A.jsx(Fl,{}),A.jsx(Fi,{})]})}),A.jsx(Ta,{tab:s("tok.tabConductor"),itemKey:"conductor",children:A.jsx(Ll,{})})]}),A.jsx("div",{className:"ga-token-disclaimer",children:s("tok.disclaimer")})]})}export{zl as TokenPage}; diff --git a/frontends/desktop/dist/assets/TokenPage-DwLDOw_j.css b/frontends/desktop/dist/assets/TokenPage-DwLDOw_j.css deleted file mode 100644 index 7a68d994..00000000 --- a/frontends/desktop/dist/assets/TokenPage-DwLDOw_j.css +++ /dev/null @@ -1 +0,0 @@ -.semi-scrolllist{width:100%;height:100%;background:var(--semi-color-bg-3);box-shadow:0 0 1px #0000004d,0 4px 14px #0000001a;border-radius:var(--semi-border-radius-medium);overflow:hidden;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column}.semi-scrolllist-header{text-align:center;padding:0 16px;background:transparent}.semi-scrolllist-header-title{padding:16px 0;font-weight:600;color:var(--semi-color-text-0);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-scrolllist-body{display:flex;height:300px;padding:0 16px;overflow:hidden}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer-nocycle>ul:before,.semi-scrolllist-body .semi-scrolllist-item>ul:before{content:"";display:block;width:100%;height:132px}.semi-scrolllist-body .semi-scrolllist-item{position:relative;flex:1;overflow-x:hidden;overflow-y:auto}.semi-scrolllist-body .semi-scrolllist-item:not(:last-child){border-right:1px solid var(--semi-color-border)}.semi-scrolllist-body .semi-scrolllist-item>ul,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul{box-sizing:border-box;width:100%;margin:0;padding:0 0 132px;list-style:none}.semi-scrolllist-body .semi-scrolllist-item>ul>li,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li{list-style:none;height:36px;box-sizing:border-box;color:var(--semi-color-text-0);text-align:center;display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms}.semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel{background:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel>svg,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel>svg{color:var(--semi-color-text-2);width:16px;height:16px;margin-right:12px}.semi-scrolllist-body .semi-scrolllist-item>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected),.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected){cursor:pointer}.semi-scrolllist-body .semi-scrolllist-item>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):hover,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):hover{background-color:var(--semi-color-fill-1)}.semi-scrolllist-body .semi-scrolllist-item>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):active,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):active{background-color:var(--semi-color-fill-2)}.semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-disabled,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-scrolllist-body .semi-scrolllist-item-wheel{position:relative;flex:1;overflow:hidden}.semi-scrolllist-body .semi-scrolllist-item-wheel:not(:last-child){border-right:1px solid var(--semi-color-border)}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-item-selected{font-weight:600;color:var(--semi-color-primary)!important}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer{overflow-x:hidden;overflow-y:auto;height:100%;width:100%;padding-right:18px}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-shade{width:100%;height:50%;pointer-events:none;position:absolute}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-shade-pre{top:0;margin-top:-19px;background:var(--semi-color-bg-3);opacity:.5}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-shade-post{top:50%;margin-top:19px;background:var(--semi-color-bg-3);opacity:.5}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-selector{pointer-events:none;position:absolute;top:50%;border-top:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-border);height:36px;width:100%;transform:translateY(-50%)}.semi-scrolllist .semi-scrolllist-footer{border-top:1px solid var(--semi-color-border);padding:10px}.semi-scrolllist .semi-scrolllist-line{background:var(--semi-color-border);height:1px}.semi-rtl .semi-scrolllist,.semi-portal-rtl .semi-scrolllist{direction:rtl}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item:not(:last-child),.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item:not(:last-child){border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel>svg,.semi-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel>svg,.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel>svg,.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel>svg{margin-right:0;margin-left:12px}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel:not(:last-child),.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel:not(:last-child){border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer,.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer{padding-right:0;padding-left:18px}.semi-datepicker{box-sizing:border-box;display:inline-block}.semi-datepicker-container{display:flex}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-item{-ms-overflow-style:none;scrollbar-width:none}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-item::-webkit-scrollbar{display:none;width:0;height:0}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-list-outer{-ms-overflow-style:none;scrollbar-width:none}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-list-outer::-webkit-scrollbar{display:none;width:0;height:0}.semi-datepicker-month-grid{-webkit-user-select:none;user-select:none;display:flex}.semi-datepicker-month-grid-left,.semi-datepicker-month-grid-right{position:relative;padding:0;display:inline-flex;flex-direction:column;justify-content:flex-start}.semi-datepicker-month-grid[x-type=date] .semi-datepicker-yam,.semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-yam{height:100%}.semi-datepicker-month-grid[x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-yam{height:calc(100% - 54px)}.semi-datepicker-month-grid .semi-datepicker-yam-showing{min-height:378px;min-width:284px}.semi-datepicker-month-grid[x-type=date] .semi-datepicker-yam-showing{min-height:325px}.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=year],.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=year],.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=time],.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=time]{min-height:317px}.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-navigation{padding-top:8px;padding-bottom:8px}.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-tpk{min-height:100%}.semi-datepicker-month-grid[x-insetinput=true][x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-month-grid[x-insetinput=true][x-type=dateTimeRange] .semi-datepicker-yam{height:100%}.semi-datepicker-month-grid[x-preset-position=left][x-insetinput=false] .semi-datepicker-month,.semi-datepicker-month-grid[x-preset-position=right][x-insetinput=false] .semi-datepicker-month{height:253px}.semi-datepicker-month-grid .semi-datepicker-yearmonth-header{background:var(--semi-color-bg-3);padding:12px 16px;border-bottom:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium) var(--semi-border-radius-medium) 0 0;display:flex;align-items:center}.semi-datepicker-month-grid .semi-scrolllist{background:var(--semi-color-bg-3);position:relative;box-shadow:none;height:auto;width:100%;height:100%;overflow:hidden;flex:1}.semi-datepicker-month-grid .semi-scrolllist-header,.semi-datepicker-month-grid .semi-scrolllist-body{box-sizing:border-box;width:100%}.semi-datepicker-month-grid .semi-scrolllist-header{border-bottom:1px solid var(--semi-color-border);padding:16px}.semi-datepicker-month-grid .semi-scrolllist-body{height:100%;overflow:hidden;padding:0;flex:1}.semi-datepicker-month-grid .semi-scrolllist-line{display:none}.semi-datepicker-month-grid .semi-scrolllist-header-title{padding:0;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-height:24px;line-height:24px}.semi-datepicker-month-grid[x-panel-yearandmonth-open-type=left] .semi-datepicker-weeks,.semi-datepicker-month-grid[x-panel-yearandmonth-open-type=right] .semi-datepicker-weeks{min-height:216px}.semi-datepicker-panel-yam{max-width:484px}.semi-datepicker-panel-yam[x-type=monthRange]{max-width:584px}.semi-datepicker-panel-yam .semi-datepicker-yearmonth-body{display:flex}.semi-datepicker-panel-yam .semi-datepicker-yearmonth-body .semi-scrolllist:nth-child(2){border-left:1px solid var(--semi-color-border)}.semi-datepicker-panel-yam .semi-scrolllist{box-shadow:none;height:266px}.semi-datepicker-panel-yam .semi-scrolllist-list-outer>ul>li{min-width:64px}.semi-datepicker-panel-yam .semi-scrolllist-item>ul>li{min-width:82px}.semi-datepicker-panel-yam .semi-scrolllist-body{padding:0;overflow:hidden}.semi-datepicker-panel-yam .semi-scrolllist-body .semi-scrolllist-item-wheel:not(#neverExistElement){border:none}.semi-datepicker-footer{padding-top:10px;padding-right:8px;padding-bottom:10px;text-align:right;background-color:var(--semi-color-fill-0)}.semi-datepicker-footer .semi-button:first-of-type{margin-right:12px}.semi-datepicker-footer .semi-button:nth-of-type(2){margin-right:8px}.semi-datepicker-yam{position:absolute;top:0;width:100%;display:flex;flex-direction:column;box-sizing:border-box}.semi-datepicker-tpk{position:absolute;top:0;height:calc(100% - 54px);width:100%;display:flex;flex-direction:column}.semi-datepicker-tpk .semi-datepicker-time{height:100%}.semi-datepicker-navigation{display:flex;align-items:center;box-sizing:content-box;height:32px;padding:12px 16px}.semi-datepicker-navigation-left,.semi-datepicker-navigation-right{width:32px;height:32px;display:flex;justify-content:center;align-items:center}.semi-datepicker-navigation .semi-button{color:var(--semi-color-text-2);min-width:32px}.semi-datepicker-navigation-month{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;flex-grow:1;text-align:center;font-weight:600;color:var(--semi-color-text-0)}.semi-datepicker-navigation-month .semi-button{color:var(--semi-color-text-0)}.semi-datepicker-month{width:252px;box-sizing:content-box;padding:0 16px 16px}.semi-datepicker-weekday{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;color:var(--semi-color-text-2);border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-weekday-item{width:36px;height:36px;line-height:36px;text-align:center;display:inline-block}.semi-datepicker-weeks{color:var(--semi-color-text-0)}.semi-datepicker-week{display:flex;align-items:center}.semi-datepicker-day{box-sizing:border-box;display:inline-block;width:36px;height:36px;display:flex;justify-content:center;align-items:center;cursor:pointer}.semi-datepicker-day-main{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin:0 auto;box-sizing:border-box;border-radius:var(--semi-border-radius-small)}.semi-datepicker-day-main:hover{background-color:var(--semi-color-fill-0)}.semi-datepicker-day-main:active{background-color:var(--semi-color-fill-1)}.semi-datepicker-day-today .semi-datepicker-day-main{color:var(--semi-color-primary);background-color:var(--semi-color-fill-0);font-weight:600}.semi-datepicker-day-today.semi-datepicker-day-disabled .semi-datepicker-day-main{color:var(--semi-color-primary-disabled)}.semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-day-inhover .semi-datepicker-day-main,.semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main,.semi-datepicker-day-hoverday-around-singleselected .semi-datepicker-day-main{border-radius:0;margin-left:0;margin-right:0;width:36px}.semi-datepicker-day-selected .semi-datepicker-day-main,.semi-datepicker-day-selected-start.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-start.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small)}.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-datepicker-day-hoverday-beforerange .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-datepicker-day-hoverday-afterrange .semi-datepicker-day-main{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{width:34px;margin-left:2px;margin-right:0;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{width:34px;margin-right:2px;margin-left:0;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-datepicker-day-hoverday-inrange .semi-datepicker-day-main{border-radius:0}.semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{background-color:var(--semi-color-fill-0)}.semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-day-hoverday-offset .semi-datepicker-day-main{background-color:var(--semi-color-fill-1)}.semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-day-inhover .semi-datepicker-day-main{background-color:var(--semi-color-primary-light-default)}.semi-datepicker-day-hoverday-inrange .semi-datepicker-day-main,.semi-datepicker-day-hoverday-beforerange .semi-datepicker-day-main,.semi-datepicker-day-hoverday-afterrange .semi-datepicker-day-main,.semi-datepicker-day-hoverday-around-singleselected .semi-datepicker-day-main{background-color:var(--semi-color-primary-light-active)}.semi-datepicker-day-selected .semi-datepicker-day-main,.semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-day-selected-end .semi-datepicker-day-main{background-color:var(--semi-color-primary);color:var(--semi-color-white)}.semi-datepicker-day-selected .semi-datepicker-day-main:hover,.semi-datepicker-day-selected-start .semi-datepicker-day-main:hover,.semi-datepicker-day-selected-end .semi-datepicker-day-main:hover{background-color:var(--semi-color-primary)}.semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main{background-color:var(--semi-color-primary-light-hover)}.semi-datepicker-day-selected-start-afterhover .semi-datepicker-day-main,.semi-datepicker-day-selected-end-beforehover .semi-datepicker-day-main{border:1px solid var(--semi-color-primary-active)}.semi-datepicker-day-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-datepicker-day-disabled .semi-datepicker-day-main:hover,.semi-datepicker-day-disabled .semi-datepicker-day-main:active{background-color:transparent}.semi-datepicker-day-disabled.semi-datepicker-day-selected .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-inhover .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-hoverday-offset .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main{background-color:var(--semi-color-disabled-fill);color:var(--semi-color-disabled-text)}.semi-datepicker-switch{text-align:center;display:flex;border-top:1px solid var(--semi-color-border);margin-top:auto}.semi-datepicker-switch-date,.semi-datepicker-switch-time{width:50%;cursor:pointer;padding-top:16px;padding-bottom:16px;display:flex;justify-content:center;align-items:center;color:var(--semi-color-text-2)}.semi-datepicker-switch-date:not(.semi-datepicker-switch-time-disabled):hover,.semi-datepicker-switch-time:not(.semi-datepicker-switch-time-disabled):hover{background-color:var(--semi-color-fill-0)}.semi-datepicker-switch-date-active,.semi-datepicker-switch-time-active{color:var(--semi-color-text-0);font-weight:600;cursor:auto}.semi-datepicker-switch-date-active:hover,.semi-datepicker-switch-time-active:hover{background-color:inherit}.semi-datepicker-switch-date-disabled,.semi-datepicker-switch-time-disabled{cursor:not-allowed}.semi-datepicker-switch-text{padding-left:8px}.semi-datepicker-time .semi-jumperlist{box-shadow:none;border-radius:0}.semi-datepicker-quick-control{box-sizing:border-box;background-color:transparent}.semi-datepicker-quick-control-header{padding:18px 12px 0;font-weight:600}.semi-datepicker-quick-control-left{border-right:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-right{border-left:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-top{border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-bottom{border-top:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-left-content-wrapper,.semi-datepicker-quick-control-right-content-wrapper{max-width:200px;margin-top:14px;overflow-y:auto}.semi-datepicker-quick-control-top-content-wrapper,.semi-datepicker-quick-control-bottom-content-wrapper{overflow-y:auto;max-height:100px}.semi-datepicker-quick-control-left-content,.semi-datepicker-quick-control-right-content{box-sizing:border-box;display:grid;align-content:flex-start;grid-gap:8px;grid-template-columns:repeat(2,minmax(76.5px,84px));padding:0 12px 12px}.semi-datepicker-quick-control-left-content-item,.semi-datepicker-quick-control-right-content-item{max-width:84px}.semi-datepicker-quick-control-left-content-item-ellipsis,.semi-datepicker-quick-control-right-content-item-ellipsis{width:68px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-top-content,.semi-datepicker-quick-control-bottom-content{display:grid;grid-gap:8px;grid-template-columns:repeat(3,minmax(70.924px,75.924px));align-content:flex-start;padding:8px 20px}.semi-datepicker-quick-control-top-content-item,.semi-datepicker-quick-control-bottom-content-item{max-width:75.924px}.semi-datepicker-quick-control-top-content-item-ellipsis,.semi-datepicker-quick-control-bottom-content-item-ellipsis{width:59.924px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-top-range-content,.semi-datepicker-quick-control-bottom-range-content{box-sizing:border-box;display:grid;align-content:flex-start;grid-template-columns:repeat(5,minmax(96.2px,99.2px));grid-gap:8px;padding:8px 20px}.semi-datepicker-quick-control-top-range-content-item,.semi-datepicker-quick-control-bottom-range-content-item{max-width:99.2px}.semi-datepicker-quick-control-top-range-content-item-ellipsis,.semi-datepicker-quick-control-bottom-range-content-item-ellipsis{width:83.2px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-top-month-content,.semi-datepicker-quick-control-bottom-month-content{box-sizing:border-box;display:grid;grid-template-columns:repeat(2,minmax(51px,58.5px));grid-gap:8px;align-content:flex-start;padding:8px 20px}.semi-datepicker-quick-control-top-month-content-item,.semi-datepicker-quick-control-bottom-month-content-item{max-width:58.5px}.semi-datepicker-quick-control-top-month-content-item-ellipsis,.semi-datepicker-quick-control-bottom-month-content-item-ellipsis{max-width:42.5px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-month{max-width:284px}.semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:258px}.semi-datepicker-quick-control-month .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-month .semi-datepicker-quick-control-left-content-wrapper{max-height:214px}.semi-datepicker-quick-control-date{max-width:284px}.semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-date .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-date .semi-datepicker-quick-control-left-content-wrapper{max-height:273px}.semi-datepicker-quick-control-dateTime{max-width:284px}.semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-left-content-wrapper{max-height:326px}.semi-datepicker-quick-control-dateRange{max-width:568px}.semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-left-content-wrapper{max-height:273px}.semi-datepicker-quick-control-dateTimeRange{max-width:568px}.semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-left-content-wrapper{max-height:326px}.semi-datepicker-topSlot{border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-leftSlot{border-right:1px solid var(--semi-color-border)}.semi-datepicker-rightSlot{border-left:1px solid var(--semi-color-border)}.semi-datepicker-bottomSlot{border-top:1px solid var(--semi-color-border)}.semi-datepicker .semi-popover-trigger{width:100%}.semi-datepicker .semi-popover-trigger .semi-input-wrapper{font-size:13px}.semi-datepicker .semi-popover-trigger .semi-input-suffix{color:var(--semi-color-primary)}.semi-datepicker .semi-datepicker-input-readonly{cursor:pointer}.semi-datepicker-inset-input-wrapper{display:flex;flex-wrap:nowrap;justify-content:space-between;box-sizing:border-box;column-gap:8px;padding:12px 16px 0;width:284px}.semi-datepicker-inset-input-wrapper[x-type=dateRange],.semi-datepicker-inset-input-wrapper[x-type=dateTimeRange]{width:568px}.semi-datepicker-inset-input-wrapper[x-type=month]{width:165px}.semi-datepicker-inset-input-wrapper[x-type=monthRange]{width:331px}.semi-datepicker-inset-input-wrapper .semi-input-wrapper{flex:1;flex-shrink:0}.semi-datepicker-inset-input-separator{flex-grow:0;flex-shrink:0;height:32px;line-height:32px;padding:0 4px;color:var(--semi-color-text-3)}.semi-datepicker-range-input{display:flex;align-items:center;box-sizing:border-box;border-radius:var(--semi-border-radius-small);height:32px;color:var(--semi-color-text-2);background-color:var(--semi-color-fill-0);border:0px solid transparent}.semi-datepicker-range-input:hover,.semi-datepicker-range-input:active{border-color:transparent}.semi-datepicker-range-input:focus-within{border-color:transparent}.semi-datepicker-range-input .semi-datepicker-monthRange-input{background-color:transparent}.semi-datepicker-range-input-wrapper{box-sizing:border-box;background-color:transparent;padding:0 8px;height:100%;width:100%;border:1px solid transparent;border-radius:var(--semi-border-radius-small);display:flex;align-items:center}.semi-datepicker-range-input-wrapper .semi-input-wrapper{background-color:transparent;height:fit-content;border:none}.semi-datepicker-range-input-wrapper .semi-input-wrapper:active:not(#neverExistElement){background-color:transparent}.semi-datepicker-range-input-wrapper .semi-input-wrapper:hover:not(#neverExistElement){background-color:transparent}.semi-datepicker-range-input-wrapper-focus{border-color:transparent;background-color:var(--semi-color-fill-1);border-radius:var(--semi-border-radius-small);transition:background-color .16s ease-in-out}.semi-datepicker-range-input-wrapper-focus~.semi-datepicker-range-input-clearbtn{display:flex}.semi-datepicker-range-input-wrapper-focus~.semi-datepicker-range-input-clearbtn~.semi-datepicker-range-input-suffix{display:none}.semi-datepicker-range-input-wrapper .semi-input{padding:2px 4px}.semi-datepicker-range-input-wrapper-icon{flex-shrink:0}.semi-datepicker-range-input-wrapper:hover{background-color:var(--semi-color-fill-1)}.semi-datepicker-range-input-wrapper-start{border-top-right-radius:0;border-bottom-right-radius:0}.semi-datepicker-range-input-wrapper-start-with-prefix,.semi-datepicker-range-input-wrapper-end{border-radius:0}.semi-datepicker-range-input-wrapper-active{border-color:var(--semi-color-focus-border);background-color:var(--semi-color-fill-1)}.semi-datepicker-range-input-separator{display:flex;align-items:center}.semi-datepicker-range-input-separator-active{color:var(--semi-color-text-0)}.semi-datepicker-range-input-small{height:24px}.semi-datepicker-range-input-large{height:40px}.semi-datepicker-range-input-large .semi-input-default{font-size:16px}.semi-datepicker-range-input:hover .semi-datepicker-range-input-clearbtn{display:flex;cursor:pointer}.semi-datepicker-range-input:hover .semi-datepicker-range-input-clearbtn~.semi-datepicker-range-input-suffix{display:none}.semi-datepicker-range-input:hover .semi-datepicker-range-input-clearbtn:hover{color:var(--semi-color-primary-hover)}.semi-datepicker-range-input-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:var(--semi-color-disabled-fill)}.semi-datepicker-range-input-disabled .semi-datepicker-range-input-wrapper:hover{background-color:transparent}.semi-datepicker-range-input-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-datepicker-range-input-disabled .semi-datepicker-range-input-prefix,.semi-datepicker-range-input-disabled .semi-datepicker-range-input-suffix,.semi-datepicker-range-input-disabled .semi-datepicker-range-input-clearbtn{color:var(--semi-color-disabled-text)}.semi-datepicker-range-input-warning{background-color:var(--semi-color-warning-light-default)}.semi-datepicker-range-input-warning .semi-datepicker-range-input-wrapper:hover{background-color:var(--semi-color-warning-light-hover)}.semi-datepicker-range-input-warning .semi-datepicker-range-input-wrapper-active{border-color:var(--semi-color-warning);background-color:var(--semi-color-warning-light-hover)}.semi-datepicker-range-input-error{background-color:var(--semi-color-danger-light-default)}.semi-datepicker-range-input-error .semi-datepicker-range-input-wrapper:hover{background-color:var(--semi-color-danger-light-hover)}.semi-datepicker-range-input-error .semi-datepicker-range-input-wrapper-active{border-color:var(--semi-color-danger);background-color:var(--semi-color-danger-light-hover)}.semi-datepicker-range-input .semi-datepicker-range-input-clearbtn{display:none}.semi-datepicker-range-input-prefix,.semi-datepicker-range-input-suffix,.semi-datepicker-range-input-clearbtn{display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;white-space:nowrap;color:var(--semi-color-text-2)}.semi-datepicker-range-input-prefix{padding-left:12px;padding-right:8px}.semi-datepicker-range-input-suffix{padding-left:8px;padding-right:12px}.semi-datepicker-range-input-suffix-hidden{display:none}.semi-datepicker-range-input-clearbtn{padding-left:8px;padding-right:12px}.semi-datepicker-compact{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px;display:inline-block;max-width:calc(100vw - 32px)}.semi-datepicker-compact:not(.semi-datepicker-compact-insetInput){width:max-content}.semi-datepicker-compact .semi-datepicker-container,.semi-datepicker-compact .semi-datepicker-month-grid{width:max-content}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-month-grid-left,.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-month-grid-right{min-width:216px;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-month{margin-left:auto;margin-right:auto}.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-yam{height:calc(100% - 32px)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yam{position:relative;width:100%;max-width:100%;max-height:256px;overflow-x:auto;overflow-y:hidden}.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-month-grid-left,.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-month-grid-left{border-right:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yam-showing{min-height:288px;min-width:216px}.semi-datepicker-compact .semi-datepicker-month-grid[x-type=date] .semi-datepicker-yam-showing{min-height:256px}.semi-datepicker-compact .semi-datepicker-month-grid[x-preset-position=left][x-insetinput=false] .semi-datepicker-month,.semi-datepicker-compact .semi-datepicker-month-grid[x-preset-position=right][x-insetinput=false] .semi-datepicker-month{height:220px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-header{box-sizing:border-box;height:48px;padding:12px;width:100%;max-width:100%}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-header button,.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-header .semi-button{width:100%;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-body{display:flex}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-body .semi-scrolllist:nth-child(2){border:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-header{display:none}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-list-outer>ul>li{height:32px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel{border-right:0}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel .semi-scrolllist-selector{height:32px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel .semi-scrolllist-shade-pre{margin-top:-17px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel .semi-scrolllist-shade-post{margin-top:17px}.semi-datepicker-compact .semi-datepicker-month-grid[x-panel-yearandmonth-open-type=left] .semi-datepicker-weeks,.semi-datepicker-compact .semi-datepicker-month-grid[x-panel-yearandmonth-open-type=right] .semi-datepicker-weeks{min-height:168px}.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=year],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=year],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=time],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=time],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-yam-showing{min-height:256px}.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-tpk{min-height:100%}.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true][x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true][x-type=dateTimeRange] .semi-datepicker-yam{height:100%}.semi-datepicker-compact.semi-datepicker-panel-yam .semi-scrolllist{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px}.semi-datepicker-compact .semi-datepicker-tpk{height:calc(100% - 32px)}.semi-datepicker-compact .semi-datepicker-navigation{box-sizing:border-box;height:24px;padding:12px 12px 0;width:100%;max-width:100%}.semi-datepicker-compact .semi-datepicker-navigation-left,.semi-datepicker-compact .semi-datepicker-navigation-right{width:24px;height:24px}.semi-datepicker-compact .semi-datepicker-navigation .semi-button{min-width:24px;min-height:24px}.semi-datepicker-compact .semi-datepicker-navigation-month{min-width:0;overflow:hidden}.semi-datepicker-compact .semi-datepicker-navigation-month .semi-button{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px;max-width:100%}.semi-datepicker-compact .semi-datepicker-navigation-month .semi-button>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-datepicker-compact .semi-datepicker-month{width:216px;padding:0}.semi-datepicker-compact .semi-datepicker-weeks{padding:6px 10px 10px}.semi-datepicker-compact .semi-datepicker-weekday{box-sizing:border-box;height:36px;padding-left:10px;padding-right:10px;padding-bottom:8px;border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-weekday-item{width:28px;height:28px;line-height:28px}.semi-datepicker-compact .semi-datepicker-day{width:28px;height:28px}.semi-datepicker-compact .semi-datepicker-day-main{width:24px;height:24px}.semi-datepicker-compact .semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-inhover .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main{width:28px}.semi-datepicker-compact .semi-datepicker-day-selected-start.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-offsetrange-start.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:4px}.semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:4px 0 0 4px}.semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:0 4px 4px 0}.semi-datepicker-compact .semi-datepicker-day-hoverday-beforerange .semi-datepicker-day-main{border-radius:4px 0 0 4px}.semi-datepicker-compact .semi-datepicker-day-hoverday-afterrange .semi-datepicker-day-main{border-radius:0 4px 4px 0}.semi-datepicker-compact .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{width:34px;margin-left:2px;margin-right:0;border-radius:4px 0 0 4px}.semi-datepicker-compact .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{width:34px;margin-right:2px;margin-left:0;border-radius:0 4px 4px 0}.semi-datepicker-compact .semi-datepicker-switch{box-sizing:border-box;height:32px}.semi-datepicker-compact .semi-datepicker-switch-date,.semi-datepicker-compact .semi-datepicker-switch-time{padding-top:6px;padding-bottom:6px}.semi-datepicker-compact .semi-datepicker-switch-date{border-right:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-switch-text{padding-left:0}.semi-datepicker-compact .semi-datepicker-quick-control-header{padding:16px 12px 0;font-weight:600}.semi-datepicker-compact .semi-datepicker-quick-control-left-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-right-content-wrapper{margin-top:12px}.semi-datepicker-compact .semi-datepicker-quick-control-left-content,.semi-datepicker-compact .semi-datepicker-quick-control-right-content{box-sizing:border-box;display:grid;align-content:flex-start;grid-gap:8px;grid-template-columns:repeat(2,minmax(76.5px,84px));padding:0 12px 12px}.semi-datepicker-compact .semi-datepicker-quick-control-left-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-right-content-item{max-width:84px}.semi-datepicker-compact .semi-datepicker-quick-control-left-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-right-content-item-ellipsis{width:68px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-top-content,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-content{box-sizing:border-box;display:grid;grid-gap:8px;grid-template-columns:repeat(3,minmax(54.94px,59.94px));align-content:flex-start;padding:8px 10px}.semi-datepicker-compact .semi-datepicker-quick-control-top-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-content-item{max-width:59.94px}.semi-datepicker-compact .semi-datepicker-quick-control-top-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-content-item-ellipsis{width:43.94px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-top-range-content,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-range-content{display:grid;grid-template-columns:repeat(5,minmax(73px,76px));grid-gap:8px;align-content:flex-start;padding:8px 10px}.semi-datepicker-compact .semi-datepicker-quick-control-top-range-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-range-content-item{max-width:76px}.semi-datepicker-compact .semi-datepicker-quick-control-top-range-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-range-content-item-ellipsis{width:60px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-top-month-content,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-month-content{display:grid;grid-template-columns:repeat(2,minmax(61px,68.5px));grid-gap:8px;align-content:flex-start;padding:8px 10px}.semi-datepicker-compact .semi-datepicker-quick-control-top-month-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-month-content-item{max-width:68.5px}.semi-datepicker-compact .semi-datepicker-quick-control-top-month-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-month-content-item-ellipsis{max-width:52.5px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-month{min-width:216px;width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:254px}.semi-datepicker-compact .semi-datepicker-quick-control-month .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-month .semi-datepicker-quick-control-left-content-wrapper{max-height:218px}.semi-datepicker-compact .semi-datepicker-quick-control-date{min-width:216px;width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-date .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-date .semi-datepicker-quick-control-left-content-wrapper{max-height:208px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTime{min-width:216px;width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-left-content-wrapper{max-height:240px}.semi-datepicker-compact .semi-datepicker-quick-control-dateRange{min-width:min(432px,calc(100vw - 32px));width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-left-content-wrapper{max-height:208px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange{min-width:min(432px,calc(100vw - 32px));width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-left-content-wrapper{max-height:240px}.semi-datepicker-compact .semi-datepicker-footer{padding-top:10px;padding-right:8px;padding-bottom:10px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper{column-gap:4px;padding:8px 8px 0;width:216px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateRange],.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateTimeRange]{width:432px;padding-top:0}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateRange] .semi-input-wrapper,.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateTimeRange] .semi-input-wrapper{margin-top:8px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=month]{width:195px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper .semi-input-wrapper{height:28px;box-sizing:border-box}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper .semi-input-wrapper .semi-input{font-size:12px;line-height:26px;height:26px;vertical-align:top}.semi-datepicker-compact .semi-datepicker-inset-input-separator{border-left:1px solid var(--semi-color-border);transform:translate(50%);height:auto}.semi-popover-wrapper[x-placement^=top] .semi-datepicker .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=leftTop] .semi-datepicker .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=rightTop] .semi-datepicker .semi-datepicker-weeks,.semi-popover-wrapper[x-placement*=BottomOver] .semi-datepicker .semi-datepicker-weeks{min-height:216px}.semi-popover-wrapper[x-placement^=top] .semi-datepicker-compact .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=leftTop] .semi-datepicker-compact .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=rightTop] .semi-datepicker-compact .semi-datepicker-weeks,.semi-popover-wrapper[x-placement*=BottomOver] .semi-datepicker-compact .semi-datepicker-weeks{min-height:168px}.semi-datepicker-borderless:not(:focus-within):not(:hover){background-color:transparent;border-color:transparent}.semi-datepicker-borderless:not(:focus-within):not(:hover) .semi-input-suffix,.semi-datepicker-borderless:not(:focus-within):not(:hover) .semi-datepicker-range-input-suffix{opacity:0}.semi-datepicker-borderless:focus-within:not(:active){background-color:transparent}.semi-datepicker-borderless.semi-datepicker-range-input-error .semi-datepicker-range-input-wrapper-active{border-color:transparent}.semi-datepicker-borderless.semi-datepicker-range-input-error:hover{background-color:var(--semi-color-danger-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-error:focus-within{background-color:var(--semi-color-danger-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-error:not(:focus-within){border-width:1px;border-color:var(--semi-color-danger)}.semi-datepicker-borderless.semi-datepicker-range-input-error:focus-within{border-width:1px;border-color:var(--semi-color-danger)}.semi-datepicker-borderless.semi-datepicker-range-input-warning .semi-datepicker-range-input-wrapper-active{border-color:transparent}.semi-datepicker-borderless.semi-datepicker-range-input-warning:hover{background-color:var(--semi-color-warning-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-warning:focus-within{background-color:var(--semi-color-warning-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-warning:not(:focus-within){border-width:1px;border-color:var(--semi-color-warning)}.semi-datepicker-borderless.semi-datepicker-range-input-warning:focus-within{border-width:1px;border-color:var(--semi-color-warning)}.semi-rtl .semi-datepicker,.semi-portal-rtl .semi-datepicker{direction:rtl}.semi-rtl .semi-datepicker-footer,.semi-portal-rtl .semi-datepicker-footer{padding-right:0;padding-left:8px;text-align:left}.semi-rtl .semi-datepicker-footer .semi-button:first-of-type,.semi-portal-rtl .semi-datepicker-footer .semi-button:first-of-type{margin-left:0;margin-right:0}.semi-rtl .semi-datepicker-footer .semi-button:nth-of-type(2),.semi-portal-rtl .semi-datepicker-footer .semi-button:nth-of-type(2){margin-right:12px;margin-left:0}.semi-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-rtl .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-hoverday-before-selectedrange .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-hoverday-before-selectedrange .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{margin-right:2px;margin-left:auto;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-rtl .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-hoverday-after-selectedrange .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-hoverday-after-selectedrange .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{margin-left:2px;margin-right:auto;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-rtl .semi-datepicker-switch-text,.semi-portal-rtl .semi-datepicker-switch-text{padding-left:0;padding-right:8px}.semi-rtl .semi-datepicker-navigation .semi-icon-chevron_left,.semi-rtl .semi-datepicker-navigation .semi-icon-chevron_right,.semi-rtl .semi-datepicker-navigation .semi-icon-double_chevron_left,.semi-rtl .semi-datepicker-navigation .semi-icon-double_chevron_right,.semi-rtl .semi-datepicker-yam .semi-icon-chevron_left,.semi-rtl .semi-datepicker-yam .semi-icon-chevron_right,.semi-rtl .semi-datepicker-yam .semi-icon-double_chevron_left,.semi-rtl .semi-datepicker-yam .semi-icon-double_chevron_right,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-chevron_left,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-chevron_right,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-double_chevron_left,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-double_chevron_right,.semi-portal-rtl .semi-datepicker-yam .semi-icon-chevron_left,.semi-portal-rtl .semi-datepicker-yam .semi-icon-chevron_right,.semi-portal-rtl .semi-datepicker-yam .semi-icon-double_chevron_left,.semi-portal-rtl .semi-datepicker-yam .semi-icon-double_chevron_right{transform:scaleX(-1)}.semi-rtl .semi-datepicker-range-input-prefix,.semi-portal-rtl .semi-datepicker-range-input-prefix{padding-left:8px;padding-right:12px}.semi-rtl .semi-datepicker-range-input-suffix,.semi-portal-rtl .semi-datepicker-range-input-suffix{padding-left:12px;padding-right:8px}.semi-rtl .semi-datepicker-range-input-suffix-hidden,.semi-portal-rtl .semi-datepicker-range-input-suffix-hidden{display:none}.semi-rtl .semi-datepicker-range-input-clearbtn,.semi-portal-rtl .semi-datepicker-range-input-clearbtn{padding-left:12px;padding-right:8px}.semi-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-month-grid-left,.semi-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-month-grid-left,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-month-grid-left,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-month-grid-left{border-left:1px solid var(--semi-color-border);border-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel{border-left:0;border-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:0 4px 4px 0}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:4px 0 0 4px}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-selected-start .semi-datepicker-day-main{margin-left:0;margin-right:2px;border-radius:0 4px 4px 0}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-selected-end .semi-datepicker-day-main{margin-right:0;margin-left:2px;border-radius:4px 0 0 4px}.semi-rtl .semi-datepicker-compact .semi-datepicker-switch-date,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-switch-date{border-left:1px solid var(--semi-color-border);border-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-switch-text,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-switch-text{padding-left:auto;padding-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-footer,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-footer{padding-left:8px;padding-right:auto}.semi-rtl .semi-datepicker-compact .semi-datepicker-inset-input-separator,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-inset-input-separator{border-right:1px solid var(--semi-color-border);border-left:0;transform:translate(-50%)}.ga-token-page{padding:16px 24px;width:100%;height:100%;overflow-y:auto}.ga-token-content{display:flex;flex-direction:column;gap:16px;padding:12px 0}.ga-token-stats{display:flex;gap:12px}.ga-token-stat-card{flex:1;padding:16px 20px;border-radius:8px;background:var(--dt-card);border:1px solid var(--ui-stroke-tertiary)}.ga-token-stat-label{font-size:12px;color:var(--ui-text-tertiary);margin-bottom:4px}.ga-token-stat-value{font-size:24px;font-weight:600;font-family:var(--font-mono)}.ga-token-filter{display:flex;align-items:center;gap:8px}.ga-token-mono{font-family:var(--font-mono);font-size:13px}.ga-token-loading{display:flex;align-items:center;justify-content:center;padding:48px 0}.ga-token-disclaimer{padding:12px 0;font-size:12px;color:var(--ui-text-quaternary);text-align:center} diff --git a/frontends/desktop/dist/assets/WindowsTitlebar-Byi-SYR_.js b/frontends/desktop/dist/assets/WindowsTitlebar-Byi-SYR_.js deleted file mode 100644 index 14d159ae..00000000 --- a/frontends/desktop/dist/assets/WindowsTitlebar-Byi-SYR_.js +++ /dev/null @@ -1 +0,0 @@ -import{aj as t}from"./tauri-compat-D_GD_wMe.js";function d(){var n,e,o;const i=(o=(e=(n=window.__TAURI__)==null?void 0:n.window)==null?void 0:e.getCurrentWindow)==null?void 0:o.call(e);return i?t.jsxs("div",{className:"ga-win-controls","data-no-drag":!0,children:[t.jsx("button",{type:"button",className:"ga-win-btn",onClick:()=>i.minimize(),"aria-label":"Minimize",children:t.jsx("svg",{width:"10",height:"1",viewBox:"0 0 10 1",children:t.jsx("rect",{fill:"currentColor",width:"10",height:"1"})})}),t.jsx("button",{type:"button",className:"ga-win-btn",onClick:()=>i.toggleMaximize(),"aria-label":"Maximize",children:t.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:t.jsx("rect",{x:"0.5",y:"0.5",width:"9",height:"9",stroke:"currentColor",strokeWidth:"1"})})}),t.jsx("button",{type:"button",className:"ga-win-btn ga-win-btn--close",onClick:()=>i.close(),"aria-label":"Close",children:t.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",children:t.jsx("path",{d:"M1 1l8 8M9 1l-8 8",stroke:"currentColor",strokeWidth:"1.2"})})})]}):null}function c(){const i=n=>{var o,r,s,a,l;n.button!==0||n.target.closest("button, a, input, [data-no-drag]")||(n.preventDefault(),(l=(a=(s=(r=(o=window.__TAURI__)==null?void 0:o.window)==null?void 0:r.getCurrentWindow)==null?void 0:s.call(r))==null?void 0:a.startDragging)==null||l.call(a))};return t.jsx("div",{className:"ga-win-titlebar","data-testid":"windows-titlebar",onMouseDown:i,children:t.jsx(d,{})})}export{c as W}; diff --git a/frontends/desktop/dist/assets/WindowsTitlebar-U0YG9JNA.css b/frontends/desktop/dist/assets/WindowsTitlebar-U0YG9JNA.css deleted file mode 100644 index c2e359d9..00000000 --- a/frontends/desktop/dist/assets/WindowsTitlebar-U0YG9JNA.css +++ /dev/null @@ -1 +0,0 @@ -:root[data-platform=windows]{--ga-titlebar-height: 32px}.ga-win-titlebar{height:32px;flex-shrink:0;width:100%;background:#0a0a0a;display:flex;justify-content:flex-end;align-items:stretch;-webkit-user-select:none;user-select:none}.ga-win-controls{display:flex;height:100%}.ga-win-btn{width:46px;height:100%;border:none;background:transparent;color:#d1d1d1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .1s}.ga-win-btn:hover{background:#2e2e2e;color:#fff}.ga-win-btn--close:hover{background:#c42b1c;color:#fff} diff --git a/frontends/desktop/dist/assets/codicon-DjkITdqj.ttf b/frontends/desktop/dist/assets/codicon-DjkITdqj.ttf deleted file mode 100644 index 938db2679bde8cf6d597c3e878db1fb6d848e401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125828 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 diff --git a/frontends/desktop/dist/assets/feishu-9hxxyz3-.svg b/frontends/desktop/dist/assets/feishu-9hxxyz3-.svg deleted file mode 100644 index 7afdb94f..00000000 --- a/frontends/desktop/dist/assets/feishu-9hxxyz3-.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontends/desktop/dist/assets/ga-logo.svg b/frontends/desktop/dist/assets/ga-logo.svg deleted file mode 100644 index a4d456c1..00000000 --- a/frontends/desktop/dist/assets/ga-logo.svg +++ /dev/null @@ -1,58 +0,0 @@ - - GenericAgent - - - diff --git a/frontends/desktop/dist/assets/index-9FI8Jlf5.js b/frontends/desktop/dist/assets/index-9FI8Jlf5.js deleted file mode 100644 index 12b8ec5f..00000000 --- a/frontends/desktop/dist/assets/index-9FI8Jlf5.js +++ /dev/null @@ -1 +0,0 @@ -import{c as I,b as a,B as R,V as F,l as j,R as i,q as $,P as n,aw as Z,h as N,s as D}from"./tauri-compat-D_GD_wMe.js";function U(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{prefix:o="",length:s=7}=t,e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ",l=e.length;let g="";for(let m=0;mo&&(e=t.slice(0,o));return e.reverse()}return["rgba(233,69,255)","rgba(166,71,255)","rgba(107,97,255)","rgba(46,140,255)"]}var X=function(t,o){var s={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&o.indexOf(e)<0&&(s[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);lp&&d.stopPropagation()},O),s))}};E.defaultProps={disabled:!1,size:"default",type:"primary",theme:"light",block:!1,htmlType:"button",onMouseDown:$,onClick:$,onMouseEnter:$,onMouseLeave:$,colorful:!1,prefixCls:B.PREFIX};E.propTypes={children:n.node,disabled:n.bool,prefixCls:n.string,style:n.object,size:n.oneOf(J),type:n.oneOf(te),block:n.bool,onClick:n.func,onMouseDown:n.func,circle:n.bool,loading:n.bool,htmlType:n.oneOf(ee),theme:n.oneOf(w.themes),className:n.string,onMouseEnter:n.func,onMouseLeave:n.func,"aria-label":n.string,contentClassName:n.string};var ne=function(t,o){var s={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&o.indexOf(e)<0&&(s[e]=t[e]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,e=Object.getOwnPropertySymbols(t);l0&&arguments[0]!==void 0?arguments[0]:{};super(o)}render(){const o=Object.assign({},this.props),s=!!o.icon,e=!!o.loading,l=!!o.disabled;return s||e&&!l?i.createElement(x,Object.assign({},o)):i.createElement(E,Object.assign({},o))}}v.__SemiComponentName__="Button";v.propTypes=Object.assign(Object.assign({},E.propTypes),x.propTypes);v.defaultProps=D(v.__SemiComponentName__);v.elementType="Button";export{v as B,re as I,x as a,ie as b,se as c}; diff --git a/frontends/desktop/dist/assets/index-BkPDmlaQ.js b/frontends/desktop/dist/assets/index-BkPDmlaQ.js deleted file mode 100644 index 0fed9144..00000000 --- a/frontends/desktop/dist/assets/index-BkPDmlaQ.js +++ /dev/null @@ -1,4 +0,0 @@ -import{g as te,C as _t,c as Oe,b as L,R as b,P as a,B as X,f as ge,i as Ce,l as M,au as qt,aR as va,ad as Ca,aS as Gt,aT as Qo,aU as Jo,K as ei,L as _a,D as Oa,aV as ti,aW as Ra,aX as Ea,aY as ni,v as xa,y as Ta,N as x,aZ as Ps,n as ft,w as $e,a_ as Yt,h as H,k as he,o as jt,aL as re,a$ as Ia,b0 as As,a as Pa,u as si,b1 as Aa,b2 as Da,b3 as ri,G as oi,b4 as Na,b5 as Ds,t as ii,b6 as Ns,b7 as ai,b8 as ka,b9 as li,M as La,_ as ue,az as Pt,s as ks,a0 as Ma,V as ye,J as je,p as Et,E as ja,ae as Xt,aQ as yt,X as Ee,aa as za,ba as Fa,bb as Ka,bc as $a,bd as Ba,m as hr,O as Ls,aH as ci,ag as Ms,be as Ha,bf as Wa,bg as le,bh as Ua,x as di,A as Va,bi as Zt,ax as Ne,bj as qa,bk as we,ab as ui,Y as hi,j as Ae,bl as Ga,bm as Ya,d as Xa,e as Za,aJ as Qa,bn as Ja,H as el,bo as St,bp as pr,bq as zt,br as tl}from"./tauri-compat-D_GD_wMe.js";import{_ as gt,r as nl,o as pi,p as sl,q as rl,v as ol,w as il,x as fi,y as al,T as mt,z as gi,F as fr,I as ll,A as cl,D as gr,G as Fe,R as dl,a as Re,j as ul}from"./main-j7e_THPB.js";import{S as mi}from"./index-D9Nakaf3.js";import{B as Ft,I as hl}from"./index-9FI8Jlf5.js";const pl=["default","error","warning","success"];var fl=_t();const gl=te(fl);function mr(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}function _s(i,e){return _s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},_s(i,e)}function ml(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{d:"m17.55 15.66-4.8 5.48a1 1 0 0 1-1.5 0l-4.8-5.48A1 1 0 0 1 7.2 14h9.6a1 1 0 0 1 .75 1.66Z",fill:"currentColor"}))}const bl=Oe(ml,"caretdown");function yl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{d:"m6.45 8.34 4.8-5.48a1 1 0 0 1 1.5 0l4.8 5.48A1 1 0 0 1 16.8 10H7.2a1 1 0 0 1-.75-1.66Z",fill:"currentColor"}))}const Sl=Oe(yl,"caretup");function wl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{d:"M5 12.5c0-.83.67-1.5 1.5-1.5h11a1.5 1.5 0 0 1 0 3h-11A1.5 1.5 0 0 1 5 12.5Z",fill:"currentColor"}))}const vl=Oe(wl,"checkbox_indeterminate");function Cl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.41 7.3c.66.51.78 1.45.28 2.11l-6.5 8.5a1.5 1.5 0 0 1-2.37.01l-3.5-4.5a1.5 1.5 0 1 1 2.36-1.84L10 14.54l5.32-6.95a1.5 1.5 0 0 1 2.1-.28Z",fill:"currentColor"}))}const _l=Oe(Cl,"checkbox_tick");function Ol(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.28 4.24a1.5 1.5 0 0 1 0 2.12l-5.66 5.66 5.66 5.65a1.5 1.5 0 1 1-2.12 2.13l-6.72-6.72a1.5 1.5 0 0 1 0-2.12l6.72-6.72a1.5 1.5 0 0 1 2.12 0Z",fill:"currentColor"}))}const bi=Oe(Ol,"chevron_left");function Rl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.44 19.8a1.5 1.5 0 0 1 0-2.13l5.66-5.65-5.66-5.66a1.5 1.5 0 1 1 2.12-2.12l6.72 6.72a1.5 1.5 0 0 1 0 2.12L9.56 19.8a1.5 1.5 0 0 1-2.12 0Z",fill:"currentColor"}))}const js=Oe(Rl,"chevron_right");function El(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.1 2.58A1 1 0 0 1 2 2h20a1 1 0 0 1 .76 1.65l-8.2 9.18V21a1 1 0 0 1-1.44.9l-3.07-2a1 1 0 0 1-.55-.9v-6.17L1.24 3.65a1 1 0 0 1-.15-1.07Z",fill:"currentColor"}))}const xl=Oe(El,"filter");function Tl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.5 2a8.5 8.5 0 1 0 4.86 15.48l4.08 4.08a1.5 1.5 0 1 0 2.12-2.12l-4.08-4.08A8.5 8.5 0 0 0 10.5 2ZM5 10.5a5.5 5.5 0 1 1 11 0 5.5 5.5 0 0 1-11 0Z",fill:"currentColor"}))}const Il=Oe(Tl,"search");function Pl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{d:"m20.56 9.66-7.8 8.97a1 1 0 0 1-1.51 0L3.44 9.66A1 1 0 0 1 4.19 8h15.62a1 1 0 0 1 .75 1.66Z",fill:"currentColor"}))}const Al=Oe(Pl,"tree_triangle_down");function Dl(i){return L.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},i),L.createElement("path",{d:"m9.66 3.44 8.97 7.8a1 1 0 0 1 0 1.51l-8.97 7.81A1 1 0 0 1 8 19.81V4.19a1 1 0 0 1 1.66-.75Z",fill:"currentColor"}))}const Nl=Oe(Dl,"tree_triangle_right");var kl=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);si.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");class jl extends ge{constructor(e){super(Object.assign({},e)),this.findAll=t=>{let{autoEscape:n=!0,caseSensitive:s=!1,searchWords:r,sourceString:o}=t;Ce(r)&&(r=[r]);const l=this.findChunks({autoEscape:n,caseSensitive:s,searchWords:r,sourceString:o}),c=this.combineChunks({chunks:l});return this.fillInChunks({chunksToHighlight:c,totalLength:o?o.length:0})},this.findChunks=t=>{let{autoEscape:n,caseSensitive:s,searchWords:r,sourceString:o}=t;return r.map(l=>typeof l=="string"?{text:l}:l).filter(l=>l.text).reduce((l,c)=>{let d=c.text;n&&(d=Ml(d));const u=new RegExp(d,s?"g":"gi");let h;for(;h=u.exec(o);){const g=h.index,m=u.lastIndex;m>g&&l.push({highlight:!0,start:g,end:m,className:c.className,style:c.style}),h.index===u.lastIndex&&u.lastIndex++}return l},[])},this.combineChunks=t=>{let{chunks:n}=t;return n.sort((s,r)=>s.start-r.start).reduce((s,r)=>{if(s.length===0)return[r];{const o=s.pop();if(r.start<=o.end){const l=Math.max(o.end,r.end);s.push({highlight:!0,start:o.start,end:l,className:o.className||r.className,style:Object.assign(Object.assign({},o.style),r.style)})}else s.push(o,r);return s}},[])},this.fillInChunks=t=>{let{chunksToHighlight:n,totalLength:s}=t;const r=[],o=(l,c,d,u,h)=>{c-l>0&&r.push({start:l,end:c,highlight:d,className:u,style:h})};if(n.length===0)o(0,s,!1);else{let l=0;n.forEach(c=>{o(l,c.start,!1),o(c.start,c.end,!0,c.className,c.style),l=c.end}),o(l,s,!1)}return r}}}const zl=Ll.PREFIX;class zs extends L.PureComponent{constructor(){super(...arguments),this.getHighLightTextHTML=e=>{let{sourceString:t="",searchWords:n=[],option:s={autoEscape:!0,caseSensitive:!1}}=e;const r=new jl().findAll(Object.assign({sourceString:t,searchWords:n},s)),o=s.highlightTag||"mark",l=s.highlightClassName||"",c=s.highlightStyle||{};return r.map((d,u)=>{const{end:h,start:g,highlight:m,style:y,className:p}=d,f=t.substr(g,h-g);return m?b.createElement(o,{style:Object.assign(Object.assign({},c),y),className:`${l} ${p||""}`.trim(),key:f+u},f):f})}}render(){const{searchWords:e,sourceString:t,component:n,highlightClassName:s,highlightStyle:r,caseSensitive:o,autoEscape:l}=this.props,c=M({[`${zl}-tag`]:!0},s),d={highlightTag:n,highlightClassName:c,highlightStyle:r,caseSensitive:o,autoEscape:l};return this.getHighLightTextHTML({sourceString:t,searchWords:e,option:d})}}zs.propTypes={style:a.object,className:a.string,autoEscape:a.bool,caseSensitive:a.bool,sourceString:a.string,searchWords:a.arrayOf(a.string),highlightStyle:a.object,highlightClassName:a.string,component:a.string};zs.defaultProps={component:"mark",autoEscape:!0,caseSensitive:!1,sourceString:""};const Fl={PREFIX:`${X}-space`},ze={ALIGN_SET:["start","end","center","baseline"],SPACING_LOOSE:"loose",SPACING_MEDIUM:"medium",SPACING_TIGHT:"tight"},Kl="Symbol(react.fragment)",Os=i=>{let e=[];return b.Children.forEach(i,t=>{t!=null&&(Array.isArray(t)?e=e.concat(Os(t)):L.isValidElement(t)&&t.type&&t.type.toString()===Kl&&t.props?e=e.concat(Os(t.props.children)):e.push(t))}),e},be=Fl.PREFIX;class Qt extends L.PureComponent{render(){const{children:e=null,style:t,className:n,spacing:s,wrap:r,align:o,vertical:l}=this.props,c=r&&l?!1:r,d=Object.assign({},t);let u="",h="";Ce(s)?(u=s,h=s):gt(s)?(d.rowGap=s,d.columnGap=s):gl(s)&&(Ce(s[0])?u=s[0]:gt(s[0])&&(d.columnGap=`${s[0]}px`),Ce(s[1])?h=s[1]:gt(s[1])&&(d.rowGap=`${s[1]}px`));const g=M(be,n,{[`${be}-align-${o}`]:o,[`${be}-vertical`]:l,[`${be}-horizontal`]:!l,[`${be}-wrap`]:c,[`${be}-tight-horizontal`]:u===ze.SPACING_TIGHT,[`${be}-tight-vertical`]:h===ze.SPACING_TIGHT,[`${be}-medium-horizontal`]:u===ze.SPACING_MEDIUM,[`${be}-medium-vertical`]:h===ze.SPACING_MEDIUM,[`${be}-loose-horizontal`]:u===ze.SPACING_LOOSE,[`${be}-loose-vertical`]:h===ze.SPACING_LOOSE}),m=Os(e),y=qt(this.props);return b.createElement("div",Object.assign({},y,{className:g,style:d,"x-semi-prop":"children"}),m)}}Qt.propTypes={wrap:a.bool,align:a.oneOf(ze.ALIGN_SET),vertical:a.bool,spacing:a.oneOfType([a.string,a.number,a.array]),children:a.node,style:a.object,className:a.string};Qt.defaultProps={vertical:!1,wrap:!1,spacing:"tight",align:"center"};var $l=va();const Pe=te($l);var yn,br;function Bl(){if(br)return yn;br=1;var i=Ca(),e=1/0,t=17976931348623157e292;function n(s){if(!s)return s===0?s:0;if(s=i(s),s===e||s===-e){var r=s<0?-1:1;return r*t}return s===s?s:0}return yn=n,yn}var Sn,yr;function Jt(){if(yr)return Sn;yr=1;var i=Bl();function e(t){var n=i(t),s=n%1;return n===n?s?n-s:n:0}return Sn=e,Sn}var wn,Sr;function Hl(){if(Sr)return wn;Sr=1;var i=pi(),e=Gt(),t=Qo(),n=Jt(),s=nl(),r=Math.max;function o(l,c,d,u){l=e(l)?l:s(l),d=d&&!u?n(d):0;var h=l.length;return d<0&&(d=r(h+d,0)),t(l)?d<=h&&l.indexOf(c,d)>-1:!!h&&i(l,c,d)>-1}return wn=o,wn}var Wl=Hl();const Kt=te(Wl);var vn,wr;function Ul(){if(wr)return vn;wr=1;var i=sl(),e=Jo(),t=ei(),n=_a(),s=t(function(r,o){return n(r)?i(r,e(o,1,n,!0)):[]});return vn=s,vn}var Vl=Ul();const vr=te(Vl);var Cn,Cr;function ql(){if(Cr)return Cn;Cr=1;var i=Oa();function e(t,n,s){for(var r=-1,o=t.length;++rt}return _n=i,_n}var On,Or;function Yl(){if(Or)return On;Or=1;var i=ql(),e=Gl(),t=ti();function n(s){return s&&s.length?i(s,t,e):void 0}return On=n,On}Yl();var Rn,Rr;function Xl(){if(Rr)return Rn;Rr=1;var i=Ra(),e=Ea(),t=ni(),n=1/0,s=i&&1/t(new i([,-0]))[1]==n?function(r){return new i(r)}:e;return Rn=s,Rn}var En,Er;function Zl(){if(Er)return En;Er=1;var i=xa(),e=rl(),t=ol(),n=Ta(),s=Xl(),r=ni(),o=200;function l(c,d,u){var h=-1,g=e,m=c.length,y=!0,p=[],f=p;if(u)y=!1,g=t;else if(m>=o){var S=d?null:s(c);if(S)return r(S);y=!1,g=n,f=new i}else f=d?[]:p;e:for(;++h{const d=o?o[s]:i,u=o?tc(c.pos,l):"0";if(o){const h=x(o,n,null),g={data:Object.assign({},o),ind:l,pos:u,key:h!==null?h:u,parentPos:c.node?c.pos:null,level:Number(c.level)+1};e(g)}d&&d.forEach((h,g)=>{r(h,g,{node:o,pos:u,level:c?Number(c.level)+1:-1})})};r(null)}function rc(i,e){const t={},n={},s={},r={posEntities:t,keyEntities:n,valueEntities:s},o=x(e,"value","value");return sc(i,l=>{const{pos:c,key:d,parentPos:u}=l,h=Object.assign({},l),g=x(h,`data.${o}`,null);g!==null&&(s[g]=d),t[c]=h,n[d]=h,h.parent=t[u],h.parent&&(h.parent.children=h.parent.children||[],h.parent.children.push(h))},e),r}function Si(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const n=[],s=r=>{if(!r)return;const{children:o}=r;nc(o)&&o.forEach(c=>{n.push(c.key),s(e[c.key])})};return i.forEach(r=>{t&&n.push(r),s(e[r])}),n}function oc(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const n=[];return i&&i.forEach(s=>{const r=e[s];r&&r.children&&r.children.forEach(o=>{(!t.length||!t.includes(o.key))&&n.push(o.key)})}),n}function wi(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const n=[];return i.forEach(r=>{e[r]&&e[r].parent&&n.push(e[r].parent.key)}),oc(ec(n),e,t?[]:i)}function vi(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const n=[],s=r=>{r.parent&&(n.push(r.parent.key),s(r.parent))};return i.forEach(r=>{e[r]&&s(e[r]),t&&n.push(r)}),n}function Tr(i,e,t,n){const s=Si([i],e,!0),r=e[i];t=new Set([...t,i]);const o=l=>{if(!l.parent)return;const{key:c}=l;if(wi([c],e).every(h=>t.has(h))){const h=l.parent;t.add(h.key),o(h)}else{const h=vi([c],e,!1);n=new Set([...n,...h])}};return o(r),{checkedKeys:new Set([...t,...s]),halfCheckedKeys:n}}function Ir(i,e,t,n){const s=Si([i],e,!0),r=e[i];s.forEach(l=>{t.has(l)&&t.delete(l),n.has(l)&&n.delete(l)});const o=l=>{const c=l.parent;if(!c||!t.has(c.key)&&!n.has(c.key))return;const{key:d}=l,h=wi([d],e).some(m=>t.has(m)||n.has(m)),g=vi([d],e,!1);h?g.forEach(m=>{t.has(m)&&(t.delete(m),n.add(m))}):(t.has(c.key)&&t.delete(c.key),n.has(c.key)&&n.delete(c.key),o(c))};return r&&o(r),{checkedKeys:t,halfCheckedKeys:n}}const At={PREFIX:`${X}-checkbox`,INPUT:`${X}-checkbox-input`,WRAPPER:""},ic={PREFIX:`${X}-checkboxGroup`},ve={DIRECTION_SET:["horizontal","vertical"],TYPE_DEFAULT:"default",TYPE_CARD:"card",TYPE_PURECARD:"pureCard",DEFAULT_DIRECTION:"vertical"};class ac extends ge{constructor(e){super(Object.assign({},e)),this.clickState=!1,this.handleFocusVisible=t=>{const{target:n}=t;try{if(this.clickState){this.clickState=!1;return}n.matches(":focus-visible")&&this._adapter.setFocusVisible(!0)}catch{$e(!0,"Warning: [Semi Checkbox] The current browser does not support the focus-visible")}},this.handleBlur=()=>{this.clickState=!1,this._adapter.setFocusVisible(!1)}}init(){const{children:e,extra:t,extraId:n,addonId:s}=this.getProps();e&&!s&&this._adapter.setAddonId(),t&&!n&&this._adapter.setExtraId()}notifyChange(e,t){const n=this._adapter.generateEvent(e,t);this._adapter.notifyChange(n)}handleChange(e){if(this.getProp("disabled"))return;if((e==null?void 0:e.type)==="click"&&(this.clickState=!0),this._adapter.focusCheckboxEntity(),this._adapter.getIsInGroup()){this._adapter.getGroupDisabled()||this.handleChangeInGroup(e);return}const r=!this.getState("checked");this._isControlledComponent("checked")?this.notifyChange(r,e):(this.setChecked(r),this.notifyChange(r,e))}handleChangeInGroup(e){const{value:t}=this.getProps(),r=!this._adapter.getGroupValue().includes(t),o=this._adapter.generateEvent(r,e);this._adapter.notifyChange(o),this._adapter.notifyGroupChange(o)}handleEnterPress(e){Yt(e)&&this.handleChange(e)}setChecked(e){this._adapter.setNativeControlChecked(e)}destroy(){}}const Fs=b.createContext({});class en extends L.PureComponent{blur(){this.inputEntity.blur()}focus(){const{preventScroll:e}=this.props;this.inputEntity.focus({preventScroll:e})}render(){const{indeterminate:e,checked:t,disabled:n,prefixCls:s,name:r,isPureCardType:o,addonId:l,extraId:c,focusInner:d,onInputFocus:u,onInputBlur:h}=this.props,g=s||At.PREFIX,m=M({[`${g}-inner`]:!0,[`${g}-inner-checked`]:!!t,[`${g}-inner-pureCardType`]:o},At.WRAPPER),y=M({[`${g}-inner-display`]:!0,[`${g}-focus`]:d,[`${g}-focus-border`]:d&&!t}),p=t?b.createElement(_l,null):e?b.createElement(vl,null):null,f={type:"checkbox","aria-label":this.props["aria-label"],"aria-disabled":n,"aria-checked":t,"aria-labelledby":l,"aria-describedby":c||this.props["aria-describedby"],"aria-invalid":this.props["aria-invalid"],"aria-errormessage":this.props["aria-errormessage"],"aria-required":this.props["aria-required"],className:At.INPUT,onChange:H,checked:t,disabled:n,onFocus:u,onBlur:h};return r&&(f.name=r),b.createElement("span",{className:m},b.createElement("input",Object.assign({},f,{ref:S=>{this.inputEntity=S}})),b.createElement("span",{className:y},p))}}en.contextType=Fs;en.propTypes={"aria-describedby":a.string,"aria-errormessage":a.string,"aria-invalid":a.bool,"aria-labelledby":a.string,"aria-required":a.bool,checked:a.bool,disabled:a.bool,onChange:a.func,children:a.node,grouped:a.bool,value:a.any,isPureCardType:a.bool,addonId:a.string,extraId:a.string,focusInner:a.bool,onInputFocus:a.func,onInputBlur:a.func,preventScroll:a.bool};en.defaultProps={onChange:H};class xe extends he{get adapter(){return Object.assign(Object.assign({},super.adapter),{setNativeControlChecked:e=>{this.setState({checked:e})},notifyChange:e=>{const{onChange:t}=this.props;t&&t(e)},generateEvent:(e,t)=>{const{props:n}=this;return{target:Object.assign(Object.assign({},n),{checked:e}),stopPropagation:()=>{t.stopPropagation()},preventDefault:()=>{t.preventDefault()},nativeEvent:{stopImmediatePropagation:()=>{t.nativeEvent&&typeof t.nativeEvent.stopImmediatePropagation=="function"&&t.nativeEvent.stopImmediatePropagation()}}}},getIsInGroup:()=>this.isInGroup(),getGroupValue:()=>this.context&&this.context.checkboxGroup.value||[],notifyGroupChange:e=>{this.context.checkboxGroup.onChange(e)},getGroupDisabled:()=>this.context&&this.context.checkboxGroup.disabled,setAddonId:()=>{this.setState({addonId:jt({prefix:"addon"})})},setExtraId:()=>{this.setState({extraId:jt({prefix:"extra"})})},setFocusVisible:e=>{this.setState({focusVisible:e})},focusCheckboxEntity:()=>{this.focus()}})}constructor(e){super(e),this.handleChange=n=>this.foundation.handleChange(n),this.handleEnterPress=n=>this.foundation.handleEnterPress(n),this.handleFocusVisible=n=>{this.foundation.handleFocusVisible(n)},this.handleBlur=n=>{this.foundation.handleBlur()};const t=!1;this.state={checked:e.checked||e.defaultChecked||t,addonId:e.addonId,extraId:e.extraId,focusVisible:!1},this.checkboxEntity=null,this.foundation=new ac(this.adapter)}componentDidUpdate(e){this.props.checked!==e.checked&&(ft(this.props.checked)?this.foundation.setChecked(!1):il(this.props.checked)&&this.foundation.setChecked(this.props.checked))}isInGroup(){return!!(this.context&&this.context.checkboxGroup&&"value"in this.props)}focus(){this.checkboxEntity&&this.checkboxEntity.focus()}blur(){this.checkboxEntity&&this.checkboxEntity.blur()}render(){const{disabled:e,style:t,prefixCls:n,className:s,indeterminate:r,children:o,onMouseEnter:l,onMouseLeave:c,extra:d,value:u,role:h,tabIndex:g,id:m,type:y}=this.props,{checked:p,addonId:f,extraId:S,focusVisible:v}=this.state,w={checked:p,disabled:e},_=this.isInGroup();if(_){if(this.context.checkboxGroup.value){const K=(this.context.checkboxGroup.value||[]).includes(u);w.checked=K}this.context.checkboxGroup.disabled&&(w.disabled=this.context.checkboxGroup.disabled||this.props.disabled);const{isCardType:A,isPureCardType:F}=this.context.checkboxGroup;w.isCardType=A,w.isPureCardType=F,w.name=this.context.checkboxGroup.name}else w.isPureCardType=y===ve.TYPE_PURECARD,w.isCardType=y===ve.TYPE_CARD||w.isPureCardType;const O=n||At.PREFIX,I=w.isCardType||w.isPureCardType,E=M(O,{[`${O}-disabled`]:w.disabled,[`${O}-indeterminate`]:r,[`${O}-checked`]:w.checked,[`${O}-unChecked`]:!w.checked,[`${O}-cardType`]:w.isCardType,[`${O}-cardType_disabled`]:w.disabled&&w.isCardType,[`${O}-cardType_enable`]:!(w.disabled&&w.isCardType),[`${O}-cardType_checked`]:w.isCardType&&w.checked&&!w.disabled,[`${O}-cardType_checked_disabled`]:w.isCardType&&w.checked&&w.disabled,[s]:!!s,[`${O}-focus`]:v&&I}),k=M(`${O}-extra`,{[`${O}-cardType_extra_noChildren`]:w.isCardType&&!o});_&&this.context.checkboxGroup.name;const N=this.props["x-semi-children-alias"]||"children",P=()=>!o&&!d?null:b.createElement("div",{className:`${O}-content`},o?b.createElement("span",{id:f,className:`${O}-addon`,"x-semi-prop":N},o):null,d?b.createElement("div",{id:S,className:k,"x-semi-prop":"extra"},d):null);return b.createElement("span",Object.assign({role:h,tabIndex:g,style:t,className:E,id:m,onMouseEnter:l,onMouseLeave:c,onClick:this.handleChange,onKeyPress:this.handleEnterPress,"aria-labelledby":this.props["aria-labelledby"]},this.getDataAttr(this.props)),b.createElement(en,Object.assign({},this.props,w,{addonId:o&&f,extraId:d&&S,isPureCardType:w.isPureCardType,ref:A=>{this.checkboxEntity=A},focusInner:v&&!I,onInputFocus:this.handleFocusVisible,onInputBlur:this.handleBlur})),P())}}xe.contextType=Fs;xe.propTypes={"aria-describedby":a.string,"aria-errormessage":a.string,"aria-invalid":a.bool,"aria-labelledby":a.string,"aria-required":a.bool,checked:a.bool,defaultChecked:a.bool,disabled:a.bool,indeterminate:a.bool,onChange:a.func,value:a.any,style:a.object,className:a.string,prefixCls:a.string,onMouseEnter:a.func,onMouseLeave:a.func,extra:a.node,index:a.number,"aria-label":a.string,tabIndex:a.number,preventScroll:a.bool,type:a.string};xe.defaultProps={defaultChecked:!1,indeterminate:!1,onChange:H,onMouseEnter:H,onMouseLeave:H,type:"default"};xe.elementType="Checkbox";class Ks extends ge{static get checkboxGroupDefaultAdapter(){return{}}constructor(e){super(Object.assign(Object.assign({},Ks.checkboxGroupDefaultAdapter),e))}init(){const{defaultValue:e,value:t}=this.getProps();typeof e<"u"&&!Array.isArray(e)&&$e(!0,"Warning: [Semi CheckboxGroup] defaultValue should be an Array"),typeof t<"u"&&!Array.isArray(t)&&$e(!0,"Warning: [Semi CheckboxGroup] value should be an Array")}notifyChange(e){this._adapter.notifyChange(e)}handleChange(e){const t=this.getState("value");let n=[];Array.isArray(t)||(n=[t]),e.target.checked?n=[...t,e.target.value]:n=t.filter((r,o)=>r!==e.target.value),"value"in this.getProps()?this.notifyChange(n):(this._adapter.updateGroupValue(n),this.notifyChange(n))}getFormatName(){return this.getProp("name")||"default"}handlePropValueChange(e){Array.isArray(e)?this._adapter.updateGroupValue(e):(typeof e>"u"&&this._adapter.updateGroupValue([]),$e(!0,"Warning: [Semi CheckboxGroup] value should be an Array"))}destroy(){}}class $s extends he{get adapter(){return Object.assign(Object.assign({},super.adapter),{updateGroupValue:e=>{this.setState({value:e})},notifyChange:e=>{this.props.onChange&&this.props.onChange(e)}})}constructor(e){super(e),this.state={value:e.value||e.defaultValue},this.foundation=new Ks(this.adapter),this.onChange=this.onChange.bind(this)}componentDidMount(){this.foundation.init()}componentDidUpdate(e){re(e.value,this.props.value)||this.foundation.handlePropValueChange(this.props.value)}componentWillUnmount(){this.foundation.destroy()}onChange(e){this.foundation.handleChange(e)}render(){const{children:e,options:t,prefixCls:n,direction:s,className:r,id:o,style:l,type:c,disabled:d}=this.props,u=c===ve.TYPE_PURECARD,h=c===ve.TYPE_CARD||u,g=n||ic.PREFIX,m=M({[g]:!0,[`${g}-wrapper`]:!0,[`${g}-${s}`]:s,[`${g}-${s}-cardType`]:s&&h,[`${g}-${s}-pureCardType`]:s&&u},r),y=this.state.value.slice();let p;return t?p=(t||[]).map((f,S)=>typeof f=="string"?b.createElement(xe,{role:"listitem",key:S,disabled:this.props.disabled,value:f,prefixCls:n},f):b.createElement(xe,{role:"listitem",key:S,disabled:f.disabled||this.props.disabled,value:f.value,prefixCls:n,extra:f.extra,className:f.className,style:f.style,onChange:f.onChange},f.label)):e&&(p=b.Children.toArray(e).map((f,S)=>b.cloneElement(f,{key:S,role:"listitem"}))),b.createElement("div",Object.assign({id:o,role:"list","aria-label":this.props["aria-label"],className:m,style:l,"aria-labelledby":this.props["aria-labelledby"],"aria-describedby":this.props["aria-describedby"]},this.getDataAttr(this.props)),b.createElement(Fs.Provider,{value:{checkboxGroup:{onChange:this.onChange,value:y,disabled:this.props.disabled,name:this.foundation.getFormatName(),isCardType:h,isPureCardType:u}}},p))}}$s.propTypes={"aria-describedby":a.string,"aria-errormessage":a.string,"aria-invalid":a.bool,"aria-labelledby":a.string,"aria-required":a.bool,defaultValue:a.array,disabled:a.bool,name:a.string,options:a.array,value:a.array,onChange:a.func,children:a.node,prefixCls:a.string,direction:a.oneOf(ve.DIRECTION_SET),className:a.string,type:a.oneOf([ve.TYPE_DEFAULT,ve.TYPE_CARD,ve.TYPE_PURECARD]),style:a.object};$s.defaultProps={disabled:!1,onChange:()=>{},type:ve.TYPE_DEFAULT,defaultValue:[],direction:ve.DEFAULT_DIRECTION};class lc extends xe{}lc.Group=$s;function Rs(){return Rs=Object.assign?Object.assign.bind():function(i){for(var e=1;e=e?i.call(null):s.id=requestAnimationFrame(n)}var s={id:requestAnimationFrame(n)};return s}var Tn=-1;function Nr(i){if(i===void 0&&(i=!1),Tn===-1||i){var e=document.createElement("div"),t=e.style;t.width="50px",t.height="50px",t.overflow="scroll",document.body.appendChild(e),Tn=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return Tn}var Ve=null;function kr(i){if(i===void 0&&(i=!1),Ve===null||i){var e=document.createElement("div"),t=e.style;t.width="50px",t.height="50px",t.overflow="scroll",t.direction="rtl";var n=document.createElement("div"),s=n.style;return s.width="100px",s.height="100px",e.appendChild(n),document.body.appendChild(e),e.scrollLeft>0?Ve="positive-descending":(e.scrollLeft=1,e.scrollLeft===0?Ve="negative":Ve="positive-ascending"),document.body.removeChild(e),Ve}return Ve}var fc=150,gc=function(e,t){return e};function Ci(i){var e,t=i.getItemOffset,n=i.getEstimatedTotalSize,s=i.getItemSize,r=i.getOffsetForIndexAndAlignment,o=i.getStartIndexForOffset,l=i.getStopIndexForStartIndex,c=i.initInstanceProps,d=i.shouldResetStyleCacheOnItemSizeChange,u=i.validateProps;return e=(function(h){cc(g,h);function g(y){var p;return p=h.call(this,y)||this,p._instanceProps=c(p.props,mr(p)),p._outerRef=void 0,p._resetIsScrollingTimeoutId=null,p.state={instance:mr(p),isScrolling:!1,scrollDirection:"forward",scrollOffset:typeof p.props.initialScrollOffset=="number"?p.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},p._callOnItemsRendered=void 0,p._callOnItemsRendered=Ke(function(f,S,v,w){return p.props.onItemsRendered({overscanStartIndex:f,overscanStopIndex:S,visibleStartIndex:v,visibleStopIndex:w})}),p._callOnScroll=void 0,p._callOnScroll=Ke(function(f,S,v){return p.props.onScroll({scrollDirection:f,scrollOffset:S,scrollUpdateWasRequested:v})}),p._getItemStyle=void 0,p._getItemStyle=function(f){var S=p.props,v=S.direction,w=S.itemSize,_=S.layout,O=p._getItemStyleCache(d&&w,d&&_,d&&v),I;if(O.hasOwnProperty(f))I=O[f];else{var E=t(p.props,f,p._instanceProps),k=s(p.props,f,p._instanceProps),N=v==="horizontal"||_==="horizontal",P=v==="rtl",A=N?E:0;O[f]=I={position:"absolute",left:P?void 0:A,right:P?A:void 0,top:N?0:E,height:N?"100%":k,width:N?k:"100%"}}return I},p._getItemStyleCache=void 0,p._getItemStyleCache=Ke(function(f,S,v){return{}}),p._onScrollHorizontal=function(f){var S=f.currentTarget,v=S.clientWidth,w=S.scrollLeft,_=S.scrollWidth;p.setState(function(O){if(O.scrollOffset===w)return null;var I=p.props.direction,E=w;if(I==="rtl")switch(kr()){case"negative":E=-w;break;case"positive-descending":E=_-v-w;break}return E=Math.max(0,Math.min(E,_-v)),{isScrolling:!0,scrollDirection:O.scrollOffsetI.clientWidth?Nr():0:O=I.scrollHeight>I.clientHeight?Nr():0}this.scrollTo(r(this.props,p,f,_,this._instanceProps,O))},m.componentDidMount=function(){var p=this.props,f=p.direction,S=p.initialScrollOffset,v=p.layout;if(typeof S=="number"&&this._outerRef!=null){var w=this._outerRef;f==="horizontal"||v==="horizontal"?w.scrollLeft=S:w.scrollTop=S}this._callPropsCallbacks()},m.componentDidUpdate=function(){var p=this.props,f=p.direction,S=p.layout,v=this.state,w=v.scrollOffset,_=v.scrollUpdateWasRequested;if(_&&this._outerRef!=null){var O=this._outerRef;if(f==="horizontal"||S==="horizontal")if(f==="rtl")switch(kr()){case"negative":O.scrollLeft=-w;break;case"positive-ascending":O.scrollLeft=w;break;default:var I=O.clientWidth,E=O.scrollWidth;O.scrollLeft=E-I-w;break}else O.scrollLeft=w;else O.scrollTop=w}this._callPropsCallbacks()},m.componentWillUnmount=function(){this._resetIsScrollingTimeoutId!==null&&Dr(this._resetIsScrollingTimeoutId)},m.render=function(){var p=this.props,f=p.children,S=p.className,v=p.direction,w=p.height,_=p.innerRef,O=p.innerElementType,I=p.innerTagName,E=p.itemCount,k=p.itemData,N=p.itemKey,P=N===void 0?gc:N,A=p.layout,F=p.outerElementType,K=p.outerTagName,z=p.style,q=p.useIsScrolling,V=p.width,W=this.state.isScrolling,G=v==="horizontal"||A==="horizontal",se=G?this._onScrollHorizontal:this._onScrollVertical,Q=this._getRangeToRender(),pe=Q[0],oe=Q[1],de=[];if(E>0)for(var ie=pe;ie<=oe;ie++)de.push(L.createElement(f,{data:k,key:P(ie,k),index:ie,isScrolling:q?W:void 0,style:this._getItemStyle(ie)}));var Ot=n(this.props,this._instanceProps);return L.createElement(F||K||"div",{className:S,onScroll:se,ref:this._outerRefSetter,style:Rs({position:"relative",height:w,width:V,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:v},z)},L.createElement(O||I||"div",{children:de,ref:_,style:{height:G?"100%":Ot,pointerEvents:W?"none":void 0,width:G?Ot:"100%"}}))},m._callPropsCallbacks=function(){if(typeof this.props.onItemsRendered=="function"){var p=this.props.itemCount;if(p>0){var f=this._getRangeToRender(),S=f[0],v=f[1],w=f[2],_=f[3];this._callOnItemsRendered(S,v,w,_)}}if(typeof this.props.onScroll=="function"){var O=this.state,I=O.scrollDirection,E=O.scrollOffset,k=O.scrollUpdateWasRequested;this._callOnScroll(I,E,k)}},m._getRangeToRender=function(){var p=this.props,f=p.itemCount,S=p.overscanCount,v=this.state,w=v.isScrolling,_=v.scrollDirection,O=v.scrollOffset;if(f===0)return[0,0,0,0];var I=o(this.props,O,this._instanceProps),E=l(this.props,I,O,this._instanceProps),k=!w||_==="backward"?Math.max(1,S):1,N=!w||_==="forward"?Math.max(1,S):1;return[Math.max(0,I-k),Math.max(0,Math.min(f-1,E+N)),I,E]},g})(L.PureComponent),e.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},e}var mc=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},bc=50,Ge=function(e,t,n){var s=e,r=s.itemSize,o=n.itemMetadataMap,l=n.lastMeasuredIndex;if(t>l){var c=0;if(l>=0){var d=o[l];c=d.offset+d.size}for(var u=l+1;u<=t;u++){var h=r(u);o[u]={offset:c,size:h},c+=h}n.lastMeasuredIndex=t}return o[t]},yc=function(e,t,n){var s=t.itemMetadataMap,r=t.lastMeasuredIndex,o=r>0?s[r].offset:0;return o>=n?_i(e,t,r,0,n):Sc(e,t,Math.max(0,r),n)},_i=function(e,t,n,s,r){for(;s<=n;){var o=s+Math.floor((n-s)/2),l=Ge(e,o,t).offset;if(l===r)return o;lr&&(n=o-1)}return s>0?s-1:0},Sc=function(e,t,n,s){for(var r=e.itemCount,o=1;n=n&&(o=n-1),o>=0){var c=s[o];l=c.offset+c.size}var d=n-o-1,u=d*r;return l+u},wc=Ci({getItemOffset:function(e,t,n){return Ge(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:Lr,getOffsetForIndexAndAlignment:function(e,t,n,s,r,o){var l=e.direction,c=e.height,d=e.layout,u=e.width,h=l==="horizontal"||d==="horizontal",g=h?u:c,m=Ge(e,t,r),y=Lr(e,r),p=Math.max(0,Math.min(y-g,m.offset)),f=Math.max(0,m.offset-g+m.size+o);switch(n==="smart"&&(s>=f-g&&s<=p+g?n="auto":n="center"),n){case"start":return p;case"end":return f;case"center":return Math.round(f+(p-f)/2);case"auto":default:return s>=f&&s<=p?s:s=S-y&&s<=f+y?n="auto":n="center"),n){case"start":return f;case"end":return S;case"center":{var v=Math.round(S+(f-S)/2);return vp+Math.floor(y/2)?p:v}case"auto":default:return s>=S&&s<=f?s:s-1?c[d?r[u]:u]:void 0}}return Wn=n,Wn}var Un,Xr;function ud(){if(Xr)return Un;Xr=1;var i=dd(),e=zi(),t=i(e);return Un=t,Un}var hd=ud();const We=te(hd);var Vn,Zr;function pd(){if(Zr)return Vn;Zr=1;var i=ai(),e=Ns(),t=Jt();function n(s,r,o){var l=s==null?0:s.length;return l?(o&&typeof o!="number"&&e(s,r,o)?(r=0,o=l):(r=r==null?0:t(r),o=o===void 0?l:t(o)),i(s,r,o)):[]}return Vn=n,Vn}var fd=pd();const gd=te(fd);var md=ka();const bd=te(md),yd={PREFIX:X+"-overflow-list"},Qr={COLLAPSE:"collapse",SCROLL:"scroll"},Jr={START:"start",END:"end"},Sd={GROW:1},Be={BOUNDARY_SET:Object.values(Jr),POSITION_SET:["vertical","horizontal"],MODE_SET:Object.values(Qr),MODE_MAP:Qr,BOUNDARY_MAP:Jr,OVERFLOW_DIR:Sd},eo={MINIMUM_HTML_ELEMENT_WIDTH:4};class Us extends b.PureComponent{componentDidMount(){const{items:e}=this.props;this.cachedKeys=Object.keys(e);const{root:t,threshold:n,rootMargin:s,option:r,onIntersect:o}=this.props;this.observer=new IntersectionObserver(o,Object.assign({root:t,threshold:n,rootMargin:s},r)),this.observeElement()}componentDidUpdate(){const{items:e}=this.props,t=Object.keys(e);re(this.cachedKeys,t)||(this.observeElement(!0),this.cachedKeys=t)}componentWillUnmount(){this.observer&&(this.observer.disconnect(),this.observer=null)}observeElement(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const{items:t}=this.props;if(li(t)){this.observer.disconnect();return}e&&this.observer.disconnect(),Object.keys(t).forEach(n=>{const s=t[n];s&&La(s)&&this.observer.observe(s)})}render(){const{children:e}=this.props;return e}}Us.propTypes={onIntersect:a.func,option:a.object,root:a.any,threshold:a.number,rootMargin:a.string,items:a.object};Us.defaultProps={onIntersect:()=>{},threshold:.75,rootMargin:"0px",option:{},items:{}};const wd=Be.BOUNDARY_MAP;class vd extends ge{constructor(e){super(Object.assign({},e)),this.previousY=void 0,this.isScrollMode=()=>{const{renderMode:t}=this.getProps();return t==="scroll"},this.getReversedItems=()=>{const{items:t}=this.getProps();return $t(t).reverse()}}getOverflowItem(){const{items:e}=this.getProps(),{visibleState:t,overflow:n,scrollOverflow:s}=this.getStates();if(!this.isScrollMode())return n;if(!t||t.size===0)return Array.isArray(s)&&s.length===2?s:[[],[]];const r=e.map(d=>{let{key:u}=d;return!!t.get(u)}),o=r.indexOf(!0),l=r.lastIndexOf(!0);if(o<0||l<0)return Array.isArray(s)&&s.length===2?s:[[],[]];const c=[];return c[0]=o>=0?e.slice(0,o):[],c[1]=l>=0?e.slice(l+1,e.length):e.slice(),c}_syncScrollOverflowCache(e){if(!this.isScrollMode())return;const{items:t}=this.getProps(),n=t.map(l=>{let{key:c}=l;return!!e.get(c)}),s=n.indexOf(!0),r=n.lastIndexOf(!0);if(s<0||r<0){this._adapter.updateStates({isScrollOverflowCalculating:!0});return}const o=[];o[0]=s>=0?t.slice(0,s):[],o[1]=r>=0?t.slice(r+1,t.length):t.slice(),this._adapter.updateStates({scrollOverflow:o,isScrollOverflowCalculating:!1})}handleIntersect(e){const t=$t(this.getState("visibleState")),n={};e.forEach(c=>{const d=x(c,"target.dataset.scrollkey"),u=c.isIntersecting;n[d]=c,t.set(d,u)});let s=!1;for(const c of t.values())if(c){s=!0;break}const r=s,[o]=e,l=o.boundingClientRect.y;if(!r&&this.previousY!==void 0&&l!==this.previousY){this.previousY=l;return}this.previousY=l,this._adapter.updateVisibleState(t),this._syncScrollOverflowCache(t),this._adapter.notifyIntersect(n)}handleCollapseOverflow(){const{minVisibleItems:e,collapseFrom:t}=this.getProps(),{overflowWidth:n,containerWidth:s,pivot:r,overflowStatus:o}=this.getStates(),{items:l,onOverflow:c}=this.getProps();let d=n,u=0,h=!1;for(const g of this._adapter.getItemSizeMap().values()){if(d+=g,d>s){h=!0;break}if(u===l.length-1){this._adapter.updateStates({overflowStatus:"normal",pivot:l.length-1,visible:l,overflow:[]});break}u++}if(h){const g=Math.max(e,u),m=t===wd.START,y=m?this.getReversedItems().slice(0,g).reverse():l.slice(0,g),p=m?this.getReversedItems().slice(g).reverse():l.slice(g);this._adapter.updateStates({overflowStatus:"overflowed",pivot:g,visible:y,overflow:p}),r!==g&&c(p);return}}}const at=yd.PREFIX,qn=Be.BOUNDARY_MAP,to=Be.OVERFLOW_DIR,qe=Be.MODE_MAP;class Qe extends he{constructor(e){var t;super(e),t=this,this.scroller=null,this.spacer=null,this.isScrollMode=()=>{const{renderMode:n}=this.props;return n===qe.SCROLL},this.resize=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];var s;const r=(s=n[0])===null||s===void 0?void 0:s.target.clientWidth;t.setState({containerWidth:r,overflowStatus:"calculating"})},this.reintersect=n=>{this.foundation.handleIntersect(n)},this.mergeRef=(n,s,r)=>{this.itemRefs[r]=s,typeof n=="function"?n(s):typeof n=="object"&&n&&"current"in n&&(n.current=s)},this.renderOverflow=()=>{const n=this.foundation.getOverflowItem();return this.props.overflowRenderer(n)},this.getItemKey=(n,s)=>{const{itemKey:r}=this.props;return ue(r)?r(n):x(n,r||"key",s)},this.renderItemList=()=>{const{className:n,wrapperClassName:s,wrapperStyle:r,style:o,visibleItemRenderer:l,renderMode:c,collapseFrom:d}=this.props,{visible:u,overflowStatus:h}=this.state;let g=this.renderOverflow();if(!this.isScrollMode()&&(Array.isArray(g)&&(g=b.createElement(b.Fragment,null,g)),b.isValidElement(g))){const p=b.cloneElement(g);g=b.createElement(Pt,{onResize:f=>{let[S]=f;this.setState({overflowWidth:S.target.clientWidth,overflowStatus:"calculating"})}},b.createElement("div",{className:`${at}-overflow`},p))}const m=c===qe.SCROLL?(()=>{const p=[b.createElement("div",{className:M(s,`${at}-scroll-wrapper`),ref:f=>{this.scroller=f},style:Object.assign({},r),key:`${at}-scroll-wrapper`},u.map(l).map(f=>{const{forwardRef:S,key:v}=f;return b.cloneElement(f,{ref:w=>this.mergeRef(S,w,v),"data-scrollkey":`${v}`,key:v})}))];return this.props.overflowRenderDirection==="both"?(p.unshift(g[0]),p.push(g[1])):this.props.overflowRenderDirection==="start"?(p.unshift(g[1]),p.unshift(g[0])):(p.push(g[0]),p.push(g[1])),p})():[d===qn.START?g:null,u.map((p,f)=>{const S=this.getItemKey(p,f),v=l(p,f),w=b.cloneElement(v);return b.createElement(Pt,{key:S??f,onResize:_=>{let[O]=_;return this.onItemResize(O,p,f)}},b.createElement("div",{key:S??f,className:`${at}-item`},w))}),d===qn.END?g:null];return b.createElement("div",{className:M(`${at}`,n),style:Object.assign(Object.assign({},o),c===qe.COLLAPSE?{maxWidth:"100%",visibility:h==="calculating"&&this.state.pivot<0?"hidden":"visible"}:null)},...m)},this.onItemResize=(n,s,r)=>{const o=this.getItemKey(s,r),l=this.itemSizeMap.get(o);l?l!==n.target.clientWidth&&(this.itemSizeMap.set(o,n.target.clientWidth),this.setState({overflowStatus:"calculating"})):this.itemSizeMap.set(o,n.target.clientWidth);const{maxCount:c}=this.state;this.itemSizeMap.size===c&&this.setState({overflowStatus:"calculating"})},this.state={direction:to.GROW,lastOverflowCount:0,overflow:[],visible:[],containerWidth:0,visibleState:new Map,itemSizeMap:new Map,overflowStatus:"calculating",pivot:-1,overflowWidth:0,maxCount:0,scrollOverflow:[[],[]],isScrollOverflowCalculating:!0},this.foundation=new vd(this.adapter),this.previousWidths=new Map,this.itemRefs={},this.itemSizeMap=new Map}static getDerivedStateFromProps(e,t){const{prevProps:n}=t,s={};s.prevProps=e;const r=l=>!n&&l in e||n&&!re(n[l],e[l]),o=r("items");if(o||r("style")){if(s.direction=to.GROW,s.lastOverflowCount=0,s.maxCount=0,s.isScrollOverflowCalculating=!0,o&&e.renderMode===qe.SCROLL&&Array.isArray(t.scrollOverflow)){const l=(m,y)=>{const{itemKey:p}=e;return ue(p)?p(m):x(m,p||"key",y)},c=e.items||[],d=new Map;c.forEach((m,y)=>{d.set(l(m,y),m)});const u=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map((y,p)=>d.get(l(y,p))).filter(Boolean)},[h,g]=t.scrollOverflow;s.scrollOverflow=[u(h),u(g)]}if(e.renderMode===qe.SCROLL)s.visible=e.items,s.overflow=[];else{let l=e.items.length;Math.floor(t.containerWidth/eo.MINIMUM_HTML_ELEMENT_WIDTH)!==0&&(l=Math.min(l,Math.floor(t.containerWidth/eo.MINIMUM_HTML_ELEMENT_WIDTH)));const c=e.collapseFrom===qn.START,d=c?$t(e.items).reverse().slice(0,l):e.items.slice(0,l),u=c?$t(e.items).reverse().slice(l):e.items.slice(l);s.visible=d,s.overflow=u,s.maxCount=l}s.overflowStatus="calculating"}return s}get adapter(){return Object.assign(Object.assign({},super.adapter),{updateVisibleState:e=>{this.setState({visibleState:e},()=>{var t,n;(n=(t=this.props).onVisibleStateChange)===null||n===void 0||n.call(t,e)})},updateStates:e=>{this.setState(Object.assign({},e))},notifyIntersect:e=>{this.props.onIntersect&&this.props.onIntersect(e)},getItemSizeMap:()=>this.itemSizeMap})}componentDidUpdate(e,t){const n=e.items.map((d,u)=>this.getItemKey(d,u)),s=this.props.items.map((d,u)=>this.getItemKey(d,u));re(n,s)||(this.itemRefs={},this.itemSizeMap=new Map,this.setState({visibleState:new Map,isScrollOverflowCalculating:!0}));const{overflow:r,containerWidth:o,visible:l,overflowStatus:c}=this.state;this.isScrollMode()||c!=="calculating"||this.foundation.handleCollapseOverflow()}render(){const e=this.renderItemList(),{renderMode:t}=this.props;return t===qe.SCROLL?b.createElement(Us,{onIntersect:this.reintersect,root:this.scroller,threshold:this.props.threshold,items:this.itemRefs},e):b.createElement(Pt,{onResize:this.resize},e)}}Qe.__SemiComponentName__="OverflowList";Qe.defaultProps=ks(Qe.__SemiComponentName__,{collapseFrom:"end",minVisibleItems:0,overflowRenderer:()=>null,renderMode:"collapse",threshold:.75,visibleItemRenderer:()=>null,onOverflow:()=>null,overflowRenderDirection:"both"});Qe.propTypes={className:a.string,collapseFrom:a.oneOf(Be.BOUNDARY_SET),direction:a.oneOf(Be.POSITION_SET),items:a.array,minVisibleItems:a.number,onIntersect:a.func,onOverflow:a.func,overflowRenderer:a.func,renderMode:a.oneOf(Be.MODE_SET),style:a.object,threshold:a.number,visibleItemRenderer:a.func,wrapperClassName:a.string,wrapperStyle:a.object,collapseMask:a.object,overflowRenderDirection:a.string};const Cd={PREFIX:`${X}-page`},Vs={PAGE_SHOW_MAX:7,DEFAULT_PAGE_SIZE:10,PAGE_SIZE_OPTION:[10,20,40,100],REST_PAGE_MAX_SIZE:1e6};class _d extends ge{constructor(e){super(Object.assign({},e))}init(){const{currentPage:e,total:t,pageSize:n}=this.getStates();this._updateDisabled({currentPage:e,total:t,pageSize:n}),this._updatePageList({currentPage:e,total:t,pageSize:n}),this._registerEventHandler()}destroy(){this._unregisterEventHandler()}_registerEventHandler(){this._adapter.registerKeyDownHandler(this.handleKeyDown)}_unregisterEventHandler(){this._adapter.unregisterKeyDownHandler(this.handleKeyDown)}_updateDisabled(e){const{currentPage:t,total:n,pageSize:s}=e,r=this._getTotalPageNumber(n,s);let o=!1,l=!1;t===1?(o=!0,l=r<2):t===r&&(o=!1,l=!0);const{prevDisabled:c,nextDisabled:d}=this.getStates();(o!==c||l!==d)&&this._adapter.setDisabled(o,l)}goPage(e){if(e==="...")return;const{pageSize:t,currentPage:n}=this.getStates(),s=this._isInProps("currentPage");e!==n&&(s?(this._adapter.notifyPageChange(e),this._adapter.notifyChange(e,t)):(this.updatePage(e),this._adapter.notifyPageChange(e),this._adapter.notifyChange(e,t)))}updatePage(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1,t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;(t===null||typeof t>"u")&&(t=this.getState("total")),(n===null||typeof n>"u")&&(n=this.getState("pageSize")),this._updateDisabled({currentPage:e,total:t,pageSize:n}),this._updatePageList({currentPage:e,total:t,pageSize:n}),t!==this.getState("total")&&this._adapter.updateTotal(t),e!==this.getState("currentPage")&&this._adapter.setCurrentPage(e),n!==this.getState("pageSize")&&this._adapter.updatePageSize(n)}updateAllPageNumbers(e,t){const{size:n,hoverShowPageSelect:s,disabled:r}=this.getProps();if(!(n!=="small"||!s||r)){const o=Array.from({length:Math.ceil(e/t)},(l,c)=>c+1);this._adapter.updateAllPageNumbers(o)}}goPrev(){const{currentPage:e}=this.getStates();e>1&&this.goPage(e-1)}goNext(){const{currentPage:e,total:t,pageSize:n}=this.getStates(),s=this._getTotalPageNumber(t,n);e<=s-1&&this.goPage(e+1)}_updatePageList(e){const{currentPage:t,total:n,pageSize:s}=e;let r=[],o=[],l=[];const c=this._getTotalPageNumber(n,s),{PAGE_SHOW_MAX:d,REST_PAGE_MAX_SIZE:u}=Vs;if(c<=d)r=Array.from({length:c},(h,g)=>g+1),o=[],l=[];else switch(!0){case t<4:r=[1,2,3,4,"...",c-1,c],l=Array.from({length:Math.min(c-6,u)},(m,y)=>y+5),o=[];break;case t===4:r=[1,2,3,4,5,"...",c],l=Array.from({length:Math.min(c-6,u)},(m,y)=>y+6),o=[];break;case(4t+(y-1));r=[1].concat("...",h,"...",c),l=Array.from({length:Math.min(c-t-2,u)},(m,y)=>t+y+2),o=Array.from({length:Math.min(t-3,u)},(m,y)=>y+2);break;case(t-3<=t&&t<=c):const g=Array.from({length:5},(m,y)=>c-(4-y));r=[1,"..."].concat(g),l=[],o=Array.from({length:Math.min(g[0]-2,u)},(m,y)=>y+2);break}this._adapter.setPageList({pageList:r,restLeftPageList:o,restRightPageList:l})}changePageSize(e){const{pageSize:t}=this.getStates();this._adapter.updatePageSize(e),this._adapter.notifyPageSizeChange(e);const{total:n,currentPage:s}=this.getStates(),{preventPageChangeOnPageSizeChange:r}=this.getProps();let o=s;if(!r){const l=(s-1)*t+1;o=Math.ceil(l/e)}this.updatePage(o,n,e),s!==o&&this._adapter.notifyPageChange(o),this._adapter.notifyChange(o,e)}handleKeyDown(){}pageSizeInOpts(){const{pageSizeOpts:e}=this.getProps(),{pageSize:t}=this.getStates(),n=[...e];if(n.indexOf(t)===-1){const s=n.findIndex(r=>r>t);n.splice(s,0,t)}return n}handleQuickJumpNumberChange(e){this._adapter.updateQuickJumpPage(e)}_handleQuickJump(e){let t=Number(e);const{pageSize:n,total:s}=this.getStates(),r=this._getTotalPageNumber(s,n);Number.isNaN(t)||(t>r&&(t=r),t<=0&&(t=1),this._adapter.updateQuickJumpPage(""),this.goPage(t))}handleQuickJumpBlur(){const{quickJumpPage:e}=this.getStates();(typeof e=="string"&&e||typeof e=="number")&&this._handleQuickJump(e)}handleQuickJumpEnterPress(e){this._handleQuickJump(e)}_getTotalPageNumber(e,t){return Math.ceil(e/t)}}const qs={PREFIX:`${X}-select`,PREFIX_OPTION:`${X}-select-option`,PREFIX_GROUP:`${X}-select-group`},_e={SIZE_SET:["small","large","default"],POSITION_SET:Ma.POSITION_SET,STATUS:pl,SEARCH_POSITION_TRIGGER:"trigger",SEARCH_POSITION_DROPDOWN:"dropdown"},Fi={LIST_HEIGHT:270};var no=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);sn?o[1]:o[1].value)}catch{t=[]}break;case(s&&!e.size):t=[];break;case(!s&&!!e.size):try{t=n?[...e][0][1]:[...e][0][1].value}catch{}break;case(!s&&!e.size):break}const r=this._adapter.getOptionsFromChildren();this._update(t,r)}handleValueChange(e){const{allowCreate:t,autoClearSearchValue:n,remote:s}=this.getProps(),{inputValue:r}=this.getStates();let o;t&&this._isControlledComponent()?(o=this.getState("options"),o.forEach(l=>l._show=!0)):o=this._adapter.getOptionsFromChildren(),this._adapter.rePositionDropdown(),this._isFilterable()&&!n&&r&&!s&&(o=this._filterOption(o,r)),this._update(e,o)}_update(e,t){let n;this._isMultiple()?(n=this._updateMultiple(e,t),this.updateOverflowItemCount(n.size)):n=this._updateSingle(e,t),this._adapter.updateSelection(n),this.updateOptionsActiveStatus(n,t)}_updateSingle(e,t){const n=new Map,{onChangeWithObject:s}=this.getProps(),r=s&&typeof e<"u"?e.value:e,o=t.filter(c=>c.value===r),l=!o.length&&typeof r<"u"&&r!==null;if(o.length){const c=o[0],d=Object.assign({},c);n.set(d.label,d)}else if(l){let c={value:e,label:e,_notExist:!0,_scrollIndex:-1};s&&(c=Object.assign(Object.assign({},e),{_notExist:!0,_scrollIndex:-1})),n.set(c.label,c)}return n}_updateMultiple(e,t){const n=this.getState("selections");let s=[];const r=Array.isArray(e);this.checkMultipleProps(),n.size&&(s=[...n].map(d=>d[1]));const o=new Map;let l=e;const{onChangeWithObject:c}=this.getProps();return c&&r&&(l=e.map(d=>d.value)),r&&l.length&&l.forEach((d,u)=>{const h=t.findIndex(g=>g.value===d);if(h!==-1)o.set(t[h].label,t[h]);else{const g=s.findIndex(m=>m.value===d);if(g!==-1){const m=s[g];if(c){const y=Object.assign({},e[u]);re(y,m)?o.set(m.label,m):o.set(y.label,y)}else o.set(m.label,m)}else{let m={value:d,label:d,_notExist:!0};c&&(m=Object.assign(Object.assign({},e[u]),{_notExist:!0})),o.set(m.label,Object.assign(Object.assign({},m),{_scrollIndex:-1}))}}}),o}_isMultiple(){return this.getProp("multiple")}_isDisabled(){return this.getProp("disabled")}_isFilterable(){return!!this.getProp("filter")}handleClick(e){const{clickToHide:t}=this.getProps(),{isOpen:n}=this.getStates();this._isDisabled()||(n?n&&t?this.close({event:e}):n&&!t&&this.focusInput():(this.open(),this._notifyFocus(e)))}open(e,t){const n=this._isFilterable(),s=t||this.getState("options");if(n){const o=this._filterOption(s,"").filter(l=>!l._inputCreateOnly);this._adapter.updateOptions(o),this.toggle2SearchInput(!0)}else this._adapter.updateFocusState(!0);this._adapter.openMenu(()=>{const{searchPosition:r,autoFocus:o}=this.getProps();o&&r===_e.SEARCH_POSITION_DROPDOWN&&this._adapter.focusDropdownInput()}),this._setDropdownWidth(),this._adapter.notifyDropdownVisibleChange(!0),this.bindKeyBoardEvent(),this._adapter.registerClickOutsideHandler(r=>{this.close({event:r}),this._notifyBlur(r),this._adapter.updateFocusState(!1)})}toggle2SearchInput(e){e?this._adapter.toggleInputShow(e,()=>this.focusInput()):this._adapter.toggleInputShow(e,()=>{})}close(e){const{event:t,closeCb:n,notToggleInput:s}=e||{},{isFocus:r}=this.getStates();this._adapter.closeMenu(),this._adapter.notifyDropdownVisibleChange(!1),this._adapter.setIsFocusInContainer(!1),r&&this._focusTrigger(),this._adapter.unregisterClickOutsideHandler();const o=this._isFilterable();o&&!s&&this.toggle2SearchInput(!1),this._adapter.once("popoverClose",()=>{o&&this.clearInput(t),n&&n()})}onSelect(e,t,n){if(this._isDisabled())return;e._inputCreateOnly&&this._adapter.notifyCreate(e),this._isMultiple()?this._handleMultipleSelect(e,n):this._handleSingleSelect(e,n),this._adapter.updateFocusIndex(t)}_handleSingleSelect(e,t){var{value:n,label:s}=e,r=no(e,["value","label"]);const o=new Map().set(s,Object.assign({value:n,label:s},r));this._notifySelect(n,Object.assign({value:n,label:s},r));const l=this._isFilterable();this._isControlledComponent()?this.close({event:t,notToggleInput:!0,closeCb:()=>{this._notifyChange(o),l&&this.toggle2SearchInput(!1)}}):(this._adapter.updateSelection(o),this._notifyChange(o),this.close({event:t,closeCb:()=>{this.updateOptionsActiveStatus(o)}}))}_handleMultipleSelect(e,t){var{value:n,label:s}=e,r=no(e,["value","label"]);const o=this._adapter.getMaxLimit(),l=this._adapter.getSelections(),{autoClearSearchValue:c}=this.getProps();if(l.has(s))this._notifyDeselect(n,Object.assign({value:n,label:s},r)),l.delete(s);else if(o&&l.size>=o){this._adapter.notifyMaxLimit(Object.assign({value:n,label:s},ye(r,"_scrollIndex")));return}else this._notifySelect(n,Object.assign({value:n,label:s},r)),l.set(s,Object.assign({value:n,label:s},r));if(this._isControlledComponent())this._notifyChange(l),this._isFilterable()&&(c&&this.clearInput(t),this.focusInput());else{this._adapter.updateSelection(l),this.updateOverflowItemCount(l.size),this._adapter.rePositionDropdown();let{options:d}=this.getStates();this._isFilterable()&&(c&&(this.clearInput(t),d=this._filterOption(d,"")),this.focusInput()),this.updateOptionsActiveStatus(l,d),this._notifyChange(l)}}clearSelected(){const e=new Map;this._isControlledComponent()?(this._notifyChange(e),this._adapter.notifyClear()):(this._adapter.updateSelection(e),this.updateOptionsActiveStatus(e),this._notifyChange(e),this._adapter.notifyClear());const{isOpen:t}=this.getStates();t&&this._adapter.rePositionDropdown()}updateOptionsActiveStatus(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.getState("options");const{allowCreate:n}=this.getProps(),s=t.map(r=>(e.has(r.label)?(r._selected=!0,n&&delete r._inputCreateOnly):(r._inputCreateOnly&&(r._show=!1),r._selected=!1),r));this._adapter.updateOptions(s)}removeTag(e){const t=this._adapter.getSelections();t.delete(e.label),this._isControlledComponent()?(this._notifyDeselect(e.value,e),this._notifyChange(t)):(this._notifyDeselect(e.value,e),this._adapter.updateSelection(t),this.updateOverflowItemCount(t.size),this.updateOptionsActiveStatus(t),this._adapter.rePositionDropdown(),this._notifyChange(t))}clearInput(e){const{inputValue:t}=this.getStates();if(t!==""){this._adapter.updateInputValue(""),this._adapter.notifySearch("",e);const{options:n}=this.getStates(),{remote:s}=this.getProps();let r=n;s||(r=this._filterOption(n,"")),this._adapter.updateOptions(r)}}focusInput(){this._adapter.focusInput(),this._adapter.updateFocusState(!0),this._adapter.setIsFocusInContainer(!1)}handleInputChange(e,t){this._adapter.updateInputValue(e);const{options:n,isOpen:s}=this.getStates(),{allowCreate:r,remote:o}=this.getProps();let l=n;o||(l=this._filterOption(n,e)),l=this._createOptionByInput(r,l,e),this._adapter.updateOptions(l),this._adapter.notifySearch(e,t),this._isMultiple()&&this._adapter.rePositionDropdown()}_filterOption(e,t){const n=this.getProp("filter");if(n){if(typeof n=="boolean"&&n){const s=t.toLowerCase();return e.map(r=>{const o=r.label.toString().toLowerCase(),l=r._parentGroup&&r._parentGroup.label,c=o.includes(s),d=Ce(l)&&l.toLowerCase().includes(s);return c||d?r._show=!0:r._show=!1,r})}else if(typeof n=="function")return e.map(s=>(n(t,s)?s._show=!0:s._show=!1,s))}else return e}_createOptionByInput(e,t,n){if(e)if(n){const s={_show:!0,_selected:!1,value:n,label:n,_inputCreateOnly:!0};let r=-1,o=-1;t.forEach((l,c)=>{!l._show&&!l._inputCreateOnly||(l.label===n&&(o=c),l._inputCreateOnly&&(r=c,l.value=n,l.label=n,l._show=!0))}),r===-1&&o===-1&&t.push(s),o!==-1&&(t=t.filter(l=>!l._inputCreateOnly))}else t=t.filter(s=>!s._inputCreateOnly);return t}bindKeyBoardEvent(){this._keydownHandler=e=>{this._handleKeyDown(e)},this._adapter.registerKeyDown(this._keydownHandler)}unBindKeyBoardEvent(){this._keydownHandler&&this._adapter.unregisterKeyDown()}_handleKeyDown(e){const t=e.keyCode,{loading:n,filter:s,multiple:r,disabled:o}=this.getProps(),{isOpen:l}=this.getStates();if(!(n||o))switch(t){case je.UP:e.preventDefault(),this._handleArrowKeyDown(-1);break;case je.DOWN:e.preventDefault(),this._handleArrowKeyDown(1);break;case je.BACKSPACE:this._handleBackspaceKeyDown();break;case je.ENTER:Et(e),this._handleEnterKeyDown(e);break;case je.ESC:l&&this.close({event:e}),s&&!r&&this._focusTrigger();break;case je.TAB:this._handleTabKeyDown(e);break}}handleContainerKeyDown(e){const t=e.keyCode,{isOpen:n}=this.getStates();switch(t){case je.TAB:n&&this._handleTabKeyDown(e);break}}_getEnableFocusIndex(e){const{focusIndex:t,options:n}=this.getStates(),s=n.filter(l=>l._show),r=s.length;let o=t+e;if(o<0&&(o=r-1),o>=r&&(o=0),e>0){let l=-1;for(let c=0;c=o));c++);o=l}else{let l=s.length;for(let c=r-1;c>=0&&(!s[c].disabled&&(l=c),!(l<=o));c--);o=l}this._adapter.updateFocusIndex(o),this._adapter.updateScrollTop(o)}_handleArrowKeyDown(e){const{isOpen:t}=this.getStates();t?this._getEnableFocusIndex(e):this.open()}_handleTabKeyDown(e){const{isOpen:t}=this.getStates();if(this._adapter.updateFocusState(!1),t){const n=this._adapter.getContainer(),s=this._adapter.getFocusableElements(n);s.length>0?e.shiftKey?this._handlePanelOpenShiftTabKeyDown(s,e):this._handlePanelOpenTabKeyDown(s,e):(this.close({event:e}),this._notifyBlur(e))}else this._notifyBlur(e)}_handlePanelOpenTabKeyDown(e,t){const n=this._adapter.getActiveElement();this._adapter.getIsFocusInContainer()?n===e[e.length-1]&&(this._focusTrigger(),this.close({event:t}),Et(t)):(e[0].focus(),this._adapter.setIsFocusInContainer(!0),Et(t))}_handlePanelOpenShiftTabKeyDown(e,t){const n=this._adapter.getActiveElement();this._adapter.getIsFocusInContainer()?n===e[0]&&(this._focusTrigger(),this._adapter.setIsFocusInContainer(!1),Et(t)):(this.close({event:t}),this._notifyBlur(t))}_handleEnterKeyDown(e){const{isOpen:t,options:n,focusIndex:s}=this.getStates();if(!t)this.open();else if(s!==-1){const r=n.filter(l=>l._show),{length:o}=r;if(o<=s)return;if(r&&o){const l=r[s];if(l.disabled)return;this.onSelect(l,s,e)}}else this.close({event:e})}_handleBackspaceKeyDown(){if(this._isMultiple()){const e=this._adapter.getSelections(),{inputValue:t}=this.getStates(),n=e.size;if(n&&!t){const s=[...e.keys()];let r=n-1,o=s[r],l=e.get(o),c=!1;if(l.disabled&&r===0)return;for(;l.disabled&&r!==0;)r=r-1,o=s[r],l=e.get(o),r==0&&l.disabled&&(c=!0);c||this.removeTag(l)}}}_notifyChange(e){const{onChangeWithObject:t}=this.getProps(),n=this.getState("selections");let s;const r=[...e.values()],o=this._isMultiple();if(this._diffSelections(e,n,o))switch(!0){case t:this._notifyChangeWithObject(e);break;case(!t&&!o):s=r.length?r[0].value:void 0,this._adapter.notifyChange(s);break;case(!t&&o):s=r.length?r.map(c=>c.value):[],this._adapter.notifyChange(s);break}}_removeInternalKey(e){let t=Object.assign({},e);return delete t._parentGroup,delete t._show,delete t._selected,delete t._scrollIndex,delete t._keyInJsx,"_keyInOptionList"in t&&(t.key=t._keyInOptionList,delete t._keyInOptionList),t}_notifySelect(e,t){const n=this._removeInternalKey(t);this._adapter.notifySelect(e,n)}_notifyDeselect(e,t){const n=this._removeInternalKey(t);this._adapter.notifyDeselect(e,n)}_diffSelections(e,t,n){let s=!0,r=!0;if(!n){const o=[...e.values()],l=[...t.values()],c=o[0]?o[0].value:o[0],d=l[0]?l[0].value:l[0];r=!re(c,d);const u=o[0]?o[0].label:o[0],h=l[0]?l[0].label:l[0];s=!re(u,h)}return r||s}_notifyChangeWithObject(e){this.getState("selections");const t=[];for(const n of e.entries()){let s=Object.assign({label:n[0]},n[1]);s=this._removeInternalKey(s),t.push(s)}this._isMultiple()?this._adapter.notifyChange(t):this._adapter.notifyChange(t[0])}_notifyBlur(e){this._adapter.notifyBlur(e)}_notifyFocus(e){this._adapter.notifyFocus(e)}handleMouseEnter(e){this._adapter.updateHovering(!0),this._adapter.notifyMouseEnter(e)}handleMouseLeave(e){this._adapter.updateHovering(!1),this._adapter.notifyMouseLeave(e)}handleClearClick(e){const{filter:t,searchPosition:n}=this.getProps();t&&n===_e.SEARCH_POSITION_TRIGGER&&this.clearInput(e),this.focus(void 0,!1),this.clearSelected(),e.stopPropagation()}handleKeyPress(e){e&&e.key===ja&&this.handleClick(e)}handleClearBtnEnterPress(e){Yt(e)&&this.handleClearClick(e)}handleOptionMouseEnter(e){this._adapter.updateFocusIndex(e)}handleListScroll(e){this._adapter.notifyListScroll(e)}handleTriggerFocus(e){this.bindKeyBoardEvent(),this._adapter.setIsFocusInContainer(!1)}handleTriggerBlur(e){const{filter:t,autoFocus:n}=this.getProps(),{isOpen:s,isFocus:r}=this.getStates();r&&!s&&(this._notifyBlur(e),this._adapter.updateFocusState(!1))}handleInputBlur(e){const{filter:t,autoFocus:n}=this.getProps(),{showInput:s,isOpen:r}=this.getStates(),o=this._isMultiple();t&&!o&&(s||n)&&!r&&this.toggle2SearchInput(!1)}selectAll(){const{options:e}=this.getStates(),{onChangeWithObject:t}=this.getProps();let n=[];if(!this._isMultiple()){console.warn(`[Semi Select]: It seems that you have called the selectAll method in the single-selection Select. - Please note that this is not a legal way to use it`);return}t?n=e:n=e.map(r=>r.value),this.handleValueChange(n),this._adapter.notifyChange(n)}checkMultipleProps(e){if(this._isMultiple()){const t=e||this.getProps(),{defaultValue:n,value:s}=t,r=s||n;!Xt(r)&&!Array.isArray(r)&&$e(!0,"[Semi Select] defaultValue/value should be array type in multiple mode")}}updateScrollTop(){this._adapter.updateScrollTop()}updateOverflowItemCount(e,t){const{maxTagCount:n,ellipsisTrigger:s}=this.getProps();s&&(t?this._adapter.updateOverflowItemCount(t):typeof n=="number"&&(e-n>0?this._adapter.updateOverflowItemCount(e-n):this._adapter.updateOverflowItemCount(0)))}updateIsFullTags(){const{isFullTags:e}=this.getStates();e||this._adapter.setState({isFullTags:!0})}handlePopoverClose(){this._adapter.emit("popoverClose")}handleSlotMouseEnter(){this._adapter.updateFocusIndex(-1)}}const lt=al.PREFIX,Ki=gi.TAG_SIZE,Rd=gi.AVATAR_SHAPE;class Ht extends L.PureComponent{renderNTag(e,t){const{size:n,showPopover:s,popoverProps:r,onPlusNMouseEnter:o}=this.props;let l=b.createElement(mt,{closable:!1,size:n,color:"grey",style:{backgroundColor:"transparent"},key:"_+n",onMouseEnter:o},"+",e);return s&&(l=b.createElement(yt,Object.assign({showArrow:!0,content:t,trigger:"hover",position:"top",autoAdjustOverflow:!0,className:`${lt}-rest-group-popover`},r,{key:"_+n_Popover"}),l)),l}renderMergeTags(e){const{maxTagCount:t,tagList:n,restCount:s}=this.props,r=s||n.length-t;let o=e;const l=e.slice(0,t),c=e.slice(t);let d=null;return r>0&&(d=this.renderNTag(r,c),l.push(d),o=l),o}renderAllTags(){const{tagList:e,size:t,mode:n,avatarShape:s,onTagClose:r}=this.props;return e.map(l=>{if(n==="custom")return l;const c=Object.assign({},l);return c.size||(c.size=t),c.avatarShape||(c.avatarShape=s),c.tagKey||(typeof c.children=="string"||typeof c.children=="number"?c.tagKey=c.children:c.tagKey=Math.random()),b.createElement(mt,Object.assign({},c,{key:c.tagKey,onClose:(d,u,h)=>{c.onClose&&c.onClose(d,u,h),r&&r(d,u,h)}}))})}render(){const{style:e,className:t,maxTagCount:n,size:s}=this.props,r=M({[`${lt}-group`]:!0,[`${lt}-group-max`]:n,[`${lt}-group-small`]:s==="small",[`${lt}-group-large`]:s==="large"},t),o=this.renderAllTags(),l=typeof n>"u"?o:this.renderMergeTags(o);return b.createElement("div",{style:e,className:r},l)}}Ht.defaultProps={style:{},className:"",size:Ki[0],avatarShape:"square",onTagClose:()=>{},onPlusNMouseEnter:()=>{}};Ht.propTypes={children:a.node,style:a.object,className:a.string,maxTagCount:a.number,restCount:a.number,tagList:a.array,size:a.oneOf(Ki),mode:a.string,onTagClose:a.func,showPopover:a.bool,popoverProps:a.object,avatarShape:a.oneOf(Rd)};var Ed=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{const s=i.props;if(!i||!s)return null;const r=Object.assign(Object.assign({value:s.value,label:s.label||s.children||s.value,_show:!0,_selected:!1,_scrollIndex:t},s),{_parentGroup:e});return r._keyInJsx=n||i.key,r},xd=i=>{let e=[],t=[];const n={label:"",children:[],_show:!1};let s=b.Children.toArray(i);s=s.filter(l=>l&&l.props);let r="",o=-1;return s.forEach(l=>{if(l.type.isSelectOption){r="option",o++;const c=so(l,void 0,o);n.children.push(c),t.push(c)}else if(l.type.isSelectOptionGroup){r="group";let c=l.props,{children:d}=c,u=Ed(c,["children"]);u.key=l.key;let h=[];Array.isArray(d)?h=d.map(y=>y.key):h.push(d.key),d=b.Children.toArray(d);const g=d.map((y,p)=>{let f=y.key;return h[p]===null&&(f=l.key+""+y.key),o++,so(y,u,o,f)}),m=Object.assign(Object.assign({},l.props),{children:g,key:l.key});e.push(m),t=t.concat(g)}else $e(!0,"[Semi Select] The children of `Select` should be `Select.Option` or `Select.OptionGroup`")}),r==="option"&&(e=[n]),{optionGroups:e,options:t}},Td=i=>{let{index:e,data:t,style:n}=i;const{visibleOptions:s,renderOption:r}=t,o=s[e];return r(o,e,n)};var ro=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);sb.createElement("div",{className:_,"x-semi-prop":"emptyContent"},c||E.emptyText));if(typeof f=="function"){const E=M(g,{[`${p}-custom`]:!0,[`${p}-custom-selected`]:r});return f(Object.assign({disabled:n,focused:u,selected:r,style:m,label:o,value:s,inputValue:S,onMouseEnter:k=>y(k),onClick:k=>this.onClick(Object.assign({value:s,label:o,children:t},w),k),className:E},w))}const I={searchWords:[S],sourceString:t,highlightClassName:`${p}-keyword`};return b.createElement("div",Object.assign({className:_,onClick:E=>{this.onClick(Object.assign({value:s,label:o,children:t},w),E)},onMouseEnter:E=>y&&y(E),role:"option",id:v,"aria-selected":r?"true":"false","aria-disabled":n?"true":"false",style:m},qt(w)),h?b.createElement("div",{className:O},b.createElement(za,null)):null,Ce(t)?b.createElement("div",{className:`${p}-text`},this.renderOptionContent({children:t,config:I,inputValue:S,prefixCls:p})):t)}};He.isSelectOption=!0;He.propTypes={children:a.node,disabled:a.bool,value:a.oneOfType([a.string,a.number]),selected:a.bool,label:a.node,empty:a.bool,emptyContent:a.node,onSelect:a.func,focused:a.bool,showTick:a.bool,className:a.string,style:a.object,onMouseEnter:a.func,prefixCls:a.string,renderOptionItem:a.func,inputValue:a.string};He.defaultProps={prefixCls:qs.PREFIX_OPTION};var Id=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);sthis.optionContainerEl={current:t},this.handleInputChange=(t,n)=>this.foundation.handleInputChange(t,n),this.getTagItem=(t,n,s)=>{const{size:r,disabled:o}=this.props,l=t[0],{value:c}=t[1],d=t[1].disabled||o,u=(y,p)=>{p&&typeof p.preventDefault=="function"&&p.preventDefault(),this.foundation.removeTag({label:l,value:c})},{content:h,isRenderInTag:g}=s(t[1],{index:n,disabled:d,onClose:u}),m={disabled:d,closable:!d,onClose:u};return g?b.createElement(mt,Object.assign({},m,{color:"white",size:r||"large",key:c,tabIndex:-1}),h):b.createElement(L.Fragment,{key:c},h)},this.state={isOpen:!1,isFocus:!1,options:[],selections:new Map,dropdownMinWidth:null,optionKey:Dd,inputValue:"",showInput:!1,focusIndex:e.defaultActiveFirstOption?0:-1,keyboardEventSet:{},optionGroups:[],isHovering:!1,isFocusInContainer:!1,isFullTags:!1,overflowItemCount:0},this.selectOptionListID="",this.selectID="",this.virtualizeListRef=b.createRef(),this.inputRef=b.createRef(),this.dropdownInputRef=b.createRef(),this.triggerRef=b.createRef(),this.optionsRef=b.createRef(),this.optionContainerEl=b.createRef(),this.clickOutsideHandler=null,this.onSelect=this.onSelect.bind(this),this.onClear=this.onClear.bind(this),this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.renderOption=this.renderOption.bind(this),this.onKeyPress=this.onKeyPress.bind(this),this.eventManager=new Fa,this.foundation=new Od(this.adapter)}get adapter(){var e=this;const t={registerKeyDown:r=>{const o={onKeyDown:r};this.setState({keyboardEventSet:o})},unregisterKeyDown:()=>{this.setState({keyboardEventSet:{}})},updateFocusIndex:r=>{this.setState({focusIndex:r})},scrollToFocusOption:()=>{}},n={updateInputValue:r=>{this.setState({inputValue:r})},toggleInputShow:(r,o)=>{this.setState({showInput:r},()=>{o()})},focusInput:()=>{const{preventScroll:r}=this.props;this.inputRef&&this.inputRef.current&&this.inputRef.current.focus({preventScroll:r})},focusDropdownInput:()=>{const{preventScroll:r}=this.props;this.dropdownInputRef&&this.dropdownInputRef.current&&this.dropdownInputRef.current.focus({preventScroll:r})}},s={notifyMaxLimit:r=>this.props.onExceed(r),getMaxLimit:()=>this.props.max,registerClickOutsideHandler:r=>{const o=l=>{const c=this.triggerRef&&this.triggerRef.current,d=this.optionContainerEl&&this.optionContainerEl.current,u=l.target,h=l.composedPath&&l.composedPath()||[u];!(d&&d.contains(u))&&!(c&&c.contains(u))&&!(h.includes(c)||h.includes(d))&&r(l)};this.clickOutsideHandler=o,document.addEventListener("mousedown",o,!1)},unregisterClickOutsideHandler:()=>{this.clickOutsideHandler&&(document.removeEventListener("mousedown",this.clickOutsideHandler,!1),this.clickOutsideHandler=null)},rePositionDropdown:()=>{let{optionKey:r}=this.state;r=r+1,this.setState({optionKey:r})},notifyDeselect:(r,o)=>{delete o._parentGroup,this.props.onDeselect(r,o)}};return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},super.adapter),t),n),s),{on:(r,o)=>this.eventManager.on(r,o),off:r=>this.eventManager.off(r),once:(r,o)=>this.eventManager.once(r,o),emit:r=>this.eventManager.emit(r),getOptionsFromChildren:function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.props.children,o=[],l=[];const{optionList:c}=e.props;if(c&&c.length)l=c.map((d,u)=>Object.assign({_show:!0,_selected:!1,_scrollIndex:u},d)),o[0]={children:l,label:""};else{const d=xd(r);o=d.optionGroups,l=d.options}return e.setState({optionGroups:o}),l},updateOptions:r=>{this.setState({options:r})},openMenu:r=>{this.setState({isOpen:!0},()=>{r==null||r()})},closeMenu:()=>{this.setState({isOpen:!1})},getTriggerWidth:()=>{const r=this.triggerRef.current;return r&&r.getBoundingClientRect().width},setOptionWrapperWidth:r=>{this.setState({dropdownMinWidth:r})},updateSelection:r=>{this.setState({selections:r})},getSelections:()=>new Map(this.state.selections),notifyChange:r=>{this.props.onChange(r)},notifySelect:(r,o)=>{delete o._parentGroup,this.props.onSelect(r,o)},notifyDropdownVisibleChange:r=>{this.props.onDropdownVisibleChange(r)},notifySearch:(r,o)=>{this.props.onSearch(r,o)},notifyCreate:r=>{this.props.onCreate(r)},notifyMouseEnter:r=>{this.props.onMouseEnter(r)},notifyMouseLeave:r=>{this.props.onMouseLeave(r)},notifyFocus:r=>{this.props.onFocus(r)},notifyBlur:r=>{this.props.onBlur(r)},notifyClear:()=>{this.props.onClear()},notifyListScroll:r=>{this.props.onListScroll(r)},updateHovering:r=>{this.setState({isHovering:r})},updateFocusState:r=>{this.setState({isFocus:r})},updateOverflowItemCount:r=>{this.setState({overflowItemCount:r})},focusTrigger:()=>{try{const{preventScroll:r}=this.props;this.triggerRef.current.focus({preventScroll:r})}catch{}},getContainer:()=>this.optionContainerEl&&this.optionContainerEl.current,getFocusableElements:r=>$a(r),getActiveElement:()=>Ka(),setIsFocusInContainer:r=>{this.setState({isFocusInContainer:r})},getIsFocusInContainer:()=>this.state.isFocusInContainer,updateScrollTop:r=>{let o;"renderOptionItem"in this.props?(o=`.${$}-option-custom-selected`,r!==void 0&&(o=`.${$}-option-custom:nth-child(${r+1})`)):(o=`.${$}-option-selected`,r!==void 0&&(o=`.${$}-option:nth-child(${r+1})`));let l=document.querySelector(`#${$}-${this.selectOptionListID} ${o}`);if(Array.isArray(l)&&(l=l[0]),l){const c=l.parentNode;c.scrollTop=l.offsetTop-c.offsetTop-c.clientHeight/2+l.clientHeight/2}}})}componentDidMount(){this.foundation.init(),this.selectOptionListID=jt(),this.selectID=this.props.id||jt()}componentWillUnmount(){this.foundation.destroy()}componentDidUpdate(e,t){const n=b.Children.toArray(e.children).map(o=>o.key),s=b.Children.toArray(this.props.children).map(o=>o.key);let r=!1;(!re(n,s)||!re(e.optionList,this.props.optionList))&&(r=!0,this.foundation.handleOptionListChange()),(!re(this.props.value,e.value)||r)&&("value"in this.props?this.foundation.handleValueChange(this.props.value):this.foundation.handleOptionListChangeHadDefaultValue())}renderTriggerInput(){const{size:e,multiple:t,disabled:n,inputProps:s,filter:r}=this.props,o=x(s,"className"),l=M(`${$}-input`,{[`${$}-input-single`]:!t,[`${$}-input-multiple`]:t},o),{inputValue:c,focusIndex:d}=this.state,u=Object.assign({value:c,disabled:n,className:l,onChange:this.handleInputChange},s);let h={};return t&&(h={width:c?`${c.length*16}px`:"2px"},u.style=h),b.createElement(fr,Object.assign({ref:this.inputRef,size:e,"aria-activedescendant":d!==-1?`${this.selectID}-option-${d}`:"",onFocus:g=>{t&&r&&this.setState({isFocus:!0}),g.stopPropagation()},onBlur:g=>this.foundation.handleInputBlur(g)},u))}renderDropdownInput(){const{size:e,multiple:t,disabled:n,inputProps:s,filter:r,searchPosition:o,searchPlaceholder:l}=this.props,{inputValue:c,focusIndex:d}=this.state,u=M(`${$}-dropdown-search-wrapper`,{}),h=x(s,"className"),g=M(`${$}-dropdown-input`,{[`${$}-dropdown-input-single`]:!t,[`${$}-dropdown-input-multiple`]:t},h),m=Object.assign(Object.assign({value:c,disabled:n,className:g,onChange:this.handleInputChange,placeholder:l,showClear:!0},s),{onKeyDown:y=>this.foundation._handleKeyDown(y)});return b.createElement("div",{className:u},b.createElement(fr,Object.assign({ref:this.dropdownInputRef,prefix:b.createElement(Il,null),"aria-activedescendant":d!==-1?`${this.selectID}-option-${d}`:""},m)))}close(){this.foundation.close()}open(){this.foundation.open()}clearInput(){this.foundation.clearInput()}selectAll(){this.foundation.selectAll()}deselectAll(){this.foundation.clearSelected()}focus(){this.foundation.focus()}rePosition(){let{optionKey:e}=this.state;e=e+1,this.setState({optionKey:e})}onSelect(e,t,n){this.foundation.onSelect(e,t,n)}onClear(e){e.nativeEvent.stopImmediatePropagation(),this.foundation.handleClearClick(e)}search(e,t){this.handleInputChange(e,t)}renderEmpty(){return b.createElement(He,{empty:!0,emptyContent:this.props.emptyContent})}renderLoading(){const e=`${$}-loading-wrapper`;return b.createElement("div",{className:e},b.createElement(mi,null))}renderOption(e,t,n){const{focusIndex:s,inputValue:r}=this.state,{renderOptionItem:o}=this.props;let l;const c=t===s;let d=n||{};return e.style&&(d=Object.assign(Object.assign({},d),e.style)),e._inputCreateOnly?l=this.renderCreateOption(e,c,t,n):("key"in e&&(e._keyInOptionList=e.key),l=b.createElement(He,Object.assign({showTick:!0},e,{selected:e._selected,onSelect:(u,h)=>this.onSelect(u,t,h),focused:c,onMouseEnter:()=>this.onOptionHover(t),style:d,key:e._keyInOptionList||e._keyInJsx||e.label+e.value+t,renderOptionItem:o,inputValue:r,semiOptionId:`${this.selectID}-option-${t}`}),e.label)),l}renderCreateOption(e,t,n,s){const{renderCreateItem:r}=this.props;if(typeof r>"u")return b.createElement(He,Object.assign({key:e.key||e.label+e.value,onSelect:(c,d)=>this.onSelect(c,n,d),onMouseEnter:()=>this.onOptionHover(n),showTick:!0},e,{focused:t,style:s}),b.createElement(Ee,{componentName:"Select"},c=>b.createElement(b.Fragment,null,b.createElement("span",{className:`${$}-create-tips`},c.createText),e.value)));const o=r(e.value,t,s);return b.createElement("div",{role:"button","aria-label":"Use the input box to create an optional item",onClick:l=>this.onSelect(e,n,l),key:e.key||e.label},o)}onOptionHover(e){this.foundation.handleOptionMouseEnter(e)}renderWithGroup(e){const t=[],n=new Map;return e.forEach((s,r)=>{const o=s._parentGroup,l=this.renderOption(s,r);if(o&&!n.has(o.label)){const c=typeof o.label=="string"||typeof o.label=="number"?o.label:o.key,d=b.createElement(nn,Object.assign({},o,{key:c}));n.set(o.label,!0),t.push(d)}t.push(l)}),t}renderVirtualizeList(e){const{virtualize:t}=this.props,{direction:n}=this.context,{height:s,width:r,itemSize:o}=t;return b.createElement(Oi,{ref:this.virtualizeListRef,height:s||Fi.LIST_HEIGHT,itemCount:e.length,itemSize:o,itemData:{visibleOptions:e,renderOption:this.renderOption},width:r||"100%",style:{direction:n}},Td)}renderOptions(e){const{dropdownMinWidth:t,options:n,selections:s}=this.state,{maxHeight:r,dropdownClassName:o,dropdownStyle:l,outerTopSlot:c,innerTopSlot:d,outerBottomSlot:u,innerBottomSlot:h,loading:g,virtualize:m,multiple:y,emptyContent:p,searchPosition:f,filter:S}=this.props,v=n.filter(E=>E._show);let w=this.renderWithGroup(v);m&&(w=this.renderVirtualizeList(v));const _=Object.assign({minWidth:t},l),O=M({[`${$}-option-list`]:!0,[`${$}-option-list-chosen`]:s.size}),I=!n.length||!n.some(E=>E._show);return b.createElement("div",{id:`${$}-${this.selectOptionListID}`,className:M({[`${$}-option-list-wrapper`]:!(I&&p===null)},o),style:_,ref:this.setOptionContainerEl,onKeyDown:E=>this.foundation.handleContainerKeyDown(E)},c?b.createElement("div",{className:`${$}-option-list-outer-top-slot`,onMouseEnter:()=>this.foundation.handleSlotMouseEnter()},c):null,f===_e.SEARCH_POSITION_DROPDOWN&&S?this.renderDropdownInput():null,b.createElement("div",{style:{maxHeight:`${r}px`},className:O,role:"listbox","aria-multiselectable":y,onScroll:E=>this.foundation.handleListScroll(E)},d?b.createElement("div",{className:`${$}-option-list-inner-top-slot`,onMouseEnter:()=>this.foundation.handleSlotMouseEnter()},d):null,g?this.renderLoading():I?this.renderEmpty():w,h?b.createElement("div",{className:`${$}-option-list-inner-bottom-slot`,onMouseEnter:()=>this.foundation.handleSlotMouseEnter()},h):null),u?b.createElement("div",{className:`${$}-option-list-outer-bottom-slot`,onMouseEnter:()=>this.foundation.handleSlotMouseEnter()},u):null)}renderSingleSelection(e,t){let{renderSelectedItem:n,searchPosition:s}=this.props;const{placeholder:r}=this.props,{showInput:o,inputValue:l}=this.state;let c="";const d=[...e];if(typeof n>"u"&&(n=m=>m.label),d.length){const m=d[0][1];c=n(m)}const u=s===_e.SEARCH_POSITION_TRIGGER,h=M({[`${$}-selection-text`]:!0,[`${$}-selection-placeholder`]:!c&&c!==0,[`${$}-selection-text-hide`]:l&&o&&u,[`${$}-selection-text-inactive`]:!l&&o&&u}),g=`${$}-content-wrapper`;return b.createElement(b.Fragment,null,b.createElement("div",{className:g},b.createElement("span",{className:h,"x-semi-prop":"placeholder"},c||c===0?c:r),t&&o&&u?this.renderTriggerInput():null))}renderTag(e,t,n){const{size:s,disabled:r}=this.props;let{renderSelectedItem:o}=this.props;const l=e[0],{value:c}=e[1],d=e[1].disabled||r,u=(p,f)=>{f&&typeof f.preventDefault=="function"&&f.preventDefault(),this.foundation.removeTag({label:l,value:c})};typeof o>"u"&&(o=p=>({isRenderInTag:!0,content:p.label}));const{content:h,isRenderInTag:g}=o(e[1],{index:t,disabled:d,onClose:u}),m={disabled:d,closable:!d,onClose:u},y=n&&!ue(this.props.renderSelectedItem)?b.createElement(Ba,{size:"small",ellipsis:{rows:1,showTooltip:{type:"popover",opts:{style:{width:"auto",fontSize:12}}}}},h):h;return g?b.createElement(mt,Object.assign({},m,{color:"white",size:s||"large",key:c,style:{maxWidth:"100%"}}),y):b.createElement(L.Fragment,{key:c},y)}renderNTag(e,t){const{size:n,showRestTagsPopover:s,restTagsPopoverProps:r}=this.props;let o=b.createElement(mt,{closable:!1,size:n||"large",color:"grey",className:`${$}-content-wrapper-collapse-tag`,key:`_+${e}`,style:{marginRight:0,flexShrink:0}},"+",e);return s&&(o=b.createElement(yt,Object.assign({showArrow:!0,content:b.createElement(Qt,{spacing:2,wrap:!0,style:{maxWidth:"400px"}},t.map((l,c)=>this.renderTag(l,c))),trigger:"hover",position:"top",autoAdjustOverflow:!0},r,{key:`_+${e}_Popover`}),o)),o}renderOverflow(e,t){return e.length&&e[0]?this.renderTag(e[0],t,!0):null}handleOverflow(e){const{overflowItemCount:t,selections:n}=this.state,{maxTagCount:s}=this.props,r=n.size-s>0?n.size-s+e.length-1:e.length-1;t!==r&&this.foundation.updateOverflowItemCount(n.size,r)}renderCollapsedTags(e,t){const{overflowItemCount:n}=this.state,s=typeof t=="number"?e.slice(0,t):e;return b.createElement("div",{className:`${$}-content-wrapper-collapse`},b.createElement(Qe,{items:s,itemKey:r=>{var o;return(o=r==null?void 0:r[1])===null||o===void 0?void 0:o.value},overflowRenderer:r=>this.renderOverflow(r,t-1),onOverflow:r=>this.handleOverflow(r),visibleItemRenderer:(r,o)=>this.renderTag(r,o)}),n>0&&this.renderNTag(n,e.slice(e.length-n)))}renderOneLineTags(e,t){let{renderSelectedItem:n}=this.props;const{showRestTagsPopover:s,restTagsPopoverProps:r,maxTagCount:o}=this.props,{isFullTags:l}=this.state;let c;if(typeof n>"u"&&(n=d=>({isRenderInTag:!0,content:d.label})),s){const u=(l?e:e.slice(0,o)).map((h,g)=>this.getTagItem(h,g,n));c=b.createElement(Ht,{tagList:u,maxTagCount:t,restCount:l?void 0:e.length-o,size:"large",mode:"custom",showPopover:s,popoverProps:r,onPlusNMouseEnter:()=>{this.foundation.updateIsFullTags()}})}else{const u=e.slice(0,o).map((h,g)=>this.getTagItem(h,g,n));c=b.createElement(Ht,{tagList:u,maxTagCount:t,restCount:e.length-o,size:"large",mode:"custom"})}return c}renderMultipleSelection(e,t){let{renderSelectedItem:n,searchPosition:s}=this.props;const{placeholder:r,maxTagCount:o,expandRestTagsOnClick:l,ellipsisTrigger:c}=this.props,{inputValue:d,isOpen:u}=this.state,h=[...e];typeof n>"u"&&(n=_=>({isRenderInTag:!0,content:_.label}));const g=M({[`${$}-content-wrapper`]:!0,[`${$}-content-wrapper-one-line`]:o&&!u,[`${$}-content-wrapper-empty`]:!h.length}),m=M({[`${$}-selection-text`]:!0,[`${$}-selection-placeholder`]:!h.length,[`${$}-selection-text-hide`]:h&&h.length}),y=r&&!d?b.createElement("span",{className:m},r):null,p=h.length>o?o:void 0,f=!o,S=c?this.renderCollapsedTags(h,p):this.renderOneLineTags(h,p),v=f||l&&u?h.map((_,O)=>this.renderTag(_,O)):S,w=t&&s===_e.SEARCH_POSITION_TRIGGER;return b.createElement(b.Fragment,null,b.createElement("div",{className:g},h&&h.length?v:y,w?this.renderTriggerInput():null))}onMouseEnter(e){this.foundation.handleMouseEnter(e)}onMouseLeave(e){this.foundation.handleMouseLeave(e)}onKeyPress(e){this.foundation.handleKeyPress(e)}handlePopoverVisibleChange(e){const{virtualize:t}=this.props,{selections:n}=this.state;if(e)if(t){let s=-1;if(n.forEach(r=>{const o=x(r,"_scrollIndex");gt(o)&&o>=0&&(s=s!==-1&&sthis.foundation.removeTag(Q),onClear:this.onClear,disabled:t,triggerRender:p,placeholder:y,componentName:"Select",componentProps:Object.assign({},this.props)}):[b.createElement(L.Fragment,{key:"prefix"},g||m?this.renderPrefix():null),b.createElement(L.Fragment,{key:"selection"},b.createElement("div",{className:M(`${$}-selection`)},n?this.renderMultipleSelection(_,K):this.renderSingleSelection(_,K))),b.createElement(L.Fragment,{key:"suffix"},h?this.renderSuffix():null),b.createElement(L.Fragment,{key:"clearicon"},q?b.createElement("div",{className:M(`${$}-clear`),onClick:this.onClear},W):V)],se=t||K&&P||K&&n?-1:0;return b.createElement("div",Object.assign({role:"combobox","aria-disabled":t,"aria-expanded":O,"aria-controls":`${$}-${this.selectOptionListID}`,"aria-haspopup":"listbox","aria-label":_.size?"selected":"","aria-invalid":this.props["aria-invalid"],"aria-errormessage":this.props["aria-errormessage"],"aria-labelledby":this.props["aria-labelledby"],"aria-describedby":this.props["aria-describedby"],"aria-required":this.props["aria-required"],className:z,ref:Q=>{this.triggerRef.current=Q},onClick:Q=>this.foundation.handleClick(Q),style:r,id:this.selectID,tabIndex:se,"aria-activedescendant":A!==-1?`${this.selectID}-option-${A}`:"",onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onFocus:Q=>this.foundation.handleTriggerFocus(Q),onBlur:Q=>this.foundation.handleTriggerBlur(Q),onKeyPress:this.onKeyPress},I,this.getDataAttr(w)),G)}render(){const{direction:e}=this.context,t=e==="rtl"?"bottomRight":"bottomLeft",{children:n,position:s=t,zIndex:r,getPopupContainer:o,motion:l,autoAdjustOverflow:c,mouseLeaveDelay:d,mouseEnterDelay:u,spacing:h,stopPropagation:g,dropdownMargin:m,rePosKey:y}=this.props,{isOpen:p,optionKey:f}=this.state,S=this.renderSelection(),v=y!==void 0?`${f}-${y}`:f;return b.createElement(yt,{getPopupContainer:o,motion:l,margin:m,autoAdjustOverflow:c,mouseLeaveDelay:d,mouseEnterDelay:u,zIndex:r,ref:this.optionsRef,content:()=>this.renderOptions(n),visible:p,trigger:"custom",rePosKey:v,position:s,spacing:h,stopPropagation:g,disableArrowKeyDown:!0,onVisibleChange:w=>this.handlePopoverVisibleChange(w),afterClose:()=>this.foundation.handlePopoverClose()},S)}}Te.contextType=Ls;Te.Option=He;Te.OptGroup=nn;Te.propTypes={"aria-describedby":a.string,"aria-errormessage":a.string,"aria-invalid":a.bool,"aria-labelledby":a.string,"aria-required":a.bool,autoFocus:a.bool,autoClearSearchValue:a.bool,borderless:a.bool,children:a.node,clearIcon:a.node,defaultValue:a.oneOfType([a.string,a.number,a.array,a.object]),ellipsisTrigger:a.bool,value:a.oneOfType([a.string,a.number,a.array,a.object]),placeholder:a.node,onChange:a.func,multiple:a.bool,filter:a.oneOfType([a.func,a.bool]),max:a.number,maxTagCount:a.number,maxHeight:a.oneOfType([a.string,a.number]),style:a.object,className:a.string,size:a.oneOf(_e.SIZE_SET),disabled:a.bool,emptyContent:a.node,expandRestTagsOnClick:a.bool,onDropdownVisibleChange:a.func,zIndex:a.number,position:a.oneOf(_e.POSITION_SET),onSearch:a.func,getPopupContainer:a.func,dropdownClassName:a.string,dropdownStyle:a.object,dropdownMargin:a.oneOfType([a.number,a.object]),outerTopSlot:a.node,innerTopSlot:a.node,inputProps:a.object,outerBottomSlot:a.node,innerBottomSlot:a.node,optionList:a.array,dropdownMatchSelectWidth:a.bool,loading:a.bool,defaultOpen:a.bool,validateStatus:a.oneOf(_e.STATUS),defaultActiveFirstOption:a.bool,triggerRender:a.func,stopPropagation:a.bool,searchPosition:a.string,motion:a.bool,onChangeWithObject:a.bool,suffix:a.node,prefix:a.node,insetLabel:a.node,insetLabelId:a.string,showClear:a.bool,showArrow:a.bool,renderSelectedItem:a.func,allowCreate:a.bool,renderCreateItem:a.func,onMouseEnter:a.func,onMouseLeave:a.func,clickToHide:a.bool,onExceed:a.func,onCreate:a.func,remote:a.bool,onDeselect:a.func,onSelect:a.func,autoAdjustOverflow:a.bool,mouseEnterDelay:a.number,mouseLeaveDelay:a.number,spacing:a.oneOfType([a.number,a.object]),rePosKey:a.oneOfType([a.string,a.number]),onBlur:a.func,onFocus:a.func,onClear:a.func,virtualize:a.object,renderOptionItem:a.func,onListScroll:a.func,arrowIcon:a.node,preventScroll:a.bool};Te.__SemiComponentName__="Select";Te.defaultProps=ks(Te.__SemiComponentName__,{stopPropagation:!0,motion:!0,borderless:!1,zIndex:ci.DEFAULT_Z_INDEX,filter:!1,multiple:!1,disabled:!1,defaultOpen:!1,allowCreate:!1,placeholder:"",onDropdownVisibleChange:H,onChangeWithObject:!1,onChange:H,onSearch:H,onMouseEnter:H,onMouseLeave:H,onDeselect:H,onSelect:H,onCreate:H,onExceed:H,onFocus:H,onBlur:H,onClear:H,onListScroll:H,maxHeight:Fi.LIST_HEIGHT,dropdownMatchSelectWidth:!0,defaultActiveFirstOption:!0,showArrow:!0,showClear:!1,searchPosition:_e.SEARCH_POSITION_TRIGGER,remote:!1,autoAdjustOverflow:!0,autoClearSearchValue:!0,arrowIcon:b.createElement(Ms,{"aria-label":""}),showRestTagsPopover:!1,restTagsPopoverProps:{},expandRestTagsOnClick:!1,ellipsisTrigger:!1});var oo=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);so+1):[]},this.foundation=new _d(this.adapter),this.renderDefaultPage=this.renderDefaultPage.bind(this),this.renderSmallPage=this.renderSmallPage.bind(this),$e(!!(e.showSizeChanger&&e.hideOnSinglePage),"[Semi Pagination] You should not use showSizeChanger and hideOnSinglePage in ths same time. At this time, hideOnSinglePage no longer takes effect, otherwise there may be a problem that the switch entry disappears")}get adapter(){return Object.assign(Object.assign({},super.adapter),{setPageList:e=>{const{pageList:t,restLeftPageList:n,restRightPageList:s}=e;this.setState({pageList:t,restLeftPageList:n,restRightPageList:s})},setDisabled:(e,t)=>{this.setState({prevDisabled:e,nextDisabled:t})},updateTotal:e=>this.setState({total:e}),updatePageSize:e=>this.setState({pageSize:e}),updateQuickJumpPage:e=>this.setState({quickJumpPage:e}),updateAllPageNumbers:e=>this.setState({allPageNumbers:e}),setCurrentPage:e=>{this.setState({currentPage:e})},registerKeyDownHandler:e=>{document.addEventListener("keydown",e)},unregisterKeyDownHandler:e=>{document.removeEventListener("keydown",e)},notifyPageChange:e=>{this.props.onPageChange(e)},notifyPageSizeChange:e=>{this.props.onPageSizeChange(e)},notifyChange:(e,t)=>{this.props.onChange(e,t)}})}componentDidMount(){this.foundation.init()}componentWillUnmount(){this.foundation.destroy()}componentDidUpdate(e){const t={currentPage:this.props.currentPage,total:this.props.total,pageSize:this.props.pageSize};let n=!1,s=!1;e.currentPage!==this.props.currentPage&&(n=!0),e.total!==this.props.total&&(n=!0,s=!0),e.pageSize!==this.props.pageSize&&(n=!0,s=!0),n&&this.foundation.updatePage(t.currentPage,t.total,t.pageSize),s&&this.foundation.updateAllPageNumbers(t.total,t.pageSize)}renderPrevBtn(){const{prevText:e,disabled:t}=this.props,{prevDisabled:n}=this.state,s=n||t,r=M({[`${Z}-item`]:!0,[`${Z}-prev`]:!0,[`${Z}-item-disabled`]:s});return b.createElement("li",{role:"button","aria-disabled":!!s,"aria-label":"Previous",onClick:o=>!s&&this.foundation.goPrev(o),className:r,"x-semi-prop":"prevText"},e||b.createElement(bi,{size:"large"}))}renderNextBtn(){const{nextText:e,disabled:t}=this.props,{nextDisabled:n}=this.state,s=n||t,r=M({[`${Z}-item`]:!0,[`${Z}-item-disabled`]:s,[`${Z}-next`]:!0});return b.createElement("li",{role:"button","aria-disabled":!!s,"aria-label":"Next",onClick:o=>!s&&this.foundation.goNext(o),className:r,"x-semi-prop":"nextText"},e||b.createElement(js,{size:"large"}))}renderPageSizeSwitch(e){const{direction:t}=this.context,n=t==="rtl"?"bottomRight":"bottomLeft",{showSizeChanger:s,popoverPosition:r=n,disabled:o,popoverZIndex:l}=this.props,{pageSize:c}=this.state,d=M(`${Z}-switch`);if(!s)return null;const u=this.foundation.pageSizeInOpts(),h=e.pageSize,g=u.map(m=>b.createElement(Nd,{value:m,key:m},b.createElement("span",null,h.replace("${pageSize}",m.toString()))));return b.createElement("div",{className:d},b.createElement(Te,{"aria-label":"Page size selector",disabled:o,onChange:m=>this.foundation.changePageSize(m),value:c,key:c+h,position:r||"bottomRight",clickToHide:!0,zIndex:l,dropdownClassName:`${Z}-select-dropdown`},g))}renderQuickJump(e){const{showQuickJumper:t,disabled:n}=this.props,{quickJumpPage:s,total:r,pageSize:o}=this.state;if(!t)return null;const c=this.foundation._getTotalPageNumber(r,o)===1||n,d=M({[`${Z}-quickjump`]:!0,[`${Z}-quickjump-disabled`]:c});return b.createElement("div",{className:d},b.createElement("span",null,e.jumpTo),b.createElement(cl,{value:s,className:`${Z}-quickjump-input-number`,hideButtons:!0,disabled:c,onBlur:u=>this.foundation.handleQuickJumpBlur(),onEnterPress:u=>this.foundation.handleQuickJumpEnterPress(u.target.value),onChange:u=>this.foundation.handleQuickJumpNumberChange(u)}),b.createElement("span",null,e.page))}renderPageList(){const{pageList:e,currentPage:t,restLeftPageList:n,restRightPageList:s}=this.state,{popoverPosition:r,popoverZIndex:o,disabled:l}=this.props;return e.map((c,d)=>{const u=M(`${Z}-item`,{[`${Z}-item-active`]:t===c,[`${Z}-item-all-disabled`]:l,[`${Z}-item-all-disabled-active`]:t===c&&l}),h=b.createElement("li",{key:`${c}${d}`,onClick:()=>!l&&this.foundation.goPage(c,d),className:u,"aria-label":c==="..."?"More":`Page ${c}`,"aria-current":t===c?"page":!1},c);if(c==="..."&&!l){let g;return d<3?g=n:g=s,b.createElement(yt,{rePosKey:this.props.currentPage,trigger:"hover",content:this.renderRestPageList(g),key:`${c}${d}`,position:r,zIndex:o},h)}return h})}renderRestPageList(e){const{direction:t}=this.context,n=M(`${Z}-rest-item`),s=e.length,r=c=>{const{index:d,style:u}=c,h=e[d];return b.createElement("div",{role:"listitem",key:`${h}${d}`,className:n,onClick:()=>this.foundation.goPage(h,d),style:u,"aria-label":`${h}`},h)},o=32,l=s>=5?o*5:o*s;return b.createElement(Oi,{className:`${Z}-rest-list`,itemData:e,itemSize:o,width:78,itemCount:s,height:l,style:{direction:t}},r)}renderSmallPageSelect(e){const t=this.state.allPageNumbers,n=this.renderRestPageList(t);return b.createElement(yt,{content:n},e)}renderSmallPage(e){const t=this.props,{className:n,style:s,hideOnSinglePage:r,hoverShowPageSelect:o,showSizeChanger:l,disabled:c}=t,d=oo(t,["className","style","hideOnSinglePage","hoverShowPageSelect","showSizeChanger","disabled"]),u=M(`${Z}-small`,Z,n,{[`${Z}-disabled`]:c}),{currentPage:h,total:g,pageSize:m}=this.state,y=Math.ceil(g/m);if(y<2&&r&&!l)return null;const p=M({[`${Z}-item`]:!0,[`${Z}-item-small`]:!0,[`${Z}-item-all-disabled`]:c}),f=b.createElement("div",{className:p},h,"/",y," ");return b.createElement("div",Object.assign({className:u,style:s},this.getDataAttr(d)),this.renderPrevBtn(),o&&!c?this.renderSmallPageSelect(f):f,this.renderNextBtn(),this.renderQuickJump(e))}renderDefaultPage(e){const{total:t,pageSize:n}=this.state,s=this.props,{showTotal:r,className:o,style:l,hideOnSinglePage:c,showSizeChanger:d,disabled:u}=s,h=oo(s,["showTotal","className","style","hideOnSinglePage","showSizeChanger","disabled"]),g=M(o,`${Z}`,{[`${Z}-disabled`]:u}),m=`${Z}-total`;if(Math.ceil(t/n)<2&&c&&!d)return null;const p=Math.ceil(t/n),f=e.total.replace("${total}",p.toString());return b.createElement("ul",Object.assign({className:g,style:l},this.getDataAttr(h)),r?b.createElement("span",{className:m},f):null,this.renderPrevBtn(),this.renderPageList(),this.renderNextBtn(),this.renderPageSizeSwitch(e),this.renderQuickJump(e))}render(){const{size:e}=this.props;return b.createElement(Ee,{componentName:"Pagination"},t=>e==="small"?this.renderSmallPage(t):this.renderDefaultPage(t))}}sn.contextType=Ls;sn.propTypes={total:a.number,showTotal:a.bool,pageSize:a.number,pageSizeOpts:a.array,size:a.string,currentPage:a.number,defaultCurrentPage:a.number,onPageChange:a.func,onPageSizeChange:a.func,onChange:a.func,prevText:a.node,nextText:a.node,showSizeChanger:a.bool,popoverZIndex:a.number,popoverPosition:a.string,style:a.object,className:a.string,hideOnSinglePage:a.bool,hoverShowPageSelect:a.bool,showQuickJumper:a.bool,disabled:a.bool,preventPageChangeOnPageSizeChange:a.bool};sn.defaultProps={total:1,popoverZIndex:ci.DEFAULT_Z_INDEX,showTotal:!1,pageSize:null,pageSizeOpts:Vs.PAGE_SIZE_OPTION,defaultCurrentPage:1,size:"default",onPageChange:H,onPageSizeChange:H,onChange:H,showSizeChanger:!1,className:"",hideOnSinglePage:!1,showQuickJumper:!1,disabled:!1,preventPageChangeOnPageSizeChange:!1};var Gn,io;function kd(){if(io)return Gn;io=1;var i=Jo(),e=1/0;function t(n){var s=n==null?0:n.length;return s?i(n,e):[]}return Gn=t,Gn}var Ld=kd();const Md=te(Ld);var Yn,ao;function jd(){if(ao)return Yn;ao=1;var i=Ds();function e(t,n){var s;return i(t,function(r,o,l){return s=n(r,o,l),!s}),!!s}return Yn=e,Yn}var Xn,lo;function zd(){if(lo)return Xn;lo=1;var i=Ha(),e=nt(),t=jd(),n=_t(),s=Ns();function r(o,l,c){var d=n(o)?i:t;return c&&s(o,l,c)&&(l=void 0),d(o,e(l,3))}return Xn=r,Xn}var Fd=zd();const Nt=te(Fd);var Zn,co;function Kd(){if(co)return Zn;co=1;var i=Ds();function e(t,n){var s=[];return i(t,function(r,o,l){n(r,o,l)&&s.push(r)}),s}return Zn=e,Zn}var Qn,uo;function $d(){if(uo)return Qn;uo=1;var i=Wa(),e=Kd(),t=nt(),n=_t();function s(r,o){var l=n(r)?i:e;return l(r,t(o,3))}return Qn=s,Qn}var Bd=$d();const Je=te(Bd);var Jn,ho;function Hd(){if(ho)return Jn;ho=1;var i=As();function e(t,n,s){s=typeof s=="function"?s:void 0;var r=s?s(t,n):void 0;return r===void 0?i(t,n,void 0,s):!!r}return Jn=e,Jn}var Wd=Hd();const Ud=te(Wd),ce={PREFIX:`${X}-table`},B={SIZE_SMALL:"small",SIZE_MIDDLE:"middle",SIZES:["small","default","middle"],LAYOUTS:["","auto","fixed"],PAGINATION_POSITIONS:["bottom","top","both"],SORT_DIRECTIONS:["ascend","descend"],FIXED_SET:[!1,!0,"left","right"],ALIGNS:["left","right","center"],DEFAULT_KEY_COLUMN_SELECTION:"column-selection",DEFAULT_KEY_COLUMN_EXPAND:"column-expand",DEFAULT_KEY_COLUMN_TITLE:"column-title",DEFAULT_KEY_COLUMN_SORTER:"column-sorter",DEFAULT_KEY_COLUMN_FILTER:"column-filter",DEFAULT_KEY_COLUMN_SCROLLBAR:"column-scrollbar",DEFAULT_COMPONENTS:{body:{cell:"td"}},EXPAND_RELATED_PROPS:["expandedRowRender","dataSource","hideExpandedColumn","childrenRecordName","rowExpandable"]},st=1,Gs=0,$i=16,Bi=16,Hi=12,Wi=12,Ui=8,Vi=8,Ys=20,po=Ys+st+Gs+$i+Bi,Vd=$i+Bi+st,fo=Ys+st+Gs+Hi+Wi,qd=Hi+Wi+st,go=Ys+st+Gs+Vi+Ui,Gd=Ui+Vi+st,ne={DEFAULT_PAGE_SIZE:10,DEFAULT_WIDTH_COLUMN_EXPAND:60,DEFAULT_WIDTH_COLUMN_SELECTION:60,DEFAULT_INDENT_WIDTH:20,DEFAULT_CELL_PADDING_LEFT:16,DEFAULT_CELL_PADDING_RIGHT:16,DEFAULT_CELL_BORDER_WIDTH_LEFT:1,DEFAULT_CELL_BORDER_WIDTH_RIGHT:1,DEFAULT_VIRTUALIZED_SECTION_ROW_HEIGHT:po,DEFAULT_VIRTUALIZED_ROW_HEIGHT:po,DEFAULT_VIRTUALIZED_ROW_MIN_HEIGHT:Vd,DEFAULT_VIRTUALIZED_SECTION_ROW_MIDDLE_HEIGHT:fo,DEFAULT_VIRTUALIZED_ROW_MIDDLE_HEIGHT:fo,DEFAULT_VIRTUALIZED_ROW_MIDDLE_MIN_HEIGHT:qd,DEFAULT_VIRTUALIZED_SECTION_ROW_SMALL_HEIGHT:go,DEFAULT_VIRTUALIZED_ROW_SMALL_HEIGHT:go,DEFAULT_VIRTUALIZED_ROW_SMALL_MIN_HEIGHT:Gd};class qi{constructor(e){this._prefix=e}_isEmpty(e){return e==null||e===""}_baseLog(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"log";if(typeof console[e]=="function"){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s{if(t=x(i,n),t!=null)return!1}),t}function et(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2?arguments[2]:void 0;e=e<0||typeof e!="number"?0:e,t=t>i.length||typeof t!="number"?i.length:t;let n=0;return le(i,(s,r)=>{r>=e&&r2&&arguments[2]!==void 0?arguments[2]:["key"];const n=Je(i,r=>r.fixed===!0||r.fixed==="left"),s=Ze(n,r=>t.every(o=>r[o]!=null&&r[o]===e[o]));return n.length>0&&s===n.length-1}function xs(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:["key"];const n=Je(i,r=>r.fixed==="right"),s=Ze(n,r=>t.every(o=>r[o]!=null&&r[o]===e[o]));return n.length>0&&s===0}function kt(i){return["left",!0].includes(x(i,"fixed"))}function Lt(i){return["right"].includes(x(i,"fixed"))}function Xd(i){return[B.DEFAULT_KEY_COLUMN_EXPAND,B.DEFAULT_KEY_COLUMN_SCROLLBAR,B.DEFAULT_KEY_COLUMN_SELECTION].includes(i)}function Gi(i){return x(i,"key")===B.DEFAULT_KEY_COLUMN_EXPAND}function Zd(i){return x(i,"key")===B.DEFAULT_KEY_COLUMN_SCROLLBAR}function Qd(i){return x(i,"key")===B.DEFAULT_KEY_COLUMN_SELECTION}function Xs(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[B.DEFAULT_KEY_COLUMN_SCROLLBAR];return Je(i,t=>!e.includes(t.key))}function De(i,e){return e===void 0&&(e="key"),typeof e=="function"?e(i):x(i,e)}function es(i,e){return e!=null&&Kt(i,e)}function Jd(i,e){return e!==null&&i.has(e)}function eu(i,e){return e!==null&&i.has(e)}function bo(i,e,t){return t===void 0&&(t="key"),We(i,n=>e!=null&&e!==""&&De(n,t)===e)}function tu(i,e){return e===void 0&&(e="children"),x(i,e)}function Yi(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;return e===void 0&&(e="__expanded_row"),i+e}function nu(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const t={};return i==="small"?(t.height=e?ne.DEFAULT_VIRTUALIZED_SECTION_ROW_SMALL_HEIGHT:ne.DEFAULT_VIRTUALIZED_ROW_SMALL_HEIGHT,t.minHeight=ne.DEFAULT_VIRTUALIZED_ROW_SMALL_MIN_HEIGHT):i==="middle"?(t.height=e?ne.DEFAULT_VIRTUALIZED_SECTION_ROW_MIDDLE_HEIGHT:ne.DEFAULT_VIRTUALIZED_ROW_MIDDLE_HEIGHT,t.minHeight=ne.DEFAULT_VIRTUALIZED_ROW_MIDDLE_MIN_HEIGHT):(t.height=e?ne.DEFAULT_VIRTUALIZED_SECTION_ROW_HEIGHT:ne.DEFAULT_VIRTUALIZED_ROW_HEIGHT,t.minHeight=ne.DEFAULT_VIRTUALIZED_ROW_MIN_HEIGHT),t}function Ye(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"children";const t=[];if(Array.isArray(i)&&i.length)for(const n of i)Array.isArray(n[e])&&n[e].length?t.push(...Ye(n[e],e)):(ou(n),t.push(n));return t}function Wt(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"children",t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;const n=[];return le(i,(s,r)=>{if(s.key==null){const o=s.dataIndex||r;s.key=`${t}-${o}`}Array.isArray(s[e])&&s[e].length&&n.push(...s[e])}),n.length&&Wt(n,e,t+1),i}function Xi(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"children",n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;const s=[];return Array.isArray(i)&&i.length&&n<=e&&i.forEach(r=>{const o=r[t];Array.isArray(o)&&o.length&&n2&&arguments[2]!==void 0?arguments[2]:"children",n;return le(i,s=>{if(s&&s.key!=null&&!n&&s.key===e.key&&(n=s),s&&Array.isArray(s[t])&&!n&&(n=Mt(s[t],e,t)),n)return!1}),n}function su(i){const{expandedRowRender:e,dataSource:t,hideExpandedColumn:n,childrenRecordName:s,rowExpandable:r}=i,o=typeof e=="function";return n&&o||!o&&t.some(l=>{const c=x(l,s);return!!(Array.isArray(c)&&c.length||r(l))})}function Zi(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t;const n=e.findIndex(s=>i.dataIndex===s.dataIndex?(t=Object.assign(Object.assign({},s),i),!0):!1);return n>-1?e.splice(n,1,t):e.push(t),[...e]}function ru(i,e){const t=[...e];for(const n of i)if(!Xt(n.width)){const s=n.key,r=Ze(t,o=>o.key===s);r!==-1&&(t[r].width=x(n,"width"))}return t}function Qi(i){let{dataSource:e,getCheckboxProps:t,childrenRecordName:n,rowKey:s}=i;const r=[];if(Array.isArray(e)&&e.length&&typeof t=="function")for(const o of e){const l=t(o),c=typeof s=="function"?s(o):x(o,s);l&&l.disabled&&r.push(c);const d=x(o,n);if(Array.isArray(d)&&d.length){const u=Qi({dataSource:d,getCheckboxProps:t});r.push(...u)}}return r}function ou(i){if(typeof i=="object"&&i!==null){const{filters:e,sorter:t,dataIndex:n,onFilter:s}=i,r=new qi("[@douyinfe/semi-ui Table]");(Array.isArray(e)||ue(s)||ue(t))&&Xt(n)&&r.warn("The column with sorter or filter must pass the 'dataIndex' prop")}}function iu(i){let{dataSource:e,childrenRecordName:t="children"}=i,n=!1;if(Array.isArray(e))for(const s of e){const r=x(s,t);if(Array.isArray(r)&&r.length){n=!0;break}}return n}function Ji(i,e){if(e==="rtl")switch(i){case"left":return"right";case"right":return"left";default:return i}return i}function au(i,e){if(e==="rtl")switch(i){case"left":return"flex-end";case"right":return"flex-start";default:return i}else switch(i){case"left":return"flex-start";case"right":return"flex-end";default:return i}}function Zs(i){return i===!0||x(i,"showTitle",!0)}class lu{constructor(e){this._state=Object.assign({},e),this._listeners=[]}subscribe(e){return this._listeners.push(e),()=>{const n=this._listeners.indexOf(e);n>-1&&this._listeners.splice(n,1)}}setState(e){Object.assign(this._state,Object.assign({},e));for(const t of this._listeners)typeof t=="function"&&t(this._state)}getState(){return this._state}}var cu=Ua();const wt=te(cu);var ts,yo;function du(){if(yo)return ts;yo=1;function i(e,t,n,s){for(var r=n-1,o=e.length;++r-1;)p!==c&&o.call(p,f,1),o.call(c,f,1);return c}return ns=l,ns}var ss,wo;function hu(){if(wo)return ss;wo=1;var i=uu();function e(t,n){return t&&t.length&&n&&n.length?i(t,n):t}return ss=e,ss}var rs,vo;function pu(){if(vo)return rs;vo=1;var i=ei(),e=hu(),t=i(e);return rs=t,rs}var fu=pu();const gu=te(fu);function mu(i){return new Set(i)}function bu(i,e){if(i===e&&(e=mu(e)),Pe(i)&&i.size&&Pe(e)&&e.size){for(const t of e)i.has(t)&&i.delete(t);return i}return i}function Co(i,e){if(i!==null&&i.length&&e!==null&&e.length){const t=new Set(i),n=new Set(e),s=bu(t,n);return Array.from(s)}return i}function yu(i){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ascend";switch(e){case"descend":return(t,n)=>{const s=Number(i(t,n,e));return s!==0?-s:s};case"ascend":default:return(t,n)=>i(t,n,e)}}class vt extends ge{static initColumnsFilteredValueAndSorterOrder(e){return e.forEach(t=>{vt.initFilteredValue(t),vt.initSorterOrder(t)}),e}static initFilteredValue(e){const{defaultFilteredValue:t,filteredValue:n}=e;ft(n)&&(Array.isArray(t)&&t.length?e.filteredValue=t:e.filteredValue=[])}static initSorterOrder(e){const{defaultSortOrder:t,sortOrder:n,sorter:s}=e;s&&ft(n)&&(ft(t)?e.sortOrder=!1:e.sortOrder=t)}constructor(e){super(Object.assign({},e)),this.setPage=(s,r)=>{s=s||this._adapter.getCurrentPage();const o=this.getState("pagination"),{dataSource:l,pagination:c,disabledRowKeys:d,allRowKeys:u}=this.getCurrentPageData(null,Object.assign(Object.assign({},o),{currentPage:s,pageSize:r}));!this._pagerIsControlled()&&s>0&&(this._adapter.setDisabledRowKeys(d),this._adapter.setAllRowKeys(u),this._adapter.setPagination(c),this._adapter.setDataSource(l)),this._notifyChange(c,void 0,void 0,{changeType:"pagination"})},this.setCachedFilteredSortedDataSource=s=>{this._adapter.setCachedFilteredSortedDataSource(s);const r=this.getAllRowKeys(s);this._adapter.setCachedFilteredSortedRowKeys(r)},this.handleMouseDown=s=>{var r,o;this.mouseDownTarget={targetName:(r=s.target)===null||r===void 0?void 0:r.tagName,className:(o=s.target)===null||o===void 0?void 0:o.className}},this.isSortOrderValid=s=>B.SORT_DIRECTIONS.includes(s)||s===!1;const t=this._adapter.getHandleColumns(),n=this._adapter.getMergePagination();this.mouseDownTarget=null,this.memoizedWithFnsColumns=Ke(t,re),this.memoizedFilterColumns=Ke(Xs),this.memoizedFlattenFnsColumns=Ke(Ye),this.memoizedPagination=Ke(n,re)}init(){const e=[...this.getProp("dataSource")],{queries:t}=this._adapter.getStates(),n=this.getFilteredSortedDataSource(e,t),s=this.getAllDisabledRowKeys(n),r=this.getCurrentPageData(n);this.setAdapterPageData(r),this.initExpandedRowKeys(r),this.initSelectedRowKeys(r),this.setCachedFilteredSortedDataSource(n),this.setAllDisabledRowKeys(s)}initExpandedRowKeys(){let{groups:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{defaultExpandAllRows:t,defaultExpandedRowKeys:n=[],expandedRowKeys:s=[],dataSource:r=[],expandAllRows:o,defaultExpandAllGroupRows:l,expandAllGroupRows:c}=this.getProps(),d=[];t||o?this._addNoDuplicatedItemsToArr(d,this.getAllRowKeys(r),e&&wt(e)&&e.size?Array.from(e.keys()):[]):l||c?this._addNoDuplicatedItemsToArr(d,s,e&&wt(e)&&e.size?Array.from(e.keys()):[]):Array.isArray(n)&&n.length?this._addNoDuplicatedItemsToArr(d,n):Array.isArray(s)&&s.length&&this._addNoDuplicatedItemsToArr(d,s),this._adapter.setExpandedRowKeys(d)}initSelectedRowKeys(e){let{disabledRowKeys:t}=e;const n=this.getProp("rowSelection"),s=[];if(n){const r=x(n,"selectedRowKeys"),o=x(n,"defaultSelectedRowKeys");Array.isArray(r)?this._addNoDuplicatedItemsToArr(s,r):Array.isArray(o)&&this._addNoDuplicatedItemsToArr(s,o),Array.isArray(t)&&t.length&&gu(s,...t),this._adapter.setSelectedRowKeys(s)}}getFilteredSortedDataSource(e,t){const n=this.filterDataSource(e,t.filter(r=>{const o=r.filteredValue?r.filteredValue:r.defaultFilteredValue;return ue(r.onFilter)&&Array.isArray(o)&&o.length}));return this.sortDataSource(n,t.filter(r=>r&&ue(r.sorter)))}getCurrentPageData(e,t,n){const s=this._adapter.getCachedFilteredSortedDataSource();e=e??[...s],t=t??(this.getState("pagination")&&Object.assign({},this.getState("pagination"))),n=n??[...this.getState("queries")];let r;if(this.getProp("groupBy")!=null){const{groups:d,dataSource:u}=this.groupDataSource(e);e=u,r=d}t=this.normalizePagination(t,e),e=this.limitPageDataSource(e,t);const o=this.getAllDisabledRowKeys(e),l=this.getAllRowKeys(e);return{dataSource:e,groups:r,pagination:t,disabledRowKeys:o,allRowKeys:l,queries:n}}groupDataSource(e,t){t=t??this.getProp("groupBy");const n=new Map,s=[];return t!=null&&le(e,(r,o)=>{const l=typeof t=="function"?t(r):x(r,t);if(l!=null&&l!==""){const c=this.getRecordKey(r);let d=n.get(l);Pe(d)?d.add(c):(d=new Set([c]),n.set(l,d))}}),n&&n.size?n.forEach((r,o)=>{Pe(r)&&r.forEach(l=>{s.push(this._getRecord(l))})}):s.push(...e),{groups:n,dataSource:s}}sortDataSource(e,t){return le(t,n=>{const{sorter:s,sortOrder:r,defaultSortOrder:o,sortChildrenRecord:l}=n,c=this.isSortOrderValid(r)?r:o;if(ue(s)&&c&&B.SORT_DIRECTIONS.includes(c)){if(l){const d=this.getProp("childrenRecordName");e=e&&e.map(u=>{const h=this._getRecordChildren(u);return Array.isArray(h)&&h.length?Object.assign(Object.assign({},u),{[d]:this.sortDataSource(h,[n])}):u})}return e.sort(yu(s,c)),!1}}),e}filterDataSource(e,t){let n=null,s=!1;const r=this.getProp("childrenRecordName");return le(t,o=>{const{onFilter:l,filteredValue:c,filterChildrenRecord:d,defaultFilteredValue:u}=o,h=Array.isArray(c)?c:u;typeof l=="function"&&Array.isArray(h)&&h.length&&(s=!0,n===null?n=new Map:(e=Array.from(n&&n.values()),n=new Map),le(e,g=>{le(h,m=>{const y=x(g,r),p=this.getRecordKey(g);let f;if(Array.isArray(y)&&y.length&&d&&(f=this.filterDataSource(y,[o])),Array.isArray(f)&&f.length){if(p!=null){const S=x(n.get(p),r,[]);n.set(p,Object.assign(Object.assign({},g),{[r]:f.reduce((v,w)=>(v.find(_=>this.getRecordKey(_)===this.getRecordKey(w))==null&&v.push(w),v),[...S])}))}}else l(m,g)&&n.set(p,g)})}))}),s&&(e=Array.from(n&&n.values())),e}limitPageDataSource(e,t){e=e??this.getProp("dataSource"),t=t??this.getState("pagination");let n=e;const s=x(t,"currentPage");if(this.getProp("pagination")!==!1&&s&&e&&t&&!this._pagerIsControlled()){const{pageSize:r=ne.DEFAULT_PAGE_SIZE}=t,o=(s-1)*r,l=s*r;n=gd(e,o,l)}return n}normalizePagination(e,t){e=e??this._getPagination(),t=t??this._getDataSource();const n=this.getProp("pagination");if(e&&(e=typeof e=="object"?Object.assign({},e):{},e=Zt({total:t&&t.length||0,pageSize:ne.DEFAULT_PAGE_SIZE,currentPage:x(n,"defaultCurrentPage",1),position:B.PAGINATION_POSITIONS[0]},e),!this._pagerIsControlled())){const s=x(n,"total",t.length),{currentPage:r,pageSize:o}=e,l=Math.ceil(s/o);e.total=s,r>l&&(e.currentPage=1)}return e}setAdapterPageData(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{pagination:t,dataSource:n,disabledRowKeys:s,allRowKeys:r,groups:o}=e;this._adapter.setDisabledRowKeys(s),this._adapter.setAllRowKeys(r),this._adapter.setPagination(t),this._adapter.setGroups(o),this._adapter.setDataSource(n)}destroy(){}setAllDisabledRowKeys(e){this._adapter.setAllDisabledRowKeys(e)}handleClick(e){}handleMouseEnter(e){}handleMouseLeave(e){}stopPropagation(e){this._adapter.stopPropagation(e)}_addNoDuplicatedItemsToArr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;se!=null&&e!==""&&this.getRecordKey(t)===e)}_getRecordChildren(e){return x(e,this.getProp("childrenRecordName"))}_getPagination(){return this.getState("pagination")||{}}_getAllFilters(e){e=e||this.getState("queries");const t=[];return le(e,n=>{Array.isArray(n.filteredValue)&&(n.filteredValue.length||this._filterIsControlled(n.dataIndex))&&t.push(n)}),t}_getAllSorters(e){return e=e||this.getState("queries"),Je(e,t=>t.sorter&&t.sortOrder)}_filterQueries(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:["dataIndex"];t=t??this.getState("queries");const s=[],r=[];return le(t,(o,l)=>{Nt(n,d=>d&&e[d]!=null&&e[d]===o[d])&&(s.push(o),r.push(l))}),{filteredQueries:s,filteredIndexes:r}}_mergeToQueries(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:["dataIndex"];t=t??this.getState("queries"),t=[...t],e=Object.assign({},e);const{filteredQueries:s,filteredIndexes:r}=this._filterQueries(e,t,n);return le(s,(o,l)=>{t[r[l]]=Object.assign({},e)}),t}getRecordKey(e){if(!e)return;const t=this.getProp("rowKey");return typeof t=="function"?t(e):x(e,t)}isEmpty(e){return e=e??this.getProp("dataSource"),!(Array.isArray(e)&&e.length>0)}buildKeyEntities(e){e=e??this._getDataSource();const t=this.getProp("childrenRecordName"),n=this.getProp("rowKey"),s=l=>l.map(c=>{const d=typeof n=="function"?n(c):x(c,n),u=x(c,t),h=Object.assign({key:d},c);return Array.isArray(u)&&u.length&&(h.children=s(u)),h}),r=s(e),{keyEntities:o}=rc(r,{key:"key",children:"children"});return o}calcCheckedKeysForSelect(e,t,n,s){const r=this._adapter.getKeyEntities(),o=String(e);return!r||!r[o]?(t?n.add(o):n.delete(o),{checkedKeys:n,halfCheckedKeys:s}):t?Tr(o,r,n,s):Ir(o,r,n,s)}handleSelectRow(e,t,n){if(this.stopPropagation(n),typeof t=="boolean"&&e!=null){const s=this._adapter.getCheckRelation(),r=this._getSelectedRowKeys(),o=[...this._adapter.getHalfCheckedRowKeys()||[]];let l=-1;const c=this.getSelectedRows(null,[e])[0];let d;if(s==="related"){this._adapter.getKeyEntities();const u=new Set(r.map(f=>String(f))),h=new Set(o.map(f=>String(f))),{checkedKeys:g,halfCheckedKeys:m}=this.calcCheckedKeysForSelect(String(e),t,u,h),y=[...g],p=[...m];d=this.getSelectedRows(null,y),this._adapter.setHalfCheckedRowKeys(p),this._selectionIsControlled()||this._adapter.setSelectedRowKeys(y),this._adapter.notifySelect(c,t,d,n),this._adapter.notifySelectionChange(y,d)}else(l=r.indexOf(e))>-1&&t===!1?(r.splice(l,1),d=this.getSelectedRows(null,r),this._selectionIsControlled()||this._adapter.setSelectedRowKeys(r),this._adapter.notifySelect(c,t,d,n),this._adapter.notifySelectionChange(r,d)):r.indexOf(e)===-1&&t===!0&&(r.push(e),d=this.getSelectedRows(null,r),this._selectionIsControlled()||this._adapter.setSelectedRowKeys(r),this._adapter.notifySelect(c,t,d,n),this._adapter.notifySelectionChange(r,d))}}handleSelectAllRow(e,t){if(this.stopPropagation(t),typeof e=="boolean"){const n=this._adapter.getCheckRelation(),s=this._getSelectedRowKeys();let r=[...s];const o=this._getSelectedRowKeysSet();let l=[...this._adapter.getCachedFilteredSortedRowKeys()];const c=this._adapter.getAllDisabledRowKeys(),d=this._adapter.getAllDisabledRowKeysSet();let u;if(n==="related"){const h=this._adapter.getKeyEntities(),g=[...this._adapter.getHalfCheckedRowKeys()||[]];let m=new Set(r.map(v=>String(v))),y=new Set(g.map(v=>String(v)));if(e){const v=l.filter(w=>!d.has(w));for(const w of v){const _=String(w);if(!m.has(_)&&h&&h[_]){const O=Tr(_,h,m,y);m=O.checkedKeys,y=O.halfCheckedKeys}}u=v}else{const v=[...m];for(const w of v)if(h&&h[w]){const _=Ir(w,h,m,y);m=_.checkedKeys,y=_.halfCheckedKeys}u=[...s]}r=[...m];const p=[...y],f=this.getSelectedRows(null,u||[]),S=this.getSelectedRows(null,r||[]);this._adapter.setHalfCheckedRowKeys(p),this._selectionIsControlled()||this._adapter.setSelectedRowKeys(r),this._adapter.notifySelectAll(e,S,f,t),this._adapter.notifySelectionChange(r,S)}else{if(e){for(const m of l)!d.has(m)&&!o.has(m)&&r.push(m);l=Co(l,[...c,...s]),u=[...l]}else r=Co(r,l),u=[...s];const h=this.getSelectedRows(null,u||[]),g=this.getSelectedRows(null,r||[]);this._selectionIsControlled()||this._adapter.setSelectedRowKeys(r),this._adapter.notifySelectAll(e,g,h,t),this._adapter.notifySelectionChange(r,g)}}}getSelectedRows(e,t,n){e=e??this._getDataSource(),t=t??this._getSelectedRowKeys(),Pe(n)||(n=new Set(t));const s=this.getProp("childrenRecordName"),r=[];if(Pe(n)&&n.size&&Array.isArray(e)&&e.length&&(r.push(...e.filter(o=>n.has(this.getRecordKey(o)))),r.lengtht.has(n)).length)}handleRowExpanded(e,t,n){this.stopPropagation(n);const s=[...this.getState("expandedRowKeys")],r=s.indexOf(t),o=typeof t=="string"||typeof t=="number";o&&e&&r===-1?s.push(t):o&&!e&&r>-1&&s.splice(r,1),this._rowExpansionIsControlled()||this._adapter.setExpandedRowKeys(s);const l=this.getSelectedRows(null,s);let c=this.getSelectedRows(null,[t])[0];const d=this._getGroups();if(d){d.has(t)&&(c={groupKey:t});for(let u=0,h=s.length;ur!=null&&!t.has(r));if(s&&s.length){for(const r of s)if(r!=null&&!e.has(r))return!1;return!0}else return n.length&&n.every(o=>e.has(o))||!1}allIsNotSelected(e,t){for(const n of t)if(n!=null&&Array.isArray(e)&&e.includes(n))return!0;return!1}formatPaginationInfo(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",n="";const s=x(this.getProp("pagination"),"formatPageText"),{total:r,pageSize:o,currentPage:l}=e,c=Math.min((l-1)*o+1,r),d=Math.min(l*o,r);return(s||s!==!1&&t&&r>0)&&(n=typeof s=="function"?s({currentStart:c,currentEnd:d,total:r}):t.replace("${currentStart}",c).replace("${currentEnd}",d).replace("${total}",r)),n}toggleShowFilter(e,t){let n=this.getQuery(e);const s=t;n=Object.assign(Object.assign({},n),{filterDropdownVisible:s}),this._filterShowIsControlled(),this._adapter.notifyFilterDropdownVisibleChange(s,e)}handleFilterSelect(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=this.getQuery(e),s=[...this._adapter.getState("queries")];const{filteredValue:r}=t;n=Object.assign(Object.assign({},n),{filteredValue:r}),s=Zi(n,s);const o=this._mergeToQueries(n,null),l=this._getAllFilters(o);this._filterIsControlled(e)||(this._adapter.setQueries(s),this.handleClickFilterOrSorter(s)),this._notifyChange(null,l,void 0,{changeType:"filter"})}handleSort(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;var n,s,r,o;if(t){if(this.mouseDownTarget&&((n=this.mouseDownTarget)===null||n===void 0?void 0:n.targetName)==="SPAN"&&(!((o=(r=(s=this.mouseDownTarget)===null||s===void 0?void 0:s.className)===null||r===void 0?void 0:r.includes)===null||o===void 0)&&o.call(r,"react-resizable-handle")))return;this.mouseDownTarget=null}const{dataIndex:l}=e;let c=this.getState("queries"),d=null;c=[...c],le(c,(u,h,g)=>{if(u.sorter){const m=Object.assign({},u),y=x(m,"sortOrder"),p=x(m,"defaultSortOrder",!1);let f=this.isSortOrderValid(y)?y:p;l&&l===m.dataIndex?f===B.SORT_DIRECTIONS[0]?f=B.SORT_DIRECTIONS[1]:f===B.SORT_DIRECTIONS[1]?f=!1:f=B.SORT_DIRECTIONS[0]:f=!1,g[h]=Object.assign(Object.assign({},m),{sortOrder:f}),l===m.dataIndex&&(d=g[h])}}),this._sorterIsControlled(l)||(this._adapter.setQueries(c),this.handleClickFilterOrSorter(c)),this._notifyChange(null,null,d,{changeType:"sorter"})}handleClickFilterOrSorter(e){const t=[...this.getProp("dataSource")],n=this.getFilteredSortedDataSource(t,e),s=this.getAllDisabledRowKeys(n);this.setCachedFilteredSortedDataSource(n),this.setAllDisabledRowKeys(s);const r=this.getCurrentPageData(n);this.setAdapterPageData(r)}getQuery(e,t){if(t=t||this.getState("queries"),e!=null)return We(t,n=>n.dataIndex===e)}getCellWidths(e,t,n){return this._adapter.getCellWidths(e,t,n)}setHeadWidths(e,t){return this._adapter.setHeadWidths(e,t)}getHeadWidths(e){return this._adapter.getHeadWidths(e)}mergedRowExpandable(e){return this._adapter.mergedRowExpandable(e)}setBodyHasScrollbar(e){this._adapter.setBodyHasScrollbar(e)}}const ea={align:a.oneOf(B.ALIGNS),className:a.string,colSpan:a.number,dataIndex:a.string,defaultSortOrder:a.oneOf(B.SORT_DIRECTIONS),filterChildrenRecord:a.bool,filterDropdownProps:a.object,filterDropdown:a.node,filterDropdownVisible:a.bool,filterIcon:a.func,filterMultiple:a.bool,filteredValue:a.arrayOf(a.any),filters:a.array,fixed:a.oneOf(B.FIXED_SET),onCell:a.func,onFilter:a.func,onFilterDropdownVisibleChange:a.func,onHeaderCell:a.func,onSorterChange:a.func,render:a.func,renderFilterDropdownItem:a.func,sortChildrenRecord:a.bool,sortDirections:a.arrayOf(a.string),sortOrder:a.oneOfType([a.bool,a.string]),sorter:a.oneOfType([a.bool,a.func]),title:a.oneOfType([a.func,a.node]),useFullRender:a.bool,width:a.oneOfType([a.number,a.string]),showSortTip:a.bool};class rn extends b.PureComponent{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(e)}render(){return null}}rn.propTypes=Object.assign({},ea);rn.elementType="Column";function Ut(i){if(i){const e=[];return b.Children.forEach(i,t=>{if(b.isValidElement(t)&&(t.type===rn||x(t,"type.elementType")==="Column")){const n=ye(t.props,["children"]);Array.isArray(t.props.children)&&t.props.children.length&&(n.children=Ut(t.props.children)),e.push(Object.assign({key:t.key},n))}}),e}return[]}const ke=b.createContext({headWidths:[],setHeadWidths:H,handleRowExpanded:H}),Su=i=>{let{children:e,anyColumnFixed:t,flattenedColumns:n,tableWidth:s,headWidths:r,setHeadWidths:o,getHeadWidths:l,getCellWidths:c,handleRowExpanded:d,renderExpandIcon:u,renderSelection:h,getVirtualizedListRef:g,setBodyHasScrollbar:m,direction:y,handleRowSelection:p,headerStyle:f,rowSpanHover:S}=i;const v=L.useMemo(()=>({anyColumnFixed:t,flattenedColumns:n,renderExpandIcon:u,renderSelection:h,setHeadWidths:o,getHeadWidths:l,getCellWidths:c,headWidths:r,tableWidth:s,handleRowExpanded:d,getVirtualizedListRef:g,setBodyHasScrollbar:m,direction:y,handleRowSelection:p,headerStyle:f,rowSpanHover:S}),[t,n,u,h,o,l,c,r,s,d,g,m,y,p,f,S]);return b.createElement(ke.Provider,{value:v},e)};class wu extends ge{handleChange(e){const t=e.target.checked;this._adapter.notifyChange(t,e)}}class Vt extends he{get adapter(){var e=this;return Object.assign(Object.assign({},super.adapter),{notifyChange:function(){return e.props.onChange(...arguments)}})}constructor(e){super(e),this.handleChange=t=>this.foundation.handleChange(t),this.foundation=new wu(this.adapter)}render(){const{selected:e,getCheckboxProps:t,indeterminate:n,disabled:s,prefixCls:r,className:o}=this.props,l=this.props["aria-label"];let c={onChange:this.handleChange,disabled:s,indeterminate:n,checked:e};typeof t=="function"&&(c=Object.assign(Object.assign({},c),t()));const d=M(`${r}-selection-wrap`,{[`${r}-selection-disabled`]:s},o);return b.createElement("span",{className:d},b.createElement(xe,Object.assign({"aria-label":l},c)))}}Vt.propTypes={columnTitle:a.string,getCheckboxProps:a.func,type:a.string,onChange:a.func,selected:a.bool,disabled:a.bool,indeterminate:a.bool,prefixCls:a.string,className:a.string,"aria-label":a.string};Vt.defaultProps={disabled:!1,onChange:H,prefixCls:ce.PREFIX};class Qs extends L.PureComponent{render(){const{pagination:e,prefixCls:t,info:n,renderPagination:s}=this.props,r=x(e,"total"),o=s&&ue(s)?s(e):null;return b.createElement("div",{className:`${t}-pagination-outer`},L.isValidElement(o)?o:b.createElement(b.Fragment,null,b.createElement("span",{className:`${t}-pagination-info`},n),b.createElement("span",{className:`${t}-pagination-wrapper`},r>0?b.createElement(sn,Object.assign({},e,{key:x(e,"pageSize","pagination")})):null)))}}Qs.propTypes={style:a.object,prefixCls:a.string,pagination:a.object,info:a.oneOfType([a.string,a.node]),renderPagination:a.func};Qs.defaultProps={prefixCls:ce.PREFIX};var vu=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s1&&arguments[1]!==void 0?arguments[1]:null,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=arguments.length>3?arguments[3]:void 0;const{filterMultiple:s=!0,filters:r=[],filteredValue:o=[],filterDropdownVisible:l,onSelect:c=H,onFilterDropdownVisibleChange:d=H,trigger:u="click",position:h="bottom",renderFilterDropdown:g,renderFilterDropdownItem:m,filterConfirmMode:y="immediate",tempFilteredValue:p,setTempFilteredValue:f,confirm:S,clear:v,close:w,reset:_}=i??{},O=y==="confirm"?p??[]:o,I=Ne(i,["tempFilteredValue","setTempFilteredValue","confirm","clear","close","filters"]),E=typeof g=="function"?g(I):b.createElement(Fe.Menu,null,Array.isArray(r)&&r.map((A,F)=>{const K=Q=>{const pe=Q&&Q.nativeEvent;if(pe&&(pe.stopImmediatePropagation(),pe.stopPropagation(),pe.preventDefault()),y==="confirm"){let de=[...p??[...o]];de.includes(A.value);const ie=de.indexOf(A.value);ie>-1?de.splice(ie,1):s?de.push(A.value):de=[A.value],f==null||f(de)}else{let oe=[...o];const de=oe.includes(A.value),ie=oe.indexOf(A.value);return ie>-1?oe.splice(ie,1):s?oe.push(A.value):oe=[A.value],c({value:A.value,filteredValue:oe,included:!de,domEvent:pe})}},z=O.includes(A.value),{text:q}=A,{value:V}=A,W=`${t}_${F}`,G=typeof m=="function"?m({onChange:K,filterMultiple:s,value:V,text:q,checked:z,filteredValue:O,level:t}):null;let se=G&&b.isValidElement(G)?b.cloneElement(G,{key:W}):b.createElement(Fe.Item,{key:W,onClick:K},s?b.createElement(xe,{checked:z},q):b.createElement(dl,{checked:z},q));if(Array.isArray(A.children)&&A.children.length){const Q=Object.assign(Object.assign({},i),{filters:A.children,trigger:"hover",position:"right"});delete Q.filterDropdownVisible,se=ta(Q,se,t+1,n)}return se}),y==="confirm"&&t===0&&b.createElement("div",{style:{padding:"8px 12px",borderTop:"1px solid var(--semi-color-border)",display:"flex",justifyContent:"flex-end"}},b.createElement(Qt,null,b.createElement(Ft,{size:"small",onClick:()=>_==null?void 0:_()},(n==null?void 0:n.resetFilter)||"Reset"),b.createElement(Ft,{size:"small",theme:"solid",onClick:()=>S==null?void 0:S({closeDropdown:!0})},(n==null?void 0:n.confirmFilter)||"OK")))),{filterDropdownVisible:k}=i,N=vu(i,["filterDropdownVisible"]),P=Object.assign(Object.assign({},N),{trigger:u,position:h,render:E,onVisibleChange:A=>d(A)});return l!=null&&(P.visible=l),b.createElement(Fe,Object.assign({},P,{key:`Dropdown_level_${t}`,className:`${ce.PREFIX}-column-filter-dropdown`}),e)}function Cu(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{prefixCls:e=ce.PREFIX,filteredValue:t,filterIcon:n="filter",filterDropdownProps:s,onSelect:r,filterDropdownVisible:o,renderFilterDropdown:l,onFilterDropdownVisibleChange:c,filterConfirmMode:d="immediate"}=i;let{filterDropdown:u=null}=i;const h=typeof o<"u",m=!h&&(typeof l=="function"||d==="confirm"),[y,p]=L.useState(t),[f,S]=L.useState(t),v=m?!1:o,[w,_]=L.useState(v);L.useEffect(()=>{typeof o<"u"&&_(o)},[o]),L.useEffect(()=>{p(t)},[t]);const O=function(){let z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const q=(z==null?void 0:z.filteredValue)||y;re(q,t)||r({filteredValue:q}),z.closeDropdown&&_(!1)},I=function(){let z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};p([]),r({filteredValue:[]}),z.closeDropdown&&_(!1)},E=()=>{_(!1)},k=()=>{p(f)},N=z=>{m&&_(z),z&&d==="confirm"&&(S(t),p(t)),c(z)},P={tempFilteredValue:y,setTempFilteredValue:p,confirm:O,clear:I,close:E,reset:k,filters:i.filters},A=M(`${e}-column-filter`,{on:Array.isArray(t)&&t.length});let F;typeof n=="function"?F=n(Array.isArray(t)&&t.length>0):L.isValidElement(n)?F=n:F=b.createElement("div",{className:A},"​",b.createElement(xl,{role:"button","aria-label":"Filter data with this column","aria-haspopup":"listbox",tabIndex:-1,size:"default"}));const K=Object.assign(Object.assign(Object.assign(Object.assign({},i),s),P),{filterDropdownVisible:h?o:w,onFilterDropdownVisibleChange:N});return b.createElement(Ee,{componentName:"Table"},z=>b.isValidElement(u)?u:ta(K,F,0,z))}var os,_o;function _u(){if(_o)return os;_o=1;var i=qa(),e=4;function t(n){return i(n,e)}return os=t,os}var Ou=_u();const Ru=te(Ou);let is,as;const Oo={position:"absolute",top:"-9999px",width:"50px",height:"50px"};function Eu(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"vertical";if(typeof document>"u"||typeof window>"u")return 0;const e=i==="vertical";if(e&&is)return is;if(!e&&as)return as;const t=document.createElement("div");Object.keys(Oo).forEach(s=>{t.style[s]=Oo[s]}),e?t.style.overflowY="scroll":t.style.overflowX="scroll",document.body.appendChild(t);let n=0;return e?(n=t.offsetWidth-t.clientWidth,is=n):(n=t.offsetHeight-t.clientHeight,as=n),document.body.removeChild(t),n}function na(i){return typeof i=="number"?i-ne.DEFAULT_CELL_PADDING_LEFT-ne.DEFAULT_CELL_PADDING_RIGHT-ne.DEFAULT_CELL_BORDER_WIDTH_LEFT-ne.DEFAULT_CELL_BORDER_WIDTH_RIGHT-Eu("vertical"):void 0}function Ro(i,e){return Zt({},{table:"table",header:{outer:"table",wrapper:"thead",row:"tr",cell:"th"},body:e?{outer:"div",wrapper:"div",row:"div",cell:"div",colgroup:{wrapper:"div",col:"div"}}:{outer:"table",wrapper:"tbody",row:"tr",cell:"td",colgroup:{wrapper:"colgroup",col:"col"}},footer:{wrapper:"tfoot",row:"tr",cell:"td"}},i)}const bt=new qi("[@douyinfe/semi-ui Table]");function Ts(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const s=[],r=n?we:Ru;return Bt(e,o=>{o=Object.assign({},o);const l=mo(o,t),c=l!=null&&We(i,d=>mo(d,t)===l);c?s.push(r(Object.assign(Object.assign({},c),o))):s.push(r(o))}),s}function sa(i){switch(i){case B.SORT_DIRECTIONS[0]:return B.SORT_DIRECTIONS[1];case B.SORT_DIRECTIONS[1]:return"cancelSort";default:return B.SORT_DIRECTIONS[0]}}class Js extends L.PureComponent{render(){const{prefixCls:e,onClick:t,sortOrder:n,style:s,title:r,sortIcon:o,showTooltip:l}=this.props,c="default",d=M(`${e}-column-sorter-up`,{on:n===B.SORT_DIRECTIONS[0]}),u=M(`${e}-column-sorter-down`,{on:n===B.SORT_DIRECTIONS[1]}),h={"aria-label":`Current sort order is ${n?`${n}ing`:"none"}`,"aria-roledescription":"Sort data with this column"},g=()=>{if(typeof o=="function")return o({sortOrder:n});{const m=b.createElement("div",{style:s,className:`${e}-column-sorter`},b.createElement("span",{className:`${d}`},b.createElement(Sl,{size:c})),b.createElement("span",{className:`${u}`},b.createElement(bl,{size:c})));if(l){let y=sa(n);return b.createElement(Ee,{componentName:"Table"},(p,f)=>b.createElement(ui,{content:p[y]},m))}return m}};return b.createElement("div",Object.assign({role:"button"},h,{tabIndex:-1,className:`${e}-column-sorter-wrapper`,onClick:t,onKeyPress:m=>Yt(m)&&t(m)}),r,g())}}Js.propTypes={className:a.string,style:a.object,onClick:a.func,prefixCls:a.string,sortOrder:a.oneOfType([a.string,a.bool]),sortIcon:a.func,showTooltip:a.bool};Js.defaultProps={prefixCls:ce.PREFIX,onClick:H,sortOrder:!1,showTooltip:!1};function xu(i){const{expanded:e,componentType:t="expand",onClick:n=H,onMouseEnter:s=H,onMouseLeave:r=H,expandIcon:o,prefixCls:l=ce.PREFIX,motion:c=!0}=i;let d;b.isValidElement(o)?d=o:typeof o=="function"?d=o(e):t==="tree"?d=e&&!c?b.createElement(Al,{size:"small"}):b.createElement(Nl,{size:"small"}):d=e&&!c?b.createElement(Ms,null):b.createElement(js,null);const u=L.useCallback(h=>{typeof n=="function"&&n(!e,h)},[e]);if(c){const h=d;d=b.createElement(hi,{animationState:e?"enter":"leave",startClassName:`${ce.PREFIX}-expandedIcon-${e?"show":"hide"}`},g=>{let{animationClassName:m}=g;return b.cloneElement(h,{className:(h.props.className||"")+" "+m})})}return b.createElement("span",{role:"button","aria-label":"Expand this row",tabIndex:-1,onClick:u,onMouseEnter:s,onMouseLeave:r,className:`${l}-expand-icon`,onKeyPress:h=>Yt(h)&&u(h)},d)}class on extends b.PureComponent{render(){const{columns:e,className:t,style:n,prefixCls:s,components:r}=this.props,o=x(r,"colgroup.wrapper","colgroup"),l=x(r,"colgroup.col","col"),c=Ye(e).map((u,h)=>{const g={};return u.width&&(g.width=u.width,g.minWidth=g.width),b.createElement(l,{className:M(`${s}-col`,u.className),key:u.key||u.dataIndex||h,style:g})}),d=M(`${s}-colgroup`,t);return b.createElement(o,{className:d,style:n},c)}}on.propTypes={columns:a.array,prefixCls:a.string,className:a.string,style:a.object,components:a.object};on.defaultProps={columns:[],prefixCls:ce.PREFIX};var Tu=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{if(this.headerNode=t,t&&this.context.setHeadWidths){const{prefixCls:n,row:s,index:r}=this.props,o=`.${n}-row-head`,l=t&&t.querySelectorAll&&t.querySelectorAll(o);this.context.setHeadWidths(Bt(l,(c,d)=>{let u=x(s,[d,"column","width"]);const h=x(s,[d,"column","key"]);return typeof u!="number"&&(u=c&&c.getBoundingClientRect().width||0),{width:u,key:h}}),r)}},this.headerNode=null}componentDidUpdate(e){e.columns!==this.props.columns&&this.headerNode&&this.cacheRef(this.headerNode)}render(){const{components:e,row:t,prefixCls:n,onHeaderRow:s,index:r,style:o,columns:l}=this.props,{getCellWidths:c,direction:d,headerStyle:u}=this.context,h=d==="rtl",g=Xi(l,r),m=c(g),y=x(e,"header.row","tr"),p=x(e,"header.cell","th"),f=s(l,r)||{};Ae(f,"className",M(x(f,"className"),`${n}-row`));const S=Bt(t,(v,w)=>{const{column:_}=v,O=Tu(v,["column"]),I=typeof _.onHeaderCell=="function"?_.onHeaderCell(_,w,r):{};let E=Object.assign(Object.assign({},u),I.style);if(_.align){const V=Ji(_.align,d);E=Object.assign(Object.assign({},E),{textAlign:V}),I.className=M(I.className,_.className,{[`${n}-align-${V}`]:!!V})}let k,N,P,A;if(h?(k=Lt(_),N=kt(_),P=xs(g,_),A=Es(g,_)):(k=kt(_),N=Lt(_),P=Es(g,_),A=xs(g,_)),I.className=M(`${n}-row-head`,_.className,I.className,{[`${n}-cell-fixed-left`]:k,[`${n}-cell-fixed-left-last`]:P,[`${n}-cell-fixed-right`]:N,[`${n}-cell-fixed-right-first`]:A,[`${n}-row-head-ellipsis`]:_.ellipsis,[`${n}-row-head-clickSort`]:_.clickToSort}),m.length&&g.length){const V=Ze(g,W=>W&&W.key!=null&&W.key===_.key);if(V>-1){if(kt(_)){const W=h?"right":"left";E=Object.assign(Object.assign({},E),{position:"sticky",[W]:et(m,0,V)})}else if(Lt(_)){const W=h?"left":"right";E=Object.assign(Object.assign({},E),{position:"sticky",[W]:et(m,V+1)})}}}Object.assign(O,{resize:_.resize});const F=ye(Object.assign(Object.assign({},O),I),["colStart","colEnd","hasSubColumns","parents","level"]),{rowSpan:K,colSpan:z}=F;if(K===0||z===0)return null;if(typeof _.clickToSort=="function")if(F.onClick){const V=F.onClick;F.onClick=W=>{V(W),_.clickToSort(W)}}else F.onClick=_.clickToSort;if(typeof _.mouseDown=="function")if(F.onMouseDown){const V=F.onMouseDown;F.onMouseDown=W=>{V(W),_.mouseDown(W)}}else F.onMouseDown=_.mouseDown;const q=b.createElement(p,Object.assign({role:"columnheader","aria-colindex":w+1},F,{style:E,key:_.key||_.dataIndex||w}));if(typeof _.clickToSort=="function"&&_.showSortTip===!0){let V=sa(_.sortOrder);return b.createElement(Ee,{componentName:"Table",key:_.key||_.dataIndex||w},(W,G)=>b.createElement(ui,{content:W[V]},q))}return q});return b.createElement(y,Object.assign({role:"row","aria-rowindex":r+1},f,{style:o,ref:this.cacheRef}),S)}}an.contextType=ke;an.propTypes={components:a.object,row:a.array,prefixCls:a.string,onHeaderRow:a.func,index:a.oneOfType([a.string,a.number]),style:a.object,columns:a.array,fixed:a.oneOfType([a.bool,a.string]),selectedRowKeysSet:a.instanceOf(Set).isRequired};an.defaultProps={onHeaderRow:H,prefixCls:ce.PREFIX,columns:[],components:{header:{wrapper:"thead",row:"tr",cell:"th"}}};function Iu(i){const e=[];function t(s,r){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;e[l]=e[l]||[];let d=r;return s.map(h=>{const g={key:h.key,className:h.className||"",children:ue(h.title)?h.title():h.title,column:h,colStart:d,level:c,parents:o};let m=1;const y=h.children;y&&y.length>0&&(m=t(y,d,[...o,g],l+1,c+1).reduce((S,v)=>S+v,0),g.hasSubColumns=!0),"colSpan"in h&&({colSpan:m}=h),"rowSpan"in h&&(g.rowSpan=h.rowSpan),h.key===B.DEFAULT_KEY_COLUMN_SCROLLBAR&&(g["x-type"]=B.DEFAULT_KEY_COLUMN_SCROLLBAR),g.colSpan=m,g.colEnd=g.colStart+m-1,e[l].push(g),d+=m;const p=h==null?void 0:h.ellipsis;return Zs(p)&&typeof g.children=="string"&&(g.title=g.children),m})}t(i,0);const n=e.length;for(let s=0;s{!("rowSpan"in r)&&!r.hasSubColumns&&(r.rowSpan=n-s)});return e}class er extends he{get adapter(){return Object.assign({},super.adapter)}render(){const{components:e,columns:t,prefixCls:n,fixed:s,onHeaderRow:r,forwardedRef:o,selectedRowKeysSet:l}=this.props,c=Iu(t),d=e.header.wrapper;return b.createElement(d,{className:`${n}-thead`,ref:o},c.map((u,h)=>b.createElement(an,{prefixCls:n,key:h,index:h,fixed:s,columns:t,row:u,components:e,onHeaderRow:r,selectedRowKeysSet:l})))}}er.propTypes={components:a.any,columns:a.array,columnManager:a.object,prefixCls:a.string,onHeaderRow:a.func,onDidUpdate:a.func,fixed:a.oneOfType([a.bool,a.string]),selectedRowKeysSet:a.instanceOf(Set).isRequired};er.defaultProps={columns:[],prefixCls:ce.PREFIX,onHeaderRow:H,onDidUpdate:H,components:{header:{wrapper:"thead",row:"tr",cell:"th"}}};const ra=b.forwardRef((i,e)=>b.createElement(er,Object.assign({},i,{forwardedRef:e})));class tr extends b.PureComponent{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{selectedRowKeysSet:new Set};super(e)}render(){const{scroll:e,prefixCls:t,fixed:n,forwardedRef:s,handleBodyScroll:r,columns:o,components:l,onDidUpdate:c,showHeader:d,tableLayout:u,bodyHasScrollBar:h,sticky:g}=this.props,m=x(l,"header.outer","table"),y=x(e,"x"),p={},f={};y&&!n&&(f.width=y),h&&(p.overflowY="scroll");const S=b.createElement(on,{columns:o,prefixCls:t}),v=b.createElement(ra,Object.assign({},this.props,{columns:o,components:l,onDidUpdate:c})),w=M(`${t}-header`,{[`${t}-header-sticky`]:g,[`${t}-header-hidden`]:!d}),_=x(g,"top",0);return typeof _=="number"&&(p.top=_),b.createElement("div",{key:"headTable",style:p,className:w,ref:s,onScroll:r},b.createElement(m,{style:f,className:M(t,{[`${t}-fixed`]:u==="fixed"})},S,v))}}tr.propTypes={tableLayout:a.string,bodyHasScrollBar:a.bool,columns:a.array,components:a.object,dataSource:a.array,fixed:a.oneOfType([a.bool,a.string]),handleBodyScroll:a.func,prefixCls:a.string,forwardedRef:a.oneOfType([a.object,a.func]),scroll:a.shape({x:a.oneOfType([a.number,a.string,a.bool]),y:a.oneOfType([a.number,a.string])}),selectedRowKeysSet:a.instanceOf(Set).isRequired,showHeader:a.bool,onDidUpdate:a.func,onHeaderRow:a.func};tr.defaultProps={handleBodyScroll:H};const Pu=b.forwardRef((i,e)=>b.createElement(tr,Object.assign({},i,{forwardedRef:e})));var ls,Eo;function Au(){if(Eo)return ls;Eo=1;var i=ji(),e=i("length");return ls=e,ls}var cs,xo;function nr(){if(xo)return cs;xo=1;var i="\\ud800-\\udfff",e="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",s=e+t+n,r="\\ufe0e\\ufe0f",o="\\u200d",l=RegExp("["+o+i+s+r+"]");function c(d){return l.test(d)}return cs=c,cs}var ds,To;function Du(){if(To)return ds;To=1;var i="\\ud800-\\udfff",e="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",s=e+t+n,r="\\ufe0e\\ufe0f",o="["+i+"]",l="["+s+"]",c="\\ud83c[\\udffb-\\udfff]",d="(?:"+l+"|"+c+")",u="[^"+i+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",g="[\\ud800-\\udbff][\\udc00-\\udfff]",m="\\u200d",y=d+"?",p="["+r+"]?",f="(?:"+m+"(?:"+[u,h,g].join("|")+")"+p+y+")*",S=p+y+f,v="(?:"+[u+l+"?",l,h,g,o].join("|")+")",w=RegExp(c+"(?="+c+")|"+v+S,"g");function _(O){for(var I=w.lastIndex=0;w.test(O);)++I;return I}return ds=_,ds}var us,Io;function Nu(){if(Io)return us;Io=1;var i=Au(),e=nr(),t=Du();function n(s){return e(s)?t(s):i(s)}return us=n,us}var hs,Po;function ku(){if(Po)return hs;Po=1;var i=Ga(),e=Ya(),t=Gt(),n=Qo(),s=Nu(),r="[object Map]",o="[object Set]";function l(c){if(c==null)return 0;if(t(c))return n(c)?s(c):c.length;var d=e(c);return d==r||d==o?c.size:i(c).length}return hs=l,hs}var Lu=ku();const xt=te(Lu);var ps,Ao;function Mu(){if(Ao)return ps;Ao=1;var i=fi(),e=nt(),t=Jt(),n=Math.max,s=Math.min;function r(o,l,c){var d=o==null?0:o.length;if(!d)return-1;var u=d-1;return c!==void 0&&(u=t(c),u=c<0?n(d+u,0):s(u,d-1)),i(o,e(l,3),u,!0)}return ps=r,ps}var ju=Mu();const zu=te(ju);class Fu extends ge{init(){this.initVirtualizedData(),this.initExpandBtnShouldInRow()}destroy(){this.unobserveBodyResize()}initVirtualizedData(e){this._adapter.setVirtualizedData(this.flattenData(this.getProp("dataSource")),e)}initExpandBtnShouldInRow(e){const t=this.getProps(),n=su(t);this._adapter.setCachedExpandBtnShouldInRow(n),!Re(e)&&!e&&(e=B.EXPAND_RELATED_PROPS.map(r=>x(t,r,void 0))),this._adapter.setCachedExpandRelatedProps(e)}flattenData(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];const r=[],{rowKey:o,childrenRecordName:l,expandedRowRender:c,expandedRowKeys:d,groups:u}=this.getProps();return t===0&&wt(u)?u.forEach((h,g)=>{const m=e.findIndex(y=>h.has(De(y,o)));if(m>-1){const y=zu(e,f=>h.has(De(f,o))),p=Kt(d,g);r.push({key:g,level:t,sectionRow:!0,group:h,groupKey:g,expanded:p}),p&&r.push(...this.flattenData(e.slice(m,y+1),t+1,[...n],[...s]))}}):e.forEach((h,g)=>{const m=De(h,o),y=tu(h,l);t&&s.push(m);const p={key:m,record:h,level:t,parentKeys:[...n],childrenKeys:[...s]};r.push(p);const f=[];Kt(d,m)&&(Array.isArray(y)&&y.length?f.push(...this.flattenData(y,t+1,[...p.parentKeys],[...p.childrenKeys])):c&&f.push({key:Yi(m),level:t,expandedRow:!0,record:h}),r.push(...f))}),r}observeBodyResize(e){const{scroll:t}=this.getProps();if(x(t,"y"))return this._adapter.observeBodyResize(e)}unobserveBodyResize(){return this._adapter.unobserveBodyResize()}}var fs,Do;function Ku(){if(Do)return fs;Do=1;function i(){return!0}return fs=i,fs}var $u=Ku();const Bu=te($u);function Hu(i,e){if(i===e)return!0;if(!i||!e)return!1;const t=Object.keys(i),n=Object.keys(e),s=t.length;if(n.length!==s)return!1;for(let r=0;rthis.ref=t,this.handleClick=t=>{this.foundation.handleClick(t);const n=this.adapter.getCache("customCellProps");n&&typeof n.onClick=="function"&&n.onClick(t)},this.ref=L.createRef(),this.foundation=new Uu(this.adapter)}shouldComponentUpdate(e){const t=this.props,{column:n,expandIcon:s}=t,r=Qd(n),{shouldCellUpdate:o}=n;if(typeof o=="function")return o(e,t);const l=Gi(n)||s;if((r||l)&&!re(e,this.props))return!0;{const c=["selected","expanded","expandIcon","disabled"],d=ye(t,c),u=ye(e,c);if(!re(u,d))return!0}return!1}componentDidUpdate(){this.props.onDidUpdate(this.ref)}getTdProps(){const{record:e,index:t,column:n={},fixedLeft:s,fixedRight:r,width:o,height:l}=this.props;let c={},d={};const{direction:u}=this.context,h=u==="rtl";if(s||typeof s=="number"?Ae(c,h?"style.right":"style.left",typeof s=="number"?s:0):(r||typeof r=="number")&&Ae(c,h?"style.left":"style.right",typeof r=="number"?r:0),o!=null&&Ae(c,"style.width",o),l!=null&&Ae(c,"style.height",l),n.onCell){d=n.onCell(e,t),this.adapter.setCache("customCellProps",Object.assign({},d)),c=Object.assign(Object.assign({},c),ye(d,["style","className","onClick"]));const y=x(d,"style")||{};c.style=Object.assign(Object.assign({},c.style),y)}if(n.align){const y=Ji(n.align,u),p=au(n.align,u);c.style=Object.assign(Object.assign({},c.style),{textAlign:y,justifyContent:p})}return{tdProps:c,customCellProps:d}}renderText(e){const{record:t,indentSize:n,prefixCls:s,indent:r,index:o,expandIcon:l,renderExpandIcon:c,column:d={},hovered:u}=this.props,{dataIndex:h,render:g,useFullRender:m}=d;let y,p,f;typeof h=="number"?y=x(t,h):!h||h.length===0?y=t:y=x(t,h);const S=r&&n?b.createElement("span",{style:{paddingLeft:`${n*r}px`},className:`${s}-row-indent indent-level-${r}`}):null,v=typeof c=="function"?c(t):l;if(g){const w={expandIcon:v,isHovering:u};if(m){const{renderSelection:_}=this.context,O=typeof _=="function"?_(t):null;Object.assign(w,{selection:O,indentText:S})}y=g(y,t,o,w),No(y)&&(e=y.props?Zt(e,y.props):e,p=e.colSpan,f=e.rowSpan,y=y.children)}return{text:y,indentText:S,rowSpan:f,colSpan:p,realExpandIcon:v,tdProps:e}}renderInner(e,t,n){const{prefixCls:s,isSection:r,expandIcon:o,column:l={}}=this.props,{tableWidth:c,anyColumnFixed:d}=this.context,{useFullRender:u}=l;let h=null;return u?h=e:h=[b.createElement(L.Fragment,{key:"indentText"},t),b.createElement(L.Fragment,{key:"expandIcon"},o?n:null),b.createElement(L.Fragment,{key:"text"},e)],r&&(h=b.createElement("div",{className:M(`${s}-section-inner`),style:{width:d?na(c):void 0}},h)),h}render(){const{prefixCls:e,column:t={},component:n,fixedLeft:s,fixedRight:r,lastFixedLeft:o,firstFixedRight:l,colIndex:c}=this.props,{direction:d}=this.context,u=d==="rtl",{className:h,ellipsis:g}=t,m=s||typeof s=="number",y=r||typeof r=="number",{tdProps:p,customCellProps:f}=this.getTdProps(),S=this.renderText(p);let{text:v}=S;const{indentText:w,rowSpan:_,colSpan:O,realExpandIcon:I,tdProps:E}=S;let k;if(Zs(g)&&typeof v=="string"&&(k=v),_===0||O===0)return null;No(v)&&(v=null);const P=this.renderInner(v,w,I);let A,F,K,z;u?(A=y,F=l,K=m,z=o):(A=m,F=o,K=y,z=l);const q=M(h,`${e}-row-cell`,x(f,"className"),{[`${e}-cell-fixed-left`]:A,[`${e}-cell-fixed-left-last`]:F,[`${e}-cell-fixed-right`]:K,[`${e}-cell-fixed-right-first`]:z,[`${e}-row-cell-ellipsis`]:g});return b.createElement(n,Object.assign({role:"gridcell","aria-colindex":c+1,className:q,onClick:this.handleClick,title:k},E,{ref:this.setRef}),P)}}Ct.contextType=ke;Ct.defaultProps={indent:0,indentSize:ne.DEFAULT_INDENT_WIDTH,onClick:H,prefixCls:ce.PREFIX,component:"td",onDidUpdate:H,column:{}};Ct.propTypes={record:a.object,prefixCls:a.string,index:a.number,fixedLeft:a.oneOfType([a.bool,a.number]),lastFixedLeft:a.bool,fixedRight:a.oneOfType([a.bool,a.number]),firstFixedRight:a.bool,indent:a.number,indentSize:a.number,column:a.object,expandIcon:a.any,renderExpandIcon:a.func,hideExpandedColumn:a.bool,component:a.any,onClick:a.func,onDidUpdate:a.func,isSection:a.bool,width:a.oneOfType([a.string,a.number]),height:a.oneOfType([a.string,a.number]),selected:a.bool,expanded:a.bool,colIndex:a.number,hovered:a.bool};var ko=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{const{renderExpandIcon:n}=this.props;return n(t,!0)},this.handleMouseEnter=t=>{this.foundation.handleMouseEnter(t);const n=this.adapter.getCache("customRowProps");typeof(n==null?void 0:n.onMouseEnter)=="function"&&n.onMouseEnter(t)},this.handleMouseLeave=t=>{this.foundation.handleMouseLeave(t);const n=this.adapter.getCache("customRowProps");typeof(n==null?void 0:n.onMouseLeave)=="function"&&n.onMouseLeave(t)},this.handleClick=t=>{this.foundation.handleClick(t);const n=this.adapter.getCache("customRowProps");n&&typeof n.onClick=="function"&&n.onClick(t);const{handleRowSelection:s}=this.context,{rowKey:r,selected:o,disabled:l,record:c}=this.props;typeof s=="function"&&!l&&s(r,!o,t)},this.foundation=new Wu(this.adapter)}componentDidMount(){const{onRow:e,index:t,record:n,disabled:s,selected:r}=this.props;if(typeof this.adapter.getCache("customRowProps")>"u"){const l=e(n,t,{disabled:s,selected:r})||{},{className:c,style:d}=l,u=ko(l,["className","style"]);this.adapter.setCache("customRowProps",Object.assign({},u))}}shouldComponentUpdate(e){const t=["cellWidths"];return!Hu(ye(e,t),ye(this.props,t))||!re(Ne(e,t),Ne(this.props,t))}renderCells(){const{columns:e,record:t,index:n,prefixCls:s,fixed:r,components:o,expandableRow:l,level:c,expandIcon:d,rowExpandable:u,isSection:h,expandedRow:g,virtualized:m,indentSize:y,hideExpandedColumn:p,cellWidths:f,selected:S,expanded:v,disabled:w,onDidUpdate:_,hovered:O}=this.props,I=x(o,"body.cell",B.DEFAULT_COMPONENTS.body.cell),E=[],k=u(t);let N=0;return le(e,(P,A)=>{const F=x(P,"key"),K={};if(r!=="right"&&(Xd(F)&&N++,l&&A===N&&(K.renderExpandIcon=this.renderExpandIcon,(p||h)&&(K.expandIcon=d??!0)),c!=null&&A===N&&(K.indent=c,!l&&p&&(d!==!1||!(typeof d=="boolean")&&d!==null)&&(K.indent=c+1))),Gi(P)&&!k)E.push(b.createElement(Ct,{key:A,colIndex:A,isSection:h}));else if(!Zd(P)){const z={};I!==B.DEFAULT_COMPONENTS.body.cell&&m&&!g&&(z.width=x(f,A)),E.push(b.createElement(Ct,Object.assign({colIndex:A},K,z,{hideExpandedColumn:p,indentSize:y,isSection:h,prefixCls:`${s}`,column:P,key:A,index:n,record:t,component:I,fixedLeft:kt(P)&&et(f,0,A),lastFixedLeft:Es(e,P),fixedRight:Lt(P)&&et(f,A+1),firstFixedRight:xs(e,P),selected:S,expanded:v,disabled:w,onDidUpdate:_,hovered:O})))}}),E}render(){const{style:e}=this.props,{components:t,prefixCls:n,selected:s,disabled:r,onRow:o,index:l,className:c,replaceClassName:d,record:u,hovered:h,expanded:g,displayNone:m,expandableRow:y,level:p,expandedRow:f,isSection:S,rowKey:v}=this.props,w=t.body.row,_=o(u,l,{disabled:r,selected:s})||{},{className:O,style:I}=_,E=ko(_,["className","style"]);this.adapter.setCache("customRowProps",Object.assign({},E));const k=Object.assign(Object.assign({},e),I),N=typeof d=="string"&&d.length?M(d,O):M(c,`${n}-row`,{[`${n}-row-selected`]:s,[`${n}-row-expanded`]:g,[`${n}-row-hovered`]:h,[`${n}-row-hidden`]:m},O),P={};return typeof l=="number"&&(P["aria-rowindex"]=l+1),y&&(P["aria-expanded"]=g),(g||f)&&(P["aria-level"]=2),typeof p=="number"&&(P["aria-level"]=p+1),S&&(P["aria-level"]=1),b.createElement(w,Object.assign({role:"row"},P,E,{style:k,className:N,"data-row-key":v,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onClick:this.handleClick}),this.renderCells())}}rt.propTypes=oa;rt.contextType=ke;rt.defaultProps={columns:[],rowExpandable:Bu,components:{body:{row:"tr",cell:"td"}},prefixCls:ce.PREFIX,onRow:H,onRowClick:H,onRowDoubleClick:H,onRowMouseEnter:H,onRowMouseLeave:H,onHover:H,onDidUpdate:H,visible:!0,hovered:!1,selected:!1,disabled:!1};var Vu=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s({props:O,children:b.createElement("div",{className:M(`${n}-expand-inner`),style:{width:S?na(f):void 0}},_)})},I)],k=M(s,`${n}-row-expand`),N=v(E);return b.createElement(rt,{style:h,components:u,className:k,expandedRow:!0,renderExpandIcon:l,rowKey:`${e.key}-expanded-row`,columns:E,store:d,virtualized:g,indentSize:m,cellWidths:N,displayNone:p})}}ln.contextType=ke;ln.propTypes={cellWidths:a.array.isRequired,className:a.string,columns:a.array,components:a.object,defaultExpandAllRows:a.bool,defaultExpandedRowKeys:a.array,expandIcon:a.oneOfType([a.object,a.node,a.func]),expandRowByClick:a.bool,expanded:a.bool,expandedRowKeys:a.array,expandedRowRender:a.func,indentSize:a.number,index:a.oneOfType([a.string,a.number]),onExpand:a.func,onExpandedRowsChange:a.func,prefixCls:a.string,record:a.object,renderExpandIcon:a.func,store:a.object,style:a.object,virtualized:a.oneOfType([a.bool,a.object])};ln.defaultProps={record:{},prefixCls:ce.PREFIX};var qu=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{typeof s=="function"&&n&&s(!o,r,c),typeof l.onClick=="function"&&l.onClick(c)}})},this.collectGroupedData=()=>{const{data:t,group:n,rowKey:s}=this.props;return Array.isArray(t)&&t.length&&Pe(n)?t.filter(r=>{const o=typeof s=="function"?s(r):x(r,s);return o!=null&&o!==""&&n.has(o)}):[]},this.renderExpandIcon=t=>{const{renderExpandIcon:n,groupKey:s}=this.props;return typeof n=="function"?n(t,!1,s):null}}isInnerColumnKey(e){return e!=null?[B.DEFAULT_KEY_COLUMN_EXPAND,B.DEFAULT_KEY_COLUMN_SELECTION].includes(e):!1}render(){const{record:e,columns:t=[],prefixCls:n,className:s,expanded:r,renderGroupSection:o,components:l,index:c,store:d,group:u,groupKey:h,virtualized:g,style:m}=this.props,y={};let p={},f=null;const S=typeof o=="function"?o(h,[...u]):null;if(L.isValidElement(S))f=S;else if(S&&Object.prototype.toString.call(S)==="[object Object]"){const I=S,{children:E}=I,k=qu(I,["children"]);f=E,p=Object.assign({},k)}y.colSpan=Xs(t).length;const v=[Object.assign({render:()=>({props:y,children:f})},p)],w=M(s,`${n}-row-section`,{on:r}),{getCellWidths:_}=this.context,O=_(v,null,!0);return b.createElement(rt,{components:l,virtualized:g,index:c,onRow:this.onRow,expanded:r,expandIcon:!0,isSection:!0,record:e,replaceClassName:w,expandableRow:!0,renderExpandIcon:this.renderExpandIcon,rowKey:h,columns:v,store:d,style:m,cellWidths:O})}}cn.contextType=ke;cn.propTypes=ia;cn.defaultProps={prefixCls:ce.PREFIX,components:{body:{row:"tr",cell:"td"}}};var Lo=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{const{store:c}=this.props,{rowSpanHover:d}=this.context;if(c){const u=o?l:null;x(c.getState(),"hoveredRowKey")!==u&&c.setState({hoveredRowKey:u})}if(d){const u=String(l);if(o){const h=this.getHoveredRowKeysFromDOM(u);this.updateRowHoverClass(h)}else this.updateRowHoverClass([])}},this.updateRowHoverClass=o=>{var l;const c=this.ref.current;if(!c){this.hoveredRowKeySet.clear();return}const d=((l=c.closest)===null||l===void 0?void 0:l.call(c,`.${this.props.prefixCls}-wrapper`))||c,u=new Set(o);for(const h of this.hoveredRowKeySet)u.has(h)||d.querySelectorAll(`tr[data-row-key="${this.cssEscape(h)}"]`).forEach(m=>m.classList.remove(`${this.props.prefixCls}-row-hovered`));for(const h of u)this.hoveredRowKeySet.has(h)||d.querySelectorAll(`tr[data-row-key="${this.cssEscape(h)}"]`).forEach(m=>m.classList.add(`${this.props.prefixCls}-row-hovered`));this.hoveredRowKeySet=u},this.getHoveredRowKeysFromDOM=o=>{var l;const c=new Set;c.add(o);const d=this.ref.current,u=(l=d==null?void 0:d.querySelector(".semi-table-tbody"))!==null&&l!==void 0?l:d;if(!u)return Array.from(c);const h=u.querySelector(`tr[data-row-key="${this.cssEscape(o)}"]`);if(!h)return Array.from(c);const g=Array.from(u.querySelectorAll("tr[data-row-key]")),m=g.indexOf(h);return m===-1||g.forEach((y,p)=>{y.querySelectorAll("td[rowspan]").forEach(S=>{const v=parseInt(S.getAttribute("rowspan")||"1",10);if(v>1){const w=p+v-1;if(m>=p&&m<=w)for(let _=p;_<=w&&_{const l=globalThis.CSS;return l&&typeof l.escape=="function"?l.escape(o):o.replace(/\\/g,"\\\\").replace(/"/g,'\\"')},this.forwardRef=o=>{const{forwardedRef:l}=this.props;this.ref.current=o,this.foundation.observeBodyResize(o),typeof l=="function"?l(o):l&&typeof l=="object"&&(l.current=o)},this.setListRef=o=>{this.listRef.current=o;const{getVirtualizedListRef:l}=this.context;l&&(this.props.virtualized?l(this.listRef):console.warn("getVirtualizedListRef only works with virtualized. See https://semi.design/en-US/show/table for more information."))},this.itemSize=o=>{const{virtualized:l,size:c}=this.props,{virtualizedData:d}=this.state,u=x(d,o),h=nu(c,u.sectionRow),g=x(l,"itemSize",h.height);let m=g;return typeof g=="function"&&(m=g(o,{expandedRow:x(u,"expandedRow",!1),sectionRow:x(u,"sectionRow",!1)})),mx(l,[o,"key"],o),this.handleRowClick=(o,l,c)=>{const{handleRowExpanded:d}=this.context;d(!c,o,l)},this.handleVirtualizedScroll=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const l=x(n.props.virtualized,"onScroll");typeof l=="function"&&l(o)},this.handleVirtualizedBodyScroll=o=>{const{handleBodyScroll:l}=this.props,c=x(o,"nativeEvent.target.scrollLeft"),d=x(o,"nativeEvent.target.scrollTop");d===this.state.cache.virtualizedScrollTop&&this.handleVirtualizedScroll({horizontalScrolling:!0}),this.state.cache.virtualizedScrollLeft=c,this.state.cache.virtualizedScrollTop=d,typeof l=="function"&&l(o)},this.getVirtualizedRowWidth=()=>{const{getCellWidths:o}=this.context,{columns:l}=this.props,c=o(l);return et(c,0,xt(l))},this.renderVirtualizedRow=o=>{const{index:l,style:c}=o,{virtualizedData:d,cachedExpandBtnShouldInRow:u}=this.state,{flattenedColumns:h}=this.context,g=x(d,[l],{}),{key:m,parentKeys:y,expandedRow:p,sectionRow:f}=g,S=Lo(g,["key","parentKeys","expandedRow","sectionRow"]),v=this.getVirtualizedRowWidth(),w=u,_=Object.assign(Object.assign(Object.assign(Object.assign({},this.props),{style:Object.assign(Object.assign({},c),{width:v})}),S),{columns:h,index:l,expandBtnShouldInRow:w});return f?this.renderSectionRow(_):p?this.renderExpandedRow(_):this.renderBaseRow(_)},this.renderTbody=b.forwardRef(function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},l=arguments.length>1?arguments[1]:void 0;return b.createElement("div",Object.assign({},o,{onScroll:function(){o.onScroll&&o.onScroll(...arguments)},className:M(o.className,`${n.props.prefixCls}-tbody`),style:Object.assign({},o.style),ref:l}))}),this.renderOuter=b.forwardRef((o,l)=>{const{children:c}=o,d=Lo(o,["children"]),{handleWheel:u,prefixCls:h,emptySlot:g,dataSource:m}=this.props,y=this.getVirtualizedRowWidth(),p=M(`${h}`,`${h}-fixed`);return b.createElement("div",Object.assign({},d,{ref:l,onWheel:function(){u&&u(...arguments),d.onWheel&&d.onWheel(...arguments)},onScroll:function(){n.handleVirtualizedBodyScroll(...arguments),d.onScroll&&d.onScroll(...arguments)}}),b.createElement("div",{style:{width:y},className:p},c),xt(m)===0&&g)}),this.onItemsRendered=o=>{this.state.cache.virtualizedScrollLeft&&this.ref.current&&(this.ref.current.scrollLeft=this.state.cache.virtualizedScrollLeft)},this.renderVirtualizedBody=o=>{const{scroll:l,prefixCls:c,virtualized:d,columns:u}=this.props,{virtualizedData:h}=this.state,{getCellWidths:g}=this.context,m=g(u);if(!xt(m))return null;const y=x(l,"y"),p=typeof y=="number",f=p?y:600;p||bt.warn('You have to specific "scroll.y" which must be a number for table virtualization!');const S={width:"100%",height:h!=null&&h.length?f:null,overflowX:"auto",overflowY:"auto"},v=M(`${c}-body`);return b.createElement(wc,Object.assign({},typeof d=="object"?d:{},{initialScrollOffset:this.state.cache.virtualizedScrollTop,onScroll:this.handleVirtualizedScroll,onItemsRendered:this.onItemsRendered,ref:this.setListRef,className:v,outerRef:this.forwardRef,height:h!=null&&h.length?f:0,width:S.width,itemData:h,itemSize:this.itemSize,itemCount:h.length,itemKey:this.itemKey,innerElementType:this.renderTbody,outerElementType:this.renderOuter,style:Object.assign(Object.assign({},S),{direction:o}),direction:o}),this.renderVirtualizedRow)},this.renderSectionRow=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{groupKey:void 0};const{dataSource:l,rowKey:c,group:d,groupKey:u,index:h}=o,g=Object.keys(ia),m=Ne(o,g),{handleRowExpanded:y}=n.context;return b.createElement(cn,Object.assign({},m,{record:{groupKey:u,records:[...d].map(p=>bo(l,p,c))},index:h,onExpand:y,data:l,key:u||h}))},this.renderExpandedRow=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{renderExpandIcon:()=>null};const{style:l,components:c,renderExpandIcon:d,expandedRowRender:u,record:h,columns:g,expanded:m,index:y,rowKey:p,virtualized:f,displayNone:S}=o;let v=De(h,p);v==null&&(v=y);const{flattenedColumns:w,getCellWidths:_}=n.context;return w!==n.flattenedColumns&&(n.flattenedColumns=w,n.cellWidths=_(w)),b.createElement(ln,{style:l,components:c,renderExpandIcon:d,expandedRowRender:u,record:h,columns:g,expanded:m,index:y,virtualized:f,key:Yi(v),cellWidths:n.cellWidths,displayNone:S})},this.renderGroupedRows=()=>{const{groups:o,dataSource:l,rowKey:c,expandedRowKeys:d,keepDOM:u}=this.props,{flattenedColumns:h}=this.context,g=new Map,m=[];o!=null&&Array.isArray(l)&&l.length&&l.forEach(p=>{const f=De(p,c);o.forEach((S,v)=>{if(S.has(f))return g.has(v)||g.set(v,new Set([])),g.get(v).add(f),!1})});let y=-1;return g.forEach((p,f)=>{const S=es(d,f);if(m.push(this.renderSectionRow(Object.assign(Object.assign({},this.props),{columns:h,index:++y,group:p,groupKey:f,expanded:S}))),S||u){const v=[];p.forEach(w=>{const _=bo(l,w,c);_!=null&&v.push(_)}),m.push(this.renderBodyRows(v,void 0,[],!S))}}),m},this.renderBody=o=>{const{scroll:l,prefixCls:c,columns:d,components:u,fixed:h,handleWheel:g,headerRef:m,handleBodyScroll:y,anyColumnFixed:p,showHeader:f,emptySlot:S,includeHeader:v,dataSource:w,onScroll:_,groups:O,expandedRowRender:I,tableLayout:E}=this.props,k=x(l,"x"),N=x(l,"y"),P={},A={},F=x(u,"body.outer","table"),K=x(u,"body.wrapper")||"tbody";N&&(P.maxHeight=N),k&&(A.width=k),p&&xt(w)&&(P.overflow="auto",P.WebkitTransform="translate3d (0, 0, 0)");const z=b.createElement(on,{components:x(u,"body"),columns:d,prefixCls:c}),q=`${c}-body`,V=b.createElement("div",{key:"bodyTable",className:q,style:P,ref:this.forwardRef,onMouseLeave:()=>{this.context.rowSpanHover&&this.updateRowHoverClass([])},onWheel:g,onScroll:y},b.createElement(F,{role:wt(O)||ue(I)||iu({dataSource:w})?"treegrid":"grid","aria-rowcount":w&&w.length,"aria-colcount":d&&d.length,style:A,className:M(c,{[`${c}-fixed`]:E==="fixed"})},z,v&&f?b.createElement(ra,Object.assign({},this.props,{ref:m,components:u,columns:d})):null,b.createElement(K,{className:`${c}-tbody`,onScroll:_},wt(O)?this.renderGroupedRows():this.renderBodyRows(w))),S);return h&&d.length?b.createElement("div",{key:"bodyTable",className:`${c}-body-outer`},V):V},this.ref=b.createRef(),this.state={virtualizedData:[],cache:{virtualizedScrollTop:null,virtualizedScrollLeft:null},cachedExpandBtnShouldInRow:null,cachedExpandRelatedProps:[],hoveredRowKey:null},this.listRef=b.createRef();const{flattenedColumns:s,getCellWidths:r}=t;this.foundation=new Fu(this.adapter),this.flattenedColumns=s,this.cellWidths=r(s),this.observer=null,this.hoveredRowKeySet=new Set}componentDidMount(){const{store:e}=this.props;e&&(this.unsubscribe=e.subscribe(t=>{const{hoveredRowKey:n}=t;n!==this.state.hoveredRowKey&&this.setState({hoveredRowKey:n})}))}componentWillUnmount(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null)}get adapter(){return Object.assign(Object.assign({},super.adapter),{setVirtualizedData:(e,t)=>this.setState({virtualizedData:e},t),setCachedExpandBtnShouldInRow:e=>this.setState({cachedExpandBtnShouldInRow:e}),setCachedExpandRelatedProps:e=>this.setState({cachedExpandRelatedProps:e}),observeBodyResize:e=>{const{setBodyHasScrollbar:t}=this.context,n=()=>{const s=()=>{const{offsetWidth:o,clientWidth:l}=e,c=l{const e=this.ref.current;this.observer&&(this.observer.unobserve(e),this.observer=null)}})}componentDidUpdate(e,t){const{virtualized:n,dataSource:s,expandedRowKeys:r,columns:o,scroll:l}=this.props;n&&(e.dataSource!==s||e.expandedRowKeys!==r||e.columns!==o)&&this.foundation.initVirtualizedData();const d=B.EXPAND_RELATED_PROPS.map(g=>x(this.props,g,void 0));re(d,t.cachedExpandRelatedProps)||this.foundation.initExpandBtnShouldInRow(d);const u=x(l,"y"),h=this.ref.current;u&&u!==x(e,"scroll.y")&&this.foundation.observeBodyResize(h)}renderBaseRow(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{rowKey:t,columns:n,expandedRowKeys:s,rowExpandable:r,record:o,index:l,level:c,expandBtnShouldInRow:d,selectedRowKeysSet:u,disabledRowKeysSet:h,expandRowByClick:g}=e,m=Object.keys(oa),y=Ne(e,m);let p=De(o,t);p==null&&(p=l);const f=es(s,p),S=r&&r(o),v={level:void 0,expanded:f};(S||d)&&(v.level=c,v.expandableRow=S,g&&(v.onRowClick=this.handleRowClick));const w={selected:Jd(u,p),disabled:eu(h,p)},{getCellWidths:_}=this.context,O=_(n,null,!0),{hoveredRowKey:I}=this.state,E=I===p;return b.createElement(rt,Object.assign({},y,v,w,{key:p,rowKey:p,cellWidths:O,hovered:E,onHover:this.onRowHover}))}renderBodyRows(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{rowKey:r,expandedRowRender:o,expandedRowKeys:l,childrenRecordName:c,rowExpandable:d,keepDOM:u}=this.props,h=typeof o=="function",g=this.state.cachedExpandBtnShouldInRow,{flattenedColumns:m}=this.context;return le(e,(y,p)=>{let f=De(y,r);f==null&&(f=p);const S=x(y,c),v=!!(Array.isArray(S)&&S.length);n.push(this.renderBaseRow(Object.assign(Object.assign({},this.props),{columns:m,expandBtnShouldInRow:g,displayNone:s,record:y,key:f,level:t,index:p})));const w=es(l,f),_=w||u;if(h&&d&&d(y)&&_){const O=this.renderExpandedRow(Object.assign(Object.assign({},this.props),{columns:m,level:t,index:p,record:y,expanded:w,displayNone:s||!w}));Ps(O)||n.push(O)}if(v&&_){const O=this.renderBodyRows(S,t+1,[],s||!w);n.push(...O)}}),n}render(){const{virtualized:e}=this.props,{direction:t}=this.context;return e?this.renderVirtualizedBody(t):this.renderBody(t)}}sr.contextType=ke;sr.propTypes={anyColumnFixed:a.bool,childrenRecordName:a.string,columns:a.array,components:a.object,dataSource:a.array,disabledRowKeysSet:a.instanceOf(Set).isRequired,emptySlot:a.node,expandRowByClick:a.bool,expandedRowKeys:a.array,expandedRowRender:a.func,fixed:a.oneOfType([a.string,a.bool]),forwardedRef:a.oneOfType([a.object,a.func]),groups:a.instanceOf(Map),handleBodyScroll:a.func,handleWheel:a.func,headerRef:a.oneOfType([a.object,a.func]),includeHeader:a.bool,onScroll:a.func,prefixCls:a.string,renderExpandIcon:a.func,rowExpandable:a.func,rowKey:a.oneOfType([a.string,a.bool,a.func]),scroll:a.object,selectedRowKeysSet:a.instanceOf(Set).isRequired,showHeader:a.bool,size:a.string,store:a.object,virtualized:a.oneOfType([a.bool,a.object])};const Gu=b.forwardRef(function(e,t){return b.createElement(sr,Object.assign({},e,{forwardedRef:t}))});var Yu=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{const{scroll:t={}}=this.props;!!x(t,"y")?this.bodyWrapRef.current&&(this.bodyWrapRef.current.scrollTop=0):this.wrapRef.current&&this.wrapRef.current.scrollIntoView({behavior:"smooth",block:"start"})},setSelectedRowKeys:t=>{this.setState({rowSelection:Object.assign(Object.assign({},this.state.rowSelection),{selectedRowKeys:[...t],selectedRowKeysSet:new Set(t)})})},setDisabledRowKeys:t=>{this.setState({disabledRowKeys:t,disabledRowKeysSet:new Set(t)})},setCurrentPage:t=>{const{pagination:n}=this.state;typeof n=="object"?this.setState({pagination:Object.assign(Object.assign({},n),{currentPage:t})}):this.setState({pagination:{currentPage:t}})},setPagination:t=>this.setState({pagination:t}),setGroups:t=>this.setState({groups:t}),setDataSource:t=>this.setState({dataSource:t}),setExpandedRowKeys:t=>this.setState({expandedRowKeys:[...t]}),setQuery:function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=[...e.state.queries];n=Zi(t,n),e.setState({queries:n})},setQueries:t=>this.setState({queries:t}),setFlattenData:t=>this.setState({flattenData:t}),setAllRowKeys:t=>this.setState({allRowKeys:t}),setHoveredRowKey:t=>{this.store.setState({hoveredRowKey:t})},setHoveredRowKeys:t=>{this.store.setState({hoveredRowKeys:t})},setCachedFilteredSortedDataSource:t=>{this.cachedFilteredSortedDataSource=t},setCachedFilteredSortedRowKeys:t=>{this.cachedFilteredSortedRowKeys=t,this.cachedFilteredSortedRowKeysSet=new Set(t)},setAllDisabledRowKeys:t=>{const n=new Set(t);this.setState({allDisabledRowKeys:t,allDisabledRowKeysSet:n})},getCurrentPage:()=>x(this.state,"pagination.currentPage",1),getCurrentPageSize:()=>x(this.state,"pagination.pageSize",ne.DEFAULT_PAGE_SIZE),getCachedFilteredSortedDataSource:()=>this.cachedFilteredSortedDataSource,getCachedFilteredSortedRowKeys:()=>this.cachedFilteredSortedRowKeys,getCachedFilteredSortedRowKeysSet:()=>this.cachedFilteredSortedRowKeysSet,getAllDisabledRowKeys:()=>this.state.allDisabledRowKeys,getAllDisabledRowKeysSet:()=>this.state.allDisabledRowKeysSet,getHalfCheckedRowKeys:()=>this.state.halfCheckedRowKeys||[],getHalfCheckedRowKeysSet:()=>this.state.halfCheckedRowKeysSet||new Set,setHalfCheckedRowKeys:t=>{this.setState({halfCheckedRowKeys:t,halfCheckedRowKeysSet:new Set(t)})},getKeyEntities:()=>this.state.keyEntities||{},setKeyEntities:t=>{this.setState({keyEntities:t})},getCheckRelation:()=>{const{rowSelection:t}=this.state;return t&&typeof t=="object"?x(t,"checkRelation","unRelated"):"unRelated"},notifyFilterDropdownVisibleChange:(t,n)=>this._invokeColumnFn(n,"onFilterDropdownVisibleChange",t),notifyChange:function(){return e.props.onChange(...arguments)},notifyExpand:function(){return e.props.onExpand(...arguments)},notifyExpandedRowsChange:function(){return e.props.onExpandedRowsChange(...arguments)},notifySelect:function(){for(var t=arguments.length,n=new Array(t),s=0;sNt(this.getColumns(t||this.props.columns,this.props.children),n=>!!n.fixed),useFixedHeader:()=>{const{scroll:t,sticky:n}=this.props;return!!(x(t,"y")||n)},getTableLayout:()=>{let t=!1;const{flattenColumns:n}=this.state;return Array.isArray(n)&&(t=n.some(s=>!!s.ellipsis||!!s.fixed)),this.adapter.useFixedHeader()&&(t=!0),t?"fixed":"auto"},setHeadWidths:function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;Yd(e.state.headWidths[n],t)||e.setState(s=>{const r=[...s.headWidths];return r[n]=[...t],{headWidths:r}})},getHeadWidths:function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.state.headWidths.length&&typeof t=="number"?(e.state.headWidths[t]||[]).map(s=>s.width):[]},getCellWidths:function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return Array.isArray(t)&&t.length&&(n=n==null&&e.state.headWidths.length?Md(e.state.headWidths):[],Array.isArray(n)&&n.length)?t.reduce((r,o)=>{const l=o.key===B.DEFAULT_KEY_COLUMN_SCROLLBAR&&s?null:We(n,c=>c&&c.key!=null&&c.key===o.key);return l&&r.push(l.width),r},[]):[]},mergedRowExpandable:t=>{const{expandedRowRender:n,childrenRecordName:s,rowExpandable:r}=this.props,o=x(t,s),l=typeof n=="function",c=typeof r=="function",d=Array.isArray(o)&&o.length,u=c&&r(t);return(l||d)&&(!c||u)||!(l||d)&&u},isAnyColumnUseFullRender:t=>Nt(t,n=>!!n.useFullRender),getNormalizeColumns:()=>this.normalizeColumns,getHandleColumns:()=>this.handleColumns,getMergePagination:()=>this.mergePagination,setBodyHasScrollbar:t=>{t!==this.state.bodyHasScrollBar&&this.setState({bodyHasScrollBar:t})},stopPropagation(t){t&&typeof t=="object"&&(typeof t.stopPropagation=="function"&&t.stopPropagation(),t.nativeEvent&&typeof t.nativeEvent.stopPropagation=="function"?t.nativeEvent.stopPropagation():typeof t.stopImmediatePropagation=="function"&&t.stopImmediatePropagation())}})}constructor(e,t){var n;super(e),n=this,this._warnIfNoKey=()=>{(this.props.rowSelection||this.props.expandedRowRender)&&Nt(this.props.dataSource,u=>this.foundation.getRecordKey(u)==null)&&bt.error('You must specify a key for each element in the dataSource or use "rowKey" to specify an attribute name as the primary key!')},this._invokeRowSelection=function(u){const h=x(n.state,["rowSelection",u]);if(typeof h=="function"){for(var g=arguments.length,m=new Array(g>1?g-1:0),y=1;y2?g-2:0),y=2;y{this.headerWrapRef.current=u},this.getCurrentPageData=()=>{const u=this.foundation.getCurrentPageData(),h=["dataSource","groups"].reduce((g,m)=>(u[m]&&(g[m]=u[m]),g),{});return we(h)},this.getColumns=(u,h)=>!Array.isArray(u)||!u||!u.length?Ut(h):u,this.getCellWidths=function(){return n.foundation.getCellWidths(...arguments)},this.setHeadWidths=function(){return n.foundation.setHeadWidths(...arguments)},this.getHeadWidths=function(){return n.foundation.getHeadWidths(...arguments)},this.mergedRowExpandable=function(){return n.foundation.mergedRowExpandable(...arguments)},this.setBodyHasScrollbar=function(){return n.foundation.setBodyHasScrollbar(...arguments)},this.handleWheel=u=>{const{scroll:h={}}=this.props;if(window.navigator.userAgent.match(/Trident\/7\./)&&h.y){u.preventDefault();const g=u.deltaY,{target:m}=u,y=this.bodyWrapRef.current;let p=0;this.lastScrollTop?p=this.lastScrollTop+g:p=g,y&&m!==y&&(y.scrollTop=p)}},this.handleBodyScrollLeft=u=>{if(u.currentTarget!==u.target)return;const{target:h}=u,g=this.headerWrapRef.current,m=this.bodyWrapRef.current;h.scrollLeft!==this.lastScrollLeft&&(h===m&&g?g.scrollLeft=h.scrollLeft:h===g&&m&&(m.scrollLeft=h.scrollLeft),this.setScrollPositionClassName()),this.lastScrollLeft=h.scrollLeft},this.handleWindowResize=()=>{this.syncTableWidth(),this.setScrollPositionClassName()},this.handleBodyScrollTop=u=>{const{target:h}=u;if(u.currentTarget!==h)return;const{scroll:g={}}=this.props,m=this.headerWrapRef.current,y=this.bodyWrapRef.current;if(h.scrollTop!==this.lastScrollTop&&g.y&&h!==m){const{scrollTop:p}=h;y&&h!==y&&(y.scrollTop=p)}this.lastScrollTop=h.scrollTop},this.handleBodyScroll=u=>{this.handleBodyScrollLeft(u),this.handleBodyScrollTop(u)},this.setScrollPosition=u=>{const{prefixCls:h}=this.props,g=[`${h}-scroll-position-both`,`${h}-scroll-position-middle`,`${h}-scroll-position-left`,`${h}-scroll-position-right`];this.position=u,this.scrollPosition=u;const m=this.wrapRef.current;if(m&&m.nodeType)if(u==="both"){const y=[`${h}-scroll-position-left`,`${h}-scroll-position-right`];m.classList.remove(...vr(g,y)),m.classList.add(...y)}else{const y=[`${h}-scroll-position-${u}`];m.classList.remove(...vr(g,y)),m.classList.add(...y)}},this.setScrollPositionClassName=()=>{const u=this.bodyWrapRef.current;if(u&&u.children&&u.children.length){const h=u.scrollLeft===0,g=Math.abs(u.scrollLeft)+1>=u.children[0].getBoundingClientRect().width-u.getBoundingClientRect().width;h&&g?this.setScrollPosition("both"):h?this.setScrollPosition("left"):g?this.setScrollPosition("right"):this.scrollPosition!=="middle"&&this.setScrollPosition("middle")}},this.syncTableWidth=()=>{var u;const h=(u=this.rootWrapRef)===null||u===void 0?void 0:u.current;if(!h)return;const g=h.getBoundingClientRect().width,m=this.state.tableWidth;typeof m=="number"&&Math.abs(m-g)<.5||this.setState({tableWidth:g})},this.observeTableWrapperResize=()=>{const u=this.rootWrapRef.current;if(!u)return;this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null);const h=x(window,"ResizeObserver");h&&(this.resizeObserver=new h(g=>{const m=()=>{this.syncTableWidth(),this.setScrollPositionClassName()};typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(m):window.setTimeout(m,0)}),this.resizeObserver.observe(u))},this.needSyncTableWidth=()=>this.adapter.isAnyColumnFixed()||this.props.showHeader&&this.adapter.useFixedHeader(),this.bindWindowResize=()=>{this.hasBindWindowResize||this.debouncedWindowResize&&(window.addEventListener("resize",this.debouncedWindowResize),this.hasBindWindowResize=!0)},this.unbindWindowResize=()=>{this.hasBindWindowResize&&(this.debouncedWindowResize&&window.removeEventListener("resize",this.debouncedWindowResize),this.hasBindWindowResize=!1)},this.syncResizeListeners=()=>{if(this.needSyncTableWidth()){const h=this.hasBindWindowResize;this.bindWindowResize(),this.resizeObserver||this.observeTableWrapperResize(),h||this.handleWindowResize()}else this.unbindWindowResize(),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)},this.renderSelection=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,g=arguments.length>2?arguments[2]:void 0;const{rowSelection:m,allDisabledRowKeysSet:y,halfCheckedRowKeysSet:p,keyEntities:f}=n.state;if(m&&typeof m=="object"){const{selectedRowKeys:S=[],selectedRowKeysSet:v=new Set,getCheckboxProps:w,disabled:_,renderCell:O,checkRelation:I="unRelated"}=m,E=n.cachedFilteredSortedRowKeys,k=n.cachedFilteredSortedRowKeysSet,N=n.foundation.allIsSelected(v,y,E),A=n.foundation.hasRowSelected(S,k)&&!N;if(h){const F=x(m,"key",B.DEFAULT_KEY_COLUMN_SELECTION),K=b.createElement(Vt,{"aria-label":`${N?"Deselect":"Select"} all rows`,disabled:_,key:F,selected:N,indeterminate:A,onChange:(q,V)=>{n.toggleSelectAllRow(q,V)}}),z=(q,V)=>n.toggleSelectAllRow(q,V);return ue(O)?O({selected:N,record:u,originNode:K,inHeader:h,disabled:_,indeterminate:A,selectAll:z}):K}else{const F=n.foundation.getRecordKey(u),K=v.has(F),z=I==="related"&&p&&p.has(F),q=()=>typeof w=="function"?w(u):{},V=b.createElement(Vt,{"aria-label":`${K?"Deselect":"Select"} this row`,getCheckboxProps:q,selected:K,indeterminate:z,onChange:(G,se)=>n.toggleSelectRow(G,F,se)}),W=(G,se)=>n.toggleSelectRow(G,F,se);return ue(O)?O({selected:K,record:u,index:g,originNode:V,inHeader:!1,disabled:_,indeterminate:z,selectRow:W}):V}}return null},this.renderRowSelectionCallback=function(u){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},g=arguments.length>2?arguments[2]:void 0;return n.renderSelection(h,!1,g)},this.renderTitleSelectionCallback=()=>this.renderSelection(void 0,!0),this.normalizeSelectionColumn=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{rowSelection:h,prefixCls:g}=u;let m={};if(h){const y=["selectedRowKeys","selectedRowKeysSet"];m={key:B.DEFAULT_KEY_COLUMN_SELECTION},Re(h)&&(m=Object.assign(Object.assign({},m),ye(h,y))),m.className=M(m.className,`${g}-column-selection`),m.title=n.renderTitleSelectionCallback,m.render=n.renderRowSelectionCallback}return m},this.normalizeScrollbarColumn=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{scrollbarWidth:h=0}=u;return{key:B.DEFAULT_KEY_COLUMN_SCROLLBAR,width:h,fixed:"right"}},this.renderExpandIcon=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;const{expandedRowKeys:m}=n.state,{expandIcon:y}=n.props,p=typeof g=="string"||typeof g=="number"?g:n.foundation.getRecordKey(u);return b.createElement(xu,{key:p,componentType:h?"tree":"expand",expanded:Kt(m,p),expandIcon:y,onClick:(f,S)=>n.handleRowExpanded(f,p,S)})},this.handleRowExpanded=function(){return n.foundation.handleRowExpanded(...arguments)},this.normalizeExpandColumn=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=null;const{prefixCls:g,expandCellFixed:m,expandIcon:y}=u;return h={fixed:m,key:B.DEFAULT_KEY_COLUMN_EXPAND},h.className=M(h.className,`${g}-column-expand`),h.render=y!==!1?function(){let p=arguments.length>1?arguments[1]:void 0;return n.adapter.mergedRowExpandable(p)?n.renderExpandIcon(p):null}:()=>null,h},this.addFnsInColumn=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{prefixCls:h}=n.props;if(u&&(u.sorter||u.filters||u.onFilter||u.useFullRender)){let g=typeof u.sorter=="function"||u.sorter===!0,m=Array.isArray(u.filters)&&u.filters.length||L.isValidElement(u.filterDropdown)||typeof u.renderFilterDropdown=="function",y=!1;const f=!("sortOrder"in u)&&u.showSortTip===!0,{dataIndex:S,title:v,useFullRender:w}=u,_=g&&!m&&!w,O=n.foundation.getQuery(S),I={},E=[];w&&(I.selection=n.renderSelection(null,!0));const k=x(O,"sortOrder"),N=x(O,"defaultSortOrder",!1),P=n.foundation.isSortOrderValid(k)?k:N,A=Zs(u.ellipsis),F=typeof v!="function"&&b.createElement("span",{className:`${h}-row-head-title`,key:B.DEFAULT_KEY_COLUMN_TITLE,title:A&&typeof v=="string"?v:void 0},v);if(g){const W=b.createElement(Js,{key:B.DEFAULT_KEY_COLUMN_SORTER,sortOrder:P,sortIcon:u.sortIcon,onClick:w||m?G=>n.foundation.handleSort(u,G):null,title:F,showTooltip:!_&&f});w&&(I.sorter=W),y=!0,E.push(W)}else E.push(F);const K=x(O,"filteredValue"),z=x(O,"defaultFilteredValue"),q=K||z;if(m){const W=b.createElement(Cu,Object.assign({key:B.DEFAULT_KEY_COLUMN_FILTER},ye(O,"children"),{filteredValue:q,onFilterDropdownVisibleChange:G=>n.foundation.toggleShowFilter(S,G),onSelect:G=>n.foundation.handleFilterSelect(S,G)}));w&&(I.filter=W),y=!0,E.push(W)}const V=typeof v=="function"?()=>v(I):y?b.createElement("div",{className:`${h}-operate-wrapper`},E):E;u=Object.assign(Object.assign({},u),{title:V}),_&&(u.clickToSort=W=>{n.foundation.handleSort(u,W,!0)},u.mouseDown=n.foundation.handleMouseDown,u.sortOrder=P,u.showSortTip=f)}return u},this.toggleSelectRow=(u,h,g)=>{this.foundation.handleSelectRow(h,u,g)},this.handleRowClickSelection=(u,h,g)=>{const{rowSelection:m}=this.state;if(x(m,"clickRow",!1)&&m){const p=x(m,"disabled",!1),f=x(m,"getCheckboxProps");if(p)return;const S=this.cachedFilteredSortedDataSource.find(v=>this.foundation.getRecordKey(v)===u);if(S&&typeof f=="function"&&f(S).disabled)return;this.foundation.handleSelectRow(u,h,g)}},this.toggleSelectAllRow=(u,h)=>{this.foundation.handleSelectAllRow(u,h)},this.renderPagination=(u,h)=>{if(!u)return null;const g=this.foundation.memoizedPagination(u);return b.createElement(Ee,{componentName:"Table"},m=>{const y=this.foundation.formatPaginationInfo(g,m.pageText);return b.createElement(Qs,{info:y,pagination:g,renderPagination:h})})},this.renderTitle=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{title:h}=u;const{prefixCls:g,dataSource:m}=u;return typeof h=="function"&&(h=h(m)),L.isValidElement(h)||typeof h=="string"?b.createElement("div",{className:`${g}-title`,"x-semi-prop":"title"},h):null},this.renderEmpty=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{prefixCls:h,empty:g,dataSource:m}=u,y=`${h}-placeholder`;return n.foundation.isEmpty(m)?b.createElement(Ee,{componentName:"Table",key:"emptyText"},(f,S)=>b.createElement("div",{className:y},b.createElement("div",{className:`${h}-empty`,"x-semi-prop":"empty"},g||f.emptyText))):null},this.renderFooter=function(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{footer:h}=u;const{prefixCls:g,dataSource:m}=u;return typeof h=="function"&&(h=h(m)),L.isValidElement(h)||typeof h=="string"?b.createElement("div",{className:`${g}-footer`,key:"footer","x-semi-prop":"footer"},h):null},this.renderMainTable=u=>{const h=this.adapter.useFixedHeader(),g=this.renderEmpty(u);return[this.renderTable(Object.assign(Object.assign({},u),{fixed:!1,useFixedHeader:h,headerRef:this._cacheHeaderRef,bodyRef:this.bodyWrapRef,includeHeader:!h,emptySlot:g})),this.renderFooter(u)]},this.renderTable=u=>{const{columns:h,filteredColumns:g,fixed:m,useFixedHeader:y,scroll:p,prefixCls:f,anyColumnFixed:S,includeHeader:v,showHeader:w,components:_,headerRef:O,bodyRef:I,onHeaderRow:E,rowSelection:k,dataSource:N,bodyHasScrollBar:P,disabledRowKeysSet:A,sticky:F}=u,K=x(k,"selectedRowKeysSet",new Set),z=this.adapter.getTableLayout(),q=m||y?b.createElement(Pu,{key:"head",tableLayout:z,ref:O,columns:g,prefixCls:f,fixed:m,handleBodyScroll:this.handleBodyScrollLeft,components:_,scroll:p,showHeader:w,selectedRowKeysSet:K,onHeaderRow:E,dataSource:N,bodyHasScrollBar:P,sticky:F}):null,V=b.createElement(Gu,Object.assign({},ye(u,["rowSelection","headWidths"]),{key:"body",ref:I,columns:g,fixed:m,prefixCls:f,handleWheel:this.handleWheel,handleBodyScroll:this.handleBodyScroll,anyColumnFixed:S,tableLayout:z,includeHeader:v,showHeader:w,scroll:p,components:_,store:this.store,selectedRowKeysSet:K,disabledRowKeysSet:A}));return[q,V]},this.handleColumns=(u,h)=>{const{hideExpandedColumn:g,scroll:m,prefixCls:y,expandCellFixed:p,expandIcon:f,rowSelection:S}=this.props,v="children";let w=we(h);const _=function(){let O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];Array.isArray(O)&&O.length&&le(O,(I,E,k)=>{const N=n.addFnsInColumn(I),P=I[v];if(Array.isArray(P)&&P.length){const A=[...P];_(A),N[v]=A}k[E]=N})};if(_(w),!g){const O=this.normalizeExpandColumn({prefixCls:y,expandCellFixed:p,expandIcon:f}),I=Ze(w,E=>E.key===B.DEFAULT_KEY_COLUMN_EXPAND);O&&(I>-1?w[I]=Object.assign(Object.assign({},O),w[I]):O.fixed==="right"?w=[...w,O]:w=[O,...w])}if(S&&!x(S,"hidden")){const O=Ze(w,E=>E.key===B.DEFAULT_KEY_COLUMN_SELECTION),I=this.normalizeSelectionColumn({rowSelection:S,prefixCls:y});O>-1?w[O]=Object.assign(Object.assign({},I),w[O]):I.fixed==="right"?w=[...w,I]:w=[I,...w]}return Wt(w),w},this.normalizeColumns=(u,h)=>we(this.getColumns(u,h)),this.mergePagination=u=>{const h=u==null?void 0:u.onChange,{scroll:g}=this.props;return x(g,"scrollToFirstRowOnChange")?Object.assign(Object.assign({},u),{onChange:(f,S)=>{this.foundation.setPage(f,S),typeof h=="function"&&h(f,S)}}):Object.assign({onChange:this.foundation.setPage},u)},this.foundation=new vt(this.adapter);const s=this.getColumns(e.columns,e.children),r=Ye(s),o=vt.initColumnsFilteredValueAndSorterOrder(we(r)),l=this.foundation.getFilteredSortedDataSource(this.props.dataSource,o),c=bd(this.props.pagination)?this.props.pagination:{},d=this.foundation.getCurrentPageData(l,c,o);this.state={cachedColumns:s,cachedChildren:e.children,flattenColumns:r,components:Ro(e.components,e.virtualized),queries:o,dataSource:d.dataSource,flattenData:[],expandedRowKeys:[...e.expandedRowKeys||[],...e.defaultExpandedRowKeys||[]],rowSelection:e.rowSelection?Re(e.rowSelection)?Object.assign({},e.rowSelection):{}:null,pagination:d.pagination,groups:null,allRowKeys:[],disabledRowKeys:[],disabledRowKeysSet:new Set,allDisabledRowKeys:[],allDisabledRowKeysSet:new Set,headWidths:[],bodyHasScrollBar:!1,prePropRowSelection:void 0,prePagination:void 0,halfCheckedRowKeys:[],halfCheckedRowKeysSet:new Set,keyEntities:{}},this.rootWrapRef=L.createRef(),this.wrapRef=L.createRef(),this.bodyWrapRef=L.createRef(),this.headerWrapRef=L.createRef(),this.store=new lu({hoveredRowKey:null,hoveredRowKeys:[]}),this.debouncedWindowResize=ul(this.handleWindowResize,150),this.cachedFilteredSortedDataSource=[],this.cachedFilteredSortedRowKeys=[],this.cachedFilteredSortedRowKeysSet=new Set,this.resizeObserver=null,this.hasBindWindowResize=!1}static getDerivedStateFromProps(e,t){const n={},{rowSelection:s,dataSource:r,childrenRecordName:o,rowKey:l,pagination:c}=e;if(e.columns&&e.children&&bt.warn("columns should not given by object and children at the same time"),e.columns&&e.columns!==t.cachedColumns){const d=Ye(e.columns);n.flattenColumns=d,n.queries=Ts(t.queries,d,null,!1),n.cachedColumns=e.columns,n.cachedChildren=null}else if(e.children&&e.children!==t.cachedChildren){const d=Ut(e.children),u=Ye(d),h=Ts(t.queries,u,null,!1);n.flattenColumns=u,n.queries=[...h],n.cachedColumns=[...d],n.cachedChildren=e.children}if(s!==t.prePropRowSelection){let d={};Re(t.rowSelection)&&(d=Object.assign(Object.assign({},d),t.rowSelection)),Re(s)&&(d=Object.assign(Object.assign({},d),s));const u=x(s,"selectedRowKeys"),h=x(s,"getCheckboxProps");if(u&&Array.isArray(u)&&(d.selectedRowKeysSet=new Set(u)),ue(h)){const g=Qi({dataSource:r,getCheckboxProps:h,childrenRecordName:o,rowKey:l}),m=new Set(g);n.disabledRowKeys=g,n.disabledRowKeysSet=m,n.allDisabledRowKeys=g,n.allDisabledRowKeysSet=m}n.rowSelection=d,n.prePropRowSelection=s}if(c!==t.prePagination){let d={};Re(t.pagination)&&(d=Object.assign(Object.assign({},d),t.pagination)),Re(c)&&(d=Object.assign(Object.assign({},d),c)),n.pagination=d,n.prePagination=c}return n}componentDidMount(){super.componentDidMount(),this.setScrollPosition("left");const{dataSource:e,childrenRecordName:t}=this.props;if(x(this.state.rowSelection,"checkRelation","unRelated")==="related"&&e&&e.length){const s=this.foundation.buildKeyEntities(e);this.adapter.setKeyEntities(s)}typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(()=>this.setScrollPositionClassName()):setTimeout(()=>this.setScrollPositionClassName(),0),this.syncResizeListeners()}componentDidUpdate(e,t){const{dataSource:n,expandedRowKeys:s,expandAllRows:r,expandAllGroupRows:o,virtualized:l,components:c,pagination:d}=this.props,{pagination:u,queries:h,cachedColumns:g,cachedChildren:m,groups:y}=this.state,p={};this._warnIfNoKey(),Array.isArray(s)&&s!==e.expandedRowKeys&&this.setState({expandedRowKeys:s}),(c!==e.components||l!==e.virtualized)&&this.setState({components:Ro(c,l)}),(r!==e.expandAllRows||o!==e.expandAllGroupRows)&&this.foundation.initExpandedRowKeys({groups:y});const f=x(this.props.rowSelection,"getCheckboxProps"),S=x(e.rowSelection,"getCheckboxProps");if(n!==e.dataSource||h!==t.queries||f!==S){const v=[...n],w=this.foundation.getFilteredSortedDataSource(v,h),_=this.foundation.getAllDisabledRowKeys(w);if(this.foundation.setCachedFilteredSortedDataSource(w),this.foundation.setAllDisabledRowKeys(_),p.dataSource=w,x(this.state.rowSelection,"checkRelation","unRelated")==="related"){const I=this.foundation.buildKeyEntities(v);this.adapter.setKeyEntities(I)}this.props.groupBy&&(p.groups=null)}if(n!==e.dataSource&&(p.pagination=Re(u)?Object.assign(Object.assign({},u),{currentPage:Re(d)&&d.currentPage?d.currentPage:1}):u),Object.keys(p).length){const{pagination:v=null,queries:w=null,dataSource:_=null}=p,O=this.foundation.getCurrentPageData(_,v,w);this.adapter.setAllRowKeys(O.allRowKeys),this.adapter.setDisabledRowKeys(O.disabledRowKeys),"dataSource"in p&&((this.props.defaultExpandAllRows&&O.groups&&O.groups.size||this.props.expandAllRows||this.props.expandAllGroupRows)&&this.foundation.initExpandedRowKeys(O),p.pagination=O.pagination);const I=Object.keys(p);for(const E of I)this.setState({[E]:O[E]})}this.syncResizeListeners()}componentWillUnmount(){super.componentWillUnmount(),this.unbindWindowResize(),this.debouncedWindowResize&&(this.debouncedWindowResize.cancel(),this.debouncedWindowResize=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}render(){let e=this.props,{scroll:t,prefixCls:n,className:s,style:r={},bordered:o,id:l,pagination:c,virtualized:d,size:u,renderPagination:h,getVirtualizedListRef:g,loading:m,hideExpandedColumn:y,rowSelection:p}=e,f=Yu(e,["scroll","prefixCls","className","style","bordered","id","pagination","virtualized","size","renderPagination","getVirtualizedListRef","loading","hideExpandedColumn","rowSelection"]),{rowSelection:S,expandedRowKeys:v,headWidths:w,tableWidth:_,pagination:O,dataSource:I,queries:E,cachedColumns:k,bodyHasScrollBar:N}=this.state;r=Object.assign({},r);let P;if(this.adapter.isAnyColumnUseFullRender(E))P=this.handleColumns(E,k);else{const oe=p&&!x(p,"hidden");P=this.foundation.memoizedWithFnsColumns(E,k,oe,y,N)}const A=this.foundation.memoizedFilterColumns(P),F=this.foundation.memoizedFlattenFnsColumns(P),K=this.adapter.isAnyColumnFixed(P),z=Object.assign(Object.assign(Object.assign({},f),this.state),{virtualized:d,scroll:t,prefixCls:n,size:u,hideExpandedColumn:y,columns:P,anyColumnFixed:K,rowExpandable:this.mergedRowExpandable,pagination:O,dataSource:I,rowSelection:S,expandedRowKeys:v,renderExpandIcon:this.renderExpandIcon,filteredColumns:A}),q=x(t,"x"),V=x(t,"y");d&&typeof r.width!="number"&&(r.width=q);const W=M({[`${n}-${B.SIZE_SMALL}`]:u===B.SIZE_SMALL,[`${n}-${B.SIZE_MIDDLE}`]:u===B.SIZE_MIDDLE,[`${n}-virtualized`]:!!d,[`${n}-bordered`]:o,[`${n}-fixed-header`]:!!V,[`${n}-scroll-position-left`]:["both","left"].includes(this.position),[`${n}-scroll-position-right`]:["both","right"].includes(this.position)}),G=O&&c?this.renderPagination(O,h):null,se=x(c,"position","bottom"),Q=Object.assign(Object.assign({},this.context),{headWidths:w,tableWidth:_,anyColumnFixed:K,flattenedColumns:F,renderExpandIcon:this.renderExpandIcon,renderSelection:this.renderSelection,setHeadWidths:this.setHeadWidths,getHeadWidths:this.getHeadWidths,getCellWidths:this.getCellWidths,handleRowExpanded:this.handleRowExpanded,getVirtualizedListRef:g,setBodyHasScrollbar:this.setBodyHasScrollbar,handleRowSelection:this.handleRowClickSelection,headerStyle:z.headerStyle,rowSpanHover:z.rowSpanHover}),pe=this.getDataAttr(f);return b.createElement("div",Object.assign({ref:this.rootWrapRef,className:M(s,`${n}-wrapper`,`${n}-wrapper-${z.direction}`),"data-column-fixed":K,style:r,id:l},pe),b.createElement(Su,Object.assign({},Q,{direction:z.direction}),b.createElement(mi,{spinning:m,size:"large"},b.createElement("div",{ref:this.wrapRef,className:W},b.createElement(b.Fragment,{key:"pagination-top"},["top","both"].includes(se)?G:null),this.renderTitle({title:z.title,dataSource:z.dataSource,prefixCls:z.prefixCls}),b.createElement("div",{className:`${n}-container`},this.renderMainTable(Object.assign({},z))),b.createElement(b.Fragment,{key:"pagination-bottom"},["bottom","both"].includes(se)?G:null)))))}};ot.contextType=ke;ot.propTypes={className:a.string,style:a.object,prefixCls:a.string,components:a.any,bordered:a.bool,loading:a.bool,size:a.oneOf(B.SIZES),tableLayout:a.oneOf(B.LAYOUTS),columns:a.arrayOf(a.shape(ea)),hideExpandedColumn:a.bool,id:a.string,expandIcon:a.oneOfType([a.bool,a.func,a.node]),expandCellFixed:a.oneOf(B.FIXED_SET),title:a.oneOfType([a.string,a.node,a.func]),onHeaderRow:a.func,showHeader:a.bool,indentSize:a.number,rowKey:a.oneOfType([a.func,a.string,a.number]),onRow:a.func,onExpandedRowsChange:a.func,onExpand:a.func,rowExpandable:a.func,expandedRowRender:a.func,expandedRowKeys:a.array,defaultExpandAllRows:a.bool,expandAllRows:a.bool,defaultExpandAllGroupRows:a.bool,expandAllGroupRows:a.bool,defaultExpandedRowKeys:a.array,pagination:a.oneOfType([a.object,a.bool]),renderPagination:a.func,footer:a.oneOfType([a.func,a.string,a.node]),empty:a.node,dataSource:a.array,childrenRecordName:a.string,rowSelection:a.oneOfType([a.object,a.bool]),onChange:a.func,scroll:a.shape({x:a.oneOfType([a.number,a.string,a.bool]),y:a.oneOfType([a.number,a.string])}),groupBy:a.oneOfType([a.string,a.number,a.func]),headerStyle:a.object,renderGroupSection:a.oneOfType([a.func]),onGroupedRow:a.func,clickGroupedRowToExpand:a.bool,virtualized:a.oneOfType([a.object,a.bool]),dropdownPrefixCls:a.string,expandRowByClick:a.bool,getVirtualizedListRef:a.func,rowSpanHover:a.bool};ot.defaultProps={tableLayout:"",dataSource:[],prefixCls:ce.PREFIX,rowSelection:null,className:"",childrenRecordName:"children",size:"default",loading:!1,bordered:!1,expandCellFixed:!1,hideExpandedColumn:!0,showHeader:!0,indentSize:ne.DEFAULT_INDENT_WIDTH,onChange:H,pagination:!0,rowKey:"key",defaultExpandedRowKeys:[],defaultExpandAllRows:!1,defaultExpandAllGroupRows:!1,expandAllRows:!1,expandAllGroupRows:!1,onFilterDropdownVisibleChange:H,onExpand:H,onExpandedRowsChange:H,expandRowByClick:!1};var gs,Mo;function Xu(){if(Mo)return gs;Mo=1;var i=ai();function e(t,n,s){var r=t.length;return s=s===void 0?r:s,!n&&s>=r?t:i(t,n,s)}return gs=e,gs}var ms,jo;function Zu(){if(jo)return ms;jo=1;var i=Xa(),e=Za(),t="[object RegExp]";function n(s){return e(s)&&i(s)==t}return ms=n,ms}var bs,zo;function Qu(){if(zo)return bs;zo=1;var i=Zu(),e=di(),t=Qa(),n=t&&t.isRegExp,s=n?e(n):i;return bs=s,bs}var ys,Fo;function Ju(){if(Fo)return ys;Fo=1;function i(e){return e.split("")}return ys=i,ys}var Ss,Ko;function eh(){if(Ko)return Ss;Ko=1;var i="\\ud800-\\udfff",e="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",s=e+t+n,r="\\ufe0e\\ufe0f",o="["+i+"]",l="["+s+"]",c="\\ud83c[\\udffb-\\udfff]",d="(?:"+l+"|"+c+")",u="[^"+i+"]",h="(?:\\ud83c[\\udde6-\\uddff]){2}",g="[\\ud800-\\udbff][\\udc00-\\udfff]",m="\\u200d",y=d+"?",p="["+r+"]?",f="(?:"+m+"(?:"+[u,h,g].join("|")+")"+p+y+")*",S=p+y+f,v="(?:"+[u+l+"?",l,h,g,o].join("|")+")",w=RegExp(c+"(?="+c+")|"+v+S,"g");function _(O){return O.match(w)||[]}return Ss=_,Ss}var ws,$o;function th(){if($o)return ws;$o=1;var i=Ju(),e=nr(),t=eh();function n(s){return e(s)?t(s):i(s)}return ws=n,ws}var vs,Bo;function nh(){if(Bo)return vs;Bo=1;var i=Ja(),e=Xu(),t=nr(),n=Ns(),s=Qu(),r=th(),o=el(),l=4294967295;function c(d,u,h){return h&&typeof h!="number"&&n(d,u,h)&&(u=h=void 0),h=h===void 0?l:h>>>0,h?(d=o(d),d&&(typeof u=="string"||u!=null&&!s(u))&&(u=i(u),!u&&t(d))?e(r(d),0,h):d.split(u,h)):[]}return vs=c,vs}var sh=nh();const aa=te(sh);function rh(i){const e=aa(i,/\s+/);for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s!e.includes(o));return M(i,...r)}function oh(i){const e=aa(i,/\s+/);for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s{const o=e.indexOf(r);o>-1&&e.splice(o,1)}),M(...e)}var ct={exports:{}},dt={},ut={exports:{}},Tt={exports:{}},Ho;function ih(){if(Ho)return Tt.exports;Ho=1;function i(t){var n,s,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var o=t.length;for(n=0;n{for(var T in R)t(C,T,{get:R[T],enumerable:!0})},c=(C,R,T,D)=>{if(R&&typeof R=="object"||typeof R=="function")for(let j of s(R))!o.call(C,j)&&j!==T&&t(C,j,{get:()=>R[j],enumerable:!(D=n(R,j))||D.enumerable});return C},d=(C,R,T)=>(T=C!=null?e(r(C)):{},c(!C||!C.__esModule?t(T,"default",{value:C,enumerable:!0}):T,C)),u=C=>c(t({},"__esModule",{value:!0}),C),h={};l(h,{DraggableCore:()=>Le,default:()=>Rt}),Cs=u(h);var g=d(St()),m=d(zt()),y=d(pr()),p=ih();function f(C,R){for(let T=0,D=C.length;T"u")return"";const D=(T=(R=window.document)==null?void 0:R.documentElement)==null?void 0:T.style;if(!D||C in D)return"";for(let j=0;jR===T.identifier)||C.changedTouches&&f(C.changedTouches,T=>R===T.identifier)}function ie(C){if(C.targetTouches&&C.targetTouches[0])return C.targetTouches[0].identifier;if(C.changedTouches&&C.changedTouches[0])return C.changedTouches[0].identifier}function Ot(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0}function ha(C,R){if(!C)return;let T=C.getElementById("react-draggable-style-el");if(!T){T=C.createElement("style"),T.type="text/css",T.id="react-draggable-style-el";const D=R??Ot();D&&T.setAttribute("nonce",D),T.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;} -`,T.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;} -`,C.getElementsByTagName("head")[0].appendChild(T)}C.body&&pa(C.body,"react-draggable-transparent-selection")}function or(C){window.requestAnimationFrame?window.requestAnimationFrame(()=>{ir(C)}):ir(C)}function ir(C){if(C)try{C.body&&fa(C.body,"react-draggable-transparent-selection");const R=C.selection;if(R)R.empty();else{const T=(C.defaultView||window).getSelection();T&&T.type!=="Caret"&&T.removeAllRanges()}}catch{}}function pa(C,R){C.classList?C.classList.add(R):C.className.match(new RegExp(`(?:^|\\s)${R}(?!\\S)`))||(C.className+=` ${R}`)}function fa(C,R){C.classList?C.classList.remove(R):C.className=C.className.replace(new RegExp(`(?:^|\\s)${R}(?!\\S)`,"g"),"")}function ga(C,R,T){if(!C.props.bounds)return[R,T];let{bounds:D}=C.props;D=typeof D=="string"?D:ya(D);const j=fn(C);if(typeof D=="string"){const{ownerDocument:J}=j,Y=J.defaultView;if(!Y)throw new Error("Cannot resolve the owner window of the draggable node.");let ee;if(D==="parent"?ee=j.parentNode:ee=j.getRootNode().querySelector(D),!(ee instanceof Y.HTMLElement))throw new Error('Bounds selector "'+D+'" could not find an element.');const fe=ee,Me=Y.getComputedStyle(j),Ue=Y.getComputedStyle(fe);D={left:-j.offsetLeft+w(Ue.paddingLeft)+w(Me.marginLeft),top:-j.offsetTop+w(Ue.paddingTop)+w(Me.marginTop),right:G(fe)-V(j)-j.offsetLeft+w(Ue.paddingRight)-w(Me.marginRight),bottom:W(fe)-q(j)-j.offsetTop+w(Ue.paddingBottom)-w(Me.marginBottom)}}return v(D.right)&&(R=Math.min(R,D.right)),v(D.bottom)&&(T=Math.min(T,D.bottom)),v(D.left)&&(R=Math.max(R,D.left)),v(D.top)&&(T=Math.max(T,D.top)),[R,T]}function ar(C,R,T){const D=Math.round(R/C[0])*C[0],j=Math.round(T/C[1])*C[1];return[D,j]}function ma(C){return C.props.axis==="both"||C.props.axis==="x"}function ba(C){return C.props.axis==="both"||C.props.axis==="y"}function un(C,R,T){const D=typeof R=="number"?de(C,R):null;if(typeof R=="number"&&!D)return null;const j=fn(T),J=T.props.offsetParent||j.offsetParent||j.ownerDocument.body;return se(D||C,J,T.props.scale)}function hn(C,R,T){const D=!v(C.lastX),j=fn(C);return D?{node:j,deltaX:0,deltaY:0,lastX:R,lastY:T,x:R,y:T}:{node:j,deltaX:R-C.lastX,deltaY:T-C.lastY,lastX:C.lastX,lastY:C.lastY,x:R,y:T}}function pn(C,R){const T=C.props.scale;return{node:R.node,x:C.state.x+R.deltaX/T,y:C.state.y+R.deltaY/T,deltaX:R.deltaX/T,deltaY:R.deltaY/T,lastX:C.state.x,lastY:C.state.y}}function ya(C){return{left:C.left,top:C.top,right:C.right,bottom:C.bottom}}function fn(C){const R=C.findDOMNode();if(!R)throw new Error(": Unmounted during event!");return R}var gn=d(St()),ae=d(zt()),Sa=d(pr());function Se(...C){i.DRAGGABLE_DEBUG&&console.log(...C)}var me={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}},Ie=me.mouse,Le=class extends gn.Component{constructor(){super(...arguments),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,this.touchIdentifier=null,this.mounted=!1,this.handleDragStart=C=>{if(this.props.onMouseDown(C),!this.props.allowAnyClick&&(typeof C.button=="number"&&C.button!==0||C.ctrlKey))return!1;const R=this.findDOMNode();if(!R||!R.ownerDocument||!R.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:T}=R;if(this.props.disabled||!(C.target instanceof T.defaultView.Node)||this.props.handle&&!F(C.target,this.props.handle,R)||this.props.cancel&&F(C.target,this.props.cancel,R))return;C.type==="touchstart"&&!this.props.allowMobileScroll&&C.preventDefault();const D=ie(C);this.touchIdentifier=D;const j=un(C,D,this);if(j==null)return;const{x:J,y:Y}=j,ee=hn(this,J,Y);Se("DraggableCore: handleDragStart: %j",ee),Se("calling",this.props.onStart),!(this.props.onStart(C,ee)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&ha(T,this.props.nonce),this.dragging=!0,this.lastX=J,this.lastY=Y,K(T,Ie.move,this.handleDrag),K(T,Ie.stop,this.handleDragStop))},this.handleDrag=C=>{const R=un(C,this.touchIdentifier,this);if(R==null)return;let{x:T,y:D}=R;if(Array.isArray(this.props.grid)){let Y=T-this.lastX,ee=D-this.lastY;if([Y,ee]=ar(this.props.grid,Y,ee),!Y&&!ee)return;T=this.lastX+Y,D=this.lastY+ee}const j=hn(this,T,D);if(Se("DraggableCore: handleDrag: %j",j),this.props.onDrag(C,j)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const Y=document.createEvent("MouseEvents");Y.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(Y)}return}this.lastX=T,this.lastY=D},this.handleDragStop=C=>{if(!this.dragging)return;const R=un(C,this.touchIdentifier,this);if(R==null)return;let{x:T,y:D}=R;if(Array.isArray(this.props.grid)){let ee=T-this.lastX||0,fe=D-this.lastY||0;[ee,fe]=ar(this.props.grid,ee,fe),T=this.lastX+ee,D=this.lastY+fe}const j=hn(this,T,D);if(this.props.onStop(C,j)===!1||this.mounted===!1)return!1;const Y=this.findDOMNode();Y&&this.props.enableUserSelectHack&&or(Y.ownerDocument),Se("DraggableCore: handleDragStop: %j",j),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,Y&&(Se("DraggableCore: Removing handlers"),z(Y.ownerDocument,Ie.move,this.handleDrag),z(Y.ownerDocument,Ie.stop,this.handleDragStop))},this.onMouseDown=C=>(Ie=me.mouse,this.handleDragStart(C)),this.onMouseUp=C=>(Ie=me.mouse,this.handleDragStop(C)),this.onTouchStart=C=>(Ie=me.touch,this.handleDragStart(C)),this.onTouchEnd=C=>(Ie=me.touch,this.handleDragStop(C))}componentDidMount(){this.mounted=!0;const C=this.findDOMNode();C&&K(C,me.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const C=this.findDOMNode();if(C){const{ownerDocument:R}=C;z(R,me.mouse.move,this.handleDrag),z(R,me.touch.move,this.handleDrag),z(R,me.mouse.stop,this.handleDragStop),z(R,me.touch.stop,this.handleDragStop),z(C,me.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&or(R)}}findDOMNode(){var C;if((C=this.props)!=null&&C.nodeRef)return this.props.nodeRef.current;const R=Sa.default;return typeof R.findDOMNode=="function"?R.findDOMNode(this):(Se("react-draggable: ReactDOM.findDOMNode is not available in React 19+. You must provide a nodeRef prop. See: https://github.com/react-grid-layout/react-draggable#noderef"),null)}render(){return gn.cloneElement(gn.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};Le.displayName="DraggableCore",Le.propTypes={allowAnyClick:ae.default.bool,allowMobileScroll:ae.default.bool,children:ae.default.node.isRequired,disabled:ae.default.bool,enableUserSelectHack:ae.default.bool,offsetParent:function(C,R){if(C[R]&&C[R].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:ae.default.arrayOf(ae.default.number),handle:ae.default.string,cancel:ae.default.string,nodeRef:ae.default.object,nonce:ae.default.string,onStart:ae.default.func,onDrag:ae.default.func,onStop:ae.default.func,onMouseDown:ae.default.func,scale:ae.default.number,className:_,style:_,transform:_},Le.defaultProps={allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1};var Rt=class extends g.Component{constructor(C){super(C),this.onDragStart=(R,T)=>{if(Se("Draggable: onDragStart: %j",T),this.props.onStart(R,pn(this,T))===!1)return!1;this.setState({dragging:!0,dragged:!0})},this.onDrag=(R,T)=>{if(!this.state.dragging)return!1;Se("Draggable: onDrag: %j",T);const D=pn(this,T),j={x:D.x,y:D.y,slackX:0,slackY:0};if(this.props.bounds){const{x:Y,y:ee}=j;j.x+=this.state.slackX,j.y+=this.state.slackY;const[fe,Me]=ga(this,j.x,j.y);j.x=fe,j.y=Me,j.slackX=this.state.slackX+(Y-j.x),j.slackY=this.state.slackY+(ee-j.y),D.x=j.x,D.y=j.y,D.deltaX=j.x-this.state.x,D.deltaY=j.y-this.state.y}if(this.props.onDrag(R,D)===!1)return!1;this.setState(j)},this.onDragStop=(R,T)=>{if(!this.state.dragging||this.props.onStop(R,pn(this,T))===!1)return!1;Se("Draggable: onDragStop: %j",T);const j={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:Y,y:ee}=this.props.position;j.x=Y,j.y=ee}this.setState(j)},this.state={dragging:!1,dragged:!1,x:C.position?C.position.x:C.defaultPosition.x,y:C.position?C.position.y:C.defaultPosition.y,prevPropsPosition:{...C.position},slackX:0,slackY:0,isElementSVG:!1},C.position&&!(C.onDrag||C.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}static getDerivedStateFromProps({position:C},{prevPropsPosition:R}){return C&&(!R||C.x!==R.x||C.y!==R.y)?(Se("Draggable: getDerivedStateFromProps %j",{position:C,prevPropsPosition:R}),{x:C.x,y:C.y,prevPropsPosition:{...C}}):null}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){var C;if((C=this.props)!=null&&C.nodeRef)return this.props.nodeRef.current;const R=y.default;return typeof R.findDOMNode=="function"?R.findDOMNode(this):null}render(){const{axis:C,bounds:R,children:T,defaultPosition:D,defaultClassName:j,defaultClassNameDragging:J,defaultClassNameDragged:Y,position:ee,positionOffset:fe,scale:Me,...Ue}=this.props;let mn={},lr=null;const cr=!!!ee||this.state.dragging,dr=ee||D,ur={x:ma(this)&&cr?this.state.x:dr.x,y:ba(this)&&cr?this.state.y:dr.y};this.state.isElementSVG?lr=pe(ur,fe):mn=Q(ur,fe);const bn=g.Children.only(T),wa=(0,p.clsx)(bn.props.className||"",j,{[J]:this.state.dragging,[Y]:this.state.dragged});return g.createElement(Le,{...Ue,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop},g.cloneElement(bn,{className:wa,style:{...bn.props.style,...mn},transform:lr}))}};return Rt.displayName="Draggable",Rt.propTypes={...Le.propTypes,axis:m.default.oneOf(["both","x","y","none"]),bounds:m.default.oneOfType([m.default.shape({left:m.default.number,right:m.default.number,top:m.default.number,bottom:m.default.number}),m.default.string,m.default.oneOf([!1])]),defaultClassName:m.default.string,defaultClassNameDragging:m.default.string,defaultClassNameDragged:m.default.string,defaultPosition:m.default.shape({x:m.default.number,y:m.default.number}),positionOffset:m.default.shape({x:m.default.oneOfType([m.default.number,m.default.string]),y:m.default.oneOfType([m.default.number,m.default.string])}),position:m.default.shape({x:m.default.number,y:m.default.number}),className:_,style:_,transform:_},Rt.defaultProps={...Le.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1},Cs}var Uo;function la(){if(Uo)return ut.exports;Uo=1;const i=ah(),e=i.DraggableCore,t=i.default||i;return ut.exports=t,ut.exports.default=t,ut.exports.DraggableCore=e,ut.exports}var It={},Vo;function lh(){if(Vo)return It;Vo=1,It.__esModule=!0,It.cloneElement=l;var i=e(St());function e(c){return c&&c.__esModule?c:{default:c}}function t(c,d){var u=Object.keys(c);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(c);d&&(h=h.filter(function(g){return Object.getOwnPropertyDescriptor(c,g).enumerable})),u.push.apply(u,h)}return u}function n(c){for(var d=1;dMath.abs(F*P)?f=p/P:p=f*P}const O=p,I=f;let E=this.slack||[0,0],k=E[0],N=E[1];return p+=k,f+=N,v&&(p=Math.max(v[0],p),f=Math.max(v[1],f)),w&&(p=Math.min(w[0],p),f=Math.min(w[1],f)),this.slack=[k+(O-p),N+(I-f)],[p,f]}resizeHandler(p,f){return(S,v)=>{var w,_,O,I;let E=v.node,k=v.deltaX,N=v.deltaY;p==="onResizeStart"&&this.resetData();const P=(this.props.axis==="both"||this.props.axis==="x")&&f!=="n"&&f!=="s",A=(this.props.axis==="both"||this.props.axis==="y")&&f!=="e"&&f!=="w";if(!P&&!A)return;const F=f[0],K=f[f.length-1],z=E.getBoundingClientRect();if(this.lastHandleRect!=null){if(K==="w"){const ie=z.left-this.lastHandleRect.left;k+=ie}if(F==="n"){const ie=z.top-this.lastHandleRect.top;N+=ie}}this.lastHandleRect=z,K==="w"&&(k=-k),F==="n"&&(N=-N);const q=(w=(_=this.lastSize)==null?void 0:_.width)!=null?w:this.props.width,V=(O=(I=this.lastSize)==null?void 0:I.height)!=null?O:this.props.height;let W=q+(P?k/this.props.transformScale:0),G=V+(A?N/this.props.transformScale:0);var se=this.runConstraints(W,G);if(W=se[0],G=se[1],p==="onResizeStop"&&this.lastSize){var Q=this.lastSize;W=Q.width,G=Q.height}const pe=W!==q||G!==V;p!=="onResizeStop"&&(this.lastSize={width:W,height:G});const oe=typeof this.props[p]=="function"?this.props[p]:null;oe&&!(p==="onResize"&&!pe)&&(S.persist==null||S.persist(),oe(S,{node:E,size:{width:W,height:G},handle:f})),p==="onResizeStop"&&this.resetData()}}renderResizeHandle(p,f){const S=this.props.handle;if(!S)return i.createElement("span",{className:"react-resizable-handle react-resizable-handle-"+p,ref:f});if(typeof S=="function")return S(p,f);const v=typeof S.type=="string",w=d({ref:f},v?{}:{handleAxis:p});return i.cloneElement(S,w)}render(){const p=this.props,f=p.children,S=p.className,v=p.draggableOpts;p.width,p.height,p.handle,p.handleSize,p.lockAspectRatio,p.axis,p.minConstraints,p.maxConstraints,p.onResize,p.onResizeStop,p.onResizeStart;const w=p.resizeHandles;p.transformScale;const _=l(p,s);return(0,t.cloneElement)(f,d(d({},_),{},{className:(S?S+" ":"")+"react-resizable",children:[...i.Children.toArray(f.props.children),...w.map(O=>{var I;const E=(I=this.handleRefs[O])!=null?I:this.handleRefs[O]=i.createRef();return i.createElement(e.DraggableCore,o({},v,{nodeRef:E,key:"resizableHandle-"+O,onStop:this.resizeHandler("onResizeStop",O),onStart:this.resizeHandler("onResizeStart",O),onDrag:this.resizeHandler("onResize",O)}),this.renderResizeHandle(O,E))})]}))}};return dt.default=m,m.propTypes=n.resizableProps,m.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},dt}var pt={},Yo;function ch(){if(Yo)return pt;Yo=1,pt.__esModule=!0,pt.default=void 0;var i=o(St()),e=r(zt()),t=r(da()),n=ca();const s=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function r(p){return p&&p.__esModule?p:{default:p}}function o(p,f){if(typeof WeakMap=="function")var S=new WeakMap,v=new WeakMap;return(o=function(w,_){if(!_&&w&&w.__esModule)return w;var O,I,E={__proto__:null,default:w};if(w===null||typeof w!="object"&&typeof w!="function")return E;if(O=_?v:S){if(O.has(w))return O.get(w);O.set(w,E)}for(const k in w)k!=="default"&&{}.hasOwnProperty.call(w,k)&&((I=(O=Object.defineProperty)&&Object.getOwnPropertyDescriptor(w,k))&&(I.get||I.set)?O(E,k,I):E[k]=w[k]);return E})(p,f)}function l(){return l=Object.assign?Object.assign.bind():function(p){for(var f=1;f{const v=S.size;this.props.onResize?(f.persist==null||f.persist(),this.setState(v,()=>this.props.onResize&&this.props.onResize(f,S))):this.setState(v)}}static getDerivedStateFromProps(f,S){return S.propsWidth!==f.width||S.propsHeight!==f.height?{width:f.width,height:f.height,propsWidth:f.width,propsHeight:f.height}:null}render(){const f=this.props,S=f.handle,v=f.handleSize;f.onResize;const w=f.onResizeStart,_=f.onResizeStop,O=f.draggableOpts,I=f.minConstraints,E=f.maxConstraints,k=f.lockAspectRatio,N=f.axis;f.width,f.height;const P=f.resizeHandles,A=f.style,F=f.transformScale,K=m(f,s);return i.createElement(t.default,{axis:N,draggableOpts:O,handle:S,handleSize:v,height:this.state.height,lockAspectRatio:k,maxConstraints:E,minConstraints:I,onResizeStart:w,onResize:this.onResize,onResizeStop:_,resizeHandles:P,transformScale:F,width:this.state.width},i.createElement("div",l({},K,{style:d(d({},A),{},{width:this.state.width+"px",height:this.state.height+"px"})})))}};return pt.default=y,y.propTypes=d(d({},n.resizableProps),{},{children:e.default.element}),pt}var Xo;function dh(){return Xo||(Xo=1,ct.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},ct.exports.Resizable=da().default,ct.exports.ResizableBox=ch().default),ct.exports}var uh=dh(),hh=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);sb.createElement(b.Fragment,{key:u},d)),b.createElement(uh.Resizable,{width:r,height:0,onResize:t,onResizeStart:n,onResizeStop:s,draggableOpts:{enableUserSelectHack:!1},axis:"x"},b.createElement("th",Object.assign({},l),c))}}var fh=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;const{components:t,columns:n,resizable:s}=i,r=fh(i,["components","columns","resizable"]),o="children",l=x(s,"onResize",H),c=x(s,"onResizeStart",H),d=x(s,"onResizeStop",H),u=Array.isArray(n)&&n.length?n:Ut(i.children),h=Wt(we(u),o),g=Wt(we(u),o);typeof i.expandedRowRender=="function"&&!i.hideExpandedColumn&&!We(h,E=>E.key===B.DEFAULT_KEY_COLUMN_EXPAND)&&g.unshift({key:B.DEFAULT_KEY_COLUMN_EXPAND,width:ne.DEFAULT_WIDTH_COLUMN_EXPAND}),i.rowSelection&&!x(i.rowSelection,"hidden")&&!We(h,E=>E.key===B.DEFAULT_KEY_COLUMN_SELECTION)&&g.unshift({width:x(i,"rowSelection.width",ne.DEFAULT_WIDTH_COLUMN_SELECTION),key:B.DEFAULT_KEY_COLUMN_SELECTION});const[m,y]=L.useState(g);L.useEffect(()=>{const E=ru(m,g);y(Ts(m,E))},[n,i.expandedRowRender,i.hideExpandedColumn,i.rowSelection]);const p=L.useMemo(()=>Zt({header:{cell:ph}},t),[t]),f=x(s,"handlerClassName","resizing"),S=E=>(k,N)=>{let{size:P}=N;const A=we(m),F=Mt(A,E,o);let K=Object.assign(Object.assign({},F),{width:P.width});const z=l(K)||{};K=Object.assign(Object.assign({},K),z),Object.assign(F,K),y(A)},v=E=>k=>{if(typeof window<"u"){const K=window.getSelection();K&&K.removeAllRanges()}const N=we(m),P=Mt(N,E,o);let A=Object.assign(Object.assign({},P),{className:rh(P.className,f)});const F=c(A)||{};A=Object.assign(Object.assign({},A),F),Object.assign(P,A),y(N)},w=E=>k=>{const N=we(m),P=Mt(N,E,o);let A=Object.assign(Object.assign({},P),{className:oh(P.className,f)});const F=d(A)||{};A=Object.assign(Object.assign({},A),F),Object.assign(P,A),y(N)},_=function(E,k){let N=arguments.length>3?arguments[3]:void 0;return Object.assign(Object.assign({},E),{onHeaderCell:P=>Object.assign(Object.assign({},N),{width:P.width,onResize:S(P),onResizeStart:v(P),onResizeStop:w(P)})})},O=function(){let E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.isArray(E)&&E.length?E.map((N,P)=>{var A,F;const K=(F=(A=N.onHeaderCell)===null||A===void 0?void 0:A.call(N,N,P,k))!==null&&F!==void 0?F:{};Object.assign(N,_(N,P,k,K));const z=N[o];return Array.isArray(z)&&z.length&&(N[o]=O(z,k+1)),N}):[]},I=L.useMemo(()=>O(m),[m]);return b.createElement(ot,Object.assign({},r,{columns:I,components:p,ref:e}))},mh=b.forwardRef(gh);class it extends b.PureComponent{constructor(e){super(e),this.getCurrentPageData=()=>this.tableRef.current&&this.tableRef.current.getCurrentPageData(),this.tableRef=b.createRef()}render(){var e;const t=this.props,n=(e=this.props.direction)!==null&&e!==void 0?e:this.context.direction;return t.resizable?b.createElement(mh,Object.assign({},t,{ref:this.tableRef,direction:n})):b.createElement(ot,Object.assign({},t,{ref:this.tableRef,direction:n}))}}it.Column=rn;it.DEFAULT_KEY_COLUMN_SELECTION=B.DEFAULT_KEY_COLUMN_SELECTION;it.DEFAULT_KEY_COLUMN_EXPAND=B.DEFAULT_KEY_COLUMN_EXPAND;it.propTypes=Object.assign(Object.assign({},ot.propTypes),{resizable:a.oneOfType([a.bool,a.object])});it.defaultProps={hideExpandedColumn:!0};it.contextType=Ls;const U={TABS:`${X}-tabs`,TABS_BAR:`${X}-tabs-bar`,TABS_BAR_LINE:`${X}-tabs-bar-line`,TABS_BAR_CARD:`${X}-tabs-bar-card`,TABS_BAR_BUTTON:`${X}-tabs-bar-button`,TABS_BAR_SLASH:`${X}-tabs-bar-slash`,TABS_BAR_EXTRA:`${X}-tabs-bar-extra`,TABS_TAB:`${X}-tabs-tab`,TABS_TAB_ACTIVE:`${X}-tabs-tab-active`,TABS_TAB_DISABLED:`${X}-tabs-tab-disabled`,TABS_CONTENT:`${X}-tabs-content`,TABS_PANE:`${X}-tabs-pane`,TABS_PANE_INACTIVE:`${X}-tabs-pane-inactive`,TABS_PANE_ACTIVE:`${X}-tabs-pane-active`,TABS_PANE_MOTION_OVERLAY:`${X}-tabs-pane-motion-overlay`,TABS_PANE_ANIMATE_LEFT_SHOW:`${X}-tabs-pane-animate-leftShow`,TABS_PANE_ANIMATE_RIGHT_SHOW:`${X}-tabs-pane-animate-rightShow`,TABS_PANE_ANIMATE_TOP_SHOW:`${X}-tabs-pane-animate-topShow`,TABS_PANE_ANIMATE_BOTTOM_SHOW:`${X}-tabs-pane-animate-bottomShow`},Xe={TYPE_MAP:["line","card","button","slash"],SIZE:["small","medium","large"],POSITION_MAP:["top","left"]};class bh extends ge{constructor(e){super(Object.assign({},e)),this.destroy=H,this.handlePrevent=t=>{t.stopPropagation(),t.preventDefault()},this.handleKeyDown=(t,n,s)=>{const{preventScroll:r}=this.getProps(),o=[...t.target.parentNode.childNodes].filter(l=>x(l,"attributes.data-tabkey.value","").includes("semiTab")&&x(l,"attributes.aria-disabled.value","")!=="true");switch(t.key){case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"ArrowDown":this.determineOrientation(t,o);break;case"Backspace":case"Delete":this.handleDeleteKeyDown(t,o,n,s);break;case"Enter":case" ":this.handleTabClick(n,t),this.handlePrevent(t);break;case"Home":o[0].focus({preventScroll:r}),this.handlePrevent(t);break;case"End":o[o.length-1].focus({preventScroll:r}),this.handlePrevent(t);break}}}init(){this._adapter.collectPane()}_notifyChange(e){const{activeKey:t}=this.getStates();t!==e&&this._adapter.notifyChange(e)}handleTabClick(e,t){this._isInProps("activeKey")?this._notifyChange(e):(this._notifyChange(e),this.handleNewActiveKey(e)),this._adapter.notifyTabClick(e,t)}handleNewActiveKey(e){const{activeKey:t}=this.getStates();t!==e&&this._adapter.setNewActiveKey(e)}getDefaultActiveKey(){let e;const t=this.getProps();return"activeKey"in t?e=t.activeKey:"defaultActiveKey"in t?e=t.defaultActiveKey:e=this._adapter.getDefaultActiveKeyFromChildren(),e}handleTabListChange(){this._adapter.collectPane()}handleTabPanesChange(){this._adapter.collectPane(),this._adapter.collectActiveKey()}handleTabDelete(e){this._adapter.notifyTabDelete(e)}determineOrientation(e,t){const{tabPosition:n}=this.getProps();n==="left"?(e.key==="ArrowUp"||e.key==="ArrowDown")&&(this.switchTabOnArrowPress(e,t),this.handlePrevent(e)):(e.key==="ArrowLeft"||e.key==="ArrowRight")&&(this.switchTabOnArrowPress(e,t),this.handlePrevent(e))}handleDeleteKeyDown(e,t,n,s){const{preventScroll:r}=this.getProps();if(s){this.handleTabDelete(n);const o=t.indexOf(e.target);t.length!==1&&t[o+1>=t.length?o-1:o+1].focus({preventScroll:r})}}switchTabOnArrowPress(e,t){const{preventScroll:n}=this.getProps(),s=t.indexOf(e.target),r={ArrowLeft:-1,ArrowUp:-1,ArrowRight:1,ArrowDown:1};r[e.key]&&s!==void 0&&(t[s+r[e.key]]?t[s+r[e.key]].focus({preventScroll:n}):e.key==="ArrowLeft"||e.key==="ArrowUp"?t[t.length-1].focus({preventScroll:n}):(e.key==="ArrowRight"||e.key=="ArrowDown")&&t[0].focus({preventScroll:n}))}}var yh=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{const{tab:t,size:n,type:s,icon:r,selected:o,closable:l,disabled:c,itemKey:d,deleteTabItem:u,tabPosition:h,handleKeyDown:g,onClick:m}=i,y=yh(i,["tab","size","type","icon","selected","closable","disabled","itemKey","deleteTabItem","tabPosition","handleKeyDown","onClick"]),p=L.useMemo(()=>l?b.createElement(hl,{"aria-label":"Close",role:"button",className:`${U.TABS_TAB}-icon-close`,onClick:O=>u(d,O)}):null,[s,l,u,d]),f=L.useCallback(O=>b.createElement("span",{className:`${U.TABS_BAR}-icon`},O),[]),S=L.useCallback(O=>{g&&g(O,d,l)},[g,d,l]),v=L.useCallback(O=>{!c&&m&&m(d,O)},[d,c,m]),w=r?f(r):null,_=M(U.TABS_TAB,`${U.TABS_TAB}-${s}`,`${U.TABS_TAB}-${h}`,`${U.TABS_TAB}-single`,{[U.TABS_TAB_ACTIVE]:o,[U.TABS_TAB_DISABLED]:c,[`${U.TABS_TAB}-small`]:n==="small",[`${U.TABS_TAB}-medium`]:n==="medium"});return b.createElement("div",Object.assign({role:"tab",id:`semiTab${d}`,"data-tabkey":`semiTab${d}`,"aria-controls":`semiTabPanel${d}`,"aria-disabled":c?"true":"false","aria-selected":o?"true":"false",tabIndex:o?0:-1,onKeyDown:S,onClick:v,className:_},y,{ref:e}),w,t,p)},rr=L.forwardRef(Sh);rr.elementType="Tabs.TabItem";var wh=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{const{collapsible:n}=this.props;return n==="auto"?this.state.shouldCollapse:n||!1},this.checkOverflow=()=>{if(this.props.collapsible!=="auto"||this.state.shouldCollapse)return;const n=this.tabBarRef.current;if(!n)return;const s=this.isTabsWrapped(n)||n.scrollWidth>n.clientWidth+1;s!==this.state.shouldCollapse&&this.setState({shouldCollapse:s})},this.isTabsWrapped=n=>{var s;if(this.props.tabPosition==="left")return!1;const r=Array.from(n.querySelectorAll(`.${U.TABS_TAB}`));if(r.length<=1)return!1;const o=(s=r[0])===null||s===void 0?void 0:s.offsetTop;return typeof o!="number"?!1:r.some(l=>l.offsetTop!==o)},this.handleResize=()=>{this.props.collapsible==="auto"&&this.checkOverflow()},this.handleItemClick=(n,s)=>{this.props.onTabClick(n,s)},this.handleKeyDown=(n,s,r)=>{this.props.handleKeyDown(n,s,r)},this.renderTabItem=n=>{const{size:s,type:r,deleteTabItem:o,handleKeyDown:l,tabPosition:c}=this.props,d=this._isActive(n.itemKey);return b.createElement(rr,Object.assign({},Ne(n,["disabled","icon","itemKey","tab","closable"]),{key:this._getBarItemKeyByItemKey(n.itemKey),selected:d,size:s,type:r,tabPosition:c,handleKeyDown:l,deleteTabItem:o,onClick:this.handleItemClick}))},this.scrollTabItemIntoViewByKey=function(n){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"nearest",r=arguments.length>2?arguments[2]:void 0;const o=document.querySelector(`[data-uuid="${t.state.uuid}"] .${U.TABS_TAB}[data-scrollkey="${n}"]`);o==null||o.scrollIntoView({behavior:r||"smooth",block:s,inline:s})},this.scrollActiveTabItemIntoView=(n,s)=>{const r=this._getBarItemKeyByItemKey(this.props.activeKey);this.scrollTabItemIntoViewByKey(r,n,s)},this.renderTabComponents=n=>n.map(s=>this.renderTabItem(s)),this.handleArrowClick=(n,s)=>{const r=s==="start"?n.pop():n.shift();if(!r)return;const o=this._getBarItemKeyByItemKey(r.itemKey);this.scrollTabItemIntoViewByKey(o)},this.renderCollapse=(n,s,r)=>{var o;const l=M({[`${U.TABS_BAR}-arrow-${r}`]:r,[`${U.TABS_BAR}-arrow`]:!0});if(li(n))return b.createElement("div",{role:"presentation",className:l},b.createElement(Ft,{disabled:!0,icon:s,theme:"borderless"}));const{dropdownClassName:c,dropdownStyle:d,showRestInDropdown:u,dropdownProps:h}=this.props,{rePosKey:g}=this.state,m=!n.length,y=b.createElement(Fe.Menu,null,n.map(v=>{const{icon:w,tab:_,itemKey:O}=v,I=w?this.renderIcon(v.icon):null;return b.createElement(Fe.Item,{key:O,onClick:E=>this.handleItemClick(O,E),active:this._isActive(O)},I,_)})),p=b.createElement("div",{role:"presentation",className:l,onClick:v=>this.handleArrowClick(n,r)},b.createElement(Ft,{disabled:m,icon:s,theme:"borderless"})),f=M(c,{[`${U.TABS_BAR}-dropdown`]:!0}),S=(o=h==null?void 0:h[r])!==null&&o!==void 0?o:{};return b.createElement(b.Fragment,null,u?b.createElement(Fe,Object.assign({className:f,clickToHide:!0,clickTriggerToHide:!0,key:`${g}-${r}`,position:r==="start"?"bottomLeft":"bottomRight",render:m?null:y,showTick:!0,style:d,trigger:"hover",disableFocusListener:!0},S),p):p)},this.renderOverflow=n=>n.map((s,r)=>{const o=r===0?"start":"end",l=r===0?b.createElement(bi,null):b.createElement(js,null),c=this.renderCollapse(s,l,o);return this.props.renderArrow?this.props.renderArrow(s,o,()=>this.handleArrowClick(s,o),c):c}),this.renderCollapsedTab=()=>{const{list:n}=this.props,s=n.map(r=>{const{itemKey:o}=r;return Object.assign({key:this._getBarItemKeyByItemKey(o),active:this._isActive(o)},r)});return b.createElement(Qe,{items:s,overflowRenderDirection:this.props.arrowPosition,wrapperStyle:this.props.visibleTabsStyle,overflowRenderer:this.renderOverflow,renderMode:"scroll",className:`${U.TABS_BAR}-overflow-list`,visibleItemRenderer:this.renderTabItem,onVisibleStateChange:r=>{var o,l;const c=new Map;if(r.forEach((d,u)=>{c.set(this._getItemKeyByBarItemKey(u),d)}),this.isFirstShowInViewport&&Array.from(c.values()).some(u=>u)&&(this.scrollActiveTabItemIntoView("nearest","auto"),this.isFirstShowInViewport=!1),this.props.collapsible==="auto"&&Array.from(c.values()).some(u=>u)){const u=Array.from(c.values()).some(h=>!h);u!==this.state.shouldCollapse&&this.setState({shouldCollapse:u})}(l=(o=this.props).onVisibleTabsChange)===null||l===void 0||l.call(o,c)}})},this.renderWithMoreTrigger=()=>{const{list:n,more:s}=this.props;let r=[],o=b.createElement("div",{className:M({[`${U.TABS_BAR}-more-trigger`]:!0,[`${U.TABS_BAR}-more-trigger-${this.props.type}`]:!0})},b.createElement(Ee,{componentName:"Tabs"},(c,d)=>b.createElement("div",{className:`${U.TABS_BAR}-more-trigger-content`},b.createElement("div",null,c.more),b.createElement(Ms,{className:`${U.TABS_BAR}-more-trigger-content-icon`})))),l;if(typeof s=="number")l=n.length-Math.min(s,n.length),r=n.slice(0,l).map(c=>this.renderTabItem(c));else if(typeof s=="object")l=n.length-Math.min(s.count,n.length),r=n.slice(0,l).map(c=>this.renderTabItem(c)),s.render&&(o=s.render());else if(s!==void 0)throw new Error("[Semi Tabs]: invalid tab props format: more");return b.createElement(b.Fragment,null,r,this.renderMoreDropdown(n.slice(l),s==null?void 0:s.dropdownProps,o))},this.renderMoreDropdown=(n,s,r)=>b.createElement(Fe,Object.assign({trigger:"hover",showTick:!0,position:"bottomLeft",className:`${U.TABS_BAR}-more-dropdown-${this.props.type}`,clickToHide:!0,menu:n.map(o=>({node:"item",name:o.tab,icon:o.icon,onClick:l=>this.props.onTabClick(o.itemKey,l),active:this.props.activeKey===o.itemKey}))},s),r),this._isActive=n=>n===this.props.activeKey,this._getBarItemKeyByItemKey=n=>`${n}-bar`,this._getItemKeyByBarItemKey=n=>n.replace(/-bar$/,""),this.state={endInd:e.list.length,rePosKey:0,startInd:0,uuid:"",currentVisibleItems:[],shouldCollapse:!1},this.isFirstShowInViewport=!0,this.tabBarRef=L.createRef()}componentDidMount(){this.setState({uuid:tl()}),this.props.collapsible==="auto"&&requestAnimationFrame(()=>this.checkOverflow())}componentDidUpdate(e){e.activeKey!==this.props.activeKey&&this.getEffectiveCollapsible()&&this.scrollActiveTabItemIntoView(),this.props.collapsible==="auto"&&e.list!==this.props.list&&this.checkOverflow()}renderIcon(e){return b.createElement("span",null,e)}renderExtra(){const{tabBarExtraContent:e,type:t,size:n}=this.props,s={float:"right"},r=e&&e.props?e.props.style:{},o=M(U.TABS_BAR_EXTRA,{[`${U.TABS_BAR}-${t}-extra`]:t,[`${U.TABS_BAR}-${t}-extra-${n}`]:n});if(e){const l=Object.assign(Object.assign({},s),r);return b.createElement("div",{className:o,style:l,"x-semi-prop":"tabBarExtraContent"},e)}return null}render(){const e=this.props,{type:t,style:n,className:s,list:r,tabPosition:o,more:l,collapsible:c}=e,d=wh(e,["type","style","className","list","tabPosition","more","collapsible"]),u=this.getEffectiveCollapsible(),h=M(s,{[U.TABS_BAR]:!0,[U.TABS_BAR_LINE]:t==="line",[U.TABS_BAR_CARD]:t==="card",[U.TABS_BAR_BUTTON]:t==="button",[U.TABS_BAR_SLASH]:t==="slash",[`${U.TABS_BAR}-${o}`]:o,[`${U.TABS_BAR}-collapse`]:u}),g=this.renderExtra(),m=u?this.renderCollapsedTab():l?this.renderWithMoreTrigger():this.renderTabComponents(r),y=b.createElement("div",Object.assign({role:"tablist","aria-orientation":o==="left"?"vertical":"horizontal",className:h,style:n},qt(d),{"data-uuid":this.state.uuid,ref:this.tabBarRef}),m,g);return c==="auto"?b.createElement(Pt,{onResize:this.handleResize},y):y}}Is.propTypes={activeKey:a.string,className:a.string,collapsible:a.oneOfType([a.bool,a.oneOf(["auto"])]),list:a.array,onTabClick:a.func,size:a.oneOf(Xe.SIZE),style:a.object,tabBarExtraContent:a.node,tabPosition:a.oneOf(Xe.POSITION_MAP),type:a.oneOf(Xe.TYPE_MAP),closable:a.bool,deleteTabItem:a.func,more:a.oneOfType([a.number,a.object])};const ua=b.createContext({});var vh=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{if(t!==null&&e!==null&&Array.isArray(n)&&n.length){const r=n.findIndex(c=>c.itemKey===e),o=n.findIndex(c=>c.itemKey===t),l=n.findIndex(c=>c.itemKey===s);return r===o?l>r:o{const{itemKey:e}=this.props,{activeKey:t,lazyRender:n}=this.context,s=t===e;return this._active=this._active||s,n?this._active:!0}}render(){const{tabPaneMotion:e,tabPosition:t,prevActiveKey:n}=this.context,s=this.props,{className:r,style:o,children:l,itemKey:c,tabIndex:d}=s,u=vh(s,["className","style","children","itemKey","tabIndex"]),h=this.context.activeKey===c,g=M(r,{[U.TABS_PANE_INACTIVE]:!h,[U.TABS_PANE_ACTIVE]:h,[U.TABS_PANE]:!0}),m=this.shouldRender(),y=(()=>{const S=this.getDirection(this.context.activeKey,c,this.context.panes,n);return t==="top"?S?U.TABS_PANE_ANIMATE_RIGHT_SHOW:U.TABS_PANE_ANIMATE_LEFT_SHOW:S?U.TABS_PANE_ANIMATE_BOTTOM_SHOW:U.TABS_PANE_ANIMATE_TOP_SHOW})(),p=!this.context.panes.find(S=>S.itemKey===n),f=e&&h&&!p&&!this.context.forceDisableMotion;return b.createElement("div",Object.assign({ref:this.ref,role:"tabpanel",id:`semiTabPanel${c}`,"aria-labelledby":`semiTab${c}`,className:g,style:o,"aria-hidden":h?"false":"true",tabIndex:d||0},qt(u),{"x-semi-prop":"children"}),b.createElement(hi,{motion:f,animationState:h?"enter":"leave",startClassName:y},S=>{let{animationClassName:v,animationEventsNeedBind:w}=S;return b.createElement("div",Object.assign({className:M(U.TABS_PANE_MOTION_OVERLAY,v),"x-semi-prop":"children"},w),m?l:null)}))}}dn.isTabPane=!0;dn.contextType=ua;dn.propTypes={className:a.string,style:a.object,children:a.node,disabled:a.bool,itemKey:a.string,tab:a.node,icon:a.node,closable:a.bool};var Ch=function(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(i);s{this.contentRef={current:t}},this.getPanes=()=>{const{tabList:t,children:n}=this.props;return Array.isArray(t)&&t.length?t:b.Children.map(n,s=>{if(s){const{tab:r,icon:o,disabled:l,itemKey:c,closable:d}=s.props;return{tab:r,icon:o,disabled:l,itemKey:c,closable:d}}})},this.onTabClick=(t,n)=>{this.foundation.handleTabClick(t,n)},this.rePosChildren=(t,n)=>{const s=[],r=b.Children.toArray(t);return t.length&&(s.push(...r.filter(o=>o.props&&o.props.itemKey===n)),s.push(...r.filter(o=>o.props&&o.props.itemKey!==n))),s},this.getActiveItem=()=>{const{activeKey:t}=this.state,{children:n,tabList:s}=this.props;return s||!Array.isArray(n)?n:b.Children.toArray(n).filter(r=>L.isValidElement(r)&&r.type&&r.type.isTabPane?r.props.itemKey===t:!0)},this.deleteTabItem=(t,n)=>{n.stopPropagation(),this.foundation.handleTabDelete(t)},this.foundation=new bh(this.adapter),this.state={activeKey:this.foundation.getDefaultActiveKey(),panes:this.getPanes(),prevActiveKey:null,forceDisableMotion:!1},this.contentRef=L.createRef(),this.contentHeight="auto"}get adapter(){return Object.assign(Object.assign({},super.adapter),{collectPane:()=>{const e=this.getPanes();this.setState({panes:e})},collectActiveKey:()=>{const{tabList:e,children:t,activeKey:n}=this.props;if(typeof n<"u")return;const{activeKey:s}=this.state,r=this.getPanes();r.findIndex(o=>o.itemKey===s)===-1&&(r.length>0?this.setState({activeKey:r[0].itemKey}):this.setState({activeKey:""}))},notifyTabClick:(e,t)=>{this.props.onTabClick(e,t)},notifyChange:e=>{this.props.onChange(e)},setNewActiveKey:e=>{this.setState({activeKey:e})},getDefaultActiveKeyFromChildren:()=>{const{tabList:e,children:t}=this.props;let n="";return(e||b.Children.toArray(t).map(r=>L.isValidElement(r)?r.props:null)).forEach(r=>{r&&!n&&!r.disabled&&(n=r.itemKey)}),n},notifyTabDelete:e=>{this.props.onTabClose&&this.props.onTabClose(e)}})}static getDerivedStateFromProps(e,t){const n={};return!Xt(e.activeKey)&&e.activeKey!==t.activeKey&&(t.prevActiveKey=t.activeKey,n.activeKey=e.activeKey),n}componentDidUpdate(e,t){const n=b.Children.toArray(e.children).map(o=>Ne(L.isValidElement(o)?o.props:null,Zo)),s=b.Children.toArray(this.props.children).map(o=>Ne(L.isValidElement(o)?o.props:null,Zo)),r=this.props.tabList||e.tabList;if(re(this.props.tabList,e.tabList)||this.foundation.handleTabListChange(),t.activeKey!==this.state.activeKey&&t.activeKey!==this.state.prevActiveKey&&this.setState({prevActiveKey:t.activeKey}),e.activeKey!==this.props.activeKey){const o=(()=>{const l=new Set(n.map(c=>c.itemKey));return s.map(c=>c.itemKey).filter(c=>!l.has(c))})();this.setState({forceDisableMotion:o.includes(this.props.activeKey)})}!re(n,s)&&!r&&this.foundation.handleTabPanesChange()}render(){const e=this.props,{children:t,className:n,collapsible:s,contentStyle:r,keepDOM:o,lazyRender:l,renderTabBar:c,showRestInDropdown:d,size:u,style:h,tabBarClassName:g,tabBarExtraContent:m,tabBarStyle:y,tabPaneMotion:p,tabPosition:f,type:S,more:v,onVisibleTabsChange:w,visibleTabsStyle:_,arrowPosition:O,renderArrow:I,dropdownProps:E}=e,k=Ch(e,["children","className","collapsible","contentStyle","keepDOM","lazyRender","renderTabBar","showRestInDropdown","size","style","tabBarClassName","tabBarExtraContent","tabBarStyle","tabPaneMotion","tabPosition","type","more","onVisibleTabsChange","visibleTabsStyle","arrowPosition","renderArrow","dropdownProps"]),{panes:N,activeKey:P}=this.state,A=M(n,{[U.TABS]:!0,[`${U.TABS}-${f}`]:f}),F=M({[U.TABS_CONTENT]:!0,[`${U.TABS_CONTENT}-${f}`]:f}),K={activeKey:P,className:g,collapsible:s,list:N,onTabClick:this.onTabClick,showRestInDropdown:d,size:u,style:y,tabBarExtraContent:m,tabPosition:f,type:S,deleteTabItem:this.deleteTabItem,handleKeyDown:this.foundation.handleKeyDown,more:v,onVisibleTabsChange:w,visibleTabsStyle:_,arrowPosition:O,renderArrow:I,dropdownProps:E},z=c?c(K,Is):b.createElement(Is,Object.assign({},K)),q=o?t:this.getActiveItem();return b.createElement("div",Object.assign({className:A,style:h},this.getDataAttr(k)),z,b.createElement(ua.Provider,{value:{activeKey:P,lazyRender:l,panes:N,tabPaneMotion:p,tabPosition:f,prevActiveKey:this.state.prevActiveKey,forceDisableMotion:this.state.forceDisableMotion}},b.createElement("div",{ref:this.setContentRef,className:F,style:Object.assign({},r)},q)))}}tt.TabPane=dn;tt.TabItem=rr;tt.propTypes={activeKey:a.string,className:a.string,collapsible:a.oneOfType([a.bool,a.oneOf(["auto"])]),contentStyle:a.oneOfType([a.object]),defaultActiveKey:a.string,keepDOM:a.bool,lazyRender:a.bool,onChange:a.func,onTabClick:a.func,renderTabBar:a.func,showRestInDropdown:a.bool,size:a.oneOf(Xe.SIZE),style:a.object,tabBarClassName:a.string,tabBarExtraContent:a.node,tabBarStyle:a.object,tabList:a.array,tabPaneMotion:a.bool,tabPosition:a.oneOf(Xe.POSITION_MAP),type:a.oneOf(Xe.TYPE_MAP),onTabClose:a.func,preventScroll:a.bool,more:a.oneOfType([a.number,a.object]),arrowPosition:a.string,renderArrow:a.func,dropdownProps:a.object};tt.__SemiComponentName__="Tabs";tt.defaultProps=ks(tt.__SemiComponentName__,{children:[],collapsible:!1,keepDOM:!0,lazyRender:!1,onChange:()=>{},onTabClick:()=>{},size:"large",tabPaneMotion:!0,tabPosition:"top",type:"line",onTabClose:()=>{},showRestInDropdown:!0,arrowPosition:"both"});export{bi as I,it as T,pl as V,_s as _,tt as a,dn as b,mr as c,Pe as d,Kt as e,js as f,Ze as g,gd as h,$t as i,We as j,Bt as k,yi as l,Jt as r}; diff --git a/frontends/desktop/dist/assets/index-C-iCGtYr.js b/frontends/desktop/dist/assets/index-C-iCGtYr.js deleted file mode 100644 index 9cc60503..00000000 --- a/frontends/desktop/dist/assets/index-C-iCGtYr.js +++ /dev/null @@ -1 +0,0 @@ -import{B as g,f as y,k as E,w as C,R as t,l as m,T as u,U as $,S as v,P as o}from"./tauri-compat-D_GD_wMe.js";import{a as I,I as N,b as x,c as B}from"./index-9FI8Jlf5.js";const P={PREFIX:`${g}-banner`},w={TYPE:["info","success","danger","warning"]};class l extends y{constructor(e){super(Object.assign(Object.assign({},l.defaultAdapter),e))}removeBanner(e){this._adapter.notifyClose(e),this._adapter.setVisible()}}const n=P.PREFIX,T=w.TYPE;class h extends E{constructor(e){super(e),this.remove=s=>{s&&s.stopPropagation(),this.foundation.removeBanner(s)},this.state={visible:!0},C("target"in this.props,"[Semi Banner] 'target' has been deprecated, please write JSX directly instead.")}get adapter(){return Object.assign(Object.assign({},super.adapter),{setVisible:()=>{this.setState({visible:!1})},notifyClose:e=>{const{onClose:s}=this.props;s(e)}})}componentDidMount(){this.foundation=new l(this.adapter),this.foundation.init()}componentWillUnmount(){this.foundation.destroy()}renderCloser(){const{closeIcon:e}=this.props;return e===null?e:t.createElement(I,{className:`${n}-close`,onClick:this.remove,icon:e||t.createElement(N,{"x-semi-prop":"closeIcon","aria-hidden":!0}),theme:"borderless",size:"small",type:"tertiary","aria-label":"Close"})}renderIcon(){const{type:e,icon:s}=this.props;let a={warning:t.createElement(B,{size:"large","aria-label":"warning"}),success:t.createElement(v,{size:"large","aria-label":"success"}),info:t.createElement(x,{size:"large","aria-label":"info"}),danger:t.createElement($,{size:"large","aria-label":"danger"})}[e];const r=m({[`${n}-icon`]:!0});return typeof s<"u"&&(a=s),a?t.createElement("div",{className:r,"x-semi-prop":"icon"},a):null}render(){const{children:e,type:s,className:c,style:a,bordered:r,title:p,description:d,fullMode:i}=this.props,{visible:b}=this.state,f=m(n,c,{[`${n}-${s}`]:s,[`${n}-full`]:i,[`${n}-in-container`]:!i,[`${n}-bordered`]:!i&&r});return b?t.createElement("div",Object.assign({className:f,style:a,role:"alert"},this.getDataAttr(this.props)),t.createElement("div",{className:`${n}-content-wrapper`},t.createElement("div",{className:`${n}-content`},this.renderIcon(),t.createElement("div",{className:`${n}-content-body`},p?t.createElement(u.Title,{heading:5,className:`${n}-title`,component:"div","x-semi-prop":"title"},p):null,d?t.createElement(u.Paragraph,{className:`${n}-description`,component:"div","x-semi-prop":"description"},d):null)),this.renderCloser()),e?t.createElement("div",{className:`${n}-extra`,"x-semi-prop":"children"},e):null):null}}h.propTypes={fullMode:o.bool,type:o.oneOf(T),title:o.node,description:o.node,icon:o.node,closeIcon:o.node,children:o.node,style:o.object,className:o.string,onClose:o.func,bordered:o.bool};h.defaultProps={onClose:()=>{},type:"info",fullMode:!0};export{h as B}; diff --git a/frontends/desktop/dist/assets/index-ClU1uQYs.css b/frontends/desktop/dist/assets/index-ClU1uQYs.css deleted file mode 100644 index 10c714bf..00000000 --- a/frontends/desktop/dist/assets/index-ClU1uQYs.css +++ /dev/null @@ -1 +0,0 @@ -.semi-banner{padding:12px}.semi-banner-content-wrapper{display:flex;flex-direction:row}.semi-banner-description{margin:0}.semi-banner .semi-banner-content-wrapper .semi-banner-content{display:flex;flex:1}.semi-banner-in-container{border-radius:var(--semi-border-radius-small)}.semi-banner-in-container .semi-banner-content-wrapper .semi-banner-content-body{flex:1}.semi-banner-in-container .semi-banner-content-wrapper .semi-banner-content-body .semi-banner-title+.semi-banner-description{margin-top:2px}.semi-banner-full .semi-banner-content-wrapper .semi-banner-content{justify-content:center}.semi-banner-full .semi-banner-content-wrapper .semi-banner-icon,.semi-banner-full .semi-banner-content-wrapper .semi-banner-content-body{display:flex;align-items:center}.semi-banner-close{margin-left:12px;height:24px;width:24px}.semi-banner-extra{margin-top:8px}.semi-banner-icon{display:flex;margin-right:12px}.semi-banner-info{background-color:var(--semi-color-info-light-default);color:var(--semi-color-info)}.semi-banner-info.semi-banner-bordered{border:1px solid var(--semi-color-info)}.semi-banner-warning{background-color:var(--semi-color-warning-light-default);color:var(--semi-color-warning)}.semi-banner-warning.semi-banner-bordered{border:1px solid var(--semi-color-warning)}.semi-banner-success{background-color:var(--semi-color-success-light-default);color:var(--semi-color-success)}.semi-banner-success.semi-banner-bordered{border:1px solid var(--semi-color-success)}.semi-banner-danger{background-color:var(--semi-color-danger-light-default);color:var(--semi-color-danger)}.semi-banner-danger.semi-banner-bordered{border:1px solid var(--semi-color-danger)}.semi-rtl .semi-banner,.semi-portal-rtl .semi-banner{direction:rtl}.semi-rtl .semi-banner-close,.semi-portal-rtl .semi-banner-close{margin-left:0;margin-right:12px;height:24px;width:24px}.semi-rtl .semi-banner-icon,.semi-portal-rtl .semi-banner-icon{margin-right:0;margin-left:12px} diff --git a/frontends/desktop/dist/assets/index-D0pGtk0y.css b/frontends/desktop/dist/assets/index-D0pGtk0y.css deleted file mode 100644 index 66b05e04..00000000 --- a/frontends/desktop/dist/assets/index-D0pGtk0y.css +++ /dev/null @@ -1 +0,0 @@ -.semi-button-split{display:inline-block}.semi-button-split .semi-button{border-radius:0;margin-right:1px}.semi-button-split .semi-button-first{border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-button-split .semi-button-last{border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small);margin-right:unset}.semi-button-split:hover .semi-button-borderless:active{background-color:var(--semi-color-fill-1)}.semi-button{--semi-button-colorful-multiple-fill-0: rgba(var(--semi-ai-general-5-3));--semi-button-colorful-multiple-fill-1: rgba(var(--semi-ai-general-5-2));--semi-button-colorful-multiple-fill-2: rgba(var(--semi-ai-general-5-1));--semi-button-colorful-multiple-fill-3: rgba(var(--semi-ai-general-5-0));--semi-button-colorful-disabled-fill: var(--semi-color-disabled-text);--semi-button-colorful-fill-primary: var(--semi-color-ai-purple);--semi-button-colorful-fill-secondary: var(--semi-color-text-0)}.semi-button{box-shadow:none;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;border:0 transparent solid;border-radius:var(--semi-border-radius-small);padding:6px 12px;font-size:14px;line-height:20px;font-weight:600;outline:none;vertical-align:middle;white-space:nowrap}.semi-button.semi-button-primary:focus-visible,.semi-button.semi-button-secondary:focus-visible,.semi-button.semi-button-tertiary:focus-visible,.semi-button.semi-button-warning:focus-visible,.semi-button.semi-button-danger:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-button-content{display:flex;align-items:center}.semi-button-danger{background-color:var(--semi-color-danger);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-danger-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-danger-disabled.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-danger-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-danger:hover{background-color:var(--semi-color-danger-hover)}.semi-button-danger:active{background-color:var(--semi-color-danger-active)}.semi-button-danger.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-danger)}.semi-button-danger.semi-button-light,.semi-button-danger.semi-button-outline,.semi-button-danger.semi-button-borderless{color:var(--semi-color-danger)}.semi-button-danger:not(.semi-button-borderless):not(.semi-button-light):focus-visible{outline:2px solid var(--semi-color-danger-light-active)}.semi-button-warning{background-color:var(--semi-color-warning);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-warning-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-warning-disabled.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-warning-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-warning:hover{background-color:var(--semi-color-warning-hover)}.semi-button-warning:active{background-color:var(--semi-color-warning-active)}.semi-button-warning.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-warning)}.semi-button-warning.semi-button-light,.semi-button-warning.semi-button-outline,.semi-button-warning.semi-button-borderless{color:var(--semi-color-warning)}.semi-button-warning:not(.semi-button-borderless):not(.semi-button-light):focus-visible{outline:2px solid var(--semi-color-warning-light-active)}.semi-button-tertiary{background-color:var(--semi-color-tertiary);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-tertiary.semi-button-colorful.semi-button-solid{background:var(--semi-ai-general-0)}.semi-button-tertiary.semi-button-colorful.semi-button-solid:hover{background:var(--semi-ai-general-1)}.semi-button-tertiary.semi-button-colorful.semi-button-solid:active{background:var(--semi-ai-general-2)}.semi-button-tertiary.semi-button-colorful.semi-button-solid .semi-button-content-right,.semi-button-tertiary.semi-button-colorful.semi-button-solid .semi-button-content:not(:has(>.semi-button-content-right)){background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:transparent}.semi-button-tertiary-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-tertiary-disabled.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-tertiary-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-tertiary:hover{background-color:var(--semi-color-tertiary-hover)}.semi-button-tertiary:active{background-color:var(--semi-color-tertiary-active)}.semi-button-tertiary.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-tertiary.semi-button-light,.semi-button-tertiary.semi-button-outline,.semi-button-tertiary.semi-button-borderless{color:var(--semi-color-text-1)}.semi-button-primary{background-color:var(--semi-color-primary);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-primary.semi-button-colorful.semi-button-solid{background:var(--semi-color-ai-general)}.semi-button-primary.semi-button-colorful.semi-button-solid:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):hover{background:var(--semi-color-ai-general-hover)}.semi-button-primary.semi-button-colorful.semi-button-solid:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):active{background:var(--semi-color-ai-general-active)}.semi-button-primary.semi-button-colorful.semi-button-light .semi-button-content-right,.semi-button-primary.semi-button-colorful.semi-button-light .semi-button-content:not(:has(>.semi-button-content-right)){background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:transparent}.semi-button-primary.semi-button-colorful.semi-button-outline{color:var(--semi-color-ai-purple);border-color:var(--semi-color-ai-purple)}.semi-button-primary.semi-button-colorful.semi-button-borderless .semi-button-content-right,.semi-button-primary.semi-button-colorful.semi-button-borderless .semi-button-content:not(:has(>.semi-button-content-right)){background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:transparent}.semi-button-primary-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-primary-disabled.semi-button-light{background:var(--semi-color-fill-0)}.semi-button-primary-disabled.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-primary:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):hover{background-color:var(--semi-color-primary-hover)}.semi-button-primary.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-primary:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):active{background-color:var(--semi-color-primary-active)}.semi-button-primary.semi-button-light,.semi-button-primary.semi-button-outline,.semi-button-primary.semi-button-borderless{color:var(--semi-color-primary)}.semi-button-secondary{background-color:var(--semi-color-secondary);outline-color:var(--semi-color-secondary);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-secondary-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-secondary-disabled.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-secondary-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-secondary.semi-button-outline{background-color:transparent;border:1px solid var(--semi-color-border)}.semi-button-secondary:hover{background-color:var(--semi-color-secondary-hover)}.semi-button-secondary:active{background-color:var(--semi-color-secondary-active)}.semi-button-secondary.semi-button-light,.semi-button-secondary.semi-button-outline,.semi-button-secondary.semi-button-borderless{color:var(--semi-color-secondary)}.semi-button-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-button-disabled:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):hover{color:var(--semi-color-disabled-text)}.semi-button-disabled.semi-button-light,.semi-button-disabled.semi-button-borderless,.semi-button-disabled.semi-button-outline{color:var(--semi-color-disabled-text)}.semi-button-borderless{background-color:transparent;border:0 transparent solid;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-borderless:not(.semi-button-disabled):hover{background-color:var(--semi-color-fill-0);border:0 transparent solid}.semi-button-borderless:not(.semi-button-disabled):active{background-color:var(--semi-color-fill-1);border:0 transparent solid}.semi-button-outline{background-color:transparent}.semi-button-outline:not(.semi-button-disabled):hover{background-color:var(--semi-color-fill-0)}.semi-button-outline:not(.semi-button-disabled):active{background-color:var(--semi-color-fill-1)}.semi-button-light{background-color:var(--semi-color-fill-0);border:0 transparent solid;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-light:not(.semi-button-disabled):hover{background-color:var(--semi-color-fill-1);border:0 transparent solid}.semi-button-light:not(.semi-button-disabled):active{background-color:var(--semi-color-fill-2);border:0 transparent solid}.semi-button-size-small{height:24px;padding:2px 12px;font-size:14px;line-height:20px;font-weight:600}.semi-button-size-large{height:40px;padding:10px 16px;font-size:14px;line-height:20px;font-weight:600}.semi-button-block{width:100%}.semi-button-group{display:flex;flex-wrap:wrap}.semi-button-group>.semi-button{margin:0;padding-left:0;padding-right:0;border-radius:0}.semi-button-group>.semi-button .semi-button-content{padding-left:12px;padding-right:12px}.semi-button-group>.semi-button-size-large .semi-button-content{padding-left:16px;padding-right:16px}.semi-button-group>.semi-button-size-small .semi-button-content{padding-left:12px;padding-right:12px}.semi-button-group>.semi-button.semi-button-with-icon-only{padding-left:0;padding-right:0}.semi-button-group>.semi-button.semi-button-with-icon-only .semi-button-content{padding-left:8px;padding-right:8px}.semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-small .semi-button-content{padding-left:4px;padding-right:4px}.semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-large .semi-button-content{padding-left:12px;padding-right:12px}.semi-button-group>.semi-button:first-child{border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-button-group>.semi-button:last-child{border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small)}.semi-button-group>.semi-button-outline:not(:last-child){border-right-color:transparent;margin-right:-1px}.semi-button-group-line{display:inline-flex;align-items:center;background-color:var(--semi-color-border)}.semi-button-group-line-primary{background-color:var(--semi-color-primary)}.semi-button-group-line-secondary{background-color:var(--semi-color-secondary)}.semi-button-group-line-tertiary{background-color:var(--semi-color-tertiary)}.semi-button-group-line-warning{background-color:var(--semi-color-warning)}.semi-button-group-line-danger{background-color:var(--semi-color-danger)}.semi-button-group-line-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-group-line-light{background-color:var(--semi-color-fill-0)}.semi-button-group-line-borderless{background-color:transparent}.semi-button-group-line:before{display:block;content:"";width:1px;height:20px;background-color:var(--semi-color-border)}@keyframes semi-animation-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.semi-button.semi-button-with-icon{display:inline-flex;align-items:center}.semi-button.semi-button-with-icon .semi-button-content{display:flex;align-items:center;justify-content:center}.semi-button.semi-button-loading{pointer-events:none;cursor:not-allowed}.semi-button.semi-button-loading .semi-button-content>svg,.semi-button.semi-button-loading .semi-button-content-loading-icon{width:16px;height:16px;animation:.6s linear infinite semi-animation-rotate;animation-fill-mode:forwards}.semi-button.semi-button-with-icon-only{padding:8px;height:32px;width:32px;justify-content:center;align-items:center}.semi-button.semi-button-with-icon-only.semi-button-size-small{padding:4px;height:24px;width:24px}.semi-button.semi-button-with-icon-only.semi-button-size-large{padding:12px;height:40px;width:40px}.semi-button-content-left{margin-right:8px;display:flex;align-items:center}.semi-button-content-right{margin-left:8px;display:flex;align-items:center}.semi-rtl .semi-button,.semi-portal-rtl .semi-button{direction:rtl;padding-left:12px;padding-right:12px}.semi-rtl .semi-button-size-small,.semi-portal-rtl .semi-button-size-small{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-size-large,.semi-portal-rtl .semi-button-size-large{padding-left:16px;padding-right:16px}.semi-rtl .semi-button-group,.semi-portal-rtl .semi-button-group{direction:rtl}.semi-rtl .semi-button-group>.semi-button,.semi-portal-rtl .semi-button-group>.semi-button{padding-left:0;padding-right:0}.semi-rtl .semi-button-group>.semi-button .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button .semi-button-content{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-group>.semi-button-size-large .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button-size-large .semi-button-content{padding-left:16px;padding-right:16px}.semi-rtl .semi-button-group>.semi-button-size-small .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button-size-small .semi-button-content{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only{padding-left:0;padding-right:0}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only .semi-button-content{padding-left:8px;padding-right:8px}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-small .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-small .semi-button-content{padding-left:4px;padding-right:4px}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-large .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-large .semi-button-content{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-group>.semi-button:first-child,.semi-portal-rtl .semi-button-group>.semi-button:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small)}.semi-rtl .semi-button-group>.semi-button:not(:last-child) .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button:not(:last-child) .semi-button-content{border-left:1px var(--semi-color-border) solid;border-right:0}.semi-rtl .semi-button-group>.semi-button:last-child,.semi-portal-rtl .semi-button-group>.semi-button:last-child{border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-rtl .semi-button.semi-button-with-icon-only,.semi-portal-rtl .semi-button.semi-button-with-icon-only{padding-left:8px;padding-right:8px}.semi-rtl .semi-button.semi-button-with-icon-only.semi-button-size-small,.semi-portal-rtl .semi-button.semi-button-with-icon-only.semi-button-size-small{padding-left:4px;padding-right:4px}.semi-rtl .semi-button.semi-button-with-icon-only.semi-button-size-large,.semi-portal-rtl .semi-button.semi-button-with-icon-only.semi-button-size-large{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-content-left,.semi-portal-rtl .semi-button-content-left{margin-left:8px;margin-right:0}.semi-rtl .semi-button-content-right,.semi-portal-rtl .semi-button-content-right{margin-right:8px;margin-left:0} diff --git a/frontends/desktop/dist/assets/index-D9Nakaf3.js b/frontends/desktop/dist/assets/index-D9Nakaf3.js deleted file mode 100644 index d3d75f58..00000000 --- a/frontends/desktop/dist/assets/index-D9Nakaf3.js +++ /dev/null @@ -1 +0,0 @@ -import{B as f,f as y,k as h,R as l,aw as S,l as _,P as a,s as b}from"./tauri-compat-D_GD_wMe.js";const O=`${f}-spin`,E={PREFIX:O},P={SIZE:["small","middle","large"]};class d extends y{static get spinDefaultAdapter(){return{getProp:()=>{},setLoading:e=>{}}}constructor(e){super(Object.assign(Object.assign({},d.spinDefaultAdapter),e))}updateLoadingIfNeedDelay(){const{spinning:e,delay:n}=this._adapter.getProps(),{delay:t}=this._adapter.getStates();if(t){const s=this;this._timer=setTimeout(()=>{s._adapter.setState({loading:e,delay:0})},n)}}destroy(){this._timer&&(clearTimeout(this._timer),this._timer=null)}}var j=function(i,e){var n={};for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&e.indexOf(t)<0&&(n[t]=i[t]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,t=Object.getOwnPropertySymbols(i);s{this.setState({loading:e})}})}componentWillUnmount(){this.foundation.destroy()}renderSpin(){const{indicator:e,tip:n}=this.props,{loading:t}=this.state;return t?l.createElement("div",{className:`${r}-wrapper`},e?l.createElement("div",{className:`${r}-animate`,"x-semi-prop":"indicator"},e):l.createElement(S,null),n?l.createElement("div",{"x-semi-prop":"tip"},n):null):null}render(){this.foundation.updateLoadingIfNeedDelay();const e=this.props,{children:n,style:t,wrapperClassName:s,childStyle:c,size:p}=e,m=j(e,["children","style","wrapperClassName","childStyle","size"]),{loading:u}=this.state,g=_(r,s,{[`${r}-${p}`]:p,[`${r}-block`]:n,[`${r}-hidden`]:!u});return l.createElement("div",Object.assign({className:g,style:t},this.getDataAttr(m)),this.renderSpin(),l.createElement("div",{className:`${r}-children`,style:c,"x-semi-prop":"children"},n))}}o.propTypes={size:a.oneOf(P.SIZE),spinning:a.bool,children:a.node,indicator:a.node,delay:a.number,tip:a.node,wrapperClassName:a.string,childStyle:a.object,style:a.object};o.__SemiComponentName__="Spin";o.defaultProps=b(o.__SemiComponentName__,{size:"middle",spinning:!0,children:null,indicator:null,delay:0});export{o as S}; diff --git a/frontends/desktop/dist/assets/index-DkG9Cu-r.css b/frontends/desktop/dist/assets/index-DkG9Cu-r.css deleted file mode 100644 index 3ad08f34..00000000 --- a/frontends/desktop/dist/assets/index-DkG9Cu-r.css +++ /dev/null @@ -1 +0,0 @@ -.semi-spin{position:relative;display:inline-block;width:20px;height:20px}@keyframes semi-animation-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.semi-spin-wrapper{text-align:center;position:absolute;width:100%;transform:translateY(-50%);top:50%;color:var(--semi-color-primary)}.semi-spin-wrapper>svg{display:inline;animation:.6s linear infinite semi-animation-rotate;animation-fill-mode:forwards;vertical-align:top;width:20px;height:20px}.semi-spin-animate{display:inline-flex;animation:1.6s linear infinite semi-animation-rotate;animation-fill-mode:forwards}.semi-spin-children{opacity:.5;-webkit-user-select:none;user-select:none}.semi-spin-block{display:block}.semi-spin-block:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.semi-spin-block .semi-spin-wrapper{display:block}.semi-spin-block.semi-spin{height:auto;width:auto}.semi-spin-hidden:after{content:none}.semi-spin-hidden>.semi-spin-children{opacity:1;-webkit-user-select:auto;user-select:auto}.semi-spin-small{width:14px;height:14px}.semi-spin-small>.semi-spin-wrapper svg{width:14px;height:14px}.semi-spin-middle{width:20px;height:20px}.semi-spin-middle>.semi-spin-wrapper svg{width:20px;height:20px}.semi-spin-large{width:32px;height:32px}.semi-spin-large>.semi-spin-wrapper svg{width:32px;height:32px}.semi-spin-container{overflow:hidden}.semi-rtl .semi-spin,.semi-portal-rtl .semi-spin,.semi-rtl .semi-spin-container,.semi-portal-rtl .semi-spin-container{direction:rtl} diff --git a/frontends/desktop/dist/assets/index-gTPS8Hpa.css b/frontends/desktop/dist/assets/index-gTPS8Hpa.css deleted file mode 100644 index be54af90..00000000 --- a/frontends/desktop/dist/assets/index-gTPS8Hpa.css +++ /dev/null @@ -1 +0,0 @@ -.semi-highlight-tag{color:var(--semi-color-highlight);background-color:var(--semi-color-highlight-bg);font-weight:600}.semi-space{display:inline-flex}.semi-space-vertical{flex-direction:column}.semi-space-horizontal{flex-direction:row}.semi-space-align-center{align-items:center}.semi-space-align-end{align-items:flex-end}.semi-space-align-start{align-items:flex-start}.semi-space-align-baseline{align-items:baseline}.semi-space-wrap{flex-wrap:wrap}.semi-space-tight-horizontal{column-gap:8px}.semi-space-tight-vertical{row-gap:8px}.semi-space-medium-horizontal{column-gap:16px}.semi-space-medium-vertical{row-gap:16px}.semi-space-loose-horizontal{column-gap:24px}.semi-space-loose-vertical{row-gap:24px}.semi-rtl .semi-space,.semi-portal-rtl .semi-space{direction:rtl}.semi-checkbox{box-sizing:border-box;position:relative;display:flex;align-items:flex-start;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none));column-gap:8px}.semi-checkbox input[type=checkbox]{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;opacity:0}.semi-checkbox-content{flex:1;display:flex;flex-direction:column;row-gap:4px}.semi-checkbox-addon{display:flex;flex:1;align-items:center;color:var(--semi-color-text-0);line-height:20px;-webkit-user-select:none;user-select:none}.semi-checkbox:hover .semi-checkbox-inner-display{background:var(--semi-color-fill-0);box-shadow:inset 0 0 0 1px var(--semi-color-focus-border)}.semi-checkbox:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-hover);box-shadow:none}.semi-checkbox:active .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-active);box-shadow:none}.semi-checkbox.semi-checkbox-disabled:hover .semi-checkbox-inner-display,.semi-checkbox.semi-checkbox-disabled:active .semi-checkbox-inner-display{background:var(--semi-color-disabled-fill);box-shadow:inset 0 0 0 1px var(--semi-color-border)}.semi-checkbox.semi-checkbox-disabled:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display,.semi-checkbox.semi-checkbox-disabled:active .semi-checkbox-inner-checked .semi-checkbox-inner-display{color:var(--semi-color-white);background:var(--semi-color-primary-disabled);box-shadow:none}.semi-checkbox-inner{position:relative;display:flex;align-items:center;width:16px;height:20px;-webkit-user-select:none;user-select:none;cursor:pointer}.semi-checkbox-inner-display{box-sizing:border-box;position:relative;width:16px;height:16px;margin:0;background:transparent;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);box-shadow:inset 0 0 0 1px var(--semi-color-text-3);border-radius:var(--semi-border-radius-extra-small)}.semi-checkbox-inner-display .semi-icon{font-size:16px}.semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary);color:var(--semi-color-white);box-shadow:inset 0 0 0 1px var(--semi-color-primary);border-radius:var(--semi-border-radius-extra-small)}.semi-checkbox-inner-checked>.semi-checkbox-addon{color:var(--semi-color-text-0)}.semi-checkbox:hover .semi-checkbox-inner-display{background:var(--semi-color-fill-0)}.semi-checkbox:hover.semi-checkbox-indeterminate .semi-checkbox-inner-display{background:var(--semi-color-primary-hover);box-shadow:none;color:var(--semi-color-white)}.semi-checkbox:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-hover);border-color:var(--semi-color-primary-hover);color:var(--semi-color-white)}.semi-checkbox:hover.semi-checkbox-cardType.semi-checkbox-unChecked.semi-checkbox-cardType_enable .semi-checkbox-inner-display{background:var(--semi-color-white)}.semi-checkbox:active .semi-checkbox-inner-display{background:var(--semi-color-fill-1)}.semi-checkbox:active.semi-checkbox-indeterminate .semi-checkbox-inner-display{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active);color:var(--semi-color-white);box-shadow:none}.semi-checkbox:active .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active);color:var(--semi-color-white)}.semi-checkbox:active.semi-checkbox-cardType.semi-checkbox-unChecked.semi-checkbox-cardType_enable .semi-checkbox-inner-display{background:var(--semi-color-white)}.semi-checkbox-cardType{flex-wrap:nowrap;align-items:flex-start;border-radius:3px;padding:12px 16px;background:transparent;border:1px solid transparent}.semi-checkbox-cardType .semi-checkbox-inner{position:relative;flex-shrink:0}.semi-checkbox-cardType .semi-checkbox-inner-display{background:var(--semi-color-white)}.semi-checkbox-cardType .semi-checkbox-inner-pureCardType{opacity:0;width:0}.semi-checkbox-cardType .semi-checkbox-addon{font-weight:600;font-size:14px;line-height:20px;color:var(--semi-color-text-0)}.semi-checkbox-cardType .semi-checkbox-extra{font-weight:400;font-size:14px;line-height:20px;color:var(--semi-color-text-2)}.semi-checkbox-cardType .semi-checkbox-extra.semi-checkbox-cardType_extra_noChildren{margin-top:0}.semi-checkbox-cardType:hover{background:var(--semi-color-fill-0)}.semi-checkbox-cardType:active{background:var(--semi-color-fill-1)}.semi-checkbox-cardType_checked{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary)}.semi-checkbox-cardType_checked:hover{background:var(--semi-color-primary-light-default);border-color:var(--semi-color-primary-hover)}.semi-checkbox-cardType_checked:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{box-shadow:none}.semi-checkbox-cardType_checked:active{background:var(--semi-color-primary-light-default);border-color:var(--semi-color-primary-active)}.semi-checkbox-cardType_disabled:active,.semi-checkbox-cardType_disabled:hover{background:transparent}.semi-checkbox-cardType_checked_disabled.semi-checkbox-cardType{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary-disabled)}.semi-checkbox-cardType_checked_disabled.semi-checkbox-cardType:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{box-shadow:none}.semi-checkbox-indeterminate .semi-checkbox-inner-display,.semi-checkbox-checked .semi-checkbox-inner-display{background:var(--semi-color-primary);color:var(--semi-color-white);box-shadow:inset 0 0 0 1px var(--semi-color-primary);border-radius:var(--semi-border-radius-extra-small)}.semi-checkbox-indeterminate .semi-checkbox-inner-display:hover,.semi-checkbox-checked .semi-checkbox-inner-display:hover{background:var(--semi-color-primary-hover);border-color:var(--semi-color-primary-hover);color:var(--semi-color-white)}.semi-checkbox-indeterminate .semi-checkbox-inner-display:active,.semi-checkbox-checked .semi-checkbox-inner-display:active{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active);color:var(--semi-color-white)}.semi-checkbox-indeterminate .semi-checkbox-inner-addon,.semi-checkbox-checked .semi-checkbox-inner-addon{color:var(--semi-color-text-0)}.semi-checkbox-disabled,.semi-checkbox-disabled .semi-checkbox-inner{cursor:not-allowed}.semi-checkbox-disabled .semi-checkbox-inner-display{color:var(--semi-color-white);background:var(--semi-color-disabled-fill);box-shadow:inset 0 0 0 1px var(--semi-color-border)}.semi-checkbox-disabled .semi-checkbox-inner-display:hover{color:var(--semi-color-white);background:transparent}.semi-checkbox-disabled .semi-checkbox-inner-checked{color:var(--semi-color-white)}.semi-checkbox-disabled .semi-checkbox-inner-checked .semi-checkbox-inner-display{opacity:.75;background:var(--semi-color-primary-disabled);box-shadow:inset 0 0 0 1px var(--semi-color-primary-disabled)}.semi-checkbox-disabled .semi-checkbox-inner-checked .semi-checkbox-inner-display:hover{color:var(--semi-color-white);background:var(--semi-color-primary-disabled)}.semi-checkbox-disabled .semi-checkbox-addon,.semi-checkbox-disabled .semi-checkbox-extra{color:var(--semi-color-disabled-text)}.semi-checkbox.semi-checkbox-disabled.semi-checkbox-indeterminate .semi-checkbox-inner-display{opacity:.75;background:var(--semi-color-primary-disabled);box-shadow:inset 0 0 0 1px var(--semi-color-primary-disabled);color:var(--semi-color-white)}.semi-checkbox-extra{flex-shrink:0;flex-grow:1;flex-basis:100%;box-sizing:border-box;color:var(--semi-color-text-2)}.semi-checkbox-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-checkbox-focus-border{box-shadow:inset 0 0 0 1px var(--semi-color-focus-border)}.semi-checkboxGroup{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:14px}.semi-checkboxGroup .semi-checkbox.semi-checkbox-vertical{margin-bottom:16px}.semi-checkboxGroup-horizontal{display:flex;flex-wrap:wrap;gap:16px}.semi-checkboxGroup-horizontal .semi-checkbox{display:inline-flex}.semi-checkboxGroup-vertical{display:flex;flex-direction:column;row-gap:12px}.semi-checkboxGroup-vertical-cardType{row-gap:16px}.semi-checkboxGroup-vertical-pureCardType .semi-checkbox{column-gap:0}.semi-rtl .semi-checkbox,.semi-portal-rtl .semi-checkbox{direction:rtl}.semi-rtl .semi-checkbox input[type=checkbox],.semi-portal-rtl .semi-checkbox input[type=checkbox]{left:auto;right:0}.semi-rtl .semi-checkboxGroup,.semi-portal-rtl .semi-checkboxGroup{direction:rtl}.semi-overflow-list{display:flex;flex-wrap:nowrap;min-width:0}.semi-overflow-list-spacer{flex-shrink:1;width:1px}.semi-overflow-list-scroll-wrapper{display:flex;flex:1;flex-wrap:nowrap;overflow-x:scroll}.semi-rtl .semi-overflow-list,.semi-portal-rtl .semi-overflow-list{direction:rtl}.semi-page{display:flex;list-style:none;padding:0;align-items:center;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin-block-start:0;margin-block-end:0}.semi-page-small{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:var(--semi-color-text-2);padding:0}.semi-page-disabled{cursor:not-allowed}.semi-page-disabled .semi-page-total{color:var(--semi-color-disabled-text)}.semi-page-item{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-width:32px;border:0px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;height:32px;margin-left:4px;margin-right:4px;font-weight:400;color:var(--semi-color-text-0);border-radius:var(--semi-border-radius-small);text-align:center;line-height:32px;display:flex;align-items:center;justify-content:center;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-page-item:hover{border-color:transparent;background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-page-item-rest-opening{background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-page-item:active{border-color:transparent;background-color:var(--semi-color-fill-1);color:var(--semi-color-text-0)}.semi-page-item-active{border-color:transparent;color:var(--semi-color-primary);font-weight:600;background-color:var(--semi-color-primary-light-default)}.semi-page-item-active:hover{border-color:transparent;color:var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-page-item-disabled{border-color:transparent;color:var(--semi-color-disabled-text);background-color:transparent;cursor:not-allowed}.semi-page-item-disabled:hover{background-color:transparent}.semi-page-item-small{min-width:44px;margin:0}.semi-page-item-all-disabled{border-color:transparent;color:var(--semi-color-disabled-text);background-color:transparent;cursor:not-allowed}.semi-page-item-all-disabled:hover{background-color:transparent;color:var(--semi-color-disabled-text)}.semi-page-item-all-disabled-active{background-color:var(--semi-color-disabled-fill);font-weight:600}.semi-page-item-all-disabled-active:hover{background-color:var(--semi-color-disabled-fill)}.semi-page-total{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-page-prev,.semi-page-next{color:var(--semi-color-tertiary);cursor:pointer}.semi-page-prev.semi-page-item-disabled,.semi-page-next.semi-page-item-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-page-quickjump{margin-left:24px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;justify-content:center;align-items:center;flex-shrink:0;color:var(--semi-color-text-0)}.semi-page-quickjump-input-number{max-width:50px;margin-left:4px;margin-right:4px}.semi-page-quickjump-disabled{color:var(--semi-color-disabled-text)}.semi-page .semi-select,.semi-select-dropdown{-webkit-user-select:none;user-select:none}.semi-page-rest-list{padding-top:4px;padding-bottom:4px}.semi-page-rest-list>div{position:relative}.semi-page-rest-item{height:32px;line-height:32px;display:flex;justify-content:center;box-sizing:border-box;cursor:pointer}.semi-page-rest-item:hover{background-color:var(--semi-color-fill-0)}.semi-page-rest-item:active{background-color:var(--semi-color-fill-1)}.semi-rtl .semi-page,.semi-portal-rtl .semi-page{direction:rtl}.semi-rtl .semi-page-item,.semi-portal-rtl .semi-page-item{margin-right:4px;margin-left:4px}.semi-rtl .semi-page-prev,.semi-rtl .semi-page-next,.semi-portal-rtl .semi-page-prev,.semi-portal-rtl .semi-page-next{transform:scaleX(-1)}.semi-select-option{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;word-break:break-all;padding:8px 12px;color:var(--semi-color-text-0);border-radius:0;position:relative;display:flex;flex-wrap:nowrap;align-items:center;cursor:pointer;box-sizing:border-box;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-select-option-icon{width:12px;color:transparent;margin-right:8px;display:flex;justify-content:center;align-content:center}.semi-select-option-text{display:flex;flex-wrap:wrap;white-space:pre}.semi-select-option-keyword{color:var(--semi-color-primary);background-color:inherit;font-weight:600}.semi-select-option:active{background-color:var(--semi-color-fill-1)}.semi-select-option-empty{cursor:not-allowed;color:var(--semi-color-disabled-text);justify-content:center}.semi-select-option-empty:hover,.semi-select-option-empty:active{background-color:inherit}.semi-select-option-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-select-option-disabled:hover{background-color:var(--semi-color-fill-0)}.semi-select-option-selected{font-weight:600;background:transparent}.semi-select-option-selected .semi-select-option-icon{color:var(--semi-color-text-2)}.semi-select-option-focused{background-color:var(--semi-color-fill-0)}.semi-select{box-sizing:border-box;border-radius:var(--semi-border-radius-small);border:1px solid transparent;height:32px;font-weight:400;background-color:var(--semi-color-fill-0);display:inline-flex;vertical-align:middle;position:relative;outline:none;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none));max-height:300px;overflow-y:auto}.semi-select:hover{background-color:var(--semi-color-fill-1);border:1px solid transparent}.semi-select:focus{border:1px solid var(--semi-color-focus-border);background-color:var(--semi-color-fill-0);outline:0}.semi-select:active{background-color:var(--semi-color-fill-2)}.semi-select-small{height:24px;line-height:24px}.semi-select-large{min-height:40px;line-height:40px}.semi-select-large .semi-select-selection{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-select-open,.semi-select-focus{border:1px solid var(--semi-color-focus-border);outline:0}.semi-select-open:hover,.semi-select-focus:hover{background-color:var(--semi-color-fill-0);border:1px solid var(--semi-color-focus-border)}.semi-select-open:active,.semi-select-focus:active{background-color:var(--semi-color-fill-2);border:1px solid var(--semi-color-focus-border)}.semi-select-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-select-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-select-warning:focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-select-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning-light-active)}.semi-select-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-select-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-select-error:focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-select-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger-light-active)}.semi-select-disabled{cursor:not-allowed;background-color:var(--semi-color-disabled-fill)}.semi-select-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-select-disabled:focus{border:1px solid transparent;background-color:var(--semi-color-disabled-fill)}.semi-select-disabled .semi-select-selection,.semi-select-disabled .semi-select-selection-placeholder{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-select-disabled .semi-select-arrow,.semi-select-disabled .semi-select-prefix,.semi-select-disabled .semi-select-suffix{color:var(--semi-color-disabled-text)}.semi-select-disabled .semi-tag{color:var(--semi-color-disabled-text);background-color:transparent}.semi-select-selection{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:100%;display:flex;align-items:center;flex-grow:1;overflow:hidden;margin-left:12px;cursor:pointer;color:var(--semi-color-text-0)}.semi-select-selection-text{width:100%;overflow:hidden;text-overflow:ellipsis}.semi-select-selection-text-inactive{display:flex;opacity:.4}.semi-select-selection-text-hide{display:none}.semi-select-selection-placeholder{color:var(--semi-color-text-2)}.semi-select-selection .semi-tag{margin-top:1px;margin-right:4px;margin-bottom:1px}.semi-select-selection .semi-tag:nth-of-type(1){margin-left:0}.semi-select-selection .semi-tag-group{height:inherit}.semi-select-selection .semi-tag-group .semi-tag{margin-top:1px;margin-right:4px;margin-bottom:1px}.semi-select-content-wrapper{white-space:nowrap;overflow:hidden;display:flex;align-items:center;height:100%}.semi-select-content-wrapper-collapse{display:inline-flex;flex-shrink:0;width:100%}.semi-select-content-wrapper-collapse .semi-overflow-list-overflow{max-width:100%;min-width:50px}.semi-select-content-wrapper-collapse>.semi-select-content-wrapper-collapse-tag{background-color:transparent}.semi-select-content-wrapper-collapse>.semi-select-content-wrapper-collapse-N{background-color:transparent;padding:4px;color:var(--semi-color-text-0);font-size:12px}.semi-select-multiple{height:auto}.semi-select-multiple .semi-select-selection{margin-left:4px}.semi-select-multiple .semi-select-content-wrapper{width:100%;min-height:30px;flex-wrap:wrap}.semi-select-multiple .semi-select-content-wrapper-empty{margin-left:8px}.semi-select-multiple .semi-select-content-wrapper .semi-tag-group{display:flex;align-items:center}.semi-select-multiple .semi-select-content-wrapper-one-line{flex-wrap:nowrap}.semi-select-multiple .semi-select-content-wrapper-one-line .semi-tag-group{flex-wrap:nowrap;justify-content:flex-start;overflow:hidden;flex-shrink:0}.semi-select-multiple .semi-select-inline-label-wrapper{flex-shrink:0}.semi-select-multiple.semi-select-large .semi-select-content-wrapper{min-height:38px}.semi-select-multiple.semi-select-small .semi-select-content-wrapper{min-height:22px}.semi-select-arrow{display:flex;align-items:center;justify-content:center;width:32px;color:var(--semi-color-text-2);flex-shrink:0;transform:rotate(var(--semi-transform-rotate-none))}.semi-select-arrow-empty{display:flex;width:12px}.semi-select-prefix,.semi-select-suffix{display:flex;justify-content:center;align-items:center}.semi-select-prefix-text,.semi-select-suffix-text{margin:0 12px;color:var(--semi-color-text-2);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-select-prefix-icon,.semi-select-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-select-suffix{display:flex;justify-content:center;align-items:center}.semi-select-clear{display:flex;justify-content:center;align-items:center;width:32px;color:var(--semi-color-text-2);flex-shrink:0}.semi-select-clear:hover{color:var(--semi-color-primary)}.semi-select-inset-label-wrapper{display:inline}.semi-select-inset-label{margin:0 12px;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-select-create-tips{color:var(--semi-color-text-2);margin-right:4px}.semi-select-with-prefix .semi-select-selection{margin-left:0}.semi-select-single.semi-select-filterable .semi-select-content-wrapper{flex-grow:1;height:100%;overflow:hidden;position:relative}.semi-select-single.semi-select-filterable .semi-input-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;border:none;background-color:transparent}.semi-select-single.semi-select-filterable .semi-input-wrapper-focus{border:none}.semi-select-single.semi-select-filterable .semi-input{padding-left:0;padding-right:0;height:100%}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper{flex-grow:1;height:100%;overflow:hidden;position:relative}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper{height:24px;line-height:24px}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper .semi-input-default{height:24px}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper{position:absolute;top:0;left:0;height:100%}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper .semi-input-default{height:100%}.semi-select-multiple.semi-select-filterable .semi-input-wrapper{height:100%;width:100%;border:none;background-color:transparent}.semi-select-multiple.semi-select-filterable .semi-input-wrapper-focus{border:none}.semi-select-multiple.semi-select-filterable .semi-input{padding-left:0;padding-right:0}.semi-select-multiple.semi-select-filterable.semi-select-large .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper-large{height:24px;line-height:24px}.semi-select-multiple.semi-select-filterable.semi-select-large .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper-large .semi-input-large{height:24px}.semi-select-multiple.semi-select-filterable.semi-select-small .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper{height:20px;line-height:20px}.semi-select-multiple.semi-select-filterable.semi-select-small .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper .semi-input-small{height:20px}.semi-select-option-list-wrapper{padding:4px 0}.semi-select-option-list{overflow-x:hidden;overflow-y:auto}.semi-select-option-list-chosen .semi-select-option-icon{display:flex}.semi-select-group{color:var(--semi-color-text-2);margin-top:4px;padding:12px 16px 4px 32px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:default}.semi-select-group:not(:nth-of-type(1)){border-top:1px solid var(--semi-color-border)}.semi-select-loading-wrapper{padding:8px 16px;cursor:not-allowed;height:20px;box-sizing:content-box}.semi-select-borderless:not(:focus-within):not(:hover){background-color:transparent;border-color:transparent}.semi-select-borderless:not(:focus-within):not(:hover) .semi-select-arrow{opacity:0}.semi-select-borderless:focus-within:not(:active){background-color:transparent}.semi-select-borderless.semi-select-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-select-borderless.semi-select-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-select-borderless.semi-select-error:focus-within{border-color:var(--semi-color-danger)}.semi-select-borderless.semi-select-warning:focus-within{border-color:var(--semi-color-warning)}.semi-select-dropdown-search-wrapper{padding:8px 12px;border-bottom:1px solid transparent}.semi-rtl .semi-select,.semi-portal-rtl .semi-select{direction:rtl}.semi-rtl .semi-select-selection,.semi-portal-rtl .semi-select-selection{margin-left:0;margin-right:12px}.semi-rtl .semi-select-selection .semi-tag:nth-of-type(1),.semi-portal-rtl .semi-select-selection .semi-tag:nth-of-type(1){margin-right:0}.semi-rtl .semi-select-selection .semi-tag-group .semi-tag,.semi-portal-rtl .semi-select-selection .semi-tag-group .semi-tag{margin-left:4px;margin-right:0}.semi-rtl .semi-select-multiple .semi-select-selection,.semi-portal-rtl .semi-select-multiple .semi-select-selection{margin-left:0;margin-right:4px}.semi-rtl .semi-select-multiple .semi-select-content-wrapper-empty,.semi-portal-rtl .semi-select-multiple .semi-select-content-wrapper-empty{margin-left:0;margin-right:8px}.semi-rtl .semi-select-create-tips,.semi-portal-rtl .semi-select-create-tips{margin-right:0;margin-left:4px}.semi-rtl .semi-select-with-prefix .semi-select-selection,.semi-portal-rtl .semi-select-with-prefix .semi-select-selection{margin-left:auto;margin-right:0}.semi-rtl .semi-select-single.semi-select-filterable .semi-input-wrapper,.semi-portal-rtl .semi-select-single.semi-select-filterable .semi-input-wrapper,.semi-rtl .semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper,.semi-portal-rtl .semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper{left:auto;right:0}.semi-rtl .semi-select-group,.semi-portal-rtl .semi-select-group{padding-left:32px;padding-right:16px}.semi-rtl .semi-select-option-icon,.semi-portal-rtl .semi-select-option-icon{margin-right:0;margin-left:8px}.semi-table-panel-operation{background-color:var(--semi-color-primary);padding:8px 16px;display:flex;justify-content:space-between;color:var(--semi-color-text-2)}.semi-table-panel-operation-right,.semi-table-panel-operation-left{display:flex;justify-content:space-between}.semi-table-panel-operation-selected{color:var(--semi-color-primary-light-active)}.semi-table-pagination-info{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}.semi-table-pagination-outer{display:flex;justify-content:space-between;align-items:center}.semi-table{width:100%;text-align:left;border-collapse:separate;border-spacing:0;font-size:inherit;display:table}.semi-table-wrapper{zoom:1;position:relative;clear:both;box-sizing:border-box;margin:0;padding:0;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0);width:100%}.semi-table-wrapper[data-column-fixed=true]{z-index:1}.semi-table-wrapper-ltr,.semi-table-wrapper-ltr .semi-spin{direction:ltr}.semi-table-middle .semi-table-tbody>.semi-table-row>.semi-table-row-cell{padding-top:12px;padding-bottom:12px}.semi-table-small .semi-table-tbody>.semi-table-row>.semi-table-row-cell{padding-top:8px;padding-bottom:8px}.semi-table-title{position:relative;padding:16px 0}.semi-table-container{position:relative}.semi-table-header{overflow:hidden;scrollbar-base-color:transparent}.semi-table-header::-webkit-scrollbar{background-color:transparent;border-bottom:2px solid var(--semi-color-border)}.semi-table-header-sticky{position:sticky;z-index:102}.semi-table-header-sticky .semi-table-thead>.semi-table-row>.semi-table-row-head{background-color:var(--semi-color-bg-1)}.semi-table-header-hidden{height:0}.semi-table-align-center .semi-table-operate-wrapper{justify-content:center}.semi-table-align-right .semi-table-operate-wrapper{justify-content:flex-end}.semi-table-operate-wrapper{display:flex;justify-content:flex-start}.semi-table-body{overflow:auto;width:100%;box-sizing:border-box}.semi-table-colgroup{display:table-column-group}.semi-table-colgroup .semi-table-col{display:table-column}.semi-table-colgroup .semi-table-column-expand,.semi-table-colgroup .semi-table-column-selection{width:48px}.semi-table-thead>.semi-table-row>.semi-table-row-head{background-color:var(--semi-color-bg-1);color:var(--semi-color-text-2);font-weight:600;text-align:left;border-bottom:2px solid var(--semi-color-border);padding:8px 16px;vertical-align:middle;overflow-wrap:break-word;position:relative;transition:background-color var(--semi-transition_duration-none) linear}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-row-head-clickSort{cursor:pointer}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-row-head-clickSort:hover{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-0)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left,.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right{z-index:101;position:sticky;background-color:var(--semi-color-bg-1)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last{border-right:1px solid var(--semi-color-border);box-shadow:3px 0 0 0 var(--semi-color-shadow)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last.resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last.resizing .react-resizable-handle:hover{background-color:unset}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first{border-left:1px solid var(--semi-color-border);box-shadow:-3px 0 0 0 var(--semi-color-shadow)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first.resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first.resizing .react-resizable-handle:hover{background-color:unset}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first[x-type=column-scrollbar]{box-shadow:none;border-left:transparent}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-column-selection{text-align:center}.semi-table-thead>.semi-table-row>.semi-table-row-head[colspan]:not([colspan="1"]){text-align:center}.semi-table-thead>.semi-table-row>.semi-table-row-head .semi-table-header-column{display:inline-flex;align-items:center}.semi-table-thead>.semi-table-row>.semi-table-row-head-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-table-thead>.semi-table-row>.semi-table-row-head-ellipsis .semi-table-row-head-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-table-thead>.semi-table-row .react-resizable{position:relative;background-clip:padding-box}.semi-table-thead>.semi-table-row .resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-thead>.semi-table-row .resizing .react-resizable-handle:hover{background-color:unset}.semi-table-thead>.semi-table-row .react-resizable-handle{position:absolute;width:9px;height:calc(100% - 8px);background-color:var(--semi-color-border);bottom:4px;right:-1px;cursor:col-resize;z-index:0}.semi-table-thead>.semi-table-row .react-resizable-handle:hover{background-color:var(--semi-color-primary)}.semi-table-tbody{display:table-row-group}.semi-table-tbody>.semi-table-row{display:table-row;background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row.semi-table-row-hovered>.semi-table-row-cell{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-0)}.semi-table-tbody>.semi-table-row.semi-table-row-hovered>.semi-table-row-cell.semi-table-cell-fixed-left,.semi-table-tbody>.semi-table-row.semi-table-row-hovered>.semi-table-row-cell.semi-table-cell-fixed-right{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row:hover>.semi-table-row-cell{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-0)}.semi-table-tbody>.semi-table-row:hover>.semi-table-row-cell.semi-table-cell-fixed-left,.semi-table-tbody>.semi-table-row:hover>.semi-table-row-cell.semi-table-cell-fixed-right{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row>.semi-table-row-cell{display:table-cell;overflow-wrap:break-word;border-left:none;border-right:none;border-bottom:1px solid var(--semi-color-border);padding:16px;box-sizing:border-box;position:relative;vertical-align:middle}.semi-table-tbody>.semi-table-row>.semi-table-row-cell.resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-tbody>.semi-table-row>.semi-table-row-cell-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-table-tbody>.semi-table-row.semi-table-row-expand>.semi-table-row-cell{background-color:var(--semi-color-fill-0)}.semi-table-tbody>.semi-table-row.semi-table-row-hidden{display:none}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left,.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right{z-index:101;position:sticky;background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last{border-right:1px solid var(--semi-color-border);box-shadow:3px 0 0 0 var(--semi-color-shadow)}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first{border-left:1px solid var(--semi-color-border);box-shadow:-3px 0 0 0 var(--semi-color-shadow)}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed>*{transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms}.semi-table-tbody>.semi-table-row>*{transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms}.semi-table-tbody>.semi-table-row-section{display:table-row}.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell{background-color:rgba(var(--semi-grey-0),1);border-bottom:1px solid var(--semi-color-border)}.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell:not(.semi-table-column-selection){padding:10px 16px}.semi-table-tbody>.semi-table-row-section .semi-table-section-inner{display:inline-flex;align-items:center}.semi-table-virtualized .semi-table-tbody{display:block}.semi-table-virtualized .semi-table-tbody>.semi-table-row{display:flex}.semi-table-virtualized .semi-table-tbody>.semi-table-row>.semi-table-row-cell{word-wrap:unset;word-break:unset;white-space:nowrap;display:inline-flex;align-items:center;overflow:hidden}.semi-table-virtualized .semi-table-tbody>.semi-table-row-section>.semi-table-row-cell{padding-top:16px;padding-bottom:16px;display:flex}.semi-table-virtualized .semi-table-tbody>.semi-table-row-expand>.semi-table-row-cell{padding:0;overflow:unset}.semi-table-footer{background-color:var(--semi-color-fill-0);padding:16px;margin:0;position:relative}.semi-table .semi-table-selection-wrap{display:inline-flex;vertical-align:bottom}.semi-table .semi-table-selection-disabled{cursor:not-allowed}.semi-table .semi-table-selection-disabled>.semi-checkbox{pointer-events:none}.semi-table .semi-table-column-hidden{display:none}.semi-table .semi-table-column-selection{text-align:center}.semi-table .semi-table-column-selection .semi-checkbox-inner-display .semi-icon{left:0;top:0}.semi-table .semi-table-column-expand .semi-table-expand-icon{transform:translateY(2px)}.semi-table .semi-table-column-expand .semi-table-expand-icon:last-child{margin-right:0}.semi-table .semi-table-column-sorter{display:inline-block;width:16px;height:16px;vertical-align:middle;text-align:center}.semi-table .semi-table-column-sorter-wrapper{display:flex;gap:4px;align-items:center;cursor:pointer;overflow:hidden}.semi-table .semi-table-column-sorter-up,.semi-table .semi-table-column-sorter-down{height:0;display:block;color:var(--semi-color-text-2)}.semi-table .semi-table-column-sorter-up:hover .anticon,.semi-table .semi-table-column-sorter-down:hover .anticon{color:var(--semi-color-text-2)}.semi-table .semi-table-column-sorter-up svg,.semi-table .semi-table-column-sorter-down svg{width:16px;height:16px}.semi-table .semi-table-column-sorter-up.on .semi-icon-caretup,.semi-table .semi-table-column-sorter-up.on .semi-icon-caretdown,.semi-table .semi-table-column-sorter-down.on .semi-icon-caretup,.semi-table .semi-table-column-sorter-down.on .semi-icon-caretdown{color:var(--semi-color-primary)}.semi-table .semi-table-column-filter{margin-left:4px;display:inline-flex;cursor:pointer;color:var(--semi-color-text-2);align-items:center}.semi-table .semi-table-column-filter svg{width:16px;height:16px}.semi-table .semi-table-column-filter.on{color:var(--semi-color-primary)}.semi-table-bordered>.semi-table-title{padding-left:16px;padding-right:16px;border-top:1px solid var(--semi-color-border);border-right:1px solid var(--semi-color-border);border-left:1px solid var(--semi-color-border)}.semi-table-bordered>.semi-table-container{border:1px solid var(--semi-color-border);border-right:0;border-bottom:0}:where(.semi-table-bordered)>.semi-table-container>.semi-table-header::-webkit-scrollbar{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered)>.semi-table-container>.semi-table-footer{border-left:1px solid var(--semi-color-border);border-right:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-border)}.semi-table-bordered:not(.semi-table-scroll-position-right)>.semi-table-container:after{content:"";position:absolute;top:0;right:0;bottom:0;width:1px;background-color:var(--semi-color-border);display:block;z-index:103;pointer-events:none}.semi-table-bordered:not(.semi-table-scroll-position-right)>.semi-table-container>.semi-table-header{box-shadow:inset -1px 0 0 0 var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container)>.semi-table-body>.semi-table-placeholder{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container>.semi-table-body)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head .react-resizable-handle{background-color:transparent}:where(.semi-table-bordered>.semi-table-container>.semi-table-body)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head,:where(.semi-table-bordered>.semi-table-container>.semi-table-body)>.semi-table>.semi-table-tbody>.semi-table-row>.semi-table-row-cell{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container>.semi-table-header)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container>.semi-table-header)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head .react-resizable-handle{background-color:transparent}.semi-table-placeholder{position:sticky;left:0;z-index:1;box-sizing:border-box;padding:16px 12px;color:var(--semi-color-text-2);font-size:14px;text-align:center;background:transparent;border-bottom:1px solid var(--semi-color-border)}.semi-table-fixed{table-layout:fixed;min-width:100%}.semi-table-fixed>.semi-table-tbody>.semi-table-row-expand>.semi-table-row-cell>.semi-table-expand-inner,.semi-table-fixed>.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell>.semi-table-section-inner{position:sticky;overflow:auto;left:0;margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px;height:100%;display:flex;align-items:center}.semi-table-fixed-header table{table-layout:fixed}.semi-table-scroll-position-left .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last,.semi-table-scroll-position-left .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-left-last{box-shadow:none}.semi-table-scroll-position-right .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first,.semi-table-scroll-position-right .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-right-first{box-shadow:none}.semi-table-pagination-outer{color:var(--semi-color-text-2);min-height:60px}.semi-table-expand-icon{color:var(--semi-color-text-2);cursor:pointer;display:inline-flex;align-items:center;-webkit-user-select:none;user-select:none;background:transparent;position:relative;margin-right:8px}.semi-table-expand-icon-cell{display:inline-flex;align-items:center;justify-content:center}.semi-table-expand-icon .semi-table-expandedIcon-show{transition:transform .15s cubic-bezier(.62,.05,.36,.95);transform:rotate(90deg)}.semi-table-expand-icon .semi-table-expandedIcon-hide{transition:transform .15s cubic-bezier(.62,.05,.36,.95);transform:rotate(0)}.semi-table-column-filter-dropdown .semi-dropdown-menu{max-height:290px;overflow-y:auto}.semi-table-wrapper-rtl .semi-table{direction:rtl;text-align:right}.semi-table-wrapper-rtl .semi-table-align-left .semi-table-operate-wrapper{justify-content:flex-end}.semi-table-wrapper-rtl .semi-table-align-right .semi-table-operate-wrapper{justify-content:flex-start}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head{text-align:right}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last.resizing{border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first{border-left:0;border-right:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first.resizing{border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first[x-type=column-scrollbar]{box-shadow:none;border-right:transparent}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row .resizing{border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row .react-resizable-handle{right:auto;left:-1px}.semi-table-wrapper-rtl .semi-table-tbody{display:table-row-group}.semi-table-wrapper-rtl .semi-table-tbody>.semi-table-row>.semi-table-row-cell.resizing{border-right:0;border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first{border-left:0;border-right:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table .semi-table-column-selection .semi-checkbox-inner-display .semi-icon{left:auto;right:0}.semi-table-wrapper-rtl .semi-table .semi-table-column-expand .semi-table-expand-icon{transform:scaleX(-1) translateY(2px)}.semi-table-wrapper-rtl .semi-table .semi-table-column-expand .semi-table-expand-icon:last-child{margin-right:auto;margin-left:0}.semi-table-wrapper-rtl .semi-table .semi-table-column-sorter,.semi-table-wrapper-rtl .semi-table .semi-table-column-filter{margin-left:0;margin-right:4px}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-container{border-left:0;border-right:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-thead>.semi-table-row>.semi-table-row-head,.semi-table-wrapper-rtl .semi-table-bordered .semi-table-tbody>.semi-table-row>.semi-table-row-cell{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-placeholder{border-left:1px solid var(--semi-color-border);border-right:0}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-header::-webkit-scrollbar{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-bordered:not(.semi-table-scroll-position-left)>.semi-table-container:after{content:"";position:absolute;top:0;left:0;bottom:0;width:1px;background-color:var(--semi-color-border);display:block;z-index:103;pointer-events:none}.semi-table-wrapper-rtl .semi-table-fixed>.semi-table-tbody>.semi-table-row-expand>.semi-table-row-cell>.semi-table-expand-inner,.semi-table-wrapper-rtl .semi-table-fixed>.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell>.semi-table-section-inner{left:auto;right:0;margin-right:-16px;margin-left:-16px;padding-right:16px;padding-left:16px}.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last,.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-left-last{box-shadow:3px 0 0 0 var(--semi-color-shadow)}.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first,.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-right-first{box-shadow:none}.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last,.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-left-last{box-shadow:none}.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first,.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-right-first{box-shadow:-3px 0 0 0 var(--semi-color-shadow)}.semi-table-wrapper-rtl .semi-table-expand-icon{margin-right:auto;margin-left:8px;transform:scaleX(-1) translateY(2px)}.semi-table-wrapper-rtl .semi-spin{direction:rtl}.semi-tabs{box-sizing:border-box;position:relative}.semi-tabs-left{display:flex;flex-direction:row}.semi-tabs-bar{position:relative;white-space:nowrap;outline:none}.semi-tabs-bar-left{display:flex;flex-direction:column}.semi-tabs-bar-extra{padding:0 5px}.semi-tabs-bar-more-trigger{display:inline-block;cursor:pointer;color:var(--semi-color-text-2)}.semi-tabs-bar-more-trigger-content{display:flex;align-content:center}.semi-tabs-bar-more-trigger-content-icon:not(:not(.semi-tabs-bar-more-trigger-content-icon)){margin:0 8px;flex-shrink:0;display:flex;align-items:center}.semi-tabs-bar-more-trigger-line{padding:16px 4px 14px}.semi-tabs-bar-more-trigger-card,.semi-tabs-bar-more-trigger-button{padding:8px 12px}.semi-tabs-bar .semi-tabs-tab{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;box-sizing:border-box;position:relative;display:block;float:left;font-weight:400;color:var(--semi-color-text-2);-webkit-user-select:none;user-select:none}.semi-tabs-bar .semi-tabs-tab .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){position:relative;margin-right:8px;top:3px;color:var(--semi-color-text-2);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-bar .semi-tabs-tab .semi-icon.semi-tabs-tab-icon-close{margin-right:0;font-size:14px;color:var(--semi-color-text-2);margin-left:10px;cursor:pointer}.semi-tabs-bar .semi-tabs-tab:hover{color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab:active{color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab:active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab-active,.semi-tabs-bar .semi-tabs-tab-active:hover{cursor:default;font-weight:600;color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab-active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate),.semi-tabs-bar .semi-tabs-tab-active:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-primary)}.semi-tabs-bar .semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close,.semi-tabs-bar .semi-tabs-tab-active:hover .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-bar .semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close:hover{color:var(--semi-color-text-1)}.semi-tabs-bar .semi-tabs-tab-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-tabs-bar .semi-tabs-tab-disabled:hover{color:var(--semi-color-disabled-text);border-bottom:none}.semi-tabs-tab-single.semi-tabs-tab{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;box-sizing:border-box;position:relative;display:inline-block;font-weight:400;color:var(--semi-color-text-2);-webkit-user-select:none;user-select:none}.semi-tabs-tab-single.semi-tabs-tab .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){position:relative;margin-right:8px;top:3px;color:var(--semi-color-text-2);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-tab-single.semi-tabs-tab .semi-icon.semi-tabs-tab-icon-close{margin-right:0;font-size:14px;color:var(--semi-color-text-2);margin-left:10px;cursor:pointer}.semi-tabs-tab-single.semi-tabs-tab .semi-icon.semi-tabs-tab-icon-close.semi-icon-close:hover,.semi-tabs-tab-single.semi-tabs-tab:hover{color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:hover .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-tab-single.semi-tabs-tab:active{color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:active .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-tab-single.semi-tabs-tab-active,.semi-tabs-tab-single.semi-tabs-tab-active:hover{cursor:default;font-weight:600;color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab-active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate),.semi-tabs-tab-single.semi-tabs-tab-active:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-primary)}.semi-tabs-tab-single.semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close,.semi-tabs-tab-single.semi-tabs-tab-active:hover .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-tab-single.semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close:hover{color:var(--semi-color-text-1)}.semi-tabs-tab-single.semi-tabs-tab-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-tabs-tab-single.semi-tabs-tab-disabled:hover{color:var(--semi-color-disabled-text);border-bottom:none}.semi-tabs-bar-collapse,.semi-tabs-bar-collapse .semi-tabs-bar-overflow-list{display:flex;align-items:center}.semi-tabs-bar-collapse .semi-overflow-list{flex:1}.semi-tabs-bar-collapse .semi-overflow-list .semi-overflow-list-scroll-wrapper{-ms-overflow-style:none;scrollbar-width:none}.semi-tabs-bar-collapse .semi-overflow-list .semi-overflow-list-scroll-wrapper::-webkit-scrollbar{display:none;width:0;height:0}.semi-tabs-bar-collapse .semi-overflow-list .semi-overflow-list-scroll-wrapper:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-collapse .semi-overflow-list>.semi-button-disabled{color:var(--semi-color-disabled-text);background-color:transparent}.semi-tabs-bar-collapse .semi-overflow-list>.semi-button-disabled:hover{color:var(--semi-color-disabled-text);background-color:transparent}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start{margin-right:4px}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start>.semi-button[aria-disabled=false]{color:var(--semi-color-primary);padding:8px;border:0px solid transparent;background-color:transparent}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start>.semi-button[aria-disabled=false]:hover{background-color:var(--semi-color-fill-0);color:var(--semi-color-primary);border-color:transparent}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start>.semi-button[aria-disabled=false]:active{background-color:var(--semi-color-fill-1);color:var(--semi-color-primary);border-color:transparent}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end{margin-left:4px}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end>.semi-button[aria-disabled=false]{color:var(--semi-color-primary);padding:8px;border:0px solid transparent;background-color:transparent}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end>.semi-button[aria-disabled=false]:hover{background-color:var(--semi-color-fill-0);color:var(--semi-color-primary);border-color:transparent}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end>.semi-button[aria-disabled=false]:active{background-color:var(--semi-color-fill-1);color:var(--semi-color-primary);border-color:transparent}.semi-tabs-bar-dropdown{max-height:300px;overflow-y:auto}.semi-tabs-bar:after{content:"";height:0;display:block;clear:both}.semi-tabs-bar-line.semi-tabs-bar-top{border-bottom:1px solid var(--semi-color-border);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab{padding:16px 4px 14px;transition:border-bottom-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);border-bottom:2px solid transparent}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:nth-of-type(1){padding-left:0}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:hover{border-bottom:2px solid var(--semi-color-fill-0)}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-1px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:active{border-bottom:2px solid var(--semi-color-fill-1)}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:24px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-small{padding:8px 4px 6px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-medium{padding:12px 4px 10px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-active,.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-active:hover{border-bottom:2px solid var(--semi-color-primary)}.semi-tabs-bar-line.semi-tabs-bar-left{border-right:1px solid var(--semi-color-border)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab{padding:12px;border-left:2px solid transparent;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:hover{border-left:2px solid var(--semi-color-fill-0);background-color:var(--semi-color-fill-0)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:active{border-left:2px solid var(--semi-color-fill-1);background-color:var(--semi-color-fill-1)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-small{padding:6px}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-medium{padding:10px}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active{background-color:var(--semi-color-primary-light-default)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active,.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active:hover{border-left:2px solid var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-tabs-bar-line .semi-tabs-bar-extra{height:50px;line-height:50px}.semi-tabs-bar-line .semi-tabs-bar-line-extra-small{height:36px;line-height:36px}.semi-tabs-bar-card.semi-tabs-bar-top:before{position:absolute;right:0;left:0;bottom:0;border-bottom:1px solid var(--semi-color-border);content:""}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab{border:1px solid transparent;border-bottom:none;border-radius:var(--semi-border-radius-small) var(--semi-border-radius-small) 0 0}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:hover{border-bottom:none}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:8px}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab-active,.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab-active:hover{padding:8px 12px 7px;border:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-bg-1);background:transparent}.semi-tabs-bar-card.semi-tabs-bar-left{border-right:1px solid var(--semi-color-border)}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab{border:1px solid transparent;border-right:none;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:hover{border-right:none}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:not(:last-of-type){margin-bottom:8px}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:after{content:" ";width:1px;position:absolute;right:-1px;top:0;bottom:0;background:var(--semi-color-bg-1)}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active,.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:hover{padding:8px 12px;border:1px solid var(--semi-color-border);border-right:none;background:transparent}.semi-tabs-bar-card .semi-tabs-tab{padding:8px 12px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-bar-card .semi-tabs-tab:hover{background:var(--semi-color-fill-0)}.semi-tabs-bar-card .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-card .semi-tabs-tab:active{background:var(--semi-color-fill-1)}.semi-tabs-bar-button{border:none}.semi-tabs-bar-button.semi-tabs-bar-left .semi-tabs-tab:not(:last-of-type){margin-bottom:8px}.semi-tabs-bar-button.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:8px}.semi-tabs-bar-button .semi-tabs-tab{padding:8px 12px;border-radius:var(--semi-border-radius-small);color:var(--semi-color-text-2);border:none;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-bar-button .semi-tabs-tab:hover{border:none;background-color:var(--semi-color-fill-0)}.semi-tabs-bar-button .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-button .semi-tabs-tab:active{background-color:var(--semi-color-fill-1)}.semi-tabs-bar-button .semi-tabs-tab-active,.semi-tabs-bar-button .semi-tabs-tab-active:hover{color:var(--semi-color-primary);border:none;background-color:var(--semi-color-primary-light-default)}.semi-tabs-bar-slash .semi-tabs-tab{padding:12px 0}.semi-tabs-bar-slash .semi-tabs-tab:nth-of-type(1){padding-left:0}.semi-tabs-bar-slash .semi-tabs-tab:not(:last-of-type){margin-right:16px}.semi-tabs-bar-slash .semi-tabs-tab:not(:last-of-type):after{content:"";margin-left:16px;display:inline-block;height:14px;width:8px;margin-top:3px;margin-bottom:3px;vertical-align:bottom;background:linear-gradient(to bottom right,transparent 0%,transparent calc(50% - 1px),var(--semi-color-text-2) 50%,transparent calc(50% + 1px),transparent 100%)}.semi-tabs-content{width:100%;padding:5px 0}.semi-tabs-content-left{height:100%;padding:0 5px}.semi-tabs-pane{width:100%;overflow:hidden;color:var(--semi-color-text-0)}.semi-tabs-pane:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-tabs-pane-inactive,.semi-tabs-content-no-animated .semi-tabs-pane-inactive{display:none}@keyframes semi-tabs-panel-keyframe-leftShow{0%{transform:translate(60px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes semi-tabs-panel-keyframe-rightShow{0%{transform:translate(-60px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes semi-tabs-panel-keyframe-topShow{0%{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes semi-tabs-panel-keyframe-bottomShow{0%{transform:translateY(-60px);opacity:0}to{transform:translateY(0);opacity:1}}.semi-tabs-pane-animate-leftShow{animation:.2s semi-tabs-panel-keyframe-leftShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-pane-animate-rightShow{animation:.2s semi-tabs-panel-keyframe-rightShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-pane-animate-topShow{animation:.2s semi-tabs-panel-keyframe-topShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-pane-animate-bottomShow{animation:.2s semi-tabs-panel-keyframe-bottomShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab{font-size:14px;padding:16px 4px 14px;transition:border-bottom-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);border-bottom:2px solid transparent}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:nth-of-type(1){padding-left:0}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:hover{border-bottom:2px solid var(--semi-color-fill-0)}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-1px}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:active{border-bottom:2px solid var(--semi-color-fill-1)}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-small{font-size:14px;padding:8px 4px 6px}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-medium{font-size:14px;padding:12px 4px 10px}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-active,.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-active:hover{border-bottom:2px solid var(--semi-color-primary)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab{padding:12px;border-left:2px solid transparent;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab:hover{border-left:2px solid var(--semi-color-fill-0);background-color:var(--semi-color-fill-0)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab:active{border-left:2px solid var(--semi-color-fill-1);background-color:var(--semi-color-fill-1)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-small{padding:6px}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-medium{padding:10px}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-active{background-color:var(--semi-color-primary-light-default)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-active,.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-active:hover{border-left:2px solid var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab{border:1px solid transparent;border-bottom:none;border-radius:var(--semi-border-radius-small) var(--semi-border-radius-small) 0 0}.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab:hover{border-bottom:none}.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab-active,.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab-active:hover{padding:8px 12px 7px;border:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-bg-1);background:transparent}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab{border:1px solid transparent;border-right:none;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab:hover{border-right:none}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab-active:after{content:" ";width:1px;position:absolute;right:-1px;top:0;bottom:0;background:var(--semi-color-bg-1)}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab-active,.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab-active:hover{padding:8px 12px;border:1px solid var(--semi-color-border);border-right:none;background:transparent}.semi-tabs-tab-card.semi-tabs-tab{padding:8px 12px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-tab-card.semi-tabs-tab:hover{background:var(--semi-color-fill-0)}.semi-tabs-tab-card.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-tab-card.semi-tabs-tab:active{background:var(--semi-color-fill-1)}.semi-tabs-tab-button{border:none}.semi-tabs-tab-button.semi-tabs-tab{padding:8px 12px;border-radius:var(--semi-border-radius-small);color:var(--semi-color-text-2);border:none;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-tab-button.semi-tabs-tab:hover{border:none;background-color:var(--semi-color-fill-0)}.semi-tabs-tab-button.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-tab-button.semi-tabs-tab:active{background-color:var(--semi-color-fill-1)}.semi-tabs-tab-button.semi-tabs-tab-active,.semi-tabs-tab-button.semi-tabs-tab-active:hover{color:var(--semi-color-primary);border:none;background-color:var(--semi-color-primary-light-default)}.semi-rtl .semi-tabs,.semi-portal-rtl .semi-tabs{direction:rtl}.semi-rtl .semi-tabs-bar .semi-tabs-tab,.semi-portal-rtl .semi-tabs-bar .semi-tabs-tab{float:right}.semi-rtl .semi-tabs-bar .semi-tabs-tab .semi-icon,.semi-portal-rtl .semi-tabs-bar .semi-tabs-tab .semi-icon{margin-right:0;margin-left:8px}.semi-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-start,.semi-portal-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-start{margin-right:0;margin-left:4px}.semi-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-end,.semi-portal-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-end{margin-left:0;margin-right:4px}.semi-rtl .semi-tabs-bar-collapse .semi-icon-chevron_right,.semi-rtl .semi-tabs-bar-collapse .semi-icon-chevron_left,.semi-portal-rtl .semi-tabs-bar-collapse .semi-icon-chevron_right,.semi-portal-rtl .semi-tabs-bar-collapse .semi-icon-chevron_left{transform:scaleX(-1)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type),.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:0;margin-left:24px}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab{border-left:0;border-right:2px solid transparent}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:hover,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:hover{border-left:0;border-right:2px solid var(--semi-color-fill-0)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:active,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:active{border-left:0;border-right:2px solid var(--semi-color-fill-1)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active,.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active:hover,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active:hover{border-left:0;border-right:2px solid var(--semi-color-primary)}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type),.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-left:0;margin-right:8px}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab{border:1px solid transparent;border-left:none}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:hover,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:hover{border-left:none}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:after,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:after{right:auto;left:-1px}.semi-rtl .semi-tabs-bar-button.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type),.semi-portal-rtl .semi-tabs-bar-button.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:auto;margin-left:8px} diff --git a/frontends/desktop/dist/assets/loading-6Qy4iUUr.css b/frontends/desktop/dist/assets/loading-6Qy4iUUr.css deleted file mode 100644 index 43c2b57b..00000000 --- a/frontends/desktop/dist/assets/loading-6Qy4iUUr.css +++ /dev/null @@ -1 +0,0 @@ -.semi-progress{display:flex;align-items:center}.semi-progress-track{background-color:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small)}.semi-progress-horizontal{height:4px;margin-top:4px;margin-bottom:4px}.semi-progress-horizontal.semi-progress-large{height:6px}.semi-progress-horizontal .semi-progress-track{height:100%;width:100%}.semi-progress-horizontal .semi-progress-track-inner{height:100%;background-color:var(--semi-color-success);border-radius:var(--semi-border-radius-small);transition:width .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-progress-horizontal .semi-progress-line-text{min-width:45px;font-weight:600;margin-left:16px;color:var(--semi-color-text-0)}.semi-progress-vertical{width:4px;display:inline-flex;height:100%;margin-left:4px;margin-right:4px;flex-direction:column}.semi-progress-vertical.semi-progress-large{width:6px}.semi-progress-vertical .semi-progress-track{height:100%;width:100%}.semi-progress-vertical .semi-progress-track-inner{background-color:var(--semi-color-success);border-radius:var(--semi-border-radius-small);width:100%;transition:height .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-progress-vertical .semi-progress-line-text{font-weight:600;margin-top:8px}.semi-progress-circle{position:relative;display:inline-block}.semi-progress-circle-ring{display:block}.semi-progress-circle-ring-track{stroke:var(--semi-color-fill-0)}.semi-progress-circle-ring-inner{transition:stroke-dashoffset .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95);transform:rotate(-90deg);transform-origin:50% 50%;stroke:var(--semi-color-success)}.semi-progress-circle-text{position:absolute;top:50%;left:50%;width:100%;text-align:center;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none;color:var(--semi-color-mode-minor-text)}.semi-rtl .semi-progress,.semi-portal-rtl .semi-progress{direction:rtl}.semi-rtl .semi-progress-horizontal .semi-progress-line-text,.semi-portal-rtl .semi-progress-horizontal .semi-progress-line-text{margin-left:0;margin-right:16px}.semi-rtl .semi-progress-circle-ring-inner,.semi-portal-rtl .semi-progress-circle-ring-inner{transform:rotate(-90deg);transform-origin:50% 50%}.semi-rtl .semi-progress-circle-text,.semi-portal-rtl .semi-progress-circle-text{left:auto;right:50%;transform:translate(50%,-50%)}:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Microsoft YaHei UI,Helvetica Neue,sans-serif;background:var(--semi-color-bg-0);color:var(--semi-color-text-0)}*{box-sizing:border-box}html,body,#loading-root{width:100%;height:100%;margin:0}body{overflow:hidden;background:var(--semi-color-bg-0)}.ga-bootstrap-shell{height:100%;display:flex;flex-direction:column}.ga-bootstrap-app{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:28px;background:radial-gradient(circle at 50% 18%,color-mix(in srgb,var(--semi-color-primary) 8%,transparent),transparent 42%),var(--semi-color-bg-0);color:var(--semi-color-text-0)}.ga-bootstrap-screen{width:min(100%,380px);text-align:center}.ga-bootstrap-loading{display:flex;flex-direction:column;align-items:center;gap:18px}.ga-bootstrap-title.semi-typography{margin:0;color:var(--semi-color-text-0)}.ga-bootstrap-description.semi-typography{margin:8px auto 22px;max-width:340px;line-height:1.65}.ga-bootstrap-progress-bar{margin-top:4px}.ga-bootstrap-stages{display:grid;gap:2px;margin:18px 0 0;padding:0;list-style:none;text-align:left}.ga-bootstrap-stages li{display:flex;align-items:center;gap:10px;min-height:30px;padding:4px 8px;border-radius:var(--semi-border-radius-small);color:var(--semi-color-text-2)}.ga-bootstrap-stages li[data-state=running]{background:var(--semi-color-primary-light-default);color:var(--semi-color-primary)}.ga-bootstrap-stages li[data-state=done]{color:var(--semi-color-success)}.ga-bootstrap-stages li[data-state=failed]{background:var(--semi-color-danger-light-default);color:var(--semi-color-danger)}.ga-bootstrap-stage-dot{width:14px;height:14px;border:2px solid var(--semi-color-border);border-radius:50%;flex:0 0 auto}.ga-bootstrap-log{margin-top:18px;text-align:left;border-top:1px solid var(--semi-color-border)}.ga-bootstrap-log .semi-collapse-header{padding-inline:4px;color:var(--semi-color-text-2)}.ga-bootstrap-log pre{max-height:150px;margin:0;padding:12px;overflow:auto;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);background:var(--semi-color-fill-0);color:var(--semi-color-text-1);font:11px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.ga-bootstrap-ready{display:flex;flex-direction:column;align-items:center;gap:10px}.ga-bootstrap-ready-icon{margin-bottom:4px;color:var(--semi-color-success)} diff --git a/frontends/desktop/dist/assets/loading-C2VTZYXF.js b/frontends/desktop/dist/assets/loading-C2VTZYXF.js deleted file mode 100644 index 79b0f27c..00000000 --- a/frontends/desktop/dist/assets/loading-C2VTZYXF.js +++ /dev/null @@ -1,2 +0,0 @@ -import{c as ie,b as v,B as oe,l as A,R as k,au as Y,P as l,an as le,aj as o,T as j,ap as K,S as te,U as ce,al as pe,at as de,aq as ue,as as ge,ar as he}from"./tauri-compat-D_GD_wMe.js";import{S as fe}from"./index-D9Nakaf3.js";import{A as me}from"./Animation-DbFrgT1j.js";import{W as be}from"./WindowsTitlebar-Byi-SYR_.js";function ye(e){return v.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},e),v.createElement("g",{clipPath:"url(#clip_loading)"},v.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 0c.66 0 1.2.54 1.2 1.2v5.2a1.2 1.2 0 0 1-2.4 0V1.2c0-.66.54-1.2 1.2-1.2Zm7.05 2.3c.54.38.66 1.13.27 1.67l-3.06 4.2a1.2 1.2 0 0 1-1.94-1.4l3.06-4.21a1.2 1.2 0 0 1 1.67-.27Zm-14.1 0a1.2 1.2 0 0 1 1.67.26l3.06 4.2a1.2 1.2 0 1 1-1.94 1.41l-3.06-4.2a1.2 1.2 0 0 1 .27-1.68Zm-4.36 6c.2-.64.88-.98 1.5-.78l4.95 1.6a1.2 1.2 0 0 1-.74 2.3L1.36 9.8a1.2 1.2 0 0 1-.77-1.5Zm22.82 0c.2.62-.14 1.3-.77 1.5l-4.94 1.61a1.2 1.2 0 0 1-.74-2.28l4.94-1.6c.63-.21 1.3.13 1.51.76Zm-15.6 5.06c.21.63-.13 1.3-.77 1.51l-4.94 1.6a1.2 1.2 0 0 1-.74-2.27l4.94-1.61c.63-.2 1.31.14 1.52.77Zm8.37 0c.21-.63.89-.98 1.52-.77l4.94 1.6a1.2 1.2 0 0 1-.74 2.29l-4.94-1.6a1.2 1.2 0 0 1-.78-1.52Zm-6.77 2.2c.54.39.66 1.14.27 1.68l-3.06 4.2a1.2 1.2 0 1 1-1.94-1.4l3.06-4.21a1.2 1.2 0 0 1 1.67-.27Zm5.18 0a1.2 1.2 0 0 1 1.67.27l3.06 4.2a1.2 1.2 0 0 1-1.94 1.41l-3.06-4.2a1.2 1.2 0 0 1 .27-1.68ZM12 16.4c.66 0 1.2.54 1.2 1.2v5.2a1.2 1.2 0 0 1-2.4 0v-5.2c0-.66.54-1.2 1.2-1.2Z",fill:"currentColor"})),v.createElement("defs",null,v.createElement("clipPath",{id:"clip_loading"},v.createElement("rect",{width:24,height:24,fill:"currentColor"}))))}const Se=ie(ye,"loading"),ve={PREFIX:`${oe}-progress`},m={types:["line","circle"],DEFAULT_TYPE:"line",STROKE_DEFAULT:"var(--semi-color-success)",strokeLineCap:["square","round"],DEFAULT_LINECAP:"round",sizes:["default","small","large"],DEFAULT_SIZE:"default",directions:["vertical","horizontal"],DEFAULT_DIRECTION:"horizontal"};function xe(e,r,t){try{const n=ke(e,r,t);if(n.length!==0)return n}catch{return}}function ke(e,r,t){if(e.sort((s,i)=>s.percent-i.percent),e[0].percent>r)return m.STROKE_DEFAULT;const n=e[e.length-1];if(n.percenti.percent)continue;const a=e[s-1];return t?Ee({startColor:F(a.color),endColor:F(i.color),size:i.percent-a.percent-1},r-a.percent-1):F(a.color)}}function Ee(e,r){const{startColor:t,endColor:n,size:s}=e,i=t.split(""),a=n.split(""),c=[parseInt(`${i[1]}${i[2]}`,16),parseInt(`${a[1]}${a[2]}`,16)],h=[parseInt(`${i[3]}${i[4]}`,16),parseInt(`${a[3]}${a[4]}`,16)],d=[parseInt(`${i[5]}${i[6]}`,16),parseInt(`${a[5]}${a[6]}`,16)],p=[parseInt(`${i[7]}${i[8]}`,16),parseInt(`${a[7]}${a[8]}`,16)],u=(c[0]-c[1])/(s+1),D=(h[0]-h[1])/(s+1),O=(d[0]-d[1])/(s+1),R=(p[0]-p[1])/(s+1);function $(g){const x=Math.round(c[0]-u*(g+1)).toString(16),_=Math.round(h[0]-D*(g+1)).toString(16),G=Math.round(d[0]-O*(g+1)).toString(16),w=`${N(x)}${N(_)}${N(G)}`,b=Math.floor(R*(g+1)+p[1]).toString(16);return S.Hex(`#${w}`,b)}function N(g){return g.length===1?`0${g}`:g.length===0?"00":g}if(typeof r>"u"){const g=[t];for(let x=0;xt+t).join("")),`#${e}${r||"ff"}`)},SemiDesignToken(e){if(typeof window>"u")return;const r=getComputedStyle(document.body).getPropertyValue(`--semi-${e}`);if(r==="")return;const t=`rgba(${r}, 1)`;return S.RgbA(t)},HslA(e){const r=C.hslA.exec(e),t=parseInt(r[2]),n=parseInt(r[3])/100,s=parseInt(r[4])/100,i=r[5],a=(1-Math.abs(2*s-1))*n,c=a*(1-Math.abs(t/60%2-1)),h=s-a/2;let d=0,p=0,u=0;return 0<=t&&t<60?(d=a,p=c,u=0):60<=t&&t<120?(d=c,p=a,u=0):120<=t&&t<180?(d=0,p=a,u=c):180<=t&&t<240?(d=0,p=c,u=a):240<=t&&t<300?(d=c,p=0,u=a):300<=t&&t<360&&(d=a,p=0,u=c),d=Math.round((d+h)*255).toString(16),p=Math.round((p+h)*255).toString(16),u=Math.round((u+h)*255).toString(16),S.utils.pAL(d,p,u,i)},RgbA(e){const r=C.rgbA.exec(e),t=parseInt(r[2],10).toString(16),n=parseInt(r[3],10).toString(16),s=parseInt(r[4],10).toString(16),i=r[5];return S.utils.pAL(t,n,s,i)},utils:{pAL(e,r,t,n){return e.length==1&&(e="0"+e),r.length==1&&(r="0"+r),t.length==1&&(t="0"+t),typeof n<"u"?(n=Math.round(parseInt(n)*255).toString(16),n.length==1&&(n="0"+n),"#"+e+r+t+n):"#"+e+r+t}}},C={hex:/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,hslA:/(hsl)a?\(\s*?(\d+),?\s*?(\d+)%,?\s*?(\d+)%,?\s*?\/?(\s*?[\d.]+)?\s*?\)/,rgbA:/(rgb)a?\(\s*?(\d+),?\s*?(\d+),?\s*?(\d+),?\s*?\/?(\s*?[\d.]+)?\s*?\)/,semiDesignTokens:/(\w+)?-?(\w+)-?(\d)?/},V={ALONG:["black","white"],SEQUENCE:["amber","blue","cyan","green","grey","indigo","light-blue","light-green","lime","orange","pink","purple","red","teal","violet","yellow"]};var X=function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(e);s{if(this._mounted===!1)return;const n=parseInt(t.value);this.setState({percentNumber:n})}),this.animation.on("rest",()=>{this._mounted!==!1&&this.setState({percentNumber:this.props.percent})}),this.animation.start()}}componentWillUnmount(){this.animation&&this.animation.destroy(),this._mounted=!1}renderCircleProgress(){const r=this.props,{strokeLinecap:t,style:n,className:s,strokeWidth:i,format:a,size:c,stroke:h,strokeGradient:d,showInfo:p,percent:u,orbitStroke:D,id:O}=r,R=X(r,["strokeLinecap","style","className","strokeWidth","format","size","stroke","strokeGradient","showInfo","percent","orbitStroke","id"]),$=this.props["aria-label"],N=this.props["aria-labelledby"],g=this.props["aria-valuetext"],{percentNumber:x}=this.state,_={wrapper:A(`${y}-circle`,s),svg:A(`${y}-circle-ring`),circle:A(`${y}-circle-ring-inner`),track:A(`${y}-circle-ring-track`)},G=this.calcPercent(u),w=this.calcPercent(x);let b;this.props.width?b=this.props.width:c===m.DEFAULT_SIZE?b=72:b=24;const q=this.selectStroke(h,u,d),L=b/2,U=b/2,Z=(b-i)/2,W=Z*2*Math.PI,se=(1-G/100)*W,B=`${W} ${W}`,ae=a(w);return k.createElement("div",Object.assign({id:O,className:_.wrapper,style:n,role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":w,"aria-labelledby":N,"aria-label":$,"aria-valuetext":g},Y(R)),k.createElement("svg",{key:c,className:_.svg,height:b,width:b,"aria-hidden":!0},k.createElement("circle",{className:_.track,strokeDashoffset:0,strokeWidth:i,strokeDasharray:B,strokeLinecap:t,fill:"transparent",style:{stroke:D},r:Z,cx:U,cy:L,"aria-hidden":!0}),k.createElement("circle",{className:_.circle,strokeDashoffset:se,strokeWidth:i,strokeDasharray:B,strokeLinecap:t,fill:"transparent",style:{stroke:q},r:Z,cx:U,cy:L,"aria-hidden":!0})),p&&c!=="small"?k.createElement("span",{className:`${y}-circle-text`},ae):null)}calcPercent(r){let t;return r>100?t=100:r<0?t=0:t=r,t}selectStroke(r,t,n){if(typeof r=="string")return r;const s=xe(r,t,n);return typeof s<"u"?s:null}renderLineProgress(){const r=this.props,{className:t,style:n,stroke:s,strokeGradient:i,direction:a,format:c,showInfo:h,size:d,percent:p,orbitStroke:u,id:D}=r,O=X(r,["className","style","stroke","strokeGradient","direction","format","showInfo","size","percent","orbitStroke","id"]),R=this.props["aria-label"],$=this.props["aria-labelledby"],N=this.props["aria-valuetext"],{percentNumber:g}=this.state,x=A(y,t,{[`${y}-horizontal`]:a===m.DEFAULT_DIRECTION,[`${y}-vertical`]:a!==m.DEFAULT_DIRECTION,[`${y}-large`]:d==="large"}),_=A({[`${y}-track`]:!0}),G=A(`${y}-track-inner`),w=this.calcPercent(p),b=this.calcPercent(g),L={background:this.selectStroke(s,p,i)};a===m.DEFAULT_DIRECTION?L.width=`${w}%`:L.height=`${w}%`;const U=c(b);return k.createElement("div",Object.assign({id:D,className:x,style:n,role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":w,"aria-labelledby":$,"aria-label":R,"aria-valuetext":N},Y(O)),k.createElement("div",{className:_,style:u?{backgroundColor:u}:{},"aria-hidden":!0},k.createElement("div",{className:G,style:L,"aria-hidden":!0})),h?k.createElement("div",{className:`${y}-line-text`},U):null)}render(){const{type:r}=this.props;return r==="line"?this.renderLineProgress():this.renderCircleProgress()}}H.propTypes={"aria-label":l.string,"aria-labelledby":l.string,"aria-valuetext":l.string,className:l.string,direction:l.oneOf(m.directions),format:l.oneOfType([l.func,l.node]),id:l.string,motion:l.oneOfType([l.bool,l.func,l.object]),orbitStroke:l.string,percent:l.number,scale:l.number,showInfo:l.bool,size:l.oneOf(m.sizes),stroke:l.oneOfType([l.string,l.arrayOf(l.shape({percent:l.number,color:l.string}))]),strokeGradient:l.bool,strokeLinecap:l.oneOf(m.strokeLineCap),strokeWidth:l.number,style:l.object,type:l.oneOf(m.types),width:l.number};H.defaultProps={className:"",direction:m.DEFAULT_DIRECTION,format:e=>`${e}%`,motion:!0,percent:0,showInfo:!1,size:m.DEFAULT_SIZE,strokeGradient:!1,strokeLinecap:m.DEFAULT_LINECAP,strokeWidth:4,style:{},type:m.DEFAULT_TYPE};const Q=["validate","python","dependencies","service","ui"],_e={buildId:"",platform:"",projectDir:"",pythonPath:"",portState:"unknown",bridgeIdentity:null,recentLogs:[]},we={seq:-1,route:"loading",mode:"cold_start",phase:"idle",stage:null,stages:[],logs:[],failure:null,diagnostics:_e,overallPct:0};function Ie(e){return e.phase==="ready"?"ready":e.mode==="prepare"||e.phase==="preparing"?"progress":"loading"}function Te(e){if(e.mode!=="prepare"&&e.phase!=="preparing")return[];const r=e.stage?Q.indexOf(e.stage):-1;return Q.map((t,n)=>{let s="pending";return e.phase==="failed"&&t===e.stage?s="failed":e.phase==="ready"||r>n?s="done":r===n&&(s="running"),{key:t,state:s,pct:e.progress}})}function Ne(e,r){if(r.type!=="snapshot"||r.snapshot.seq<=e.seq)return e;const t=r.snapshot;return{seq:t.seq,route:Ie(t),mode:t.mode,phase:t.phase,stage:t.stage,stages:Te(t),logs:t.diagnostics.recentLogs,failure:t.failure,diagnostics:t.diagnostics,overallPct:t.progress}}let I=null,T=null,P=0,Ae=0;const $e={start:"validate",venv:"python",deps:"dependencies",done:"service",starting:"service"};function Le(e,r,t){const n=Number.isFinite(r)?Math.max(0,Math.min(100,r)):0;return{seq:e,mode:"prepare",phase:n>=100?"ready":"preparing",stage:$e[t]??"dependencies",progress:n,failure:null,diagnostics:{buildId:"",platform:navigator.platform||"",projectDir:"",pythonPath:"",portState:"unknown",bridgeIdentity:null,recentLogs:[]}}}function Ce(e,r){const t=window,n=t.__GA_LEGACY_PROGRESS__??[];t.__GA_LEGACY_PROGRESS__=n;const s=t.gaProgress,i=(c,h)=>{r===P&&e({type:"snapshot",snapshot:Le(++Ae,c,String(h||""))})},a=n.splice(0,n.length);return t.gaProgress=i,a.forEach(({pct:c,key:h})=>i(c,h)),()=>{t.gaProgress===i&&(s?t.gaProgress=s:delete t.gaProgress)}}function z(e,r){const t=r==="preparing";return{seq:e,mode:t?"prepare":"cold_start",phase:r,stage:t?"dependencies":r==="starting_service"?"service":null,progress:r==="ready"?100:t?55:15,failure:null,diagnostics:{buildId:"development",platform:navigator.platform||"web",projectDir:"",pythonPath:"",portState:"unknown",bridgeIdentity:null,recentLogs:t?["Installing runtime components…"]:[]}}}function Pe(e){const r=[setTimeout(()=>e({type:"snapshot",snapshot:z(1,"resolving")}),300),setTimeout(()=>e({type:"snapshot",snapshot:z(2,"preparing")}),900),setTimeout(()=>e({type:"snapshot",snapshot:z(3,"starting_service")}),1800),setTimeout(()=>e({type:"snapshot",snapshot:z(4,"ready")}),2600)];I=()=>r.forEach(clearTimeout)}async function je(e){var s,i;const r=++P;T==null||T(),T=Ce(e,r);const t=window.__TAURI__;if(!((s=t==null?void 0:t.core)!=null&&s.invoke)){Pe(e);return}let n;if((i=t.event)!=null&&i.listen)try{n=await t.event.listen("bootstrap",a=>{r===P&&e({type:"snapshot",snapshot:a.payload})})}catch(a){console.warn("[bootstrap] event subscription unavailable; using legacy progress updates",a)}if(r!==P){n==null||n();return}n&&(I==null||I(),I=n);try{const a=await t.core.invoke("get_bootstrap_snapshot");r===P&&e({type:"snapshot",snapshot:a})}catch(a){if(!le(a,"get_bootstrap_snapshot"))throw a}}function De(){P+=1,I&&(I(),I=null),T==null||T(),T=null}const f=(navigator.language||"").toLowerCase().startsWith("zh"),re={starting:f?"正在启动 GenericAgent":"Starting GenericAgent",resuming:f?"正在恢复 GenericAgent":"Resuming GenericAgent",preparing:f?"正在准备本地运行环境":"Preparing the local runtime",preparingDetail:f?"首次启动可能需要几分钟,完成后会自动打开主界面。":"The first launch may take a few minutes. The main window will open automatically.",stage_validate:f?"检查本地文件":"Checking local files",stage_python:f?"准备 Python 环境":"Preparing Python environment",stage_dependencies:f?"安装运行组件":"Installing runtime components",stage_service:f?"启动后台服务":"Starting background service",stage_ui:f?"打开主界面":"Opening the main window",ready:f?"准备完成":"Ready",readyDetail:f?"正在进入主界面…":"Opening the main window…",logTitle:f?"启动详情":"Startup details",stagesLabel:f?"启动阶段":"Startup stages"};function E(e){return re[e]}function Oe(e,r){return re[e]??r}function Re({mode:e}){return o.jsxs("section",{className:"ga-bootstrap-screen ga-bootstrap-loading","aria-live":"polite",children:[o.jsx(fe,{size:"large"}),o.jsx(j.Title,{heading:5,className:"ga-bootstrap-title",children:E(e==="hot_start"?"resuming":"starting")})]})}function Ge({state:e}){return e==="done"?o.jsx(te,{"aria-hidden":"true"}):e==="failed"?o.jsx(ce,{"aria-hidden":"true"}):e==="running"?o.jsx(Se,{spin:!0,"aria-hidden":"true"}):o.jsx("span",{className:"ga-bootstrap-stage-dot","aria-hidden":"true"})}function Fe({stages:e,overallPct:r,logs:t}){return o.jsxs("section",{className:"ga-bootstrap-screen ga-bootstrap-progress","aria-live":"polite",children:[o.jsx(j.Title,{heading:5,className:"ga-bootstrap-title",children:E("preparing")}),o.jsx(j.Paragraph,{type:"tertiary",className:"ga-bootstrap-description",children:E("preparingDetail")}),o.jsx(H,{"aria-label":E("preparing"),percent:Math.max(0,Math.min(100,r)),showInfo:!0,stroke:"var(--semi-color-primary)",className:"ga-bootstrap-progress-bar"}),o.jsx("ul",{className:"ga-bootstrap-stages","aria-label":E("stagesLabel"),children:e.map(n=>o.jsxs("li",{"data-state":n.state,children:[o.jsx(Ge,{state:n.state}),o.jsx(j.Text,{type:n.state==="pending"?"tertiary":void 0,children:Oe(`stage_${n.key}`,n.key)})]},n.key))}),t.length>0&&o.jsx(K,{className:"ga-bootstrap-log",accordion:!0,children:o.jsx(K.Panel,{itemKey:"startup-log",header:E("logTitle"),children:o.jsx("pre",{children:t.slice(-20).join(` -`)})})})]})}function Me(){return o.jsxs("section",{className:"ga-bootstrap-screen ga-bootstrap-ready","aria-live":"polite",children:[o.jsx(te,{size:"extra-large",className:"ga-bootstrap-ready-icon","aria-hidden":"true"}),o.jsx(j.Title,{heading:5,className:"ga-bootstrap-title",children:E("ready")}),o.jsx(j.Text,{type:"tertiary",children:E("readyDetail")})]})}function Ue(){const[e,r]=v.useReducer(Ne,we);v.useEffect(()=>(je(r).catch(n=>{console.error("[bootstrap] failed to subscribe to startup state",n)}),()=>De()),[]);let t;switch(e.route){case"loading":t=o.jsx(Re,{mode:e.mode});break;case"progress":t=o.jsx(Fe,{stages:e.stages,overallPct:e.overallPct,logs:e.logs});break;case"ready":t=o.jsx(Me,{});break}return o.jsxs("div",{className:"ga-bootstrap-shell",children:[pe&&o.jsx(be,{}),o.jsx("main",{className:"ga-bootstrap-app","data-route":e.route,children:t})]})}function ne(e){e.matches?(document.documentElement.dataset.appearance="dark",document.body.setAttribute("theme-mode","dark")):(document.documentElement.dataset.appearance="light",document.body.removeAttribute("theme-mode"))}const M=window.matchMedia("(prefers-color-scheme: dark)");ne(M);var ee;(ee=M.addEventListener)==null||ee.call(M,"change",()=>ne(M));const J=document.getElementById("loading-root");J&&de.createRoot(J).render(o.jsx(v.StrictMode,{children:o.jsx(ue,{locale:f?ge:he,children:o.jsx(Ue,{})})})); diff --git a/frontends/desktop/dist/assets/main-gzsbzrvY.css b/frontends/desktop/dist/assets/main-gzsbzrvY.css deleted file mode 100644 index 7c81efb1..00000000 --- a/frontends/desktop/dist/assets/main-gzsbzrvY.css +++ /dev/null @@ -1 +0,0 @@ -*{box-sizing:border-box;margin:0;padding:0}.no-transition,.no-transition *,.no-transition *:before,.no-transition *:after{transition:none!important;animation:none!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--semi-color-fill-2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--semi-color-fill-1)}@font-face{font-family:codicon;src:url(/assets/codicon-DjkITdqj.ttf) format("truetype");font-weight:400;font-style:normal}.codicon{font-family:codicon;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;--foreground: hsl(0 0% 8%);--background: hsl(0 0% 100%);--ui-text-secondary: hsl(0 0% 30%);--ui-text-tertiary: hsl(0 0% 48%);--ui-text-quaternary: hsl(0 0% 60%);--ui-icon-nav: hsl(0 0% 24%);--ui-icon-nav-active: hsl(0 0% 8%);--theme-primary: hsl(220 80% 50%);--ui-row-hover-background: hsl(0 0% 95%);--ui-row-active-background: hsl(0 0% 92%);--ui-control-hover-background: hsl(0 0% 95%);--ui-control-active-background: hsl(0 0% 90%);--ui-sidebar-surface-background: hsl(0 0% 100%);--ui-stroke-tertiary: hsl(0 0% 88%);--sidebar-edge-border: hsl(0 0% 86%);--ui-accent: hsl(220 80% 50%);--chrome-action-hover: hsl(0 0% 93%);--dt-card: hsl(0 0% 100%);--dt-background: hsl(0 0% 97%);--ui-chat-surface-background: hsl(0 0% 100%);--ui-chat-bubble-background: hsl(0 0% 96%);--ui-stroke-secondary: hsl(0 0% 78%);--ui-tooltip-surface: #17181b;--ui-tooltip-text: #fff}[data-appearance=dark]{--foreground: hsl(0 0% 95%);--background: hsl(240 3% 7.5%);--ui-text-secondary: hsl(0 0% 78%);--ui-text-tertiary: hsl(0 0% 60%);--ui-text-quaternary: hsl(0 0% 48%);--ui-icon-nav: hsl(0 0% 72%);--ui-icon-nav-active: hsl(0 0% 95%);--theme-primary: hsl(220 80% 68%);--ui-row-hover-background: hsl(220 3% 15%);--ui-row-active-background: hsl(220 3% 18%);--ui-control-hover-background: hsl(220 3% 16%);--ui-control-active-background: hsl(220 3% 22%);--ui-sidebar-surface-background: hsl(210 3% 12%);--ui-stroke-tertiary: hsl(220 3% 22%);--sidebar-edge-border: hsl(220 3% 20%);--ui-accent: hsl(220 80% 68%);--chrome-action-hover: hsl(220 3% 18%);--dt-card: hsl(220 3% 14%);--dt-background: hsl(240 3% 7.5%);--ui-chat-surface-background: hsl(240 3% 7.5%);--ui-chat-bubble-background: hsl(220 3% 14%);--ui-stroke-secondary: hsl(220 3% 32%)}html,body,#app{height:100%;width:100%;overflow:hidden;font-family:var(--font-sans)}body{background:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.semi-tooltip-wrapper{padding:5px 8px;background-color:var(--ui-tooltip-surface);color:var(--ui-tooltip-text);font-family:var(--font-sans);font-size:12px;line-height:18px}.semi-tooltip-wrapper .semi-tooltip-icon-arrow{color:var(--ui-tooltip-surface)}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit}[data-appearance=dark] body{color-scheme:dark}[data-slot=model-chip-label],[data-slot=model-menu-name],.ga-model-name,.ga-mixin-member-name{font-family:var(--font-mono)}.ga-root-error{width:min(100%,620px);min-height:100%;margin:0 auto;padding:48px 32px;overflow:auto;color:var(--semi-color-text-0)}.ga-root-error-result.semi-empty{padding:32px 0 18px}.ga-root-error-details{margin-top:18px;border-top:1px solid var(--semi-color-border)}.ga-root-error-details .semi-collapse-header{padding-inline:4px;color:var(--semi-color-text-2)}.ga-root-error-details .semi-typography{margin-top:0}.ga-root-error-details pre{max-height:280px;margin:0;padding:14px;overflow:auto;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);outline:none;background:var(--semi-color-fill-0);color:var(--semi-color-text-1);font:12px/1.55 var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.ga-root-error-details pre:focus-visible{border-color:var(--semi-color-primary);box-shadow:0 0 0 2px var(--semi-color-primary-light-default)}@keyframes semi-input-active{0%{transform:scale(1)}to{transform:scale(.97)}}@keyframes semi-input-inactive{0%{transform:scale(.97)}to{transform:scale(1)}}.semi-input{transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-input-wrapper{display:inline-block;position:relative;vertical-align:middle;box-shadow:none;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--semi-color-fill-0);border:1px transparent solid;border-radius:var(--semi-border-radius-small);width:100%;outline:none;cursor:text;box-sizing:border-box;color:var(--semi-color-text-0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-input-wrapper-default{height:32px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:30px}.semi-input-wrapper-small{height:24px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:22px}.semi-input-wrapper-large{height:40px;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:38px}.semi-input-wrapper:hover{background-color:var(--semi-color-fill-1);border-color:transparent}.semi-input-wrapper-focus{background-color:var(--semi-color-fill-0);border:var(--semi-color-focus-border) solid 1px}.semi-input-wrapper-focus:hover{background-color:var(--semi-color-fill-0);border-color:var(--semi-color-focus-border)}.semi-input-wrapper-focus:active{background-color:var(--semi-color-fill-2);border-color:var(--semi-color-focus-border)}.semi-input-wrapper.semi-input-readonly{cursor:default}.semi-input-wrapper-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-input-wrapper-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-input-wrapper-error.semi-input-wrapper-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-wrapper-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger)}.semi-input-wrapper-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-input-wrapper-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-input-wrapper-warning.semi-input-wrapper-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-wrapper-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning)}.semi-input-wrapper__with-prefix{display:inline-flex;align-items:center}.semi-input-wrapper__with-prefix .semi-input{padding-left:0}.semi-input-wrapper__with-suffix{display:inline-flex;align-items:center}.semi-input-wrapper__with-suffix .semi-input{padding-right:0}.semi-input-wrapper-clearable,.semi-input-wrapper-modebtn{display:inline-flex;align-items:center}.semi-input-wrapper-hidden{border:none}.semi-input-wrapper .semi-icon{color:var(--semi-color-text-2)}.semi-input-wrapper .semi-input-clearbtn,.semi-input-wrapper .semi-input-modebtn{color:var(--semi-color-primary-hover)}.semi-input-wrapper .semi-input-clearbtn>svg,.semi-input-wrapper .semi-input-modebtn>svg{pointer-events:none}.semi-input-wrapper .semi-input-clearbtn:hover,.semi-input-wrapper .semi-input-modebtn:hover{cursor:pointer}.semi-input-wrapper .semi-input-clearbtn:hover .semi-icon,.semi-input-wrapper .semi-input-modebtn:hover .semi-icon{color:var(--semi-color-primary-hover)}.semi-input-wrapper .semi-input-clearbtn:focus-visible,.semi-input-wrapper .semi-input-modebtn:focus-visible{border-radius:var(--semi-border-radius-small);outline:2px solid var(--semi-color-primary-light-active);outline-offset:-1px}.semi-input-wrapper__with-suffix-icon.semi-input-wrapper-clearable:not(.semi-input-wrapper__with-suffix-hidden) .semi-input-clearbtn{min-width:24px;justify-content:flex-end}.semi-input-wrapper-modebtn.semi-input-wrapper-clearable .semi-input-clearbtn{min-width:16px;justify-content:center}.semi-input-wrapper.semi-input-wrapper__with-append-only .semi-input{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper.semi-input-wrapper__with-append-only .semi-input:not(:last-child){border-right-style:none;border-radius:0}.semi-input-wrapper.semi-input-wrapper__with-prepend-only .semi-input{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-input-wrapper.semi-input-wrapper__with-prepend-only .semi-input:not(:last-child){border-right-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend,.semi-input-wrapper.semi-input-wrapper__with-append{display:inline-flex;align-items:center;background-color:transparent}.semi-input-wrapper.semi-input-wrapper__with-prepend:hover,.semi-input-wrapper.semi-input-wrapper__with-append:hover{background-color:transparent}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-focus,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-focus{border:1px transparent solid;background-color:transparent}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input{background-color:var(--semi-color-fill-0);border:1px transparent solid}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:hover,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:hover{background-color:var(--semi-color-fill-1)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:hover~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:hover~.semi-input-modebtn{background-color:var(--semi-color-fill-1)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus{border:1px var(--semi-color-focus-border) solid;background-color:var(--semi-color-fill-0)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus.semi-input-sibling-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus.semi-input-sibling-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus.semi-input-sibling-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus.semi-input-sibling-modebtn{border-right-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus.semi-input-sibling-modebtn+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus.semi-input-sibling-modebtn+.semi-input-clearbtn{border-right-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus~.semi-input-modebtn{box-sizing:border-box;background-color:var(--semi-color-fill-0)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus+.semi-input-clearbtn{border:1px var(--semi-color-focus-border) solid;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;border-left-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus+.semi-input-clearbtn:not(:last-child),.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus+.semi-input-clearbtn:not(:last-child){border-radius:0}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus~.semi-input-modebtn{border:1px var(--semi-color-focus-border) solid;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;border-left-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus~.semi-input-modebtn:not(:last-child),.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus~.semi-input-modebtn:not(:last-child){border-radius:0}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:active,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:active{background-color:var(--semi-color-fill-2)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:active~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:active~.semi-input-modebtn{background-color:var(--semi-color-fill-2)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn:hover{background-color:var(--semi-color-fill-0)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn:hover:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error{border-color:transparent}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:hover+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:hover+.semi-input-modebtn{background-color:var(--semi-color-danger-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:focus,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:focus+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:focus+.semi-input-modebtn{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:active,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:active{background-color:var(--semi-color-danger-light-active)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:active+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:active+.semi-input-modebtn{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn:hover{background-color:var(--semi-color-danger-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn:hover:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning{border-color:transparent}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:hover+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:hover+.semi-input-modebtn{background-color:var(--semi-color-warning-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:focus,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:focus+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:focus+.semi-input-modebtn{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:active,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:active{background-color:var(--semi-color-warning-light-active)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:active+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:active+.semi-input-modebtn{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn:hover{background-color:var(--semi-color-warning-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn:hover:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:var(--semi-color-disabled-fill);-webkit-text-fill-color:var(--semi-color-disabled-text)}.semi-input-wrapper-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-input-wrapper-disabled .semi-input-append,.semi-input-wrapper-disabled .semi-input-prepend,.semi-input-wrapper-disabled .semi-input-suffix,.semi-input-wrapper-disabled .semi-input-prefix,.semi-input-wrapper-disabled .semi-icon{color:var(--semi-color-disabled-text)}.semi-input{border:none;outline:none;width:100%;color:inherit;padding-left:12px;padding-right:12px;background-color:transparent;box-sizing:border-box}.semi-input:placeholder-shown{text-overflow:ellipsis}.semi-input[type=password]::-ms-reveal,.semi-input[type=password]::-ms-clear{display:none}.semi-input[type=search]::-webkit-search-cancel-button{display:none}.semi-input::placeholder{color:var(--semi-color-text-2)}.semi-input-large{height:38px;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:38px}.semi-input-small{height:22px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:22px}.semi-input-default{height:30px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:30px}.semi-input-disabled{cursor:not-allowed;color:inherit}.semi-input-inset-label{margin:0 12px;font-weight:600;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-input-prefix,.semi-input-suffix{display:flex;justify-content:center;align-items:center}.semi-input-prefix-text,.semi-input-suffix-text{margin:0 12px;color:var(--semi-color-text-2);font-weight:600;white-space:nowrap}.semi-input-prefix-icon,.semi-input-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-input-suffix{display:flex;justify-content:center;align-items:center}.semi-input-clearbtn,.semi-input-modebtn{display:flex;align-items:center;height:100%;justify-content:center;min-width:32px}.semi-input-clearbtn+.semi-input-suffix+.semi-input-suffix-text{margin-left:0}.semi-input-clearbtn+.semi-input-suffix+.semi-input-suffix-icon{margin-left:0}.semi-input-suffix-hidden{display:none}.semi-input-prepend,.semi-input-append{height:100%;display:flex;align-items:center;background-color:var(--semi-color-fill-0);color:var(--semi-color-text-2);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;flex-shrink:0}.semi-input-prepend-icon,.semi-input-prepend-text,.semi-input-append-icon,.semi-input-append-text{padding:0 12px}.semi-input-append{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;border-left:1px transparent solid}.semi-input-prepend{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small);border-right:1px transparent solid}.semi-input-disabled::placeholder{color:var(--semi-color-disabled-text)}.semi-input-group{display:inline-flex;align-items:center;align-content:center;flex-wrap:wrap}.semi-input-group .semi-select,.semi-input-group .semi-tagInput,.semi-input-group .semi-cascader,.semi-input-group .semi-tree-select,.semi-input-group>.semi-input-wrapper{border-radius:0}.semi-input-group .semi-select:first-child,.semi-input-group .semi-tagInput:first-child,.semi-input-group .semi-cascader:first-child,.semi-input-group .semi-tree-select:first-child,.semi-input-group>.semi-input-wrapper:first-child{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-input-group .semi-select:last-child,.semi-input-group .semi-tagInput:last-child,.semi-input-group .semi-cascader:last-child,.semi-input-group .semi-tree-select:last-child,.semi-input-group>.semi-input-wrapper:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-group .semi-select:not(:last-child),.semi-input-group .semi-tagInput:not(:last-child),.semi-input-group .semi-cascader:not(:last-child),.semi-input-group .semi-tree-select:not(:last-child),.semi-input-group>.semi-input-wrapper:not(:last-child){position:relative}.semi-input-group .semi-select:not(:last-child):after,.semi-input-group .semi-tagInput:not(:last-child):after,.semi-input-group .semi-cascader:not(:last-child):after,.semi-input-group .semi-tree-select:not(:last-child):after,.semi-input-group>.semi-input-wrapper:not(:last-child):after{content:"";background-color:var(--semi-color-border);width:1px;position:absolute;right:-1px;top:1px;bottom:1px}.semi-input-group .semi-select{overflow-y:visible}.semi-input-group .semi-input-number .semi-input-wrapper,.semi-input-group .semi-input-number .semi-datepicker-range-input,.semi-input-group .semi-datepicker .semi-input-wrapper,.semi-input-group .semi-datepicker .semi-datepicker-range-input,.semi-input-group .semi-timepicker .semi-input-wrapper,.semi-input-group .semi-timepicker .semi-datepicker-range-input,.semi-input-group .semi-autocomplete .semi-input-wrapper,.semi-input-group .semi-autocomplete .semi-datepicker-range-input{border-radius:0}.semi-input-group .semi-input-number:first-child .semi-input-wrapper,.semi-input-group .semi-input-number:first-child .semi-datepicker-range-input,.semi-input-group .semi-datepicker:first-child .semi-input-wrapper,.semi-input-group .semi-datepicker:first-child .semi-datepicker-range-input,.semi-input-group .semi-timepicker:first-child .semi-input-wrapper,.semi-input-group .semi-timepicker:first-child .semi-datepicker-range-input,.semi-input-group .semi-autocomplete:first-child .semi-input-wrapper,.semi-input-group .semi-autocomplete:first-child .semi-datepicker-range-input{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-input-group .semi-input-number:last-child .semi-input-wrapper,.semi-input-group .semi-input-number:last-child .semi-datepicker-range-input,.semi-input-group .semi-datepicker:last-child .semi-input-wrapper,.semi-input-group .semi-datepicker:last-child .semi-datepicker-range-input,.semi-input-group .semi-timepicker:last-child .semi-input-wrapper,.semi-input-group .semi-timepicker:last-child .semi-datepicker-range-input,.semi-input-group .semi-autocomplete:last-child .semi-input-wrapper,.semi-input-group .semi-autocomplete:last-child .semi-datepicker-range-input{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-group .semi-input-number:not(:last-child),.semi-input-group .semi-datepicker:not(:last-child),.semi-input-group .semi-timepicker:not(:last-child),.semi-input-group .semi-autocomplete:not(:last-child){position:relative}.semi-input-group .semi-input-number:not(:last-child):after,.semi-input-group .semi-datepicker:not(:last-child):after,.semi-input-group .semi-timepicker:not(:last-child):after,.semi-input-group .semi-autocomplete:not(:last-child):after{content:"";background-color:var(--semi-color-border);width:1px;position:absolute;right:-1px;top:1px;bottom:1px}.semi-input-group-wrapper-with-top-label{margin-top:16px;margin-bottom:16px}.semi-input-group-wrapper-with-top-label .semi-input-group{display:flex}.semi-input-group-wrapper-with-top-label .semi-input-group .semi-form-field{margin-top:0;margin-bottom:0}.semi-input-only_border,.semi-input-only_border:hover{background:transparent;border-color:var(--semi-color-border)}.semi-input-only_border:focus-within{background:transparent}.semi-input-borderless:not(:focus-within):not(:hover){background-color:transparent;border-color:transparent}.semi-input-borderless:focus-within:not(:active){background-color:transparent}.semi-input-borderless.semi-input-wrapper-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-input-borderless.semi-input-wrapper-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-rtl .semi-input-wrapper,.semi-portal-rtl .semi-input-wrapper{direction:rtl}.semi-rtl .semi-input-wrapper__with-prefix .semi-input,.semi-portal-rtl .semi-input-wrapper__with-prefix .semi-input{padding-left:auto;padding-right:0}.semi-rtl .semi-input-wrapper__with-suffix .semi-input,.semi-portal-rtl .semi-input-wrapper__with-suffix .semi-input{padding-right:auto;padding-left:0}.semi-rtl .semi-input,.semi-portal-rtl .semi-input{padding-left:12px;padding-right:12px}.semi-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-portal-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-portal-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-text{margin-left:auto;margin-right:0}.semi-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-portal-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-portal-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-icon{margin-left:auto;margin-right:0}.semi-rtl .semi-input-append,.semi-portal-rtl .semi-input-append{border-left:0;border-right:1px transparent solid}.semi-rtl .semi-input-prepend,.semi-portal-rtl .semi-input-prepend{border-right:0;border-left:1px transparent solid}.semi-rtl .semi-input-group .semi-select:not(:last-child):after,.semi-rtl .semi-input-group .semi-cascader:not(:last-child):after,.semi-rtl .semi-input-group .semi-tree-select:not(:last-child):after,.semi-rtl .semi-input-group>.semi-input-wrapper:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-select:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-cascader:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-tree-select:not(:last-child):after,.semi-portal-rtl .semi-input-group>.semi-input-wrapper:not(:last-child):after{right:auto;left:-1px}.semi-rtl .semi-input-group .semi-input-number:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-input-number:not(:last-child):after{right:auto;left:-1px}.semi-rtl .semi-input-textarea-wrapper,.semi-portal-rtl .semi-input-textarea-wrapper{direction:rtl}.semi-rtl .semi-input-textarea-counter,.semi-portal-rtl .semi-input-textarea-counter{text-align:left}.semi-rtl .semi-input-textarea-showClear,.semi-portal-rtl .semi-input-textarea-showClear{padding-right:0;padding-left:36px}.semi-avatar{position:relative;display:inline-flex;overflow:hidden;align-items:center;justify-content:center;white-space:nowrap;text-align:center;vertical-align:middle}.semi-avatar:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-avatar-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-avatar-no-focus-visible:focus-visible{outline:none}.semi-avatar .semi-avatar-label{display:flex;align-items:center;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-avatar-content{-webkit-user-select:none;user-select:none}.semi-avatar-extra-extra-small{width:20px;height:20px;border-radius:3px}.semi-avatar-extra-extra-small .semi-avatar-content{transform-origin:center;transform:scale(.8)}.semi-avatar-extra-extra-small .semi-avatar-label{font-size:10px;line-height:15px}.semi-avatar-extra-small{width:24px;height:24px;border-radius:3px}.semi-avatar-extra-small .semi-avatar-content{transform-origin:center;transform:scale(.8)}.semi-avatar-extra-small .semi-avatar-label{font-size:10px;line-height:15px}.semi-avatar-small{width:32px;height:32px;border-radius:3px}.semi-avatar-small .semi-avatar-label{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-default{width:40px;height:40px;border-radius:3px}.semi-avatar-default .semi-avatar-label{font-size:18px;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-medium{width:48px;height:48px;border-radius:3px}.semi-avatar-medium .semi-avatar-label{font-size:20px;line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-large{width:72px;height:72px;border-radius:6px}.semi-avatar-large .semi-avatar-label{font-size:32px;line-height:44px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-extra-large{width:128px;height:128px;border-radius:12px}.semi-avatar-extra-large .semi-avatar-label{font-size:64px;line-height:77px}.semi-avatar-circle{border-radius:var(--semi-border-radius-circle)}.semi-avatar-image{background-color:transparent}.semi-avatar>img{display:block;width:100%;height:100%;object-fit:cover}.semi-avatar-hover{position:absolute;left:0;top:0;width:100%;height:100%}.semi-avatar:hover{cursor:pointer}.semi-avatar-wrapper{position:relative;display:inline-flex;flex-direction:column;align-items:center;width:fit-content}.semi-avatar-wrapper .semi-avatar-top_slot-bg{position:absolute;display:flex;justify-content:center;border-radius:50%;overflow:hidden}.semi-avatar-wrapper .semi-avatar-top_slot-bg-small{width:32px;height:32px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-default{width:40px;height:40px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-medium{width:48px;height:48px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-large{width:72px;height:72px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-extra-large{width:128px;height:128px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg{position:absolute}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-small{top:-28px;scale:.4}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-default{top:-32px;scale:.7}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-medium{top:-30px;scale:.8}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-large{top:-30px;scale:1.1}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-extra-large{top:-32px;scale:1.4}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper{position:absolute;display:flex;justify-content:center}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot{color:var(--semi-color-bg-0);font-weight:600}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content{-webkit-user-select:none;user-select:none;position:relative;line-height:normal}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-small{font-size:5px;margin-top:0}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-default{font-size:6px;margin-top:-2px}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-medium{font-size:8px;margin-top:0}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-large{font-size:14px;margin-top:0}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-extra-large{font-size:16px;margin-top:0}.semi-avatar-wrapper .semi-avatar-bottom_slot{color:var(--semi-color-bg-0);position:absolute;cursor:pointer;bottom:3.5px;transform:translateY(50%);-webkit-user-select:none;user-select:none}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle{display:flex;justify-content:center;align-items:center;background:var(--semi-color-primary);border-radius:var(--semi-border-radius-circle);line-height:normal}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-extra-small,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-small{width:12px;height:12px;font-size:5px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-default{width:16px;height:16px;font-size:12px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-medium{width:18px;height:18px;font-size:12px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-large{width:28px;height:28px;font-size:12px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-extra-large{width:28px;height:28px;font-size:14px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square{display:flex;justify-content:center;align-items:center;background:var(--semi-color-primary);border-radius:4px;padding:1px 4px;font-weight:600;border-style:solid;border-color:var(--semi-color-bg-0)}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-extra_small,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-small{font-size:5px;border-width:2px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-default,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-medium,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-large{font-size:12px;border-width:2px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-extra-large{font-size:14px;border-width:2px}.semi-avatar-group{display:inline-block}.semi-avatar-group .semi-avatar{box-sizing:border-box}.semi-avatar-group .semi-avatar:first-child{margin-left:0}.semi-avatar-group .semi-avatar-extra-large{border:3px var(--semi-color-bg-1) solid;margin-left:-32px}.semi-avatar-group .semi-avatar-large{border:3px var(--semi-color-bg-1) solid;margin-left:-18px}.semi-avatar-group .semi-avatar-medium,.semi-avatar-group .semi-avatar-default,.semi-avatar-group .semi-avatar-small{border:2px var(--semi-color-bg-1) solid;margin-left:-12px}.semi-avatar-group .semi-avatar-extra-small{border:1px var(--semi-color-bg-1) solid;margin-left:-10px}.semi-avatar-group .semi-avatar-extra-extra-small{border:1px var(--semi-color-bg-1) solid;margin-left:-4px}.semi-avatar-group .semi-avatar-item-start-0{z-index:100}.semi-avatar-group .semi-avatar-item-end-0{z-index:80}.semi-avatar-group .semi-avatar-item-start-1{z-index:99}.semi-avatar-group .semi-avatar-item-end-1{z-index:81}.semi-avatar-group .semi-avatar-item-start-2{z-index:98}.semi-avatar-group .semi-avatar-item-end-2{z-index:82}.semi-avatar-group .semi-avatar-item-start-3{z-index:97}.semi-avatar-group .semi-avatar-item-end-3{z-index:83}.semi-avatar-group .semi-avatar-item-start-4{z-index:96}.semi-avatar-group .semi-avatar-item-end-4{z-index:84}.semi-avatar-group .semi-avatar-item-start-5{z-index:95}.semi-avatar-group .semi-avatar-item-end-5{z-index:85}.semi-avatar-group .semi-avatar-item-start-6{z-index:94}.semi-avatar-group .semi-avatar-item-end-6{z-index:86}.semi-avatar-group .semi-avatar-item-start-7{z-index:93}.semi-avatar-group .semi-avatar-item-end-7{z-index:87}.semi-avatar-group .semi-avatar-item-start-8{z-index:92}.semi-avatar-group .semi-avatar-item-end-8{z-index:88}.semi-avatar-group .semi-avatar-item-start-9{z-index:91}.semi-avatar-group .semi-avatar-item-end-9{z-index:89}.semi-avatar-group .semi-avatar-item-start-10,.semi-avatar-group .semi-avatar-item-end-10{z-index:90}.semi-avatar-group .semi-avatar-item-start-11{z-index:89}.semi-avatar-group .semi-avatar-item-end-11{z-index:91}.semi-avatar-group .semi-avatar-item-start-12{z-index:88}.semi-avatar-group .semi-avatar-item-end-12{z-index:92}.semi-avatar-group .semi-avatar-item-start-13{z-index:87}.semi-avatar-group .semi-avatar-item-end-13{z-index:93}.semi-avatar-group .semi-avatar-item-start-14{z-index:86}.semi-avatar-group .semi-avatar-item-end-14{z-index:94}.semi-avatar-group .semi-avatar-item-start-15{z-index:85}.semi-avatar-group .semi-avatar-item-end-15{z-index:95}.semi-avatar-group .semi-avatar-item-start-16{z-index:84}.semi-avatar-group .semi-avatar-item-end-16{z-index:96}.semi-avatar-group .semi-avatar-item-start-17{z-index:83}.semi-avatar-group .semi-avatar-item-end-17{z-index:97}.semi-avatar-group .semi-avatar-item-start-18{z-index:82}.semi-avatar-group .semi-avatar-item-end-18{z-index:98}.semi-avatar-group .semi-avatar-item-start-19{z-index:81}.semi-avatar-group .semi-avatar-item-end-19{z-index:99}.semi-avatar-group .semi-avatar-item-start-20{z-index:80}.semi-avatar-group .semi-avatar-item-end-20{z-index:100}.semi-avatar-group .semi-avatar-item-more{background-color:rgba(var(--semi-grey-5),1)}.semi-avatar-amber{background-color:rgba(var(--semi-amber-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-blue{background-color:rgba(var(--semi-blue-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-cyan{background-color:rgba(var(--semi-cyan-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-green{background-color:rgba(var(--semi-green-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-grey{background-color:rgba(var(--semi-grey-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-indigo{background-color:rgba(var(--semi-indigo-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-light-blue{background-color:rgba(var(--semi-light-blue-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-light-green{background-color:rgba(var(--semi-light-green-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-lime{background-color:rgba(var(--semi-lime-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-orange{background-color:rgba(var(--semi-orange-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-pink{background-color:rgba(var(--semi-pink-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-purple{background-color:rgba(var(--semi-purple-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-red{background-color:rgba(var(--semi-red-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-teal{background-color:rgba(var(--semi-teal-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-violet{background-color:rgba(var(--semi-violet-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-yellow{background-color:rgba(var(--semi-yellow-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-additionalBorder{border-style:solid;border-color:var(--semi-color-primary);display:inline-block;box-sizing:border-box;position:absolute;border-width:1.5px;top:-3.5px;left:-3.5px}.semi-avatar-additionalBorder-extra-extra-small{width:27px;height:27px}.semi-avatar-additionalBorder-extra-small{width:31px;height:31px}.semi-avatar-additionalBorder-small{width:39px;height:39px}.semi-avatar-additionalBorder-default{width:47px;height:47px}.semi-avatar-additionalBorder-medium{width:55px;height:55px}.semi-avatar-additionalBorder-large{width:79px;height:79px}.semi-avatar-additionalBorder-extra-large{width:135px;height:135px}.semi-avatar-square.semi-avatar-additionalBorder-extra_extra_small,.semi-avatar-square.semi-avatar-additionalBorder-extra_small,.semi-avatar-square.semi-avatar-additionalBorder-small,.semi-avatar-square.semi-avatar-additionalBorder-default,.semi-avatar-square.semi-avatar-additionalBorder-medium{border-radius:3px}.semi-avatar-square.semi-avatar-additionalBorder-large{border-radius:6px}.semi-avatar-additionalBorder-circle{border-radius:var(--semi-border-radius-circle)}.semi-avatar-additionalBorder-animated{animation:.8s linear infinite semi-avatar-additionalBorder}.semi-avatar-animated{animation:1s linear infinite semi-avatar-content}@keyframes semi-avatar-additionalBorder{0%{opacity:1;transform:scale(1)}to{border-width:0;opacity:0;transform:scale(1.15)}}@keyframes semi-avatar-content{0%{transform:scale(1)}50%{transform:scale(.9)}to{transform:scale(1)}}.semi-rtl .semi-avatar,.semi-portal-rtl .semi-avatar{direction:rtl}.semi-rtl .semi-avatar-extra-extra-small .semi-avatar-content,.semi-portal-rtl .semi-avatar-extra-extra-small .semi-avatar-content,.semi-rtl .semi-avatar-extra-small .semi-avatar-content,.semi-portal-rtl .semi-avatar-extra-small .semi-avatar-content{transform:scale(.8)}.semi-rtl .semi-avatar-hover,.semi-portal-rtl .semi-avatar-hover{left:auto;right:0}.semi-rtl .semi-avatar-group,.semi-portal-rtl .semi-avatar-group{direction:rtl}.semi-rtl .semi-avatar-group .semi-avatar:first-child,.semi-portal-rtl .semi-avatar-group .semi-avatar:first-child{margin-left:auto;margin-right:0}.semi-rtl .semi-avatar-group .semi-avatar-extra-large,.semi-portal-rtl .semi-avatar-group .semi-avatar-extra-large{margin-left:auto;margin-right:-32px}.semi-rtl .semi-avatar-group .semi-avatar-large,.semi-portal-rtl .semi-avatar-group .semi-avatar-large{margin-left:auto;margin-right:-18px}.semi-rtl .semi-avatar-group .semi-avatar-medium,.semi-rtl .semi-avatar-group .semi-avatar-small,.semi-portal-rtl .semi-avatar-group .semi-avatar-medium,.semi-portal-rtl .semi-avatar-group .semi-avatar-small{margin-left:auto;margin-right:-12px}.semi-rtl .semi-avatar-group .semi-avatar-extra-small,.semi-portal-rtl .semi-avatar-group .semi-avatar-extra-small{margin-left:auto;margin-right:-10px}.semi-rtl .semi-avatar-group .semi-avatar-extra-extra-small,.semi-portal-rtl .semi-avatar-group .semi-avatar-extra-extra-small{margin-left:auto;margin-right:-4px}.semi-tag{box-sizing:border-box;border-radius:var(--semi-border-radius-small);background-color:transparent;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;vertical-align:bottom;display:flex;justify-content:center;align-items:center;display:inline-flex}.semi-tag-default,.semi-tag-small{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:20px;padding:2px 8px}.semi-tag-default:focus-visible,.semi-tag-small:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-tag-square{border-radius:var(--semi-border-radius-small)}.semi-tag-circle{border-radius:var(--semi-border-radius-full)}.semi-tag-large{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;padding:4px 8px;height:24px}.semi-tag-large:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-tag-invisible{display:none}.semi-tag-prefix-icon{display:flex;padding-right:4px}.semi-tag-suffix-icon{display:flex;padding-left:4px}.semi-tag-content{flex:1}.semi-tag-content-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.semi-tag-content-center{display:flex;justify-content:center;align-items:center;height:100%;min-width:0}.semi-tag-close{display:flex;justify-content:center;align-items:center;color:var(--semi-color-text-2);padding-left:4px;cursor:pointer}.semi-tag-close:hover{color:var(--semi-color-text-1)}.semi-tag-close:active{color:var(--semi-color-text-0)}.semi-tag-closable{padding:4px 4px 4px 8px}.semi-tag-avatar-square .semi-avatar,.semi-tag-avatar-circle .semi-avatar{margin-right:4px}.semi-tag-avatar-square{padding:0 4px 0 0}.semi-tag-avatar-square .semi-avatar>img{background-color:var(--semi-color-default)}.semi-tag-avatar-circle{padding:2px 4px 2px 2px}.semi-tag-avatar-square.semi-tag-default .semi-avatar,.semi-tag-avatar-square.semi-tag-small .semi-avatar{width:20px;height:20px}.semi-tag-avatar-square.semi-tag-large .semi-avatar{width:24px;height:24px}.semi-tag-avatar-circle.semi-tag-small,.semi-tag-avatar-circle.semi-tag-default{border-radius:11px}.semi-tag-avatar-circle.semi-tag-small .semi-avatar,.semi-tag-avatar-circle.semi-tag-default .semi-avatar{width:16px;height:16px}.semi-tag-avatar-circle.semi-tag-large{border-radius:13px}.semi-tag-avatar-circle.semi-tag-large .semi-avatar{width:20px;height:20px}.semi-tag-colorful{font-weight:600}.semi-tag-colorful.semi-tag-solid{background:var(--semi-color-ai-purple);color:var(--semi-color-white)}.semi-tag-colorful.semi-tag-solid.semi-tag-gradient{background:var(--semi-color-ai-general)}.semi-tag-colorful.semi-tag-light{background:rgba(var(--semi-ai-purple-0),1);color:var(--semi-color-ai-purple)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient{background:var(--semi-ai-general-0)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(1){stop-color:rgba(var(--semi-ai-general-5-0),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(2){stop-color:rgba(var(--semi-ai-general-5-1),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(3){stop-color:rgba(var(--semi-ai-general-5-2),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(4){stop-color:rgba(var(--semi-ai-general-5-3),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-content{background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:transparent}.semi-tag-colorful.semi-tag-ghost{background:var(--semi-color-white);color:var(--semi-color-ai-purple);border-color:var(--semi-color-ai-general)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient{border:none}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(1){stop-color:rgba(var(--semi-ai-general-5-0),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(2){stop-color:rgba(var(--semi-ai-general-5-1),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(3){stop-color:rgba(var(--semi-ai-general-5-2),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(4){stop-color:rgba(var(--semi-ai-general-5-3),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient.semi-tag-circle:before{border-radius:var(--semi-border-radius-full)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--semi-border-radius-small);padding:1px;background:var(--semi-color-ai-general);-webkit-mask:linear-gradient(var(--semi-color-white) 0 0) content-box,linear-gradient(var(--semi-color-white) 0 0);mask:linear-gradient(var(--semi-color-white) 0 0) content-box,linear-gradient(var(--semi-color-white) 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-content{background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:transparent}.semi-tag-group{display:block;height:auto}.semi-tag-group .semi-tag{margin-bottom:0;margin-right:8px}.semi-tag-group-max.semi-tag-group-small{height:22px}.semi-tag-group-max.semi-tag-group-large{height:26px}.semi-tag-rest-group-popover .semi-tag{margin-right:8px;margin-bottom:0}.semi-tag-rest-group-popover .semi-tag:last-of-type{margin-right:0}.semi-tag-amber-ghost{background-color:transparent;border:1px solid rgba(var(--semi-amber-4),1);color:rgba(var(--semi-amber-5),1)}.semi-tag-amber-solid{background-color:rgba(var(--semi-amber-5),1);color:rgba(var(--semi-white),1)}.semi-tag-amber-light{background-color:rgba(var(--semi-amber-5),.15);color:rgba(var(--semi-amber-8),1)}.semi-tag-blue-ghost{background-color:transparent;border:1px solid rgba(var(--semi-blue-4),1);color:rgba(var(--semi-blue-5),1)}.semi-tag-blue-solid{background-color:rgba(var(--semi-blue-5),1);color:rgba(var(--semi-white),1)}.semi-tag-blue-light{background-color:rgba(var(--semi-blue-5),.15);color:rgba(var(--semi-blue-8),1)}.semi-tag-cyan-ghost{background-color:transparent;border:1px solid rgba(var(--semi-cyan-4),1);color:rgba(var(--semi-cyan-5),1)}.semi-tag-cyan-solid{background-color:rgba(var(--semi-cyan-5),1);color:rgba(var(--semi-white),1)}.semi-tag-cyan-light{background-color:rgba(var(--semi-cyan-5),.15);color:rgba(var(--semi-cyan-8),1)}.semi-tag-green-ghost{background-color:transparent;border:1px solid rgba(var(--semi-green-4),1);color:rgba(var(--semi-green-5),1)}.semi-tag-green-solid{background-color:rgba(var(--semi-green-5),1);color:rgba(var(--semi-white),1)}.semi-tag-green-light{background-color:rgba(var(--semi-green-5),.15);color:rgba(var(--semi-green-8),1)}.semi-tag-grey-ghost{background-color:transparent;border:1px solid rgba(var(--semi-grey-4),1);color:rgba(var(--semi-grey-5),1)}.semi-tag-grey-solid{background-color:rgba(var(--semi-grey-5),1);color:rgba(var(--semi-white),1)}.semi-tag-grey-light{background-color:rgba(var(--semi-grey-5),.15);color:rgba(var(--semi-grey-8),1)}.semi-tag-indigo-ghost{background-color:transparent;border:1px solid rgba(var(--semi-indigo-4),1);color:rgba(var(--semi-indigo-5),1)}.semi-tag-indigo-solid{background-color:rgba(var(--semi-indigo-5),1);color:rgba(var(--semi-white),1)}.semi-tag-indigo-light{background-color:rgba(var(--semi-indigo-5),.15);color:rgba(var(--semi-indigo-8),1)}.semi-tag-light-blue-ghost{background-color:transparent;border:1px solid rgba(var(--semi-light-blue-4),1);color:rgba(var(--semi-light-blue-5),1)}.semi-tag-light-blue-solid{background-color:rgba(var(--semi-light-blue-5),1);color:rgba(var(--semi-white),1)}.semi-tag-light-blue-light{background-color:rgba(var(--semi-light-blue-5),.15);color:rgba(var(--semi-light-blue-8),1)}.semi-tag-light-green-ghost{background-color:transparent;border:1px solid rgba(var(--semi-light-green-4),1);color:rgba(var(--semi-light-green-5),1)}.semi-tag-light-green-solid{background-color:rgba(var(--semi-light-green-5),1);color:rgba(var(--semi-white),1)}.semi-tag-light-green-light{background-color:rgba(var(--semi-light-green-5),.15);color:rgba(var(--semi-light-green-8),1)}.semi-tag-lime-ghost{background-color:transparent;border:1px solid rgba(var(--semi-lime-4),1);color:rgba(var(--semi-lime-5),1)}.semi-tag-lime-solid{background-color:rgba(var(--semi-lime-5),1);color:rgba(var(--semi-white),1)}.semi-tag-lime-light{background-color:rgba(var(--semi-lime-5),.15);color:rgba(var(--semi-lime-8),1)}.semi-tag-orange-ghost{background-color:transparent;border:1px solid rgba(var(--semi-orange-4),1);color:rgba(var(--semi-orange-5),1)}.semi-tag-orange-solid{background-color:rgba(var(--semi-orange-5),1);color:rgba(var(--semi-white),1)}.semi-tag-orange-light{background-color:rgba(var(--semi-orange-5),.15);color:rgba(var(--semi-orange-8),1)}.semi-tag-pink-ghost{background-color:transparent;border:1px solid rgba(var(--semi-pink-4),1);color:rgba(var(--semi-pink-5),1)}.semi-tag-pink-solid{background-color:rgba(var(--semi-pink-5),1);color:rgba(var(--semi-white),1)}.semi-tag-pink-light{background-color:rgba(var(--semi-pink-5),.15);color:rgba(var(--semi-pink-8),1)}.semi-tag-purple-ghost{background-color:transparent;border:1px solid rgba(var(--semi-purple-4),1);color:rgba(var(--semi-purple-5),1)}.semi-tag-purple-solid{background-color:rgba(var(--semi-purple-5),1);color:rgba(var(--semi-white),1)}.semi-tag-purple-light{background-color:rgba(var(--semi-purple-5),.15);color:rgba(var(--semi-purple-8),1)}.semi-tag-red-ghost{background-color:transparent;border:1px solid rgba(var(--semi-red-4),1);color:rgba(var(--semi-red-5),1)}.semi-tag-red-solid{background-color:rgba(var(--semi-red-5),1);color:rgba(var(--semi-white),1)}.semi-tag-red-light{background-color:rgba(var(--semi-red-5),.15);color:rgba(var(--semi-red-8),1)}.semi-tag-teal-ghost{background-color:transparent;border:1px solid rgba(var(--semi-teal-4),1);color:rgba(var(--semi-teal-5),1)}.semi-tag-teal-solid{background-color:rgba(var(--semi-teal-5),1);color:rgba(var(--semi-white),1)}.semi-tag-teal-light{background-color:rgba(var(--semi-teal-5),.15);color:rgba(var(--semi-teal-8),1)}.semi-tag-violet-ghost{background-color:transparent;border:1px solid rgba(var(--semi-violet-4),1);color:rgba(var(--semi-violet-5),1)}.semi-tag-violet-solid{background-color:rgba(var(--semi-violet-5),1);color:rgba(var(--semi-white),1)}.semi-tag-violet-light{background-color:rgba(var(--semi-violet-5),.15);color:rgba(var(--semi-violet-8),1)}.semi-tag-yellow-ghost{background-color:transparent;border:1px solid rgba(var(--semi-yellow-4),1);color:rgba(var(--semi-yellow-5),1)}.semi-tag-yellow-solid{background-color:rgba(var(--semi-yellow-5),1);color:rgba(var(--semi-white),1)}.semi-tag-yellow-light{background-color:rgba(var(--semi-yellow-5),.15);color:rgba(var(--semi-yellow-8),1)}.semi-tag-white-ghost,.semi-tag-white-solid,.semi-tag-white-light{background-color:var(--semi-color-bg-4);border:1px solid rgba(var(--semi-grey-2),.7);color:var(--semi-color-text-0)}.semi-tag-white-ghost .semi-tag-close,.semi-tag-white-light .semi-tag-close,.semi-tag-white-solid .semi-tag-close{color:var(--semi-color-text-2)}.semi-tag-avatar-square,.semi-tag-avatar-circle{background-color:var(--semi-color-bg-4);border:1px solid var(--semi-color-border);color:var(--semi-color-text-0)}.semi-tag-split{display:inline-flex;align-items:center}.semi-tag-split .semi-tag{border-radius:0;margin-right:1px}.semi-tag-split .semi-tag-first{border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-tag-split .semi-tag-last{border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small);margin-right:unset}.semi-tag-split .semi-tag-circle.semi-tag-first{border-top-left-radius:var(--semi-border-radius-full);border-bottom-left-radius:var(--semi-border-radius-full)}.semi-tag-split .semi-tag-circle.semi-tag-last{border-top-right-radius:var(--semi-border-radius-full);border-bottom-right-radius:var(--semi-border-radius-full)}.semi-rtl .semi-tag,.semi-portal-rtl .semi-tag{direction:rtl}.semi-rtl .semi-tag-close,.semi-portal-rtl .semi-tag-close{padding-left:auto;padding-right:4px}.semi-rtl .semi-tag-closable,.semi-portal-rtl .semi-tag-closable{padding:4px 8px 4px 4px}.semi-rtl .semi-tag-avatar-square .semi-avatar,.semi-rtl .semi-tag-avatar-circle .semi-avatar,.semi-portal-rtl .semi-tag-avatar-square .semi-avatar,.semi-portal-rtl .semi-tag-avatar-circle .semi-avatar{margin-right:auto;margin-left:4px}.semi-rtl .semi-tag-avatar-square,.semi-portal-rtl .semi-tag-avatar-square{padding-right:auto;padding-left:4px}.semi-rtl .semi-tag-avatar-circle,.semi-portal-rtl .semi-tag-avatar-circle{padding:2px 2px 2px 4px}.semi-rtl .semi-tag-group,.semi-portal-rtl .semi-tag-group{direction:rtl}.semi-rtl .semi-tag-group .semi-tag,.semi-portal-rtl .semi-tag-group .semi-tag{margin-right:auto;margin-left:8px}.semi-rtl .semi-tag-rest-group-popover,.semi-portal-rtl .semi-tag-rest-group-popover{direction:rtl}.semi-rtl .semi-tag-rest-group-popover .semi-tag,.semi-portal-rtl .semi-tag-rest-group-popover .semi-tag{margin-right:0;margin-left:8px}.semi-rtl .semi-tag-rest-group-popover .semi-tag:last-of-type,.semi-portal-rtl .semi-tag-rest-group-popover .semi-tag:last-of-type{margin-right:auto;margin-left:0}.semi-empty{display:flex}.semi-empty-image{display:flex;justify-content:center;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.semi-empty-vertical{align-items:center;flex-direction:column}.semi-empty-vertical .semi-empty-content{margin-top:24px}.semi-empty-vertical .semi-empty-title,.semi-empty-vertical .semi-empty-description{text-align:center}.semi-empty-horizontal .semi-empty-content{margin-left:32px}.semi-empty-title.semi-typography{display:block;font-weight:600}.semi-empty-title+.semi-empty-description{margin-top:16px}.semi-empty-description{color:var(--semi-color-text-1)}.semi-empty-footer{margin-top:24px}.semi-rtl .semi-empty,.semi-portal-rtl .semi-empty{direction:rtl}.semi-rtl .semi-empty-horizontal .semi-empty-content,.semi-portal-rtl .semi-empty-horizontal .semi-empty-content{margin-left:auto;margin-right:32px}.semi-modal{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;margin:80px auto;color:var(--semi-color-text-0)}.semi-modal-mask{position:fixed;top:0;right:0;left:0;bottom:0;background-color:var(--semi-color-overlay-bg);-webkit-backdrop-filter:none;backdrop-filter:none;height:100%;z-index:1000}.semi-modal-mask-hidden{display:none}.semi-modal-icon-wrapper{display:inline-flex;margin-right:12px;width:24px}.semi-modal-wrap{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;z-index:1000;-webkit-overflow-scrolling:touch;outline:0}.semi-modal-wrap-center{display:flex;align-items:flex-start}.semi-modal-title{display:inline-flex;align-items:flex-start;justify-content:flex-start;width:100%;margin:0}.semi-modal-content{position:relative;display:flex;height:max-content;width:100%;box-sizing:border-box;flex-direction:column;background-color:var(--semi-color-bg-2);-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-large);padding:0 24px;background-clip:padding-box;overflow:hidden;box-shadow:var(--semi-shadow-elevated)}.semi-modal-footerfill{display:flex}.semi-modal-content-height-set{height:100%}.semi-modal-content-fullScreen{border-radius:0;border:none;height:100%;top:0}.semi-modal-header{display:flex;align-items:flex-start;margin:24px 0;padding:0;font-size:14px;font-weight:600;background-color:transparent;color:var(--semi-color-text-0);border-bottom:0 solid transparent}.semi-modal-body-wrapper{display:flex;align-items:flex-start;margin:24px 0}.semi-modal-body{flex:1 1 auto;margin:0;padding:0}.semi-modal-withIcon{margin-left:36px}.semi-modal-footer{margin:24px 0;padding:0;text-align:right;border-radius:0 0 5px 5px;border-top:0 solid transparent;background-color:transparent}.semi-modal-footer .semi-button{margin-left:12px;margin-right:0}.semi-modal-confirm .semi-modal-header{margin-bottom:8px}.semi-modal-confirm-icon-wrapper{display:inline-flex;margin-right:12px;width:24px}.semi-modal-confirm-icon{display:inline-flex;color:var(--semi-color-primary)}.semi-modal-info-icon{color:var(--semi-color-info)}.semi-modal-success-icon{color:var(--semi-color-success)}.semi-modal-error-icon{color:var(--semi-color-danger)}.semi-modal-warning-icon{color:var(--semi-color-warning)}.semi-modal-small{width:448px}.semi-modal-medium{width:684px}.semi-modal-large{width:920px}.semi-modal-full-width{width:calc(100vw - 64px)}.semi-modal-centered{margin:auto}.semi-modal-popup .semi-modal-mask,.semi-modal-popup .semi-modal-wrap{position:absolute;overflow:hidden}.semi-modal-fixed .semi-modal-mask,.semi-modal-fixed .semi-modal-wrap{position:fixed;overflow:hidden}.semi-modal-displayNone{display:none}.semi-modal-content-animate-show{animation:.12s semi-modal-content-keyframe-show cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}.semi-modal-content-animate-hide{animation:.12s semi-modal-content-keyframe-hide cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}.semi-modal-mask-animate-show{animation:90ms semi-modal-mask-keyframe-show cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}.semi-modal-mask-animate-hide{animation:90ms semi-modal-mask-keyframe-hide cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}@keyframes semi-modal-content-keyframe-show{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes semi-modal-content-keyframe-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.7)}}@keyframes semi-modal-mask-keyframe-show{0%{opacity:0}to{opacity:1}}@keyframes semi-modal-mask-keyframe-hide{0%{opacity:1}to{opacity:0}}.semi-modal-rtl{direction:rtl}.semi-modal-rtl .semi-modal-icon-wrapper,.semi-modal-confirm-rtl .semi-modal-icon-wrapper{margin-right:0;margin-left:12px}.semi-modal-rtl .semi-modal-withIcon,.semi-modal-confirm-rtl .semi-modal-withIcon{margin-left:0;margin-right:36px}.semi-modal-rtl .semi-modal-footer,.semi-modal-confirm-rtl .semi-modal-footer{text-align:left}.semi-modal-rtl .semi-modal-footer .semi-button,.semi-modal-confirm-rtl .semi-modal-footer .semi-button{margin-left:0;margin-right:12px}.semi-modal-confirm-rtl{direction:rtl}.semi-modal-confirm .semi-modal-confirm-rtl .semi-button{margin-left:0;margin-right:12px}.semi-dropdown{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-dropdown-wrapper{overflow-y:auto;box-shadow:var(--semi-shadow-elevated);position:relative;z-index:1050;border-radius:var(--semi-border-radius-medium);background:var(--semi-color-bg-3);-webkit-backdrop-filter:none;backdrop-filter:none;opacity:0}.semi-dropdown-wrapper-show{opacity:1}.semi-dropdown-trigger{display:inline-block}.semi-dropdown-menu{list-style:none;padding:4px 0;margin:0}.semi-dropdown-title{color:var(--semi-color-text-2);padding:8px 16px 4px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:default}.semi-dropdown-title-withTick{padding-left:31px}.semi-dropdown-item{padding:8px 16px;color:var(--semi-color-text-0);max-width:280px;display:flex;align-items:center;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms;border-radius:0}.semi-dropdown-item-hover{background-color:var(--semi-color-fill-0)}.semi-dropdown-item:not(.semi-dropdown-item-active):hover{background-color:var(--semi-color-fill-0);cursor:pointer}.semi-dropdown-item:not(.semi-dropdown-item-active):active{background-color:var(--semi-color-fill-1)}.semi-dropdown-item:focus-visible{background-color:var(--semi-color-fill-0);outline:0}.semi-dropdown-item-icon{display:inline-flex;align-items:center;margin-right:8px}.semi-dropdown-item-danger{color:var(--semi-color-danger)}.semi-dropdown-item-secondary{color:var(--semi-color-secondary)}.semi-dropdown-item-warning{color:var(--semi-color-warning)}.semi-dropdown-item-tertiary{color:var(--semi-color-tertiary)}.semi-dropdown-item-primary{color:var(--semi-color-primary)}.semi-dropdown-item-withTick{padding-left:12px}.semi-dropdown-item>.semi-icon{flex-shrink:0;margin-right:9px;font-size:12px}.semi-dropdown-item-active{font-weight:600}.semi-dropdown-item.semi-dropdown-item-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-dropdown-item.semi-dropdown-item-disabled:hover,.semi-dropdown-item.semi-dropdown-item-disabled:active{cursor:not-allowed;background-color:transparent}.semi-dropdown-divider{display:block;height:1px;width:100%;min-width:100%;clear:both;background:var(--semi-color-border);margin:4px 0}.semi-rtl .semi-dropdown-wrapper,.semi-portal-rtl .semi-dropdown-wrapper{direction:rtl}.semi-rtl .semi-dropdown-title-withTick,.semi-portal-rtl .semi-dropdown-title-withTick{padding-left:0;padding-right:31px}.semi-rtl .semi-dropdown-item-withTick,.semi-portal-rtl .semi-dropdown-item-withTick{padding-left:auto;padding-right:12px}.semi-rtl .semi-dropdown-item>.semi-icon,.semi-portal-rtl .semi-dropdown-item>.semi-icon{margin-right:0;margin-left:9px}.semi-input-number{display:inline-flex;align-items:center;box-sizing:border-box;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-input-number-suffix-btns{display:inline-flex;flex-direction:column;margin-left:4px;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-small);background-color:var(--semi-color-bg-2);box-sizing:border-box}.semi-input-number-suffix-btns>.semi-input-number-button{height:50%;width:14px;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:0;color:var(--semi-color-text-2)}.semi-input-number-suffix-btns>.semi-input-number-button-up:not(.semi-input-number-button-up-not-allowed):hover,.semi-input-number-suffix-btns>.semi-input-number-button-down:not(.semi-input-number-button-down-not-allowed):hover{cursor:pointer;background-color:var(--semi-color-fill-0)}.semi-input-number-suffix-btns>.semi-input-number-button-up:not(.semi-input-number-button-up-not-allowed):active,.semi-input-number-suffix-btns>.semi-input-number-button-down:not(.semi-input-number-button-down-not-allowed):active{cursor:pointer;background-color:var(--semi-color-fill-1)}.semi-input-number-suffix-btns>.semi-input-number-button-up.semi-input-number-button-up-disabled,.semi-input-number-suffix-btns>.semi-input-number-button-down.semi-input-number-button-down-disabled{background-color:var(--semi-color-disabled-fill);color:var(--semi-color-disabled-text)}.semi-input-number-suffix-btns>.semi-input-number-button-up.semi-input-number-button-up-not-allowed,.semi-input-number-suffix-btns>.semi-input-number-button-down.semi-input-number-button-down-not-allowed{cursor:not-allowed}.semi-input-number-suffix-btns-inner-hover{border-color:var(--semi-color-fill-2)}.semi-input-number-suffix-btns-inner{margin-left:8px;border-radius:var(--semi-border-radius-small);overflow:hidden}.semi-input-number .semi-input-clearbtn+.semi-input-suffix{margin-left:-4px}.semi-input-number .semi-input-clearbtn+.semi-input-suffix .semi-input-number-suffix-btns-inner{margin-left:0}.semi-input-number-size-default .semi-input-number-suffix-btns{height:32px}.semi-input-number-size-default .semi-input-number-suffix-btns-inner{height:30px}.semi-input-number-size-large .semi-input-number-suffix-btns{height:40px}.semi-input-number-size-large .semi-input-number-suffix-btns-inner{height:38px}.semi-input-number-size-small .semi-input-number-suffix-btns{height:24px}.semi-input-number-size-small .semi-input-number-suffix-btns-inner{height:22px}.semi-input-number:not(:focus-within):not(:hover) .semi-input-borderless+.semi-input-number-suffix-btns{opacity:0}.semi-rtl .semi-input-number,.semi-portal-rtl .semi-input-number{direction:rtl}.semi-rtl .semi-input-number-suffix-btns,.semi-portal-rtl .semi-input-number-suffix-btns{margin-left:auto;margin-right:4px}.semi-rtl .semi-input-number-suffix-btns-inner,.semi-portal-rtl .semi-input-number-suffix-btns-inner{margin-left:auto;margin-right:8px}.semi-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix,.semi-portal-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix{margin-left:auto;margin-right:-4px}.semi-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix .semi-input-number-suffix-btns-inner,.semi-portal-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix .semi-input-number-suffix-btns-inner{margin-left:auto;margin-right:0}.semi-radio{box-sizing:border-box;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;display:inline-flex;column-gap:8px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);min-height:20px;min-width:16px;cursor:pointer;vertical-align:bottom;text-align:left}.semi-radio.semi-radio-vertical{display:block}.semi-radio input[type=checkbox],.semi-radio input[type=radio]{position:absolute;left:0;top:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.semi-radio:hover .semi-radio-inner-display{background:var(--semi-color-fill-0);border:solid 1px var(--semi-color-focus-border)}.semi-radio:hover.semi-radio-cardRadioGroup .semi-radio-inner-display{background:var(--semi-color-white)}.semi-radio:hover .semi-radio-inner-checked .semi-radio-inner-display{background:var(--semi-color-primary-hover);border-color:var(--semi-color-primary-hover)}.semi-radio:active.semi-radio-cardRadioGroup .semi-radio-inner-display{background:var(--semi-color-white)}.semi-radio:active .semi-radio-inner-checked .semi-radio-inner-display{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active)}.semi-radio-buttonRadioComponent{padding:4px;background:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small)}.semi-radio-buttonRadioGroup{position:relative;padding:4px;border-radius:var(--semi-border-radius-small);line-height:16px}.semi-radio-buttonRadioGroup:not(:last-child){padding-right:0}.semi-radio-buttonRadioGroup-small{padding:2px 4px;line-height:16px}.semi-radio-buttonRadioGroup-large{padding:4px;line-height:20px}.semi-radio-cardRadioGroup{flex-wrap:nowrap;border-radius:var(--semi-border-radius-small);padding:12px 16px;background:transparent;border:1px solid transparent;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-radio-cardRadioGroup .semi-radio-inner{flex-shrink:0}.semi-radio-cardRadioGroup .semi-radio-inner-display{background:var(--semi-color-white)}.semi-radio-cardRadioGroup .semi-radio-addon{font-weight:600;font-size:14px;line-height:20px;color:var(--semi-color-text-0)}.semi-radio-cardRadioGroup .semi-radio-extra{font-weight:400;font-size:14px;line-height:20px;color:var(--semi-color-text-2);padding-left:0}.semi-radio-cardRadioGroup:active{background:var(--semi-color-fill-1)}.semi-radio-cardRadioGroup_checked{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary)}.semi-radio-cardRadioGroup_checked:hover{border:1px solid var(--semi-color-primary-hover)}.semi-radio-cardRadioGroup_checked:hover .semi-radio-inner-checked .semi-radio-inner-display{border-color:var(--semi-color-primary-hover)}.semi-radio-cardRadioGroup_checked:active{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary-active)}.semi-radio-cardRadioGroup_checked:active .semi-radio-inner-checked .semi-radio-inner-display{border-color:var(--semi-color-primary-active)}.semi-radio-cardRadioGroup_checked:active .semi-radio-inner-checked:hover .semi-radio-inner-display{background:var(--semi-color-primary-active)}.semi-radio-cardRadioGroup_hover{background:var(--semi-color-fill-0)}.semi-radio-cardRadioGroup_disabled:active{background:transparent}.semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary-disabled)}.semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup .semi-radio-inner-checked .semi-radio-inner-display,.semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup:hover .semi-radio-inner-checked .semi-radio-inner-display{border-color:var(--semi-color-primary-disabled)}.semi-radio.semi-radio-disabled:hover .semi-radio-inner-display,.semi-radio.semi-radio-disabled:active .semi-radio-inner-display{background:var(--semi-color-disabled-fill);border:solid 1px var(--semi-color-border)}.semi-radio.semi-radio-disabled:hover .semi-radio-inner-checked .semi-radio-inner-display,.semi-radio.semi-radio-disabled:active .semi-radio-inner-checked .semi-radio-inner-display{color:rgba(var(--semi-white),1);background:var(--semi-color-primary-disabled);border-color:var(--semi-color-primary-disabled)}.semi-radio-inner{display:inline-flex;margin-top:2px;position:relative;width:16px;height:16px;vertical-align:sub;-webkit-user-select:none;user-select:none}.semi-radio-inner-display{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:16px;height:16px;border:solid 1px var(--semi-color-text-3);border-radius:16px;background:transparent;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-radio-inner-display .semi-icon{width:100%;height:100%;font-size:14px}.semi-radio-content{display:flex;flex-direction:column;row-gap:4px}.semi-radio:hover .semi-radio-inner-display{background:var(--semi-color-fill-0)}.semi-radio:active .semi-radio-inner-display{background:var(--semi-color-fill-1)}.semi-radio-addon{-webkit-user-select:none;user-select:none;color:var(--semi-color-text-0);display:inline-flex;align-items:center}.semi-radio-addon-buttonRadio{text-align:center;border-radius:var(--semi-border-radius-small);font-weight:600;color:var(--semi-color-text-1);font-size:12px;padding:4px 16px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-radio-addon-buttonRadio-hover{font-weight:600;background:var(--semi-color-fill-1)}.semi-radio-addon-buttonRadio-checked{font-weight:600;background:var(--semi-color-bg-3);color:var(--semi-color-primary)}.semi-radio-addon-buttonRadio-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-radio-addon-buttonRadio-small{font-size:12px;padding:2px 16px}.semi-radio-addon-buttonRadio-large{font-size:14px;padding:6px 24px}.semi-radio .semi-radio-inner-checked:hover .semi-radio-inner-display{background:var(--semi-color-primary-hover)}.semi-radio .semi-radio-inner-checked:active .semi-radio-inner-display{background:var(--semi-color-primary-active)}.semi-radio .semi-radio-inner-checked .semi-radio-inner-display{border:solid 1px var(--semi-color-primary);background:var(--semi-color-primary);color:rgba(var(--semi-white),1);border-radius:16px}.semi-radio .semi-radio-inner-checked>.semi-radio-addon{color:var(--semi-color-text-0)}.semi-radio .semi-radio-inner-buttonRadio,.semi-radio .semi-radio-inner-pureCardRadio{position:absolute;top:0;left:0;width:100%;height:100%;margin-top:0;z-index:-1;opacity:0}.semi-radio-disabled,.semi-radio-disabled:hover,.semi-radio-disabled .semi-radio-inner{cursor:not-allowed}.semi-radio-disabled .semi-radio-inner-display{opacity:.75;background:var(--semi-color-disabled-fill);border-color:var(--semi-color-border)}.semi-radio-disabled .semi-radio-inner-display:hover{background:transparent}.semi-radio-disabled .semi-radio-inner-checked .semi-radio-inner-display,.semi-radio-disabled .semi-radio-inner-checked .semi-radio-inner-display:hover{color:rgba(var(--semi-white),1);background:var(--semi-color-primary-disabled);border-color:var(--semi-color-primary-disabled)}.semi-radio-disabled .semi-radio-addon,.semi-radio-disabled .semi-radio-extra{color:var(--semi-color-disabled-text)}.semi-radio-extra{color:var(--semi-color-text-2);box-sizing:border-box}.semi-radio-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-radio-focus-border{border:solid 1px var(--semi-color-focus-border)}.semi-radioGroup{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-radioGroup-vertical{display:flex;flex-direction:column;row-gap:12px}.semi-radioGroup-vertical-default .semi-radio,.semi-radioGroup-vertical-card .semi-radio{display:flex}.semi-radioGroup-horizontal{display:inline-flex;flex-wrap:wrap;vertical-align:bottom;gap:16px}.semi-radioGroup-buttonRadio{display:inline-block;background:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small);vertical-align:middle}.semi-rtl .semi-radio,.semi-portal-rtl .semi-radio{direction:rtl}.semi-rtl .semi-radio input[type=checkbox],.semi-rtl .semi-radio input[type=radio],.semi-portal-rtl .semi-radio input[type=checkbox],.semi-portal-rtl .semi-radio input[type=radio]{left:auto;right:0}.semi-rtl .semi-radio-buttonRadioGroup:not(:last-child),.semi-portal-rtl .semi-radio-buttonRadioGroup:not(:last-child){padding-left:0}.semi-rtl .semi-radioGroup,.semi-portal-rtl .semi-radioGroup{direction:rtl}.semi-toast{pointer-events:none}.semi-toast-wrapper{position:fixed;height:0;top:0;width:100%;display:flex;justify-content:center;z-index:1010}.semi-toast-wrapper .semi-toast-innerWrapper{width:fit-content;height:fit-content;text-align:center}.semi-toast-wrapper .semi-toast-innerWrapper-hover .semi-toast-zero-height-wrapper{perspective:unset;perspective-origin:center center}.semi-toast-zero-height-wrapper{transition:all .3s cubic-bezier(.22,.57,.02,1.2);perspective-origin:center 280px;perspective:280px;height:0;overflow:visible}.semi-toast-content{pointer-events:all;box-shadow:var(--semi-shadow-elevated);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--semi-color-bg-3);border-radius:var(--semi-border-radius-medium);padding:12px 8px;display:inline-flex;align-items:flex-start;justify-content:center;margin:12px;font-weight:600;color:var(--semi-color-text-0)}.semi-toast-content .semi-toast-close-button{margin-top:-2px;height:20px}.semi-toast-content .semi-toast-content-text{margin-left:12px;margin-right:12px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.semi-toast-light.semi-toast-warning .semi-toast-content{background-color:var(--semi-color-warning-light-default);border:1px solid var(--semi-color-warning)}.semi-toast-light.semi-toast-warning .semi-toast-icon-warning{color:var(--semi-color-warning)}.semi-toast-light.semi-toast-success .semi-toast-content{background-color:var(--semi-color-success-light-default);border:1px solid var(--semi-color-success)}.semi-toast-light.semi-toast-success .semi-toast-icon-success{color:var(--semi-color-success)}.semi-toast-light.semi-toast-info .semi-toast-content{background-color:var(--semi-color-info-light-default);border:1px solid var(--semi-color-info)}.semi-toast-light.semi-toast-info .semi-toast-icon-info{color:var(--semi-color-info)}.semi-toast-light.semi-toast-error .semi-toast-content{background-color:var(--semi-color-danger-light-default);border:1px solid var(--semi-color-danger)}.semi-toast-light.semi-toast-error .semi-toast-icon-error{color:var(--semi-color-danger)}.semi-toast .semi-toast-icon-warning{color:var(--semi-color-warning)}.semi-toast .semi-toast-icon-success{color:var(--semi-color-success)}.semi-toast .semi-toast-icon-info{color:var(--semi-color-info)}.semi-toast .semi-toast-icon-error{color:var(--semi-color-danger)}.semi-toast-animation-show{animation:.3s semi-toast-keyframe-toast-show cubic-bezier(.22,.57,.02,1.2) 0s;animation-fill-mode:forwards}.semi-toast-animation-hide{animation:.3s semi-toast-keyframe-toast-hide cubic-bezier(.22,.57,.02,1.2) 0s;animation-fill-mode:forwards}@keyframes semi-toast-keyframe-toast-show{0%{opacity:0;transform:translateY(-100%)}to{opacity:1}}@keyframes semi-toast-keyframe-toast-hide{0%{opacity:1}to{opacity:0;transform:translateY(-100%)}}.semi-toast-rtl{direction:rtl}.semi-toast-rtl .semi-toast-content .semi-toast-content-text{text-align:right;margin-left:12px;margin-right:12px}.semi-resizable-resizable{position:relative;box-sizing:border-box;flex-shrink:0}.semi-resizable-resizableHandler{position:absolute;-webkit-user-select:none;user-select:none;z-index:10}.semi-resizable-resizableHandler-top{width:100%;height:10px;left:0;cursor:row-resize;top:-5px}.semi-resizable-resizableHandler-right{width:10px;height:100%;top:0;cursor:col-resize;left:auto;right:-5px}.semi-resizable-resizableHandler-bottom{width:100%;height:10px;left:0;cursor:row-resize;top:auto;bottom:-5px}.semi-resizable-resizableHandler-left{width:10px;height:100%;top:0;cursor:col-resize;left:-5px}.semi-resizable-resizableHandler-topRight{width:20px;height:20px;position:absolute;right:-10px;top:-10px;cursor:ne-resize}.semi-resizable-resizableHandler-bottomRight{width:20px;height:20px;position:absolute;right:-10px;bottom:-10px;cursor:se-resize}.semi-resizable-resizableHandler-bottomLeft{width:20px;height:20px;position:absolute;left:-10px;bottom:-10px;cursor:sw-resize}.semi-resizable-resizableHandler-topLeft{width:20px;height:20px;position:absolute;left:-10px;top:-10px;cursor:nw-resize}.semi-resizable-group{display:flex;position:relative;box-sizing:border-box;height:100%;width:100%}.semi-resizable-item{position:relative;box-sizing:border-box;flex-shrink:0}.semi-resizable-handler{-webkit-user-select:none;user-select:none;z-index:10;display:flex;align-items:center;justify-content:center;background-color:var(--semi-color-fill-0);opacity:1}.semi-resizable-handler-vertical{width:100%;height:10px;flex-shrink:0;cursor:row-resize}.semi-resizable-handler-horizontal{height:100%;width:10px;flex-shrink:0;cursor:col-resize}.semi-resizable-background{height:100%;width:100%;top:0;right:0;bottom:0;left:0;z-index:20;opacity:0;position:fixed}.ga-log-tail{position:relative;height:100%;min-height:0}.ga-log-tail-copy{position:absolute;top:6px;right:8px;z-index:2;padding:2px 5px;border:none;border-radius:4px;background:var(--semi-color-fill-0, rgba(0, 0, 0, .04));color:var(--ui-text-tertiary);font-size:.75rem;cursor:pointer;opacity:.05;transition:opacity .15s}.ga-log-tail:hover .ga-log-tail-copy,.ga-log-tail-copy:focus-visible{opacity:1}.ga-log-tail-copy.copied{opacity:1;color:var(--ui-accent, #0053fd)}.ga-log-tail-scroll{height:100%;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-gutter:stable}.ga-log-tail-pre{margin:0;padding:8px 10px;font-family:var(--font-mono);font-size:.6875rem;line-height:1.5;white-space:pre-wrap;word-break:break-all;color:var(--semi-color-text-1);-webkit-user-select:text;user-select:text}.ga-log-tail-empty{margin:0;padding:8px 10px;font-family:var(--font-mono);font-size:.6875rem;line-height:1.5;color:var(--ui-text-quaternary)}.ga-log-separator{display:block;margin-top:4px;color:var(--ui-text-tertiary)}.ga-log-view{overflow:auto;border-radius:8px;border:1px solid var(--ui-stroke-tertiary, rgba(0, 0, 0, .06));padding:6px 10px;font-family:var(--font-mono);font-size:.6875rem;line-height:1.5;white-space:pre-wrap;word-break:break-all;color:var(--ui-text-tertiary);scrollbar-width:thin;-webkit-user-select:text;user-select:text}.ga-log-modal-body,.ga-log-modal-body .ga-log-tail-scroll{max-height:calc(85vh - 80px)}[data-slot=approval-card]{border:1px solid color-mix(in srgb,var(--semi-color-primary, #3370ff) 20%,transparent);border-radius:.5rem;padding:.625rem .75rem;background:var(--semi-color-bg-0, #fff)}[data-slot=approval-card][data-settled]{opacity:.6;pointer-events:none}[data-slot=approval-card][data-submitting]{pointer-events:none}[data-slot=approval-question]{font-size:var(--conversation-text-font-size, .875rem);line-height:1.5;color:var(--semi-color-text-0);white-space:pre-wrap;word-break:break-word;margin-bottom:.5rem}[data-slot=approval-options]{display:flex;flex-direction:column;gap:.25rem}[data-slot=approval-option-row]{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:.25rem;border:none;background:transparent;cursor:pointer;text-align:left;font-size:var(--conversation-text-font-size, .875rem);color:var(--semi-color-text-0);transition:background .12s ease-out;overflow-wrap:anywhere}[data-slot=approval-option-row]:hover,[data-slot=approval-option-row][data-selected]{background:var(--semi-color-fill-0)}[data-slot=approval-option-row]:disabled{cursor:default;opacity:.7}[data-slot=approval-badge]{display:inline-flex;align-items:center;justify-content:center;min-width:1.125rem;height:.75rem;padding:.125rem .25rem;font-size:.6875rem;font-family:inherit;font-weight:600;line-height:1;border-radius:.1875rem;border:1px solid var(--semi-color-border);background:var(--semi-color-bg-0, #fff);color:var(--semi-color-text-2);flex-shrink:0;transition:background .12s,border-color .12s,color .12s}[data-slot=approval-badge][data-active]{background:var(--semi-color-primary, #3370ff);border-color:var(--semi-color-primary, #3370ff);color:#fff}[data-slot=approval-other]{display:flex;align-items:flex-start;gap:.5rem;padding:.375rem .5rem;border-radius:.25rem}[data-slot=approval-other]>[data-slot=approval-badge]{margin-top:.25rem}[data-slot=approval-other-input]{flex:1;field-sizing:content;min-height:1.5em;max-height:10rem;padding:.25rem .375rem;font-size:var(--conversation-text-font-size, .875rem);font-family:inherit;line-height:1.5;color:var(--semi-color-text-0);background:var(--semi-color-fill-0);border:1px solid var(--semi-color-border);border-radius:.25rem;resize:none;overflow-y:auto;transition:border-color .12s}[data-slot=approval-other-input]:focus{outline:none;border-color:var(--semi-color-primary, #3370ff)}[data-slot=approval-other-input][data-fullwidth]{width:100%}[data-slot=approval-other-input]:disabled{opacity:.7;cursor:default}[data-slot=approval-actions]{display:flex;justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.5rem}[data-slot=approval-skip-btn]{padding:.25rem .625rem;font-size:.75rem;font-weight:500;color:var(--semi-color-text-2);background:transparent;border:none;border-radius:.25rem;cursor:pointer;transition:color .12s,background .12s}[data-slot=approval-skip-btn]:hover{color:var(--semi-color-text-0);background:var(--semi-color-fill-0)}[data-slot=approval-skip-btn]:disabled{cursor:default;opacity:.5}[data-slot=approval-confirm-btn]{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;font-size:.75rem;font-weight:500;color:#fff;background:var(--semi-color-primary, #3370ff);border:none;border-radius:.25rem;cursor:pointer;transition:opacity .12s,background .12s}[data-slot=approval-confirm-btn]:hover:not(:disabled){opacity:.85}[data-slot=approval-confirm-btn]:disabled{cursor:default;opacity:.45}[data-slot=approval-spinner]{display:inline-block;width:.75rem;height:.75rem;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:approval-spin .6s linear infinite}@keyframes approval-spin{to{transform:rotate(360deg)}}[data-slot=approval-settled]{margin-top:.25rem;font-size:var(--conversation-caption-font-size, .8125rem);color:var(--semi-color-text-2)}[data-slot=approval-settled] em{font-style:italic;color:var(--semi-color-text-3)}[data-slot=assistant-action-bar]{display:flex;align-items:center;justify-content:flex-end;min-height:1.5rem;gap:.25rem;padding-right:var(--message-text-indent);padding-left:var(--message-text-indent)}[data-slot=action-bar-btn]{display:grid;width:1.5rem;height:1.5rem;place-items:center;border:none;border-radius:.25rem;background:none;color:var(--semi-color-text-2);cursor:pointer;opacity:0;pointer-events:none;transition:color .1s,background .1s,opacity .12s ease-out}[data-slot=aui_assistant-message-root]:hover [data-slot=action-bar-btn],[data-slot=aui_assistant-message-root]:focus-within [data-slot=action-bar-btn]{opacity:1;pointer-events:auto}[data-slot=action-bar-btn]:hover{background:var(--semi-color-fill-1);color:var(--semi-color-text-0)}[data-slot=action-bar-duration]{font-size:.75rem;line-height:1;color:var(--semi-color-text-2);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}[data-slot=user-turn-rail]{position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:100;pointer-events:none}[data-slot=rail-hitarea]{position:relative;display:flex;align-items:center;justify-content:flex-end;padding:.5rem;pointer-events:auto}[data-slot=user-turn-rail][data-expanded] [data-slot=rail-hitarea]:before{content:"";position:absolute;top:0;bottom:0;right:0;left:-260px;pointer-events:auto}[data-slot=rail-marks]{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}[data-slot=user-turn-rail][data-expanded] [data-slot=rail-marks]{visibility:hidden}[data-slot=rail-mark]{width:2.5rem;height:.5rem;display:flex;align-items:center;justify-content:flex-end;border:none;padding:0;margin:0;background:transparent;cursor:pointer}[data-slot=rail-mark-line]{width:1rem;height:2px;border-radius:999px;background:var(--semi-color-fill-2);transition:background-color .12s ease}[data-slot=rail-mark][data-active] [data-slot=rail-mark-line]{background:var(--semi-color-text-0)}[data-slot=rail-panel]{position:absolute;right:calc(100% - .5rem);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:1px;max-width:240px;min-width:140px;padding:.25rem;border-radius:.5rem;background:var(--semi-color-bg-3, #2a2a2a);box-shadow:0 2px 12px #00000026;opacity:0;pointer-events:none;transition:opacity .12s ease}[data-slot=user-turn-rail][data-expanded] [data-slot=rail-panel]{opacity:1;pointer-events:auto}[data-slot=rail-panel-item]{display:block;width:100%;padding:.3rem .5rem;border:none;border-radius:.25rem;background:transparent;color:var(--semi-color-text-2);font-size:.75rem;line-height:1.4;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:background-color .1s ease}[data-slot=rail-panel-item]:hover,[data-slot=rail-panel-item][data-active]{background:var(--semi-color-fill-1);color:var(--semi-color-text-0)}[data-slot=rail-mark]:focus-visible [data-slot=rail-mark-line]{box-shadow:0 0 0 2px var(--semi-color-primary-light-default, rgba(0, 100, 250, .2))}[data-slot=rail-mark]:focus-visible{outline:none}@media(max-width:900px){[data-slot=user-turn-rail]{display:none}}:root{--conversation-text-font-size: .8125rem;--conversation-tool-font-size: .6875rem;--conversation-caption-font-size: .75rem;--conversation-line-height: 1.125rem;--conversation-caption-line-height: 1rem;--conversation-turn-gap: .375rem;--turn-block-gap: .75rem;--tool-row-gap: .375rem;--paragraph-gap: .7rem;--sticky-human-top: .23rem;--message-text-indent: .75rem;--dt-line-height: 1.5;--human-msg-line-height: 1.3;--composer-width: 780px;--thread-last-message-clearance: calc(var(--composer-measured-height, 62px) + 2rem)}[data-slot=thread-root]{position:relative;display:grid;grid-template-rows:minmax(0,1fr);height:100%;min-height:0;max-width:100%;overflow:clip;contain:layout style}[data-slot=aui_thread-viewport]{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;overflow-anchor:none}[data-slot=aui_thread-viewport][data-following=false]{overflow-anchor:auto}[data-slot=aui_thread-content]{max-width:var(--composer-width);width:100%;min-width:0;margin-inline:auto;padding-inline:1.5rem;padding-top:1.5rem;display:flex;flex-direction:column;gap:1.25rem}[data-slot=aui_composer-clearance]{height:var(--thread-last-message-clearance);flex-shrink:0}[data-slot=thread-empty]{display:flex;align-items:center;justify-content:center;min-height:40vh;color:var(--semi-color-text-2);font-size:var(--conversation-text-font-size)}[data-slot=aui_turn-pair]{position:relative;display:flex;flex-direction:column;gap:var(--conversation-turn-gap);min-width:0;padding-bottom:var(--conversation-turn-gap)}[data-slot=aui_user-message-root]{position:sticky;top:var(--sticky-human-top);z-index:40;display:flex;flex-direction:column;align-items:stretch;min-width:0;overflow:visible;padding-bottom:0;padding-top:0;background:transparent}[data-slot=user-bubble]{position:relative;display:flex;width:100%;min-width:0;max-width:100%;flex-direction:column;gap:.375rem;overflow:visible;border-radius:2px;border:1px solid var(--ui-stroke-tertiary);background:var(--ui-chat-bubble-background);padding:.5rem .75rem;font-size:var(--conversation-text-font-size);line-height:var(--human-msg-line-height);text-align:left}[data-slot=user-bubble]:hover{border-color:var(--ui-stroke-secondary)}[data-slot=user-bubble-text]{white-space:pre-wrap;word-break:break-word;max-height:calc(4 * var(--human-msg-line-height) * var(--conversation-text-font-size) + .15rem);overflow:hidden}[data-slot=user-bubble][data-clamped] [data-slot=user-bubble-text]{-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent);mask-image:linear-gradient(to bottom,#000 55%,transparent)}[data-slot=user-bubble][data-expanded] [data-slot=user-bubble-text]{max-height:40dvh;overflow-y:auto;-webkit-mask-image:none;mask-image:none}[data-slot=user-bubble-expand]{position:absolute;inset-inline:0;bottom:0;display:flex;height:1.75rem;cursor:pointer;align-items:flex-end;justify-content:center;padding-bottom:.25rem;border:none;background:linear-gradient(to top,var(--ui-chat-bubble-background),transparent);color:var(--ui-text-tertiary);transition:color .12s ease-out}[data-slot=user-bubble-expand]:hover{color:var(--foreground)}[data-slot=user-bubble-expand] svg{width:.875rem;height:.875rem;transition:transform .15s ease-out}[data-slot=user-bubble][data-expanded] [data-slot=user-bubble-expand]{background:none}[data-slot=user-bubble][data-expanded] [data-slot=user-bubble-expand] svg{transform:rotate(180deg)}[data-slot=user-bubble-copy]{position:absolute;top:.25rem;right:.25rem;display:grid;width:2rem;height:2rem;place-items:center;border:none;border-radius:.375rem;background:var(--ui-chat-bubble-background);color:var(--ui-text-tertiary);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s ease-out,color .1s,background .1s}[data-slot=user-bubble]:hover [data-slot=user-bubble-copy],[data-slot=user-bubble]:focus-within [data-slot=user-bubble-copy]{opacity:1;pointer-events:auto}[data-slot=user-bubble-copy]:hover{background:var(--ui-control-hover-background);color:var(--foreground)}[data-slot=user-images]{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 .75rem;margin-bottom:.375rem}[data-slot=user-image-thumb]{max-width:12rem;max-height:8rem;border-radius:.375rem;border:1px solid var(--ui-stroke-tertiary);object-fit:cover}[data-slot=user-files]{display:flex;flex-wrap:wrap;gap:.375rem;padding:0 .75rem;margin-bottom:.375rem}[data-slot=user-file-chip]{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .5rem;border-radius:.25rem;background:var(--ui-bg-secondary, hsl(0 0% 95%));border:1px solid var(--ui-stroke-tertiary, hsl(0 0% 88%));font-size:var(--conversation-caption-font-size);line-height:var(--conversation-caption-line-height);color:var(--ui-text-secondary, hsl(0 0% 40%));max-width:14rem}[data-slot=user-file-icon]{flex-shrink:0;font-size:.7rem;opacity:.7}[data-slot=user-file-name]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-slot=user-file-size]{flex-shrink:0;opacity:.6;font-size:.625rem}[data-slot=aui_assistant-message-root]{display:flex;flex-direction:column;gap:0;width:100%;min-width:0;max-width:100%;align-self:flex-start;overflow:hidden}[data-slot=aui_assistant-message-content]{padding-left:var(--message-text-indent);font-size:var(--conversation-text-font-size);line-height:var(--dt-line-height);color:var(--semi-color-text-0);display:flex;flex-direction:column;gap:var(--turn-block-gap);min-width:0;max-width:100%;overflow:hidden;overflow-wrap:anywhere}[data-slot=aui_thinking-disclosure]{border:1px solid var(--semi-color-border);border-radius:.375rem;opacity:.67;transition:opacity .12s ease-out}[data-slot=aui_thinking-disclosure]:hover,[data-slot=aui_thinking-disclosure]:focus-within{opacity:1}[data-slot=thinking-summary]{padding:.375rem .625rem;font-size:var(--conversation-tool-font-size);line-height:var(--conversation-line-height);color:var(--semi-color-text-2);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}[data-slot=thinking-body]{padding:0 .625rem .5rem;font-size:var(--conversation-tool-font-size);line-height:1.5;color:var(--semi-color-text-2);white-space:pre-wrap;word-break:break-word;max-height:10rem;overflow-y:auto}[data-slot=thinking-body][data-streaming]{mask-image:linear-gradient(to bottom,transparent 0%,black 28%,black 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 28%,black 100%)}.thinking-shimmer{animation:thinking-shimmer-anim 2s ease-in-out infinite}@keyframes thinking-shimmer-anim{0%,to{opacity:.55}50%{opacity:1}}[data-slot=tool-block]{display:grid;gap:var(--tool-row-gap);min-width:0;max-width:100%;overflow:hidden;opacity:.67;transition:opacity .12s ease-out}[data-slot=tool-block]:hover,[data-slot=tool-block]:focus-within{opacity:1}[data-slot=tool-header]{display:flex;align-items:center;gap:.375rem;cursor:pointer}[data-slot=tool-glyph]{display:grid;width:.875rem;height:.875rem;place-items:center;flex-shrink:0;align-self:center}[data-slot=tool-spinner]{width:.625rem;height:.625rem;border:1.5px solid var(--semi-color-border);border-top-color:var(--semi-color-primary);border-radius:50%;animation:thread-spin .7s linear infinite}@keyframes thread-spin{to{transform:rotate(360deg)}}[data-slot=tool-block][data-status=success] [data-slot=tool-glyph]{color:#16a34ad9}[data-slot=tool-title]{font-size:var(--conversation-tool-font-size);font-weight:500;line-height:var(--conversation-line-height);color:var(--semi-color-text-2);font-family:SF Mono,Cascadia Code,Fira Code,monospace}[data-slot=tool-duration]{flex-shrink:0;font-size:.625rem;font-variant-numeric:tabular-nums;color:var(--semi-color-text-3)}[data-slot=tool-dots]{animation:thread-pulse 1.2s ease-in-out infinite}@keyframes thread-pulse{0%,to{opacity:.4}50%{opacity:1}}[data-slot=tool-body]{margin:0;font-size:.7rem;line-height:1.5;font-family:SF Mono,Cascadia Code,Fira Code,monospace;background:var(--semi-color-fill-0);padding:.5rem .625rem;border-radius:.3125rem;border:1px solid var(--semi-color-border);overflow-x:auto;overscroll-behavior-x:contain;white-space:pre-wrap;word-break:break-all;max-height:7.5rem;overflow-y:auto;color:var(--semi-color-text-1)}[data-slot=summary-block]{font-size:var(--conversation-text-font-size);line-height:var(--dt-line-height);color:var(--semi-color-text-1, var(--ui-text-secondary));padding:.5rem .75rem;margin:.25rem 0;border-radius:4px;background:color-mix(in srgb,var(--theme-primary) 6%,transparent);width:fit-content}[data-slot=standalone-message]{padding:.5rem .75rem;font-size:var(--conversation-tool-font-size);line-height:1.25rem;color:var(--semi-color-text-2);background:var(--semi-color-fill-0);border-radius:.375rem}[data-slot=standalone-message][data-status=failed]{color:var(--semi-color-danger);background:var(--semi-color-danger-light-default)}[data-slot=scroll-to-bottom]{position:absolute;bottom:calc(var(--thread-last-message-clearance) + .625rem);left:50%;transform:translate(-50%);width:2rem;height:2rem;border-radius:50%;border:1px solid var(--semi-color-border);background:var(--semi-color-bg-0, #fff);box-shadow:0 2px 8px #0000000f;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--semi-color-text-0);z-index:50;transition:box-shadow .12s}[data-slot=scroll-to-bottom]:hover{box-shadow:0 4px 12px #0000001a}[data-slot=aui_markdown-part]{min-width:0;max-width:100%;overflow-wrap:anywhere}[data-slot=aui_markdown-part] p{margin:0}[data-slot=aui_markdown-part] p+p{margin-top:var(--paragraph-gap)}[data-slot=aui_markdown-part] h1{font-size:1rem;line-height:1.4;letter-spacing:-.01em;margin:1rem 0 .5rem;font-weight:600}[data-slot=aui_markdown-part] h2{font-size:.9375rem;line-height:1.4;letter-spacing:-.01em;margin:.875rem 0 .375rem;font-weight:600}[data-slot=aui_markdown-part] h3{font-size:.875rem;line-height:1.4;margin:.75rem 0 .25rem;font-weight:600}[data-slot=aui_markdown-part] h4{font-size:var(--conversation-text-font-size);line-height:1.4;margin:.5rem 0 .25rem;font-weight:600}[data-slot=aui_markdown-part] h1:first-child,[data-slot=aui_markdown-part] h2:first-child,[data-slot=aui_markdown-part] h3:first-child,[data-slot=aui_markdown-part] h4:first-child{margin-top:0}[data-slot=aui_markdown-part] ul,[data-slot=aui_markdown-part] ol{margin:.375rem 0;padding-left:1.25rem}[data-slot=aui_markdown-part] li{margin:.2rem 0}[data-slot=aui_markdown-part] li+li{margin-top:.25rem}[data-slot=aui_markdown-part] code{font-family:SF Mono,Cascadia Code,Fira Code,monospace;font-size:.92em;background:var(--semi-color-fill-0);padding:.1em .3em;border-radius:.25rem}[data-slot=aui_markdown-part] pre{margin:.5rem 0;padding:.625rem .75rem;font-size:.7rem;line-height:1.5;border-radius:.375rem;border:1px solid var(--semi-color-border);background:var(--semi-color-fill-0);overflow-x:auto}[data-slot=aui_markdown-part] pre code{background:transparent;padding:0;font-size:inherit}[data-slot=aui_markdown-part] blockquote{margin:.5rem 0;padding-left:.75rem;border-left:3px solid var(--semi-color-border);color:var(--semi-color-text-2)}[data-slot=md-table-wrap]{margin:.5rem 0;max-width:100%;overflow-x:auto;border-radius:.375rem;border:1px solid var(--semi-color-border)}[data-slot=md-table-wrap] table{margin:0;width:100%;min-width:12rem;border-collapse:collapse;font-size:var(--conversation-text-font-size);line-height:var(--dt-line-height)}[data-slot=md-table-wrap] thead{background:color-mix(in srgb,var(--semi-color-fill-0) 50%,transparent)}[data-slot=md-table-wrap] th{padding:.375rem .625rem;text-align:left;font-size:.75rem;font-weight:500;color:var(--semi-color-text-2);white-space:nowrap}[data-slot=md-table-wrap] td{padding:.375rem .625rem;font-size:var(--conversation-text-font-size);line-height:1.5;vertical-align:top;color:var(--semi-color-text-0)}[data-slot=md-table-wrap] tr{border-bottom:1px solid var(--semi-color-border)}[data-slot=md-table-wrap] tr:last-child{border-bottom:none}[data-slot=aui_markdown-part] strong{font-weight:600}[data-slot=aui_markdown-part] hr{border:none;border-top:1px solid var(--semi-color-border);margin:.75rem 0}[data-slot=show-earlier-btn]{display:flex;align-items:center;justify-content:center;padding:.5rem;margin:.5rem 0;font-size:.75rem;color:var(--semi-color-text-2);background:var(--semi-color-fill-0);border:1px solid var(--semi-color-border);border-radius:.375rem;cursor:pointer;transition:background .12s,color .12s;width:100%}[data-slot=show-earlier-btn]:hover{background:var(--semi-color-fill-1);color:var(--semi-color-text-0)}[data-slot=stream-indicator]{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;color:var(--semi-color-text-3);font-size:var(--conversation-tool-font-size)}[data-slot=stream-indicator][data-stall]{margin-top:.375rem}[data-slot=dither-square]{display:inline-block;width:.75rem;height:.75rem;border-radius:2px;background:repeating-conic-gradient(currentColor 0% 25%,transparent 0% 50%) 0 0 / .125rem .125rem;opacity:.7;animation:indicator-pulse 1.2s ease-in-out infinite}[data-slot=indicator-timer]{font-variant-numeric:tabular-nums;font-size:.6875rem;color:var(--semi-color-text-3)}@keyframes indicator-pulse{0%,to{opacity:.4}50%{opacity:.9}}.ga-inline-error{padding:6px 12px;margin:4px 0;color:var(--semi-color-danger);font-size:var(--conversation-caption-font-size);line-height:var(--conversation-caption-line-height);opacity:.85}.ga-inline-error-text{white-space:pre-wrap;word-break:break-word}:root{--composer-width: 48.75rem;--composer-control-size: 1.75rem;--composer-surface-pad-x: .75rem;--composer-surface-pad-y: .5rem;--composer-input-min-height: 1.625rem;--composer-input-max-height: 9.375rem;--composer-fallback-height: 2.75rem;--composer-measured-height: 62px}[data-slot=composer-root]{position:absolute;bottom:0;left:50%;transform:translate(-50%);z-index:30;width:min(var(--composer-width),calc(100% - 2rem));padding-top:.5rem;padding-bottom:1rem}[data-slot=composer-root]:before{content:"";position:absolute;top:.5rem;right:0;bottom:0;left:0;background:var(--background);border-radius:var(--composer-border-radius, 1rem) var(--composer-border-radius, 1rem) 0 0;z-index:-1}[data-slot=composer-surface]{display:flex;flex-direction:column;gap:0;padding:var(--composer-surface-pad-y) var(--composer-surface-pad-x);border-radius:.75rem;border:1px solid var(--semi-color-border, #e0e0e0);background:color-mix(in srgb,var(--semi-color-bg-0, #fff) 85%,transparent);backdrop-filter:blur(.75rem) saturate(1.12);-webkit-backdrop-filter:blur(.75rem) saturate(1.12);box-shadow:0 2px 12px #0000000a;transition:border-color .15s}[data-slot=composer-surface]:focus-within{border-color:var(--semi-color-primary, #3370ff);box-shadow:0 0 0 2px color-mix(in srgb,var(--semi-color-primary, #3370ff) 15%,transparent)}[data-slot=composer-input-row]{display:flex;align-items:flex-end}[data-slot=composer-rich-input]{flex:1;min-height:var(--composer-input-min-height);max-height:var(--composer-input-max-height);padding:.375rem .25rem;border:none;background:transparent;font-size:.8125rem;line-height:1.5;color:var(--semi-color-text-0, #1c1f23);outline:none;font-family:inherit;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}[data-slot=composer-rich-input]:empty:before{content:attr(data-placeholder);color:var(--ui-text-secondary);pointer-events:none}[data-slot=composer-rich-input][contenteditable=false]{opacity:.5;cursor:default}.ref-chip{display:inline-flex;align-items:center;gap:2px;padding:1px 6px;border-radius:4px;background:color-mix(in srgb,var(--semi-color-primary, #3370ff) 10%,transparent);color:var(--semi-color-primary, #3370ff);font-size:.6875rem;vertical-align:baseline;-webkit-user-select:none;user-select:none;cursor:default;line-height:1.4}.ref-chip-icon{display:inline-flex;align-items:center}.ref-chip-label{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-chip{display:inline-flex;align-items:center;padding:.1rem .4rem;border-radius:4px;background:#3b82f61f;color:#3b82f6;font-family:var(--font-mono, ui-monospace, monospace);font-size:.82em;font-weight:500;line-height:1.4;white-space:nowrap;-webkit-user-select:none;user-select:none;vertical-align:baseline}[data-slot=at-ref-popover]{position:relative;width:100%;margin-bottom:.25rem;animation:skillSlideUp .12s ease-out}[data-slot=at-ref-form]{display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;background:var(--semi-color-bg-0, #fff);border:1px solid var(--semi-color-border, #e0e0e0);border-radius:.5rem;box-shadow:0 4px 20px #00000014}[data-slot=at-ref-kinds]{display:flex;gap:2px}[data-slot=at-ref-kind-btn]{width:1.5rem;height:1.5rem;border:none;border-radius:.25rem;background:transparent;font-size:.75rem;cursor:pointer;display:grid;place-items:center;transition:background .1s}[data-slot=at-ref-kind-btn]:hover{background:var(--semi-color-fill-0, #f5f5f5)}[data-slot=at-ref-kind-btn][data-active]{background:color-mix(in srgb,var(--semi-color-primary, #3370ff) 12%,transparent)}[data-slot=at-ref-input]{flex:1;border:none;outline:none;background:transparent;font-size:.75rem;color:var(--semi-color-text-0, #1c1f23);font-family:monospace;min-width:0}[data-slot=at-ref-input]::placeholder{color:var(--semi-color-text-3, #8f959e)}[data-slot=at-ref-confirm]{width:1.5rem;height:1.5rem;border:none;border-radius:.25rem;background:var(--semi-color-text-0, #1c1f23);color:var(--semi-color-bg-0, #fff);font-size:.75rem;cursor:pointer;display:grid;place-items:center;transition:opacity .1s}[data-slot=at-ref-confirm]:disabled{opacity:.2;cursor:default}[data-slot=composer-toolbar]{display:flex;align-items:center;justify-content:space-between;padding-top:.25rem;border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);margin-top:.25rem}[data-slot=composer-toolbar-left],[data-slot=composer-toolbar-right]{display:flex;align-items:center;gap:.25rem}[data-slot=composer-attach-btn]{width:var(--composer-control-size);height:var(--composer-control-size);border-radius:.375rem;border:none;background:transparent;color:var(--semi-color-text-2, #4e5969);display:grid;place-items:center;cursor:pointer;transition:background .12s,color .12s}[data-slot=composer-attach-btn]:hover{background:var(--semi-color-fill-0, #f5f5f5);color:var(--semi-color-text-0, #1c1f23)}[data-slot=composer-cta]{width:var(--composer-control-size);height:var(--composer-control-size);border-radius:50%;border:none;display:grid;place-items:center;cursor:pointer;transition:opacity .12s,background .12s,border-color .12s;background:var(--semi-color-text-0, #1c1f23);color:var(--semi-color-bg-0, #fff)}[data-slot=composer-cta]:disabled{opacity:.2;cursor:default}[data-slot=composer-cta]:not(:disabled):hover{opacity:.8}[data-slot=composer-cta][data-state=stop]{background:var(--semi-color-bg-0, #fff);color:var(--semi-color-text-0, #1c1f23);border:1px solid var(--semi-color-border, #e0e0e0)}[data-slot=composer-cta][data-state=stop]:hover{background:var(--semi-color-fill-0, #f5f5f5);opacity:1}[data-slot=composer-cta][data-state=queue]{background:var(--semi-color-primary, #3370ff);color:#fff}[data-slot=composer-status-stack]{display:flex;flex-wrap:wrap;gap:.25rem;padding:0 .25rem .25rem}[data-slot=status-running]{display:inline-flex;align-items:center;gap:.375rem;padding:.2rem .5rem;border-radius:1rem;background:color-mix(in srgb,var(--semi-color-primary, #3370ff) 8%,transparent);font-size:.6875rem;color:var(--semi-color-primary, #3370ff);-webkit-user-select:none;user-select:none}[data-slot=status-dot]{width:6px;height:6px;border-radius:50%;background:var(--semi-color-primary, #3370ff);animation:statusPulse 1.2s ease-in-out infinite}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.3}}[data-slot=status-queued]{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .375rem;border-radius:1rem;background:var(--semi-color-fill-0, #f5f5f5);font-size:.6875rem;color:var(--semi-color-text-1, #1c1f23);-webkit-user-select:none;user-select:none}[data-slot=status-queue-num]{font-weight:600;color:var(--semi-color-text-2, #4e5969);font-size:.625rem}[data-slot=status-queue-text]{max-width:8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-slot=status-queue-cancel]{width:1rem;height:1rem;border:none;border-radius:50%;background:transparent;color:var(--semi-color-text-3, #8f959e);display:grid;place-items:center;cursor:pointer;transition:background .1s,color .1s}[data-slot=status-queue-cancel]:hover{background:#0000000f;color:var(--semi-color-text-0, #1c1f23)}[data-slot=composer-drop-overlay]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;background:color-mix(in srgb,var(--semi-color-primary, #3370ff) 10%,transparent);border:2px dashed var(--semi-color-primary, #3370ff);border-radius:.75rem;color:var(--semi-color-primary, #3370ff);font-size:.8125rem;font-weight:500;pointer-events:none}[data-slot=model-selector]{position:relative}[data-slot=model-chip]{display:flex;align-items:center;gap:.25rem;height:var(--composer-control-size);padding:0 .5rem;border:none;border-radius:.375rem;background:transparent;color:var(--semi-color-text-2, #4e5969);font-size:.75rem;font-weight:400;cursor:pointer;transition:background .12s,color .12s;white-space:nowrap;max-width:10rem}[data-slot=model-chip]:hover,[data-slot=model-chip][data-open]{background:color-mix(in srgb,var(--semi-color-text-0, #1c1f23) 5%,transparent);color:var(--semi-color-text-0, #1c1f23)}[data-slot=model-chip][data-loading]{padding:0 .375rem}[data-slot=model-chip-label]{overflow:hidden;text-overflow:ellipsis;max-width:12rem}[data-slot=model-chip-caret]{display:inline-flex;opacity:.4;transition:transform .15s}[data-slot=model-chip-caret] svg{width:8px;height:8px}[data-slot=model-chip-caret][data-open]{transform:rotate(180deg)}[data-slot=model-chip-spinner]{display:inline-flex;gap:2px;align-items:center;height:10px}[data-slot=model-chip-spinner]:before,[data-slot=model-chip-spinner]:after,[data-slot=model-chip-spinner] span{content:"";display:block;width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.4;animation:dotPulse 1s ease-in-out infinite}[data-slot=model-chip-spinner]:after{animation-delay:.2s}[data-slot=model-chip-spinner] span{animation-delay:.4s}@keyframes dotPulse{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:.8;transform:scale(1)}}[data-slot=provider-dot]{width:6px;height:6px;border-radius:50%;flex-shrink:0}[data-slot=model-menu]{position:absolute;bottom:calc(100% + 8px);right:0;width:16rem;max-height:24rem;display:flex;flex-direction:column;background:color-mix(in srgb,var(--semi-color-bg-0, #fff) 92%,transparent);backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15);border:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);border-radius:.5rem;box-shadow:0 4px 24px #00000014,0 0 0 .5px #00000005;z-index:60;animation:skillSlideUp .12s ease-out;overflow:hidden}[data-slot=model-menu-search]{display:flex;align-items:center;gap:.375rem;padding:.5rem .625rem;border-bottom:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent)}[data-slot=model-menu-search-icon]{flex-shrink:0;color:var(--semi-color-text-3, #8f959e)}[data-slot=model-menu-search-input]{flex:1;border:none;outline:none;background:transparent;font-size:.75rem;color:var(--semi-color-text-0, #1c1f23);min-width:0}[data-slot=model-menu-search-input]::placeholder{color:var(--semi-color-text-3, #8f959e)}[data-slot=model-menu-body]{flex:1;overflow-y:auto;padding:.25rem}[data-slot=model-menu-section]{padding-top:.25rem}[data-slot=model-menu-section]+[data-slot=model-menu-section]{border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 40%,transparent);margin-top:.25rem;padding-top:.375rem}[data-slot=model-menu-section-header]{display:flex;align-items:center;gap:.375rem;padding:.25rem .5rem;font-size:.5625rem;font-weight:600;color:var(--semi-color-text-3, #8f959e);letter-spacing:.05em;-webkit-user-select:none;user-select:none}[data-slot=model-menu-item]{display:flex;align-items:center;gap:.375rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:transparent;color:var(--semi-color-text-0, #1c1f23);font-size:.75rem;cursor:pointer;text-align:left;transition:background .1s}[data-slot=model-menu-item]:hover{background:var(--semi-color-fill-0, #f5f5f5)}[data-slot=model-menu-item][data-active]{color:var(--semi-color-text-0, #1c1f23);font-weight:500}[data-slot=model-menu-name]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-slot=model-check]{font-size:.625rem;color:var(--semi-color-primary, #3370ff);flex-shrink:0;width:.75rem}[data-slot=mixin-caret]{display:inline-flex;padding:2px;border-radius:2px;transition:transform .15s;color:var(--semi-color-text-3, #8f959e)}[data-slot=mixin-caret]:hover{background:var(--semi-color-fill-1, #eee)}[data-slot=mixin-caret][data-expanded]{transform:rotate(180deg)}[data-slot=mixin-members]{padding-left:1.25rem}[data-slot=mixin-member]{display:flex;align-items:center;gap:.375rem;padding:.25rem .5rem;font-size:.6875rem;color:var(--semi-color-text-2, #4e5969)}[data-slot=model-menu-empty]{padding:1rem .5rem;text-align:center;font-size:.75rem;color:var(--semi-color-text-3, #8f959e)}[data-slot=model-menu-footer]{display:flex;border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);padding:.25rem}[data-slot=model-menu-action]{flex:1;padding:.375rem .5rem;border:none;border-radius:.25rem;background:transparent;color:var(--semi-color-text-2, #4e5969);font-size:.6875rem;cursor:pointer;text-align:center;transition:background .1s,color .1s}[data-slot=model-menu-action]:hover{background:var(--semi-color-fill-0, #f5f5f5);color:var(--semi-color-text-0, #1c1f23)}[data-slot=attachment-strip]{display:flex;flex-wrap:wrap;gap:.375rem;padding-bottom:.375rem;animation:attachReveal .2s ease-out}@keyframes attachReveal{0%{opacity:0;max-height:0}to{opacity:1;max-height:200px}}[data-slot=attachment-thumb]{position:relative;width:3.5rem;height:3.5rem;border-radius:.375rem;overflow:hidden;border:1px solid var(--semi-color-border, #e0e0e0)}[data-slot=attachment-thumb] img{width:100%;height:100%;object-fit:cover}[data-slot=attachment-file-chip]{display:flex;align-items:center;gap:.375rem;padding:.25rem .5rem;border-radius:.375rem;border:1px solid var(--semi-color-border, #e0e0e0);background:var(--semi-color-fill-0, #f9f9f9);max-width:12rem}[data-slot=attachment-file-icon]{font-size:1rem;flex-shrink:0}[data-slot=attachment-file-meta]{display:flex;flex-direction:column;overflow:hidden;min-width:0}[data-slot=attachment-file-name]{font-size:.6875rem;color:var(--semi-color-text-0, #1c1f23);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-slot=attachment-file-size]{font-size:.625rem;color:var(--semi-color-text-3, #8f959e)}[data-slot=attachment-remove]{flex-shrink:0;width:1rem;height:1rem;border-radius:50%;border:none;background:var(--semi-color-fill-1, #eee);color:var(--semi-color-text-2, #4e5969);font-size:.625rem;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .1s}[data-slot=attachment-thumb] [data-slot=attachment-remove]{position:absolute;top:2px;right:2px;background:#00000080;color:#fff}[data-slot=attachment-remove]:hover{background:var(--semi-color-danger, #f53f3f);color:#fff}[data-slot=attachment-spinner]{width:12px;height:12px;border:1.5px solid var(--semi-color-border, #e0e0e0);border-top-color:var(--semi-color-primary, #3370ff);border-radius:50%;animation:chipSpin .6s linear infinite;flex-shrink:0}[data-slot=attachment-error-badge]{width:1rem;height:1rem;border-radius:50%;border:none;background:var(--semi-color-danger, #f53f3f);color:#fff;font-size:.625rem;font-weight:700;line-height:1;cursor:pointer;display:grid;place-items:center;flex-shrink:0}[data-slot=attachment-file-chip][data-status=error],[data-slot=attachment-thumb][data-status=error]{border-color:var(--semi-color-danger, #f53f3f)}[data-slot=attachment-file-error]{font-size:.5625rem;color:var(--semi-color-danger, #f53f3f)}[data-slot=skill-wrap]{position:relative}[data-slot=skill-trigger]{width:var(--composer-control-size);height:var(--composer-control-size);border-radius:.375rem;border:none;background:transparent;color:var(--semi-color-text-2, #4e5969);display:grid;place-items:center;cursor:pointer;transition:background .12s,color .12s}[data-slot=skill-trigger]:hover{background:var(--semi-color-fill-0, #f5f5f5);color:var(--semi-color-primary, #3370ff)}[data-slot=skill-panel]{position:absolute;bottom:calc(100% + 6px);left:0;min-width:11rem;max-height:24rem;overflow-y:auto;background:var(--semi-color-bg-0, #fff);border:1px solid var(--semi-color-border, #e0e0e0);border-radius:.5rem;box-shadow:0 4px 16px #00000014;padding:.25rem;z-index:60;animation:skillSlideUp .12s ease-out}@keyframes skillSlideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}[data-slot=skill-section]{padding:.125rem 0}[data-slot=skill-section]+[data-slot=skill-section]{border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);margin-top:.25rem;padding-top:.25rem}[data-slot=skill-section-title]{font-size:.625rem;font-weight:600;color:var(--semi-color-text-3, #8f959e);text-transform:uppercase;letter-spacing:.03em;padding:.25rem .5rem .125rem}[data-slot=skill-item]{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:transparent;color:var(--semi-color-text-0, #1c1f23);font-size:.75rem;cursor:pointer;text-align:left;transition:background .1s}[data-slot=skill-item]:hover,[data-slot=skill-item][data-focused]{background:var(--semi-color-fill-0, #f5f5f5)}[data-slot=skill-info]{display:flex;align-items:baseline;gap:.5rem;min-width:0}[data-slot=skill-name]{font-size:.75rem;font-weight:500;color:var(--semi-color-text-0, #1c1f23);flex-shrink:0}[data-slot=skill-desc]{font-size:.6875rem;color:var(--semi-color-text-2, #4e5969);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-slot=skill-panel-hint]{padding:.25rem .5rem;font-size:.6875rem;color:var(--semi-color-text-2, #4e5969);border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);margin-top:.25rem;-webkit-user-select:none;user-select:none}[data-slot=completion-drawer]{position:relative;width:100%;max-height:16rem;overflow-y:auto;background:var(--semi-color-bg-0, #fff);border:1px solid var(--semi-color-border, #e0e0e0);border-radius:.5rem;box-shadow:0 4px 20px #00000014;padding:.25rem;margin-bottom:.25rem;animation:skillSlideUp .12s ease-out}[data-slot=completion-item]{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:transparent;cursor:pointer;text-align:left;transition:background .1s}[data-slot=completion-item]:hover,[data-slot=completion-item][data-focused]{background:var(--semi-color-fill-0, #f5f5f5)}[data-slot=completion-icon]{font-size:1rem;flex-shrink:0;width:1.25rem;text-align:center}[data-slot=completion-info]{display:flex;flex-direction:column;gap:1px;min-width:0}[data-slot=completion-title]{font-size:.75rem;font-weight:500;color:var(--semi-color-text-0, #1c1f23);font-family:monospace}[data-slot=completion-badge]{display:inline-block;margin-left:.375rem;font-size:.5625rem;font-family:sans-serif;font-weight:400;color:var(--semi-color-text-3, #8f959e);background:var(--semi-color-fill-0, #f5f5f5);padding:0 4px;border-radius:3px;vertical-align:middle}[data-slot=completion-desc]{font-size:.6875rem;color:var(--semi-color-text-3, #8f959e);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-slot=context-menu-wrap]{position:relative}[data-slot=context-menu]{position:absolute;bottom:calc(100% + 6px);left:0;min-width:11rem;background:var(--semi-color-bg-0, #fff);border:1px solid var(--semi-color-border, #e0e0e0);border-radius:.5rem;box-shadow:0 4px 16px #00000014;padding:.25rem;z-index:60;animation:skillSlideUp .12s ease-out}[data-slot=context-menu-title]{padding:.25rem .5rem .125rem;font-size:.625rem;font-weight:600;color:var(--semi-color-text-3, #8f959e);text-transform:uppercase;letter-spacing:.03em;-webkit-user-select:none;user-select:none}[data-slot=context-menu-item]{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:transparent;color:var(--semi-color-text-0, #1c1f23);font-size:.75rem;cursor:pointer;text-align:left;transition:background .1s}[data-slot=context-menu-item]:hover{background:var(--semi-color-fill-0, #f5f5f5)}[data-slot=context-menu-icon]{display:inline-flex;align-items:center;color:var(--semi-color-text-2, #4e5969)}[data-slot=context-menu-label]{flex:1}[data-slot=context-menu-separator]{display:block;height:1px;margin:.25rem .5rem;background:var(--semi-color-border, #e0e0e0)}[data-slot=context-menu-hint]{padding:.25rem .5rem;font-size:.6875rem;color:var(--semi-color-text-2, #4e5969);border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);margin-top:.25rem;-webkit-user-select:none;user-select:none}[data-slot=empty-state-root]{display:flex;flex-direction:column;align-items:flex-start;padding-bottom:1rem;gap:1.25rem}[data-slot=empty-state-wordmark]{display:flex;align-items:center;padding-left:1px}[data-slot=empty-state-wordmark] img{height:4rem;width:auto}.empty-state-wordmark-dark,[data-appearance=dark] .empty-state-wordmark-light{display:none}[data-appearance=dark] .empty-state-wordmark-dark{display:block}[data-slot=empty-state-presets]{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.5rem}.empty-state-preset-btn{display:inline-flex;align-items:center;gap:6px;padding:.375rem .625rem;border:1px solid var(--semi-color-border);border-radius:6px;background:none;color:var(--ui-text-secondary);font-size:.8125rem;font-weight:500;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,box-shadow .15s}.empty-state-preset-btn:hover{background:color-mix(in srgb,var(--semi-color-primary) 4%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--semi-color-primary) 12%,transparent)}.empty-state-preset-btn:active{background:color-mix(in srgb,var(--semi-color-primary) 8%,transparent)}.empty-state-preset-icon{display:flex;align-items:center;color:var(--foreground)}.chat-view-root[data-empty]{display:flex;flex-direction:column;align-items:center;justify-content:center}.chat-view-root[data-empty] [data-slot=empty-state-root]{width:min(var(--composer-width, 48.75rem),calc(100% - 2rem))}.chat-view-root[data-empty] [data-slot=composer-root]{position:relative;bottom:auto;left:auto;transform:none;width:min(var(--composer-width, 48.75rem),calc(100% - 2rem))}.chat-view-root[data-empty] [data-slot=composer-root]:before{display:none}.chat-view-root[data-empty] [data-slot=composer-surface]{border-color:var(--semi-color-primary)!important;box-shadow:0 0 20px color-mix(in srgb,var(--semi-color-primary) 12%,transparent),0 0 50px -4px color-mix(in srgb,var(--semi-color-primary) 8%,transparent)!important}.chat-view-root{position:relative;width:100%;height:100%;min-height:0;overflow:hidden}.ga-chat-offline{display:flex;align-items:center;justify-content:center;height:100%;color:var(--semi-color-text-2);font-size:14px}.ga-app-layout{position:relative;width:100vw;height:100vh;overflow:hidden;display:flex;flex-direction:column}:root{--ga-sidebar-top-padding: 36px}:root[data-platform=macos]{--ga-titlebar-height: 38px;--ga-titlebar-controls-left: 72px;--ga-titlebar-controls-top: 6px;--ga-sidebar-top-padding: 36px}:root[data-platform=windows]{--ga-sidebar-top-padding: 8px}:root[data-platform=windows] .ga-titlebar-controls{left:8px;top:2px}.ga-titlebar-controls{position:absolute;top:var(--ga-titlebar-controls-top, 8px);left:12px;z-index:999;display:flex;align-items:center;gap:2px}:root[data-platform=macos] .ga-titlebar-controls{left:var(--ga-titlebar-controls-left, 72px)}.ga-titlebar-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:6px;background:none;color:var(--ui-text-tertiary);cursor:pointer;transition:color .1s,background .1s;-webkit-app-region:no-drag}.ga-titlebar-btn:hover{background:var(--ui-control-hover-background);color:var(--foreground)}.ga-app-body{flex:1;min-height:0;overflow:hidden}.ga-app-body .semi-resizable-group{height:100%}.ga-body-collapsed{height:100%;display:flex;flex-direction:column;background:var(--background)}.ga-sidebar-item{display:flex;flex-direction:column;border-right:1px solid var(--semi-color-border);background:var(--ui-sidebar-surface-background)}.ga-left-sidebar{display:flex;flex-direction:column;height:100%;padding:var(--ga-sidebar-top-padding, 36px) 0 0}.ga-sidebar-brand{flex-shrink:0;padding:8px 10px 12px;display:flex;flex-direction:column;gap:2px}.ga-brand-title{font-size:13px;font-weight:600;color:var(--semi-color-text-0)}.ga-brand-sub{font-size:10px;color:var(--semi-color-text-2)}.ga-nav-rail{flex-shrink:0;display:flex;flex-direction:column;gap:1px;padding:0 10px}.ga-nav-btn{display:flex;align-items:center;width:100%;gap:8px;height:28px;padding:0 8px;border:1px solid transparent;border-radius:6px;background:none;color:var(--ui-text-secondary);font-size:.8125rem;font-weight:500;line-height:1;text-align:left;cursor:pointer;transition:color .1s ease-out,background .1s ease-out;-webkit-app-region:no-drag}.ga-nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ga-nav-icon{flex-shrink:0;color:var(--ui-icon-nav)}.ga-nav-btn:hover{background:var(--ui-control-hover-background);color:var(--foreground);transition:none}.ga-nav-btn:hover .ga-nav-icon{color:var(--ui-icon-nav-active)}.ga-nav-btn.active{background:var(--ui-control-active-background);border-color:var(--ui-stroke-tertiary);color:var(--foreground);box-shadow:none}.ga-nav-btn.active .ga-nav-icon{color:var(--ui-icon-nav-active)}.ga-sidebar-search{flex-shrink:0;padding:4px 10px}.ga-sidebar-search .semi-input-wrapper{border-radius:6px;border-color:transparent;background:var(--ui-control-hover-background);height:24px;font-size:.75rem}.ga-sidebar-search .semi-input-wrapper:hover{border-color:transparent;background:var(--ui-row-hover-background)}.ga-sidebar-search .semi-input-wrapper-focus{border-color:var(--ui-accent);background:transparent}.ga-sidebar-search .semi-input{font-size:.75rem}.ga-sidebar-search .semi-input-prefix{opacity:.5}.ga-session-section{flex:1;min-height:0;overflow-y:auto;padding:4px 10px;display:flex;flex-direction:column;gap:1px}.ga-session-section::-webkit-scrollbar{width:4px}.ga-session-section::-webkit-scrollbar-track{margin:8px 0}.ga-session-section::-webkit-scrollbar-thumb{background:transparent;border-radius:2px}.ga-session-section:hover::-webkit-scrollbar-thumb{background:var(--semi-color-fill-2)}.ga-session-section:hover::-webkit-scrollbar-thumb:hover{background:var(--semi-color-fill-1)}.ga-session-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--semi-color-text-3);font-size:12px}.ga-session-list{display:flex;flex-direction:column;gap:1px}.ga-session-item{position:relative;display:flex;align-items:center;width:100%;min-height:26px;padding:0;border:none;border-radius:6px;background:none;cursor:pointer;text-align:left;transition:background .1s ease-out}.ga-session-item:hover{background:var(--ui-row-hover-background)}.ga-session-item.active{background:var(--ui-row-active-background)}.ga-session-content{display:flex;align-items:center;gap:6px;padding:2px 8px;min-width:0;flex:1;transition:padding-right .1s ease-out}.ga-session-item:hover .ga-session-content{padding-right:48px}.ga-status-dot{width:4px;height:4px;border-radius:50%;background:var(--ui-text-quaternary);flex-shrink:0}.ga-status-dot.working{width:6px;height:6px;background:var(--ui-accent);position:relative}.ga-status-dot.working:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:var(--ui-accent);animation:ga-ping 1.5s cubic-bezier(0,0,.2,1) infinite}@keyframes ga-ping{75%,to{transform:scale(2);opacity:0}}.ga-session-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;color:var(--ui-text-secondary);line-height:1.4}.ga-session-item:hover .ga-session-title,.ga-session-item.active .ga-session-title{color:var(--foreground)}.ga-session-age{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:.625rem;color:var(--ui-text-tertiary);opacity:0;transition:opacity .15s;pointer-events:none}.ga-session-item:hover .ga-session-age{opacity:1}.ga-session-age.ga-session-duration{opacity:1;color:var(--ui-accent, var(--ui-text-secondary));font-variant-numeric:tabular-nums}.ga-session-item:hover .ga-session-age.ga-session-duration{opacity:0}.ga-session-actions{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .1s}.ga-session-item:hover .ga-session-actions,.ga-session-actions.menu-open{opacity:1}.ga-session-actions-btn{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:3px;background:none;color:var(--ui-text-tertiary);cursor:pointer;transition:color .1s,background .1s}.ga-session-actions-btn:hover{background:var(--ui-control-active-background);color:var(--foreground)}.ga-session-rename-input{flex:1;min-width:0;height:20px;padding:0 4px;border:1px solid var(--ui-accent);border-radius:4px;background:var(--semi-color-bg-0);color:var(--foreground);font-size:.8125rem;font-family:inherit;outline:none}.ga-session-pin-icon{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;align-items:center;color:var(--ui-text-quaternary);opacity:1;transition:opacity .1s;pointer-events:none}.ga-session-item:hover .ga-session-pin-icon{opacity:0}.ga-session-menu.semi-dropdown-menu{min-width:140px;padding:4px}.ga-session-menu .semi-dropdown-item{display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:4px;font-size:.8125rem;font-weight:400;color:var(--ui-text-secondary)}.ga-session-menu .semi-dropdown-item:hover{background:var(--ui-control-hover-background);color:var(--foreground)}.ga-session-menu .semi-dropdown-item-danger{color:var(--semi-color-danger)}.ga-session-menu .semi-dropdown-item-danger:hover{color:var(--semi-color-danger);background:var(--ui-control-hover-background)}.ga-section-header{display:flex;align-items:center;gap:4px;padding:6px 8px 4px;border:none;background:none;cursor:pointer;width:100%}.ga-section-dot{width:8px;height:8px;border-radius:1px;background:var(--theme-primary);flex-shrink:0}.ga-section-label{font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--theme-primary);line-height:1}.ga-section-count{font-size:.6875rem;font-weight:500;color:var(--ui-text-quaternary);line-height:1}.ga-section-chevron{color:var(--ui-text-tertiary);opacity:0;transition:opacity .15s,transform .15s;display:flex;align-items:center}.ga-section-header:hover .ga-section-chevron{opacity:1}.ga-section-chevron.open{transform:rotate(90deg)}.ga-section-action{margin-left:auto;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:4px;background:none;color:var(--ui-text-tertiary);cursor:pointer;opacity:0;transition:opacity .15s,background .1s}.ga-section-header:hover .ga-section-action{opacity:1}.ga-section-action:hover{background:var(--ui-control-hover-background);color:var(--foreground)}.ga-sidebar-footer{flex-shrink:0;padding:4px 10px 6px;border-top:1px solid transparent;display:flex;align-items:center;gap:2px}.ga-sidebar-footer-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;color:var(--semi-color-text-1);cursor:pointer;padding:0;border-radius:4px}.ga-sidebar-footer-btn:hover{background:var(--semi-color-fill-0)}.ga-sidebar-footer-btn:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:1px}.ga-sidebar-footer-anchor{position:relative;display:flex}.ga-main-item{display:flex;flex-direction:column;min-height:0;background:var(--background)}.ga-main-area{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:24px}.ga-main-area.ga-main-chat{padding:0;align-items:stretch}.ga-main-area.ga-main-full{padding:0;align-items:stretch;justify-content:stretch}:root[data-platform=macos] .ga-body-collapsed .ga-main-area.ga-main-full{padding-top:var(--ga-titlebar-height, 38px)}.ga-main-placeholder{text-align:center;color:var(--semi-color-text-2)}.ga-main-placeholder h2{margin:0 0 8px;font-size:20px;color:var(--semi-color-text-0)}.ga-main-placeholder p{margin:4px 0;font-size:14px}.ga-placeholder-hint{margin-top:16px!important;font-size:12px!important;color:var(--semi-color-text-3)!important;font-style:italic}.ga-app-body .semi-resizable-handler{width:2px;background:transparent;transition:background .15s}.ga-app-body .semi-resizable-handler:hover{background:var(--semi-color-primary)}.ga-app-body .semi-resizable-handler .semi-icon{display:none}.ga-statusbar{height:20px;display:flex;justify-content:space-between;align-items:stretch;gap:8px;border-top:1px solid var(--ui-stroke-tertiary);background:var(--ui-sidebar-surface-background);padding:0 4px;color:var(--ui-text-tertiary);flex-shrink:0;-webkit-app-region:no-drag}.ga-statusbar-group{display:flex;min-width:0;align-items:stretch;gap:2px}.ga-statusbar-item{display:inline-flex;align-items:center;height:100%;gap:4px;padding:0 6px;font-size:.6875rem;color:inherit;border:none;border-radius:0;background:none;text-decoration:none;cursor:default;transition:color .1s,background .1s}.ga-statusbar-item.action,.ga-statusbar-item.menu,.ga-statusbar-item.link{cursor:pointer}.ga-statusbar-item.action:hover,.ga-statusbar-item.menu:hover,.ga-statusbar-item.link:hover{color:var(--foreground);background:var(--chrome-action-hover)}.ga-statusbar-item.disabled{opacity:.45;cursor:default}.ga-statusbar-item.disabled:hover{color:inherit;background:none}.ga-statusbar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ga-statusbar-detail{color:var(--ui-text-quaternary)}.ga-statusbar-icon{display:flex;align-items:center;flex-shrink:0}.ga-statusbar-spinner{animation:ga-spin 1s linear infinite}@keyframes ga-spin{to{transform:rotate(360deg)}}.ga-statusbar-dot--pulse{animation:ga-dot-pulse 1.2s ease-in-out infinite}@keyframes ga-dot-pulse{0%,to{opacity:1}50%{opacity:.35}}.ga-statusbar-menu-anchor{position:relative}.ga-bridge-panel{position:absolute;bottom:calc(100% + 6px);left:0;min-width:20rem;background:var(--semi-color-bg-0, #fff);border:1px solid var(--ui-stroke-secondary);border-radius:.5rem;box-shadow:0 4px 16px #00000014;-webkit-backdrop-filter:blur(12px) saturate(1.08);backdrop-filter:blur(12px) saturate(1.08);z-index:200;animation:ga-panel-slide-up .12s ease-out;font-size:.875rem}@keyframes ga-panel-slide-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ga-bridge-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.375rem .625rem}.ga-bridge-panel-status-rows{display:flex;flex-direction:column;gap:.25rem;min-width:0;font-size:.7rem;line-height:1}.ga-bridge-panel-row{display:flex;align-items:center;gap:.375rem}.ga-bridge-panel-row--primary{font-weight:500;color:var(--foreground)}.ga-bridge-panel-row--secondary{color:var(--ui-text-tertiary)}.ga-bridge-panel-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.ga-bridge-panel-action-btn{width:1.5rem;height:1.5rem;border:none;border-radius:4px;background:transparent;color:var(--ui-text-tertiary);display:grid;place-items:center;cursor:pointer;transition:background .1s,color .1s}.ga-bridge-panel-action-btn:hover{background:var(--chrome-action-hover);color:var(--foreground)}.ga-bridge-panel-section{border-top:1px solid color-mix(in srgb,var(--semi-color-border, #e0e0e0) 50%,transparent);padding:.375rem .625rem}.ga-panel-section-label{font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:color-mix(in srgb,var(--ui-text-tertiary) 80%,transparent);margin-bottom:.25rem;-webkit-user-select:none;user-select:none}.ga-bridge-panel-list{list-style:none;display:flex;flex-direction:column;gap:.25rem;margin-top:.375rem}.ga-bridge-panel-list-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.75rem}.ga-bridge-panel-svc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize;color:var(--foreground)}.ga-bridge-panel-svc-state{display:flex;align-items:center;gap:.375rem;font-size:.66rem;color:var(--ui-text-tertiary);flex-shrink:0}.ga-bridge-panel-svc-err{color:#ef4444;font-weight:700;font-size:.625rem}.ga-bridge-panel-section-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.ga-bridge-panel-link-btn{border:none;background:none;color:var(--ui-text-tertiary);font-size:.625rem;font-weight:500;cursor:pointer;padding:0;white-space:nowrap;transition:color .1s}.ga-bridge-panel-link-btn:hover{color:var(--foreground)}.ga-bridge-panel-log{margin-top:.25rem;max-height:8rem;border:none;padding:0}.ga-bridge-panel-tabs{display:flex;gap:2px;margin-bottom:.375rem}.ga-bridge-panel-tab{border:none;background:none;padding:.125rem .375rem;font-size:.625rem;font-weight:500;color:var(--ui-text-tertiary);border-radius:3px;cursor:pointer;transition:color .1s,background .1s}.ga-bridge-panel-tab:hover{color:var(--foreground);background:var(--chrome-action-hover)}.ga-bridge-panel-tab.active{color:var(--foreground);background:color-mix(in srgb,var(--ui-accent) 12%,transparent)}.ga-bridge-panel-section-foot{display:flex;align-items:center;justify-content:space-between;margin-top:.25rem;min-height:1rem}.ga-bridge-panel-truncated{font-size:.585rem;color:var(--ui-text-quaternary)}.ga-bridge-panel-log-empty{margin-top:.25rem;font-size:.6875rem;color:var(--ui-text-quaternary);font-style:italic}.ga-conductor-panel-stats{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.ga-conductor-stat{display:inline-flex;align-items:center;justify-content:center;min-width:1rem;height:1rem;padding:0 .25rem;border-radius:.5rem;font-size:.6rem;font-weight:700;line-height:1}.ga-conductor-stat--run{background:color-mix(in srgb,var(--ui-accent, #0053fd) 12%,transparent);color:var(--ui-accent, #0053fd)}.ga-conductor-stat--done{background:color-mix(in srgb,#10b981 12%,transparent);color:#059669}.ga-conductor-stat--fail{background:color-mix(in srgb,#ef4444 12%,transparent);color:#dc2626}.ga-notification-stack{position:fixed;z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:360px}.ga-notification-stack--top{top:48px;left:50%;transform:translate(-50%)}.ga-notification-stack--bottom{bottom:24px;right:24px}.ga-notification{pointer-events:auto;display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:8px;background:var(--semi-color-bg-3);box-shadow:var(--semi-shadow-elevated);font-size:13px;line-height:1.4;animation:notif-slide-in .2s ease-out}.ga-notification--error{border-left:3px solid var(--semi-color-danger)}.ga-notification--warning{border-left:3px solid var(--semi-color-warning)}.ga-notification--success{border-left:3px solid var(--semi-color-success)}.ga-notification--info{border-left:3px solid var(--semi-color-primary)}.ga-notification-body{flex:1;min-width:0}.ga-notification-title{font-weight:600;margin-bottom:2px}.ga-notification-message{color:var(--semi-color-text-1);word-break:break-word}.ga-notification-action{margin-top:6px;padding:2px 8px;border:1px solid var(--semi-color-border);border-radius:4px;background:transparent;color:var(--semi-color-primary);font-size:12px;cursor:pointer}.ga-notification-action:hover{background:var(--semi-color-fill-0)}.ga-notification-dismiss{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--semi-color-text-2);cursor:pointer;border-radius:4px}.ga-notification-dismiss:hover{background:var(--semi-color-fill-1)}@keyframes notif-slide-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.ga-settings-dialog .semi-modal-content{padding-left:24px;padding-right:0;max-height:85vh;display:flex;flex-direction:column}.ga-settings-dialog .semi-modal-header{padding-right:24px;flex-shrink:0}.ga-settings-dialog .semi-modal-body{padding:8px 24px 8px 0;overflow-y:auto;flex:1;min-height:0}.ga-set-block{padding:16px 0;border-bottom:1px solid var(--semi-color-border, #e8e8e8)}.ga-set-block:last-child{border-bottom:none}.ga-set-sec-heading{display:flex;align-items:center;gap:6px;margin:0 0 12px}.ga-set-sec-t{margin:0;font-size:16px;line-height:24px;font-weight:600;color:var(--semi-color-text-0, #1c1f23)}.ga-settings-section-help{display:inline-flex;align-items:center;justify-content:center;color:var(--semi-color-text-2, #646a73);cursor:help}.ga-settings-section-help:focus-visible,.ga-mixin-label:focus-visible,.ga-connection-card-title:focus-visible,.ga-connection-status-label:focus-visible{border-radius:2px;outline:2px solid var(--semi-color-primary-light-active, #94bfff);outline-offset:2px}.ga-font-slider-row{display:flex;align-items:center;gap:12px}.ga-font-value{font-size:13px;color:var(--semi-color-text-2, #646a73);min-width:36px;text-align:right}.ga-mixin-group{margin-bottom:12px;border:1px solid var(--semi-color-border, #e8e8e8);border-radius:8px;overflow:hidden}.ga-mixin-head{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;transition:background .15s}.ga-mixin-head:hover{background:var(--semi-color-fill-0, #f5f5f5)}.ga-mixin-head--active{background:var(--semi-color-primary-light-default, #e8f3ff)}.ga-mixin-toggle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;padding:0;cursor:pointer;color:var(--semi-color-text-2, #646a73);border-radius:4px}.ga-mixin-toggle:hover{background:var(--semi-color-fill-1, #eee)}.ga-mixin-label{font-size:14px;font-weight:500;flex:1;cursor:help}.ga-mixin-body{border-top:1px solid var(--semi-color-border, #e8e8e8);padding:6px 0}.ga-mixin-empty{padding:8px 16px;font-size:12px;color:var(--semi-color-text-2, #646a73)}.ga-mixin-members{display:flex;flex-direction:column}.ga-mixin-member{display:flex;align-items:center;gap:8px;padding:4px 12px;font-size:13px}.ga-mixin-member:hover .ga-mixin-member-actions{opacity:1}.ga-mixin-member-rank{width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--semi-color-fill-0, #f5f5f5);font-size:11px;font-weight:600;color:var(--semi-color-text-2, #646a73);flex-shrink:0}.ga-mixin-member-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ga-mixin-member-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}.ga-icon-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;border-radius:4px;cursor:pointer;font-size:13px;color:var(--semi-color-text-2, #646a73)}.ga-icon-btn:hover:not(:disabled){background:var(--semi-color-fill-1, #eee);color:var(--semi-color-text-0, #1c1f23)}.ga-icon-btn:disabled{opacity:.3;cursor:default}.ga-icon-btn--danger:hover:not(:disabled){background:var(--semi-color-danger-light-default, #fee);color:var(--semi-color-danger, #f93920)}.ga-mixin-hint{padding:4px 16px;font-size:11px;color:var(--semi-color-text-3, #8f959e)}.ga-model-list{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}.ga-model-item{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-radius:6px;cursor:pointer;transition:background .15s}.ga-model-item:hover{background:var(--semi-color-fill-0, #f5f5f5)}.ga-model-item--selected{background:var(--semi-color-primary-light-default, #e8f3ff)}.ga-model-row-content{display:flex;align-items:center;gap:8px;min-width:0}.ga-model-name{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ga-model-actions{display:flex;gap:2px;flex-shrink:0;opacity:0;transition:opacity .15s}.ga-model-item:hover .ga-model-actions{opacity:1}.ga-model-empty{padding:12px 8px;font-size:13px;color:var(--semi-color-text-2, #646a73);text-align:center}.ga-add-model-btn{margin-top:4px}.ga-data-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}.ga-data-row-info{flex:1;min-width:0}.ga-data-row-label{font-size:14px;font-weight:500;color:var(--semi-color-text-0, #1c1f23);cursor:help;border-radius:2px}.ga-data-row-label:focus-visible{outline:2px solid var(--semi-color-primary-light-active, #94bfff);outline-offset:2px}.ga-data-action.semi-button{font-size:13px;font-weight:500}.ga-data-divider{height:1px;background:var(--semi-color-border, #e8e8e8);margin:8px 0}.ga-data-confirm-summary{display:flex;flex-direction:column;gap:10px}.ga-data-confirm-summary>div{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:start;gap:12px;font-size:13px}.ga-data-confirm-summary span{color:var(--semi-color-text-2, #646a73)}.ga-data-confirm-summary strong{overflow-wrap:anywhere;font-weight:500}.ga-data-confirm-summary p,.ga-data-source-description,.ga-data-maintenance-note{margin:4px 0 0;color:var(--semi-color-text-2, #646a73);font-size:13px;line-height:1.6}.ga-data-maintenance-note[role=status]{color:var(--semi-color-warning, #d99200)}.ga-data-source-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.ga-data-export-path{display:block;width:100%;margin-top:10px;padding:10px 12px;border-radius:6px;background:var(--semi-color-fill-0, #f5f5f5);font-family:var(--font-mono, ui-monospace, SFMono-Regular, monospace);font-size:12px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;word-break:break-word;box-sizing:border-box}.ga-data-export-path--inline{margin-top:0}.ga-source-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.ga-source-dot--on{background:#10b981}.ga-source-dot--switching{background:var(--semi-color-primary, #3370ff);animation:ga-source-pulse 1.2s ease-in-out infinite}.ga-source-dot--unavailable{background:var(--semi-color-text-3, #8f959e)}@keyframes ga-source-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.85)}}.ga-connection-description{margin:0 0 12px;color:var(--semi-color-text-2, #646a73);font-size:14px;line-height:1.6}.ga-connection-mode-grid.semi-radioGroup{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:12px}.ga-connection-mode-card.semi-radio{width:100%;min-width:0;margin:0;box-sizing:border-box}.ga-connection-card-title{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;cursor:help}.ga-connection-repository-detail{margin-top:12px;padding:10px 12px;border:1px solid var(--semi-color-border, #e8e8e8);border-radius:8px;background:var(--semi-color-fill-0, #f7f8fa)}.ga-connection-repository-header{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--semi-color-text-1, #35383e);font-size:12px;font-weight:500}.ga-connection-path{display:block;width:100%;margin-top:8px;color:var(--semi-color-text-2, #646a73);font-family:var(--font-mono, ui-monospace, SFMono-Regular, monospace);font-size:12px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;word-break:break-word;box-sizing:border-box}.ga-connection-apply-row{display:flex;align-items:center;justify-content:flex-end;margin-top:12px;gap:8px}.ga-connection-apply-note{flex:1;color:var(--semi-color-warning, #d46b08);font-size:12px;line-height:1.5}.ga-connection-status-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--semi-color-border, #e8e8e8)}.ga-connection-status-copy{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0;color:var(--semi-color-text-2, #646a73);font-size:12px}.ga-connection-status-copy strong{color:var(--semi-color-text-0, #1c1f23);font-weight:500}.ga-connection-status-label{cursor:help}@media(max-width:700px){.ga-connection-mode-grid.semi-radioGroup{grid-template-columns:minmax(0,1fr)}.ga-connection-status-row,.ga-connection-repository-header{align-items:flex-start;flex-direction:column}}.ga-form{display:flex;flex-direction:column;gap:16px}.ga-form-field{display:flex;flex-direction:column;gap:4px}.ga-form-label{font-size:13px;font-weight:500;color:var(--semi-color-text-0, #1c1f23)}.ga-form-req{color:var(--semi-color-danger, #f93920);margin-left:2px}.ga-route-picker{display:flex;gap:8px;margin-bottom:16px}.ga-route-btn{flex:1;padding:10px 12px;border:1px solid var(--semi-color-border, #e0e0e0);border-radius:8px;background:var(--semi-color-bg-0, #fff);font-size:13px;font-weight:500;cursor:pointer;text-align:center;transition:border-color .12s,background .12s}.ga-route-btn:hover{border-color:var(--semi-color-primary, #3370ff);background:color-mix(in srgb,var(--semi-color-primary, #3370ff) 4%,transparent)}.ga-route-btn--active{border-color:var(--semi-color-primary, #3370ff);background:color-mix(in srgb,var(--semi-color-primary, #3370ff) 8%,transparent);color:var(--semi-color-primary, #3370ff)}.ga-provider-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}.ga-provider-card{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--semi-color-border, #e0e0e0);border-radius:8px;background:var(--semi-color-bg-0, #fff);cursor:pointer;transition:border-color .12s,box-shadow .12s;width:100%;text-align:left}.ga-provider-card:hover{border-color:var(--provider-color, var(--semi-color-primary));box-shadow:0 2px 8px color-mix(in srgb,var(--provider-color, #3370ff) 12%,transparent)}.ga-provider-card-icon{flex-shrink:0}.ga-provider-card-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.ga-provider-card-label{font-size:13px;font-weight:600;color:var(--semi-color-text-0, #1c1f23)}.ga-provider-card-desc{font-size:11px;color:var(--semi-color-text-2, #4e5969)}.ga-provider-card-caret{font-size:16px;color:var(--semi-color-text-3, #8f959e);flex-shrink:0}.ga-form-row{display:flex;gap:12px}.ga-form-row>.ga-form-field{flex:1;min-width:0}.ga-form-advanced-toggle{display:flex;align-items:center;gap:4px;padding:0;border:none;background:none;font-size:12px;color:var(--semi-color-text-2, #4e5969);cursor:pointer;margin-top:4px}.ga-form-advanced-toggle:hover{color:var(--semi-color-text-0, #1c1f23)}.ga-form-advanced-toggle svg{transition:transform .15s}.ga-form-advanced-toggle[data-expanded] svg{transform:rotate(90deg)}.ga-form-advanced-body{margin-top:12px}.ga-form-back{display:inline-flex;align-items:center;gap:4px;padding:0;border:none;background:none;font-size:12px;color:var(--semi-color-text-2, #4e5969);cursor:pointer;margin-bottom:12px}.ga-form-back:hover{color:var(--semi-color-primary, #3370ff)}.ga-form-key-link{font-size:11px;color:var(--semi-color-primary, #3370ff);text-decoration:none;margin-left:8px;font-weight:400}.ga-form-key-link:hover{text-decoration:underline}.ga-form-locked-hint{font-size:11px;color:var(--semi-color-text-3, #8f959e);margin-top:2px}.ga-help-feedback-section .ga-set-sec-heading{margin-bottom:6px}.ga-help-feedback-collapse .semi-collapse-header{margin:0;padding:10px 0}.ga-help-feedback-collapse .semi-collapse-content{padding:2px 0 12px}.ga-help-feedback-resource{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.ga-help-feedback-resource p{color:var(--semi-color-text-2, #646a73);font-size:14px;line-height:1.6}.ga-help-feedback-link{display:inline-flex;align-items:center;gap:4px;color:var(--semi-color-link, #3370ff);font-size:13px;font-weight:500;line-height:20px;text-decoration:none}.ga-help-feedback-link:hover{color:var(--semi-color-link-hover, #1c53c7);text-decoration:underline}.ga-help-feedback-link:focus-visible{border-radius:2px;outline:2px solid var(--semi-color-primary-light-active, #94bfff);outline-offset:2px}.ga-help-feedback-description{margin:0 0 8px;color:var(--semi-color-text-2, #646a73);font-size:14px;line-height:1.6;overflow-wrap:anywhere}.ga-help-feedback-list{display:flex;flex-direction:column;gap:6px}.ga-help-feedback-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:6px 8px;border-radius:6px;background:var(--semi-color-fill-0, #f5f5f5)}.ga-help-feedback-contact{display:flex;align-items:center;gap:8px;min-width:0}.ga-help-feedback-wechat-icon{width:18px;height:18px;flex-shrink:0;fill:#07c160}.ga-help-feedback-id{min-width:0;color:var(--semi-color-text-0, #1c1f23);font-family:var(--font-mono, ui-monospace, SFMono-Regular, monospace);font-size:14px;overflow-wrap:anywhere}.ga-help-feedback-row .semi-button{flex-shrink:0} diff --git a/frontends/desktop/dist/assets/main-j7e_THPB.js b/frontends/desktop/dist/assets/main-j7e_THPB.js deleted file mode 100644 index c48550d9..00000000 --- a/frontends/desktop/dist/assets/main-j7e_THPB.js +++ /dev/null @@ -1,36 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownPart-ZJKeOipX.js","assets/tauri-compat-D_GD_wMe.js","assets/tauri-compat-BTcpEvqB.css","assets/markdown-preprocess-Cc2i34eF.js","assets/markdown-preprocess-Cp579UoJ.css","assets/index-9FI8Jlf5.js","assets/index-D0pGtk0y.css","assets/WindowsTitlebar-Byi-SYR_.js","assets/WindowsTitlebar-U0YG9JNA.css","assets/MarkdownPart-Cp90Gu77.css","assets/SummaryPart-zs-In9mf.js","assets/ServicesPage-9DKyWUIu.js","assets/index-BkPDmlaQ.js","assets/index-D9Nakaf3.js","assets/index-DkG9Cu-r.css","assets/index-gTPS8Hpa.css","assets/IconFile-C8B3WX2U.js","assets/ServicesPage-Cbm5nbW7.css","assets/TokenPage-8X0HZ3hU.js","assets/Animation-DbFrgT1j.js","assets/index-C-iCGtYr.js","assets/index-ClU1uQYs.css","assets/TokenPage-DwLDOw_j.css","assets/CollabPage-DD4zkzQv.js","assets/CollabPage-CG38jm3S.css"])))=>i.map(i=>d[i]); -var Mi=Object.defineProperty;var Li=(n,e,t)=>e in n?Mi(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var bt=(n,e,t)=>Li(n,typeof e!="symbol"?e+"":e,t);import{g as We,r as Ii,a as Ti,c as be,b as a,d as Ds,e as As,B as Re,_ as Be,f as ve,h as A,i as De,j as Ri,E as Ni,R as g,k as me,l as I,m as Ge,n as zs,P as h,w as Fs,o as So,p as Je,q as nn,s as an,t as To,u as $i,v as Di,x as Ai,y as zi,z as Fi,A as Bi,C as Ui,D as Vi,F as Ki,G as Wi,H as Bs,I as Hi,T as Ro,J as on,K as Zi,L as qi,M as Gi,N as Et,O as Us,Q as Vs,S as Ks,U as Ws,V as Qi,W as Hs,X as Zs,Y as ko,Z as Yi,$ as Xi,a0 as Ji,a1 as ea,a2 as ta,a3 as na,a4 as oa,a5 as ra,a6 as sa,a7 as ia,a8 as aa,a9 as la,aa as Zo,ab as Ae,ac as ca,ad as da,ae as Yt,af as ua,ag as pa,ah as jo,ai as ye,aj as i,ak as qs,al as ha,am as ma,an as fa,ao as qo,ap as ct,aq as ga,ar as ya,as as ba,at as va}from"./tauri-compat-D_GD_wMe.js";import{I as ln,a as Gs,b as Qs,c as Ys,B as de}from"./index-9FI8Jlf5.js";import{W as xa}from"./WindowsTitlebar-Byi-SYR_.js";const wa="modulepreload",Ca=function(n){return"/"+n},Go={},Zt=function(e,t,o){let r=Promise.resolve();if(t&&t.length>0){let l=function(p){return Promise.all(p.map(d=>Promise.resolve(d).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),u=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));r=l(t.map(p=>{if(p=Ca(p),p in Go)return;Go[p]=!0;const d=p.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${m}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":wa,d||(f.as="script"),f.crossOrigin="",f.href=p,u&&f.setAttribute("nonce",u),document.head.appendChild(f),d)return new Promise((y,b)=>{f.addEventListener("load",y),f.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${p}`)))})}))}function s(l){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l}return r.then(l=>{for(const c of l||[])c.status==="rejected"&&s(c.reason);return e().catch(s)})};function Qo(n,e){const t=e,o=new URL(t);if(o.protocol!=="http:"&&o.protocol!=="https:")throw new Error(`Service endpoint must use HTTP(S): ${t}`);return o.toString().replace(/\/+$/,"")}function Yo(n){const e=new URL(n);return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.pathname=`${e.pathname.replace(/\/+$/,"")}/ws`,e.toString().replace(/\/$/,"")}function Sa(n){const e=Qo(n.VITE_BRIDGE_BASE,"http://127.0.0.1:14168"),t=Qo(n.VITE_CONDUCTOR_BASE,"http://127.0.0.1:8900");return{bridgeBase:e,conductorBase:t,wsUrl:Yo(e),conductorWsUrl:Yo(t)}}const cn=Sa({VITE_BRIDGE_BASE:void 0,VITE_CONDUCTOR_BASE:void 0}),ne=cn.bridgeBase,ka=cn.conductorBase,ja=cn.wsUrl,Ea=cn.conductorWsUrl,Oa=1e3,Pa=3e4;let je=null,Eo=0,Sn=null;const St=new Map;let Oo="offline";const Po=new Set;let Xo=!1;const _a=new Set;function kn(n){n!==Oo&&(Oo=n,n==="ready"&&(Xo||(Xo=!0,_a.forEach(e=>e()))),Po.forEach(e=>e(n)))}function Jo(){return Oo}function Xs(n){return Po.add(n),()=>{Po.delete(n)}}function Js(){if(!(je&&(je.readyState===WebSocket.OPEN||je.readyState===WebSocket.CONNECTING))){kn("connecting");try{je=new WebSocket(ja)}catch{er();return}je.onopen=()=>{Eo=0,kn("ready")},je.onmessage=n=>{try{const e=JSON.parse(n.data),t=e.type;if(!t)return;const o=St.get(t);o&&o.forEach(r=>r(e))}catch{}},je.onclose=()=>{je=null,kn("connecting"),er()},je.onerror=()=>{je==null||je.close()}}}function er(){if(Sn)return;const n=Math.min(Oa*2**Eo,Pa);Eo++,Sn=setTimeout(()=>{Sn=null,Js()},n)}function Ve(n,e){return St.has(n)||St.set(n,new Set),St.get(n).add(e),Js(),()=>{var t;(t=St.get(n))==null||t.delete(e)}}let tr=[];const Ma=new Set;let nr=!1;function La(){for(const n of Ma)n()}function jn(n){tr=[...tr.slice(-39),n],La()}function Ia(){nr||(nr=!0,Ve("session-state",n=>{const e=n;if(!e.sessionId||!e.status)return;const t=e.status==="running"?"Turn started":e.status==="idle"?"Turn complete":e.status==="error"?"Turn error":`Session ${e.status}`;jn(t)}),Ve("service.changed",n=>{const e=n;if(!e.service)return;const t=e.service.name??e.service.id??"service",o=e.service.status??"unknown";jn(`${t}: ${o}`)}),Ve("token.changed",n=>{const e=n;!e.session_id||!e.total_output||jn(`Token update: +${e.total_output} output`)}))}Ia();const ei=new Set(["http:","https:"]),Ta=new Set(["\\href","\\url"]),Ra=/^data:image\/(?:avif|gif|jpeg|png|webp);base64,[a-z0-9+/]+={0,2}$/i,Na=/^(?:\/|\.\/)?assets\//,$a=/%(?:2e|2f|5c)/i,ti=/[\u0000-\u001f\u007f]/;function No(n){const e=n.trim();if(!/^https?:\/\//i.test(e)||ti.test(e))return null;try{const t=new URL(e);return ei.has(t.protocol)?t.href:null}catch{return null}}function Da(n){if(!Na.test(n)||n.startsWith("//")||n.includes("\\")||$a.test(n))return null;try{const e=new URL(n,"https://genericagent.invalid/");return e.origin==="https://genericagent.invalid"&&e.pathname.startsWith("/assets/")?n:null}catch{return null}}function Aa(n){const e=n.trim();if(!e||ti.test(e))return null;if(Ra.test(e))return e;if(/^blob:/i.test(e))try{return new URL(e).protocol==="blob:"?e:null}catch{return null}if(/^asset:/i.test(e))try{const t=new URL(e);return t.protocol==="asset:"&&(t.hostname===""||t.hostname==="localhost")&&!t.username&&!t.password?e:null}catch{return null}if(/^https?:\/\/asset\.localhost(?:\/|$)/i.test(e))try{const t=new URL(e);return t.hostname==="asset.localhost"&&ei.has(t.protocol)?t.href:null}catch{return null}return Da(e)}const Om=(n,e,t)=>{if(e==="href")return No(n)??void 0;if(e==="src"&&t.tagName==="img")return Aa(n)??void 0};function za(n){return!Ta.has(n.command)||!("url"in n)?!1:No(n.url)!==null}const Pm={strict:"ignore",trust:za};function Fa(n,e){const t=n.target;if(!(t instanceof Element))return;const o=t.closest("[href]");if(!o)return;const r=No(o.getAttribute("href")??"");if(!r){n.preventDefault();return}const s=new URL(r);if(!(!e||s.origin===location.origin)){n.preventDefault();try{Promise.resolve(e(r)).catch(l=>{console.error("[external-link] opener failed:",l)})}catch(l){console.error("[external-link] opener failed:",l)}}}var Ba=Ii();const _o=We(Ba);var Ua=Ti();const _m=We(Ua);function Va(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7 2.8a1 1 0 0 1 0 1.4l-3 3a1 1 0 0 1-1.4 0L1.8 5.7a1 1 0 0 1 1.4-1.4l.8.79 2.3-2.3a1 1 0 0 1 1.4 0Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7 9.8a1 1 0 0 1 0 1.4l-3 3a1 1 0 0 1-1.4 0l-1.5-1.5a1 1 0 1 1 1.4-1.4l.8.79 2.3-2.3a1 1 0 0 1 1.4 0Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7 16.8a1 1 0 0 1 0 1.4l-3 3a1 1 0 0 1-1.4 0l-1.5-1.5a1 1 0 1 1 1.4-1.4l.8.79 2.3-2.3a1 1 0 0 1 1.4 0Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.5 12a1 1 0 0 1 1-1h11a1 1 0 1 1 0 2h-11a1 1 0 0 1-1-1Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.5 19a1 1 0 0 1 1-1h11a1 1 0 1 1 0 2h-11a1 1 0 0 1-1-1Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.5 5a1 1 0 0 1 1-1h11a1 1 0 1 1 0 2h-11a1 1 0 0 1-1-1Z",fill:"currentColor"}))}const Ka=be(Va,"checklist_stroked");function Wa(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm5.04-6.14a1.5 1.5 0 0 1-2.13.04l-2.87-2.78L9.26 17A1.5 1.5 0 0 1 7.1 14.9l2.78-2.87L7 9.26A1.5 1.5 0 1 1 9.1 7.1l2.87 2.78L14.74 7A1.5 1.5 0 0 1 16.9 9.1l-2.78 2.87L17 14.74c.6.58.61 1.53.04 2.12Z",fill:"currentColor"}))}const Ha=be(Wa,"clear");function Za(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21 2a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0V5.41l-9.3 9.3a1 1 0 0 1-1.4-1.42L18.58 4H15a1 1 0 1 1 0-2h6ZM2 5a1 1 0 0 1 1-1h8a1 1 0 1 1 0 2H4v14h14v-7a1 1 0 1 1 2 0v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5Z",fill:"currentColor"}))}const qa=be(Za,"external_open_stroked");function Ga(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21.7 3.7a1 1 0 0 0-1.4-1.4L17.3 5.26A11.59 11.59 0 0 0 12 4C5 4 1 10 1 12c0 1.18 1.38 3.73 3.94 5.64L2.3 20.3a1 1 0 1 0 1.42 1.42l18-18ZM7.84 14.77l1.46-1.47a3 3 0 0 1 4-4l1.47-1.46a5 5 0 0 0-6.93 6.93Z",fill:"currentColor"}),a.createElement("path",{d:"M12 20c-1.22 0-2.35-.18-3.38-.5l2.57-2.57a5 5 0 0 0 5.75-5.75l3.56-3.56C22.13 9.27 23 11.07 23 12c0 2-4 8-11 8Z",fill:"currentColor"}))}const Qa=be(Ga,"eye_closed_solid");function Ya(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 4C5 4 1 10 1 12s4 8 11 8 11-6 11-8-4-8-11-8Zm5 8a5 5 0 1 1-10 0 5 5 0 0 1 10 0Zm-5 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",fill:"currentColor"}))}const Xa=be(Ya,"eye_opened");function Ja(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{d:"M8 1c2.5 0 3.19.3 4.15.68L13 2c1.5.5 3 1 5 1 .89 0 1.78-.2 2.5-.42.7-.22 1.5.3 1.5 1.04v10.76c0 .38-.21.73-.56.87l-.3.12c-.78.28-1.96.63-3.14.63-2 0-3.5-.5-5-1-.31-.1-.58-.2-.84-.3-.98-.39-1.79-.7-4.16-.7-1.27 0-3.27.3-4 .5V21a1 1 0 0 1-.84.99h-.04a1 1 0 0 1-.24 0h-.04A1 1 0 0 1 2 21V3.58c0-.36.2-.69.51-.85C3.57 2.18 6.08 1 8 1Zm0 2c-.61 0-1.46.2-2.38.54-.6.22-1.17.47-1.62.68v8.37l.46-.13C5.36 12.21 6.54 12 8 12c1.27 0 2.2.08 3 .24.8.17 1.39.4 1.88.59l.75.27c1.5.5 2.73.9 4.37.9.68 0 1.4-.17 2-.36V4.78c-.61.13-1.3.22-2 .22-2.36 0-4.13-.6-5.63-1.1l-.95-.35c-.5-.2-.76-.3-1.17-.39a8.82 8.82 0 0 0-1.46-.15L8 3Z",fill:"currentColor"}))}const el=be(Ja,"flag_stroked");function tl(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{d:"M9 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",fill:"currentColor"}),a.createElement("path",{d:"M9 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",fill:"currentColor"}),a.createElement("path",{d:"M11 19a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",fill:"currentColor"}),a.createElement("path",{d:"M15 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",fill:"currentColor"}),a.createElement("path",{d:"M17 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",fill:"currentColor"}),a.createElement("path",{d:"M15 21a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",fill:"currentColor"}))}const nl=be(tl,"handle");function ol(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm-.17-8.4c-.86 0-1.3-.53-1.3-1.23 0-1.05.53-1.72 1.74-2.64l.06-.05c.83-.62 1.4-1.06 1.4-1.85 0-.9-.83-1.4-1.76-1.4-.76 0-1.34.28-1.8.87-.33.34-.6.53-1.05.53C8.38 8.83 8 8.3 8 7.7c0-.6.34-1.22.88-1.68A5.15 5.15 0 0 1 12.28 5c2.71 0 4.62 1.34 4.62 3.64 0 1.68-1 2.5-2.2 3.31-.8.59-1.17.93-1.48 1.62-.33.6-.58 1.04-1.4 1.04Zm-.02 4.17c-.94 0-1.71-.6-1.71-1.54 0-.94.77-1.55 1.7-1.55.95 0 1.7.6 1.7 1.55 0 .93-.75 1.54-1.7 1.54Z",fill:"currentColor"}))}const rl=be(ol,"help_circle");function sl(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.22 4.22a10.97 10.97 0 0 1 15.56 0l-.7.7.7-.7a10.97 10.97 0 0 1 0 15.56 10.97 10.97 0 0 1-15.56 0l.7-.7-.7.7a10.97 10.97 0 0 1 0-15.56ZM12 3a8.97 8.97 0 0 0-9 9 8.97 8.97 0 0 0 9 9 8.97 8.97 0 0 0 9-9 8.97 8.97 0 0 0-9-9Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 9.31a4 4 0 1 1 5 3.88v1.12a1 1 0 1 1-2 0v-2a1 1 0 0 1 1-1 2 2 0 1 0-2-2 1 1 0 0 1-2 0Z",fill:"currentColor"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.81a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z",fill:"currentColor"}))}const il=be(sl,"help_circle_stroked");function al(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.1 10.58c.06 0 .1.05.1.12l-1.1 6.36 7.02-7.11h-3.07a.1.1 0 0 1-.1-.15l3.5-6.8H9.71l-3.5 7.58h3.88ZM8.3 1.29A.5.5 0 0 1 8.76 1H18.9c.37 0 .61.4.44.73l-3.18 6.22h3.55a.5.5 0 0 1 .36.85L7.18 21.87a.5.5 0 0 1-.85-.44l1.51-8.85H3.88a.5.5 0 0 1-.46-.71L8.3 1.29Z",fill:"currentColor"}))}const ll=be(al,"lightning_stroked");function cl(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("circle",{cx:12,cy:12,r:5,fill:"currentColor"}))}const dl=be(cl,"radio");function ul(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.5 12a7.5 7.5 0 0 1 13.8-4.07l-2-.4a1.5 1.5 0 0 0-.6 2.94l5 1c.76.15 1.51-.3 1.74-1.04l1.5-5a1.5 1.5 0 1 0-2.88-.86l-.43 1.45A10.49 10.49 0 0 0 1.5 12a10.5 10.5 0 0 0 20.4 3.5 1.5 1.5 0 1 0-2.83-1A7.5 7.5 0 0 1 4.5 12Z",fill:"currentColor"}))}const pl=be(ul,"refresh");function hl(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16 10a6 6 0 1 1-12 0 6 6 0 0 1 12 0Zm-1.1 6.32a8 8 0 1 1 1.41-1.41l5.4 5.38a1 1 0 0 1-1.42 1.42l-5.38-5.39Z",fill:"currentColor"}))}const ni=be(hl,"search_stroked");function ml(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14 5.5a3.5 3.5 0 1 1 1 2.45l-5.13 3.11a3.5 3.5 0 0 1 .03 1.79l5.22 3.08A3.49 3.49 0 0 1 21 18.5a3.5 3.5 0 1 1-6.9-.85l-5.22-3.08A3.49 3.49 0 0 1 3 12a3.5 3.5 0 0 1 5.8-2.63l5.27-3.19A3.51 3.51 0 0 1 14 5.5ZM17.5 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm-11 6.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm9.5 8a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z",fill:"currentColor"}))}const fl=be(ml,"share_stroked");function gl(n){return a.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{d:"m3 4.13 9-1.63 9 1.63v5.39c0 5.66-3.62 10.69-9 12.48-5.37-1.8-9-6.82-9-12.49V4.13Z",stroke:"currentColor",strokeWidth:2,strokeLinejoin:"round"}),a.createElement("path",{d:"M11.97 7.47v8",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}),a.createElement("path",{d:"M7.97 11.47h8",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"}))}const yl=be(gl,"shield_stroked");var En,or;function oi(){if(or)return En;or=1;var n=Ds(),e=As(),t="[object Number]";function o(r){return typeof r=="number"||e(r)&&n(r)==t}return En=o,En}var bl=oi();const Mo=We(bl),ri={PREFIX:`${Re}-input`},qt={SIZE:["small","large","default"],DEFAULT_SIZE:"default",STATUS:["default","error","warning","success"],CLEARBTN_CLICKED_EVENT_FLAG:"__fromClearBtn",MODE:["password"]},vl={};function xl(n){const{value:e,maxLength:t,getValueLength:o}=n;if(Be(o)){let r=0,s=e.length;for(;rt?s=l:r=l+1}return e.slice(0,r)}else return e.slice(0,t)}class $o extends ve{static get inputDefaultAdapter(){return{notifyChange:A,setValue:A}}constructor(e){super(Object.assign(Object.assign({},$o.inputDefaultAdapter),e)),this.compositionEnter=!1,this.getNextValue=t=>{const{maxLength:o,minLength:r,getValueLength:s}=this._adapter.getProps();return Be(s)?o?this.handleVisibleMaxLength(t):(r&&this.handleVisibleMinLength(t),t):t},this.changeInput=(t,o)=>{this._isControlledComponent()?this._adapter.notifyChange(t,o):(this._adapter.setValue(t),this._adapter.notifyChange(t,o))},this.handleCompositionStart=t=>{this.compositionEnter=!0,this._adapter.notifyCompositionStart(t)},this.handleCompositionEnd=t=>{const{composition:o}=this._adapter.getProps(),r=t.target.value;if(this.compositionEnter=!1,this._adapter.notifyCompositionEnd(t),o){const u=this.getNextValue(r);this.changeInput(u,t);return}const{getValueLength:s,maxLength:l,minLength:c}=this.getProps();if(Be(s)){if(l){const u=this.handleVisibleMaxLength(r);u!==r&&this.changeInput(u,t)}c&&this.handleVisibleMinLength(r)}},this.handleCompositionUpdate=t=>{this._adapter.notifyCompositionUpdate(t)}}destroy(){this._timer&&(clearTimeout(this._timer),this._timer=null)}setDisable(){}setValue(e){this._adapter.setValue(e)}handleChange(e,t){const{composition:o}=this._adapter.getProps();let r=e;if(o&&this.compositionEnter){this._adapter.setValue(r);return}this.compositionEnter||(r=this.getNextValue(r)),this.changeInput(r,t)}handleVisibleMinLength(e){const{minLength:t,getValueLength:o}=this._adapter.getProps(),{minLength:r}=this._adapter.getStates();if(Mo(t)&&t>=0&&Be(o)&&De(e)){const s=o(e);if(s=0&&Be(o)&&De(e)&&o(e)>t?(console.warn("[Semi Input] The input character is truncated because the input length exceeds the maximum length limit"),this.handleTruncateValue(e,t)):e}handleTruncateValue(e,t){const{getValueLength:o}=this._adapter.getProps();return xl({value:e,maxLength:t,getValueLength:o})}handleClear(e){let t=e;const o="";this._isControlledComponent("value")?this._adapter.setState({isFocus:!1}):this._adapter.setState({value:"",isFocus:!1}),(!t||typeof t!="object")&&(t={}),Ri(t,qt.CLEARBTN_CLICKED_EVENT_FLAG,!0),this._adapter.notifyChange(o,t),this._adapter.notifyClear(t),t&&this.stopPropagation(t)}handleClick(e){const{disabled:t}=this._adapter.getProps(),{isFocus:o}=this._adapter.getStates();t||o||this._adapter.isEventTarget(e)&&(this._adapter.focusInput(),this._adapter.toggleFocusing(!0))}handleModeChange(e){e==="password"?this._adapter.setEyeClosed(!0):this._adapter.setEyeClosed(!1)}handleClickEye(e){const t=this._adapter.getState("eyeClosed");this._adapter.focusInput(),this._adapter.toggleFocusing(!0),this._adapter.setEyeClosed(!t)}handleInputType(e){const t=this._adapter.getProp("mode"),o=this._adapter.getState("eyeClosed");return t==="password"?o?"password":"text":e}handleMouseDown(e){e.preventDefault()}handleMouseUp(e){e.preventDefault()}handleBlur(e){const{value:t}=this.getStates();this._adapter.toggleFocusing(!1),this._adapter.notifyBlur(t,e)}handleFocus(e){const{value:t}=this.getStates();this._adapter.toggleFocusing(!0),this._adapter.notifyFocus(t,e)}handleInput(e){this._adapter.notifyInput(e)}handleKeyDown(e){this._adapter.notifyKeyDown(e)}handleKeyUp(e){this._adapter.notifyKeyUp(e)}handleKeyPress(e){this._adapter.notifyKeyPress(e),e.key===Ni&&this._adapter.notifyEnterPress(e)}isAllowClear(){const{value:e,isFocus:t,isHovering:o}=this._adapter.getStates(),{showClear:r,disabled:s,showClearIgnoreDisabled:l}=this._adapter.getProps();return e&&r&&(!s||l)&&(t||o)}handleClickPrefixOrSuffix(e){const{disabled:t}=this._adapter.getProps(),{isFocus:o}=this._adapter.getStates();!t&&!o&&(this._adapter.focusInput(),this._adapter.toggleFocusing(!0))}handlePreventMouseDown(e){e&&Be(e.preventDefault)&&e.preventDefault()}handleModeEnterPress(e){["Enter"," "].includes(e==null?void 0:e.key)&&(this.handlePreventMouseDown(e),this.handleClickEye(e))}}var wl=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{this.foundation.handleClear(o)},this.handleClick=o=>{this.foundation.handleClick(o)},this.handleMouseOver=o=>{this.setState({isHovering:!0})},this.handleMouseLeave=o=>{this.setState({isHovering:!1})},this.handleModeChange=o=>{this.foundation.handleModeChange(o)},this.handleClickEye=o=>{this.foundation.handleClickEye(o)},this.handleMouseDown=o=>{this.foundation.handleMouseDown(o)},this.handleMouseUp=o=>{this.foundation.handleMouseUp(o)},this.handleModeEnterPress=o=>{this.foundation.handleModeEnterPress(o)},this.handleClickPrefixOrSuffix=o=>{this.foundation.handleClickPrefixOrSuffix(o)},this.handlePreventMouseDown=o=>{this.foundation.handlePreventMouseDown(o)};const t="value"in e?e.value:e.defaultValue;this.state={value:t,cachedValue:e.value,disabled:!1,props:{},isFocus:!1,isHovering:!1,eyeClosed:e.mode==="password",minLength:e.minLength},this.inputRef=g.createRef(),this.prefixRef=g.createRef(),this.suffixRef=g.createRef(),this.foundation=new $o(this.adapter)}get adapter(){return Object.assign(Object.assign({},super.adapter),{setValue:e=>this.setState({value:e}),setEyeClosed:e=>this.setState({eyeClosed:e}),toggleFocusing:e=>{this.setState({isFocus:e})},focusInput:()=>{const{preventScroll:e}=this.props,t=this.inputRef&&this.inputRef.current;t&&t.focus({preventScroll:e})},toggleHovering:e=>this.setState({isHovering:e}),getIfFocusing:()=>this.state.isFocus,notifyChange:(e,t)=>this.props.onChange(e,t),notifyBlur:(e,t)=>this.props.onBlur(t),notifyFocus:(e,t)=>this.props.onFocus(t),notifyInput:e=>this.props.onInput(e),notifyKeyPress:e=>this.props.onKeyPress(e),notifyKeyDown:e=>this.props.onKeyDown(e),notifyKeyUp:e=>this.props.onKeyUp(e),notifyEnterPress:e=>this.props.onEnterPress(e),notifyClear:e=>this.props.onClear(e),notifyCompositionStart:e=>this.props.onCompositionStart(e),notifyCompositionEnd:e=>this.props.onCompositionEnd(e),notifyCompositionUpdate:e=>this.props.onCompositionUpdate(e),setMinLength:e=>this.setState({minLength:e}),isEventTarget:e=>e&&e.target===e.currentTarget})}static getDerivedStateFromProps(e,t){const o={};return e.value!==t.cachedValue&&(o.value=e.value,o.cachedValue=e.value),o}componentDidUpdate(e){const{mode:t}=this.props;e.mode!==t&&this.handleModeChange(t)}componentDidMount(){const{disabled:e,autoFocus:t,preventScroll:o}=this.props;!e&&(t||this.props.autofocus)&&this.inputRef.current.focus({preventScroll:o})}renderPrepend(){const{addonBefore:e}=this.props;if(e){const t=I({[`${K}-prepend`]:!0,[`${K}-prepend-text`]:e&&De(e),[`${K}-prepend-icon`]:Ge(e)});return g.createElement("div",{className:t,"x-semi-prop":"addonBefore"},e)}return null}renderAppend(){const{addonAfter:e}=this.props;if(e){const t=I({[`${K}-append`]:!0,[`${K}-append-text`]:e&&De(e),[`${K}-append-icon`]:Ge(e)});return g.createElement("div",{className:t,"x-semi-prop":"addonAfter"},e)}return null}renderClearBtn(){const e=I(`${K}-clearbtn`),{clearIcon:t}=this.props;return this.foundation.isAllowClear()?g.createElement("div",{className:e,onMouseDown:this.handleClear},t||g.createElement(Ha,null)):null}renderModeBtn(){const{eyeClosed:e}=this.state,{mode:t,disabled:o}=this.props,r=I(`${K}-modebtn`),s=e?g.createElement(Qa,null):g.createElement(Xa,null),l=t==="password"&&!o,c=e?"Show password":"Hidden password";return l?g.createElement("div",{role:"button",tabIndex:0,"aria-label":c,className:r,onClick:this.handleClickEye,onMouseDown:this.handleMouseDown,onMouseUp:this.handleMouseUp,onKeyPress:this.handleModeEnterPress},s):null}renderPrefix(){const{prefix:e,insetLabel:t,insetLabelId:o}=this.props,r=e||t;if(!r)return null;const s=I({[`${K}-prefix`]:!0,[`${K}-inset-label`]:t,[`${K}-prefix-text`]:r&&De(r),[`${K}-prefix-icon`]:Ge(r)});return g.createElement("div",{className:s,onMouseDown:this.handlePreventMouseDown,onClick:this.handleClickPrefixOrSuffix,id:o,"x-semi-prop":"prefix,insetLabel"},r)}renderSuffix(e){const{suffix:t,hideSuffix:o}=this.props;if(!t)return null;const r=I({[`${K}-suffix`]:!0,[`${K}-suffix-text`]:t&&De(t),[`${K}-suffix-icon`]:Ge(t),[`${K}-suffix-hidden`]:e&&!!o});return g.createElement("div",{className:r,onMouseDown:this.handlePreventMouseDown,onClick:this.handleClickPrefixOrSuffix,"x-semi-prop":"suffix"},t)}getInputRef(){const{forwardRef:e}=this.props;if(!zs(e)){if(typeof e=="function")return t=>{e(t),this.inputRef={current:t}};if(Object.prototype.toString.call(e)==="[object Object]")return this.inputRef=e,e}return this.inputRef}render(){const e=this.props,{addonAfter:t,addonBefore:o,autoFocus:r,clearIcon:s,className:l,disabled:c,defaultValue:u,placeholder:p,prefix:d,mode:m,insetLabel:f,insetLabelId:y,validateStatus:b,type:x,readonly:C,size:S,suffix:k,style:_,showClear:v,onEnterPress:j,onClear:w,hideSuffix:E,inputStyle:O,forwardRef:D,maxLength:P,getValueLength:N,preventScroll:L,borderless:B,showClearIgnoreDisabled:Q,onlyBorder:z,composition:M}=e,Y=wl(e,["addonAfter","addonBefore","autoFocus","clearIcon","className","disabled","defaultValue","placeholder","prefix","mode","insetLabel","insetLabelId","validateStatus","type","readonly","size","suffix","style","showClear","onEnterPress","onClear","hideSuffix","inputStyle","forwardRef","maxLength","getValueLength","preventScroll","borderless","showClearIgnoreDisabled","onlyBorder","composition"]),{value:fe,isFocus:Se,minLength:T}=this.state,F=this.foundation.isAllowClear(),J=Ge(k),ce=this.getInputRef(),ie=`${K}-wrapper`,ke=I(ie,l,{[`${K}-wrapper__with-prefix`]:d||f,[`${K}-wrapper__with-suffix`]:k,[`${K}-wrapper__with-suffix-hidden`]:F&&!!E,[`${K}-wrapper__with-suffix-icon`]:J,[`${K}-wrapper__with-append`]:o,[`${K}-wrapper__with-prepend`]:t,[`${K}-wrapper__with-append-only`]:o&&!t,[`${K}-wrapper__with-prepend-only`]:!o&&t,[`${ie}-readonly`]:C,[`${ie}-disabled`]:c,[`${ie}-warning`]:b==="warning",[`${ie}-error`]:b==="error",[`${ie}-focus`]:Se,[`${ie}-clearable`]:v,[`${ie}-modebtn`]:m==="password",[`${ie}-hidden`]:x==="hidden",[`${ie}-${S}`]:S,[`${K}-borderless`]:B,[`${K}-only_border`]:z!=null}),ge=I(K,{[`${K}-${S}`]:S,[`${K}-disabled`]:c,[`${K}-sibling-clearbtn`]:this.foundation.isAllowClear(),[`${K}-sibling-modebtn`]:m==="password"}),$=fe??"",V=Object.assign(Object.assign({},Y),{style:O,className:ge,disabled:c,readOnly:C,type:this.foundation.handleInputType(x),placeholder:p,onInput:R=>this.foundation.handleInput(R),onChange:R=>this.foundation.handleChange(R.target.value,R),onFocus:R=>this.foundation.handleFocus(R),onBlur:R=>this.foundation.handleBlur(R),onKeyUp:R=>this.foundation.handleKeyUp(R),onKeyDown:R=>this.foundation.handleKeyDown(R),onKeyPress:R=>this.foundation.handleKeyPress(R),onCompositionStart:this.foundation.handleCompositionStart,onCompositionEnd:this.foundation.handleCompositionEnd,onCompositionUpdate:this.foundation.handleCompositionUpdate,value:$});Be(N)||(V.maxLength=P),T&&(V.minLength=T),b==="error"&&(V["aria-invalid"]="true");let q=Object.assign({},_);return z!==void 0&&(q=Object.assign({borderWidth:z},_)),g.createElement("div",{className:ke,style:q,onMouseEnter:R=>this.handleMouseOver(R),onMouseLeave:R=>this.handleMouseLeave(R),onClick:R=>this.handleClick(R)},this.renderPrepend(),this.renderPrefix(),g.createElement("input",Object.assign({},V,{ref:ce})),this.renderClearBtn(),this.renderSuffix(F),this.renderModeBtn(),this.renderAppend())}}Do.propTypes={"aria-label":h.string,"aria-labelledby":h.string,"aria-invalid":h.bool,"aria-errormessage":h.string,"aria-describedby":h.string,"aria-required":h.bool,addonBefore:h.node,addonAfter:h.node,clearIcon:h.node,prefix:h.node,suffix:h.node,mode:h.oneOf(kl),value:h.any,defaultValue:h.any,disabled:h.bool,readonly:h.bool,autoFocus:h.bool,type:h.string,showClear:h.bool,hideSuffix:h.bool,placeholder:h.any,size:h.oneOf(Cl),className:h.string,style:h.object,validateStatus:h.oneOf(Sl),onClear:h.func,onChange:h.func,onBlur:h.func,onFocus:h.func,onInput:h.func,onKeyDown:h.func,onKeyUp:h.func,onKeyPress:h.func,onEnterPress:h.func,onCompositionStart:h.func,onCompositionEnd:h.func,onCompositionUpdate:h.func,insetLabel:h.node,insetLabelId:h.string,inputStyle:h.object,getValueLength:h.func,preventScroll:h.bool,borderless:h.bool,composition:h.bool};Do.defaultProps={addonBefore:"",addonAfter:"",prefix:"",suffix:"",readonly:!1,type:"text",showClear:!1,hideSuffix:!1,placeholder:"",size:"default",className:"",onClear:A,onChange:A,onBlur:A,onFocus:A,onInput:A,onKeyDown:A,onKeyUp:A,onKeyPress:A,onEnterPress:A,onCompositionStart:A,onCompositionEnd:A,onCompositionUpdate:A,validateStatus:"default",borderless:!1,composition:!1};const dt=g.forwardRef((n,e)=>g.createElement(Do,Object.assign({},n,{forwardRef:e}))),jl={PREFIX:`${Re}-avatar`},dn={SHAPE:["circle","square"],SIZE:["extra-extra-small","extra-small","small","default","medium","large","extra-large"],COLOR:["grey","red","pink","purple","violet","indigo","blue","light-blue","cyan","teal","green","light-green","lime","yellow","amber","orange","white"]};class El extends ve{constructor(e){super(Object.assign({},e)),this.handleFocusVisible=t=>{const{target:o}=t;try{o.matches(":focus-visible")&&this._adapter.setFocusVisible(!0)}catch{Fs(!0,"Warning: [Semi Avatar] The current browser does not support the focus-visible")}},this.handleBlur=()=>{this._adapter.setFocusVisible(!1)},this.changeScale=()=>{const{gap:t}=this.getProps(),o=this._adapter.getAvatarNode(),r=o==null?void 0:o.firstChild,[s,l]=[(o==null?void 0:o.offsetWidth)||0,(r==null?void 0:r.offsetWidth)||0];if(s!==0&&l!==0&&t*2l?1:(s-t*2)/l;this._adapter.setScale(c)}}}init(){const{children:e}=this.getProps();typeof e=="string"&&this.changeScale()}destroy(){}handleImgLoadError(){const{onError:e}=this.getProps();(e?e():void 0)!==!1&&this._adapter.notifyImgState(!1)}handleEnter(e){this._adapter.notifyEnter(e)}handleLeave(e){this._adapter.notifyLeave(e)}}const Ol=n=>{let{gradientStart:e,gradientEnd:t}=n;const o=So();return g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"51",height:"52",viewBox:"0 0 51 52",fill:"none"},g.createElement("g",{filter:"url(#filter0_d_6_2)"},g.createElement("path",{d:"M40.4918 46.5592C44.6795 43.176 46.261 34.1333 47.5301 25.6141C49.5854 11.8168 39.6662 1 25.8097 1C11.2857 1 3 11.4279 3 25.3518C3 33.7866 6.29361 43.8947 10.4602 46.5592C12.5868 47.9192 12.5868 47.9051 25.8097 47.9192C38.3651 47.9282 38.5352 48.14 40.4918 46.5592Z",fill:`url(#${o})`})),g.createElement("defs",null,g.createElement("filter",{id:"filter0_d_6_2",x:"0.789215",y:"0.447304",width:"49.2216",height:"51.3549",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},g.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),g.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),g.createElement("feOffset",{dy:"1.65809"}),g.createElement("feGaussianBlur",{stdDeviation:"1.10539"}),g.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0"}),g.createElement("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_6_2"}),g.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"effect1_dropShadow_6_2",result:"shape"})),g.createElement("linearGradient",{id:o,x1:"17.671",y1:"31.7392",x2:"17.671",y2:"47.9333",gradientUnits:"userSpaceOnUse"},g.createElement("stop",{stopColor:e}),g.createElement("stop",{offset:"1",stopColor:t}))))};var Pl=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{this.foundation.handleFocusVisible(t)},this.handleBlur=t=>{this.foundation.handleBlur()},this.getContent=()=>{const{children:t,onClick:o,imgAttr:r,src:s,srcSet:l,alt:c}=this.props,{isImgExist:u}=this.state;let p=t;const d=o!==nn,m=s&&u,f={tabIndex:0,onKeyDown:this.handleKeyDown,onFocus:this.handleFocusVisible,onBlur:this.handleBlur};if(m){const y=d?`clickable Avatar: ${c}`:c,b=Object.assign(Object.assign({src:s,srcSet:l,onError:this.handleError},r),{className:I({[`${W}-no-focus-visible`]:d})}),x=d?Object.assign(Object.assign({},b),f):b;p=g.createElement("img",Object.assign({alt:y},x))}else if(typeof t=="string"){const y=c??t,x={role:"img","aria-label":d?`clickable Avatar: ${y}`:y,className:I(`${W}-label`,{[`${W}-no-focus-visible`]:d})},C=d?Object.assign(Object.assign({},x),f):x,S={transform:`scale(${this.state.scale})`};p=g.createElement("span",{className:`${W}-content`,style:S},g.createElement("span",Object.assign({},C,{"x-semi-prop":"children"}),t))}return p},this.renderBottomSlot=()=>{var t,o;if(!this.props.bottomSlot)return null;if(this.props.bottomSlot.render)return this.props.bottomSlot.render();const r=(t=this.props.bottomSlot.render)!==null&&t!==void 0?t:()=>{var s;const l={};return this.props.bottomSlot.bgColor&&(l.backgroundColor=this.props.bottomSlot.bgColor),this.props.bottomSlot.textColor&&(l.color=this.props.bottomSlot.textColor),g.createElement("span",{style:l,className:I(`${W}-bottom_slot-shape_${this.props.bottomSlot.shape}`,`${W}-bottom_slot-shape_${this.props.bottomSlot.shape}-${this.props.size}`,(s=this.props.bottomSlot.className)!==null&&s!==void 0?s:"")},this.props.bottomSlot.text)};return g.createElement("div",{className:I([`${W}-bottom_slot`]),style:(o=this.props.bottomSlot.style)!==null&&o!==void 0?o:{}},r())},this.renderTopSlot=()=>{var t,o,r,s;if(!this.props.topSlot)return null;if(this.props.topSlot.render)return this.props.topSlot.render();const l={};return this.props.topSlot.textColor&&(l.color=this.props.topSlot.textColor),g.createElement("div",{style:(t=this.props.topSlot.style)!==null&&t!==void 0?t:{},className:I([`${W}-top_slot-wrapper`,(o=this.props.topSlot.className)!==null&&o!==void 0?o:"",{[`${W}-animated`]:this.props.contentMotion}])},g.createElement("div",{className:I([`${W}-top_slot-bg`,`${W}-top_slot-bg-${this.props.size}`])},g.createElement("div",{className:I([`${W}-top_slot-bg-svg`,`${W}-top_slot-bg-svg-${this.props.size}`])},g.createElement(Ol,{gradientStart:(r=this.props.topSlot.gradientStart)!==null&&r!==void 0?r:"var(--semi-color-primary)",gradientEnd:(s=this.props.topSlot.gradientEnd)!==null&&s!==void 0?s:"var(--semi-color-primary)"}))),g.createElement("div",{className:I([`${W}-top_slot`])},g.createElement("div",{style:l,className:I([`${W}-top_slot-content`,`${W}-top_slot-content-${this.props.size}`])},this.props.topSlot.text)))},this.state={isImgExist:!0,hoverContent:"",focusVisible:!1,scale:1},this.onEnter=this.onEnter.bind(this),this.onLeave=this.onLeave.bind(this),this.handleError=this.handleError.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.getContent=this.getContent.bind(this),this.avatarRef=g.createRef()}get adapter(){return Object.assign(Object.assign({},super.adapter),{notifyImgState:e=>{this.setState({isImgExist:e})},notifyEnter:e=>{const{hoverMask:t}=this.props,o=t;this.setState({hoverContent:o},()=>{const{onMouseEnter:r}=this.props;r&&r(e)})},notifyLeave:e=>{this.setState({hoverContent:""},()=>{const{onMouseLeave:t}=this.props;t&&t(e)})},setFocusVisible:e=>{this.setState({focusVisible:e})},setScale:e=>{this.setState({scale:e})},getAvatarNode:()=>{var e;return(e=this.avatarRef)===null||e===void 0?void 0:e.current}})}componentDidMount(){this.foundation=new El(this.adapter),this.foundation.init()}componentDidUpdate(e){if(this.props.src&&this.props.src!==e.src){const t=new Image(0,0);t.src=this.props.src,t.onload=()=>{this.setState({isImgExist:!0})},t.onerror=()=>{this.setState({isImgExist:!1})},t.onabort=()=>{this.setState({isImgExist:!1})}}typeof this.props.children=="string"&&this.props.children!==e.children&&this.foundation.changeScale()}componentWillUnmount(){this.foundation.destroy()}onEnter(e){this.foundation.handleEnter(e)}onLeave(e){this.foundation.handleLeave(e)}handleError(){this.foundation.handleImgLoadError()}handleKeyDown(e){const{onClick:t}=this.props;switch(e.key){case"Enter":t(e),Je(e);break;case"Escape":e.target.blur();break}}render(){var e;const t=this.props,{shape:o,children:r,size:s,color:l,className:c,hoverMask:u,onClick:p,imgAttr:d,src:m,srcSet:f,style:y,alt:b,gap:x,bottomSlot:C,topSlot:S,border:k,contentMotion:_}=t,v=Pl(t,["shape","children","size","color","className","hoverMask","onClick","imgAttr","src","srcSet","style","alt","gap","bottomSlot","topSlot","border","contentMotion"]),{isImgExist:j,hoverContent:w,focusVisible:E}=this.state;let O={};dn.SIZE.includes(s)||(O={width:s,height:s}),O=Object.assign(Object.assign({},O),y);const D=C||S||k,P={onClick:p,onMouseEnter:this.onEnter,onMouseLeave:this.onLeave},N=m&&j,L=I(W,{[`${W}-${o}`]:o,[`${W}-${s}`]:s,[`${W}-${l}`]:l&&!N,[`${W}-img`]:N,[`${W}-focus`]:E,[`${W}-animated`]:_},c),B=w?g.createElement("div",{className:`${W}-hover`,"x-semi-prop":"hoverContent"},w):null;let Q=g.createElement("span",Object.assign({},v,{style:D?{}:O,className:L},D?{}:P,{role:"listitem",ref:this.avatarRef}),this.getContent(),B);if(k){const z={};typeof k=="object"&&(k!=null&&k.color)&&(z.borderColor=k==null?void 0:k.color),Q=g.createElement("div",{style:Object.assign({position:"relative"},O)},Q,g.createElement("span",{style:z,className:I([`${W}-additionalBorder`,`${W}-additionalBorder-${s}`,{[`${W}-${o}`]:o}])}),typeof this.props.border=="object"&&this.props.border.motion&&g.createElement("span",{style:z,className:I([`${W}-additionalBorder`,`${W}-additionalBorder-${s}`,{[`${W}-${o}`]:o,[`${W}-additionalBorder-animated`]:typeof this.props.border=="object"&&((e=this.props.border)===null||e===void 0?void 0:e.motion)}])}))}return D?g.createElement("span",Object.assign({className:I([`${W}-wrapper`]),style:O},P),Q,S&&["extra-small","small","default","medium","large","extra-large"].includes(s)&&o==="circle"&&this.renderTopSlot(),C&&["extra-small","small","default","medium","large","extra-large"].includes(s)&&this.renderBottomSlot()):Q}}pt.__SemiComponentName__="Avatar";pt.defaultProps=an(pt.__SemiComponentName__,{size:"medium",color:"grey",shape:"circle",gap:3,onClick:nn,onMouseEnter:nn,onMouseLeave:nn});pt.propTypes={children:h.node,color:h.oneOf(Ll),shape:h.oneOf(Ml),size:h.oneOf(_l),hoverMask:h.node,className:h.string,style:h.object,gap:h.number,imgAttr:h.object,src:h.string,srcSet:h.string,alt:h.string,onError:h.func,onClick:h.func,onMouseEnter:h.func,onMouseLeave:h.func,bottomSlot:h.shape({render:h.func,shape:h.oneOf(["circle","square"]),text:h.node,bgColor:h.string,textColor:h.string,className:h.string,style:h.object}),topSlot:h.shape({render:h.func,gradientStart:h.string,gradientEnd:h.string,text:h.node,textColor:h.string,className:h.string,style:h.object}),border:h.oneOfType([h.shape({color:h.string,motion:h.bool}),h.bool]),contentMotion:h.bool};pt.elementType="Avatar";var On,rr;function Il(){if(rr)return On;rr=1;function n(e,t,o,r){for(var s=e.length,l=o+(r?1:-1);r?l--:++l-1}return Tn=e,Tn}var Rn,ur;function zl(){if(ur)return Rn;ur=1;function n(e,t,o){for(var r=-1,s=e==null?0:e.length;++r=l&&(y=s,b=!1,p=new n(p));e:for(;++fthis.close(B,o,t)},g.createElement(ln,{size:"small"})):null,N=De(o),L=I(`${pe}-content`,`${pe}-content-${N?"ellipsis":"center"}`);return g.createElement("div",Object.assign({"aria-label":this.props["aria-label"]||N?`${l?"Closable ":""}Tag: ${o}`:""},D),C?g.createElement("div",{className:`${pe}-prefix-icon`},C):null,y?this.renderAvatar():null,g.createElement("div",{className:L},o),S?g.createElement("div",{className:`${pe}-suffix-icon`},S):null,P)}}ze.defaultProps={size:ii[0],color:si[0],closable:!1,type:ai[0],onClose:()=>{},onClick:()=>{},onMouseEnter:()=>{},style:{},className:"",shape:"square",avatarShape:"square",prefixIcon:null,suffixIcon:null,colorful:!1,gradient:!1};ze.propTypes={children:h.node,tagKey:h.oneOfType([h.string,h.number]),size:h.oneOf(ii),color:h.oneOf(si),type:h.oneOf(ai),closable:h.bool,visible:h.bool,onClose:h.func,onClick:h.func,prefixIcon:h.node,suffixIcon:h.node,style:h.object,className:h.string,avatarSrc:h.string,colorful:h.bool,gradient:h.bool,avatarShape:h.oneOf(Hl),"aria-label":h.string};Dl();var Dn,mr;function Zl(){if(mr)return Dn;mr=1;var n=Fi();function e(t,o){return t==null?!0:n(t,o)}return Dn=e,Dn}Zl();var An,fr;function ql(){if(fr)return An;fr=1;var n=To(),e=Bi(),t=Ui(),o=Vi(),r=Ki(),s=Wi(),l=Bs();function c(u){return t(u)?n(u,s):o(u)?[u]:e(r(l(u)))}return An=c,An}ql();var zn,gr;function Gl(){if(gr)return zn;gr=1;var n=Object.prototype,e=n.hasOwnProperty;function t(o,r){return o!=null&&e.call(o,r)}return zn=t,zn}var Fn,yr;function Ql(){if(yr)return Fn;yr=1;var n=Gl(),e=Hi();function t(o,r){return o!=null&&e(o,r,n)}return Fn=t,Fn}Ql();function Yl(n,e){return n&&(typeof n=="function"||typeof n=="object")&&e&&(typeof e=="function"||typeof e=="object")&&Object.entries(e).forEach(t=>{let[o,r]=t;n[o]=r}),n}const Xl={PREFIX:`${Re}-empty`};var Jl=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{for(const o of t)o.type==="attributes"&&o.attributeName==="theme-mode"&&this.updateMode()},this.updateMode=()=>{const t=this.body.getAttribute("theme-mode");t!==this.state.mode&&this.setState({mode:t})},this.state={mode:null}}componentDidMount(){if(this.props.darkModeImage){this.body=window.document.body,this.updateMode();const e={attributes:!0,childList:!1,subtree:!1};this.observer=new MutationObserver(this.observe),this.observer.observe(this.body,e)}}componentWillUnmount(){this.observer&&this.observer.disconnect()}render(){const e=this.props,{className:t,image:o,description:r,style:s,title:l,imageStyle:c,children:u,layout:p,darkModeImage:d}=e,m=Jl(e,["className","image","description","style","title","imageStyle","children","layout","darkModeImage"]),f=typeof r=="string"?r:"empty",y=this.state.mode==="dark"&&d?d:o;let b=null;typeof y=="string"?b=g.createElement("img",{alt:f,src:y}):y&&"id"in y?b=g.createElement("svg",{"aria-hidden":"true"},g.createElement("use",{xlinkHref:`#${y.id}`})):b=y;const x=I(t,Ze,{[`${Ze}-${p}`]:p}),C=b?{heading:4}:{heading:6,style:{fontWeight:400}};return g.createElement("div",Object.assign({className:x,style:s},this.getDataAttr(m)),g.createElement("div",{className:`${Ze}-image`,style:c,"x-semi-prop":"image,darkModeImage"},b),g.createElement("div",{className:`${Ze}-content`},l?g.createElement(Ro.Title,Object.assign({},C,{className:`${Ze}-title`,"x-semi-prop":"title"}),l):null,r?g.createElement("div",{className:`${Ze}-description`,"x-semi-prop":"description"},r):null,u?g.createElement("div",{className:`${Ze}-footer`,"x-semi-prop":"children"},u):null))}}li.defaultProps={layout:"vertical"};const H={DIALOG:`${Re}-modal`},br={SIZE:["small","medium","large","full-width"],directions:["ltr","rtl"]};function ec(n){return n!==null&&typeof n=="object"}function vr(n){return ec(n)&&typeof n.then=="function"}class tc extends ve{constructor(e){super(Object.assign({},e)),this._debouncedOk=_o(t=>{this._invokeOk(t)},100,{leading:!0,trailing:!1}),this._debouncedCancel=_o(t=>{this._invokeCancel(t)},100,{leading:!0,trailing:!1}),this._lastCancelTarget=null,this._lastOkTarget=null,this.toggleDisplayNone=(t,o)=>{this._adapter.toggleDisplayNone(t,o)}}destroy(){this._debouncedOk.cancel(),this._debouncedCancel.cancel(),this.afterHide()}handleCancel(e){var t,o;const r=(o=(t=e==null?void 0:e.currentTarget)!==null&&t!==void 0?t:e==null?void 0:e.target)!==null&&o!==void 0?o:null;r!==this._lastCancelTarget&&this._debouncedCancel.cancel(),this._lastCancelTarget=r,this._debouncedCancel(e)}handleOk(e){var t,o;const r=(o=(t=e==null?void 0:e.currentTarget)!==null&&t!==void 0?t:e==null?void 0:e.target)!==null&&o!==void 0?o:null;r!==this._lastOkTarget&&this._debouncedOk.cancel(),this._lastOkTarget=r,this._debouncedOk(e)}_invokeCancel(e){var t;const o=this._adapter.notifyCancel(e);vr(o)&&(this._adapter.setState({onCancelReturnPromiseStatus:"pending"}),(t=o==null?void 0:o.then(()=>{this._adapter.setState({onCancelReturnPromiseStatus:"fulfilled"})}))===null||t===void 0||t.catch(r=>{throw this._adapter.setState({onCancelReturnPromiseStatus:"rejected"}),r}))}_invokeOk(e){var t;const o=this._adapter.notifyOk(e);vr(o)&&(this._adapter.setState({onOKReturnPromiseStatus:"pending"}),(t=o==null?void 0:o.then(()=>{this._adapter.setState({onOKReturnPromiseStatus:"fulfilled"})}))===null||t===void 0||t.catch(r=>{throw this._adapter.setState({onOKReturnPromiseStatus:"rejected"}),r}))}beforeShow(){this._adapter.disabledBodyScroll()}afterHide(){this._adapter.enabledBodyScroll(),this._adapter.notifyClose()}enabledBodyScroll(){this._adapter.enabledBodyScroll()}}class Ao extends ve{constructor(e){super(Object.assign(Object.assign({},Ao.defaultAdapter),e)),this.handleKeyDown=t=>{const{closeOnEsc:o}=this.getProps();if(o&&t.keyCode===on.ESC){t.stopPropagation(),this.close(t);return}}}destroy(){this.handleKeyDownEventListenerUnmount(),this.modalDialogBlur(),this.prevFocusElementReFocus()}handleDialogMouseDown(){this._adapter.notifyDialogMouseDown()}handleMaskMouseUp(){this._adapter.notifyDialogMouseUp()}handleKeyDownEventListenerMount(){this._adapter.addKeyDownEventListener()}handleKeyDownEventListenerUnmount(){this._adapter.removeKeyDownEventListener()}getMouseState(){this._adapter.getMouseState()}handleMaskClick(e){const{dialogMouseDown:t}=this.getStates();e.target===e.currentTarget&&!t&&this.close(e)}close(e){this._adapter.notifyClose(e)}modalDialogFocus(){this._adapter.modalDialogFocus()}modalDialogBlur(){this._adapter.modalDialogBlur()}prevFocusElementReFocus(){this._adapter.prevFocusElementReFocus()}}var Bn,xr;function nc(){if(xr)return Bn;xr=1;var n=Fl(),e=Zi(),t=qi(),o=e(function(r,s){return t(r)?n(r,s):[]});return Bn=o,Bn}var oc=nc();const rc=We(oc);class Ue{constructor(e,t){var o;this.addFocusRedirectListener=r=>(this.focusRedirectListenerList.push(r),()=>this.removeFocusRedirectListener(r)),this.removeFocusRedirectListener=r=>{this.focusRedirectListenerList=rc(this.focusRedirectListenerList,r)},this.destroy=()=>{var r;(r=this.container)===null||r===void 0||r.removeEventListener("keydown",this.onKeyPress)},this.shouldFocusRedirect=r=>{if(!this.enable)return!1;for(const s of this.focusRedirectListenerList)if(!s(r))return!1;return!0},this.focusElement=(r,s)=>{const{preventScroll:l}=this.options;r==null||r.focus({preventScroll:l}),s.preventDefault()},this.onKeyPress=r=>{if(r&&r.key==="Tab"){const s=Ue.getFocusableElements(this.container);s.length&&(r.shiftKey?this.handleContainerShiftTabKeyDown(s,r):this.handleContainerTabKeyDown(s,r))}},this.handleContainerTabKeyDown=(r,s)=>{const l=Ue.getActiveElement(),c=r[r.length-1]===l,u=r[0];c&&this.shouldFocusRedirect(u)&&this.focusElement(u,s)},this.handleContainerShiftTabKeyDown=(r,s)=>{const l=Ue.getActiveElement(),c=r[0]===l,u=r[r.length-1];c&&this.shouldFocusRedirect(u)&&this.focusElement(u,s)},Object.freeze(t),this.container=e,this.options=t,this.enable=(o=t==null?void 0:t.enable)!==null&&o!==void 0?o:!0,this.focusRedirectListenerList=t!=null&&t.onFocusRedirectListener?Array.isArray(t.onFocusRedirectListener)?[...t.onFocusRedirectListener]:[t.onFocusRedirectListener]:[],this.container.addEventListener("keydown",this.onKeyPress)}get enable(){return this._enable}set enable(e){this._enable=e}static getFocusableElements(e){if(!Gi(e))return[];const o=["input:not([disabled]):not([tabindex='-1'])","textarea:not([disabled]):not([tabindex='-1'])","button:not([disabled]):not([tabindex='-1'])","a[href]:not([tabindex='-1'])","select:not([disabled]):not([tabindex='-1'])","area[href]:not([tabindex='-1'])","iframe:not([tabindex='-1'])","object:not([tabindex='-1'])","*[tabindex]:not([tabindex='-1'])","*[contenteditable]:not([tabindex='-1'])"].join(",");return Array.from(e.querySelectorAll(o))}static getActiveElement(){return document?document.activeElement:null}}var Un=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{this.foundation.handleKeyDown(t)},this.onDialogMouseDown=()=>{this.foundation.handleDialogMouseDown()},this.onMaskMouseUp=()=>{this.foundation.handleMaskMouseUp()},this.onMaskClick=t=>{this.foundation.handleMaskClick(t)},this.close=t=>{this.foundation.close(t)},this.getMaskElement=()=>{const t=Un(this.props,[]),{mask:o,maskClassName:r}=t;if(o){const s=I(`${H.DIALOG}-mask`,{});return g.createElement("div",Object.assign({key:"mask"},this.props.maskExtraProps,{className:I(s,r),style:t.maskStyle}))}return null},this.renderCloseBtn=()=>{const{closable:t,closeIcon:o}=this.props;let r;if(t){const s=o||g.createElement(ln,{"x-semi-prop":"closeIcon"});r=g.createElement(Gs,{"aria-label":"close",className:`${H.DIALOG}-close`,key:"close-btn",onClick:this.close,type:"tertiary",icon:s,theme:"borderless",size:"small"})}return r},this.renderIcon=()=>{const{icon:t}=this.props;return t?g.createElement("span",{className:`${H.DIALOG}-icon-wrapper`,"x-semi-prop":"icon"},t):null},this.renderHeader=()=>{if("header"in this.props)return this.props.header;const{title:t}=this.props,o=this.renderCloseBtn(),r=this.renderIcon();return t==null?null:g.createElement("div",{className:`${H.DIALOG}-header`},r,g.createElement(Ro.Title,{heading:5,className:`${H.DIALOG}-title`,id:`${H.DIALOG}-title`,"x-semi-prop":"title"},t),o)},this.renderBody=()=>{const{bodyStyle:t,children:o,title:r}=this.props,s=I(`${H.DIALOG}-body`,{[`${H.DIALOG}-withIcon`]:this.props.icon}),l=this.renderCloseBtn(),c=this.renderIcon();return r!=null||"header"in this.props?g.createElement("div",{className:s,id:`${H.DIALOG}-body`,style:t,"x-semi-prop":"children"},o):g.createElement("div",{className:`${H.DIALOG}-body-wrapper`},c,g.createElement("div",{className:s,style:t,"x-semi-prop":"children"},o),l)},this.getDialogElement=()=>{const t=Un(this.props,[]),o={},r=I(`${H.DIALOG}`,{[`${H.DIALOG}-centered`]:t.centered,[`${H.DIALOG}-${t.size}`]:t.size});t.width&&(o.width=t.width),t.height&&(o.height=t.height),t.isFullScreen&&(o.width="100%",o.height="100%",o.margin="unset");const s=this.renderBody(),l=this.renderHeader(),c=t.footer?g.createElement("div",{className:`${H.DIALOG}-footer`,"x-semi-prop":"footer"},t.footer):null,u=g.createElement("div",{role:"dialog",ref:this.modalDialogRef,"aria-modal":"true","aria-labelledby":`${H.DIALOG}-title`,"aria-describedby":`${H.DIALOG}-body`,onAnimationEnd:t.onAnimationEnd,className:I([`${H.DIALOG}-content`,t.contentClassName,{[`${H.DIALOG}-content-fullScreen`]:t.isFullScreen,[`${H.DIALOG}-content-height-set`]:t.height||Et(t.style,"height")}])},l,s,c);return g.createElement("div",{key:"dialog-element",className:r,onMouseDown:this.onDialogMouseDown,style:Object.assign(Object.assign({},t.style),o),id:this.dialogId},t!=null&&t.modalRender?t==null?void 0:t.modalRender(u):u)},this.state={dialogMouseDown:!1,prevFocusElement:Ue.getActiveElement()},this.foundation=new Ao(this.adapter),this.dialogId=`dialog-${sc++}`,this.modalDialogRef=g.createRef()}get adapter(){return Object.assign(Object.assign({},super.adapter),{notifyClose:e=>{this.props.onClose(e)},notifyDialogMouseDown:()=>{this.setState({dialogMouseDown:!0})},notifyDialogMouseUp:()=>{this.state.dialogMouseDown&&(this.timeoutId=setTimeout(()=>{this.setState({dialogMouseDown:!1})},0))},addKeyDownEventListener:()=>{this.props.closeOnEsc&&document.addEventListener("keydown",this.foundation.handleKeyDown)},removeKeyDownEventListener:()=>{this.props.closeOnEsc&&document.removeEventListener("keydown",this.foundation.handleKeyDown)},getMouseState:()=>this.state.dialogMouseDown,modalDialogFocus:()=>{var e,t,o;const{preventScroll:r}=this.props;let s;if(this.modalDialogRef){const l=Ue.getActiveElement();s=this.modalDialogRef.current.contains(l),(e=this.focusTrapHandle)===null||e===void 0||e.destroy(),this.focusTrapHandle=new Ue(this.modalDialogRef.current,{preventScroll:r})}s||(o=(t=this.modalDialogRef)===null||t===void 0?void 0:t.current)===null||o===void 0||o.focus({preventScroll:r})},modalDialogBlur:()=>{var e,t;(e=this.modalDialogRef)===null||e===void 0||e.current.blur(),(t=this.focusTrapHandle)===null||t===void 0||t.destroy()},prevFocusElementReFocus:()=>{const{prevFocusElement:e}=this.state,{preventScroll:t}=this.props,o=Et(e,"focus");Be(o)&&e.focus({preventScroll:t})}})}componentDidMount(){var e;this.foundation.handleKeyDownEventListenerMount(),this.foundation.modalDialogFocus();const t=Ue.getFocusableElements(this.modalDialogRef.current);this.modalDialogRef.current.contains(document.activeElement)||(e=t[0])===null||e===void 0||e.focus()}componentWillUnmount(){clearTimeout(this.timeoutId),this.foundation.destroy()}render(){var e;const t=this.props,{maskClosable:o,className:r,getPopupContainer:s,maskFixed:l,getContainerContext:c}=t,u=Un(t,["maskClosable","className","getPopupContainer","maskFixed","getContainerContext"]),{direction:p}=this.context,d=I(r,{[`${H.DIALOG}-popup`]:s&&s()!==((e=globalThis==null?void 0:globalThis.document)===null||e===void 0?void 0:e.body)&&!l,[`${H.DIALOG}-fixed`]:l,[`${H.DIALOG}-rtl`]:p==="rtl"}),m=c(),f=this.getDataAttr(u),y=g.createElement("div",Object.assign({className:d},f),this.getMaskElement(),g.createElement("div",Object.assign({role:"none",className:I({[`${H.DIALOG}-wrap`]:!0,[`${H.DIALOG}-wrap-center`]:this.props.centered}),onClick:o?this.onMaskClick:null,onMouseUp:o?this.onMaskMouseUp:null},this.props.contentExtraProps),this.getDialogElement()));return m&&m.Provider?g.createElement(m.Provider,{value:m.value},y):y}}pn.contextType=Us;pn.propTypes={close:h.func,getContainerContext:h.func,contentClassName:h.string,maskClassName:h.string,onAnimationEnd:h.func,preventScroll:h.bool};pn.defaultProps={close:A,getContainerContext:A,contentClassName:"",maskClassName:""};var ic=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{const[e,t]=a.useState(!0),[o,r]=a.useState(),[s,l]=a.useState(),{direction:c}=n,{title:u,content:p,icon:d,type:m,onCancel:f,onOk:y,className:b}=n,x=ic(n,["title","content","icon","type","onCancel","onOk","className"]),C=a.useCallback(O=>{const D=y&&y(O);D&&D.then?(r(!0),D.then(function(){t(!1),r(!1)},P=>{r(!1)})):t(!1)},[y]),S=a.useCallback(O=>{const D=f&&f(O);D&&D.then?(l(!0),D.then(function(){t(!1),l(!1)},P=>{l(!1)})):t(!1)},[f]),k=`${H.DIALOG}-confirm`,_=I(b,k,{[`${k}-rtl`]:c==="rtl"}),v=I(`${H.DIALOG}-${m}`),j=Ge(d)?g.cloneElement(d,{className:`${k}-icon ${v}-icon`,size:"extra-large"}):d,w=u==null?null:g.createElement("span",{className:`${k}-title-text`},u),E=I(`${k}-content`,{[`${k}-content-withIcon`]:n.icon});return g.createElement(le,Object.assign({className:_,title:w,confirmLoading:o,cancelLoading:s,onOk:C,onCancel:S,icon:j,visible:e},x),g.createElement("div",{className:E,"x-semi-prop":"content"},p))};function Gt(n){const e=document.createElement("div");document.body.appendChild(e);let t=Object.assign({},n);const o=()=>{Hs(e),e.parentNode&&e.parentNode.removeChild(e);for(let c=0;c{u==null||u(),o()},motion:n.motion})),e)}function s(){t=Object.assign(Object.assign({},t),{visible:!1}),r(t)}function l(c){t=Object.assign(Object.assign({},t),c),r(t)}return r(t),Qe.push(s),{destroy:s,update:l}}function di(n){return Object.assign({type:"info",icon:g.createElement(Qs,null)},n)}function ui(n){return Object.assign({type:"success",icon:g.createElement(Ks,null)},n)}function pi(n){return Object.assign({type:"warning",icon:g.createElement(Ys,null)},n)}function hi(n){return Object.assign({type:"error",icon:g.createElement(Ws,null),okButtonProps:Object.assign({type:"danger"},n.okButtonProps)},Qi(n,["okButtonProps"]))}function mi(n){return Object.assign({type:"confirm",icon:g.createElement(rl,null)},n)}var ac=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{var{afterClose:t,config:o}=n;ac(n,["afterClose","config"]);const[r,s]=g.useState(o);g.useImperativeHandle(e,()=>({destroy:()=>{s(c=>Object.assign(Object.assign({},c),{visible:!1}))},update:c=>{s(u=>Object.assign(Object.assign({},u),c))}}));const l=()=>{var c;(c=o==null?void 0:o.afterClose)===null||c===void 0||c.call(o),t()};return g.createElement(ci,Object.assign({},r,{afterClose:l}))},cc=g.forwardRef(lc);let wr=0;function dc(){const[n,e]=g.useState([]);function t(o){return e(r=>[...r,o]),()=>{e(r=>r.filter(s=>s!==o))}}return[n,t]}function uc(){const[n,e]=dc();function t(o){return function(s){wr+=1;const l=g.createRef();let c;const u=g.createElement(cc,{key:`semi-modal-${wr}`,config:o(s),ref:l,afterClose:()=>{c()}});return c=e(u),{destroy:()=>{l.current&&l.current.destroy()},update:p=>{l.current&&l.current.update(p)}}}}return[{info:t(di),success:t(ui),error:t(hi),warning:t(pi),confirm:t(mi)},g.createElement(g.Fragment,null,n)]}var pc=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{this.foundation.handleCancel(t)},this.handleOk=t=>{this.foundation.handleOk(t)},this.updateState=()=>{const{visible:t}=this.props;this.foundation.toggleDisplayNone(!t)},this.renderFooter=()=>{const{okText:t,okType:o,cancelText:r,confirmLoading:s,cancelLoading:l,hasCancel:c,footerFill:u}=this.props,p=d=>{var m;return c?g.createElement(de,Object.assign({"aria-label":"cancel",onClick:this.handleCancel,loading:l===void 0?this.state.onCancelReturnPromiseStatus==="pending":l,type:"tertiary",block:u,autoFocus:!0},this.props.cancelButtonProps,{style:Object.assign(Object.assign({},u?{marginLeft:"unset"}:{}),(m=this.props.cancelButtonProps)===null||m===void 0?void 0:m.style),"x-semi-children-alias":"cancelText"}),r||d.cancel):null};return g.createElement(Zs,{componentName:"Modal"},(d,m)=>g.createElement("div",{className:I({[`${H.DIALOG}-footerfill`]:u})},p(d),g.createElement(de,Object.assign({"aria-label":"confirm",type:o,theme:"solid",block:u,loading:s===void 0?this.state.onOKReturnPromiseStatus==="pending":s,onClick:this.handleOk},this.props.okButtonProps,{"x-semi-children-alias":"okText"}),t||d.confirm)))},this.renderDialog=()=>{var t;let o=this.props,{footer:r,className:s,motion:l,maskStyle:c,keepDOM:u,style:p,zIndex:d,getPopupContainer:m,visible:f,modalContentClass:y}=o,b=pc(o,["footer","className","motion","maskStyle","keepDOM","style","zIndex","getPopupContainer","visible","modalContentClass"]),x=p;const C=c,S="footer"in this.props?r:this.renderFooter();let k={zIndex:d};m&&m()!==((t=globalThis==null?void 0:globalThis.document)===null||t===void 0?void 0:t.body)&&(k={zIndex:d,position:"static"});const _=I(s,{[`${H.DIALOG}-displayNone`]:u&&this.state.displayNone}),v=this.props.visible||this.props.keepDOM&&(!this.props.lazyRender||this._haveRendered)||this.props.motion&&!this.state.displayNone;return v&&(this._haveRendered=!0),g.createElement(ko,{motion:this.props.motion,animationState:f?"enter":"leave",startClassName:f?`${H.DIALOG}-content-animate-show`:`${H.DIALOG}-content-animate-hide`,onAnimationEnd:()=>{this.updateState()}},j=>{let{animationClassName:w,animationEventsNeedBind:E}=j;return g.createElement(ko,{motion:this.props.motion,animationState:f?"enter":"leave",startClassName:f?`${H.DIALOG}-mask-animate-show`:`${H.DIALOG}-mask-animate-hide`,onAnimationEnd:()=>{this.updateState()}},O=>{let{animationClassName:D,animationEventsNeedBind:P}=O;return v?g.createElement(Yi,{style:k,getPopupContainer:m}," ",g.createElement(pn,Object.assign({},b,{contentExtraProps:E,maskExtraProps:P,isFullScreen:this.state.isFullScreen,contentClassName:`${w} ${y}`,maskClassName:D,className:_,getPopupContainer:m,maskStyle:C,style:x,ref:this.modalRef,footer:S,onClose:this.handleCancel}))):g.createElement(g.Fragment,null)})})},this.state={displayNone:!e.visible,isFullScreen:e.fullScreen},this.foundation=new tc(this.adapter),this.modalRef=g.createRef(),this.scrollBarWidth=0,this.originBodyWidth="100%"}get adapter(){return Object.assign(Object.assign({},super.adapter),{getProps:()=>this.props,disabledBodyScroll:()=>{var e;const{getPopupContainer:t}=this.props;this.bodyOverflow=document.body.style.overflow||"",(!t||t()===((e=globalThis==null?void 0:globalThis.document)===null||e===void 0?void 0:e.body))&&this.bodyOverflow!=="hidden"&&(document.body.style.overflow="hidden",document.body.style.width=`calc(${this.originBodyWidth||"100%"} - ${this.scrollBarWidth}px)`)},enabledBodyScroll:()=>{var e;const{getPopupContainer:t}=this.props;(!t||t()===((e=globalThis==null?void 0:globalThis.document)===null||e===void 0?void 0:e.body))&&this.bodyOverflow!==null&&this.bodyOverflow!=="hidden"&&(document.body.style.overflow=this.bodyOverflow,document.body.style.width=this.originBodyWidth)},notifyCancel:e=>this.props.onCancel(e),notifyOk:e=>this.props.onOk(e),notifyClose:()=>{this.props.afterClose()},toggleDisplayNone:(e,t)=>{e!==this.state.displayNone&&this.setState({displayNone:e},t||A)},notifyFullScreen:e=>{e!==this.state.isFullScreen&&this.setState({isFullScreen:e})}})}static getDerivedStateFromProps(e,t){const o={};return e.fullScreen!==t.isFullScreen&&(o.isFullScreen=e.fullScreen),e.visible&&t.displayNone&&(o.displayNone=!1),o}componentDidMount(){this.scrollBarWidth=Xi(),this.originBodyWidth=document.body.style.width,this.props.visible&&this.foundation.beforeShow()}componentDidUpdate(e,t,o){!e.visible&&this.props.visible&&this.foundation.beforeShow(),!t.displayNone&&this.state.displayNone&&this.foundation.afterHide()}componentWillUnmount(){this.props.visible?this.foundation.destroy():this.foundation.enabledBodyScroll()}render(){const{visible:e,keepDOM:t,lazyRender:o}=this.props;return this.renderDialog()}}le.propTypes={mask:h.bool,closable:h.bool,centered:h.bool,visible:h.bool,width:h.oneOfType([h.string,h.number]),height:h.oneOfType([h.string,h.number]),confirmLoading:h.bool,cancelLoading:h.bool,okText:h.string,okType:h.string,cancelText:h.string,maskClosable:h.bool,onCancel:h.func,onOk:h.func,modalRender:h.func,afterClose:h.func,okButtonProps:h.object,cancelButtonProps:h.object,style:h.object,className:h.string,maskStyle:h.object,bodyStyle:h.object,zIndex:h.number,title:h.node,icon:h.node,header:h.node,footer:h.node,hasCancel:h.bool,motion:h.bool,children:h.node,getPopupContainer:h.func,getContainerContext:h.func,maskFixed:h.bool,closeIcon:h.node,closeOnEsc:h.bool,size:h.oneOf(br.SIZE),keepDOM:h.bool,lazyRender:h.bool,direction:h.oneOf(br.directions),fullScreen:h.bool,footerFill:h.bool};le.__SemiComponentName__="Modal";le.defaultProps=an(le.__SemiComponentName__,{zIndex:1e3,motion:!0,mask:!0,centered:!1,closable:!0,visible:!1,okType:"primary",maskClosable:!0,hasCancel:!0,onCancel:A,onOk:A,afterClose:A,maskFixed:!1,closeOnEsc:!0,size:"small",keepDOM:!1,lazyRender:!0,fullScreen:!1});le.useModal=uc;le.info=function(n){return Gt(di(n))};le.success=function(n){return Gt(ui(n))};le.error=function(n){return Gt(hi(n))};le.warning=function(n){return Gt(pi(n))};le.confirm=function(n){return Gt(mi(n))};le.destroyAll=function(){for(let e=0,t=Qe.length;eo.ariaDisabled==="false"):null}setFocusToFirstMenuItem(e){const t=this.getMenuItemNodes(e);t&&ea(t)}setFocusToLastMenuItem(e){const t=this.getMenuItemNodes(e);t&&ta(t)}handleKeyDown(e){var t,o;const r=(o=(t=e.target)===null||t===void 0?void 0:t.attributes["data-popupid"])===null||o===void 0?void 0:o.value,{visible:s}=this._adapter.getStates();switch(e.key){case" ":case"Enter":e.target.click();break;case"ArrowDown":this.setFocusToFirstMenuItem(r),s&&Je(e);break;case"ArrowUp":this.setFocusToLastMenuItem(r),s&&Je(e);break}}}class mc extends ve{constructor(){super(...arguments),this.menuItemNodes=null,this.firstChars=[]}handleEscape(e){this._adapter.getContext("trigger")==="custom"&&(e&&na(document.querySelectorAll("[data-popupid]"),e.id)).focus()}setFocusByFirstCharacter(e,t){const o=oa(this.menuItemNodes,e,this.firstChars,t);o>=0&&ra(this.menuItemNodes,this.menuItemNodes[o])}onMenuKeydown(e){const t=sa(e.target,"tooltip");this.menuItemNodes||(this.menuItemNodes=[...e.target.parentNode.getElementsByTagName("li")].filter(r=>r.ariaDisabled!=="true")),this.firstChars.length===0&&this.menuItemNodes.forEach(r=>{var s;this.firstChars.push((s=r.textContent.trim()[0])===null||s===void 0?void 0:s.toLowerCase())});const o=this.menuItemNodes.find(r=>r.tabIndex===0);switch(e.key){case" ":case"Enter":e.target.click();break;case"Escape":this.handleEscape(t);break;case"ArrowUp":la(this.menuItemNodes,o),Je(e);break;case"ArrowDown":aa(this.menuItemNodes,o),Je(e);break;default:ia(e.key)&&this.setFocusByFirstCharacter(o,e.key);break}}}const ht=g.createContext({level:0});var fc=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);rthis.foundation.onMenuKeydown(l)}),t)}}zo.propTypes={children:h.node,className:h.string,style:h.object};zo.contextType=ht;const qe=Qt.PREFIX;class mn extends me{render(){const{children:e,disabled:t,className:o,forwardRef:r,style:s,type:l,active:c,icon:u,onKeyDown:p,showTick:d,hover:m,innerRef:f}=this.props,{showTick:y}=this.context,b=y??d,x=I(o,{[`${qe}-item`]:!0,[`${qe}-item-disabled`]:t,[`${qe}-item-hover`]:m,[`${qe}-item-withTick`]:b,[`${qe}-item-${l}`]:l,[`${qe}-item-active`]:c}),C={};t||["onClick","onMouseEnter","onMouseLeave","onContextMenu"].forEach(_=>{this.context.level!==1&&_==="onClick"?C.onMouseDown=j=>{var w,E;j.button===0&&((E=(w=this.props)[_])===null||E===void 0||E.call(w,j))}:C[_]=this.props[_]});let S=null;switch(!0){case(b&&c):S=g.createElement(Zo,null);break;case(b&&!c):S=g.createElement(Zo,{style:{color:"transparent"}});break;default:S=null;break}let k=null;return u&&(k=g.createElement("div",{className:`${qe}-item-icon`},u)),g.createElement("li",Object.assign({role:"menuitem",tabIndex:-1,"aria-disabled":t},C,{onKeyDown:p,ref:_=>{r(_),typeof f=="function"?f(_):f&&typeof f=="object"&&(f.current=_)},className:x,style:s},this.getDataAttr(this.props)),S,k,e)}}mn.propTypes={children:h.oneOfType([h.string,h.node]),name:h.string,disabled:h.bool,selected:h.bool,onClick:h.func,onMouseEnter:h.func,onMouseLeave:h.func,onContextMenu:h.func,className:h.string,style:h.object,forwardRef:h.func,type:h.oneOf(hn.ITEM_TYPE),active:h.bool,icon:h.node};mn.contextType=ht;mn.defaultProps={disabled:!1,divided:!1,selected:!1,onMouseEnter:A,onMouseLeave:A,forwardRef:A};const fi=g.forwardRef((n,e)=>g.createElement(mn,Object.assign({},n,{innerRef:e})));fi.elementType="Dropdown.Item";const yc=Qt.PREFIX,bc=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{style:e,className:t}=n;return g.createElement("div",{className:I(`${yc}-divider`,t),style:e})},Sr=Qt.PREFIX;class Fo extends a.PureComponent{render(){const{className:e,style:t,children:o}=this.props,{showTick:r}=this.context,s=I({[`${Sr}-title`]:!0,[`${Sr}-title-withTick`]:r},e);return g.createElement("div",{className:s,style:t},o)}}Fo.propTypes={children:h.node,className:h.string,style:h.object};Fo.contextType=ht;var Vn=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);rthis.foundation.handleVisibleChange(t),this.state={popVisible:e.visible},this.foundation=new hc(this.adapter),this.tooltipRef=g.createRef()}get adapter(){return Object.assign(Object.assign({},super.adapter),{setPopVisible:e=>this.setState({popVisible:e}),notifyVisibleChange:e=>{var t,o;return(o=(t=this.props).onVisibleChange)===null||o===void 0?void 0:o.call(t,e)},getPopupId:()=>this.tooltipRef.current.getPopupId()})}renderContent(){const{render:e,menu:t,contentClassName:o,style:r,showTick:s,prefixCls:l,trigger:c}=this.props,u=I(l,o),{level:p=0}=this.context,d={showTick:s,level:p+1,trigger:c};let m=null;return g.isValidElement(e)?m=e:Array.isArray(t)&&(m=this.renderMenu()),g.createElement(ht.Provider,{value:d},g.createElement("div",{className:u,style:r},g.createElement("div",{className:`${l}-content`,"x-semi-prop":"render"},m)))}renderMenu(){const{menu:e}=this.props,t=e.map((o,r)=>{switch(o.node){case"title":{const{name:s,node:l}=o,c=Vn(o,["name","node"]);return g.createElement(ue.Title,Object.assign({},c,{key:l+s+r}),s)}case"item":{const{node:s,name:l}=o,c=Vn(o,["node","name"]);return g.createElement(ue.Item,Object.assign({},c,{key:s+l+r}),l)}case"divider":return g.createElement(ue.Divider,{key:o.node+r});default:return null}});return g.createElement(ue.Menu,null,t)}renderPopCard(){const{render:e,contentClassName:t,style:o,showTick:r,prefixCls:s}=this.props,l=I(s,t),{level:c=0}=this.context,u={showTick:r,level:c+1};return g.createElement(ht.Provider,{value:u},g.createElement("div",{className:l,style:o},g.createElement("div",{className:`${s}-content`},e)))}render(){const e=this.props,{children:t,position:o,trigger:r,onVisibleChange:s,zIndex:l,className:c,motion:u,margin:p,style:d,prefixCls:m}=e,f=Vn(e,["children","position","trigger","onVisibleChange","zIndex","className","motion","margin","style","prefixCls"]);let{spacing:y}=this.props;const{level:b}=this.context,{popVisible:x}=this.state,C=this.renderContent();return b>0?y=typeof y=="number"?y:Cr.NESTED_SPACING:(y===null||typeof y>"u")&&(y=Cr.SPACING),g.createElement(Ae,Object.assign({zIndex:l,motion:u,margin:p,content:C,className:c,prefixCls:m,spacing:y,position:o,trigger:r,onVisibleChange:this.handleVisibleChange,showArrow:!1,returnFocusOnClose:!0,ref:this.tooltipRef},f),g.isValidElement(t)?g.cloneElement(t,{className:I(Et(t,"props.className"),{[`${m}-showing`]:x}),"aria-haspopup":!0,"aria-expanded":x,onKeyDown:S=>{this.foundation.handleKeyDown(S);const k=Et(t,"props.onKeyDown");k&&k(S)}}):t)}}ue.Menu=zo;ue.Item=fi;ue.Divider=bc;ue.Title=Fo;ue.contextType=ht;ue.propTypes={children:h.node,contentClassName:h.oneOfType([h.string,h.array]),className:h.string,getPopupContainer:h.func,margin:h.oneOfType([h.number,h.object]),mouseEnterDelay:h.number,mouseLeaveDelay:h.number,menu:h.array,motion:h.oneOfType([h.bool,h.func,h.object]),onVisibleChange:h.func,prefixCls:h.string,position:h.oneOf(vc),rePosKey:h.oneOfType([h.string,h.number]),render:h.node,spacing:h.oneOfType([h.number,h.object]),showTick:h.bool,style:h.object,trigger:h.oneOf(xc),visible:h.bool,zIndex:h.number};ue.__SemiComponentName__="Dropdown";ue.defaultProps=an(ue.__SemiComponentName__,{onVisibleChange:A,prefixCls:Qt.PREFIX,zIndex:ca.DEFAULT_Z_INDEX,motion:!0,trigger:"hover",position:"bottom",mouseLeaveDelay:hn.DEFAULT_LEAVE_DELAY,showTick:!1,closeOnEsc:!0,onEscKeyDown:A});var Kn,kr;function wc(){if(kr)return Kn;kr=1;var n=oi();function e(t){return n(t)&&t!=+t}return Kn=e,Kn}var Cc=wc();const Sc=We(Cc),kc=(n,e)=>{const{isNaN:t}=Number;return t(n)&&t(e)};var jc=Bs();const Ne=We(jc);var Ec=da();const ot=We(Ec),Oc=Object.assign({},ri),Ye=Object.assign(Object.assign({},vl),{DEFAULT_STEP:1,DEFAULT_SHIFT_STEP:10,DEFAULT_PRESS_TIMEOUT:250,DEFAULT_PRESS_INTERVAL:0,MOUSE_BUTTON_LEFT:0}),Pc=Object.assign({},qt);function _c(n,e){const t=(n.toString().split(".")[1]||"").length,o=(e.toString().split(".")[1]||"").length,r=Math.pow(10,Math.max(t,o));return Math.round(n*r+e*r)/r}function jr(n,e){return _c(n,-e)}class Mc extends ve{constructor(){super(...arguments),this._decimalPointSymbol=void 0,this._currencySymbol=""}init(){this._isCurrency()&&this._setCurrencySymbol(),this._setInitValue()}destroy(){this._unregisterInterval(),this._unregisterTimer(),this._adapter.unregisterGlobalEvent("mouseup")}isControlled(){return this._isControlledComponent("value")}_isCurrency(){const{currency:e}=this.getProps();return e===!0||typeof e=="string"&&e.trim()!==""}_getFinalCurrency(){const{currency:e}=this.getProps();return e===!0?this.getProp("defaultCurrency"):e}_doInput(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,r=e,s=e,l=!0;const c=this.isControlled();typeof e!="number"&&(s=this.doParse(e,!1),l=!isNaN(s)),l&&(r=s,c||this._adapter.setNumber(s)),c||this._adapter.setValue(e,o),this.getProp("keepFocus")&&this._adapter.setFocusing(!0,()=>{this._adapter.setClickUpOrDown(!0)}),this.notifyChange(r,t)}_registerInterval(e){const t=this.getProp("pressInterval")||Ye.DEFAULT_PRESS_INTERVAL;this._intervalHasRegistered=!0,this._interval=setInterval(()=>{typeof e=="function"&&this._intervalHasRegistered&&e()},t)}_unregisterInterval(){this._interval&&(this._intervalHasRegistered=!1,clearInterval(this._interval),this._interval=null)}_registerTimer(e){const t=this.getProp("pressTimeout")||Ye.DEFAULT_PRESS_TIMEOUT;this._timerHasRegistered=!0,this._timer=setTimeout(()=>{this._timerHasRegistered&&typeof e=="function"&&e()},t)}_unregisterTimer(){this._timer&&(this._timerHasRegistered=!1,clearTimeout(this._timer),this._timer=null)}_setCurrencySymbol(){const{localeCode:e,currencyDisplay:t}=this.getProps(),o=new Intl.NumberFormat(e,{style:"currency",currency:this._getFinalCurrency()||this.getCurrencyByLocaleCode(),currencyDisplay:t}).formatToParts(1234.5);for(const r of o)r.type==="decimal"&&(this._decimalPointSymbol=r.value),r.type==="currency"&&(this._currencySymbol=r.value)}handleInputFocus(e){const t=this.getState("value");if(t!==""&&this._isScientificNotation()&&!this._isCurrency()){const o=Ne(t);if(/e/i.test(o)&&/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(o.trim())){const s=this.doParse(o,!1,!1,!1);if(this.isValidNumber(s)){const l=this.doFormat(s,!0,!1);this._adapter.setValue(l)}}}this._adapter.recordCursorPosition(),this._adapter.setFocusing(!0,null),this._adapter.setClickUpOrDown(!1),this._adapter.notifyFocus(e)}handleInputChange(e,t){const o=this.doParse(e,!0,!0,!0),r=this.doParse(e,!1,!1,!1),s=this.afterParser(e);this._adapter.recordCursorPosition();let l,c=r,u=e;if(e==="")this.isControlled()||(c=null);else if(this.isValidNumber(r)&&this.isValidNumber(o))l=r,u=this.doFormat(r,!1);else{if(typeof r=="number"&&!isNaN(r)){u=this.doFormat(r,!1);const p=s.lastIndexOf("."),d=s.length-1-p,m=this._getPrecLen(r);if(m){if(m-1?s.slice(p):"";u+=f}c=r}else u=this.doFormat(s,!1);l=this.isControlled()?u:s}!this.isControlled()&&(c===null||typeof c=="number"&&!isNaN(c))&&this._adapter.setNumber(c),this._adapter.setValue(this.isControlled()&&!this._isCurrency()?u:this.doFormat(s,!1),()=>{this._adapter.restoreCursor()}),this.notifyChange(l,t)}handleInputKeyDown(e){const t=e.keyCode;if(t===on.UP||t===on.DOWN){this._adapter.setClickUpOrDown(!0),this._adapter.recordCursorPosition();const o=t===on.UP?this.add(null,e):this.minus(null,e);this._doInput(o,e,()=>{this._adapter.restoreCursor()}),e.preventDefault()}this._adapter.notifyKeyDown(e)}handleInputBlur(e){const t=Ne(this.getState("value"));let o=this.getState("number");if(o!=null||t!=null&&t!==""){const r=this.doParse(t,!1,!0,!0);let s=!1,l=!1,c,u;if(this.isValidNumber(r)&&o!==r&&(c=r,this.isControlled()||(o=c),s=!0),!this.isValidNumber(r)){const d=parseFloat(t);if(isNaN(d)){if(typeof o=="number"&&!isNaN(o)){const m=this.fetchMinOrMax(o);m!==o&&(c=m,this.isControlled()||(o=c),s=!0)}}else{const m=this.fetchMinOrMax(d);m!==o&&(c=m,this.isControlled()||(o=c),s=!0)}}const p=this.doFormat(o,!0,!0);if(p!==t&&(u=p,l=!0),l||s){const d=u??c;u!=null&&this._adapter.setValue(u),c!=null&&(this._isControlledComponent("value")||this._adapter.setNumber(c)),this.notifyChange(d,e)}}this._adapter.setFocusing(!1),this._adapter.notifyBlur(e)}handleInputMouseEnter(e){this._adapter.setHovering(!0)}handleInputMouseLeave(e){this._adapter.setHovering(!1)}handleInputMouseMove(e){this._adapter.setHovering(!0)}handleMouseUp(e){this._unregisterInterval(),this._unregisterTimer(),this._adapter.unregisterGlobalEvent("mouseup")}handleUpClick(e){const{readonly:t}=this.getProps();!this._isMouseButtonLeft(e)||t||(this._adapter.setClickUpOrDown(!0),e&&(this._persistEvent(e),e.stopPropagation(),this._preventDefault(e)),this.upClick(e),this._registerTimer(()=>{this._registerInterval(()=>{this.upClick(e)})}))}handleDownClick(e){const{readonly:t}=this.getProps();!this._isMouseButtonLeft(e)||t||(this._adapter.setClickUpOrDown(!0),e&&(this._persistEvent(e),e.stopPropagation(),this._preventDefault(e)),this.downClick(e),this._registerTimer(()=>{this._registerInterval(()=>{this.downClick(e)})}))}_isMouseButtonLeft(e){return Et(e,"button")===Ye.MOUSE_BUTTON_LEFT}_preventDefault(e){const t=this._adapter.getProp("keepFocus"),o=this._adapter.getProp("innerButtons");(t||o)&&e.preventDefault()}handleMouseLeave(e){this._adapter.registerGlobalEvent("mouseup",()=>{this.handleMouseUp(e)})}upClick(e){const t=this.add(null,e);this._doInput(t,e),this._adapter.notifyUpClick(t,e)}downClick(e){const t=this.minus(null,e);this._doInput(t,e),this._adapter.notifyDownClick(t,e)}_setInitValue(){const{defaultValue:e,value:t}=this.getProps(),o=this._isControlledComponent("value")?t:e;let r=o;typeof o=="number"&&!this._isCurrency()?r=this.doFormat(o):this._isCurrency()||(r=Ne(o));const s=this.doParse(r,!1,!0,!0);let l=null;typeof s=="number"&&!isNaN(s)&&(l=s);const c=typeof l=="number"?this.doFormat(l,!0,!0):"";this._adapter.setNumber(l),this._adapter.setValue(c),De(c)&&c!==String(o??"")&&this.notifyChange(c,null)}add(e,t){const r=t&&t.shiftKey?this.getProp("shiftStep"):this.getProp("step");e=e==null?r:Number(e);const s=Math.abs(ot(e)),l=this.getState("number");let c=this.toNumber(l)||0;const u=this.getProp("min"),p=this.getProp("max"),d=this._getPrecLen(u),m=this._getPrecLen(p),f=this._getPrecLen(c),y=this._getPrecLen(e),b=Math.pow(10,Math.max(d,m,f,y));return e<0?Math.abs(jr(u,c))>=s&&(c=Math.round(c*b+e*b)/b):e>0&&Math.abs(jr(p,c))>=s&&(c=Math.round(c*b+e*b)/b),typeof u=="number"&&u>c&&(c=u),typeof p=="number"&&p=1?t:15}return 15}_toScientificNotation(e){const t=this._getScientificNotationThreshold(),o=Math.abs(e),r=String(o),s=/e/i.test(r),l=r.replace(/[.\-+eE]/g,"").replace(/^0+/,"");if((s||l.length>=t)&&o!==0){const c=Math.max(0,Math.min(100,Math.floor(t)-1));return e.toExponential(c).replace(/(\.\d*?)0+e/,"$1e").replace(/\.e/,"e")}return String(e)}doFormat(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const{formatter:r}=this.getProps();let s;if(this._isCurrency()&&o?s=this.formatCurrency(e):t?s=this._adjustPrec(e):s=Ne(e),this._isScientificNotation()&&o&&!this._isCurrency()){const l=typeof e=="number"?e:parseFloat(s);!isNaN(l)&&isFinite(l)&&(s=this._toScientificNotation(l))}return typeof r=="function"&&(s=r(s)),s}fetchMinOrMax(e){const{min:t,max:o}=this.getProps();return eo?o:e}parseInternationalCurrency(e){let t=e.replace(this._currencySymbol,"").replace(new RegExp(`[^\\d${this._decimalPointSymbol}\\-]`,"g"),"");return this._decimalPointSymbol&&this._decimalPointSymbol!=="."&&(t=t.replace(this._decimalPointSymbol,".")),parseFloat(t)}doParse(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(this._isCurrency()&&typeof e=="string"&&(e=this.parseInternationalCurrency(e)),typeof e=="number")return r&&(e=this.fetchMinOrMax(e)),o&&(e=this._adjustPrec(e)),ot(e);const s=this.getProp("parser");if(typeof s=="function"){const l=s(e);e=typeof l=="number"?Ne(l):l}if(typeof e=="string"&&/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(e.trim())){const l=parseFloat(e.trim());if(!isNaN(l))return r?this.fetchMinOrMax(l):o?ot(this._adjustPrec(l)):l}if(t&&typeof e=="string"){const l=e.indexOf(".")===-1||e.indexOf(".")>-1&&(e==="0"||e.lastIndexOf("0")u===".").length<2;if(!l||!c)return NaN}return o&&(e=this._adjustPrec(e)),typeof e=="string"&&e.length?r?this.fetchMinOrMax(ot(e)):ot(e):NaN}afterParser(e){const t=this.getProp("parser");return Ne(typeof e=="string"&&typeof t=="function"?t(e):e)}toNumber(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(typeof e=="number")return e;if(typeof e=="string"){const{parser:o}=this.getProps();if(this._isCurrency()&&(e=this.parseInternationalCurrency(e)),typeof o=="function"){const r=o(e);e=typeof r=="number"?Ne(r):r}t&&(e=this._adjustPrec(e))}return ot(e)}isValidNumber(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(typeof e=="number"&&!isNaN(e)){const{min:o,max:r,precision:s}=this.getProps(),l=this._getPrecLen(e),c=t?typeof s=="number"&&l<=s||typeof s!="number":!0;if(e>=o&&e<=r&&c)return!0}return!1}isValidString(e){if(typeof e=="string"&&e.length){const t=this.doParse(e);return this.isValidNumber(t)}return!1}notifyChange(e,t){if(e==null||e==="")this._adapter.notifyChange("",t);else{const o=this.toNumber(e,!0);typeof o=="number"&&!isNaN(o)?(this._adapter.notifyChange(o,t),this.notifyNumberChange(o,t)):this._adapter.notifyChange(this.afterParser(e),t)}}notifyNumberChange(e,t){const{number:o}=this.getStates();this.isValidNumber(e)&&e!==o&&this._adapter.notifyNumberChange(e,t)}updateStates(e,t){this._adapter.updateStates(e,t)}getCurrencyByLocaleCode(){const{localeCode:e}=this.getProps(),t={"zh-CN":"CNY","zh-HK":"HKD","zh-TW":"TWD","ja-JP":"JPY","ko-KR":"KRW","th-TH":"THB","vi-VN":"VND","ms-MY":"MYR","id-ID":"IDR","hi-IN":"INR","ar-SA":"SAR","en-GB":"GBP","de-DE":"EUR","fr-FR":"EUR","it-IT":"EUR","es-ES":"EUR","pt-PT":"EUR","ru-RU":"RUB","en-US":"USD","en-CA":"CAD","es-MX":"MXN","pt-BR":"BRL","es-AR":"ARS","en-AU":"AUD","en-NZ":"NZD","en-ZA":"ZAR","ar-EG":"EGP"};if(t[e])return t[e];const o=e.split("-")[0],r={en:"USD",zh:"CNY",es:"EUR",fr:"EUR",de:"EUR",it:"EUR",ja:"JPY",ko:"KRW",ru:"RUB",ar:"SAR"};return r[o]?r[o]:"USD"}}var Lc=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);rthis.setState({value:t},o),setNumber:(t,o)=>this.setState({number:t},o),setFocusing:(t,o)=>this.setState({focusing:t},o),setHovering:t=>this.setState({hovering:t}),notifyChange:function(){return e.props.onChange(...arguments)},notifyNumberChange:function(){return e.props.onNumberChange(...arguments)},notifyBlur:t=>this.props.onBlur(t),notifyFocus:t=>this.props.onFocus(t),notifyUpClick:(t,o)=>this.props.onUpClick(t,o),notifyDownClick:(t,o)=>this.props.onDownClick(t,o),notifyKeyDown:t=>this.props.onKeyDown(t),registerGlobalEvent:(t,o)=>{t&&typeof o=="function"&&(this.adapter.unregisterGlobalEvent(t),this.adapter.setCache(t,o),document.addEventListener(t,o))},unregisterGlobalEvent:t=>{if(t){const o=this.adapter.getCache(t);document.removeEventListener(t,o),this.adapter.setCache(t,null)}},getInputCharacter:t=>this.inputNode.value[t],recordCursorPosition:()=>{try{this.inputNode&&(this.cursorStart=this.inputNode.selectionStart,this.cursorEnd=this.inputNode.selectionEnd,this.currentValue=this.inputNode.value,this.cursorBefore=this.inputNode.value.substring(0,this.cursorStart),this.cursorAfter=this.inputNode.value.substring(this.cursorEnd))}catch(t){console.warn(t)}},restoreByAfter:t=>{if(Yt(t))return!1;const o=this.inputNode.value,r=o.lastIndexOf(t);return r===-1?!1:r+t.length===o.length?(this.adapter.fixCaret(r,r),!0):!1},restoreCursor:function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.cursorAfter;return Yt(t)?!1:Array.prototype.some.call(t,(o,r)=>{const s=t.substring(r);return e.adapter.restoreByAfter(s)})},fixCaret:(t,o)=>{if(!(t===void 0||o===void 0||!this.inputNode||!this.inputNode.value))try{const r=this.inputNode.selectionStart,s=this.inputNode.selectionEnd;(t!==r||o!==s)&&this.inputNode.setSelectionRange(t,o)}catch{}},setClickUpOrDown:t=>{this.clickUpOrDown=t},updateStates:(t,o)=>{this.setState(t,o)}})}constructor(e){super(e),this.setInputRef=o=>{const{forwardedRef:r}=this.props;this.inputNode=o,r&&typeof r=="object"?r.current=o:typeof r=="function"&&r(o)},this.handleInputFocus=o=>this.foundation.handleInputFocus(o),this.handleInputChange=(o,r)=>this.foundation.handleInputChange(o,r),this.handleInputBlur=o=>this.foundation.handleInputBlur(o),this.handleInputKeyDown=o=>this.foundation.handleInputKeyDown(o),this.handleInputMouseEnter=o=>this.foundation.handleInputMouseEnter(o),this.handleInputMouseLeave=o=>this.foundation.handleInputMouseLeave(o),this.handleInputMouseMove=o=>this.foundation.handleInputMouseMove(o),this.handleUpClick=o=>this.foundation.handleUpClick(o),this.handleDownClick=o=>this.foundation.handleDownClick(o),this.handleMouseUp=o=>this.foundation.handleMouseUp(o),this.handleMouseLeave=o=>this.foundation.handleMouseLeave(o),this.renderButtons=()=>{const{prefixCls:o,disabled:r,innerButtons:s,max:l,min:c}=this.props,{hovering:u,focusing:p,number:d}=this.state,m=r||d===l,f=r||d===c,y=I(`${o}-number-suffix-btns`,{[`${o}-number-suffix-btns-inner`]:s,[`${o}-number-suffix-btns-inner-hover`]:s&&u&&!p}),b=I(`${o}-number-button`,`${o}-number-button-up`,{[`${o}-number-button-up-disabled`]:r,[`${o}-number-button-up-not-allowed`]:m}),x=I(`${o}-number-button`,`${o}-number-button-down`,{[`${o}-number-button-down-disabled`]:r,[`${o}-number-button-down-not-allowed`]:f});return g.createElement("div",{className:y},g.createElement("span",{className:b,onMouseDown:m?A:this.handleUpClick,onMouseUp:this.handleMouseUp,onMouseLeave:this.handleMouseLeave},g.createElement(ua,{size:"extra-small"})),g.createElement("span",{className:x,onMouseDown:f?A:this.handleDownClick,onMouseUp:this.handleMouseUp,onMouseLeave:this.handleMouseLeave},g.createElement(pa,{size:"extra-small"})))},this.renderSuffix=()=>{const{innerButtons:o,suffix:r}=this.props,{hovering:s,focusing:l}=this.state;return o&&(s||l)?this.renderButtons():r},this.foundation=new Mc(this.adapter),this.inputNode=null,this.clickUpOrDown=!1;const t=this._getInitState(e);this.state={value:t.value,number:t.number,focusing:!!e.autofocus||!1,hovering:!1}}_getInitState(e){const t=this.isControlled("value")?e.value:e.defaultValue;if(Yt(t)||t==="")return{value:"",number:null};if(e.currency===!0||typeof e.currency=="string"&&e.currency.trim()!==""){if(typeof t=="number"){const l=this.foundation.doParse(t,!1,!0,!0);return this.foundation.isValidNumber(l)?{value:this.foundation.doFormat(l,!0,!1),number:l}:{value:"",number:null}}return{value:String(t),number:null}}let r=t;typeof t=="number"&&(r=this.foundation.doFormat(t));const s=this.foundation.doParse(r,!1,!0,!0);return this.foundation.isValidNumber(s)?{value:this.foundation.doFormat(s,!0,!0),number:s}:{value:"",number:null}}componentDidUpdate(e){const{value:t,preventScroll:o}=this.props,{focusing:r}=this.state;let s;if(t!==e.value&&!kc(t,e.value)){if(Yt(t)||t==="")s="",this.foundation.updateStates({value:s,number:null});else{let l=t;typeof t=="number"&&(l=this.foundation.doFormat(t));const c=this.foundation.doParse(l,!1,!0,!0),u=typeof t=="number"?t:this.foundation.doParse(l,!1,!1,!1);if(r)if(this.foundation.isValidNumber(c)&&c!==this.state.number){const p={number:c};this.clickUpOrDown&&(p.value=this.foundation.doFormat(p.number,!0),s=p.value),this.foundation.updateStates(p,()=>this.adapter.restoreCursor())}else Sc(u)?this.foundation.updateStates({value:l}):(s=this.foundation.doFormat(u,!1),this.foundation.updateStates({value:s}));else this.foundation.isValidNumber(c)?(s=this.foundation.doFormat(c,!0,!0),this.foundation.updateStates({number:c,value:s})):(s="",this.foundation.updateStates({number:null,value:s}))}if(s&&De(s)&&s!==String(this.props.value))if(this.foundation._isCurrency()){const l=this.foundation.doParse(s),c=typeof this.props.value=="string"?this.foundation.doParse(this.props.value):this.props.value;l!==c&&this.foundation.notifyChange(s,null)}else this.foundation.notifyChange(s,null)}this.clickUpOrDown&&this.props.keepFocus&&this.state.focusing&&document.activeElement!==this.inputNode&&this.inputNode.focus({preventScroll:o})}render(){const e=this.props,{disabled:t,className:o,prefixCls:r,min:s,max:l,step:c,shiftStep:u,precision:p,formatter:d,parser:m,forwardedRef:f,onUpClick:y,onDownClick:b,pressInterval:x,pressTimeout:C,suffix:S,size:k,hideButtons:_,innerButtons:v,style:j,onNumberChange:w,keepFocus:E,defaultValue:O,defaultCurrency:D,currency:P,currencyDisplay:N,minimumFractionDigits:L,maximumFractionDigits:B,showCurrencySymbol:Q,localeCode:z}=e,M=Lc(e,["disabled","className","prefixCls","min","max","step","shiftStep","precision","formatter","parser","forwardedRef","onUpClick","onDownClick","pressInterval","pressTimeout","suffix","size","hideButtons","innerButtons","style","onNumberChange","keepFocus","defaultValue","defaultCurrency","currency","currencyDisplay","minimumFractionDigits","maximumFractionDigits","showCurrencySymbol","localeCode"]),{value:Y,number:fe}=this.state,Se=I(o,`${r}-number`,{[`${r}-number-size-${k}`]:k}),T=this.renderButtons(),F={"aria-disabled":t,step:c};return fe&&(F["aria-valuenow"]=fe),l!==1/0&&(F["aria-valuemax"]=l),s!==-1/0&&(F["aria-valuemin"]=s),g.createElement("div",{className:Se,style:j,onMouseMove:ce=>this.handleInputMouseMove(ce),onMouseEnter:ce=>this.handleInputMouseEnter(ce),onMouseLeave:ce=>this.handleInputMouseLeave(ce)},g.createElement(dt,Object.assign({role:"spinbutton"},F,M,{size:k,disabled:t,ref:this.setInputRef,value:Y,onFocus:this.handleInputFocus,onChange:this.handleInputChange,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,suffix:this.renderSuffix()})),_||v?null:T)}}sn.propTypes={"aria-label":h.string,"aria-labelledby":h.string,"aria-invalid":h.bool,"aria-errormessage":h.string,"aria-describedby":h.string,"aria-required":h.bool,autofocus:h.bool,clearIcon:h.node,className:h.string,defaultValue:h.oneOfType([h.number,h.string]),disabled:h.bool,formatter:h.func,forwardedRef:h.any,hideButtons:h.bool,innerButtons:h.bool,insetLabel:h.node,insetLabelId:h.string,keepFocus:h.bool,max:h.number,min:h.number,parser:h.func,precision:h.number,prefixCls:h.string,pressInterval:h.number,pressTimeout:h.number,preventScroll:h.bool,shiftStep:h.number,showCurrencySymbol:h.bool,step:h.number,style:h.object,suffix:h.any,value:h.oneOfType([h.number,h.string]),scientificNotation:h.oneOfType([h.bool,h.object]),onBlur:h.func,onChange:h.func,onDownClick:h.func,onKeyDown:h.func,onNumberChange:h.func,onUpClick:h.func};sn.defaultProps={forwardedRef:A,innerButtons:!1,keepFocus:!1,max:1/0,min:-1/0,prefixCls:Oc.PREFIX,pressInterval:Ye.DEFAULT_PRESS_TIMEOUT,pressTimeout:Ye.DEFAULT_PRESS_TIMEOUT,shiftStep:Ye.DEFAULT_SHIFT_STEP,showCurrencySymbol:!0,size:Pc.DEFAULT_SIZE,step:Ye.DEFAULT_STEP,onBlur:A,onChange:A,onDownClick:A,onFocus:A,onKeyDown:A,onNumberChange:A,onUpClick:A};const Wn=Yl(g.forwardRef(function(e,t){return g.createElement(Zs,{componentName:"InputNumber"},(o,r,s,l)=>g.createElement(sn,Object.assign({localeCode:r,defaultCurrency:l},e,{forwardedRef:t})))}),sn),gi={PREFIX:`${Re}-radio`},Ic={PREFIX:`${Re}-radioGroup`},ae={DIRECTION_SET:["horizontal","vertical"],DEFAULT_DIRECTION:"horizontal",MODE:["advanced",""],TYPE_DEFAULT:"default",TYPE_BUTTON:"button",TYPE_CARD:"card",TYPE_PURECARD:"pureCard",BUTTON_SIZE:["middle","small","large"]};class Tc extends ve{constructor(e){super(Object.assign({},e))}init(){const e=this._getDisplayValue();this._setValue(e)}_getDisplayValue(){const{value:e,defaultValue:t}=this.getProps();let o;return"value"in this.getProps()?o=e:"defaultValue"in this.getProps()&&(o=t),o}handleChange(e){const t=this.getProp("mode"),o=this.getState("value"),{checked:r,value:s}=e.target,l=this._adapter.isInProps("value"),c=Object.assign(Object.assign({},e),{target:Object.assign(Object.assign({},e.target),{value:s})});t==="advanced"&&!r&&(c.target.value=void 0),l||(t==="advanced"&&!r?this._setValue(void 0):this._setValue(s)),(t==="advanced"||o!==s)&&this._adapter.notifyChange(c)}handlePropValueChange(e){this._setValue(e)}_setValue(e){this._adapter.setValue(e)}destroy(){}}const Bo=g.createContext(null);class Rc extends ve{constructor(){super(...arguments),this.handleFocusVisible=e=>{const{target:t}=e;try{t.matches(":focus-visible")&&this._adapter.setFocusVisible(!0)}catch{Fs(!0,"Warning: [Semi Radio] The current browser does not support the focus-visible")}},this.handleBlur=()=>{this._adapter.setFocusVisible(!1)}}init(){const{children:e,extra:t,extraId:o,addonId:r}=this._adapter.getProps();e&&!r&&this._adapter.setAddonId(),t&&!o&&this._adapter.setExtraId()}setHover(e){this._adapter.setHover(e)}setChecked(e){this._adapter.setChecked(e)}}class Nc extends ve{constructor(e){super(Object.assign({},e))}init(){const e=this._adapter.getProp("checked"),t=this._adapter.getProp("defaultChecked");this.setChecked(e||t)}setChecked(e){this._adapter.setNativeControlChecked(e)}getChecked(){return this._adapter.getProp("checked")}handleChange(e){const t="checked"in this.getProps(),{checked:o}=e.target,r=()=>{e.stopPropagation()},s=()=>{e.preventDefault()},l={target:Object.assign(Object.assign({},this.getProps()),{checked:o}),stopPropagation:r,preventDefault:s};t?this._adapter.notifyChange(l):(this.setChecked(o),this._adapter.notifyChange(l))}destroy(){}}class fn extends me{constructor(e){super(e),this.state={checked:!1},this.foundation=new Nc(this.adapter),this.onChange=this.onChange.bind(this)}get adapter(){return Object.assign(Object.assign({},super.adapter),{setNativeControlChecked:e=>{this.setState({checked:e})},notifyChange:e=>{this.props.onChange(e)}})}componentDidMount(){this.foundation.init()}componentDidUpdate(e){e.checked!==this.props.checked&&this.foundation.setChecked(this.props.checked)}componentWillUnmount(){this.foundation.destroy()}blur(){this.inputEntity.blur()}focus(){const{preventScroll:e}=this.props;this.inputEntity.focus({preventScroll:e})}onChange(e){this.foundation.handleChange(e)}render(){const{disabled:e,mode:t,autoFocus:o,name:r,isButtonRadio:s,isPureCardRadioGroup:l,addonId:c,extraId:u,"aria-label":p,focusInner:d,onInputFocus:m,onInputBlur:f}=this.props,{checked:y}=this.state,b=this.props.prefixCls||gi.PREFIX,x=I({[`${b}-inner`]:!0,[`${b}-inner-checked`]:!!y,[`${b}-inner-buttonRadio`]:s,[`${b}-inner-pureCardRadio`]:l}),C=I({[`${b}-focus`]:d,[`${b}-focus-border`]:d&&!y,[`${b}-inner-display`]:!s});return g.createElement("span",{className:x},g.createElement("input",{ref:S=>{this.inputEntity=S},autoFocus:o,type:t==="advanced"?"checkbox":"radio",checked:!!y,disabled:e,onChange:this.onChange,name:r,"aria-label":p,"aria-labelledby":c,"aria-describedby":u,onFocus:m,onBlur:f}),g.createElement("span",{className:C},y?g.createElement(dl,null):null))}}fn.contextType=Bo;fn.propTypes={checked:h.bool,disabled:h.bool,isButtonRadio:h.bool,onChange:h.func,mode:h.oneOf(["advanced",""]),"aria-label":h.string,focusInner:h.bool,onInputFocus:h.func,onInputBlur:h.func,preventScroll:h.bool};fn.defaultProps={onChange:A,isButtonRadio:!1};var $c=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{const{onChange:o}=this.props;if(this.isInGroup()){const{radioGroup:r}=this.context;r.onChange&&r.onChange(t)}!("checked"in this.props)&&this.foundation.setChecked(t.target.checked),o&&o(t)},this.handleMouseEnter=t=>{this.props.onMouseEnter(t),this.foundation.setHover(!0)},this.handleMouseLeave=t=>{this.props.onMouseLeave(t),this.foundation.setHover(!1)},this.handleFocusVisible=t=>{this.foundation.handleFocusVisible(t)},this.handleBlur=t=>{this.foundation.handleBlur()},this.state={hover:!1,addonId:e.addonId,extraId:e.extraId,checked:e.checked||e.defaultChecked||!1},this.foundation=new Rc(this.adapter),this.radioEntity=null}componentDidUpdate(e){this.props.checked!==e.checked&&(zs(this.props.checked)?this.foundation.setChecked(!1):Vl(this.props.checked)&&this.foundation.setChecked(this.props.checked))}get adapter(){return Object.assign(Object.assign({},super.adapter),{setHover:e=>{this.setState({hover:e})},setAddonId:()=>{this.setState({addonId:So({prefix:"addon"})})},setChecked:e=>{this.setState({checked:e})},setExtraId:()=>{this.setState({extraId:So({prefix:"extra"})})},setFocusVisible:e=>{this.setState({focusVisible:e})}})}isInGroup(){return this.context&&this.context.radioGroup}focus(){this.radioEntity.focus()}blur(){this.radioEntity.blur()}render(){const e=this.props,{addonClassName:t,addonStyle:o,disabled:r,style:s,className:l,prefixCls:c,displayMode:u,children:p,extra:d,mode:m,type:f,value:y,name:b}=e,x=$c(e,["addonClassName","addonStyle","disabled","style","className","prefixCls","displayMode","children","extra","mode","type","value","name"]);let C,S,k,_,v,j,w,E,O;const{hover:D,addonId:P,extraId:N,focusVisible:L,checked:B}=this.state,Q={checked:B,disabled:r};this.isInGroup()?(C=this.context.radioGroup.value===y,S=r||this.context.radioGroup.disabled,k=this.context.mode,_=this.context.radioGroup.isButtonRadio,v=this.context.radioGroup.isCardRadio,j=this.context.radioGroup.isPureCardRadio,E=this.context.radioGroup.buttonSize,O=c||this.context.radioGroup.prefixCls,Q.checked=C,Q.disabled=S):(C=B,S=r,k=m,w=f==="button",O=c,_=f===ae.TYPE_BUTTON,j=f===ae.TYPE_PURECARD,v=f===ae.TYPE_CARD||j);const z=typeof _>"u"?w:_,M=O||gi.PREFIX,Y=v||j||z,fe=I(M,{[`${M}-disabled`]:S,[`${M}-checked`]:C,[`${M}-${u}`]:!!u,[`${M}-buttonRadioComponent`]:w,[`${M}-buttonRadioGroup`]:_,[`${M}-buttonRadioGroup-${E}`]:_&&E,[`${M}-cardRadioGroup`]:v,[`${M}-cardRadioGroup_disabled`]:S&&v,[`${M}-cardRadioGroup_checked`]:v&&C&&!S,[`${M}-cardRadioGroup_checked_disabled`]:v&&C&&S,[`${M}-cardRadioGroup_hover`]:v&&!C&&D&&!S,[l]:!!l,[`${M}-focus`]:L&&(v||j)}),Se=this.isInGroup()&&this.context.radioGroup.name,T=I({[`${M}-addon`]:!z,[`${M}-addon-buttonRadio`]:z,[`${M}-addon-buttonRadio-checked`]:z&&C,[`${M}-addon-buttonRadio-disabled`]:z&&S,[`${M}-addon-buttonRadio-hover`]:z&&!C&&!S&&D,[`${M}-addon-buttonRadio-${E}`]:z&&E,[`${M}-focus`]:L&&z},t),F=()=>!p&&!d?null:g.createElement("div",{className:I([`${M}-content`,{[`${M}-isCardRadioGroup_content`]:v}])},p?g.createElement("span",{className:T,style:o,id:P,"x-semi-prop":"children"},p):null,d&&!z?g.createElement("div",{className:`${M}-extra`,id:N,"x-semi-prop":"extra"},d):null);return g.createElement("label",Object.assign({style:s,className:fe,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},this.getDataAttr(x)),g.createElement(fn,Object.assign({},this.props,Q,{mode:k,name:b??Se,isButtonRadio:z,isPureCardRadioGroup:j,onChange:this.onChange,ref:J=>{this.radioEntity=J},addonId:p&&P,extraId:d&&N,focusInner:L&&!Y,onInputFocus:this.handleFocusVisible,onInputBlur:this.handleBlur})),F())}}et.contextType=Bo;et.propTypes={autoFocus:h.bool,checked:h.bool,defaultChecked:h.bool,value:h.any,style:h.object,className:h.string,disabled:h.bool,prefixCls:h.string,displayMode:h.oneOf(["vertical",""]),onChange:h.func,onMouseEnter:h.func,onMouseLeave:h.func,mode:h.oneOf(ae.MODE),extra:h.node,addonStyle:h.object,addonClassName:h.string,type:h.oneOf([ae.TYPE_DEFAULT,ae.TYPE_BUTTON,ae.TYPE_CARD,ae.TYPE_PURECARD]),"aria-label":h.string,preventScroll:h.bool};et.defaultProps={autoFocus:!1,defaultChecked:!1,value:void 0,style:void 0,onMouseEnter:A,onMouseLeave:A,mode:"",type:"default"};et.elementType="Radio";var Dc=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{this.foundation.handleChange(t)},this.getFormatName=()=>this.props.name||"default",this.state={value:e.value||e.defaultValue},this.foundation=new Tc(this.adapter)}componentDidMount(){this.foundation.init()}componentDidUpdate(e){typeof e.value=="number"&&isNaN(e.value)&&typeof this.props.value=="number"&&isNaN(this.props.value)||e.value!==this.props.value&&this.foundation.handlePropValueChange(this.props.value)}componentWillUnmount(){this.foundation.destroy()}get adapter(){return Object.assign(Object.assign({},super.adapter),{setValue:e=>{this.setState({value:e})},getProps:()=>this.props,isInProps:e=>e in this.props,notifyChange:e=>{this.props.onChange&&this.props.onChange(e)}})}render(){const e=this.props,{children:t,options:o,mode:r,prefixCls:s,className:l,style:c,direction:u,type:p,buttonSize:d,id:m}=e,f=Dc(e,["children","options","mode","prefixCls","className","style","direction","type","buttonSize","id"]),y=p===ae.TYPE_BUTTON,b=p===ae.TYPE_PURECARD,x=p===ae.TYPE_CARD||b,C=p===ae.TYPE_DEFAULT,S=s||Ic.PREFIX,k=I(l,{[S]:!0,[`${S}-wrapper`]:!0,[`${S}-${u}`]:u&&!y,[`${S}-${u}-default`]:u&&C,[`${S}-${u}-card`]:u&&x,[`${S}-buttonRadio`]:y}),_=this.state.value;let v;return o?v=(o||[]).map((j,w)=>typeof j=="string"?g.createElement(et,{key:w,disabled:this.props.disabled,value:j},j):g.createElement(et,{key:w,disabled:j.disabled||this.props.disabled,value:j.value,extra:j.extra,className:j.className,style:j.style,addonId:j.addonId,addonStyle:j.addonStyle,addonClassName:j.addonClassName,extraId:j.extraId},j.label)):t&&(v=g.Children.map(t,(j,w)=>g.isValidElement(j)?g.cloneElement(j,{key:w}):null)),g.createElement("div",Object.assign({className:k,style:c,id:m,"aria-label":this.props["aria-label"],"aria-invalid":this.props["aria-invalid"],"aria-errormessage":this.props["aria-errormessage"],"aria-labelledby":this.props["aria-labelledby"],"aria-describedby":this.props["aria-describedby"],"aria-required":this.props["aria-required"]},this.getDataAttr(f)),g.createElement(Bo.Provider,{value:{radioGroup:{onChange:this.onChange,value:_,disabled:this.props.disabled,name:this.getFormatName(),isButtonRadio:y,isCardRadio:x,isPureCardRadio:b,buttonSize:d,prefixCls:s},mode:r}},v))}}Ke.propTypes={defaultValue:h.any,disabled:h.bool,name:h.string,options:h.array,buttonSize:h.oneOf(ae.BUTTON_SIZE),type:h.oneOf([ae.TYPE_DEFAULT,ae.TYPE_BUTTON,ae.TYPE_CARD,ae.TYPE_PURECARD]),value:h.any,onChange:h.func,children:h.node,prefixCls:h.string,className:h.string,style:h.object,direction:h.oneOf(ae.DIRECTION_SET),mode:h.oneOf(ae.MODE),"aria-label":h.string,"aria-describedby":h.string,"aria-errormessage":h.string,"aria-invalid":h.bool,"aria-labelledby":h.string,"aria-required":h.bool,id:h.string};Ke.defaultProps={disabled:!1,onChange:A,direction:ae.DEFAULT_DIRECTION,mode:"",type:ae.TYPE_DEFAULT,buttonSize:"middle"};class Le extends et{}Le.Group=Ke;class Uo extends ve{constructor(e){super(Object.assign(Object.assign({},Uo.defaultAdapter),e)),this.handleMouseInSideChange=t=>{this._adapter.handleMouseInSideChange(t)},this.getInputWrapperRect=()=>this._adapter.getInputWrapperRect()}hasToast(e){return this._adapter.getState("list").map(o=>{let{id:r}=o;return r}).includes(e)}addToast(e){const t=this._adapter.getState("list");t.push(e),this._adapter.updateToast(t,[],[])}updateToast(e,t){let o=this._adapter.getState("list");o=o.map(s=>s.id===e?Object.assign(Object.assign({},s),t):s);const r=o.filter(s=>s.id===e);this._adapter.updateToast(o,[],r)}removeToast(e){let t=this._adapter.getState("list");const o=[];t=t.filter(r=>r.id===e?(o.push(r),!1):!0),this._adapter.updateToast(t,o,[])}destroyAll(){const e=this._adapter.getState("list");e.length>0&&this._adapter.updateToast([],e,[])}}const Er=`${Re}-toast`,lt={PREFIX:Er,WRAPPER:`${Er}-wrapper`},jt={types:["warning","success","info","error","default"],themes:["normal","light"],directions:["ltr","rtl"]},Ac={duration:3};class Vo extends ve{constructor(e){super(Object.assign(Object.assign({},Vo.defaultAdapter),e)),this._timer=null,this._id=null}init(){this.startCloseTimer_(),this._id=this._adapter.getProp("id")}destroy(){this.clearCloseTimer_()}startCloseTimer_(){const e=this._adapter.getProp("duration");e&&Mo(e)&&(this._timer=setTimeout(()=>{this.close()},e*1e3))}close(e){e&&e.stopPropagation(),this._adapter.notifyWrapperToRemove(this._id),this._adapter.notifyClose()}clearCloseTimer_(){this._timer&&(clearTimeout(this._timer),this._timer=null)}restartCloseTimer(){this.clearCloseTimer_(),this.startCloseTimer_()}}const Me=lt.PREFIX;let tt=class extends me{constructor(e){super(e),this.toastEle=g.createRef(),this.clearCloseTimer=()=>{this.foundation.clearCloseTimer_()},this.startCloseTimer=()=>{this.foundation.startCloseTimer_()},this.restartCloseTimer=()=>{this.foundation.restartCloseTimer()},this.state={},this.foundation=new Vo(this.adapter)}get adapter(){return Object.assign(Object.assign({},super.adapter),{notifyWrapperToRemove:e=>{this.props.close(e)},notifyClose:()=>{this.props.onClose()}})}componentDidMount(){this.foundation.init()}componentWillUnmount(){this.foundation.destroy()}close(e){this.foundation.close(e)}renderIcon(){const{type:e,icon:t}=this.props,r={warning:g.createElement(Ys,null),success:g.createElement(Ks,null),info:g.createElement(Qs,null),error:g.createElement(Ws,null)}[e],s="large",l=I(`${Me}-icon`,`${Me}-icon-${e}`);return t?Ge(t)?g.cloneElement(t,{size:s,className:`${Me}-icon`}):t:e&&r?g.cloneElement(r,{size:s,className:l}):null}render(){const{content:e,type:t,theme:o,showClose:r,textMaxWidth:s,className:l,style:c}=this.props,u=this.props.direction||this.context.direction,p=I(Me,l,{[`${Me}-${t}`]:!0,[`${Me}-${o}`]:o==="light",[`${Me}-rtl`]:u==="rtl"}),d={};d.maxWidth=s;const m="borderless",f="small",y=this.props.positionInList?this.props.positionInList.length-this.props.positionInList.index-1:0,b=g.createElement("div",{ref:this.toastEle,role:"alert","aria-label":`${t||"default"} type`,className:p,style:Object.assign(Object.assign({},c),{transform:`translate3d(0,0,${y*-10}px)`}),onMouseEnter:this.clearCloseTimer,onMouseLeave:this.startCloseTimer,onAnimationStart:this.props.onAnimationStart,onAnimationEnd:this.props.onAnimationEnd},g.createElement("div",{className:`${Me}-content`},this.renderIcon(),g.createElement("span",{className:`${Me}-content-text`,style:d,"x-semi-prop":"content"},e),r&&g.createElement("div",{className:`${Me}-close-button`},g.createElement(Gs,{onClick:x=>this.close(x),type:"tertiary",icon:g.createElement(ln,{"x-semi-prop":"icon"}),theme:m,size:f}))));if(this.props.stack){const x=this.props.stackExpanded&&this.toastEle.current&&getComputedStyle(this.toastEle.current).height||0;return g.createElement("div",{className:`${Me}-zero-height-wrapper`,style:{height:x}},b)}else return b}};tt.contextType=Us;tt.propTypes={onClose:h.func,content:h.node,close:h.func,duration:h.number,theme:h.oneOf(jt.themes),type:h.oneOf(jt.types),textMaxWidth:h.oneOfType([h.string,h.number]),style:h.object,className:h.string,showClose:h.bool,stack:h.bool,stackExpanded:h.bool,icon:h.node,direction:h.oneOf(jt.directions)};tt.__SemiComponentName__="Toast";tt.defaultProps=an(tt.__SemiComponentName__,{onClose:A,content:"",close:A,duration:Ac.duration,textMaxWidth:450,showClose:!0,stack:!1,stackExpanded:!1,theme:"normal"});var zc=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r{var{afterClose:t}=n,o=zc(n,["afterClose"]);const[r,s]=a.useState(!0),l=()=>{s(!1)};return g.useImperativeHandle(e,()=>({close:()=>{s(!1)}})),a.useEffect(()=>{r||t(o.id)},[r]),r?g.createElement(tt,Object.assign({},o,{close:l})):null},Bc=g.forwardRef(Fc),vt={motion:!0,zIndex:1010,duration:3};function Uc(){const[n,e]=g.useState([]);function t(o,r){return e(s=>[{element:o,config:r},...s]),s=>{e(l=>l.filter(c=>{let{config:u}=c;return u.id!==s}))}}return[n,t]}function Vc(){const[n,e]=Uc(),t=a.useRef(new Map),o=s=>{const l=jo("semi_toast_"),c=Object.assign(Object.assign({},s),{id:l});let u;const p=g.createElement(Bc,Object.assign({},c,{key:l,afterClose:d=>u(d),ref:d=>{var m;t.current.set(l,{close:(m=d==null?void 0:d.close)!==null&&m!==void 0?m:A})}}));return u=e(p,Object.assign({},c)),l},r=s=>{var l;const{close:c}=(l=t.current.get(s))!==null&&l!==void 0?l:{};c==null||c()};return[{success:s=>o(Object.assign(Object.assign(Object.assign({},vt),s),{type:"success"})),info:s=>o(Object.assign(Object.assign(Object.assign({},vt),s),{type:"info"})),error:s=>o(Object.assign(Object.assign(Object.assign({},vt),s),{type:"error"})),warning:s=>o(Object.assign(Object.assign(Object.assign({},vt),s),{type:"warning"})),open:s=>o(Object.assign(Object.assign(Object.assign({},vt),s),{type:"default"})),close:s=>r(s)},g.createElement(g.Fragment,null,Array.isArray(n)&&n.length?g.createElement(g.Fragment,null,n.map(s=>s.element)):null)]}const Kc=()=>{var n;return n=class re extends me{constructor(t){super(t),this.stack=!1,this.innerWrapperRef=g.createRef(),this.handleMouseEnter=o=>{this.stack&&this.foundation.handleMouseInSideChange(!0)},this.handleMouseLeave=o=>{var r;this.stack&&(!((r=this.foundation.getInputWrapperRect())===null||r===void 0)&&r.height)&&this.foundation.handleMouseInSideChange(!1)},this.state={list:[],removedItems:[],updatedItems:[],mouseInSide:!1},this.foundation=new Uo(this.adapter)}get adapter(){return Object.assign(Object.assign({},super.adapter),{updateToast:(t,o,r)=>{this.setState({list:t,removedItems:o,updatedItems:r})},handleMouseInSideChange:t=>{this.setState({mouseInSide:t})},getInputWrapperRect:()=>{var t;return(t=this.innerWrapperRef.current)===null||t===void 0?void 0:t.getBoundingClientRect()}})}static create(t){var o,r,s;const l=(o=t.id)!==null&&o!==void 0?o:jo("toast"),c=((s=(r=ye===null||ye===void 0?void 0:ye.config)===null||r===void 0?void 0:r.overrideDefaultProps)===null||s===void 0?void 0:s.Toast)||{},u=Object.assign(Object.assign(Object.assign({},re.defaultOpts),c),t);if(re.ref){const p=document.querySelector(`#${this.wrapperId}`);["top","left","bottom","right"].map(d=>{d in u&&(p.style[d]=typeof u[d]=="number"?`${u[d]}px`:u[d])}),!!u.stack!==re.ref.stack&&(re.ref.stack=!!u.stack),re.ref.has(l)?re.ref.update(l,Object.assign(Object.assign({},u),{id:l})):re.ref.add(Object.assign(Object.assign({},u),{id:l}))}else{const p=document.createElement("div");this.wrapperId||(this.wrapperId=jo("toast-wrapper").slice(0,26)),p.className=lt.WRAPPER,p.id=this.wrapperId,p.style.zIndex=String(typeof t.zIndex=="number"?t.zIndex:u.zIndex),["top","left","bottom","right"].map(d=>{if(d in u){const m=u[d];p.style[d]=typeof m=="number"?`${m}px`:m}}),u.getPopupContainer?u.getPopupContainer().appendChild(p):document.body.appendChild(p),Vs(g.createElement(re,{ref:d=>{d&&(re.ref=d,d.add(Object.assign(Object.assign({},u),{id:l})),d.stack=!!u.stack)}}),p)}return l}static close(t){re.ref&&re.ref.remove(t)}static destroyAll(){var t;if(re.ref){re.ref.destroyAll();const o=document.querySelector(`#${this.wrapperId}`);o&&(Hs(o),(t=o.parentNode)===null||t===void 0||t.removeChild(o)),re.ref=null,this.wrapperId=null}}static getWrapperId(){return this.wrapperId}static info(t){var o,r;typeof t=="string"&&(t={content:t});const s=((r=(o=ye===null||ye===void 0?void 0:ye.config)===null||o===void 0?void 0:o.overrideDefaultProps)===null||r===void 0?void 0:r.Toast)||{};return this.create(Object.assign(Object.assign(Object.assign(Object.assign({},re.defaultOpts),s),t),{type:"info"}))}static warning(t){var o,r;typeof t=="string"&&(t={content:t});const s=((r=(o=ye===null||ye===void 0?void 0:ye.config)===null||o===void 0?void 0:o.overrideDefaultProps)===null||r===void 0?void 0:r.Toast)||{};return this.create(Object.assign(Object.assign(Object.assign(Object.assign({},re.defaultOpts),s),t),{type:"warning"}))}static error(t){var o,r;typeof t=="string"&&(t={content:t});const s=((r=(o=ye===null||ye===void 0?void 0:ye.config)===null||o===void 0?void 0:o.overrideDefaultProps)===null||r===void 0?void 0:r.Toast)||{};return this.create(Object.assign(Object.assign(Object.assign(Object.assign({},re.defaultOpts),s),t),{type:"error"}))}static success(t){var o,r;typeof t=="string"&&(t={content:t});const s=((r=(o=ye===null||ye===void 0?void 0:ye.config)===null||o===void 0?void 0:o.overrideDefaultProps)===null||r===void 0?void 0:r.Toast)||{};return this.create(Object.assign(Object.assign(Object.assign(Object.assign({},re.defaultOpts),s),t),{type:"success"}))}static config(t){["top","left","bottom","right"].forEach(o=>{o in t&&(re.defaultOpts[o]=t[o])}),typeof t.theme=="string"&&jt.themes.includes(t.theme)&&(re.defaultOpts.theme=t.theme),typeof t.zIndex=="number"&&(re.defaultOpts.zIndex=t.zIndex),typeof t.duration=="number"&&(re.defaultOpts.duration=t.duration),typeof t.getPopupContainer=="function"&&(re.defaultOpts.getPopupContainer=t.getPopupContainer)}has(t){return this.foundation.hasToast(t)}add(t){return this.foundation.addToast(t)}update(t,o){return this.foundation.updateToast(t,o)}remove(t){return this.foundation.removeToast(t)}destroyAll(){return this.foundation.destroyAll()}render(){let{list:t}=this.state;const{removedItems:o,updatedItems:r}=this.state;t=Array.from(new Set([...t,...o]));const s=r.map(c=>{let{id:u}=c;return u}),l=c=>{var u;!((u=c==null?void 0:c.foundation)===null||u===void 0)&&u._id&&s.includes(c.foundation._id)&&c.foundation.restartCloseTimer()};return g.createElement(g.Fragment,null,g.createElement("div",{className:I({[`${lt.PREFIX}-innerWrapper`]:!0,[`${lt.PREFIX}-innerWrapper-hover`]:this.state.mouseInSide}),ref:this.innerWrapperRef,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},t.map((c,u)=>{const p=o.find(m=>m.id===c.id)!==void 0,d=p?"leave":"enter";return g.createElement(ko,{key:c.id,motion:c.motion,animationState:d,startClassName:p?`${lt.PREFIX}-animation-hide`:`${lt.PREFIX}-animation-show`,onAnimationEnd:m=>{d==="leave"&&this.setState(f=>{var y;return!((y=f.removedItems)===null||y===void 0)&&y.some(b=>b.id===c.id)?Object.assign(Object.assign({},f),{removedItems:f.removedItems.filter(b=>b.id!==c.id)}):null})}},m=>{let{animationClassName:f,animationEventsNeedBind:y,isAnimating:b}=m;return g.createElement(tt,Object.assign({},c,{stack:this.stack,stackExpanded:this.state.mouseInSide,positionInList:{length:t.length,index:u},className:I({[c.className]:!!c.className,[f]:!0})},y,{style:Object.assign({},c.style),close:x=>this.remove(x),ref:l}))})})))}},n.defaultOpts={motion:!0,zIndex:1010,content:""},n.propTypes={content:h.node,duration:h.number,onClose:h.func,icon:h.node,direction:h.oneOf(jt.directions),stack:h.bool},n.defaultProps={},n};class Wc{static create(e){const t=Kc();return t.useToast=Vc,e&&t.config(e),t}}const X=Wc.create(),Hn=n=>n==="vertical"?["bottom","top"]:["right","left"],mt=(n,e)=>n.endsWith("px")?Number(n.replace("px","")):n.endsWith("%")?Number(n.replace("%",""))/100*e:typeof n>"u"?n:Number(n),Xt=function(n,e,t,o){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;e=e??"0%",t=t??"100%";const s=mt(e,o),l=mt(t,o);return nl},Zn=(n,e,t,o,r)=>{e=e??"0%",t=t??"100%";const s=mt(e,o),l=mt(t,o);return nl?l:n},Or=(n,e)=>{if(e==="horizontal"){const t=parseFloat(n.paddingLeft),o=parseFloat(n.paddingRight),r=parseFloat(n.borderLeftWidth),s=parseFloat(n.borderRightWidth);return t+o+r+s}else{const t=parseFloat(n.paddingTop),o=parseFloat(n.paddingBottom),r=parseFloat(n.borderTopWidth),s=parseFloat(n.borderBottomWidth);return t+o+r+s}};class Hc extends ve{constructor(e){super(Object.assign({},e))}init(){this._adapter.registerEvents()}destroy(){this._adapter.unregisterEvents()}}class Zc extends ve{constructor(e){super(Object.assign({},e))}init(){}destroy(){}}class qc extends ve{constructor(e){super(Object.assign({},e)),this.registerEvents=()=>{this._adapter.registerEvents(this.type)},this.unregisterEvents=()=>{this._adapter.unregisterEvents(this.type)},this.onResizeStart=(t,o,r)=>{this.type=r;let{clientX:s,clientY:l}=o,c=this._adapter.getItem(t),u=this._adapter.getItem(t+1),p,d;const m=this.window.getComputedStyle(c),f=this.window.getComputedStyle(u);p=Or(m,this.direction)+this.itemMinusMap.get(t),d=Or(f,this.direction)+this.itemMinusMap.get(t+1);let y=(this.direction==="horizontal"?c.offsetWidth:c.offsetHeight)+this.itemMinusMap.get(t),b=(this.direction==="horizontal"?u.offsetWidth:u.offsetHeight)+this.itemMinusMap.get(t+1);const x=this.getStates();this.setState({isResizing:!0,originalPosition:{x:s,y:l,lastItemSize:y,nextItemSize:b,lastOffset:p,nextOffset:d},backgroundStyle:Object.assign(Object.assign({},x.backgroundStyle),{cursor:this.window.getComputedStyle(o.target).cursor||"auto"}),curHandler:t}),this.registerEvents();let C=this._adapter.getItemStart(t),S=this._adapter.getItemStart(t+1),[k,_]=Hn(this.direction);C&&C(o,k),S&&S(o,_)},this.onMouseMove=t=>{this.onResizing(t)},this.onTouchMove=t=>{t.preventDefault(),this.onResizing(t)},this.onResizing=t=>{const o=this.getStates();if(!o.isResizing)return;const{curHandler:r,originalPosition:s}=o;let{x:l,y:c,lastItemSize:u,nextItemSize:p,lastOffset:d,nextOffset:m}=s,{clientX:f,clientY:y}=this.type==="mouse"?t:t.targetTouches[0];const b=this.getProps(),{direction:x}=b;let C=this._adapter.getItem(r),S=this._adapter.getItem(r+1),k=this.groupSize,_=x==="horizontal"?f-l:y-c,v=u+_,j=p-_,w=Xt(v,this._adapter.getItemMin(r),this._adapter.getItemMax(r),k,d),E=Xt(j,this._adapter.getItemMin(r+1),this._adapter.getItemMax(r+1),k,m);w&&(v=Zn(v,this._adapter.getItemMin(r),this._adapter.getItemMax(r),k,d),j=u+p-v),E&&(j=Zn(j,this._adapter.getItemMin(r+1),this._adapter.getItemMax(r+1),k,m),v=u+p-j);let O=this.itemPercentMap.get(r),D=this.itemPercentMap.get(r+1),P=v/k*100,N=O+D-P;this.itemPercentMap.set(r,P),this.itemPercentMap.set(r+1,N),x==="horizontal"?(C.style.width=`calc(${P}% - ${this.itemMinusMap.get(r)}px)`,S.style.width=`calc(${N}% - ${this.itemMinusMap.get(r+1)}px)`):x==="vertical"&&(C.style.height=`calc(${P}% - ${this.itemMinusMap.get(r)}px)`,S.style.height=`calc(${N}% - ${this.itemMinusMap.get(r+1)}px)`);let L=this._adapter.getItemChange(r),B=this._adapter.getItemChange(r+1),[Q,z]=Hn(this.direction);L&&L({width:C.offsetWidth,height:C.offsetHeight},t,Q),B&&B({width:S.offsetWidth,height:S.offsetHeight},t,z)},this.onResizeEnd=t=>{const{curHandler:o}=this.getStates();let r=this._adapter.getItem(o),s=this._adapter.getItem(o+1),l=this._adapter.getItemEnd(o),c=this._adapter.getItemEnd(o+1),[u,p]=Hn(this.direction);l&&l({width:r.offsetWidth,height:r.offsetHeight},t,u),c&&c({width:s.offsetWidth,height:s.offsetHeight},t,p),this.setState({isResizing:!1,curHandler:null}),this.unregisterEvents()},this.initSpace=()=>{const t=this.getProps(),{direction:o}=t;let r=new Array(this._adapter.getHandlerCount()).fill(0),s=this.groupSize;this.totalMinus=0;for(let d=0;dx&&console.warn("[Semi ResizableItem]: min size bigger than max size");let C=this._adapter.getItemDefaultSize(d);if(C){let S;if(typeof C=="string"){if(C.endsWith("%"))S=parseFloat(C.slice(0,-1)),this.itemPercentMap.set(d,S);else if(C.endsWith("px"))S=parseFloat(C.slice(0,-2))/s*100,this.itemPercentMap.set(d,S);else if(/^-?\d+(\.\d+)?$/.test(C)){c.set(d,parseFloat(C)),u+=parseFloat(C);continue}}else if(typeof C=="number"){c.set(d,C),u+=C;continue}l+=S,o==="horizontal"?m.style.width=`calc(${S}% - ${this.itemMinusMap.get(d)}px)`:m.style.height=`calc(${S}% - ${this.itemMinusMap.get(d)}px)`,Sx&&console.warn("[Semi ResizableGroup]: item size bigger than max size")}else c.set(d,1),u+=1}let p=100-l;l>100&&(console.warn("[Semi ResizableGroup]: total Size bigger than 100%"),p=10),c.forEach((d,m)=>{const f=this._adapter.getItem(m),y=d/u*p;this.itemPercentMap.set(m,y),o==="horizontal"?f.style.width=`calc(${y}% - ${this.itemMinusMap.get(m)}px)`:f.style.height=`calc(${y}% - ${this.itemMinusMap.get(m)}px)`})},this.ensureConstraint=_o(()=>{const{direction:t}=this.getProps(),o=this._adapter.getItemCount();let r=!0;for(let s=0;s{const{notifyResizeStart:o}=this.context;o(this.handlerIndex,t,"mouse")},this.onTouchStart=t=>{const{notifyResizeStart:o}=this.context;o(this.handlerIndex,t.targetTouches[0],"touch")},this.getHandler=()=>this.handlerRef.current,this.state={},this.handlerRef=a.createRef(),this.foundation=new Hc(this.adapter),this.handlerIndex=-1}componentDidMount(){this.foundation.init(),this.handlerIndex===-1&&(this.handlerIndex=this.context.registerHandler(this.handlerRef))}componentDidUpdate(e){}componentWillUnmount(){this.foundation.destroy()}get adapter(){return Object.assign(Object.assign({},super.adapter),{registerEvents:()=>{this.handlerRef.current.addEventListener("mousedown",this.onMouseDown),this.handlerRef.current.addEventListener("touchstart",this.onTouchStart)},unregisterEvents:()=>{this.handlerRef.current.removeEventListener("mousedown",this.onMouseDown),this.handlerRef.current.removeEventListener("touchstart",this.onTouchStart)}})}render(){const{style:e,className:t,children:o}=this.props,{direction:r}=this.context;return g.createElement("div",{className:I(t,Pr+"-handler",Pr+"-handler-"+r),style:e,ref:this.handlerRef},o??g.createElement(nl,{size:"inherit",style:{rotate:this.context.direction==="horizontal"?"0deg":"90deg"}}))}}yn.propTypes={children:h.node,direction:h.string,onResizeStart:h.func,className:h.string,disabled:h.bool,style:h.object};yn.defaultProps={};yn.contextType=gn;var Qc=function(n,e){var t={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&e.indexOf(o)<0&&(t[o]=n[o]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(n);r0&&arguments[0]!==void 0?arguments[0]:"mouse";t.window&&(o==="mouse"?(t.window.addEventListener("mousemove",t.foundation.onMouseMove),t.window.addEventListener("mouseup",t.foundation.onResizeEnd),t.window.addEventListener("mouseleave",t.foundation.onResizeEnd)):(t.window.addEventListener("touchmove",t.foundation.onTouchMove,{passive:!1}),t.window.addEventListener("touchend",t.foundation.onResizeEnd),t.window.addEventListener("touchcancel",t.foundation.onResizeEnd)))},this.unregisterEvent=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"mouse";t.window&&(o==="mouse"?(t.window.removeEventListener("mousemove",t.foundation.onMouseMove),t.window.removeEventListener("mouseup",t.foundation.onResizeEnd),t.window.removeEventListener("mouseleave",t.foundation.onResizeEnd)):(t.window.removeEventListener("touchmove",t.foundation.onTouchMove,{passive:!1}),t.window.removeEventListener("touchend",t.foundation.onResizeEnd),t.window.removeEventListener("touchcancel",t.foundation.onResizeEnd)))},this.registerItem=(o,r,s,l,c,u,p)=>{if(Array.from(this.itemRefs.values()).some(m=>m===o))return-1;let d=this.itemRefs.size;return this.itemRefs.set(d,o),this.itemMinMap.set(d,r),this.itemMaxMap.set(d,s),this.itemDefaultSizeList.set(d,l),this.itemResizeStart.set(d,c),this.itemResizing.set(d,u),this.itemResizeEnd.set(d,p),d},this.registerHandler=o=>{if(Array.from(this.handlerRefs.values()).some(s=>s===o))return-1;let r=this.handlerRefs.size;return this.handlerRefs.set(r,o),r},this.getGroupSize=()=>this.groupSize,this.groupRef=a.createRef(),this.foundation=new qc(this.adapter),this.state={isResizing:!1,originalPosition:{x:0,y:0,lastItemSize:0,nextItemSize:0,lastOffset:0,nextOffset:0},backgroundStyle:{cursor:"auto"},curHandler:null,contextValue:{direction:e.direction,registerItem:this.registerItem,registerHandler:this.registerHandler,notifyResizeStart:this.foundation.onResizeStart,getGroupSize:this.getGroupSize}}}componentDidMount(){this.foundation.init(),window.addEventListener("resize",this.foundation.ensureConstraint)}componentDidUpdate(e){this.props.direction!==e.direction&&(this.setState(t=>Object.assign(Object.assign({},t),{contextValue:Object.assign(Object.assign({},t.contextValue),{direction:this.props.direction})})),this.foundation.direction=this.props.direction)}componentWillUnmount(){this.foundation.destroy(),window.removeEventListener("resize",this.foundation.ensureConstraint)}get adapter(){return Object.assign(Object.assign({},super.adapter),{getGroupRef:()=>this.groupRef.current,getItem:e=>this.itemRefs.get(e).current,getItemCount:()=>this.itemRefs.size,getHandler:e=>this.handlerRefs.get(e).current,getHandlerCount:()=>this.handlerRefs.size,getItemMin:e=>this.itemMinMap.get(e),getItemMax:e=>this.itemMaxMap.get(e),getItemChange:e=>this.itemResizing.get(e),getItemEnd:e=>this.itemResizeEnd.get(e),getItemStart:e=>this.itemResizeStart.get(e),getItemDefaultSize:e=>this.itemDefaultSizeList.get(e),registerEvents:this.registerEvent,unregisterEvents:this.unregisterEvent})}get window(){var e;return(e=this.groupRef.current.ownerDocument.defaultView)!==null&&e!==void 0?e:null}render(){const e=this.props,{children:t,direction:o,className:r}=e,s=Qc(e,["children","direction","className"]);return g.createElement(gn.Provider,{value:this.state.contextValue},g.createElement("div",Object.assign({style:{flexDirection:o==="vertical"?"column":"row"},ref:this.groupRef,className:I(r,_r+"-group")},s),this.state.isResizing&&g.createElement("div",{style:this.state.backgroundStyle,className:I(r,_r+"-background")}),t))}}bn.propTypes={};bn.defaultProps={direction:"horizontal"};bn.contextType=gn;var Yc=Object.defineProperty,Mr=Object.getOwnPropertySymbols,Xc=Object.prototype.hasOwnProperty,Jc=Object.prototype.propertyIsEnumerable,Lr=(n,e,t)=>e in n?Yc(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ed=(n,e)=>{for(var t in e||(e={}))Xc.call(e,t)&&Lr(n,t,e[t]);if(Mr)for(var t of Mr(e))Jc.call(e,t)&&Lr(n,t,e[t]);return n};function td(n){return a.createElement("svg",ed({width:200,height:200,viewBox:"0 0 200 200",fill:"none",xmlns:"http://www.w3.org/2000/svg",focusable:!1,"aria-hidden":!0},n),a.createElement("path",{d:"M74.7 78.6c20.78-6.32 57.55-12.26 71.81-9.86 4.21.7 8.12 1.98 11.36 3.42-.51-1.69-.95-3.5-1.38-5.3l-.04-.18c-1.03-4.27-2.05-8.44-3.95-10.55-4.8-5.32.67-10.12.67-10.12l.93-10.53c13.02 4.82 21.65 14.92 27 25.08 4.57 8.67 6.75 17.37 7.25 22.89 1.06 12-8.18 18.86-19.2 18.86-9.74 0-18.36-1.64-24.81-3.1.64 2.18 5.44 19.18 7.53 32.66l-46.15.58-7.58-14.68-4.66-12.26c-19.46 7.46-50.77 19.02-64.9 18.44-10.35-.42-15.68-15.68-17.44-28.7a71.55 71.55 0 0 1-.67-9.4c0-5.64.3-12.18 2.22-17.89.74-2.21 1.73-4.3 3.04-6.17a18.1 18.1 0 0 1 4.6-4.59c0 4-1.02 13.54 2.8 14.12 5.06.78 10.4-9.08 13.85-7.06 3.87 2.27-1.65 16.34-1.33 17.2.27.7.53 1.4.76 2.07a48.99 48.99 0 0 1 2.25 8.55C46.59 87.56 60 83.06 74.69 78.6Z",fill:"#C6CACD"}),a.createElement("path",{d:"M181.1 60.56c4.57 8.67 6.75 17.37 7.25 22.89 1.06 12-8.18 18.86-19.2 18.86-9.74 0-18.36-1.64-24.81-3.1m36.77-38.65c-5.36-10.16-13.99-20.26-27-25.08l-.94 10.53s-5.46 4.8-.67 10.12c1.9 2.11 2.92 6.28 3.95 10.55m24.66-6.12c-6-.37-18.32.8-24.66 6.12m0 0c1.57 6.53 3.15 13.3 7.91 13.3 7.2 0-3.6-8.84-17.85-11.24-14.25-2.4-51.03 3.54-71.82 9.86-20.78 6.32-39.04 12.71-42.77 19.1-3.63 6.23 13.24 10.92 4.49-14.17m0 0c-.23-.67-.49-1.36-.76-2.08-.32-.85 5.2-14.92 1.33-17.19-3.45-2.02-8.8 7.84-13.85 7.06-3.82-.58-2.8-10.12-2.8-14.12a18.1 18.1 0 0 0-4.6 4.6M36.4 83.52c-7.27 1.58-21.92 8.1-25.27 11.73m0 0a71.55 71.55 0 0 1-.67-9.41c0-5.64.3-12.18 2.22-17.89m-1.55 27.3c1.76 13 7.09 28.27 17.45 28.7 14.12.57 45.43-10.99 64.89-18.45l4.66 12.26 7.58 14.68 46.15-.58c-2.09-13.48-6.89-30.48-7.53-32.67M15.73 61.8c-.98 3-1.08 5.5.19 7.8m-.2-7.8a24.08 24.08 0 0 0-3.03 6.16m0 0a5.43 5.43 0 0 0 1.25 4.22m130.4 27.02c-.9-3.08-3.12-9.95-4.76-12.76",stroke:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m156.89 15.66-2.04 27.96 2.57 28.1c-7.51-3.07-13.32-4.34-27.25-3.36-11.94.83-31.75 3.95-46.23 7.62-16.66 4.27-37.81 11.64-45.21 15.9-.77-4.64-2.92-10.15-2.92-10.15-.07-.7 2.63-8.32 2.73-13.06.08-3.08-.91-4.45-2.33-4.75a3.47 3.47 0 0 0-2.05.35c-.63.32-.86.48-1.38.84-1.34.98-2.38 2.02-3.95 3.34a17.14 17.14 0 0 1-3.04 2.17 4.6 4.6 0 0 1-2.89.63c-.63-.1-1.21-.47-1.71-1.58l-.07-.89c-.5-5.79-2.7-20.12-2.7-34.91 0-7.74 1.61-10.04 2.7-11.59l.13-.18c3.85-5.53 13.67-6.75 23.12-6.96 2.5-.14 5.2-.2 8.1-.17l.11.15H53.15l-.52.07 18.32 25.49-3.62 14.08 10.2 15.98-2.84-16.49 10-11.99-3.5-27.7s8.78-.5 19.47-1.77c10.69-1.28 18.47-1.9 29.42-1.83 1.64.01 3.4.1 5.23.22 9.64.65 18.55 2.56 21.46 4.4l.13.09h-.01Z",fill:"var(--semi-color-primary)",fillOpacity:.2}),a.createElement("path",{d:"M143 27.91a1.38 1.38 0 0 1 1.77-.85c.5.17.98.41 1.44.71a1.38 1.38 0 0 1-1.53 2.31c-.26-.17-.53-.3-.82-.4a1.38 1.38 0 0 1-.85-1.77Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M140.65 28.12c.21.74-.21 1.5-.95 1.71-.36.1-.73.23-1.11.37a1.38 1.38 0 1 1-.95-2.6c.43-.16.87-.3 1.3-.43.74-.2 1.5.22 1.71.95Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M134.74 30.4c.37.67.14 1.51-.53 1.89l-1.07.62a1.38 1.38 0 1 1-1.41-2.38l1.12-.65a1.38 1.38 0 0 1 1.89.52Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M97.86 31.43h.76a1.38 1.38 0 1 1-.06 2.77h-.52a6.7 6.7 0 0 0-.57.1 1.38 1.38 0 1 1-.64-2.68c.33-.08.64-.14.94-.18l.09-.01Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M147.78 31.75c.73-.23 1.5.19 1.72.92.13.42.25.88.35 1.35a1.38 1.38 0 0 1-2.7.58c-.1-.4-.19-.78-.3-1.13-.22-.73.2-1.5.93-1.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M102.27 33.13c.19-.75.94-1.2 1.68-1.01.45.11.89.23 1.3.37a1.38 1.38 0 0 1-.84 2.63c-.36-.11-.73-.22-1.13-.32a1.38 1.38 0 0 1-1-1.67Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M129.3 33.68c.42.64.25 1.5-.4 1.92l-.52.34-.53.36a1.38 1.38 0 0 1-1.53-2.31l.32-.21.21-.14.3-.2.23-.15c.64-.42 1.5-.25 1.92.39Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M108.25 35.22c.36-.67 1.2-.92 1.88-.55a246.5 246.5 0 0 1 1.11.61 1.38 1.38 0 0 1-1.33 2.43l-.5-.28h-.01l-.6-.34a1.38 1.38 0 0 1-.55-1.87Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M92.83 35.77c.76-.01 1.4.6 1.4 1.36.01.16.03.34.07.54a1.38 1.38 0 1 1-2.7.58 5.62 5.62 0 0 1-.13-1.07c-.01-.76.6-1.4 1.36-1.4Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M124 37.2c.31.7 0 1.51-.7 1.82a6.07 6.07 0 0 1-1.44.45 1.38 1.38 0 1 1-.67-2.68l.58-.16c.1-.03.24-.07.42-.15.7-.3 1.51.02 1.82.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M113.9 38.14c.15-.75.89-1.22 1.63-1.07.35.08.72.14 1.1.17a1.38 1.38 0 0 1-.26 2.76c-.49-.05-.96-.12-1.41-.22a1.38 1.38 0 0 1-1.07-1.64Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M148.98 37.95c.76-.01 1.4.6 1.4 1.36a38.45 38.45 0 0 1 0 1.42 1.38 1.38 0 0 1-2.77-.08 24.28 24.28 0 0 0 0-1.3c0-.76.6-1.39 1.37-1.4Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M148.6 44.88c.75.16 1.22.9 1.06 1.65-.1.47-.22.94-.34 1.41a1.38 1.38 0 1 1-2.68-.7c.12-.43.22-.87.31-1.3.17-.75.9-1.22 1.65-1.06Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M146.69 51.6c.7.31 1 1.13.7 1.83-.2.44-.41.88-.63 1.31a1.38 1.38 0 0 1-2.48-1.24c.2-.4.4-.8.58-1.2.31-.7 1.13-1.01 1.83-.7Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M41.67 55.45c.07.76-.5 1.44-1.25 1.5-.43.04-.86.1-1.26.19a1.38 1.38 0 0 1-.54-2.72c.5-.1 1.02-.17 1.55-.22.76-.07 1.43.5 1.5 1.25Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M44.58 55.78c.22-.73 1-1.15 1.72-.93l.74.23a1.38 1.38 0 1 1-.9 2.62l-.62-.2a1.38 1.38 0 0 1-.94-1.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M91.9 56.9c.05.76-.52 1.41-1.29 1.46-.44.03-.89.07-1.32.12a1.38 1.38 0 0 1-.31-2.75c.48-.05.96-.1 1.45-.13.77-.05 1.42.53 1.47 1.3Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M94.72 56.95c.07-.76.74-1.33 1.5-1.26l1.43.14a1.38 1.38 0 1 1-.32 2.75c-.45-.05-.9-.1-1.35-.13a1.38 1.38 0 0 1-1.26-1.5Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M101.64 57.83c.16-.75.9-1.22 1.64-1.07l1.39.3a1.38 1.38 0 1 1-.62 2.7l-1.34-.29a1.38 1.38 0 0 1-1.07-1.64Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M34.85 57.26c.48.6.39 1.46-.2 1.94-.33.27-.63.55-.9.84a1.38 1.38 0 0 1-2.03-1.89c.36-.39.76-.76 1.18-1.1.6-.48 1.46-.39 1.95.2Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M85 57.9c.29.71-.06 1.51-.78 1.8a15.8 15.8 0 0 0-1.26.54 1.38 1.38 0 1 1-1.15-2.52 74.1 74.1 0 0 1 1.4-.6c.71-.28 1.52.07 1.8.78Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M143.4 57.76c.61.47.72 1.34.26 1.94-.3.4-.62.78-.94 1.15a1.38 1.38 0 0 1-2.09-1.81 24 24 0 0 0 .84-1.03c.47-.6 1.33-.71 1.94-.25Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M108.43 59.46c.22-.74.99-1.15 1.72-.93l1.35.4a1.38 1.38 0 1 1-.82 2.65l-1.32-.4a1.38 1.38 0 0 1-.93-1.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M115.08 61.58a1.38 1.38 0 0 1 1.77-.83l1.32.5a1.38 1.38 0 0 1-.97 2.58l-1.3-.48a1.38 1.38 0 0 1-.82-1.77Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M138.67 62.89c.42.64.25 1.5-.4 1.92-.41.27-.85.54-1.29.78a1.38 1.38 0 0 1-1.32-2.43c.37-.2.73-.43 1.1-.66.63-.42 1.49-.25 1.91.39Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M30.5 62.78c.77.07 1.33.74 1.26 1.5l-.03.59.01.75-1.6 1.4a1.38 1.38 0 0 1-1.16-1.32l-.02-.83c0-.28.02-.56.04-.84.07-.76.75-1.32 1.5-1.25Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M121.6 64.07c.3-.7 1.1-1.04 1.8-.75a135.68 135.68 0 0 1 1.26.52 1.38 1.38 0 1 1-.97 2.59 19.62 19.62 0 0 1-1.35-.55c-.7-.3-1.04-1.1-.74-1.81Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M72.11 64.94c.48.6.4 1.47-.2 1.95-.38.3-.74.61-1.09.92A1.38 1.38 0 1 1 69 65.73c.37-.33.76-.66 1.17-.99.59-.48 1.46-.4 1.94.2Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M132.4 65.92c.09.76-.46 1.44-1.22 1.53-.5.05-1.02.08-1.53.09a1.38 1.38 0 1 1-.02-2.77c.42 0 .84-.03 1.25-.07.76-.09 1.44.46 1.53 1.22Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M66.66 69.9c.57.52.6 1.4.09 1.96l-.73.8-.02.02-.16.18-.08.09a1.38 1.38 0 0 1-2.05-1.86l.25-.28.75-.82c.51-.56 1.39-.6 1.95-.09Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M61.6 75.28c.45.61.31 1.48-.3 1.93-.44.31-.88.61-1.36.89a1.38 1.38 0 1 1-1.4-2.4c.4-.22.77-.46 1.12-.73a1.38 1.38 0 0 1 1.94.3Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M37.67 75.97c.42.19.86.36 1.35.53a1.38 1.38 0 0 1-.89 2.62c-.56-.19-1.1-.4-1.6-.63l.72-2.63c.14.01.28.05.42.11Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M55.05 78.57c.12.75-.4 1.46-1.15 1.58-.5.08-1 .15-1.54.2a1.38 1.38 0 0 1-.28-2.75c.49-.05.95-.11 1.39-.18.75-.12 1.46.4 1.58 1.15Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M43.4 78.87c.06-.76.73-1.33 1.49-1.27a38.43 38.43 0 0 0 1.5.1 1.38 1.38 0 1 1-.12 2.76 62.94 62.94 0 0 1-1.6-.1 1.38 1.38 0 0 1-1.27-1.5Z",fill:"var(--semi-color-primary)"}),a.createElement("g",{clipPath:"url(#clip_failure_dark_46_27)"},a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M30.9 46.87a13.45 13.45 0 0 1 9.37-16.53 13.45 13.45 0 0 1 16.52 9.39c2.64 9.56-4.77 29.27-5.14 29.9a.75.75 0 0 1-.99.27c-.64-.34-17.11-13.47-19.76-23.03Zm14.36 1.54a6.1 6.1 0 0 1-3.25-11.75 6.1 6.1 0 0 1 3.25 11.75Z",fill:"var(--semi-color-primary)"})),a.createElement("path",{d:"M102.31 100.69c-2.8 1.55-5.63 2.85-9.36 4.58l1.48 3.92c2.14-.96 6.16-6.03 7.88-8.5Z",fill:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M121 63.04c8.85 2.1 12.43-6.5 13.12-8.77.68-2.27-5.6-11.86-8-11.2-.13.05-.3.09-.47.13l-.18.05-1.37.37c-3.64 1.03-9.93 3.2-10.98 7.63-1.3 5.46 2.4 10.49 7.88 11.79Z",fill:"#1C1F23"}),a.createElement("path",{d:"M134.5 64.73c-.43.47-1.2.74-2.33.73a12.7 12.7 0 0 1-4.06-.86 31.25 31.25 0 0 1-9.94-6.22c-3.25-2.97-5.97-5.8-7.59-8.42-1.61-2.61-2.05-4.89-.98-6.84a3.7 3.7 0 0 1 2.11-1.86 4.53 4.53 0 0 1 2.9.15c2.16.76 4.57 2.83 6.48 6.01 3.4 5.64 6.89 8.24 9.7 10.33.49.36.95.7 1.38 1.04a7.3 7.3 0 0 1 2.61 3.48c.34 1.1.16 1.97-.28 2.46Z",fill:"#C6CACD",stroke:"#1C1F23"}),a.createElement("mask",{id:"mask_failure_dark_130_527","mask-type":"alpha",maskUnits:"userSpaceOnUse",x:101,y:47,width:30,height:22},a.createElement("path",{d:"M130.53 62.1c-.5-3.3-9.52-14.75-16.08-15.03l-12.68 4.52 6.47 14.16 17.25 3.07c1.84-1.14 5.43-4.07 5.04-6.72Z",fill:"#C4C4C4"})),a.createElement("g",{mask:"url(#mask_failure_dark_130_527)"},a.createElement("path",{d:"M127.2 63.62a9.74 9.74 0 0 1-13.76.5 9.74 9.74 0 0 1-.32-13.78 9.74 9.74 0 0 1 13.77-.49 9.74 9.74 0 0 1 .32 13.77Z",fill:"#C6CACD",stroke:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m116.79 47.35-.02.37c2.86.5 8.57 2.59 8.58 6.87 0 5.36-7.44 9.34-14.47 3.46-.34-.28-.66-.53-.95-.74a10.09 10.09 0 0 0 3.17 7.17 10.24 10.24 0 0 0 14.47-.52 10.24 10.24 0 0 0-.34-14.47 10.16 10.16 0 0 0-10.44-2.14Z",fill:"#1C1F23"}),a.createElement("path",{d:"M119.34 55a.79.79 0 1 0-1.1-1.12.79.79 0 0 0 1.1 1.12Z",fill:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M119.98 50.72c.21-.09.45.01.54.22a7.86 7.86 0 0 0 1.84 2.65.41.41 0 0 1-.55.62 8.67 8.67 0 0 1-2.05-2.95.41.41 0 0 1 .22-.54Z",fill:"#1C1F23"}),a.createElement("path",{d:"M114.85 52.4a.79.79 0 1 0-1.1-1.11.79.79 0 0 0 1.1 1.12Z",fill:"#1C1F23"}),a.createElement("mask",{id:"path-15-inside-1",fill:"white"},a.createElement("ellipse",{rx:2.97818,ry:2.97818,transform:"matrix(0.727696 0.6859 -0.685903 0.727693 128.435 60.0508)"})),a.createElement("ellipse",{rx:2.97818,ry:2.97818,transform:"matrix(0.727696 0.6859 -0.685903 0.727693 128.435 60.0508)",fill:"#C6CACD"}),a.createElement("path",{d:"m128.42 60.04.01-.01a.03.03 0 0 1 .02 0l-4.12 4.37a5.98 5.98 0 0 0 8.45-.25l-4.36-4.11Zm.03 0v.02l-4.37-4.11a5.98 5.98 0 0 0 .25 8.45l4.12-4.37Zm0 .03h-.03l4.12-4.37a5.98 5.98 0 0 0-8.46.25l4.37 4.12Zm-.03 0v-.03l4.37 4.11a5.98 5.98 0 0 0-.25-8.45l-4.12 4.37Z",fill:"#1C1F23",mask:"url(#path-15-inside-1)"})),a.createElement("path",{d:"M145.63 40.19c1.37-2.75 12.75 2.35 16.14 6.78 3.38 4.43 1.48 10.74-1.9 9.68-6.69-2.12-7.56-6.7-7.94-9.48-1.2-1.85-7.67-4.24-6.3-6.98Z",fill:"#C6CACD",stroke:"#1C1F23"}),a.createElement("path",{d:"m158.95 41.56 6.64 2.52 1.66 12.47-8.3 1.98-3.47-12.03 3.47-4.94Z",fill:"#C6CACD"}),a.createElement("path",{d:"M167.3 151.94c5.19 1.66 23.35 35.57 19.05 35.57-13.86 0-34.5.53-71.42.53-15.63 0-17.9-5.16-11.79-22.08a353.23 353.23 0 0 1 6.14-15.76l32.5 1.26c-.43 1.53-.91 3.07-1.38 4.4a26.82 26.82 0 0 1 8.73-1.47c5.27 0 7.04 1.4 11.77 0 2.13-.62 4.8-2.97 6.4-2.45Z",fill:"#C6CACD"}),a.createElement("path",{d:"M140.4 155.87c.47-1.34.95-2.88 1.38-4.4l-32.5-1.27a353.23 353.23 0 0 0-6.14 15.76c-6.1 16.92-3.84 22.08 11.79 22.08 36.93 0 57.56-.53 71.42-.53 4.3 0-13.86-33.91-19.06-35.57-1.6-.52-4.26 1.83-6.4 2.45-4.72 1.4-6.5 0-11.76 0-3.08 0-6.06.55-8.72 1.48Zm0 0a26.67 26.67 0 0 1-4.44 8.38c-1.7 2.22-3.99 4.43-5.43 4.33-1.44-.1-1.42-3.18 0-5.66 1.97-3.44 6.45-5.87 9.88-7.05Z",stroke:"#1C1F23"}),a.createElement("path",{d:"M149.25 131.7s3.36 19.46-12.34 21.04c-11.53 1.15-40.77-4.55-53.76-7.79 4.72 12.82 9.61 39.86 7 42.16-3.33 2.93-47.55 1.76-55.96 0-8.42-1.75 13.82-11.46 15.45-14.66 2.99-5.84-5.48-21.18-5.75-45.45-.27-24.27 18.18-24.86 34.47-21.64 13.02 2.57 41.63 18.33 52.56 26.86l18.33-.52Z",fill:"#C6CACD",stroke:"#1C1F23"}),a.createElement("path",{d:"M141.5 153.87c-3.11 2.55-27.72 5-35.58 3.53l2.75-6.8c20.23 2.85 28.08 3.34 33.46 1.16l-.63 2.11Z",fill:"#1C1F23"}),a.createElement("path",{d:"M126.02 142.7c-3.1-2.99-5-7.5-4.16-12.35",stroke:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M130.6 95.65c-9.03-10.98-18.97-19.74-25.5-24.56l1.63-2.22c6.7 4.95 16.81 13.86 26 25.02 9.18 11.16 17.54 24.67 20.59 38.83l-2.7.59c-2.91-13.56-10.97-26.67-20.02-37.66Z",fill:"#1C1F23"}),a.createElement("path",{d:"m149.12 107.09-16.36 13.2 22.27 17.8 8.87-19.19c-.14-3.93-2.34-5.34-5.83-4.66l-3.12-2.5c.08-3.5-2.18-5.64-5.83-4.65Z",fill:"#6B7075"}),a.createElement("path",{d:"m148.24 128.62 9.45-14.34-2.91-2.33-10.94 13.07 4.4 3.6Z",stroke:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M143.67 127.98a6.93 6.93 0 1 1-10.82-8.66 6.93 6.93 0 0 1 10.82 8.66Zm12.28 9.82a6.93 6.93 0 1 1-10.82-8.65 6.93 6.93 0 0 1 10.82 8.65Z",fill:"#1C1F23"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m133.43 123.46 9.21-1.8.32 1.61-9.2 1.81-.33-1.62Z",fill:"#C6CACD"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m145.5 133.11 9.21-1.8.32 1.62-9.2 1.8-.33-1.62Z",fill:"#C6CACD"}),a.createElement("defs",null,a.createElement("clipPath",{id:"clip_failure_dark_46_27"},a.createElement("rect",{width:44.4004,height:44.4627,fill:"white",transform:"matrix(0.963965 -0.266028 0.266198 0.963918 18.4214 34.6221)"}))))}var nd=td,od=Object.defineProperty,Ir=Object.getOwnPropertySymbols,rd=Object.prototype.hasOwnProperty,sd=Object.prototype.propertyIsEnumerable,Tr=(n,e,t)=>e in n?od(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,id=(n,e)=>{for(var t in e||(e={}))rd.call(e,t)&&Tr(n,t,e[t]);if(Ir)for(var t of Ir(e))sd.call(e,t)&&Tr(n,t,e[t]);return n};function ad(n){return a.createElement("svg",id({width:200,height:200,viewBox:"0 0 200 200",fill:"none",xmlns:"http://www.w3.org/2000/svg",focusable:!1,"aria-hidden":!0},n),a.createElement("rect",{width:200,height:200,fill:"transparent"}),a.createElement("path",{d:"M74.7 78.6c20.78-6.32 57.55-12.26 71.81-9.86 4.21.7 8.12 1.98 11.36 3.42-.51-1.69-.95-3.5-1.38-5.3l-.04-.18c-1.03-4.27-2.05-8.44-3.95-10.55-4.8-5.32.67-10.12.67-10.12l.93-10.53c13.02 4.82 21.65 14.92 27 25.08 4.57 8.67 6.75 17.37 7.25 22.89 1.06 12-8.18 18.86-19.2 18.86-9.74 0-18.36-1.64-24.81-3.1.64 2.18 5.44 19.18 7.53 32.66l-46.15.58-7.58-14.68-4.66-12.26c-19.46 7.46-50.77 19.02-64.9 18.44-10.35-.42-15.68-15.68-17.44-28.7a71.55 71.55 0 0 1-.67-9.4c0-5.64.3-12.18 2.22-17.89.74-2.21 1.73-4.3 3.04-6.17a18.1 18.1 0 0 1 4.6-4.59c0 4-1.02 13.54 2.8 14.12 5.06.78 10.4-9.08 13.85-7.06 3.87 2.27-1.65 16.34-1.33 17.2.27.7.53 1.4.76 2.07a48.99 48.99 0 0 1 2.25 8.55C46.59 87.56 60 83.06 74.69 78.6Z",fill:"white"}),a.createElement("path",{d:"M181.1 60.56c4.57 8.67 6.75 17.37 7.25 22.89 1.06 12-8.18 18.86-19.2 18.86-9.74 0-18.36-1.64-24.81-3.1m36.77-38.65c-5.36-10.16-13.99-20.26-27-25.08l-.94 10.53s-5.46 4.8-.67 10.12c1.9 2.11 2.92 6.28 3.95 10.55m24.66-6.12c-6-.37-18.32.8-24.66 6.12m0 0c1.57 6.53 3.15 13.3 7.91 13.3 7.2 0-3.6-8.84-17.85-11.24-14.25-2.4-51.03 3.54-71.82 9.86-20.78 6.32-39.04 12.71-42.77 19.1-3.63 6.23 13.24 10.92 4.49-14.17m0 0c-.23-.67-.49-1.36-.76-2.08-.32-.85 5.2-14.92 1.33-17.19-3.45-2.02-8.8 7.84-13.85 7.06-3.82-.58-2.8-10.12-2.8-14.12a18.1 18.1 0 0 0-4.6 4.6M36.4 83.52c-7.27 1.58-21.92 8.1-25.27 11.73m0 0a71.55 71.55 0 0 1-.67-9.41c0-5.64.3-12.18 2.22-17.89m-1.55 27.3c1.76 13 7.09 28.27 17.45 28.7 14.12.57 45.43-10.99 64.89-18.45l4.66 12.26 7.58 14.68 46.15-.58c-2.09-13.48-6.89-30.48-7.53-32.67M15.73 61.8c-.98 3-1.08 5.5.19 7.8m-.2-7.8a24.08 24.08 0 0 0-3.03 6.16m0 0a5.43 5.43 0 0 0 1.25 4.22m130.4 27.02c-.9-3.08-3.12-9.95-4.76-12.76",stroke:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m156.89 15.66-2.04 27.96 2.57 28.1c-7.51-3.07-13.32-4.34-27.25-3.36-11.94.83-31.75 3.95-46.23 7.62-16.66 4.27-37.81 11.64-45.21 15.9-.77-4.64-2.92-10.15-2.92-10.15-.07-.7 2.63-8.32 2.73-13.06.08-3.08-.91-4.45-2.33-4.75a3.47 3.47 0 0 0-2.05.35c-.63.32-.86.48-1.38.84-1.34.98-2.38 2.02-3.95 3.34a17.14 17.14 0 0 1-3.04 2.17 4.6 4.6 0 0 1-2.89.63c-.63-.1-1.21-.47-1.71-1.58l-.07-.89c-.5-5.79-2.7-20.12-2.7-34.91 0-7.74 1.61-10.04 2.7-11.59l.13-.18c3.85-5.53 13.67-6.75 23.12-6.96 2.5-.14 5.2-.2 8.1-.17l.11.15H53.15l-.52.07 18.32 25.49-3.62 14.08 10.2 15.98-2.84-16.49 10-11.99-3.5-27.7s8.78-.5 19.47-1.77c10.69-1.28 18.47-1.9 29.42-1.83 1.64.01 3.4.1 5.23.22 9.64.65 18.55 2.56 21.46 4.4l.13.09h-.01Z",fill:"var(--semi-color-primary-light-default)"}),a.createElement("path",{d:"M143 27.91a1.38 1.38 0 0 1 1.77-.85c.5.18.98.41 1.44.71a1.38 1.38 0 0 1-1.53 2.31c-.26-.17-.53-.3-.82-.4a1.38 1.38 0 0 1-.85-1.77Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M140.65 28.12c.21.74-.21 1.5-.95 1.72-.36.1-.73.22-1.11.36a1.38 1.38 0 1 1-.95-2.6c.43-.16.87-.3 1.3-.43.74-.2 1.5.22 1.71.95Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M134.74 30.4c.37.67.14 1.51-.53 1.89l-1.07.62a1.38 1.38 0 1 1-1.41-2.38l1.12-.65a1.38 1.38 0 0 1 1.89.52Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M97.86 31.43h.76a1.38 1.38 0 1 1-.06 2.77h-.52a6.7 6.7 0 0 0-.57.1 1.38 1.38 0 0 1-.64-2.68c.33-.08.64-.14.94-.18l.09-.01Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M147.78 31.75c.73-.23 1.5.19 1.72.92.13.43.25.88.35 1.35a1.38 1.38 0 0 1-2.7.58c-.1-.4-.19-.78-.3-1.13-.22-.73.2-1.5.93-1.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M102.27 33.13c.19-.75.94-1.2 1.68-1.01.45.11.89.23 1.3.37a1.38 1.38 0 0 1-.84 2.63c-.36-.11-.73-.22-1.13-.32a1.38 1.38 0 0 1-1-1.67Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M129.3 33.68c.42.64.25 1.5-.4 1.92l-.52.34-.53.36a1.38 1.38 0 0 1-1.53-2.31l.32-.21.21-.14.3-.2.23-.15c.64-.42 1.5-.25 1.92.39Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M108.25 35.22c.36-.67 1.2-.92 1.88-.55a246.5 246.5 0 0 1 1.11.61 1.38 1.38 0 0 1-1.33 2.43l-.5-.28h-.01l-.6-.34a1.38 1.38 0 0 1-.55-1.87Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M92.83 35.77c.76-.01 1.4.6 1.4 1.36.01.16.03.34.07.55a1.38 1.38 0 1 1-2.7.58 5.62 5.62 0 0 1-.13-1.08c-.01-.76.6-1.4 1.36-1.4Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M124 37.2c.31.7 0 1.51-.7 1.82a6.07 6.07 0 0 1-1.44.45 1.38 1.38 0 1 1-.67-2.68l.58-.16c.1-.03.24-.07.42-.15.7-.3 1.51.02 1.82.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M113.9 38.14c.15-.75.89-1.22 1.63-1.06.35.07.72.13 1.1.16a1.38 1.38 0 0 1-.26 2.76c-.49-.05-.96-.12-1.41-.22a1.38 1.38 0 0 1-1.07-1.64Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M148.98 37.95c.76-.01 1.4.6 1.4 1.36a38.45 38.45 0 0 1 0 1.42 1.38 1.38 0 0 1-2.77-.08 24.28 24.28 0 0 0 0-1.3c0-.76.6-1.39 1.37-1.4Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M148.6 44.88c.75.16 1.22.9 1.06 1.65-.1.47-.22.94-.34 1.41a1.38 1.38 0 1 1-2.68-.7c.12-.43.22-.87.31-1.3.17-.75.9-1.22 1.65-1.06Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M146.69 51.6c.7.31 1 1.13.7 1.83-.2.44-.41.88-.63 1.31a1.38 1.38 0 0 1-2.48-1.24c.2-.4.4-.8.58-1.2.31-.7 1.13-1.01 1.83-.7Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M41.67 55.45c.07.77-.5 1.44-1.25 1.5-.43.04-.86.1-1.26.19a1.38 1.38 0 1 1-.54-2.72c.5-.1 1.02-.17 1.55-.22.76-.07 1.43.5 1.5 1.25Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M44.58 55.78c.22-.73 1-1.15 1.72-.93l.74.23a1.38 1.38 0 1 1-.9 2.62l-.62-.2a1.38 1.38 0 0 1-.94-1.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M91.9 56.9c.05.76-.52 1.42-1.29 1.47-.44.02-.89.06-1.32.11a1.38 1.38 0 0 1-.31-2.75c.48-.05.96-.1 1.45-.13.77-.05 1.42.53 1.47 1.3Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M94.72 56.95c.07-.76.74-1.33 1.5-1.26l1.43.14a1.38 1.38 0 0 1-.32 2.75c-.45-.05-.9-.1-1.35-.13a1.38 1.38 0 0 1-1.26-1.5Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M101.64 57.83c.16-.75.9-1.22 1.64-1.07l1.39.31a1.38 1.38 0 1 1-.62 2.7l-1.34-.3a1.38 1.38 0 0 1-1.07-1.64Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M34.85 57.26c.48.6.39 1.46-.2 1.94-.33.27-.63.55-.9.84a1.38 1.38 0 0 1-2.03-1.89c.36-.39.76-.75 1.18-1.1.6-.48 1.46-.39 1.95.2Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M85 57.9c.29.71-.06 1.51-.78 1.8a15.8 15.8 0 0 0-1.26.54 1.38 1.38 0 1 1-1.15-2.52 71.64 71.64 0 0 1 1.4-.6c.71-.28 1.52.07 1.8.78Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M143.4 57.76c.61.47.72 1.34.26 1.95-.3.39-.62.77-.94 1.14a1.38 1.38 0 0 1-2.09-1.81 24 24 0 0 0 .84-1.03c.47-.6 1.33-.71 1.94-.25Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M108.43 59.46c.22-.74.99-1.15 1.72-.93l1.35.41a1.38 1.38 0 1 1-.82 2.64l-1.32-.4a1.38 1.38 0 0 1-.93-1.72Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M115.08 61.58a1.38 1.38 0 0 1 1.77-.82l1.32.48a1.38 1.38 0 0 1-.97 2.6c-.43-.17-.87-.33-1.3-.48a1.38 1.38 0 0 1-.82-1.78Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M138.67 62.89c.42.64.25 1.5-.4 1.92-.41.27-.85.54-1.29.78a1.38 1.38 0 0 1-1.32-2.43c.37-.2.73-.43 1.1-.66.63-.42 1.49-.25 1.91.39Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M30.5 62.78c.77.07 1.33.74 1.26 1.5l-.03.59.01.75-1.6 1.4a1.38 1.38 0 0 1-1.16-1.32l-.02-.83c0-.28.02-.56.04-.84.07-.76.75-1.32 1.5-1.25Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M121.6 64.07c.3-.7 1.1-1.04 1.8-.75a146.8 146.8 0 0 1 1.26.52 1.38 1.38 0 1 1-.97 2.59 19.62 19.62 0 0 1-1.35-.55c-.7-.3-1.04-1.1-.74-1.81Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M72.11 64.94c.48.6.4 1.47-.2 1.95-.38.3-.74.62-1.09.92A1.38 1.38 0 1 1 69 65.73c.37-.33.76-.66 1.17-.99.59-.48 1.46-.39 1.94.2Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M132.4 65.92c.09.76-.46 1.44-1.22 1.53-.5.05-1.02.08-1.53.09a1.38 1.38 0 1 1-.02-2.77c.42 0 .84-.03 1.25-.07.76-.09 1.44.46 1.53 1.22Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M66.66 69.9c.57.52.6 1.4.09 1.96l-.73.8-.02.02-.16.18-.08.09a1.38 1.38 0 0 1-2.05-1.86l.25-.28.75-.82c.51-.56 1.39-.6 1.95-.09Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M61.6 75.28c.45.61.31 1.48-.3 1.93-.44.31-.88.61-1.36.89a1.38 1.38 0 1 1-1.4-2.4c.4-.22.77-.46 1.12-.72a1.38 1.38 0 0 1 1.94.3Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M37.67 75.97c.42.19.86.37 1.35.53a1.38 1.38 0 0 1-.89 2.62c-.56-.19-1.1-.4-1.6-.63l.72-2.63c.14.01.28.05.42.11Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M55.05 78.57c.12.75-.4 1.46-1.15 1.58-.5.08-1 .15-1.54.2a1.38 1.38 0 1 1-.28-2.75c.49-.05.95-.11 1.39-.18.75-.12 1.46.4 1.58 1.15Z",fill:"var(--semi-color-primary)"}),a.createElement("path",{d:"M43.4 78.87c.06-.76.73-1.33 1.49-1.27a38.43 38.43 0 0 0 1.5.1 1.38 1.38 0 1 1-.12 2.76 62.94 62.94 0 0 1-1.6-.1 1.38 1.38 0 0 1-1.27-1.49Z",fill:"var(--semi-color-primary)"}),a.createElement("g",{clipPath:"url(#clip_failure_96_39_65)"},a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M30.9 46.87a13.45 13.45 0 0 1 9.37-16.53 13.46 13.46 0 0 1 16.52 9.39c2.64 9.56-4.76 29.27-5.14 29.9a.75.75 0 0 1-.99.27c-.64-.34-17.11-13.47-19.76-23.03Zm14.36 1.54a6.1 6.1 0 0 1-3.25-11.75 6.1 6.1 0 0 1 3.25 11.75Z",fill:"var(--semi-color-primary)"})),a.createElement("path",{d:"M102.31 100.69c-2.8 1.55-5.63 2.85-9.36 4.58l1.48 3.92c2.14-.96 6.16-6.03 7.88-8.5Z",fill:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M121 63.04c8.85 2.1 12.43-6.5 13.12-8.77.68-2.27-5.6-11.86-8-11.2l-.42.12-.23.06c-3.1.82-11.15 2.94-12.35 8-1.3 5.46 2.4 10.49 7.88 11.79Z",fill:"#515151"}),a.createElement("path",{d:"M134.5 64.73c-.43.47-1.2.74-2.33.73a12.7 12.7 0 0 1-4.06-.86 31.25 31.25 0 0 1-9.94-6.22c-3.25-2.97-5.97-5.8-7.59-8.42-1.61-2.61-2.05-4.88-.98-6.84a3.7 3.7 0 0 1 2.11-1.86 4.53 4.53 0 0 1 2.9.15c2.16.76 4.57 2.83 6.48 6.02 3.4 5.63 6.89 8.23 9.7 10.33.49.35.95.7 1.38 1.03a7.29 7.29 0 0 1 2.61 3.48c.34 1.1.16 1.97-.28 2.46Z",fill:"white",stroke:"#515151"}),a.createElement("mask",{id:"mask_failure_130_526","mask-type":"alpha",maskUnits:"userSpaceOnUse",x:98,y:44,width:36,height:27},a.createElement("path",{d:"M130.53 62.1c-.5-3.3-9.52-14.75-16.08-15.03l-12.68 4.52 6.47 14.16 17.25 3.07c1.84-1.14 5.43-4.07 5.04-6.72Z",fill:"#C4C4C4"})),a.createElement("g",{mask:"url(#mask_failure_130_526)"},a.createElement("path",{d:"M127.2 63.62a9.74 9.74 0 0 1-13.76.5 9.74 9.74 0 0 1-.32-13.77 9.74 9.74 0 0 1 13.77-.5 9.74 9.74 0 0 1 .32 13.77Z",fill:"white",stroke:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m116.79 47.35-.02.37c2.86.5 8.57 2.59 8.58 6.87 0 5.36-7.44 9.34-14.47 3.46-.34-.28-.66-.53-.95-.74a10.09 10.09 0 0 0 3.17 7.17 10.24 10.24 0 0 0 14.47-.52 10.24 10.24 0 0 0-.34-14.47 10.16 10.16 0 0 0-10.44-2.14Z",fill:"#515151"}),a.createElement("path",{d:"M119.34 55a.79.79 0 1 0-1.1-1.12.79.79 0 0 0 1.1 1.12Z",fill:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M119.98 50.72c.21-.09.45.01.54.22a7.87 7.87 0 0 0 1.84 2.65.41.41 0 1 1-.55.62 8.67 8.67 0 0 1-2.05-2.95.41.41 0 0 1 .22-.54Z",fill:"#515151"}),a.createElement("path",{d:"M114.85 52.4a.79.79 0 1 0-1.1-1.1.79.79 0 0 0 1.1 1.1Z",fill:"#515151"}),a.createElement("mask",{id:"path-18-inside-1",fill:"white"},a.createElement("ellipse",{rx:2.97818,ry:2.97818,transform:"matrix(0.727696 0.6859 -0.685903 0.727693 128.435 60.0508)"})),a.createElement("ellipse",{rx:2.97818,ry:2.97818,transform:"matrix(0.727696 0.6859 -0.685903 0.727693 128.435 60.0508)",fill:"white"}),a.createElement("path",{d:"m128.42 60.04.01-.01a.03.03 0 0 1 .02 0l-4.12 4.37a5.98 5.98 0 0 0 8.45-.25l-4.36-4.11Zm.03 0v.02l-4.37-4.11a5.98 5.98 0 0 0 .25 8.45l4.12-4.37Zm0 .03h-.01a.03.03 0 0 1-.02 0l4.12-4.37a5.98 5.98 0 0 0-8.46.25l4.37 4.12Zm-.03 0v-.03l4.37 4.11a5.98 5.98 0 0 0-.25-8.45l-4.12 4.37Z",fill:"#515151",mask:"url(#path-18-inside-1)"})),a.createElement("path",{d:"M145.63 40.19c1.37-2.75 12.75 2.35 16.14 6.78 3.38 4.43 1.48 10.74-1.9 9.68-6.69-2.12-7.56-6.7-7.94-9.48-1.2-1.85-7.67-4.24-6.3-6.98Z",fill:"white",stroke:"#515151"}),a.createElement("path",{d:"m158.95 41.56 6.64 2.52 1.66 12.47-8.3 1.98-3.47-12.03 3.47-4.94Z",fill:"white"}),a.createElement("path",{d:"M167.3 151.94c5.19 1.66 23.35 35.57 19.05 35.57-13.86 0-34.5.53-71.42.53-15.63 0-17.9-5.16-11.79-22.08a353.23 353.23 0 0 1 6.14-15.76l32.5 1.26c-.43 1.53-.91 3.07-1.38 4.4a26.82 26.82 0 0 1 8.73-1.47c5.27 0 7.04 1.4 11.77 0 2.13-.62 4.8-2.97 6.4-2.45Z",fill:"white",className:""}),a.createElement("path",{d:"M140.4 155.87c.47-1.34.95-2.88 1.38-4.4l-32.5-1.27a353.23 353.23 0 0 0-6.14 15.76c-6.1 16.92-3.84 22.08 11.79 22.08 36.93 0 57.56-.53 71.42-.53 4.3 0-13.86-33.91-19.06-35.57-1.6-.52-4.26 1.83-6.4 2.45-4.72 1.4-6.5 0-11.76 0-3.08 0-6.06.55-8.72 1.48Zm0 0a26.67 26.67 0 0 1-4.44 8.38c-1.7 2.22-3.99 4.43-5.43 4.33-1.44-.1-1.42-3.18 0-5.66 1.97-3.44 6.45-5.87 9.88-7.05Z",stroke:"#1C1F23",className:""}),a.createElement("path",{d:"M149.25 131.7s3.36 19.46-12.34 21.04c-11.53 1.15-40.77-4.55-53.76-7.79 4.72 12.82 9.61 39.86 7 42.16-3.33 2.93-47.55 1.76-55.96 0-8.42-1.75 13.82-11.46 15.45-14.66 2.99-5.84-5.48-21.18-5.75-45.45-.27-24.27 18.18-24.86 34.47-21.64 13.02 2.57 41.63 18.33 52.56 26.86l18.33-.52Z",fill:"white",stroke:"#515151"}),a.createElement("path",{d:"M141.5 153.87c-3.11 2.55-27.72 5-35.58 3.53l2.75-6.8c20.23 2.85 28.08 3.34 33.46 1.16l-.63 2.11Z",fill:"#515151",className:"__web-inspector-hide-shortcut__"}),a.createElement("path",{d:"M141.5 153.87c-3.11 2.55-27.72 5-35.58 3.53l2.75-6.8c20.23 2.85 28.08 3.34 33.46 1.16l-.63 2.11Z",fill:"#515151"}),a.createElement("path",{d:"M126.02 142.7c-3.1-2.99-4.99-7.5-4.16-12.35",stroke:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M130.6 95.65c-9.03-10.98-18.97-19.74-25.5-24.56l1.63-2.22c6.7 4.95 16.81 13.86 26 25.02 9.18 11.16 17.54 24.67 20.59 38.83l-2.7.59c-2.91-13.56-10.97-26.67-20.02-37.66Z",fill:"#515151"}),a.createElement("path",{d:"m149.12 107.09-16.36 13.2 22.27 17.8 8.87-19.19c-.14-3.93-2.34-5.34-5.83-4.66l-3.12-2.5c.08-3.5-2.18-5.64-5.83-4.65Z",fill:"#E6E8EA"}),a.createElement("path",{d:"m148.24 128.62 9.45-14.34-2.91-2.33-10.94 13.07 4.4 3.6Z",stroke:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M143.67 127.98a6.93 6.93 0 1 1-10.82-8.65 6.93 6.93 0 0 1 10.82 8.65Zm12.28 9.82a6.93 6.93 0 1 1-10.82-8.66 6.93 6.93 0 0 1 10.82 8.66Z",fill:"#515151"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m133.43 123.46 9.21-1.8.32 1.61-9.2 1.81-.33-1.62Z",fill:"white"}),a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m145.5 133.11 9.21-1.8.32 1.62-9.2 1.8-.33-1.62Z",fill:"white"}),a.createElement("defs",null,a.createElement("clipPath",{id:"clip_failure_96_39_65"},a.createElement("rect",{width:44.4004,height:44.4627,transform:"matrix(0.963965 -0.266028 0.266198 0.963918 18.4214 34.6221)",fill:"white"}))))}var ld=ad;const Rr=n=>{let e;const t=new Set,o=(p,d)=>{const m=typeof p=="function"?p(e):p;if(!Object.is(m,e)){const f=e;e=d??(typeof m!="object"||m===null)?m:Object.assign({},e,m),t.forEach(y=>y(e,f))}},r=()=>e,c={setState:o,getState:r,getInitialState:()=>u,subscribe:p=>(t.add(p),()=>t.delete(p))},u=e=n(o,r,c);return c},cd=(n=>n?Rr(n):Rr),dd=n=>n;function ud(n,e=dd){const t=g.useSyncExternalStore(n.subscribe,g.useCallback(()=>e(n.getState()),[n,e]),g.useCallback(()=>e(n.getInitialState()),[n,e]));return g.useDebugValue(t),t}const Nr=n=>{const e=cd(n),t=o=>ud(e,o);return Object.assign(t,e),t},ft=(n=>n?Nr(n):Nr);function pd(){var n,e;return((e=(n=window.__TAURI__)==null?void 0:n.core)==null?void 0:e.invoke)||null}const hd=ne;async function _e(n,e){const t=await fetch(`${hd}${n}`,{headers:{"Content-Type":"application/json"},...e});if(!t.ok){const o=await t.text().catch(()=>"");let r=`${t.status} ${t.statusText}`;try{const s=JSON.parse(o);r=s.error||s.message||r}catch{}throw new Error(r)}return t.json()}function xe(){return window.ga||null}function Ce(){return!!xe()}async function md(){if(Ce())try{return(await xe().getConfig()).config}catch{}try{return(await _e("/config")).config}catch{return{lang:localStorage.getItem("ga_lang")||"zh",theme:"light",appearance:localStorage.getItem("ga_appearance")||"light",plain:!1,fontSize:parseInt(localStorage.getItem("ga_font_size")||"14",10),llmNo:0}}}async function fd(n){if(Ce())try{await xe().saveConfig({config:n});return}catch{}try{await _e("/config",{method:"POST",body:JSON.stringify({config:n})})}catch{}}async function gd(){if(Ce())try{return(await xe().getModelProfiles()).profiles||[]}catch{}try{return(await _e("/model-profiles")).profiles||[]}catch{return[]}}async function yd(n){if(Ce())try{return(await xe().rpc("model-profiles/get",{id:n})).profile||null}catch{}try{return(await _e(`/model-profiles/${n}`)).profile||null}catch{return null}}async function bd(n){return Ce()?(await xe().rpc("model-profiles/add",n)).profiles:(await _e("/model-profiles",{method:"POST",body:JSON.stringify(n)})).profiles}async function vd(n,e){return Ce()?(await xe().rpc("model-profiles/edit",{id:n,...e})).profiles:(await _e(`/model-profiles/${n}`,{method:"PUT",body:JSON.stringify(e)})).profiles}async function xd(n){return Ce()?(await xe().rpc("model-profiles/delete",{id:n})).profiles:(await _e(`/model-profiles/${n}`,{method:"DELETE"})).profiles}async function wd(n){return Ce()?(await xe().rpc("model-profiles/mixin-add",{id:n})).profiles:(await _e(`/model-profiles/${n}/mixin`,{method:"POST",body:"{}"})).profiles}async function Cd(n){return Ce()?(await xe().rpc("model-profiles/mixin-remove",{id:n})).profiles:(await _e(`/model-profiles/${n}/mixin`,{method:"DELETE"})).profiles}async function $r(n){return Ce()?(await xe().rpc("model-profiles/mixin-reorder",{members:n})).profiles:(await _e("/model-profiles/mixin/order",{method:"PUT",body:JSON.stringify({members:n})})).profiles}async function Sd(){if(Ce())try{return(await xe().getMykeyContent()).content}catch{}try{return(await _e("/services/mykey")).content||""}catch{return""}}async function kd(n){if(Ce()){await xe().saveMykeyContent(n);return}await _e("/services/mykey",{method:"POST",body:JSON.stringify({content:n})})}async function Oe(n,e){if(Ce())return xe().tauriInvoke(n,e);const t=pd();if(t)return t(n,e);throw new Error("Tauri IPC not available")}const kt={lang:"ga_lang",theme:"ga_theme",appearance:"ga_appearance",fontSize:"ga_font_size",llmNo:"ga_llm_no"};function jd(n){try{localStorage.setItem(kt.lang,n.lang),localStorage.setItem(kt.appearance,n.appearance),localStorage.setItem(kt.fontSize,String(n.chatFontSize)),localStorage.setItem(kt.llmNo,String(n.defaultModelNo))}catch{}}function qn(n,e){const t=document.documentElement;t.dataset.appearance=n,delete t.dataset.plain,t.dataset.chatFont=String(e),t.style.setProperty("--chat-font",e+"px"),n==="dark"?document.body.setAttribute("theme-mode","dark"):document.body.removeAttribute("theme-mode")}function Ed(){const n=document.documentElement;return{appearance:n.dataset.appearance==="dark"?"dark":"light",chatFontSize:parseInt(n.dataset.chatFont||"14",10)||14,lang:n.lang==="en"?"en":"zh",defaultModelNo:parseInt(localStorage.getItem(kt.llmNo)||"0",10)}}const Z=ft((n,e)=>({visible:!1,modelProfiles:[],liveModel:null,...Ed(),open:()=>n({visible:!0}),close:()=>n({visible:!1}),setAppearance:t=>{n({appearance:t}),qn(t,e().chatFontSize),e().persist()},setChatFontSize:t=>{const o=Math.max(10,Math.min(20,t));n({chatFontSize:o}),qn(e().appearance,o),e().persist()},setLang:t=>{n({lang:t}),document.documentElement.lang=t==="en"?"en":"zh-CN",e().persist()},setModelProfiles:t=>n({modelProfiles:t}),setDefaultModel:t=>{e().modelProfiles[t]&&(n({defaultModelNo:t}),e().persist())},setLiveModel:t=>n({liveModel:t}),loadFromBridge:async()=>{try{const[t,o]=await Promise.all([md(),gd()]);n({appearance:t.appearance==="dark"?"dark":"light",chatFontSize:t.fontSize||14,lang:t.lang==="en"?"en":"zh",defaultModelNo:t.llmNo||0,modelProfiles:o});const r=e();qn(r.appearance,r.chatFontSize)}catch{}},persist:async()=>{const t=e();jd(t);try{await fd({lang:t.lang,theme:"1",appearance:t.appearance,plain:!1,fontSize:t.chatFontSize,llmNo:t.defaultModelNo})}catch{}}})),Od={robot:"","symbol-misc":"",comment:"",files:"",graph:"",search:"",add:"","kebab-vertical":"",grabber:"","arrow-left":"","chevron-right":"","settings-gear":"","server-process":"",link:"","layout-sidebar-left":"","layout-sidebar-left-off":"","circle-filled":"","layout-sidebar-right":"","layout-sidebar-right-off":"",pin:"",pinned:"",edit:"",trash:""};function Pe({name:n,size:e,className:t}){const o=Od[n];return i.jsx("span",{className:`codicon${t?" "+t:""}`,style:{fontSize:e,display:"inline-block",lineHeight:1},"aria-hidden":"true",children:o??"?"})}const Te=ft(n=>({activePage:"chat",sidebarCollapsed:!1,servicesTab:"channels",setPage:e=>n({activePage:e}),setServicesTab:e=>n({servicesTab:e}),toggleSidebar:()=>n(e=>({sidebarCollapsed:!e.sidebarCollapsed}))}));typeof window<"u"&&window.addEventListener("ga:go-page",(n=>{Te.getState().setPage(n.detail.page)}));function Dr(n,e="completed"){const t=n.createdAt??n.ts,o={id:String(n.id),role:n.role,content:n.content||"",status:n.status??e,createdAt:typeof t=="number"?Math.round(t*1e3):void 0};return Array.isArray(n.turn_segs)&&(o.turn_segs=n.turn_segs),Array.isArray(n.images)&&n.images.length>0&&(o.images=n.images),Array.isArray(n.files)&&n.files.length>0&&(o.files=n.files),typeof n.executionMs=="number"&&(o.executionMs=n.executionMs),o}async function Pd(){return(await(await fetch(`${ne}/session/new`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:"",mcp_servers:[]})})).json()).sessionId}async function _d(n,e,t){const r=await(await fetch(`${ne}/upload`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,dataUrl:t,sid:n})})).json();if(!r.ok)throw new Error(r.error||"upload failed");return r.path}async function Md(n,e){const o=await(await fetch(`${ne}/upload`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:n,dataUrl:e,sid:"_files"})})).json();if(!o.ok)throw new Error(o.error||"upload failed");return o.path}async function Ld(n,e){try{const o=await(await fetch(`${ne}/drop/stat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n,preview:e})})).json();return o.ok?{isDir:!!o.is_dir,size:o.size??0,name:o.name??n,preview:o.preview}:null}catch{return null}}async function Id(n,e,t,o){var u;const r=(t||[]).map(p=>({name:p.name,path:p.path,size:p.size})),s=[];for(const p of o||[]){const d=p.base64||((u=p.path)!=null&&u.startsWith("data:")?p.path:void 0);if(d){const m=await _d(n,p.name,d);s.push({name:p.name,path:m})}else p.path&&!p.path.startsWith("data:")&&p.path!==p.name&&s.push({name:p.name,path:p.path})}return(await(await fetch(`${ne}/session/${n}/prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:n,prompt:e,display:e,files:r,imageMetas:s})})).json()).userMessageId}async function Gn(n,e,t=50){const o=new URLSearchParams({limit:String(t)}),s=await(await fetch(`${ne}/session/${n}/messages?${o}`)).json();return{messages:(s.messages||[]).map(l=>Dr(l)),partial:s.partial?Dr(s.partial,"in_progress"):void 0,status:s.status,plan:s.plan,model:s.model}}async function Td(n){await fetch(`${ne}/session/${n}/cancel`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:n})})}async function Ar(n,e){return(await fetch(`${ne}/session/${n}/model`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({llmNo:e})})).json()}async function Qn(){return((await(await fetch(`${ne}/sessions`)).json()).sessions||[]).filter(o=>!o.id.startsWith("tui_"))}async function Rd(n){await fetch(`${ne}/session/${n}`,{method:"DELETE"})}async function Nd(n,e){await fetch(`${ne}/session/${n}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:e})})}async function $d(n,e){await fetch(`${ne}/session/${n}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({pinned:e})})}const xt="__partial__",Dd=1e3;let wt=null,rt=null,Jt=null;const Ee=new Map,G=ft((n,e)=>{function t(p,d,m){const f=p.filter(x=>x.id!==xt),y=f.filter(x=>String(x.id).startsWith("local-"));let b=f.filter(x=>!String(x.id).startsWith("local-"));for(const x of d){if(b.some(S=>S.id===x.id))continue;const C=y.findIndex(S=>S.role===x.role&&S.content===x.content);C>=0&&y.splice(C,1),b.push(x)}return b=[...b,...y],b.sort((x,C)=>(x.createdAt??0)-(C.createdAt??0)),m&&b.push({...m,id:xt,status:"in_progress"}),b}function o(p){for(let d=p.length-1;d>=0;d--)if(p[d].role==="user"&&p[d].createdAt)return p[d].createdAt;return Date.now()}function r(p,d){Ee.set(p,d),n(m=>{const f={turnStarts:{...m.turnStarts,[p]:d}};return p===m.activeSessionId&&(f.turnStartedAt=d),f})}function s(p){Ee.delete(p),n(d=>{const{[p]:m,...f}=d.turnStarts,y={turnStarts:f};return p===d.activeSessionId&&(y.turnStartedAt=null),y})}function l(){if(rt=null,!wt)return;const p=wt;wt=null;const{messages:d}=e(),m=d.filter(f=>f.id!==xt);n({messages:[...m,p]})}function c(){u(),Jt=setInterval(()=>{const{activeSessionId:p,status:d}=e();if(!p||d!=="running"){u();return}Gn(p).then(m=>{if(n(f=>({messages:t(f.messages,m.messages,m.partial),status:m.status,turnStartedAt:m.status==="running"?f.turnStartedAt:null})),m.model&&(Z.getState().setLiveModel(m.model),m.model.llmNo!=null&&m.status!=="running"&&n({sessionModelNo:m.model.llmNo})),m.status!=="running"){s(p),u();const{pendingQueue:f,status:y}=e();if(y==="idle"&&f.length>0){const[b,...x]=f;n({pendingQueue:x}),e().sendMessage(b.text,b.opts)}}}).catch(()=>{})},Dd)}function u(){Jt!==null&&(clearInterval(Jt),Jt=null)}return Ve("partial-update",p=>{const d=p,{activeSessionId:m}=e();!d.sessionId||d.sessionId!==m||(wt={id:xt,role:"assistant",content:d.content||"",status:"in_progress",turn_segs:d.turn_segs},rt===null&&(rt=requestAnimationFrame(l)))}),Ve("session-state",p=>{const d=p;d.sessionId&&d.status&&n(f=>{const y=new Set(f.runningSessions);return d.status==="running"?y.add(d.sessionId):y.delete(d.sessionId),{runningSessions:y}});const{activeSessionId:m}=e();d.sessionId&&d.sessionId===m&&(d.status==="running"?(Ee.has(d.sessionId)?n({turnStartedAt:Ee.get(d.sessionId)}):r(d.sessionId,Date.now()),n({status:"running"}),c()):(d.status==="idle"||d.status==="error"||d.status==="cancelled")&&(u(),rt!==null&&(cancelAnimationFrame(rt),rt=null),wt=null,s(d.sessionId),n({status:"idle"}),Gn(m).then(f=>{n(x=>({messages:t(x.messages.filter(C=>C.id!==xt),f.messages,void 0)})),f.model&&(Z.getState().setLiveModel(f.model),f.model.llmNo!=null&&n({sessionModelNo:f.model.llmNo}));const{pendingQueue:y,status:b}=e();if(b==="idle"&&y.length>0){const[x,...C]=y;n({pendingQueue:C}),e().sendMessage(x.text,x.opts)}}).catch(()=>{}))),d.sessionId&&d.sessionId!==m&&(d.status==="idle"||d.status==="error"||d.status==="cancelled"?Ee.delete(d.sessionId):d.status==="running"&&!Ee.has(d.sessionId)&&Ee.set(d.sessionId,Date.now())),(d.status==="idle"||d.status==="error")&&Qn().then(f=>n({sessions:f})).catch(()=>{})}),Qn().then(p=>n({sessions:p})).catch(()=>{}),{activeSessionId:null,messages:[],status:"idle",sessions:[],runningSessions:new Set,turnStartedAt:null,turnStarts:{},pendingQueue:[],sessionModelNo:null,async newSession(){n({activeSessionId:null,messages:[],status:"idle",turnStartedAt:null,turnStarts:{},pendingQueue:[],sessionModelNo:null})},async sendMessage(p,d){var S;let{activeSessionId:m,status:f}=e();if(!m){m=await Pd(),n({activeSessionId:m}),e().loadSessions();const k=e().sessionModelNo;k!=null&&Ar(m,k).catch(()=>{})}if(f==="running"){n(k=>({pendingQueue:[...k.pendingQueue,{text:p,opts:d}]}));return}const y=Date.now(),b=(S=d==null?void 0:d.images)==null?void 0:S.map(k=>({name:k.name,path:k.base64||k.path||k.name})),x=d==null?void 0:d.files,C={id:`local-${y}`,role:"user",content:p,status:"completed",createdAt:y,images:b,files:x};n(k=>({messages:[...k.messages,C],status:"running"})),r(m,y),c(),await Id(m,p,d==null?void 0:d.files,d==null?void 0:d.images)},cancelQueued(p){n(d=>({pendingQueue:d.pendingQueue.filter((m,f)=>f!==p)}))},async cancel(){const{activeSessionId:p}=e();p&&await Td(p)},setActiveSession(p){u();const d=p?Ee.get(p)??null:null;n({activeSessionId:p,messages:[],status:"idle",turnStartedAt:d,pendingQueue:[],sessionModelNo:null}),p&&Gn(p).then(m=>{const f=t([],m.messages,m.partial);if(n({messages:f,status:m.status}),m.model&&(Z.getState().setLiveModel(m.model),m.model.llmNo!=null&&n({sessionModelNo:m.model.llmNo})),m.status==="running"){if(Ee.has(p))n({turnStartedAt:Ee.get(p)});else{const y=o(m.messages);r(p,y)}c()}else Ee.delete(p),n({turnStartedAt:null})}).catch(()=>{})},async loadSessions(){try{const p=await Qn();n({sessions:p})}catch{}},async deleteSession(p){const{activeSessionId:d}=e();d===p&&n({activeSessionId:null,messages:[],status:"idle",turnStartedAt:null}),Ee.delete(p),n(m=>{const{[p]:f,...y}=m.turnStarts;return{sessions:m.sessions.filter(b=>b.id!==p),turnStarts:y}});try{await Rd(p)}catch{}},async renameSession(p,d){n(m=>({sessions:m.sessions.map(f=>f.id===p?{...f,title:d,untitled:!1}:f)}));try{await Nd(p,d)}catch{}},async pinSession(p,d){n(m=>({sessions:m.sessions.map(f=>f.id===p?{...f,pinned:d}:f)}));try{await $d(p,d)}catch{}},async selectSessionModel(p){const{activeSessionId:d}=e(),m=e().sessionModelNo;if(n({sessionModelNo:p}),!!d)try{const f=await Ar(d,p);f.model&&(Z.getState().setLiveModel(f.model),f.model.llmNo!=null&&n({sessionModelNo:f.model.llmNo}))}catch{n({sessionModelNo:m})}}}});Xs(n=>{n==="ready"&&G.getState().loadSessions()});const Ad={"app.title":"GenericAgent","brand.sub":"","nav.chat":"新建会话","nav.services":"运行状态","nav.channels":"消息通道","nav.status":"运行状态","nav.collab":"指挥家","nav.token":"用量","foot.settings":"配置","foot.runtimeManagement":"运行时管理","foot.ver":"GenericAgent","chat.startTitle":"开始对话","chat.startSub":"直接输入,或点预设功能一键启动","chat.inputPlaceholder":"输入消息…","preset.butler.t":"指挥家","preset.butler.d":"复杂任务自动拆解,只需查看进度和简报","preset.plan.t":"计划模式","preset.plan.d":"加载 Plan SOP,按探索→规划→执行→验证流程","preset.goal.t":"目标模式","preset.goal.d":"设定目标,自主完成","preset.autonomous.t":"自主行动","preset.autonomous.d":"按 SOP 规划/执行任务,产出报告(reflect/autonomous.py 同源)","preset.hive.t":"集群协作","preset.hive.d":"多 worker 协同攻坚","preset.review.t":"深度复核","preset.review.d":"挑刺式质量把关","preset.findwork.t":"找点事做","preset.findwork.d":"分析当前情况,推荐一批让你感兴趣的 TODO","preset.mine.t":"我的·周报","preset.mine.d":"自定义:抓本周提交并写周报","preset.add.t":"自定义","preset.add.d":"任意一句话存为功能","composer.placeholder":"今天帮你做些什么?","composer.placeholder.new.0":"今天帮你做些什么?@ 引用文件;/ 调用预设技能","composer.placeholder.new.1":"交给我一个任务","composer.placeholder.new.2":"有什么想法?","composer.placeholder.new.3":"描述你的需求","composer.placeholder.new.4":"今天解决什么?","composer.placeholder.new.5":"随便问","composer.placeholder.new.6":"从目标开始","composer.placeholder.followUp.0":"继续补充…","composer.placeholder.followUp.1":"添加更多上下文","composer.placeholder.followUp.2":"细化你的请求","composer.placeholder.followUp.3":"接下来做什么?","composer.placeholder.followUp.4":"继续推进","composer.placeholder.reconnecting":"重新连接中…","search.placeholder":"搜索会话…","search.noResults":"无匹配会话","conv.new":"新对话","section.sessions":"会话","ctx.pin":"置顶","ctx.unpin":"取消置顶","ctx.rename":"重命名","ctx.del":"删除","common.close":"关闭","common.more":"更多","common.optional":"选填","common.save":"保存","common.cancel":"取消","common.confirm":"确认","common.edit":"编辑","common.delete":"删除","common.done":"完成","modal.preset":"预设功能","modal.addModel":"添加模型","modal.editModel":"编辑模型","modal.settings":"配置","modal.features":"功能","modal.customPreset":"自定义预设","modal.editCustomPreset":"编辑任务","customPreset.titlePh":"标题,例如「写周报」","customPreset.promptPh":"Prompt 内容,发送时会作为消息提交","customPreset.empty":"标题和 Prompt 不能为空","customPreset.removeTitle":"删除","customPreset.editTitle":"编辑","builtinPreset.restoreBtn":"恢复默认预设","set.appearance":"外观","set.plainUi":"素色","set.fontSize":"聊天字号","set.lang":"语言","set.model":"模型配置","set.addModel":"添加模型","set.features":"功能","set.importMykey":"导入已有密钥配置","set.exportMykey":"导出当前模型配置","set.serviceManager":"运行状态","shortcut.askConfirm":"是否在桌面创建 GenericAgent 快捷方式?","appearance.light":"浅色","appearance.dark":"深色","set.noModels":"暂无模型,点击下方添加","set.current":"新会话默认","lang.zh":"简体中文","lang.en":"English","model.name":"备注名","model.namePh":"选填,方便自己辨认","model.apikey":"API Key","model.apikeyPh":"请输入 API Key","model.apikeyKeep":"留空则保持原 Key 不变","model.apibase":"API URL","model.apibasePh":"请输入 API URL","model.protocol":"模型协议","model.protocolPick":"请选择…","model.protocolOai":"OpenAI 兼容 (chat/completions)","model.protocolClaude":"Anthropic (Claude /v1/messages)","model.stream":"响应方式","model.streamOn":"流式","model.streamOff":"非流式","model.model":"模型 ID","model.modelPh":"请输入模型唯一标识","model.modelHint":"须与服务商文档中的 model 字段完全一致","model.retries":"重试次数","model.connTimeout":"连接超时 (s)","model.readTimeout":"读取超时 (s)","model.save":"保存","model.auto":"自动选择","model.menuLabel":"选择模型","model.aggregation":"默认组","model.aggregationShort":"默认组","model.aggregationDesc":"按顺序尝试,失败自动切换到下一个","model.configurationHelp":"模型配置说明","model.configurationTip":"设置新会话默认使用的模型;也可以在会话输入框中临时切换","model.aggregationTip":"默认组会按列表顺序尝试模型;当前模型不可用时自动切换到下一项","model.emptyMixin":"尚未加入模型","model.addToMixin":"加入默认组","model.inMixin":"已在默认组","model.removeFromMixin":"移出默认组","model.alreadyInMixin":"已在默认组中","model.dragReorder":"拖拽调整顺序","model.routeProvider":"服务商接入","model.routeCustom":"自定义接入","model.selectProvider":"选择服务商","model.providerLocked":"由服务商预设,不可更改","model.advanced":"高级配置","model.getKey":"获取 API Key →","pq.title":"快速接入官方模型","pq.sub":"填好 API Key 即可使用","pq.toggle":"展开 / 收起","pq.deepseekDesc":"深度求索 · DeepSeek 开放平台","pq.qwenDesc":"阿里云百炼 · 通义大模型","pq.doubaoDesc":"火山引擎 · 火山方舟平台","pq.minimaxDesc":"MiniMax · 开放平台","pq.zhipuDesc":"智谱 AI · GLM 开放平台","pq.kimiDesc":"月之暗面 · Moonshot 平台","pq.stepfunDesc":"阶跃星辰 · Step 开放平台","guide.step1":"点击下方链接,登录后创建并复制 API Key","guide.step2":"把 Key 粘贴到下方「API Key」输入框","guide.step3":"点击保存,即可在模型列表中选用","guide.prefillTip":"已为你预填 API 地址、协议与模型,可按需修改","guide.getKey":"获取 {name} 的 API Key","guide.copy":"复制链接","guide.copied":"链接已复制","err.modelSave":"保存失败","err.modelRequired":"请填写模型、API Key 和 API 地址","err.modelDelete":"删除失败","err.modelDeleteLast":"至少保留一个模型","err.mixinFailed":"操作失败","confirm.modelDelete":"确定删除该模型配置?","page.services.title":"运行状态","page.services.sub":"查看消息通道及本地运行环境中各组件的状态、日志与控制项","svc.colName":"运行组件","svc.colStatus":"状态","svc.colPid":"PID","svc.colMemory":"内存 (MB)","svc.colCpu":"CPU (%)","svc.colActions":"操作","svc.empty":"暂无运行组件","page.channels.title":"消息通道","page.channels.sub":"管理消息通道,查看启停状态与日志","page.status.title":"运行状态","page.status.sub":"查看本地运行环境中各组件的状态、日志与控制项","page.collab.title":"指挥家","page.collab.sub":"交代目标,自动拆活与跟进","collab.progressTitle":"分工进度","collab.progressEmpty":"还没有任务在执行。告诉指挥家你的目标后,这里会显示拆分后的处理进度。","collab.placeholder":"请对指挥家描述你想完成的目标","collab.guideTitle":"把要完成的事告诉指挥家","collab.guideWhen":"适合需要多步处理、要花一些时间才能完成的目标。日常聊天和快问快答,请用左侧「聊天」。","collab.guideStep1t":"描述目标","collab.guideStep1d":"在聊天框里写下你想做的事,发给指挥家","collab.guideStep2t":"自动拆解","collab.guideStep2d":"指挥家自动拆解、分配任务,实时监督和调度","collab.guideStep3t":"交付摘要","collab.guideStep3d":"指挥家根据执行状态,呈上任务简报","collab.guideStep4t":"随时调整","collab.guideStep4d":"随时补充要求或细节,指挥家都会处理","collab.chipProgress":"现在进展如何?","collab.chipPause":"先暂停当前任务","collab.chipSummary":"总结一下目前的结果","collab.showProgressTitle":"查看分工进度","collab.statRunning":"进行中","collab.statDone":"已完成","collab.plusMenu":"更多操作","collab.switchMode":"切换模式","collab.typing":"指挥家正在处理","collab.offline":"暂时无法连接指挥家服务,请稍后重试。","collab.offlineTitle":"指挥家离线","collab.offlineSub":"指挥家服务暂时不可用,请检查连接后重试。","collab.retry":"重试","collab.terminateWorker":"终止任务","collab.terminateWorkerConfirm":"要终止“{name}”吗?该执行者当前尚未回报的进度可能会丢失。","collab.terminateWorkerFailed":"终止任务失败","collab.reconnect":"连接断开,正在重连… 已保留上次任务进度。","collab.reconnectIn":"{n} 秒后重试","collab.stRunning":"执行中","collab.stReported":"已回报","collab.stPaused":"已暂停","collab.stFailed":"遇到问题","collab.stTerminated":"已终止","collab.summaryRunning":"正在处理中…","collab.summaryWait":"等待回报","collab.taskFallback":"任务 {n}","collab.timeJust":"刚刚","collab.timeSec":"{n} 秒前","collab.timeMin":"{n} 分钟前","collab.timeHr":"{n} 小时前","collab.timeDay":"{n} 天前","page.token.title":"用量","page.token.sub":"每会话与累计用量及缓存率","status.connecting":"正在连接…","status.ready":"服务在线","status.running":"处理中","status.disconnected":"服务离线","status.stopped":"已停止","status.idle":"待命","conv.emptyList":"暂无会话,点「+ 新对话」开始","conv.defaultTitle":"新对话","err.bridge":"服务未响应","err.newSession":"新建会话失败","err.poll":"轮询失败","err.stop":"停止失败","err.interruptTimeout":"等待上一轮停止超时,请稍后再试","sys.interruptPrev.hint":"已停止上一轮,正在处理新消息","chat.interrupting":"正在停止上一轮…","chat.sessionLoading":"正在加载会话…","sys.stopRequested":"已请求停止","slash.help":`可用命令: -/new 新会话 /clear 清屏 /stop 停止 /settings 设置`,"slash.unknown":"未知命令","upload.hint":"上传文件:选择 / 拖拽 / 粘贴","upload.button":"上传文件","upload.tooLarge":"文件过大或数量超限","upload.empty":"跳过空文件","upload.failed":"上传失败","err.charLimit":"已达字数上限({n}),发送时将自动截断","err.charLimitReached":"已达字数上限({n})","err.numMax":"不能超过 {n}","file.openFailed":"无法打开文件","file.kindGeneric":"文件","file.kindDoc":"文档","file.kindSheet":"表格","file.kindSlide":"幻灯片","file.kindCode":"代码","file.kindArchive":"压缩包","file.kindAudio":"音频","file.kindVideo":"视频","upload.removeTitle":"移除","upload.dropHint":"松开以上传文件","lightbox.closeTitle":"关闭","fold.thinking":"思考","fold.tool":"工具调用","fold.toolResult":"工具结果","fold.llm":"LLM Running","fold.turn":"第 {n} 轮","plan.header":"计划 ({done}/{total})","plan.complete":"✓ 计划完成 ({n}/{n})","plan.running":"计划执行中","plan.completeTitle":"计划完成","plan.placeholder":"计划模式已激活","plan.waiting":"等待写入 {path} …","plan.overflow":"还有 {n} 项","plan.current":"当前","plan.collapse":"收起","plan.expand":"展开","plan.details":"详情","plan.capsuleRunning":"运行中","plan.capsuleComplete":"已完成","timing.elapsed":"已运行 {t}","chip.plan":"Plan","chip.auto":"Auto","ch.wechat":"微信","ch.wecom":"企业微信","ch.lark":"飞书","ch.dingtalk":"钉钉","ch.qq":"QQ","ch.telegram":"Telegram","ch.discord":"Discord","ch.loading":"加载中…","ch.empty":"未发现 IM 进程脚本","ch.logEmpty":"暂无日志","err.channelLoad":"加载失败","err.channelStart":"启动失败","err.channelStop":"停止失败","err.mykeyImport":"导入模型配置失败","err.mykeyExport":"导出模型配置失败","err.channelNotConfigured":"请先在密钥配置中完成该平台设置","sys.channelStarted":"已启动","sys.channelStopped":"已停止","sys.bridgeDisconnecting":"正在断开本地连接","modal.channelLogs":"进程日志","modal.mykeyConfig":"密钥配置","sys.configSaved":"配置已保存","sys.mykeyImported":"模型配置已导入","sys.mykeyExported":"模型配置已导出","st.starting":"启动中…","st.stopping":"停止中…","st.online":"在线","st.offline":"离线","st.error":"错误","st.running":"运行中","st.stopped":"已停止","st.abnormal":"异常","st.warning":"警告","err.portBusy":"端口被占用,已自动重连","err.conductorCrash":"内部线程异常退出","err.missingModule":"缺少依赖模块","err.connRefused":"连接被拒绝,将自动重试","err.timeout":"连接超时","err.apiKeyInvalid":"API Key 无效或已过期","err.modelNotFound":"模型不存在或不可用","err.rateLimit":"请求频率超限,请稍后重试","err.quotaExceeded":"额度不足","err.processCrash":"后台进程异常退出","act.configure":"配置","act.logs":"日志","act.restart":"重启","act.stop":"停止","act.start":"启动","act.disconnect":"断开","act.copy":"复制","act.copied":"已复制","act.copyTex":"TeX","act.send":"发送","proc.imbotWechat":"imbot · 微信","proc.imbotDing":"imbot · 钉钉","proc.bridge":"本地连接","proc.bridgeSummary":"连接桌面应用与本地运行环境","proc.bridgeTip":"保持桌面应用与本地运行环境通信","proc.scheduler":"定时任务","proc.schedulerSummary":"按计划自动执行任务","proc.schedulerTip":"在设定时间自动触发并执行任务","proc.conductor":"指挥家","proc.conductorSummary":"异步处理多步骤任务","proc.conductorTip":"通过异步对话拆解任务、分派执行,并持续跟进进度","proc.runtimeComponent":"运行组件","proc.runtimeComponentSummary":"本地运行环境中持续工作的组件","proc.runtimeComponentTip":"查看该组件的状态、日志与控制项","cm.scheduling":"调度中","cm.running":"执行中","cm.idleSt":"空闲","cm.master":"已派 3 子任务","cm.w1":"子任务:抓取数据","cm.w2":"子任务:复核结果","cm.sub":"等待派单","tok.total":"累计","tok.cost":"缓存率","tok.today":"今日","tok.tabAll":"会话","tok.tabConductor":"指挥家","tok.condTotal":"指挥家累计","tok.condCurrent":"指挥家本次","tok.condTip":"指挥家消耗不计入会话累计","tok.condOffline":"指挥家服务离线","tok.disclaimer":"不同 API 网站的计费价格可能会有差异,请以实际网站为准。","tok.colSession":"会话","tok.colIn":"输入","tok.colOut":"输出","tok.colCacheW":"缓存写入","tok.colCache":"缓存读取","tok.colCost":"成本","tok.from":"从","tok.to":"到","tok.reset":"重置","tok.noData":"暂无记录","tok.deleted":"此会话已删除","tok.pricingUnknown":"⚠ 此模型计费规则尚未明确,按默认估算","tok.priceInput":"输入: $","tok.priceOutput":"输出: $","tok.priceCacheW":"缓存写入: $","tok.priceCacheR":"缓存读取: $","presetPrompt.goal":"进入 Goal 模式:读 L3 goal mode SOP,自主达成我接下来描述的目标。","presetPrompt.plan":"进入 Plan 模式:先读 memory/plan_sop.md,按其中「探索→规划→执行→验证」流程,等我接下来描述要做的任务。","presetPrompt.autonomous":"🤖 进入自主行动模式:阅读 memory/autonomous_operation_sop.md,按 SOP 选取或规划任务,独立执行并产出报告。","presetPrompt.hive":"启动 Goal Hive 模式:按 hive SOP 拉起多个 worker 协同完成我接下来的目标。","presetPrompt.review":"进入监察者模式:对刚才的产出严格挑刺、逐项复核并报告问题。","presetPrompt.findwork":"按照自主行动的规划部分,充分分析我的情况,给我生成一批 TODO,务必让我感兴趣。","presetPrompt.mine":"抓取本周的 git 提交并写一份周报。","ask.banner":"应用正在等待你的回答","ask.replyHint":"在下方输入框回复","ask.placeholderOpen":"在此输入你的回答… (Enter 发送)","session.rename":"重命名","session.pin":"置顶","session.unpin":"取消置顶","session.delete":"删除","session.deleteConfirm":"确定删除这个会话吗?","bridge.connected":"已连接","bridge.connecting":"连接中","bridge.offline":"离线","bridge.offlineHint":"本地连接暂时不可用,请检查连接模式或稍后刷新界面","bridge.staleData":"本地连接已断开,正在显示上次状态","bridge.notRunning":"本地连接尚未建立","bridge.notRunningHint":"请从桌面版打开此页面以管理本地连接","bridge.inferenceReady":"推理就绪","bridge.inferenceConnecting":"推理连接中","bridge.inferenceError":"推理异常","bridge.inferenceOffline":"推理离线","bridge.restart":"重新连接","bridge.refresh":"刷新界面","bridge.openServices":"查看运行状态","bridge.recentActivity":"最近活动","bridge.viewAllLogs":"查看全部日志","bridge.logLineCount":"共 {count} 行","bridge.noActivity":"暂无活动记录","conductor.openPage":"打开指挥家 →","data.title":"数据维护","data.sectionHelp":"数据维护说明","data.sectionTip":"在这里导入或导出密钥配置、记忆与会话;记忆与会话备份默认不包含密钥配置","data.importKey":"导入密钥配置","data.importKeyTip":"从本地配置文件读取模型密钥与接口地址,并替换当前密钥配置","data.importKeyBtn":"导入","data.importKeySuccess":"密钥配置已导入","data.importKeyError":"导入失败","data.exportKey":"导出密钥配置","data.exportKeyTip":"将当前模型密钥与接口地址单独保存为配置文件;文件包含敏感信息,请妥善保管","data.exportKeyBtn":"导出","data.exportKeySuccess":"已导出","data.exportKeyError":"导出失败","data.importData":"导入记忆与会话","data.importDataTip":"导入前会完整备份当前记忆;来源中的同名记忆会覆盖当前版本,回复记录与会话只添加新项,密钥配置不受影响","data.importDataBtn":"选择来源","data.importing":"正在读取…","data.importDataSuccess":"导入完成 — 写入 {memory} 个记忆文件,新增 {responses} 个回复记录和 {sessions} 个会话","data.importDataError":"导入失败","data.importDataInvalid":"无法读取此备份或数据文件夹","data.importSourceTitle":"选择导入来源","data.importSourceDescription":"可以直接导入本应用生成的备份文件(.zip),也可以从旧数据文件夹迁移。旧数据文件夹应选择GenericAgent根目录(包含 temp/desktop_sessions 等子文件夹)。","data.importBackupBtn":"选择备份文件","data.importFolderBtn":"选择旧数据文件夹","data.importBackupPickerTitle":"选择数据备份","data.importFolderPickerTitle":"选择旧数据文件夹","data.importConfirmTitle":"导入这些数据?","data.importConfirmBtn":"导入","data.importExportedAt":"备份时间","data.importSource":"数据来源","data.importContents":"包含内容","data.importContentsValue":"{memory} 个记忆文件、{sessions} 个会话、{responses} 个回复记录","data.importMergeNotice":"导入开始前会完整备份当前记忆。来源中的同名记忆会覆盖当前版本;回复记录和会话只添加新项,重复项保留当前数据。","data.importLegacySource":"旧数据文件夹","data.maintenanceBlocked":"请先停止所有运行中的会话和受管理服务,再导入或导出数据。当前会话状态:{sessions};运行服务:{services}。","data.maintenanceBlockedServer":"数据操作未开始:仍有 {sessions} 个会话或 {services} 个受管理服务在运行。请停止后重试。","data.externalProcessWarning":"导入前还应停止使用同一数据文件夹的其他 GenericAgent 命令行、终端进程和自动化;桌面应用无法暂停这些外部进程。","data.importResultTitle":"导入完成","data.importResultMemory":"记忆文件","data.importResultMemoryValue":"已写入 {count} 个(同名文件以来源为准)","data.importResultResponses":"回复记录","data.importResultSessions":"会话","data.importResultAddSkipValue":"新增 {added} 个,跳过 {skipped} 个重复项","data.importResultBackup":"导入前备份","data.importResultNoBackup":"本次无需创建导入前记忆备份","data.importRestoreHint":"如需恢复,请先停止会话、受管理服务及使用同一数据文件夹的外部进程,再从以上目录恢复 memory 文件夹。","data.importNoRestoreNeeded":"本次没有需要预先备份的记忆变更。回复记录和会话仍按只新增规则处理。","data.exportData":"导出记忆与会话","data.exportDataTip":"将当前记忆和历史会话创建为一份备份快照;不会移动或删除原数据,也不包含密钥配置","data.exportDataBtn":"导出","data.exporting":"正在导出…","data.exportDataConfirmTitle":"导出记忆与会话?","data.exportDataConfirmMessage":"导出文件将包含记忆和历史会话,请妥善保管。密钥配置不会包含在内。","data.exportDataConfirmBtn":"选择保存位置","data.exportDataPickerTitle":"保存数据备份","data.exportDataSuccessTitle":"导出完成","data.exportDataSuccessMessage":"备份已保存到:","data.exportDataReveal":"在 Finder 中显示","data.exportDataError":"导出失败","data.exportDataRevealError":"无法在 Finder 中显示此文件","connection.title":"连接模式","connection.sectionHelp":"连接模式说明","connection.sectionTip":"连接模式决定本桌面应用从哪里运行;切换不会复制、移动或合并两边的数据","connection.description":"选择本桌面应用从哪里运行:使用本桌面应用内置的运行环境,或连接你已有的本地仓库。切换后,记忆与会话也会随所选位置切换。","connection.included":"内置运行环境","connection.includedDescription":"使用本桌面应用内置的运行环境,无需另选仓库,开箱即用并支持离线使用","connection.includedTip":"这套运行环境随桌面应用安装,不需要你准备其他仓库;切换到这里后,将使用内置环境中的记忆与会话","connection.local":"本地仓库","connection.localDescription":"连接你在使用桌面版之前已经拥有的本地仓库,继续使用其中的记忆与会话","connection.localTip":"桌面应用会直接连接你选择的本地仓库,不会把仓库复制、移动或合并到内置运行环境","connection.current":"当前使用","connection.currentRepository":"当前仓库","connection.pendingRepository":"将连接到","connection.chooseRepository":"选择本地仓库","connection.changeRepository":"重新选择","connection.repositoryPickerTitle":"选择本地仓库","connection.repositoryValidated":"仓库可用,应用后生效","connection.pendingNotice":"所选模式尚未应用","connection.runningTaskBlock":"请等待当前任务完成后再切换连接模式","connection.apply":"应用并连接","connection.applying":"正在连接…","connection.includedSuccess":"正在使用内置运行环境","connection.localSuccess":"正在使用所选本地仓库","connection.status":"运行状态","connection.statusTip":"显示当前所选运行环境是否可用;详细页面可查看运行组件、日志和控制项","connection.statusReady":"运行正常","connection.statusConnecting":"正在连接","connection.statusUnavailable":"暂时不可用","connection.viewStatus":"查看运行状态","connection.errorInvalid":"无效仓库 — 缺少必要文件","connection.errorIncompatible":"此仓库与当前桌面版不兼容","connection.errorTimeout":"连接超时 — 请检查仓库是否完整","connection.errorGeneric":"无法完成连接,请稍后重试","helpFeedback.title":"帮助与反馈","helpFeedback.communityTitle":"加入官方社群","helpFeedback.communityDescription":"前往项目主页查看最新的官方社群二维码。","helpFeedback.communityAction":"查看社群二维码","helpFeedback.tutorialTitle":"阅读官方教程","helpFeedback.tutorialDescription":"从安装、配置到日常使用,跟随教程逐步了解。","helpFeedback.tutorialAction":"打开官方教程","helpFeedback.maintainersTitle":"联系桌面版维护者","helpFeedback.maintainersDescription":"桌面版使用中遇到问题或有建议,可添加微信联系:","helpFeedback.copy":"复制","helpFeedback.copySuccess":"微信号已复制","helpFeedback.copyError":"复制失败,请手动复制微信号"},zd={"app.title":"GenericAgent","brand.sub":"","nav.chat":"New Session","nav.services":"Runtime status","nav.channels":"Message channels","nav.status":"Runtime status","nav.collab":"Conductor","nav.token":"Usage","foot.settings":"Settings","foot.runtimeManagement":"Runtime management","foot.ver":"GenericAgent","chat.startTitle":"Start a conversation","chat.startSub":"Type a message, or pick a preset","chat.inputPlaceholder":"Type a message…","preset.butler.t":"Conductor","preset.butler.d":"Auto-decompose complex tasks; just check progress and briefings","preset.plan.t":"Plan mode","preset.plan.d":"Load Plan SOP — explore→plan→execute→verify","preset.goal.t":"Goal mode","preset.goal.d":"Set a goal, run autonomously","preset.autonomous.t":"Autonomous mode","preset.autonomous.d":"Plan/execute tasks per SOP and produce reports (same as reflect/autonomous.py)","preset.hive.t":"Hive","preset.hive.d":"Multi-worker collaboration","preset.review.t":"Deep review","preset.review.d":"Strict quality check","preset.findwork.t":"Find me work","preset.findwork.d":"Analyze my context and suggest a batch of interesting TODOs","preset.mine.t":"My · Weekly","preset.mine.d":"Custom: weekly report from commits","preset.add.t":"Custom","preset.add.d":"Save any prompt as a function","composer.placeholder":"What are we building?","composer.placeholder.new.0":"What are we building? @ mention files · / invoke skills","composer.placeholder.new.1":"Give me a task","composer.placeholder.new.2":"What's on your mind?","composer.placeholder.new.3":"Describe what you need","composer.placeholder.new.4":"What should we tackle?","composer.placeholder.new.5":"Ask anything","composer.placeholder.new.6":"Start with a goal","composer.placeholder.followUp.0":"Send a follow-up","composer.placeholder.followUp.1":"Add more context","composer.placeholder.followUp.2":"Refine the request","composer.placeholder.followUp.3":"What's next?","composer.placeholder.followUp.4":"Keep it going","composer.placeholder.reconnecting":"Reconnecting…","search.placeholder":"Search chats…","search.noResults":"No matching chats","conv.new":"New chat","section.sessions":"Sessions","ctx.pin":"Pin","ctx.unpin":"Unpin","ctx.rename":"Rename","ctx.del":"Delete","common.close":"Close","common.more":"More","common.optional":"Optional","common.save":"Save","common.cancel":"Cancel","common.confirm":"Confirm","common.edit":"Edit","common.delete":"Delete","common.done":"Done","modal.preset":"Presets","modal.addModel":"Add model","modal.editModel":"Edit model","modal.settings":"Settings","modal.features":"Features","modal.customPreset":"Custom preset","modal.editCustomPreset":"Edit task","customPreset.titlePh":'Title, e.g. "Weekly report"',"customPreset.promptPh":"Prompt body — sent as the message when clicked","customPreset.empty":"Title and Prompt cannot be empty","customPreset.removeTitle":"Delete","customPreset.editTitle":"Edit","builtinPreset.restoreBtn":"Restore defaults","set.appearance":"Appearance","set.plainUi":"Plain","set.fontSize":"Chat font size","set.lang":"Language","set.model":"Model configuration","set.addModel":"Add model","set.features":"Features","set.importMykey":"Import key configuration","set.exportMykey":"Export current model config","set.serviceManager":"Runtime status","shortcut.askConfirm":"Create a desktop shortcut for GenericAgent?","appearance.light":"Light","appearance.dark":"Dark","set.noModels":"No models yet — add one below","set.current":"New chat default","lang.zh":"简体中文","lang.en":"English","model.name":"Alias","model.namePh":"Optional, for your own reference","model.apikey":"API Key","model.apikeyPh":"Enter API Key","model.apikeyKeep":"Leave blank to keep the current key","model.apibase":"API URL","model.apibasePh":"Enter API URL","model.protocol":"Protocol","model.protocolPick":"Select…","model.protocolOai":"OpenAI-compatible (chat/completions)","model.protocolClaude":"Anthropic (Claude /v1/messages)","model.stream":"Response","model.streamOn":"Stream","model.streamOff":"Non-stream","model.model":"Model ID","model.modelPh":"Enter model identifier","model.modelHint":"Must match the model field in your provider docs exactly","model.retries":"Retries","model.connTimeout":"Connect (s)","model.readTimeout":"Read (s)","model.save":"Save","model.auto":"Auto","model.menuLabel":"Select model","model.aggregation":"Default group","model.aggregationShort":"Default","model.aggregationDesc":"Tries in order, switches to the next on failure","model.configurationHelp":"About model configuration","model.configurationTip":"Set the default model for new sessions; you can still switch models from the composer for an individual session","model.aggregationTip":"The default group tries models in list order and automatically moves to the next when one is unavailable","model.emptyMixin":"No models added yet","model.addToMixin":"Add to default group","model.inMixin":"In default group","model.removeFromMixin":"Remove from group","model.alreadyInMixin":"Already in the group","model.dragReorder":"Drag to reorder","model.routeProvider":"Provider","model.routeCustom":"Custom","model.selectProvider":"Select provider","model.providerLocked":"Set by provider preset (read-only)","model.advanced":"Advanced","model.getKey":"Get API Key →","pq.title":"Quick connect a model","pq.sub":"Add your API key to get started","pq.toggle":"Expand / collapse","pq.deepseekDesc":"DeepSeek · Open Platform","pq.qwenDesc":"Alibaba Cloud Bailian · Qwen","pq.doubaoDesc":"Volcengine · Ark Platform","pq.minimaxDesc":"MiniMax · Open Platform","pq.zhipuDesc":"Zhipu AI · GLM Platform","pq.kimiDesc":"Moonshot AI · Developer Platform","pq.stepfunDesc":"StepFun · Open Platform","guide.step1":"Open the link, sign in, then create & copy your API key","guide.step2":'Paste the key into the "API Key" field below',"guide.step3":"Click Save — then pick it from the model list","guide.prefillTip":"API base, protocol and model are pre-filled — edit if needed","guide.getKey":"Get your {name} API key","guide.copy":"Copy link","guide.copied":"Link copied","err.modelSave":"Save failed","err.modelRequired":"Model, API Key and base URL are required","err.modelDelete":"Delete failed","err.modelDeleteLast":"At least one model is required","err.mixinFailed":"Operation failed","confirm.modelDelete":"Delete this model profile?","page.services.title":"Runtime status","page.services.sub":"View message channels and the status, logs, and controls for components in the local environment","svc.colName":"Runtime component","svc.colStatus":"Status","svc.colPid":"PID","svc.colMemory":"Memory (MB)","svc.colCpu":"CPU (%)","svc.colActions":"Actions","svc.empty":"No runtime components","page.channels.title":"Message channels","page.channels.sub":"Manage message channels and view their status and logs","page.status.title":"Runtime status","page.status.sub":"View status, logs, and controls for components in the local environment","page.collab.title":"Conductor","page.collab.sub":"Describe a goal — split, delegate, and follow up","collab.progressTitle":"Progress","collab.progressEmpty":"No tasks running yet. After you describe a goal to Conductor, split tasks will appear here.","collab.placeholder":"Describe the goal you want to accomplish","collab.guideTitle":"Tell Conductor what you want done","collab.guideWhen":"Best for multi-step goals that take a while. For everyday chat and quick questions, use Chat in the sidebar.","collab.guideStep1t":"Describe your goal","collab.guideStep1d":"Write what you want done in the chat box and send it to Conductor","collab.guideStep2t":"Auto breakdown","collab.guideStep2d":"Conductor breaks down, assigns, monitors, and coordinates","collab.guideStep3t":"Summary","collab.guideStep3d":"Conductor delivers a briefing based on execution status","collab.guideStep4t":"Adjust anytime","collab.guideStep4d":"Add requirements or details anytime — Conductor handles them","collab.chipProgress":"How is it going?","collab.chipPause":"Pause current tasks","collab.chipSummary":"Summarize progress so far","collab.showProgressTitle":"View task progress","collab.statRunning":"Running","collab.statDone":"Done","collab.plusMenu":"More actions","collab.switchMode":"Switch mode","collab.typing":"Conductor is working","collab.offline":"The Conductor service is temporarily unavailable. Try again shortly.","collab.offlineTitle":"Conductor Offline","collab.offlineSub":"Conductor is temporarily unavailable. Check your connection and try again.","collab.retry":"Retry","collab.terminateWorker":"Terminate task","collab.terminateWorkerConfirm":"Terminate “{name}”? Current progress from this worker may be lost.","collab.terminateWorkerFailed":"Failed to terminate the task","collab.reconnect":"Disconnected — reconnecting… Your last progress is kept.","collab.reconnectIn":"Retry in {n}s","collab.stRunning":"Running","collab.stReported":"Reported","collab.stPaused":"Paused","collab.stFailed":"Issue","collab.stTerminated":"Ended","collab.summaryRunning":"Working…","collab.summaryWait":"Awaiting report","collab.taskFallback":"Task {n}","collab.timeJust":"just now","collab.timeSec":"{n}s ago","collab.timeMin":"{n}m ago","collab.timeHr":"{n}h ago","collab.timeDay":"{n}d ago","page.token.title":"Usage","page.token.sub":"Per-session and total usage & cache rate","status.connecting":"Connecting…","status.ready":"Service online","status.running":"Working…","status.disconnected":"Service offline","status.stopped":"Stopped","status.idle":"Standby","conv.emptyList":'No chats yet — click "+ New chat"',"conv.defaultTitle":"New chat","err.bridge":"Service not responding","err.newSession":"Failed to create session","err.poll":"Polling failed","err.stop":"Stop failed","err.interruptTimeout":"Timed out waiting for the previous reply to stop — try again","sys.interruptPrev.hint":"Previous reply stopped — processing new message","chat.interrupting":"Stopping previous reply…","chat.sessionLoading":"Loading conversation…","sys.stopRequested":"Stop requested","slash.help":`Commands: -/new new chat /clear clear /stop stop /settings settings`,"slash.unknown":"Unknown command","upload.hint":"Upload file: pick / drag / paste","upload.button":"Upload file","upload.tooLarge":"File too large or limit reached","upload.empty":"Skipped empty file","upload.failed":"Upload failed","err.charLimit":"Character limit reached ({n}), text will be truncated on send","err.charLimitReached":"Character limit reached ({n})","err.numMax":"Cannot exceed {n}","file.openFailed":"Cannot open file","file.kindGeneric":"File","file.kindDoc":"Document","file.kindSheet":"Spreadsheet","file.kindSlide":"Slides","file.kindCode":"Code","file.kindArchive":"Archive","file.kindAudio":"Audio","file.kindVideo":"Video","upload.removeTitle":"Remove","upload.dropHint":"Drop to upload files","lightbox.closeTitle":"Close","fold.thinking":"Thinking","fold.tool":"Tool call","fold.toolResult":"Tool result","fold.llm":"LLM Running","fold.turn":"Turn {n}","plan.header":"Plan ({done}/{total})","plan.complete":"✓ Plan complete ({n}/{n})","plan.running":"Running plan","plan.completeTitle":"Plan complete","plan.placeholder":"Plan mode activated","plan.waiting":"waiting for {path} …","plan.overflow":"+{n} more","plan.current":"Now","plan.collapse":"Collapse","plan.expand":"Expand","plan.details":"Details","plan.capsuleRunning":"Running","plan.capsuleComplete":"Done","timing.elapsed":"Elapsed {t}","chip.plan":"Plan","chip.auto":"Auto","ch.wechat":"WeChat","ch.wecom":"WeCom","ch.lark":"Lark","ch.dingtalk":"DingTalk","ch.qq":"QQ","ch.telegram":"Telegram","ch.discord":"Discord","ch.loading":"Loading…","ch.empty":"No IM process scripts found","ch.logEmpty":"No log output yet","err.channelLoad":"Failed to load","err.channelStart":"Start failed","err.channelStop":"Stop failed","err.mykeyImport":"Failed to import model config","err.mykeyExport":"Failed to export model config","err.channelNotConfigured":"Complete this platform setup in Key configuration first","sys.channelStarted":"Started","sys.channelStopped":"Stopped","sys.bridgeDisconnecting":"Disconnecting from the local runtime","modal.channelLogs":"Process logs","modal.mykeyConfig":"Key configuration","sys.configSaved":"Configuration saved","sys.mykeyImported":"Model config imported","sys.mykeyExported":"Model config exported","st.starting":"Starting…","st.stopping":"Stopping…","st.online":"Online","st.offline":"Offline","st.error":"Error","st.running":"Running","st.stopped":"Stopped","st.abnormal":"Error","st.warning":"Warning","err.portBusy":"Port was busy, reconnected","err.conductorCrash":"Internal thread crashed","err.missingModule":"Missing module","err.connRefused":"Connection refused, retrying","err.timeout":"Connection timed out","err.apiKeyInvalid":"API key invalid or expired","err.modelNotFound":"Model not found or unavailable","err.rateLimit":"Rate limited, try again later","err.quotaExceeded":"Quota exceeded","err.processCrash":"Background process crashed","act.configure":"Configure","act.logs":"Logs","act.restart":"Restart","act.stop":"Stop","act.start":"Start","act.disconnect":"Disconnect","act.copy":"Copy","act.copied":"Copied","act.copyTex":"TeX","act.send":"Send","proc.imbotWechat":"imbot · WeChat","proc.imbotDing":"imbot · DingTalk","proc.bridge":"Local connection","proc.bridgeSummary":"Connects the desktop app to the local runtime","proc.bridgeTip":"Keeps the desktop app and local runtime communicating","proc.scheduler":"Scheduled tasks","proc.schedulerSummary":"Runs tasks on schedule","proc.schedulerTip":"Triggers and runs tasks at configured times","proc.conductor":"Conductor","proc.conductorSummary":"Handles multi-step work asynchronously","proc.conductorTip":"Uses async conversations to break down, delegate, and follow through on tasks","proc.runtimeComponent":"Runtime component","proc.runtimeComponentSummary":"A component that runs in the local environment","proc.runtimeComponentTip":"View this component’s status, logs, and controls","cm.scheduling":"Scheduling","cm.running":"Running","cm.idleSt":"Idle","cm.master":"Dispatched 3 subtasks","cm.w1":"Subtask: fetch data","cm.w2":"Subtask: review results","cm.sub":"Waiting for tasks","tok.total":"Total","tok.cost":"Cache rate","tok.today":"Today","tok.tabAll":"Chat","tok.tabConductor":"Conductor","tok.condTotal":"Conductor Total","tok.condCurrent":"Conductor Current","tok.condTip":"Conductor usage is not included in chat totals","tok.condOffline":"Service offline","tok.disclaimer":"Pricing may vary by API provider. Please refer to the actual website.","tok.colSession":"Session","tok.colIn":"Input","tok.colOut":"Output","tok.colCacheW":"Cache write","tok.colCache":"Cache read","tok.colCost":"Cost","tok.from":"From","tok.to":"To","tok.reset":"Reset","tok.noData":"No records","tok.deleted":"Session deleted","tok.pricingUnknown":"⚠ Pricing not confirmed, using defaults","tok.priceInput":"Input: $","tok.priceOutput":"Output: $","tok.priceCacheW":"Cache write: $","tok.priceCacheR":"Cache read: $","presetPrompt.goal":"Enter Goal mode: read the L3 goal-mode SOP and autonomously achieve the goal I describe next.","presetPrompt.plan":"Enter Plan mode: first read memory/plan_sop.md, follow its explore→plan→execute→verify flow, and wait for the task I describe next.","presetPrompt.autonomous":"🤖 Enter autonomous mode: read memory/autonomous_operation_sop.md, follow the SOP to pick or plan a task, execute independently, and produce a report.","presetPrompt.hive":"Start Goal Hive mode: per the hive SOP, spawn multiple workers to collaboratively achieve the goal I describe next.","presetPrompt.review":"Enter reviewer mode: strictly scrutinize the previous output, review item by item and report issues.","presetPrompt.findwork":"Following the autonomous planning section, analyze my situation thoroughly and generate a batch of TODOs that genuinely interest me.","presetPrompt.mine":"Collect this week's git commits and write a weekly report.","ask.banner":"The app is waiting for your answer","ask.replyHint":"Reply in the input below","ask.placeholderOpen":"Type your answer here… (Enter to send)","session.rename":"Rename","session.pin":"Pin","session.unpin":"Unpin","session.delete":"Delete","session.deleteConfirm":"Delete this session?","bridge.connected":"Connected","bridge.connecting":"Connecting","bridge.offline":"Offline","bridge.offlineHint":"The local connection is temporarily unavailable. Check Connection mode or refresh the interface shortly.","bridge.staleData":"Local connection lost — showing the last known state","bridge.notRunning":"Local connection has not been established","bridge.notRunningHint":"Open this page in the desktop app to manage the local connection","bridge.inferenceReady":"Inference ready","bridge.inferenceConnecting":"Connecting","bridge.inferenceError":"Inference error","bridge.inferenceOffline":"Inference offline","bridge.restart":"Reconnect","bridge.refresh":"Refresh interface","bridge.openServices":"View runtime status","bridge.recentActivity":"RECENT ACTIVITY","bridge.viewAllLogs":"View all logs","bridge.logLineCount":"{count} lines","bridge.noActivity":"No recent activity","conductor.openPage":"Open Conductor →","data.title":"Data management","data.sectionHelp":"About data management","data.sectionTip":"Import or export key configuration, memory, and sessions here; memory and session backups do not include key configuration by default","data.importKey":"Import key config","data.importKeyTip":"Read model keys and endpoints from a local config file and replace the current key configuration","data.importKeyBtn":"Import","data.importKeySuccess":"Key config imported","data.importKeyError":"Import failed","data.exportKey":"Export key config","data.exportKeyTip":"Save current model keys and endpoints as a separate config file; the file contains sensitive information, so store it securely","data.exportKeyBtn":"Export","data.exportKeySuccess":"Exported","data.exportKeyError":"Export failed","data.importData":"Import memory and sessions","data.importDataTip":"The current memory is fully backed up first; source memory overwrites same-name files, while response records and sessions are add-only. Key configuration is unchanged","data.importDataBtn":"Choose source","data.importing":"Reading…","data.importDataSuccess":"Import complete — {memory} memory files written, {responses} response records and {sessions} sessions added","data.importDataError":"Import failed","data.importDataInvalid":"This backup or data folder could not be read","data.importSourceTitle":"Choose an import source","data.importSourceDescription":"Import a backup created by this app (.zip), or migrate from an older data folder. For a folder, pick the GenericAgent root directory (the one containing temp/desktop_sessions).","data.importBackupBtn":"Choose backup file","data.importFolderBtn":"Choose older data folder","data.importBackupPickerTitle":"Choose a data backup","data.importFolderPickerTitle":"Choose an older data folder","data.importConfirmTitle":"Import this data?","data.importConfirmBtn":"Import","data.importExportedAt":"Backup time","data.importSource":"Data source","data.importContents":"Contents","data.importContentsValue":"{memory} memory files, {sessions} sessions, {responses} response records","data.importMergeNotice":"Current memory is fully backed up before import. Source memory overwrites same-name files; response records and sessions are add-only, so current duplicates are kept.","data.importLegacySource":"Older data folder","data.maintenanceBlocked":"Stop every running session and managed service before importing or exporting data. Session state: {sessions}; running services: {services}.","data.maintenanceBlockedServer":"The data operation did not start: {sessions} sessions or {services} managed services are still running. Stop them and try again.","data.externalProcessWarning":"Before importing, also stop other GenericAgent command-line or terminal processes and automations that use the same data folder. The desktop app cannot pause those external processes.","data.importResultTitle":"Import complete","data.importResultMemory":"Memory files","data.importResultMemoryValue":"{count} written (source wins for same-name files)","data.importResultResponses":"Response records","data.importResultSessions":"Sessions","data.importResultAddSkipValue":"{added} added, {skipped} duplicates skipped","data.importResultBackup":"Pre-import backup","data.importResultNoBackup":"No pre-import memory backup was required","data.importRestoreHint":"To restore, first stop sessions, managed services, and external processes using this data folder, then restore the memory folder from the directory above.","data.importNoRestoreNeeded":"This import had no memory change that required a prior backup. Response records and sessions still followed the add-only rule.","data.exportData":"Export memory and sessions","data.exportDataTip":"Create a backup snapshot of current memory and session history; original data stays in place and key configuration is not included","data.exportDataBtn":"Export","data.exporting":"Exporting…","data.exportDataConfirmTitle":"Export memory and sessions?","data.exportDataConfirmMessage":"The export contains memory and session history. Store it securely. Key configuration is not included.","data.exportDataConfirmBtn":"Choose save location","data.exportDataPickerTitle":"Save data backup","data.exportDataSuccessTitle":"Export complete","data.exportDataSuccessMessage":"Your backup was saved to:","data.exportDataReveal":"Show in Finder","data.exportDataError":"Export failed","data.exportDataRevealError":"This file could not be shown in Finder","connection.title":"Connection mode","connection.sectionHelp":"About connection mode","connection.sectionTip":"Connection mode decides where this desktop app runs from; switching does not copy, move, or merge data between the two locations","connection.description":"Choose where this desktop app runs from: the environment installed with the desktop app or a local repository you already own. Memory and sessions follow the selected location.","connection.included":"Included environment","connection.includedDescription":"Use the environment included with this desktop app, with no repository selection required and offline use supported","connection.includedTip":"This environment is installed with the desktop app, so you do not need to prepare another repository; selecting it uses the memory and sessions stored in the included environment","connection.local":"Local repository","connection.localDescription":"Connect a local repository you already owned before using the desktop app and continue with its memory and sessions","connection.localTip":"The desktop app connects directly to the selected local repository and does not copy, move, or merge it into the included environment","connection.current":"Current","connection.currentRepository":"Current repository","connection.pendingRepository":"Will connect to","connection.chooseRepository":"Choose local repository","connection.changeRepository":"Choose again","connection.repositoryPickerTitle":"Choose a local repository","connection.repositoryValidated":"Repository is available — apply to use it","connection.pendingNotice":"The selected mode has not been applied","connection.runningTaskBlock":"Wait for the current task to finish before switching connection mode","connection.apply":"Apply and connect","connection.applying":"Connecting…","connection.includedSuccess":"Using the included environment","connection.localSuccess":"Using the selected local repository","connection.status":"Runtime status","connection.statusTip":"Shows whether the selected environment is available; open the detailed page to view its components, logs, and controls","connection.statusReady":"Running normally","connection.statusConnecting":"Connecting","connection.statusUnavailable":"Temporarily unavailable","connection.viewStatus":"View runtime status","connection.errorInvalid":"Invalid repository — required files are missing","connection.errorIncompatible":"This repository is incompatible with the current desktop app","connection.errorTimeout":"Connection timed out — check that the repository is complete","connection.errorGeneric":"Could not connect. Try again shortly.","helpFeedback.title":"Help & Feedback","helpFeedback.communityTitle":"Join the official community","helpFeedback.communityDescription":"Visit the project page for the latest official community QR code.","helpFeedback.communityAction":"View community QR code","helpFeedback.tutorialTitle":"Read the official tutorial","helpFeedback.tutorialDescription":"Follow the tutorial from installation and setup through everyday use.","helpFeedback.tutorialAction":"Open official tutorial","helpFeedback.maintainersTitle":"Contact the desktop maintainers","helpFeedback.maintainersDescription":"If you run into an issue or have a suggestion while using the desktop app, contact us on WeChat:","helpFeedback.copy":"Copy","helpFeedback.copySuccess":"WeChat ID copied","helpFeedback.copyError":"Copy failed. Please copy the WeChat ID manually."},zr={zh:Ad,en:zd};function Fd(n,e,t){let r=(zr[n]||zr.zh)[e]??e;if(t)for(const[s,l]of Object.entries(t))r=r.replaceAll(`{${s}}`,String(l));return r}function he(){const n=Z(e=>e.lang);return a.useMemo(()=>({lang:n,t:(e,t)=>Fd(n,e,t)}),[n])}function Bd({label:n,count:e,open:t,onToggle:o,onAction:r,defaultOpen:s=!0}){const[l,c]=a.useState(s),u=t??l;function p(){const m=!u;c(m),o==null||o(m)}function d(m){m.stopPropagation(),r==null||r()}return i.jsxs("div",{className:"ga-section-header",onClick:p,children:[i.jsx("span",{className:"ga-section-dot"}),i.jsx("span",{className:"ga-section-label",children:n}),i.jsx("span",{className:"ga-section-count",children:e}),i.jsx("span",{className:`ga-section-chevron${u?" open":""}`,children:i.jsx(Pe,{name:"chevron-right",size:"0.625rem"})}),r&&i.jsx("button",{type:"button",className:"ga-section-action",onClick:d,children:i.jsx(Pe,{name:"add",size:"0.75rem"})})]})}function Ud(n){const e=Math.floor(n/1e3);if(e<60)return`${e}s`;const t=Math.floor(e/60),o=e%60;return`${t}m ${o}s`}function Vd({since:n}){const[e,t]=a.useState(Date.now());return a.useEffect(()=>{const o=setInterval(()=>t(Date.now()),1e3);return()=>clearInterval(o)},[]),i.jsx(i.Fragment,{children:Ud(e-n)})}function Kd(n){if(!n)return"";const e=typeof n=="number"?n*1e3:new Date(n).getTime(),t=Date.now()-e,o=Math.floor(t/6e4);if(o<1)return"now";if(o<60)return`${o}m`;const r=Math.floor(o/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function Wd({session:n,isActive:e,isWorking:t,onClick:o}){const{t:r}=he(),s=G(E=>E.renameSession),l=G(E=>E.deleteSession),c=G(E=>E.pinSession),u=G(E=>E.turnStarts[n.id]),[p,d]=a.useState(!1),[m,f]=a.useState(!1),[y,b]=a.useState(""),x=a.useRef(null);a.useEffect(()=>{var E,O;m&&((E=x.current)==null||E.focus(),(O=x.current)==null||O.select())},[m]);const C=a.useCallback(()=>{b(n.title||""),f(!0),d(!1)},[n.title]),S=a.useCallback(()=>{const E=y.trim();E&&E!==n.title&&s(n.id,E),f(!1)},[y,n.id,n.title,s]),k=a.useCallback(()=>{f(!1)},[]),_=a.useCallback(E=>{E.nativeEvent.isComposing||E.keyCode===229||(E.key==="Enter"?(E.preventDefault(),S()):E.key==="Escape"&&(E.preventDefault(),k()))},[S,k]),v=a.useCallback(()=>{d(!1),setTimeout(()=>c(n.id,!n.pinned),0)},[n.id,n.pinned,c]),j=a.useCallback(()=>{d(!1),setTimeout(()=>{le.confirm({title:r("session.delete"),content:r("session.deleteConfirm"),okType:"danger",onOk:()=>l(n.id)})},0)},[n.id,l,r]),w=i.jsxs(ue.Menu,{className:"ga-session-menu",children:[i.jsxs(ue.Item,{onClick:C,children:[i.jsx(Pe,{name:"edit",size:"0.875rem"}),i.jsx("span",{children:r("session.rename")})]}),i.jsxs(ue.Item,{onClick:v,children:[i.jsx(Pe,{name:"pin",size:"0.875rem"}),i.jsx("span",{children:n.pinned?r("session.unpin"):r("session.pin")})]}),i.jsxs(ue.Item,{type:"danger",onClick:j,children:[i.jsx(Pe,{name:"trash",size:"0.875rem"}),i.jsx("span",{children:r("session.delete")})]})]});return i.jsxs("div",{className:`ga-session-item${e?" active":""}`,onClick:m||p?void 0:o,children:[i.jsxs("span",{className:"ga-session-content",children:[i.jsx("span",{className:`ga-status-dot${t?" working":""}`}),m?i.jsx("input",{ref:x,className:"ga-session-rename-input",value:y,onChange:E=>b(E.target.value),onKeyDown:_,onBlur:S,onClick:E=>E.stopPropagation()}):i.jsx("span",{className:"ga-session-title",children:n.title||"Untitled"})]}),!m&&i.jsxs(i.Fragment,{children:[n.pinned&&i.jsx("span",{className:"ga-session-pin-icon",children:i.jsx(Pe,{name:"pinned",size:"0.875rem"})}),t&&u?i.jsx("span",{className:"ga-session-age ga-session-duration",children:i.jsx(Vd,{since:u})}):i.jsx("span",{className:"ga-session-age",children:Kd(n.updatedAt)}),i.jsx("span",{className:`ga-session-actions${p?" menu-open":""}`,onClick:E=>E.stopPropagation(),onMouseDown:E=>E.stopPropagation(),children:i.jsx(ue,{trigger:"click",position:"bottomRight",visible:p,onVisibleChange:d,render:w,children:i.jsx("button",{type:"button",className:"ga-session-actions-btn",onClick:E=>E.stopPropagation(),"aria-label":"Session actions",children:i.jsx(Pe,{name:"kebab-vertical",size:"0.875rem"})})})})]})]})}function Hd(n){const e=Xs(n),t=Ve("bridge-ready",()=>n());return()=>{t(),e()}}function Wo(){return a.useSyncExternalStore(Hd,Jo,Jo)}async function Zd(){const n=await fetch(`${ne}/services/conductor/model`);if(!n.ok)throw new Error(`HTTP ${n.status}`);return(await n.json()).model}async function qd(n){const e=await fetch(`${ne}/services/conductor/model`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({llmNo:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);return(await e.json()).model}async function Gd(){const n=await fetch(`${ne}/services/panel`);if(!n.ok)throw new Error(`HTTP ${n.status}`);return(await n.json()).services??[]}async function Qd(n){const e=await fetch(`${ne}/services/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);const t=await e.json();return{ok:t.ok??!0,service:t.service}}async function Yd(n){const e=await fetch(`${ne}/services/stop`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);const t=await e.json();return{ok:t.ok??!0,service:t.service}}async function yi(n,e=200){const t=await fetch(`${ne}/services/logs?id=${encodeURIComponent(n)}&tail=${e}`);if(!t.ok)throw new Error(`HTTP ${t.status}`);return(await t.json()).lines??[]}async function Xd(){const n=await fetch(`${ne}/services/mykey`);if(!n.ok)throw new Error(`HTTP ${n.status}`);return(await n.json()).content??""}async function Jd(n){const e=await fetch(`${ne}/services/mykey`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);return(await e.json()).ok??!1}async function eu(){const n=await fetch(`${ne}/services/bridge/exit`,{method:"POST"});if(!n.ok)throw new Error(`HTTP ${n.status}`);return(await n.json()).ok??!1}const tu=1200,nu=3e4,ou=5;function ru(n,e){return n==="running"?"running":n==="failed"?"failed":n==="aborted"?"terminated":n==="stopped"&&e.trim()?"reported":"paused"}let su=0;const Yn=new Map;function Fr(n){const e=String(n.id??"");Yn.has(e)||Yn.set(e,++su);const t=ru(String(n.status??""),String(n.reply??""));let o=String(n.prompt??"").replace(/^[\s请帮我麻烦]+/u,"").trim();o?(o=(o.split(/[\n。!?.!?]/)[0]||"").trim(),o.length>18&&(o=o.slice(0,18)+"…")):o=`Task #${Yn.get(e)}`;const r=String(n.reply??"").replace(/\s+/g," ").trim(),s=r?r.length>80?r.slice(0,80)+"…":r:t==="running"?"Working…":"Waiting…";return{id:e,title:o,status:t,summary:s,fullReply:String(n.reply??""),updatedAt:n.updated_at}}let Ie=null,st=0,$e=null,it=0,at=!1;const bi=ft((n,e)=>{function t(){if($e&&clearTimeout($e),!at&&it>=ou){n({connectionStatus:"offline"});return}const r=Math.min(nu,tu*Math.pow(2,Math.max(0,it-1)));n({connectionStatus:"connecting"}),$e=setTimeout(()=>e().connect(),r)}function o(r,s){if(s===st)if(r.type==="hello"){const l=(r.chat||[]).map(u=>({id:String(u.id??""),role:u.role||"system",msg:String(u.msg??""),ts:u.ts,read:u.read,files:u.files||[],images:u.images||[]})),c=(r.subagents||[]).map(Fr);n({messages:l,workers:c,conductorTyping:!!r.running,runtimeModel:r.model??null})}else if(r.type==="subagents"){const l=(r.items||[]).map(Fr);n({workers:l})}else if(r.type==="chat"){const l=r.item,c={id:String(l.id??""),role:l.role||"system",msg:String(l.msg??""),ts:l.ts,read:l.read,files:l.files||[],images:l.images||[]};n(u=>{if(c.id&&u.messages.some(d=>d.id===c.id))return u;if(c.role==="user"){const d=c.msg.replace(/\[(Image|File)\s+#\d+\]\s*/g,"").trim();for(let m=u.messages.length-1;m>=0;m--){const f=u.messages[m];if(f._local&&f.role==="user"&&(f.msg.replace(/\[(Image|File)\s+#\d+\]\s*/g,"").trim()===d||f.msg===c.msg)){const b=[...u.messages];return b[m]={...b[m],id:c.id||b[m].id,ts:c.ts??b[m].ts,_local:!1},{messages:b}}}}const p=c.role==="conductor"?!1:u.conductorTyping;return{messages:[...u.messages,c],conductorTyping:p}})}else r.type==="model"&&n({runtimeModel:r.model})}return{connectionStatus:"offline",messages:[],workers:[],conductorTyping:!1,modelConfig:null,runtimeModel:null,connect(){if(Ie&&(Ie.readyState===WebSocket.OPEN||Ie.readyState===WebSocket.CONNECTING))return;$e&&(clearTimeout($e),$e=null);const r=++st;n({connectionStatus:"connecting"});let s;try{s=new WebSocket(Ea)}catch{it++,t();return}Ie=s,s.onopen=()=>{r===st&&(at=!0,it=0,n({connectionStatus:"ready"}),e().loadModel())},s.onclose=()=>{r===st&&(n({connectionStatus:at?"connecting":"offline"}),at||it++,t())},s.onerror=()=>{},s.onmessage=l=>{if(r===st)try{o(JSON.parse(l.data),r)}catch{}}},disconnect(){if(st++,$e&&(clearTimeout($e),$e=null),Ie){const r=Ie;Ie=null,r.onopen=r.onclose=r.onerror=r.onmessage=null;try{r.close()}catch{}}it=0,at=!1,n({connectionStatus:"offline",messages:[],workers:[],conductorTyping:!1,runtimeModel:null})},sendMessage(r,s,l){if(!Ie||Ie.readyState!==WebSocket.OPEN)return;const c={msg:r};s&&s.length>0&&(c.files=s),l&&l.length>0&&(c.images=l),Ie.send(JSON.stringify(c));const u={id:`local-${Date.now()}`,role:"user",msg:r,ts:Date.now()/1e3,files:s,images:l,_local:!0};n(p=>({messages:[...p.messages,u],conductorTyping:!0}))},async killWorker(r){const s=await fetch(`${ka}/subagent/${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"kill"})});if(!s.ok)throw new Error(`Failed to terminate worker (${s.status})`)},async loadModel(){try{n({modelConfig:await Zd()})}catch{}},async selectModel(r){const s=e().modelConfig;n({modelConfig:{configured:r,effective:r,fallbackReason:null}});try{n({modelConfig:await qd(r)})}catch{n({modelConfig:s})}}}});bi.getState().connect();function iu({className:n,...e}){return i.jsx("div",{className:`ga-log-view ${n??""}`,"data-selectable-text":"true",...e})}function Br({tone:n}){const e={good:"var(--ui-accent, #0053fd)",warn:"#f59e0b",bad:"#cf2d56",muted:"color-mix(in srgb, var(--ui-text-tertiary) 40%, transparent)"};return i.jsx("span",{"aria-hidden":"true",className:n==="warn"?"ga-statusbar-dot--pulse":void 0,style:{display:"inline-block",width:"6px",height:"6px",borderRadius:"50%",background:e[n],flexShrink:0}})}function au(){return i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("path",{d:"M13.5 2.5v4h-4",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"}),i.jsx("path",{d:"M2.5 8a5.5 5.5 0 0 1 9.3-3.95L13.5 6.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"}),i.jsx("path",{d:"M2.5 13.5v-4h4",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"}),i.jsx("path",{d:"M13.5 8a5.5 5.5 0 0 1-9.3 3.95L2.5 9.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})]})}function lu(){return i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("rect",{x:"2",y:"2",width:"5",height:"5",rx:"0.5",stroke:"currentColor",strokeWidth:"1.3"}),i.jsx("rect",{x:"9",y:"2",width:"5",height:"5",rx:"0.5",stroke:"currentColor",strokeWidth:"1.3"}),i.jsx("rect",{x:"2",y:"9",width:"5",height:"5",rx:"0.5",stroke:"currentColor",strokeWidth:"1.3"}),i.jsx("rect",{x:"9",y:"9",width:"5",height:"5",rx:"0.5",stroke:"currentColor",strokeWidth:"1.3"})]})}const Ur=[{id:"__bridge__",labelKey:"proc.bridge"},{id:"frontends/conductor.py",labelKey:"proc.conductor"},{id:"reflect/scheduler.py",labelKey:"proc.scheduler"}],Vr=12,cu=3e3;function du({onClose:n}){const{t:e}=he(),t=Wo(),o=bi(v=>v.connectionStatus),r=Te(v=>v.setPage),s=a.useRef(null),l=a.useRef(null),[c,u]=a.useState(Ur[0].id),[p,d]=a.useState(null),[m,f]=a.useState(0),y=a.useCallback(async v=>{try{const j=await yi(v,200);f(j.length),d(j.slice(-Vr))}catch{d([]),f(0)}},[]);a.useEffect(()=>(d(null),y(c),l.current=setInterval(()=>y(c),cu),()=>{l.current&&(clearInterval(l.current),l.current=null)}),[c,y]),a.useEffect(()=>{function v(w){var O;const E=(O=s.current)==null?void 0:O.parentElement;E&&!E.contains(w.target)&&n()}function j(w){w.key==="Escape"&&n()}return document.addEventListener("mousedown",v),document.addEventListener("keydown",j),()=>{document.removeEventListener("mousedown",v),document.removeEventListener("keydown",j)}},[n]);const b=t==="ready"?"good":t==="connecting"?"warn":"bad",x=o==="ready"?"good":o==="connecting"?"warn":o==="error"?"bad":"muted",C=e(t==="ready"?"bridge.connected":t==="connecting"?"bridge.connecting":"bridge.offline"),S=e(o==="ready"?"bridge.inferenceReady":o==="connecting"?"bridge.inferenceConnecting":o==="error"?"bridge.inferenceError":"bridge.inferenceOffline"),k=()=>{n(),Te.getState().setServicesTab("status"),r("services")},_=m>Vr;return i.jsxs("div",{ref:s,id:"ga-runtime-management-panel",className:"ga-bridge-panel","data-slot":"bridge-panel",role:"dialog","aria-label":e("foot.runtimeManagement"),children:[i.jsxs("div",{className:"ga-bridge-panel-header",children:[i.jsxs("div",{className:"ga-bridge-panel-status-rows",children:[i.jsxs("span",{className:"ga-bridge-panel-row ga-bridge-panel-row--primary",children:[i.jsx(Br,{tone:b}),C]}),i.jsxs("span",{className:"ga-bridge-panel-row ga-bridge-panel-row--secondary",children:[i.jsx(Br,{tone:x}),S]})]}),i.jsxs("div",{className:"ga-bridge-panel-actions",children:[i.jsx("button",{className:"ga-bridge-panel-action-btn",onClick:()=>{n(),window.location.reload()},title:e("bridge.refresh"),children:i.jsx(au,{})}),i.jsx("button",{className:"ga-bridge-panel-action-btn",onClick:k,title:e("bridge.openServices"),children:i.jsx(lu,{})})]})]}),i.jsxs("div",{className:"ga-bridge-panel-section",children:[i.jsx("div",{className:"ga-bridge-panel-tabs",children:Ur.map(v=>i.jsx("button",{className:`ga-bridge-panel-tab ${c===v.id?"active":""}`,onClick:()=>u(v.id),children:e(v.labelKey)},v.id))}),p===null?i.jsx("div",{className:"ga-bridge-panel-log-empty",children:"…"}):p.length===0?i.jsx("div",{className:"ga-bridge-panel-log-empty",children:e("bridge.noActivity")}):i.jsx(iu,{className:"ga-bridge-panel-log",children:p.join(` -`)}),i.jsxs("div",{className:"ga-bridge-panel-section-foot",children:[_&&i.jsx("span",{className:"ga-bridge-panel-truncated",children:e("bridge.logLineCount",{count:m})}),i.jsxs("button",{className:"ga-bridge-panel-link-btn",onClick:k,children:[e("bridge.viewAllLogs")," →"]})]})]})]})}const uu=[{key:"services",icon:"symbol-misc",textKey:"nav.services"},{key:"collab",icon:"robot",textKey:"nav.collab"},{key:"token",icon:"graph",textKey:"nav.token"}];function pu(){const{activePage:n,setPage:e}=Te(),t=Z(O=>O.open),o=G(O=>O.newSession),r=G(O=>O.sessions),s=G(O=>O.activeSessionId),l=G(O=>O.setActiveSession),c=G(O=>O.runningSessions),{t:u}=he(),[p,d]=a.useState(!0),[m,f]=a.useState(""),[y,b]=a.useState(!1),[x,C]=a.useState(!1),S=a.useCallback(()=>b(!1),[]),k=a.useCallback(()=>{S(),t()},[S,t]),_=a.useCallback(()=>{C(!1),b(O=>!O)},[]),v=[...r].sort((O,D)=>{if(O.pinned&&!D.pinned)return-1;if(!O.pinned&&D.pinned)return 1;const P=Number(O.updatedAt||O.createdAt||0);return Number(D.updatedAt||D.createdAt||0)-P}),j=m.trim()?v.filter(O=>O.title.toLowerCase().includes(m.trim().toLowerCase())):v;function w(){o(),e("chat")}function E(O){l(O),e("chat")}return i.jsxs("div",{className:"ga-left-sidebar",children:[i.jsxs("nav",{className:"ga-nav-rail","aria-label":"Main navigation",children:[i.jsxs("button",{type:"button",className:"ga-nav-btn",onClick:w,"aria-label":u("nav.chat"),children:[i.jsx("span",{className:"ga-nav-icon",children:i.jsx(Pe,{name:"comment",size:"1rem"})}),i.jsx("span",{className:"ga-nav-label",children:u("nav.chat")})]}),uu.map(O=>i.jsxs("button",{type:"button",className:`ga-nav-btn${n===O.key?" active":""}`,onClick:()=>e(O.key),"aria-label":u(O.textKey),"aria-current":n===O.key?"page":void 0,children:[i.jsx("span",{className:"ga-nav-icon",children:i.jsx(Pe,{name:O.icon,size:"1rem"})}),i.jsx("span",{className:"ga-nav-label",children:u(O.textKey)})]},O.key))]}),i.jsx("div",{className:"ga-sidebar-search",children:i.jsx(dt,{prefix:i.jsx(ni,{style:{fontSize:14}}),placeholder:u("search.placeholder"),size:"small",value:m,onChange:f})}),!m&&i.jsx(Bd,{label:u("section.sessions"),count:r.length,open:p,onToggle:d,onAction:w}),i.jsx("div",{className:"ga-session-section",children:(m||p)&&(j.length===0?i.jsx("div",{className:"ga-session-empty",children:i.jsx("p",{children:u(m?"search.noResults":"conv.emptyList")})}):i.jsx("div",{className:"ga-session-list",children:j.map(O=>i.jsx(Wd,{session:O,isActive:O.id===s,isWorking:c.has(O.id),onClick:()=>E(O.id)},O.id))}))}),i.jsxs("div",{className:"ga-sidebar-footer",children:[i.jsx(Ae,{content:u("foot.settings"),position:"top",clickToHide:!0,children:i.jsx("button",{type:"button",className:"ga-sidebar-footer-btn",onClick:k,"aria-label":u("foot.settings"),children:i.jsx(Pe,{name:"settings-gear",size:"1rem"})})}),i.jsxs("div",{className:"ga-sidebar-footer-anchor",children:[i.jsx(Ae,{content:u("foot.runtimeManagement"),position:"top",visible:x&&!y,onVisibleChange:C,children:i.jsx("button",{type:"button",className:"ga-sidebar-footer-btn",onClick:_,"aria-label":u("foot.runtimeManagement"),"aria-expanded":y,"aria-haspopup":"dialog","aria-controls":"ga-runtime-management-panel",children:i.jsx(Pe,{name:"server-process",size:"1rem"})})}),y&&i.jsx(du,{onClose:S})]})]})]})}const hu=24;function mu(){const n=a.useRef(null),[e,t]=a.useState(!0),o=a.useRef(!0),r=a.useRef(0),s=a.useCallback(()=>{const u=n.current;if(!u)return;const p=u.scrollHeight-u.scrollTop-u.clientHeight{const p=n.current;p&&(u==="instant"?p.scrollTop=p.scrollHeight:fu(p,p.scrollHeight-p.clientHeight,170),o.current=!0,t(!0))},[]),c=a.useCallback(()=>{o.current=!1},[]);return a.useEffect(()=>{const u=n.current;if(!u)return;const p=()=>s(),d=new MutationObserver(()=>{o.current&&(cancelAnimationFrame(r.current),r.current=requestAnimationFrame(()=>{u.scrollTop=u.scrollHeight}))});return u.addEventListener("scroll",p,{passive:!0}),d.observe(u,{childList:!0,subtree:!0,characterData:!0}),()=>{u.removeEventListener("scroll",p),d.disconnect(),cancelAnimationFrame(r.current)}},[s]),{scrollRef:n,isAtBottom:e,scrollToBottom:l,stopScroll:c}}function fu(n,e,t){const o=n.scrollTop,r=e-o,s=performance.now();function l(c){const u=c-s,p=Math.min(u/t,1),d=1-Math.pow(1-p,3);n.scrollTop=o+r*d,p<1&&requestAnimationFrame(l)}requestAnimationFrame(l)}function gu(n,e,t,o){a.useEffect(()=>{const r=n.current;if(!r||!o)return;t(),r.scrollTop=r.scrollHeight;let s=0,l=r.scrollHeight,c=0;function u(){if(r){if(c++,r.scrollHeight===l?s++:(s=0,l=r.scrollHeight,r.scrollTop=r.scrollHeight),s>=5||c>=90){e("instant");return}requestAnimationFrame(u)}}requestAnimationFrame(u)},[o,n,e,t])}function yu({children:n}){return i.jsx("div",{"data-slot":"aui_thread-content",children:n})}function gt(n){const e=/^[ \t]*(`{3,})([^\n`]*)[ \t]*$/.exec(n??"");return e?{ticks:e[1].length,tag:e[2]}:null}function vi(n,e){if(/^🛠️ Tool:/.test(n))return!0;if(!(e!=null&&e.forToolResult)){const t=gt(n);if(t&&t.ticks>=5&&t.tag==="")return!0}return!!(/^\*\*LLM Running \(Turn \d+\)/.test(n)||/^/i.test(n))}function vn(n,e,t){for(let o=e;o=0)return null}else{r=e+1,s=n.length;for(let l=e+1;l=0?null:{body:n.slice(o,r).join(` -`),nextLine:r,inFlight:!0}}function xu(n){return n.replace(/^\s*\**LLM Running \(Turn \d+\) \.\.\.\**\s*/i,"")}function wu(n,e){const t=String(n||"").split(` -`),o=[];let r=0,s=0;const l=c=>{c<=r||(o.push(t.slice(r,c).join(` -`)),r=c)};for(;s0)return t.join(` -`);try{const o=JSON.parse(n);if(o!=null&&o.question)return String(o.question)}catch{}return n.trim()}function Lo(n){const e=[];let t=xu(n);const o=[];t=t.replace(/([\s\S]*?)<\/thinking>/gi,(u,p)=>(o.push(p),` -§§THINK:${o.length-1}§§ -`));const r=[];t=t.replace(/

([\s\S]*?)<\/summary>/gi,(u,p)=>(r.push(p),` -§§SUMMARY:${r.length-1}§§ -`));const s=[],l=[];t=wu(t,{onTool(u,p,d){return s.push({name:u,body:p,inFlight:d==null?void 0:d.inFlight}),` -§§TOOL:${s.length-1}§§ -`},onResult(u,p){return l.push({body:u,inFlight:p==null?void 0:p.inFlight}),` -§§RESULT:${l.length-1}§§ -`}}),t=t.replace(/[\s\S]*?<\/function_calls>/gi,u=>(s.push({name:"function_call",body:u}),` -§§TOOL:${s.length-1}§§ -`)),t=t.replace(/[\s\S]*?<\/function_results>/gi,u=>(l.push({body:u}),` -§§RESULT:${l.length-1}§§ -`));const c=t.split(/\n?(§§(?:THINK|TOOL|RESULT|SUMMARY):\d+§§)\n?/);for(const u of c){const p=/^§§THINK:(\d+)§§$/.exec(u);if(p){e.push({type:"thinking",content:o[Number(p[1])]});continue}const d=/^§§TOOL:(\d+)§§$/.exec(u);if(d){const b=s[Number(d[1])];if(b.name==="ask_user"){const x=Cu(b.body),C=Su(b.body);e.push({type:"approval",content:C,candidates:x})}else e.push({type:"tool",content:b.body,label:b.name,inFlight:b.inFlight});continue}const m=/^§§RESULT:(\d+)§§$/.exec(u);if(m){const b=l[Number(m[1])];e.push({type:"result",content:b.body,inFlight:b.inFlight});continue}const f=/^§§SUMMARY:(\d+)§§$/.exec(u);if(f){e.push({type:"summary",content:r[Number(f[1])]});continue}const y=u.trim();y&&e.push({type:"prose",content:y})}return e}function Kr(n){return n.map((e,t)=>{const o=Lo(e),r=o.reduce((s,l)=>s+l.content.length,0);return{index:t,segments:o,weight:r}})}function ku(n){const e=[];let t=0;for(;t{s.stopPropagation(),navigator.clipboard.writeText(n).then(()=>{t(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>t(!1),2e3)})},[n]);return typeof navigator>"u"||!navigator.clipboard?null:i.jsx("button",{"data-slot":"user-bubble-copy",onClick:r,title:e?"Copied":"Copy",children:e?i.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M3 8.5l3 3 7-7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}):i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("rect",{x:"5.5",y:"5.5",width:"7",height:"7",rx:"1",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M3.5 10.5v-7a1 1 0 011-1h7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})})}const Ci=a.memo(function({content:e,msgId:t,images:o,files:r}){const s=a.useRef(null),[l,c]=a.useState(!1),[u,p]=a.useState(!1),d=a.useRef(!1);if(d.current=u,a.useLayoutEffect(()=>{const f=s.current;if(!f)return;const y=new ResizeObserver(()=>{d.current||c(f.scrollHeight>f.clientHeight+2)});return y.observe(f),()=>y.disconnect()},[]),!e&&(!o||o.length===0)&&(!r||r.length===0))return null;const m=ju(e);return i.jsxs(i.Fragment,{children:[o&&o.length>0&&i.jsx("div",{"data-slot":"user-images",children:o.map((f,y)=>i.jsx("img",{"data-slot":"user-image-thumb",src:f.path.startsWith("data:")?f.path:`${ne}/upload/raw?path=${encodeURIComponent(f.path)}`,alt:f.name},y))}),r&&r.length>0&&i.jsx("div",{"data-slot":"user-files",children:r.map((f,y)=>i.jsxs("div",{"data-slot":"user-file-chip",children:[i.jsx("span",{"data-slot":"user-file-icon",children:Ou(f.name)}),i.jsx("span",{"data-slot":"user-file-name",children:f.name}),f.size!=null&&f.size>0&&i.jsx("span",{"data-slot":"user-file-size",children:Eu(f.size)})]},y))}),i.jsx("div",{"data-slot":"aui_user-message-root",id:t?`msg-${t}`:void 0,"data-msg-id":t||void 0,"data-role":"user",children:i.jsxs("div",{"data-slot":"user-bubble","data-clamped":l||void 0,"data-expanded":u||void 0,children:[i.jsx(Pu,{text:e}),i.jsx("div",{ref:s,"data-slot":"user-bubble-text",children:m?i.jsxs(i.Fragment,{children:[i.jsxs("span",{className:"skill-chip",children:["/",m.id]}),m.rest&&i.jsxs(i.Fragment,{children:[" ",m.rest]})]}):e}),l&&i.jsx("button",{"data-slot":"user-bubble-expand","aria-expanded":u,"aria-label":u?"Collapse":"Expand",onClick:()=>p(f=>!f),children:i.jsx("svg",{viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M4 6l4 4 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]})})]})}),_u=a.memo(function({content:e,isStreaming:t}){const[o,r]=a.useState(null),s=a.useRef(null),l=o!==null?o:t,c=a.useCallback(()=>{r(u=>u===null?!t:!u)},[t]);return a.useEffect(()=>{t&&l&&s.current&&(s.current.scrollTop=s.current.scrollHeight)},[e,t,l]),e.trim()?i.jsxs("details",{"data-slot":"aui_thinking-disclosure",open:l,onToggle:c,children:[i.jsx("summary",{"data-slot":"thinking-summary",children:i.jsx("span",{className:t?"thinking-shimmer":"",children:"Thinking"})}),i.jsx("div",{ref:s,"data-slot":"thinking-body","data-streaming":t||void 0,children:e})]}):null}),Ct=new Set,Wr=2048;function Si(n,e,t){a.useEffect(()=>{if(!(!t||!n.current||Ct.has(e))){if(Ct.size>=Wr){const o=Array.from(Ct).slice(0,Wr/2);for(const r of o)Ct.delete(r)}Ct.add(e),n.current.animate([{opacity:0,transform:"translateY(0.375rem)"},{opacity:1,transform:"translateY(0)"}],{duration:180,easing:"cubic-bezier(0.16, 1, 0.3, 1)",fill:"both"})}},[])}const Xn=new Map;function Hr(n){const e=Math.floor(n/1e3);return e<60?`${e}s`:`${Math.floor(e/60)}m ${e%60}s`}function Mu(n,e){const[,t]=a.useState(0),o=a.useRef(null);a.useEffect(()=>{let s=Xn.get(n);return e&&!s&&(s={start:Date.now()},Xn.set(n,s)),!e&&s&&!s.end&&(s.end=Date.now()),e&&!o.current&&(o.current=setInterval(()=>t(l=>l+1),1e3)),()=>{!e&&o.current&&(clearInterval(o.current),o.current=null)}},[n,e]),a.useEffect(()=>()=>{o.current&&clearInterval(o.current)},[]);const r=Xn.get(n);if(!r)return{elapsed:null,duration:null};if(e){const s=Date.now()-r.start;return{elapsed:Hr(s),duration:null}}if(r.end){const s=r.end-r.start;return s<1e3?{elapsed:null,duration:null}:{elapsed:null,duration:Hr(s)}}return{elapsed:null,duration:null}}const Lu=a.memo(function({name:e,content:t,inFlight:o,segmentKey:r="",isStreaming:s=!1}){const[l,c]=a.useState(!1),u=a.useRef(null);Si(u,r,s);const{elapsed:p,duration:d}=Mu(r,o);return i.jsxs("div",{ref:u,"data-slot":"tool-block","data-tool-row":!0,"data-status":o?"running":"success",children:[i.jsxs("div",{"data-slot":"tool-header",onClick:()=>c(!l),children:[o&&i.jsx("span",{"data-slot":"tool-glyph",children:i.jsx("span",{"data-slot":"tool-spinner"})}),i.jsx("span",{"data-slot":"tool-title",children:e}),o&&i.jsx("span",{"data-slot":"tool-dots",children:"…"}),p&&i.jsx("span",{"data-slot":"tool-duration",children:p}),d&&i.jsx("span",{"data-slot":"tool-duration",children:d})]}),l&&t&&i.jsx("pre",{"data-slot":"tool-body",children:t})]})}),Iu=a.memo(function({content:e,inFlight:t,segmentKey:o="",isStreaming:r=!1}){const[s,l]=a.useState(!1),c=e.length>200,u=a.useRef(null);return Si(u,o,r),i.jsxs("div",{ref:u,"data-slot":"tool-block","data-tool-row":!0,"data-status":t?"running":"success",children:[i.jsxs("div",{"data-slot":"tool-header",onClick:()=>c&&l(!s),children:[i.jsx("span",{"data-slot":"tool-title",children:t?"Output…":"Output"}),c&&!s&&i.jsxs("span",{"data-slot":"tool-duration",children:[e.length," chars"]})]}),(s||!c)&&i.jsx("pre",{"data-slot":"tool-body",children:e})]})});function Zr(n){return n<26?String.fromCharCode(65+n):null}function Tu({question:n,answer:e}){return i.jsxs("div",{"data-slot":"approval-card","data-settled":!0,children:[i.jsx("div",{"data-slot":"approval-question",children:n}),i.jsx("div",{"data-slot":"approval-settled",children:e||i.jsx("em",{children:"Skipped"})})]})}const Ru=a.memo(function({question:e,candidates:t}){const o=G(L=>L.sendMessage),[r,s]=a.useState(null),[l,c]=a.useState(""),[u,p]=a.useState(!1),[d,m]=a.useState(!1),[f,y]=a.useState(null),b=a.useRef(null),x=a.useRef(null),C=r??(l.trim()||null),S=t.length>0,k=a.useCallback(L=>{s(L),c("")},[]),_=a.useCallback(async L=>{u||d||(p(!0),await o(L),y(L),m(!0),p(!1))},[u,d,o]),v=a.useCallback(async()=>{u||d||(p(!0),await o(""),y(null),m(!0),p(!1))},[u,d,o]),j=a.useCallback(()=>{C!==null&&_(C)},[C,_]),w=a.useCallback(()=>{s(null)},[]),E=a.useCallback(L=>{c(L.target.value),s(null)},[]),O=a.useCallback(L=>{if(!(L.nativeEvent.isComposing||L.keyCode===229)&&L.key==="Enter"&&!L.shiftKey){L.preventDefault();const B=l.trim();B&&_(B)}},[l,_]);if(a.useEffect(()=>{if(d||u)return;function L(B){var M;if(B.metaKey||B.ctrlKey||B.altKey||B.defaultPrevented)return;const Q=document.activeElement;if(Q){const Y=Q.tagName.toLowerCase();if(Y==="input"||Y==="textarea"||Q.isContentEditable)return}const z=B.key.toLowerCase();if(z.length===1&&z>="a"&&z<="z"){const Y=z.charCodeAt(0)-97;Ywindow.removeEventListener("keydown",L)},[d,u,t,r,l,k,_]),d)return i.jsx(Tu,{question:e,answer:f});const D=t.length,P=Zr(D),N=l.trim().length>0&&r===null;return i.jsxs("div",{"data-slot":"approval-card",ref:x,"data-submitting":u||void 0,children:[i.jsx("div",{"data-slot":"approval-question",children:e}),S?i.jsxs("div",{"data-slot":"approval-options",children:[t.map((L,B)=>{const Q=Zr(B),z=r===L;return i.jsxs("button",{"data-slot":"approval-option-row","data-selected":z||void 0,disabled:u,onClick:()=>k(L),type:"button",children:[Q&&i.jsx("kbd",{"data-slot":"approval-badge","data-active":z||void 0,children:Q}),i.jsx("span",{children:L})]},B)}),i.jsxs("div",{"data-slot":"approval-other",children:[P&&i.jsx("kbd",{"data-slot":"approval-badge","data-active":N||void 0,children:P}),i.jsx("textarea",{ref:b,"data-slot":"approval-other-input",placeholder:"Other…",value:l,onChange:E,onFocus:w,onKeyDown:O,disabled:u,rows:1})]})]}):i.jsx("div",{"data-slot":"approval-options",children:i.jsx("textarea",{ref:b,"data-slot":"approval-other-input","data-fullwidth":!0,placeholder:"Type your response…",value:l,onChange:E,onKeyDown:O,disabled:u,rows:1})}),i.jsxs("div",{"data-slot":"approval-actions",children:[i.jsx("button",{type:"button","data-slot":"approval-skip-btn",disabled:u,onClick:v,children:"Skip"}),i.jsxs("button",{type:"button","data-slot":"approval-confirm-btn",disabled:u||C===null,onClick:j,children:[u?i.jsx("span",{"data-slot":"approval-spinner"}):null,"Continue"]})]})]})});function ki(n){const e=Math.floor(n/1e3);return e<60?`${e}s`:`${Math.floor(e/60)}m ${e%60}s`}const Nu=a.memo(function(){const[e,t]=a.useState(0),o=G(l=>l.turnStartedAt),r=a.useRef(Date.now()),s=o??r.current;return a.useEffect(()=>{t(Date.now()-s);const l=setInterval(()=>t(Date.now()-s),1e3);return()=>clearInterval(l)},[s]),i.jsxs("div",{"data-slot":"stream-indicator",children:[i.jsx("span",{"data-slot":"dither-square"}),i.jsx("span",{"data-slot":"indicator-timer",children:ki(e)})]})}),$u=a.memo(function({contentLength:e}){const[t,o]=a.useState(!1),[r,s]=a.useState(0),l=a.useRef(e),c=a.useRef(Date.now()),u=a.useRef(null);return a.useEffect(()=>{e!==l.current&&(l.current=e,c.current=Date.now(),u.current=null,o(!1),s(0))},[e]),a.useEffect(()=>{const p=setInterval(()=>{Date.now()-c.current>=2e3&&(u.current||(u.current=c.current+2e3),o(!0),s(Date.now()-u.current))},500);return()=>clearInterval(p)},[]),t?i.jsxs("div",{"data-slot":"stream-indicator","data-stall":!0,children:[i.jsx("span",{"data-slot":"dither-square"}),i.jsxs("span",{"data-slot":"indicator-timer",children:["+",ki(r)]})]}):null}),Du=a.lazy(async()=>({default:(await Zt(()=>import("./MarkdownPart-ZJKeOipX.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))).MarkdownPart})),Au=a.lazy(async()=>({default:(await Zt(()=>import("./SummaryPart-zs-In9mf.js"),__vite__mapDeps([10,1,2,3,4,5,6,7,8]))).SummaryPart})),zu=a.memo(function({segments:e,isStreaming:t,messageId:o=""}){if(e.length===0&&t)return i.jsx("div",{"data-slot":"aui_assistant-message-content",children:i.jsx(Nu,{})});if(e.length===0)return null;const r=t?e:e.map(c=>c.inFlight?{...c,inFlight:!1}:c),s=r.reduce((c,u)=>c+u.content.length,0),l=r.some(c=>c.type==="approval");return i.jsxs("div",{"data-slot":"aui_assistant-message-content",children:[r.map((c,u)=>{const p=`${o}-${u}`;switch(c.type){case"prose":return i.jsx(a.Suspense,{fallback:i.jsx("span",{"data-slot":"aui_markdown-loading","aria-busy":"true"}),children:i.jsx(Du,{content:c.content,isStreaming:t&&u===r.length-1})},u);case"thinking":return i.jsx(_u,{content:c.content,isStreaming:!!c.inFlight||t},u);case"tool":return i.jsx(Lu,{name:c.label||"tool",content:c.content,inFlight:!!c.inFlight,segmentKey:p,isStreaming:t},u);case"result":return i.jsx(Iu,{content:c.content,inFlight:!!c.inFlight,segmentKey:p,isStreaming:t},u);case"summary":return i.jsx(a.Suspense,{fallback:i.jsx("span",{"data-slot":"aui_summary-loading","aria-busy":"true"}),children:i.jsx(Au,{content:c.content})},u);case"approval":return i.jsx(Ru,{question:c.content,candidates:c.candidates||[]},u);default:return null}}),t&&!l&&i.jsx($u,{contentLength:s})]})});function Fu(n){const e=Math.round(n/1e3);if(e<60)return`${e}s`;const t=Math.floor(e/60),o=e%60;return`${t}m ${o}s`}const Bu=a.memo(function({getMessageText:e,executionMs:t}){const[o,r]=a.useState(!1),s=a.useRef(),l=a.useCallback(()=>{const c=e();c&&navigator.clipboard.writeText(c).then(()=>{r(!0),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>r(!1),2e3)})},[e]);return typeof navigator>"u"||!navigator.clipboard?null:i.jsxs("div",{"data-slot":"assistant-action-bar",children:[i.jsx("button",{"data-slot":"action-bar-btn",onClick:l,title:o?"Copied":"Copy",children:o?i.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M3 8.5l3 3 7-7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}):i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("rect",{x:"5.5",y:"5.5",width:"7",height:"7",rx:"1",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M3.5 10.5v-7a1 1 0 011-1h7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})}),typeof t=="number"&&t>0&&i.jsx("span",{"data-slot":"action-bar-duration",title:"本轮用时",children:Fu(t)})]})}),Uu=a.memo(function({message:e,isStreaming:t}){const o=a.useMemo(()=>{const l=e.turn_segs;return l&&l.length>0?l.flatMap(c=>Lo(c)):Lo(e.content)},[e.content,e.turn_segs]),r=a.useRef(o);r.current=o;const s=a.useCallback(()=>{const l=r.current,c=[];for(const u of l)(u.type==="prose"||u.type==="summary")&&c.push(u.content);return c.join(` - -`)},[]);return i.jsxs("div",{"data-slot":"aui_assistant-message-root","data-role":"assistant","data-streaming":t||void 0,children:[i.jsx(zu,{segments:o,isStreaming:t,messageId:String(e.id)}),i.jsx(Bu,{getMessageText:s,executionMs:e.executionMs})]})}),Vu=a.memo(function({userMsg:e,assistantMsg:t,isStreaming:o}){return i.jsxs("div",{"data-slot":"aui_turn-pair",children:[i.jsx(Ci,{content:e.content,msgId:e.id,images:e.images,files:e.files}),i.jsx(Uu,{message:t,isStreaming:o})]})}),Ku=[{pattern:/invalid.?api.?key|api.?key.?invalid|Incorrect API key/i,key:"err.apiKeyInvalid"},{pattern:/model.*not found|does not exist|model_not_found/i,key:"err.modelNotFound"},{pattern:/rate.?limit|429|Too Many Requests/i,key:"err.rateLimit"},{pattern:/quota|insufficient.?funds|balance|billing/i,key:"err.quotaExceeded"},{pattern:/timed?\s*out|TimeoutError/i,key:"err.timeout"},{pattern:/Connection\s*refused|ConnectionRefusedError/i,key:"err.connRefused"},{pattern:/errno 48|address already in use/i,key:"err.portBusy"},{pattern:/Traceback|Exception.*thread|exit code \d+/i,key:"err.processCrash"}];function Wu(n,e){if(!n)return"";for(const t of Ku)if(t.pattern.test(n))return e(t.key);return n.length<=80?n:n.slice(0,77)+"…"}const Hu=a.memo(function({error:e,msgId:t}){const{t:o}=he(),r=Wu(e,o);return i.jsx("div",{className:"ga-inline-error",role:"alert",id:`msg-${t}`,children:i.jsx("span",{className:"ga-inline-error-text",children:r})})}),Zu=300;function qu(n){return n.kind==="turn"?n.turns.reduce((e,t)=>e+t.segments.length,0):1}const Gu=a.memo(function({messages:e,isRunning:t,budgetMultiplier:o,onShowEarlier:r,scrollRef:s}){const l=a.useMemo(()=>ku(e),[e]),c=a.useRef(null),u=a.useMemo(()=>{if(!isFinite(o))return 0;const f=Zu*o;let y=0;for(let b=l.length-1;b>=0;b--)if(y+=qu(l[b]),y>f)return b+1;return 0},[l,o]),p=a.useMemo(()=>l.slice(u),[l,u]),d=u;a.useLayoutEffect(()=>{c.current!==null&&(s!=null&&s.current)&&(s.current.scrollTop=s.current.scrollHeight-c.current,c.current=null)});const m=()=>{const f=s==null?void 0:s.current;f&&(c.current=f.scrollHeight-f.scrollTop),r()};return e.length===0?i.jsx("div",{"data-slot":"thread-empty",children:i.jsx("p",{children:"Send a message to begin."})}):i.jsxs(i.Fragment,{children:[d>0&&i.jsxs("button",{"data-slot":"show-earlier-btn",onClick:m,children:["Show ",d," earlier messages"]}),p.map((f,y)=>{const b=u+y;return f.kind==="turn"?i.jsx(Vu,{userMsg:f.userMsg,assistantMsg:f.assistantMsg,isStreaming:t&&b===l.length-1},f.assistantMsg.id):f.msg.role==="user"?i.jsx("div",{"data-slot":"aui_turn-pair",children:i.jsx(Ci,{content:f.msg.content,msgId:f.msg.id,images:f.msg.images,files:f.msg.files})},f.msg.id):f.msg.role==="error"?i.jsx(Hu,{error:f.msg.content,msgId:f.msg.id},f.msg.id):i.jsx("div",{"data-slot":"standalone-message","data-status":f.msg.status,children:f.msg.content},f.msg.id)})]})}),qr=3,Gr=40,Qu=170,Qr=12;function Yr(n){const e=n.replace(/\s+/g," ").trim();return e.length<=Gr?e:e.slice(0,Gr)+"…"}function Yu(n){return 1-Math.pow(1-n,3)}let Jn=0;function Xu(n,e,t){cancelAnimationFrame(Jn);const o=n.scrollTop,r=e-o;if(Math.abs(r)<1)return;const s=performance.now();function l(c){const u=c-s,p=Math.min(u/t,1);n.scrollTop=o+r*Yu(p),p<1&&(Jn=requestAnimationFrame(l))}Jn=requestAnimationFrame(l)}const Ju=a.memo(function({messages:e,stopScroll:t,onJumpToCollapsed:o}){const r=a.useMemo(()=>e.filter(b=>b.role==="user").map(b=>({id:b.id,content:b.content})),[e]),[s,l]=a.useState(null),[c,u]=a.useState(!1),p=a.useRef(null),d=a.useRef(0),m=a.useCallback(()=>{p.current&&(clearTimeout(p.current),p.current=null),u(!0)},[]),f=a.useCallback(()=>{p.current=setTimeout(()=>{u(!1),p.current=null},150)},[]);a.useEffect(()=>{if(r.length0&&(k=r[0].id),k&&l(k)}function C(){d.current||(d.current=requestAnimationFrame(x))}return b.addEventListener("scroll",C,{passive:!0}),x(),()=>{b.removeEventListener("scroll",C),cancelAnimationFrame(d.current)}},[r]);const y=a.useCallback(b=>{const x=document.querySelector('[data-slot="aui_thread-viewport"]'),C=document.getElementById(`msg-${b}`);if(!C){o(b);return}if(!x)return;t();const _=(C.closest('[data-slot="aui_turn-pair"]')||C).offsetTop-Qr;Xu(x,_,Qu)},[t,o]);return r.lengthi.jsx("button",{"data-slot":"rail-panel-item","data-active":b.id===s||void 0,onClick:()=>y(b.id),children:Yr(b.content)},b.id))}),i.jsx("div",{"data-slot":"rail-marks",children:r.map(b=>i.jsx("button",{"data-slot":"rail-mark","data-active":b.id===s||void 0,"aria-label":Yr(b.content),onClick:()=>y(b.id),children:i.jsx("span",{"data-slot":"rail-mark-line"})},b.id))})]})})});function e0(){const{messages:n,status:e,activeSessionId:t}=G(),{scrollRef:o,isAtBottom:r,scrollToBottom:s,stopScroll:l}=mu(),[c,u]=a.useState(1),p=a.useRef(null);gu(o,s,l,t),a.useEffect(()=>{u(1),p.current=null},[t]),a.useEffect(()=>{if(!p.current)return;const y=p.current,b=requestAnimationFrame(()=>{const x=document.getElementById(`msg-${y}`);if(x){p.current=null;const C=o.current;if(C){const k=x.closest('[data-slot="aui_turn-pair"]')||x;C.scrollTop=k.offsetTop-12}}});return()=>cancelAnimationFrame(b)},[c,o]);const d=a.useCallback(()=>{u(1/0)},[]),m=a.useCallback(y=>{p.current=y,d()},[d]),f=a.useCallback(()=>{o.current,u(y=>y+1)},[o]);return i.jsxs("div",{"data-slot":"thread-root",children:[i.jsx("div",{ref:o,"data-slot":"aui_thread-viewport","data-following":r,children:i.jsxs(yu,{children:[i.jsx(Gu,{messages:n,isRunning:e==="running",budgetMultiplier:c,onShowEarlier:f,scrollRef:o}),i.jsx("div",{"data-slot":"aui_composer-clearance"})]})}),i.jsx(Ju,{messages:n,stopScroll:l,onJumpToCollapsed:m}),!r&&i.jsx("button",{"data-slot":"scroll-to-bottom",onClick:()=>s("smooth"),children:i.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M8 3v10m0 0l-3.5-3.5M8 13l3.5-3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}function Io(n){let e="";for(const t of n.childNodes)if(t.nodeType===Node.TEXT_NODE)e+=t.textContent||"";else if(t instanceof HTMLElement)if(t.dataset.refText)e+=t.dataset.refText;else if(t.tagName==="BR")e+=` -`;else{const o=Io(t);o&&(e+=` -`+o)}return e}function t0(n){const e=Array.from(n.childNodes);for(const t of e)if(t instanceof HTMLElement){if(t.dataset.refText||t.tagName==="BR")continue;if(t.tagName==="DIV"||t.tagName==="P"){const o=document.createElement("br");for(n.insertBefore(o,t);t.firstChild;)n.insertBefore(t.firstChild,t);n.removeChild(t)}}n.normalize()}function ji(n){const e=document.createRange();e.selectNodeContents(n),e.collapse(!1);const t=window.getSelection();t&&(t.removeAllRanges(),t.addRange(e))}function Xr(n,e){n.focus();const t=window.getSelection();if(!t||t.rangeCount===0){n.appendChild(e);return}const o=t.getRangeAt(0);o.deleteContents(),o.insertNode(e),o.setStartAfter(e),o.collapse(!0),t.removeAllRanges(),t.addRange(o)}function n0(n,e){n.textContent=e,ji(n)}function o0(n,e,t){const o=document.createElement("span");return o.contentEditable="false",o.dataset.refText=`@${n}:\`${e}\``,o.dataset.refKind=n,o.className="ref-chip",o.innerHTML=`${l0(n)}${a0(t||e)}`,o}function r0(n,e,t,o){const r=o0(e,t,o);Xr(n,r);const s=document.createTextNode(" ");Xr(n,s)}function s0(n,e){const t=document.createElement("span");return t.contentEditable="false",t.dataset.refText=e,t.dataset.skillId=n,t.className="skill-chip",t.textContent=`/${n}`,t}function i0(n,e,t){n.textContent="";const o=s0(e,t);n.appendChild(o);const r=document.createTextNode(" ");n.appendChild(r),ji(n)}function a0(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function l0(n){switch(n){case"file":return'';case"url":return'';case"image":return'';default:return''}}const c0=a.forwardRef(function({placeholder:e,disabled:t,onInput:o,onKeyDown:r,onSlashTrigger:s,onSlashDismiss:l,onAtTrigger:c,onAtDismiss:u,onPasteFiles:p},d){const m=a.useRef(null),f=a.useRef(!1),y=a.useRef("");a.useImperativeHandle(d,()=>({focus(){var v;(v=m.current)==null||v.focus()},clear(){m.current&&(m.current.textContent="",y.current="")},getText(){return m.current?Io(m.current):""},setText(v){m.current&&(n0(m.current,v),y.current=v,o(v))},insertChip(v,j,w){m.current&&(m.current.focus(),r0(m.current,v,j,w),b())},setSkillChip(v,j){m.current&&(i0(m.current,v,j),b())},getElement(){return m.current}}));const b=a.useCallback(()=>{if(!m.current)return;const v=Io(m.current);y.current=v,o(v);const j=v.trimStart();j.startsWith("/")&&!j.includes(` -`)?s==null||s(j.slice(1)):l==null||l();const w=v.match(/@([^\s@]*)$/);w?c==null||c(w[1]):u==null||u()},[o,s,l,c,u]),x=a.useCallback(()=>{f.current||(m.current&&t0(m.current),b())},[b]),C=a.useCallback(()=>{f.current=!0},[]),S=a.useCallback(()=>{f.current=!1,x()},[x]),k=a.useCallback(v=>{f.current||v.nativeEvent.isComposing||v.keyCode===229||r(v)},[r]),_=a.useCallback(v=>{var O;const j=(O=v.clipboardData)==null?void 0:O.items;if(!j)return;const w=[];for(const D of Array.from(j))if(D.type.startsWith("image/")&&D.type!=="image/svg+xml"){const P=D.getAsFile();P&&w.push(P)}if(w.length>0){v.preventDefault(),p==null||p(w);return}const E=v.clipboardData.getData("text/plain");E&&(v.preventDefault(),document.execCommand("insertText",!1,E))},[p]);return a.useEffect(()=>{const v=m.current;if(!v)return;const j=new ResizeObserver(w=>{var O,D,P;const E=((P=(D=(O=w[0])==null?void 0:O.borderBoxSize)==null?void 0:D[0])==null?void 0:P.blockSize)??v.offsetHeight;v.style.setProperty("--editor-scroll-height",`${E}px`)});return j.observe(v),()=>j.disconnect()},[]),i.jsx("div",{ref:m,"data-slot":"composer-rich-input",contentEditable:!t,role:"textbox","aria-multiline":"true","aria-placeholder":e,"data-placeholder":e,suppressContentEditableWarning:!0,onInput:x,onKeyDown:k,onCompositionStart:C,onCompositionEnd:S,onPaste:_})});function d0(){try{const n=localStorage.getItem("ga_custom_presets");return n?JSON.parse(n):[]}catch{return[]}}function u0({visible:n,query:e,onSelect:t,onClose:o}){const r=Z(m=>m.lang),[s,l]=a.useState(0),c=a.useRef(null),u=d0(),p=[...Xe,...u],d=e?p.filter(m=>m.id.startsWith(e.toLowerCase())||m.title.toLowerCase().includes(e.toLowerCase())):p;return a.useEffect(()=>{l(0)},[e]),a.useEffect(()=>{if(!n)return;function m(f){f.key==="ArrowDown"?(f.preventDefault(),l(y=>Math.min(y+1,d.length-1))):f.key==="ArrowUp"?(f.preventDefault(),l(y=>Math.max(y-1,0))):f.key==="Enter"?(f.preventDefault(),d[s]&&t(d[s].id,d[s].prompt)):f.key==="Escape"&&(f.preventDefault(),o())}return document.addEventListener("keydown",m,!0),()=>document.removeEventListener("keydown",m,!0)},[n,s,d,t,o]),a.useEffect(()=>{if(!c.current)return;const m=c.current.querySelector("[data-focused]");m==null||m.scrollIntoView({block:"nearest"})},[s]),!n||d.length===0?null:i.jsx("div",{ref:c,"data-slot":"completion-drawer",children:d.map((m,f)=>i.jsx("button",{"data-slot":"completion-item","data-focused":f===s?"":void 0,onClick:()=>t(m.id,m.prompt),onMouseEnter:()=>l(f),children:i.jsxs("span",{"data-slot":"completion-info",children:[i.jsxs("span",{"data-slot":"completion-title",children:["/",m.id]}),i.jsx("span",{"data-slot":"completion-desc",children:m.desc[r]||m.desc.en})]})},m.id))})}const p0=[{id:"file",label:"file"},{id:"url",label:"url"},{id:"image",label:"image"}];function h0({visible:n,query:e,onConfirm:t,onClose:o}){const r=a.useRef(null),[s,l]=a.useState("file"),[c,u]=a.useState("");a.useEffect(()=>{n&&(u(e),l("file"),setTimeout(()=>{var d;return(d=r.current)==null?void 0:d.focus()},0))},[n,e]),a.useEffect(()=>{if(!n)return;function d(m){m.key==="Escape"&&(m.preventDefault(),m.stopPropagation(),o())}return document.addEventListener("keydown",d,!0),()=>document.removeEventListener("keydown",d,!0)},[n,o]);const p=a.useCallback(d=>{d.preventDefault();const m=c.trim();m&&t(s,m)},[s,c,t]);return n?i.jsx("div",{"data-slot":"at-ref-popover",children:i.jsxs("form",{onSubmit:p,"data-slot":"at-ref-form",children:[i.jsx("div",{"data-slot":"at-ref-kinds",children:p0.map(d=>i.jsx("button",{type:"button","data-slot":"at-ref-kind-btn","data-active":d.id===s?"":void 0,onClick:()=>l(d.id),title:d.label,children:i.jsx(m0,{kind:d.id})},d.id))}),i.jsx("input",{ref:r,"data-slot":"at-ref-input",type:"text",value:c,onChange:d=>u(d.target.value),placeholder:s==="url"?"https://...":"path/to/file"}),i.jsx("button",{type:"submit","data-slot":"at-ref-confirm",disabled:!c.trim(),children:"↵"})]})}):null}function m0({kind:n}){switch(n){case"file":return i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("path",{d:"M4 2h5l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M9 2v4h4",stroke:"currentColor",strokeWidth:"1.2"})]});case"url":return i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M6.5 9.5l3-3M7 11l-1.5 1.5a2.12 2.12 0 1 1-3-3L4 8m5-3l1.5-1.5a2.12 2.12 0 1 1 3 3L12 8",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})});case"image":return i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("circle",{cx:"5.5",cy:"5.5",r:"1",fill:"currentColor"}),i.jsx("path",{d:"M2 11l3-3 2 2 3-3 4 4",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]});default:return null}}const Jr={title:{zh:"附加",en:"Attach"},file:{zh:"文件…",en:"File…"},image:{zh:"图片…",en:"Image…"},paste:{zh:"粘贴图片",en:"Paste image"},hint:{zh:"提示:输入 @ 以内联引用文件",en:"Tip: type @ to reference files inline"}};function f0({onUploadFile:n,onUploadImage:e,onPasteImage:t}){const[o,r]=a.useState(!1),s=a.useRef(null),l=a.useRef(null),c=Z(m=>m.lang),u=m=>Jr[m][c]||Jr[m].en,p=a.useCallback(()=>r(m=>!m),[]);a.useEffect(()=>{if(!o)return;function m(y){s.current&&!s.current.contains(y.target)&&l.current&&!l.current.contains(y.target)&&r(!1)}function f(y){y.key==="Escape"&&r(!1)}return document.addEventListener("mousedown",m),document.addEventListener("keydown",f),()=>{document.removeEventListener("mousedown",m),document.removeEventListener("keydown",f)}},[o]);const d=a.useCallback(m=>()=>{m(),r(!1)},[]);return i.jsxs("div",{"data-slot":"context-menu-wrap",children:[i.jsx("button",{ref:l,"data-slot":"composer-attach-btn",onClick:p,"aria-label":u("title"),title:u("title"),children:i.jsx(g0,{})}),o&&i.jsxs("div",{ref:s,"data-slot":"context-menu",children:[i.jsx("div",{"data-slot":"context-menu-title",children:u("title")}),i.jsxs("button",{"data-slot":"context-menu-item",onClick:d(n),children:[i.jsx("span",{"data-slot":"context-menu-icon",children:i.jsx(y0,{})}),i.jsx("span",{"data-slot":"context-menu-label",children:u("file")})]}),i.jsxs("button",{"data-slot":"context-menu-item",onClick:d(e),children:[i.jsx("span",{"data-slot":"context-menu-icon",children:i.jsx(b0,{})}),i.jsx("span",{"data-slot":"context-menu-label",children:u("image")})]}),i.jsxs("button",{"data-slot":"context-menu-item",onClick:d(t),children:[i.jsx("span",{"data-slot":"context-menu-icon",children:i.jsx(v0,{})}),i.jsx("span",{"data-slot":"context-menu-label",children:u("paste")})]}),i.jsx("div",{"data-slot":"context-menu-hint",children:u("hint")})]})]})}function g0(){return i.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M8 3v10M3 8h10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}function y0(){return i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("path",{d:"M4 2h5l4 4v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M9 2v4h4",stroke:"currentColor",strokeWidth:"1.2"})]})}function b0(){return i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("circle",{cx:"5.5",cy:"5.5",r:"1",fill:"currentColor"}),i.jsx("path",{d:"M2 11l3-3 2 2 3-3 4 4",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})}function v0(){return i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:[i.jsx("rect",{x:"3",y:"2",width:"10",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("path",{d:"M6 2V1.5A.5.5 0 0 1 6.5 1h3a.5.5 0 0 1 .5.5V2",stroke:"currentColor",strokeWidth:"1.2"})]})}var x0="OpenAI";function Pt(n){"@babel/helpers - typeof";return Pt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pt(n)}var w0=["size","style"];function es(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function eo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function E0(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var O0=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=j0(n,w0);return i.jsxs("svg",eo(eo({fill:"currentColor",fillRule:"evenodd",height:t,style:eo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:x0}),i.jsx("path",{d:"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"})]}))}),P0="Anthropic";function _t(n){"@babel/helpers - typeof";return _t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_t(n)}var _0=["size","style"];function ts(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function to(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function R0(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var N0=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=T0(n,_0);return i.jsxs("svg",to(to({fill:"currentColor",fillRule:"evenodd",height:t,style:to({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:P0}),i.jsx("path",{d:"M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z"})]}))}),$0="DeepSeek";function Mt(n){"@babel/helpers - typeof";return Mt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Mt(n)}var D0=["size","style"];function ns(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function no(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function U0(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var V0=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=B0(n,D0);return i.jsxs("svg",no(no({fill:"currentColor",fillRule:"evenodd",height:t,style:no({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:$0}),i.jsx("path",{d:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z"})]}))}),K0="Qwen";function Lt(n){"@babel/helpers - typeof";return Lt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lt(n)}var W0=["size","style"];function os(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function oo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function Q0(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var Y0=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=G0(n,W0);return i.jsxs("svg",oo(oo({fill:"currentColor",fillRule:"evenodd",height:t,style:oo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:K0}),i.jsx("path",{d:"M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z"})]}))}),X0="Google";function It(n){"@babel/helpers - typeof";return It=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},It(n)}var J0=["size","style"];function rs(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function ro(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function r1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var s1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=o1(n,J0);return i.jsxs("svg",ro(ro({fill:"currentColor",fillRule:"evenodd",height:t,style:ro({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:X0}),i.jsx("path",{d:"M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z"}),i.jsx("path",{d:"M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z"}),i.jsx("path",{d:"M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z"}),i.jsx("path",{d:"M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z"})]}))}),i1="Meta";function Tt(n){"@babel/helpers - typeof";return Tt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Tt(n)}var a1=["size","style"];function ss(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function so(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function p1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var h1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=u1(n,a1);return i.jsxs("svg",so(so({fill:"currentColor",fillRule:"evenodd",height:t,style:so({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:i1}),i.jsx("path",{d:"M6.897 4c1.915 0 3.516.932 5.43 3.376l.282-.373c.19-.246.383-.484.58-.71l.313-.35C14.588 4.788 15.792 4 17.225 4c1.273 0 2.469.557 3.491 1.516l.218.213c1.73 1.765 2.917 4.71 3.053 8.026l.011.392.002.25c0 1.501-.28 2.759-.818 3.7l-.14.23-.108.153c-.301.42-.664.758-1.086 1.009l-.265.142-.087.04a3.493 3.493 0 01-.302.118 4.117 4.117 0 01-1.33.208c-.524 0-.996-.067-1.438-.215-.614-.204-1.163-.56-1.726-1.116l-.227-.235c-.753-.812-1.534-1.976-2.493-3.586l-1.43-2.41-.544-.895-1.766 3.13-.343.592C7.597 19.156 6.227 20 4.356 20c-1.21 0-2.205-.42-2.936-1.182l-.168-.184c-.484-.573-.837-1.311-1.043-2.189l-.067-.32a8.69 8.69 0 01-.136-1.288L0 14.468c.002-.745.06-1.49.174-2.23l.1-.573c.298-1.53.828-2.958 1.536-4.157l.209-.34c1.177-1.83 2.789-3.053 4.615-3.16L6.897 4zm-.033 2.615l-.201.01c-.83.083-1.606.673-2.252 1.577l-.138.199-.01.018c-.67 1.017-1.185 2.378-1.456 3.845l-.004.022a12.591 12.591 0 00-.207 2.254l.002.188c.004.18.017.36.04.54l.043.291c.092.503.257.908.486 1.208l.117.137c.303.323.698.492 1.17.492 1.1 0 1.796-.676 3.696-3.641l2.175-3.4.454-.701-.139-.198C9.11 7.3 8.084 6.616 6.864 6.616zm10.196-.552l-.176.007c-.635.048-1.223.359-1.82.933l-.196.198c-.439.462-.887 1.064-1.367 1.807l.266.398c.18.274.362.56.55.858l.293.475 1.396 2.335.695 1.114c.583.926 1.03 1.6 1.408 2.082l.213.262c.282.326.529.54.777.673l.102.05c.227.1.457.138.718.138.176.002.35-.023.518-.073.338-.104.61-.32.813-.637l.095-.163.077-.162c.194-.459.29-1.06.29-1.785l-.006-.449c-.08-2.871-.938-5.372-2.2-6.798l-.176-.189c-.67-.683-1.444-1.074-2.27-1.074z"})]}))}),m1="Mistral";function Rt(n){"@babel/helpers - typeof";return Rt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Rt(n)}var f1=["size","style"];function is(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function io(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function x1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var w1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=v1(n,f1);return i.jsxs("svg",io(io({fill:"currentColor",fillRule:"evenodd",height:t,style:io({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:m1}),i.jsx("path",{clipRule:"evenodd",d:"M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z"})]}))}),C1="MoonshotAI";function Nt(n){"@babel/helpers - typeof";return Nt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Nt(n)}var S1=["size","style"];function as(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function ao(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function P1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var _1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=O1(n,S1);return i.jsxs("svg",ao(ao({fill:"currentColor",fillRule:"evenodd",height:t,style:ao({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:C1}),i.jsx("path",{d:"M1.052 16.916l9.539 2.552a21.007 21.007 0 00.06 2.033l5.956 1.593a11.997 11.997 0 01-5.586.865l-.18-.016-.044-.004-.084-.009-.094-.01a11.605 11.605 0 01-.157-.02l-.107-.014-.11-.016a11.962 11.962 0 01-.32-.051l-.042-.008-.075-.013-.107-.02-.07-.015-.093-.019-.075-.016-.095-.02-.097-.023-.094-.022-.068-.017-.088-.022-.09-.024-.095-.025-.082-.023-.109-.03-.062-.02-.084-.025-.093-.028-.105-.034-.058-.019-.08-.026-.09-.031-.066-.024a6.293 6.293 0 01-.044-.015l-.068-.025-.101-.037-.057-.022-.08-.03-.087-.035-.088-.035-.079-.032-.095-.04-.063-.028-.063-.027a5.655 5.655 0 01-.041-.018l-.066-.03-.103-.047-.052-.024-.096-.046-.062-.03-.084-.04-.086-.044-.093-.047-.052-.027-.103-.055-.057-.03-.058-.032a6.49 6.49 0 01-.046-.026l-.094-.053-.06-.034-.051-.03-.072-.041-.082-.05-.093-.056-.052-.032-.084-.053-.061-.039-.079-.05-.07-.047-.053-.035a7.785 7.785 0 01-.054-.036l-.044-.03-.044-.03a6.066 6.066 0 01-.04-.028l-.057-.04-.076-.054-.069-.05-.074-.054-.056-.042-.076-.057-.076-.059-.086-.067-.045-.035-.064-.052-.074-.06-.089-.073-.046-.039-.046-.039a7.516 7.516 0 01-.043-.037l-.045-.04-.061-.053-.07-.062-.068-.06-.062-.058-.067-.062-.053-.05-.088-.084a13.28 13.28 0 01-.099-.097l-.029-.028-.041-.042-.069-.07-.05-.051-.05-.053a6.457 6.457 0 01-.168-.179l-.08-.088-.062-.07-.071-.08-.042-.049-.053-.062-.058-.068-.046-.056a7.175 7.175 0 01-.027-.033l-.045-.055-.066-.082-.041-.052-.05-.064-.02-.025a11.99 11.99 0 01-1.44-2.402zm-1.02-5.794l11.353 3.037a20.468 20.468 0 00-.469 2.011l10.817 2.894a12.076 12.076 0 01-1.845 2.005L.657 15.923l-.016-.046-.035-.104a11.965 11.965 0 01-.05-.153l-.007-.023a11.896 11.896 0 01-.207-.741l-.03-.126-.018-.08-.021-.097-.018-.081-.018-.09-.017-.084-.018-.094c-.026-.141-.05-.283-.071-.426l-.017-.118-.011-.083-.013-.102a12.01 12.01 0 01-.019-.161l-.005-.047a12.12 12.12 0 01-.034-2.145zm1.593-5.15l11.948 3.196c-.368.605-.705 1.231-1.01 1.875l11.295 3.022c-.142.82-.368 1.612-.668 2.365l-11.55-3.09L.124 10.26l.015-.1.008-.049.01-.067.015-.087.018-.098c.026-.148.056-.295.088-.442l.028-.124.02-.085.024-.097c.022-.09.045-.18.07-.268l.028-.102.023-.083.03-.1.025-.082.03-.096.026-.082.031-.095a11.896 11.896 0 011.01-2.232zm4.442-4.4L17.352 4.59a20.77 20.77 0 00-1.688 1.721l7.823 2.093c.267.852.442 1.744.513 2.665L2.106 5.213l.045-.065.027-.04.04-.055.046-.065.055-.076.054-.072.064-.086.05-.065.057-.073.055-.07.06-.074.055-.069.065-.077.054-.066.066-.077.053-.06.072-.082.053-.06.067-.074.054-.058.073-.078.058-.06.063-.067.168-.17.1-.098.059-.056.076-.071a12.084 12.084 0 012.272-1.677zM12.017 0h.097l.082.001.069.001.054.002.068.002.046.001.076.003.047.002.06.003.054.002.087.005.105.007.144.011.088.007.044.004.077.008.082.008.047.005.102.012.05.006.108.014.081.01.042.006.065.01.207.032.07.012.065.011.14.026.092.018.11.022.046.01.075.016.041.01L14.7.3l.042.01.065.015.049.012.071.017.096.024.112.03.113.03.113.032.05.015.07.02.078.024.073.023.05.016.05.016.076.025.099.033.102.036.048.017.064.023.093.034.11.041.116.045.1.04.047.02.06.024.041.018.063.026.04.018.057.025.11.048.1.046.074.035.075.036.06.028.092.046.091.045.102.052.053.028.049.026.046.024.06.033.041.022.052.029.088.05.106.06.087.051.057.034.053.032.096.059.088.055.098.062.036.024.064.041.084.056.04.027.062.042.062.043.023.017c.054.037.108.075.161.114l.083.06.065.048.056.043.086.065.082.064.04.03.05.041.086.069.079.065.085.071c.712.6 1.353 1.283 1.909 2.031L7.222.994l.062-.027.065-.028.081-.034.086-.035c.113-.045.227-.09.341-.131l.096-.035.093-.033.084-.03.096-.031c.087-.03.176-.058.264-.085l.091-.027.086-.025.102-.03.085-.023.1-.026L9.04.37l.09-.023.091-.022.095-.022.09-.02.098-.021.091-.02.095-.018.092-.018.1-.018.091-.016.098-.017.092-.014.097-.015.092-.013.102-.013.091-.012.105-.012.09-.01.105-.01c.093-.01.186-.018.28-.024l.106-.008.09-.005.11-.006.093-.004.1-.004.097-.002.099-.002.197-.002z"})]}))}),M1="Volcengine";function $t(n){"@babel/helpers - typeof";return $t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$t(n)}var L1=["size","style"];function ls(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function lo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function $1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var D1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=N1(n,L1);return i.jsxs("svg",lo(lo({fill:"currentColor",fillRule:"evenodd",height:t,style:lo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:M1}),i.jsx("path",{d:"M7.29 5.36L3.148 21.737a.215.215 0 00.203.261h8.29a.214.214 0 00.215-.261L7.7 5.359a.214.214 0 00-.41 0z",fillOpacity:".5"}),i.jsx("path",{clipRule:"evenodd",d:"M4.553 16.18l-1.406 5.558a.214.214 0 00.203.261h2.42-4.551a.214.214 0 01-.214-.26l2.275-8.961a.214.214 0 01.409 0l.864 3.402z"}),i.jsx("path",{d:"M14.44.15a.214.214 0 00-.41 0L8.366 21.739a.214.214 0 00.214.261H19.9a.214.214 0 00.215-.261L14.44.151z",fillOpacity:".5"}),i.jsx("path",{clipRule:"evenodd",d:"M16.694 22h3.207a.215.215 0 00.214-.262l-1.839-6.993 1.164-4.592a.214.214 0 01.411 0l2.951 11.586a.214.214 0 01-.214.261h-5.894z"}),i.jsx("path",{d:"M10.278 7.741L6.685 21.736a.214.214 0 00.214.264h7.17a.216.216 0 00.214-.166.216.216 0 000-.098L10.687 7.742a.214.214 0 00-.409 0z"})]}))}),A1="Minimax";function Dt(n){"@babel/helpers - typeof";return Dt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Dt(n)}var z1=["size","style"];function cs(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function co(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function K1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var W1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=V1(n,z1);return i.jsxs("svg",co(co({fill:"currentColor",fillRule:"evenodd",height:t,style:co({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:A1}),i.jsx("path",{d:"M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z"})]}))}),H1="Zhipu";function At(n){"@babel/helpers - typeof";return At=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(n)}var Z1=["size","style"];function ds(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function uo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function X1(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var J1=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=Y1(n,Z1);return i.jsxs("svg",uo(uo({fill:"currentColor",fillRule:"evenodd",height:t,style:uo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:H1}),i.jsx("path",{d:"M11.991 23.503a.24.24 0 00-.244.248.24.24 0 00.244.249.24.24 0 00.245-.249.24.24 0 00-.22-.247l-.025-.001zM9.671 5.365a1.697 1.697 0 011.099 2.132l-.071.172-.016.04-.018.054c-.07.16-.104.32-.104.498-.035.71.47 1.279 1.186 1.314h.366c1.309.053 2.338 1.173 2.286 2.523-.052 1.332-1.152 2.38-2.478 2.327h-.174c-.715.018-1.274.64-1.239 1.368 0 .124.018.23.053.337.209.373.54.658.96.8.75.23 1.517-.125 1.9-.782l.018-.035c.402-.64 1.17-.96 1.92-.711.854.284 1.378 1.226 1.099 2.167a1.661 1.661 0 01-2.077 1.102 1.711 1.711 0 01-.907-.711l-.017-.035c-.2-.323-.463-.58-.851-.711l-.056-.018a1.646 1.646 0 00-1.954.746 1.66 1.66 0 01-1.065.764 1.677 1.677 0 01-1.989-1.279c-.209-.906.332-1.83 1.257-2.043a1.51 1.51 0 01.296-.035h.018c.68-.071 1.151-.622 1.116-1.333a1.307 1.307 0 00-.227-.693 2.515 2.515 0 01-.366-1.403 2.39 2.39 0 01.366-1.208c.14-.195.21-.444.227-.693.018-.71-.506-1.261-1.186-1.332l-.07-.018a1.43 1.43 0 01-.299-.07l-.05-.019a1.7 1.7 0 01-1.047-2.114 1.68 1.68 0 012.094-1.101zm-5.575 10.11c.26-.264.639-.367.994-.27.355.096.633.379.728.74.095.362-.007.748-.267 1.013-.402.41-1.053.41-1.455 0a1.062 1.062 0 010-1.482zm14.845-.294c.359-.09.738.024.992.297.254.274.344.665.237 1.025-.107.36-.396.634-.756.718-.551.128-1.1-.22-1.23-.781a1.05 1.05 0 01.757-1.26zm-.064-4.39c.314.32.49.753.49 1.206 0 .452-.176.886-.49 1.206-.315.32-.74.5-1.185.5-.444 0-.87-.18-1.184-.5a1.727 1.727 0 010-2.412 1.654 1.654 0 012.369 0zm-11.243.163c.364.484.447 1.128.218 1.691a1.665 1.665 0 01-2.188.923c-.855-.36-1.26-1.358-.907-2.228a1.68 1.68 0 011.33-1.038c.593-.08 1.183.169 1.547.652zm11.545-4.221c.368 0 .708.2.892.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.892.524c-.568 0-1.03-.47-1.03-1.048 0-.579.462-1.048 1.03-1.048zm-14.358 0c.368 0 .707.2.891.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.891.524c-.569 0-1.03-.47-1.03-1.048 0-.579.461-1.048 1.03-1.048zm10.031-1.475c.925 0 1.675.764 1.675 1.706s-.75 1.705-1.675 1.705-1.674-.763-1.674-1.705c0-.942.75-1.706 1.674-1.706zm-2.626-.684c.362-.082.653-.356.761-.718a1.062 1.062 0 00-.238-1.028 1.017 1.017 0 00-.996-.294c-.547.14-.881.7-.752 1.257.13.558.675.907 1.225.783zm0 16.876c.359-.087.644-.36.75-.72a1.062 1.062 0 00-.237-1.019 1.018 1.018 0 00-.985-.301 1.037 1.037 0 00-.762.717c-.108.361-.017.754.239 1.028.245.263.606.377.953.305l.043-.01zM17.19 3.5a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64a.631.631 0 00-.628.64c0 .355.28.64.628.64zm-10.38 0a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64a.631.631 0 00-.628.64c0 .355.279.64.628.64zm-5.182 7.852a.631.631 0 00-.628.64c0 .354.28.639.628.639a.63.63 0 00.627-.606l.001-.034a.62.62 0 00-.628-.64zm5.182 9.13a.631.631 0 00-.628.64c0 .355.279.64.628.64a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm10.38.018a.631.631 0 00-.628.64c0 .355.28.64.628.64a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64zm5.182-9.148a.631.631 0 00-.628.64c0 .354.279.639.628.639a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm-.384-4.992a.24.24 0 00.244-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249c0 .142.122.249.244.249zM11.991.497a.24.24 0 00.245-.248A.24.24 0 0011.99 0a.24.24 0 00-.244.249c0 .133.108.236.223.247l.021.001zM2.011 6.36a.24.24 0 00.245-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249.24.24 0 00.244.249zm0 11.263a.24.24 0 00-.243.248.24.24 0 00.244.249.24.24 0 00.244-.249.252.252 0 00-.244-.248zm19.995-.018a.24.24 0 00-.245.248.24.24 0 00.245.25.24.24 0 00.244-.25.252.252 0 00-.244-.248z"})]}))}),ep="StepFun";function zt(n){"@babel/helpers - typeof";return zt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},zt(n)}var tp=["size","style"];function us(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function po(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function ip(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var ap=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=sp(n,tp);return i.jsxs("svg",po(po({fill:"currentColor",fillRule:"evenodd",height:t,style:po({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:ep}),i.jsx("path",{d:"M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zM8.762 19.614H4.376v-4.386h4.386v4.386zm5.423 0H9.798v-4.386h4.387v4.386zm0-5.42H9.798V9.81h4.387v4.386zm0-5.418H9.798V4.39h4.387v4.386zm5.422-.004h-4.386V4.386h4.386v4.386z"})]}))}),lp="Kimi";function Ft(n){"@babel/helpers - typeof";return Ft=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ft(n)}var cp=["size","style"];function ps(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function ho(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function mp(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var fp=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=hp(n,cp);return i.jsxs("svg",ho(ho({fill:"currentColor",fillRule:"evenodd",height:t,style:ho({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:lp}),i.jsx("path",{d:"M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z"}),i.jsx("path",{d:"M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z"})]}))}),gp="OpenRouter";function Bt(n){"@babel/helpers - typeof";return Bt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Bt(n)}var yp=["size","style"];function hs(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function mo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function Cp(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var Sp=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=wp(n,yp);return i.jsxs("svg",mo(mo({fill:"currentColor",fillRule:"evenodd",height:t,style:mo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:gp}),i.jsx("path",{d:"M18.654 3.87a5.087 5.087 0 110 10.174L23.7 19.09c.64.641.187 1.737-.72 1.737H8.48a8.479 8.479 0 010-16.958h10.175zM8.479 7.26a5.087 5.087 0 100 10.176 5.087 5.087 0 000-10.175z"})]}))}),kp="Groq";function Ut(n){"@babel/helpers - typeof";return Ut=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ut(n)}var jp=["size","style"];function ms(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function fo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function Mp(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var Lp=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=_p(n,jp);return i.jsxs("svg",fo(fo({fill:"currentColor",fillRule:"evenodd",height:t,style:fo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:kp}),i.jsx("path",{d:"M12.036 2c-3.853-.035-7 3-7.036 6.781-.035 3.782 3.055 6.872 6.908 6.907h2.42v-2.566h-2.292c-2.407.028-4.38-1.866-4.408-4.23-.029-2.362 1.901-4.298 4.308-4.326h.1c2.407 0 4.358 1.915 4.365 4.278v6.305c0 2.342-1.944 4.25-4.323 4.279a4.375 4.375 0 01-3.033-1.252l-1.851 1.818A7 7 0 0012.029 22h.092c3.803-.056 6.858-3.083 6.879-6.816v-6.5C18.907 4.963 15.817 2 12.036 2z"})]}))}),Ip="Cohere";function Vt(n){"@babel/helpers - typeof";return Vt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Vt(n)}var Tp=["size","style"];function fs(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function go(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function Ap(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var zp=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=Dp(n,Tp);return i.jsxs("svg",go(go({fill:"currentColor",fillRule:"evenodd",height:t,style:go({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:Ip}),i.jsx("path",{clipRule:"evenodd",d:"M8.128 14.099c.592 0 1.77-.033 3.398-.703 1.897-.781 5.672-2.2 8.395-3.656 1.905-1.018 2.74-2.366 2.74-4.18A4.56 4.56 0 0018.1 1H7.549A6.55 6.55 0 001 7.55c0 3.617 2.745 6.549 7.128 6.549z"}),i.jsx("path",{clipRule:"evenodd",d:"M9.912 18.61a4.387 4.387 0 012.705-4.052l3.323-1.38c3.361-1.394 7.06 1.076 7.06 4.715a5.104 5.104 0 01-5.105 5.104l-3.597-.001a4.386 4.386 0 01-4.386-4.387z"}),i.jsx("path",{d:"M4.776 14.962A3.775 3.775 0 001 18.738v.489a3.776 3.776 0 007.551 0v-.49a3.775 3.775 0 00-3.775-3.775z"})]}))}),Fp="Grok";function Kt(n){"@babel/helpers - typeof";return Kt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Kt(n)}var Bp=["size","style"];function gs(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function yo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function Hp(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var Zp=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=Wp(n,Bp);return i.jsxs("svg",yo(yo({fill:"currentColor",fillRule:"evenodd",height:t,style:yo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:Fp}),i.jsx("path",{d:"M6.469 8.776L16.512 23h-4.464L2.005 8.776H6.47zm-.004 7.9l2.233 3.164L6.467 23H2l4.465-6.324zM22 2.582V23h-3.659V7.764L22 2.582zM22 1l-9.952 14.095-2.233-3.163L17.533 1H22z"})]}))}),qp="Baichuan";function Wt(n){"@babel/helpers - typeof";return Wt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wt(n)}var Gp=["size","style"];function ys(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function bo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function eh(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var th=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=Jp(n,Gp);return i.jsxs("svg",bo(bo({fill:"currentColor",fillRule:"evenodd",height:t,style:bo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:qp}),i.jsx("path",{d:"M7.333 2h-3.2l-2 4.333V17.8L0 22h5.2l2.028-4.2L7.333 2zm7.334 0h-5.2v20h5.2V2zM16.8 7.733H22V22h-5.2V7.733zM22 2h-5.2v4.133H22V2z"})]}))}),nh="ByteDance";function Ht(n){"@babel/helpers - typeof";return Ht=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ht(n)}var oh=["size","style"];function bs(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable})),t.push.apply(t,o)}return t}function vo(n){for(var e=1;e=0)&&Object.prototype.propertyIsEnumerable.call(n,o)&&(t[o]=n[o])}return t}function lh(n,e){if(n==null)return{};var t={},o=Object.keys(n),r,s;for(s=0;s=0)&&(t[r]=n[r]);return t}var ch=a.memo(function(n){var e=n.size,t=e===void 0?"1em":e,o=n.style,r=ah(n,oh);return i.jsxs("svg",vo(vo({fill:"currentColor",fillRule:"evenodd",height:t,style:vo({flex:"none",lineHeight:1},o),viewBox:"0 0 24 24",width:t,xmlns:"http://www.w3.org/2000/svg"},r),{},{children:[i.jsx("title",{children:nh}),i.jsx("path",{d:"M14.944 18.587l-1.704-.445V10.01l1.824-.462c1-.254 1.84-.461 1.88-.453.032 0 .056 2.235.056 4.972v4.973l-.176-.008c-.104 0-.952-.207-1.88-.446z"}),i.jsx("path",{d:"M7 16.542c0-2.736.024-4.98.064-4.98.032-.008.872.2 1.88.454l1.816.461-.016 4.05-.024 4.049-1.632.422c-.896.23-1.736.445-1.856.469L7 21.523v-4.98z"}),i.jsx("path",{d:"M19.24 12.477c0-9.03.008-9.515.144-9.475.072.024.784.207 1.576.406.792.207 1.576.405 1.744.445l.296.08-.016 8.56-.024 8.568-1.624.414c-.888.23-1.728.437-1.856.47l-.24.055v-9.523z"}),i.jsx("path",{d:"M1 12.509c0-4.678.024-8.505.064-8.505.032 0 .872.207 1.872.454l1.824.461v7.582c0 4.16-.016 7.574-.032 7.574-.024 0-.872.215-1.88.47L1 21.013v-8.505z"})]}))});const dh={openai:{key:"openai",displayName:"OpenAI",color:"#10A37F",Component:O0},anthropic:{key:"anthropic",displayName:"Claude",color:"#D97706",Component:N0},deepseek:{key:"deepseek",displayName:"DeepSeek",color:"#4D6BFE",Component:V0},qwen:{key:"qwen",displayName:"Qwen",color:"#615CED",Component:Y0},google:{key:"google",displayName:"Google",color:"#4285F4",Component:s1},meta:{key:"meta",displayName:"Meta",color:"#0081FB",Component:h1},mistral:{key:"mistral",displayName:"Mistral",color:"#FF7000",Component:w1},moonshot:{key:"moonshot",displayName:"Moonshot",color:"#7C3AED",Component:_1},doubao:{key:"doubao",displayName:"火山引擎",color:"#006EFF",Component:D1},minimax:{key:"minimax",displayName:"MiniMax",color:"#F23F5D",Component:W1},zhipu:{key:"zhipu",displayName:"Zhipu",color:"#3859FF",Component:J1},stepfun:{key:"stepfun",displayName:"StepFun",color:"#005AFF",Component:ap},kimi:{key:"kimi",displayName:"Kimi",color:"#000000",Component:fp},openrouter:{key:"openrouter",displayName:"OpenRouter",color:"#6366F1",Component:Sp},groq:{key:"groq",displayName:"Groq",color:"#F55036",Component:Lp},cohere:{key:"cohere",displayName:"Cohere",color:"#39594D",Component:zp},xai:{key:"xai",displayName:"xAI",color:"#000000",Component:Zp},baichuan:{key:"baichuan",displayName:"Baichuan",color:"#4A90E2",Component:th},bytedance:{key:"bytedance",displayName:"ByteDance",color:"#006EFF",Component:ch}};function Ei(n){return dh[n]}function wn(n){const e=(n||"").toLowerCase(),t=e.lastIndexOf("/"),o=t>=0?e.slice(t+1):e;return o.startsWith("claude")||e.includes("anthropic")?"anthropic":o.startsWith("gpt")||o.startsWith("o1")||o.startsWith("o3")||o.startsWith("o4")?"openai":e.includes("deepseek")?"deepseek":o.startsWith("qwen")?"qwen":o.startsWith("moonshot")?"moonshot":o.startsWith("glm")?"zhipu":o.startsWith("step-")?"stepfun":o.startsWith("doubao")?"doubao":o.startsWith("minimax")||o.startsWith("abab")?"minimax":e.includes("gemini")?"google":o.startsWith("llama")||e.includes("meta-llama")?"meta":o.startsWith("mistral")||o.startsWith("mixtral")||o.startsWith("codestral")?"mistral":o.startsWith("command")?"cohere":o.startsWith("grok")?"xai":o.startsWith("baichuan")?"baichuan":o.startsWith("kimi")?"kimi":null}const xo={deepseek:"#4D6BFE",dashscope:"#615CED",qwen:"#615CED",openai:"#10A37F",anthropic:"#D97706",openrouter:"#6366F1",google:"#4285F4",moonshot:"#7C3AED",kimi:"#7C3AED",doubao:"#006EFF",minimax:"#F23F5D",zhipu:"#3859FF",stepfun:"#005AFF"};function Oi(n,e){const t=(n||"").toLowerCase();for(const[r,s]of Object.entries(xo))if(t.includes(r))return s;const o=wn(e||"");return o&&xo[o]?xo[o]:"var(--semi-color-text-3, #8f959e)"}function uh(n,e){const t=(n||"").toLowerCase();if(t.includes("deepseek"))return"DEEPSEEK";if(t.includes("dashscope")||t.includes("qwen"))return"QWEN";if(t.includes("anthropic"))return"ANTHROPIC";if(t.includes("openai"))return"OPENAI";if(t.includes("openrouter"))return"OPENROUTER";if(t.includes("google"))return"GOOGLE";if(t.includes("moonshot"))return"KIMI";if(t.includes("volces")||t.includes("volcengine"))return"DOUBAO";if(t.includes("minimax"))return"MINIMAX";if(t.includes("bigmodel")||t.includes("zhipu"))return"ZHIPU";if(t.includes("stepfun"))return"STEPFUN";const o=wn(e||"");return o?o.toUpperCase():"OTHER"}function ut(n){return n.name||n.model||""}function ph(n,e,t,o){const r=n[e],s=r?ut(r):"";if(t==null||t===e)return s;const l=n[t];return l?`${ut(l)} → ${s}`:s}function vs({apibase:n,model:e,size:t=14}){const o=wn(e||"")||hh(n),r=o?Ei(o):void 0;if(r!=null&&r.Component){const s=r.Component;return i.jsx(s,{size:t})}return i.jsx("span",{"data-slot":"provider-dot",style:{background:Oi(n,e)}})}function hh(n){const e=(n||"").toLowerCase();return e.includes("deepseek")?"deepseek":e.includes("dashscope")||e.includes("qwen")?"qwen":e.includes("anthropic")?"anthropic":e.includes("openai")?"openai":e.includes("openrouter")?"openrouter":e.includes("google")?"google":e.includes("moonshot")?"moonshot":e.includes("volces")||e.includes("volcengine")?"doubao":e.includes("minimax")?"minimax":e.includes("bigmodel")||e.includes("zhipu")?"zhipu":e.includes("stepfun")?"stepfun":null}function mh(n){const e=[],t=new Map;return n.forEach((o,r)=>{if(o.kind==="mixin"){e.push({profile:o,idx:r});return}const s=uh(o.apibase,o.model);t.has(s)||t.set(s,{provider:s,color:Oi(o.apibase,o.model),items:[]}),t.get(s).items.push({profile:o,idx:r})}),{groups:Array.from(t.values()),mixins:e}}function fh({selectedNo:n,runningNo:e,isRunning:t,onSelect:o}={}){const[r,s]=a.useState(!1),[l,c]=a.useState(""),[u,p]=a.useState(null),[d,m]=a.useState(!1),f=a.useRef(null),y=a.useRef(null),b=a.useRef(null),x=a.useRef(null),{lang:C,t:S}=he(),k=Z(T=>T.modelProfiles),_=Z(T=>T.defaultModelNo),v=Z(T=>T.liveModel),j=G(T=>T.sessionModelNo),w=G(T=>T.status),E=G(T=>T.selectSessionModel),O=n??j??_,D=e!==void 0?e:v==null?void 0:v.runningLlmNo,P=t??w==="running",N=k.length===0,L=k[O],B=a.useMemo(()=>L?P&&D!=null&&D!==O?ph(k,O,D):L.kind==="mixin"?S("model.aggregationShort"):ut(L):S("model.menuLabel"),[L,P,k,D,O,S]),{groups:Q,mixins:z}=a.useMemo(()=>mh(k),[k]),M=a.useMemo(()=>{if(!l.trim())return Q;const T=l.toLowerCase();return Q.map(F=>({...F,items:F.items.filter(({profile:J})=>ut(J).toLowerCase().includes(T)||(J.model||"").toLowerCase().includes(T)||F.provider.toLowerCase().includes(T))})).filter(F=>F.items.length>0)},[Q,l]),Y=a.useCallback(()=>{s(T=>(T||c(""),!T))},[]),fe=a.useCallback(T=>{o?o(T):E(T),s(!1)},[o,E]);a.useEffect(()=>{r&&x.current&&x.current.focus()},[r]),a.useEffect(()=>{var J;const T=(J=b.current)==null?void 0:J.closest('[data-slot="composer-toolbar"]');if(!T)return;const F=new ResizeObserver(ce=>{var ke,ge;const ie=((ge=(ke=ce[0])==null?void 0:ke.contentRect)==null?void 0:ge.width)??T.offsetWidth;m(ie<320)});return F.observe(T),()=>F.disconnect()},[]),a.useEffect(()=>{if(!r)return;function T(J){f.current&&!f.current.contains(J.target)&&y.current&&!y.current.contains(J.target)&&s(!1)}function F(J){J.key==="Escape"&&s(!1)}return document.addEventListener("mousedown",T),document.addEventListener("keydown",F),()=>{document.removeEventListener("mousedown",T),document.removeEventListener("keydown",F)}},[r]),a.useEffect(()=>{function T(F){if((F.metaKey||F.ctrlKey)&&F.key>="1"&&F.key<="9"){const J=parseInt(F.key)-1;Jdocument.removeEventListener("keydown",T)},[k,E]);const Se=a.useCallback(()=>{s(!1),Z.getState().open()},[]);return i.jsxs("div",{ref:b,"data-slot":"model-selector",children:[i.jsx("button",{ref:y,"data-slot":"model-chip","data-loading":N?"":void 0,"data-open":r?"":void 0,onClick:Y,title:L?L.kind==="mixin"?S("model.aggregation"):`${L.model}${L.apibase?" @ "+L.apibase:""}`:S("model.menuLabel"),children:N?i.jsx("span",{"data-slot":"model-chip-spinner",children:i.jsx("span",{})}):i.jsxs(i.Fragment,{children:[!d&&i.jsx("span",{"data-slot":"model-chip-label",children:B}),i.jsx("span",{"data-slot":"model-chip-caret","data-open":r?"":void 0,children:i.jsx(xs,{})})]})}),r&&!N&&i.jsxs("div",{ref:f,"data-slot":"model-menu",children:[i.jsxs("div",{"data-slot":"model-menu-search",children:[i.jsx(gh,{}),i.jsx("input",{ref:x,type:"text",placeholder:S("model.menuLabel"),value:l,onChange:T=>c(T.target.value),"data-slot":"model-menu-search-input"})]}),i.jsxs("div",{"data-slot":"model-menu-body",children:[M.map(T=>{var F,J;return i.jsxs("div",{"data-slot":"model-menu-section",children:[i.jsxs("div",{"data-slot":"model-menu-section-header",children:[i.jsx(vs,{apibase:((F=T.items[0])==null?void 0:F.profile.apibase)||"",model:(J=T.items[0])==null?void 0:J.profile.model}),T.provider]}),T.items.map(({profile:ce,idx:ie})=>i.jsxs("button",{"data-slot":"model-menu-item","data-active":ie===O?"":void 0,onClick:()=>fe(ie),title:`${ce.model}${ce.apibase?" @ "+ce.apibase:""}`,children:[ie===O&&i.jsx("span",{"data-slot":"model-check",children:"✓"}),i.jsx("span",{"data-slot":"model-menu-name",children:ut(ce)})]},ce.id))]},T.provider)}),z.length>0&&i.jsxs("div",{"data-slot":"model-menu-section",children:[i.jsx("div",{"data-slot":"model-menu-section-header",children:S("model.aggregationShort").toUpperCase()}),z.map(({profile:T,idx:F})=>{var ie;const J=u===F,ce=((ie=T.name)==null?void 0:ie.trim())||S("model.aggregationShort");return i.jsxs("div",{"data-slot":"model-menu-group",children:[i.jsxs("button",{"data-slot":"model-menu-item","data-active":F===O?"":void 0,onClick:()=>fe(F),title:S("model.aggregationDesc"),children:[F===O&&i.jsx("span",{"data-slot":"model-check",children:"✓"}),i.jsx("span",{"data-slot":"model-menu-name",children:ce}),T.members&&T.members.length>0&&i.jsx("span",{"data-slot":"mixin-caret","data-expanded":J?"":void 0,onClick:ke=>{ke.stopPropagation(),p(J?null:F)},children:i.jsx(xs,{})})]}),J&&T.members&&i.jsxs("div",{"data-slot":"mixin-members",children:[T.members.map(ke=>{const ge=k.find($=>$.name===ke);return i.jsxs("div",{"data-slot":"mixin-member",children:[i.jsx(vs,{apibase:(ge==null?void 0:ge.apibase)||"",model:ge==null?void 0:ge.model,size:12}),i.jsx("span",{"data-slot":"model-menu-name",children:ge?ut(ge):String(ke)})]},ke)}),T.members.length===0&&i.jsx("div",{"data-slot":"mixin-member",style:{opacity:.5},children:S("model.emptyMixin")})]})]},T.id)})]}),M.length===0&&z.length===0&&i.jsx("div",{"data-slot":"model-menu-empty",children:S("set.noModels")})]}),i.jsx("div",{"data-slot":"model-menu-footer",children:i.jsx("button",{"data-slot":"model-menu-action",onClick:Se,children:C==="zh"?"编辑模型…":"Edit models…"})})]})]})}function xs(){return i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor","aria-hidden":"true",children:i.jsx("path",{d:"M2.5 3.5L5 6.5L7.5 3.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})})}function gh(){return i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true","data-slot":"model-menu-search-icon",children:i.jsx("path",{d:"M7 12A5 5 0 107 2a5 5 0 000 10zM14 14l-3.5-3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}const yh={pdf:{char:"📄",color:"#E53E3E"},doc:{char:"📝",color:"#2B6CB0"},docx:{char:"📝",color:"#2B6CB0"},xls:{char:"📊",color:"#276749"},xlsx:{char:"📊",color:"#276749"},csv:{char:"📊",color:"#276749"},zip:{char:"📦",color:"#744210"},rar:{char:"📦",color:"#744210"},py:{char:"🐍",color:"#3182CE"},js:{char:"⚡",color:"#D69E2E"},ts:{char:"⚡",color:"#3182CE"},md:{char:"📋",color:"#4A5568"},txt:{char:"📋",color:"#4A5568"},json:{char:"{ }",color:"#6366F1"}};function bh(n){var t;const e=((t=n.split(".").pop())==null?void 0:t.toLowerCase())||"";return yh[e]||{char:"📎",color:"var(--semi-color-text-3, #8f959e)"}}function vh(n){return!n||n<0?"":n<1024?n+" B":n<1048576?(n/1024).toFixed(1)+" KB":(n/1048576).toFixed(1)+" MB"}function xh(n){try{return new URL(n).hostname}catch{return n.slice(0,30)}}function wh({files:n,onRemove:e,onRetry:t}){const o=a.useCallback(s=>l=>{l.stopPropagation(),e(s)},[e]),r=a.useCallback(s=>l=>{l.stopPropagation(),t==null||t(s)},[t]);return n.length===0?null:i.jsx("div",{"data-slot":"attachment-strip","data-has-items":"",children:n.map(s=>{if(s.type==="image"&&s.preview)return i.jsxs("div",{"data-slot":"attachment-thumb","data-status":s.status,children:[i.jsx("img",{src:s.preview,alt:s.name}),s.status==="uploading"&&i.jsx("span",{"data-slot":"attachment-spinner"}),s.status==="error"&&i.jsx("button",{"data-slot":"attachment-error-badge",onClick:r(s.id),title:s.errorMsg||"Error",children:"!"}),s.status!=="uploading"&&i.jsx("button",{"data-slot":"attachment-remove",onClick:o(s.id),"aria-label":"Remove",children:"×"})]},s.id);if(s.type==="url")return i.jsxs("div",{"data-slot":"attachment-file-chip","data-status":s.status,children:[i.jsx("span",{"data-slot":"attachment-file-icon",children:"🔗"}),i.jsx("span",{"data-slot":"attachment-file-meta",children:i.jsx("span",{"data-slot":"attachment-file-name",children:s.url?xh(s.url):s.name})}),i.jsx("button",{"data-slot":"attachment-remove",onClick:o(s.id),"aria-label":"Remove",children:"×"})]},s.id);const l=bh(s.name);return i.jsxs("div",{"data-slot":"attachment-file-chip","data-status":s.status,children:[s.status==="uploading"?i.jsx("span",{"data-slot":"attachment-spinner"}):s.status==="error"?i.jsx("button",{"data-slot":"attachment-error-badge",onClick:r(s.id),title:s.errorMsg||"Error",children:"!"}):i.jsx("span",{"data-slot":"attachment-file-icon",style:{color:l.color},children:l.char}),i.jsxs("span",{"data-slot":"attachment-file-meta",children:[i.jsx("span",{"data-slot":"attachment-file-name",children:s.name}),s.status==="error"&&s.errorMsg&&i.jsx("span",{"data-slot":"attachment-file-error",children:s.errorMsg}),s.status!=="error"&&s.size>0&&i.jsx("span",{"data-slot":"attachment-file-size",children:vh(s.size)})]}),s.status!=="uploading"&&i.jsx("button",{"data-slot":"attachment-remove",onClick:o(s.id),"aria-label":"Remove",children:"×"})]},s.id)})})}const Ch="ga_custom_presets";function Sh(){try{const n=localStorage.getItem(Ch);return n?JSON.parse(n):[]}catch{return[]}}const ws={hint:{zh:"提示:输入 / 以内联调用技能",en:"Tip: type / to invoke a skill inline"}};function kh({onSelect:n}){const[e,t]=a.useState(!1),[o,r]=a.useState(-1),s=a.useRef(null),l=a.useRef(null),c=Z(f=>f.lang),u=Sh(),p=[...Xe,...u],d=a.useCallback(()=>{t(f=>!f),r(-1)},[]),m=a.useCallback((f,y)=>{n(f,y),t(!1)},[n]);return a.useEffect(()=>{if(!e)return;function f(b){s.current&&!s.current.contains(b.target)&&l.current&&!l.current.contains(b.target)&&t(!1)}function y(b){if(b.key==="Escape"){t(!1);return}b.key==="ArrowDown"&&(b.preventDefault(),r(x=>Math.min(x+1,p.length-1))),b.key==="ArrowUp"&&(b.preventDefault(),r(x=>Math.max(x-1,0))),b.key==="Enter"&&o>=0&&o{document.removeEventListener("mousedown",f),document.removeEventListener("keydown",y)}},[e,o,p,m]),i.jsxs("div",{"data-slot":"skill-wrap",children:[i.jsx("button",{ref:l,"data-slot":"skill-trigger",onClick:d,"aria-label":"Presets",title:"Prompt presets",children:i.jsx(jh,{})}),e&&i.jsxs("div",{ref:s,"data-slot":"skill-panel",children:[i.jsxs("div",{"data-slot":"skill-section",children:[i.jsx("div",{"data-slot":"skill-section-title",children:"Presets"}),Xe.map((f,y)=>i.jsx("button",{"data-slot":"skill-item","data-focused":o===y?"":void 0,onClick:()=>m(f.id,f.prompt),onMouseEnter:()=>r(y),children:i.jsxs("span",{"data-slot":"skill-info",children:[i.jsx("span",{"data-slot":"skill-name",children:f.title}),i.jsx("span",{"data-slot":"skill-desc",children:f.desc[c]||f.desc.en})]})},f.id))]}),u.length>0&&i.jsxs("div",{"data-slot":"skill-section",children:[i.jsx("div",{"data-slot":"skill-section-title",children:"Custom"}),u.map((f,y)=>i.jsx("button",{"data-slot":"skill-item","data-focused":o===Xe.length+y?"":void 0,onClick:()=>m(f.id,f.prompt),onMouseEnter:()=>r(Xe.length+y),children:i.jsxs("span",{"data-slot":"skill-info",children:[i.jsx("span",{"data-slot":"skill-name",children:f.title}),i.jsx("span",{"data-slot":"skill-desc",children:f.desc[c]||f.desc.en})]})},f.id))]}),i.jsx("div",{"data-slot":"skill-panel-hint",children:ws.hint[c]||ws.hint.en})]})]})}function jh(){return i.jsx("svg",{width:"16",height:"16",viewBox:"0 0 256 256",fill:"currentColor","aria-hidden":"true",children:i.jsx("path",{d:"M215.79 118.17a8 8 0 0 0-5-5.66L153.18 90.9l14.66-73.33a8 8 0 0 0-13.69-7l-112 120a8 8 0 0 0 3 13.05l57.63 21.61-14.62 73.12a8 8 0 0 0 13.69 7l112-120a8 8 0 0 0 1.94-7.18Z"})})}function Eh(n,e,t=!1){return t?"disabled":n&&e?"queue":n?"stop":e?"send":"disabled"}function Oh({state:n,onSend:e,onStop:t,onQueue:o}){const r=a.useCallback(()=>{switch(n){case"send":e();break;case"stop":t();break;case"queue":o==null||o();break}},[n,e,t,o]);a.useEffect(()=>{if(n!=="stop")return;function l(c){c.key==="Escape"&&(c.preventDefault(),t())}return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[n,t]);const s=n==="stop"?"Stop generating":n==="queue"?"Queue message":"Send message";return i.jsxs("button",{"data-slot":"composer-cta","data-state":n,onClick:r,disabled:n==="disabled","aria-label":s,title:s,children:[n==="stop"&&i.jsx(_h,{}),n==="queue"&&i.jsx(Mh,{}),(n==="send"||n==="disabled")&&i.jsx(Ph,{})]})}function Ph(){return i.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M8 14V2m0 0L3 7m5-5l5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}function _h(){return i.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:i.jsx("rect",{x:"3",y:"3",width:"10",height:"10",rx:"2",fill:"currentColor"})})}function Mh(){return i.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M3 4h10M3 8h10M3 12h10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}const Cs={thinking:{zh:"思考中…",en:"Thinking…"},queued:{zh:"排队中",en:"Queued"}};function Lh(){const n=G(s=>s.status==="running"),e=G(s=>s.pendingQueue),t=G(s=>s.cancelQueued),o=Z(s=>s.lang);if(!n&&e.length===0)return null;const r=s=>Cs[s][o]||Cs[s].en;return i.jsxs("div",{"data-slot":"composer-status-stack",children:[n&&i.jsxs("div",{"data-slot":"status-running",children:[i.jsx("span",{"data-slot":"status-dot"}),i.jsx("span",{"data-slot":"status-label",children:r("thinking")})]}),e.map((s,l)=>i.jsxs("div",{"data-slot":"status-queued",children:[i.jsxs("span",{"data-slot":"status-queue-num",children:["#",l+1]}),i.jsxs("span",{"data-slot":"status-queue-text",children:[s.text.slice(0,40),s.text.length>40?"…":""]}),i.jsx("button",{"data-slot":"status-queue-cancel",onClick:()=>t(l),"aria-label":"Cancel",children:i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",children:i.jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]},l))]})}const Ss=7,Ih=5;function ks(n){return Math.floor(Math.random()*n)}function Th(){const{t:n}=he(),e=G(s=>s.activeSessionId),t=G(s=>s.messages.length>0),o=a.useRef({sessionId:null,index:ks(Ss),wasNew:!0});return{text:a.useMemo(()=>{const s=o.current;if(s.sessionId!==e){const c=!t,p=ks(c?Ss:Ih);return o.current={sessionId:e,index:p,wasNew:c},n(`composer.placeholder.${c?"new":"followUp"}.${p}`)}const l=s.wasNew?"new":"followUp";return n(`composer.placeholder.${l}.${s.index}`)},[e,t,n])}}function Rh(){var r;const{modelProfiles:n,defaultModelNo:e}=Z.getState(),o=G.getState().sessionModelNo??e;return((r=n[o])==null?void 0:r.kind)==="mixin"}let js=0;function Nh({onSend:n,onStop:e,isGenerating:t,editorRef:o,hideStatusStack:r,modelControl:s}){const l=a.useRef(null),c=o??l,u=a.useRef(null),p=a.useRef(null),d=a.useRef(null),{text:m}=Th(),[f,y]=a.useState(""),[b,x]=a.useState([]),[C,S]=a.useState(!1),[k,_]=a.useState(null),[v,j]=a.useState(null);a.useEffect(()=>{const $=u.current;if(!$)return;const V=new ResizeObserver(q=>{var oe,ee,se;const R=((se=(ee=(oe=q[0])==null?void 0:oe.borderBoxSize)==null?void 0:ee[0])==null?void 0:se.blockSize)??$.offsetHeight;document.documentElement.style.setProperty("--composer-measured-height",`${R}px`)});return V.observe($),()=>V.disconnect()},[]);const w=a.useCallback($=>{const q=[];for(const R of Array.from($)){const oe=`att-${++js}`,ee=R.type.startsWith("image/")&&R.type!=="image/svg+xml",se=R.size>52428800;if(ee&&!se){const te=new FileReader;te.onload=Fe=>{x(U=>U.map(we=>{var nt;return we.id===oe?{...we,preview:(nt=Fe.target)==null?void 0:nt.result,status:"ready"}:we}))},te.readAsDataURL(R)}else if(!ee&&!se){const te=new FileReader;te.onload=async Fe=>{var U;try{const we=(U=Fe.target)==null?void 0:U.result,nt=await Md(R.name,we);x(Cn=>Cn.map(He=>He.id===oe?{...He,path:nt,status:"ready",errorMsg:void 0}:He))}catch(we){const nt=we instanceof Error?we.message:"upload failed";x(Cn=>Cn.map(He=>He.id===oe?{...He,status:"error",errorMsg:nt}:He))}},te.onerror=()=>{x(Fe=>Fe.map(U=>U.id===oe?{...U,status:"error",errorMsg:"read failed"}:U))},te.readAsDataURL(R)}q.push({id:oe,name:R.name,size:R.size,type:ee?"image":"file",status:se?"error":"uploading",errorMsg:se?"File too large (max 50 MB)":void 0,path:R.path||R.name})}x(R=>[...R,...q])},[]),E=a.useCallback($=>{for(const V of $){const q=`att-${++js}`,R=V.split(/[\\/]/).pop()||V,oe=/\.(png|jpe?g|gif|webp|bmp|avif)$/i.test(R);x(ee=>[...ee,{id:q,name:R,size:0,type:oe?"image":"file",status:"uploading",path:V}]),Ld(V,oe).then(ee=>{x(se=>se.map(te=>te.id!==q?te:ee?oe&&ee.preview?{...te,type:"image",preview:ee.preview,size:ee.size,status:"ready"}:{...te,type:"file",size:ee.size,status:"ready"}:{...te,status:"error",errorMsg:"read failed"}))})}},[]),O=a.useCallback(()=>{var Fe;const $=f.trim();if(!$&&b.length===0)return;const V=b.filter(U=>U.type==="image"&&U.status==="ready"),q=b.filter(U=>U.type==="image"&&U.status==="uploading"),R=b.filter(U=>U.type==="file"&&U.status==="uploading"),oe=b.filter(U=>U.status==="error");if(q.length>0||R.length>0||oe.length>0)return;const ee={},se=b.filter(U=>U.type==="file");se.length>0&&(ee.files=se.map(U=>({name:U.name,path:U.path||U.name,size:U.size})));let te=$;if(V.length>0)if(Rh()){const U=V.map(we=>we.path&&we.path!==we.name?`[图片: ${we.path}]`:null).filter(Boolean).join(` -`);U&&(te=te?`${te} - -${U}`:U)}else ee.images=V.map(U=>({name:U.name,path:U.path||U.name,base64:U.preview}));n(te||"",Object.keys(ee).length>0?ee:void 0),(Fe=c.current)==null||Fe.clear(),y(""),x([])},[f,b,n]),D=a.useCallback($=>{$.key==="Enter"&&!$.shiftKey&&($.preventDefault(),O())},[O]),P=a.useCallback($=>{y($)},[]),N=a.useCallback($=>{_($)},[]),L=a.useCallback(()=>{_(null)},[]),B=a.useCallback(($,V)=>{var q,R;(q=c.current)==null||q.setSkillChip($,V),(R=c.current)==null||R.focus(),_(null)},[]),Q=a.useCallback($=>{j($)},[]),z=a.useCallback(()=>{j(null)},[]),M=a.useCallback(($,V)=>{var oe,ee,se,te;const q=((oe=c.current)==null?void 0:oe.getText())||"",R=q.lastIndexOf("@");R>=0&&((ee=c.current)==null||ee.setText(q.slice(0,R))),(se=c.current)==null||se.insertChip($,V),(te=c.current)==null||te.focus(),j(null)},[]),Y=a.useCallback($=>{w($)},[w]),fe=a.useCallback($=>{x(V=>V.filter(q=>q.id!==$))},[]),Se=a.useCallback(($,V)=>{var q,R;(q=c.current)==null||q.setSkillChip($,V),(R=c.current)==null||R.focus()},[]),T=a.useCallback(()=>{var $;($=p.current)==null||$.click()},[]),F=a.useCallback(()=>{var $;($=d.current)==null||$.click()},[]),J=a.useCallback(async()=>{try{const $=await navigator.clipboard.read();for(const V of $){const q=V.types.find(R=>R.startsWith("image/"));if(q){const R=await V.getType(q),oe=new File([R],"clipboard-image.png",{type:q});w([oe]);return}}}catch{}},[w]),ce=a.useCallback($=>{$.target.files&&$.target.files.length>0&&w($.target.files),$.target.value=""},[w]);a.useEffect(()=>{var R,oe,ee;const $=(ee=(oe=(R=window.__TAURI__)==null?void 0:R.webview)==null?void 0:oe.getCurrentWebview)==null?void 0:ee.call(oe);if(!$)return;let V,q=!1;return $.onDragDropEvent(se=>{const te=se.payload.type;te==="enter"||te==="over"?S(!0):te==="leave"?S(!1):te==="drop"&&(S(!1),se.payload.paths&&se.payload.paths.length>0&&E(se.payload.paths))}).then(se=>{q?se():V=se}),()=>{q=!0,V==null||V()}},[E]);const ie=f.trim().length>0||b.length>0,ke=b.some($=>$.status==="uploading"),ge=Eh(t,ie,ke);return i.jsxs("div",{ref:u,"data-slot":"composer-root",children:[C&&i.jsx("div",{"data-slot":"composer-drop-overlay",children:"Drop files here"}),i.jsxs("div",{"data-slot":"composer-surface",children:[!r&&i.jsx(Lh,{}),i.jsx(wh,{files:b,onRemove:fe}),i.jsx(u0,{visible:k!==null,query:k||"",onSelect:B,onClose:L}),i.jsx(h0,{visible:v!==null,query:v||"",onConfirm:M,onClose:z}),i.jsx("div",{"data-slot":"composer-input-row",children:i.jsx(c0,{ref:c,placeholder:m,disabled:!1,onInput:P,onKeyDown:D,onSlashTrigger:N,onSlashDismiss:L,onAtTrigger:Q,onAtDismiss:z,onPasteFiles:Y})}),i.jsxs("div",{"data-slot":"composer-toolbar",children:[i.jsxs("div",{"data-slot":"composer-toolbar-left",children:[i.jsx(f0,{onUploadFile:T,onUploadImage:F,onPasteImage:J}),i.jsx(kh,{onSelect:Se})]}),i.jsxs("div",{"data-slot":"composer-toolbar-right",children:[s===void 0?i.jsx(fh,{}):s,i.jsx(Oh,{state:ge,onSend:O,onStop:e,onQueue:O})]})]})]}),i.jsx("input",{ref:p,type:"file",multiple:!0,style:{display:"none"},onChange:ce}),i.jsx("input",{ref:d,type:"file",multiple:!0,accept:"image/*",style:{display:"none"},onChange:ce})]})}const $h="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201099.5%20105'%20width='1099.5'%20height='105'%20fill='%23000000'%3e%3cg%20transform='translate(-5.6%2088.5)'%3e%3cpath%20d='M62.70%200L20.40%200Q16.40%200%2013-2Q9.60-4%207.60-7.40Q5.60-10.80%205.60-14.80L5.60-14.80L5.60-57.20Q5.60-61.30%207.60-64.65Q9.60-68%2013-70Q16.40-72%2020.40-72L20.40-72L62.70-72Q66.80-72%2070.15-70Q73.50-68%2075.55-64.65Q77.60-61.30%2077.60-57.20L77.60-57.20L77.60-50.40L61.90-50.40L61.90-56.40L21.10-56.40L21.10-15.60L61.90-15.60L61.90-26.40L46.30-26.40L46.30-42L77.60-42L77.60-14.80Q77.60-10.80%2075.55-7.40Q73.50-4%2070.15-2Q66.80%200%2062.70%200L62.70%200ZM161.30%200L94.80%200L94.80-72L161.30-72L161.30-56.40L110.50-56.40L110.50-43.80L151.40-43.80L151.40-28.20L110.50-28.20L110.50-15.60L161.30-15.60L161.30%200ZM192.70%200L177.20%200L177.20-72L193.20-72L233.50-24L233.50-72L249.20-72L249.20%200L233.20%200L192.70-48.20L192.70%200ZM333.10%200L266.60%200L266.60-72L333.10-72L333.10-56.40L282.30-56.40L282.30-43.80L323.20-43.80L323.20-28.20L282.30-28.20L282.30-15.60L333.10-15.60L333.10%200ZM420.90%200L404.90%200L385.00-23.60L364.50-23.60L364.50%200L349.00%200L349.00-71.90L406.10-71.90Q410.20-71.90%20413.55-69.90Q416.90-67.90%20418.95-64.50Q421.00-61.10%20421.00-57.10L421.00-57.10L421.00-38.50Q421.00-34.50%20418.95-31.10Q416.90-27.70%20413.55-25.70Q410.20-23.70%20406.10-23.70L406.10-23.70L405.30-23.70L420.90-5.30L420.90%200ZM364.50-56.40L364.50-39.30L405.30-39.30L405.30-56.40L364.50-56.40ZM450.30%200L435.00%200L435.00-72L450.30-72L450.30%200ZM536.70%200L479.70%200Q475.60%200%20472.25-2Q468.90-4%20466.90-7.35Q464.90-10.70%20464.90-14.80L464.90-14.80L464.90-57.20Q464.90-61.30%20466.90-64.65Q468.90-68%20472.25-70Q475.60-72%20479.70-72L479.70-72L536.70-72L536.70-56.40L483.70-56.40Q482.10-56.40%20481.25-55.60Q480.40-54.80%20480.40-53.10L480.40-53.10L480.40-18.90Q480.40-17.30%20481.25-16.45Q482.10-15.60%20483.70-15.60L483.70-15.60L536.70-15.60L536.70%200ZM607%200L591.50%200L591.50-57.20Q591.50-61.30%20593.50-64.65Q595.50-68%20598.90-70Q602.30-72%20606.30-72L606.30-72L648.60-72Q652.70-72%20656.05-70Q659.40-68%20661.45-64.65Q663.50-61.30%20663.50-57.20L663.50-57.20L663.50%200L647.80%200L647.80-23.20L607-23.20L607%200ZM607-56.40L607-38.80L647.80-38.80L647.80-56.40L607-56.40ZM738.00%200L695.70%200Q691.70%200%20688.30-2Q684.90-4%20682.90-7.40Q680.90-10.80%20680.90-14.80L680.90-14.80L680.90-57.20Q680.90-61.30%20682.90-64.65Q684.90-68%20688.30-70Q691.70-72%20695.70-72L695.70-72L738.00-72Q742.10-72%20745.45-70Q748.80-68%20750.85-64.65Q752.90-61.30%20752.90-57.20L752.90-57.20L752.90-50.40L737.20-50.40L737.20-56.40L696.40-56.40L696.40-15.60L737.20-15.60L737.20-26.40L721.60-26.40L721.60-42L752.90-42L752.90-14.80Q752.90-10.80%20750.85-7.40Q748.80-4%20745.45-2Q742.10%200%20738.00%200L738.00%200ZM836.60%200L770.10%200L770.10-72L836.60-72L836.60-56.40L785.80-56.40L785.80-43.80L826.70-43.80L826.70-28.20L785.80-28.20L785.80-15.60L836.60-15.60L836.60%200ZM868.00%200L852.50%200L852.50-72L868.50-72L908.80-24L908.80-72L924.50-72L924.50%200L908.50%200L868.00-48.20L868.00%200ZM981.90%200L966.30%200L966.30-56.40L938.10-56.40L938.10-72L1010.10-72L1010.10-56.40L981.90-56.40L981.90%200Z'%3e%3c/path%3e%3crect%20x='1050.1'%20y='-88.5'%20width='55'%20height='105'%3e%3c/rect%3e%3c/g%3e%3c/svg%3e",Dh="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201099.5%20105'%20width='1099.5'%20height='105'%20fill='%23FFFFFF'%3e%3cg%20transform='translate(-5.6%2088.5)'%3e%3cpath%20d='M62.70%200L20.40%200Q16.40%200%2013-2Q9.60-4%207.60-7.40Q5.60-10.80%205.60-14.80L5.60-14.80L5.60-57.20Q5.60-61.30%207.60-64.65Q9.60-68%2013-70Q16.40-72%2020.40-72L20.40-72L62.70-72Q66.80-72%2070.15-70Q73.50-68%2075.55-64.65Q77.60-61.30%2077.60-57.20L77.60-57.20L77.60-50.40L61.90-50.40L61.90-56.40L21.10-56.40L21.10-15.60L61.90-15.60L61.90-26.40L46.30-26.40L46.30-42L77.60-42L77.60-14.80Q77.60-10.80%2075.55-7.40Q73.50-4%2070.15-2Q66.80%200%2062.70%200L62.70%200ZM161.30%200L94.80%200L94.80-72L161.30-72L161.30-56.40L110.50-56.40L110.50-43.80L151.40-43.80L151.40-28.20L110.50-28.20L110.50-15.60L161.30-15.60L161.30%200ZM192.70%200L177.20%200L177.20-72L193.20-72L233.50-24L233.50-72L249.20-72L249.20%200L233.20%200L192.70-48.20L192.70%200ZM333.10%200L266.60%200L266.60-72L333.10-72L333.10-56.40L282.30-56.40L282.30-43.80L323.20-43.80L323.20-28.20L282.30-28.20L282.30-15.60L333.10-15.60L333.10%200ZM420.90%200L404.90%200L385.00-23.60L364.50-23.60L364.50%200L349.00%200L349.00-71.90L406.10-71.90Q410.20-71.90%20413.55-69.90Q416.90-67.90%20418.95-64.50Q421.00-61.10%20421.00-57.10L421.00-57.10L421.00-38.50Q421.00-34.50%20418.95-31.10Q416.90-27.70%20413.55-25.70Q410.20-23.70%20406.10-23.70L406.10-23.70L405.30-23.70L420.90-5.30L420.90%200ZM364.50-56.40L364.50-39.30L405.30-39.30L405.30-56.40L364.50-56.40ZM450.30%200L435.00%200L435.00-72L450.30-72L450.30%200ZM536.70%200L479.70%200Q475.60%200%20472.25-2Q468.90-4%20466.90-7.35Q464.90-10.70%20464.90-14.80L464.90-14.80L464.90-57.20Q464.90-61.30%20466.90-64.65Q468.90-68%20472.25-70Q475.60-72%20479.70-72L479.70-72L536.70-72L536.70-56.40L483.70-56.40Q482.10-56.40%20481.25-55.60Q480.40-54.80%20480.40-53.10L480.40-53.10L480.40-18.90Q480.40-17.30%20481.25-16.45Q482.10-15.60%20483.70-15.60L483.70-15.60L536.70-15.60L536.70%200ZM607%200L591.50%200L591.50-57.20Q591.50-61.30%20593.50-64.65Q595.50-68%20598.90-70Q602.30-72%20606.30-72L606.30-72L648.60-72Q652.70-72%20656.05-70Q659.40-68%20661.45-64.65Q663.50-61.30%20663.50-57.20L663.50-57.20L663.50%200L647.80%200L647.80-23.20L607-23.20L607%200ZM607-56.40L607-38.80L647.80-38.80L647.80-56.40L607-56.40ZM738.00%200L695.70%200Q691.70%200%20688.30-2Q684.90-4%20682.90-7.40Q680.90-10.80%20680.90-14.80L680.90-14.80L680.90-57.20Q680.90-61.30%20682.90-64.65Q684.90-68%20688.30-70Q691.70-72%20695.70-72L695.70-72L738.00-72Q742.10-72%20745.45-70Q748.80-68%20750.85-64.65Q752.90-61.30%20752.90-57.20L752.90-57.20L752.90-50.40L737.20-50.40L737.20-56.40L696.40-56.40L696.40-15.60L737.20-15.60L737.20-26.40L721.60-26.40L721.60-42L752.90-42L752.90-14.80Q752.90-10.80%20750.85-7.40Q748.80-4%20745.45-2Q742.10%200%20738.00%200L738.00%200ZM836.60%200L770.10%200L770.10-72L836.60-72L836.60-56.40L785.80-56.40L785.80-43.80L826.70-43.80L826.70-28.20L785.80-28.20L785.80-15.60L836.60-15.60L836.60%200ZM868.00%200L852.50%200L852.50-72L868.50-72L908.80-24L908.80-72L924.50-72L924.50%200L908.50%200L868.00-48.20L868.00%200ZM981.90%200L966.30%200L966.30-56.40L938.10-56.40L938.10-72L1010.10-72L1010.10-56.40L981.90-56.40L981.90%200Z'%3e%3c/path%3e%3crect%20x='1050.1'%20y='-88.5'%20width='55'%20height='105'%3e%3c/rect%3e%3c/g%3e%3c/svg%3e",Ah={plan:i.jsx(Ka,{size:"small"}),goal:i.jsx(el,{size:"small"}),autonomous:i.jsx(ll,{size:"small"}),hive:i.jsx(fl,{size:"small"}),review:i.jsx(yl,{size:"small"}),findwork:i.jsx(ni,{size:"small"})};function zh({onPresetClick:n}){const{t:e}=he();return i.jsxs("div",{"data-slot":"empty-state-root",children:[i.jsxs("div",{"data-slot":"empty-state-wordmark",children:[i.jsx("img",{src:$h,alt:"GenericAgent",className:"empty-state-wordmark-light"}),i.jsx("img",{src:Dh,alt:"",className:"empty-state-wordmark-dark","aria-hidden":"true"})]}),i.jsx("div",{"data-slot":"empty-state-presets",children:Xe.map(t=>i.jsxs("button",{type:"button",className:"empty-state-preset-btn",onClick:()=>n(t),children:[i.jsx("span",{className:"empty-state-preset-icon",children:Ah[t.id]}),i.jsx("span",{children:e(`preset.${t.id}.t`)||t.title})]},t.id))})]})}function Fh(){const{t:n}=he(),e=Wo(),t=G(m=>m.status),o=G(m=>m.messages),r=G(m=>m.sendMessage),s=G(m=>m.cancel),l=a.useRef(null),c=a.useCallback((m,f)=>{(m||f)&&r(m,f)},[r]),u=a.useCallback(m=>{var f,y;(f=l.current)==null||f.setSkillChip(m.id,m.prompt),(y=l.current)==null||y.focus()},[]),p=o.length===0&&t==="idle",d=p&&e!=="ready";return i.jsxs("div",{className:"chat-view-root","data-empty":p||void 0,children:[d?i.jsx("div",{className:"ga-chat-offline",children:i.jsx("span",{children:n(e==="connecting"?"bridge.connecting":"bridge.offline")})}):p?i.jsx(zh,{onPresetClick:u}):i.jsx(e0,{}),i.jsx(Nh,{onSend:c,onStop:s,isGenerating:t==="running",editorRef:l})]})}const Bh=a.lazy(async()=>({default:(await Zt(()=>import("./ServicesPage-9DKyWUIu.js"),__vite__mapDeps([11,1,2,12,13,14,5,6,15,16,7,8,17]))).ServicesPage})),Uh=a.lazy(async()=>({default:(await Zt(()=>import("./TokenPage-8X0HZ3hU.js"),__vite__mapDeps([18,1,2,12,13,14,5,6,15,19,20,21,7,8,22]))).TokenPage})),Vh=a.lazy(async()=>({default:(await Zt(()=>import("./CollabPage-DD4zkzQv.js"),__vite__mapDeps([23,1,2,0,3,4,5,6,7,8,9,24]))).CollabPage}));function wo({children:n}){return i.jsx(a.Suspense,{fallback:i.jsx("span",{"data-slot":"deferred-page-loading","aria-busy":"true"}),children:n})}function Es(){const n=Te(e=>e.activePage);return n==="chat"?i.jsx("div",{className:"ga-main-area ga-main-chat",children:i.jsx(Fh,{})}):n==="services"?i.jsx("div",{className:"ga-main-area ga-main-full",children:i.jsx(wo,{children:i.jsx(Bh,{})})}):n==="token"?i.jsx("div",{className:"ga-main-area ga-main-full",children:i.jsx(wo,{children:i.jsx(Uh,{})})}):n==="collab"?i.jsx("div",{className:"ga-main-area ga-main-chat",children:i.jsx(wo,{children:i.jsx(Vh,{})})}):i.jsx("div",{className:"ga-main-area"})}function Kh(n){if(typeof n!="object"||n===null)return!1;const e=n;return typeof e.trafficLightCenterY=="number"&&Number.isFinite(e.trafficLightCenterY)&&e.trafficLightCenterY>=0&&typeof e.trafficLightRightX=="number"&&Number.isFinite(e.trafficLightRightX)&&e.trafficLightRightX>=0}function Wh(){const n=Te(l=>l.sidebarCollapsed),e=Te(l=>l.toggleSidebar),[t,o]=a.useState(null),r=a.useRef(!1);a.useEffect(()=>{function l(c){(c.metaKey||c.ctrlKey)&&c.key==="b"&&(c.preventDefault(),e())}return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[e]),a.useEffect(()=>{var f,y,b;if(!qs)return;let l=!1,c;const u=[],p=async()=>{try{const x=await Oe("get_macos_titlebar_metrics",{});if(l)return;if(!Kh(x))throw new Error("invalid macOS titlebar metrics");o(x)}catch(x){if(l)return;o(null),r.current||(r.current=!0,console.warn("Using fallback macOS titlebar geometry",x))}},d=()=>{window.clearTimeout(c),c=window.setTimeout(()=>void p(),50)};p(),window.addEventListener("resize",d);const m=(b=(y=(f=window.__TAURI__)==null?void 0:f.window)==null?void 0:y.getCurrentWindow)==null?void 0:b.call(y);for(const x of[m==null?void 0:m.onResized,m==null?void 0:m.onScaleChanged])typeof x=="function"&&Promise.resolve(x.call(m,d)).then(C=>{typeof C=="function"&&(l?C():u.push(C))}).catch(()=>{});return()=>{l=!0,window.clearTimeout(c),window.removeEventListener("resize",d),u.forEach(x=>x())}},[]);const s=t?{"--ga-titlebar-controls-top":`${t.trafficLightCenterY-14}px`,"--ga-titlebar-controls-left":`${t.trafficLightRightX+10}px`}:void 0;return i.jsx("div",{className:"ga-titlebar-controls","data-testid":"titlebar-controls","data-traffic-light-center-y":t==null?void 0:t.trafficLightCenterY,"data-traffic-light-right-x":t==null?void 0:t.trafficLightRightX,style:s,children:i.jsx("button",{type:"button",className:"ga-titlebar-btn",onClick:e,title:n?"显示侧边栏":"隐藏侧边栏","aria-label":n?"显示侧边栏":"隐藏侧边栏",children:i.jsx(Pe,{name:n?"layout-sidebar-left-off":"layout-sidebar-left",size:"16px"})})})}function Hh(){const n=a.useRef(!1),{t:e}=he();return a.useEffect(()=>{var o,r;if(n.current||(n.current=!0,document.documentElement.dataset.platform==="macos"))return;const t=(r=(o=window.__TAURI__)==null?void 0:o.core)==null?void 0:r.invoke;t&&(async()=>{try{if(!await t("shortcut_should_ask"))return;le.confirm({title:e("common.confirm"),content:e("shortcut.askConfirm"),onOk:()=>t("shortcut_decide",{create:!0}),onCancel:()=>t("shortcut_decide",{create:!1})})}catch{}})()},[e]),null}function Zh(){return a.useCallback(n=>{var s,l,c,u;if(!qs||n.button!==0||n.target.closest("button, a, input, [data-no-drag]"))return;const t=n.currentTarget.getBoundingClientRect();if(n.clientY-t.top>38)return;n.preventDefault();const r=window.__TAURI__;(u=(c=(l=(s=r==null?void 0:r.window)==null?void 0:s.getCurrentWindow)==null?void 0:l.call(s))==null?void 0:c.startDragging)==null||u.call(c)},[])}function qh(){const n=Te(t=>t.sidebarCollapsed),e=Zh();return i.jsxs("div",{className:"ga-app-layout",onMouseDown:e,children:[ha&&i.jsx(xa,{}),i.jsx(Wh,{}),i.jsx("div",{className:"ga-app-body",children:n?i.jsx("div",{className:"ga-body-collapsed",children:i.jsx(Es,{})}):i.jsxs(bn,{direction:"horizontal",children:[i.jsx(Ot,{defaultSize:"260px",min:"200px",max:"340px",className:"ga-sidebar-item",children:i.jsx(pu,{})}),i.jsx(yn,{}),i.jsx(Ot,{className:"ga-main-item",children:i.jsx(Es,{})})]})}),i.jsx(Hh,{})]})}const Os=4;let Gh=0;const Ps=ft((n,e)=>({items:[],notify(t){const o=`notif-${++Gh}-${Date.now()}`,r={...t,id:o,createdAt:Date.now()};n(s=>{const l=s.items.find(u=>u.message===r.message&&u.kind===r.kind);if(l)return{items:s.items.map(u=>u.id===l.id?{...r,id:l.id}:u)};const c=[...s.items,r];return{items:c.length>Os?c.slice(-Os):c}}),t.kind==="info"||t.kind==="success"?setTimeout(()=>e().dismiss(o),5e3):(t.kind==="error"||t.kind==="warning")&&setTimeout(()=>e().dismiss(o),8e3)},dismiss(t){n(o=>({items:o.items.filter(r=>r.id!==t)}))},clear(){n({items:[]})}}));function _s({item:n,onDismiss:e}){const t=n.kind==="error"||n.kind==="warning";return i.jsxs("div",{className:`ga-notification ga-notification--${n.kind}`,role:"alert",children:[i.jsxs("div",{className:"ga-notification-body",children:[n.title&&i.jsx("div",{className:"ga-notification-title",children:n.title}),i.jsx("div",{className:"ga-notification-message",children:n.message}),n.action&&i.jsx("button",{className:"ga-notification-action",onClick:n.action.onClick,children:n.action.label})]}),t&&i.jsx("button",{className:"ga-notification-dismiss",onClick:e,"aria-label":"close",children:i.jsx(ln,{size:"small"})})]})}function Qh(){const n=Ps(s=>s.items),e=Ps(s=>s.dismiss),t=a.useRef(null);if(a.useEffect(()=>{if(!t.current){const s=document.createElement("div");s.id="ga-notification-portal",document.body.appendChild(s),t.current=s}return()=>{t.current&&(document.body.removeChild(t.current),t.current=null)}},[]),!t.current||n.length===0)return null;const o=n.filter(s=>s.kind==="error"||s.kind==="warning"),r=n.filter(s=>s.kind==="info"||s.kind==="success");return ma.createPortal(i.jsxs(i.Fragment,{children:[o.length>0&&i.jsx("div",{className:"ga-notification-stack ga-notification-stack--top",children:o.map(s=>i.jsx(_s,{item:s,onDismiss:()=>e(s.id)},s.id))}),r.length>0&&i.jsx("div",{className:"ga-notification-stack ga-notification-stack--bottom",children:r.map(s=>i.jsx(_s,{item:s,onDismiss:()=>e(s.id)},s.id))})]}),t.current)}function yt({children:n,tip:e,tipLabel:t}){return i.jsxs("div",{className:"ga-set-sec-heading",children:[i.jsx("h2",{className:"ga-set-sec-t",children:n}),e&&i.jsx(Ae,{content:e,position:"topLeft",children:i.jsx("span",{className:"ga-settings-section-help",tabIndex:0,"aria-label":[t,e].filter(Boolean).join(":"),children:i.jsx(il,{size:"small","aria-hidden":"true"})})})]})}function Yh(){const{t:n}=he(),e=Z(o=>o.appearance),t=Z(o=>o.setAppearance);return i.jsxs("div",{className:"ga-set-block",children:[i.jsx(yt,{children:n("set.appearance")}),i.jsxs(Ke,{type:"button",value:e,onChange:o=>t(o.target.value),children:[i.jsx(Le,{value:"light",children:n("appearance.light")}),i.jsx(Le,{value:"dark",children:n("appearance.dark")})]})]})}function Xh(){const{t:n}=he(),e=Z(o=>o.lang),t=Z(o=>o.setLang);return i.jsxs("div",{className:"ga-set-block",children:[i.jsx(yt,{children:n("set.lang")}),i.jsxs(Ke,{type:"button",value:e,onChange:o=>t(o.target.value),children:[i.jsx(Le,{value:"zh",children:n("lang.zh")}),i.jsx(Le,{value:"en",children:n("lang.en")})]})]})}function Ms({model:n,size:e=16}){const t=wn(n),o=t?Ei(t):void 0;if(!(o!=null&&o.Component))return null;const r=o.Component;return i.jsx(r,{size:e})}function rn(n){return(n.name||"").trim()||n.model||"(unnamed)"}function Ls(n){const e=(n.model||"").trim();if(e)return rn(n)===e?void 0:e}function Jh({onAdd:n,onEdit:e}){const{t}=he(),o=Z(v=>v.modelProfiles),r=Z(v=>v.defaultModelNo),s=Z(v=>v.setDefaultModel),l=Z(v=>v.setModelProfiles),[c,u]=a.useState(!0),p=o.find(v=>v.kind==="mixin"),d=o.filter(v=>v.kind!=="mixin"),m=p?o.indexOf(p):-1,f=a.useCallback(v=>{s(v)},[s]),y=a.useCallback((v,j)=>{le.confirm({title:t("common.delete"),content:`${t("common.delete")} "${j}"?`,okText:t("common.delete"),cancelText:t("common.cancel"),okType:"danger",onOk:async()=>{try{const w=await xd(v);l(w),X.success({content:t("common.delete")})}catch{X.error({content:t("err.modelDelete")})}}})},[l,t]),b=a.useCallback(v=>{e(v)},[e]),x=a.useCallback(()=>{n()},[n]),C=a.useCallback(async v=>{try{const j=await wd(v);l(j)}catch{X.error({content:t("err.mixinFailed")})}},[l,t]),S=a.useCallback(async v=>{try{const j=await Cd(v);l(j)}catch{X.error({content:t("err.mixinFailed")})}},[l,t]),k=a.useCallback(async v=>{if(!(p!=null&&p.members))return;const j=[...p.members],w=j.indexOf(v);if(!(w<=0)){[j[w-1],j[w]]=[j[w],j[w-1]];try{const E=await $r(j);l(E)}catch{X.error({content:t("err.mixinFailed")})}}},[p,l,t]),_=a.useCallback(async v=>{if(!(p!=null&&p.members))return;const j=[...p.members],w=j.indexOf(v);if(!(w<0||w>=j.length-1)){[j[w],j[w+1]]=[j[w+1],j[w]];try{const E=await $r(j);l(E)}catch{X.error({content:t("err.mixinFailed")})}}},[p,l,t]);return i.jsxs("div",{className:"ga-set-block",children:[i.jsx(yt,{tip:t("model.configurationTip"),tipLabel:t("model.configurationHelp"),children:t("set.model")}),p&&i.jsxs("div",{className:"ga-mixin-group",children:[i.jsxs("div",{className:`ga-mixin-head${m===r?" ga-mixin-head--active":""}`,onClick:()=>f(m),children:[i.jsx("button",{type:"button",className:"ga-mixin-toggle",onClick:v=>{v.stopPropagation(),u(j=>!j)},"aria-label":"toggle",children:i.jsx(em,{expanded:c})}),i.jsx(Ae,{content:t("model.aggregationTip"),position:"topLeft",children:i.jsx("span",{className:"ga-mixin-label",tabIndex:0,"aria-label":`${t("model.aggregation")}:${t("model.aggregationTip")}`,children:t("model.aggregation")})}),m===r&&i.jsx(ze,{color:"green",size:"small",children:t("set.current")})]}),c&&i.jsxs("div",{className:"ga-mixin-body",children:[!p.members||p.members.length===0?i.jsx("div",{className:"ga-mixin-empty",children:t("model.emptyMixin")}):i.jsx("div",{className:"ga-mixin-members",children:p.members.map((v,j)=>{const w=d.find(D=>D.name===v),E=w?rn(w):v,O=w?Ls(w):void 0;return i.jsxs("div",{className:"ga-mixin-member",children:[i.jsx("span",{className:"ga-mixin-member-rank",children:j+1}),i.jsx(Ms,{model:(w==null?void 0:w.model)||"",size:14}),i.jsx("span",{className:"ga-mixin-member-name",title:O,children:E}),i.jsxs("span",{className:"ga-mixin-member-actions",children:[i.jsx("button",{type:"button",className:"ga-icon-btn",disabled:j===0,onClick:()=>k(v),title:"↑",children:"↑"}),i.jsx("button",{type:"button",className:"ga-icon-btn",disabled:j===p.members.length-1,onClick:()=>_(v),title:"↓",children:"↓"}),i.jsx("button",{type:"button",className:"ga-icon-btn ga-icon-btn--danger",onClick:()=>w&&S(w.id),title:t("model.removeFromMixin"),children:"×"})]})]},v)})}),i.jsx("div",{className:"ga-mixin-hint",children:t("model.aggregationDesc")})]})]}),i.jsxs("div",{className:"ga-model-list",children:[d.length===0&&i.jsx("div",{className:"ga-model-empty",children:t("set.noModels")}),d.map(v=>{const j=o.indexOf(v),w=j===r;return i.jsxs("div",{className:`ga-model-item${w?" ga-model-item--selected":""}`,onClick:()=>f(j),children:[i.jsxs("div",{className:"ga-model-row-content",children:[i.jsx(Ms,{model:v.model||""}),i.jsx("span",{className:"ga-model-name",title:Ls(v),children:rn(v)}),w&&i.jsx(ze,{color:"green",size:"small",children:t("set.current")}),v.inMixin&&i.jsx(ze,{size:"small",children:t("model.inMixin")})]}),i.jsxs("span",{className:"ga-model-actions",children:[p&&!v.inMixin&&i.jsx(de,{size:"small",type:"tertiary",theme:"borderless",onClick:E=>{E.stopPropagation(),C(v.id)},children:"+"}),i.jsx(de,{size:"small",type:"tertiary",theme:"borderless",onClick:E=>{E.stopPropagation(),b(v.id)},children:t("common.edit")}),i.jsx(de,{size:"small",type:"danger",theme:"borderless",onClick:E=>{E.stopPropagation(),y(v.id,rn(v))},children:t("common.delete")})]})]},v.id)})]}),i.jsxs(de,{type:"tertiary",onClick:x,className:"ga-add-model-btn",children:["+ ",t("set.addModel")]})]})}function em({expanded:n}){return i.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"currentColor",style:{transform:n?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.15s"},children:i.jsx("path",{d:"M4.5 2.5L8 6L4.5 9.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})})}class Pi extends Error{constructor(t,o){super(t);bt(this,"code");bt(this,"runningSessions");bt(this,"runningExtras");this.name="DataBackupError",this.code=typeof o.code=="string"?o.code:null,this.runningSessions=Array.isArray(o.runningSessions)?o.runningSessions.filter(r=>typeof r=="string"):[],this.runningExtras=Array.isArray(o.runningExtras)?o.runningExtras.filter(r=>typeof r=="string"):[]}}async function Ho(n,e){const t=await fetch(`${ne}${n}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),o=await t.json().catch(()=>({}));if(!t.ok){const r=typeof(o==null?void 0:o.error)=="string"?o.error:`HTTP ${t.status}`;throw new Pi(r,o)}return o}async function tm(){const n=new AbortController,e=globalThis.setTimeout(()=>n.abort(),3e3);try{const t=await fetch(`${ne}/services/capabilities`,{method:"GET",signal:n.signal});if(t.status===404)return!1;if(!t.ok)return null;const o=await t.json();return typeof o!="object"||o===null||typeof o.dataBackup!="boolean"?null:o.dataBackup}catch{return null}finally{globalThis.clearTimeout(e)}}function nm(n,e=new Date){const t={year:e.getFullYear(),month:String(e.getMonth()+1).padStart(2,"0"),day:String(e.getDate()).padStart(2,"0"),hour:String(e.getHours()).padStart(2,"0"),minute:String(e.getMinutes()).padStart(2,"0"),second:String(e.getSeconds()).padStart(2,"0")},o=`${t.year}-${t.month}-${t.day}-${t.hour}${t.minute}${t.second}`;return`GenericAgent-${n==="zh"?"数据备份":"data-backup"}-${o}.zip`}function om(n){return Ho("/memory/import/inspect",{sourcePath:n})}function rm(n){return Ho("/memory/import",{sourcePath:n})}function sm(n,e){return Ho("/memory/export",{destinationPath:n,sourceMode:e})}const Is=ft((n,e)=>(Ve("services.snapshot",t=>{const o=t;o.services&&n({services:o.services,loading:!1,error:null})}),Ve("service.changed",t=>{const o=t;o.service&&n(r=>({services:r.services.map(s=>s.id===o.service.id?o.service:s)}))}),{services:[],loading:!0,error:null,mykeyContent:"",mykeyLoading:!1,async fetchServices(){e().services.length===0&&n({loading:!0}),n({error:null});try{const t=await Gd();n({services:t,loading:!1})}catch(t){n({loading:!1,error:t.message})}},async startService(t){try{const{ok:o,service:r}=await Qd(t);return r&&n(s=>({services:s.services.map(l=>l.id===r.id?r:l)})),o}catch{return!1}},async stopService(t){try{const{ok:o,service:r}=await Yd(t);return r&&n(s=>({services:s.services.map(l=>l.id===r.id?r:l)})),o}catch{return!1}},async exitBridge(){try{return await eu()}catch{return!1}},async restartService(t){return await e().stopService(t)?(await new Promise(r=>setTimeout(r,500)),e().startService(t)):!1},async fetchLogs(t,o=200){try{return await yi(t,o)}catch{return[]}},async fetchMykey(){n({mykeyLoading:!0});try{const t=await Xd();n({mykeyContent:t,mykeyLoading:!1})}catch{n({mykeyLoading:!1})}},async saveMykey(t){try{const o=await Jd(t);return o&&n({mykeyContent:t}),o}catch{return!1}}}));function _i(){return typeof window.__TAURI__<"u"}async function Lm(){var e,t;const n=(t=(e=window.__TAURI__)==null?void 0:e.core)==null?void 0:t.invoke;if(!n)throw new Error("Not in Tauri environment");await n("start_bridge")}const Co=_i();function en({label:n,tip:e,btnText:t,onClick:o,disabled:r,testId:s}){return i.jsxs("div",{className:"ga-data-row","data-testid":s,children:[i.jsx("div",{className:"ga-data-row-info",children:i.jsx(Ae,{content:e,children:i.jsx("span",{className:"ga-data-row-label",tabIndex:0,children:n})})}),i.jsx(de,{className:"ga-data-action",size:"small",type:"tertiary",onClick:o,disabled:r,children:t})]})}function im(n,e){if(!n)return"—";const t=new Date(n);return Number.isNaN(t.getTime())?"—":new Intl.DateTimeFormat(e==="zh"?"zh-CN":"en-US",{dateStyle:"medium",timeStyle:"short"}).format(t)}function am(){const{lang:n,t:e}=he(),[t,o]=a.useState(!1),[r,s]=a.useState(!1),[l,c]=a.useState(!1),[u,p]=a.useState(null),[d,m]=a.useState(null),[f,y]=a.useState(null),b=G(P=>{const N=new Set(P.runningSessions);return P.sessions.forEach(L=>{L.status==="running"&&N.add(L.id)}),P.status==="running"&&N.add(P.activeSessionId||"__active_session__"),N.size}),C=Is(P=>P.services).filter(P=>P.managed&&P.running),S=b>0||C.length>0;a.useEffect(()=>{if(!Co)return;let P=!0;return tm().then(N=>{P&&y(N)}),Is.getState().fetchServices(),()=>{P=!1}},[]);const k=a.useCallback(()=>e("data.maintenanceBlocked",{sessions:b,services:C.length}),[C.length,b,e]),_=a.useCallback((P,N)=>{if(P instanceof Pi&&P.code==="maintenance_conflict"){X.error({content:e("data.maintenanceBlockedServer",{sessions:P.runningSessions.length,services:P.runningExtras.length})});return}X.error({content:e(N)})},[e]),v=a.useCallback(()=>{const P=document.createElement("input");P.type="file",P.accept=".py,text/plain",P.onchange=async()=>{var N;try{const L=(N=P.files)==null?void 0:N[0];if(!L)return;const B=await L.text();await kd(B),await Z.getState().loadFromBridge(),X.success({content:e("data.importKeySuccess")})}catch(L){console.error("[DataSection] import key config failed:",L),X.error({content:e("data.importKeyError")})}},P.click()},[e]),j=a.useCallback(async()=>{try{const P=await Sd();if(Co)try{await Oe("export_mykey",{content:P})&&X.success({content:e("data.exportKeySuccess")})}catch{Ts(P,"mykey.py"),X.success({content:e("data.exportKeySuccess")})}else Ts(P,"mykey.py"),X.success({content:e("data.exportKeySuccess")})}catch(P){console.error("[DataSection] export key config failed:",P),X.error({content:e("data.exportKeyError")})}},[e]),w=a.useCallback((P,N)=>{const L=N.sourceType==="legacyFolder"?e("data.importLegacySource"):N.sourceMode==="localRepository"?e("connection.local"):e("connection.included"),{memory:B,responses:Q,sessions:z}=N.content;le.confirm({title:e("data.importConfirmTitle"),content:i.jsxs("div",{className:"ga-data-confirm-summary",children:[N.sourceType==="backupZip"&&i.jsxs("div",{children:[i.jsx("span",{children:e("data.importExportedAt")}),i.jsx("strong",{children:im(N.exportedAt,n)})]}),i.jsxs("div",{children:[i.jsx("span",{children:e("data.importSource")}),i.jsx("strong",{children:L})]}),i.jsxs("div",{children:[i.jsx("span",{children:e("data.importContents")}),i.jsx("strong",{children:e("data.importContentsValue",{memory:B,sessions:z,responses:Q})})]}),i.jsx("p",{children:e("data.importMergeNotice")})]}),okText:e("data.importConfirmBtn"),cancelText:e("common.cancel"),onOk:async()=>{o(!0);try{const M=await rm(P);X.success({content:e("data.importDataSuccess",{memory:M.memoryCopied||0,responses:M.responsesCopied||0,sessions:M.sessionsAdded||0})}),await G.getState().loadSessions(),m(M)}catch(M){console.error("[DataSection] import data failed:",M),_(M,"data.importDataError")}finally{o(!1)}}})},[n,_,e]),E=a.useCallback(async P=>{if(c(!1),S){X.warning({content:k()});return}try{const N=P==="backup"?await Oe("pick_data_backup_file",{title:e("data.importBackupPickerTitle")}):await Oe("pick_directory",{title:e("data.importFolderPickerTitle")});if(!N)return;o(!0);const L=await om(N);o(!1),w(N,L)}catch(N){o(!1),console.error("[DataSection] inspect import source failed:",N),X.error({content:e("data.importDataInvalid")})}},[w,S,k,e]),O=a.useCallback(()=>{if(S){X.warning({content:k()});return}le.confirm({title:e("data.exportDataConfirmTitle"),content:e("data.exportDataConfirmMessage"),okText:e("data.exportDataConfirmBtn"),cancelText:e("common.cancel"),onOk:async()=>{try{const P=await Oe("pick_data_export_path",{defaultName:nm(n),title:e("data.exportDataPickerTitle")});if(!P)return;s(!0);const N=await Oe("get_ga_source",{}),L=await sm(P,N?"localRepository":"included");window.setTimeout(()=>p(L.path),0)}catch(P){console.error("[DataSection] export data failed:",P),_(P,"data.exportDataError")}finally{s(!1)}}})},[n,S,k,_,e]),D=a.useCallback(async()=>{if(u)try{await Oe("reveal_in_file_manager",{path:u}),p(null)}catch(P){console.error("[DataSection] reveal export failed:",P),X.error({content:e("data.exportDataRevealError")})}},[u,e]);return i.jsxs("div",{className:"ga-set-block","data-testid":"data-maintenance-section",children:[i.jsx(yt,{tip:e("data.sectionTip"),tipLabel:e("data.sectionHelp"),children:e("data.title")}),i.jsx(en,{label:e("data.importKey"),tip:e("data.importKeyTip"),btnText:e("data.importKeyBtn"),onClick:v}),i.jsx(en,{label:e("data.exportKey"),tip:e("data.exportKeyTip"),btnText:e("data.exportKeyBtn"),onClick:j}),Co&&f!==!1&&i.jsxs(i.Fragment,{children:[i.jsx(en,{testId:"data-import-row",label:e("data.importData"),tip:e("data.importDataTip"),btnText:e(t?"data.importing":"data.importDataBtn"),onClick:()=>c(!0),disabled:t||r||S}),i.jsx(en,{testId:"data-export-row",label:e("data.exportData"),tip:e("data.exportDataTip"),btnText:e(r?"data.exporting":"data.exportDataBtn"),onClick:O,disabled:t||r||S}),S&&i.jsx("p",{className:"ga-data-maintenance-note",role:"status",children:k()}),i.jsx("p",{className:"ga-data-maintenance-note",children:e("data.externalProcessWarning")})]}),i.jsx(le,{visible:l,title:e("data.importSourceTitle"),width:520,onCancel:()=>c(!1),footer:i.jsxs("div",{className:"ga-data-source-actions",children:[i.jsx(de,{onClick:()=>c(!1),children:e("common.cancel")}),i.jsx(de,{disabled:S,onClick:()=>E("folder"),children:e("data.importFolderBtn")}),i.jsx(de,{disabled:S,type:"primary",onClick:()=>E("backup"),children:e("data.importBackupBtn")})]}),children:i.jsx("p",{className:"ga-data-source-description",children:e("data.importSourceDescription")})}),i.jsx(le,{visible:!!d,title:e("data.importResultTitle"),width:620,onCancel:()=>m(null),footer:i.jsx(de,{type:"primary",onClick:()=>m(null),children:e("common.done")}),children:d&&i.jsxs("div",{className:"ga-data-confirm-summary",children:[i.jsxs("div",{children:[i.jsx("span",{children:e("data.importResultMemory")}),i.jsx("strong",{children:e("data.importResultMemoryValue",{count:d.memoryCopied||0})})]}),i.jsxs("div",{children:[i.jsx("span",{children:e("data.importResultResponses")}),i.jsx("strong",{children:e("data.importResultAddSkipValue",{added:d.responsesCopied||0,skipped:d.responsesSkipped||0})})]}),i.jsxs("div",{children:[i.jsx("span",{children:e("data.importResultSessions")}),i.jsx("strong",{children:e("data.importResultAddSkipValue",{added:d.sessionsAdded||0,skipped:d.sessionsSkipped||0})})]}),i.jsxs("div",{children:[i.jsx("span",{children:e("data.importResultBackup")}),d.backupDir?i.jsx("code",{className:"ga-data-export-path ga-data-export-path--inline",children:d.backupDir}):i.jsx("strong",{children:e("data.importResultNoBackup")})]}),i.jsx("p",{children:d.backupDir?e("data.importRestoreHint"):e("data.importNoRestoreNeeded")})]})}),i.jsxs(le,{visible:!!u,title:e("data.exportDataSuccessTitle"),width:560,onCancel:()=>p(null),footer:i.jsxs("div",{className:"ga-data-source-actions",children:[i.jsx(de,{onClick:()=>p(null),children:e("common.done")}),i.jsx(de,{type:"primary",onClick:D,children:e("data.exportDataReveal")})]}),children:[i.jsx("p",{children:e("data.exportDataSuccessMessage")}),u&&i.jsx("code",{className:"ga-data-export-path",children:u})]})]})}function Ts(n,e){const t=new Blob([n],{type:"text/plain"}),o=URL.createObjectURL(t),r=document.createElement("a");r.href=o,r.download=e,r.click(),URL.revokeObjectURL(o)}const Rs=_i();function Ns(n,e){return n.includes("agentmain.py")?e("connection.errorInvalid"):n.includes("not compatible")||n.includes("compatibility probe")?e("connection.errorIncompatible"):n.includes("20s")||n.includes("ready")?e("connection.errorTimeout"):e("connection.errorGeneric")}function lm(){const{t:n}=he(),e=Z(M=>M.visible),t=G(M=>M.runningSessions),o=Wo(),r=Te(M=>M.setPage),s=Te(M=>M.setServicesTab),[l,c]=a.useState("included"),[u,p]=a.useState(""),[d,m]=a.useState("included"),[f,y]=a.useState(""),[b,x]=a.useState(!0),[C,S]=a.useState(!1),[k,_]=a.useState(!1),v=a.useCallback(async()=>{if(Rs){x(!0);try{const M=await Oe("get_ga_source",{}),Y=M?"localRepository":"included";c(Y),p(M||""),m(Y),y(M||"")}catch(M){console.error("[ConnectionMode] load current mode failed:",M)}finally{x(!1)}}},[]);a.useEffect(()=>{e&&v()},[v,e]);const j=a.useCallback(async()=>{S(!0);try{const M=await Oe("pick_directory",{title:n("connection.repositoryPickerTitle")});if(!M)return;let Y,fe=!1;try{Y=await Oe("validate_ga_source",{dir:M})}catch(Se){if(!fa(Se,"validate_ga_source"))throw Se;Y=M,fe=!0}y(Y),m("localRepository"),fe||X.success({content:n("connection.repositoryValidated")})}catch(M){console.error("[ConnectionMode] validate repository failed:",M);const Y=qo(M);Y.includes("Tauri IPC")||X.error({content:Ns(Y,n)})}finally{S(!1)}},[n]),w=a.useCallback(M=>{if(M==="included"){m("included");return}if(f){m("localRepository");return}j()},[j,f]),E=l!==d||d==="localRepository"&&f!==u,O=d==="localRepository"&&(l!=="localRepository"||f!==u),D=d==="localRepository"?f:u,P=t.size>0,N=b||C||k||!E||P,L=a.useCallback(async()=>{if(!N){_(!0);try{d==="localRepository"?await Oe("set_ga_source",{dir:f}):await Oe("clear_ga_source",{}),await Promise.allSettled([G.getState().loadSessions(),Z.getState().loadFromBridge()]);const M=d==="localRepository"?f:"";c(d),p(M),X.success({content:n(d==="localRepository"?"connection.localSuccess":"connection.includedSuccess")})}catch(M){console.error("[ConnectionMode] apply failed:",M),X.error({content:Ns(qo(M),n)})}finally{_(!1)}}},[N,d,f,n]),B=a.useCallback(()=>{s("status"),r("services"),Z.getState().close()},[r,s]),Q=a.useMemo(()=>o==="ready"?"connection.statusReady":o==="connecting"?"connection.statusConnecting":"connection.statusUnavailable",[o]),z=o==="ready"?"on":o==="connecting"?"switching":"unavailable";return Rs?i.jsxs("div",{className:"ga-set-block ga-connection-section","data-testid":"connection-mode-section",children:[i.jsx(yt,{tip:n("connection.sectionTip"),tipLabel:n("connection.sectionHelp"),children:n("connection.title")}),i.jsx("p",{className:"ga-connection-description",children:n("connection.description")}),i.jsxs(Ke,{"aria-label":n("connection.title"),name:"desktop-connection-mode",type:"pureCard",value:d,disabled:b||k,onChange:M=>w(M.target.value),className:"ga-connection-mode-grid",children:[i.jsx(Le,{value:"included",className:"ga-connection-mode-card",extra:n("connection.includedDescription"),children:i.jsx(Ae,{content:n("connection.includedTip"),position:"topLeft",children:i.jsxs("span",{className:"ga-connection-card-title",tabIndex:0,"aria-label":`${n("connection.included")}:${n("connection.includedTip")}`,children:[n("connection.included"),l==="included"&&i.jsx(ze,{size:"small",color:"green",children:n("connection.current")})]})})}),i.jsx(Le,{value:"localRepository",className:"ga-connection-mode-card",extra:n("connection.localDescription"),children:i.jsx(Ae,{content:n("connection.localTip"),position:"topLeft",children:i.jsxs("span",{className:"ga-connection-card-title",tabIndex:0,"aria-label":`${n("connection.local")}:${n("connection.localTip")}`,children:[n("connection.local"),l==="localRepository"&&i.jsx(ze,{size:"small",color:"green",children:n("connection.current")})]})})})]}),(d==="localRepository"||l==="localRepository")&&i.jsxs("div",{className:"ga-connection-repository-detail",children:[i.jsxs("div",{className:"ga-connection-repository-header",children:[i.jsx("span",{children:n(O?"connection.pendingRepository":"connection.currentRepository")}),i.jsx(de,{size:"small",type:"tertiary",loading:C,disabled:k,onClick:j,children:n(f?"connection.changeRepository":"connection.chooseRepository")})]}),D&&i.jsx("code",{className:"ga-connection-path",children:D})]}),i.jsxs("div",{className:"ga-connection-apply-row",children:[i.jsx("div",{className:"ga-connection-apply-note",role:"status",children:P?n("connection.runningTaskBlock"):E?n("connection.pendingNotice"):""}),i.jsx(de,{type:"primary",loading:k,disabled:N,onClick:L,children:n(k?"connection.applying":"connection.apply")})]}),i.jsxs("div",{className:"ga-connection-status-row",children:[i.jsxs("div",{className:"ga-connection-status-copy",children:[i.jsx("span",{className:`ga-source-dot ga-source-dot--${z}`}),i.jsx(Ae,{content:n("connection.statusTip"),position:"topLeft",children:i.jsx("span",{className:"ga-connection-status-label",tabIndex:0,"aria-label":`${n("connection.status")}:${n("connection.statusTip")}`,children:n("connection.status")})}),i.jsx("strong",{children:n(Q)})]}),i.jsx(de,{size:"small",type:"tertiary",onClick:B,children:n("connection.viewStatus")})]})]}):null}const cm="https://github.com/lsdefine/GenericAgent#-社区与支持",dm="https://datawhalechina.github.io/hello-generic-agent/",um=["RoundSquisheen","persist0612","pax1123581321"];async function pm(n,e=t=>navigator.clipboard.writeText(t)){await e(n)}function hm(){return i.jsx("svg",{"aria-hidden":"true",className:"ga-help-feedback-wechat-icon",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:i.jsx("path",{d:"M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z"})})}function $s({description:n,href:e,label:t}){return i.jsxs("div",{className:"ga-help-feedback-resource",children:[i.jsx("p",{children:n}),i.jsxs("a",{className:"ga-help-feedback-link",href:e,target:"_blank",rel:"noopener noreferrer",children:[i.jsx("span",{children:t}),i.jsx(qa,{size:"small","aria-hidden":"true"})]})]})}function mm(){const{t:n}=he(),e=a.useCallback(async t=>{try{await pm(t),X.success({content:n("helpFeedback.copySuccess")})}catch{X.error({content:n("helpFeedback.copyError")})}},[n]);return i.jsxs("section",{className:"ga-set-block ga-help-feedback-section","data-testid":"help-feedback-section",children:[i.jsx(yt,{children:n("helpFeedback.title")}),i.jsxs(ct,{className:"ga-help-feedback-collapse",defaultActiveKey:[],children:[i.jsx(ct.Panel,{itemKey:"community",header:n("helpFeedback.communityTitle"),children:i.jsx($s,{description:n("helpFeedback.communityDescription"),href:cm,label:n("helpFeedback.communityAction")})}),i.jsx(ct.Panel,{itemKey:"tutorial",header:n("helpFeedback.tutorialTitle"),children:i.jsx($s,{description:n("helpFeedback.tutorialDescription"),href:dm,label:n("helpFeedback.tutorialAction")})}),i.jsxs(ct.Panel,{itemKey:"maintainers",header:n("helpFeedback.maintainersTitle"),children:[i.jsx("p",{className:"ga-help-feedback-description",children:n("helpFeedback.maintainersDescription")}),i.jsx("div",{className:"ga-help-feedback-list",children:um.map(t=>i.jsxs("div",{className:"ga-help-feedback-row",children:[i.jsxs("div",{className:"ga-help-feedback-contact",children:[i.jsx(hm,{}),i.jsx("code",{className:"ga-help-feedback-id",children:t})]}),i.jsx(de,{size:"small",type:"tertiary",onClick:()=>e(t),children:n("helpFeedback.copy")})]},t))})]})]})]})}const fm=[{key:"deepseek",label:"DeepSeek",descKey:"pq.deepseekDesc",protocol:"oai",apibase:"https://api.deepseek.com/v1",defaultModel:"deepseek-v4-pro",defaultName:"DeepSeek",keyUrl:"https://platform.deepseek.com/api_keys",color:"#4D6BFE",iconPath:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z"},{key:"qwen",label:"通义千问",descKey:"pq.qwenDesc",protocol:"oai",apibase:"https://dashscope.aliyuncs.com/compatible-mode/v1",defaultModel:"qwen3.7-max",defaultName:"通义千问",keyUrl:"https://bailian.console.aliyun.com/?apiKey=1",color:"#615CED",iconPath:"M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z"},{key:"doubao",label:"火山方舟",descKey:"pq.doubaoDesc",protocol:"oai",apibase:"https://ark.cn-beijing.volces.com/api/v3",defaultModel:"doubao-seed-2.1-pro",defaultName:"火山方舟",keyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey",color:"#006EFF",iconPath:["M10.278 7.741L6.685 21.736a.214.214 0 00.214.264h7.17a.216.216 0 00.214-.166.216.216 0 000-.098L10.687 7.742a.214.214 0 00-.409 0z","M4.553 16.18l-1.406 5.558a.214.214 0 00.203.261h2.42-4.551a.214.214 0 01-.214-.26l2.275-8.961a.214.214 0 01.409 0l.864 3.402z","M16.694 22h3.207a.215.215 0 00.214-.262l-1.839-6.993 1.164-4.592a.214.214 0 01.411 0l2.951 11.586a.214.214 0 01-.214.261h-5.894z"]},{key:"minimax",label:"MiniMax",descKey:"pq.minimaxDesc",protocol:"oai",apibase:"https://api.minimax.chat/v1",defaultModel:"MiniMax-M3",defaultName:"MiniMax",keyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key",color:"#F23F5D",iconPath:"M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z"},{key:"zhipu",label:"智谱 GLM",descKey:"pq.zhipuDesc",protocol:"oai",apibase:"https://open.bigmodel.cn/api/paas/v4",defaultModel:"glm-5.2",defaultName:"智谱 GLM",keyUrl:"https://open.bigmodel.cn/usercenter/apikeys",color:"#3859FF",iconPath:"M11.991 23.503a.24.24 0 00-.244.248.24.24 0 00.244.249.24.24 0 00.245-.249.24.24 0 00-.22-.247l-.025-.001zM9.671 5.365a1.697 1.697 0 011.099 2.132l-.071.172-.016.04-.018.054c-.07.16-.104.32-.104.498-.035.71.47 1.279 1.186 1.314h.366c1.309.053 2.338 1.173 2.286 2.523-.052 1.332-1.152 2.38-2.478 2.327h-.174c-.715.018-1.274.64-1.239 1.368 0 .124.018.23.053.337.209.373.54.658.96.8.75.23 1.517-.125 1.9-.782l.018-.035c.402-.64 1.17-.96 1.92-.711.854.284 1.378 1.226 1.099 2.167a1.661 1.661 0 01-2.077 1.102 1.711 1.711 0 01-.907-.711l-.017-.035c-.2-.323-.463-.58-.851-.711l-.056-.018a1.646 1.646 0 00-1.954.746 1.66 1.66 0 01-1.065.764 1.677 1.677 0 01-1.989-1.279c-.209-.906.332-1.83 1.257-2.043a1.51 1.51 0 01.296-.035h.018c.68-.071 1.151-.622 1.116-1.333a1.307 1.307 0 00-.227-.693 2.515 2.515 0 01-.366-1.403 2.39 2.39 0 01.366-1.208c.14-.195.21-.444.227-.693.018-.71-.506-1.261-1.186-1.332l-.07-.018a1.43 1.43 0 01-.299-.07l-.05-.019a1.7 1.7 0 01-1.047-2.114 1.68 1.68 0 012.094-1.101zm-5.575 10.11c.26-.264.639-.367.994-.27.355.096.633.379.728.74.095.362-.007.748-.267 1.013-.402.41-1.053.41-1.455 0a1.062 1.062 0 010-1.482zm14.845-.294c.359-.09.738.024.992.297.254.274.344.665.237 1.025-.107.36-.396.634-.756.718-.551.128-1.1-.22-1.23-.781a1.05 1.05 0 01.757-1.26zm-.064-4.39c.314.32.49.753.49 1.206 0 .452-.176.886-.49 1.206-.315.32-.74.5-1.185.5-.444 0-.87-.18-1.184-.5a1.727 1.727 0 010-2.412 1.654 1.654 0 012.369 0zm-11.243.163c.364.484.447 1.128.218 1.691a1.665 1.665 0 01-2.188.923c-.855-.36-1.26-1.358-.907-2.228a1.68 1.68 0 011.33-1.038c.593-.08 1.183.169 1.547.652zm11.545-4.221c.368 0 .708.2.892.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.892.524c-.568 0-1.03-.47-1.03-1.048 0-.579.462-1.048 1.03-1.048zm-14.358 0c.368 0 .707.2.891.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.891.524c-.569 0-1.03-.47-1.03-1.048 0-.579.461-1.048 1.03-1.048zm10.031-1.475c.925 0 1.675.764 1.675 1.706s-.75 1.705-1.675 1.705-1.674-.763-1.674-1.705c0-.942.75-1.706 1.674-1.706zm-2.626-.684c.362-.082.653-.356.761-.718a1.062 1.062 0 00-.238-1.028 1.017 1.017 0 00-.996-.294c-.547.14-.881.7-.752 1.257.13.558.675.907 1.225.783zm0 16.876c.359-.087.644-.36.75-.72a1.062 1.062 0 00-.237-1.019 1.018 1.018 0 00-.985-.301 1.037 1.037 0 00-.762.717c-.108.361-.017.754.239 1.028.245.263.606.377.953.305l.043-.01zM17.19 3.5a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64a.631.631 0 00-.628.64c0 .355.28.64.628.64zm-10.38 0a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64a.631.631 0 00-.628.64c0 .355.279.64.628.64zm-5.182 7.852a.631.631 0 00-.628.64c0 .354.28.639.628.639a.63.63 0 00.627-.606l.001-.034a.62.62 0 00-.628-.64zm5.182 9.13a.631.631 0 00-.628.64c0 .355.279.64.628.64a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm10.38.018a.631.631 0 00-.628.64c0 .355.28.64.628.64a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64zm5.182-9.148a.631.631 0 00-.628.64c0 .354.279.639.628.639a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm-.384-4.992a.24.24 0 00.244-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249c0 .142.122.249.244.249zM11.991.497a.24.24 0 00.245-.248A.24.24 0 0011.99 0a.24.24 0 00-.244.249c0 .133.108.236.223.247l.021.001zM2.011 6.36a.24.24 0 00.245-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249.24.24 0 00.244.249zm0 11.263a.24.24 0 00-.243.248.24.24 0 00.244.249.24.24 0 00.244-.249.252.252 0 00-.244-.248zm19.995-.018a.24.24 0 00-.245.248.24.24 0 00.245.25.24.24 0 00.244-.25.252.252 0 00-.244-.248z"},{key:"kimi",label:"Kimi",descKey:"pq.kimiDesc",protocol:"oai",apibase:"https://api.moonshot.cn/v1",defaultModel:"kimi-k2.7-code",defaultName:"Kimi",keyUrl:"https://platform.moonshot.cn/console/api-keys",color:"#000000",iconPath:["M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z","M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z"]},{key:"stepfun",label:"阶跃星辰",descKey:"pq.stepfunDesc",protocol:"oai",apibase:"https://api.stepfun.com/v1",defaultModel:"step-3.7-flash",defaultName:"阶跃星辰",keyUrl:"https://platform.stepfun.com/interface-key",color:"#005AFF",iconPath:"M22.012 0h1.032v.927H24v.968h-.956V3.78h-1.032V1.896h-1.878v-.97h1.878V0zM2.6 12.371V1.87h.969v10.502h-.97zm10.423.66h10.95v.918h-6.208v9.579h-4.742V13.03zM5.629 3.333v12.356H0v4.51h10.386V8L20.859 8l-.003-4.668-15.227.001z"}];function gm({preset:n,onClick:e}){const{t}=he();return i.jsxs("button",{type:"button",className:"ga-provider-card",onClick:e,style:{"--provider-color":n.color},children:[i.jsx("svg",{className:"ga-provider-card-icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:n.color,fillRule:"evenodd",xmlns:"http://www.w3.org/2000/svg",children:Array.isArray(n.iconPath)?n.iconPath.map((o,r)=>i.jsx("path",{d:o},r)):i.jsx("path",{d:n.iconPath})}),i.jsxs("span",{className:"ga-provider-card-body",children:[i.jsx("span",{className:"ga-provider-card-label",children:n.label}),i.jsx("span",{className:"ga-provider-card-desc",children:t(n.descKey)})]}),i.jsx("span",{className:"ga-provider-card-caret",children:"›"})]})}const tn={model:"",apikey:"",apibase:"",name:"",protocol:"oai",stream:!0,max_retries:5,connect_timeout:15,read_timeout:300};function ym({editingId:n,onDone:e}){const t=Z(w=>w.setModelProfiles),{t:o}=he(),[r,s]=a.useState("choose"),[l,c]=a.useState(null),[u,p]=a.useState(null),[d,m]=a.useState(tn),[f,y]=a.useState(!1),[b,x]=a.useState(!1),C=n!=null;a.useEffect(()=>{C?(s("form"),c("custom"),p(null),x(!0),yd(n).then(w=>{w&&m({model:w.model||"",apikey:w.apikey||"",apibase:w.apibase||"",name:w.name||"",protocol:w.protocol||"oai",stream:w.stream!==!1,max_retries:w.max_retries??5,connect_timeout:w.connect_timeout??15,read_timeout:w.read_timeout??300}),x(!1)})):(m(tn),s("choose"),c(null),p(null),y(!1),x(!1))},[n,C]);const S=a.useCallback(w=>{p(w),c("provider"),m({...tn,model:w.defaultModel,apibase:w.apibase,name:w.defaultName,protocol:w.protocol}),s("form")},[]),k=a.useCallback(()=>{c("custom"),p(null),m(tn),s("form")},[]),_=a.useCallback(()=>{s("choose"),c(null),p(null)},[]),v=async()=>{if(!d.model.trim()||!d.apibase.trim()){X.warning({content:o("model.model")+" / "+o("model.apibase")+" required"});return}if(!d.apikey.trim()){X.warning({content:o("model.apikey")+" required"});return}try{const w={model:d.model.trim(),apibase:d.apibase.trim(),name:d.name.trim()||void 0,protocol:d.protocol,stream:d.stream,max_retries:d.max_retries,connect_timeout:d.connect_timeout,read_timeout:d.read_timeout};d.apikey.trim()&&(w.apikey=d.apikey.trim());let E;C?E=await vd(n,w):E=await bd(w),t(E),X.success({content:o(C?"model.save":"set.addModel")}),e()}catch{X.error({content:"Error"})}},j=l==="provider"&&u!=null;return b?i.jsx("div",{style:{padding:24,textAlign:"center",color:"var(--semi-color-text-2)"},children:"Loading…"}):r==="choose"?i.jsxs("div",{children:[i.jsxs("button",{type:"button",className:"ga-form-back",onClick:e,children:["← ",o("common.cancel")]}),i.jsxs("div",{className:"ga-route-picker",children:[i.jsx("button",{type:"button",className:"ga-route-btn ga-route-btn--active",onClick:()=>{},children:o("model.routeProvider")}),i.jsx("button",{type:"button",className:"ga-route-btn",onClick:k,children:o("model.routeCustom")})]}),i.jsx("div",{className:"ga-provider-list",children:fm.map(w=>i.jsx(gm,{preset:w,onClick:()=>S(w)},w.key))})]}):i.jsxs("div",{className:"ga-form",children:[!C&&i.jsxs("button",{type:"button",className:"ga-form-back",onClick:_,children:["← ",o("model.selectProvider")]}),C&&i.jsxs("button",{type:"button",className:"ga-form-back",onClick:e,children:["← ",o("common.cancel")]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsx("label",{className:"ga-form-label",children:o("model.name")}),i.jsx(dt,{value:d.name,onChange:w=>m(E=>({...E,name:w})),placeholder:o("model.namePh"),maxLength:50})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsxs("label",{className:"ga-form-label",children:[o("model.model")," ",i.jsx("span",{className:"ga-form-req",children:"*"})]}),i.jsx(dt,{value:d.model,onChange:w=>m(E=>({...E,model:w})),placeholder:o("model.modelPh"),maxLength:50})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsxs("label",{className:"ga-form-label",children:[o("model.protocol")," ",i.jsx("span",{className:"ga-form-req",children:"*"})]}),i.jsxs(Ke,{value:d.protocol,onChange:w=>m(E=>({...E,protocol:w.target.value})),disabled:j,children:[i.jsx(Le,{value:"oai",children:o("model.protocolOai")}),i.jsx(Le,{value:"claude",children:o("model.protocolClaude")})]}),j&&i.jsx("span",{className:"ga-form-locked-hint",children:o("model.providerLocked")})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsxs("label",{className:"ga-form-label",children:[o("model.apibase")," ",i.jsx("span",{className:"ga-form-req",children:"*"})]}),i.jsx(dt,{value:d.apibase,onChange:w=>m(E=>({...E,apibase:w})),placeholder:o("model.apibasePh"),maxLength:200,disabled:j}),j&&i.jsx("span",{className:"ga-form-locked-hint",children:o("model.providerLocked")})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsxs("label",{className:"ga-form-label",children:[o("model.apikey")," ",!C&&i.jsx("span",{className:"ga-form-req",children:"*"}),j&&u&&i.jsx("a",{className:"ga-form-key-link",href:u.keyUrl,target:"_blank",rel:"noopener noreferrer",children:o("model.getKey")})]}),i.jsx(dt,{mode:"password",value:d.apikey,onChange:w=>m(E=>({...E,apikey:w})),placeholder:o("model.apikeyPh"),maxLength:200})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsx("label",{className:"ga-form-label",children:o("model.stream")}),i.jsxs(Ke,{value:d.stream,onChange:w=>m(E=>({...E,stream:w.target.value})),children:[i.jsx(Le,{value:!0,children:o("model.streamOn")}),i.jsx(Le,{value:!1,children:o("model.streamOff")})]})]}),i.jsxs("button",{type:"button",className:"ga-form-advanced-toggle","data-expanded":f||void 0,onClick:()=>y(w=>!w),children:[i.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",children:i.jsx("path",{d:"M3 1.5L7 5L3 8.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}),o("model.advanced")]}),f&&i.jsx("div",{className:"ga-form-advanced-body",children:i.jsxs("div",{className:"ga-form-row",children:[i.jsxs("div",{className:"ga-form-field",children:[i.jsx("label",{className:"ga-form-label",children:o("model.retries")}),i.jsx(Wn,{value:d.max_retries,onChange:w=>m(E=>({...E,max_retries:w})),min:1,max:20,style:{width:"100%"}})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsx("label",{className:"ga-form-label",children:o("model.connTimeout")}),i.jsx(Wn,{value:d.connect_timeout,onChange:w=>m(E=>({...E,connect_timeout:w})),min:1,max:300,suffix:"s",style:{width:"100%"}})]}),i.jsxs("div",{className:"ga-form-field",children:[i.jsx("label",{className:"ga-form-label",children:o("model.readTimeout")}),i.jsx(Wn,{value:d.read_timeout,onChange:w=>m(E=>({...E,read_timeout:w})),min:5,max:3600,suffix:"s",style:{width:"100%"}})]})]})}),i.jsx("div",{style:{marginTop:8,display:"flex",justifyContent:"flex-end"},children:i.jsx(de,{type:"primary",onClick:v,children:o("model.save")})})]})}function bm(){const{visible:n,open:e,close:t,loadFromBridge:o}=Z(),{t:r}=he(),[s,l]=a.useState("main"),[c,u]=a.useState(null);a.useEffect(()=>{const y=()=>{o(),e()},b=()=>t();return window.addEventListener("ga:open-settings",y),window.addEventListener("ga:close-settings",b),()=>{window.removeEventListener("ga:open-settings",y),window.removeEventListener("ga:close-settings",b)}},[e,t,o]),a.useEffect(()=>{n||(l("main"),u(null))},[n]);const p=a.useCallback(()=>{u(null),l("addModel")},[]),d=a.useCallback(y=>{u(y),l("addModel")},[]),m=a.useCallback(()=>{l("main"),u(null)},[]),f=s==="main"?r("modal.settings"):c!=null?r("modal.editModel"):r("modal.addModel");return i.jsx(le,{visible:n,onCancel:t,title:f,footer:null,width:870,centered:!0,closeOnEsc:!0,className:"ga-settings-dialog",children:s==="main"?i.jsxs(i.Fragment,{children:[i.jsx(Yh,{}),i.jsx(Xh,{}),i.jsx(Jh,{onAdd:p,onEdit:d}),i.jsx(am,{}),i.jsx(lm,{}),i.jsx(mm,{})]}):i.jsx(ym,{editingId:c,onDone:m})})}const vm={zh:ba,en:ya};function xm(){const n=Z(t=>t.lang),e=Z(t=>t.loadFromBridge);return a.useEffect(()=>{e()},[e]),i.jsxs(ga,{locale:vm[n],children:[i.jsx(qh,{}),i.jsx(bm,{}),i.jsx(Qh,{})]})}document.documentElement.dataset.appearance==="dark"&&document.body.setAttribute("theme-mode","dark");document.addEventListener("click",n=>{var t;const e=(t=window.__TAURI__)==null?void 0:t.opener;Fa(n,typeof(e==null?void 0:e.openUrl)=="function"?o=>e.openUrl(o):void 0)});setTimeout(()=>{document.body.classList.remove("no-transition")},0);class wm extends g.Component{constructor(){super(...arguments);bt(this,"state",{error:null})}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,o){console.error("[RootErrorBoundary] React crashed:",t,o.componentStack)}render(){if(this.state.error){const t=(navigator.language||"").toLowerCase().startsWith("zh"),o=this.state.error;return i.jsxs("main",{className:"ga-root-error",role:"alert",children:[i.jsx(li,{className:"ga-root-error-result",image:i.jsx(ld,{}),darkModeImage:i.jsx(nd,{}),title:t?"界面遇到问题":"Something went wrong",description:t?"GenericAgent 的界面未能继续运行。你的会话和记忆不会受到影响。":"The GenericAgent interface could not continue. Your sessions and memory are safe.",children:i.jsx(de,{type:"primary",theme:"solid",icon:i.jsx(pl,{}),onClick:()=>window.location.reload(),children:t?"重新加载":"Reload"})}),i.jsx(ct,{className:"ga-root-error-details",accordion:!0,children:i.jsxs(ct.Panel,{itemKey:"technical-details",header:t?"技术详情":"Technical details",children:[i.jsx(Ro.Paragraph,{type:"tertiary",children:t?"复制以下信息可帮助排查问题。":"Copy the information below to help troubleshoot the issue."}),i.jsx("pre",{tabIndex:0,children:[o.message,o.stack].filter(Boolean).join(` - -`)})]})})]})}return this.props.children}}async function Cm(){const n=document.getElementById("app");va.createRoot(n).render(i.jsx(wm,{children:i.jsx(xm,{})}))}Cm();export{Wn as A,ne as B,ka as C,Ne as D,li as E,dt as F,ue as G,bi as H,Ha as I,mu as J,Z as K,Vd as L,le as M,Nh as N,fh as O,Pe as P,X as Q,et as R,za as S,ze as T,Om as U,Pm as V,Aa as W,No as X,Mo as _,_m as a,he as b,ri as c,Is as d,Wo as e,_i as f,pl as g,Te as h,Lm as i,_o as j,Yl as k,ft as l,Ve as m,G as n,Nl as o,Fl as p,Al as q,Dl as r,qt as s,xl as t,Ps as u,zl as v,Vl as w,Il as x,Kl as y,un as z}; diff --git a/frontends/desktop/dist/assets/markdown-preprocess-Cc2i34eF.js b/frontends/desktop/dist/assets/markdown-preprocess-Cc2i34eF.js deleted file mode 100644 index 75b0f99c..00000000 --- a/frontends/desktop/dist/assets/markdown-preprocess-Cc2i34eF.js +++ /dev/null @@ -1,295 +0,0 @@ -import{g as ml,aj as jt}from"./tauri-compat-D_GD_wMe.js";import{W as To,X as Co}from"./main-j7e_THPB.js";function br(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?Ci(e.position):"start"in e||"end"in e?Ci(e):"line"in e||"column"in e?p0(e):""}function p0(e){return zi(e&&e.line)+":"+zi(e&&e.column)}function Ci(e){return p0(e&&e.start)+"-"+p0(e&&e.end)}function zi(e){return e&&typeof e=="number"?e:1}class Be extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let i="",a={},l=!1;if(r&&("line"in r&&"column"in r?a={place:r}:"start"in r&&"end"in r?a={place:r}:"type"in r?a={ancestors:[r],place:r.position}:a={...r}),typeof t=="string"?i=t:!a.cause&&t&&(l=!0,i=t.message,a.cause=t),!a.ruleId&&!a.source&&typeof n=="string"){const o=n.indexOf(":");o===-1?a.ruleId=n:(a.source=n.slice(0,o),a.ruleId=n.slice(o+1))}if(!a.place&&a.ancestors&&a.ancestors){const o=a.ancestors[a.ancestors.length-1];o&&(a.place=o.position)}const s=a.place&&"start"in a.place?a.place.start:a.place;this.ancestors=a.ancestors||void 0,this.cause=a.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=i,this.line=s?s.line:void 0,this.name=br(a.place)||"1:1",this.place=a.place||void 0,this.reason=this.message,this.ruleId=a.ruleId||void 0,this.source=a.source||void 0,this.stack=l&&a.cause&&typeof a.cause.stack=="string"?a.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Be.prototype.file="";Be.prototype.name="";Be.prototype.reason="";Be.prototype.message="";Be.prototype.stack="";Be.prototype.column=void 0;Be.prototype.line=void 0;Be.prototype.ancestors=void 0;Be.prototype.cause=void 0;Be.prototype.fatal=void 0;Be.prototype.place=void 0;Be.prototype.ruleId=void 0;Be.prototype.source=void 0;const at={basename:zo,dirname:Mo,extname:Eo,join:Io,sep:"/"};function zo(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Mr(e);let r=0,n=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else n<0&&(a=!0,n=i+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let l=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else l<0&&(a=!0,l=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(n=i):(s=-1,n=l));return r===n?n=l:n<0&&(n=e.length),e.slice(r,n)}function Mo(e){if(Mr(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Eo(e){Mr(e);let t=e.length,r=-1,n=0,i=-1,a=0,l;for(;t--;){const s=e.codePointAt(t);if(s===47){if(l){n=t+1;break}continue}r<0&&(l=!0,r=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||r<0||a===0||a===1&&i===r-1&&i===n+1?"":e.slice(i,r)}function Io(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Bo(e,t){let r="",n=0,i=-1,a=0,l=-1,s,o;for(;++l<=e.length;){if(l2){if(o=r.lastIndexOf("/"),o!==r.length-1){o<0?(r="",n=0):(r=r.slice(0,o),n=r.length-1-r.lastIndexOf("/")),i=l,a=0;continue}}else if(r.length>0){r="",n=0,i=l,a=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(i+1,l):r=e.slice(i+1,l),n=l-i-1;i=l,a=0}else s===46&&a>-1?a++:a=-1}return r}function Mr(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Fo={cwd:Ro};function Ro(){return"/"}function d0(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Lo(e){if(typeof e=="string")e=new URL(e);else if(!d0(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return No(e)}function No(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r4&&r.slice(0,4)==="data"&&Wo.test(t)){if(t.charAt(4)==="-"){const a=t.slice(5).replace(Bi,Yo);n="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=t.slice(4);if(!Bi.test(a)){let l=a.replace(Go,Xo);l.charAt(0)!=="-"&&(l="-"+l),t="data"+l}}i=_0}return new i(n,t)}function Xo(e){return"-"+e.toLowerCase()}function Yo(e){return e.charAt(1).toUpperCase()}const kl=pl([dl,Uo,yl,bl,xl],"html"),pn=pl([dl,Vo,yl,bl,xl],"svg");function Fi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Ko(e){return e.join(" ").trim()}var Kt={},On,Ri;function Zo(){if(Ri)return On;Ri=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,a=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,s=/^\s+|\s+$/g,o=` -`,u="/",h="*",m="",d="comment",p="declaration";function y(C,A){if(typeof C!="string")throw new TypeError("First argument must be a string");if(!C)return[];A=A||{};var z=1,I=1;function q(Y){var H=Y.match(t);H&&(z+=H.length);var ae=Y.lastIndexOf(o);I=~ae?Y.length-ae:I+Y.length}function O(){var Y={line:z,column:I};return function(H){return H.position=new M(Y),U(),H}}function M(Y){this.start=Y,this.end={line:z,column:I},this.source=A.source}M.prototype.content=C;function G(Y){var H=new Error(A.source+":"+z+":"+I+": "+Y);if(H.reason=Y,H.filename=A.source,H.line=z,H.column=I,H.source=C,!A.silent)throw H}function X(Y){var H=Y.exec(C);if(H){var ae=H[0];return q(ae),C=C.slice(ae.length),H}}function U(){X(r)}function E(Y){var H;for(Y=Y||[];H=V();)H!==!1&&Y.push(H);return Y}function V(){var Y=O();if(!(u!=C.charAt(0)||h!=C.charAt(1))){for(var H=2;m!=C.charAt(H)&&(h!=C.charAt(H)||u!=C.charAt(H+1));)++H;if(H+=2,m===C.charAt(H-1))return G("End of comment missing");var ae=C.slice(2,H-2);return I+=2,q(ae),C=C.slice(H),I+=2,Y({type:d,comment:ae})}}function $(){var Y=O(),H=X(n);if(H){if(V(),!X(i))return G("property missing ':'");var ae=X(a),pe=Y({type:p,property:w(H[0].replace(e,m)),value:ae?w(ae[0].replace(e,m)):m});return X(l),pe}}function se(){var Y=[];E(Y);for(var H;H=$();)H!==!1&&(Y.push(H),E(Y));return Y}return U(),se()}function w(C){return C?C.replace(s,m):m}return On=y,On}var Li;function Qo(){if(Li)return Kt;Li=1;var e=Kt&&Kt.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Kt,"__esModule",{value:!0}),Kt.default=r;const t=e(Zo());function r(n,i){let a=null;if(!n||typeof n!="string")return a;const l=(0,t.default)(n),s=typeof i=="function";return l.forEach(o=>{if(o.type!=="declaration")return;const{property:u,value:h}=o;s?i(u,h,o):h&&(a=a||{},a[u]=h)}),a}return Kt}var pr={},Ni;function Jo(){if(Ni)return pr;Ni=1,Object.defineProperty(pr,"__esModule",{value:!0}),pr.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,i=/^-(ms)-/,a=function(u){return!u||r.test(u)||e.test(u)},l=function(u,h){return h.toUpperCase()},s=function(u,h){return"".concat(h,"-")},o=function(u,h){return h===void 0&&(h={}),a(u)?u:(u=u.toLowerCase(),h.reactCompat?u=u.replace(i,s):u=u.replace(n,s),u.replace(t,l))};return pr.camelCase=o,pr}var dr,Pi;function eu(){if(Pi)return dr;Pi=1;var e=dr&&dr.__importDefault||function(i){return i&&i.__esModule?i:{default:i}},t=e(Qo()),r=Jo();function n(i,a){var l={};return!i||typeof i!="string"||(0,t.default)(i,function(s,o){s&&o&&(l[(0,r.camelCase)(s,a)]=o)}),l}return n.default=n,dr=n,dr}var tu=eu();const ru=ml(tu),nu=/[ \t\n\f\r]/g;function iu(e){return typeof e=="object"?e.type==="text"?Oi(e.value):!1:Oi(e)}function Oi(e){return e.replace(nu,"")===""}const Sl=Al("end"),G0=Al("start");function Al(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function au(e){const t=G0(e),r=Sl(e);if(t&&r)return{start:t,end:r}}function qi(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,i=r.indexOf(t);for(;i!==-1;)n++,i=r.indexOf(t,i+t.length);return n}const Hi=document.createElement("i");function W0(e){const t="&"+e+";";Hi.innerHTML=t;const r=Hi.textContent;return r.charCodeAt(r.length-1)===59&&e!=="semi"||r===t?!1:r}const Ne=Dt(/[A-Za-z]/),Ie=Dt(/[\dA-Za-z]/),lu=Dt(/[#-'*+\--9=?A-Z^-~]/);function rn(e){return e!==null&&(e<32||e===127)}const y0=Dt(/\d/),su=Dt(/[\dA-Fa-f]/),ou=Dt(/[!-/:-@[-`{-~]/);function K(e){return e!==null&&e<-2}function me(e){return e!==null&&(e<0||e===32)}function le(e){return e===-2||e===-1||e===32}const dn=Dt(new RegExp("\\p{P}|\\p{S}","u")),Ut=Dt(/\s/);function Dt(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function ie(e,t,r,n){const i=n?n-1:Number.POSITIVE_INFINITY;let a=0;return l;function l(o){return le(o)?(e.enter(r),s(o)):t(o)}function s(o){return le(o)&&a++i?0:i+t:t=t>i?i:t,r=r>0?r:0,n.length<1e4)l=Array.from(n),l.unshift(t,r),e.splice(...l);else for(r&&e.splice(t,r);a0?(Ge(e,e.length,0,t),e):t}function er(e){if(e===null||me(e)||Ut(e))return 1;if(dn(e))return 2}function gn(e,t,r){const n=[];let i=-1;for(;++i1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const m={...e[n][1].end},d={...e[r][1].start};ji(m,-o),ji(d,o),l={type:o>1?"strongSequence":"emphasisSequence",start:m,end:{...e[n][1].end}},s={type:o>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:d},a={type:o>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},i={type:o>1?"strong":"emphasis",start:{...l.start},end:{...s.end}},e[n][1].end={...l.start},e[r][1].start={...s.end},u=[],e[n][1].end.offset-e[n][1].start.offset&&(u=Qe(u,[["enter",e[n][1],t],["exit",e[n][1],t]])),u=Qe(u,[["enter",i,t],["enter",l,t],["exit",l,t],["enter",a,t]]),u=Qe(u,gn(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),u=Qe(u,[["exit",a,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[r][1].end.offset-e[r][1].start.offset?(h=2,u=Qe(u,[["enter",e[r][1],t],["exit",e[r][1],t]])):h=0,Ge(e,n-1,r-n+3,u),r=n+u.length-h-2;break}}for(r=-1;++r0&&le(M)?ie(e,z,"linePrefix",a+1)(M):z(M)}function z(M){return M===null||K(M)?e.check($i,w,q)(M):(e.enter("codeFlowValue"),I(M))}function I(M){return M===null||K(M)?(e.exit("codeFlowValue"),z(M)):(e.consume(M),I)}function q(M){return e.exit("codeFenced"),t(M)}function O(M,G,X){let U=0;return E;function E(H){return M.enter("lineEnding"),M.consume(H),M.exit("lineEnding"),V}function V(H){return M.enter("codeFencedFence"),le(H)?ie(M,$,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(H):$(H)}function $(H){return H===s?(M.enter("codeFencedFenceSequence"),se(H)):X(H)}function se(H){return H===s?(U++,M.consume(H),se):U>=l?(M.exit("codeFencedFenceSequence"),le(H)?ie(M,Y,"whitespace")(H):Y(H)):X(H)}function Y(H){return H===null||K(H)?(M.exit("codeFencedFence"),G(H)):X(H)}}}function xu(e,t,r){const n=this;return i;function i(l){return l===null?r(l):(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),a)}function a(l){return n.parser.lazy[n.now().line]?r(l):t(l)}}const qn={name:"codeIndented",tokenize:ku},wu={partial:!0,tokenize:Su};function ku(e,t,r){const n=this;return i;function i(u){return e.enter("codeIndented"),ie(e,a,"linePrefix",5)(u)}function a(u){const h=n.events[n.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?l(u):r(u)}function l(u){return u===null?o(u):K(u)?e.attempt(wu,l,o)(u):(e.enter("codeFlowValue"),s(u))}function s(u){return u===null||K(u)?(e.exit("codeFlowValue"),l(u)):(e.consume(u),s)}function o(u){return e.exit("codeIndented"),t(u)}}function Su(e,t,r){const n=this;return i;function i(l){return n.parser.lazy[n.now().line]?r(l):K(l)?(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),i):ie(e,a,"linePrefix",5)(l)}function a(l){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(l):K(l)?i(l):r(l)}}const Au={name:"codeText",previous:Cu,resolve:Tu,tokenize:zu};function Tu(e){let t=e.length-4,r=3,n,i;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const i=r||0;this.setCursor(Math.trunc(t));const a=this.right.splice(this.right.length-i,Number.POSITIVE_INFINITY);return n&&gr(this.left,n),a.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),gr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),gr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(l):e.interrupt(n.parser.constructs.flow,r,t)(l)}}function El(e,t,r,n,i,a,l,s,o){const u=o||Number.POSITIVE_INFINITY;let h=0;return m;function m(A){return A===60?(e.enter(n),e.enter(i),e.enter(a),e.consume(A),e.exit(a),d):A===null||A===32||A===41||rn(A)?r(A):(e.enter(n),e.enter(l),e.enter(s),e.enter("chunkString",{contentType:"string"}),w(A))}function d(A){return A===62?(e.enter(a),e.consume(A),e.exit(a),e.exit(i),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(A))}function p(A){return A===62?(e.exit("chunkString"),e.exit(s),d(A)):A===null||A===60||K(A)?r(A):(e.consume(A),A===92?y:p)}function y(A){return A===60||A===62||A===92?(e.consume(A),p):p(A)}function w(A){return!h&&(A===null||A===41||me(A))?(e.exit("chunkString"),e.exit(s),e.exit(l),e.exit(n),t(A)):h999||p===null||p===91||p===93&&!o||p===94&&!s&&"_hiddenFootnoteSupport"in l.parser.constructs?r(p):p===93?(e.exit(a),e.enter(i),e.consume(p),e.exit(i),e.exit(n),t):K(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),h):(e.enter("chunkString",{contentType:"string"}),m(p))}function m(p){return p===null||p===91||p===93||K(p)||s++>999?(e.exit("chunkString"),h(p)):(e.consume(p),o||(o=!le(p)),p===92?d:m)}function d(p){return p===91||p===92||p===93?(e.consume(p),s++,m):m(p)}}function Dl(e,t,r,n,i,a){let l;return s;function s(d){return d===34||d===39||d===40?(e.enter(n),e.enter(i),e.consume(d),e.exit(i),l=d===40?41:d,o):r(d)}function o(d){return d===l?(e.enter(i),e.consume(d),e.exit(i),e.exit(n),t):(e.enter(a),u(d))}function u(d){return d===l?(e.exit(a),o(l)):d===null?r(d):K(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),ie(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),h(d))}function h(d){return d===l||d===null||K(d)?(e.exit("chunkString"),u(d)):(e.consume(d),d===92?m:h)}function m(d){return d===l||d===92?(e.consume(d),h):h(d)}}function xr(e,t){let r;return n;function n(i){return K(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r=!0,n):le(i)?ie(e,n,r?"linePrefix":"lineSuffix")(i):t(i)}}function nt(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Lu={name:"definition",tokenize:Pu},Nu={partial:!0,tokenize:Ou};function Pu(e,t,r){const n=this;let i;return a;function a(p){return e.enter("definition"),l(p)}function l(p){return Il.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return i=nt(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),o):r(p)}function o(p){return me(p)?xr(e,u)(p):u(p)}function u(p){return El(e,h,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function h(p){return e.attempt(Nu,m,m)(p)}function m(p){return le(p)?ie(e,d,"whitespace")(p):d(p)}function d(p){return p===null||K(p)?(e.exit("definition"),n.parser.defined.push(i),t(p)):r(p)}}function Ou(e,t,r){return n;function n(s){return me(s)?xr(e,i)(s):r(s)}function i(s){return Dl(e,a,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function a(s){return le(s)?ie(e,l,"whitespace")(s):l(s)}function l(s){return s===null||K(s)?t(s):r(s)}}const qu={name:"hardBreakEscape",tokenize:Hu};function Hu(e,t,r){return n;function n(a){return e.enter("hardBreakEscape"),e.consume(a),i}function i(a){return K(a)?(e.exit("hardBreakEscape"),t(a)):r(a)}}const ju={name:"headingAtx",resolve:$u,tokenize:Uu};function $u(e,t){let r=e.length-2,n=3,i,a;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(i={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},a={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},Ge(e,n,r-n+1,[["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t]])),e}function Uu(e,t,r){let n=0;return i;function i(h){return e.enter("atxHeading"),a(h)}function a(h){return e.enter("atxHeadingSequence"),l(h)}function l(h){return h===35&&n++<6?(e.consume(h),l):h===null||me(h)?(e.exit("atxHeadingSequence"),s(h)):r(h)}function s(h){return h===35?(e.enter("atxHeadingSequence"),o(h)):h===null||K(h)?(e.exit("atxHeading"),t(h)):le(h)?ie(e,s,"whitespace")(h):(e.enter("atxHeadingText"),u(h))}function o(h){return h===35?(e.consume(h),o):(e.exit("atxHeadingSequence"),s(h))}function u(h){return h===null||h===35||me(h)?(e.exit("atxHeadingText"),s(h)):(e.consume(h),u)}}const Vu=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Vi=["pre","script","style","textarea"],_u={concrete:!0,name:"htmlFlow",resolveTo:Xu,tokenize:Yu},Gu={partial:!0,tokenize:Zu},Wu={partial:!0,tokenize:Ku};function Xu(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Yu(e,t,r){const n=this;let i,a,l,s,o;return u;function u(S){return h(S)}function h(S){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(S),m}function m(S){return S===33?(e.consume(S),d):S===47?(e.consume(S),a=!0,w):S===63?(e.consume(S),i=3,n.interrupt?t:k):Ne(S)?(e.consume(S),l=String.fromCharCode(S),C):r(S)}function d(S){return S===45?(e.consume(S),i=2,p):S===91?(e.consume(S),i=5,s=0,y):Ne(S)?(e.consume(S),i=4,n.interrupt?t:k):r(S)}function p(S){return S===45?(e.consume(S),n.interrupt?t:k):r(S)}function y(S){const Ee="CDATA[";return S===Ee.charCodeAt(s++)?(e.consume(S),s===Ee.length?n.interrupt?t:$:y):r(S)}function w(S){return Ne(S)?(e.consume(S),l=String.fromCharCode(S),C):r(S)}function C(S){if(S===null||S===47||S===62||me(S)){const Ee=S===47,it=l.toLowerCase();return!Ee&&!a&&Vi.includes(it)?(i=1,n.interrupt?t(S):$(S)):Vu.includes(l.toLowerCase())?(i=6,Ee?(e.consume(S),A):n.interrupt?t(S):$(S)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(S):a?z(S):I(S))}return S===45||Ie(S)?(e.consume(S),l+=String.fromCharCode(S),C):r(S)}function A(S){return S===62?(e.consume(S),n.interrupt?t:$):r(S)}function z(S){return le(S)?(e.consume(S),z):E(S)}function I(S){return S===47?(e.consume(S),E):S===58||S===95||Ne(S)?(e.consume(S),q):le(S)?(e.consume(S),I):E(S)}function q(S){return S===45||S===46||S===58||S===95||Ie(S)?(e.consume(S),q):O(S)}function O(S){return S===61?(e.consume(S),M):le(S)?(e.consume(S),O):I(S)}function M(S){return S===null||S===60||S===61||S===62||S===96?r(S):S===34||S===39?(e.consume(S),o=S,G):le(S)?(e.consume(S),M):X(S)}function G(S){return S===o?(e.consume(S),o=null,U):S===null||K(S)?r(S):(e.consume(S),G)}function X(S){return S===null||S===34||S===39||S===47||S===60||S===61||S===62||S===96||me(S)?O(S):(e.consume(S),X)}function U(S){return S===47||S===62||le(S)?I(S):r(S)}function E(S){return S===62?(e.consume(S),V):r(S)}function V(S){return S===null||K(S)?$(S):le(S)?(e.consume(S),V):r(S)}function $(S){return S===45&&i===2?(e.consume(S),ae):S===60&&i===1?(e.consume(S),pe):S===62&&i===4?(e.consume(S),xe):S===63&&i===3?(e.consume(S),k):S===93&&i===5?(e.consume(S),$e):K(S)&&(i===6||i===7)?(e.exit("htmlFlowData"),e.check(Gu,Fe,se)(S)):S===null||K(S)?(e.exit("htmlFlowData"),se(S)):(e.consume(S),$)}function se(S){return e.check(Wu,Y,Fe)(S)}function Y(S){return e.enter("lineEnding"),e.consume(S),e.exit("lineEnding"),H}function H(S){return S===null||K(S)?se(S):(e.enter("htmlFlowData"),$(S))}function ae(S){return S===45?(e.consume(S),k):$(S)}function pe(S){return S===47?(e.consume(S),l="",Me):$(S)}function Me(S){if(S===62){const Ee=l.toLowerCase();return Vi.includes(Ee)?(e.consume(S),xe):$(S)}return Ne(S)&&l.length<8?(e.consume(S),l+=String.fromCharCode(S),Me):$(S)}function $e(S){return S===93?(e.consume(S),k):$(S)}function k(S){return S===62?(e.consume(S),xe):S===45&&i===2?(e.consume(S),k):$(S)}function xe(S){return S===null||K(S)?(e.exit("htmlFlowData"),Fe(S)):(e.consume(S),xe)}function Fe(S){return e.exit("htmlFlow"),t(S)}}function Ku(e,t,r){const n=this;return i;function i(l){return K(l)?(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),a):r(l)}function a(l){return n.parser.lazy[n.now().line]?r(l):t(l)}}function Zu(e,t,r){return n;function n(i){return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),e.attempt(Ir,t,r)}}const Qu={name:"htmlText",tokenize:Ju};function Ju(e,t,r){const n=this;let i,a,l;return s;function s(k){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(k),o}function o(k){return k===33?(e.consume(k),u):k===47?(e.consume(k),O):k===63?(e.consume(k),I):Ne(k)?(e.consume(k),X):r(k)}function u(k){return k===45?(e.consume(k),h):k===91?(e.consume(k),a=0,y):Ne(k)?(e.consume(k),z):r(k)}function h(k){return k===45?(e.consume(k),p):r(k)}function m(k){return k===null?r(k):k===45?(e.consume(k),d):K(k)?(l=m,pe(k)):(e.consume(k),m)}function d(k){return k===45?(e.consume(k),p):m(k)}function p(k){return k===62?ae(k):k===45?d(k):m(k)}function y(k){const xe="CDATA[";return k===xe.charCodeAt(a++)?(e.consume(k),a===xe.length?w:y):r(k)}function w(k){return k===null?r(k):k===93?(e.consume(k),C):K(k)?(l=w,pe(k)):(e.consume(k),w)}function C(k){return k===93?(e.consume(k),A):w(k)}function A(k){return k===62?ae(k):k===93?(e.consume(k),A):w(k)}function z(k){return k===null||k===62?ae(k):K(k)?(l=z,pe(k)):(e.consume(k),z)}function I(k){return k===null?r(k):k===63?(e.consume(k),q):K(k)?(l=I,pe(k)):(e.consume(k),I)}function q(k){return k===62?ae(k):I(k)}function O(k){return Ne(k)?(e.consume(k),M):r(k)}function M(k){return k===45||Ie(k)?(e.consume(k),M):G(k)}function G(k){return K(k)?(l=G,pe(k)):le(k)?(e.consume(k),G):ae(k)}function X(k){return k===45||Ie(k)?(e.consume(k),X):k===47||k===62||me(k)?U(k):r(k)}function U(k){return k===47?(e.consume(k),ae):k===58||k===95||Ne(k)?(e.consume(k),E):K(k)?(l=U,pe(k)):le(k)?(e.consume(k),U):ae(k)}function E(k){return k===45||k===46||k===58||k===95||Ie(k)?(e.consume(k),E):V(k)}function V(k){return k===61?(e.consume(k),$):K(k)?(l=V,pe(k)):le(k)?(e.consume(k),V):U(k)}function $(k){return k===null||k===60||k===61||k===62||k===96?r(k):k===34||k===39?(e.consume(k),i=k,se):K(k)?(l=$,pe(k)):le(k)?(e.consume(k),$):(e.consume(k),Y)}function se(k){return k===i?(e.consume(k),i=void 0,H):k===null?r(k):K(k)?(l=se,pe(k)):(e.consume(k),se)}function Y(k){return k===null||k===34||k===39||k===60||k===61||k===96?r(k):k===47||k===62||me(k)?U(k):(e.consume(k),Y)}function H(k){return k===47||k===62||me(k)?U(k):r(k)}function ae(k){return k===62?(e.consume(k),e.exit("htmlTextData"),e.exit("htmlText"),t):r(k)}function pe(k){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),Me}function Me(k){return le(k)?ie(e,$e,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(k):$e(k)}function $e(k){return e.enter("htmlTextData"),l(k)}}const X0={name:"labelEnd",resolveAll:n1,resolveTo:i1,tokenize:a1},e1={tokenize:l1},t1={tokenize:s1},r1={tokenize:o1};function n1(e){let t=-1;const r=[];for(;++t=3&&(u===null||K(u))?(e.exit("thematicBreak"),t(u)):r(u)}function o(u){return u===i?(e.consume(u),n++,o):(e.exit("thematicBreakSequence"),le(u)?ie(e,s,"whitespace")(u):s(u))}}const qe={continuation:{tokenize:y1},exit:x1,name:"list",tokenize:v1},d1={partial:!0,tokenize:w1},g1={partial:!0,tokenize:b1};function v1(e,t,r){const n=this,i=n.events[n.events.length-1];let a=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,l=0;return s;function s(p){const y=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:y0(p)){if(n.containerState.type||(n.containerState.type=y,e.enter(y,{_container:!0})),y==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Jr,r,u)(p):u(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),o(p)}return r(p)}function o(p){return y0(p)&&++l<10?(e.consume(p),o):(!n.interrupt||l<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),u(p)):r(p)}function u(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(Ir,n.interrupt?r:h,e.attempt(d1,d,m))}function h(p){return n.containerState.initialBlankLine=!0,a++,d(p)}function m(p){return le(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),d):r(p)}function d(p){return n.containerState.size=a+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function y1(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(Ir,i,a);function i(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,ie(e,t,"listItemIndent",n.containerState.size+1)(s)}function a(s){return n.containerState.furtherBlankLines||!le(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,l(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt(g1,t,l)(s))}function l(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,ie(e,e.attempt(qe,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function b1(e,t,r){const n=this;return ie(e,i,"listItemIndent",n.containerState.size+1);function i(a){const l=n.events[n.events.length-1];return l&&l[1].type==="listItemIndent"&&l[2].sliceSerialize(l[1],!0).length===n.containerState.size?t(a):r(a)}}function x1(e){e.exit(this.containerState.type)}function w1(e,t,r){const n=this;return ie(e,i,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(a){const l=n.events[n.events.length-1];return!le(a)&&l&&l[1].type==="listItemPrefixWhitespace"?t(a):r(a)}}const _i={name:"setextUnderline",resolveTo:k1,tokenize:S1};function k1(e,t){let r=e.length,n,i,a;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(i=r)}else e[r][1].type==="content"&&e.splice(r,1),!a&&e[r][1].type==="definition"&&(a=r);const l={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type="setextHeadingText",a?(e.splice(i,0,["enter",l,t]),e.splice(a+1,0,["exit",e[n][1],t]),e[n][1].end={...e[a][1].end}):e[n][1]=l,e.push(["exit",l,t]),e}function S1(e,t,r){const n=this;let i;return a;function a(u){let h=n.events.length,m;for(;h--;)if(n.events[h][1].type!=="lineEnding"&&n.events[h][1].type!=="linePrefix"&&n.events[h][1].type!=="content"){m=n.events[h][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||m)?(e.enter("setextHeadingLine"),i=u,l(u)):r(u)}function l(u){return e.enter("setextHeadingLineSequence"),s(u)}function s(u){return u===i?(e.consume(u),s):(e.exit("setextHeadingLineSequence"),le(u)?ie(e,o,"lineSuffix")(u):o(u))}function o(u){return u===null||K(u)?(e.exit("setextHeadingLine"),t(u)):r(u)}}const Gi={}.hasOwnProperty;function Bl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function ar(e){const t=[];let r=-1,n=0,i=0;for(;++r55295&&a<57344){const s=e.charCodeAt(r+1);a<56320&&s>56319&&s<57344?(l=String.fromCharCode(a,s),i=1):l="�"}else l=String.fromCharCode(a);l&&(t.push(e.slice(n,r),encodeURIComponent(l)),n=r+i+1,l=""),i&&(r+=i,i=0)}return t.join("")+e.slice(n)}const M1={tokenize:E1};function E1(e){const t=e.attempt(this.parser.constructs.contentInitial,n,i);let r;return t;function n(s){if(s===null){e.consume(s);return}return e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),ie(e,t,"linePrefix")}function i(s){return e.enter("paragraph"),a(s)}function a(s){const o=e.enter("chunkText",{contentType:"text",previous:r});return r&&(r.next=o),r=o,l(s)}function l(s){if(s===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(s);return}return K(s)?(e.consume(s),e.exit("chunkText"),a):(e.consume(s),l)}}const I1={tokenize:D1},Xi={tokenize:B1};function D1(e){const t=this,r=[];let n=0,i,a,l;return s;function s(I){if(nl))return;const G=t.events.length;let X=G,U,E;for(;X--;)if(t.events[X][0]==="exit"&&t.events[X][1].type==="chunkFlow"){if(U){E=t.events[X][1].end;break}U=!0}for(A(n),M=G;MI;){const O=r[q];t.containerState=O[1],O[0].exit.call(t,e)}r.length=I}function z(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function B1(e,t,r){return ie(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}const F1={tokenize:R1};function R1(e){const t=this,r=e.attempt(Ir,n,e.attempt(this.parser.constructs.flowInitial,i,ie(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Iu,i)),"linePrefix")));return r;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function i(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const L1={resolveAll:Nl()},N1=Ll("string"),P1=Ll("text");function Ll(e){return{resolveAll:Nl(e==="text"?O1:void 0),tokenize:t};function t(r){const n=this,i=this.parser.constructs[e],a=r.attempt(i,l,s);return l;function l(h){return u(h)?a(h):s(h)}function s(h){if(h===null){r.consume(h);return}return r.enter("data"),r.consume(h),o}function o(h){return u(h)?(r.exit("data"),a(h)):(r.consume(h),o)}function u(h){if(h===null)return!0;const m=i[h];let d=-1;if(m)for(;++d-1){const s=l[0];typeof s=="string"?l[0]=s.slice(n):l.shift()}a>0&&l.push(e[i].slice(0,a))}return l}function Z1(e,t){let r=-1;const n=[];let i;for(;++r0){const rt=Q.tokenStack[Q.tokenStack.length-1];(rt[1]||Ki).call(Q,void 0,rt[0])}for(j.position={start:St(D.length>0?D[0][1].start:{line:1,column:1,offset:0}),end:St(D.length>0?D[D.length-2][1].end:{line:1,column:1,offset:0})},ce=-1;++ce0&&(n.className=["language-"+i[0]]);let a={type:"element",tagName:"code",properties:n,children:[{type:"text",value:r}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:"element",tagName:"pre",properties:{},children:[a]},e.patch(t,a),a}function hc(e,t){const r={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function mc(e,t){const r={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function fc(e,t){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=String(t.identifier).toUpperCase(),i=ar(n.toLowerCase()),a=e.footnoteOrder.indexOf(n);let l,s=e.footnoteCounts.get(n);s===void 0?(s=0,e.footnoteOrder.push(n),l=e.footnoteOrder.length):l=a+1,s+=1,e.footnoteCounts.set(n,s);const o={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+i,id:r+"fnref-"+i+(s>1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(l)}]};e.patch(t,o);const u={type:"element",tagName:"sup",properties:{},children:[o]};return e.patch(t,u),e.applyData(t,u)}function pc(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function dc(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function ql(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const i=e.all(t),a=i[0];a&&a.type==="text"?a.value="["+a.value:i.unshift({type:"text",value:"["});const l=i[i.length-1];return l&&l.type==="text"?l.value+=n:i.push({type:"text",value:n}),i}function gc(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return ql(e,t);const i={src:ar(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(i.title=n.title);const a={type:"element",tagName:"img",properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function vc(e,t){const r={src:ar(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function yc(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function bc(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return ql(e,t);const i={href:ar(n.url||"")};n.title!==null&&n.title!==void 0&&(i.title=n.title);const a={type:"element",tagName:"a",properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function xc(e,t){const r={href:ar(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function wc(e,t,r){const n=e.all(t),i=r?kc(r):Hl(t),a={},l=[];if(typeof t.checked=="boolean"){const h=n[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},n.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),a.className=["task-list-item"]}let s=-1;for(;++s1}function Sc(e,t){const r={},n=e.all(t);let i=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++i0){const l={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=G0(t.children[1]),o=Sl(t.children[t.children.length-1]);s&&o&&(l.position={start:s,end:o}),i.push(l)}const a={type:"element",tagName:"table",properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function Mc(e,t,r){const n=r?r.children:void 0,a=(n?n.indexOf(t):1)===0?"th":"td",l=r&&r.type==="table"?r.align:void 0,s=l?l.length:t.children.length;let o=-1;const u=[];for(;++o0,!0),n[0]),i=n.index+n[0].length,n=r.exec(t);return a.push(Ji(t.slice(i),i>0,!1)),a.join("")}function Ji(e,t,r){let n=0,i=e.length;if(t){let a=e.codePointAt(n);for(;a===Zi||a===Qi;)n++,a=e.codePointAt(n)}if(r){let a=e.codePointAt(i-1);for(;a===Zi||a===Qi;)i--,a=e.codePointAt(i-1)}return i>n?e.slice(n,i):""}function Dc(e,t){const r={type:"text",value:Ic(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function Bc(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const Fc={blockquote:oc,break:uc,code:cc,delete:hc,emphasis:mc,footnoteReference:fc,heading:pc,html:dc,imageReference:gc,image:vc,inlineCode:yc,linkReference:bc,link:xc,listItem:wc,list:Sc,paragraph:Ac,root:Tc,strong:Cc,table:zc,tableCell:Ec,tableRow:Mc,text:Dc,thematicBreak:Bc,toml:jr,yaml:jr,definition:jr,footnoteDefinition:jr};function jr(){}const jl=-1,vn=0,wr=1,nn=2,K0=3,Z0=4,Q0=5,J0=6,$l=7,Ul=8,Vl=typeof self=="object"?self:globalThis,ea=(e,t)=>{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new Vl[e](t)},Rc=(e,t)=>{const r=(i,a)=>(e.set(a,i),i),n=i=>{if(e.has(i))return e.get(i);const[a,l]=t[i];switch(a){case vn:case jl:return r(l,i);case wr:{const s=r([],i);for(const o of l)s.push(n(o));return s}case nn:{const s=r({},i);for(const[o,u]of l)s[n(o)]=n(u);return s}case K0:return r(new Date(l),i);case Z0:{const{source:s,flags:o}=l;return r(new RegExp(s,o),i)}case Q0:{const s=r(new Map,i);for(const[o,u]of l)s.set(n(o),n(u));return s}case J0:{const s=r(new Set,i);for(const o of l)s.add(n(o));return s}case $l:{const{name:s,message:o}=l;return r(typeof Vl[s]=="function"?ea(s,o):new Error(o),i)}case Ul:return r(BigInt(l),i);case"BigInt":return r(Object(BigInt(l)),i);case"ArrayBuffer":return r(new Uint8Array(l).buffer,l);case"DataView":{const{buffer:s}=new Uint8Array(l);return r(new DataView(s),l)}}return r(ea(a,l),i)};return n},ta=e=>Rc(new Map,e)(0),qt="",{toString:Lc}={},{keys:Nc}=Object,vr=e=>{const t=typeof e;if(t!=="object"||!e)return[vn,t];const r=Lc.call(e).slice(8,-1);switch(r){case"Array":return[wr,qt];case"Object":return[nn,qt];case"Date":return[K0,qt];case"RegExp":return[Z0,qt];case"Map":return[Q0,qt];case"Set":return[J0,qt];case"DataView":return[wr,r]}return r.includes("Array")?[wr,r]:e instanceof Error?[$l,e.name||"Error"]:[nn,r]},$r=([e,t])=>e===vn&&(t==="function"||t==="symbol"),Pc=(e,t,r,n)=>{const i=(l,s)=>{const o=n.push(l)-1;return r.set(s,o),o},a=l=>{if(r.has(l))return r.get(l);let[s,o]=vr(l);switch(s){case vn:{let h=l;switch(o){case"bigint":s=Ul,h=l.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+o);h=null;break;case"undefined":return i([jl],l)}return i([s,h],l)}case wr:{if(o){let d=l;return o==="DataView"?d=new Uint8Array(l.buffer):o==="ArrayBuffer"&&(d=new Uint8Array(l)),i([o,[...d]],l)}const h=[],m=i([s,h],l);for(const d of l)h.push(a(d));return m}case nn:{if(o)switch(o){case"BigInt":return i([o,l.toString()],l);case"Boolean":case"Number":case"String":return i([o,l.valueOf()],l)}if(t&&"toJSON"in l)return a(l.toJSON());const h=[],m=i([s,h],l);for(const d of Nc(l))(e||!$r(vr(l[d])))&&h.push([a(d),a(l[d])]);return m}case K0:return i([s,isNaN(l.getTime())?qt:l.toISOString()],l);case Z0:{const{source:h,flags:m}=l;return i([s,{source:h,flags:m}],l)}case Q0:{const h=[],m=i([s,h],l);for(const[d,p]of l)(e||!($r(vr(d))||$r(vr(p))))&&h.push([a(d),a(p)]);return m}case J0:{const h=[],m=i([s,h],l);for(const d of l)(e||!$r(vr(d)))&&h.push(a(d));return m}}const{message:u}=l;return i([s,{name:o,message:u}],l)};return a},ra=(e,{json:t,lossy:r}={})=>{const n=[];return Pc(!(t||r),!!t,new Map,n)(e),n},an=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?ta(ra(e,t)):structuredClone(e):(e,t)=>ta(ra(e,t));function Oc(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function qc(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function Hc(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||Oc,n=e.options.footnoteBackLabel||qc,i=e.options.footnoteLabel||"Footnotes",a=e.options.footnoteLabelTagName||"h2",l=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let o=-1;for(;++o0&&y.push({type:"text",value:" "});let z=typeof r=="string"?r:r(o,p);typeof z=="string"&&(z={type:"text",value:z}),y.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+d+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(o,p),className:["data-footnote-backref"]},children:Array.isArray(z)?z:[z]})}const C=h[h.length-1];if(C&&C.type==="element"&&C.tagName==="p"){const z=C.children[C.children.length-1];z&&z.type==="text"?z.value+=" ":C.children.push({type:"text",value:" "}),C.children.push(...y)}else h.push(...y);const A={type:"element",tagName:"li",properties:{id:t+"fn-"+d},children:e.wrap(h,!0)};e.patch(u,A),s.push(A)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:a,properties:{...an(l),id:"footnote-label"},children:[{type:"text",value:i}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const Dr=(function(e){if(e==null)return Vc;if(typeof e=="function")return yn(e);if(typeof e=="object")return Array.isArray(e)?jc(e):$c(e);if(typeof e=="string")return Uc(e);throw new Error("Expected function, string, or object as test")});function jc(e){const t=[];let r=-1;for(;++r":""))+")"})}return d;function d(){let p=_l,y,w,C;if((!t||a(o,u,h[h.length-1]||void 0))&&(p=Wc(r(o,h)),p[0]===x0))return p;if("children"in o&&o.children){const A=o;if(A.children&&p[0]!==Gl)for(w=(n?A.children.length:-1)+l,C=h.concat(A);w>-1&&w0&&r.push({type:"text",value:` -`}),r}function na(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function ia(e,t){const r=Yc(e,t),n=r.one(e,void 0),i=Hc(r),a=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return i&&a.children.push({type:"text",value:` -`},i),a}function eh(e,t){return e&&"run"in e?async function(r,n){const i=ia(r,{file:n,...t});await e.run(i,n)}:function(r,n){return ia(r,{file:n,...e||t})}}function aa(e){if(e)throw e}var jn,la;function th(){if(la)return jn;la=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=function(u){return typeof Array.isArray=="function"?Array.isArray(u):t.call(u)==="[object Array]"},a=function(u){if(!u||t.call(u)!=="[object Object]")return!1;var h=e.call(u,"constructor"),m=u.constructor&&u.constructor.prototype&&e.call(u.constructor.prototype,"isPrototypeOf");if(u.constructor&&!h&&!m)return!1;var d;for(d in u);return typeof d>"u"||e.call(u,d)},l=function(u,h){r&&h.name==="__proto__"?r(u,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):u[h.name]=h.newValue},s=function(u,h){if(h==="__proto__")if(e.call(u,h)){if(n)return n(u,h).value}else return;return u[h]};return jn=function o(){var u,h,m,d,p,y,w=arguments[0],C=1,A=arguments.length,z=!1;for(typeof w=="boolean"&&(z=w,w=arguments[1]||{},C=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Cl.length;let o;s&&l.push(i);try{o=e.apply(this,l)}catch(u){const h=u;if(s&&r)throw h;return i(h)}s||(o&&o.then&&typeof o.then=="function"?o.then(a,i):o instanceof Error?i(o):a(o))}function i(l,...s){r||(r=!0,t(l,...s))}function a(l){i(null,l)}}const ah=(function(e){const n=this.constructor.prototype,i=n[e],a=function(){return i.apply(a,arguments)};return Object.setPrototypeOf(a,n),a}),lh={}.hasOwnProperty;class ri extends ah{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=nh()}copy(){const t=new ri;let r=-1;for(;++r0){let[p,...y]=h;const w=n[d][1];k0(w)&&k0(p)&&(p=$n(!0,w,p)),n[d]=[u,p,...y]}}}}const sh=new ri().freeze();function Un(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function Vn(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function _n(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function sa(e){if(!k0(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function oa(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Ur(e){return oh(e)?e:new fl(e)}function oh(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function uh(e){return typeof e=="string"||ch(e)}function ch(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}function hh(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function mh(e,t,r){const i=Dr((r||{}).ignore||[]),a=fh(t);let l=-1;for(;++l0?{type:"text",value:M}:void 0),M===!1?d.lastIndex=q+1:(y!==q&&z.push({type:"text",value:u.value.slice(y,q)}),Array.isArray(M)?z.push(...M):M&&z.push(M),y=q+I[0].length,A=!0),!d.global)break;I=d.exec(u.value)}return A?(y?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const i=qi(e,"(");let a=qi(e,")");for(;n!==-1&&i>a;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),a++;return[e,r]}function Wl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||Ut(r)||dn(r))&&(!t||r!==47)}Xl.peek=Nh;function Mh(){this.buffer()}function Eh(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function Ih(){this.buffer()}function Dh(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function Bh(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=nt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Fh(e){this.exit(e)}function Rh(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=nt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Lh(e){this.exit(e)}function Nh(){return"["}function Xl(e,t,r,n){const i=r.createTracker(n);let a=i.move("[^");const l=r.enter("footnoteReference"),s=r.enter("reference");return a+=i.move(r.safe(r.associationId(e),{after:"]",before:a})),s(),l(),a+=i.move("]"),a}function Ph(){return{enter:{gfmFootnoteCallString:Mh,gfmFootnoteCall:Eh,gfmFootnoteDefinitionLabelString:Ih,gfmFootnoteDefinition:Dh},exit:{gfmFootnoteCallString:Bh,gfmFootnoteCall:Fh,gfmFootnoteDefinitionLabelString:Rh,gfmFootnoteDefinition:Lh}}}function Oh(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Xl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,i,a,l){const s=a.createTracker(l);let o=s.move("[^");const u=a.enter("footnoteDefinition"),h=a.enter("label");return o+=s.move(a.safe(a.associationId(n),{before:o,after:"]"})),h(),o+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),o+=s.move((t?` -`:" ")+a.indentLines(a.containerFlow(n,s.current()),t?Yl:qh))),u(),o}}function qh(e,t,r){return t===0?e:Yl(e,t,r)}function Yl(e,t,r){return(r?"":" ")+e}const Hh=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Kl.peek=_h;function jh(){return{canContainEols:["delete"],enter:{strikethrough:Uh},exit:{strikethrough:Vh}}}function $h(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Hh}],handlers:{delete:Kl}}}function Uh(e){this.enter({type:"delete",children:[]},e)}function Vh(e){this.exit(e)}function Kl(e,t,r,n){const i=r.createTracker(n),a=r.enter("strikethrough");let l=i.move("~~");return l+=r.containerPhrasing(e,{...i.current(),before:l,after:"~"}),l+=i.move("~~"),a(),l}function _h(){return"~"}function Gh(e){return e.length}function Wh(e,t){const r=t||{},n=(r.align||[]).concat(),i=r.stringLength||Gh,a=[],l=[],s=[],o=[];let u=0,h=-1;for(;++hu&&(u=e[h].length);++Ao[A])&&(o[A]=I)}w.push(z)}l[h]=w,s[h]=C}let m=-1;if(typeof n=="object"&&"length"in n)for(;++mo[m]&&(o[m]=z),p[m]=z),d[m]=I}l.splice(1,0,d),s.splice(1,0,p),h=-1;const y=[];for(;++h "),a.shift(2);const l=r.indentLines(r.containerFlow(e,a.current()),Kh);return i(),l}function Kh(e,t,r){return">"+(r?"":" ")+e}function Zh(e,t){return ca(e,t.inConstruct,!0)&&!ca(e,t.notInConstruct,!1)}function ca(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nl&&(l=a):a=1,i=n+t.length,n=r.indexOf(t,i);return l}function Qh(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Jh(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function e4(e,t,r,n){const i=Jh(r),a=e.value||"",l=i==="`"?"GraveAccent":"Tilde";if(Qh(e,r)){const m=r.enter("codeIndented"),d=r.indentLines(a,t4);return m(),d}const s=r.createTracker(n),o=i.repeat(Math.max(Zl(a,i)+1,3)),u=r.enter("codeFenced");let h=s.move(o);if(e.lang){const m=r.enter(`codeFencedLang${l}`);h+=s.move(r.safe(e.lang,{before:h,after:" ",encode:["`"],...s.current()})),m()}if(e.lang&&e.meta){const m=r.enter(`codeFencedMeta${l}`);h+=s.move(" "),h+=s.move(r.safe(e.meta,{before:h,after:` -`,encode:["`"],...s.current()})),m()}return h+=s.move(` -`),a&&(h+=s.move(a+` -`)),h+=s.move(o),u(),h}function t4(e,t,r){return(r?"":" ")+e}function ni(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function r4(e,t,r,n){const i=ni(r),a=i==='"'?"Quote":"Apostrophe",l=r.enter("definition");let s=r.enter("label");const o=r.createTracker(n);let u=o.move("[");return u+=o.move(r.safe(r.associationId(e),{before:u,after:"]",...o.current()})),u+=o.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),u+=o.move("<"),u+=o.move(r.safe(e.url,{before:u,after:">",...o.current()})),u+=o.move(">")):(s=r.enter("destinationRaw"),u+=o.move(r.safe(e.url,{before:u,after:e.title?" ":` -`,...o.current()}))),s(),e.title&&(s=r.enter(`title${a}`),u+=o.move(" "+i),u+=o.move(r.safe(e.title,{before:u,after:i,...o.current()})),u+=o.move(i),s()),l(),u}function n4(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function Ar(e){return"&#x"+e.toString(16).toUpperCase()+";"}function ln(e,t,r){const n=er(e),i=er(t);return n===void 0?i===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Ql.peek=i4;function Ql(e,t,r,n){const i=n4(r),a=r.enter("emphasis"),l=r.createTracker(n),s=l.move(i);let o=l.move(r.containerPhrasing(e,{after:i,before:s,...l.current()}));const u=o.charCodeAt(0),h=ln(n.before.charCodeAt(n.before.length-1),u,i);h.inside&&(o=Ar(u)+o.slice(1));const m=o.charCodeAt(o.length-1),d=ln(n.after.charCodeAt(0),m,i);d.inside&&(o=o.slice(0,-1)+Ar(m));const p=l.move(i);return a(),r.attentionEncodeSurroundingInfo={after:d.outside,before:h.outside},s+o+p}function i4(e,t,r){return r.options.emphasis||"*"}function a4(e,t){let r=!1;return ti(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,x0}),!!((!e.depth||e.depth<3)&&Y0(e)&&(t.options.setext||r))}function l4(e,t,r,n){const i=Math.max(Math.min(6,e.depth||1),1),a=r.createTracker(n);if(a4(e,r)){const h=r.enter("headingSetext"),m=r.enter("phrasing"),d=r.containerPhrasing(e,{...a.current(),before:` -`,after:` -`});return m(),h(),d+` -`+(i===1?"=":"-").repeat(d.length-(Math.max(d.lastIndexOf("\r"),d.lastIndexOf(` -`))+1))}const l="#".repeat(i),s=r.enter("headingAtx"),o=r.enter("phrasing");a.move(l+" ");let u=r.containerPhrasing(e,{before:"# ",after:` -`,...a.current()});return/^[\t ]/.test(u)&&(u=Ar(u.charCodeAt(0))+u.slice(1)),u=u?l+" "+u:l,r.options.closeAtx&&(u+=" "+l),o(),s(),u}Jl.peek=s4;function Jl(e){return e.value||""}function s4(){return"<"}es.peek=o4;function es(e,t,r,n){const i=ni(r),a=i==='"'?"Quote":"Apostrophe",l=r.enter("image");let s=r.enter("label");const o=r.createTracker(n);let u=o.move("![");return u+=o.move(r.safe(e.alt,{before:u,after:"]",...o.current()})),u+=o.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),u+=o.move("<"),u+=o.move(r.safe(e.url,{before:u,after:">",...o.current()})),u+=o.move(">")):(s=r.enter("destinationRaw"),u+=o.move(r.safe(e.url,{before:u,after:e.title?" ":")",...o.current()}))),s(),e.title&&(s=r.enter(`title${a}`),u+=o.move(" "+i),u+=o.move(r.safe(e.title,{before:u,after:i,...o.current()})),u+=o.move(i),s()),u+=o.move(")"),l(),u}function o4(){return"!"}ts.peek=u4;function ts(e,t,r,n){const i=e.referenceType,a=r.enter("imageReference");let l=r.enter("label");const s=r.createTracker(n);let o=s.move("![");const u=r.safe(e.alt,{before:o,after:"]",...s.current()});o+=s.move(u+"]["),l();const h=r.stack;r.stack=[],l=r.enter("reference");const m=r.safe(r.associationId(e),{before:o,after:"]",...s.current()});return l(),r.stack=h,a(),i==="full"||!u||u!==m?o+=s.move(m+"]"):i==="shortcut"?o=o.slice(0,-1):o+=s.move("]"),o}function u4(){return"!"}rs.peek=c4;function rs(e,t,r){let n=e.value||"",i="`",a=-1;for(;new RegExp("(^|[^`])"+i+"([^`]|$)").test(n);)i+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++a\u007F]/.test(e.url))}is.peek=h4;function is(e,t,r,n){const i=ni(r),a=i==='"'?"Quote":"Apostrophe",l=r.createTracker(n);let s,o;if(ns(e,r)){const h=r.stack;r.stack=[],s=r.enter("autolink");let m=l.move("<");return m+=l.move(r.containerPhrasing(e,{before:m,after:">",...l.current()})),m+=l.move(">"),s(),r.stack=h,m}s=r.enter("link"),o=r.enter("label");let u=l.move("[");return u+=l.move(r.containerPhrasing(e,{before:u,after:"](",...l.current()})),u+=l.move("]("),o(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(o=r.enter("destinationLiteral"),u+=l.move("<"),u+=l.move(r.safe(e.url,{before:u,after:">",...l.current()})),u+=l.move(">")):(o=r.enter("destinationRaw"),u+=l.move(r.safe(e.url,{before:u,after:e.title?" ":")",...l.current()}))),o(),e.title&&(o=r.enter(`title${a}`),u+=l.move(" "+i),u+=l.move(r.safe(e.title,{before:u,after:i,...l.current()})),u+=l.move(i),o()),u+=l.move(")"),s(),u}function h4(e,t,r){return ns(e,r)?"<":"["}as.peek=m4;function as(e,t,r,n){const i=e.referenceType,a=r.enter("linkReference");let l=r.enter("label");const s=r.createTracker(n);let o=s.move("[");const u=r.containerPhrasing(e,{before:o,after:"]",...s.current()});o+=s.move(u+"]["),l();const h=r.stack;r.stack=[],l=r.enter("reference");const m=r.safe(r.associationId(e),{before:o,after:"]",...s.current()});return l(),r.stack=h,a(),i==="full"||!u||u!==m?o+=s.move(m+"]"):i==="shortcut"?o=o.slice(0,-1):o+=s.move("]"),o}function m4(){return"["}function ii(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function f4(e){const t=ii(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function p4(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function ls(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function d4(e,t,r,n){const i=r.enter("list"),a=r.bulletCurrent;let l=e.ordered?p4(r):ii(r);const s=e.ordered?l==="."?")":".":f4(r);let o=t&&r.bulletLastUsed?l===r.bulletLastUsed:!1;if(!e.ordered){const h=e.children?e.children[0]:void 0;if((l==="*"||l==="-")&&h&&(!h.children||!h.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(o=!0),ls(r)===l&&h){let m=-1;for(;++m-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let l=a.length+1;(i==="tab"||i==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(l=Math.ceil(l/4)*4);const s=r.createTracker(n);s.move(a+" ".repeat(l-a.length)),s.shift(l);const o=r.enter("listItem"),u=r.indentLines(r.containerFlow(e,s.current()),h);return o(),u;function h(m,d,p){return d?(p?"":" ".repeat(l))+m:(p?a:a+" ".repeat(l-a.length))+m}}function y4(e,t,r,n){const i=r.enter("paragraph"),a=r.enter("phrasing"),l=r.containerPhrasing(e,n);return a(),i(),l}const b4=Dr(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function x4(e,t,r,n){return(e.children.some(function(l){return b4(l)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function w4(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}ss.peek=k4;function ss(e,t,r,n){const i=w4(r),a=r.enter("strong"),l=r.createTracker(n),s=l.move(i+i);let o=l.move(r.containerPhrasing(e,{after:i,before:s,...l.current()}));const u=o.charCodeAt(0),h=ln(n.before.charCodeAt(n.before.length-1),u,i);h.inside&&(o=Ar(u)+o.slice(1));const m=o.charCodeAt(o.length-1),d=ln(n.after.charCodeAt(0),m,i);d.inside&&(o=o.slice(0,-1)+Ar(m));const p=l.move(i+i);return a(),r.attentionEncodeSurroundingInfo={after:d.outside,before:h.outside},s+o+p}function k4(e,t,r){return r.options.strong||"*"}function S4(e,t,r,n){return r.safe(e.value,n)}function A4(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function T4(e,t,r){const n=(ls(r)+(r.options.ruleSpaces?" ":"")).repeat(A4(r));return r.options.ruleSpaces?n.slice(0,-1):n}const os={blockquote:Yh,break:ha,code:e4,definition:r4,emphasis:Ql,hardBreak:ha,heading:l4,html:Jl,image:es,imageReference:ts,inlineCode:rs,link:is,linkReference:as,list:d4,listItem:v4,paragraph:y4,root:x4,strong:ss,text:S4,thematicBreak:T4};function C4(){return{enter:{table:z4,tableData:ma,tableHeader:ma,tableRow:E4},exit:{codeText:I4,table:M4,tableData:Yn,tableHeader:Yn,tableRow:Yn}}}function z4(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function M4(e){this.exit(e),this.data.inTable=void 0}function E4(e){this.enter({type:"tableRow",children:[]},e)}function Yn(e){this.exit(e)}function ma(e){this.enter({type:"tableCell",children:[]},e)}function I4(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,D4));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function D4(e,t){return t==="|"?t:e}function B4(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,i=t.stringLength,a=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:d,table:l,tableCell:o,tableRow:s}};function l(p,y,w,C){return u(h(p,w,C),p.align)}function s(p,y,w,C){const A=m(p,w,C),z=u([A]);return z.slice(0,z.indexOf(` -`))}function o(p,y,w,C){const A=w.enter("tableCell"),z=w.enter("phrasing"),I=w.containerPhrasing(p,{...C,before:a,after:a});return z(),A(),I}function u(p,y){return Wh(p,{align:y,alignDelimiters:n,padding:r,stringLength:i})}function h(p,y,w){const C=p.children;let A=-1;const z=[],I=y.enter("table");for(;++A0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const K4={tokenize:im,partial:!0};function Z4(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:tm,continuation:{tokenize:rm},exit:nm}},text:{91:{name:"gfmFootnoteCall",tokenize:em},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:Q4,resolveTo:J4}}}}function Q4(e,t,r){const n=this;let i=n.events.length;const a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let l;for(;i--;){const o=n.events[i][1];if(o.type==="labelImage"){l=o;break}if(o.type==="gfmFootnoteCall"||o.type==="labelLink"||o.type==="label"||o.type==="image"||o.type==="link")break}return s;function s(o){if(!l||!l._balanced)return r(o);const u=nt(n.sliceSerialize({start:l.end,end:n.now()}));return u.codePointAt(0)!==94||!a.includes(u.slice(1))?r(o):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(o),e.exit("gfmFootnoteCallLabelMarker"),t(o))}}function J4(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},l={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",i,t],["exit",i,t],["enter",a,t],["enter",l,t],["exit",l,t],["exit",a,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function em(e,t,r){const n=this,i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let a=0,l;return s;function s(m){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),o}function o(m){return m!==94?r(m):(e.enter("gfmFootnoteCallMarker"),e.consume(m),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(m){if(a>999||m===93&&!l||m===null||m===91||me(m))return r(m);if(m===93){e.exit("chunkString");const d=e.exit("gfmFootnoteCallString");return i.includes(nt(n.sliceSerialize(d)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(m)}return me(m)||(l=!0),a++,e.consume(m),m===92?h:u}function h(m){return m===91||m===92||m===93?(e.consume(m),a++,u):u(m)}}function tm(e,t,r){const n=this,i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let a,l=0,s;return o;function o(y){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(y),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(y){return y===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(y),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",h):r(y)}function h(y){if(l>999||y===93&&!s||y===null||y===91||me(y))return r(y);if(y===93){e.exit("chunkString");const w=e.exit("gfmFootnoteDefinitionLabelString");return a=nt(n.sliceSerialize(w)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(y),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),d}return me(y)||(s=!0),l++,e.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(e.consume(y),l++,h):h(y)}function d(y){return y===58?(e.enter("definitionMarker"),e.consume(y),e.exit("definitionMarker"),i.includes(a)||i.push(a),ie(e,p,"gfmFootnoteDefinitionWhitespace")):r(y)}function p(y){return t(y)}}function rm(e,t,r){return e.check(Ir,t,e.attempt(K4,t,r))}function nm(e){e.exit("gfmFootnoteDefinition")}function im(e,t,r){const n=this;return ie(e,i,"gfmFootnoteDefinitionIndent",5);function i(a){const l=n.events[n.events.length-1];return l&&l[1].type==="gfmFootnoteDefinitionIndent"&&l[2].sliceSerialize(l[1],!0).length===4?t(a):r(a)}}function am(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:a,resolveAll:i};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function i(l,s){let o=-1;for(;++o1?o(y):(l.consume(y),m++,p);if(m<2&&!r)return o(y);const C=l.exit("strikethroughSequenceTemporary"),A=er(y);return C._open=!A||A===2&&!!w,C._close=!w||w===2&&!!A,s(y)}}}class lm{constructor(){this.map=[]}add(t,r,n){sm(this,t,r,n)}consume(t){if(this.map.sort(function(a,l){return a[0]-l[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let i=n.pop();for(;i;){for(const a of i)t.push(a);i=n.pop()}this.map.length=0}}function sm(e,t,r,n){let i=0;if(!(r===0&&n.length===0)){for(;i-1;){const Y=n.events[V][1].type;if(Y==="lineEnding"||Y==="linePrefix")V--;else break}const $=V>-1?n.events[V][1].type:null,se=$==="tableHead"||$==="tableRow"?M:o;return se===M&&n.parser.lazy[n.now().line]?r(E):se(E)}function o(E){return e.enter("tableHead"),e.enter("tableRow"),u(E)}function u(E){return E===124||(l=!0,a+=1),h(E)}function h(E){return E===null?r(E):K(E)?a>1?(a=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(E),e.exit("lineEnding"),p):r(E):le(E)?ie(e,h,"whitespace")(E):(a+=1,l&&(l=!1,i+=1),E===124?(e.enter("tableCellDivider"),e.consume(E),e.exit("tableCellDivider"),l=!0,h):(e.enter("data"),m(E)))}function m(E){return E===null||E===124||me(E)?(e.exit("data"),h(E)):(e.consume(E),E===92?d:m)}function d(E){return E===92||E===124?(e.consume(E),m):m(E)}function p(E){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(E):(e.enter("tableDelimiterRow"),l=!1,le(E)?ie(e,y,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E):y(E))}function y(E){return E===45||E===58?C(E):E===124?(l=!0,e.enter("tableCellDivider"),e.consume(E),e.exit("tableCellDivider"),w):O(E)}function w(E){return le(E)?ie(e,C,"whitespace")(E):C(E)}function C(E){return E===58?(a+=1,l=!0,e.enter("tableDelimiterMarker"),e.consume(E),e.exit("tableDelimiterMarker"),A):E===45?(a+=1,A(E)):E===null||K(E)?q(E):O(E)}function A(E){return E===45?(e.enter("tableDelimiterFiller"),z(E)):O(E)}function z(E){return E===45?(e.consume(E),z):E===58?(l=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(E),e.exit("tableDelimiterMarker"),I):(e.exit("tableDelimiterFiller"),I(E))}function I(E){return le(E)?ie(e,q,"whitespace")(E):q(E)}function q(E){return E===124?y(E):E===null||K(E)?!l||i!==a?O(E):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(E)):O(E)}function O(E){return r(E)}function M(E){return e.enter("tableRow"),G(E)}function G(E){return E===124?(e.enter("tableCellDivider"),e.consume(E),e.exit("tableCellDivider"),G):E===null||K(E)?(e.exit("tableRow"),t(E)):le(E)?ie(e,G,"whitespace")(E):(e.enter("data"),X(E))}function X(E){return E===null||E===124||me(E)?(e.exit("data"),G(E)):(e.consume(E),E===92?U:X)}function U(E){return E===92||E===124?(e.consume(E),X):X(E)}}function hm(e,t){let r=-1,n=!0,i=0,a=[0,0,0,0],l=[0,0,0,0],s=!1,o=0,u,h,m;const d=new lm;for(;++rr[2]+1){const y=r[2]+1,w=r[3]-r[2]-1;e.add(y,w,[])}}e.add(r[3]+1,0,[["exit",m,t]])}return i!==void 0&&(a.end=Object.assign({},Qt(t.events,i)),e.add(i,0,[["exit",a,t]]),a=void 0),a}function pa(e,t,r,n,i){const a=[],l=Qt(t.events,r);i&&(i.end=Object.assign({},l),a.push(["exit",i,t])),n.end=Object.assign({},l),a.push(["exit",n,t]),e.add(r+1,0,a)}function Qt(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const mm={name:"tasklistCheck",tokenize:pm};function fm(){return{text:{91:mm}}}function pm(e,t,r){const n=this;return i;function i(o){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(o):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(o),e.exit("taskListCheckMarker"),a)}function a(o){return me(o)?(e.enter("taskListCheckValueUnchecked"),e.consume(o),e.exit("taskListCheckValueUnchecked"),l):o===88||o===120?(e.enter("taskListCheckValueChecked"),e.consume(o),e.exit("taskListCheckValueChecked"),l):r(o)}function l(o){return o===93?(e.enter("taskListCheckMarker"),e.consume(o),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(o)}function s(o){return K(o)?t(o):le(o)?e.check({tokenize:dm},t,r)(o):r(o)}}function dm(e,t,r){return ie(e,n,"whitespace");function n(i){return i===null?r(i):t(i)}}function gm(e){return Bl([j4(),Z4(),am(e),um(),fm()])}const vm={};function U5(e){const t=this,r=e||vm,n=t.data(),i=n.micromarkExtensions||(n.micromarkExtensions=[]),a=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),l=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);i.push(gm(r)),a.push(P4()),l.push(O4(r))}const li={}.hasOwnProperty,ym=new Map,bm=/[A-Z]/g,xm=new Set(["table","tbody","thead","tfoot","tr"]),wm=new Set(["td","th"]),vs="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function km(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=Im(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=Em(r,t.jsx,t.jsxs)}const i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?pn:kl,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=ys(i,e,void 0);return a&&typeof a!="string"?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function ys(e,t,r){if(t.type==="element")return Sm(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return Am(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return Cm(e,t,r);if(t.type==="mdxjsEsm")return Tm(e,t);if(t.type==="root")return zm(e,t,r);if(t.type==="text")return Mm(e,t)}function Sm(e,t,r){const n=e.schema;let i=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(i=pn,e.schema=i),e.ancestors.push(t);const a=xs(e,t.tagName,!1),l=Dm(e,t);let s=oi(e,t);return xm.has(t.tagName)&&(s=s.filter(function(o){return typeof o=="string"?!iu(o):!0})),bs(e,l,a,t),si(l,s),e.ancestors.pop(),e.schema=n,e.create(t,a,l,r)}function Am(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}Tr(e,t.position)}function Tm(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Tr(e,t.position)}function Cm(e,t,r){const n=e.schema;let i=n;t.name==="svg"&&n.space==="html"&&(i=pn,e.schema=i),e.ancestors.push(t);const a=t.name===null?e.Fragment:xs(e,t.name,!0),l=Bm(e,t),s=oi(e,t);return bs(e,l,a,t),si(l,s),e.ancestors.pop(),e.schema=n,e.create(t,a,l,r)}function zm(e,t,r){const n={};return si(n,oi(e,t)),e.create(t,e.Fragment,n,r)}function Mm(e,t){return t.value}function bs(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function si(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function Em(e,t,r){return n;function n(i,a,l,s){const u=Array.isArray(l.children)?r:t;return s?u(a,l,s):u(a,l)}}function Im(e,t){return r;function r(n,i,a,l){const s=Array.isArray(a.children),o=G0(n);return t(i,a,l,s,{columnNumber:o?o.column-1:void 0,fileName:e,lineNumber:o?o.line:void 0},void 0)}}function Dm(e,t){const r={};let n,i;for(i in t.properties)if(i!=="children"&&li.call(t.properties,i)){const a=Fm(e,i,t.properties[i]);if(a){const[l,s]=a;e.tableCellAlignToStyle&&l==="align"&&typeof s=="string"&&wm.has(t.tagName)?n=s:r[l]=s}}if(n){const a=r.style||(r.style={});a[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function Bm(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const a=n.data.estree.body[0];a.type;const l=a.expression;l.type;const s=l.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else Tr(e,t.position);else{const i=n.name;let a;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,a=e.evaluater.evaluateExpression(s.expression)}else Tr(e,t.position);else a=n.value===null?!0:n.value;r[i]=a}return r}function oi(e,t){const r=[];let n=-1;const i=e.passKeys?new Map:ym;for(;++ni||r!==-1&&t>r||n!==-1&&t>n||qm.test(e.slice(0,t))?e:""}function _m(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:a},exit:{mathFlow:i,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:l,mathTextData:s}};function e(o){const u={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[u]}},o)}function t(){this.buffer()}function r(){const o=this.resume(),u=this.stack[this.stack.length-1];u.type,u.meta=o}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function i(o){const u=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(o),h.value=u;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:u}),this.data.mathFlowInside=void 0}function a(o){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},o),this.buffer()}function l(o){const u=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(o),h.value=u,h.data.hChildren.push({type:"text",value:u})}function s(o){this.config.enter.data.call(this,o),this.config.exit.data.call(this,o)}}function Gm(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=i,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(a,l,s,o){const u=a.value||"",h=s.createTracker(o),m="$".repeat(Math.max(Zl(u,"$")+1,2)),d=s.enter("mathFlow");let p=h.move(m);if(a.meta){const y=s.enter("mathFlowMeta");p+=h.move(s.safe(a.meta,{after:` -`,before:p,encode:["$"],...h.current()})),y()}return p+=h.move(` -`),u&&(p+=h.move(u+` -`)),p+=h.move(m),d(),p}function n(a,l,s){let o=a.value||"",u=1;for(t||u++;new RegExp("(^|[^$])"+"\\$".repeat(u)+"([^$]|$)").test(o);)u++;const h="$".repeat(u);/[^ \r\n]/.test(o)&&(/^[ \r\n]/.test(o)&&/[ \r\n]$/.test(o)||/^\$|\$$/.test(o))&&(o=" "+o+" ");let m=-1;for(;++mu&&(u=h):h&&(u!==void 0&&u>-1&&o.push(` -`.repeat(u)||" "),u=-1,o.push(h))}return o.join("")}function Ts(e,t,r){return e.type==="element"?Tf(e,t,r):e.type==="text"?r.whitespace==="normal"?Cs(e,r):Cf(e):[]}function Tf(e,t,r){const n=zs(e,r),i=e.children||[];let a=-1,l=[];if(Sf(e))return l;let s,o;for(T0(e)||Ta(e)&&wa(t,e,Ta)?o=` -`:kf(e)?(s=2,o=2):As(e)&&(s=1,o=1);++a15?u="…"+s.slice(i-15,i):u=s.slice(0,i);var h;a+15e.replace(Df,"-$1").toLowerCase(),Ff={"&":"&",">":">","<":"<",'"':""","'":"'"},Rf=/[&><"']/g,De=e=>String(e).replace(Rf,t=>Ff[t]),en=e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?en(e.body[0]):e:e.type==="font"?en(e.body):e,Lf=new Set(["mathord","textord","atom"]),xt=e=>Lf.has(en(e).type),Nf=e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},C0={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function Pf(e){if(typeof e!="string")return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function Of(e){if(e.default!==void 0)return e.default;var t=Array.isArray(e.type)?e.type[0]:e.type;return Pf(t)}function qf(e,t,r,n){var i=r[t];e[t]=i!==void 0?n.processor?n.processor(i):i:Of(n)}class ci{constructor(t){t===void 0&&(t={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r of Object.keys(C0)){var n=C0[r];n&&qf(this,r,t,n)}}reportNonstrict(t,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(t,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new L("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var i=this.strict;if(typeof i=="function")try{i=i(t,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=Nf(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class At{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return lt[Hf[this.id]]}sub(){return lt[jf[this.id]]}fracNum(){return lt[$f[this.id]]}fracDen(){return lt[Uf[this.id]]}cramp(){return lt[Vf[this.id]]}text(){return lt[_f[this.id]]}isTight(){return this.size>=2}}var hi=0,sn=1,Jt=2,vt=3,Cr=4,Je=5,tr=6,Pe=7,lt=[new At(hi,0,!1),new At(sn,0,!0),new At(Jt,1,!1),new At(vt,1,!0),new At(Cr,2,!1),new At(Je,2,!0),new At(tr,3,!1),new At(Pe,3,!0)],Hf=[Cr,Je,Cr,Je,tr,Pe,tr,Pe],jf=[Je,Je,Je,Je,Pe,Pe,Pe,Pe],$f=[Jt,vt,Cr,Je,tr,Pe,tr,Pe],Uf=[vt,vt,Je,Je,Pe,Pe,Pe,Pe],Vf=[sn,sn,vt,vt,Je,Je,Pe,Pe],_f=[hi,sn,Jt,vt,Jt,vt,Jt,vt],te={DISPLAY:lt[hi],TEXT:lt[Jt],SCRIPT:lt[Cr],SCRIPTSCRIPT:lt[tr]},z0=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Gf(e){for(var t=0;t=i[0]&&e<=i[1])return r.name}return null}var tn=[];z0.forEach(e=>e.blocks.forEach(t=>tn.push(...t)));function Ms(e){for(var t=0;t=tn[t]&&e<=tn[t+1])return!0;return!1}var Ce=e=>e+" "+e,Zt=80,Wf=function(t,r){return"M95,"+(622+t+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+t/2.075+" -"+t+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+t)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},Xf=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+t/2.084+" -"+t+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+t)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},Yf=function(t,r){return"M983 "+(10+t+r)+` -l`+t/3.13+" -"+t+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},Kf=function(t,r){return"M424,"+(2398+t+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+t)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` -h400000v`+(40+t)+"h-400000z"},Zf=function(t,r){return"M473,"+(2713+t+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},Qf=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},Jf=function(t,r,n){var i=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` -H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},e2=function(t,r,n){r=1e3*r;var i="";switch(t){case"sqrtMain":i=Wf(r,Zt);break;case"sqrtSize1":i=Xf(r,Zt);break;case"sqrtSize2":i=Yf(r,Zt);break;case"sqrtSize3":i=Kf(r,Zt);break;case"sqrtSize4":i=Zf(r,Zt);break;case"sqrtTall":i=Jf(r,Zt,n)}return i},t2=function(t,r){switch(t){case"⎜":return Ce("M291 0 H417 V"+r+" H291z");case"∣":return Ce("M145 0 H188 V"+r+" H145z");case"∥":return Ce("M145 0 H188 V"+r+" H145z")+Ce("M367 0 H410 V"+r+" H367z");case"⎟":return Ce("M457 0 H583 V"+r+" H457z");case"⎢":return Ce("M319 0 H403 V"+r+" H319z");case"⎥":return Ce("M263 0 H347 V"+r+" H263z");case"⎪":return Ce("M384 0 H504 V"+r+" H384z");case"⏐":return Ce("M312 0 H355 V"+r+" H312z");case"‖":return Ce("M257 0 H300 V"+r+" H257z")+Ce("M478 0 H521 V"+r+" H478z");default:return""}},Ca={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:Ce("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:Ce("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:Ce("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:Ce("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:Ce("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:Ce("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:Ce("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:Ce("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},r2=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function n2(e){return"toText"in e}class lr{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r{if(n2(t))return t.toText();throw new Error("Expected MathDomNode with toText, got "+t.constructor.name)}).join("")}}var M0={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},i2={ex:!0,em:!0,mu:!0},Es=function(t){return typeof t!="string"&&(t=t.unit),t in M0||t in i2||t==="ex"},ye=function(t,r){var n;if(t.unit in M0)n=M0[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,t.unit==="ex")n=i.fontMetrics().xHeight;else if(t.unit==="em")n=i.fontMetrics().quad;else throw new L("Invalid unit: '"+t.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},P=function(t){return+t.toFixed(4)+"em"},zt=function(t){return t.filter(r=>r).join(" ")},mi=function(t){var r="";for(var n of Object.keys(t)){var i=t[n];i!==void 0&&(r+=Bf(n)+":"+i+";")}return r},Is=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},Ds=function(t){var r=document.createElement(t);r.className=zt(this.classes),Object.assign(r.style,this.style);for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var i=0;i/=\x00-\x1f]/,Bs=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+De(zt(this.classes))+'"');var n=mi(this.style);n&&(r+=' style="'+De(n)+'"');for(var i of Object.keys(this.attributes)){if(a2.test(i))throw new L("Invalid attribute name '"+i+"'");r+=" "+i+'="'+De(this.attributes[i])+'"'}r+=">";for(var a=0;a",r};class sr{constructor(t,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Is.call(this,t,n,i),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Ds.call(this,"span")}toMarkup(){return Bs.call(this,"span")}}class bn{constructor(t,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Is.call(this,r,i),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Ds.call(this,"a")}toMarkup(){return Bs.call(this,"a")}}class l2{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");return t.src=this.src,t.alt=this.alt,t.className="mord",Object.assign(t.style,this.style),t}toMarkup(){var t=''+De(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=P(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=zt(this.classes)),Object.keys(this.style).length>0&&(r=r||document.createElement("span"),Object.assign(r.style,this.style)),r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+P(this.italic)+";"),n+=mi(this.style),n&&(t=!0,r+=' style="'+De(n)+'"');var i=De(this.text);return t?(r+=">",r+=i,r+="",r):i}}class yt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}}class E0{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var c2=e=>e instanceof sr||e instanceof bn||e instanceof lr,st={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},_r={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},za={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function h2(e,t){st[e]=t}function fi(e,t,r){if(!st[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),i=st[t][n];if(!i&&e[0]in za&&(n=za[e[0]].charCodeAt(0),i=st[t][n]),!i&&r==="text"&&Ms(n)&&(i=st[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}var Qn={};function m2(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!Qn[t]){var r=Qn[t]={cssEmPerMu:_r.quad[t]/18};for(var n in _r)_r.hasOwnProperty(n)&&(r[n]=_r[n][t])}return Qn[t]}var de={math:{},text:{}};function c(e,t,r,n,i,a){de[e][i]={font:t,group:r,replace:n},a&&n&&(de[e][n]=de[e][i])}var f="math",B="text",g="main",b="ams",ge="accent-token",W="bin",Oe="close",or="inner",Z="mathord",Ae="op-token",Ye="open",Br="punct",x="rel",wt="spacing",T="textord";c(f,g,x,"≡","\\equiv",!0);c(f,g,x,"≺","\\prec",!0);c(f,g,x,"≻","\\succ",!0);c(f,g,x,"∼","\\sim",!0);c(f,g,x,"⊥","\\perp");c(f,g,x,"⪯","\\preceq",!0);c(f,g,x,"⪰","\\succeq",!0);c(f,g,x,"≃","\\simeq",!0);c(f,g,x,"∣","\\mid",!0);c(f,g,x,"≪","\\ll",!0);c(f,g,x,"≫","\\gg",!0);c(f,g,x,"≍","\\asymp",!0);c(f,g,x,"∥","\\parallel");c(f,g,x,"⋈","\\bowtie",!0);c(f,g,x,"⌣","\\smile",!0);c(f,g,x,"⊑","\\sqsubseteq",!0);c(f,g,x,"⊒","\\sqsupseteq",!0);c(f,g,x,"≐","\\doteq",!0);c(f,g,x,"⌢","\\frown",!0);c(f,g,x,"∋","\\ni",!0);c(f,g,x,"∝","\\propto",!0);c(f,g,x,"⊢","\\vdash",!0);c(f,g,x,"⊣","\\dashv",!0);c(f,g,x,"∋","\\owns");c(f,g,Br,".","\\ldotp");c(f,g,Br,"⋅","\\cdotp");c(f,g,Br,"⋅","·");c(B,g,T,"⋅","·");c(f,g,T,"#","\\#");c(B,g,T,"#","\\#");c(f,g,T,"&","\\&");c(B,g,T,"&","\\&");c(f,g,T,"ℵ","\\aleph",!0);c(f,g,T,"∀","\\forall",!0);c(f,g,T,"ℏ","\\hbar",!0);c(f,g,T,"∃","\\exists",!0);c(f,g,T,"∇","\\nabla",!0);c(f,g,T,"♭","\\flat",!0);c(f,g,T,"ℓ","\\ell",!0);c(f,g,T,"♮","\\natural",!0);c(f,g,T,"♣","\\clubsuit",!0);c(f,g,T,"℘","\\wp",!0);c(f,g,T,"♯","\\sharp",!0);c(f,g,T,"♢","\\diamondsuit",!0);c(f,g,T,"ℜ","\\Re",!0);c(f,g,T,"♡","\\heartsuit",!0);c(f,g,T,"ℑ","\\Im",!0);c(f,g,T,"♠","\\spadesuit",!0);c(f,g,T,"§","\\S",!0);c(B,g,T,"§","\\S");c(f,g,T,"¶","\\P",!0);c(B,g,T,"¶","\\P");c(f,g,T,"†","\\dag");c(B,g,T,"†","\\dag");c(B,g,T,"†","\\textdagger");c(f,g,T,"‡","\\ddag");c(B,g,T,"‡","\\ddag");c(B,g,T,"‡","\\textdaggerdbl");c(f,g,Oe,"⎱","\\rmoustache",!0);c(f,g,Ye,"⎰","\\lmoustache",!0);c(f,g,Oe,"⟯","\\rgroup",!0);c(f,g,Ye,"⟮","\\lgroup",!0);c(f,g,W,"∓","\\mp",!0);c(f,g,W,"⊖","\\ominus",!0);c(f,g,W,"⊎","\\uplus",!0);c(f,g,W,"⊓","\\sqcap",!0);c(f,g,W,"∗","\\ast");c(f,g,W,"⊔","\\sqcup",!0);c(f,g,W,"◯","\\bigcirc",!0);c(f,g,W,"∙","\\bullet",!0);c(f,g,W,"‡","\\ddagger");c(f,g,W,"≀","\\wr",!0);c(f,g,W,"⨿","\\amalg");c(f,g,W,"&","\\And");c(f,g,x,"⟵","\\longleftarrow",!0);c(f,g,x,"⇐","\\Leftarrow",!0);c(f,g,x,"⟸","\\Longleftarrow",!0);c(f,g,x,"⟶","\\longrightarrow",!0);c(f,g,x,"⇒","\\Rightarrow",!0);c(f,g,x,"⟹","\\Longrightarrow",!0);c(f,g,x,"↔","\\leftrightarrow",!0);c(f,g,x,"⟷","\\longleftrightarrow",!0);c(f,g,x,"⇔","\\Leftrightarrow",!0);c(f,g,x,"⟺","\\Longleftrightarrow",!0);c(f,g,x,"↦","\\mapsto",!0);c(f,g,x,"⟼","\\longmapsto",!0);c(f,g,x,"↗","\\nearrow",!0);c(f,g,x,"↩","\\hookleftarrow",!0);c(f,g,x,"↪","\\hookrightarrow",!0);c(f,g,x,"↘","\\searrow",!0);c(f,g,x,"↼","\\leftharpoonup",!0);c(f,g,x,"⇀","\\rightharpoonup",!0);c(f,g,x,"↙","\\swarrow",!0);c(f,g,x,"↽","\\leftharpoondown",!0);c(f,g,x,"⇁","\\rightharpoondown",!0);c(f,g,x,"↖","\\nwarrow",!0);c(f,g,x,"⇌","\\rightleftharpoons",!0);c(f,b,x,"≮","\\nless",!0);c(f,b,x,"","\\@nleqslant");c(f,b,x,"","\\@nleqq");c(f,b,x,"⪇","\\lneq",!0);c(f,b,x,"≨","\\lneqq",!0);c(f,b,x,"","\\@lvertneqq");c(f,b,x,"⋦","\\lnsim",!0);c(f,b,x,"⪉","\\lnapprox",!0);c(f,b,x,"⊀","\\nprec",!0);c(f,b,x,"⋠","\\npreceq",!0);c(f,b,x,"⋨","\\precnsim",!0);c(f,b,x,"⪹","\\precnapprox",!0);c(f,b,x,"≁","\\nsim",!0);c(f,b,x,"","\\@nshortmid");c(f,b,x,"∤","\\nmid",!0);c(f,b,x,"⊬","\\nvdash",!0);c(f,b,x,"⊭","\\nvDash",!0);c(f,b,x,"⋪","\\ntriangleleft");c(f,b,x,"⋬","\\ntrianglelefteq",!0);c(f,b,x,"⊊","\\subsetneq",!0);c(f,b,x,"","\\@varsubsetneq");c(f,b,x,"⫋","\\subsetneqq",!0);c(f,b,x,"","\\@varsubsetneqq");c(f,b,x,"≯","\\ngtr",!0);c(f,b,x,"","\\@ngeqslant");c(f,b,x,"","\\@ngeqq");c(f,b,x,"⪈","\\gneq",!0);c(f,b,x,"≩","\\gneqq",!0);c(f,b,x,"","\\@gvertneqq");c(f,b,x,"⋧","\\gnsim",!0);c(f,b,x,"⪊","\\gnapprox",!0);c(f,b,x,"⊁","\\nsucc",!0);c(f,b,x,"⋡","\\nsucceq",!0);c(f,b,x,"⋩","\\succnsim",!0);c(f,b,x,"⪺","\\succnapprox",!0);c(f,b,x,"≆","\\ncong",!0);c(f,b,x,"","\\@nshortparallel");c(f,b,x,"∦","\\nparallel",!0);c(f,b,x,"⊯","\\nVDash",!0);c(f,b,x,"⋫","\\ntriangleright");c(f,b,x,"⋭","\\ntrianglerighteq",!0);c(f,b,x,"","\\@nsupseteqq");c(f,b,x,"⊋","\\supsetneq",!0);c(f,b,x,"","\\@varsupsetneq");c(f,b,x,"⫌","\\supsetneqq",!0);c(f,b,x,"","\\@varsupsetneqq");c(f,b,x,"⊮","\\nVdash",!0);c(f,b,x,"⪵","\\precneqq",!0);c(f,b,x,"⪶","\\succneqq",!0);c(f,b,x,"","\\@nsubseteqq");c(f,b,W,"⊴","\\unlhd");c(f,b,W,"⊵","\\unrhd");c(f,b,x,"↚","\\nleftarrow",!0);c(f,b,x,"↛","\\nrightarrow",!0);c(f,b,x,"⇍","\\nLeftarrow",!0);c(f,b,x,"⇏","\\nRightarrow",!0);c(f,b,x,"↮","\\nleftrightarrow",!0);c(f,b,x,"⇎","\\nLeftrightarrow",!0);c(f,b,x,"△","\\vartriangle");c(f,b,T,"ℏ","\\hslash");c(f,b,T,"▽","\\triangledown");c(f,b,T,"◊","\\lozenge");c(f,b,T,"Ⓢ","\\circledS");c(f,b,T,"®","\\circledR");c(B,b,T,"®","\\circledR");c(f,b,T,"∡","\\measuredangle",!0);c(f,b,T,"∄","\\nexists");c(f,b,T,"℧","\\mho");c(f,b,T,"Ⅎ","\\Finv",!0);c(f,b,T,"⅁","\\Game",!0);c(f,b,T,"‵","\\backprime");c(f,b,T,"▲","\\blacktriangle");c(f,b,T,"▼","\\blacktriangledown");c(f,b,T,"■","\\blacksquare");c(f,b,T,"⧫","\\blacklozenge");c(f,b,T,"★","\\bigstar");c(f,b,T,"∢","\\sphericalangle",!0);c(f,b,T,"∁","\\complement",!0);c(f,b,T,"ð","\\eth",!0);c(B,g,T,"ð","ð");c(f,b,T,"╱","\\diagup");c(f,b,T,"╲","\\diagdown");c(f,b,T,"□","\\square");c(f,b,T,"□","\\Box");c(f,b,T,"◊","\\Diamond");c(f,b,T,"¥","\\yen",!0);c(B,b,T,"¥","\\yen",!0);c(f,b,T,"✓","\\checkmark",!0);c(B,b,T,"✓","\\checkmark");c(f,b,T,"ℶ","\\beth",!0);c(f,b,T,"ℸ","\\daleth",!0);c(f,b,T,"ℷ","\\gimel",!0);c(f,b,T,"ϝ","\\digamma",!0);c(f,b,T,"ϰ","\\varkappa");c(f,b,Ye,"┌","\\@ulcorner",!0);c(f,b,Oe,"┐","\\@urcorner",!0);c(f,b,Ye,"└","\\@llcorner",!0);c(f,b,Oe,"┘","\\@lrcorner",!0);c(f,b,x,"≦","\\leqq",!0);c(f,b,x,"⩽","\\leqslant",!0);c(f,b,x,"⪕","\\eqslantless",!0);c(f,b,x,"≲","\\lesssim",!0);c(f,b,x,"⪅","\\lessapprox",!0);c(f,b,x,"≊","\\approxeq",!0);c(f,b,W,"⋖","\\lessdot");c(f,b,x,"⋘","\\lll",!0);c(f,b,x,"≶","\\lessgtr",!0);c(f,b,x,"⋚","\\lesseqgtr",!0);c(f,b,x,"⪋","\\lesseqqgtr",!0);c(f,b,x,"≑","\\doteqdot");c(f,b,x,"≓","\\risingdotseq",!0);c(f,b,x,"≒","\\fallingdotseq",!0);c(f,b,x,"∽","\\backsim",!0);c(f,b,x,"⋍","\\backsimeq",!0);c(f,b,x,"⫅","\\subseteqq",!0);c(f,b,x,"⋐","\\Subset",!0);c(f,b,x,"⊏","\\sqsubset",!0);c(f,b,x,"≼","\\preccurlyeq",!0);c(f,b,x,"⋞","\\curlyeqprec",!0);c(f,b,x,"≾","\\precsim",!0);c(f,b,x,"⪷","\\precapprox",!0);c(f,b,x,"⊲","\\vartriangleleft");c(f,b,x,"⊴","\\trianglelefteq");c(f,b,x,"⊨","\\vDash",!0);c(f,b,x,"⊪","\\Vvdash",!0);c(f,b,x,"⌣","\\smallsmile");c(f,b,x,"⌢","\\smallfrown");c(f,b,x,"≏","\\bumpeq",!0);c(f,b,x,"≎","\\Bumpeq",!0);c(f,b,x,"≧","\\geqq",!0);c(f,b,x,"⩾","\\geqslant",!0);c(f,b,x,"⪖","\\eqslantgtr",!0);c(f,b,x,"≳","\\gtrsim",!0);c(f,b,x,"⪆","\\gtrapprox",!0);c(f,b,W,"⋗","\\gtrdot");c(f,b,x,"⋙","\\ggg",!0);c(f,b,x,"≷","\\gtrless",!0);c(f,b,x,"⋛","\\gtreqless",!0);c(f,b,x,"⪌","\\gtreqqless",!0);c(f,b,x,"≖","\\eqcirc",!0);c(f,b,x,"≗","\\circeq",!0);c(f,b,x,"≜","\\triangleq",!0);c(f,b,x,"∼","\\thicksim");c(f,b,x,"≈","\\thickapprox");c(f,b,x,"⫆","\\supseteqq",!0);c(f,b,x,"⋑","\\Supset",!0);c(f,b,x,"⊐","\\sqsupset",!0);c(f,b,x,"≽","\\succcurlyeq",!0);c(f,b,x,"⋟","\\curlyeqsucc",!0);c(f,b,x,"≿","\\succsim",!0);c(f,b,x,"⪸","\\succapprox",!0);c(f,b,x,"⊳","\\vartriangleright");c(f,b,x,"⊵","\\trianglerighteq");c(f,b,x,"⊩","\\Vdash",!0);c(f,b,x,"∣","\\shortmid");c(f,b,x,"∥","\\shortparallel");c(f,b,x,"≬","\\between",!0);c(f,b,x,"⋔","\\pitchfork",!0);c(f,b,x,"∝","\\varpropto");c(f,b,x,"◀","\\blacktriangleleft");c(f,b,x,"∴","\\therefore",!0);c(f,b,x,"∍","\\backepsilon");c(f,b,x,"▶","\\blacktriangleright");c(f,b,x,"∵","\\because",!0);c(f,b,x,"⋘","\\llless");c(f,b,x,"⋙","\\gggtr");c(f,b,W,"⊲","\\lhd");c(f,b,W,"⊳","\\rhd");c(f,b,x,"≂","\\eqsim",!0);c(f,g,x,"⋈","\\Join");c(f,b,x,"≑","\\Doteq",!0);c(f,b,W,"∔","\\dotplus",!0);c(f,b,W,"∖","\\smallsetminus");c(f,b,W,"⋒","\\Cap",!0);c(f,b,W,"⋓","\\Cup",!0);c(f,b,W,"⩞","\\doublebarwedge",!0);c(f,b,W,"⊟","\\boxminus",!0);c(f,b,W,"⊞","\\boxplus",!0);c(f,b,W,"⋇","\\divideontimes",!0);c(f,b,W,"⋉","\\ltimes",!0);c(f,b,W,"⋊","\\rtimes",!0);c(f,b,W,"⋋","\\leftthreetimes",!0);c(f,b,W,"⋌","\\rightthreetimes",!0);c(f,b,W,"⋏","\\curlywedge",!0);c(f,b,W,"⋎","\\curlyvee",!0);c(f,b,W,"⊝","\\circleddash",!0);c(f,b,W,"⊛","\\circledast",!0);c(f,b,W,"⋅","\\centerdot");c(f,b,W,"⊺","\\intercal",!0);c(f,b,W,"⋒","\\doublecap");c(f,b,W,"⋓","\\doublecup");c(f,b,W,"⊠","\\boxtimes",!0);c(f,b,x,"⇢","\\dashrightarrow",!0);c(f,b,x,"⇠","\\dashleftarrow",!0);c(f,b,x,"⇇","\\leftleftarrows",!0);c(f,b,x,"⇆","\\leftrightarrows",!0);c(f,b,x,"⇚","\\Lleftarrow",!0);c(f,b,x,"↞","\\twoheadleftarrow",!0);c(f,b,x,"↢","\\leftarrowtail",!0);c(f,b,x,"↫","\\looparrowleft",!0);c(f,b,x,"⇋","\\leftrightharpoons",!0);c(f,b,x,"↶","\\curvearrowleft",!0);c(f,b,x,"↺","\\circlearrowleft",!0);c(f,b,x,"↰","\\Lsh",!0);c(f,b,x,"⇈","\\upuparrows",!0);c(f,b,x,"↿","\\upharpoonleft",!0);c(f,b,x,"⇃","\\downharpoonleft",!0);c(f,g,x,"⊶","\\origof",!0);c(f,g,x,"⊷","\\imageof",!0);c(f,b,x,"⊸","\\multimap",!0);c(f,b,x,"↭","\\leftrightsquigarrow",!0);c(f,b,x,"⇉","\\rightrightarrows",!0);c(f,b,x,"⇄","\\rightleftarrows",!0);c(f,b,x,"↠","\\twoheadrightarrow",!0);c(f,b,x,"↣","\\rightarrowtail",!0);c(f,b,x,"↬","\\looparrowright",!0);c(f,b,x,"↷","\\curvearrowright",!0);c(f,b,x,"↻","\\circlearrowright",!0);c(f,b,x,"↱","\\Rsh",!0);c(f,b,x,"⇊","\\downdownarrows",!0);c(f,b,x,"↾","\\upharpoonright",!0);c(f,b,x,"⇂","\\downharpoonright",!0);c(f,b,x,"⇝","\\rightsquigarrow",!0);c(f,b,x,"⇝","\\leadsto");c(f,b,x,"⇛","\\Rrightarrow",!0);c(f,b,x,"↾","\\restriction");c(f,g,T,"‘","`");c(f,g,T,"$","\\$");c(B,g,T,"$","\\$");c(B,g,T,"$","\\textdollar");c(f,g,T,"%","\\%");c(B,g,T,"%","\\%");c(f,g,T,"_","\\_");c(B,g,T,"_","\\_");c(B,g,T,"_","\\textunderscore");c(f,g,T,"∠","\\angle",!0);c(f,g,T,"∞","\\infty",!0);c(f,g,T,"′","\\prime");c(f,g,T,"△","\\triangle");c(f,g,T,"Γ","\\Gamma",!0);c(f,g,T,"Δ","\\Delta",!0);c(f,g,T,"Θ","\\Theta",!0);c(f,g,T,"Λ","\\Lambda",!0);c(f,g,T,"Ξ","\\Xi",!0);c(f,g,T,"Π","\\Pi",!0);c(f,g,T,"Σ","\\Sigma",!0);c(f,g,T,"Υ","\\Upsilon",!0);c(f,g,T,"Φ","\\Phi",!0);c(f,g,T,"Ψ","\\Psi",!0);c(f,g,T,"Ω","\\Omega",!0);c(f,g,T,"A","Α");c(f,g,T,"B","Β");c(f,g,T,"E","Ε");c(f,g,T,"Z","Ζ");c(f,g,T,"H","Η");c(f,g,T,"I","Ι");c(f,g,T,"K","Κ");c(f,g,T,"M","Μ");c(f,g,T,"N","Ν");c(f,g,T,"O","Ο");c(f,g,T,"P","Ρ");c(f,g,T,"T","Τ");c(f,g,T,"X","Χ");c(f,g,T,"¬","\\neg",!0);c(f,g,T,"¬","\\lnot");c(f,g,T,"⊤","\\top");c(f,g,T,"⊥","\\bot");c(f,g,T,"∅","\\emptyset");c(f,b,T,"∅","\\varnothing");c(f,g,Z,"α","\\alpha",!0);c(f,g,Z,"β","\\beta",!0);c(f,g,Z,"γ","\\gamma",!0);c(f,g,Z,"δ","\\delta",!0);c(f,g,Z,"ϵ","\\epsilon",!0);c(f,g,Z,"ζ","\\zeta",!0);c(f,g,Z,"η","\\eta",!0);c(f,g,Z,"θ","\\theta",!0);c(f,g,Z,"ι","\\iota",!0);c(f,g,Z,"κ","\\kappa",!0);c(f,g,Z,"λ","\\lambda",!0);c(f,g,Z,"μ","\\mu",!0);c(f,g,Z,"ν","\\nu",!0);c(f,g,Z,"ξ","\\xi",!0);c(f,g,Z,"ο","\\omicron",!0);c(f,g,Z,"π","\\pi",!0);c(f,g,Z,"ρ","\\rho",!0);c(f,g,Z,"σ","\\sigma",!0);c(f,g,Z,"τ","\\tau",!0);c(f,g,Z,"υ","\\upsilon",!0);c(f,g,Z,"ϕ","\\phi",!0);c(f,g,Z,"χ","\\chi",!0);c(f,g,Z,"ψ","\\psi",!0);c(f,g,Z,"ω","\\omega",!0);c(f,g,Z,"ε","\\varepsilon",!0);c(f,g,Z,"ϑ","\\vartheta",!0);c(f,g,Z,"ϖ","\\varpi",!0);c(f,g,Z,"ϱ","\\varrho",!0);c(f,g,Z,"ς","\\varsigma",!0);c(f,g,Z,"φ","\\varphi",!0);c(f,g,W,"∗","*",!0);c(f,g,W,"+","+");c(f,g,W,"−","-",!0);c(f,g,W,"⋅","\\cdot",!0);c(f,g,W,"∘","\\circ",!0);c(f,g,W,"÷","\\div",!0);c(f,g,W,"±","\\pm",!0);c(f,g,W,"×","\\times",!0);c(f,g,W,"∩","\\cap",!0);c(f,g,W,"∪","\\cup",!0);c(f,g,W,"∖","\\setminus",!0);c(f,g,W,"∧","\\land");c(f,g,W,"∨","\\lor");c(f,g,W,"∧","\\wedge",!0);c(f,g,W,"∨","\\vee",!0);c(f,g,T,"√","\\surd");c(f,g,Ye,"⟨","\\langle",!0);c(f,g,Ye,"∣","\\lvert");c(f,g,Ye,"∥","\\lVert");c(f,g,Oe,"?","?");c(f,g,Oe,"!","!");c(f,g,Oe,"⟩","\\rangle",!0);c(f,g,Oe,"∣","\\rvert");c(f,g,Oe,"∥","\\rVert");c(f,g,x,"=","=");c(f,g,x,":",":");c(f,g,x,"≈","\\approx",!0);c(f,g,x,"≅","\\cong",!0);c(f,g,x,"≥","\\ge");c(f,g,x,"≥","\\geq",!0);c(f,g,x,"←","\\gets");c(f,g,x,">","\\gt",!0);c(f,g,x,"∈","\\in",!0);c(f,g,x,"","\\@not");c(f,g,x,"⊂","\\subset",!0);c(f,g,x,"⊃","\\supset",!0);c(f,g,x,"⊆","\\subseteq",!0);c(f,g,x,"⊇","\\supseteq",!0);c(f,b,x,"⊈","\\nsubseteq",!0);c(f,b,x,"⊉","\\nsupseteq",!0);c(f,g,x,"⊨","\\models");c(f,g,x,"←","\\leftarrow",!0);c(f,g,x,"≤","\\le");c(f,g,x,"≤","\\leq",!0);c(f,g,x,"<","\\lt",!0);c(f,g,x,"→","\\rightarrow",!0);c(f,g,x,"→","\\to");c(f,b,x,"≱","\\ngeq",!0);c(f,b,x,"≰","\\nleq",!0);c(f,g,wt," ","\\ ");c(f,g,wt," ","\\space");c(f,g,wt," ","\\nobreakspace");c(B,g,wt," ","\\ ");c(B,g,wt," "," ");c(B,g,wt," ","\\space");c(B,g,wt," ","\\nobreakspace");c(f,g,wt,"","\\nobreak");c(f,g,wt,"","\\allowbreak");c(f,g,Br,",",",");c(f,g,Br,";",";");c(f,b,W,"⊼","\\barwedge",!0);c(f,b,W,"⊻","\\veebar",!0);c(f,g,W,"⊙","\\odot",!0);c(f,g,W,"⊕","\\oplus",!0);c(f,g,W,"⊗","\\otimes",!0);c(f,g,T,"∂","\\partial",!0);c(f,g,W,"⊘","\\oslash",!0);c(f,b,W,"⊚","\\circledcirc",!0);c(f,b,W,"⊡","\\boxdot",!0);c(f,g,W,"△","\\bigtriangleup");c(f,g,W,"▽","\\bigtriangledown");c(f,g,W,"†","\\dagger");c(f,g,W,"⋄","\\diamond");c(f,g,W,"⋆","\\star");c(f,g,W,"◃","\\triangleleft");c(f,g,W,"▹","\\triangleright");c(f,g,Ye,"{","\\{");c(B,g,T,"{","\\{");c(B,g,T,"{","\\textbraceleft");c(f,g,Oe,"}","\\}");c(B,g,T,"}","\\}");c(B,g,T,"}","\\textbraceright");c(f,g,Ye,"{","\\lbrace");c(f,g,Oe,"}","\\rbrace");c(f,g,Ye,"[","\\lbrack",!0);c(B,g,T,"[","\\lbrack",!0);c(f,g,Oe,"]","\\rbrack",!0);c(B,g,T,"]","\\rbrack",!0);c(f,g,Ye,"(","\\lparen",!0);c(f,g,Oe,")","\\rparen",!0);c(B,g,T,"<","\\textless",!0);c(B,g,T,">","\\textgreater",!0);c(f,g,Ye,"⌊","\\lfloor",!0);c(f,g,Oe,"⌋","\\rfloor",!0);c(f,g,Ye,"⌈","\\lceil",!0);c(f,g,Oe,"⌉","\\rceil",!0);c(f,g,T,"\\","\\backslash");c(f,g,T,"∣","|");c(f,g,T,"∣","\\vert");c(B,g,T,"|","\\textbar",!0);c(f,g,T,"∥","\\|");c(f,g,T,"∥","\\Vert");c(B,g,T,"∥","\\textbardbl");c(B,g,T,"~","\\textasciitilde");c(B,g,T,"\\","\\textbackslash");c(B,g,T,"^","\\textasciicircum");c(f,g,x,"↑","\\uparrow",!0);c(f,g,x,"⇑","\\Uparrow",!0);c(f,g,x,"↓","\\downarrow",!0);c(f,g,x,"⇓","\\Downarrow",!0);c(f,g,x,"↕","\\updownarrow",!0);c(f,g,x,"⇕","\\Updownarrow",!0);c(f,g,Ae,"∐","\\coprod");c(f,g,Ae,"⋁","\\bigvee");c(f,g,Ae,"⋀","\\bigwedge");c(f,g,Ae,"⨄","\\biguplus");c(f,g,Ae,"⋂","\\bigcap");c(f,g,Ae,"⋃","\\bigcup");c(f,g,Ae,"∫","\\int");c(f,g,Ae,"∫","\\intop");c(f,g,Ae,"∬","\\iint");c(f,g,Ae,"∭","\\iiint");c(f,g,Ae,"∏","\\prod");c(f,g,Ae,"∑","\\sum");c(f,g,Ae,"⨂","\\bigotimes");c(f,g,Ae,"⨁","\\bigoplus");c(f,g,Ae,"⨀","\\bigodot");c(f,g,Ae,"∮","\\oint");c(f,g,Ae,"∯","\\oiint");c(f,g,Ae,"∰","\\oiiint");c(f,g,Ae,"⨆","\\bigsqcup");c(f,g,Ae,"∫","\\smallint");c(B,g,or,"…","\\textellipsis");c(f,g,or,"…","\\mathellipsis");c(B,g,or,"…","\\ldots",!0);c(f,g,or,"…","\\ldots",!0);c(f,g,or,"⋯","\\@cdots",!0);c(f,g,or,"⋱","\\ddots",!0);c(f,g,T,"⋮","\\varvdots");c(B,g,T,"⋮","\\varvdots");c(f,g,ge,"ˊ","\\acute");c(f,g,ge,"ˋ","\\grave");c(f,g,ge,"¨","\\ddot");c(f,g,ge,"~","\\tilde");c(f,g,ge,"ˉ","\\bar");c(f,g,ge,"˘","\\breve");c(f,g,ge,"ˇ","\\check");c(f,g,ge,"^","\\hat");c(f,g,ge,"⃗","\\vec");c(f,g,ge,"˙","\\dot");c(f,g,ge,"˚","\\mathring");c(f,g,Z,"","\\@imath");c(f,g,Z,"","\\@jmath");c(f,g,T,"ı","ı");c(f,g,T,"ȷ","ȷ");c(B,g,T,"ı","\\i",!0);c(B,g,T,"ȷ","\\j",!0);c(B,g,T,"ß","\\ss",!0);c(B,g,T,"æ","\\ae",!0);c(B,g,T,"œ","\\oe",!0);c(B,g,T,"ø","\\o",!0);c(B,g,T,"Æ","\\AE",!0);c(B,g,T,"Œ","\\OE",!0);c(B,g,T,"Ø","\\O",!0);c(B,g,ge,"ˊ","\\'");c(B,g,ge,"ˋ","\\`");c(B,g,ge,"ˆ","\\^");c(B,g,ge,"˜","\\~");c(B,g,ge,"ˉ","\\=");c(B,g,ge,"˘","\\u");c(B,g,ge,"˙","\\.");c(B,g,ge,"¸","\\c");c(B,g,ge,"˚","\\r");c(B,g,ge,"ˇ","\\v");c(B,g,ge,"¨",'\\"');c(B,g,ge,"˝","\\H");c(B,g,ge,"◯","\\textcircled");var Fs={"--":!0,"---":!0,"``":!0,"''":!0};c(B,g,T,"–","--",!0);c(B,g,T,"–","\\textendash");c(B,g,T,"—","---",!0);c(B,g,T,"—","\\textemdash");c(B,g,T,"‘","`",!0);c(B,g,T,"‘","\\textquoteleft");c(B,g,T,"’","'",!0);c(B,g,T,"’","\\textquoteright");c(B,g,T,"“","``",!0);c(B,g,T,"“","\\textquotedblleft");c(B,g,T,"”","''",!0);c(B,g,T,"”","\\textquotedblright");c(f,g,T,"°","\\degree",!0);c(B,g,T,"°","\\degree");c(B,g,T,"°","\\textdegree",!0);c(f,g,T,"£","\\pounds");c(f,g,T,"£","\\mathsterling",!0);c(B,g,T,"£","\\pounds");c(B,g,T,"£","\\textsterling",!0);c(f,b,T,"✠","\\maltese");c(B,b,T,"✠","\\maltese");var Ma='0123456789/@."';for(var Jn=0;Jn{var t=e.charCodeAt(0),r=e.charCodeAt(1),n=(t-55296)*1024+(r-56320)+65536;if(119808<=n&&n<120484){var i=Math.floor((n-119808)/26);return Oa[i]}else if(120782<=n&&n<=120831){var a=Math.floor((n-120782)/10);return p2[a]}else{if(n===120485||n===120486)return Oa[0];if(120486{if(zt(e.classes)!==zt(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var i of Object.keys(t.style))if(e.style[i]!==t.style[i])return!1;return!0},Rs=e=>{for(var t=0;tr&&(r=l.height),l.depth>n&&(n=l.depth),l.maxFontSize>i&&(i=l.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=i},F=function(t,r,n,i){var a=new sr(t,r,n,i);return di(a),a},Et=(e,t,r,n)=>new sr(e,t,r,n),rr=function(t,r,n){var i=F([t],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=P(i.height),i.maxFontSize=1,i},y2=function(t,r,n,i){var a=new bn(t,r,n,i);return di(a),a},kt=function(t){var r=new lr(t);return di(r),r},nr=function(t,r){return t instanceof lr?F([],[t],r):t},b2=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,l=1;l{var r=F(["mspace"],[],t),n=ye(e,t);return r.style.marginRight=P(n),r},Xr=(e,t,r)=>{var n,i;switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return t==="textbf"&&r==="textit"?i="BoldItalic":t==="textbf"?i="Bold":r==="textit"?i="Italic":i="Regular",n+"-"+i},L0={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ns={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ps=function(t,r){var[n,i,a]=Ns[t],l=new Mt(n),s=new yt([l],{width:P(i),height:P(a),style:"width:"+P(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),o=Et(["overlay"],[s],r);return o.height=a,o.style.height=P(a),o.style.width=P(i),o},ve={number:3,unit:"mu"},Ot={number:4,unit:"mu"},dt={number:5,unit:"mu"},x2={mord:{mop:ve,mbin:Ot,mrel:dt,minner:ve},mop:{mord:ve,mop:ve,mrel:dt,minner:ve},mbin:{mord:Ot,mop:Ot,mopen:Ot,minner:Ot},mrel:{mord:dt,mop:dt,mopen:dt,minner:dt},mopen:{},mclose:{mop:ve,mbin:Ot,mrel:dt,minner:ve},mpunct:{mord:ve,mop:ve,mrel:dt,mopen:ve,mclose:ve,mpunct:ve,minner:ve},minner:{mord:ve,mop:ve,mbin:Ot,mrel:dt,mopen:ve,mpunct:ve,minner:ve}},w2={mord:{mop:ve},mop:{mord:ve,mop:ve},mbin:{},mrel:{},mopen:{},mclose:{mop:ve},mpunct:{},minner:{mop:ve}},Os={},un={},cn={};function _(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:l}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},o=0;o{var C=w.classes[0],A=y.classes[0];C==="mbin"&&S2.has(A)?w.classes[0]="mord":A==="mbin"&&k2.has(C)&&(y.classes[0]="mord")},{node:m},d,p),N0(a,(y,w)=>{var C,A,z=O0(w),I=O0(y),q=z&&I?y.hasClass("mtight")?(C=w2[z])==null?void 0:C[I]:(A=x2[z])==null?void 0:A[I]:null;if(q)return Ls(q,u)},{node:m},d,p),a},N0=function(t,r,n,i,a){i&&t.push(i);for(var l=0;ld=>{t.splice(m+1,0,d),l++})(l)}i&&t.pop()},qs=function(t){return t instanceof lr||t instanceof bn||t instanceof sr&&t.hasClass("enclosing")?t:null},P0=function(t,r){var n=qs(t);if(n){var i=n.children;if(i.length){if(r==="right")return P0(i[i.length-1],"right");if(r==="left")return P0(i[0],"left")}}return t},O0=function(t,r){if(!t)return null;r&&(t=P0(t,r));var n=t.classes[0];return T2[n]||null},zr=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return F(r.concat(n))},ue=function(t,r,n){if(!t)return F();if(un[t.type]){var i=un[t.type](t,r);if(n&&r.size!==n.size){i=F(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new L("Got group of unknown type: '"+t.type+"'")};function Yr(e,t){var r=F(["base"],e,t),n=F(["strut"]);return n.style.height=P(r.height+r.depth),r.depth&&(n.style.verticalAlign=P(-r.depth)),r.children.unshift(n),r}function q0(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=ze(e,t,"root"),i;n.length===2&&n[1].hasClass("tag")&&(i=n.pop());for(var a=[],l=[],s=0;s0&&(a.push(Yr(l,t)),l=[]),a.push(n[s]));l.length>0&&a.push(Yr(l,t));var u;r?(u=Yr(ze(r,t,!0),t),u.classes=["tag"],a.push(u)):i&&a.push(i);var h=F(["katex-html"],a);if(h.setAttribute("aria-hidden","true"),u){var m=u.children[0];m.style.height=P(h.height+h.depth),h.depth&&(m.style.verticalAlign=P(-h.depth))}return h}function Hs(e){return new lr(e)}class N{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=zt(this.classes));for(var n=0;n0&&(t+=' class ="'+De(zt(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class Se{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return De(this.toText())}toText(){return this.text}}class js{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",P(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var C2=new Set(["\\imath","\\jmath"]),z2=new Set(["mrow","mtable"]),et=function(t,r,n){return de[r][t]&&de[r][t].replace&&t.charCodeAt(0)!==55349&&!(Fs.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=de[r][t].replace),new Se(t)},gi=function(t){return t.length===1?t[0]:new N("mrow",t)},M2={mathit:"italic",boldsymbol:e=>e.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},vi=(e,t)=>{if(e.mode==="text"){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold"}var r=t.font;if(!r||r==="mathnormal")return null;var n=e.mode,i=M2[r];if(i)return typeof i=="function"?i(e):i;var a=e.text;if(C2.has(a))return null;if(de[n][a]){var l=de[n][a].replace;l&&(a=l)}var s=L0[r].fontName;return fi(a,s,n)?L0[r].variant:null};function n0(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Se&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Se&&r.text===","}else return!1}var Ke=function(t,r,n){if(t.length===1){var i=fe(t[0],r);return n&&i instanceof N&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],l,s=0;s=1&&(l.type==="mn"||n0(l))){var u=o.children[0];u instanceof N&&u.type==="mn"&&(u.children=[...l.children,...u.children],a.pop())}else if(l.type==="mi"&&l.children.length===1){var h=l.children[0];if(h instanceof Se&&h.text==="̸"&&(o.type==="mo"||o.type==="mi"||o.type==="mn")){var m=o.children[0];m instanceof Se&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),a.pop())}}}a.push(o),l=o}return a},It=function(t,r,n){return gi(Ke(t,r,n))},fe=function(t,r){if(!t)return new N("mrow");if(cn[t.type])return cn[t.type](t,r);throw new L("Got group of unknown type: '"+t.type+"'")};function qa(e,t,r,n,i){var a=Ke(e,r),l;a.length===1&&a[0]instanceof N&&z2.has(a[0].type)?l=a[0]:l=new N("mrow",a);var s=new N("annotation",[new Se(t)]);s.setAttribute("encoding","application/x-tex");var o=new N("semantics",[l,s]),u=new N("math",[o]);u.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&u.setAttribute("display","block");var h=i?"katex":"katex-mathml";return F([h],[u])}var E2=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Ha=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],ja=function(t,r){return r.size<2?t:E2[t-1][r.size-1]};class gt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||gt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=Ha[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new gt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:ja(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:Ha[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=ja(gt.BASESIZE,t);return this.size===r&&this.textSize===gt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==gt.BASESIZE?["sizing","reset-size"+this.size,"size"+gt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=m2(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}gt.BASESIZE=6;var $s=function(t){return new gt({style:t.displayMode?te.DISPLAY:te.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Us=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=F(n,[t])}return t},I2=function(t,r,n){var i=$s(n),a;if(n.output==="mathml")return qa(t,r,i,n.displayMode,!0);if(n.output==="html"){var l=q0(t,i);a=F(["katex"],[l])}else{var s=qa(t,r,i,n.displayMode,!1),o=q0(t,i);a=F(["katex"],[s,o])}return Us(a,n)},D2=function(t,r,n){var i=$s(n),a=q0(t,i),l=F(["katex"],[a]);return Us(l,n)},B2={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},kn=function(t){var r=new N("mo",[new Se(B2[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},F2={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},R2=new Set(["widehat","widecheck","widetilde","utilde"]),Sn=function(t,r){function n(){var s=4e5,o=t.label.slice(1);if(R2.has(o)&&"base"in t){var u=t.base.type==="ordgroup"?t.base.body.length:1,h,m,d;if(u>5)o==="widehat"||o==="widecheck"?(h=420,s=2364,d=.42,m=o+"4"):(h=312,s=2340,d=.34,m="tilde4");else{var p=[1,1,2,2,3,3][u];o==="widehat"||o==="widecheck"?(s=[0,1062,2364,2364,2364][p],h=[0,239,300,360,420][p],d=[0,.24,.3,.3,.36,.42][p],m=o+p):(s=[0,600,1033,2339,2340][p],h=[0,260,286,306,312][p],d=[0,.26,.286,.3,.306,.34][p],m="tilde"+p)}var y=new Mt(m),w=new yt([y],{width:"100%",height:P(d),viewBox:"0 0 "+s+" "+h,preserveAspectRatio:"none"});return{span:Et([],[w],r),minWidth:0,height:d}}else{var C=[],A=F2[o];if(!A)throw new Error('No SVG data for "'+o+'".');var[z,I,q]=A,O=q/1e3,M=z.length,G,X;if(M===1){if(A.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+o+'".');G=["hide-tail"],X=[A[3]]}else if(M===2)G=["halfarrow-left","halfarrow-right"],X=["xMinYMin","xMaxYMin"];else if(M===3)G=["brace-left","brace-center","brace-right"],X=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+M+" children.");for(var U=0;U0&&(i.style.minWidth=P(a)),i},L2=function(t,r,n,i,a){var l,s=t.height+t.depth+n+i;if(/fbox|color|angl/.test(r)){if(l=F(["stretchy",r],[],a),r==="fbox"){var o=a.color&&a.getColor();o&&(l.style.borderColor=o)}}else{var u=[];/^[bx]cancel$/.test(r)&&u.push(new E0({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&u.push(new E0({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new yt(u,{width:"100%",height:P(s)});l=Et([],[h],a)}return l.height=s,l.style.height=P(s),l},N2={bin:1,close:1,inner:1,open:1,punct:1,rel:1},P2={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function O2(e){return e in N2}function re(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function An(e){var t=Tn(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Tn(e){return e&&(e.type==="atom"||P2.hasOwnProperty(e.type))?e:null}var Vs=e=>{if(e instanceof Xe)return e;if(c2(e)&&e.children.length===1)return Vs(e.children[0])},yi=(e,t)=>{var r,n,i;e&&e.type==="supsub"?(n=re(e.base,"accent"),r=n.base,e.base=r,i=u2(ue(e,t)),e.base=n):(n=re(e,"accent"),r=n.base);var a=ue(r,t.havingCrampedStyle()),l=n.isShifty&&xt(r),s=0;if(l){var o,u;s=(o=(u=Vs(a))==null?void 0:u.skew)!=null?o:0}var h=n.label==="\\c",m=h?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),d;if(n.isStretchy)d=Sn(n,t),d=oe({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:d,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+P(2*s)+")",marginLeft:P(2*s)}:void 0}]});else{var p,y;n.label==="\\vec"?(p=Ps("vec",t),y=Ns.vec[1]):(p=wn({mode:n.mode,text:n.label},t,"textord"),p=o2(p),p.italic=0,y=p.width,h&&(m+=p.depth)),d=F(["accent-body"],[p]);var w=n.label==="\\textcircled";w&&(d.classes.push("accent-full"),m=a.height);var C=s;w||(C-=y/2),d.style.left=P(C),n.label==="\\textcircled"&&(d.style.top=".2em"),d=oe({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-m},{type:"elem",elem:d}]})}var A=F(["mord","accent"],[d],t);return i?(i.children[0]=A,i.height=Math.max(A.height,i.height),i.classes[0]="mord",i):A},_s=(e,t)=>{var r=e.isStretchy?kn(e.label):new N("mo",[et(e.label,e.mode)]),n=new N("mover",[fe(e.base,t),r]);return n.setAttribute("accent","true"),n},q2=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));_({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=hn(t[0]),n=!q2.test(e.funcName),i=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:i,base:r}},htmlBuilder:yi,mathmlBuilder:_s});_({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:yi,mathmlBuilder:_s});_({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},htmlBuilder:(e,t)=>{var r=ue(e.base,t),n=Sn(e,t),i=e.label==="\\utilde"?.12:0,a=oe({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]});return F(["mord","accentunder"],[a],t)},mathmlBuilder:(e,t)=>{var r=kn(e.label),n=new N("munder",[fe(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Kr=e=>{var t=new N("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};_({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:i}=e;return{type:"xArrow",mode:n.mode,label:i,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),i=nr(ue(e.body,n,t),t),a=e.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var l;e.below&&(n=t.havingStyle(r.sub()),l=nr(ue(e.below,n,t),t),l.classes.push(a+"-arrow-pad"));var s=Sn(e,t),o=-t.fontMetrics().axisHeight+.5*s.height,u=-t.fontMetrics().axisHeight-.5*s.height-.111;(i.depth>.25||e.label==="\\xleftequilibrium")&&(u-=i.depth);var h;if(l){var m=-t.fontMetrics().axisHeight+l.height+.5*s.height+.111;h=oe({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:s,shift:o,wrapperClasses:["svg-align"]},{type:"elem",elem:l,shift:m}]})}else h=oe({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:s,shift:o,wrapperClasses:["svg-align"]}]});return F(["mrel","x-arrow"],[h],t)},mathmlBuilder(e,t){var r=kn(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var i=Kr(fe(e.body,t));if(e.below){var a=Kr(fe(e.below,t));n=new N("munderover",[r,a,i])}else n=new N("mover",[r,i])}else if(e.below){var l=Kr(fe(e.below,t));n=new N("munder",[r,l])}else n=Kr(),n=new N("mover",[r,n]);return n}});function Gs(e,t){var r=ze(e.body,t,!0);return F([e.mclass],r,t)}function Ws(e,t){var r,n=Ke(e.body,t);return e.mclass==="minner"?r=new N("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new N("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new N("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}_({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:ke(i),isCharacterBox:xt(i)}},htmlBuilder:Gs,mathmlBuilder:Ws});var Cn=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};_({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:Cn(t[0]),body:ke(t[1]),isCharacterBox:xt(t[1])}}});_({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,i=t[1],a=t[0],l;n!=="\\stackrel"?l=Cn(i):l="mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:ke(i)},o={type:"supsub",mode:a.mode,base:s,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:l,body:[o],isCharacterBox:xt(o)}},htmlBuilder:Gs,mathmlBuilder:Ws});_({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:Cn(t[0]),body:ke(t[0])}},htmlBuilder(e,t){var r=ze(e.body,t,!0),n=F([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=Ke(e.body,t),n=new N("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var H2={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},$a=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),Ua=e=>e.type==="textord"&&e.text==="@",j2=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function $2(e,t,r){var n=H2[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[t[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},l=r.callFunction("\\Big",[a],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),o={type:"ordgroup",mode:"math",body:[i,l,s]};return r.callFunction("\\\\cdparent",[o],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var u={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[u],[])}default:return{type:"textord",text:" ",mode:"math"}}}function U2(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new L("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],i=[n],a=0;aAV".includes(u))for(var m=0;m<2;m++){for(var d=!0,p=o+1;pAV=|." after @',l[o]);var y=$2(u,h,e),w={type:"styling",body:[y],mode:"math",style:"display",resetFont:!0};n.push(w),s=$a()}a%2===0?n.push(s):n.shift(),n=[],i.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var C=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:C,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}_({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=nr(ue(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=P(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new N("mrow",[fe(e.label,t)]);return r=new N("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new N("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});_({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=nr(ue(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new N("mrow",[fe(e.fragment,t)])}});_({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=re(t[0],"ordgroup"),i=n.body,a="",l=0;l=1114111)throw new L("\\@char with invalid code point "+a);return o<=65535?u=String.fromCharCode(o):(o-=65536,u=String.fromCharCode((o>>10)+55296,(o&1023)+56320)),{type:"textord",mode:r.mode,text:u}}});var Xs=(e,t)=>{var r=ze(e.body,t.withColor(e.color),!1);return kt(r)},Ys=(e,t)=>{var r=Ke(e.body,t.withColor(e.color)),n=new N("mstyle",r);return n.setAttribute("mathcolor",e.color),n};_({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=re(t[0],"color-token").color,i=t[1];return{type:"color",mode:r.mode,color:n,body:ke(i)}},htmlBuilder:Xs,mathmlBuilder:Ys});_({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,i=re(t[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:Xs,mathmlBuilder:Ys});_({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&re(i,"size").value}},htmlBuilder(e,t){var r=F(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=P(ye(e.size,t)))),r},mathmlBuilder(e,t){var r=new N("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",P(ye(e.size,t)))),r}});var H0={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Ks=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new L("Expected a control sequence",e);return t},V2=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},Zs=(e,t,r,n)=>{var i=e.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,i,n)};_({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(H0[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=H0[n.text]),re(t.parseFunction(),"internal");throw new L("Invalid token after macro prefix",n)}});_({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new L("Expected a control sequence",n);for(var a=0,l,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){l=t.gullet.future(),s[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new L('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new L('Argument number "'+n.text+'" out of order');a++,s.push([])}else{if(n.text==="EOF")throw new L("Expected a macro definition");s[a].push(n.text)}var{tokens:o}=t.gullet.consumeArg();return l&&o.unshift(l),(r==="\\edef"||r==="\\xdef")&&(o=t.gullet.expandTokens(o),o.reverse()),t.gullet.macros.set(i,{tokens:o,numArgs:a,delimiters:s},r===H0[r]),{type:"internal",mode:t.mode}}});_({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Ks(t.gullet.popToken());t.gullet.consumeSpaces();var i=V2(t);return Zs(t,n,i,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});_({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Ks(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return Zs(t,n,a,r==="\\\\globalfuture"),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:"internal",mode:t.mode}}});var yr=function(t,r,n){var i=de.math[t]&&de.math[t].replace,a=fi(i||t,r,n);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return a},bi=function(t,r,n,i){var a=n.havingBaseStyle(r),l=F(i.concat(a.sizingClasses(n)),[t],n),s=a.sizeMultiplier/n.sizeMultiplier;return l.height*=s,l.depth*=s,l.maxFontSize=a.sizeMultiplier,l},Qs=function(t,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=P(a),t.height-=a,t.depth+=a},_2=function(t,r,n,i,a,l){var s=Le(t,"Main-Regular",a,i),o=bi(s,r,i,l);return Qs(o,i,r),o},G2=function(t,r,n,i){return Le(t,"Size"+r+"-Regular",n,i)},Js=function(t,r,n,i,a,l){var s=G2(t,r,a,i),o=bi(F(["delimsizing","size"+r],[s],i),te.TEXT,i,l);return n&&Qs(o,i,te.TEXT),o},i0=function(t,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=F(["delimsizinginner",i],[F([],[Le(t,r,n)])]);return{type:"elem",elem:a}},a0=function(t,r,n){var i=st["Size4-Regular"][t.charCodeAt(0)]?st["Size4-Regular"][t.charCodeAt(0)][4]:st["Size1-Regular"][t.charCodeAt(0)][4],a=new Mt("inner",t2(t,Math.round(1e3*r))),l=new yt([a],{width:P(i),height:P(r),style:"width:"+P(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=Et([],[l],n);return s.height=r,s.style.height=P(r),s.style.width=P(i),{type:"elem",elem:s}},j0=.008,Zr={type:"kern",size:-1*j0},W2=new Set(["|","\\lvert","\\rvert","\\vert"]),X2=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),eo=function(t,r,n,i,a,l){var s,o,u,h,m="",d=0;s=u=h=t,o=null;var p="Size1-Regular";t==="\\uparrow"?u=h="⏐":t==="\\Uparrow"?u=h="‖":t==="\\downarrow"?s=u="⏐":t==="\\Downarrow"?s=u="‖":t==="\\updownarrow"?(s="\\uparrow",u="⏐",h="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",u="‖",h="\\Downarrow"):W2.has(t)?(u="∣",m="vert",d=333):X2.has(t)?(u="∥",m="doublevert",d=556):t==="["||t==="\\lbrack"?(s="⎡",u="⎢",h="⎣",p="Size4-Regular",m="lbrack",d=667):t==="]"||t==="\\rbrack"?(s="⎤",u="⎥",h="⎦",p="Size4-Regular",m="rbrack",d=667):t==="\\lfloor"||t==="⌊"?(u=s="⎢",h="⎣",p="Size4-Regular",m="lfloor",d=667):t==="\\lceil"||t==="⌈"?(s="⎡",u=h="⎢",p="Size4-Regular",m="lceil",d=667):t==="\\rfloor"||t==="⌋"?(u=s="⎥",h="⎦",p="Size4-Regular",m="rfloor",d=667):t==="\\rceil"||t==="⌉"?(s="⎤",u=h="⎥",p="Size4-Regular",m="rceil",d=667):t==="("||t==="\\lparen"?(s="⎛",u="⎜",h="⎝",p="Size4-Regular",m="lparen",d=875):t===")"||t==="\\rparen"?(s="⎞",u="⎟",h="⎠",p="Size4-Regular",m="rparen",d=875):t==="\\{"||t==="\\lbrace"?(s="⎧",o="⎨",h="⎩",u="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",o="⎬",h="⎭",u="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",h="⎩",u="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",h="⎭",u="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",h="⎭",u="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",h="⎩",u="⎪",p="Size4-Regular");var y=yr(s,p,a),w=y.height+y.depth,C=yr(u,p,a),A=C.height+C.depth,z=yr(h,p,a),I=z.height+z.depth,q=0,O=1;if(o!==null){var M=yr(o,p,a);q=M.height+M.depth,O=2}var G=w+I+q,X=Math.max(0,Math.ceil((r-G)/(O*A))),U=G+X*O*A,E=i.fontMetrics().axisHeight;n&&(E*=i.sizeMultiplier);var V=U/2-E,$=[];if(m.length>0){var se=U-w-I,Y=Math.round(U*1e3),H=r2(m,Math.round(se*1e3)),ae=new Mt(m,H),pe=P(d/1e3),Me=P(Y/1e3),$e=new yt([ae],{width:pe,height:Me,viewBox:"0 0 "+d+" "+Y}),k=Et([],[$e],i);k.height=Y/1e3,k.style.width=pe,k.style.height=Me,$.push({type:"elem",elem:k})}else{if($.push(i0(h,p,a)),$.push(Zr),o===null){var xe=U-w-I+2*j0;$.push(a0(u,xe,i))}else{var Fe=(U-w-I-q)/2+2*j0;$.push(a0(u,Fe,i)),$.push(Zr),$.push(i0(o,p,a)),$.push(Zr),$.push(a0(u,Fe,i))}$.push(Zr),$.push(i0(s,p,a))}var S=i.havingBaseStyle(te.TEXT),Ee=oe({positionType:"bottom",positionData:V,children:$});return bi(F(["delimsizing","mult"],[Ee],S),te.TEXT,i,l)},l0=80,s0=.08,o0=function(t,r,n,i,a){var l=e2(t,i,n),s=new Mt(t,l),o=new yt([s],{width:"400em",height:P(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Et(["hide-tail"],[o],a)},Y2=function(t,r){var n=r.havingBaseSizing(),i=ao("\\surd",t*n.sizeMultiplier,io,n),a=n.sizeMultiplier,l=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,o,u,h,m;return i.type==="small"?(h=1e3+1e3*l+l0,t<1?a=1:t<1.4&&(a=.7),o=(1+l+s0)/a,u=(1+l)/a,s=o0("sqrtMain",o,h,l,r),s.style.minWidth="0.853em",m=.833/a):i.type==="large"?(h=(1e3+l0)*kr[i.size],u=(kr[i.size]+l)/a,o=(kr[i.size]+l+s0)/a,s=o0("sqrtSize"+i.size,o,h,l,r),s.style.minWidth="1.02em",m=1/a):(o=t+l+s0,u=t+l,h=Math.floor(1e3*t+l)+l0,s=o0("sqrtTall",o,h,l,r),s.style.minWidth="0.742em",m=1.056),s.height=u,s.style.height=P(o),{span:s,advanceWidth:m,ruleWidth:(r.fontMetrics().sqrtRuleThickness+l)*a}},to=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),K2=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),ro=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),kr=[0,1.2,1.8,2.4,3],no=function(t,r,n,i,a){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),to.has(t)||ro.has(t))return Js(t,r,!1,n,i,a);if(K2.has(t))return eo(t,kr[r],!1,n,i,a);throw new L("Illegal delimiter: '"+t+"'")},Z2=[{type:"small",style:te.SCRIPTSCRIPT},{type:"small",style:te.SCRIPT},{type:"small",style:te.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Q2=[{type:"small",style:te.SCRIPTSCRIPT},{type:"small",style:te.SCRIPT},{type:"small",style:te.TEXT},{type:"stack"}],io=[{type:"small",style:te.SCRIPTSCRIPT},{type:"small",style:te.SCRIPT},{type:"small",style:te.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],J2=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},ao=function(t,r,n,i){for(var a=Math.min(2,3-i.style.size),l=a;lr)return s}return n[n.length-1]},$0=function(t,r,n,i,a,l){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;ro.has(t)?s=Z2:to.has(t)?s=io:s=Q2;var o=ao(t,r,s,i);return o.type==="small"?_2(t,o.style,n,i,a,l):o.type==="large"?Js(t,o.size,n,i,a,l):eo(t,r,n,i,a,l)},u0=function(t,r,n,i,a,l){var s=i.fontMetrics().axisHeight*i.sizeMultiplier,o=901,u=5/i.fontMetrics().ptPerEm,h=Math.max(r-s,n+s),m=Math.max(h/500*o,2*h-u);return $0(t,m,!0,i,a,l)},Va={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},e5=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function _a(e){return"isMiddle"in e}function zn(e,t){var r=Tn(e);if(r&&e5.has(r.text))return r;throw r?new L("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new L("Invalid delimiter type '"+e.type+"'",e)}_({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=zn(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Va[e.funcName].size,mclass:Va[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?F([e.mclass]):no(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(et(e.delim,e.mode));var r=new N("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=P(kr[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function Ga(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}_({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new L("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:zn(t[0],e).text,color:r}}});_({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=zn(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=re(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},htmlBuilder:(e,t)=>{Ga(e);for(var r=ze(e.body,t,!0,["mopen","mclose"]),n=0,i=0,a=!1,l=0;l{Ga(e);var r=Ke(e.body,t);if(e.left!=="."){var n=new N("mo",[et(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var i=new N("mo",[et(e.right,e.mode)]);i.setAttribute("fence","true"),e.rightColor&&i.setAttribute("mathcolor",e.rightColor),r.push(i)}return gi(r)}});_({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=zn(t[0],e);if(!e.parser.leftrightDepth)throw new L("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;return e.delim==="."?r=zr(t,[]):(r=no(e.delim,1,t,e.mode,[]),r.isMiddle={delim:e.delim,options:t}),r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?et("|","text"):et(e.delim,e.mode),n=new N("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var Mn=(e,t)=>{var r=nr(ue(e.body,t),t),n=e.label.slice(1),i=t.sizeMultiplier,a,l,s=xt(e.body);if(n==="sout")a=F(["stretchy","sout"]),a.height=t.fontMetrics().defaultRuleThickness/i,l=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var o=ye({number:.6,unit:"pt"},t),u=ye({number:.35,unit:"ex"},t),h=t.havingBaseSizing();i=i/h.sizeMultiplier;var m=r.height+r.depth+o+u;r.style.paddingLeft=P(m/2+o);var d=Math.floor(1e3*m*i),p=Qf(d),y=new yt([new Mt("phase",p)],{width:"400em",height:P(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});a=Et(["hide-tail"],[y],t),a.style.height=P(m),l=r.depth+o+u}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var w,C,A=0;/box/.test(n)?(A=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),w=t.fontMetrics().fboxsep+(n==="colorbox"?0:A),C=w):n==="angl"?(A=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),w=4*A,C=Math.max(0,.25-r.depth)):(w=s?.2:0,C=w),a=L2(r,n,w,C,t),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=P(A)):n==="angl"&&A!==.049&&(a.style.borderTopWidth=P(A),a.style.borderRightWidth=P(A)),l=r.depth+C,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var z;if(e.backgroundColor)z=oe({positionType:"individualShift",children:[{type:"elem",elem:a,shift:l},{type:"elem",elem:r,shift:0}]});else{var I=/cancel|phase/.test(n)?["svg-align"]:[];z=oe({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:l,wrapperClasses:I}]})}return/cancel/.test(n)&&(z.height=r.height,z.depth=r.depth),/cancel/.test(n)&&!s?F(["mord","cancel-lap"],[z],t):F(["mord"],[z],t)},En=(e,t)=>{var r,n=new N(e.label.includes("colorbox")?"mpadded":"menclose",[fe(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+P(i)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};_({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","hbox"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=re(t[0],"color-token").color,l=t[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:l}},htmlBuilder:Mn,mathmlBuilder:En});_({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=re(t[0],"color-token").color,l=re(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:l,borderColor:a,body:s}},htmlBuilder:Mn,mathmlBuilder:En});_({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});_({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:Mn,mathmlBuilder:En});_({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:Mn,mathmlBuilder:En});_({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var lo={};function ut(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:l}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},o=0;o{var t=e.parser.settings;if(!t.displayMode)throw new L("{"+e.envName+"} can be used only in display mode.")},t5=new Set(["gather","gather*"]);function xi(e){if(!e.includes("ed"))return!e.includes("*")}function Bt(e,t,r){var{hskipBeforeAndAfter:n,addJot:i,cols:a,arraystretch:l,colSeparationType:s,autoTag:o,singleRow:u,emptySingleRow:h,maxNumCols:m,leqno:d}=t;if(e.gullet.beginGroup(),u||e.gullet.macros.set("\\cr","\\\\\\relax"),!l){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)l=1;else if(l=parseFloat(p),!l||l<0)throw new L("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var y=[],w=[y],C=[],A=[],z=o!=null?[]:void 0;function I(){o&&e.gullet.macros.set("\\@eqnsw","1",!0)}function q(){z&&(e.gullet.macros.get("\\df@tag")?(z.push(e.subparse([new We("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):z.push(!!o&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(I(),A.push(Wa(e));;){var O=e.parseExpression(!1,u?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var M={type:"ordgroup",mode:e.mode,body:O};r&&(M={type:"styling",mode:e.mode,style:r,resetFont:!0,body:[M]}),y.push(M);var G=e.fetch().text;if(G==="&"){if(m&&y.length===m){if(u||s)throw new L("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(G==="\\end"){q(),y.length===1&&M.type==="styling"&&M.body.length===1&&M.body[0].type==="ordgroup"&&M.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),A.length0&&(I+=.25),u.push({pos:I,isDashed:Q[ne]})}for(q(l[0]),n=0;n0&&(V+=z,GQ))for(n=0;n=s)){var Ue=void 0;if(i>0||t.hskipBeforeAndAfter){var mt,Ft;Ue=(mt=(Ft=S)==null?void 0:Ft.pregap)!=null?mt:d,Ue!==0&&(H=F(["arraycolsep"],[]),H.style.width=P(Ue),Y.push(H))}var Rr=[];for(n=0;n0){for(var Bn=rr("hline",r,h),Fn=rr("hdashline",r,h),hr=[{type:"elem",elem:Rt,shift:0}];u.length>0;){var qr=u.pop(),Hr=qr.pos-$;qr.isDashed?hr.push({type:"elem",elem:Fn,shift:Hr}):hr.push({type:"elem",elem:Bn,shift:Hr})}Rt=oe({positionType:"individualShift",children:hr})}if(pe.length===0)return F(["mord"],[Rt],r);var D=oe({positionType:"individualShift",children:pe}),j=F(["tag"],[D],r);return kt([Rt,j])},r5={c:"center ",l:"left ",r:"right "},ht=function(t,r){for(var n=[],i=new N("mtd",[],["mtr-glue"]),a=new N("mtd",[],["mml-eqn-num"]),l=0;l0){var y=t.cols,w="",C=!1,A=0,z=y.length;y[0].type==="separator"&&(d+="top ",A=1),y[y.length-1].type==="separator"&&(d+="bottom ",z-=1);for(var I=A;I0?"left ":"",d+=U[U.length-1].length>0?"right ":"";for(var E=1;E0&&p&&(C=1),n[y]={type:"align",align:w,pregap:C,postgap:0}}return l.colSeparationType=p?"align":"alignat",l};ut({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=Tn(t[0]),n=r?[t[0]]:re(t[0],"ordgroup").body,i=n.map(function(l){var s=An(l),o=s.text;if("lcr".includes(o))return{type:"align",align:o};if(o==="|")return{type:"separator",separator:"|"};if(o===":")return{type:"separator",separator:":"};throw new L("Unknown column alignment: "+o,l)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return Bt(e.parser,a,wi(e.envName))},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var i=e.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,!"lcr".includes(r))throw new L("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=Bt(e.parser,n,wi(e.envName)),l=Math.max(0,...a.body.map(s=>s.length));return a.cols=new Array(l).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=Bt(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=Tn(t[0]),n=r?[t[0]]:re(t[0],"ordgroup").body,i=n.map(function(s){var o=An(s),u=o.text;if("lc".includes(u))return{type:"align",align:u};throw new L("Unknown column alignment: "+u,s)});if(i.length>1)throw new L("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5},l=Bt(e.parser,a,"script");if(l.body.length>0&&l.body[0].length>1)throw new L("{subarray} can contain only one column");return l},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=Bt(e.parser,t,wi(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:oo,htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){t5.has(e.envName)&&In(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:xi(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Bt(e.parser,t,"display")},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:oo,htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){In(e);var t={autoTag:xi(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Bt(e.parser,t,"display")},htmlBuilder:ct,mathmlBuilder:ht});ut({type:"array",names:["CD"],props:{numArgs:0},handler(e){return In(e),U2(e.parser)},htmlBuilder:ct,mathmlBuilder:ht});v("\\nonumber","\\gdef\\@eqnsw{0}");v("\\notag","\\nonumber");_({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new L(e.funcName+" valid only within array environment")}});var Xa=lo;_({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];if(i.type!=="ordgroup")throw new L("Invalid environment name",i);for(var a="",l=0;l{var r=e.font,n=t.withFont(r);return ue(e.body,n)},co=(e,t)=>{var r=e.font,n=t.withFont(r);return fe(e.body,n)},Ya={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};_({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=hn(t[0]),a=n;return a in Ya&&(a=Ya[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},htmlBuilder:uo,mathmlBuilder:co});_({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:Cn(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:xt(n)}}});_({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:i}=e,{mode:a}=r,l=r.parseExpression(!0,i);return{type:"font",mode:a,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:l}}},htmlBuilder:uo,mathmlBuilder:co});var n5=(e,t)=>{var r=t.style,n=r.fracNum(),i=r.fracDen(),a;a=t.havingStyle(n);var l=ue(e.numer,a,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,o=3.5/t.fontMetrics().ptPerEm;l.height=l.height0?y=3*d:y=7*d,w=t.fontMetrics().denom1):(m>0?(p=t.fontMetrics().num2,y=d):(p=t.fontMetrics().num3,y=3*d),w=t.fontMetrics().denom2);var C;if(h){var z=t.fontMetrics().axisHeight;p-l.depth-(z+.5*m){var r=new N("mfrac",[fe(e.numer,t),fe(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=ye(e.barSize,t);r.setAttribute("linethickness",P(n))}if(e.leftDelim!=null||e.rightDelim!=null){var i=[];if(e.leftDelim!=null){var a=new N("mo",[new Se(e.leftDelim.replace("\\",""))]);a.setAttribute("fence","true"),i.push(a)}if(i.push(r),e.rightDelim!=null){var l=new N("mo",[new Se(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),i.push(l)}return gi(i)}return r},ho=(e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r};_({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=t[1],l,s=null,o=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":l=!0;break;case"\\\\atopfrac":l=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":l=!1,s="(",o=")";break;case"\\\\bracefrac":l=!1,s="\\{",o="\\}";break;case"\\\\brackfrac":l=!1,s="[",o="]";break;default:throw new Error("Unrecognized genfrac command")}var u=n==="\\cfrac",h=null;return u||n.startsWith("\\d")?h="display":n.startsWith("\\t")&&(h="text"),ho({type:"genfrac",mode:r.mode,numer:i,denom:a,continued:u,hasBarLine:l,leftDelim:s,rightDelim:o,barSize:null},h)},htmlBuilder:n5,mathmlBuilder:i5});_({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:i,token:n}}});var Ka=["display","text","script","scriptscript"],Za=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};_({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],i=t[5],a=hn(t[0]),l=a.type==="atom"&&a.family==="open"?Za(a.text):null,s=hn(t[1]),o=s.type==="atom"&&s.family==="close"?Za(s.text):null,u=re(t[2],"size"),h,m=null;u.isBlank?h=!0:(m=u.value,h=m.number>0);var d=null,p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var y=re(p.body[0],"textord");d=Ka[Number(y.text)]}}else p=re(p,"textord"),d=Ka[Number(p.text)];return ho({type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:h,barSize:m,leftDelim:l,rightDelim:o},d)}});_({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:i}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:re(t[0],"size").value,token:i}}});_({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=re(t[1],"infix").size;if(!a)throw new Error("\\\\abovefrac expected size, but got "+String(a));var l=t[2],s=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:l,continued:!1,hasBarLine:s,barSize:a,leftDelim:null,rightDelim:null}}});var mo=(e,t)=>{var r=t.style,n,i;e.type==="supsub"?(n=e.sup?ue(e.sup,t.havingStyle(r.sup()),t):ue(e.sub,t.havingStyle(r.sub()),t),i=re(e.base,"horizBrace")):i=re(e,"horizBrace");var a=ue(i.base,t.havingBaseStyle(te.DISPLAY)),l=Sn(i,t),s;if(i.isOver?s=oe({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:l,wrapperClasses:["svg-align"]}]}):s=oe({positionType:"bottom",positionData:a.depth+.1+l.height,children:[{type:"elem",elem:l,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:a}]}),n){var o=F(["minner",i.isOver?"mover":"munder"],[s],t);i.isOver?s=oe({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.2},{type:"elem",elem:n}]}):s=oe({positionType:"bottom",positionData:o.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:o}]})}return F(["minner",i.isOver?"mover":"munder"],[s],t)},a5=(e,t)=>{var r=kn(e.label);return new N(e.isOver?"mover":"munder",[fe(e.base,t),r])};_({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:mo,mathmlBuilder:a5});_({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],i=re(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:ke(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=ze(e.body,t,!1);return y2(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=It(e.body,t);return r instanceof N||(r=new N("mrow",[r])),r.setAttribute("href",e.href),r}});_({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=re(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=e,a=re(t[0],"raw").string,l=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,o={};switch(n){case"\\htmlClass":o.class=a,s={command:"\\htmlClass",class:a};break;case"\\htmlId":o.id=a,s={command:"\\htmlId",id:a};break;case"\\htmlStyle":o.style=a,s={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var u=a.split(","),h=0;h{var r=ze(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var i=F(n,r,t);for(var a in e.attributes)a!=="class"&&e.attributes.hasOwnProperty(a)&&i.setAttribute(a,e.attributes[a]);return i},mathmlBuilder:(e,t)=>It(e.body,t)});_({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:ke(t[0]),mathml:ke(t[1])}},htmlBuilder:(e,t)=>{var r=ze(e.html,t,!1);return kt(r)},mathmlBuilder:(e,t)=>It(e.mathml,t)});var c0=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new L("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Es(n))throw new L("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};_({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,i={number:0,unit:"em"},a={number:.9,unit:"em"},l={number:0,unit:"em"},s="";if(r[0])for(var o=re(r[0],"raw").string,u=o.split(","),h=0;h{var r=ye(e.height,t),n=0;e.totalheight.number>0&&(n=ye(e.totalheight,t)-r);var i=0;e.width.number>0&&(i=ye(e.width,t));var a={height:P(r+n)};i>0&&(a.width=P(i)),n>0&&(a.verticalAlign=P(-n));var l=new l2(e.src,e.alt,a);return l.height=r,l.depth=n,l},mathmlBuilder:(e,t)=>{var r=new N("mglyph",[]);r.setAttribute("alt",e.alt);var n=ye(e.height,t),i=0;if(e.totalheight.number>0&&(i=ye(e.totalheight,t)-n,r.setAttribute("valign",P(-i))),r.setAttribute("height",P(n+i)),e.width.number>0){var a=ye(e.width,t);r.setAttribute("width",P(a))}return r.setAttribute("src",e.src),r}});_({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=re(t[0],"size");if(r.settings.strict){var a=n[1]==="m",l=i.value.unit==="mu";a?(l||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):l&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(e,t){return Ls(e.dimension,t)},mathmlBuilder(e,t){var r=ye(e.dimension,t);return new js(r)}});_({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=F([],[ue(e.body,t)]),r=F(["inner"],[r],t)):r=F(["inner"],[ue(e.body,t)]);var n=F(["fix"],[]),i=F([e.alignment],[r,n],t),a=F(["strut"]);return a.style.height=P(i.height+i.depth),i.depth&&(a.style.verticalAlign=P(-i.depth)),i.children.unshift(a),i=F(["thinbox"],[i],t),F(["mord","vbox"],[i],t)},mathmlBuilder:(e,t)=>{var r=new N("mpadded",[fe(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});_({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",l=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",resetFont:!0,body:l}}});_({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new L("Mismatched "+e.funcName)}});var Qa=(e,t)=>{switch(t.style.size){case te.DISPLAY.size:return e.display;case te.TEXT.size:return e.text;case te.SCRIPT.size:return e.script;case te.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};_({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:ke(t[0]),text:ke(t[1]),script:ke(t[2]),scriptscript:ke(t[3])}},htmlBuilder:(e,t)=>{var r=Qa(e,t),n=ze(r,t,!1);return kt(n)},mathmlBuilder:(e,t)=>{var r=Qa(e,t);return It(r,t)}});var fo=(e,t,r,n,i,a,l)=>{e=F([],[e]);var s=r&&xt(r),o,u;if(t){var h=ue(t,n.havingStyle(i.sup()),n);u={elem:h,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-h.depth)}}if(r){var m=ue(r,n.havingStyle(i.sub()),n);o={elem:m,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-m.height)}}var d;if(u&&o){var p=n.fontMetrics().bigOpSpacing5+o.elem.height+o.elem.depth+o.kern+e.depth+l;d=oe({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:o.elem,marginLeft:P(-a)},{type:"kern",size:o.kern},{type:"elem",elem:e},{type:"kern",size:u.kern},{type:"elem",elem:u.elem,marginLeft:P(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(o){var y=e.height-l;d=oe({positionType:"top",positionData:y,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:o.elem,marginLeft:P(-a)},{type:"kern",size:o.kern},{type:"elem",elem:e}]})}else if(u){var w=e.depth+l;d=oe({positionType:"bottom",positionData:w,children:[{type:"elem",elem:e},{type:"kern",size:u.kern},{type:"elem",elem:u.elem,marginLeft:P(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var C=[d];if(o&&a!==0&&!s){var A=F(["mspace"],[],n);A.style.marginRight=P(a),C.unshift(A)}return F(["mop","op-limits"],C,n)},po=new Set(["\\smallint"]),ur=(e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=re(e.base,"op"),i=!0):a=re(e,"op");var l=t.style,s=!1;l.size===te.DISPLAY.size&&a.symbol&&!po.has(a.name)&&(s=!0);var o,u;if(a.symbol){var h=s?"Size2-Regular":"Size1-Regular",m="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(m=a.name.slice(1),a.name=m==="oiint"?"\\iint":"\\iiint"),o=Le(a.name,h,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),u=o.italic,m.length>0){var d=Ps(m+"Size"+(s?"2":"1"),t);o=oe({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:d,shift:s?.08:0}]}),a.name="\\"+m,o.classes.unshift("mop"),o.italic=u}}else if(a.body){var p=ze(a.body,t,!0);p.length===1&&p[0]instanceof Xe?(o=p[0],o.classes[0]="mop"):o=F(["mop"],p,t)}else{for(var y=[],w=1;w{var r;if(e.symbol)r=new N("mo",[et(e.name,e.mode)]),po.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new N("mo",Ke(e.body,t));else{r=new N("mi",[new Se(e.name.slice(1))]);var n=new N("mo",[et("⁡","text")]);e.parentIsSupSub?r=new N("mrow",[r,n]):r=Hs([r,n])}return r},l5={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};_({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=n;return i.length===1&&(i=l5[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},htmlBuilder:ur,mathmlBuilder:Fr});_({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ke(n)}},htmlBuilder:ur,mathmlBuilder:Fr});var s5={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};_({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ur,mathmlBuilder:Fr});_({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ur,mathmlBuilder:Fr});_({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=s5[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ur,mathmlBuilder:Fr});var go=(e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=re(e.base,"operatorname"),i=!0):a=re(e,"operatorname");var l;if(a.body.length>0){for(var s=a.body.map(m=>{var d="text"in m?m.text:void 0;return typeof d=="string"?{type:"textord",mode:m.mode,text:d}:m}),o=ze(s,t.withFont("mathrm"),!0),u=0;u{for(var r=Ke(e.body,t.withFont("mathrm")),n=!0,i=0;ih.toText()).join("");r=[new Se(s)]}var o=new N("mi",r);o.setAttribute("mathvariant","normal");var u=new N("mo",[et("⁡","text")]);return e.parentIsSupSub?new N("mrow",[o,u]):Hs([o,u])};_({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"operatorname",mode:r.mode,body:ke(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:go,mathmlBuilder:o5});v("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Gt({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?kt(ze(e.body,t,!1)):F(["mord"],ze(e.body,t,!0),t)},mathmlBuilder(e,t){return It(e.body,t,!0)}});_({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=ue(e.body,t.havingCrampedStyle()),n=rr("overline-line",t),i=t.fontMetrics().defaultRuleThickness,a=oe({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]});return F(["mord","overline"],[a],t)},mathmlBuilder(e,t){var r=new N("mo",[new Se("‾")]);r.setAttribute("stretchy","true");var n=new N("mover",[fe(e.body,t),r]);return n.setAttribute("accent","true"),n}});_({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:ke(n)}},htmlBuilder:(e,t)=>{var r=ze(e.body,t.withPhantom(),!1);return kt(r)},mathmlBuilder:(e,t)=>{var r=Ke(e.body,t);return new N("mphantom",r)}});v("\\hphantom","\\smash{\\phantom{#1}}");_({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=F(["inner"],[ue(e.body,t.withPhantom())]),n=F(["fix"],[]);return F(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=Ke(ke(e.body),t),n=new N("mphantom",r),i=new N("mpadded",[n]);return i.setAttribute("width","0px"),i}});_({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=re(t[0],"size").value,i=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(e,t){var r=ue(e.body,t),n=ye(e.dy,t);return oe({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new N("mpadded",[fe(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});_({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});_({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,i=r[0],a=re(t[0],"size"),l=re(t[1],"size");return{type:"rule",mode:n.mode,shift:i&&re(i,"size").value,width:a.value,height:l.value}},htmlBuilder(e,t){var r=F(["mord","rule"],[],t),n=ye(e.width,t),i=ye(e.height,t),a=e.shift?ye(e.shift,t):0;return r.style.borderRightWidth=P(n),r.style.borderTopWidth=P(i),r.style.bottom=P(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=ye(e.width,t),n=ye(e.height,t),i=e.shift?ye(e.shift,t):0,a=t.color&&t.getColor()||"black",l=new N("mspace");l.setAttribute("mathbackground",a),l.setAttribute("width",P(r)),l.setAttribute("height",P(n));var s=new N("mpadded",[l]);return i>=0?s.setAttribute("height",P(i)):(s.setAttribute("height",P(i)),s.setAttribute("depth",P(-i))),s.setAttribute("voffset",P(i)),s}});function vo(e,t,r){for(var n=ze(e,t,!1),i=t.sizeMultiplier/r.sizeMultiplier,a=0;a{var r=t.havingSize(e.size);return vo(e.body,r,t)};_({type:"sizing",names:Ja,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:Ja.indexOf(n)+1,body:a}},htmlBuilder:u5,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=Ke(e.body,r),i=new N("mstyle",n);return i.setAttribute("mathsize",P(r.sizeMultiplier)),i}});_({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,i=!1,a=!1,l=r[0]&&re(r[0],"ordgroup");if(l)for(var s,o=0;o{var r=F([],[ue(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return F(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new N("mpadded",[fe(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});_({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,i=r[0],a=t[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(e,t){var r=ue(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=nr(r,t);var n=t.fontMetrics(),i=n.defaultRuleThickness,a=i;t.style.idr.height+r.depth+l&&(l=(l+m-r.height-r.depth)/2);var d=o.height-r.height-l-u;r.style.paddingLeft=P(h);var p=oe({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+d)},{type:"elem",elem:o},{type:"kern",size:u}]});if(e.index){var y=t.havingStyle(te.SCRIPTSCRIPT),w=ue(e.index,y,t),C=.6*(p.height-p.depth),A=oe({positionType:"shift",positionData:-C,children:[{type:"elem",elem:w}]}),z=F(["root"],[A]);return F(["mord","sqrt"],[z,p],t)}else return F(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new N("mroot",[fe(r,t),fe(n,t)]):new N("msqrt",[fe(r,t)])}});var U0={display:te.DISPLAY,text:te.TEXT,script:te.SCRIPT,scriptscript:te.SCRIPTSCRIPT};function c5(e){return e in U0}_({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!0,r),l=n.slice(1,n.length-5);if(!c5(l))throw new Error("Unknown style: "+l);return{type:"styling",mode:i.mode,style:l,body:a}},htmlBuilder(e,t){var r=U0[e.style],n=t.havingStyle(r);return e.resetFont&&(n=n.withFont("")),vo(e.body,n,t)},mathmlBuilder(e,t){var r=U0[e.style],n=t.havingStyle(r);e.resetFont&&(n=n.withFont(""));var i=Ke(e.body,n),a=new N("mstyle",i),l={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=l[e.style];return a.setAttribute("scriptlevel",s[0]),a.setAttribute("displaystyle",s[1]),a}});var h5=function(t,r){var n=t.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===te.DISPLAY.size||n.alwaysHandleSupSub);return i?ur:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===te.DISPLAY.size||n.limits);return a?go:null}else{if(n.type==="accent")return xt(n.base)?yi:null;if(n.type==="horizBrace"){var l=!t.sub;return l===n.isOver?mo:null}else return null}else return null};Gt({type:"supsub",htmlBuilder(e,t){var r=h5(e,t);if(r)return r(e,t);var{base:n,sup:i,sub:a}=e,l=ue(n,t),s,o,u=t.fontMetrics(),h=0,m=0,d=n&&xt(n);if(i){var p=t.havingStyle(t.style.sup());s=ue(i,p,t),d||(h=l.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(a){var y=t.havingStyle(t.style.sub());o=ue(a,y,t),d||(m=l.depth+y.fontMetrics().subDrop*y.sizeMultiplier/t.sizeMultiplier)}var w;t.style===te.DISPLAY?w=u.sup1:t.style.cramped?w=u.sup3:w=u.sup2;var C=t.sizeMultiplier,A=P(.5/u.ptPerEm/C),z=null;if(o){var I=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");if(l instanceof Xe||I){var q;z=P(-((q=l.italic)!=null?q:0))}}var O;if(s&&o){h=Math.max(h,w,s.depth+.25*u.xHeight),m=Math.max(m,u.sub2);var M=u.defaultRuleThickness,G=4*M;if(h-s.depth-(o.height-m)0&&(h+=X,m-=X)}var U=[{type:"elem",elem:o,shift:m,marginRight:A,marginLeft:z},{type:"elem",elem:s,shift:-h,marginRight:A}];O=oe({positionType:"individualShift",children:U})}else if(o){m=Math.max(m,u.sub1,o.height-.8*u.xHeight);var E=[{type:"elem",elem:o,marginLeft:z,marginRight:A}];O=oe({positionType:"shift",positionData:m,children:E})}else if(s)h=Math.max(h,w,s.depth+.25*u.xHeight),O=oe({positionType:"shift",positionData:-h,children:[{type:"elem",elem:s,marginRight:A}]});else throw new Error("supsub must have either sup or sub.");var V=O0(l,"right")||"mord";return F([V],[l,F(["msupsub"],[O])],t)},mathmlBuilder(e,t){var r=!1,n,i;e.base&&e.base.type==="horizBrace"&&(i=!!e.sup,i===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var a=[fe(e.base,t)];e.sub&&a.push(fe(e.sub,t)),e.sup&&a.push(fe(e.sup,t));var l;if(r)l=n?"mover":"munder";else if(e.sub)if(e.sup){var u=e.base;u&&u.type==="op"&&u.limits&&t.style===te.DISPLAY||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(t.style===te.DISPLAY||u.limits)?l="munderover":l="msubsup"}else{var o=e.base;o&&o.type==="op"&&o.limits&&(t.style===te.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||t.style===te.DISPLAY)?l="munder":l="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===te.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===te.DISPLAY)?l="mover":l="msup"}return new N(l,a)}});Gt({type:"atom",htmlBuilder(e,t){return pi(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new N("mo",[et(e.text,e.mode)]);if(e.family==="bin"){var n=vi(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var yo={mi:"italic",mn:"normal",mtext:"normal"};Gt({type:"mathord",htmlBuilder(e,t){return wn(e,t,"mathord")},mathmlBuilder(e,t){var r=new N("mi",[et(e.text,e.mode,t)]),n=vi(e,t)||"italic";return n!==yo[r.type]&&r.setAttribute("mathvariant",n),r}});Gt({type:"textord",htmlBuilder(e,t){return wn(e,t,"textord")},mathmlBuilder(e,t){var r=et(e.text,e.mode,t),n=vi(e,t)||"normal",i;return e.mode==="text"?i=new N("mtext",[r]):/[0-9]/.test(e.text)?i=new N("mn",[r]):e.text==="\\prime"?i=new N("mo",[r]):i=new N("mi",[r]),n!==yo[i.type]&&i.setAttribute("mathvariant",n),i}});var h0={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},m0={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Gt({type:"spacing",htmlBuilder(e,t){if(m0.hasOwnProperty(e.text)){var r=m0[e.text].className||"";if(e.mode==="text"){var n=wn(e,t,"textord");return n.classes.push(r),n}else return F(["mspace",r],[pi(e.text,e.mode,t)],t)}else{if(h0.hasOwnProperty(e.text))return F(["mspace",h0[e.text]],[],t);throw new L('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(m0.hasOwnProperty(e.text))r=new N("mtext",[new Se(" ")]);else{if(h0.hasOwnProperty(e.text))return new N("mspace");throw new L('Unknown type of space "'+e.text+'"')}return r}});var el=()=>{var e=new N("mtd",[]);return e.setAttribute("width","50%"),e};Gt({type:"tag",mathmlBuilder(e,t){var r=new N("mtable",[new N("mtr",[el(),new N("mtd",[It(e.body,t)]),el(),new N("mtd",[It(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var tl={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},rl={"\\textbf":"textbf","\\textmd":"textmd"},m5={"\\textit":"textit","\\textup":"textup"},nl=(e,t)=>{var r=e.font;if(r){if(tl[r])return t.withTextFontFamily(tl[r]);if(rl[r])return t.withTextFontWeight(rl[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(m5[r])};_({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"text",mode:r.mode,body:ke(i),font:n}},htmlBuilder(e,t){var r=nl(e,t),n=ze(e.body,r,!0);return F(["mord","text"],n,r)},mathmlBuilder(e,t){var r=nl(e,t);return It(e.body,r)}});_({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=ue(e.body,t),n=rr("underline-line",t),i=t.fontMetrics().defaultRuleThickness,a=oe({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]});return F(["mord","underline"],[a],t)},mathmlBuilder(e,t){var r=new N("mo",[new Se("‾")]);r.setAttribute("stretchy","true");var n=new N("munder",[fe(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});_({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=ue(e.body,t),n=t.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return oe({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new N("mpadded",[fe(e.body,t)],["vcenter"]);return new N("mrow",[r])}});_({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new L("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=il(e),n=[],i=t.havingStyle(t.style.text()),a=0;ae.body.replace(/ /g,e.star?"␣":" "),Ct=Os,bo=`[ \r - ]`,f5="\\\\[a-zA-Z@]+",p5="\\\\[^\uD800-\uDFFF]",d5="("+f5+")"+bo+"*",g5=`\\\\( -|[ \r ]+ -?)[ \r ]*`,V0="[̀-ͯ]",v5=new RegExp(V0+"+$"),y5="("+bo+"+)|"+(g5+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(V0+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(V0+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+d5)+("|"+p5+")");class al{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(y5,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new We("EOF",new He(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new L("Unexpected character: '"+t[r]+"'",new We(t[r],new He(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=t.indexOf(` -`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new We(i,new He(this,r,this.tokenRegex.lastIndex))}}class b5{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new L("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(t)&&(a[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var x5=so;v("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});v("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});v("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});v("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});v("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});v("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");v("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var ll={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};v("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new L("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=ll[t.text],n==null||n>=r)throw new L("Invalid base-"+r+" digit "+t.text);for(var i;(i=ll[e.future().text])!=null&&i{var i=e.consumeArg().tokens;if(i.length!==1)throw new L("\\newcommand's first argument must be a macro name");var a=i[0].text,l=e.isDefined(a);if(l&&!t)throw new L("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!l&&!r)throw new L("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var s=0;if(i=e.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var o="",u=e.expandNextToken();u.text!=="]"&&u.text!=="EOF";)o+=u.text,u=e.expandNextToken();if(!o.match(/^\s*[0-9]+\s*$/))throw new L("Invalid number of arguments: "+o);s=parseInt(o),i=e.consumeArg().tokens}return l&&n||e.macros.set(a,{tokens:i,numArgs:s}),""};v("\\newcommand",e=>ki(e,!1,!0,!1));v("\\renewcommand",e=>ki(e,!0,!1,!1));v("\\providecommand",e=>ki(e,!0,!0,!0));v("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});v("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});v("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Ct[r],de.math[r],de.text[r]),""});v("\\bgroup","{");v("\\egroup","}");v("~","\\nobreakspace");v("\\lq","`");v("\\rq","'");v("\\aa","\\r a");v("\\AA","\\r A");v("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");v("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");v("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");v("ℬ","\\mathscr{B}");v("ℰ","\\mathscr{E}");v("ℱ","\\mathscr{F}");v("ℋ","\\mathscr{H}");v("ℐ","\\mathscr{I}");v("ℒ","\\mathscr{L}");v("ℳ","\\mathscr{M}");v("ℛ","\\mathscr{R}");v("ℭ","\\mathfrak{C}");v("ℌ","\\mathfrak{H}");v("ℨ","\\mathfrak{Z}");v("\\Bbbk","\\Bbb{k}");v("\\llap","\\mathllap{\\textrm{#1}}");v("\\rlap","\\mathrlap{\\textrm{#1}}");v("\\clap","\\mathclap{\\textrm{#1}}");v("\\mathstrut","\\vphantom{(}");v("\\underbar","\\underline{\\text{#1}}");v("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');v("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");v("\\ne","\\neq");v("≠","\\neq");v("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");v("∉","\\notin");v("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");v("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");v("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");v("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");v("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");v("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");v("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");v("⟂","\\perp");v("‼","\\mathclose{!\\mkern-0.8mu!}");v("∌","\\notni");v("⌜","\\ulcorner");v("⌝","\\urcorner");v("⌞","\\llcorner");v("⌟","\\lrcorner");v("©","\\copyright");v("®","\\textregistered");v("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');v("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');v("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');v("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');v("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");v("⋮","\\vdots");v("\\varGamma","\\mathit{\\Gamma}");v("\\varDelta","\\mathit{\\Delta}");v("\\varTheta","\\mathit{\\Theta}");v("\\varLambda","\\mathit{\\Lambda}");v("\\varXi","\\mathit{\\Xi}");v("\\varPi","\\mathit{\\Pi}");v("\\varSigma","\\mathit{\\Sigma}");v("\\varUpsilon","\\mathit{\\Upsilon}");v("\\varPhi","\\mathit{\\Phi}");v("\\varPsi","\\mathit{\\Psi}");v("\\varOmega","\\mathit{\\Omega}");v("\\substack","\\begin{subarray}{c}#1\\end{subarray}");v("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");v("\\boxed","\\fbox{$\\displaystyle{#1}$}");v("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");v("\\implies","\\DOTSB\\;\\Longrightarrow\\;");v("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");v("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");v("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var sl={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},w5=new Set(["bin","rel"]);v("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in sl?t=sl[r]:(r.slice(0,4)==="\\not"||r in de.math&&w5.has(de.math[r].group))&&(t="\\dotsb"),t});var Si={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};v("\\dotso",function(e){var t=e.future().text;return t in Si?"\\ldots\\,":"\\ldots"});v("\\dotsc",function(e){var t=e.future().text;return t in Si&&t!==","?"\\ldots\\,":"\\ldots"});v("\\cdots",function(e){var t=e.future().text;return t in Si?"\\@cdots\\,":"\\@cdots"});v("\\dotsb","\\cdots");v("\\dotsm","\\cdots");v("\\dotsi","\\!\\cdots");v("\\dotsx","\\ldots\\,");v("\\DOTSI","\\relax");v("\\DOTSB","\\relax");v("\\DOTSX","\\relax");v("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");v("\\,","\\tmspace+{3mu}{.1667em}");v("\\thinspace","\\,");v("\\>","\\mskip{4mu}");v("\\:","\\tmspace+{4mu}{.2222em}");v("\\medspace","\\:");v("\\;","\\tmspace+{5mu}{.2777em}");v("\\thickspace","\\;");v("\\!","\\tmspace-{3mu}{.1667em}");v("\\negthinspace","\\!");v("\\negmedspace","\\tmspace-{4mu}{.2222em}");v("\\negthickspace","\\tmspace-{5mu}{.277em}");v("\\enspace","\\kern.5em ");v("\\enskip","\\hskip.5em\\relax");v("\\quad","\\hskip1em\\relax");v("\\qquad","\\hskip2em\\relax");v("\\tag","\\@ifstar\\tag@literal\\tag@paren");v("\\tag@paren","\\tag@literal{({#1})}");v("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new L("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});v("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");v("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");v("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");v("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");v("\\newline","\\\\\\relax");v("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var xo=P(st["Main-Regular"][84][1]-.7*st["Main-Regular"][65][1]);v("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+xo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");v("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+xo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");v("\\hspace","\\@ifstar\\@hspacer\\@hspace");v("\\@hspace","\\hskip #1\\relax");v("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");v("\\ordinarycolon",":");v("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");v("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');v("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');v("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');v("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');v("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');v("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');v("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');v("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');v("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');v("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');v("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');v("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');v("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');v("∷","\\dblcolon");v("∹","\\eqcolon");v("≔","\\coloneqq");v("≕","\\eqqcolon");v("⩴","\\Coloneqq");v("\\ratio","\\vcentcolon");v("\\coloncolon","\\dblcolon");v("\\colonequals","\\coloneqq");v("\\coloncolonequals","\\Coloneqq");v("\\equalscolon","\\eqqcolon");v("\\equalscoloncolon","\\Eqqcolon");v("\\colonminus","\\coloneq");v("\\coloncolonminus","\\Coloneq");v("\\minuscolon","\\eqcolon");v("\\minuscoloncolon","\\Eqcolon");v("\\coloncolonapprox","\\Colonapprox");v("\\coloncolonsim","\\Colonsim");v("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");v("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");v("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");v("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");v("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");v("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");v("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");v("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");v("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");v("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");v("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");v("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");v("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");v("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");v("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");v("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");v("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");v("\\nleqq","\\html@mathml{\\@nleqq}{≰}");v("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");v("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");v("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");v("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");v("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");v("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");v("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");v("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");v("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");v("\\imath","\\html@mathml{\\@imath}{ı}");v("\\jmath","\\html@mathml{\\@jmath}{ȷ}");v("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");v("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");v("⟦","\\llbracket");v("⟧","\\rrbracket");v("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");v("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");v("⦃","\\lBrace");v("⦄","\\rBrace");v("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");v("⦵","\\minuso");v("\\darr","\\downarrow");v("\\dArr","\\Downarrow");v("\\Darr","\\Downarrow");v("\\lang","\\langle");v("\\rang","\\rangle");v("\\uarr","\\uparrow");v("\\uArr","\\Uparrow");v("\\Uarr","\\Uparrow");v("\\N","\\mathbb{N}");v("\\R","\\mathbb{R}");v("\\Z","\\mathbb{Z}");v("\\alef","\\aleph");v("\\alefsym","\\aleph");v("\\Alpha","\\mathrm{A}");v("\\Beta","\\mathrm{B}");v("\\bull","\\bullet");v("\\Chi","\\mathrm{X}");v("\\clubs","\\clubsuit");v("\\cnums","\\mathbb{C}");v("\\Complex","\\mathbb{C}");v("\\Dagger","\\ddagger");v("\\diamonds","\\diamondsuit");v("\\empty","\\emptyset");v("\\Epsilon","\\mathrm{E}");v("\\Eta","\\mathrm{H}");v("\\exist","\\exists");v("\\harr","\\leftrightarrow");v("\\hArr","\\Leftrightarrow");v("\\Harr","\\Leftrightarrow");v("\\hearts","\\heartsuit");v("\\image","\\Im");v("\\infin","\\infty");v("\\Iota","\\mathrm{I}");v("\\isin","\\in");v("\\Kappa","\\mathrm{K}");v("\\larr","\\leftarrow");v("\\lArr","\\Leftarrow");v("\\Larr","\\Leftarrow");v("\\lrarr","\\leftrightarrow");v("\\lrArr","\\Leftrightarrow");v("\\Lrarr","\\Leftrightarrow");v("\\Mu","\\mathrm{M}");v("\\natnums","\\mathbb{N}");v("\\Nu","\\mathrm{N}");v("\\Omicron","\\mathrm{O}");v("\\plusmn","\\pm");v("\\rarr","\\rightarrow");v("\\rArr","\\Rightarrow");v("\\Rarr","\\Rightarrow");v("\\real","\\Re");v("\\reals","\\mathbb{R}");v("\\Reals","\\mathbb{R}");v("\\Rho","\\mathrm{P}");v("\\sdot","\\cdot");v("\\sect","\\S");v("\\spades","\\spadesuit");v("\\sub","\\subset");v("\\sube","\\subseteq");v("\\supe","\\supseteq");v("\\Tau","\\mathrm{T}");v("\\thetasym","\\vartheta");v("\\weierp","\\wp");v("\\Zeta","\\mathrm{Z}");v("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");v("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");v("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");v("\\bra","\\mathinner{\\langle{#1}|}");v("\\ket","\\mathinner{|{#1}\\rangle}");v("\\braket","\\mathinner{\\langle{#1}\\rangle}");v("\\Bra","\\left\\langle#1\\right|");v("\\Ket","\\left|#1\\right\\rangle");var wo=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,a=t.consumeArg().tokens,l=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var o=m=>d=>{e&&(d.macros.set("|",l),i.length&&d.macros.set("\\|",s));var p=m;if(!m&&i.length){var y=d.future();y.text==="|"&&(d.popToken(),p=!0)}return{tokens:p?i:n,numArgs:0}};t.macros.set("|",o(!1)),i.length&&t.macros.set("\\|",o(!0));var u=t.consumeArg().tokens,h=t.expandTokens([...a,...u,...r]);return t.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};v("\\bra@ket",wo(!1));v("\\bra@set",wo(!0));v("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");v("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");v("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");v("\\angln","{\\angl n}");v("\\blue","\\textcolor{##6495ed}{#1}");v("\\orange","\\textcolor{##ffa500}{#1}");v("\\pink","\\textcolor{##ff00af}{#1}");v("\\red","\\textcolor{##df0030}{#1}");v("\\green","\\textcolor{##28ae7b}{#1}");v("\\gray","\\textcolor{gray}{#1}");v("\\purple","\\textcolor{##9d38bd}{#1}");v("\\blueA","\\textcolor{##ccfaff}{#1}");v("\\blueB","\\textcolor{##80f6ff}{#1}");v("\\blueC","\\textcolor{##63d9ea}{#1}");v("\\blueD","\\textcolor{##11accd}{#1}");v("\\blueE","\\textcolor{##0c7f99}{#1}");v("\\tealA","\\textcolor{##94fff5}{#1}");v("\\tealB","\\textcolor{##26edd5}{#1}");v("\\tealC","\\textcolor{##01d1c1}{#1}");v("\\tealD","\\textcolor{##01a995}{#1}");v("\\tealE","\\textcolor{##208170}{#1}");v("\\greenA","\\textcolor{##b6ffb0}{#1}");v("\\greenB","\\textcolor{##8af281}{#1}");v("\\greenC","\\textcolor{##74cf70}{#1}");v("\\greenD","\\textcolor{##1fab54}{#1}");v("\\greenE","\\textcolor{##0d923f}{#1}");v("\\goldA","\\textcolor{##ffd0a9}{#1}");v("\\goldB","\\textcolor{##ffbb71}{#1}");v("\\goldC","\\textcolor{##ff9c39}{#1}");v("\\goldD","\\textcolor{##e07d10}{#1}");v("\\goldE","\\textcolor{##a75a05}{#1}");v("\\redA","\\textcolor{##fca9a9}{#1}");v("\\redB","\\textcolor{##ff8482}{#1}");v("\\redC","\\textcolor{##f9685d}{#1}");v("\\redD","\\textcolor{##e84d39}{#1}");v("\\redE","\\textcolor{##bc2612}{#1}");v("\\maroonA","\\textcolor{##ffbde0}{#1}");v("\\maroonB","\\textcolor{##ff92c6}{#1}");v("\\maroonC","\\textcolor{##ed5fa6}{#1}");v("\\maroonD","\\textcolor{##ca337c}{#1}");v("\\maroonE","\\textcolor{##9e034e}{#1}");v("\\purpleA","\\textcolor{##ddd7ff}{#1}");v("\\purpleB","\\textcolor{##c6b9fc}{#1}");v("\\purpleC","\\textcolor{##aa87ff}{#1}");v("\\purpleD","\\textcolor{##7854ab}{#1}");v("\\purpleE","\\textcolor{##543b78}{#1}");v("\\mintA","\\textcolor{##f5f9e8}{#1}");v("\\mintB","\\textcolor{##edf2df}{#1}");v("\\mintC","\\textcolor{##e0e5cc}{#1}");v("\\grayA","\\textcolor{##f6f7f7}{#1}");v("\\grayB","\\textcolor{##f0f1f2}{#1}");v("\\grayC","\\textcolor{##e3e5e6}{#1}");v("\\grayD","\\textcolor{##d6d8da}{#1}");v("\\grayE","\\textcolor{##babec2}{#1}");v("\\grayF","\\textcolor{##888d93}{#1}");v("\\grayG","\\textcolor{##626569}{#1}");v("\\grayH","\\textcolor{##3b3e40}{#1}");v("\\grayI","\\textcolor{##21242c}{#1}");v("\\kaBlue","\\textcolor{##314453}{#1}");v("\\kaGreen","\\textcolor{##71B307}{#1}");var ko={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class k5{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new b5(x5,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new al(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,i;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new We("EOF",n.loc)),this.pushTokens(i),new We("",He.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var i=this.future(),a,l=0,s=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++l;else if(a.text==="}"){if(--l,l===-1)throw new L("Extra }",a)}else if(a.text==="EOF")throw new L("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",a);if(t&&n)if((l===0||l===1&&t[s]==="{")&&a.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(l!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new L("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new L("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||t&&i.unexpandable){if(t&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new L("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,l=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var s=a.length-1;s>=0;--s){var o=a[s];if(o.text==="#"){if(s===0)throw new L("Incomplete placeholder at end of macro body",o);if(o=a[--s],o.text==="#")a.splice(s+1,1);else if(/^[1-9]$/.test(o.text))a.splice(s,2,...l[+o.text-1]);else throw new L("Not a valid argument number",o)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new We(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.includes("#"))for(var l=i.replace(/##/g,"");l.includes("#"+(a+1));)++a;for(var s=new al(i,this.settings),o=[],u=s.lex();u.text!=="EOF";)o.push(u),u=s.lex();o.reverse();var h={tokens:o,numArgs:a};return h}return i}isDefined(t){return this.macros.has(t)||Ct.hasOwnProperty(t)||de.math.hasOwnProperty(t)||de.text.hasOwnProperty(t)||ko.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Ct.hasOwnProperty(t)&&!Ct[t].primitive}}var ol=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Qr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),f0={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ul={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class Dn{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new k5(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new L("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new We("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(Dn.endOfExpression.has(i.text)||r&&i.text===r||t&&Ct[i.text]&&Ct[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,i=0;i=128)this.settings.strict&&(Ms(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),l={type:"textord",mode:"text",loc:He.range(t),text:r};else return null;if(this.consume(),a)for(var h=0;h=o&&p[1]===u&&p[3].trim()===""){m=d;break}}if(m!==-1)r.push([h,m]),n=m+1;else{const p=l[3].trim().split(/\s+/,1)[0]||"",y=fn(p)!==null,w=n+1C.trim()!=="");if(y&&w){r.push([h,t.length-1]);break}n++}}function i(l){return r.some(([s,o])=>l>=s&&l<=o)}return t.map((l,s)=>{if(i(s))return l;let o=l.replace(/`{3,}/g,"");return o=o.replace(/``\s*``/g,""),o=o.replace(/``(?=[.,;:!?\s]|$)/g,""),o}).join(` -`)}function P5(e){const t=e.split(` -`),r=[];let n=0;for(;n=o&&d[1]===a&&d[3].trim()===""){h=m;break}}if(h!==-1){const m=t.slice(n+1,h);if(!m.some(C=>C.trim()!=="")){n=h+1;continue}const p=u.split(/\s+/,1)[0]||"";if(p.toLowerCase()==="math"){r.push(`${a}\`\`\`math`);for(const C of m)r.push(C);r.push(`${a}\`\`\``),n=h+1;continue}if(u&&hl(u)){for(const C of m)r.push(C);n=h+1;continue}const y=u?fn(p):null,w=y||"";r.push(`${a}\`\`\`${w}`);for(const C of m)r.push(C);r.push(`${a}\`\`\``),n=h+1}else{const m=t.slice(n+1);if(!m.some(w=>w.trim()!=="")){n++;continue}const p=u.split(/\s+/,1)[0]||"",y=fn(p);if(y||p.toLowerCase()==="math"){const w=p.toLowerCase()==="math"?"math":y;r.push(`${a}\`\`\`${w}`);for(const C of m)r.push(C)}else if(u&&hl(u))for(const w of m)r.push(w);else{r.push(`${a}\`\`\``);for(const w of m)r.push(w)}break}}return r.join(` -`)}function O5(e){return e.replace(/(^|\n)[ \t]*(?:`{3,}|~{3,})[^\n]*\n[ \t]*\n?[ \t]*(?:`{3,}|~{3,})[ \t]*(?=\n|$)/g,"$1")}function q5(e){return e.replace(B5,"$1\\$")}function H5(e){let t=e;return t=t.replace(R5,(r,n)=>`$$${n}$$`),t=t.replace(F5,(r,n)=>`$${n}$`),t}function X5(e){const t=N5(e),r=P5(t);return O5(r).split(I5).map((i,a)=>a%2===1||!i.trim()?i:i.split(D5).map((l,s)=>s%2===1?l:H5(q5(l))).join("")).join("")}export{V5 as M,W5 as S,U5 as a,_5 as b,X5 as p,G5 as r}; diff --git a/frontends/desktop/dist/assets/markdown-preprocess-Cp579UoJ.css b/frontends/desktop/dist/assets/markdown-preprocess-Cp579UoJ.css deleted file mode 100644 index 08c8a35d..00000000 --- a/frontends/desktop/dist/assets/markdown-preprocess-Cp579UoJ.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.17.0"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/frontends/desktop/dist/assets/setup-BpPmqi-U.js b/frontends/desktop/dist/assets/setup-BpPmqi-U.js deleted file mode 100644 index 57200809..00000000 --- a/frontends/desktop/dist/assets/setup-BpPmqi-U.js +++ /dev/null @@ -1,2 +0,0 @@ -import{c as te,b as c,an as G,ao as oe,aj as r,T as f,ap as L,av as re,at as ne,aq as ae,as as ie,ar as ce}from"./tauri-compat-D_GD_wMe.js";import{B as F}from"./index-C-iCGtYr.js";import{B as A}from"./index-9FI8Jlf5.js";import{I as se}from"./IconFile-C8B3WX2U.js";function le(t){return c.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},t),c.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2 5a3 3 0 0 1 3-3h3.3a2 2 0 0 1 1.25.44l1.13.9a3 3 0 0 0 1.87.66H18c2 0 3 2 3 4H7.53A2 2 0 0 0 5.6 9.48L2.57 20.76C2.21 20.26 2 19.66 2 19V5Zm20.17 5H9.5a2 2 0 0 0-1.92 1.44l-2.7 9.28A1 1 0 0 0 5.82 22H18.5a2 2 0 0 0 1.92-1.44l2.7-9.28a1 1 0 0 0-.95-1.28Z",fill:"currentColor"}))}const pe=te(le,"folder_open");function C(){return window.__TAURI__}function de(t,e){return Number.isFinite(e.seq)?e.seq>t:!0}function O(t,e,n,i="prepare_failed"){const u=e==null?"":oe(e);return{seq:n,mode:"cold_start",phase:"failed",stage:null,progress:0,failure:{code:u?i:"unknown",detail:u},diagnostics:{buildId:"",platform:navigator.platform||"",projectDir:t[1]||"",pythonPath:t[0]||"",portState:"unknown",bridgeIdentity:null,recentLogs:[]}}}async function ue(t,e=0){const n=await t("get_config").catch(()=>["",""]);try{return{config:n,mode:"snapshot",snapshot:await t("get_bootstrap_snapshot")}}catch(i){if(!G(i,"get_bootstrap_snapshot"))throw i;const u=await t("get_prepare_error").catch(()=>null);return{config:n,mode:"legacy",snapshot:O(n,u,e)}}}async function he(t,e,n){if(n==="snapshot")try{return await t("retry_bootstrap",e),{mode:"snapshot"}}catch(i){if(!G(i,"retry_bootstrap"))return{mode:"snapshot",error:i}}try{return await t("start_bridge_with_config",e),{mode:"legacy"}}catch(i){return{mode:"legacy",error:i}}}async function ye(t,e,n){const i=await t("pick_directory",{title:n});if(!i)return null;const u=await t("discover_python_for_project",{projectDir:i,currentPython:e||null}).catch(()=>e);return{projectDir:i,pythonPath:u||""}}async function ge(t,e){return t("pick_python_interpreter",{title:e})}const H={config_unresolved:{zh:{title:"未找到应用文件",description:"请选择应用文件夹后继续。"},en:{title:"Application files not found",description:"Choose the application folder to continue."}},prepare_failed:{zh:{title:"运行环境尚未准备完成",description:"请检查所选应用文件夹和 Python 环境,然后继续启动。"},en:{title:"Environment setup is incomplete",description:"Check the application folder and Python environment, then continue startup."}},spawn_failed:{zh:{title:"本地连接未能启动",description:"请选择可用的应用文件夹和 Python 环境后继续。"},en:{title:"Local connection could not start",description:"Choose a usable application folder and Python environment to continue."}},bridge_shutdown_refused:{zh:{title:"本地连接暂时无法安全重启",description:"请等待当前操作完成后重试。"},en:{title:"Local connection cannot restart safely",description:"Wait for the current operation to finish, then retry."}},port_conflict:{zh:{title:"本地连接被占用",description:"另一个应用正在使用本地连接。关闭相关应用后继续启动。"},en:{title:"Local connection is in use",description:"Another app is using the local connection. Close it, then continue startup."}},service_timeout:{zh:{title:"本地连接启动时间过长",description:"请检查所选位置;诊断信息中包含最近的启动记录。"},en:{title:"Local connection is taking too long",description:"Check the selected locations. Diagnostics contain the latest startup records."}},service_exited:{zh:{title:"本地连接意外停止",description:"诊断信息中包含停止状态和最近的启动记录。"},en:{title:"Local connection stopped unexpectedly",description:"Diagnostics contain the stop status and latest startup records."}},ui_navigation_failed:{zh:{title:"主界面未能打开",description:"本地连接已经就绪,但界面加载失败。诊断信息中包含详细原因。"},en:{title:"Main window could not open",description:"The local connection is ready, but the interface failed to load. Diagnostics contain details."}},unknown:{zh:{title:"启动尚未完成",description:"请检查所选位置;需要协助时可复制诊断信息。"},en:{title:"Startup is not complete",description:"Check the selected locations. Copy diagnostics if you need support."}}},fe={zh:{pageTitle:"完成启动设置",intro:"选择应用运行所需的位置。你的记忆、会话和设置不会受到影响。",projectLabel:"应用文件夹",projectHint:"选择此前用于运行桌面版的应用文件夹。",projectPickerTitle:"选择应用文件夹",chooseProject:"选择文件夹",changeProject:"重新选择",projectEmpty:"尚未选择应用文件夹",pythonLabel:"Python 环境",pythonHint:"应用会自动选择可用环境;如有需要,可以重新选择。",pythonPickerTitle:"选择 Python 环境",choosePython:"选择环境",changePython:"重新选择",pythonEmpty:"选择应用文件夹后自动识别",pickerError:"无法打开或读取所选位置,请查看诊断信息。",retry:"继续启动",retrying:"正在启动…",diagnostics:"诊断信息",copy:"复制诊断信息",copied:"已复制,可发送给技术支持。",selectCopy:"请手动复制已选中的诊断信息。",privacy:"诊断信息包含本机路径和错误日志,不包含 API Key、会话或记忆内容。",helpFeedback:"帮助与反馈",contact:"如果仍无法完成启动,可添加微信联系:"},en:{pageTitle:"Complete startup setup",intro:"Choose the locations the app needs to run. Your memory, sessions, and settings will not be affected.",projectLabel:"Application folder",projectHint:"Choose the application folder previously used to run the desktop app.",projectPickerTitle:"Choose the application folder",chooseProject:"Choose folder",changeProject:"Choose again",projectEmpty:"No application folder selected",pythonLabel:"Python environment",pythonHint:"The app selects an available environment automatically. You can choose another if needed.",pythonPickerTitle:"Choose a Python environment",choosePython:"Choose environment",changePython:"Choose again",pythonEmpty:"Detected after you choose the application folder",pickerError:"The selected location could not be opened or read. Check diagnostics for details.",retry:"Continue startup",retrying:"Starting…",diagnostics:"Diagnostic details",copy:"Copy diagnostics",copied:"Copied. You can send it to technical support.",selectCopy:"Copy the selected diagnostics manually.",privacy:"Diagnostics contain local paths and error logs. They do not contain API keys, sessions, or memory content.",helpFeedback:"Help & Feedback",contact:"If you still cannot complete startup, contact us on WeChat:"}};function V(){return(navigator.language||"").toLowerCase().startsWith("zh")?"zh":"en"}function me(t){return fe[t]}function je(t,e){const n=t&&t in H?t:"unknown";return H[n][e]}function be(t){var u,l;const e=t==null?void 0:t.diagnostics,n=Array.isArray(e==null?void 0:e.recentLogs)?e.recentLogs:[];let i="";try{i=sessionStorage.getItem("ga-setup-fallback-reason")||""}catch{i=""}return["GenericAgent Desktop startup diagnostics",`time: ${new Date().toISOString()}`,`setup_guard_reason: ${i}`,`build_id: ${(e==null?void 0:e.buildId)||""}`,`platform: ${(e==null?void 0:e.platform)||""}`,`mode: ${(t==null?void 0:t.mode)||""}`,`phase: ${(t==null?void 0:t.phase)||""}`,`failure_code: ${((u=t==null?void 0:t.failure)==null?void 0:u.code)||""}`,`project_dir: ${(e==null?void 0:e.projectDir)||""}`,`python_path: ${(e==null?void 0:e.pythonPath)||""}`,`port_state: ${(e==null?void 0:e.portState)||"unknown"}`,`bridge_identity: ${(e==null?void 0:e.bridgeIdentity)||""}`,`error: ${((l=t==null?void 0:t.failure)==null?void 0:l.detail)||""}`,"recent_logs:",...n].join(` -`)}const B={projectDir:"",pythonPath:""};function q({label:t,hint:e,value:n,emptyText:i,buttonText:u,buttonLabel:l,loading:k,disabled:m,icon:j,onChoose:P}){return r.jsxs("section",{className:"ga-setup-location","aria-label":t,children:[r.jsxs("div",{className:"ga-setup-location-header",children:[r.jsx(f.Text,{strong:!0,children:t}),r.jsx(A,{size:"small",type:"tertiary",theme:"light",icon:j,loading:k,disabled:m,"aria-label":l,onClick:P,children:u})]}),r.jsx("div",{className:`ga-setup-path${n?"":" ga-setup-path--empty"}`,role:"textbox","aria-readonly":"true","aria-label":t,tabIndex:0,children:n?r.jsx("code",{children:n}):r.jsx("span",{children:i})}),r.jsx(f.Paragraph,{type:"tertiary",size:"small",className:"ga-setup-location-hint",children:e})]})}function S(t,e){return{seq:e,mode:"cold_start",phase:"failed",stage:null,progress:0,failure:{code:"unknown",detail:String(t)},diagnostics:{buildId:"",platform:navigator.platform||"",projectDir:"",pythonPath:"",portState:"unknown",bridgeIdentity:null,recentLogs:[]}}}function Pe(){var M;const t=V(),e=me(t),n=c.useRef(B),[i,u]=c.useState(B),[l,k]=c.useState(null),[m,j]=c.useState(!1),[P,N]=c.useState(!1),[T,z]=c.useState(!1),[R,b]=c.useState(""),[W,E]=c.useState(""),g=c.useRef(-1),w=c.useRef(null),D=c.useRef("snapshot"),h=c.useCallback(o=>{n.current=o,u(o)},[]),y=c.useCallback(o=>{var d,s,_,v;const a=w.current;if(!de(g.current,o))return;g.current=Number.isFinite(o.seq)?o.seq:g.current+1,w.current=o,k(o),o.phase==="failed"&&j(!1);const p={};(d=o.diagnostics)!=null&&d.projectDir&&(!n.current.projectDir||((s=a==null?void 0:a.diagnostics)==null?void 0:s.projectDir)===n.current.projectDir)&&(p.projectDir=o.diagnostics.projectDir),(_=o.diagnostics)!=null&&_.pythonPath&&(!n.current.pythonPath||((v=a==null?void 0:a.diagnostics)==null?void 0:v.pythonPath)===n.current.pythonPath)&&(p.pythonPath=o.diagnostics.pythonPath),Object.keys(p).length&&h({...n.current,...p})},[h]);c.useEffect(()=>{var o;(o=window.__GA_SETUP_MARK_READY__)==null||o.call(window)},[]),c.useEffect(()=>{const o=C();if(!(o!=null&&o.core.invoke)){y(S("Tauri bootstrap API is unavailable",0));return}let a=!0,p;return(async()=>{var v;if((v=o.event)!=null&&v.listen)try{const x=await o.event.listen("bootstrap",ee=>{a&&y(ee.payload)});if(!a){x();return}p=x}catch(x){console.warn("[setup] bootstrap events unavailable; using command compatibility mode",x)}const d=await ue(o.core.invoke,g.current+1);if(!a)return;D.current=d.mode;const s=d.config,_={pythonPath:(s==null?void 0:s[0])||"",projectDir:(s==null?void 0:s[1])||""};h({pythonPath:n.current.pythonPath||_.pythonPath,projectDir:n.current.projectDir||_.projectDir}),y(d.snapshot)})().catch(d=>{a&&y(S(d,g.current+1))}),()=>{a=!1,p==null||p()}},[h,y]);const $=c.useMemo(()=>{var o;return je((o=l==null?void 0:l.failure)==null?void 0:o.code,t)},[t,(M=l==null?void 0:l.failure)==null?void 0:M.code]),I=c.useMemo(()=>be(l),[l]),Z=c.useCallback(async()=>{const o=C();if(!(o!=null&&o.core.invoke)){b(e.pickerError);return}N(!0),b("");try{const a=await ye(o.core.invoke,n.current.pythonPath,e.projectPickerTitle);a&&h(a)}catch(a){console.error("[setup] application folder selection failed",a),b(e.pickerError)}finally{N(!1)}},[h,e]),J=c.useCallback(async()=>{const o=C();if(!(o!=null&&o.core.invoke)){b(e.pickerError);return}z(!0),b("");try{const a=await ge(o.core.invoke,e.pythonPickerTitle);a&&h({...n.current,pythonPath:a})}catch(a){console.error("[setup] Python environment selection failed",a),b(e.pickerError)}finally{z(!1)}},[h,e]),Q=c.useCallback(async()=>{const o=n.current.projectDir.trim(),a=n.current.pythonPath.trim();if(h({projectDir:o,pythonPath:a}),E(""),!o){const s=w.current??S("",g.current+1);y({...s,seq:g.current+1,phase:"failed",failure:{code:"config_unresolved",detail:""}});return}j(!0);const p=C();if(!(p!=null&&p.core.invoke)){y(S("Tauri bootstrap API is unavailable",g.current+1)),j(!1);return}const d=await he(p.core.invoke,{pythonPath:a,projectDir:o},D.current);if(D.current=d.mode,d.error){if(d.mode==="legacy")y(O([a,o],d.error,g.current+1,"spawn_failed"));else{const s=await p.core.invoke("get_bootstrap_snapshot").catch(()=>w.current);s&&y(s)}j(!1)}},[h,y]),X=c.useCallback(async()=>{var o;try{if(!((o=navigator.clipboard)!=null&&o.writeText))throw new Error("clipboard unavailable");await navigator.clipboard.writeText(I),E(e.copied)}catch{const p=document.getElementById("diagnostics");if(p){const d=document.createRange();d.selectNodeContents(p);const s=window.getSelection();s==null||s.removeAllRanges(),s==null||s.addRange(d),p.focus()}E(e.selectCopy)}},[e,I]);return r.jsx("main",{className:"ga-setup-page",children:r.jsxs("section",{className:"ga-setup-panel","aria-labelledby":"ga-setup-title",children:[r.jsxs("header",{className:"ga-setup-header",children:[r.jsx(f.Title,{id:"ga-setup-title",heading:3,children:e.pageTitle}),r.jsx(f.Paragraph,{type:"tertiary",children:e.intro})]}),(l==null?void 0:l.failure)&&r.jsx(F,{className:"ga-setup-banner",type:"danger",fullMode:!1,bordered:!0,title:$.title,description:$.description,closeIcon:null}),l&&!l.failure&&m&&r.jsx(F,{className:"ga-setup-banner",type:"info",fullMode:!1,bordered:!0,title:e.retrying,description:l.stage||l.phase,closeIcon:null}),r.jsxs("div",{className:"ga-setup-form",children:[r.jsx(q,{label:e.projectLabel,hint:e.projectHint,value:i.projectDir,emptyText:e.projectEmpty,buttonText:i.projectDir?e.changeProject:e.chooseProject,buttonLabel:e.projectPickerTitle,loading:P,disabled:m||T,icon:r.jsx(pe,{}),onChoose:()=>void Z()}),r.jsx(q,{label:e.pythonLabel,hint:e.pythonHint,value:i.pythonPath,emptyText:e.pythonEmpty,buttonText:i.pythonPath?e.changePython:e.choosePython,buttonLabel:e.pythonPickerTitle,loading:T,disabled:m||P,icon:r.jsx(se,{}),onChoose:()=>void J()}),R&&r.jsx(f.Text,{className:"ga-setup-picker-status",type:"danger",size:"small",role:"status",children:R}),r.jsx(A,{type:"primary",theme:"solid",block:!0,loading:m,disabled:P||T,className:"ga-setup-retry",onClick:()=>void Q(),children:m?e.retrying:e.retry})]}),r.jsxs(L,{className:"ga-setup-diagnostics",accordion:!0,children:[r.jsxs(L.Panel,{itemKey:"diagnostics",header:e.diagnostics,children:[r.jsxs("div",{className:"ga-setup-diagnostics-actions",children:[r.jsx(A,{size:"small",theme:"light",icon:r.jsx(re,{}),onClick:()=>void X(),children:e.copy}),r.jsx(f.Text,{type:"tertiary",size:"small","aria-live":"polite",children:W})]}),r.jsx("pre",{id:"diagnostics",tabIndex:0,children:I}),r.jsx(f.Paragraph,{type:"tertiary",size:"small",className:"ga-setup-privacy",children:e.privacy})]}),r.jsxs(L.Panel,{itemKey:"help-feedback",header:e.helpFeedback,children:[r.jsx(f.Paragraph,{type:"tertiary",size:"small",className:"ga-setup-contact-copy",children:e.contact}),r.jsxs("div",{className:"ga-setup-contact-ids",children:[r.jsx("code",{children:"RoundSquisheen"}),r.jsx("code",{children:"persist0612"})]})]})]})]})})}function U(t){t.matches?(document.documentElement.dataset.appearance="dark",document.body.setAttribute("theme-mode","dark")):(document.documentElement.dataset.appearance="light",document.body.removeAttribute("theme-mode"))}var Y,K;try{const t=window.matchMedia("(prefers-color-scheme: dark)");U(t),(Y=t.addEventListener)==null||Y.call(t,"change",()=>U(t));const e=document.getElementById("setup-root");if(!e)throw new Error("Setup root is missing");ne.createRoot(e).render(r.jsx(c.StrictMode,{children:r.jsx(ae,{locale:V()==="zh"?ie:ce,children:r.jsx(Pe,{})})}))}catch(t){console.error("[setup] failed to mount recovery UI",t),(K=window.__GA_SETUP_FALLBACK__)==null||K.call(window,"setup_mount_failed")} diff --git a/frontends/desktop/dist/assets/setup-D74O8rBf.css b/frontends/desktop/dist/assets/setup-D74O8rBf.css deleted file mode 100644 index 094c906e..00000000 --- a/frontends/desktop/dist/assets/setup-D74O8rBf.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Microsoft YaHei UI,Helvetica Neue,sans-serif;background:var(--semi-color-bg-0);color:var(--semi-color-text-0)}*{box-sizing:border-box}html,body,#setup-root{width:100%;min-height:100%;margin:0}body{background:var(--semi-color-bg-0)}.ga-setup-page{min-height:100vh;display:flex;justify-content:center;padding:34px 40px 28px;background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--semi-color-primary) 7%,transparent),transparent 34%),var(--semi-color-bg-0)}.ga-setup-panel{width:min(100%,500px)}.ga-setup-header .semi-typography{margin:0}.ga-setup-header .semi-typography-paragraph{margin-top:8px;line-height:1.6}.ga-setup-banner{margin:20px 0;border-radius:var(--semi-border-radius-medium)}.ga-setup-form{margin-top:20px}.ga-setup-location{margin-bottom:18px}.ga-setup-location-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:7px}.ga-setup-path{width:100%;min-height:42px;padding:10px 12px;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);outline:none;background:var(--semi-color-fill-0);color:var(--semi-color-text-0);white-space:normal;overflow-wrap:anywhere;word-break:break-word;-webkit-user-select:text;user-select:text}.ga-setup-path:focus-visible{border-color:var(--semi-color-primary);box-shadow:0 0 0 2px var(--semi-color-primary-light-default)}.ga-setup-path code{font:13px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}.ga-setup-path--empty{color:var(--semi-color-text-2);font-size:13px}.ga-setup-location-hint.semi-typography{margin:6px 0 0;line-height:1.45}.ga-setup-picker-status{display:block;margin:-4px 0 12px}.ga-setup-retry{margin-top:2px}.ga-setup-diagnostics{margin-top:20px;border-top:1px solid var(--semi-color-border)}.ga-setup-diagnostics .semi-collapse-header{padding-inline:4px;color:var(--semi-color-text-2)}.ga-setup-diagnostics-actions{display:flex;align-items:center;gap:10px;margin-bottom:10px}.ga-setup-diagnostics pre{max-height:200px;margin:0;padding:12px;overflow:auto;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);outline:none;background:var(--semi-color-fill-0);color:var(--semi-color-text-1);font:11px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}.ga-setup-diagnostics pre:focus-visible{border-color:var(--semi-color-primary);box-shadow:0 0 0 2px var(--semi-color-primary-light-default)}.ga-setup-privacy.semi-typography{margin:9px 0 0;line-height:1.45}.ga-setup-contact-copy.semi-typography{margin:0 0 10px;line-height:1.5}.ga-setup-contact-ids{display:flex;flex-wrap:wrap;gap:8px}.ga-setup-contact-ids code{padding:6px 9px;border-radius:var(--semi-border-radius-medium);background:var(--semi-color-fill-0);color:var(--semi-color-text-0);font:12px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text} diff --git a/frontends/desktop/dist/assets/tauri-compat-BTcpEvqB.css b/frontends/desktop/dist/assets/tauri-compat-BTcpEvqB.css deleted file mode 100644 index 9329dbdf..00000000 --- a/frontends/desktop/dist/assets/tauri-compat-BTcpEvqB.css +++ /dev/null @@ -1 +0,0 @@ -.semi-portal-inner{position:absolute;background-color:#0000;min-width:max-content}.semi-ai-chat-dialogue{display:flex;flex-direction:column;height:100%}.semi-ai-chat-dialogue-list{flex:1 1;position:relative;overflow-y:scroll}.semi-ai-chat-dialogue-list-scroll-hidden::-webkit-scrollbar{display:none}.semi-ai-chat-dialogue-wrapper{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;width:100%;flex-wrap:nowrap;padding:8px 16px;margin-top:2px;column-gap:16px}.semi-ai-chat-dialogue-wrapper-selected{background-color:var(--semi-color-fill-0);border-radius:16px}.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container{flex:1 1 auto;display:flex;flex-direction:row;column-gap:12px}.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right{flex-direction:row-reverse}.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right .semi-ai-chat-dialogue-inner{align-items:flex-end}.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right .semi-ai-chat-dialogue-content-no-bubble,.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right .semi-ai-chat-dialogue-content-user,.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right .semi-ai-chat-dialogue-content-custom-renderer{margin-left:auto}.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right .semi-ai-chat-dialogue-content-inner{text-align:right}.semi-ai-chat-dialogue-wrapper .semi-ai-chat-dialogue-container-right .semi-ai-chat-dialogue-content-inner .semi-markdownRender{text-align:left}.semi-ai-chat-dialogue-wrapper:hover .semi-ai-chat-dialogue-action:not(.semi-ai-chat-dialogue-action-hidden){visibility:visible}.semi-ai-chat-dialogue-backBottom{position:relative;z-index:1}.semi-ai-chat-dialogue-backBottom-button{width:42px;height:42px;border-radius:50%}.semi-ai-chat-dialogue-backBottom .semi-button{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;justify-content:center;align-items:center}.semi-ai-chat-dialogue-title{line-height:20px;font-size:16px;font-weight:400}.semi-ai-chat-dialogue-inner{width:100%;display:flex;flex-direction:column}.semi-ai-chat-dialogue-avatar{flex-shrink:0;width:24px;height:24px}.semi-ai-chat-dialogue-avatar-hidden{visibility:hidden}.semi-ai-chat-dialogue-content{max-width:100%;font-size:14px}.semi-ai-chat-dialogue-content pre{background-color:#0000}.semi-ai-chat-dialogue-content-editing{width:100%}.semi-ai-chat-dialogue-content-wrapper{display:flex;align-items:end}.semi-ai-chat-dialogue-content-inner{margin-left:auto;width:100%}.semi-ai-chat-dialogue-content-failed{color:var(--semi-color-danger);margin-right:8px}.semi-ai-chat-dialogue-content-user{display:flex}.semi-ai-chat-dialogue-content-user:hover .semi-ai-chat-dialogue-content-icon-reference{padding:0 8px;cursor:pointer;display:flex;justify-content:center;align-items:center}.semi-ai-chat-dialogue-content-bubble,.semi-ai-chat-dialogue-content-userBubble{margin-top:8px;padding:12px 16px;border-radius:var(--semi-border-radius-large);background-color:var(--semi-color-fill-0);max-width:100%;box-sizing:border-box;width:fit-content}.semi-ai-chat-dialogue-content-no-bubble{margin-top:8px;width:fit-content}.semi-ai-chat-dialogue-content-loading{display:flex;align-items:center;margin-top:8px}.semi-ai-chat-dialogue-content-loading>span:nth-child(1){animation-delay:-.2s;background-color:#5338ff}.semi-ai-chat-dialogue-content-loading>span:nth-child(2){animation-delay:-.1s;background-color:#b030f0}.semi-ai-chat-dialogue-content-loading>span:nth-child(3){animation-delay:0ms;background-color:#e72dff}.semi-ai-chat-dialogue-content-loading-item{border-radius:var(--semi-border-radius-circle);height:3px;width:3px;margin:1px;overflow:visible;position:relative;animation:semi-ai-chat-dialogue-loading-bounce 1s infinite ease}.semi-ai-chat-dialogue-content-loading-text{margin-left:8px;color:var(--semi-color-text-3);font-size:14px}.semi-ai-chat-dialogue-content-icon-reference{display:none}.semi-ai-chat-dialogue-content-img{margin-top:8px;border-radius:var(--semi-border-radius-medium)}.semi-ai-chat-dialogue-content-img img{width:256px;height:256px;object-fit:cover}.semi-ai-chat-dialogue-content-img-list{display:inline-flex;flex-direction:column;margin-right:4px}.semi-ai-chat-dialogue-content-img-list img{width:128px;height:128px;object-fit:cover}.semi-ai-chat-dialogue-content-img-last{margin-right:0}.semi-ai-chat-dialogue-content-file{display:inline-flex;flex-direction:row;align-items:center;height:36px;width:224px;column-gap:8px;padding:8px;margin-top:8px;margin-right:8px;border-radius:var(--semi-border-radius-medium);background:var(--semi-color-fill-0);text-decoration:none;vertical-align:top}.semi-ai-chat-dialogue-content-file:hover .semi-ai-chat-dialogue-content-icon-reference{flex-shrink:0;padding:0 8px;cursor:pointer;display:flex;justify-content:center;align-items:center;margin-left:auto;color:var(--semi-color-text-0)}.semi-ai-chat-dialogue-content-file:hover .semi-ai-chat-dialogue-content-file-title-ellipsis{max-width:140px}.semi-ai-chat-dialogue-content-file-last{margin-right:0}.semi-ai-chat-dialogue-content-file-icon{color:var(--semi-color-white)}.semi-ai-chat-dialogue-content-file-icon-wrapper{width:36px;height:36px;border-radius:var(--semi-border-radius-extra-small);flex-shrink:0;display:flex;justify-content:center;align-items:center}.semi-ai-chat-dialogue-content-file-icon-code{background-color:rgba(var(--semi-teal-4),1)}.semi-ai-chat-dialogue-content-file-icon-word{background-color:rgba(var(--semi-blue-4),1)}.semi-ai-chat-dialogue-content-file-icon-pdf{background-color:rgba(var(--semi-red-4),1)}.semi-ai-chat-dialogue-content-file-icon-excel{background-color:rgba(var(--semi-green-4),1)}.semi-ai-chat-dialogue-content-file-icon-video{background-color:rgba(var(--semi-purple-4),1)}.semi-ai-chat-dialogue-content-file-icon-image .semi-ai-chat-dialogue-content-file-icon{background-size:cover;background-position:center;width:36px;height:36px}.semi-ai-chat-dialogue-content-file-icon-default{background-color:rgba(var(--semi-grey-4),1)}.semi-ai-chat-dialogue-content-file-info{display:flex;flex-direction:column;text-align:left;flex-shrink:1}.semi-ai-chat-dialogue-content-file-title{font-size:16px;color:var(--semi-color-text-0);max-width:180px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.semi-ai-chat-dialogue-content-file-metadata{font-size:14px;color:var(--semi-color-text-2)}.semi-ai-chat-dialogue-content-file-type{text-transform:uppercase}.semi-ai-chat-dialogue-content-tool-call{display:flex;color:var(--semi-color-text-2);padding:6px 8px;background-color:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-medium);width:fit-content;align-items:center;justify-content:center;column-gap:4px;margin-top:8px}.semi-ai-chat-dialogue-content-custom-renderer{margin-top:8px;width:fit-content}.semi-ai-chat-dialogue-action{margin-top:8px;visibility:hidden}.semi-ai-chat-dialogue-action-btn{width:24px;height:24px}.semi-ai-chat-dialogue-action-icon-flip{transform:scaleY(-1)}.semi-ai-chat-dialogue-action-show{visibility:visible}.semi-ai-chat-dialogue-action.semi-ai-chat-dialogue-action-hidden,.semi-ai-chat-dialogue-action:hover.semi-ai-chat-dialogue-action-hidden{visibility:hidden}.semi-ai-chat-dialogue-action-dropdown li{color:var(--semi-color-danger)}.semi-ai-chat-dialogue-action-dropdown .semi-icon{font-size:16px}.semi-ai-chat-dialogue-reasoning{width:100%}.semi-ai-chat-dialogue-reasoning-wrapper{width:100%;margin-top:8px;cursor:pointer;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-large)}.semi-ai-chat-dialogue-reasoning-header{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;justify-content:center;padding:16px}.semi-ai-chat-dialogue-reasoning-header-prefix,.semi-ai-chat-dialogue-reasoning-header-suffix{width:20px;height:20px;display:flex;justify-content:center;align-items:center}.semi-ai-chat-dialogue-reasoning-header-title{flex:1 1 auto;line-height:22px;font-weight:600}.semi-ai-chat-dialogue-reasoning-content{padding:12px 16px;border-top:1px solid var(--semi-color-border)}.semi-ai-chat-dialogue-step{display:inline-flex;flex-direction:row;align-items:center;line-height:20px;padding:6px 12px;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);margin-top:12px;font-size:14px}.semi-ai-chat-dialogue-step .semi-ai-chat-dialogue-content-loading{margin-top:0}.semi-ai-chat-dialogue-step-completed{color:var(--semi-color-success)}.semi-ai-chat-dialogue-step-summary{display:inline-block;width:fit-content;cursor:pointer}.semi-ai-chat-dialogue-step-prefix{width:20px;height:20px;color:var(--semi-color-text-1);display:flex;justify-content:center;align-items:center;margin-right:6px}.semi-ai-chat-dialogue-step-suffix{width:20px;height:20px;display:flex;justify-content:center;align-items:center;color:var(--semi-color-text-1);margin-left:8px}.semi-ai-chat-dialogue-step-panel{display:flex;gap:12px}.semi-ai-chat-dialogue-step-line{width:1px;background-color:var(--semi-color-border);margin-left:20px}.semi-ai-chat-dialogue-step-action{line-height:20px;margin-top:12px;font-size:14px}.semi-ai-chat-dialogue-step-action-summary{margin-bottom:4px}.semi-ai-chat-dialogue-step-action-desc{display:inline-flex;color:var(--semi-color-text-2);padding:6px 8px;background-color:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-medium);width:fit-content;align-items:center;justify-content:center;column-gap:4px}.semi-ai-chat-dialogue-step-wrapper>.semi-ai-chat-dialogue-step:first-child{margin-top:4px}.semi-ai-chat-dialogue-annotation{width:100%}.semi-ai-chat-dialogue-annotation-wrapper{width:fit-content;margin-top:8px;flex:1 1 auto;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);padding:8px 12px}.semi-ai-chat-dialogue-annotation-wrapper:hover{background-color:var(--semi-color-fill-0)}.semi-ai-chat-dialogue-annotation-content{display:flex;flex-direction:row;align-items:center;justify-content:center;column-gap:8px;font-size:14px;color:var(--semi-color-text-2);cursor:pointer}.semi-ai-chat-dialogue-annotation-content .semi-avatar-group{display:flex}.semi-ai-chat-dialogue-annotation-content-logo{width:16px;height:16px;display:flex}.semi-ai-chat-dialogue-annotation-content-logo-renderMore{width:16px;height:16px}.semi-ai-chat-dialogue-annotation-content-icon{display:flex;justify-content:center;align-items:center}.semi-ai-chat-dialogue-references{display:flex;flex-wrap:wrap;font-size:12px;line-height:16px;color:var(--semi-color-text-2);margin-top:8px;column-gap:4px;row-gap:4px}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference{display:flex;padding:8px 12px;box-sizing:border-box;width:fit-content;max-width:200px;flex-shrink:1;align-items:center;column-gap:8px;background-color:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-medium);margin-left:auto}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-content{display:flex;align-items:center;flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-icon{display:flex;justify-content:center;align-items:center;margin-right:4px;color:var(--semi-color-white);width:16px;height:16px;border-radius:2px}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-icon-word{background-color:rgba(var(--semi-blue-4),1)}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-icon-pdf{background-color:rgba(var(--semi-red-4),1)}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-icon-excel{background-color:rgba(var(--semi-green-4),1)}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-icon-video{background-color:rgba(var(--semi-purple-4),1)}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-icon-code{background-color:rgba(var(--semi-teal-4),1)}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-img{margin-right:4px}.semi-ai-chat-dialogue-references .semi-ai-chat-dialogue-reference-name{display:inline-block;text-overflow:ellipsis;overflow:hidden;word-break:break-all;max-width:130px}.semi-ai-chat-dialogue-code{border-radius:var(--semi-border-radius-large);overflow:hidden;border:1px solid var(--semi-color-border);line-height:32px}.semi-ai-chat-dialogue-code .semi-codeHighlight pre{word-break:break-all;white-space:pre-wrap}.semi-ai-chat-dialogue-code-topSlot{display:flex;justify-content:space-between;background-color:var(--semi-color-fill-0);align-items:center;padding:8px 16px;color:var(--semi-color-text-0);font-size:14px}.semi-ai-chat-dialogue-code-topSlot-copy{display:flex;justify-content:flex-end;align-items:center;width:24px}.semi-ai-chat-dialogue-code-topSlot-copy-wrapper{display:flex;align-items:center;justify-content:center;cursor:pointer;background:#0000;border:none}.semi-ai-chat-dialogue-code .semi-codeHighlight-defaultTheme pre[class*=language-]{margin:0;background:var(--semi-color-bg-0)}.semi-ai-chat-dialogue-hints{display:flex;flex-direction:column;row-gap:8px;margin-top:4px;margin-bottom:12px;margin-left:52px}.semi-ai-chat-dialogue-hints-selecting{margin-left:68px}.semi-ai-chat-dialogue-hint-item{cursor:pointer;display:flex;flex-direction:row;width:fit-content;background:var(--semi-color-bg-0);align-items:center;border:1px solid var(--semi-color-border);padding:8px 16px;border-radius:var(--semi-border-radius-medium)}.semi-ai-chat-dialogue-hint-item:hover{background-color:var(--semi-color-fill-0)}.semi-ai-chat-dialogue-hint-content{font-size:14px;color:var(--semi-color-text-0)}@keyframes semi-ai-chat-dialogue-loading-bounce{0%{transform:translateY(0) scale(1)}18%{transform:translateY(-4px) scale(.96)}36%{transform:translateY(0) scale(1.06)}44%{transform:translateY(-.5px) scale(.98)}52%{transform:translateY(0) scale(1)}to{transform:translateY(0) scale(1)}}.semi-rtl .semi-ai-chat-dialogue-wrapper,.semi-portal-rtl .semi-ai-chat-dialogue-wrapper{direction:rtl}.semi-rtl .semi-ai-chat-dialogue-wrapper-action-icon-redo,.semi-portal-rtl .semi-ai-chat-dialogue-wrapper-action-icon-redo{transform:scaleX(-1)}.semi-aiChatInput{display:flex;flex-direction:column;padding:20px;border-radius:12px;border:1px solid var(--semi-color-border);box-sizing:border-box}.semi-aiChatInput-skill{padding:4px 0;border-radius:8px;overflow:scroll}.semi-aiChatInput-skill-item{display:flex;align-items:center;column-gap:8px;padding:8px 20px;cursor:pointer}.semi-aiChatInput-skill-item-active{background-color:var(--semi-color-fill-0)}.semi-aiChatInput-popover-suggestion{box-shadow:none}.semi-aiChatInput-suggestion{overflow:scroll}.semi-aiChatInput-suggestion-item{border-radius:6px;padding:8px 20px;color:var(--semi-color-text-0);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-aiChatInput-suggestion-item-active{background-color:var(--semi-color-fill-0)}.semi-aiChatInput-reference-icon{width:16px;height:16px;border-radius:2px;margin-right:4px}.semi-aiChatInput-ref-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--semi-color-white);flex-shrink:0}.semi-aiChatInput-ref-icon-word{background-color:rgba(var(--semi-blue-4),1)}.semi-aiChatInput-ref-icon-pdf{background-color:rgba(var(--semi-red-4),1)}.semi-aiChatInput-ref-icon-code{background-color:rgba(var(--semi-teal-5),1)}.semi-aiChatInput-ref-icon-excel{background-color:rgba(var(--semi-green-5),1)}.semi-aiChatInput-ref-icon-video,.semi-aiChatInput-ref-icon-audio{background-color:rgba(var(--semi-purple-4),1)}.semi-aiChatInput-ref-icon-unknown{background-color:rgba(var(--semi-grey-5),1)}.semi-aiChatInput-references{display:flex;flex-wrap:wrap;margin-bottom:8px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);column-gap:4px;row-gap:4px}.semi-aiChatInput-references>.semi-aiChatInput-reference:only-child{width:100%}.semi-aiChatInput-references>.semi-aiChatInput-reference:nth-last-child(2):first-child,.semi-aiChatInput-references>.semi-aiChatInput-reference:nth-child(2):nth-last-child(1){flex-basis:calc(50% - 4px);max-width:calc(50% - 4px)}.semi-aiChatInput-references>.semi-aiChatInput-reference:nth-last-child(n+3):nth-child(1),.semi-aiChatInput-references>.semi-aiChatInput-reference:nth-last-child(n+3):nth-child(1)~.semi-aiChatInput-reference{width:calc(33.333% - 4px)}.semi-aiChatInput-reference{padding:8px 12px;box-sizing:border-box;border-radius:6px;background:var(--semi-color-fill-0);flex-shrink:1;display:flex;align-items:center;column-gap:8px}.semi-aiChatInput-reference-content{display:flex;align-items:center;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-aiChatInput-reference-img{width:16px;height:16px;margin-right:4px}.semi-aiChatInput-reference-name{display:inline-block;text-overflow:ellipsis;overflow:hidden;word-break:break-all}.semi-aiChatInput-reference-delete{cursor:pointer;padding:2px;border-radius:50%}.semi-aiChatInput-reference-delete:hover{background:var(--semi-color-fill-1)}.semi-aiChatInput-footer{display:flex;justify-content:space-between;margin-top:20px;align-items:center;user-select:none;-webkit-user-select:none}.semi-aiChatInput-footer-round .semi-aiChatInput-footer-configure-select,.semi-aiChatInput-footer-round .semi-aiChatInput-footer-configure-button,.semi-aiChatInput-footer-round .semi-aiChatInput-footer-configure-radio-button,.semi-aiChatInput-footer-round .semi-aiChatInput-footer-configure-mcp-trigger,.semi-aiChatInput-footer-round .semi-aiChatInput-footer-action-button,.semi-aiChatInput-footer-round .semi-aiChatInput-footer-action-upload,.semi-aiChatInput-footer-round .semi-radio-addon-buttonRadio{border-radius:9999px}.semi-aiChatInput-footer-action{display:flex;align-items:center;column-gap:8px}.semi-aiChatInput-footer-action button{padding:0;border:0px;display:flex;align-items:center;justify-content:center}.semi-aiChatInput-footer-action-button{width:32px;height:32px;cursor:pointer;border-radius:8px}.semi-aiChatInput-footer-action-send{background-color:var(--semi-color-primary);color:rgba(var(--semi-white),1)}.semi-aiChatInput-footer-action-send:hover:not(.semi-aiChatInput-footer-action-send-disabled){background-color:var(--semi-color-primary-hover)}.semi-aiChatInput-footer-action-send:active:not(.semi-aiChatInput-footer-action-send-disabled){background-color:var(--semi-color-primary-active)}.semi-aiChatInput-footer-action-send-disabled{background-color:var(--semi-color-fill-2)}.semi-aiChatInput-footer-action-stop{background-color:var(--semi-color-primary);color:rgba(var(--semi-white),1)}.semi-aiChatInput-footer-action-stop:hover:not(.semi-aiChatInput-footer-action-send-disabled){background-color:var(--semi-color-primary-hover)}.semi-aiChatInput-footer-action-stop:active:not(.semi-aiChatInput-footer-action-send-disabled){background-color:var(--semi-color-primary-active)}.semi-aiChatInput-footer-action-stop-disabled{background-color:var(--semi-color-fill-2)}.semi-aiChatInput-footer-action-upload{background:#0000;color:var(--semi-color-text-1)}.semi-aiChatInput-footer-action-upload:hover{background-color:var(--semi-color-fill-0)}.semi-aiChatInput-footer-action-upload:active{background-color:var(--semi-color-fill-1)}.semi-aiChatInput-footer-configure{display:flex;flex-direction:row;column-gap:8px}.semi-aiChatInput-footer-configure-button{border:1px solid var(--semi-color-primary)}.semi-aiChatInput-footer-configure-button-active.semi-button-tertiary.semi-button-outline{border:1px solid var(--semi-color-primary);color:var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-aiChatInput-footer-configure-select{border:1px solid var(--semi-color-border);background:#0000}.semi-aiChatInput-footer-configure-select.semi-select-focus,.semi-aiChatInput-footer-configure-select .semi-select-selection-text{font-weight:600;color:var(--semi-color-text-1)}.semi-aiChatInput-footer-configure-select.semi-select:hover{border-color:var(--semi-color-border)}.semi-aiChatInput-footer-configure-select.semi-select:focus{border:1px solid var(--semi-color-border);background:#0000}.semi-aiChatInput-footer-configure-radio-button .semi-radio-addon-buttonRadio{height:16px;padding:4px;font-size:14px}.semi-aiChatInput-footer-configure-radio-button .semi-radio-addon-buttonRadio-checked{color:var(--semi-color-text-1);background:var(--semi-color-bg-2)}.semi-aiChatInput-footer-configure-mcp-header{padding:8px 16px 0;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:16px;align-items:center;display:flex;justify-content:space-between;column-gap:4px}.semi-aiChatInput-footer-configure-mcp-header-title{color:var(--semi-color-text-2)}.semi-aiChatInput-footer-configure-mcp-header-config.semi-button{padding:0;border:0px;height:fit-content;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-aiChatInput-attachment{position:relative;display:flex;align-items:center;column-gap:8px;border-radius:6px;background:var(--semi-color-fill-0);padding:8px;width:224px;height:36px;overflow:hidden;letter-spacing:0;flex-shrink:0}.semi-aiChatInput-attachment-icon,.semi-aiChatInput-attachment-img{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:3px;width:36px;height:36px}.semi-aiChatInput-attachment-img{object-fit:cover}.semi-aiChatInput-attachment-content{display:flex;flex-direction:column;flex-shrink:0;align-items:flex-start;width:180px}.semi-aiChatInput-attachment-content-name{flex-shrink:0;width:180px;height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--semi-color-text-0);font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-aiChatInput-attachment-content-size{display:flex;flex-shrink:0;align-items:flex-start;column-gap:4px;color:var(--semi-color-text-2);font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;text-transform:uppercase}.semi-aiChatInput-attachment-delete{display:none}.semi-aiChatInput-attachment:hover>.semi-aiChatInput-attachment-delete{cursor:pointer;position:absolute;top:0;right:0;background:rgba(var(--semi-grey-7),1);color:var(--semi-color-white);border-radius:50%;width:16px;height:16px;font-size:12px;display:flex;align-items:center;justify-content:center}.semi-aiChatInput-attachment-progress.semi-progress-circle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.semi-aiChatInput-scroll-wrapper{position:relative;width:100%;display:flex;align-items:center;margin-bottom:8px}.semi-aiChatInput-scroll-container{display:flex;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;column-gap:8px}.semi-aiChatInput-scroll-container::-webkit-scrollbar{display:none}.semi-aiChatInput-scroll-button{padding:0;border:0px;position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:16px;height:16px;border-radius:50%;background:var(--semi-color-white);box-shadow:var(--semi-shadow-elevated);cursor:pointer;display:flex;justify-content:center;align-items:center;transition:background-color .2s,box-shadow .2s}.semi-aiChatInput-scroll-button .semi-icon{font-size:12px;color:var(--semi-color-text-2)}.semi-aiChatInput-scroll-button:active{transform:translateY(-50%) scale(.95)}.semi-aiChatInput-scroll-button-left-icon{transform:rotate(180deg)}.semi-aiChatInput-scroll-button.semi-aiChatInput-scroll-button-left{left:10px}.semi-aiChatInput-scroll-button.semi-aiChatInput-scroll-button-right{right:10px}.semi-aiChatInput-editor-content{flex:1 1 0%;min-height:0;margin-top:-4px;padding-top:4px;overflow:auto}.semi-aiChatInput-editor-content .tiptap{font-size:14px;line-height:24px}.semi-aiChatInput-editor-content .tiptap p.is-editor-empty:first-child:before{color:var(--semi-color-text-2);content:attr(data-placeholder);float:left;height:0;pointer-events:none}.semi-aiChatInput-editor-content .tiptap p.has-skill-slot.is-editor-empty:first-child:before{content:none}.semi-aiChatInput-editor-content .tiptap p.has-skill-slot.is-editor-empty:first-child:after{color:var(--semi-color-text-2);content:attr(data-placeholder);display:inline;height:0;margin-left:8px;pointer-events:none}.semi-aiChatInput-editor-content .tiptap p{margin:0;white-space:pre-wrap}.semi-aiChatInput-editor-content .tiptap:focus{outline:none}.semi-aiChatInput-editor-content .tiptap .node-inputSlot{display:inline-block;font-size:14px;line-height:20px}.semi-aiChatInput-editor-content .tiptap .input-slot{display:inline-block;box-sizing:content-box;background-color:var(--semi-color-primary-light-default);border-radius:4px;padding:2px 4px;position:relative;margin:2px;font-weight:600;min-width:2px}.semi-aiChatInput-editor-content .tiptap .input-slot .content{color:var(--semi-color-primary)}.semi-aiChatInput-editor-content .tiptap .input-slot .input-slot-placeholder{-webkit-user-select:none;user-select:none;position:absolute;top:2px;left:4px;pointer-events:none;white-space:pre;z-index:1;color:var(--semi-color-primary-disabled)}.semi-aiChatInput-editor-content .tiptap .node-selectSlot{display:inline-flex}.semi-aiChatInput-editor-content .tiptap .select-slot{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:24px;padding:2px 4px;border-radius:4px;background-color:var(--semi-color-primary-light-default)}.semi-aiChatInput-editor-content .tiptap .select-slot:first-child{margin-left:0}.semi-aiChatInput-editor-content .tiptap .select-slot-wrapper{display:inline-flex;margin:2px 4px}.semi-aiChatInput-editor-content .tiptap .select-slot .semi-select-selection{color:var(--semi-color-primary);font-weight:700;margin-left:0}.semi-aiChatInput-editor-content .tiptap .select-slot .semi-select-arrow{color:var(--semi-color-text-2);width:16px}.semi-aiChatInput-editor-content .tiptap .select-slot.semi-select-open,.semi-aiChatInput-editor-content .tiptap .select-slot.semi-select-focus{border-color:#0000}.semi-aiChatInput-editor-content .tiptap .select-slot.semi-select:focus{border-color:#0000}.semi-aiChatInput-editor-content .tiptap .node-skillSlot{display:inline-flex}.semi-aiChatInput-editor-content .tiptap .skill-slot{color:var(--semi-color-primary);font-weight:600;outline:none}.semi-aiChatInput-editor-content .tiptap .skill-slot-wrapper{display:inline-flex;position:relative;padding:0 4px;margin:2px;border-radius:4px}.semi-aiChatInput-editor-content .tiptap .skill-slot-wrapper:hover{background-color:var(--semi-color-primary-light-default)}.semi-aiChatInput-editor-content .tiptap .skill-slot-wrapper:hover .skill-slot-delete{cursor:pointer;position:absolute;top:0;right:0;background:rgba(var(--semi-grey-7),1);color:var(--semi-color-white);transform:translate(50%,-50%);border-radius:50%;width:12px;height:12px;font-size:8px;display:flex;align-items:center;justify-content:center}.semi-aiChatInput-editor-content .tiptap .skill-slot-delete{display:none}.semi-anchor{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;overflow-y:auto;overflow-x:hidden;position:relative}.semi-anchor-size-small{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-anchor-slide{position:absolute;left:0;top:0;height:100%}.semi-anchor-slide-muted{display:none}.semi-anchor-slide-bar{display:none;position:absolute;top:0;width:2px;border-radius:1px}.semi-anchor-slide-bar-active{display:inline-block}.semi-anchor-slide-bar-default{height:28px}.semi-anchor-slide-bar-small{height:24px}.semi-anchor-slide-bar-primary{background-color:var(--semi-color-primary)}.semi-anchor-slide-bar-tertiary{background-color:var(--semi-color-tertiary)}.semi-anchor-slide:before{position:absolute;display:block;width:2px;height:100%;background-color:var(--semi-color-border);border-radius:1px;content:" "}.semi-anchor-link-title{cursor:pointer;color:var(--semi-color-text-2);padding-top:4px;padding-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:3px;transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none));background:#0000}.semi-anchor-link-title:hover{color:var(--semi-color-tertiary-hover)}.semi-anchor-link-title-active{color:var(--semi-color-text-0);background:#0000}.semi-anchor-link-title-active:hover{color:var(--semi-color-tertiary-hover)}.semi-anchor-link-title:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-anchor-link-title-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-anchor-link-title-disabled:hover{color:var(--semi-color-disabled-text)}.semi-anchor-link-tooltip{cursor:pointer;color:var(--semi-color-text-2)!important}.semi-anchor-link-tooltip-small{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-anchor-link-tooltip:hover{color:var(--semi-color-tertiary-hover)!important}.semi-anchor-link-tooltip-active{color:var(--semi-color-text-0)!important}.semi-anchor-link-tooltip-disabled{color:var(--semi-color-disabled-text)!important;cursor:not-allowed}.semi-anchor-link-tooltip-disabled:hover{color:var(--semi-color-disabled-text)!important}.semi-rtl .semi-anchor,.semi-portal-rtl .semi-anchor{direction:rtl}.semi-rtl .semi-anchor-slide,.semi-portal-rtl .semi-anchor-slide{right:0;left:auto}.semi-rtl .semi-anchor-link,.semi-portal-rtl .semi-anchor-link{padding-left:auto}.semi-audio-player{display:flex;align-items:center;justify-content:center;gap:24px;max-width:1440px;height:78px;background:rgba(var(--semi-grey-9),.8)}.semi-audio-player-control{display:flex;align-items:center;gap:16px}.semi-audio-player-control-button-icon{color:var(--semi-color-bg-0)}.semi-audio-player-control-button-play{background:var(--semi-color-bg-0)!important;color:var(--semi-color-text-0)!important}.semi-audio-player-control-button-play-disabled{background:rgba(var(--semi-grey-0),.35)!important;color:var(--semi-color-grey-7)!important}.semi-audio-player-slider-container{width:323px;height:100%}.semi-audio-player-info-container{display:flex;align-items:center;gap:16px}.semi-audio-player-info{display:flex;flex-direction:column;gap:4px}.semi-audio-player-info-title{font-size:14px;color:var(--semi-color-bg-0);font-weight:600;display:flex;align-items:center}.semi-audio-player-info-time{width:100%;height:22px;font-size:14px;color:var(--semi-color-bg-0);display:flex;align-items:center;justify-content:space-between;gap:4px;-webkit-user-select:none;user-select:none}.semi-audio-player-control-speed{width:40px;height:24px;display:flex;align-items:center;justify-content:center;gap:4px;background:rgba(var(--semi-grey-8),1);border-radius:3px;font-size:12px;line-height:16px;color:var(--semi-color-default);font-weight:600;-webkit-user-select:none;user-select:none}.semi-audio-player-control-speed-menu{background:rgba(var(--semi-grey-8),1);width:65px}.semi-audio-player-control-speed-menu-item{color:var(--semi-color-default)}.semi-audio-player-control-speed-menu-item:hover{background:var(--semi-color-tertiary-active)!important}.semi-audio-player-control-volume{width:43px;height:164px;background:rgba(var(--semi-grey-8),1);border-radius:4px;padding:4px 0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px}.semi-audio-player-control-volume-title{font-size:12px;line-height:16px;color:var(--semi-color-default);font-weight:600;-webkit-user-select:none;user-select:none}.semi-audio-player-error{display:flex;align-items:center;gap:4px;margin-left:4px;color:var(--semi-color-danger)}.semi-audio-player-light{background:var(--semi-color-bg-0);border:1px solid var(--semi-color-border)}.semi-audio-player-light .semi-audio-player-control-button-icon{color:rgba(var(--semi-grey-9),1)}.semi-audio-player-light .semi-audio-player-control-button-play{background:rgba(var(--semi-grey-9),1)!important;color:var(--semi-color-bg-0)!important}.semi-audio-player-light .semi-audio-player-control-button-play-disabled{background:var(--semi-color-disabled-text)!important;color:rgba(var(--semi-white),1)!important}.semi-audio-player-light .semi-audio-player-info-title,.semi-audio-player-light .semi-audio-player-info-time,.semi-audio-player-light .semi-audio-player-control-speed-menu-item,.semi-audio-player-light .semi-audio-player-control-volume-title{color:rgba(var(--semi-grey-9),1)}.semi-audio-player-light .semi-audio-player-control-speed-menu-item:hover{background:rgba(var(--semi-grey-1),1)!important}.semi-audio-player-slider{background:rgba(var(--semi-grey-5),1);border-radius:9999px;position:relative}.semi-audio-player-slider-light{background:rgba(var(--semi-grey-2),1)}.semi-audio-player-slider-wrapper{position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}.semi-audio-player-slider-wrapper-vertical{width:100%}.semi-audio-player-slider-wrapper-horizontal{height:100%}.semi-audio-player-slider-vertical{width:4px;height:100%}.semi-audio-player-slider-horizontal{width:100%;height:4px}.semi-audio-player-slider-progress{position:absolute;background:rgba(var(--semi-blue-4),1);border-radius:9999px}.semi-audio-player-slider-progress-vertical{bottom:0}.semi-audio-player-slider-progress-horizontal{left:0}.semi-audio-player-slider-dot{position:absolute;width:16px;height:16px;background:rgba(var(--semi-white),1);border:1px solid var(--semi-color-primary);box-shadow:0 0 4px 0 var(--semi-color-shadow);border-radius:50%;transition:opacity .2s}.semi-autocomplete-option{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;word-break:break-all;padding:8px 12px;color:var(--semi-color-text-0);border-radius:0;position:relative;display:flex;flex-wrap:nowrap;align-items:center;cursor:pointer;box-sizing:border-box;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-autocomplete-option-icon{width:12px;color:#0000;visibility:hidden;margin-right:8px;display:flex;justify-content:center;align-content:center}.semi-autocomplete-option-text{display:flex;flex-wrap:wrap;white-space:pre}.semi-autocomplete-option-keyword{color:var(--semi-color-primary);background-color:inherit;font-weight:600}.semi-autocomplete-option:active{background-color:var(--semi-color-fill-1)}.semi-autocomplete-option-empty{cursor:not-allowed;color:var(--semi-color-disabled-text);justify-content:center}.semi-autocomplete-option-empty:hover,.semi-autocomplete-option-empty:active{background-color:inherit}.semi-autocomplete-option-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-autocomplete-option-disabled:hover{background-color:var(--semi-color-fill-0)}.semi-autocomplete-option-selected{font-weight:600}.semi-autocomplete-option-selected .semi-autocomplete-option-icon{visibility:visible;color:var(--semi-color-text-2)}.semi-autocomplete-option-focused{background-color:var(--semi-color-fill-0)}.semi-autocomplete-option:first-of-type{margin-top:4px}.semi-autocomplete-option:last-of-type{margin-bottom:4px}.semi-autocomplete{cursor:text;display:inline-flex;vertical-align:middle;box-sizing:border-box}.semi-autocomplete-option-list{overflow-x:hidden;overflow-y:auto}.semi-autocomplete-option-list-chosen .semi-autocomplete-option-icon{display:flex}.semi-autocomplete-loading-wrapper{padding-top:8px;padding-bottom:8px;cursor:not-allowed;height:20px}.semi-autocomplete-loading-wrapper .semi-spin{width:100%}.semi-rtl .semi-autocomplete,.semi-portal-rtl .semi-autocomplete{direction:rtl}.semi-avatar{position:relative;display:inline-flex;overflow:hidden;align-items:center;justify-content:center;white-space:nowrap;text-align:center;vertical-align:middle}.semi-avatar:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-avatar-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-avatar-no-focus-visible:focus-visible{outline:none}.semi-avatar .semi-avatar-label{display:flex;align-items:center;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-avatar-content{-webkit-user-select:none;user-select:none}.semi-avatar-extra-extra-small{width:20px;height:20px;border-radius:3px}.semi-avatar-extra-extra-small .semi-avatar-content{transform-origin:center;transform:scale(.8)}.semi-avatar-extra-extra-small .semi-avatar-label{font-size:10px;line-height:15px}.semi-avatar-extra-small{width:24px;height:24px;border-radius:3px}.semi-avatar-extra-small .semi-avatar-content{transform-origin:center;transform:scale(.8)}.semi-avatar-extra-small .semi-avatar-label{font-size:10px;line-height:15px}.semi-avatar-small{width:32px;height:32px;border-radius:3px}.semi-avatar-small .semi-avatar-label{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-default{width:40px;height:40px;border-radius:3px}.semi-avatar-default .semi-avatar-label{font-size:18px;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-medium{width:48px;height:48px;border-radius:3px}.semi-avatar-medium .semi-avatar-label{font-size:20px;line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-large{width:72px;height:72px;border-radius:6px}.semi-avatar-large .semi-avatar-label{font-size:32px;line-height:44px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-avatar-extra-large{width:128px;height:128px;border-radius:12px}.semi-avatar-extra-large .semi-avatar-label{font-size:64px;line-height:77px}.semi-avatar-circle{border-radius:var(--semi-border-radius-circle)}.semi-avatar-image{background-color:#0000}.semi-avatar>img{display:block;width:100%;height:100%;object-fit:cover}.semi-avatar-hover{position:absolute;left:0;top:0;width:100%;height:100%}.semi-avatar:hover{cursor:pointer}.semi-avatar-wrapper{position:relative;display:inline-flex;flex-direction:column;align-items:center;width:fit-content}.semi-avatar-wrapper .semi-avatar-top_slot-bg{position:absolute;display:flex;justify-content:center;border-radius:50%;overflow:hidden}.semi-avatar-wrapper .semi-avatar-top_slot-bg-small{width:32px;height:32px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-default{width:40px;height:40px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-medium{width:48px;height:48px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-large{width:72px;height:72px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-extra-large{width:128px;height:128px}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg{position:absolute}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-small{top:-28px;scale:.4}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-default{top:-32px;scale:.7}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-medium{top:-30px;scale:.8}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-large{top:-30px;scale:1.1}.semi-avatar-wrapper .semi-avatar-top_slot-bg-svg-extra-large{top:-32px;scale:1.4}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper{position:absolute;display:flex;justify-content:center}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot{color:var(--semi-color-bg-0);font-weight:600}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content{-webkit-user-select:none;user-select:none;position:relative;line-height:normal}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-small{font-size:5px;margin-top:0}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-default{font-size:6px;margin-top:-2px}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-medium{font-size:8px;margin-top:0}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-large{font-size:14px;margin-top:0}.semi-avatar-wrapper .semi-avatar-top_slot-wrapper .semi-avatar-top_slot-content-extra-large{font-size:16px;margin-top:0}.semi-avatar-wrapper .semi-avatar-bottom_slot{color:var(--semi-color-bg-0);position:absolute;cursor:pointer;bottom:3.5px;transform:translateY(50%);-webkit-user-select:none;user-select:none}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle{display:flex;justify-content:center;align-items:center;background:var(--semi-color-primary);border-radius:var(--semi-border-radius-circle);line-height:normal}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-extra-small,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-small{width:12px;height:12px;font-size:5px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-default{width:16px;height:16px;font-size:12px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-medium{width:18px;height:18px;font-size:12px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-large{width:28px;height:28px;font-size:12px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_circle-extra-large{width:28px;height:28px;font-size:14px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square{display:flex;justify-content:center;align-items:center;background:var(--semi-color-primary);border-radius:4px;padding:1px 4px;font-weight:600;border-style:solid;border-color:var(--semi-color-bg-0)}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-extra_small,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-small{font-size:5px;border-width:2px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-default,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-medium,.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-large{font-size:12px;border-width:2px}.semi-avatar-wrapper .semi-avatar-bottom_slot-shape_square-extra-large{font-size:14px;border-width:2px}.semi-avatar-group{display:inline-block}.semi-avatar-group .semi-avatar{box-sizing:border-box}.semi-avatar-group .semi-avatar:first-child{margin-left:0}.semi-avatar-group .semi-avatar-extra-large{border:3px var(--semi-color-bg-1) solid;margin-left:-32px}.semi-avatar-group .semi-avatar-large{border:3px var(--semi-color-bg-1) solid;margin-left:-18px}.semi-avatar-group .semi-avatar-medium,.semi-avatar-group .semi-avatar-default,.semi-avatar-group .semi-avatar-small{border:2px var(--semi-color-bg-1) solid;margin-left:-12px}.semi-avatar-group .semi-avatar-extra-small{border:1px var(--semi-color-bg-1) solid;margin-left:-10px}.semi-avatar-group .semi-avatar-extra-extra-small{border:1px var(--semi-color-bg-1) solid;margin-left:-4px}.semi-avatar-group .semi-avatar-item-start-0{z-index:100}.semi-avatar-group .semi-avatar-item-end-0{z-index:80}.semi-avatar-group .semi-avatar-item-start-1{z-index:99}.semi-avatar-group .semi-avatar-item-end-1{z-index:81}.semi-avatar-group .semi-avatar-item-start-2{z-index:98}.semi-avatar-group .semi-avatar-item-end-2{z-index:82}.semi-avatar-group .semi-avatar-item-start-3{z-index:97}.semi-avatar-group .semi-avatar-item-end-3{z-index:83}.semi-avatar-group .semi-avatar-item-start-4{z-index:96}.semi-avatar-group .semi-avatar-item-end-4{z-index:84}.semi-avatar-group .semi-avatar-item-start-5{z-index:95}.semi-avatar-group .semi-avatar-item-end-5{z-index:85}.semi-avatar-group .semi-avatar-item-start-6{z-index:94}.semi-avatar-group .semi-avatar-item-end-6{z-index:86}.semi-avatar-group .semi-avatar-item-start-7{z-index:93}.semi-avatar-group .semi-avatar-item-end-7{z-index:87}.semi-avatar-group .semi-avatar-item-start-8{z-index:92}.semi-avatar-group .semi-avatar-item-end-8{z-index:88}.semi-avatar-group .semi-avatar-item-start-9{z-index:91}.semi-avatar-group .semi-avatar-item-end-9{z-index:89}.semi-avatar-group .semi-avatar-item-start-10,.semi-avatar-group .semi-avatar-item-end-10{z-index:90}.semi-avatar-group .semi-avatar-item-start-11{z-index:89}.semi-avatar-group .semi-avatar-item-end-11{z-index:91}.semi-avatar-group .semi-avatar-item-start-12{z-index:88}.semi-avatar-group .semi-avatar-item-end-12{z-index:92}.semi-avatar-group .semi-avatar-item-start-13{z-index:87}.semi-avatar-group .semi-avatar-item-end-13{z-index:93}.semi-avatar-group .semi-avatar-item-start-14{z-index:86}.semi-avatar-group .semi-avatar-item-end-14{z-index:94}.semi-avatar-group .semi-avatar-item-start-15{z-index:85}.semi-avatar-group .semi-avatar-item-end-15{z-index:95}.semi-avatar-group .semi-avatar-item-start-16{z-index:84}.semi-avatar-group .semi-avatar-item-end-16{z-index:96}.semi-avatar-group .semi-avatar-item-start-17{z-index:83}.semi-avatar-group .semi-avatar-item-end-17{z-index:97}.semi-avatar-group .semi-avatar-item-start-18{z-index:82}.semi-avatar-group .semi-avatar-item-end-18{z-index:98}.semi-avatar-group .semi-avatar-item-start-19{z-index:81}.semi-avatar-group .semi-avatar-item-end-19{z-index:99}.semi-avatar-group .semi-avatar-item-start-20{z-index:80}.semi-avatar-group .semi-avatar-item-end-20{z-index:100}.semi-avatar-group .semi-avatar-item-more{background-color:rgba(var(--semi-grey-5),1)}.semi-avatar-amber{background-color:rgba(var(--semi-amber-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-blue{background-color:rgba(var(--semi-blue-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-cyan{background-color:rgba(var(--semi-cyan-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-green{background-color:rgba(var(--semi-green-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-grey{background-color:rgba(var(--semi-grey-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-indigo{background-color:rgba(var(--semi-indigo-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-light-blue{background-color:rgba(var(--semi-light-blue-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-light-green{background-color:rgba(var(--semi-light-green-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-lime{background-color:rgba(var(--semi-lime-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-orange{background-color:rgba(var(--semi-orange-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-pink{background-color:rgba(var(--semi-pink-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-purple{background-color:rgba(var(--semi-purple-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-red{background-color:rgba(var(--semi-red-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-teal{background-color:rgba(var(--semi-teal-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-violet{background-color:rgba(var(--semi-violet-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-yellow{background-color:rgba(var(--semi-yellow-3),1);color:rgba(var(--semi-white),1)}.semi-avatar-additionalBorder{border-style:solid;border-color:var(--semi-color-primary);display:inline-block;box-sizing:border-box;position:absolute;border-width:1.5px;top:-3.5px;left:-3.5px}.semi-avatar-additionalBorder-extra-extra-small{width:27px;height:27px}.semi-avatar-additionalBorder-extra-small{width:31px;height:31px}.semi-avatar-additionalBorder-small{width:39px;height:39px}.semi-avatar-additionalBorder-default{width:47px;height:47px}.semi-avatar-additionalBorder-medium{width:55px;height:55px}.semi-avatar-additionalBorder-large{width:79px;height:79px}.semi-avatar-additionalBorder-extra-large{width:135px;height:135px}.semi-avatar-square.semi-avatar-additionalBorder-extra_extra_small,.semi-avatar-square.semi-avatar-additionalBorder-extra_small,.semi-avatar-square.semi-avatar-additionalBorder-small,.semi-avatar-square.semi-avatar-additionalBorder-default,.semi-avatar-square.semi-avatar-additionalBorder-medium{border-radius:3px}.semi-avatar-square.semi-avatar-additionalBorder-large{border-radius:6px}.semi-avatar-additionalBorder-circle{border-radius:var(--semi-border-radius-circle)}.semi-avatar-additionalBorder-animated{animation:.8s linear infinite semi-avatar-additionalBorder}.semi-avatar-animated{animation:1s linear infinite semi-avatar-content}@keyframes semi-avatar-additionalBorder{0%{opacity:1;transform:scale(1)}to{border-width:0;opacity:0;transform:scale(1.15)}}@keyframes semi-avatar-content{0%{transform:scale(1)}50%{transform:scale(.9)}to{transform:scale(1)}}.semi-rtl .semi-avatar,.semi-portal-rtl .semi-avatar{direction:rtl}.semi-rtl .semi-avatar-extra-extra-small .semi-avatar-content,.semi-portal-rtl .semi-avatar-extra-extra-small .semi-avatar-content,.semi-rtl .semi-avatar-extra-small .semi-avatar-content,.semi-portal-rtl .semi-avatar-extra-small .semi-avatar-content{transform:scale(.8)}.semi-rtl .semi-avatar-hover,.semi-portal-rtl .semi-avatar-hover{left:auto;right:0}.semi-rtl .semi-avatar-group,.semi-portal-rtl .semi-avatar-group{direction:rtl}.semi-rtl .semi-avatar-group .semi-avatar:first-child,.semi-portal-rtl .semi-avatar-group .semi-avatar:first-child{margin-left:auto;margin-right:0}.semi-rtl .semi-avatar-group .semi-avatar-extra-large,.semi-portal-rtl .semi-avatar-group .semi-avatar-extra-large{margin-left:auto;margin-right:-32px}.semi-rtl .semi-avatar-group .semi-avatar-large,.semi-portal-rtl .semi-avatar-group .semi-avatar-large{margin-left:auto;margin-right:-18px}.semi-rtl .semi-avatar-group .semi-avatar-medium,.semi-rtl .semi-avatar-group .semi-avatar-small,.semi-portal-rtl .semi-avatar-group .semi-avatar-medium,.semi-portal-rtl .semi-avatar-group .semi-avatar-small{margin-left:auto;margin-right:-12px}.semi-rtl .semi-avatar-group .semi-avatar-extra-small,.semi-portal-rtl .semi-avatar-group .semi-avatar-extra-small{margin-left:auto;margin-right:-10px}.semi-rtl .semi-avatar-group .semi-avatar-extra-extra-small,.semi-portal-rtl .semi-avatar-group .semi-avatar-extra-extra-small{margin-left:auto;margin-right:-4px}.semi-backtop{position:fixed;box-sizing:border-box;right:100px;bottom:50px;z-index:10;cursor:pointer;text-align:center;overflow:hidden}.semi-rtl .semi-backtop,.semi-portal-rtl .semi-backtop{direction:rtl;right:auto;left:100px}.semi-badge{position:relative;display:inline-block}.semi-badge-dot{box-sizing:border-box;width:8px;height:8px;border-radius:var(--semi-border-radius-circle);background-color:var(--semi-color-bg-1);border:1px var(--semi-color-bg-1) solid;z-index:1}.semi-badge-count{box-sizing:border-box;height:18px;min-width:18px;border-radius:9px;padding:0 4px;background-color:var(--semi-color-bg-1);border:1px var(--semi-color-bg-1) solid;z-index:1;text-align:center;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:var(--semi-color-bg-2)}.semi-badge-rightTop{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0%}.semi-badge-rightBottom{position:absolute;right:0;bottom:0;transform:translate(50%,50%);transform-origin:100% 0%}.semi-badge-leftTop{position:absolute;top:0;left:0;transform:translate(-50%,-50%);transform-origin:100% 0%}.semi-badge-leftBottom{position:absolute;bottom:0;left:0;transform:translate(-50%,50%);transform-origin:100% 0%}.semi-badge-custom{display:flex}.semi-badge-block{position:static;display:inline-block}.semi-badge-primary.semi-badge-solid{background-color:var(--semi-color-primary)}.semi-badge-primary.semi-badge-light{background-color:var(--semi-color-primary-light-default);color:var(--semi-color-primary)}.semi-badge-primary.semi-badge-inverted{color:var(--semi-color-primary)}.semi-badge-secondary.semi-badge-solid{background-color:var(--semi-color-secondary)}.semi-badge-secondary.semi-badge-light{background-color:var(--semi-color-secondary-light-default);color:var(--semi-color-secondary)}.semi-badge-secondary.semi-badge-inverted{color:var(--semi-color-secondary)}.semi-badge-tertiary.semi-badge-solid{background-color:var(--semi-color-tertiary)}.semi-badge-tertiary.semi-badge-light{background-color:var(--semi-color-tertiary-light-default);color:var(--semi-color-tertiary)}.semi-badge-tertiary.semi-badge-inverted{color:var(--semi-color-tertiary)}.semi-badge-danger.semi-badge-solid{background-color:var(--semi-color-danger)}.semi-badge-danger.semi-badge-light{background-color:var(--semi-color-danger-light-default);color:var(--semi-color-danger)}.semi-badge-danger.semi-badge-inverted{color:var(--semi-color-danger)}.semi-badge-warning.semi-badge-solid{background-color:var(--semi-color-warning)}.semi-badge-warning.semi-badge-light{background-color:var(--semi-color-warning-light-default);color:var(--semi-color-warning)}.semi-badge-warning.semi-badge-inverted{color:var(--semi-color-warning)}.semi-badge-success.semi-badge-solid{background-color:var(--semi-color-success)}.semi-badge-success.semi-badge-light{background-color:var(--semi-color-success-light-default);color:var(--semi-color-success)}.semi-badge-success.semi-badge-inverted{color:var(--semi-color-success)}.semi-rtl .semi-badge,.semi-portal-rtl .semi-badge{direction:rtl}.semi-banner{padding:12px}.semi-banner-content-wrapper{display:flex;flex-direction:row}.semi-banner-description{margin:0}.semi-banner .semi-banner-content-wrapper .semi-banner-content{display:flex;flex:1}.semi-banner-in-container{border-radius:var(--semi-border-radius-small)}.semi-banner-in-container .semi-banner-content-wrapper .semi-banner-content-body{flex:1}.semi-banner-in-container .semi-banner-content-wrapper .semi-banner-content-body .semi-banner-title+.semi-banner-description{margin-top:2px}.semi-banner-full .semi-banner-content-wrapper .semi-banner-content{justify-content:center}.semi-banner-full .semi-banner-content-wrapper .semi-banner-icon,.semi-banner-full .semi-banner-content-wrapper .semi-banner-content-body{display:flex;align-items:center}.semi-banner-close{margin-left:12px;height:24px;width:24px}.semi-banner-extra{margin-top:8px}.semi-banner-icon{display:flex;margin-right:12px}.semi-banner-info{background-color:var(--semi-color-info-light-default);color:var(--semi-color-info)}.semi-banner-info.semi-banner-bordered{border:1px solid var(--semi-color-info)}.semi-banner-warning{background-color:var(--semi-color-warning-light-default);color:var(--semi-color-warning)}.semi-banner-warning.semi-banner-bordered{border:1px solid var(--semi-color-warning)}.semi-banner-success{background-color:var(--semi-color-success-light-default);color:var(--semi-color-success)}.semi-banner-success.semi-banner-bordered{border:1px solid var(--semi-color-success)}.semi-banner-danger{background-color:var(--semi-color-danger-light-default);color:var(--semi-color-danger)}.semi-banner-danger.semi-banner-bordered{border:1px solid var(--semi-color-danger)}.semi-rtl .semi-banner,.semi-portal-rtl .semi-banner{direction:rtl}.semi-rtl .semi-banner-close,.semi-portal-rtl .semi-banner-close{margin-left:0;margin-right:12px;height:24px;width:24px}.semi-rtl .semi-banner-icon,.semi-portal-rtl .semi-banner-icon{margin-right:0;margin-left:12px}.semi-light-scrollbar::-webkit-scrollbar-thumb,.semi-light-scrollbar *::-webkit-scrollbar-thumb{border-radius:6px;background:#0000;transition:all 1s}.semi-breadcrumb{overflow:hidden}.semi-breadcrumb-wrapper{display:flex;flex-wrap:wrap}.semi-breadcrumb-wrapper-loose{line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px}.semi-breadcrumb-wrapper-compact{line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px}.semi-breadcrumb-item-wrap{display:inline-flex;align-items:center;margin:4px 4px 4px 0}.semi-breadcrumb-item{display:inline-flex;align-items:center;column-gap:4px;margin-right:4px;color:var(--semi-color-text-2);font-weight:400}.semi-breadcrumb-item .semi-typography{color:inherit}.semi-breadcrumb-item-title-inline{display:inline-flex}.semi-breadcrumb-item-active{color:var(--semi-color-text-0);font-weight:600}.semi-breadcrumb-item-active:hover,.semi-breadcrumb-item-active:active{border:none;margin-bottom:0;color:var(--semi-color-text-0);cursor:default}.semi-breadcrumb-item-active .semi-typography{font-weight:600}.semi-breadcrumb-item-icon{margin-bottom:-1px}.semi-breadcrumb-item-more svg{vertical-align:middle}.semi-breadcrumb-item-link{text-decoration:inherit;transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-breadcrumb-item-link:hover{color:var(--semi-color-link);cursor:pointer}.semi-breadcrumb-item-link:active{color:var(--semi-color-link-hover);cursor:pointer}.semi-breadcrumb-collapse{display:inline-flex;flex-shrink:0}.semi-breadcrumb-separator{display:flex;color:var(--semi-color-text-2)}.semi-breadcrumb-restItem{color:var(--semi-color-text-2);margin-right:8px}.semi-rtl .semi-breadcrumb-wrapper,.semi-portal-rtl .semi-breadcrumb-wrapper{direction:rtl}.semi-rtl .semi-breadcrumb-item-wrap,.semi-portal-rtl .semi-breadcrumb-item-wrap,.semi-rtl .semi-breadcrumb-item,.semi-portal-rtl .semi-breadcrumb-item{margin-right:0;margin-left:4px}.semi-rtl .semi-breadcrumb-restItem,.semi-portal-rtl .semi-breadcrumb-restItem{margin-right:0;margin-left:8px}.semi-rtl .semi-breadcrumb-item-icon+.semi-breadcrumb-item-title,.semi-portal-rtl .semi-breadcrumb-item-icon+.semi-breadcrumb-item-title{margin-left:0;margin-right:4px;display:inline-block}.semi-button-split{display:inline-block}.semi-button-split .semi-button{border-radius:0;margin-right:1px}.semi-button-split .semi-button-first{border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-button-split .semi-button-last{border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small);margin-right:unset}.semi-button-split:hover .semi-button-borderless:active{background-color:var(--semi-color-fill-1)}.semi-button{--semi-button-colorful-multiple-fill-0: rgba(var(--semi-ai-general-5-3));--semi-button-colorful-multiple-fill-1: rgba(var(--semi-ai-general-5-2));--semi-button-colorful-multiple-fill-2: rgba(var(--semi-ai-general-5-1));--semi-button-colorful-multiple-fill-3: rgba(var(--semi-ai-general-5-0));--semi-button-colorful-disabled-fill: var(--semi-color-disabled-text);--semi-button-colorful-fill-primary: var(--semi-color-ai-purple);--semi-button-colorful-fill-secondary: var(--semi-color-text-0)}.semi-button{box-shadow:none;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;border:0 rgba(0,0,0,0) solid;border-radius:var(--semi-border-radius-small);padding:6px 12px;font-size:14px;line-height:20px;font-weight:600;outline:none;vertical-align:middle;white-space:nowrap}.semi-button.semi-button-primary:focus-visible,.semi-button.semi-button-secondary:focus-visible,.semi-button.semi-button-tertiary:focus-visible,.semi-button.semi-button-warning:focus-visible,.semi-button.semi-button-danger:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-button-content{display:flex;align-items:center}.semi-button-danger{background-color:var(--semi-color-danger);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-danger-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-danger-disabled.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-danger-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-danger:hover{background-color:var(--semi-color-danger-hover)}.semi-button-danger:active{background-color:var(--semi-color-danger-active)}.semi-button-danger.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-danger)}.semi-button-danger.semi-button-light,.semi-button-danger.semi-button-outline,.semi-button-danger.semi-button-borderless{color:var(--semi-color-danger)}.semi-button-danger:not(.semi-button-borderless):not(.semi-button-light):focus-visible{outline:2px solid var(--semi-color-danger-light-active)}.semi-button-warning{background-color:var(--semi-color-warning);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-warning-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-warning-disabled.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-warning-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-warning:hover{background-color:var(--semi-color-warning-hover)}.semi-button-warning:active{background-color:var(--semi-color-warning-active)}.semi-button-warning.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-warning)}.semi-button-warning.semi-button-light,.semi-button-warning.semi-button-outline,.semi-button-warning.semi-button-borderless{color:var(--semi-color-warning)}.semi-button-warning:not(.semi-button-borderless):not(.semi-button-light):focus-visible{outline:2px solid var(--semi-color-warning-light-active)}.semi-button-tertiary{background-color:var(--semi-color-tertiary);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-tertiary.semi-button-colorful.semi-button-solid{background:var(--semi-ai-general-0)}.semi-button-tertiary.semi-button-colorful.semi-button-solid:hover{background:var(--semi-ai-general-1)}.semi-button-tertiary.semi-button-colorful.semi-button-solid:active{background:var(--semi-ai-general-2)}.semi-button-tertiary.semi-button-colorful.semi-button-solid .semi-button-content-right,.semi-button-tertiary.semi-button-colorful.semi-button-solid .semi-button-content:not(:has(>.semi-button-content-right)){background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:#0000}.semi-button-tertiary-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-tertiary-disabled.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-tertiary-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-tertiary:hover{background-color:var(--semi-color-tertiary-hover)}.semi-button-tertiary:active{background-color:var(--semi-color-tertiary-active)}.semi-button-tertiary.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-tertiary.semi-button-light,.semi-button-tertiary.semi-button-outline,.semi-button-tertiary.semi-button-borderless{color:var(--semi-color-text-1)}.semi-button-primary{background-color:var(--semi-color-primary);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-primary.semi-button-colorful.semi-button-solid{background:var(--semi-color-ai-general)}.semi-button-primary.semi-button-colorful.semi-button-solid:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):hover{background:var(--semi-color-ai-general-hover)}.semi-button-primary.semi-button-colorful.semi-button-solid:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):active{background:var(--semi-color-ai-general-active)}.semi-button-primary.semi-button-colorful.semi-button-light .semi-button-content-right,.semi-button-primary.semi-button-colorful.semi-button-light .semi-button-content:not(:has(>.semi-button-content-right)){background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:#0000}.semi-button-primary.semi-button-colorful.semi-button-outline{color:var(--semi-color-ai-purple);border-color:var(--semi-color-ai-purple)}.semi-button-primary.semi-button-colorful.semi-button-borderless .semi-button-content-right,.semi-button-primary.semi-button-colorful.semi-button-borderless .semi-button-content:not(:has(>.semi-button-content-right)){background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:#0000}.semi-button-primary-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-primary-disabled.semi-button-light{background:var(--semi-color-fill-0)}.semi-button-primary-disabled.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-primary:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):hover{background-color:var(--semi-color-primary-hover)}.semi-button-primary.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-primary:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):active{background-color:var(--semi-color-primary-active)}.semi-button-primary.semi-button-light,.semi-button-primary.semi-button-outline,.semi-button-primary.semi-button-borderless{color:var(--semi-color-primary)}.semi-button-secondary{background-color:var(--semi-color-secondary);outline-color:var(--semi-color-secondary);color:rgba(var(--semi-white),1);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-secondary-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-secondary-disabled.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-secondary-disabled.semi-button-light{background-color:var(--semi-color-fill-0)}.semi-button-secondary.semi-button-outline{background-color:#0000;border:1px solid var(--semi-color-border)}.semi-button-secondary:hover{background-color:var(--semi-color-secondary-hover)}.semi-button-secondary:active{background-color:var(--semi-color-secondary-active)}.semi-button-secondary.semi-button-light,.semi-button-secondary.semi-button-outline,.semi-button-secondary.semi-button-borderless{color:var(--semi-color-secondary)}.semi-button-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-button-disabled:not(.semi-button-borderless):not(.semi-button-light):not(.semi-button-outline):hover{color:var(--semi-color-disabled-text)}.semi-button-disabled.semi-button-light,.semi-button-disabled.semi-button-borderless,.semi-button-disabled.semi-button-outline{color:var(--semi-color-disabled-text)}.semi-button-borderless{background-color:#0000;border:0 rgba(0,0,0,0) solid;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-borderless:not(.semi-button-disabled):hover{background-color:var(--semi-color-fill-0);border:0 rgba(0,0,0,0) solid}.semi-button-borderless:not(.semi-button-disabled):active{background-color:var(--semi-color-fill-1);border:0 rgba(0,0,0,0) solid}.semi-button-outline{background-color:#0000}.semi-button-outline:not(.semi-button-disabled):hover{background-color:var(--semi-color-fill-0)}.semi-button-outline:not(.semi-button-disabled):active{background-color:var(--semi-color-fill-1)}.semi-button-light{background-color:var(--semi-color-fill-0);border:0 rgba(0,0,0,0) solid;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-button-light:not(.semi-button-disabled):hover{background-color:var(--semi-color-fill-1);border:0 rgba(0,0,0,0) solid}.semi-button-light:not(.semi-button-disabled):active{background-color:var(--semi-color-fill-2);border:0 rgba(0,0,0,0) solid}.semi-button-size-small{height:24px;padding:2px 12px;font-size:14px;line-height:20px;font-weight:600}.semi-button-size-large{height:40px;padding:10px 16px;font-size:14px;line-height:20px;font-weight:600}.semi-button-block{width:100%}.semi-button-group{display:flex;flex-wrap:wrap}.semi-button-group>.semi-button{margin:0;padding-left:0;padding-right:0;border-radius:0}.semi-button-group>.semi-button .semi-button-content{padding-left:12px;padding-right:12px}.semi-button-group>.semi-button-size-large .semi-button-content{padding-left:16px;padding-right:16px}.semi-button-group>.semi-button-size-small .semi-button-content{padding-left:12px;padding-right:12px}.semi-button-group>.semi-button.semi-button-with-icon-only{padding-left:0;padding-right:0}.semi-button-group>.semi-button.semi-button-with-icon-only .semi-button-content{padding-left:8px;padding-right:8px}.semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-small .semi-button-content{padding-left:4px;padding-right:4px}.semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-large .semi-button-content{padding-left:12px;padding-right:12px}.semi-button-group>.semi-button:first-child{border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-button-group>.semi-button:last-child{border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small)}.semi-button-group>.semi-button-outline:not(:last-child){border-right-color:#0000;margin-right:-1px}.semi-button-group-line{display:inline-flex;align-items:center;background-color:var(--semi-color-border)}.semi-button-group-line-primary{background-color:var(--semi-color-primary)}.semi-button-group-line-secondary{background-color:var(--semi-color-secondary)}.semi-button-group-line-tertiary{background-color:var(--semi-color-tertiary)}.semi-button-group-line-warning{background-color:var(--semi-color-warning)}.semi-button-group-line-danger{background-color:var(--semi-color-danger)}.semi-button-group-line-disabled{background-color:var(--semi-color-disabled-bg)}.semi-button-group-line-light{background-color:var(--semi-color-fill-0)}.semi-button-group-line-borderless{background-color:#0000}.semi-button-group-line:before{display:block;content:"";width:1px;height:20px;background-color:var(--semi-color-border)}.semi-calendar-day ul,.semi-calendar-day li,.semi-calendar-week ul,.semi-calendar-week li,.semi-calendar-month ul,.semi-calendar-month li{padding:0;margin:0;list-style:none}.semi-calendar-day-sticky-top,.semi-calendar-week-sticky-top,.semi-calendar-month-sticky-top{position:sticky;position:-webkit-sticky;top:0;left:0;right:0;background-color:var(--semi-color-bg-2);z-index:20}.semi-calendar-day .semi-calendar-weekend,.semi-calendar-week .semi-calendar-weekend,.semi-calendar-month .semi-calendar-weekend{background-color:var(--semi-color-fill-0)}.semi-calendar-day .semi-calendar-event-items,.semi-calendar-week .semi-calendar-event-items,.semi-calendar-month .semi-calendar-event-items{pointer-events:none}.semi-calendar-day .semi-calendar-event-items>*,.semi-calendar-week .semi-calendar-event-items>*,.semi-calendar-month .semi-calendar-event-items>*{pointer-events:auto}.semi-calendar-day .semi-calendar-event-items .semi-calendar-event-day,.semi-calendar-week .semi-calendar-event-items .semi-calendar-event-day,.semi-calendar-month .semi-calendar-event-items .semi-calendar-event-day{position:absolute;left:0;right:0;z-index:5;overflow:hidden}.semi-calendar-day .semi-calendar-custom-container,.semi-calendar-week .semi-calendar-custom-container,.semi-calendar-month .semi-calendar-custom-container{position:absolute;top:0;right:0;bottom:0;left:0}.semi-calendar-day,.semi-calendar-week{overflow:auto}.semi-calendar-day-sticky-left,.semi-calendar-week-sticky-left{position:sticky;position:-webkit-sticky;left:0;background-color:var(--semi-color-bg-2);z-index:10}.semi-calendar-day .semi-calendar-tag,.semi-calendar-week .semi-calendar-tag{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-width:70px;color:var(--semi-color-text-2)}.semi-calendar-day-scroll,.semi-calendar-week-scroll{display:flex;flex:1 1 auto;position:relative}.semi-calendar-day .semi-calendar-grid,.semi-calendar-week .semi-calendar-grid{display:flex;align-items:flex-start;flex:1 1 auto;position:relative}.semi-calendar-day .semi-calendar-grid-skeleton,.semi-calendar-week .semi-calendar-grid-skeleton{position:relative;box-sizing:border-box}.semi-calendar-day .semi-calendar-grid-skeleton li,.semi-calendar-week .semi-calendar-grid-skeleton li{height:30px}.semi-calendar-day .semi-calendar-grid-skeleton li:last-child,.semi-calendar-day .semi-calendar-grid-skeleton li:nth-last-child(2),.semi-calendar-week .semi-calendar-grid-skeleton li:last-child,.semi-calendar-week .semi-calendar-grid-skeleton li:nth-last-child(2){height:0}.semi-calendar-day .semi-calendar-grid-skeleton-row-line:after,.semi-calendar-week .semi-calendar-grid-skeleton-row-line:after{content:"";border-bottom:1px solid var(--semi-color-border);position:absolute;left:0;right:0;z-index:3;pointer-events:none}.semi-calendar-day .semi-calendar-grid-skeleton-row-line:first-child:after,.semi-calendar-week .semi-calendar-grid-skeleton-row-line:first-child:after{border:0}.semi-calendar-day .semi-calendar-grid-content,.semi-calendar-week .semi-calendar-grid-content{flex:1 0 auto;min-width:130px;height:100%}.semi-calendar-day .semi-calendar-grid-curr-circle,.semi-calendar-week .semi-calendar-grid-curr-circle{background:var(--semi-color-danger);border-radius:var(--semi-border-radius-circle);content:"";position:absolute;height:8px;width:8px;margin-top:-4px;z-index:8}.semi-calendar-day .semi-calendar-grid-curr-line,.semi-calendar-week .semi-calendar-grid-curr-line{position:absolute;left:0;right:0;z-index:8;border-top:1px solid var(--semi-color-danger);pointer-events:none}.semi-calendar-day .semi-calendar-all-day,.semi-calendar-week .semi-calendar-all-day{display:flex;flex:1 1 auto;border-bottom:1px solid var(--semi-color-border)}.semi-calendar-day .semi-calendar-all-day .semi-calendar-tag,.semi-calendar-week .semi-calendar-all-day .semi-calendar-tag{text-align:right;padding-right:8px}.semi-calendar-day .semi-calendar-all-day .semi-calendar-tag span,.semi-calendar-week .semi-calendar-all-day .semi-calendar-tag span{line-height:26px}.semi-calendar-day .semi-calendar-all-day-content,.semi-calendar-week .semi-calendar-all-day-content{display:flex;flex:1 0 auto;height:100%;min-height:26px;min-width:130px}.semi-calendar-day .semi-calendar-all-day .semi-calendar-event-items,.semi-calendar-week .semi-calendar-all-day .semi-calendar-event-items{width:100%}.semi-calendar-day .semi-calendar-time,.semi-calendar-week .semi-calendar-time{height:auto;display:flex;flex:none;align-items:flex-start;padding-right:8px}.semi-calendar-day .semi-calendar-time-item,.semi-calendar-week .semi-calendar-time-item{position:relative;height:60px;text-align:right}.semi-calendar-day .semi-calendar-time-item span,.semi-calendar-week .semi-calendar-time-item span{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:block;position:relative;top:-10px;color:var(--semi-color-text-2)}.semi-calendar-day .semi-calendar-time .semi-calendar-time-items,.semi-calendar-week .semi-calendar-time .semi-calendar-time-items{position:relative;min-width:70px;background-color:var(--semi-color-bg-2);box-sizing:border-box;margin-left:auto}.semi-calendar-week .semi-calendar-today .semi-calendar-today-date,.semi-calendar-month .semi-calendar-today .semi-calendar-today-date{width:24px;height:24px;line-height:24px;text-align:center;border-radius:var(--semi-border-radius-circle);background-color:var(--semi-color-primary);color:var(--semi-color-bg-1)}.semi-calendar-day-scroll-wrapper{height:calc(100% - 28px)}.semi-calendar-week{position:relative;display:grid}.semi-calendar-week-scroll-wrapper{height:calc(100% - 55px)}.semi-calendar-week .semi-calendar-grid-skeleton-row-line:after{left:0}.semi-calendar-week .semi-calendar-grid-skeleton li{border-right:1px solid var(--semi-color-border)}.semi-calendar-week .semi-calendar-grid:last-child .semi-calendar-grid-content li{border-right:0}.semi-calendar-week-header,.semi-calendar-week-grid-row{display:flex;align-items:flex-start;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-calendar-week-header{flex:1 1 auto;border-bottom:1px solid var(--semi-color-border)}.semi-calendar-week-grid,.semi-calendar-week-grid-row{display:flex;flex:1 0 auto}.semi-calendar-week-grid-row li{display:flex;flex:1 1 0;border-right:1px solid rgba(0,0,0,0);height:auto;box-sizing:border-box;justify-content:center;align-items:center}.semi-calendar-week-grid-row li>span{display:flex;align-items:center;justify-content:center;line-height:26px}.semi-calendar-week-grid-row li>span:last-child{padding:0 4px}.semi-calendar-week .semi-calendar-all-day{font-size:26px}.semi-calendar-week .semi-calendar-all-day-content{padding-left:0;position:relative}.semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton{display:flex;flex:1 1 auto}.semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton li{flex:1 1 auto;min-width:130px;box-sizing:border-box;border-right:1px solid var(--semi-color-border)}.semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton li:last-child{border-right:1px solid rgba(0,0,0,0)}.semi-calendar-week .semi-calendar-all-day .semi-calendar-event-items,.semi-calendar-week .semi-calendar-all-day .semi-calendar-event-items .semi-calendar-event-allday{position:absolute}.semi-calendar-week .semi-calendar-all-day .semi-calendar-event-items .semi-calendar-event-allday>*{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-calendar-week .semi-calendar-week-tag{text-align:right;line-height:26px}.semi-calendar-week .semi-calendar-week-tag:first-child{padding-right:8px}.semi-calendar-month{display:flex;flex-direction:column;height:100%;overflow:hidden;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-calendar-month-grid-wrapper{height:calc(100% - 27px)}.semi-calendar-month-week,.semi-calendar-month-skeleton{height:100%}.semi-calendar-month-header{display:flex;flex:1 1 auto;align-items:flex-start;color:var(--semi-color-text-2)}.semi-calendar-month-grid{flex:1 1 auto;box-sizing:border-box}.semi-calendar-month-grid li{line-height:26px}.semi-calendar-month-grid-row,.semi-calendar-month-skeleton{display:flex;box-sizing:border-box}.semi-calendar-month-grid-row li,.semi-calendar-month-skeleton li{flex:1;white-space:nowrap;text-align:right;padding-right:8px;box-sizing:border-box;border-bottom:1px solid var(--semi-color-border);color:var(--semi-color-text-2)}.semi-calendar-month-grid-row li span,.semi-calendar-month-skeleton li span{display:inline-block;text-align:right}.semi-calendar-month-skeleton{position:absolute;overflow:hidden;left:0;right:0}.semi-calendar-month-skeleton li{position:relative;overflow:hidden;border-right:1px solid var(--semi-color-border);height:100%;padding-top:4px}.semi-calendar-month-skeleton li span{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-calendar-month-skeleton li:last-child{border-right:none}.semi-calendar-month-skeleton .semi-calendar-month-same{color:var(--semi-color-text-0)}.semi-calendar-month-skeleton .semi-calendar-month-event-card-wrapper{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:block;position:absolute;right:8px;padding-top:2px;-webkit-user-select:none;user-select:none}.semi-calendar-month-skeleton .semi-calendar-month-event-card-wrapper:hover{cursor:pointer}.semi-calendar-month .semi-calendar-event-items{position:absolute;top:31px;right:0;bottom:20px;left:0;overflow:hidden}.semi-calendar-month-grid-col{display:flex;flex-direction:column;flex:1;height:100%}.semi-calendar-month-weekrow{flex:1 1 auto;position:relative}.semi-calendar-month-weekrow .semi-calendar-event-items .semi-calendar-event-month{position:absolute;font-size:24px;height:1em;overflow:hidden}.semi-calendar-month-weekrow .semi-calendar-event-items .semi-calendar-event-month>*{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-calendar-month-date{position:absolute;right:4px;z-index:3}.semi-calendar-month-event-card{width:220px}.semi-calendar-month-event-card ul,.semi-calendar-month-event-card li{padding:0;margin:0;list-style:none}.semi-calendar-month-event-card-close{margin-right:-4px}.semi-calendar-month-event-card-content{padding:12px 0}.semi-calendar-month-event-card-header{display:flex;flex-direction:row;margin:12px 20px}.semi-calendar-month-event-card-header-info{display:flex;flex:1;flex-direction:column;align-items:center}.semi-calendar-month-event-card-header-info-weekday{color:var(--semi-color-text-2)}.semi-calendar-month-event-card-header-info-date{font-size:20px;line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin-top:4px}.semi-calendar-month-event-card-body{padding:0 16px}.semi-calendar-month-event-card-body li{height:24px}.semi-rtl .semi-calendar-day,.semi-rtl .semi-calendar-week,.semi-rtl .semi-calendar-month,.semi-portal-rtl .semi-calendar-day,.semi-portal-rtl .semi-calendar-week,.semi-portal-rtl .semi-calendar-month{direction:rtl}.semi-rtl .semi-calendar-day-sticky-left,.semi-rtl .semi-calendar-week-sticky-left,.semi-portal-rtl .semi-calendar-day-sticky-left,.semi-portal-rtl .semi-calendar-week-sticky-left{left:auto;right:0}.semi-rtl .semi-calendar-day .semi-calendar-all-day .semi-calendar-tag,.semi-rtl .semi-calendar-week .semi-calendar-all-day .semi-calendar-tag,.semi-portal-rtl .semi-calendar-day .semi-calendar-all-day .semi-calendar-tag,.semi-portal-rtl .semi-calendar-week .semi-calendar-all-day .semi-calendar-tag{text-align:left;padding-right:0;padding-left:8px}.semi-rtl .semi-calendar-day .semi-calendar-time,.semi-rtl .semi-calendar-week .semi-calendar-time,.semi-portal-rtl .semi-calendar-day .semi-calendar-time,.semi-portal-rtl .semi-calendar-week .semi-calendar-time{padding-right:0;padding-left:8px}.semi-rtl .semi-calendar-day .semi-calendar-time-item,.semi-rtl .semi-calendar-week .semi-calendar-time-item,.semi-portal-rtl .semi-calendar-day .semi-calendar-time-item,.semi-portal-rtl .semi-calendar-week .semi-calendar-time-item{text-align:left}.semi-rtl .semi-calendar-day .semi-calendar-time .semi-calendar-time-items,.semi-rtl .semi-calendar-week .semi-calendar-time .semi-calendar-time-items,.semi-portal-rtl .semi-calendar-day .semi-calendar-time .semi-calendar-time-items,.semi-portal-rtl .semi-calendar-week .semi-calendar-time .semi-calendar-time-items{margin-left:0;margin-right:auto}.semi-rtl .semi-calendar-week .semi-calendar-grid-skeleton-row-line:after,.semi-portal-rtl .semi-calendar-week .semi-calendar-grid-skeleton-row-line:after{left:0;right:0}.semi-rtl .semi-calendar-week .semi-calendar-grid-skeleton li,.semi-portal-rtl .semi-calendar-week .semi-calendar-grid-skeleton li{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-calendar-week .semi-calendar-grid:last-child .semi-calendar-grid-content li,.semi-portal-rtl .semi-calendar-week .semi-calendar-grid:last-child .semi-calendar-grid-content li{border-left:0}.semi-rtl .semi-calendar-week .semi-calendar-all-day-content,.semi-portal-rtl .semi-calendar-week .semi-calendar-all-day-content{padding-left:auto;padding-right:0}.semi-rtl .semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton li,.semi-portal-rtl .semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton li{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton li:last-child,.semi-portal-rtl .semi-calendar-week .semi-calendar-all-day-content .semi-calendar-all-day-skeleton li:last-child{border-left:1px solid rgba(0,0,0,0)}.semi-rtl .semi-calendar-week .semi-rtl .semi-calendar-week-tag,.semi-rtl .semi-calendar-week .semi-portal-rtl .semi-calendar-week-tag,.semi-portal-rtl .semi-calendar-week .semi-rtl .semi-calendar-week-tag,.semi-portal-rtl .semi-calendar-week .semi-portal-rtl .semi-calendar-week-tag{text-align:left}.semi-rtl .semi-calendar-week .semi-rtl .semi-calendar-week-tag:first-child,.semi-rtl .semi-calendar-week .semi-portal-rtl .semi-calendar-week-tag:first-child,.semi-portal-rtl .semi-calendar-week .semi-rtl .semi-calendar-week-tag:first-child,.semi-portal-rtl .semi-calendar-week .semi-portal-rtl .semi-calendar-week-tag:first-child{padding-right:auto;padding-left:8px}.semi-rtl .semi-calendar-month-grid-row li,.semi-rtl .semi-calendar-month-skeleton li,.semi-portal-rtl .semi-calendar-month-grid-row li,.semi-portal-rtl .semi-calendar-month-skeleton li{text-align:left;padding-right:auto;padding-left:8px}.semi-rtl .semi-calendar-month-grid-row li span,.semi-rtl .semi-calendar-month-skeleton li span,.semi-portal-rtl .semi-calendar-month-grid-row li span,.semi-portal-rtl .semi-calendar-month-skeleton li span{text-align:left}.semi-rtl .semi-calendar-month-skeleton li,.semi-portal-rtl .semi-calendar-month-skeleton li{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-calendar-month-skeleton li:last-child,.semi-portal-rtl .semi-calendar-month-skeleton li:last-child{border-left:none}.semi-rtl .semi-calendar-month-skeleton .semi-calendar-month-event-card-wrapper,.semi-portal-rtl .semi-calendar-month-skeleton .semi-calendar-month-event-card-wrapper{right:auto;left:8px}.semi-rtl .semi-calendar-month-date,.semi-portal-rtl .semi-calendar-month-date{right:auto;left:4px}.semi-rtl .semi-calendar-month-event-card-close,.semi-portal-rtl .semi-calendar-month-event-card-close{margin-right:0;margin-left:-4px}.semi-card{box-sizing:border-box;margin:0;padding:0;border-radius:var(--semi-border-radius-medium);overflow:hidden;background-color:var(--semi-color-bg-0);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:0em}.semi-card-shadows{cursor:pointer;transition:box-shadow .3s}.semi-card-shadows-hover:hover{box-shadow:var(--semi-shadow-elevated);z-index:1}.semi-card-shadows-always{box-shadow:var(--semi-shadow-elevated)}.semi-card-bordered{border:1px solid var(--semi-color-border)}.semi-card-header{padding:20px}.semi-card-header-bordered{border-bottom:1px solid var(--semi-color-border)}.semi-card-header-wrapper{display:flex;align-items:flex-start;flex-direction:row-reverse;justify-content:space-between}.semi-card-header-wrapper-spacing{margin-right:20px}.semi-card-header-wrapper-title{width:100%;overflow:hidden}.semi-card-header-wrapper-extra{flex-shrink:0;font-size:16px;font-style:normal;font-weight:700;letter-spacing:0em;color:var(--semi-color-text-0)}.semi-card-cover>*{display:block;width:100%}.semi-card-body{padding:20px;font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:0em;color:var(--semi-color-text-1)}.semi-card-body-actions{margin-top:20px;padding-top:20px;border-top:1px solid var(--semi-color-border)}.semi-card-footer{padding:20px}.semi-card-footer-bordered{border-top:1px solid var(--semi-color-border)}.semi-card-meta{display:flex;align-items:center;justify-content:flex-start}.semi-card-meta-avatar{margin-right:12px}.semi-card-meta-wrapper-title{font-size:16px;font-style:normal;font-weight:700;line-height:22px;letter-spacing:0em;color:var(--semi-color-text-0)}.semi-card-meta-wrapper-description{font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:0em;color:var(--semi-color-text-2)}.semi-card-group-grid .semi-card{border-radius:0}.semi-card-group-grid .semi-card{margin-left:-1px;margin-top:-1px}.semi-rtl .semi-card,.semi-portal-rtl .semi-card{direction:rtl}.semi-rtl .semi-card-header-wrapper,.semi-portal-rtl .semi-card-header-wrapper{align-items:flex-end}.semi-rtl .semi-card-header-wrapper-title,.semi-portal-rtl .semi-card-header-wrapper-title{display:flex;align-items:flex-end}.semi-rtl .semi-card-header-wrapper-spacing,.semi-portal-rtl .semi-card-header-wrapper-spacing{margin-left:20px;margin-right:0}.semi-rtl .semi-card-meta-avatar,.semi-portal-rtl .semi-card-meta-avatar{margin-left:12px;margin-right:0}.semi-rtl .semi-card-group,.semi-portal-rtl .semi-card-group{direction:rtl}.semi-rtl .semi-card-group-grid .semi-card,.semi-portal-rtl .semi-card-group-grid .semi-card{margin:0 -1px -1px 0}.semi-carousel{position:relative;overflow:hidden}.semi-carousel-content{width:100%;height:100%;overflow:hidden;position:relative}.semi-carousel-content-item{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden}.semi-carousel-content-item-current{z-index:1}.semi-carousel-content-fade>*{opacity:0}.semi-carousel-content-fade .semi-carousel-content-item-current{opacity:1}.semi-carousel-content-slide>*:not(.semi-carousel-content-item-current){visibility:hidden}.semi-carousel-content-slide .semi-carousel-content-item-slide-out{display:block;animation:semi-carousel-content-item-keyframe-slide-out;animation-fill-mode:forwards}.semi-carousel-content-slide .semi-carousel-content-item-slide-in{display:block;animation:semi-carousel-content-item-keyframe-slide-in;animation-fill-mode:forwards}.semi-carousel-content-reverse .semi-carousel-content-item-slide-out{animation:semi-carousel-content-item-keyframe-slide-out-reverse;animation-fill-mode:forwards}.semi-carousel-content-reverse .semi-carousel-content-item-slide-in{animation:semi-carousel-content-item-keyframe-slide-in-reverse;animation-fill-mode:forwards}.semi-carousel-indicator{display:flex;align-items:flex-end;z-index:2}.semi-carousel-indicator-left{position:absolute;left:32px;bottom:32px}.semi-carousel-indicator-center{position:absolute;left:50%;bottom:32px;transform:translate(-50%)}.semi-carousel-indicator-right{position:absolute;right:32px;bottom:32px}.semi-carousel-indicator-dot .semi-carousel-indicator-item{border-radius:50%;cursor:pointer}.semi-carousel-indicator-dot .semi-carousel-indicator-item:not(:last-child){margin-right:8px}.semi-carousel-indicator-dot .semi-carousel-indicator-item-small{width:8px;height:8px}.semi-carousel-indicator-dot .semi-carousel-indicator-item-medium{width:12px;height:12px}.semi-carousel-indicator-dot .semi-carousel-indicator-item-primary{background-color:rgba(var(--semi-blue-6),.4);transition:background-color var(--semi-transition_delay-none) var(--semi-transition_function-easeOut) var(--semi-transition_delay-none)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-primary.semi-carousel-indicator-item-active{background:rgba(var(--semi-blue-6),1)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-primary:hover{background-color:rgba(var(--semi-blue-6),.7)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-primary:active{background:rgba(var(--semi-blue-6),1)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-light{background-color:rgba(var(--semi-white),.4);transition:background-color var(--semi-transition_delay-none) var(--semi-transition_function-easeOut) var(--semi-transition_delay-none)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-light.semi-carousel-indicator-item-active{background:rgba(var(--semi-white),1)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-light:hover{background-color:rgba(var(--semi-white),.7)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-light:active{background:rgba(var(--semi-white),1)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-dark{background-color:rgba(var(--semi-black),.5);transition:background-color var(--semi-transition_delay-none) var(--semi-transition_function-easeOut) var(--semi-transition_delay-none)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-dark.semi-carousel-indicator-item-active{background-color:rgba(var(--semi-black),1)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-dark:hover{background-color:rgba(var(--semi-black),.7)}.semi-carousel-indicator-dot .semi-carousel-indicator-item-dark:active{background:rgba(var(--semi-black),1)}.semi-carousel-indicator-line{width:240px}.semi-carousel-indicator-line .semi-carousel-indicator-item{flex:1;cursor:pointer}.semi-carousel-indicator-line .semi-carousel-indicator-item:not(:last-child){margin-right:4px}.semi-carousel-indicator-line .semi-carousel-indicator-item-small{height:4px}.semi-carousel-indicator-line .semi-carousel-indicator-item-medium{height:6px}.semi-carousel-indicator-line .semi-carousel-indicator-item-primary{background-color:rgba(var(--semi-blue-6),.4)}.semi-carousel-indicator-line .semi-carousel-indicator-item-primary.semi-carousel-indicator-item-active{background:rgba(var(--semi-blue-6),1)}.semi-carousel-indicator-line .semi-carousel-indicator-item-primary:hover{background-color:rgba(var(--semi-blue-6),.7)}.semi-carousel-indicator-line .semi-carousel-indicator-item-primary:active{background:rgba(var(--semi-blue-6),1)}.semi-carousel-indicator-line .semi-carousel-indicator-item-light{background-color:rgba(var(--semi-white),.4)}.semi-carousel-indicator-line .semi-carousel-indicator-item-light.semi-carousel-indicator-item-active{background:rgba(var(--semi-white),1)}.semi-carousel-indicator-line .semi-carousel-indicator-item-light:hover{background-color:rgba(var(--semi-white),.7)}.semi-carousel-indicator-line .semi-carousel-indicator-item-light:active{background:rgba(var(--semi-white),1)}.semi-carousel-indicator-line .semi-carousel-indicator-item-dark{background-color:rgba(var(--semi-black),.5)}.semi-carousel-indicator-line .semi-carousel-indicator-item-dark.semi-carousel-indicator-item-active{background:rgba(var(--semi-black),1)}.semi-carousel-indicator-line .semi-carousel-indicator-item-dark:hover{background-color:rgba(var(--semi-black),.7)}.semi-carousel-indicator-line .semi-carousel-indicator-item-dark:active{background:rgba(var(--semi-black),1)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item{cursor:pointer}.semi-carousel-indicator-columnar .semi-carousel-indicator-item:not(:last-child){margin-right:4px}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-small{width:4px;height:12px}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-small.semi-carousel-indicator-item-active{height:20px}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-medium{width:6px;height:20px}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-medium.semi-carousel-indicator-item-active{height:28px}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-primary{background-color:rgba(var(--semi-blue-6),.4)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-primary.semi-carousel-indicator-item-active{background:rgba(var(--semi-blue-6),1)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-primary:hover{background-color:rgba(var(--semi-blue-6),.7)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-primary:active{background:rgba(var(--semi-blue-6),1)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-light{background-color:rgba(var(--semi-white),.4)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-light.semi-carousel-indicator-item-active{background:rgba(var(--semi-white),1)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-light:hover{background-color:rgba(var(--semi-white),.7)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-light:active{background:rgba(var(--semi-white),1)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-dark{background-color:rgba(var(--semi-black),.5)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-dark.semi-carousel-indicator-item-active{background:rgba(var(--semi-black),1)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-dark:hover{background-color:rgba(var(--semi-black),.7)}.semi-carousel-indicator-columnar .semi-carousel-indicator-item-dark:active{background:rgba(var(--semi-black),1)}.semi-carousel-arrow{display:flex;font-size:32px;cursor:pointer}.semi-carousel-arrow-prev{position:absolute;top:50%;left:20px;transform:translateY(-50%);z-index:2}.semi-carousel-arrow-next{position:absolute;top:50%;right:20px;transform:translateY(-50%);z-index:2}.semi-carousel-arrow-light{color:rgba(var(--semi-white),.4);transition:color var(--semi-transition_delay-none) var(--semi-transition_function-easeOut) var(--semi-transition_delay-none)}.semi-carousel-arrow-light:hover{color:rgba(var(--semi-white),1)}.semi-carousel-arrow-primary{color:rgba(var(--semi-blue-6),.4);transition:color var(--semi-transition_delay-none) var(--semi-transition_function-easeOut) var(--semi-transition_delay-none)}.semi-carousel-arrow-primary:hover{color:rgba(var(--semi-blue-6),1)}.semi-carousel-arrow-dark{color:rgba(var(--semi-black),.5);transition:color var(--semi-transition_delay-none) var(--semi-transition_function-easeOut) var(--semi-transition_delay-none)}.semi-carousel-arrow-dark:hover{color:rgba(var(--semi-black),1)}.semi-carousel-arrow-hover div{z-index:2;opacity:0}.semi-carousel:hover .semi-carousel-arrow-hover div{opacity:1}@keyframes semi-carousel-content-item-keyframe-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes semi-carousel-content-item-keyframe-slide-out{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes semi-carousel-content-item-keyframe-slide-in-reverse{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes semi-carousel-content-item-keyframe-slide-out-reverse{0%{transform:translate(0)}to{transform:translate(100%)}}.semi-rtl .semi-carousel,.semi-portal-rtl .semi-carousel{direction:rtl}.semi-rtl .semi-carousel-indicator,.semi-portal-rtl .semi-carousel-indicator{display:flex}.semi-rtl .semi-carousel-indicator-dot .semi-carousel-indicator-item:not(:last-child),.semi-portal-rtl .semi-carousel-indicator-dot .semi-carousel-indicator-item:not(:last-child){margin-right:0;margin-left:8px}.semi-rtl .semi-carousel-indicator-columnar .semi-carousel-indicator-item:not(:last-child),.semi-portal-rtl .semi-carousel-indicator-columnar .semi-carousel-indicator-item:not(:last-child){margin-right:0;margin-left:4px}.semi-rtl .semi-carousel-arrow,.semi-portal-rtl .semi-carousel-arrow{flex-direction:row-reverse}.semi-rtl .semi-carousel-arrow-prev,.semi-portal-rtl .semi-carousel-arrow-prev{left:auto;right:20px;transform:scaleX(-1) translateY(-50%);z-index:2}.semi-rtl .semi-carousel-arrow-next,.semi-portal-rtl .semi-carousel-arrow-next{left:20px;transform:scaleX(-1) translateY(-50%);right:auto;z-index:2}.semi-cascader{box-sizing:border-box;border-radius:var(--semi-border-radius-small);border:1px solid rgba(0,0,0,0);min-width:80px;min-height:32px;height:auto;line-height:32px;font-weight:400;background-color:var(--semi-color-fill-0);display:inline-flex;align-items:center;vertical-align:middle;position:relative;cursor:pointer}.semi-cascader:hover{background-color:var(--semi-color-fill-1);border:1px rgba(0,0,0,0) solid}.semi-cascader:focus:not(.semi-cascader-disabled){border:1px solid var(--semi-color-focus-border);background-color:var(--semi-color-fill-0);outline:0}.semi-cascader:active{background-color:var(--semi-color-fill-2)}.semi-cascader-small{min-height:24px;line-height:24px}.semi-cascader-small .semi-cascader-selection{padding-left:12px;padding-right:12px}.semi-cascader-small .semi-cascader-selection-multiple{padding-left:4px;padding-right:4px}.semi-cascader-large{min-height:40px;line-height:40px}.semi-cascader-large .semi-cascader-selection{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-cascader-large .semi-cascader-selection{padding-left:12px;padding-right:12px}.semi-cascader-large .semi-cascader-selection-multiple{padding-left:4px;padding-right:4px}.semi-cascader-focus{border:1px solid var(--semi-color-focus-border);outline:0}.semi-cascader-focus:hover{background-color:var(--semi-color-fill-0);border:1px solid var(--semi-color-focus-border)}.semi-cascader-focus:active{background-color:var(--semi-color-fill-2)}.semi-cascader-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-cascader-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-cascader-warning.semi-cascader-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-cascader-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning-light-active)}.semi-cascader-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-cascader-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-cascader-error.semi-cascader-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-cascader-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger-light-active)}.semi-cascader-selection{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:100%;display:inline-flex;align-items:center;flex-wrap:wrap;flex-grow:1;overflow:hidden;padding-left:12px;padding-right:12px;cursor:pointer;color:var(--semi-color-text-0)}.semi-cascader-selection-multiple{padding-left:4px;padding-right:4px}.semi-cascader-selection-placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--semi-color-text-2)}.semi-cascader-selection-tag{margin:1px 2px 1px 0}.semi-cascader-selection-tag:first-child{margin-left:0}.semi-cascader-selection-tag-disabled.semi-tag{color:var(--semi-color-disabled-text);background-color:#0000;cursor:not-allowed}.semi-cascader-selection-tag-disabled.semi-tag .semi-tag-close{color:var(--semi-color-disabled-text);cursor:not-allowed;pointer-events:none}.semi-cascader-selection-n{cursor:pointer;font-size:12px;margin-right:4px;color:var(--semi-color-text-0);padding-left:8px;padding-right:8px}.semi-cascader-selection-n-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-cascader-selection span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.semi-cascader-selection .semi-cascader-tagInput-wrapper{border:hidden;background:#0000;margin-left:-4px}.semi-cascader-selection .semi-tagInput{min-height:30px}.semi-cascader-selection .semi-tagInput-small{min-height:22px}.semi-cascader-selection .semi-tagInput-large{min-height:38px}.semi-cascader-selection .semi-tagInput .semi-input-wrapper{margin-left:4px}.semi-cascader-selection .semi-tagInput .semi-input-wrapper .semi-input{padding-left:0}.semi-cascader-selection .semi-tagInput .semi-input-wrapper-default,.semi-cascader-selection .semi-tagInput .semi-input-wrapper-large{margin-top:1px;margin-bottom:1px}.semi-cascader-selection-text-inactive{color:var(--semi-color-text-2)}.semi-cascader-selection-text-hide{display:none}.semi-cascader-arrow,.semi-cascader-clearbtn{display:inline-flex;align-items:center;height:100%;justify-content:center;width:32px;color:var(--semi-color-text-2)}.semi-cascader-clearbtn:hover{color:var(--semi-color-primary-hover)}.semi-cascader-clearbtn:active{color:var(--semi-color-primary-active)}.semi-cascader-prefix,.semi-cascader-suffix{display:inline;display:flex;justify-content:center;align-items:center}.semi-cascader-prefix-text,.semi-cascader-suffix-text{margin:0 12px;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-cascader-prefix-icon,.semi-cascader-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-cascader-inset-label{display:inline;margin:0 12px;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-cascader.semi-cascader-with-prefix{display:inline-flex;align-items:center}.semi-cascader.semi-cascader-with-prefix .semi-cascader-selection{padding-left:0}.semi-cascader.semi-cascader-with-suffix .semi-cascader-selection{padding-right:0}.semi-cascader-disabled{cursor:not-allowed;-webkit-user-select:none;user-select:none;background-color:var(--semi-color-disabled-fill)}.semi-cascader-disabled .semi-cascader-selection{cursor:not-allowed}.semi-cascader-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-cascader-disabled .semi-cascader-selection,.semi-cascader-disabled .semi-cascader-selection-placeholder,.semi-cascader-disabled .semi-cascader-prefix,.semi-cascader-disabled .semi-cascader-suffix{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-cascader-disabled .semi-cascader-arrow{color:var(--semi-color-disabled-text)}.semi-cascader-popover .semi-cascader-search-wrapper{padding:8px 12px;border-bottom:1px solid var(--semi-color-fill-0)}.semi-cascader-popover .semi-cascader-option-lists .semi-cascader-option-empty{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;border-radius:var(--semi-border-radius-medium);color:var(--semi-color-disabled-text);margin:0;padding:8px 12px;-webkit-user-select:none;user-select:none;text-align:center;cursor:not-allowed}.semi-cascader-popover .semi-cascader-option-lists .semi-cascader-option-empty:hover{background-color:#0000}.semi-cascader-single.semi-cascader-filterable{display:inline-flex}.semi-cascader-single.semi-cascader-filterable .semi-cascader-selection .semi-cascader-search-wrapper{width:100%;height:30px;display:flex;align-items:center;position:relative}.semi-cascader-single.semi-cascader-filterable .semi-cascader-selection .semi-cascader-search-wrapper-small{height:22px}.semi-cascader-single.semi-cascader-filterable .semi-cascader-selection .semi-cascader-search-wrapper-large{height:38px}.semi-cascader-single.semi-cascader-filterable .semi-cascader-selection .semi-cascader-search-wrapper .semi-input-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;border:none;background-color:#0000}.semi-cascader-single.semi-cascader-filterable .semi-cascader-selection .semi-cascader-search-wrapper .semi-input-wrapper-focus{border:none}.semi-cascader-single.semi-cascader-filterable .semi-cascader-selection .semi-cascader-search-wrapper .semi-input{padding-left:0;padding-right:0}.semi-cascader-option-lists{display:flex;overflow:hidden;padding:0;margin:0;height:180px}.semi-cascader-option-lists-empty{height:auto;justify-content:center;cursor:not-allowed}.semi-cascader-option-lists ul,.semi-cascader-option-lists li{list-style-type:none;padding:0;margin:0}.semi-cascader-option-lists ul>li{padding:8px 16px 8px 12px}.semi-cascader-option-lists .semi-cascader-option-list{box-sizing:border-box;display:inline-block;min-width:150px;height:100%;margin:0;padding:4px 0;overflow:auto;list-style:none;border-left:1px solid var(--semi-color-fill-0)}.semi-cascader-option-lists .semi-cascader-option-list:first-child{border-left:none}.semi-cascader-option-lists .semi-cascader-option{display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-width:min-content;word-break:break-all;color:var(--semi-color-text-0);position:relative}.semi-cascader-option-lists .semi-cascader-option:hover{background-color:var(--semi-color-fill-0)}.semi-cascader-option-lists .semi-cascader-option:active{background-color:var(--semi-color-fill-1)}.semi-cascader-option-lists .semi-cascader-option-icon{display:inline-flex;flex-shrink:0;width:16px;color:var(--semi-color-text-2)}.semi-cascader-option-lists .semi-cascader-option-icon-active,.semi-cascader-option-lists .semi-cascader-option-icon-empty{margin-right:8px}.semi-cascader-option-lists .semi-cascader-option-icon-left{margin-left:8px}.semi-cascader-option-lists .semi-cascader-option-spin-icon{width:16px;height:16px;line-height:0}.semi-cascader-option-lists .semi-cascader-option-spin-icon svg{width:16px;height:16px}.semi-cascader-option-lists .semi-cascader-option-label{display:flex;align-items:center;white-space:pre}.semi-cascader-option-lists .semi-cascader-option-label-checkbox{margin-right:8px}.semi-cascader-option-lists .semi-cascader-option-hidden{display:none}.semi-cascader-option-lists .semi-cascader-option-active,.semi-cascader-option-lists .semi-cascader-option-active:hover{background-color:var(--semi-color-primary-light-default)}.semi-cascader-option-lists .semi-cascader-option-select,.semi-cascader-option-lists .semi-cascader-option-label-highlight{font-weight:600;color:var(--semi-color-primary)}.semi-cascader-option-lists .semi-cascader-option-disabled{cursor:not-allowed}.semi-cascader-option-lists .semi-cascader-option-disabled:hover,.semi-cascader-option-lists .semi-cascader-option-disabled:active{background-color:#0000}.semi-cascader-option-lists .semi-cascader-option-disabled .semi-cascader-option-label{color:var(--semi-color-disabled-text)}.semi-cascader-option-lists .semi-cascader-option-flatten{padding-right:64px}.semi-cascader-borderless:not(:focus-within):not(:hover){background-color:#0000;border-color:#0000}.semi-cascader-borderless:not(:focus-within):not(:hover) .semi-cascader-arrow{opacity:0}.semi-cascader-borderless:focus-within:not(:active){background-color:#0000}.semi-cascader-borderless.semi-cascader-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-cascader-borderless.semi-cascader-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-cascader-borderless.semi-cascader-error:focus-within{border-color:var(--semi-color-danger)}.semi-cascader-borderless.semi-cascader-warning:focus-within{border-color:var(--semi-color-warning)}.semi-rtl .semi-cascader,.semi-portal-rtl .semi-cascader{direction:rtl}.semi-rtl .semi-cascader.semi-cascader-with-prefix .semi-cascader-selection,.semi-portal-rtl .semi-cascader.semi-cascader-with-prefix .semi-cascader-selection{padding-left:auto;padding-right:0}.semi-rtl .semi-cascader.semi-cascader-with-suffix .semi-cascader-selection,.semi-portal-rtl .semi-cascader.semi-cascader-with-suffix .semi-cascader-selection{padding-right:auto;padding-left:0}.semi-rtl .semi-cascader-selection-multiple,.semi-portal-rtl .semi-cascader-selection-multiple{padding-right:4px;padding-left:4px}.semi-rtl .semi-cascader-selection-tag:first-child,.semi-portal-rtl .semi-cascader-selection-tag:first-child{margin-right:0}.semi-rtl .semi-cascader-selection-n,.semi-portal-rtl .semi-cascader-selection-n{margin-right:0;margin-left:4px}.semi-rtl .semi-cascader-selection .semi-cascader-tagInput-wrapper,.semi-portal-rtl .semi-cascader-selection .semi-cascader-tagInput-wrapper{margin-left:0;margin-right:-4px}.semi-rtl .semi-cascader-selection .semi-tagInput .semi-input-wrapper,.semi-portal-rtl .semi-cascader-selection .semi-tagInput .semi-input-wrapper{margin-left:0;margin-right:4px}.semi-rtl .semi-cascader-selection .semi-tagInput .semi-input-wrapper .semi-input,.semi-portal-rtl .semi-cascader-selection .semi-tagInput .semi-input-wrapper .semi-input{padding-right:0}.semi-cascader-option-label-checkbox{margin-right:0;margin-left:8px}.semi-cascader-option-lists-rtl{direction:rtl}.semi-cascader-option-lists.semi-cascader-option-lists-rtl ul>li{padding-right:12px;padding-left:auto}.semi-cascader-option-lists.semi-cascader-option-lists-rtl .semi-cascader-option-list{border-left:0;border-right:1px solid var(--semi-color-fill-0)}.semi-cascader-option-lists.semi-cascader-option-lists-rtl .semi-cascader-option-list:first-child{border-right:none}.semi-cascader-option-lists.semi-cascader-option-lists-rtl .semi-cascader-option-icon-active,.semi-cascader-option-lists.semi-cascader-option-lists-rtl .semi-cascader-option-icon-empty{margin-right:0;margin-left:8px}.semi-cascader-option-lists.semi-cascader-option-lists-rtl .semi-cascader-option-flatten{padding-right:0;padding-left:64px}.semi-cascader-option-lists.semi-cascader-option-lists-rtl .semi-cascader-option .semi-icon-chevron_right{margin-left:0;margin-right:8px;transform:scaleX(-1)}.semi-chat{padding-top:12px;padding-bottom:12px;display:flex;flex-direction:column;height:100%;max-width:800px;position:relative;overflow:hidden}.semi-chat-inner{display:flex;flex-direction:column;height:100%}.semi-chat-dropArea{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(var(--semi-grey-2),.9);z-index:10;border:5px dotted var(--semi-color-border);display:flex;align-items:center;justify-content:center;border-radius:16px}.semi-chat-dropArea-text{font-size:48px}.semi-chat-content{overflow:hidden;flex:1 1;position:relative}.semi-chat-toast{position:absolute;top:0;left:50%;transform:translate(-50%)}.semi-chat-container{padding-left:16px;padding-right:16px;height:100%;overflow:scroll}.semi-chat-container-scroll-hidden::-webkit-scrollbar{display:none}.semi-chat-action{position:relative;z-index:1}.semi-chat-action-content.semi-button{position:absolute;bottom:0;left:50%;transform:translate(-50%);display:flex;justify-content:center;align-items:center;background:var(--semi-color-bg-0);border:1px solid var(--semi-color-border)}.semi-chat-action-content.semi-button-light:not(.semi-button-disabled):hover{background:var(--semi-color-tertiary-light-hover);border:1px solid var(--semi-color-border)}.semi-chat-action-backBottom.semi-button{width:42px;height:42px;border-radius:50%}.semi-chat-action-stop.semi-button{-webkit-user-select:none;user-select:none;height:42px;border-radius:21px}.semi-chat-divider{color:var(--semi-color-text-2);font-size:12px;margin-top:12px;margin-bottom:12px;font-weight:400}.semi-chat-chatBox{display:flex;flex-direction:row;margin-top:8px;margin-bottom:8px;column-gap:12px}.semi-chat-chatBox:hover .semi-chat-chatBox-action:not(.semi-chat-chatBox-action-hidden){visibility:visible}.semi-chat-chatBox-right{flex-direction:row-reverse}.semi-chat-chatBox-right .semi-chat-chatBox-wrap{align-items:flex-end}.semi-chat-chatBox-avatar{flex-shrink:0;width:24px;height:24px}.semi-chat-chatBox-avatar-hidden{visibility:hidden}.semi-chat-chatBox-title{line-height:20px;font-size:16px;color:var(--semi-color-text-0);font-weight:400;text-overflow:ellipsis}.semi-chat-chatBox-action{visibility:hidden;display:flex;align-items:center;position:relative;column-gap:10px;margin-left:10px;margin-right:10px}.semi-chat-chatBox-action-btn.semi-button{height:fit-content;width:fit-content}.semi-chat-chatBox-action-btn.semi-button.semi-button-with-icon-only{padding:0}.semi-chat-chatBox-action-icon-flip{transform:scaleY(-1)}.semi-chat-chatBox-action-show{visibility:visible}.semi-chat-chatBox-action-delete-wrap{display:inline-flex}.semi-chat-chatBox-action.semi-chat-chatBox-action-hidden,.semi-chat-chatBox-action:hover.semi-chat-chatBox-action-hidden{visibility:hidden}.semi-chat-chatBox-action .semi-button-borderless:not(.semi-button-disabled):hover{background-color:#0000}.semi-chat-chatBox-action .semi-button-tertiary.semi-button-borderless{color:var(--semi-color-text-2)}.semi-chat-chatBox-action .semi-button-tertiary.semi-button-borderless:hover{color:var(--semi-color-text-0)}.semi-chat-chatBox-wrap{display:flex;flex-direction:column;align-items:flex-start;position:relative;row-gap:8px;max-width:calc(100% - 36px)}.semi-chat-chatBox-content-bubble,.semi-chat-chatBox-content-userBubble{padding:8px 12px;border-radius:var(--semi-border-radius-large);background-color:var(--semi-color-fill-0);max-width:100%;box-sizing:border-box}.semi-chat-chatBox-content code{white-space:pre-wrap}.semi-chat-chatBox-content .semi-typography{color:var(--semi-color-text-0)}.semi-chat-chatBox-content .semi-chat-attachment-file{background:var(--semi-color-fill-2)}.semi-chat-chatBox-content .semi-chat-attachment-file,.semi-chat-chatBox-content .semi-chat-attachment-img{margin-top:4px;margin-bottom:4px;margin-right:4px}.semi-chat-chatBox-content-user{background:var(--semi-color-primary);color:var(--semi-color-white)}.semi-chat-chatBox-content-user .semi-chat-attachment-file{background:var(--semi-color-bg-0)}.semi-chat-chatBox-content-user .semi-typography,.semi-chat-chatBox-content-user .semi-typography code,.semi-chat-chatBox-content-user .semi-markdownRender ul,.semi-chat-chatBox-content-user .semi-markdownRender li,.semi-chat-chatBox-content-user .semi-typography a,.semi-chat-chatBox-content-user .semi-typography a:visited,.semi-chat-chatBox-content-user .semi-typography a:hover{color:var(--semi-color-white)}.semi-chat-chatBox-content-error{background:var(--semi-color-danger-hover)}.semi-chat-chatBox-content-error .semi-typography{color:var(--semi-color-white)}.semi-chat-chatBox-content-loading{display:flex;align-items:baseline}.semi-chat-chatBox-content-loading-item{border-radius:50%;height:8px;width:8px;background-color:var(--semi-color-text-0);margin:6px 18px;overflow:visible;position:relative;animation:semi-chat-loading-flashing .8s infinite alternate;animation-delay:-.2s;animation-timing-function:ease}.semi-chat-chatBox-content-loading-item:before{content:"";border-radius:50%;height:8px;width:8px;background-color:var(--semi-color-text-0);position:absolute;top:0;left:-15px;animation:semi-chat-loading-flashing .8s infinite alternate;animation-timing-function:ease;animation-delay:-.4s}.semi-chat-chatBox-content-loading-item:after{content:"";border-radius:50%;height:8px;width:8px;background-color:var(--semi-color-text-0);position:absolute;top:0;left:15px;animation:semi-chat-loading-flashing .8s infinite alternate;animation-delay:0s;animation-timing-function:ease}.semi-chat-chatBox-content pre{background-color:#0000}.semi-chat-chatBox-content-code{border-radius:var(--semi-border-radius-large);overflow:hidden}.semi-chat-chatBox-content-code .semi-codeHighlight pre{word-break:break-all;white-space:pre-wrap}.semi-chat-chatBox-content-code-topSlot{display:flex;justify-content:space-between;background-color:rgba(var(--semi-grey-4),1);align-items:center;padding:5px 8px;color:rgba(var(--semi-white),1);font-size:12px}.semi-chat-chatBox-content-code-topSlot-copy{min-width:150px;display:flex;justify-content:flex-end}.semi-chat-chatBox-content-code-topSlot-copy-wrapper{display:flex;align-items:center;column-gap:5px;cursor:pointer;background:#0000;border:none;color:rgba(var(--semi-white),1);line-height:16px;padding:5px;border-radius:var(--semi-border-radius-large)}.semi-chat-chatBox-content-code-topSlot-toCopy:hover{background:rgba(var(--semi-grey-5),1)}.semi-chat-chatBox-content-code .semi-codeHighlight-defaultTheme pre[class*=language-]{margin:0;background:var(--semi-color-bg-0)}.semi-chat-inputBox{padding:8px 16px}.semi-chat-inputBox-clearButton.semi-button{border-radius:50%;width:48px;height:48px;margin-top:4px;margin-bottom:4px}.semi-chat-inputBox-clearButton.semi-button .semi-icon{font-size:30px}.semi-chat-inputBox-clearButton.semi-button.semi-button-primary.semi-button-borderless{color:var(--semi-color-text-2)}.semi-chat-inputBox-upload .semi-upload-file-list{display:none}.semi-chat-inputBox-uploadButton.semi-button{width:32px;height:32px}.semi-chat-inputBox-uploadButton.semi-button.semi-button-primary.semi-button-borderless{color:var(--semi-color-text-0)}.semi-chat-inputBox-sendButton.semi-button{width:32px;height:32px}.semi-chat-inputBox-sendButton.semi-button-icon{transform:rotate(45deg)}.semi-chat-inputBox-sendButton.semi-button.semi-button-disabled.semi-button-borderless{color:var(--semi-color-primary-disabled)}.semi-chat-inputBox-inner{display:flex;flex-direction:row;align-items:flex-end;column-gap:4px}.semi-chat-inputBox-container{display:flex;flex-direction:row;flex-grow:1;border-radius:16px;padding:11px;border:1px solid var(--semi-color-border);align-items:flex-end}.semi-chat-inputBox-inputArea{flex-grow:1;display:flex;flex-direction:column}.semi-chat-inputBox-textarea{flex-grow:1}.semi-chat-inputBox-textarea.semi-input-textarea-wrapper,.semi-chat-inputBox-textarea.semi-input-textarea-wrapper:hover,.semi-chat-inputBox-textarea.semi-input-textarea-wrapper:active{border:none;background-color:#0000}.semi-chat-attachment{display:flex;flex-direction:row;flex-wrap:wrap;column-gap:10px;row-gap:5px;margin-left:12px;margin-right:12px}.semi-chat-attachment-item{position:relative}.semi-chat-attachment-item:hover .semi-chat-inputBox-attachment-clear{visibility:visible}.semi-chat-attachment-img{border-radius:var(--semi-border-radius-medium);vertical-align:top}.semi-chat-attachment-img img{object-fit:cover}.semi-chat-attachment a{text-decoration:none;color:inherit}.semi-chat-attachment-clear{position:absolute;top:-8px;right:-8px;color:var(--semi-color-text-2)}.semi-chat-attachment-process.semi-progress-circle,.semi-chat-attachment-fail{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.semi-chat-attachment-fail{color:var(--semi-color-danger)}.semi-chat-attachment-file{display:inline-flex;flex-direction:row;align-items:center;height:50px;column-gap:5px;padding:5px;border-radius:var(--semi-border-radius-medium);background:var(--semi-color-fill-0);text-decoration:none}.semi-chat-attachment-file-icon{color:var(--semi-color-text-2)}.semi-chat-attachment-file-info{display:flex;flex-direction:column}.semi-chat-attachment-file-title{font-size:16px;color:var(--semi-color-text-0);max-width:90px;text-overflow:ellipsis;overflow:hidden}.semi-chat-attachment-file-metadata{font-size:14px;color:var(--semi-color-text-2)}.semi-chat-attachment-file-type{text-transform:uppercase}.semi-chat .semi-typography a.semi-chat-attachment-file{display:flex}.semi-chat .semi-typography a.semi-chat-attachment-file .semi-chat-attachment-file-title{color:var(--semi-color-text-0)}.semi-chat-hints{display:flex;flex-direction:column;row-gap:10px;margin-top:12px;margin-bottom:12px;margin-left:34px}.semi-chat-hint-item{cursor:pointer;display:flex;flex-direction:row;column-gap:20px;width:fit-content;background:#0000;align-items:center;border:1px solid var(--semi-color-border);padding:8px 12px;border-radius:var(--semi-border-radius-large)}.semi-chat-hint-item:hover{background-color:var(--semi-color-fill-0)}.semi-chat-hint-content{font-size:14px;color:var(--semi-color-text-1)}.semi-chat-hint-icon{color:var(--semi-color-text-2)}@keyframes semi-chat-loading-flashing{0%{opacity:1}50%{opacity:.1}to{opacity:1}}.semi-rtl .semi-chat,.semi-portal-rtl .semi-chat{direction:rtl}.semi-rtl .semi-chat-hint-icon,.semi-portal-rtl .semi-chat-hint-icon{transform:scaleX(-1)}.semi-rtl .semi-chat-inputBox-sendButton-icon,.semi-portal-rtl .semi-chat-inputBox-sendButton-icon{transform:rotate(225deg)}.semi-rtl .semi-chat-chatBox-action-icon-redo,.semi-portal-rtl .semi-chat-chatBox-action-icon-redo{transform:scaleX(-1)}.semi-checkbox{box-sizing:border-box;position:relative;display:flex;align-items:flex-start;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none));column-gap:8px}.semi-checkbox input[type=checkbox]{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;opacity:0}.semi-checkbox-content{flex:1;display:flex;flex-direction:column;row-gap:4px}.semi-checkbox-addon{display:flex;flex:1;align-items:center;color:var(--semi-color-text-0);line-height:20px;-webkit-user-select:none;user-select:none}.semi-checkbox:hover .semi-checkbox-inner-display{background:var(--semi-color-fill-0);box-shadow:inset 0 0 0 1px var(--semi-color-focus-border)}.semi-checkbox:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-hover);box-shadow:none}.semi-checkbox:active .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-active);box-shadow:none}.semi-checkbox.semi-checkbox-disabled:hover .semi-checkbox-inner-display,.semi-checkbox.semi-checkbox-disabled:active .semi-checkbox-inner-display{background:var(--semi-color-disabled-fill);box-shadow:inset 0 0 0 1px var(--semi-color-border)}.semi-checkbox.semi-checkbox-disabled:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display,.semi-checkbox.semi-checkbox-disabled:active .semi-checkbox-inner-checked .semi-checkbox-inner-display{color:var(--semi-color-white);background:var(--semi-color-primary-disabled);box-shadow:none}.semi-checkbox-inner{position:relative;display:flex;align-items:center;width:16px;height:20px;-webkit-user-select:none;user-select:none;cursor:pointer}.semi-checkbox-inner-display{box-sizing:border-box;position:relative;width:16px;height:16px;margin:0;background:#0000;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);box-shadow:inset 0 0 0 1px var(--semi-color-text-3);border-radius:var(--semi-border-radius-extra-small)}.semi-checkbox-inner-display .semi-icon{font-size:16px}.semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary);color:var(--semi-color-white);box-shadow:inset 0 0 0 1px var(--semi-color-primary);border-radius:var(--semi-border-radius-extra-small)}.semi-checkbox-inner-checked>.semi-checkbox-addon{color:var(--semi-color-text-0)}.semi-checkbox:hover .semi-checkbox-inner-display{background:var(--semi-color-fill-0)}.semi-checkbox:hover.semi-checkbox-indeterminate .semi-checkbox-inner-display{background:var(--semi-color-primary-hover);box-shadow:none;color:var(--semi-color-white)}.semi-checkbox:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-hover);border-color:var(--semi-color-primary-hover);color:var(--semi-color-white)}.semi-checkbox:hover.semi-checkbox-cardType.semi-checkbox-unChecked.semi-checkbox-cardType_enable .semi-checkbox-inner-display{background:var(--semi-color-white)}.semi-checkbox:active .semi-checkbox-inner-display{background:var(--semi-color-fill-1)}.semi-checkbox:active.semi-checkbox-indeterminate .semi-checkbox-inner-display{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active);color:var(--semi-color-white);box-shadow:none}.semi-checkbox:active .semi-checkbox-inner-checked .semi-checkbox-inner-display{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active);color:var(--semi-color-white)}.semi-checkbox:active.semi-checkbox-cardType.semi-checkbox-unChecked.semi-checkbox-cardType_enable .semi-checkbox-inner-display{background:var(--semi-color-white)}.semi-checkbox-cardType{flex-wrap:nowrap;align-items:flex-start;border-radius:3px;padding:12px 16px;background:#0000;border:1px solid rgba(0,0,0,0)}.semi-checkbox-cardType .semi-checkbox-inner{position:relative;flex-shrink:0}.semi-checkbox-cardType .semi-checkbox-inner-display{background:var(--semi-color-white)}.semi-checkbox-cardType .semi-checkbox-inner-pureCardType{opacity:0;width:0}.semi-checkbox-cardType .semi-checkbox-addon{font-weight:600;font-size:14px;line-height:20px;color:var(--semi-color-text-0)}.semi-checkbox-cardType .semi-checkbox-extra{font-weight:400;font-size:14px;line-height:20px;color:var(--semi-color-text-2)}.semi-checkbox-cardType .semi-checkbox-extra.semi-checkbox-cardType_extra_noChildren{margin-top:0}.semi-checkbox-cardType:hover{background:var(--semi-color-fill-0)}.semi-checkbox-cardType:active{background:var(--semi-color-fill-1)}.semi-checkbox-cardType_checked{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary)}.semi-checkbox-cardType_checked:hover{background:var(--semi-color-primary-light-default);border-color:var(--semi-color-primary-hover)}.semi-checkbox-cardType_checked:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{box-shadow:none}.semi-checkbox-cardType_checked:active{background:var(--semi-color-primary-light-default);border-color:var(--semi-color-primary-active)}.semi-checkbox-cardType_disabled:active,.semi-checkbox-cardType_disabled:hover{background:#0000}.semi-checkbox-cardType_checked_disabled.semi-checkbox-cardType{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary-disabled)}.semi-checkbox-cardType_checked_disabled.semi-checkbox-cardType:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display{box-shadow:none}.semi-checkbox-indeterminate .semi-checkbox-inner-display,.semi-checkbox-checked .semi-checkbox-inner-display{background:var(--semi-color-primary);color:var(--semi-color-white);box-shadow:inset 0 0 0 1px var(--semi-color-primary);border-radius:var(--semi-border-radius-extra-small)}.semi-checkbox-indeterminate .semi-checkbox-inner-display:hover,.semi-checkbox-checked .semi-checkbox-inner-display:hover{background:var(--semi-color-primary-hover);border-color:var(--semi-color-primary-hover);color:var(--semi-color-white)}.semi-checkbox-indeterminate .semi-checkbox-inner-display:active,.semi-checkbox-checked .semi-checkbox-inner-display:active{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active);color:var(--semi-color-white)}.semi-checkbox-indeterminate .semi-checkbox-inner-addon,.semi-checkbox-checked .semi-checkbox-inner-addon{color:var(--semi-color-text-0)}.semi-checkbox-disabled,.semi-checkbox-disabled .semi-checkbox-inner{cursor:not-allowed}.semi-checkbox-disabled .semi-checkbox-inner-display{color:var(--semi-color-white);background:var(--semi-color-disabled-fill);box-shadow:inset 0 0 0 1px var(--semi-color-border)}.semi-checkbox-disabled .semi-checkbox-inner-display:hover{color:var(--semi-color-white);background:#0000}.semi-checkbox-disabled .semi-checkbox-inner-checked{color:var(--semi-color-white)}.semi-checkbox-disabled .semi-checkbox-inner-checked .semi-checkbox-inner-display{opacity:.75;background:var(--semi-color-primary-disabled);box-shadow:inset 0 0 0 1px var(--semi-color-primary-disabled)}.semi-checkbox-disabled .semi-checkbox-inner-checked .semi-checkbox-inner-display:hover{color:var(--semi-color-white);background:var(--semi-color-primary-disabled)}.semi-checkbox-disabled .semi-checkbox-addon,.semi-checkbox-disabled .semi-checkbox-extra{color:var(--semi-color-disabled-text)}.semi-checkbox.semi-checkbox-disabled.semi-checkbox-indeterminate .semi-checkbox-inner-display{opacity:.75;background:var(--semi-color-primary-disabled);box-shadow:inset 0 0 0 1px var(--semi-color-primary-disabled);color:var(--semi-color-white)}.semi-checkbox-extra{flex-shrink:0;flex-grow:1;flex-basis:100%;box-sizing:border-box;color:var(--semi-color-text-2)}.semi-checkbox-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-checkbox-focus-border{box-shadow:inset 0 0 0 1px var(--semi-color-focus-border)}.semi-checkboxGroup{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:14px}.semi-checkboxGroup .semi-checkbox.semi-checkbox-vertical{margin-bottom:16px}.semi-checkboxGroup-horizontal{display:flex;flex-wrap:wrap;gap:16px}.semi-checkboxGroup-horizontal .semi-checkbox{display:inline-flex}.semi-checkboxGroup-vertical{display:flex;flex-direction:column;row-gap:12px}.semi-checkboxGroup-vertical-cardType{row-gap:16px}.semi-checkboxGroup-vertical-pureCardType .semi-checkbox{column-gap:0}.semi-rtl .semi-checkbox,.semi-portal-rtl .semi-checkbox{direction:rtl}.semi-rtl .semi-checkbox input[type=checkbox],.semi-portal-rtl .semi-checkbox input[type=checkbox]{left:auto;right:0}.semi-rtl .semi-checkboxGroup,.semi-portal-rtl .semi-checkboxGroup{direction:rtl}.semi-codeHighlight-defaultTheme pre[class*=language-],.semi-codeHighlight-defaultTheme code[class*=language-]{color:var(--semi-color-text-0);font-size:13px;text-shadow:none;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,Liberation Mono,DejaVu Sans Mono,Courier New,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-moz-hyphens:none;-webkit-hyphens:none;hyphens:none}.semi-codeHighlight-defaultTheme pre[class*=language-]::selection,.semi-codeHighlight-defaultTheme code[class*=language-]::selection,.semi-codeHighlight-defaultTheme pre[class*=language-]::-moz-selection,.semi-codeHighlight-defaultTheme code[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}.semi-codeHighlight-defaultTheme pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background:var(--semi-color-tertiary-light-default)}.semi-codeHighlight-defaultTheme :not(pre)>code[class*=language-]{display:block;border-radius:.3em;color:#895fe2;background:#f9f7f9}.semi-codeHighlight-defaultTheme pre .namespace{opacity:.7}.semi-codeHighlight-defaultTheme pre .token.comment,.semi-codeHighlight-defaultTheme pre .token.prolog,.semi-codeHighlight-defaultTheme pre .token.doctype,.semi-codeHighlight-defaultTheme pre .token.cdata{color:#6b7075}.semi-codeHighlight-defaultTheme pre .token.punctuation{color:rgba(var(--semi-grey-8),1)}.semi-codeHighlight-defaultTheme pre .token.property,.semi-codeHighlight-defaultTheme pre .token.tag,.semi-codeHighlight-defaultTheme pre .token.boolean,.semi-codeHighlight-defaultTheme pre .token.number,.semi-codeHighlight-defaultTheme pre .token.constant,.semi-codeHighlight-defaultTheme pre .token.symbol,.semi-codeHighlight-defaultTheme pre .token.deleted{color:rgba(var(--semi-purple-6),1)}.semi-codeHighlight-defaultTheme pre .token.selector,.semi-codeHighlight-defaultTheme pre .token.attr-name,.semi-codeHighlight-defaultTheme pre .token.string,.semi-codeHighlight-defaultTheme pre .token.char,.semi-codeHighlight-defaultTheme pre .token.builtin,.semi-codeHighlight-defaultTheme pre .token.inserted{color:rgba(var(--semi-green-6),1)}.semi-codeHighlight-defaultTheme pre .token.operator,.semi-codeHighlight-defaultTheme pre .token.entity,.semi-codeHighlight-defaultTheme pre .token.url,.semi-codeHighlight-defaultTheme pre .language-css .token.string,.semi-codeHighlight-defaultTheme pre .style .token.string{color:rgba(var(--semi-grey-8),1)}.semi-codeHighlight-defaultTheme pre .token.atrule,.semi-codeHighlight-defaultTheme pre .token.attr-value,.semi-codeHighlight-defaultTheme pre .token.keyword{color:rgba(var(--semi-purple-6),1)}.semi-codeHighlight-defaultTheme pre .token.function{color:rgba(var(--semi-violet-6),1)}.semi-codeHighlight-defaultTheme pre .token.regex,.semi-codeHighlight-defaultTheme pre .token.important,.semi-codeHighlight-defaultTheme pre .token.variable{color:#d0955f}.semi-codeHighlight-defaultTheme pre .token.important,.semi-codeHighlight-defaultTheme pre .token.bold{font-weight:700}.semi-codeHighlight-defaultTheme pre .token.italic{font-style:italic}.semi-codeHighlight-defaultTheme pre .token.entity{cursor:help}.semi-codeHighlight-defaultTheme pre[data-line]{position:relative}.semi-codeHighlight-defaultTheme pre[class*=language-]>code[class*=language-]{position:relative;z-index:1}.semi-codeHighlight-defaultTheme .line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:#ebf4ff;box-shadow:inset 5px 0 #0064d2;z-index:0;pointer-events:none;line-height:inherit;white-space:pre}.semi-codeHighlight pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.semi-codeHighlight pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.semi-codeHighlight .line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.semi-codeHighlight .line-numbers-rows>span{display:block;counter-increment:linenumber}.semi-codeHighlight .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.semi-collapse-header-disabled:hover{background-color:#0000}.semi-colorPicker-colorChooseArea{box-shadow:inset 0 0 0 1px #0000000d;position:relative;flex-grow:1;border-color:#0000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,#0000),linear-gradient(to right,#fff,#fff0)}.semi-colorPicker-handle{border-radius:var(--semi-border-radius-full);border:2px solid var(--semi-color-white);position:absolute;box-sizing:border-box;cursor:grab}.semi-colorPicker-alphaSlider{position:relative;cursor:pointer;margin-top:6px;border-radius:var(--semi-border-radius-full);background:url('data:image/svg+xml,')}.semi-colorPicker-alphaSlider .semi-colorPicker-alphaSliderInner{width:100%;height:100%;border-radius:4px}.semi-colorPicker-alphaSlider .semi-colorPicker-alphaHandle{background:url('data:image/svg+xml,');border-radius:var(--semi-border-radius-full);border:2px solid var(--semi-color-white);position:absolute;box-sizing:border-box;cursor:grab}.semi-colorPicker-colorSlider{position:relative;cursor:pointer;margin-top:6px;border-radius:var(--semi-border-radius-full);background:linear-gradient(to right,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.semi-colorPicker-dataPart{margin-top:8px;display:flex;align-items:center}.semi-colorPicker-dataPart .semi-colorPicker-colorDemoBlock{border-radius:4px}.semi-colorPicker-dataPart .semi-colorPicker-inputGroup{margin-left:4px;width:100%;flex:1;flex-wrap:nowrap}.semi-colorPicker-dataPart .semi-colorPicker-inputGroup .semi-colorPicker-colorPickerInput{flex:1}.semi-colorPicker-dataPart .semi-colorPicker-inputGroup .semi-colorPicker-colorPickerInputNumber{width:58px}.semi-colorPicker-dataPart .semi-colorPicker-inputGroup .semi-colorPicker-colorPickerInputNumber .semi-colorPicker-inputNumberSuffix{font-size:14px;padding:4px}.semi-colorPicker-dataPart .semi-colorPicker-formatSelect{width:80px}.semi-colorPicker-popover{padding:8px}.semi-colorPicker-popover-defaultChildren{width:24px;height:24px;border-radius:4px;cursor:pointer}.semi-cropper{position:relative}.semi-cropper img{max-width:none}.semi-cropper-img{position:absolute;-webkit-user-select:none;user-select:none}.semi-cropper-img-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden}.semi-cropper-mask{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--semi-color-overlay-bg);cursor:move}.semi-cropper-box{position:absolute;outline:1px solid var(--semi-color-primary)}.semi-cropper-box-corner{position:absolute;background:var(--semi-color-primary);width:10px;height:10px;z-index:1}.semi-cropper-box-corner-tl{top:-5px;left:-5px;cursor:nwse-resize}.semi-cropper-box-corner-tr{top:-5px;right:-5px;cursor:nesw-resize}.semi-cropper-box-corner-tm{top:-5px;left:50%;margin-left:-5px;cursor:ns-resize}.semi-cropper-box-corner-ml{top:50%;left:-5px;margin-top:-5px;cursor:ew-resize}.semi-cropper-box-corner-mr{top:50%;right:-5px;margin-top:-5px;cursor:ew-resize}.semi-cropper-box-corner-bl{bottom:-5px;left:-5px;cursor:nesw-resize}.semi-cropper-box-corner-bm{bottom:-5px;left:50%;margin-left:-5px;cursor:ns-resize}.semi-cropper-box-corner-br{bottom:-5px;right:-5px;cursor:nwse-resize}.semi-cropper-view-box{position:absolute;overflow:hidden;cursor:move;top:0;left:0;right:0;bottom:0}.semi-cropper-view-box-round{border-radius:50%}.semi-cropper-view-img{-webkit-user-select:none;user-select:none}.semi-datepicker{box-sizing:border-box;display:inline-block}.semi-datepicker-container{display:flex}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-item{-ms-overflow-style:none;scrollbar-width:none}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-item::-webkit-scrollbar{display:none;width:0;height:0}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-list-outer{-ms-overflow-style:none;scrollbar-width:none}.semi-datepicker .semi-scrolllist-body .semi-scrolllist-list-outer::-webkit-scrollbar{display:none;width:0;height:0}.semi-datepicker-month-grid{-webkit-user-select:none;user-select:none;display:flex}.semi-datepicker-month-grid-left,.semi-datepicker-month-grid-right{position:relative;padding:0;display:inline-flex;flex-direction:column;justify-content:flex-start}.semi-datepicker-month-grid[x-type=date] .semi-datepicker-yam,.semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-yam{height:100%}.semi-datepicker-month-grid[x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-yam{height:calc(100% - 54px)}.semi-datepicker-month-grid .semi-datepicker-yam-showing{min-height:378px;min-width:284px}.semi-datepicker-month-grid[x-type=date] .semi-datepicker-yam-showing{min-height:325px}.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=year],.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=year],.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=time],.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=time]{min-height:317px}.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-navigation{padding-top:8px;padding-bottom:8px}.semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-tpk{min-height:100%}.semi-datepicker-month-grid[x-insetinput=true][x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-month-grid[x-insetinput=true][x-type=dateTimeRange] .semi-datepicker-yam{height:100%}.semi-datepicker-month-grid[x-preset-position=left][x-insetinput=false] .semi-datepicker-month,.semi-datepicker-month-grid[x-preset-position=right][x-insetinput=false] .semi-datepicker-month{height:253px}.semi-datepicker-month-grid .semi-datepicker-yearmonth-header{background:var(--semi-color-bg-3);padding:12px 16px;border-bottom:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium) var(--semi-border-radius-medium) 0 0;display:flex;align-items:center}.semi-datepicker-month-grid .semi-scrolllist{background:var(--semi-color-bg-3);position:relative;box-shadow:none;height:auto;width:100%;height:100%;overflow:hidden;flex:1}.semi-datepicker-month-grid .semi-scrolllist-header,.semi-datepicker-month-grid .semi-scrolllist-body{box-sizing:border-box;width:100%}.semi-datepicker-month-grid .semi-scrolllist-header{border-bottom:1px solid var(--semi-color-border);padding:16px}.semi-datepicker-month-grid .semi-scrolllist-body{height:100%;overflow:hidden;padding:0;flex:1}.semi-datepicker-month-grid .semi-scrolllist-line{display:none}.semi-datepicker-month-grid .semi-scrolllist-header-title{padding:0;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-height:24px;line-height:24px}.semi-datepicker-month-grid[x-panel-yearandmonth-open-type=left] .semi-datepicker-weeks,.semi-datepicker-month-grid[x-panel-yearandmonth-open-type=right] .semi-datepicker-weeks{min-height:216px}.semi-datepicker-panel-yam{max-width:484px}.semi-datepicker-panel-yam[x-type=monthRange]{max-width:584px}.semi-datepicker-panel-yam .semi-datepicker-yearmonth-body{display:flex}.semi-datepicker-panel-yam .semi-datepicker-yearmonth-body .semi-scrolllist:nth-child(2){border-left:1px solid var(--semi-color-border)}.semi-datepicker-panel-yam .semi-scrolllist{box-shadow:none;height:266px}.semi-datepicker-panel-yam .semi-scrolllist-list-outer>ul>li{min-width:64px}.semi-datepicker-panel-yam .semi-scrolllist-item>ul>li{min-width:82px}.semi-datepicker-panel-yam .semi-scrolllist-body{padding:0;overflow:hidden}.semi-datepicker-panel-yam .semi-scrolllist-body .semi-scrolllist-item-wheel:not(#neverExistElement){border:none}.semi-datepicker-footer{padding-top:10px;padding-right:8px;padding-bottom:10px;text-align:right;background-color:var(--semi-color-fill-0)}.semi-datepicker-footer .semi-button:first-of-type{margin-right:12px}.semi-datepicker-footer .semi-button:nth-of-type(2){margin-right:8px}.semi-datepicker-yam{position:absolute;top:0;width:100%;display:flex;flex-direction:column;box-sizing:border-box}.semi-datepicker-tpk{position:absolute;top:0;height:calc(100% - 54px);width:100%;display:flex;flex-direction:column}.semi-datepicker-tpk .semi-datepicker-time{height:100%}.semi-datepicker-navigation{display:flex;align-items:center;box-sizing:content-box;height:32px;padding:12px 16px}.semi-datepicker-navigation-left,.semi-datepicker-navigation-right{width:32px;height:32px;display:flex;justify-content:center;align-items:center}.semi-datepicker-navigation .semi-button{color:var(--semi-color-text-2);min-width:32px}.semi-datepicker-navigation-month{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;flex-grow:1;text-align:center;font-weight:600;color:var(--semi-color-text-0)}.semi-datepicker-navigation-month .semi-button{color:var(--semi-color-text-0)}.semi-datepicker-month{width:252px;box-sizing:content-box;padding:0 16px 16px}.semi-datepicker-weekday{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;color:var(--semi-color-text-2);border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-weekday-item{width:36px;height:36px;line-height:36px;text-align:center;display:inline-block}.semi-datepicker-weeks{color:var(--semi-color-text-0)}.semi-datepicker-week{display:flex;align-items:center}.semi-datepicker-day{box-sizing:border-box;display:inline-block;width:36px;height:36px;display:flex;justify-content:center;align-items:center;cursor:pointer}.semi-datepicker-day-main{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin:0 auto;box-sizing:border-box;border-radius:var(--semi-border-radius-small)}.semi-datepicker-day-main:hover{background-color:var(--semi-color-fill-0)}.semi-datepicker-day-main:active{background-color:var(--semi-color-fill-1)}.semi-datepicker-day-today .semi-datepicker-day-main{color:var(--semi-color-primary);background-color:var(--semi-color-fill-0);font-weight:600}.semi-datepicker-day-today.semi-datepicker-day-disabled .semi-datepicker-day-main{color:var(--semi-color-primary-disabled)}.semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-day-inhover .semi-datepicker-day-main,.semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main,.semi-datepicker-day-hoverday-around-singleselected .semi-datepicker-day-main{border-radius:0;margin-left:0;margin-right:0;width:36px}.semi-datepicker-day-selected .semi-datepicker-day-main,.semi-datepicker-day-selected-start.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-start.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small)}.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-datepicker-day-hoverday-beforerange .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-datepicker-day-hoverday-afterrange .semi-datepicker-day-main{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{width:34px;margin-left:2px;margin-right:0;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{width:34px;margin-right:2px;margin-left:0;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-datepicker-day-hoverday-inrange .semi-datepicker-day-main{border-radius:0}.semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{background-color:var(--semi-color-fill-0)}.semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-day-hoverday-offset .semi-datepicker-day-main{background-color:var(--semi-color-fill-1)}.semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-day-inhover .semi-datepicker-day-main{background-color:var(--semi-color-primary-light-default)}.semi-datepicker-day-hoverday-inrange .semi-datepicker-day-main,.semi-datepicker-day-hoverday-beforerange .semi-datepicker-day-main,.semi-datepicker-day-hoverday-afterrange .semi-datepicker-day-main,.semi-datepicker-day-hoverday-around-singleselected .semi-datepicker-day-main{background-color:var(--semi-color-primary-light-active)}.semi-datepicker-day-selected .semi-datepicker-day-main,.semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-day-selected-end .semi-datepicker-day-main{background-color:var(--semi-color-primary);color:var(--semi-color-white)}.semi-datepicker-day-selected .semi-datepicker-day-main:hover,.semi-datepicker-day-selected-start .semi-datepicker-day-main:hover,.semi-datepicker-day-selected-end .semi-datepicker-day-main:hover{background-color:var(--semi-color-primary)}.semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main{background-color:var(--semi-color-primary-light-hover)}.semi-datepicker-day-selected-start-afterhover .semi-datepicker-day-main,.semi-datepicker-day-selected-end-beforehover .semi-datepicker-day-main{border:1px solid var(--semi-color-primary-active)}.semi-datepicker-day-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-datepicker-day-disabled .semi-datepicker-day-main:hover,.semi-datepicker-day-disabled .semi-datepicker-day-main:active{background-color:#0000}.semi-datepicker-day-disabled.semi-datepicker-day-selected .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-inhover .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-hoverday-offset .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-datepicker-day-disabled.semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main{background-color:var(--semi-color-disabled-fill);color:var(--semi-color-disabled-text)}.semi-datepicker-switch{text-align:center;display:flex;border-top:1px solid var(--semi-color-border);margin-top:auto}.semi-datepicker-switch-date,.semi-datepicker-switch-time{width:50%;cursor:pointer;padding-top:16px;padding-bottom:16px;display:flex;justify-content:center;align-items:center;color:var(--semi-color-text-2)}.semi-datepicker-switch-date:not(.semi-datepicker-switch-time-disabled):hover,.semi-datepicker-switch-time:not(.semi-datepicker-switch-time-disabled):hover{background-color:var(--semi-color-fill-0)}.semi-datepicker-switch-date-active,.semi-datepicker-switch-time-active{color:var(--semi-color-text-0);font-weight:600;cursor:auto}.semi-datepicker-switch-date-active:hover,.semi-datepicker-switch-time-active:hover{background-color:inherit}.semi-datepicker-switch-date-disabled,.semi-datepicker-switch-time-disabled{cursor:not-allowed}.semi-datepicker-switch-text{padding-left:8px}.semi-datepicker-time .semi-jumperlist{box-shadow:none;border-radius:0}.semi-datepicker-quick-control{box-sizing:border-box;background-color:#0000}.semi-datepicker-quick-control-header{padding:18px 12px 0;font-weight:600}.semi-datepicker-quick-control-left{border-right:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-right{border-left:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-top{border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-bottom{border-top:1px solid var(--semi-color-border)}.semi-datepicker-quick-control-left-content-wrapper,.semi-datepicker-quick-control-right-content-wrapper{max-width:200px;margin-top:14px;overflow-y:auto}.semi-datepicker-quick-control-top-content-wrapper,.semi-datepicker-quick-control-bottom-content-wrapper{overflow-y:auto;max-height:100px}.semi-datepicker-quick-control-left-content,.semi-datepicker-quick-control-right-content{box-sizing:border-box;display:grid;align-content:flex-start;grid-gap:8px;grid-template-columns:repeat(2,minmax(76.5px,84px));padding:0 12px 12px}.semi-datepicker-quick-control-left-content-item,.semi-datepicker-quick-control-right-content-item{max-width:84px}.semi-datepicker-quick-control-left-content-item-ellipsis,.semi-datepicker-quick-control-right-content-item-ellipsis{width:68px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-top-content,.semi-datepicker-quick-control-bottom-content{display:grid;grid-gap:8px;grid-template-columns:repeat(3,minmax(70.924px,75.924px));align-content:flex-start;padding:8px 20px}.semi-datepicker-quick-control-top-content-item,.semi-datepicker-quick-control-bottom-content-item{max-width:75.924px}.semi-datepicker-quick-control-top-content-item-ellipsis,.semi-datepicker-quick-control-bottom-content-item-ellipsis{width:59.924px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-top-range-content,.semi-datepicker-quick-control-bottom-range-content{box-sizing:border-box;display:grid;align-content:flex-start;grid-template-columns:repeat(5,minmax(96.2px,99.2px));grid-gap:8px;padding:8px 20px}.semi-datepicker-quick-control-top-range-content-item,.semi-datepicker-quick-control-bottom-range-content-item{max-width:99.2px}.semi-datepicker-quick-control-top-range-content-item-ellipsis,.semi-datepicker-quick-control-bottom-range-content-item-ellipsis{width:83.2px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-top-month-content,.semi-datepicker-quick-control-bottom-month-content{box-sizing:border-box;display:grid;grid-template-columns:repeat(2,minmax(51px,58.5px));grid-gap:8px;align-content:flex-start;padding:8px 20px}.semi-datepicker-quick-control-top-month-content-item,.semi-datepicker-quick-control-bottom-month-content-item{max-width:58.5px}.semi-datepicker-quick-control-top-month-content-item-ellipsis,.semi-datepicker-quick-control-bottom-month-content-item-ellipsis{max-width:42.5px;color:var(--semi-color-primary)}.semi-datepicker-quick-control-month{max-width:284px}.semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:258px}.semi-datepicker-quick-control-month .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-month .semi-datepicker-quick-control-left-content-wrapper{max-height:214px}.semi-datepicker-quick-control-date{max-width:284px}.semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-date .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-date .semi-datepicker-quick-control-left-content-wrapper{max-height:273px}.semi-datepicker-quick-control-dateTime{max-width:284px}.semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-left-content-wrapper{max-height:326px}.semi-datepicker-quick-control-dateRange{max-width:568px}.semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-left-content-wrapper{max-height:273px}.semi-datepicker-quick-control-dateTimeRange{max-width:568px}.semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:309px}.semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-left-content-wrapper{max-height:326px}.semi-datepicker-topSlot{border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-leftSlot{border-right:1px solid var(--semi-color-border)}.semi-datepicker-rightSlot{border-left:1px solid var(--semi-color-border)}.semi-datepicker-bottomSlot{border-top:1px solid var(--semi-color-border)}.semi-datepicker .semi-popover-trigger{width:100%}.semi-datepicker .semi-popover-trigger .semi-input-wrapper{font-size:13px}.semi-datepicker .semi-popover-trigger .semi-input-suffix{color:var(--semi-color-primary)}.semi-datepicker .semi-datepicker-input-readonly{cursor:pointer}.semi-datepicker-inset-input-wrapper{display:flex;flex-wrap:nowrap;justify-content:space-between;box-sizing:border-box;column-gap:8px;padding:12px 16px 0;width:284px}.semi-datepicker-inset-input-wrapper[x-type=dateRange],.semi-datepicker-inset-input-wrapper[x-type=dateTimeRange]{width:568px}.semi-datepicker-inset-input-wrapper[x-type=month]{width:165px}.semi-datepicker-inset-input-wrapper[x-type=monthRange]{width:331px}.semi-datepicker-inset-input-wrapper .semi-input-wrapper{flex:1;flex-shrink:0}.semi-datepicker-inset-input-separator{flex-grow:0;flex-shrink:0;height:32px;line-height:32px;padding:0 4px;color:var(--semi-color-text-3)}.semi-datepicker-range-input{display:flex;align-items:center;box-sizing:border-box;border-radius:var(--semi-border-radius-small);height:32px;color:var(--semi-color-text-2);background-color:var(--semi-color-fill-0);border:0px solid rgba(0,0,0,0)}.semi-datepicker-range-input:hover,.semi-datepicker-range-input:active{border-color:#0000}.semi-datepicker-range-input:focus-within{border-color:#0000}.semi-datepicker-range-input .semi-datepicker-monthRange-input{background-color:#0000}.semi-datepicker-range-input-wrapper{box-sizing:border-box;background-color:#0000;padding:0 8px;height:100%;width:100%;border:1px solid rgba(0,0,0,0);border-radius:var(--semi-border-radius-small);display:flex;align-items:center}.semi-datepicker-range-input-wrapper .semi-input-wrapper{background-color:#0000;height:fit-content;border:none}.semi-datepicker-range-input-wrapper .semi-input-wrapper:active:not(#neverExistElement){background-color:#0000}.semi-datepicker-range-input-wrapper .semi-input-wrapper:hover:not(#neverExistElement){background-color:#0000}.semi-datepicker-range-input-wrapper-focus{border-color:#0000;background-color:var(--semi-color-fill-1);border-radius:var(--semi-border-radius-small);transition:background-color .16s ease-in-out}.semi-datepicker-range-input-wrapper-focus~.semi-datepicker-range-input-clearbtn{display:flex}.semi-datepicker-range-input-wrapper-focus~.semi-datepicker-range-input-clearbtn~.semi-datepicker-range-input-suffix{display:none}.semi-datepicker-range-input-wrapper .semi-input{padding:2px 4px}.semi-datepicker-range-input-wrapper-icon{flex-shrink:0}.semi-datepicker-range-input-wrapper:hover{background-color:var(--semi-color-fill-1)}.semi-datepicker-range-input-wrapper-start{border-top-right-radius:0;border-bottom-right-radius:0}.semi-datepicker-range-input-wrapper-start-with-prefix,.semi-datepicker-range-input-wrapper-end{border-radius:0}.semi-datepicker-range-input-wrapper-active{border-color:var(--semi-color-focus-border);background-color:var(--semi-color-fill-1)}.semi-datepicker-range-input-separator{display:flex;align-items:center}.semi-datepicker-range-input-separator-active{color:var(--semi-color-text-0)}.semi-datepicker-range-input-small{height:24px}.semi-datepicker-range-input-large{height:40px}.semi-datepicker-range-input-large .semi-input-default{font-size:16px}.semi-datepicker-range-input:hover .semi-datepicker-range-input-clearbtn{display:flex;cursor:pointer}.semi-datepicker-range-input:hover .semi-datepicker-range-input-clearbtn~.semi-datepicker-range-input-suffix{display:none}.semi-datepicker-range-input:hover .semi-datepicker-range-input-clearbtn:hover{color:var(--semi-color-primary-hover)}.semi-datepicker-range-input-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:var(--semi-color-disabled-fill)}.semi-datepicker-range-input-disabled .semi-datepicker-range-input-wrapper:hover{background-color:#0000}.semi-datepicker-range-input-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-datepicker-range-input-disabled .semi-datepicker-range-input-prefix,.semi-datepicker-range-input-disabled .semi-datepicker-range-input-suffix,.semi-datepicker-range-input-disabled .semi-datepicker-range-input-clearbtn{color:var(--semi-color-disabled-text)}.semi-datepicker-range-input-warning{background-color:var(--semi-color-warning-light-default)}.semi-datepicker-range-input-warning .semi-datepicker-range-input-wrapper:hover{background-color:var(--semi-color-warning-light-hover)}.semi-datepicker-range-input-warning .semi-datepicker-range-input-wrapper-active{border-color:var(--semi-color-warning);background-color:var(--semi-color-warning-light-hover)}.semi-datepicker-range-input-error{background-color:var(--semi-color-danger-light-default)}.semi-datepicker-range-input-error .semi-datepicker-range-input-wrapper:hover{background-color:var(--semi-color-danger-light-hover)}.semi-datepicker-range-input-error .semi-datepicker-range-input-wrapper-active{border-color:var(--semi-color-danger);background-color:var(--semi-color-danger-light-hover)}.semi-datepicker-range-input .semi-datepicker-range-input-clearbtn{display:none}.semi-datepicker-range-input-prefix,.semi-datepicker-range-input-suffix,.semi-datepicker-range-input-clearbtn{display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;white-space:nowrap;color:var(--semi-color-text-2)}.semi-datepicker-range-input-prefix{padding-left:12px;padding-right:8px}.semi-datepicker-range-input-suffix{padding-left:8px;padding-right:12px}.semi-datepicker-range-input-suffix-hidden{display:none}.semi-datepicker-range-input-clearbtn{padding-left:8px;padding-right:12px}.semi-datepicker-compact{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px;display:inline-block;max-width:calc(100vw - 32px)}.semi-datepicker-compact:not(.semi-datepicker-compact-insetInput){width:max-content}.semi-datepicker-compact .semi-datepicker-container,.semi-datepicker-compact .semi-datepicker-month-grid{width:max-content}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-month-grid-left,.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-month-grid-right{min-width:216px;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-month{margin-left:auto;margin-right:auto}.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-yam{height:calc(100% - 32px)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yam{position:relative;width:100%;max-width:100%;max-height:256px;overflow-x:auto;overflow-y:hidden}.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-month-grid-left,.semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-month-grid-left{border-right:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yam-showing{min-height:288px;min-width:216px}.semi-datepicker-compact .semi-datepicker-month-grid[x-type=date] .semi-datepicker-yam-showing{min-height:256px}.semi-datepicker-compact .semi-datepicker-month-grid[x-preset-position=left][x-insetinput=false] .semi-datepicker-month,.semi-datepicker-compact .semi-datepicker-month-grid[x-preset-position=right][x-insetinput=false] .semi-datepicker-month{height:220px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-header{box-sizing:border-box;height:48px;padding:12px;width:100%;max-width:100%}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-header button,.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-header .semi-button{width:100%;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-body{display:flex}.semi-datepicker-compact .semi-datepicker-month-grid .semi-datepicker-yearmonth-body .semi-scrolllist:nth-child(2){border:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-header{display:none}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-list-outer>ul>li{height:32px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel{border-right:0}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel .semi-scrolllist-selector{height:32px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel .semi-scrolllist-shade-pre{margin-top:-17px}.semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel .semi-scrolllist-shade-post{margin-top:17px}.semi-datepicker-compact .semi-datepicker-month-grid[x-panel-yearandmonth-open-type=left] .semi-datepicker-weeks,.semi-datepicker-compact .semi-datepicker-month-grid[x-panel-yearandmonth-open-type=right] .semi-datepicker-weeks{min-height:168px}.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=year],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=year],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-left[x-open-type=time],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-month-grid-right[x-open-type=time],.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-yam-showing{min-height:256px}.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true] .semi-datepicker-tpk{min-height:100%}.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true][x-type=dateTime] .semi-datepicker-yam,.semi-datepicker-compact .semi-datepicker-month-grid[x-insetinput=true][x-type=dateTimeRange] .semi-datepicker-yam{height:100%}.semi-datepicker-compact.semi-datepicker-panel-yam .semi-scrolllist{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px}.semi-datepicker-compact .semi-datepicker-tpk{height:calc(100% - 32px)}.semi-datepicker-compact .semi-datepicker-navigation{box-sizing:border-box;height:24px;padding:12px 12px 0;width:100%;max-width:100%}.semi-datepicker-compact .semi-datepicker-navigation-left,.semi-datepicker-compact .semi-datepicker-navigation-right{width:24px;height:24px}.semi-datepicker-compact .semi-datepicker-navigation .semi-button{min-width:24px;min-height:24px}.semi-datepicker-compact .semi-datepicker-navigation-month{min-width:0;overflow:hidden}.semi-datepicker-compact .semi-datepicker-navigation-month .semi-button{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:20px;max-width:100%}.semi-datepicker-compact .semi-datepicker-navigation-month .semi-button>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-datepicker-compact .semi-datepicker-month{width:216px;padding:0}.semi-datepicker-compact .semi-datepicker-weeks{padding:6px 10px 10px}.semi-datepicker-compact .semi-datepicker-weekday{box-sizing:border-box;height:36px;padding-left:10px;padding-right:10px;padding-bottom:8px;border-bottom:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-weekday-item{width:28px;height:28px;line-height:28px}.semi-datepicker-compact .semi-datepicker-day{width:28px;height:28px}.semi-datepicker-compact .semi-datepicker-day-main{width:24px;height:24px}.semi-datepicker-compact .semi-datepicker-day-inrange .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-inhover .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-inoffsetrange .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-hoverday .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-selectedrange-hover .semi-datepicker-day-main{width:28px}.semi-datepicker-compact .semi-datepicker-day-selected-start.semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-offsetrange-start.semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:4px}.semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:4px 0 0 4px}.semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:0 4px 4px 0}.semi-datepicker-compact .semi-datepicker-day-hoverday-beforerange .semi-datepicker-day-main{border-radius:4px 0 0 4px}.semi-datepicker-compact .semi-datepicker-day-hoverday-afterrange .semi-datepicker-day-main{border-radius:0 4px 4px 0}.semi-datepicker-compact .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{width:34px;margin-left:2px;margin-right:0;border-radius:4px 0 0 4px}.semi-datepicker-compact .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{width:34px;margin-right:2px;margin-left:0;border-radius:0 4px 4px 0}.semi-datepicker-compact .semi-datepicker-switch{box-sizing:border-box;height:32px}.semi-datepicker-compact .semi-datepicker-switch-date,.semi-datepicker-compact .semi-datepicker-switch-time{padding-top:6px;padding-bottom:6px}.semi-datepicker-compact .semi-datepicker-switch-date{border-right:1px solid var(--semi-color-border)}.semi-datepicker-compact .semi-datepicker-switch-text{padding-left:0}.semi-datepicker-compact .semi-datepicker-quick-control-header{padding:16px 12px 0;font-weight:600}.semi-datepicker-compact .semi-datepicker-quick-control-left-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-right-content-wrapper{margin-top:12px}.semi-datepicker-compact .semi-datepicker-quick-control-left-content,.semi-datepicker-compact .semi-datepicker-quick-control-right-content{box-sizing:border-box;display:grid;align-content:flex-start;grid-gap:8px;grid-template-columns:repeat(2,minmax(76.5px,84px));padding:0 12px 12px}.semi-datepicker-compact .semi-datepicker-quick-control-left-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-right-content-item{max-width:84px}.semi-datepicker-compact .semi-datepicker-quick-control-left-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-right-content-item-ellipsis{width:68px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-top-content,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-content{box-sizing:border-box;display:grid;grid-gap:8px;grid-template-columns:repeat(3,minmax(54.94px,59.94px));align-content:flex-start;padding:8px 10px}.semi-datepicker-compact .semi-datepicker-quick-control-top-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-content-item{max-width:59.94px}.semi-datepicker-compact .semi-datepicker-quick-control-top-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-content-item-ellipsis{width:43.94px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-top-range-content,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-range-content{display:grid;grid-template-columns:repeat(5,minmax(73px,76px));grid-gap:8px;align-content:flex-start;padding:8px 10px}.semi-datepicker-compact .semi-datepicker-quick-control-top-range-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-range-content-item{max-width:76px}.semi-datepicker-compact .semi-datepicker-quick-control-top-range-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-range-content-item-ellipsis{width:60px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-top-month-content,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-month-content{display:grid;grid-template-columns:repeat(2,minmax(61px,68.5px));grid-gap:8px;align-content:flex-start;padding:8px 10px}.semi-datepicker-compact .semi-datepicker-quick-control-top-month-content-item,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-month-content-item{max-width:68.5px}.semi-datepicker-compact .semi-datepicker-quick-control-top-month-content-item-ellipsis,.semi-datepicker-compact .semi-datepicker-quick-control-bottom-month-content-item-ellipsis{max-width:52.5px;font-size:12px;color:var(--semi-color-primary)}.semi-datepicker-compact .semi-datepicker-quick-control-month{min-width:216px;width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-month[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:254px}.semi-datepicker-compact .semi-datepicker-quick-control-month .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-month .semi-datepicker-quick-control-left-content-wrapper{max-height:218px}.semi-datepicker-compact .semi-datepicker-quick-control-date{min-width:216px;width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-date[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-date .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-date .semi-datepicker-quick-control-left-content-wrapper{max-height:208px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTime{min-width:216px;width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTime[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTime .semi-datepicker-quick-control-left-content-wrapper{max-height:240px}.semi-datepicker-compact .semi-datepicker-quick-control-dateRange{min-width:min(432px,calc(100vw - 32px));width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateRange .semi-datepicker-quick-control-left-content-wrapper{max-height:208px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange{min-width:min(432px,calc(100vw - 32px));width:max-content;max-width:calc(100vw - 32px)}.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange[x-insetinput=true] .semi-datepicker-quick-control-left-content-wrapper{max-height:248px}.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-right-content-wrapper,.semi-datepicker-compact .semi-datepicker-quick-control-dateTimeRange .semi-datepicker-quick-control-left-content-wrapper{max-height:240px}.semi-datepicker-compact .semi-datepicker-footer{padding-top:10px;padding-right:8px;padding-bottom:10px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper{column-gap:4px;padding:8px 8px 0;width:216px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateRange],.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateTimeRange]{width:432px;padding-top:0}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateRange] .semi-input-wrapper,.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=dateTimeRange] .semi-input-wrapper{margin-top:8px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper[x-type=month]{width:195px}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper .semi-input-wrapper{height:28px;box-sizing:border-box}.semi-datepicker-compact .semi-datepicker-inset-input-wrapper .semi-input-wrapper .semi-input{font-size:12px;line-height:26px;height:26px;vertical-align:top}.semi-datepicker-compact .semi-datepicker-inset-input-separator{border-left:1px solid var(--semi-color-border);transform:translate(50%);height:auto}.semi-popover-wrapper[x-placement^=top] .semi-datepicker .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=leftTop] .semi-datepicker .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=rightTop] .semi-datepicker .semi-datepicker-weeks,.semi-popover-wrapper[x-placement*=BottomOver] .semi-datepicker .semi-datepicker-weeks{min-height:216px}.semi-popover-wrapper[x-placement^=top] .semi-datepicker-compact .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=leftTop] .semi-datepicker-compact .semi-datepicker-weeks,.semi-popover-wrapper[x-placement=rightTop] .semi-datepicker-compact .semi-datepicker-weeks,.semi-popover-wrapper[x-placement*=BottomOver] .semi-datepicker-compact .semi-datepicker-weeks{min-height:168px}.semi-datepicker-borderless:not(:focus-within):not(:hover){background-color:#0000;border-color:#0000}.semi-datepicker-borderless:not(:focus-within):not(:hover) .semi-input-suffix,.semi-datepicker-borderless:not(:focus-within):not(:hover) .semi-datepicker-range-input-suffix{opacity:0}.semi-datepicker-borderless:focus-within:not(:active){background-color:#0000}.semi-datepicker-borderless.semi-datepicker-range-input-error .semi-datepicker-range-input-wrapper-active{border-color:#0000}.semi-datepicker-borderless.semi-datepicker-range-input-error:hover{background-color:var(--semi-color-danger-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-error:focus-within{background-color:var(--semi-color-danger-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-error:not(:focus-within){border-width:1px;border-color:var(--semi-color-danger)}.semi-datepicker-borderless.semi-datepicker-range-input-error:focus-within{border-width:1px;border-color:var(--semi-color-danger)}.semi-datepicker-borderless.semi-datepicker-range-input-warning .semi-datepicker-range-input-wrapper-active{border-color:#0000}.semi-datepicker-borderless.semi-datepicker-range-input-warning:hover{background-color:var(--semi-color-warning-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-warning:focus-within{background-color:var(--semi-color-warning-light-default)}.semi-datepicker-borderless.semi-datepicker-range-input-warning:not(:focus-within){border-width:1px;border-color:var(--semi-color-warning)}.semi-datepicker-borderless.semi-datepicker-range-input-warning:focus-within{border-width:1px;border-color:var(--semi-color-warning)}.semi-rtl .semi-datepicker,.semi-portal-rtl .semi-datepicker{direction:rtl}.semi-rtl .semi-datepicker-footer,.semi-portal-rtl .semi-datepicker-footer{padding-right:0;padding-left:8px;text-align:left}.semi-rtl .semi-datepicker-footer .semi-button:first-of-type,.semi-portal-rtl .semi-datepicker-footer .semi-button:first-of-type{margin-left:0;margin-right:0}.semi-rtl .semi-datepicker-footer .semi-button:nth-of-type(2),.semi-portal-rtl .semi-datepicker-footer .semi-button:nth-of-type(2){margin-right:12px;margin-left:0}.semi-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-rtl .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-hoverday-before-selectedrange .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-hoverday-before-selectedrange .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{margin-right:2px;margin-left:auto;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-rtl .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-hoverday-after-selectedrange .semi-datepicker-day-main,.semi-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-hoverday-after-selectedrange .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{margin-left:2px;margin-right:auto;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-rtl .semi-datepicker-switch-text,.semi-portal-rtl .semi-datepicker-switch-text{padding-left:0;padding-right:8px}.semi-rtl .semi-datepicker-navigation .semi-icon-chevron_left,.semi-rtl .semi-datepicker-navigation .semi-icon-chevron_right,.semi-rtl .semi-datepicker-navigation .semi-icon-double_chevron_left,.semi-rtl .semi-datepicker-navigation .semi-icon-double_chevron_right,.semi-rtl .semi-datepicker-yam .semi-icon-chevron_left,.semi-rtl .semi-datepicker-yam .semi-icon-chevron_right,.semi-rtl .semi-datepicker-yam .semi-icon-double_chevron_left,.semi-rtl .semi-datepicker-yam .semi-icon-double_chevron_right,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-chevron_left,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-chevron_right,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-double_chevron_left,.semi-portal-rtl .semi-datepicker-navigation .semi-icon-double_chevron_right,.semi-portal-rtl .semi-datepicker-yam .semi-icon-chevron_left,.semi-portal-rtl .semi-datepicker-yam .semi-icon-chevron_right,.semi-portal-rtl .semi-datepicker-yam .semi-icon-double_chevron_left,.semi-portal-rtl .semi-datepicker-yam .semi-icon-double_chevron_right{transform:scaleX(-1)}.semi-rtl .semi-datepicker-range-input-prefix,.semi-portal-rtl .semi-datepicker-range-input-prefix{padding-left:8px;padding-right:12px}.semi-rtl .semi-datepicker-range-input-suffix,.semi-portal-rtl .semi-datepicker-range-input-suffix{padding-left:12px;padding-right:8px}.semi-rtl .semi-datepicker-range-input-suffix-hidden,.semi-portal-rtl .semi-datepicker-range-input-suffix-hidden{display:none}.semi-rtl .semi-datepicker-range-input-clearbtn,.semi-portal-rtl .semi-datepicker-range-input-clearbtn{padding-left:12px;padding-right:8px}.semi-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-month-grid-left,.semi-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-month-grid-left,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateRange] .semi-datepicker-month-grid-left,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-month-grid[x-type=dateTimeRange] .semi-datepicker-month-grid-left{border-left:1px solid var(--semi-color-border);border-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-month-grid .semi-scrolllist-item-wheel{border-left:0;border-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-start .semi-datepicker-day-main{border-radius:0 4px 4px 0}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-offsetrange-end .semi-datepicker-day-main{border-radius:4px 0 0 4px}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-selected-start .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-selected-start .semi-datepicker-day-main{margin-left:0;margin-right:2px;border-radius:0 4px 4px 0}.semi-rtl .semi-datepicker-compact .semi-datepicker-day-selected-end .semi-datepicker-day-main,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-day-selected-end .semi-datepicker-day-main{margin-right:0;margin-left:2px;border-radius:4px 0 0 4px}.semi-rtl .semi-datepicker-compact .semi-datepicker-switch-date,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-switch-date{border-left:1px solid var(--semi-color-border);border-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-switch-text,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-switch-text{padding-left:auto;padding-right:0}.semi-rtl .semi-datepicker-compact .semi-datepicker-footer,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-footer{padding-left:8px;padding-right:auto}.semi-rtl .semi-datepicker-compact .semi-datepicker-inset-input-separator,.semi-portal-rtl .semi-datepicker-compact .semi-datepicker-inset-input-separator{border-right:1px solid var(--semi-color-border);border-left:0;transform:translate(-50%)}.semi-descriptions{line-height:20px}.semi-descriptions table,.semi-descriptions tr,.semi-descriptions th,.semi-descriptions td{margin:0;padding:0;border:0}.semi-descriptions th{padding-right:24px}.semi-descriptions .semi-descriptions-item{margin:0;padding-bottom:12px;text-align:left;vertical-align:top}.semi-descriptions-key{font-weight:400;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-height:14px;white-space:nowrap;color:var(--semi-color-text-2)}.semi-descriptions-value{font-weight:400;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0)}.semi-descriptions-center .semi-descriptions-item-th{text-align:right}.semi-descriptions-center .semi-descriptions-item-td,.semi-descriptions-left .semi-descriptions-item-th,.semi-descriptions-left .semi-descriptions-item-td,.semi-descriptions-justify .semi-descriptions-item-th{text-align:left}.semi-descriptions-justify .semi-descriptions-item-td{text-align:right}.semi-descriptions-plain .semi-descriptions-key,.semi-descriptions-plain .semi-descriptions-value{display:inline-block}.semi-descriptions-plain .semi-descriptions-value{padding-left:8px}.semi-descriptions-plain .semi-descriptions-value .semi-tag{vertical-align:middle}.semi-descriptions-double tbody{display:flex;flex-wrap:wrap}.semi-descriptions-double tr{display:inline-flex;flex-direction:column}.semi-descriptions-double .semi-descriptions-item{padding:0;flex:1}.semi-descriptions-double .semi-descriptions-value{font-weight:600}.semi-descriptions-double-small .semi-descriptions-item{padding-right:48px}.semi-descriptions-double-small .semi-descriptions-key{line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;padding-bottom:0;font-size:12px}.semi-descriptions-double-small .semi-descriptions-value{line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px}.semi-descriptions-double-medium .semi-descriptions-item{padding-right:60px}.semi-descriptions-double-medium .semi-descriptions-key{padding-bottom:4px;font-size:14px}.semi-descriptions-double-medium .semi-descriptions-value{line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:20px}.semi-descriptions-double-large .semi-descriptions-item{padding-right:80px}.semi-descriptions-double-large .semi-descriptions-key{padding-bottom:4px;font-size:14px}.semi-descriptions-double-large .semi-descriptions-value{line-height:40px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:28px}.semi-descriptions-horizontal table{table-layout:fixed}.semi-descriptions-horizontal table,.semi-descriptions-horizontal tbody{width:100%}.semi-descriptions-horizontal .semi-descriptions-item{flex:0}.semi-rtl .semi-descriptions,.semi-portal-rtl .semi-descriptions{direction:rtl}.semi-rtl .semi-descriptions th,.semi-portal-rtl .semi-descriptions th{direction:rtl;padding-right:0;padding-left:24px}.semi-rtl .semi-descriptions .semi-descriptions-item,.semi-portal-rtl .semi-descriptions .semi-descriptions-item{text-align:right}.semi-rtl .semi-descriptions-center .semi-descriptions-item-th,.semi-portal-rtl .semi-descriptions-center .semi-descriptions-item-th{text-align:left}.semi-rtl .semi-descriptions-center .semi-descriptions-item-td,.semi-portal-rtl .semi-descriptions-center .semi-descriptions-item-td{text-align:right}.semi-rtl .semi-descriptions-left .semi-descriptions-item-th,.semi-rtl .semi-descriptions-left .semi-descriptions-item-td,.semi-portal-rtl .semi-descriptions-left .semi-descriptions-item-th,.semi-portal-rtl .semi-descriptions-left .semi-descriptions-item-td{text-align:left}.semi-rtl .semi-descriptions-justify .semi-descriptions-item-th,.semi-portal-rtl .semi-descriptions-justify .semi-descriptions-item-th{text-align:right}.semi-rtl .semi-descriptions-justify .semi-descriptions-item-td,.semi-portal-rtl .semi-descriptions-justify .semi-descriptions-item-td{text-align:left}.semi-rtl .semi-descriptions-plain .semi-descriptions-key,.semi-rtl .semi-descriptions-plain .semi-descriptions-value,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-key,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-value{display:inline-block}.semi-rtl .semi-descriptions-plain .semi-descriptions-value,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-value{padding-left:0;padding-right:8px}.semi-rtl .semi-descriptions-plain .semi-descriptions-value .semi-tag,.semi-portal-rtl .semi-descriptions-plain .semi-descriptions-value .semi-tag{vertical-align:middle}.semi-rtl .semi-descriptions-double,.semi-portal-rtl .semi-descriptions-double{direction:rtl}.semi-rtl .semi-descriptions-double .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double .semi-descriptions-item{text-align:right}.semi-rtl .semi-descriptions-double-small .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double-small .semi-descriptions-item{padding-right:0;padding-left:48px}.semi-rtl .semi-descriptions-double-medium .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double-medium .semi-descriptions-item{padding-right:0;padding-left:60px}.semi-rtl .semi-descriptions-double-large .semi-descriptions-item,.semi-portal-rtl .semi-descriptions-double-large .semi-descriptions-item{padding-right:0;padding-left:80px}.semi-divider{margin:1px 0;border-bottom:1px solid var(--semi-color-border);color:var(--semi-color-text-0);box-sizing:border-box}.semi-divider-dashed{border-bottom-style:dashed}.semi-divider-horizontal{width:100%;display:flex}.semi-divider-vertical{border-bottom:0;display:inline-block;margin:0 1px;border-left:1px solid var(--semi-color-border);height:20px;vertical-align:middle}.semi-divider-with-text{display:flex;border-bottom:0;white-space:nowrap;align-items:center}.semi-divider-with-text .semi-divider_inner-text{font-weight:600;padding:0 8px;display:inline-block}.semi-divider-with-text:before,.semi-divider-with-text:after{content:"";width:50%;border-bottom:1px solid var(--semi-color-border)}.semi-divider-with-text-left:before{width:40px}.semi-divider-with-text-left:after{flex:1}.semi-divider-with-text-right:before{flex:1}.semi-divider-with-text-right:after{width:40px}.semi-divider-dashed:before,.semi-divider-dashed:after{border-bottom:1px dashed var(--semi-color-border)}.semi-divider-vertical.semi-divider-dashed{border-left:1px dashed var(--semi-color-border)}.semi-dropdown{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-dropdown-wrapper{overflow-y:auto;box-shadow:var(--semi-shadow-elevated);position:relative;z-index:1050;border-radius:var(--semi-border-radius-medium);background:var(--semi-color-bg-3);-webkit-backdrop-filter:none;backdrop-filter:none;opacity:0}.semi-dropdown-wrapper-show{opacity:1}.semi-dropdown-trigger{display:inline-block}.semi-dropdown-menu{list-style:none;padding:4px 0;margin:0}.semi-dropdown-title{color:var(--semi-color-text-2);padding:8px 16px 4px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:default}.semi-dropdown-title-withTick{padding-left:31px}.semi-dropdown-item{padding:8px 16px;color:var(--semi-color-text-0);max-width:280px;display:flex;align-items:center;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms;border-radius:0}.semi-dropdown-item-hover{background-color:var(--semi-color-fill-0)}.semi-dropdown-item:not(.semi-dropdown-item-active):hover{background-color:var(--semi-color-fill-0);cursor:pointer}.semi-dropdown-item:not(.semi-dropdown-item-active):active{background-color:var(--semi-color-fill-1)}.semi-dropdown-item:focus-visible{background-color:var(--semi-color-fill-0);outline:0}.semi-dropdown-item-icon{display:inline-flex;align-items:center;margin-right:8px}.semi-dropdown-item-danger{color:var(--semi-color-danger)}.semi-dropdown-item-secondary{color:var(--semi-color-secondary)}.semi-dropdown-item-warning{color:var(--semi-color-warning)}.semi-dropdown-item-tertiary{color:var(--semi-color-tertiary)}.semi-dropdown-item-primary{color:var(--semi-color-primary)}.semi-dropdown-item-withTick{padding-left:12px}.semi-dropdown-item>.semi-icon{flex-shrink:0;margin-right:9px;font-size:12px}.semi-dropdown-item-active{font-weight:600}.semi-dropdown-item.semi-dropdown-item-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-dropdown-item.semi-dropdown-item-disabled:hover,.semi-dropdown-item.semi-dropdown-item-disabled:active{cursor:not-allowed;background-color:#0000}.semi-dropdown-divider{display:block;height:1px;width:100%;min-width:100%;clear:both;background:var(--semi-color-border);margin:4px 0}.semi-rtl .semi-dropdown-wrapper,.semi-portal-rtl .semi-dropdown-wrapper{direction:rtl}.semi-rtl .semi-dropdown-title-withTick,.semi-portal-rtl .semi-dropdown-title-withTick{padding-left:0;padding-right:31px}.semi-rtl .semi-dropdown-item-withTick,.semi-portal-rtl .semi-dropdown-item-withTick{padding-left:auto;padding-right:12px}.semi-rtl .semi-dropdown-item>.semi-icon,.semi-portal-rtl .semi-dropdown-item>.semi-icon{margin-right:0;margin-left:9px}.semi-empty{display:flex}.semi-empty-image{display:flex;justify-content:center;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.semi-empty-vertical{align-items:center;flex-direction:column}.semi-empty-vertical .semi-empty-content{margin-top:24px}.semi-empty-vertical .semi-empty-title,.semi-empty-vertical .semi-empty-description{text-align:center}.semi-empty-horizontal .semi-empty-content{margin-left:32px}.semi-empty-title.semi-typography{display:block;font-weight:600}.semi-empty-title+.semi-empty-description{margin-top:16px}.semi-empty-description{color:var(--semi-color-text-1)}.semi-empty-footer{margin-top:24px}.semi-rtl .semi-empty,.semi-portal-rtl .semi-empty{direction:rtl}.semi-rtl .semi-empty-horizontal .semi-empty-content,.semi-portal-rtl .semi-empty-horizontal .semi-empty-content{margin-left:auto;margin-right:32px}.semi-feedback-emoji-container{display:flex;justify-content:center;align-items:center;column-gap:24px;align-self:stretch;margin-top:24px;margin-bottom:24px}.semi-feedback-emoji-item{-webkit-user-select:none;user-select:none;cursor:pointer;font-family:Inter;font-size:36px;line-height:36px;height:36px;font-style:normal;filter:grayscale(100%)}.semi-feedback-emoji-item:hover,.semi-feedback-emoji-item-selected{filter:none}.semi-feedback-thank-text{color:var(--semi-color-text-2);text-align:center;font-size:14px;font-weight:400;line-height:20px;margin-bottom:0;margin-top:24px}.semi-feedback .semi-checkboxGroup-vertical{row-gap:16px}.semi-feedback-footer{display:flex;justify-content:flex-end;column-gap:12px}.semi-feedback .semi-modal,.semi-feedback.semi-feedback-text .semi-modal{width:400px}.semi-feedback .semi-sidesheet-inner{border-radius:12px}.semi-feedback.semi-sidesheet.semi-sidesheet-size-small{width:400px}.semi-feedback.semi-sidesheet.semi-feedback-text{width:600px}.semi-feedback.semi-sidesheet-bottom{right:20px;left:auto}.semi-feedback.semi-sidesheet-bottom .semi-sidesheet-inner-wrap{bottom:50px}@keyframes semi-sidesheet-slideShow_bottom{0%{transform:translateY(calc(100% + 50px))}to{transform:translateY(0)}}@keyframes semi-sidesheet-slideHide_bottom{0%{transform:translateY(0)}to{transform:translateY(calc(100% + 50px))}}.semi-feedback.semi-sidesheet .semi-sidesheet-fixed.semi-feedback-bottom{top:auto}.semi-feedback.semi-sidesheet .semi-sidesheet-fixed.semi-feedback-bottom .semi-sidesheet-inner{bottom:50px}.semi-floatButton{position:fixed;bottom:24px;right:24px;z-index:1000;cursor:pointer}.semi-floatButton-body{background-color:var(--semi-color-fill-0);box-shadow:var(--semi-shadow-elevated);color:var(--semi-color-primary);display:flex;align-items:center;justify-content:center}.semi-floatButton-body:hover{background-color:var(--semi-color-fill-1)}.semi-floatButton-body:active{background-color:var(--semi-color-fill-2)}.semi-floatButton-disabled{background:var(--semi-color-disabled-bg);color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-floatButton-disabled:hover{background-color:var(--semi-color-disabled-bg)}.semi-floatButton-colorful{background:var(--semi-color-ai-general);color:var(--semi-color-white)}.semi-floatButton-colorful:hover{background:var(--semi-color-ai-general-hover)}.semi-floatButton-colorful:active{background:var(--semi-color-ai-general-active)}.semi-floatButton.semi-floatButton-square .semi-badge-dot,.semi-floatButton.semi-floatButton-square .semi-badge-count{top:2.32px;inset-inline-end:2.32px}.semi-floatButton-default{width:32px;height:32px}.semi-floatButton-default.semi-floatButton-round .semi-badge-dot,.semi-floatButton-default.semi-floatButton-round .semi-badge-count{top:4.64px;inset-inline-end:4.64px}.semi-floatButton-small{width:24px;height:24px}.semi-floatButton-small.semi-floatButton-round .semi-badge-dot,.semi-floatButton-small.semi-floatButton-round .semi-badge-count{top:3.48px;inset-inline-end:3.48px}.semi-floatButton-large{width:40px;height:40px}.semi-floatButton-large.semi-floatButton-round .semi-badge-dot,.semi-floatButton-large.semi-floatButton-round .semi-badge-count{top:5.8px;inset-inline-end:5.8px}.semi-floatButton-square{border-radius:8px}.semi-floatButton-round{border-radius:var(--semi-border-radius-full)}.semi-floatButtonGroup{position:fixed;border-radius:8px;bottom:24px;right:24px;z-index:1000;background:var(--semi-color-bg-0);box-shadow:var(--semi-shadow-elevated);display:inline-flex;padding:6px;gap:4px}.semi-floatButtonGroup-item{cursor:pointer;display:flex;padding:6px 12px;align-items:center;column-gap:8px;border-radius:4px;color:var(--semi-color-text-0);font-size:14px;font-style:normal;font-weight:400;line-height:20px}.semi-floatButtonGroup-item:hover{background:var(--semi-color-fill-1)}.semi-floatButtonGroup-item:active{background:var(--semi-color-fill-2)}.semi-form .semi-form-field{box-sizing:border-box}.semi-form-horizontal{display:flex;flex-wrap:wrap}.semi-form-horizontal .semi-form-field{margin-left:0;padding-right:16px}.semi-form-horizontal .semi-form-field:last-child{margin-right:16px}.semi-form-horizontal .semi-form-field-group{padding-right:16px}.semi-form-horizontal .semi-row{display:block}.semi-form-vertical .semi-form-field{margin:0;padding-top:12px;padding-bottom:12px;overflow:hidden}.semi-form-vertical .semi-form-field .semi-form-col-right{display:flex;justify-content:flex-end}.semi-form-vertical .semi-form-field .semi-form-col-left{display:flex;justify-content:flex-start}.semi-form-vertical .semi-form-field-group .semi-form-col-right{display:flex;justify-content:flex-end}.semi-form-vertical .semi-form-field-group .semi-form-col-left{display:flex;justify-content:flex-start}.semi-form-field-label{box-sizing:border-box;font-weight:600;color:var(--semi-color-text-0);margin-bottom:4px;margin-top:0;padding-right:16px;display:inline-block;vertical-align:middle;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;flex-shrink:0}.semi-form-field-label-disabled{color:var(--semi-color-disabled-text)}.semi-form-field-label-with-extra .semi-form-field-label-text{display:inline-block}.semi-form-field-label-with-extra .semi-form-field-label-extra{display:flex;align-items:center;margin-left:4px}.semi-form-field-label-required .semi-form-field-label-text:after{content:"*";margin-left:4px;color:var(--semi-color-danger);font-weight:600}.semi-form-field-label-required-disabled{color:var(--semi-color-danger)}.semi-form-field-label-optional-text{color:var(--semi-color-tertiary)}.semi-form-field-label-left{text-align:left}.semi-form-field-label-right{text-align:right}.semi-form-field-error-message,.semi-form-field-help-text{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:center;margin-top:4px}.semi-form-field-error-message .semi-icon-alert_triangle,.semi-form-field-help-text .semi-icon-alert_triangle{color:var(--semi-color-warning)}.semi-form-field-error-message{color:var(--semi-color-danger)}.semi-form-field[x-label-pos=top] .semi-form-field-label{display:block}.semi-form-field[x-label-pos=top] .semi-checkboxGroup,.semi-form-field[x-label-pos=top] .semi-radioGroup{padding-top:4px;padding-bottom:4px}.semi-form-field[x-label-pos=top] .semi-radioGroup-buttonRadio,.semi-form-field[x-label-pos=top] .semi-radioGroup-horizontal-card,.semi-form-field[x-label-pos=top] .semi-radioGroup-vertical-card{padding-top:0;padding-bottom:0}.semi-form-field[x-label-pos=top] .semi-form-field-label-with-extra{display:flex;align-items:center}.semi-form-field[x-label-pos=left]{display:flex}.semi-form-field[x-label-pos=left] .semi-form-field-label{margin-bottom:0;margin-right:0;padding-top:6px;padding-bottom:6px}.semi-form-field[x-label-pos=left] .semi-form-field-label-with-extra{display:flex;align-items:center}.semi-form-field[x-label-pos=left] .semi-form-field-label-with-extra.semi-form-field-label-right{justify-content:flex-end}.semi-form-field[x-label-pos=left] .semi-checkboxGroup,.semi-form-field[x-label-pos=left] .semi-radioGroup{padding-top:6px;padding-bottom:6px}.semi-form-field[x-label-pos=left] .semi-radioGroup-buttonRadio,.semi-form-field[x-label-pos=left] .semi-radioGroup-horizontal-card,.semi-form-field[x-label-pos=left] .semi-radioGroup-vertical-card{padding-top:0;padding-bottom:0}.semi-form-field[x-label-pos=left] .semi-switch,.semi-form-field[x-label-pos=left] .semi-rating{vertical-align:middle;margin-top:4px;margin-bottom:4px}.semi-form-field[x-extra-pos=middle] .semi-form-field-extra{margin-top:4px;margin-bottom:4px}.semi-form-field[x-extra-pos=bottom] .semi-form-field-extra{margin-top:4px}.semi-form-field-main{width:100%}.semi-form-field-validate-status-icon{margin-right:4px;flex-shrink:0;align-self:flex-start;position:relative;top:2px}.semi-form-field-extra{color:var(--semi-color-tertiary)}.semi-form-field-extra-string{color:var(--semi-color-tertiary);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-form-vertical .semi-form-field-group{margin-top:0;margin-bottom:0;padding-top:12px;padding-bottom:12px;overflow:hidden}.semi-form-vertical .semi-form-field-group .semi-form-field{margin-top:0;margin-bottom:0}.semi-form-field-group[x-label-pos=left]{display:flex}.semi-form-field-group[x-label-pos=left] .semi-form-field-label{margin-bottom:0;margin-right:0;padding-top:6px;padding-bottom:6px}.semi-form-section{width:100%;margin-top:28px}.semi-form-section-text{margin-block-start:0;margin-block-end:0;font-size:18px;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;width:100%;padding-bottom:8px;padding-top:0;border-bottom:1px solid var(--semi-color-border);margin-bottom:4px;margin-top:0;color:var(--semi-color-text-0)}.semi-form-section:nth-of-type(1){margin-top:0}.semi-rtl .semi-form,.semi-portal-rtl .semi-form{direction:rtl}.semi-rtl .semi-form-horizontal .semi-form-field,.semi-portal-rtl .semi-form-horizontal .semi-form-field{margin-left:0;margin-right:0;padding-right:0;padding-left:16px}.semi-rtl .semi-form-horizontal .semi-form-field:last-child,.semi-portal-rtl .semi-form-horizontal .semi-form-field:last-child{margin-left:16px}.semi-rtl .semi-form-horizontal .semi-form-field-group,.semi-portal-rtl .semi-form-horizontal .semi-form-field-group,.semi-rtl .semi-form-field-label,.semi-portal-rtl .semi-form-field-label{padding-right:0;padding-left:16px}.semi-rtl .semi-form-field-label-with-extra .semi-form-field-label-extra,.semi-portal-rtl .semi-form-field-label-with-extra .semi-form-field-label-extra{margin-left:0;margin-right:4px}.semi-rtl .semi-form-field-label-required .semi-form-field-label-text:after,.semi-portal-rtl .semi-form-field-label-required .semi-form-field-label-text:after{content:"*";margin-left:0;margin-right:4px}.semi-rtl .semi-form-field-label-left,.semi-portal-rtl .semi-form-field-label-left{text-align:right}.semi-rtl .semi-form-field-label-right,.semi-portal-rtl .semi-form-field-label-right{text-align:left}.semi-rtl .semi-form-field,.semi-portal-rtl .semi-form-field{direction:rtl}.semi-rtl .semi-form-field[x-label-pos=left] .semi-form-field-label,.semi-portal-rtl .semi-form-field[x-label-pos=left] .semi-form-field-label{margin-right:0;margin-left:0}.semi-rtl .semi-form-field-validate-status-icon,.semi-portal-rtl .semi-form-field-validate-status-icon{margin-right:0;margin-left:4px}.semi-rtl .semi-form-section,.semi-portal-rtl .semi-form-section{direction:rtl}.semi-row{display:block;box-sizing:border-box;position:relative;height:auto;margin-right:0;margin-left:0;zoom:1}.semi-row:before,.semi-row:after{display:table;content:""}.semi-row:after{clear:both}.semi-row-flex{display:flex;flex-flow:row wrap}.semi-row-flex:before,.semi-row-flex:after{display:flex}.semi-col-0,.semi-col-xs-0,.semi-col-sm-0,.semi-col-md-0,.semi-col-lg-0,.semi-col-xl-0,.semi-col-xxl-0{display:none}.semi-row-flex-start{justify-content:flex-start}.semi-row-flex-center{justify-content:center}.semi-row-flex-end{justify-content:flex-end}.semi-row-flex-space-between{justify-content:space-between}.semi-row-flex-space-around{justify-content:space-around}.semi-row-flex-top{align-items:flex-start}.semi-row-flex-middle{align-items:center}.semi-row-flex-bottom{align-items:flex-end}.semi-col{position:relative}.semi-col-1,.semi-col-xs-1,.semi-col-sm-1,.semi-col-md-1,.semi-col-lg-1,.semi-col-2,.semi-col-xs-2,.semi-col-sm-2,.semi-col-md-2,.semi-col-lg-2,.semi-col-3,.semi-col-xs-3,.semi-col-sm-3,.semi-col-md-3,.semi-col-lg-3,.semi-col-4,.semi-col-xs-4,.semi-col-sm-4,.semi-col-md-4,.semi-col-lg-4,.semi-col-5,.semi-col-xs-5,.semi-col-sm-5,.semi-col-md-5,.semi-col-lg-5,.semi-col-6,.semi-col-xs-6,.semi-col-sm-6,.semi-col-md-6,.semi-col-lg-6,.semi-col-7,.semi-col-xs-7,.semi-col-sm-7,.semi-col-md-7,.semi-col-lg-7,.semi-col-8,.semi-col-xs-8,.semi-col-sm-8,.semi-col-md-8,.semi-col-lg-8,.semi-col-9,.semi-col-xs-9,.semi-col-sm-9,.semi-col-md-9,.semi-col-lg-9,.semi-col-10,.semi-col-xs-10,.semi-col-sm-10,.semi-col-md-10,.semi-col-lg-10,.semi-col-11,.semi-col-xs-11,.semi-col-sm-11,.semi-col-md-11,.semi-col-lg-11,.semi-col-12,.semi-col-xs-12,.semi-col-sm-12,.semi-col-md-12,.semi-col-lg-12,.semi-col-13,.semi-col-xs-13,.semi-col-sm-13,.semi-col-md-13,.semi-col-lg-13,.semi-col-14,.semi-col-xs-14,.semi-col-sm-14,.semi-col-md-14,.semi-col-lg-14,.semi-col-15,.semi-col-xs-15,.semi-col-sm-15,.semi-col-md-15,.semi-col-lg-15,.semi-col-16,.semi-col-xs-16,.semi-col-sm-16,.semi-col-md-16,.semi-col-lg-16,.semi-col-17,.semi-col-xs-17,.semi-col-sm-17,.semi-col-md-17,.semi-col-lg-17,.semi-col-18,.semi-col-xs-18,.semi-col-sm-18,.semi-col-md-18,.semi-col-lg-18,.semi-col-19,.semi-col-xs-19,.semi-col-sm-19,.semi-col-md-19,.semi-col-lg-19,.semi-col-20,.semi-col-xs-20,.semi-col-sm-20,.semi-col-md-20,.semi-col-lg-20,.semi-col-21,.semi-col-xs-21,.semi-col-sm-21,.semi-col-md-21,.semi-col-lg-21,.semi-col-22,.semi-col-xs-22,.semi-col-sm-22,.semi-col-md-22,.semi-col-lg-22,.semi-col-23,.semi-col-xs-23,.semi-col-sm-23,.semi-col-md-23,.semi-col-lg-23,.semi-col-24,.semi-col-xs-24,.semi-col-sm-24,.semi-col-md-24,.semi-col-lg-24{position:relative;min-height:1px;padding-right:0;padding-left:0}.semi-col-1,.semi-col-2,.semi-col-3,.semi-col-4,.semi-col-5,.semi-col-6,.semi-col-7,.semi-col-8,.semi-col-9,.semi-col-10,.semi-col-11,.semi-col-12,.semi-col-13,.semi-col-14,.semi-col-15,.semi-col-16,.semi-col-17,.semi-col-18,.semi-col-19,.semi-col-20,.semi-col-21,.semi-col-22,.semi-col-23,.semi-col-24{flex:0 0 auto;float:left}.semi-col-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-push-1{left:4.1666666667%}.semi-col-pull-1{right:4.1666666667%}.semi-col-offset-1{margin-left:4.1666666667%}.semi-col-order-1{order:1}.semi-col-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-push-2{left:8.3333333333%}.semi-col-pull-2{right:8.3333333333%}.semi-col-offset-2{margin-left:8.3333333333%}.semi-col-order-2{order:2}.semi-col-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-push-3{left:12.5%}.semi-col-pull-3{right:12.5%}.semi-col-offset-3{margin-left:12.5%}.semi-col-order-3{order:3}.semi-col-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-push-4{left:16.6666666667%}.semi-col-pull-4{right:16.6666666667%}.semi-col-offset-4{margin-left:16.6666666667%}.semi-col-order-4{order:4}.semi-col-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-push-5{left:20.8333333333%}.semi-col-pull-5{right:20.8333333333%}.semi-col-offset-5{margin-left:20.8333333333%}.semi-col-order-5{order:5}.semi-col-6{display:block;box-sizing:border-box;width:25%}.semi-col-push-6{left:25%}.semi-col-pull-6{right:25%}.semi-col-offset-6{margin-left:25%}.semi-col-order-6{order:6}.semi-col-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-push-7{left:29.1666666667%}.semi-col-pull-7{right:29.1666666667%}.semi-col-offset-7{margin-left:29.1666666667%}.semi-col-order-7{order:7}.semi-col-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-push-8{left:33.3333333333%}.semi-col-pull-8{right:33.3333333333%}.semi-col-offset-8{margin-left:33.3333333333%}.semi-col-order-8{order:8}.semi-col-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-push-9{left:37.5%}.semi-col-pull-9{right:37.5%}.semi-col-offset-9{margin-left:37.5%}.semi-col-order-9{order:9}.semi-col-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-push-10{left:41.6666666667%}.semi-col-pull-10{right:41.6666666667%}.semi-col-offset-10{margin-left:41.6666666667%}.semi-col-order-10{order:10}.semi-col-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-push-11{left:45.8333333333%}.semi-col-pull-11{right:45.8333333333%}.semi-col-offset-11{margin-left:45.8333333333%}.semi-col-order-11{order:11}.semi-col-12{display:block;box-sizing:border-box;width:50%}.semi-col-push-12{left:50%}.semi-col-pull-12{right:50%}.semi-col-offset-12{margin-left:50%}.semi-col-order-12{order:12}.semi-col-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-push-13{left:54.1666666667%}.semi-col-pull-13{right:54.1666666667%}.semi-col-offset-13{margin-left:54.1666666667%}.semi-col-order-13{order:13}.semi-col-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-push-14{left:58.3333333333%}.semi-col-pull-14{right:58.3333333333%}.semi-col-offset-14{margin-left:58.3333333333%}.semi-col-order-14{order:14}.semi-col-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-push-15{left:62.5%}.semi-col-pull-15{right:62.5%}.semi-col-offset-15{margin-left:62.5%}.semi-col-order-15{order:15}.semi-col-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-push-16{left:66.6666666667%}.semi-col-pull-16{right:66.6666666667%}.semi-col-offset-16{margin-left:66.6666666667%}.semi-col-order-16{order:16}.semi-col-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-push-17{left:70.8333333333%}.semi-col-pull-17{right:70.8333333333%}.semi-col-offset-17{margin-left:70.8333333333%}.semi-col-order-17{order:17}.semi-col-18{display:block;box-sizing:border-box;width:75%}.semi-col-push-18{left:75%}.semi-col-pull-18{right:75%}.semi-col-offset-18{margin-left:75%}.semi-col-order-18{order:18}.semi-col-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-push-19{left:79.1666666667%}.semi-col-pull-19{right:79.1666666667%}.semi-col-offset-19{margin-left:79.1666666667%}.semi-col-order-19{order:19}.semi-col-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-push-20{left:83.3333333333%}.semi-col-pull-20{right:83.3333333333%}.semi-col-offset-20{margin-left:83.3333333333%}.semi-col-order-20{order:20}.semi-col-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-push-21{left:87.5%}.semi-col-pull-21{right:87.5%}.semi-col-offset-21{margin-left:87.5%}.semi-col-order-21{order:21}.semi-col-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-push-22{left:91.6666666667%}.semi-col-pull-22{right:91.6666666667%}.semi-col-offset-22{margin-left:91.6666666667%}.semi-col-order-22{order:22}.semi-col-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-push-23{left:95.8333333333%}.semi-col-pull-23{right:95.8333333333%}.semi-col-offset-23{margin-left:95.8333333333%}.semi-col-order-23{order:23}.semi-col-24{display:block;box-sizing:border-box;width:100%}.semi-col-push-24{left:100%}.semi-col-pull-24{right:100%}.semi-col-offset-24{margin-left:100%}.semi-col-order-24{order:24}.semi-rtl .semi-col-1,.semi-rtl .semi-col-2,.semi-rtl .semi-col-3,.semi-rtl .semi-col-4,.semi-rtl .semi-col-5,.semi-rtl .semi-col-6,.semi-rtl .semi-col-7,.semi-rtl .semi-col-8,.semi-rtl .semi-col-9,.semi-rtl .semi-col-10,.semi-rtl .semi-col-11,.semi-rtl .semi-col-12,.semi-rtl .semi-col-13,.semi-rtl .semi-col-14,.semi-rtl .semi-col-15,.semi-rtl .semi-col-16,.semi-rtl .semi-col-17,.semi-rtl .semi-col-18,.semi-rtl .semi-col-19,.semi-rtl .semi-col-20,.semi-rtl .semi-col-21,.semi-rtl .semi-col-22,.semi-rtl .semi-col-23,.semi-rtl .semi-col-24{float:right}.semi-rtl .semi-col-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-offset-24{margin-left:auto;margin-right:100%}.semi-col-xs-1,.semi-col-xs-2,.semi-col-xs-3,.semi-col-xs-4,.semi-col-xs-5,.semi-col-xs-6,.semi-col-xs-7,.semi-col-xs-8,.semi-col-xs-9,.semi-col-xs-10,.semi-col-xs-11,.semi-col-xs-12,.semi-col-xs-13,.semi-col-xs-14,.semi-col-xs-15,.semi-col-xs-16,.semi-col-xs-17,.semi-col-xs-18,.semi-col-xs-19,.semi-col-xs-20,.semi-col-xs-21,.semi-col-xs-22,.semi-col-xs-23,.semi-col-xs-24{flex:0 0 auto;float:left}.semi-col-xs-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-xs-push-1{left:4.1666666667%}.semi-col-xs-pull-1{right:4.1666666667%}.semi-col-xs-offset-1{margin-left:4.1666666667%}.semi-col-xs-order-1{order:1}.semi-col-xs-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-xs-push-2{left:8.3333333333%}.semi-col-xs-pull-2{right:8.3333333333%}.semi-col-xs-offset-2{margin-left:8.3333333333%}.semi-col-xs-order-2{order:2}.semi-col-xs-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-xs-push-3{left:12.5%}.semi-col-xs-pull-3{right:12.5%}.semi-col-xs-offset-3{margin-left:12.5%}.semi-col-xs-order-3{order:3}.semi-col-xs-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-xs-push-4{left:16.6666666667%}.semi-col-xs-pull-4{right:16.6666666667%}.semi-col-xs-offset-4{margin-left:16.6666666667%}.semi-col-xs-order-4{order:4}.semi-col-xs-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-xs-push-5{left:20.8333333333%}.semi-col-xs-pull-5{right:20.8333333333%}.semi-col-xs-offset-5{margin-left:20.8333333333%}.semi-col-xs-order-5{order:5}.semi-col-xs-6{display:block;box-sizing:border-box;width:25%}.semi-col-xs-push-6{left:25%}.semi-col-xs-pull-6{right:25%}.semi-col-xs-offset-6{margin-left:25%}.semi-col-xs-order-6{order:6}.semi-col-xs-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-xs-push-7{left:29.1666666667%}.semi-col-xs-pull-7{right:29.1666666667%}.semi-col-xs-offset-7{margin-left:29.1666666667%}.semi-col-xs-order-7{order:7}.semi-col-xs-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-xs-push-8{left:33.3333333333%}.semi-col-xs-pull-8{right:33.3333333333%}.semi-col-xs-offset-8{margin-left:33.3333333333%}.semi-col-xs-order-8{order:8}.semi-col-xs-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-xs-push-9{left:37.5%}.semi-col-xs-pull-9{right:37.5%}.semi-col-xs-offset-9{margin-left:37.5%}.semi-col-xs-order-9{order:9}.semi-col-xs-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-xs-push-10{left:41.6666666667%}.semi-col-xs-pull-10{right:41.6666666667%}.semi-col-xs-offset-10{margin-left:41.6666666667%}.semi-col-xs-order-10{order:10}.semi-col-xs-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-xs-push-11{left:45.8333333333%}.semi-col-xs-pull-11{right:45.8333333333%}.semi-col-xs-offset-11{margin-left:45.8333333333%}.semi-col-xs-order-11{order:11}.semi-col-xs-12{display:block;box-sizing:border-box;width:50%}.semi-col-xs-push-12{left:50%}.semi-col-xs-pull-12{right:50%}.semi-col-xs-offset-12{margin-left:50%}.semi-col-xs-order-12{order:12}.semi-col-xs-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-xs-push-13{left:54.1666666667%}.semi-col-xs-pull-13{right:54.1666666667%}.semi-col-xs-offset-13{margin-left:54.1666666667%}.semi-col-xs-order-13{order:13}.semi-col-xs-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-xs-push-14{left:58.3333333333%}.semi-col-xs-pull-14{right:58.3333333333%}.semi-col-xs-offset-14{margin-left:58.3333333333%}.semi-col-xs-order-14{order:14}.semi-col-xs-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-xs-push-15{left:62.5%}.semi-col-xs-pull-15{right:62.5%}.semi-col-xs-offset-15{margin-left:62.5%}.semi-col-xs-order-15{order:15}.semi-col-xs-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-xs-push-16{left:66.6666666667%}.semi-col-xs-pull-16{right:66.6666666667%}.semi-col-xs-offset-16{margin-left:66.6666666667%}.semi-col-xs-order-16{order:16}.semi-col-xs-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-xs-push-17{left:70.8333333333%}.semi-col-xs-pull-17{right:70.8333333333%}.semi-col-xs-offset-17{margin-left:70.8333333333%}.semi-col-xs-order-17{order:17}.semi-col-xs-18{display:block;box-sizing:border-box;width:75%}.semi-col-xs-push-18{left:75%}.semi-col-xs-pull-18{right:75%}.semi-col-xs-offset-18{margin-left:75%}.semi-col-xs-order-18{order:18}.semi-col-xs-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-xs-push-19{left:79.1666666667%}.semi-col-xs-pull-19{right:79.1666666667%}.semi-col-xs-offset-19{margin-left:79.1666666667%}.semi-col-xs-order-19{order:19}.semi-col-xs-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-xs-push-20{left:83.3333333333%}.semi-col-xs-pull-20{right:83.3333333333%}.semi-col-xs-offset-20{margin-left:83.3333333333%}.semi-col-xs-order-20{order:20}.semi-col-xs-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-xs-push-21{left:87.5%}.semi-col-xs-pull-21{right:87.5%}.semi-col-xs-offset-21{margin-left:87.5%}.semi-col-xs-order-21{order:21}.semi-col-xs-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-xs-push-22{left:91.6666666667%}.semi-col-xs-pull-22{right:91.6666666667%}.semi-col-xs-offset-22{margin-left:91.6666666667%}.semi-col-xs-order-22{order:22}.semi-col-xs-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-xs-push-23{left:95.8333333333%}.semi-col-xs-pull-23{right:95.8333333333%}.semi-col-xs-offset-23{margin-left:95.8333333333%}.semi-col-xs-order-23{order:23}.semi-col-xs-24{display:block;box-sizing:border-box;width:100%}.semi-col-xs-push-24{left:100%}.semi-col-xs-pull-24{right:100%}.semi-col-xs-offset-24{margin-left:100%}.semi-col-xs-order-24{order:24}.semi-rtl .semi-col-xs-1,.semi-rtl .semi-col-xs-2,.semi-rtl .semi-col-xs-3,.semi-rtl .semi-col-xs-4,.semi-rtl .semi-col-xs-5,.semi-rtl .semi-col-xs-6,.semi-rtl .semi-col-xs-7,.semi-rtl .semi-col-xs-8,.semi-rtl .semi-col-xs-9,.semi-rtl .semi-col-xs-10,.semi-rtl .semi-col-xs-11,.semi-rtl .semi-col-xs-12,.semi-rtl .semi-col-xs-13,.semi-rtl .semi-col-xs-14,.semi-rtl .semi-col-xs-15,.semi-rtl .semi-col-xs-16,.semi-rtl .semi-col-xs-17,.semi-rtl .semi-col-xs-18,.semi-rtl .semi-col-xs-19,.semi-rtl .semi-col-xs-20,.semi-rtl .semi-col-xs-21,.semi-rtl .semi-col-xs-22,.semi-rtl .semi-col-xs-23,.semi-rtl .semi-col-xs-24{float:right}.semi-rtl .semi-col-xs-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-xs-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-xs-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-xs-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-xs-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-xs-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-xs-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-xs-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-xs-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-xs-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-xs-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-xs-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-xs-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-xs-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-xs-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-xs-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-xs-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-xs-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-xs-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-xs-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-xs-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-xs-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-xs-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-xs-offset-24{margin-left:auto;margin-right:100%}@media(min-width:576px){.semi-col-sm-1,.semi-col-sm-2,.semi-col-sm-3,.semi-col-sm-4,.semi-col-sm-5,.semi-col-sm-6,.semi-col-sm-7,.semi-col-sm-8,.semi-col-sm-9,.semi-col-sm-10,.semi-col-sm-11,.semi-col-sm-12,.semi-col-sm-13,.semi-col-sm-14,.semi-col-sm-15,.semi-col-sm-16,.semi-col-sm-17,.semi-col-sm-18,.semi-col-sm-19,.semi-col-sm-20,.semi-col-sm-21,.semi-col-sm-22,.semi-col-sm-23,.semi-col-sm-24{flex:0 0 auto;float:left}.semi-col-sm-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-sm-push-1{left:4.1666666667%}.semi-col-sm-pull-1{right:4.1666666667%}.semi-col-sm-offset-1{margin-left:4.1666666667%}.semi-col-sm-order-1{order:1}.semi-col-sm-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-sm-push-2{left:8.3333333333%}.semi-col-sm-pull-2{right:8.3333333333%}.semi-col-sm-offset-2{margin-left:8.3333333333%}.semi-col-sm-order-2{order:2}.semi-col-sm-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-sm-push-3{left:12.5%}.semi-col-sm-pull-3{right:12.5%}.semi-col-sm-offset-3{margin-left:12.5%}.semi-col-sm-order-3{order:3}.semi-col-sm-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-sm-push-4{left:16.6666666667%}.semi-col-sm-pull-4{right:16.6666666667%}.semi-col-sm-offset-4{margin-left:16.6666666667%}.semi-col-sm-order-4{order:4}.semi-col-sm-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-sm-push-5{left:20.8333333333%}.semi-col-sm-pull-5{right:20.8333333333%}.semi-col-sm-offset-5{margin-left:20.8333333333%}.semi-col-sm-order-5{order:5}.semi-col-sm-6{display:block;box-sizing:border-box;width:25%}.semi-col-sm-push-6{left:25%}.semi-col-sm-pull-6{right:25%}.semi-col-sm-offset-6{margin-left:25%}.semi-col-sm-order-6{order:6}.semi-col-sm-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-sm-push-7{left:29.1666666667%}.semi-col-sm-pull-7{right:29.1666666667%}.semi-col-sm-offset-7{margin-left:29.1666666667%}.semi-col-sm-order-7{order:7}.semi-col-sm-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-sm-push-8{left:33.3333333333%}.semi-col-sm-pull-8{right:33.3333333333%}.semi-col-sm-offset-8{margin-left:33.3333333333%}.semi-col-sm-order-8{order:8}.semi-col-sm-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-sm-push-9{left:37.5%}.semi-col-sm-pull-9{right:37.5%}.semi-col-sm-offset-9{margin-left:37.5%}.semi-col-sm-order-9{order:9}.semi-col-sm-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-sm-push-10{left:41.6666666667%}.semi-col-sm-pull-10{right:41.6666666667%}.semi-col-sm-offset-10{margin-left:41.6666666667%}.semi-col-sm-order-10{order:10}.semi-col-sm-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-sm-push-11{left:45.8333333333%}.semi-col-sm-pull-11{right:45.8333333333%}.semi-col-sm-offset-11{margin-left:45.8333333333%}.semi-col-sm-order-11{order:11}.semi-col-sm-12{display:block;box-sizing:border-box;width:50%}.semi-col-sm-push-12{left:50%}.semi-col-sm-pull-12{right:50%}.semi-col-sm-offset-12{margin-left:50%}.semi-col-sm-order-12{order:12}.semi-col-sm-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-sm-push-13{left:54.1666666667%}.semi-col-sm-pull-13{right:54.1666666667%}.semi-col-sm-offset-13{margin-left:54.1666666667%}.semi-col-sm-order-13{order:13}.semi-col-sm-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-sm-push-14{left:58.3333333333%}.semi-col-sm-pull-14{right:58.3333333333%}.semi-col-sm-offset-14{margin-left:58.3333333333%}.semi-col-sm-order-14{order:14}.semi-col-sm-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-sm-push-15{left:62.5%}.semi-col-sm-pull-15{right:62.5%}.semi-col-sm-offset-15{margin-left:62.5%}.semi-col-sm-order-15{order:15}.semi-col-sm-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-sm-push-16{left:66.6666666667%}.semi-col-sm-pull-16{right:66.6666666667%}.semi-col-sm-offset-16{margin-left:66.6666666667%}.semi-col-sm-order-16{order:16}.semi-col-sm-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-sm-push-17{left:70.8333333333%}.semi-col-sm-pull-17{right:70.8333333333%}.semi-col-sm-offset-17{margin-left:70.8333333333%}.semi-col-sm-order-17{order:17}.semi-col-sm-18{display:block;box-sizing:border-box;width:75%}.semi-col-sm-push-18{left:75%}.semi-col-sm-pull-18{right:75%}.semi-col-sm-offset-18{margin-left:75%}.semi-col-sm-order-18{order:18}.semi-col-sm-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-sm-push-19{left:79.1666666667%}.semi-col-sm-pull-19{right:79.1666666667%}.semi-col-sm-offset-19{margin-left:79.1666666667%}.semi-col-sm-order-19{order:19}.semi-col-sm-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-sm-push-20{left:83.3333333333%}.semi-col-sm-pull-20{right:83.3333333333%}.semi-col-sm-offset-20{margin-left:83.3333333333%}.semi-col-sm-order-20{order:20}.semi-col-sm-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-sm-push-21{left:87.5%}.semi-col-sm-pull-21{right:87.5%}.semi-col-sm-offset-21{margin-left:87.5%}.semi-col-sm-order-21{order:21}.semi-col-sm-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-sm-push-22{left:91.6666666667%}.semi-col-sm-pull-22{right:91.6666666667%}.semi-col-sm-offset-22{margin-left:91.6666666667%}.semi-col-sm-order-22{order:22}.semi-col-sm-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-sm-push-23{left:95.8333333333%}.semi-col-sm-pull-23{right:95.8333333333%}.semi-col-sm-offset-23{margin-left:95.8333333333%}.semi-col-sm-order-23{order:23}.semi-col-sm-24{display:block;box-sizing:border-box;width:100%}.semi-col-sm-push-24{left:100%}.semi-col-sm-pull-24{right:100%}.semi-col-sm-offset-24{margin-left:100%}.semi-col-sm-order-24{order:24}.semi-rtl .semi-col-sm-1,.semi-rtl .semi-col-sm-2,.semi-rtl .semi-col-sm-3,.semi-rtl .semi-col-sm-4,.semi-rtl .semi-col-sm-5,.semi-rtl .semi-col-sm-6,.semi-rtl .semi-col-sm-7,.semi-rtl .semi-col-sm-8,.semi-rtl .semi-col-sm-9,.semi-rtl .semi-col-sm-10,.semi-rtl .semi-col-sm-11,.semi-rtl .semi-col-sm-12,.semi-rtl .semi-col-sm-13,.semi-rtl .semi-col-sm-14,.semi-rtl .semi-col-sm-15,.semi-rtl .semi-col-sm-16,.semi-rtl .semi-col-sm-17,.semi-rtl .semi-col-sm-18,.semi-rtl .semi-col-sm-19,.semi-rtl .semi-col-sm-20,.semi-rtl .semi-col-sm-21,.semi-rtl .semi-col-sm-22,.semi-rtl .semi-col-sm-23,.semi-rtl .semi-col-sm-24{float:right}.semi-rtl .semi-col-sm-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-sm-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-sm-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-sm-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-sm-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-sm-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-sm-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-sm-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-sm-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-sm-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-sm-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-sm-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-sm-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-sm-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-sm-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-sm-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-sm-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-sm-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-sm-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-sm-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-sm-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-sm-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-sm-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-sm-offset-24{margin-left:auto;margin-right:100%}}@media(min-width:768px){.semi-col-md-1,.semi-col-md-2,.semi-col-md-3,.semi-col-md-4,.semi-col-md-5,.semi-col-md-6,.semi-col-md-7,.semi-col-md-8,.semi-col-md-9,.semi-col-md-10,.semi-col-md-11,.semi-col-md-12,.semi-col-md-13,.semi-col-md-14,.semi-col-md-15,.semi-col-md-16,.semi-col-md-17,.semi-col-md-18,.semi-col-md-19,.semi-col-md-20,.semi-col-md-21,.semi-col-md-22,.semi-col-md-23,.semi-col-md-24{flex:0 0 auto;float:left}.semi-col-md-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-md-push-1{left:4.1666666667%}.semi-col-md-pull-1{right:4.1666666667%}.semi-col-md-offset-1{margin-left:4.1666666667%}.semi-col-md-order-1{order:1}.semi-col-md-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-md-push-2{left:8.3333333333%}.semi-col-md-pull-2{right:8.3333333333%}.semi-col-md-offset-2{margin-left:8.3333333333%}.semi-col-md-order-2{order:2}.semi-col-md-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-md-push-3{left:12.5%}.semi-col-md-pull-3{right:12.5%}.semi-col-md-offset-3{margin-left:12.5%}.semi-col-md-order-3{order:3}.semi-col-md-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-md-push-4{left:16.6666666667%}.semi-col-md-pull-4{right:16.6666666667%}.semi-col-md-offset-4{margin-left:16.6666666667%}.semi-col-md-order-4{order:4}.semi-col-md-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-md-push-5{left:20.8333333333%}.semi-col-md-pull-5{right:20.8333333333%}.semi-col-md-offset-5{margin-left:20.8333333333%}.semi-col-md-order-5{order:5}.semi-col-md-6{display:block;box-sizing:border-box;width:25%}.semi-col-md-push-6{left:25%}.semi-col-md-pull-6{right:25%}.semi-col-md-offset-6{margin-left:25%}.semi-col-md-order-6{order:6}.semi-col-md-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-md-push-7{left:29.1666666667%}.semi-col-md-pull-7{right:29.1666666667%}.semi-col-md-offset-7{margin-left:29.1666666667%}.semi-col-md-order-7{order:7}.semi-col-md-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-md-push-8{left:33.3333333333%}.semi-col-md-pull-8{right:33.3333333333%}.semi-col-md-offset-8{margin-left:33.3333333333%}.semi-col-md-order-8{order:8}.semi-col-md-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-md-push-9{left:37.5%}.semi-col-md-pull-9{right:37.5%}.semi-col-md-offset-9{margin-left:37.5%}.semi-col-md-order-9{order:9}.semi-col-md-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-md-push-10{left:41.6666666667%}.semi-col-md-pull-10{right:41.6666666667%}.semi-col-md-offset-10{margin-left:41.6666666667%}.semi-col-md-order-10{order:10}.semi-col-md-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-md-push-11{left:45.8333333333%}.semi-col-md-pull-11{right:45.8333333333%}.semi-col-md-offset-11{margin-left:45.8333333333%}.semi-col-md-order-11{order:11}.semi-col-md-12{display:block;box-sizing:border-box;width:50%}.semi-col-md-push-12{left:50%}.semi-col-md-pull-12{right:50%}.semi-col-md-offset-12{margin-left:50%}.semi-col-md-order-12{order:12}.semi-col-md-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-md-push-13{left:54.1666666667%}.semi-col-md-pull-13{right:54.1666666667%}.semi-col-md-offset-13{margin-left:54.1666666667%}.semi-col-md-order-13{order:13}.semi-col-md-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-md-push-14{left:58.3333333333%}.semi-col-md-pull-14{right:58.3333333333%}.semi-col-md-offset-14{margin-left:58.3333333333%}.semi-col-md-order-14{order:14}.semi-col-md-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-md-push-15{left:62.5%}.semi-col-md-pull-15{right:62.5%}.semi-col-md-offset-15{margin-left:62.5%}.semi-col-md-order-15{order:15}.semi-col-md-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-md-push-16{left:66.6666666667%}.semi-col-md-pull-16{right:66.6666666667%}.semi-col-md-offset-16{margin-left:66.6666666667%}.semi-col-md-order-16{order:16}.semi-col-md-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-md-push-17{left:70.8333333333%}.semi-col-md-pull-17{right:70.8333333333%}.semi-col-md-offset-17{margin-left:70.8333333333%}.semi-col-md-order-17{order:17}.semi-col-md-18{display:block;box-sizing:border-box;width:75%}.semi-col-md-push-18{left:75%}.semi-col-md-pull-18{right:75%}.semi-col-md-offset-18{margin-left:75%}.semi-col-md-order-18{order:18}.semi-col-md-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-md-push-19{left:79.1666666667%}.semi-col-md-pull-19{right:79.1666666667%}.semi-col-md-offset-19{margin-left:79.1666666667%}.semi-col-md-order-19{order:19}.semi-col-md-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-md-push-20{left:83.3333333333%}.semi-col-md-pull-20{right:83.3333333333%}.semi-col-md-offset-20{margin-left:83.3333333333%}.semi-col-md-order-20{order:20}.semi-col-md-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-md-push-21{left:87.5%}.semi-col-md-pull-21{right:87.5%}.semi-col-md-offset-21{margin-left:87.5%}.semi-col-md-order-21{order:21}.semi-col-md-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-md-push-22{left:91.6666666667%}.semi-col-md-pull-22{right:91.6666666667%}.semi-col-md-offset-22{margin-left:91.6666666667%}.semi-col-md-order-22{order:22}.semi-col-md-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-md-push-23{left:95.8333333333%}.semi-col-md-pull-23{right:95.8333333333%}.semi-col-md-offset-23{margin-left:95.8333333333%}.semi-col-md-order-23{order:23}.semi-col-md-24{display:block;box-sizing:border-box;width:100%}.semi-col-md-push-24{left:100%}.semi-col-md-pull-24{right:100%}.semi-col-md-offset-24{margin-left:100%}.semi-col-md-order-24{order:24}.semi-rtl .semi-col-md-1,.semi-rtl .semi-col-md-2,.semi-rtl .semi-col-md-3,.semi-rtl .semi-col-md-4,.semi-rtl .semi-col-md-5,.semi-rtl .semi-col-md-6,.semi-rtl .semi-col-md-7,.semi-rtl .semi-col-md-8,.semi-rtl .semi-col-md-9,.semi-rtl .semi-col-md-10,.semi-rtl .semi-col-md-11,.semi-rtl .semi-col-md-12,.semi-rtl .semi-col-md-13,.semi-rtl .semi-col-md-14,.semi-rtl .semi-col-md-15,.semi-rtl .semi-col-md-16,.semi-rtl .semi-col-md-17,.semi-rtl .semi-col-md-18,.semi-rtl .semi-col-md-19,.semi-rtl .semi-col-md-20,.semi-rtl .semi-col-md-21,.semi-rtl .semi-col-md-22,.semi-rtl .semi-col-md-23,.semi-rtl .semi-col-md-24{float:right}.semi-rtl .semi-col-md-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-md-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-md-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-md-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-md-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-md-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-md-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-md-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-md-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-md-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-md-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-md-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-md-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-md-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-md-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-md-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-md-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-md-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-md-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-md-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-md-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-md-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-md-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-md-offset-24{margin-left:auto;margin-right:100%}}@media(min-width:992px){.semi-col-lg-1,.semi-col-lg-2,.semi-col-lg-3,.semi-col-lg-4,.semi-col-lg-5,.semi-col-lg-6,.semi-col-lg-7,.semi-col-lg-8,.semi-col-lg-9,.semi-col-lg-10,.semi-col-lg-11,.semi-col-lg-12,.semi-col-lg-13,.semi-col-lg-14,.semi-col-lg-15,.semi-col-lg-16,.semi-col-lg-17,.semi-col-lg-18,.semi-col-lg-19,.semi-col-lg-20,.semi-col-lg-21,.semi-col-lg-22,.semi-col-lg-23,.semi-col-lg-24{flex:0 0 auto;float:left}.semi-col-lg-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-lg-push-1{left:4.1666666667%}.semi-col-lg-pull-1{right:4.1666666667%}.semi-col-lg-offset-1{margin-left:4.1666666667%}.semi-col-lg-order-1{order:1}.semi-col-lg-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-lg-push-2{left:8.3333333333%}.semi-col-lg-pull-2{right:8.3333333333%}.semi-col-lg-offset-2{margin-left:8.3333333333%}.semi-col-lg-order-2{order:2}.semi-col-lg-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-lg-push-3{left:12.5%}.semi-col-lg-pull-3{right:12.5%}.semi-col-lg-offset-3{margin-left:12.5%}.semi-col-lg-order-3{order:3}.semi-col-lg-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-lg-push-4{left:16.6666666667%}.semi-col-lg-pull-4{right:16.6666666667%}.semi-col-lg-offset-4{margin-left:16.6666666667%}.semi-col-lg-order-4{order:4}.semi-col-lg-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-lg-push-5{left:20.8333333333%}.semi-col-lg-pull-5{right:20.8333333333%}.semi-col-lg-offset-5{margin-left:20.8333333333%}.semi-col-lg-order-5{order:5}.semi-col-lg-6{display:block;box-sizing:border-box;width:25%}.semi-col-lg-push-6{left:25%}.semi-col-lg-pull-6{right:25%}.semi-col-lg-offset-6{margin-left:25%}.semi-col-lg-order-6{order:6}.semi-col-lg-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-lg-push-7{left:29.1666666667%}.semi-col-lg-pull-7{right:29.1666666667%}.semi-col-lg-offset-7{margin-left:29.1666666667%}.semi-col-lg-order-7{order:7}.semi-col-lg-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-lg-push-8{left:33.3333333333%}.semi-col-lg-pull-8{right:33.3333333333%}.semi-col-lg-offset-8{margin-left:33.3333333333%}.semi-col-lg-order-8{order:8}.semi-col-lg-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-lg-push-9{left:37.5%}.semi-col-lg-pull-9{right:37.5%}.semi-col-lg-offset-9{margin-left:37.5%}.semi-col-lg-order-9{order:9}.semi-col-lg-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-lg-push-10{left:41.6666666667%}.semi-col-lg-pull-10{right:41.6666666667%}.semi-col-lg-offset-10{margin-left:41.6666666667%}.semi-col-lg-order-10{order:10}.semi-col-lg-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-lg-push-11{left:45.8333333333%}.semi-col-lg-pull-11{right:45.8333333333%}.semi-col-lg-offset-11{margin-left:45.8333333333%}.semi-col-lg-order-11{order:11}.semi-col-lg-12{display:block;box-sizing:border-box;width:50%}.semi-col-lg-push-12{left:50%}.semi-col-lg-pull-12{right:50%}.semi-col-lg-offset-12{margin-left:50%}.semi-col-lg-order-12{order:12}.semi-col-lg-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-lg-push-13{left:54.1666666667%}.semi-col-lg-pull-13{right:54.1666666667%}.semi-col-lg-offset-13{margin-left:54.1666666667%}.semi-col-lg-order-13{order:13}.semi-col-lg-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-lg-push-14{left:58.3333333333%}.semi-col-lg-pull-14{right:58.3333333333%}.semi-col-lg-offset-14{margin-left:58.3333333333%}.semi-col-lg-order-14{order:14}.semi-col-lg-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-lg-push-15{left:62.5%}.semi-col-lg-pull-15{right:62.5%}.semi-col-lg-offset-15{margin-left:62.5%}.semi-col-lg-order-15{order:15}.semi-col-lg-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-lg-push-16{left:66.6666666667%}.semi-col-lg-pull-16{right:66.6666666667%}.semi-col-lg-offset-16{margin-left:66.6666666667%}.semi-col-lg-order-16{order:16}.semi-col-lg-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-lg-push-17{left:70.8333333333%}.semi-col-lg-pull-17{right:70.8333333333%}.semi-col-lg-offset-17{margin-left:70.8333333333%}.semi-col-lg-order-17{order:17}.semi-col-lg-18{display:block;box-sizing:border-box;width:75%}.semi-col-lg-push-18{left:75%}.semi-col-lg-pull-18{right:75%}.semi-col-lg-offset-18{margin-left:75%}.semi-col-lg-order-18{order:18}.semi-col-lg-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-lg-push-19{left:79.1666666667%}.semi-col-lg-pull-19{right:79.1666666667%}.semi-col-lg-offset-19{margin-left:79.1666666667%}.semi-col-lg-order-19{order:19}.semi-col-lg-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-lg-push-20{left:83.3333333333%}.semi-col-lg-pull-20{right:83.3333333333%}.semi-col-lg-offset-20{margin-left:83.3333333333%}.semi-col-lg-order-20{order:20}.semi-col-lg-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-lg-push-21{left:87.5%}.semi-col-lg-pull-21{right:87.5%}.semi-col-lg-offset-21{margin-left:87.5%}.semi-col-lg-order-21{order:21}.semi-col-lg-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-lg-push-22{left:91.6666666667%}.semi-col-lg-pull-22{right:91.6666666667%}.semi-col-lg-offset-22{margin-left:91.6666666667%}.semi-col-lg-order-22{order:22}.semi-col-lg-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-lg-push-23{left:95.8333333333%}.semi-col-lg-pull-23{right:95.8333333333%}.semi-col-lg-offset-23{margin-left:95.8333333333%}.semi-col-lg-order-23{order:23}.semi-col-lg-24{display:block;box-sizing:border-box;width:100%}.semi-col-lg-push-24{left:100%}.semi-col-lg-pull-24{right:100%}.semi-col-lg-offset-24{margin-left:100%}.semi-col-lg-order-24{order:24}.semi-rtl .semi-col-lg-1,.semi-rtl .semi-col-lg-2,.semi-rtl .semi-col-lg-3,.semi-rtl .semi-col-lg-4,.semi-rtl .semi-col-lg-5,.semi-rtl .semi-col-lg-6,.semi-rtl .semi-col-lg-7,.semi-rtl .semi-col-lg-8,.semi-rtl .semi-col-lg-9,.semi-rtl .semi-col-lg-10,.semi-rtl .semi-col-lg-11,.semi-rtl .semi-col-lg-12,.semi-rtl .semi-col-lg-13,.semi-rtl .semi-col-lg-14,.semi-rtl .semi-col-lg-15,.semi-rtl .semi-col-lg-16,.semi-rtl .semi-col-lg-17,.semi-rtl .semi-col-lg-18,.semi-rtl .semi-col-lg-19,.semi-rtl .semi-col-lg-20,.semi-rtl .semi-col-lg-21,.semi-rtl .semi-col-lg-22,.semi-rtl .semi-col-lg-23,.semi-rtl .semi-col-lg-24{float:right}.semi-rtl .semi-col-lg-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-lg-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-lg-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-lg-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-lg-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-lg-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-lg-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-lg-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-lg-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-lg-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-lg-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-lg-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-lg-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-lg-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-lg-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-lg-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-lg-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-lg-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-lg-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-lg-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-lg-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-lg-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-lg-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-lg-offset-24{margin-left:auto;margin-right:100%}}@media(min-width:1200px){.semi-col-xl-1,.semi-col-xl-2,.semi-col-xl-3,.semi-col-xl-4,.semi-col-xl-5,.semi-col-xl-6,.semi-col-xl-7,.semi-col-xl-8,.semi-col-xl-9,.semi-col-xl-10,.semi-col-xl-11,.semi-col-xl-12,.semi-col-xl-13,.semi-col-xl-14,.semi-col-xl-15,.semi-col-xl-16,.semi-col-xl-17,.semi-col-xl-18,.semi-col-xl-19,.semi-col-xl-20,.semi-col-xl-21,.semi-col-xl-22,.semi-col-xl-23,.semi-col-xl-24{flex:0 0 auto;float:left}.semi-col-xl-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-xl-push-1{left:4.1666666667%}.semi-col-xl-pull-1{right:4.1666666667%}.semi-col-xl-offset-1{margin-left:4.1666666667%}.semi-col-xl-order-1{order:1}.semi-col-xl-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-xl-push-2{left:8.3333333333%}.semi-col-xl-pull-2{right:8.3333333333%}.semi-col-xl-offset-2{margin-left:8.3333333333%}.semi-col-xl-order-2{order:2}.semi-col-xl-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-xl-push-3{left:12.5%}.semi-col-xl-pull-3{right:12.5%}.semi-col-xl-offset-3{margin-left:12.5%}.semi-col-xl-order-3{order:3}.semi-col-xl-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-xl-push-4{left:16.6666666667%}.semi-col-xl-pull-4{right:16.6666666667%}.semi-col-xl-offset-4{margin-left:16.6666666667%}.semi-col-xl-order-4{order:4}.semi-col-xl-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-xl-push-5{left:20.8333333333%}.semi-col-xl-pull-5{right:20.8333333333%}.semi-col-xl-offset-5{margin-left:20.8333333333%}.semi-col-xl-order-5{order:5}.semi-col-xl-6{display:block;box-sizing:border-box;width:25%}.semi-col-xl-push-6{left:25%}.semi-col-xl-pull-6{right:25%}.semi-col-xl-offset-6{margin-left:25%}.semi-col-xl-order-6{order:6}.semi-col-xl-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-xl-push-7{left:29.1666666667%}.semi-col-xl-pull-7{right:29.1666666667%}.semi-col-xl-offset-7{margin-left:29.1666666667%}.semi-col-xl-order-7{order:7}.semi-col-xl-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-xl-push-8{left:33.3333333333%}.semi-col-xl-pull-8{right:33.3333333333%}.semi-col-xl-offset-8{margin-left:33.3333333333%}.semi-col-xl-order-8{order:8}.semi-col-xl-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-xl-push-9{left:37.5%}.semi-col-xl-pull-9{right:37.5%}.semi-col-xl-offset-9{margin-left:37.5%}.semi-col-xl-order-9{order:9}.semi-col-xl-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-xl-push-10{left:41.6666666667%}.semi-col-xl-pull-10{right:41.6666666667%}.semi-col-xl-offset-10{margin-left:41.6666666667%}.semi-col-xl-order-10{order:10}.semi-col-xl-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-xl-push-11{left:45.8333333333%}.semi-col-xl-pull-11{right:45.8333333333%}.semi-col-xl-offset-11{margin-left:45.8333333333%}.semi-col-xl-order-11{order:11}.semi-col-xl-12{display:block;box-sizing:border-box;width:50%}.semi-col-xl-push-12{left:50%}.semi-col-xl-pull-12{right:50%}.semi-col-xl-offset-12{margin-left:50%}.semi-col-xl-order-12{order:12}.semi-col-xl-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-xl-push-13{left:54.1666666667%}.semi-col-xl-pull-13{right:54.1666666667%}.semi-col-xl-offset-13{margin-left:54.1666666667%}.semi-col-xl-order-13{order:13}.semi-col-xl-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-xl-push-14{left:58.3333333333%}.semi-col-xl-pull-14{right:58.3333333333%}.semi-col-xl-offset-14{margin-left:58.3333333333%}.semi-col-xl-order-14{order:14}.semi-col-xl-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-xl-push-15{left:62.5%}.semi-col-xl-pull-15{right:62.5%}.semi-col-xl-offset-15{margin-left:62.5%}.semi-col-xl-order-15{order:15}.semi-col-xl-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-xl-push-16{left:66.6666666667%}.semi-col-xl-pull-16{right:66.6666666667%}.semi-col-xl-offset-16{margin-left:66.6666666667%}.semi-col-xl-order-16{order:16}.semi-col-xl-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-xl-push-17{left:70.8333333333%}.semi-col-xl-pull-17{right:70.8333333333%}.semi-col-xl-offset-17{margin-left:70.8333333333%}.semi-col-xl-order-17{order:17}.semi-col-xl-18{display:block;box-sizing:border-box;width:75%}.semi-col-xl-push-18{left:75%}.semi-col-xl-pull-18{right:75%}.semi-col-xl-offset-18{margin-left:75%}.semi-col-xl-order-18{order:18}.semi-col-xl-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-xl-push-19{left:79.1666666667%}.semi-col-xl-pull-19{right:79.1666666667%}.semi-col-xl-offset-19{margin-left:79.1666666667%}.semi-col-xl-order-19{order:19}.semi-col-xl-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-xl-push-20{left:83.3333333333%}.semi-col-xl-pull-20{right:83.3333333333%}.semi-col-xl-offset-20{margin-left:83.3333333333%}.semi-col-xl-order-20{order:20}.semi-col-xl-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-xl-push-21{left:87.5%}.semi-col-xl-pull-21{right:87.5%}.semi-col-xl-offset-21{margin-left:87.5%}.semi-col-xl-order-21{order:21}.semi-col-xl-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-xl-push-22{left:91.6666666667%}.semi-col-xl-pull-22{right:91.6666666667%}.semi-col-xl-offset-22{margin-left:91.6666666667%}.semi-col-xl-order-22{order:22}.semi-col-xl-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-xl-push-23{left:95.8333333333%}.semi-col-xl-pull-23{right:95.8333333333%}.semi-col-xl-offset-23{margin-left:95.8333333333%}.semi-col-xl-order-23{order:23}.semi-col-xl-24{display:block;box-sizing:border-box;width:100%}.semi-col-xl-push-24{left:100%}.semi-col-xl-pull-24{right:100%}.semi-col-xl-offset-24{margin-left:100%}.semi-col-xl-order-24{order:24}.semi-rtl .semi-col-xl-1,.semi-rtl .semi-col-xl-2,.semi-rtl .semi-col-xl-3,.semi-rtl .semi-col-xl-4,.semi-rtl .semi-col-xl-5,.semi-rtl .semi-col-xl-6,.semi-rtl .semi-col-xl-7,.semi-rtl .semi-col-xl-8,.semi-rtl .semi-col-xl-9,.semi-rtl .semi-col-xl-10,.semi-rtl .semi-col-xl-11,.semi-rtl .semi-col-xl-12,.semi-rtl .semi-col-xl-13,.semi-rtl .semi-col-xl-14,.semi-rtl .semi-col-xl-15,.semi-rtl .semi-col-xl-16,.semi-rtl .semi-col-xl-17,.semi-rtl .semi-col-xl-18,.semi-rtl .semi-col-xl-19,.semi-rtl .semi-col-xl-20,.semi-rtl .semi-col-xl-21,.semi-rtl .semi-col-xl-22,.semi-rtl .semi-col-xl-23,.semi-rtl .semi-col-xl-24{float:right}.semi-rtl .semi-col-xl-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-xl-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-xl-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-xl-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-xl-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-xl-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-xl-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-xl-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-xl-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-xl-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-xl-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-xl-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-xl-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-xl-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-xl-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-xl-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-xl-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-xl-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-xl-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-xl-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-xl-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-xl-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-xl-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-xl-offset-24{margin-left:auto;margin-right:100%}}@media(min-width:1600px){.semi-col-xxl-1,.semi-col-xxl-2,.semi-col-xxl-3,.semi-col-xxl-4,.semi-col-xxl-5,.semi-col-xxl-6,.semi-col-xxl-7,.semi-col-xxl-8,.semi-col-xxl-9,.semi-col-xxl-10,.semi-col-xxl-11,.semi-col-xxl-12,.semi-col-xxl-13,.semi-col-xxl-14,.semi-col-xxl-15,.semi-col-xxl-16,.semi-col-xxl-17,.semi-col-xxl-18,.semi-col-xxl-19,.semi-col-xxl-20,.semi-col-xxl-21,.semi-col-xxl-22,.semi-col-xxl-23,.semi-col-xxl-24{flex:0 0 auto;float:left}.semi-col-xxl-1{display:block;box-sizing:border-box;width:4.1666666667%}.semi-col-xxl-push-1{left:4.1666666667%}.semi-col-xxl-pull-1{right:4.1666666667%}.semi-col-xxl-offset-1{margin-left:4.1666666667%}.semi-col-xxl-order-1{order:1}.semi-col-xxl-2{display:block;box-sizing:border-box;width:8.3333333333%}.semi-col-xxl-push-2{left:8.3333333333%}.semi-col-xxl-pull-2{right:8.3333333333%}.semi-col-xxl-offset-2{margin-left:8.3333333333%}.semi-col-xxl-order-2{order:2}.semi-col-xxl-3{display:block;box-sizing:border-box;width:12.5%}.semi-col-xxl-push-3{left:12.5%}.semi-col-xxl-pull-3{right:12.5%}.semi-col-xxl-offset-3{margin-left:12.5%}.semi-col-xxl-order-3{order:3}.semi-col-xxl-4{display:block;box-sizing:border-box;width:16.6666666667%}.semi-col-xxl-push-4{left:16.6666666667%}.semi-col-xxl-pull-4{right:16.6666666667%}.semi-col-xxl-offset-4{margin-left:16.6666666667%}.semi-col-xxl-order-4{order:4}.semi-col-xxl-5{display:block;box-sizing:border-box;width:20.8333333333%}.semi-col-xxl-push-5{left:20.8333333333%}.semi-col-xxl-pull-5{right:20.8333333333%}.semi-col-xxl-offset-5{margin-left:20.8333333333%}.semi-col-xxl-order-5{order:5}.semi-col-xxl-6{display:block;box-sizing:border-box;width:25%}.semi-col-xxl-push-6{left:25%}.semi-col-xxl-pull-6{right:25%}.semi-col-xxl-offset-6{margin-left:25%}.semi-col-xxl-order-6{order:6}.semi-col-xxl-7{display:block;box-sizing:border-box;width:29.1666666667%}.semi-col-xxl-push-7{left:29.1666666667%}.semi-col-xxl-pull-7{right:29.1666666667%}.semi-col-xxl-offset-7{margin-left:29.1666666667%}.semi-col-xxl-order-7{order:7}.semi-col-xxl-8{display:block;box-sizing:border-box;width:33.3333333333%}.semi-col-xxl-push-8{left:33.3333333333%}.semi-col-xxl-pull-8{right:33.3333333333%}.semi-col-xxl-offset-8{margin-left:33.3333333333%}.semi-col-xxl-order-8{order:8}.semi-col-xxl-9{display:block;box-sizing:border-box;width:37.5%}.semi-col-xxl-push-9{left:37.5%}.semi-col-xxl-pull-9{right:37.5%}.semi-col-xxl-offset-9{margin-left:37.5%}.semi-col-xxl-order-9{order:9}.semi-col-xxl-10{display:block;box-sizing:border-box;width:41.6666666667%}.semi-col-xxl-push-10{left:41.6666666667%}.semi-col-xxl-pull-10{right:41.6666666667%}.semi-col-xxl-offset-10{margin-left:41.6666666667%}.semi-col-xxl-order-10{order:10}.semi-col-xxl-11{display:block;box-sizing:border-box;width:45.8333333333%}.semi-col-xxl-push-11{left:45.8333333333%}.semi-col-xxl-pull-11{right:45.8333333333%}.semi-col-xxl-offset-11{margin-left:45.8333333333%}.semi-col-xxl-order-11{order:11}.semi-col-xxl-12{display:block;box-sizing:border-box;width:50%}.semi-col-xxl-push-12{left:50%}.semi-col-xxl-pull-12{right:50%}.semi-col-xxl-offset-12{margin-left:50%}.semi-col-xxl-order-12{order:12}.semi-col-xxl-13{display:block;box-sizing:border-box;width:54.1666666667%}.semi-col-xxl-push-13{left:54.1666666667%}.semi-col-xxl-pull-13{right:54.1666666667%}.semi-col-xxl-offset-13{margin-left:54.1666666667%}.semi-col-xxl-order-13{order:13}.semi-col-xxl-14{display:block;box-sizing:border-box;width:58.3333333333%}.semi-col-xxl-push-14{left:58.3333333333%}.semi-col-xxl-pull-14{right:58.3333333333%}.semi-col-xxl-offset-14{margin-left:58.3333333333%}.semi-col-xxl-order-14{order:14}.semi-col-xxl-15{display:block;box-sizing:border-box;width:62.5%}.semi-col-xxl-push-15{left:62.5%}.semi-col-xxl-pull-15{right:62.5%}.semi-col-xxl-offset-15{margin-left:62.5%}.semi-col-xxl-order-15{order:15}.semi-col-xxl-16{display:block;box-sizing:border-box;width:66.6666666667%}.semi-col-xxl-push-16{left:66.6666666667%}.semi-col-xxl-pull-16{right:66.6666666667%}.semi-col-xxl-offset-16{margin-left:66.6666666667%}.semi-col-xxl-order-16{order:16}.semi-col-xxl-17{display:block;box-sizing:border-box;width:70.8333333333%}.semi-col-xxl-push-17{left:70.8333333333%}.semi-col-xxl-pull-17{right:70.8333333333%}.semi-col-xxl-offset-17{margin-left:70.8333333333%}.semi-col-xxl-order-17{order:17}.semi-col-xxl-18{display:block;box-sizing:border-box;width:75%}.semi-col-xxl-push-18{left:75%}.semi-col-xxl-pull-18{right:75%}.semi-col-xxl-offset-18{margin-left:75%}.semi-col-xxl-order-18{order:18}.semi-col-xxl-19{display:block;box-sizing:border-box;width:79.1666666667%}.semi-col-xxl-push-19{left:79.1666666667%}.semi-col-xxl-pull-19{right:79.1666666667%}.semi-col-xxl-offset-19{margin-left:79.1666666667%}.semi-col-xxl-order-19{order:19}.semi-col-xxl-20{display:block;box-sizing:border-box;width:83.3333333333%}.semi-col-xxl-push-20{left:83.3333333333%}.semi-col-xxl-pull-20{right:83.3333333333%}.semi-col-xxl-offset-20{margin-left:83.3333333333%}.semi-col-xxl-order-20{order:20}.semi-col-xxl-21{display:block;box-sizing:border-box;width:87.5%}.semi-col-xxl-push-21{left:87.5%}.semi-col-xxl-pull-21{right:87.5%}.semi-col-xxl-offset-21{margin-left:87.5%}.semi-col-xxl-order-21{order:21}.semi-col-xxl-22{display:block;box-sizing:border-box;width:91.6666666667%}.semi-col-xxl-push-22{left:91.6666666667%}.semi-col-xxl-pull-22{right:91.6666666667%}.semi-col-xxl-offset-22{margin-left:91.6666666667%}.semi-col-xxl-order-22{order:22}.semi-col-xxl-23{display:block;box-sizing:border-box;width:95.8333333333%}.semi-col-xxl-push-23{left:95.8333333333%}.semi-col-xxl-pull-23{right:95.8333333333%}.semi-col-xxl-offset-23{margin-left:95.8333333333%}.semi-col-xxl-order-23{order:23}.semi-col-xxl-24{display:block;box-sizing:border-box;width:100%}.semi-col-xxl-push-24{left:100%}.semi-col-xxl-pull-24{right:100%}.semi-col-xxl-offset-24{margin-left:100%}.semi-col-xxl-order-24{order:24}.semi-rtl .semi-col-xxl-1,.semi-rtl .semi-col-xxl-2,.semi-rtl .semi-col-xxl-3,.semi-rtl .semi-col-xxl-4,.semi-rtl .semi-col-xxl-5,.semi-rtl .semi-col-xxl-6,.semi-rtl .semi-col-xxl-7,.semi-rtl .semi-col-xxl-8,.semi-rtl .semi-col-xxl-9,.semi-rtl .semi-col-xxl-10,.semi-rtl .semi-col-xxl-11,.semi-rtl .semi-col-xxl-12,.semi-rtl .semi-col-xxl-13,.semi-rtl .semi-col-xxl-14,.semi-rtl .semi-col-xxl-15,.semi-rtl .semi-col-xxl-16,.semi-rtl .semi-col-xxl-17,.semi-rtl .semi-col-xxl-18,.semi-rtl .semi-col-xxl-19,.semi-rtl .semi-col-xxl-20,.semi-rtl .semi-col-xxl-21,.semi-rtl .semi-col-xxl-22,.semi-rtl .semi-col-xxl-23,.semi-rtl .semi-col-xxl-24{float:right}.semi-rtl .semi-col-xxl-offset-1{margin-left:auto;margin-right:4.1666666667%}.semi-rtl .semi-col-xxl-offset-2{margin-left:auto;margin-right:8.3333333333%}.semi-rtl .semi-col-xxl-offset-3{margin-left:auto;margin-right:12.5%}.semi-rtl .semi-col-xxl-offset-4{margin-left:auto;margin-right:16.6666666667%}.semi-rtl .semi-col-xxl-offset-5{margin-left:auto;margin-right:20.8333333333%}.semi-rtl .semi-col-xxl-offset-6{margin-left:auto;margin-right:25%}.semi-rtl .semi-col-xxl-offset-7{margin-left:auto;margin-right:29.1666666667%}.semi-rtl .semi-col-xxl-offset-8{margin-left:auto;margin-right:33.3333333333%}.semi-rtl .semi-col-xxl-offset-9{margin-left:auto;margin-right:37.5%}.semi-rtl .semi-col-xxl-offset-10{margin-left:auto;margin-right:41.6666666667%}.semi-rtl .semi-col-xxl-offset-11{margin-left:auto;margin-right:45.8333333333%}.semi-rtl .semi-col-xxl-offset-12{margin-left:auto;margin-right:50%}.semi-rtl .semi-col-xxl-offset-13{margin-left:auto;margin-right:54.1666666667%}.semi-rtl .semi-col-xxl-offset-14{margin-left:auto;margin-right:58.3333333333%}.semi-rtl .semi-col-xxl-offset-15{margin-left:auto;margin-right:62.5%}.semi-rtl .semi-col-xxl-offset-16{margin-left:auto;margin-right:66.6666666667%}.semi-rtl .semi-col-xxl-offset-17{margin-left:auto;margin-right:70.8333333333%}.semi-rtl .semi-col-xxl-offset-18{margin-left:auto;margin-right:75%}.semi-rtl .semi-col-xxl-offset-19{margin-left:auto;margin-right:79.1666666667%}.semi-rtl .semi-col-xxl-offset-20{margin-left:auto;margin-right:83.3333333333%}.semi-rtl .semi-col-xxl-offset-21{margin-left:auto;margin-right:87.5%}.semi-rtl .semi-col-xxl-offset-22{margin-left:auto;margin-right:91.6666666667%}.semi-rtl .semi-col-xxl-offset-23{margin-left:auto;margin-right:95.8333333333%}.semi-rtl .semi-col-xxl-offset-24{margin-left:auto;margin-right:100%}}.semi-rtl .semi-row,.semi-rtl .semi-row-flex,.semi-portal-rtl .semi-row,.semi-portal-rtl .semi-row-flex{direction:rtl}.semi-highlight-tag{color:var(--semi-color-highlight);background-color:var(--semi-color-highlight-bg);font-weight:600}.semi-hotKeys{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap;vertical-align:bottom;display:flex;justify-content:center;align-items:center;display:inline-flex}.semi-hotKeys-content{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;border-radius:2px;height:20px;padding:2px 8px;border:1px;background-color:var(--semi-color-fill-0);color:var(--semi-color-text-2)}.semi-hotKeys-split{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin:0 3px;color:var(--semi-color-text-0)}.semi-image{border-radius:var(--semi-border-radius-small);position:relative;display:inline-block;overflow:hidden}.semi-image img{max-width:none}.semi-image-tooltip-children-wrapper{display:inline-flex;width:fit-content;height:fit-content;vertical-align:middle}.semi-image-img{vertical-align:top;border-radius:inherit;-webkit-user-select:none;user-select:none}.semi-image-img-preview{cursor:zoom-in}.semi-image-img-error{opacity:0}.semi-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.semi-image-status{width:100%;height:100%;display:flex;justify-content:center;align-items:center;border-radius:var(--semi-border-radius-small);background-color:var(--semi-color-fill-0);color:var(--semi-color-disabled-text)}.semi-image-preview{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1070;background-color:var(--semi-color-overlay-bg);transition:opacity .5s;overflow:hidden}.semi-image-preview-popup{position:absolute}.semi-image-preview .semi-image-preview-hide{opacity:0}.semi-image-preview-icon{display:flex;justify-content:center;align-items:center;width:40px;height:40px;border-radius:50%;position:absolute;top:50%;transform:translateY(-50%);background:#000000bf;cursor:pointer;color:var(--semi-color-white)}.semi-image-preview-prev{left:24px}.semi-image-preview-next{right:24px}.semi-image-preview-header{position:absolute;top:0;left:0;right:0;font-weight:400;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-white);height:60px;display:flex;justify-content:space-between;align-items:center;padding:0 24px;z-index:1;pointer-events:none}.semi-image-preview-header-title{flex:1}.semi-image-preview-header-close{display:flex;justify-content:center;align-items:center;cursor:pointer;width:30px;height:30px;border-radius:50%;pointer-events:auto}.semi-image-preview-header-close:hover{background-color:#000000bf}.semi-image-preview-footer{display:flex;align-items:center}.semi-image-preview-footer-content{padding:0 16px;background:#000000bf;border-radius:var(--semi-border-radius-medium);height:48px}.semi-image-preview-footer-wrapper{position:absolute;left:50%;bottom:16px;transform:translate(-50%)}.semi-image-preview-footer-page{-webkit-user-select:none;user-select:none;color:var(--semi-color-white);font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin:0 12px}.semi-image-preview-footer .semi-icon{color:var(--semi-color-white);cursor:pointer}.semi-image-preview-footer-gap{margin-left:16px}.semi-image-preview-footer .semi-slider{width:132px;padding:0 16px}.semi-image-preview-footer .semi-slider .semi-slider-rail{color:var(--semi-color-white);height:2px}.semi-image-preview-footer .semi-slider .semi-slider-track{height:2px}.semi-image-preview-footer .semi-slider .semi-slider-handle{width:16px;height:16px;margin-top:8px;box-sizing:border-box}.semi-image-preview-footer .semi-divider{background:#ffffff80;margin:0 16px}.semi-image-preview-footer .semi-image-preview-footer-disabled{color:#f9f9f959;cursor:default;pointer-events:none}.semi-image-preview-image{position:relative;height:100%;display:flex;justify-content:center;align-items:center}.semi-image-preview-image-img{position:absolute;transform:scaleZ(1) var(--semi-transform-rotate-none);z-index:0;-webkit-user-select:none;user-select:none}.semi-image-preview-image-spin{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.semi-image-preview-image-spin .semi-spin-wrapper{color:#ccc}@keyframes spinner{to{transform:var(--semi-transform_rotate-clockwise360deg)}}img[src=""],img:not([src]){opacity:0}.semi-rtl .semi-image-preview,.semi-portal-rtl .semi-image-preview,.semi-rtl .semi-image-preview-group,.semi-portal-rtl .semi-image-preview-group{direction:rtl}.semi-rtl .semi-image-preview-prev,.semi-portal-rtl .semi-image-preview-prev{right:24px;left:auto;transform:var(--semi-transform_rotate-clockwise180deg)}.semi-rtl .semi-image-preview-next,.semi-portal-rtl .semi-image-preview-next{left:24px;right:auto;transform:var(--semi-transform_rotate-clockwise180deg)}.semi-rtl .semi-image-preview-footer-page,.semi-portal-rtl .semi-image-preview-footer-page{display:flex;direction:rtl}.semi-rtl .semi-image-preview-footer-gap,.semi-portal-rtl .semi-image-preview-footer-gap{margin-right:16px;margin-left:0}.semi-rtl .semi-image-preview-footer .semi-icon-chevron_left,.semi-portal-rtl .semi-image-preview-footer .semi-icon-chevron_left,.semi-rtl .semi-image-preview-footer .semi-icon-chevron_right,.semi-portal-rtl .semi-image-preview-footer .semi-icon-chevron_right{transform:var(--semi-transform_rotate-clockwise180deg)}@keyframes semi-input-active{0%{transform:scale(1)}to{transform:scale(.97)}}@keyframes semi-input-inactive{0%{transform:scale(.97)}to{transform:scale(1)}}.semi-input{transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-input-wrapper{display:inline-block;position:relative;vertical-align:middle;box-shadow:none;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--semi-color-fill-0);border:1px rgba(0,0,0,0) solid;border-radius:var(--semi-border-radius-small);width:100%;outline:none;cursor:text;box-sizing:border-box;color:var(--semi-color-text-0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-input-wrapper-default{height:32px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:30px}.semi-input-wrapper-small{height:24px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:22px}.semi-input-wrapper-large{height:40px;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:38px}.semi-input-wrapper:hover{background-color:var(--semi-color-fill-1);border-color:#0000}.semi-input-wrapper-focus{background-color:var(--semi-color-fill-0);border:var(--semi-color-focus-border) solid 1px}.semi-input-wrapper-focus:hover{background-color:var(--semi-color-fill-0);border-color:var(--semi-color-focus-border)}.semi-input-wrapper-focus:active{background-color:var(--semi-color-fill-2);border-color:var(--semi-color-focus-border)}.semi-input-wrapper.semi-input-readonly{cursor:default}.semi-input-wrapper-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-input-wrapper-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-input-wrapper-error.semi-input-wrapper-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-wrapper-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger)}.semi-input-wrapper-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-input-wrapper-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-input-wrapper-warning.semi-input-wrapper-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-wrapper-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning)}.semi-input-wrapper__with-prefix{display:inline-flex;align-items:center}.semi-input-wrapper__with-prefix .semi-input{padding-left:0}.semi-input-wrapper__with-suffix{display:inline-flex;align-items:center}.semi-input-wrapper__with-suffix .semi-input{padding-right:0}.semi-input-wrapper-clearable,.semi-input-wrapper-modebtn{display:inline-flex;align-items:center}.semi-input-wrapper-hidden{border:none}.semi-input-wrapper .semi-icon{color:var(--semi-color-text-2)}.semi-input-wrapper .semi-input-clearbtn,.semi-input-wrapper .semi-input-modebtn{color:var(--semi-color-primary-hover)}.semi-input-wrapper .semi-input-clearbtn>svg,.semi-input-wrapper .semi-input-modebtn>svg{pointer-events:none}.semi-input-wrapper .semi-input-clearbtn:hover,.semi-input-wrapper .semi-input-modebtn:hover{cursor:pointer}.semi-input-wrapper .semi-input-clearbtn:hover .semi-icon,.semi-input-wrapper .semi-input-modebtn:hover .semi-icon{color:var(--semi-color-primary-hover)}.semi-input-wrapper .semi-input-clearbtn:focus-visible,.semi-input-wrapper .semi-input-modebtn:focus-visible{border-radius:var(--semi-border-radius-small);outline:2px solid var(--semi-color-primary-light-active);outline-offset:-1px}.semi-input-wrapper__with-suffix-icon.semi-input-wrapper-clearable:not(.semi-input-wrapper__with-suffix-hidden) .semi-input-clearbtn{min-width:24px;justify-content:flex-end}.semi-input-wrapper-modebtn.semi-input-wrapper-clearable .semi-input-clearbtn{min-width:16px;justify-content:center}.semi-input-wrapper.semi-input-wrapper__with-append-only .semi-input{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper.semi-input-wrapper__with-append-only .semi-input:not(:last-child){border-right-style:none;border-radius:0}.semi-input-wrapper.semi-input-wrapper__with-prepend-only .semi-input{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-input-wrapper.semi-input-wrapper__with-prepend-only .semi-input:not(:last-child){border-right-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend,.semi-input-wrapper.semi-input-wrapper__with-append{display:inline-flex;align-items:center;background-color:#0000}.semi-input-wrapper.semi-input-wrapper__with-prepend:hover,.semi-input-wrapper.semi-input-wrapper__with-append:hover{background-color:#0000}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-focus,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-focus{border:1px rgba(0,0,0,0) solid;background-color:#0000}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input{background-color:var(--semi-color-fill-0);border:1px rgba(0,0,0,0) solid}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:hover,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:hover{background-color:var(--semi-color-fill-1)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:hover~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:hover~.semi-input-modebtn{background-color:var(--semi-color-fill-1)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus{border:1px var(--semi-color-focus-border) solid;background-color:var(--semi-color-fill-0)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus.semi-input-sibling-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus.semi-input-sibling-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus.semi-input-sibling-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus.semi-input-sibling-modebtn{border-right-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus.semi-input-sibling-modebtn+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus.semi-input-sibling-modebtn+.semi-input-clearbtn{border-right-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus~.semi-input-modebtn{box-sizing:border-box;background-color:var(--semi-color-fill-0)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus+.semi-input-clearbtn{border:1px var(--semi-color-focus-border) solid;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;border-left-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus+.semi-input-clearbtn:not(:last-child),.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus+.semi-input-clearbtn:not(:last-child){border-radius:0}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus~.semi-input-modebtn{border:1px var(--semi-color-focus-border) solid;border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;border-left-style:none}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:focus~.semi-input-modebtn:not(:last-child),.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:focus~.semi-input-modebtn:not(:last-child){border-radius:0}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:active,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:active{background-color:var(--semi-color-fill-2)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input:active~.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input:active~.semi-input-modebtn{background-color:var(--semi-color-fill-2)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn:hover{background-color:var(--semi-color-fill-0)}.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend .semi-input-modebtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append .semi-input-modebtn:hover:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error{border-color:#0000}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:hover+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:hover+.semi-input-modebtn{background-color:var(--semi-color-danger-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:focus,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:focus+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:focus+.semi-input-modebtn{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:active,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:active{background-color:var(--semi-color-danger-light-active)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input:active+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input:active+.semi-input-modebtn{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn:hover{background-color:var(--semi-color-danger-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-error .semi-input-modebtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-error .semi-input-modebtn:hover:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning{border-color:#0000}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:hover+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:hover+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:hover+.semi-input-modebtn{background-color:var(--semi-color-warning-light-hover)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:focus,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:focus+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:focus+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:focus+.semi-input-modebtn{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:active,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:active{background-color:var(--semi-color-warning-light-active)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input:active+.semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:active+.semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input:active+.semi-input-modebtn{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn:hover,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn:hover{background-color:var(--semi-color-warning-light-default)}.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-prepend.semi-input-wrapper-warning .semi-input-modebtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-clearbtn:hover:last-child,.semi-input-wrapper.semi-input-wrapper__with-append.semi-input-wrapper-warning .semi-input-modebtn:hover:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-wrapper-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:var(--semi-color-disabled-fill);-webkit-text-fill-color:var(--semi-color-disabled-text)}.semi-input-wrapper-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-input-wrapper-disabled .semi-input-append,.semi-input-wrapper-disabled .semi-input-prepend,.semi-input-wrapper-disabled .semi-input-suffix,.semi-input-wrapper-disabled .semi-input-prefix,.semi-input-wrapper-disabled .semi-icon{color:var(--semi-color-disabled-text)}.semi-input{border:none;outline:none;width:100%;color:inherit;padding-left:12px;padding-right:12px;background-color:#0000;box-sizing:border-box}.semi-input:placeholder-shown{text-overflow:ellipsis}.semi-input[type=password]::-ms-reveal,.semi-input[type=password]::-ms-clear{display:none}.semi-input[type=search]::-webkit-search-cancel-button{display:none}.semi-input::placeholder{color:var(--semi-color-text-2)}.semi-input-large{height:38px;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:38px}.semi-input-small{height:22px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:22px}.semi-input-default{height:30px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:30px}.semi-input-disabled{cursor:not-allowed;color:inherit}.semi-input-inset-label{margin:0 12px;font-weight:600;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-input-prefix,.semi-input-suffix{display:flex;justify-content:center;align-items:center}.semi-input-prefix-text,.semi-input-suffix-text{margin:0 12px;color:var(--semi-color-text-2);font-weight:600;white-space:nowrap}.semi-input-prefix-icon,.semi-input-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-input-suffix{display:flex;justify-content:center;align-items:center}.semi-input-clearbtn,.semi-input-modebtn{display:flex;align-items:center;height:100%;justify-content:center;min-width:32px}.semi-input-clearbtn+.semi-input-suffix+.semi-input-suffix-text{margin-left:0}.semi-input-clearbtn+.semi-input-suffix+.semi-input-suffix-icon{margin-left:0}.semi-input-suffix-hidden{display:none}.semi-input-prepend,.semi-input-append{height:100%;display:flex;align-items:center;background-color:var(--semi-color-fill-0);color:var(--semi-color-text-2);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;flex-shrink:0}.semi-input-prepend-icon,.semi-input-prepend-text,.semi-input-append-icon,.semi-input-append-text{padding:0 12px}.semi-input-append{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;border-left:1px rgba(0,0,0,0) solid}.semi-input-prepend{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small);border-right:1px rgba(0,0,0,0) solid}.semi-input-disabled::placeholder{color:var(--semi-color-disabled-text)}.semi-input-group{display:inline-flex;align-items:center;align-content:center;flex-wrap:wrap}.semi-input-group .semi-select,.semi-input-group .semi-tagInput,.semi-input-group .semi-cascader,.semi-input-group .semi-tree-select,.semi-input-group>.semi-input-wrapper{border-radius:0}.semi-input-group .semi-select:first-child,.semi-input-group .semi-tagInput:first-child,.semi-input-group .semi-cascader:first-child,.semi-input-group .semi-tree-select:first-child,.semi-input-group>.semi-input-wrapper:first-child{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-input-group .semi-select:last-child,.semi-input-group .semi-tagInput:last-child,.semi-input-group .semi-cascader:last-child,.semi-input-group .semi-tree-select:last-child,.semi-input-group>.semi-input-wrapper:last-child{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-group .semi-select:not(:last-child),.semi-input-group .semi-tagInput:not(:last-child),.semi-input-group .semi-cascader:not(:last-child),.semi-input-group .semi-tree-select:not(:last-child),.semi-input-group>.semi-input-wrapper:not(:last-child){position:relative}.semi-input-group .semi-select:not(:last-child):after,.semi-input-group .semi-tagInput:not(:last-child):after,.semi-input-group .semi-cascader:not(:last-child):after,.semi-input-group .semi-tree-select:not(:last-child):after,.semi-input-group>.semi-input-wrapper:not(:last-child):after{content:"";background-color:var(--semi-color-border);width:1px;position:absolute;right:-1px;top:1px;bottom:1px}.semi-input-group .semi-select{overflow-y:visible}.semi-input-group .semi-input-number .semi-input-wrapper,.semi-input-group .semi-input-number .semi-datepicker-range-input,.semi-input-group .semi-datepicker .semi-input-wrapper,.semi-input-group .semi-datepicker .semi-datepicker-range-input,.semi-input-group .semi-timepicker .semi-input-wrapper,.semi-input-group .semi-timepicker .semi-datepicker-range-input,.semi-input-group .semi-autocomplete .semi-input-wrapper,.semi-input-group .semi-autocomplete .semi-datepicker-range-input{border-radius:0}.semi-input-group .semi-input-number:first-child .semi-input-wrapper,.semi-input-group .semi-input-number:first-child .semi-datepicker-range-input,.semi-input-group .semi-datepicker:first-child .semi-input-wrapper,.semi-input-group .semi-datepicker:first-child .semi-datepicker-range-input,.semi-input-group .semi-timepicker:first-child .semi-input-wrapper,.semi-input-group .semi-timepicker:first-child .semi-datepicker-range-input,.semi-input-group .semi-autocomplete:first-child .semi-input-wrapper,.semi-input-group .semi-autocomplete:first-child .semi-datepicker-range-input{border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-input-group .semi-input-number:last-child .semi-input-wrapper,.semi-input-group .semi-input-number:last-child .semi-datepicker-range-input,.semi-input-group .semi-datepicker:last-child .semi-input-wrapper,.semi-input-group .semi-datepicker:last-child .semi-datepicker-range-input,.semi-input-group .semi-timepicker:last-child .semi-input-wrapper,.semi-input-group .semi-timepicker:last-child .semi-datepicker-range-input,.semi-input-group .semi-autocomplete:last-child .semi-input-wrapper,.semi-input-group .semi-autocomplete:last-child .semi-datepicker-range-input{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0}.semi-input-group .semi-input-number:not(:last-child),.semi-input-group .semi-datepicker:not(:last-child),.semi-input-group .semi-timepicker:not(:last-child),.semi-input-group .semi-autocomplete:not(:last-child){position:relative}.semi-input-group .semi-input-number:not(:last-child):after,.semi-input-group .semi-datepicker:not(:last-child):after,.semi-input-group .semi-timepicker:not(:last-child):after,.semi-input-group .semi-autocomplete:not(:last-child):after{content:"";background-color:var(--semi-color-border);width:1px;position:absolute;right:-1px;top:1px;bottom:1px}.semi-input-group-wrapper-with-top-label{margin-top:16px;margin-bottom:16px}.semi-input-group-wrapper-with-top-label .semi-input-group{display:flex}.semi-input-group-wrapper-with-top-label .semi-input-group .semi-form-field{margin-top:0;margin-bottom:0}.semi-input-only_border,.semi-input-only_border:hover{background:#0000;border-color:var(--semi-color-border)}.semi-input-only_border:focus-within{background:#0000}.semi-input-borderless:not(:focus-within):not(:hover){background-color:#0000;border-color:#0000}.semi-input-borderless:focus-within:not(:active){background-color:#0000}.semi-input-borderless.semi-input-wrapper-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-input-borderless.semi-input-wrapper-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-input-number{display:inline-flex;align-items:center;box-sizing:border-box;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-input-number-suffix-btns{display:inline-flex;flex-direction:column;margin-left:4px;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-small);background-color:var(--semi-color-bg-2);box-sizing:border-box}.semi-input-number-suffix-btns>.semi-input-number-button{height:50%;width:14px;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:0;color:var(--semi-color-text-2)}.semi-input-number-suffix-btns>.semi-input-number-button-up:not(.semi-input-number-button-up-not-allowed):hover,.semi-input-number-suffix-btns>.semi-input-number-button-down:not(.semi-input-number-button-down-not-allowed):hover{cursor:pointer;background-color:var(--semi-color-fill-0)}.semi-input-number-suffix-btns>.semi-input-number-button-up:not(.semi-input-number-button-up-not-allowed):active,.semi-input-number-suffix-btns>.semi-input-number-button-down:not(.semi-input-number-button-down-not-allowed):active{cursor:pointer;background-color:var(--semi-color-fill-1)}.semi-input-number-suffix-btns>.semi-input-number-button-up.semi-input-number-button-up-disabled,.semi-input-number-suffix-btns>.semi-input-number-button-down.semi-input-number-button-down-disabled{background-color:var(--semi-color-disabled-fill);color:var(--semi-color-disabled-text)}.semi-input-number-suffix-btns>.semi-input-number-button-up.semi-input-number-button-up-not-allowed,.semi-input-number-suffix-btns>.semi-input-number-button-down.semi-input-number-button-down-not-allowed{cursor:not-allowed}.semi-input-number-suffix-btns-inner-hover{border-color:var(--semi-color-fill-2)}.semi-input-number-suffix-btns-inner{margin-left:8px;border-radius:var(--semi-border-radius-small);overflow:hidden}.semi-input-number .semi-input-clearbtn+.semi-input-suffix{margin-left:-4px}.semi-input-number .semi-input-clearbtn+.semi-input-suffix .semi-input-number-suffix-btns-inner{margin-left:0}.semi-input-number-size-default .semi-input-number-suffix-btns{height:32px}.semi-input-number-size-default .semi-input-number-suffix-btns-inner{height:30px}.semi-input-number-size-large .semi-input-number-suffix-btns{height:40px}.semi-input-number-size-large .semi-input-number-suffix-btns-inner{height:38px}.semi-input-number-size-small .semi-input-number-suffix-btns{height:24px}.semi-input-number-size-small .semi-input-number-suffix-btns-inner{height:22px}.semi-input-number:not(:focus-within):not(:hover) .semi-input-borderless+.semi-input-number-suffix-btns{opacity:0}.semi-rtl .semi-input-number,.semi-portal-rtl .semi-input-number{direction:rtl}.semi-rtl .semi-input-number-suffix-btns,.semi-portal-rtl .semi-input-number-suffix-btns{margin-left:auto;margin-right:4px}.semi-rtl .semi-input-number-suffix-btns-inner,.semi-portal-rtl .semi-input-number-suffix-btns-inner{margin-left:auto;margin-right:8px}.semi-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix,.semi-portal-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix{margin-left:auto;margin-right:-4px}.semi-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix .semi-input-number-suffix-btns-inner,.semi-portal-rtl .semi-input-number .semi-input-clearbtn+.semi-input-suffix .semi-input-number-suffix-btns-inner{margin-left:auto;margin-right:0}.semi-json-viewer{box-sizing:border-box;padding:12px 0}.semi-json-viewer-background{background-color:var(--semi-color-default)}.semi-json-viewer-string-key{color:rgba(var(--semi-red-5),1)}.semi-json-viewer-string-value,.semi-json-viewer-keyword{color:rgba(var(--semi-blue-5),1)}.semi-json-viewer-number{color:rgba(var(--semi-green-5),1)}.semi-json-viewer-delimiter-comma{color:rgba(var(--semi-blue-6),1)}.semi-json-viewer-delimiter-bracket-0{color:rgba(var(--semi-blue-7),1)}.semi-json-viewer-delimiter-bracket-1{color:rgba(var(--semi-green-7),1)}.semi-json-viewer-delimiter-bracket-2{color:rgba(var(--semi-orange-7),1)}.semi-json-viewer-delimiter-array-0{color:rgba(var(--semi-blue-7),1)}.semi-json-viewer-delimiter-array-1{color:rgba(var(--semi-green-7),1)}.semi-json-viewer-delimiter-array-2{color:rgba(var(--semi-orange-7),1)}.semi-json-viewer-search-result{background-color:rgba(var(--semi-green-2),1)}.semi-json-viewer-current-search-result{background-color:rgba(var(--semi-yellow-4),1)!important}.semi-json-viewer-folding-icon{opacity:.7;transition:opacity .8s;color:rgba(var(--semi-blue-7),1)}.semi-json-viewer-view-line{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Fira Code,Consolas,Liberation Mono,DejaVu Sans Mono,Courier New,monospace;font-weight:400;font-size:12px;font-feature-settings:"liga" 0,"calt" 0;font-variation-settings:normal;letter-spacing:0px;color:#237893;word-break:break-all!important;white-space:pre-wrap!important}.semi-json-viewer-line-number{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Fira Code,Consolas,Liberation Mono,DejaVu Sans Mono,Courier New,monospace;font-weight:400;font-size:12px;font-feature-settings:"liga" 0,"calt" 0;font-variation-settings:normal;letter-spacing:0px;color:rgba(var(--semi-grey-5),1);text-align:center;width:50px;-webkit-user-select:none;user-select:none;word-wrap:normal!important;overflow-wrap:normal!important}.semi-json-viewer-content-container{scrollbar-width:none;-ms-overflow-style:none}.semi-json-viewer-content-container::-webkit-scrollbar{display:none}.semi-json-viewer-search-bar-container{width:458px;box-sizing:border-box;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-small);display:flex;flex-direction:column;padding:8px;gap:8px;background-color:var(--semi-color-bg-0)}.semi-json-viewer-search-bar{display:flex;align-items:flex-start;gap:8px}.semi-json-viewer-search-bar-input{width:200px!important;flex-shrink:0}.semi-json-viewer-search-bar .semi-button-group{flex-wrap:nowrap}.semi-json-viewer-search-bar .semi-button:nth-of-type(1){width:40px}.semi-json-viewer-search-bar .semi-button:nth-of-type(2){width:40px}.semi-json-viewer-replace-bar{display:flex;align-items:flex-start;gap:8px}.semi-json-viewer-replace-bar-input{width:261px}.semi-json-viewer-replace-bar .semi-button:nth-of-type(1){width:52px}.semi-json-viewer-replace-bar .semi-button:nth-of-type(2){width:80px}.semi-json-viewer-search-options{display:flex;align-items:center;justify-content:center;list-style:none;padding-inline-start:0;margin-block-start:0;margin-block-end:0;gap:8px}.semi-json-viewer-search-options-item{min-width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--semi-border-radius-small);color:var(--semi-color-text-2)}.semi-json-viewer-search-options-item:hover{background-color:var(--semi-color-default)}.semi-json-viewer-search-options-item-active{color:var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-json-viewer-complete-suggestions-container{border-radius:var(--semi-border-radius-medium);background-color:var(--semi-color-bg-3);box-shadow:var(--semi-shadow-elevated);z-index:1000;min-width:200px;max-width:400px;list-style:none;padding:4px 0}.semi-json-viewer-complete-container{position:absolute;z-index:1000}.semi-json-viewer-complete-suggestions-item{padding:8px 16px;color:var(--semi-color-text-0);cursor:pointer}.semi-json-viewer-error{text-decoration:underline wavy var(--semi-color-danger);text-decoration-thickness:1px;text-underline-position:under}.semi-layout{display:flex;flex:auto;flex-direction:column;min-height:auto}.semi-layout,.semi-layout-header,.semi-layout-footer,.semi-layout-content,.semi-layout-sider,.semi-layout-sider-children{box-sizing:border-box}.semi-layout-header,.semi-layout-footer{flex:0 0 auto}.semi-layout-content{flex:auto;min-height:auto}.semi-layout-sider{position:relative;min-width:auto}.semi-layout-sider-children{height:100%;margin-top:-.1px;padding-top:.1px}.semi-layout-has-sider{flex-direction:row}.semi-layout-has-sider>.semi-layout,.semi-layout-has-sider>.semi-layout-content{overflow-x:hidden}.semi-rtl .semi-layout,.semi-portal-rtl .semi-layout{direction:rtl}.semi-list{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-list-items{margin:0;padding:0;list-style:none}.semi-list-header,.semi-list-footer{padding:12px 24px}.semi-list-empty{padding:12px 0;color:var(--semi-color-text-2);width:100%;text-align:center}.semi-list-item{display:flex;flex-wrap:wrap;align-items:center;box-sizing:border-box;padding:12px 24px;margin:0;list-style:none}.semi-list-item-body{flex:1;display:flex}.semi-list-item-body-header{margin-right:20px}.semi-list-item-body-flex-start{align-items:flex-start}.semi-list-item-body-flex-end{align-items:flex-end}.semi-list-item-body-center{align-items:center}.semi-list-item-body-stretch{align-items:stretch}.semi-list-item-body-baseline{align-items:baseline}.semi-list-item-extra{flex:0 0 auto;margin-left:40px}.semi-list-split .semi-list-item{border-bottom:1px solid var(--semi-color-border)}.semi-list-split .semi-list-item:last-child{border-bottom:none}.semi-list-split .semi-list-header{border-bottom:1px solid var(--semi-color-border)}.semi-list-split .semi-list-footer{border-top:1px solid var(--semi-color-border)}.semi-list-small .semi-list-item,.semi-list-small .semi-list-header,.semi-list-small .semi-list-footer{padding:8px 16px}.semi-list-large .semi-list-item,.semi-list-large .semi-list-header,.semi-list-large .semi-list-footer{padding:16px 24px}.semi-list.semi-list-grid .semi-list-item{padding:0}.semi-list.semi-list-bordered{border:1px solid var(--semi-color-border)}.semi-list.semi-list-flex .semi-list-items{display:flex}.semi-list.semi-list-flex.semi-list-split .semi-list-item{border-bottom:none;border-right:1px solid var(--semi-color-border)}.semi-list.semi-list-flex.semi-list-split .semi-list-item:last-child{border-right:none}.semi-rtl .semi-list,.semi-portal-rtl .semi-list,.semi-rtl .semi-list-item,.semi-portal-rtl .semi-list-item{direction:rtl}.semi-rtl .semi-list-item-body-header,.semi-portal-rtl .semi-list-item-body-header{margin-right:auto;margin-left:20px}.semi-rtl .semi-list-item-extra,.semi-portal-rtl .semi-list-item-extra{flex:0 0 auto;margin-left:0;margin-right:40px}.semi-rtl .semi-list.semi-list-flex.semi-list-split .semi-list-item,.semi-portal-rtl .semi-list.semi-list-flex.semi-list-split .semi-list-item{border-bottom:none;border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-list.semi-list-flex.semi-list-split .semi-list-item:last-child,.semi-portal-rtl .semi-list.semi-list-flex.semi-list-split .semi-list-item:last-child{border-left:none}.semi-markdownRender-simple-code{background:var(--semi-color-fill-0);color:var(--semi-color-text-1)}.semi-markdownRender ul,.semi-markdownRender li{color:var(--semi-color-text-0)}.semi-markdownRender-component-image{margin:16px;max-width:50%;max-height:500px;display:flex;flex-direction:column;justify-content:center}.semi-markdownRender-component-image-alt{margin-top:8px;text-align:center;color:var(--semi-color-tertiary)}.semi-markdownRender-component-header.semi-typography.semi-typography-h1,.semi-markdownRender-component-header.semi-typography.semi-typography-h2,.semi-markdownRender-component-header.semi-typography.semi-typography-h3,.semi-markdownRender-component-header.semi-typography.semi-typography-h4,.semi-markdownRender-component-header.semi-typography.semi-typography-h5{margin-top:16px;margin-bottom:16px}.semi-markdownRender-component-p strong{font-weight:600}.semi-modal{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;margin:80px auto;color:var(--semi-color-text-0)}.semi-modal-mask{position:fixed;top:0;right:0;left:0;bottom:0;background-color:var(--semi-color-overlay-bg);-webkit-backdrop-filter:none;backdrop-filter:none;height:100%;z-index:1000}.semi-modal-mask-hidden{display:none}.semi-modal-icon-wrapper{display:inline-flex;margin-right:12px;width:24px}.semi-modal-wrap{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;z-index:1000;-webkit-overflow-scrolling:touch;outline:0}.semi-modal-wrap-center{display:flex;align-items:flex-start}.semi-modal-title{display:inline-flex;align-items:flex-start;justify-content:flex-start;width:100%;margin:0}.semi-modal-content{position:relative;display:flex;height:max-content;width:100%;box-sizing:border-box;flex-direction:column;background-color:var(--semi-color-bg-2);-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-large);padding:0 24px;background-clip:padding-box;overflow:hidden;box-shadow:var(--semi-shadow-elevated)}.semi-modal-footerfill{display:flex}.semi-modal-content-height-set{height:100%}.semi-modal-content-fullScreen{border-radius:0;border:none;height:100%;top:0}.semi-modal-header{display:flex;align-items:flex-start;margin:24px 0;padding:0;font-size:14px;font-weight:600;background-color:#0000;color:var(--semi-color-text-0);border-bottom:0 solid rgba(0,0,0,0)}.semi-modal-body-wrapper{display:flex;align-items:flex-start;margin:24px 0}.semi-modal-body{flex:1 1 auto;margin:0;padding:0}.semi-modal-withIcon{margin-left:36px}.semi-modal-footer{margin:24px 0;padding:0;text-align:right;border-radius:0 0 5px 5px;border-top:0 solid rgba(0,0,0,0);background-color:#0000}.semi-modal-footer .semi-button{margin-left:12px;margin-right:0}.semi-modal-confirm .semi-modal-header{margin-bottom:8px}.semi-modal-confirm-icon-wrapper{display:inline-flex;margin-right:12px;width:24px}.semi-modal-confirm-icon{display:inline-flex;color:var(--semi-color-primary)}.semi-modal-info-icon{color:var(--semi-color-info)}.semi-modal-success-icon{color:var(--semi-color-success)}.semi-modal-error-icon{color:var(--semi-color-danger)}.semi-modal-warning-icon{color:var(--semi-color-warning)}.semi-modal-small{width:448px}.semi-modal-medium{width:684px}.semi-modal-large{width:920px}.semi-modal-full-width{width:calc(100vw - 64px)}.semi-modal-centered{margin:auto}.semi-modal-popup .semi-modal-mask,.semi-modal-popup .semi-modal-wrap{position:absolute;overflow:hidden}.semi-modal-fixed .semi-modal-mask,.semi-modal-fixed .semi-modal-wrap{position:fixed;overflow:hidden}.semi-modal-displayNone{display:none}.semi-modal-content-animate-show{animation:.12s semi-modal-content-keyframe-show cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}.semi-modal-content-animate-hide{animation:.12s semi-modal-content-keyframe-hide cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}.semi-modal-mask-animate-show{animation:90ms semi-modal-mask-keyframe-show cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}.semi-modal-mask-animate-hide{animation:90ms semi-modal-mask-keyframe-hide cubic-bezier(.215,.61,.355,1) 0ms forwards;animation-fill-mode:forwards}@keyframes semi-modal-content-keyframe-show{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes semi-modal-content-keyframe-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.7)}}@keyframes semi-modal-mask-keyframe-show{0%{opacity:0}to{opacity:1}}@keyframes semi-modal-mask-keyframe-hide{0%{opacity:1}to{opacity:0}}.semi-modal-rtl{direction:rtl}.semi-modal-rtl .semi-modal-icon-wrapper,.semi-modal-confirm-rtl .semi-modal-icon-wrapper{margin-right:0;margin-left:12px}.semi-modal-rtl .semi-modal-withIcon,.semi-modal-confirm-rtl .semi-modal-withIcon{margin-left:0;margin-right:36px}.semi-modal-rtl .semi-modal-footer,.semi-modal-confirm-rtl .semi-modal-footer{text-align:left}.semi-modal-rtl .semi-modal-footer .semi-button,.semi-modal-confirm-rtl .semi-modal-footer .semi-button{margin-left:0;margin-right:12px}.semi-modal-confirm-rtl{direction:rtl}.semi-modal-confirm .semi-modal-confirm-rtl .semi-button{margin-left:0;margin-right:12px}.semi-navigation{box-sizing:border-box;display:inline-flex;width:240px;outline:none;overflow:hidden;margin:0;padding-left:8px;padding-right:8px;-webkit-user-select:none;user-select:none;transition:padding-left .1s ease-out,width .2s cubic-bezier(.62,.05,.36,.95);border-right:1px solid var(--semi-color-border);background-color:var(--semi-color-nav-bg)}.semi-navigation-inner{width:100%;height:100%;display:flex;justify-content:space-between}.semi-navigation-list{margin:0;padding:0;list-style:none}.semi-navigation-list>.semi-navigation-item-normal{height:36px}.semi-navigation-list>.semi-navigation-item{font-weight:600}.semi-navigation-list>.semi-navigation-item>.semi-navigation-sub-title{font-weight:600}.semi-navigation-collapsed{width:60px;padding-left:8px;padding-right:8px;transition:padding-left .1s ease-out,width .2s cubic-bezier(.62,.05,.36,.95)}.semi-navigation-collapsed .semi-navigation-item-text{transition:opacity .2s cubic-bezier(.5,-.1,1,.4);opacity:0}.semi-navigation-collapsed .semi-navigation-item-icon:last-child{transition:opacity .2s cubic-bezier(.5,-.1,1,.4);opacity:0}.semi-navigation-collapsed-wrapper{display:flex;width:fit-content;height:fit-content}.semi-navigation-sub-wrap .semi-navigation-sub-title,.semi-navigation-item{cursor:pointer;display:flex;border-radius:var(--semi-border-radius-small);padding:8px 12px;box-sizing:border-box;margin-top:0;margin-bottom:8px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:var(--semi-color-text-0);width:100%;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-navigation-sub-wrap .semi-navigation-sub-title-text,.semi-navigation-item-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:opacity .2s cubic-bezier(.5,-.1,1,.4);opacity:1}.semi-navigation-sub-wrap .semi-navigation-sub-title-indent,.semi-navigation-item-indent{width:32px}.semi-navigation-sub-wrap .semi-navigation-sub-title:focus-visible,.semi-navigation-item:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-navigation-header-link,.semi-navigation-item-link{display:flex;width:100%;color:inherit;text-decoration:none;align-items:center;justify-content:flex-start}.semi-navigation-item-has-link{padding:0}.semi-navigation-item-has-link .semi-navigation-item-link{padding:8px 12px}.semi-navigation-item-sub{padding:0}.semi-navigation-sub-wrap>.semi-navigation-item-inner{width:100%}.semi-navigation-sub-wrap .semi-navigation-sub-title>.semi-navigation-item-inner{display:flex}.semi-navigation-item-inner{display:flex;align-items:center;width:100%;flex:0 0 auto}.semi-navigation-item-title{opacity:1;transition:opacity .1s 100s ease-out}.semi-navigation .semi-navigation-sub-title{margin-bottom:0}.semi-navigation-item-icon-info{display:inline-flex;color:var(--semi-color-text-2);margin-right:12px;min-width:20px;margin-left:0}.semi-navigation-item-icon-toggle-left{display:inline-flex;color:var(--semi-color-text-2);margin-right:12px;min-width:20px}.semi-navigation-item-icon-toggle-right{display:inline-flex;color:var(--semi-color-text-2);margin-left:auto;transition:opacity .2s cubic-bezier(.5,-.1,1,.4);opacity:1}.semi-navigation-item-selected{background-color:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-item-selected.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-primary-disabled);cursor:not-allowed}.semi-navigation-item-selected.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-primary-disabled)}.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-inner>.semi-navigation-item{color:var(--semi-color-text-0)}.semi-navigation-item-normal:hover:not(.semi-navigation-item-selected){background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-navigation-item-normal:hover:not(.semi-navigation-item-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-item-normal:hover.semi-navigation-item-selected{color:var(--semi-color-text-0);background-color:var(--semi-color-fill-0)}.semi-navigation-item-normal:hover.semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-item-normal:hover.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-item-normal:hover.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-item-normal:hover.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-item-normal:hover.semi-navigation-item-selected.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-primary-disabled);cursor:not-allowed}.semi-navigation-item-normal:hover.semi-navigation-item-selected.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-primary-disabled)}.semi-navigation-item-normal:active:not(.semi-navigation-item-selected),.semi-navigation-inner>.semi-navigation-item-normal:active:not(.semi-navigation-item-selected){background-color:var(--semi-color-fill-1);color:var(--semi-color-text-0)}.semi-navigation-item-normal:active:not(.semi-navigation-item-selected) .semi-navigation-item-icon:first-child,.semi-navigation-inner>.semi-navigation-item-normal:active:not(.semi-navigation-item-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-item-normal:active.semi-navigation-item-selected,.semi-navigation-inner>.semi-navigation-item-normal:active.semi-navigation-item-selected{color:var(--semi-color-text-0);background-color:var(--semi-color-fill-1)}.semi-navigation-item-normal:active.semi-navigation-item-selected .semi-navigation-item-icon:first-child,.semi-navigation-inner>.semi-navigation-item-normal:active.semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-item-normal:active.semi-navigation-item-disabled,.semi-navigation-inner>.semi-navigation-item-normal:active.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-icon:first-child,.semi-navigation-inner>.semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-inner>.semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-sub-wrap .semi-navigation-item-inner{display:block}.semi-navigation-sub-wrap{display:block;padding:0;margin-top:0;height:inherit}.semi-navigation-sub-wrap .semi-navigation-sub-title{display:flex;justify-content:flex-start;height:36px;align-items:center}.semi-navigation-sub{font-weight:400;font-size:14px;list-style:none;outline:none;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.semi-navigation-sub .semi-navigation-item{color:var(--semi-color-text-0);background-color:#0000;height:36px;font-weight:400;width:100%}.semi-navigation-sub .semi-navigation-item:first-child{margin-top:8px}.semi-navigation-sub .semi-navigation-item>.semi-navigation-sub .semi-navigation-item-text:first-child{margin-left:44px}.semi-navigation-sub .semi-navigation-item:hover:not(.semi-navigation-sub-wrap):not(.semi-navigation-item-selected):not(.semi-navigation-item-disabled){background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-navigation-sub .semi-navigation-item:hover:not(.semi-navigation-sub-wrap):not(.semi-navigation-item-selected):not(.semi-navigation-item-disabled) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-sub .semi-navigation-item:hover.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-sub .semi-navigation-item:hover.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-sub .semi-navigation-item:hover.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-sub .semi-navigation-item:hover.semi-navigation-item-selected{background-color:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-navigation-sub .semi-navigation-item:hover.semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-sub .semi-navigation-item:active:not(.semi-navigation-sub-wrap):not(.semi-navigation-item-selected):not(.semi-navigation-item-disabled){background-color:var(--semi-color-fill-1);color:var(--semi-color-text-0)}.semi-navigation-sub .semi-navigation-item:active:not(.semi-navigation-sub-wrap):not(.semi-navigation-item-selected):not(.semi-navigation-item-disabled) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-sub .semi-navigation-item:active.semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-sub .semi-navigation-item:active.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-sub .semi-navigation-item:active.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-sub .semi-navigation-item:active.semi-navigation-item-selected{background-color:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-navigation-sub .semi-navigation-item:active.semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-sub .semi-navigation-item-selected{background-color:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-navigation-sub .semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-sub .semi-navigation-item-selected.semi-navigation-item-disabled{cursor:not-allowed;background-color:var(--semi-color-primary-light-default);color:var(--semi-color-disabled-text)}.semi-navigation-sub .semi-navigation-item-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-sub .semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-sub .semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-sub .semi-navigation-sub-wrap{height:inherit}.semi-navigation-icon-rotate-0{transition:transform .2s ease-in-out;transform:rotate(0)}.semi-navigation-icon-rotate-180{transition:transform .2s ease-in-out;transform:rotate(-180deg)}.semi-navigation-header{display:inline-flex;align-items:center;box-sizing:border-box}.semi-navigation-header-logo{margin-left:0;margin-right:8px;display:inline-flex}.semi-navigation-header-logo>.semi-icon,.semi-navigation-header-logo>img{width:36px;height:36px;object-fit:scale-down}.semi-navigation-header-text{font-size:18px;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;display:inline-flex;color:var(--semi-color-text-0);white-space:nowrap;text-overflow:ellipsis;transition:opacity .2s cubic-bezier(.5,-.1,1,.4);opacity:1}.semi-navigation-footer{box-sizing:border-box;padding:16px 24px;display:inline-flex;align-items:center}.semi-navigation-footer .semi-navigation-collapse-btn{text-overflow:ellipsis;white-space:nowrap}.semi-navigation-collapsed .semi-navigation-header{justify-content:center}.semi-navigation-collapsed .semi-navigation-header .semi-navigation-header-logo{margin-right:0;width:100%}.semi-navigation-collapsed .semi-navigation-header .semi-navigation-header-logo>.semi-icon,.semi-navigation-collapsed .semi-navigation-header .semi-navigation-header-logo>img{width:36px;max-width:100%;max-height:100%}.semi-navigation-collapsed .semi-navigation-header .semi-navigation-header-text{transition:opacity .2s cubic-bezier(.5,-.1,1,.4);opacity:0}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-item-selected:not(.semi-navigation-item-disabled).semi-navigation-item-normal:hover .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title{color:var(--semi-color-text-0);background-color:#0000}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-selected{font-weight:600;background-color:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-selected{background-color:#0000}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-selected.semi-navigation-sub-title-disabled{background-color:#0000;color:var(--semi-color-primary-disabled);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-selected.semi-navigation-sub-title-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-primary-disabled)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-disabled{font-weight:600;background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-disabled .semi-navigation-item-icon,.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover:not(.semi-navigation-sub-title-selected){background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-selected{color:var(--semi-color-text-0);background-color:var(--semi-color-fill-0)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active:not(.semi-navigation-sub-title-selected){background-color:var(--semi-color-fill-1);color:var(--semi-color-text-0)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-selected{color:var(--semi-color-text-0);background-color:var(--semi-color-fill-1)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected),.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected){background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon,.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon:first-child,.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon,.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled.semi-navigation-sub-title-selected,.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-disabled.semi-navigation-sub-title-selected{background-color:#0000;color:var(--semi-color-primary-disabled);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child,.semi-navigation-vertical .semi-navigation-list>.semi-navigation-sub-wrap>.semi-navigation-sub-title:active.semi-navigation-sub-title-disabled.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary-disabled)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title-disabled{background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title-disabled .semi-navigation-item-icon,.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover:not(.semi-navigation-sub-title-selected){background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-selected{color:var(--semi-color-text-0);background-color:var(--semi-color-fill-0)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected){background-color:#0000;color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon,.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled:not(.semi-navigation-sub-title-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled.semi-navigation-sub-title-selected{background-color:#0000;color:var(--semi-color-primary-disabled);cursor:not-allowed}.semi-navigation-vertical .semi-navigation-list .semi-navigation-sub-wrap>.semi-navigation-sub-title:hover.semi-navigation-sub-title-disabled.semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-primary-disabled)}.semi-navigation-vertical .semi-navigation-item:last-of-type{margin-bottom:0}.semi-navigation-vertical .semi-navigation-inner{flex-direction:column}.semi-navigation-vertical .semi-navigation-header-list-outer{height:100%}.semi-navigation-vertical .semi-navigation-list-wrapper{padding-top:12px;overflow-y:auto;overflow-x:hidden}.semi-navigation-vertical .semi-navigation-header{padding:32px 8px 36px 3.5px;width:100%}.semi-navigation-vertical .semi-navigation-header-collapsed{padding-left:3.5px;padding-right:0;transition:padding-left .1s ease-out,width .2s cubic-bezier(.62,.05,.36,.95)}.semi-navigation-vertical .semi-navigation-footer{color:var(--semi-color-text-1);padding-left:8px;padding-right:8px}.semi-navigation-vertical .semi-navigation-footer .semi-navigation-collapse-btn .semi-button-content-right{margin-left:12px;opacity:1;transition:opacity .2s cubic-bezier(.5,-.1,1,.4)}.semi-navigation-vertical .semi-navigation-footer .semi-navigation-collapse-btn>.semi-button{padding-left:8px;padding-right:8px;color:var(--semi-color-text-1)}.semi-navigation-vertical .semi-navigation-footer-collapsed{justify-content:center}.semi-navigation-vertical .semi-navigation-footer-collapsed .semi-navigation-collapse-btn{width:100%}.semi-navigation-vertical .semi-navigation-footer-collapsed .semi-navigation-collapse-btn .semi-button-content-right{opacity:0;transition:opacity .2s cubic-bezier(.5,-.1,1,.4)}.semi-navigation-horizontal{width:100%;height:60px;border-right:none;border-bottom:1px solid var(--semi-color-border);padding-left:24px;padding-right:24px}.semi-navigation-horizontal .semi-navigation-inner{flex-direction:row}.semi-navigation-horizontal .semi-navigation-header-list-outer{display:inline-flex;align-items:center}.semi-navigation-horizontal .semi-navigation-header-list-outer-collapsed{align-items:baseline}.semi-navigation-horizontal .semi-navigation-header{width:inherit;margin-right:24px}.semi-navigation-horizontal .semi-navigation-list{display:inline-flex;align-items:center}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item{margin-bottom:0;color:var(--semi-color-text-2);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item .semi-navigation-item-icon:first-child{color:var(--semi-color-text-2)}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-selected{color:var(--semi-color-text-0);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-selected .semi-navigation-item-icon:first-child{color:var(--semi-color-text-0)}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-disabled{color:var(--semi-color-disabled-text);background-color:#0000;cursor:not-allowed}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover:not(.semi-navigation-item-selected){color:var(--semi-color-text-1);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover:not(.semi-navigation-item-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-1)}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover:not(.semi-navigation-item-selected) .semi-navigation-item-text{color:var(--semi-color-text-1);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:active:not(.semi-navigation-item-selected){color:var(--semi-color-text-0);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:active:not(.semi-navigation-item-selected) .semi-navigation-item-icon:first-child{color:var(--semi-color-text-0)}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover.semi-navigation-item-disabled,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:active.semi-navigation-item-disabled{color:var(--semi-color-disabled-text);background-color:#0000;cursor:not-allowed}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover.semi-navigation-item-disabled .semi-navigation-item-icon:first-child,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-icon,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-icon:first-child{color:var(--semi-color-disabled-text)}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:hover.semi-navigation-item-disabled .semi-navigation-item-text,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item-normal:active.semi-navigation-item-disabled .semi-navigation-item-text{color:var(--semi-color-disabled-text);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-item:not(:last-of-type){margin-right:8px}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-sub-title .semi-navigation-item-text{color:var(--semi-color-text-2);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-sub-title-selected .semi-navigation-item-icon:first-child,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-sub-title-selected .semi-navigation-item-text{color:var(--semi-color-text-0);background-color:#0000}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-sub-title-disabled{cursor:not-allowed}.semi-navigation-horizontal .semi-navigation-list .semi-navigation-sub-title-disabled .semi-navigation-item-icon:first-child,.semi-navigation-horizontal .semi-navigation-list .semi-navigation-sub-title-disabled .semi-navigation-item-text{color:var(--semi-color-disabled-text);background-color:#0000}.semi-navigation-horizontal .semi-navigation-item-inner{width:auto}.semi-navigation-horizontal .semi-navigation-item-icon:last-child{margin-left:8px}.semi-navigation-horizontal .semi-navigation-item-icon:first-child{margin-right:8px}.semi-navigation-horizontal .semi-navigation-item{width:auto}.semi-navigation-horizontal .semi-navigation-item-collapsed{word-wrap:none;text-overflow:ellipsis}.semi-navigation-horizontal .semi-navigation-footer{border-top:none;padding-right:0}.semi-navigation-horizontal .semi-navigation-footer-collapsed{justify-content:center;flex-direction:row;align-items:center}.semi-navigation-popover .semi-navigation-sub-title{width:100%}.semi-navigation-popover .semi-navigation-item-selected{font-weight:400}.semi-dropdown-item .semi-navigation-sub-title{box-sizing:border-box;padding:8px 12px;width:100%}.semi-dropdown-item.semi-navigation-item{margin-top:0;margin-bottom:0;min-width:150px}.semi-dropdown-menu .semi-navigation-item-sub{padding:0}.semi-rtl .semi-navigation,.semi-portal-rtl .semi-navigation{direction:rtl;border-right:0;border-left:1px solid var(--semi-color-border);transition:padding-right .1s ease-out,width .2s cubic-bezier(.62,.05,.36,.95)}.semi-rtl .semi-navigation-collapsed,.semi-portal-rtl .semi-navigation-collapsed{transition:padding-right .1s ease-out,width .2s cubic-bezier(.62,.05,.36,.95)}.semi-rtl .semi-navigation-item-icon:first-child,.semi-portal-rtl .semi-navigation-item-icon:first-child{margin-right:0;margin-left:12px}.semi-rtl .semi-navigation-item-icon:last-child,.semi-portal-rtl .semi-navigation-item-icon:last-child{margin-left:0;margin-right:auto}.semi-rtl .semi-navigation-sub .semi-navigation-item>.semi-rtl .semi-navigation-sub .semi-navigation-item-text:first-child,.semi-rtl .semi-navigation-sub .semi-navigation-item>.semi-portal-rtl .semi-navigation-sub .semi-navigation-item-text:first-child,.semi-portal-rtl .semi-navigation-sub .semi-navigation-item>.semi-rtl .semi-navigation-sub .semi-navigation-item-text:first-child,.semi-portal-rtl .semi-navigation-sub .semi-navigation-item>.semi-portal-rtl .semi-navigation-sub .semi-navigation-item-text:first-child{margin-left:auto;margin-right:44px}.semi-rtl .semi-navigation-sub .semi-navigation-item>.semi-navigation-item-icon:first-child,.semi-portal-rtl .semi-navigation-sub .semi-navigation-item>.semi-navigation-item-icon:first-child{margin-right:12px}.semi-rtl .semi-navigation-header,.semi-portal-rtl .semi-navigation-header{display:inline-flex;align-items:center;box-sizing:border-box}.semi-rtl .semi-navigation-header-logo,.semi-portal-rtl .semi-navigation-header-logo{margin-left:8px;margin-right:0;display:inline-flex}.semi-rtl .semi-navigation-collapsed,.semi-portal-rtl .semi-navigation-collapsed{direction:rtl}.semi-rtl .semi-navigation-collapsed .semi-navigation-header .semi-navigation-header-logo,.semi-portal-rtl .semi-navigation-collapsed .semi-navigation-header .semi-navigation-header-logo{margin-right:auto;margin-left:0}.semi-rtl .semi-navigation-vertical,.semi-portal-rtl .semi-navigation-vertical{direction:rtl}.semi-rtl .semi-navigation-vertical .semi-navigation-header,.semi-portal-rtl .semi-navigation-vertical .semi-navigation-header{padding-right:3.5px;padding-left:8px}.semi-rtl .semi-navigation-vertical .semi-navigation-header-collapsed,.semi-portal-rtl .semi-navigation-vertical .semi-navigation-header-collapsed{padding-right:3.5px;padding-left:0;transition:padding-right .1s ease-out,width .2s cubic-bezier(.62,.05,.36,.95)}.semi-rtl .semi-navigation-vertical .semi-navigation-footer .semi-navigation-collapse-btn .semi-button-content-right,.semi-portal-rtl .semi-navigation-vertical .semi-navigation-footer .semi-navigation-collapse-btn .semi-button-content-right{margin-left:auto;margin-right:12px;transition:opacity .2s cubic-bezier(.5,-.1,1,.4)}.semi-rtl .semi-navigation-horizontal,.semi-portal-rtl .semi-navigation-horizontal{direction:rtl;border-right:auto;border-left:none;padding-left:24px;padding-right:24px}.semi-rtl .semi-navigation-horizontal .semi-navigation-header,.semi-portal-rtl .semi-navigation-horizontal .semi-navigation-header{margin-right:auto;margin-left:24px}.semi-rtl .semi-navigation-horizontal .semi-navigation-list .semi-navigation-item:not(:last-of-type),.semi-portal-rtl .semi-navigation-horizontal .semi-navigation-list .semi-navigation-item:not(:last-of-type){margin-right:auto;margin-left:8px}.semi-rtl .semi-navigation-horizontal .semi-navigation-item-icon:last-child,.semi-portal-rtl .semi-navigation-horizontal .semi-navigation-item-icon:last-child{margin-left:auto;margin-right:8px}.semi-rtl .semi-navigation-horizontal .semi-navigation-item-icon:first-child,.semi-portal-rtl .semi-navigation-horizontal .semi-navigation-item-icon:first-child{margin-right:auto;margin-left:8px}.semi-rtl .semi-navigation-horizontal .semi-navigation-footer,.semi-portal-rtl .semi-navigation-horizontal .semi-navigation-footer{padding-right:auto;padding-left:0}.semi-notification-wrapper{position:fixed}.semi-notification-list{position:fixed;box-sizing:border-box;margin:0;padding:0;z-index:1010;pointer-events:none}.semi-notification-list[placement=topRight]{right:0;top:0}.semi-notification-list[placement=top]{top:0;left:50%;transform:translate(-50%)}.semi-notification-list[placement=topLeft]{left:0;top:0}.semi-notification-list[placement=bottom]{bottom:0;left:50%;transform:translate(-50%)}.semi-notification-list[placement=bottomRight]{bottom:0;right:0}.semi-notification-list[placement=bottomLeft]{bottom:0;left:0}.semi-notification-notice{box-shadow:var(--semi-shadow-elevated);border-radius:var(--semi-border-radius-medium);padding:16px 12px 16px 20px;margin:20px;width:auto;min-width:320px;background-color:var(--semi-color-bg-3);position:relative;display:flex;pointer-events:auto}.semi-notification-notice-icon{width:24px;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:flex-start;justify-content:flex-start;height:100%;margin-right:12px}.semi-notification-notice-info{color:var(--semi-color-info)}.semi-notification-notice-warning{color:var(--semi-color-warning)}.semi-notification-notice-error{color:var(--semi-color-danger)}.semi-notification-notice-success{color:var(--semi-color-success)}.semi-notification-notice-light.semi-notification-notice-warning{background-image:linear-gradient(0deg,var(--semi-color-warning-light-default),var(--semi-color-warning-light-default));background-color:var(--semi-color-bg-0);border:1px solid var(--semi-color-warning)}.semi-notification-notice-light.semi-notification-notice-success{background-image:linear-gradient(0deg,var(--semi-color-success-light-default),var(--semi-color-success-light-default));background-color:var(--semi-color-bg-0);border:1px solid var(--semi-color-success)}.semi-notification-notice-light.semi-notification-notice-info,.semi-notification-notice-light.semi-notification-notice-default{background-image:linear-gradient(0deg,var(--semi-color-info-light-default),var(--semi-color-info-light-default));background-color:var(--semi-color-bg-0);border:1px solid var(--semi-color-info)}.semi-notification-notice-light.semi-notification-notice-error{background-image:linear-gradient(0deg,var(--semi-color-danger-light-default),var(--semi-color-danger-light-default));background-color:var(--semi-color-bg-0);border:1px solid var(--semi-color-danger)}.semi-notification-notice-title{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;color:var(--semi-color-text-0);margin-bottom:4px;word-wrap:break-word;overflow-wrap:break-word}.semi-notification-notice-inner{display:flex;width:100%;min-width:0}.semi-notification-notice-content-wrapper{flex:1 1 auto;margin-right:8px;min-width:0}.semi-notification-notice-content{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:var(--semi-color-text-1);word-wrap:break-word;overflow-wrap:break-word}.semi-notification-notice-icon-close{height:24px}.semi-notification-notice-icon-close .semi-icon-close{color:var(--semi-color-text-2)}.semi-notification-notice-controls{display:flex;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.semi-notification-notice-detail,.semi-notification-notice-later{text-align:center;flex-grow:1}@keyframes semi-notification-slideShow_top{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes semi-notification-slideHide_top{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes semi-notification-slideShow_topLeft{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes semi-notification-slideHide_topLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-100%)}}@keyframes semi-notification-slideShow_topRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes semi-notification-slideHide_topRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes semi-notification-slideShow_bottom{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes semi-notification-slideHide_bottom{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@keyframes semi-notification-slideShow_bottomLeft{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes semi-notification-slideHide_bottomLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-100%)}}@keyframes semi-notification-slideShow_bottomRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes semi-notification-slideHide_bottomRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.semi-notification-notice-animation-show_top{animation:semi-notification-slideShow_top .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-hide_top{animation:semi-notification-slideHide_top .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-show_topLeft{animation:semi-notification-slideShow_topLeft .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-hide_topLeft{animation:semi-notification-slideHide_topLeft .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-show_topRight{animation:semi-notification-slideShow_topRight .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-hide_topRight{animation:semi-notification-slideHide_topRight .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-show_bottom{animation:semi-notification-slideShow_bottom .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-hide_bottom{animation:semi-notification-slideHide_bottom .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-show_bottomLeft{animation:semi-notification-slideShow_bottomLeft .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-hide_bottomLeft{animation:semi-notification-slideHide_bottomLeft .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-show_bottomRight{animation:semi-notification-slideShow_bottomRight .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice-animation-hide_bottomRight{animation:semi-notification-slideHide_bottomRight .3s cubic-bezier(.62,.63,0,1.13) 0ms;animation-fill-mode:forwards}.semi-notification-notice.semi-notification-notice-rtl{padding-right:20px;padding-left:12px}.semi-notification-notice-rtl{direction:rtl}.semi-notification-notice-rtl .semi-notification-notice-icon{margin-right:12px}.semi-notification-notice-rtl .semi-notification-notice-content-wrapper{margin-right:8px}.semi-overflow-list{display:flex;flex-wrap:nowrap;min-width:0}.semi-overflow-list-spacer{flex-shrink:1;width:1px}.semi-overflow-list-scroll-wrapper{display:flex;flex:1;flex-wrap:nowrap;overflow-x:scroll}.semi-rtl .semi-overflow-list,.semi-portal-rtl .semi-overflow-list{direction:rtl}.semi-page{display:flex;list-style:none;padding:0;align-items:center;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin-block-start:0;margin-block-end:0}.semi-page-small{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:var(--semi-color-text-2);padding:0}.semi-page-disabled{cursor:not-allowed}.semi-page-disabled .semi-page-total{color:var(--semi-color-disabled-text)}.semi-page-item{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;min-width:32px;border:0px solid rgba(0,0,0,0);cursor:pointer;-webkit-user-select:none;user-select:none;height:32px;margin-left:4px;margin-right:4px;font-weight:400;color:var(--semi-color-text-0);border-radius:var(--semi-border-radius-small);text-align:center;line-height:32px;display:flex;align-items:center;justify-content:center;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-page-item:hover{border-color:#0000;background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-page-item-rest-opening{background-color:var(--semi-color-fill-0);color:var(--semi-color-text-0)}.semi-page-item:active{border-color:#0000;background-color:var(--semi-color-fill-1);color:var(--semi-color-text-0)}.semi-page-item-active{border-color:#0000;color:var(--semi-color-primary);font-weight:600;background-color:var(--semi-color-primary-light-default)}.semi-page-item-active:hover{border-color:#0000;color:var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-page-item-disabled{border-color:#0000;color:var(--semi-color-disabled-text);background-color:#0000;cursor:not-allowed}.semi-page-item-disabled:hover{background-color:#0000}.semi-page-item-small{min-width:44px;margin:0}.semi-page-item-all-disabled{border-color:#0000;color:var(--semi-color-disabled-text);background-color:#0000;cursor:not-allowed}.semi-page-item-all-disabled:hover{background-color:#0000;color:var(--semi-color-disabled-text)}.semi-page-item-all-disabled-active{background-color:var(--semi-color-disabled-fill);font-weight:600}.semi-page-item-all-disabled-active:hover{background-color:var(--semi-color-disabled-fill)}.semi-page-total{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-page-prev,.semi-page-next{color:var(--semi-color-tertiary);cursor:pointer}.semi-page-prev.semi-page-item-disabled,.semi-page-next.semi-page-item-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-page-quickjump{margin-left:24px;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;justify-content:center;align-items:center;flex-shrink:0;color:var(--semi-color-text-0)}.semi-page-quickjump-input-number{max-width:50px;margin-left:4px;margin-right:4px}.semi-page-quickjump-disabled{color:var(--semi-color-disabled-text)}.semi-page .semi-select,.semi-select-dropdown{-webkit-user-select:none;user-select:none}.semi-page-rest-list{padding-top:4px;padding-bottom:4px}.semi-page-rest-list>div{position:relative}.semi-page-rest-item{height:32px;line-height:32px;display:flex;justify-content:center;box-sizing:border-box;cursor:pointer}.semi-page-rest-item:hover{background-color:var(--semi-color-fill-0)}.semi-page-rest-item:active{background-color:var(--semi-color-fill-1)}.semi-rtl .semi-page,.semi-portal-rtl .semi-page{direction:rtl}.semi-rtl .semi-page-item,.semi-portal-rtl .semi-page-item{margin-right:4px;margin-left:4px}.semi-rtl .semi-page-prev,.semi-rtl .semi-page-next,.semi-portal-rtl .semi-page-prev,.semi-portal-rtl .semi-page-next{transform:scaleX(-1)}.semi-pincode-wrapper{display:flex}.semi-pincode-wrapper .semi-input-wrapper-small{width:24px;margin-right:6px}.semi-pincode-wrapper .semi-input-wrapper-small:last-child{margin-right:0}.semi-pincode-wrapper .semi-input-wrapper-default{width:32px;margin-right:8px}.semi-pincode-wrapper .semi-input-wrapper-default:last-child{margin-right:0}.semi-pincode-wrapper .semi-input-wrapper-large{width:42px;margin-right:12px}.semi-pincode-wrapper .semi-input-wrapper-large:last-child{margin-right:0}.semi-pincode-wrapper .semi-input-wrapper input{padding:0;text-align:center}.semi-popconfirm{box-sizing:border-box;max-width:400px}.semi-popconfirm-inner{display:flex;flex-direction:column;padding:24px 24px 24px 20px;position:relative}.semi-popconfirm-header{display:flex;justify-content:flex-start}.semi-popconfirm-header-title{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin-bottom:8px;color:var(--semi-color-text-0)}.semi-popconfirm-header-icon{width:24px;height:24px;margin-right:12px}.semi-popconfirm-header .semi-icon-alert_triangle{color:var(--semi-color-warning)}.semi-popconfirm-header-body{display:inline-flex;flex-grow:1;flex-direction:column}.semi-popconfirm-body{color:var(--semi-color-text-2)}.semi-popconfirm-body-withIcon{margin-left:36px}.semi-popconfirm-body>p{margin:0;padding:0}.semi-popconfirm-footer{margin-top:25px;display:flex;justify-content:flex-end}.semi-popconfirm-footer>.semi-button:first-child:not(:last-child){margin-right:8px}.semi-popconfirm-popover{border-radius:var(--semi-border-radius-medium)}.semi-popover-with-arrow .semi-popconfirm-inner{padding:12px 12px 12px 8px}.semi-popconfirm-rtl{direction:rtl}.semi-popconfirm-rtl .semi-popconfirm-inner{padding:24px 20px 24px 24px}.semi-popconfirm-rtl .semi-popconfirm-header{margin-right:0}.semi-popconfirm-rtl .semi-popconfirm-header-icon{margin-right:0;margin-left:12px}.semi-popconfirm-rtl .semi-popconfirm-footer{justify-content:flex-end}.semi-popconfirm-rtl .semi-popconfirm-footer>.semi-button:first-child:not(:last-child){margin-right:0;margin-left:8px}.semi-popover-with-arrow.semi-popconfirm-rtl{direction:rtl}.semi-popover-with-arrow.semi-popconfirm-rtl .semi-popconfirm-inner{padding:12px 8px 12px 12px}.semi-progress{display:flex;align-items:center}.semi-progress-track{background-color:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small)}.semi-progress-horizontal{height:4px;margin-top:4px;margin-bottom:4px}.semi-progress-horizontal.semi-progress-large{height:6px}.semi-progress-horizontal .semi-progress-track{height:100%;width:100%}.semi-progress-horizontal .semi-progress-track-inner{height:100%;background-color:var(--semi-color-success);border-radius:var(--semi-border-radius-small);transition:width .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-progress-horizontal .semi-progress-line-text{min-width:45px;font-weight:600;margin-left:16px;color:var(--semi-color-text-0)}.semi-progress-vertical{width:4px;display:inline-flex;height:100%;margin-left:4px;margin-right:4px;flex-direction:column}.semi-progress-vertical.semi-progress-large{width:6px}.semi-progress-vertical .semi-progress-track{height:100%;width:100%}.semi-progress-vertical .semi-progress-track-inner{background-color:var(--semi-color-success);border-radius:var(--semi-border-radius-small);width:100%;transition:height .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-progress-vertical .semi-progress-line-text{font-weight:600;margin-top:8px}.semi-progress-circle{position:relative;display:inline-block}.semi-progress-circle-ring{display:block}.semi-progress-circle-ring-track{stroke:var(--semi-color-fill-0)}.semi-progress-circle-ring-inner{transition:stroke-dashoffset .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95);transform:rotate(-90deg);transform-origin:50% 50%;stroke:var(--semi-color-success)}.semi-progress-circle-text{position:absolute;top:50%;left:50%;width:100%;text-align:center;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none;color:var(--semi-color-mode-minor-text)}.semi-rtl .semi-progress,.semi-portal-rtl .semi-progress{direction:rtl}.semi-rtl .semi-progress-horizontal .semi-progress-line-text,.semi-portal-rtl .semi-progress-horizontal .semi-progress-line-text{margin-left:0;margin-right:16px}.semi-rtl .semi-progress-circle-ring-inner,.semi-portal-rtl .semi-progress-circle-ring-inner{transform:rotate(-90deg);transform-origin:50% 50%}.semi-rtl .semi-progress-circle-text,.semi-portal-rtl .semi-progress-circle-text{left:auto;right:50%;transform:translate(50%,-50%)}.semi-radio{box-sizing:border-box;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;display:inline-flex;column-gap:8px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);min-height:20px;min-width:16px;cursor:pointer;vertical-align:bottom;text-align:left}.semi-radio.semi-radio-vertical{display:block}.semi-radio input[type=checkbox],.semi-radio input[type=radio]{position:absolute;left:0;top:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.semi-radio:hover .semi-radio-inner-display{background:var(--semi-color-fill-0);border:solid 1px var(--semi-color-focus-border)}.semi-radio:hover.semi-radio-cardRadioGroup .semi-radio-inner-display{background:var(--semi-color-white)}.semi-radio:hover .semi-radio-inner-checked .semi-radio-inner-display{background:var(--semi-color-primary-hover);border-color:var(--semi-color-primary-hover)}.semi-radio:active.semi-radio-cardRadioGroup .semi-radio-inner-display{background:var(--semi-color-white)}.semi-radio:active .semi-radio-inner-checked .semi-radio-inner-display{background:var(--semi-color-primary-active);border-color:var(--semi-color-primary-active)}.semi-radio-buttonRadioComponent{padding:4px;background:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small)}.semi-radio-buttonRadioGroup{position:relative;padding:4px;border-radius:var(--semi-border-radius-small);line-height:16px}.semi-radio-buttonRadioGroup:not(:last-child){padding-right:0}.semi-radio-buttonRadioGroup-small{padding:2px 4px;line-height:16px}.semi-radio-buttonRadioGroup-large{padding:4px;line-height:20px}.semi-radio-cardRadioGroup{flex-wrap:nowrap;border-radius:var(--semi-border-radius-small);padding:12px 16px;background:#0000;border:1px solid rgba(0,0,0,0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-radio-cardRadioGroup .semi-radio-inner{flex-shrink:0}.semi-radio-cardRadioGroup .semi-radio-inner-display{background:var(--semi-color-white)}.semi-radio-cardRadioGroup .semi-radio-addon{font-weight:600;font-size:14px;line-height:20px;color:var(--semi-color-text-0)}.semi-radio-cardRadioGroup .semi-radio-extra{font-weight:400;font-size:14px;line-height:20px;color:var(--semi-color-text-2);padding-left:0}.semi-radio-cardRadioGroup:active{background:var(--semi-color-fill-1)}.semi-radio-cardRadioGroup_checked{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary)}.semi-radio-cardRadioGroup_checked:hover{border:1px solid var(--semi-color-primary-hover)}.semi-radio-cardRadioGroup_checked:hover .semi-radio-inner-checked .semi-radio-inner-display{border-color:var(--semi-color-primary-hover)}.semi-radio-cardRadioGroup_checked:active{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary-active)}.semi-radio-cardRadioGroup_checked:active .semi-radio-inner-checked .semi-radio-inner-display{border-color:var(--semi-color-primary-active)}.semi-radio-cardRadioGroup_checked:active .semi-radio-inner-checked:hover .semi-radio-inner-display{background:var(--semi-color-primary-active)}.semi-radio-cardRadioGroup_hover{background:var(--semi-color-fill-0)}.semi-radio-cardRadioGroup_disabled:active{background:#0000}.semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup{background:var(--semi-color-primary-light-default);border:1px solid var(--semi-color-primary-disabled)}.semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup .semi-radio-inner-checked .semi-radio-inner-display,.semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup:hover .semi-radio-inner-checked .semi-radio-inner-display{border-color:var(--semi-color-primary-disabled)}.semi-radio.semi-radio-disabled:hover .semi-radio-inner-display,.semi-radio.semi-radio-disabled:active .semi-radio-inner-display{background:var(--semi-color-disabled-fill);border:solid 1px var(--semi-color-border)}.semi-radio.semi-radio-disabled:hover .semi-radio-inner-checked .semi-radio-inner-display,.semi-radio.semi-radio-disabled:active .semi-radio-inner-checked .semi-radio-inner-display{color:rgba(var(--semi-white),1);background:var(--semi-color-primary-disabled);border-color:var(--semi-color-primary-disabled)}.semi-radio-inner{display:inline-flex;margin-top:2px;position:relative;width:16px;height:16px;vertical-align:sub;-webkit-user-select:none;user-select:none}.semi-radio-inner-display{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:16px;height:16px;border:solid 1px var(--semi-color-text-3);border-radius:16px;background:#0000;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-radio-inner-display .semi-icon{width:100%;height:100%;font-size:14px}.semi-radio-content{display:flex;flex-direction:column;row-gap:4px}.semi-radio:hover .semi-radio-inner-display{background:var(--semi-color-fill-0)}.semi-radio:active .semi-radio-inner-display{background:var(--semi-color-fill-1)}.semi-radio-addon{-webkit-user-select:none;user-select:none;color:var(--semi-color-text-0);display:inline-flex;align-items:center}.semi-radio-addon-buttonRadio{text-align:center;border-radius:var(--semi-border-radius-small);font-weight:600;color:var(--semi-color-text-1);font-size:12px;padding:4px 16px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-radio-addon-buttonRadio-hover{font-weight:600;background:var(--semi-color-fill-1)}.semi-radio-addon-buttonRadio-checked{font-weight:600;background:var(--semi-color-bg-3);color:var(--semi-color-primary)}.semi-radio-addon-buttonRadio-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-radio-addon-buttonRadio-small{font-size:12px;padding:2px 16px}.semi-radio-addon-buttonRadio-large{font-size:14px;padding:6px 24px}.semi-radio .semi-radio-inner-checked:hover .semi-radio-inner-display{background:var(--semi-color-primary-hover)}.semi-radio .semi-radio-inner-checked:active .semi-radio-inner-display{background:var(--semi-color-primary-active)}.semi-radio .semi-radio-inner-checked .semi-radio-inner-display{border:solid 1px var(--semi-color-primary);background:var(--semi-color-primary);color:rgba(var(--semi-white),1);border-radius:16px}.semi-radio .semi-radio-inner-checked>.semi-radio-addon{color:var(--semi-color-text-0)}.semi-radio .semi-radio-inner-buttonRadio,.semi-radio .semi-radio-inner-pureCardRadio{position:absolute;top:0;left:0;width:100%;height:100%;margin-top:0;z-index:-1;opacity:0}.semi-radio-disabled,.semi-radio-disabled:hover,.semi-radio-disabled .semi-radio-inner{cursor:not-allowed}.semi-radio-disabled .semi-radio-inner-display{opacity:.75;background:var(--semi-color-disabled-fill);border-color:var(--semi-color-border)}.semi-radio-disabled .semi-radio-inner-display:hover{background:#0000}.semi-radio-disabled .semi-radio-inner-checked .semi-radio-inner-display,.semi-radio-disabled .semi-radio-inner-checked .semi-radio-inner-display:hover{color:rgba(var(--semi-white),1);background:var(--semi-color-primary-disabled);border-color:var(--semi-color-primary-disabled)}.semi-radio-disabled .semi-radio-addon,.semi-radio-disabled .semi-radio-extra{color:var(--semi-color-disabled-text)}.semi-radio-extra{color:var(--semi-color-text-2);box-sizing:border-box}.semi-radio-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-radio-focus-border{border:solid 1px var(--semi-color-focus-border)}.semi-radioGroup{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-radioGroup-vertical{display:flex;flex-direction:column;row-gap:12px}.semi-radioGroup-vertical-default .semi-radio,.semi-radioGroup-vertical-card .semi-radio{display:flex}.semi-radioGroup-horizontal{display:inline-flex;flex-wrap:wrap;vertical-align:bottom;gap:16px}.semi-radioGroup-buttonRadio{display:inline-block;background:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small);vertical-align:middle}.semi-rtl .semi-radio,.semi-portal-rtl .semi-radio{direction:rtl}.semi-rtl .semi-radio input[type=checkbox],.semi-rtl .semi-radio input[type=radio],.semi-portal-rtl .semi-radio input[type=checkbox],.semi-portal-rtl .semi-radio input[type=radio]{left:auto;right:0}.semi-rtl .semi-radio-buttonRadioGroup:not(:last-child),.semi-portal-rtl .semi-radio-buttonRadioGroup:not(:last-child){padding-left:0}.semi-rtl .semi-radioGroup,.semi-portal-rtl .semi-radioGroup{direction:rtl}.semi-rating{display:inline-block;margin:0;padding:0;color:rgba(var(--semi-yellow-5),1);list-style:none;outline:none;border-radius:3px}.semi-rating-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-rating-no-focus{outline:none}.semi-rating-disabled .semi-rating-star{cursor:default}.semi-rating-disabled .semi-rating-star:hover{transform:scale(1)}.semi-rating-star{position:relative;display:inline-block;margin:0;padding:0;color:inherit;cursor:pointer;transition:all .5s;transform:scale(var(--semi-transform_scale-none))}.semi-rating-star:not(:last-child){margin-right:6px}.semi-rating-star>div:hover,.semi-rating-star>div:focus{transform:scale(1.1)}.semi-rating-star>div.semi-rating-star-disabled{transform:none}.semi-rating-star-small{width:16px;height:16px;font-size:16px}.semi-rating-star-default{width:24px;height:24px;font-size:24px}.semi-rating-star-outer{display:inline-flex;width:fit-content;height:fit-content}.semi-rating-star-wrapper{position:relative;overflow:hidden;border-radius:3px;width:100%;height:100%}.semi-rating-star-first,.semi-rating-star-second{transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);color:var(--semi-color-fill-0);-webkit-user-select:none;user-select:none}.semi-rating-star-first{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;opacity:0}.semi-rating-star-half .semi-rating-star-first,.semi-rating-star-half .semi-rating-star-second{opacity:1}.semi-rating-star-half .semi-rating-star-first,.semi-rating-star-full .semi-rating-star-second{color:inherit}.semi-rtl .semi-rating,.semi-portal-rtl .semi-rating{direction:rtl}.semi-rtl .semi-rating-star:not(:last-child),.semi-portal-rtl .semi-rating-star:not(:last-child){margin-right:0;margin-left:6px}.semi-rtl .semi-rating-star-first,.semi-portal-rtl .semi-rating-star-first{left:auto;right:0}.semi-resizable-resizable{position:relative;box-sizing:border-box;flex-shrink:0}.semi-resizable-resizableHandler{position:absolute;-webkit-user-select:none;user-select:none;z-index:10}.semi-resizable-resizableHandler-top{width:100%;height:10px;left:0;cursor:row-resize;top:-5px}.semi-resizable-resizableHandler-right{width:10px;height:100%;top:0;cursor:col-resize;left:auto;right:-5px}.semi-resizable-resizableHandler-bottom{width:100%;height:10px;left:0;cursor:row-resize;top:auto;bottom:-5px}.semi-resizable-resizableHandler-left{width:10px;height:100%;top:0;cursor:col-resize;left:-5px}.semi-resizable-resizableHandler-topRight{width:20px;height:20px;position:absolute;right:-10px;top:-10px;cursor:ne-resize}.semi-resizable-resizableHandler-bottomRight{width:20px;height:20px;position:absolute;right:-10px;bottom:-10px;cursor:se-resize}.semi-resizable-resizableHandler-bottomLeft{width:20px;height:20px;position:absolute;left:-10px;bottom:-10px;cursor:sw-resize}.semi-resizable-resizableHandler-topLeft{width:20px;height:20px;position:absolute;left:-10px;top:-10px;cursor:nw-resize}.semi-resizable-group{display:flex;position:relative;box-sizing:border-box;height:100%;width:100%}.semi-resizable-item{position:relative;box-sizing:border-box;flex-shrink:0}.semi-resizable-handler{-webkit-user-select:none;user-select:none;z-index:10;display:flex;align-items:center;justify-content:center;background-color:var(--semi-color-fill-0);opacity:1}.semi-resizable-handler-vertical{width:100%;height:10px;flex-shrink:0;cursor:row-resize}.semi-resizable-handler-horizontal{height:100%;width:10px;flex-shrink:0;cursor:col-resize}.semi-resizable-background{height:100%;width:100%;top:0;right:0;bottom:0;left:0;z-index:20;opacity:0;position:fixed}.semi-scrolllist{width:100%;height:100%;background:var(--semi-color-bg-3);box-shadow:0 0 1px #0000004d,0 4px 14px #0000001a;border-radius:var(--semi-border-radius-medium);overflow:hidden;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column}.semi-scrolllist-header{text-align:center;padding:0 16px;background:#0000}.semi-scrolllist-header-title{padding:16px 0;font-weight:600;color:var(--semi-color-text-0);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-scrolllist-body{display:flex;height:300px;padding:0 16px;overflow:hidden}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer-nocycle>ul:before,.semi-scrolllist-body .semi-scrolllist-item>ul:before{content:"";display:block;width:100%;height:132px}.semi-scrolllist-body .semi-scrolllist-item{position:relative;flex:1;overflow-x:hidden;overflow-y:auto}.semi-scrolllist-body .semi-scrolllist-item:not(:last-child){border-right:1px solid var(--semi-color-border)}.semi-scrolllist-body .semi-scrolllist-item>ul,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul{box-sizing:border-box;width:100%;margin:0;padding:0 0 132px;list-style:none}.semi-scrolllist-body .semi-scrolllist-item>ul>li,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li{list-style:none;height:36px;box-sizing:border-box;color:var(--semi-color-text-0);text-align:center;display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:#0000;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms}.semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel{background:var(--semi-color-primary-light-default);color:var(--semi-color-text-0)}.semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel>svg,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel>svg{color:var(--semi-color-text-2);width:16px;height:16px;margin-right:12px}.semi-scrolllist-body .semi-scrolllist-item>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected),.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected){cursor:pointer}.semi-scrolllist-body .semi-scrolllist-item>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):hover,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):hover{background-color:var(--semi-color-fill-1)}.semi-scrolllist-body .semi-scrolllist-item>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):active,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li:not(.disabled):not(.semi-scrolllist-item-disabled):not(.semi-scrolllist-item-sel):not(.semi-scrolllist-item-selected):active{background-color:var(--semi-color-fill-2)}.semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-disabled,.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-scrolllist-body .semi-scrolllist-item-wheel{position:relative;flex:1;overflow:hidden}.semi-scrolllist-body .semi-scrolllist-item-wheel:not(:last-child){border-right:1px solid var(--semi-color-border)}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-item-selected{font-weight:600;color:var(--semi-color-primary)!important}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer{overflow-x:hidden;overflow-y:auto;height:100%;width:100%;padding-right:18px}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-shade{width:100%;height:50%;pointer-events:none;position:absolute}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-shade-pre{top:0;margin-top:-19px;background:var(--semi-color-bg-3);opacity:.5}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-shade-post{top:50%;margin-top:19px;background:var(--semi-color-bg-3);opacity:.5}.semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-selector{pointer-events:none;position:absolute;top:50%;border-top:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-border);height:36px;width:100%;transform:translateY(-50%)}.semi-scrolllist .semi-scrolllist-footer{border-top:1px solid var(--semi-color-border);padding:10px}.semi-scrolllist .semi-scrolllist-line{background:var(--semi-color-border);height:1px}.semi-rtl .semi-scrolllist,.semi-portal-rtl .semi-scrolllist{direction:rtl}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item:not(:last-child),.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item:not(:last-child){border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel>svg,.semi-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel>svg,.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item>ul>li.semi-scrolllist-item-sel>svg,.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul>li.semi-scrolllist-item-sel>svg{margin-right:0;margin-left:12px}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel:not(:last-child),.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel:not(:last-child){border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer,.semi-portal-rtl .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer{padding-right:0;padding-left:18px}.semi-select-option{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;word-break:break-all;padding:8px 12px;color:var(--semi-color-text-0);border-radius:0;position:relative;display:flex;flex-wrap:nowrap;align-items:center;cursor:pointer;box-sizing:border-box;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-select-option-icon{width:12px;color:#0000;margin-right:8px;display:flex;justify-content:center;align-content:center}.semi-select-option-text{display:flex;flex-wrap:wrap;white-space:pre}.semi-select-option-keyword{color:var(--semi-color-primary);background-color:inherit;font-weight:600}.semi-select-option:active{background-color:var(--semi-color-fill-1)}.semi-select-option-empty{cursor:not-allowed;color:var(--semi-color-disabled-text);justify-content:center}.semi-select-option-empty:hover,.semi-select-option-empty:active{background-color:inherit}.semi-select-option-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-select-option-disabled:hover{background-color:var(--semi-color-fill-0)}.semi-select-option-selected{font-weight:600;background:#0000}.semi-select-option-selected .semi-select-option-icon{color:var(--semi-color-text-2)}.semi-select-option-focused{background-color:var(--semi-color-fill-0)}.semi-select{box-sizing:border-box;border-radius:var(--semi-border-radius-small);border:1px solid rgba(0,0,0,0);height:32px;font-weight:400;background-color:var(--semi-color-fill-0);display:inline-flex;vertical-align:middle;position:relative;outline:none;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none));max-height:300px;overflow-y:auto}.semi-select:hover{background-color:var(--semi-color-fill-1);border:1px solid rgba(0,0,0,0)}.semi-select:focus{border:1px solid var(--semi-color-focus-border);background-color:var(--semi-color-fill-0);outline:0}.semi-select:active{background-color:var(--semi-color-fill-2)}.semi-select-small{height:24px;line-height:24px}.semi-select-large{min-height:40px;line-height:40px}.semi-select-large .semi-select-selection{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-select-open,.semi-select-focus{border:1px solid var(--semi-color-focus-border);outline:0}.semi-select-open:hover,.semi-select-focus:hover{background-color:var(--semi-color-fill-0);border:1px solid var(--semi-color-focus-border)}.semi-select-open:active,.semi-select-focus:active{background-color:var(--semi-color-fill-2);border:1px solid var(--semi-color-focus-border)}.semi-select-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-select-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-select-warning:focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-select-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning-light-active)}.semi-select-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-select-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-select-error:focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-select-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger-light-active)}.semi-select-disabled{cursor:not-allowed;background-color:var(--semi-color-disabled-fill)}.semi-select-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-select-disabled:focus{border:1px solid rgba(0,0,0,0);background-color:var(--semi-color-disabled-fill)}.semi-select-disabled .semi-select-selection,.semi-select-disabled .semi-select-selection-placeholder{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-select-disabled .semi-select-arrow,.semi-select-disabled .semi-select-prefix,.semi-select-disabled .semi-select-suffix{color:var(--semi-color-disabled-text)}.semi-select-disabled .semi-tag{color:var(--semi-color-disabled-text);background-color:#0000}.semi-select-selection{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:100%;display:flex;align-items:center;flex-grow:1;overflow:hidden;margin-left:12px;cursor:pointer;color:var(--semi-color-text-0)}.semi-select-selection-text{width:100%;overflow:hidden;text-overflow:ellipsis}.semi-select-selection-text-inactive{display:flex;opacity:.4}.semi-select-selection-text-hide{display:none}.semi-select-selection-placeholder{color:var(--semi-color-text-2)}.semi-select-selection .semi-tag{margin-top:1px;margin-right:4px;margin-bottom:1px}.semi-select-selection .semi-tag:nth-of-type(1){margin-left:0}.semi-select-selection .semi-tag-group{height:inherit}.semi-select-selection .semi-tag-group .semi-tag{margin-top:1px;margin-right:4px;margin-bottom:1px}.semi-select-content-wrapper{white-space:nowrap;overflow:hidden;display:flex;align-items:center;height:100%}.semi-select-content-wrapper-collapse{display:inline-flex;flex-shrink:0;width:100%}.semi-select-content-wrapper-collapse .semi-overflow-list-overflow{max-width:100%;min-width:50px}.semi-select-content-wrapper-collapse>.semi-select-content-wrapper-collapse-tag{background-color:#0000}.semi-select-content-wrapper-collapse>.semi-select-content-wrapper-collapse-N{background-color:#0000;padding:4px;color:var(--semi-color-text-0);font-size:12px}.semi-select-multiple{height:auto}.semi-select-multiple .semi-select-selection{margin-left:4px}.semi-select-multiple .semi-select-content-wrapper{width:100%;min-height:30px;flex-wrap:wrap}.semi-select-multiple .semi-select-content-wrapper-empty{margin-left:8px}.semi-select-multiple .semi-select-content-wrapper .semi-tag-group{display:flex;align-items:center}.semi-select-multiple .semi-select-content-wrapper-one-line{flex-wrap:nowrap}.semi-select-multiple .semi-select-content-wrapper-one-line .semi-tag-group{flex-wrap:nowrap;justify-content:flex-start;overflow:hidden;flex-shrink:0}.semi-select-multiple .semi-select-inline-label-wrapper{flex-shrink:0}.semi-select-multiple.semi-select-large .semi-select-content-wrapper{min-height:38px}.semi-select-multiple.semi-select-small .semi-select-content-wrapper{min-height:22px}.semi-select-arrow{display:flex;align-items:center;justify-content:center;width:32px;color:var(--semi-color-text-2);flex-shrink:0;transform:rotate(var(--semi-transform-rotate-none))}.semi-select-arrow-empty{display:flex;width:12px}.semi-select-prefix,.semi-select-suffix{display:flex;justify-content:center;align-items:center}.semi-select-prefix-text,.semi-select-suffix-text{margin:0 12px;color:var(--semi-color-text-2);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-select-prefix-icon,.semi-select-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-select-suffix{display:flex;justify-content:center;align-items:center}.semi-select-clear{display:flex;justify-content:center;align-items:center;width:32px;color:var(--semi-color-text-2);flex-shrink:0}.semi-select-clear:hover{color:var(--semi-color-primary)}.semi-select-inset-label-wrapper{display:inline}.semi-select-inset-label{margin:0 12px;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-select-create-tips{color:var(--semi-color-text-2);margin-right:4px}.semi-select-with-prefix .semi-select-selection{margin-left:0}.semi-select-single.semi-select-filterable .semi-select-content-wrapper{flex-grow:1;height:100%;overflow:hidden;position:relative}.semi-select-single.semi-select-filterable .semi-input-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;border:none;background-color:#0000}.semi-select-single.semi-select-filterable .semi-input-wrapper-focus{border:none}.semi-select-single.semi-select-filterable .semi-input{padding-left:0;padding-right:0;height:100%}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper{flex-grow:1;height:100%;overflow:hidden;position:relative}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper{height:24px;line-height:24px}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper .semi-input-default{height:24px}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper{position:absolute;top:0;left:0;height:100%}.semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper .semi-input-default{height:100%}.semi-select-multiple.semi-select-filterable .semi-input-wrapper{height:100%;width:100%;border:none;background-color:#0000}.semi-select-multiple.semi-select-filterable .semi-input-wrapper-focus{border:none}.semi-select-multiple.semi-select-filterable .semi-input{padding-left:0;padding-right:0}.semi-select-multiple.semi-select-filterable.semi-select-large .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper-large{height:24px;line-height:24px}.semi-select-multiple.semi-select-filterable.semi-select-large .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper-large .semi-input-large{height:24px}.semi-select-multiple.semi-select-filterable.semi-select-small .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper{height:20px;line-height:20px}.semi-select-multiple.semi-select-filterable.semi-select-small .semi-select-content-wrapper:not(.semi-select-content-wrapper-empty) .semi-input-wrapper .semi-input-small{height:20px}.semi-select-option-list-wrapper{padding:4px 0}.semi-select-option-list{overflow-x:hidden;overflow-y:auto}.semi-select-option-list-chosen .semi-select-option-icon{display:flex}.semi-select-group{color:var(--semi-color-text-2);margin-top:4px;padding:12px 16px 4px 32px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:default}.semi-select-group:not(:nth-of-type(1)){border-top:1px solid var(--semi-color-border)}.semi-select-loading-wrapper{padding:8px 16px;cursor:not-allowed;height:20px;box-sizing:content-box}.semi-select-borderless:not(:focus-within):not(:hover){background-color:#0000;border-color:#0000}.semi-select-borderless:not(:focus-within):not(:hover) .semi-select-arrow{opacity:0}.semi-select-borderless:focus-within:not(:active){background-color:#0000}.semi-select-borderless.semi-select-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-select-borderless.semi-select-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-select-borderless.semi-select-error:focus-within{border-color:var(--semi-color-danger)}.semi-select-borderless.semi-select-warning:focus-within{border-color:var(--semi-color-warning)}.semi-select-dropdown-search-wrapper{padding:8px 12px;border-bottom:1px solid rgba(0,0,0,0)}.semi-rtl .semi-select,.semi-portal-rtl .semi-select{direction:rtl}.semi-rtl .semi-select-selection,.semi-portal-rtl .semi-select-selection{margin-left:0;margin-right:12px}.semi-rtl .semi-select-selection .semi-tag:nth-of-type(1),.semi-portal-rtl .semi-select-selection .semi-tag:nth-of-type(1){margin-right:0}.semi-rtl .semi-select-selection .semi-tag-group .semi-tag,.semi-portal-rtl .semi-select-selection .semi-tag-group .semi-tag{margin-left:4px;margin-right:0}.semi-rtl .semi-select-multiple .semi-select-selection,.semi-portal-rtl .semi-select-multiple .semi-select-selection{margin-left:0;margin-right:4px}.semi-rtl .semi-select-multiple .semi-select-content-wrapper-empty,.semi-portal-rtl .semi-select-multiple .semi-select-content-wrapper-empty{margin-left:0;margin-right:8px}.semi-rtl .semi-select-create-tips,.semi-portal-rtl .semi-select-create-tips{margin-right:0;margin-left:4px}.semi-rtl .semi-select-with-prefix .semi-select-selection,.semi-portal-rtl .semi-select-with-prefix .semi-select-selection{margin-left:auto;margin-right:0}.semi-rtl .semi-select-single.semi-select-filterable .semi-input-wrapper,.semi-portal-rtl .semi-select-single.semi-select-filterable .semi-input-wrapper,.semi-rtl .semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper,.semi-portal-rtl .semi-select-multiple.semi-select-filterable .semi-select-content-wrapper-empty .semi-input-wrapper{left:auto;right:0}.semi-rtl .semi-select-group,.semi-portal-rtl .semi-select-group{padding-left:32px;padding-right:16px}.semi-rtl .semi-select-option-icon,.semi-portal-rtl .semi-select-option-icon{margin-right:0;margin-left:8px}.semi-sidesheet{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;position:fixed;margin:0;top:0;left:0;height:100%}.semi-sidesheet-inner:focus,.semi-sidesheet-content:focus{outline:none}.semi-sidesheet-inner-wrap{position:absolute}.semi-sidesheet-left,.semi-sidesheet-right{top:0;width:0%;height:100%}.semi-sidesheet-left .semi-sidesheet-inner-wrap,.semi-sidesheet-right .semi-sidesheet-inner-wrap{height:100%}.semi-sidesheet-left.semi-sidesheet,.semi-sidesheet-right.semi-sidesheet{width:100%}.semi-sidesheet-right,.semi-sidesheet-right .semi-sidesheet-inner-wrap{right:0}.semi-sidesheet-top,.semi-sidesheet-bottom{left:0;width:100%;height:0%}.semi-sidesheet-top .semi-sidesheet-inner-wrap,.semi-sidesheet-bottom .semi-sidesheet-inner-wrap{width:100%}.semi-sidesheet-top.semi-sidesheet,.semi-sidesheet-bottom.semi-sidesheet{height:100%}.semi-sidesheet-top{top:0}.semi-sidesheet-bottom,.semi-sidesheet-bottom .semi-sidesheet-inner-wrap{bottom:0}.semi-sidesheet-title{flex:1 0 auto;margin:0;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;font-size:18px;color:var(--semi-color-text-0);text-align:left}.semi-sidesheet-inner{z-index:1;overflow:auto;background-color:var(--semi-color-bg-2);-webkit-backdrop-filter:none;backdrop-filter:none;border:0}.semi-sidesheet-header{display:flex;align-items:flex-start;padding:24px 24px 20px;border-bottom:0px solid var(--semi-color-border)}.semi-sidesheet-body{padding:0 24px;flex:1;overflow:auto}.semi-sidesheet-size-small{width:448px}.semi-sidesheet-size-medium{width:684px}.semi-sidesheet-size-large{width:920px}.semi-sidesheet-size-small.semi-sidesheet{width:448px}.semi-sidesheet-size-medium.semi-sidesheet{width:684px}.semi-sidesheet-size-large.semi-sidesheet{width:920px}.semi-sidesheet-content{height:100%;display:flex;flex-direction:column;box-sizing:border-box;overflow:hidden}.semi-sidesheet-mask{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--semi-color-overlay-bg);-webkit-backdrop-filter:none;backdrop-filter:none;opacity:1}.semi-sidesheet-mask-hidden{opacity:0;display:none}.semi-sidesheet-footer{padding:24px}@keyframes semi-sidesheet-slideShow_top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes semi-sidesheet-slideHide_top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes semi-sidesheet-slideShow_bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes semi-sidesheet-slideHide_bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes semi-sidesheet-slideShow_left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes semi-sidesheet-slideHide_left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes semi-sidesheet-slideShow_right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes semi-sidesheet-slideHide_right{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes semi-sidesheet-opacityShow{0%{opacity:0}to{opacity:1}}@keyframes semi-sidesheet-opacityHide{0%{opacity:1}to{opacity:0}}.semi-sidesheet-animation-content_show_top{animation:semi-sidesheet-slideShow_top .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_hide_top{animation:semi-sidesheet-slideHide_top .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_show_bottom{animation:semi-sidesheet-slideShow_bottom .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_hide_bottom{animation:semi-sidesheet-slideHide_bottom .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_show_left{animation:semi-sidesheet-slideShow_left .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_hide_left{animation:semi-sidesheet-slideHide_left .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_show_right{animation:semi-sidesheet-slideShow_right .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-content_hide_right{animation:semi-sidesheet-slideHide_right .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-mask_show{animation:semi-sidesheet-opacityShow .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-animation-mask_hide{animation:semi-sidesheet-opacityHide .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidesheet-fixed .semi-sidesheet-inner{box-shadow:var(--semi-shadow-elevated)}.semi-sidesheet-fixed.semi-sidesheet-left,.semi-sidesheet-fixed.semi-sidesheet-left .semi-sidesheet-inner{left:0}.semi-sidesheet-fixed.semi-sidesheet-right{left:auto}.semi-sidesheet-fixed.semi-sidesheet-right .semi-sidesheet-inner{right:0}.semi-sidesheet-fixed.semi-sidesheet-top,.semi-sidesheet-fixed.semi-sidesheet-bottom{height:auto}.semi-sidesheet-fixed.semi-sidesheet-bottom{top:auto}.semi-sidesheet-fixed.semi-sidesheet-bottom .semi-sidesheet-inner{bottom:0}.semi-sidesheet.semi-sidesheet-popup{position:absolute}.semi-sidesheet-hidden{display:none}.semi-sidesheet-rtl .semi-sidesheet-inner{direction:rtl}.semi-sidesheet-rtl .semi-sidesheet-title{text-align:right}.semi-sidebar-main .semi-sidebar-container-content{overflow:hidden}.semi-sidebar-main-content-wrapper{display:flex;flex-direction:column;height:100%}.semi-sidebar-main-content{padding:12px;height:100%;box-sizing:border-box;overflow:auto}.semi-sidebar-container{height:100%;border-left:1px solid var(--semi-color-border);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:relative}.semi-sidebar-container-header{display:flex;align-items:center;padding:12px 12px 12px 20px;border-bottom:1px solid var(--semi-color-border)}.semi-sidebar-container-header-title{flex:1;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-sidebar-container-header-closeBtn{flex-shrink:0}.semi-sidebar-container-content{flex:1 1;overflow:hidden}.semi-sidebar-container .semi-toast-wrapper{position:absolute}@keyframes semi-sidebar-slideShow_right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes semi-sidebar-slideHide_right{0%{transform:translate(0)}to{transform:translate(100%)}}.semi-sidebar-animation-content_show{animation:semi-sidebar-slideShow_right .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidebar-animation-content_hide{animation:semi-sidebar-slideHide_right .18s cubic-bezier(.25,.46,.45,.94) 0ms;animation-fill-mode:forwards}.semi-sidebar-mcp-configure-content{padding:20px 16px;display:flex;flex-direction:column;height:100%;box-sizing:border-box}.semi-sidebar-mcp-configure-content-header{display:flex;align-items:center;justify-content:space-between}.semi-sidebar-mcp-configure-content-header-count{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;vertical-align:middle;color:var(--semi-color-text-2)}.semi-sidebar-mcp-configure-content-search{margin:16px 0}.semi-sidebar-mcp-configure-content-search-container{display:flex;column-gap:8px}.semi-sidebar-mcp-configure-content-item-container{overflow-y:auto}.semi-sidebar-mcp-configure-content-item{padding:8px 16px;display:flex;align-items:center;border-bottom:1px solid var(--semi-color-border)}.semi-sidebar-mcp-configure-content-item-sign{width:32px;height:32px;margin-right:12px;flex-shrink:0}.semi-sidebar-mcp-configure-content-item-sign .semi-icon{font-size:32px}.semi-sidebar-mcp-configure-content-item-content{justify-content:center;flex:1;min-width:0;margin-right:24px}.semi-sidebar-mcp-configure-content-item-content-label{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;color:var(--semi-color-text-0)}.semi-sidebar-mcp-configure-content-item-content-desc{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.semi-sidebar-mcp-configure-content-item-button{flex-shrink:0}.semi-sidebar-mcp-configure-content-item-button-configure{margin-right:12px}.semi-sidebar-mcp-configure-content-item-button.semi-button.semi-button-with-icon-only{width:24px;height:24px}.semi-sidebar-mcp-configure-content-custom-empty{margin-top:64px}.semi-sidebar-annotation .semi-sidebar-container-content{padding:12px;overflow:auto}.semi-sidebar-annotation-content{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;width:100%}.semi-sidebar-annotation-item{cursor:pointer}.semi-sidebar-annotation-item-title{overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0);font-weight:600}.semi-sidebar-annotation-item-footer{display:flex;column-gap:4px;align-items:center}.semi-sidebar-annotation-item-footer-logo{font-size:14px;width:14px;height:14px}.semi-sidebar-annotation-item-footer-text{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}.semi-sidebar-annotation-item-footer-order{box-sizing:border-box;min-width:16px;padding:0 2px;height:16px;border-radius:8px;background-color:var(--semi-color-fill-1);display:flex;align-items:center;justify-content:center;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-sidebar-annotation-item-text{padding:3px 12px;width:100%;row-gap:8px;display:flex;flex-direction:column}.semi-sidebar-annotation-item-text-detail{overflow:hidden;text-overflow:ellipsis;white-space:normal;max-width:100%;display:-webkit-box;line-clamp:4;-webkit-line-clamp:4;-webkit-box-orient:vertical;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-sidebar-annotation-item-video{border-radius:6px;border:1px solid var(--semi-color-border);overflow:hidden;width:calc((100% - 8px)/2);box-sizing:border-box}.semi-sidebar-annotation-item-video-content{padding:8px 8px 12px;display:flex;flex-direction:column;row-gap:8px}.semi-sidebar-annotation-item-video .semi-sidebar-annotation-item-title{height:40px}.semi-sidebar-annotation-item-video-img{width:100%;height:100%;object-fit:cover}.semi-sidebar-annotation-item-video-img-wrapper{position:relative;width:100%;height:107px}.semi-sidebar-annotation-item-video-play{position:absolute;top:6px;right:6px;border:1px solid var(--semi-color-bg-0);background:var(--semi-color-text-2);color:var(--semi-color-bg-0);border-radius:50%;width:20px;height:20px}.semi-sidebar-annotation-item-video-play.semi-icon{display:inline-flex;align-items:center;justify-content:center;font-size:12px}.semi-sidebar-annotation-item-video-duration{padding:2px 4px;position:absolute;bottom:6px;right:6px;background-color:rgba(var(--semi-grey-7),.7);border-radius:4px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-bg-0)}.semi-sidebar-annotation-item-video-title{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0)}.semi-sidebar-code-content{height:100%}.semi-sidebar-code-content .semi-codeHighlight-defaultTheme pre[class*=language-],.semi-sidebar-main-content .semi-codeHighlight-defaultTheme pre[class*=language-]{margin:0;padding-top:0;padding-bottom:0;background-color:#0000;overflow-y:hidden;overflow-x:auto}.semi-sidebar-code-content .semi-codeHighlight .line-numbers .line-numbers-rows,.semi-sidebar-main-content .semi-codeHighlight .line-numbers .line-numbers-rows{border-right:none}.semi-sidebar-code-content .semi-json-viewer,.semi-sidebar-main-content .semi-json-viewer{padding-top:0;padding-bottom:0;background-color:#0000}.semi-sidebar-collapse .semi-collapse-item{border:1px solid var(--semi-color-border);border-radius:8px}.semi-sidebar-collapse .semi-collapse-item:not(:last-child){margin-bottom:8px}.semi-sidebar-collapse .semi-collapse-header{padding:8px 16px;margin:0;font-weight:400}.semi-sidebar-collapse-header-content{display:flex;align-items:center;gap:8px;width:100%;padding-right:8px}.semi-sidebar-collapse-header-content .semi-icon{color:var(--semi-color-text-1)}.semi-sidebar-collapse-header-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-sidebar-collapse-header-expand-btn{flex-shrink:0}.semi-sidebar-collapse-header-expand-btn.semi-button.semi-button-with-icon-only{padding:4px;width:24px;height:24px}.semi-sidebar-collapse .semi-collapse-item-active .semi-collapsible-wrapper{border-top:1px solid var(--semi-color-border)}.semi-sidebar-collapse-code .semi-collapse-content{padding:12px 0}.semi-sidebar-options{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;padding:8px 12px;border-bottom:1px solid var(--semi-color-border)}.semi-sidebar-options-button .semi-button-content-right{margin-left:4px}.semi-sidebar-options-normal.semi-button-primary.semi-button-light{color:var(--semi-color-text-2);font-weight:400}.semi-sidebar-file .tiptap{font-size:14px;line-height:24px}.semi-sidebar-file .tiptap ::selection{background:rgba(var(--semi-light-blue-1),1)}.semi-sidebar-file .tiptap ::-moz-selection{background:rgba(var(--semi-light-blue-1),1)}.semi-sidebar-file .tiptap p.is-editor-empty:first-child:before{color:var(--semi-color-text-2);content:attr(data-placeholder);float:left;height:0;pointer-events:none}.semi-sidebar-file .tiptap p{margin:0;white-space:pre-wrap;color:var(--semi-color-text-0)}.semi-sidebar-file .tiptap blockquote{border-left:3px solid var(--semi-color-border);margin:24px 0;padding-left:16px}.semi-sidebar-file .tiptap:focus{outline:none}.semi-sidebar-file .tiptap pre{background-color:var(--semi-color-fill-0);padding:2px 4px;border-radius:4px;overflow:auto;font-size:14px;line-height:24px;border:1px solid var(--semi-color-border)}.semi-sidebar-file .tiptap pre code{background-color:#0000}.semi-sidebar-file .tiptap code{background-color:var(--semi-color-border);padding:2px 4px}.semi-sidebar-file .tiptap hr{border:none;border-top:1px solid var(--semi-color-border)}.semi-sidebar-file .tiptap span.select{display:inline-block;background-color:rgba(var(--semi-light-blue-1),1);line-height:24px}.semi-sidebar-file .tiptap.ProseMirror img:not([data-type=emoji] img){outline:.125rem solid rgba(0,0,0,0);margin:12px 0}.semi-sidebar-file .tiptap.ProseMirror img:not([data-type=emoji] img).ProseMirror-selectednode{outline-color:var(--semi-color-text-0)}.semi-sidebar-file .tiptap .tiptap-image-slot .uploadFail .semi-upload-drag-area,.semi-sidebar-file .tiptap .tiptap-image-slot .validateFail .semi-upload-drag-area,.semi-sidebar-file .tiptap .tiptap-image-slot .uploading .semi-upload-drag-area,.semi-sidebar-file .tiptap .tiptap-image-slot .success .semi-upload-drag-area{display:none}.semi-sidebar-file-menu-bar{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px;border-top:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-border);padding:2px 12px}.semi-sidebar-file-menu-bar-dropdown-item-active{color:var(--semi-color-primary);background:var(--semi-color-fill-0)}.semi-sidebar-file-menu-bar .semi-divider-vertical{margin:0}.semi-sidebar-file-menu-bar-btn-active.semi-button-tertiary.semi-button-borderless{background:var(--semi-color-fill-0)}.semi-sidebar-file-menu-bar-btn-codeblock{font-size:12px;line-height:16px;padding:8px}.semi-sidebar-file-menu-bar-link-dropdown{padding:8px;display:flex;align-items:center;justify-content:center}.semi-sidebar-file-menu-bar-link-dropdown-btn-active.semi-button-tertiary.semi-button-borderless{color:var(--semi-color-primary)}.semi-sidebar-detail .semi-sidebar-file{height:100%;display:flex;flex-direction:column}.semi-sidebar-detail .semi-sidebar-file-content{height:100%}.semi-sidebar-detail .semi-sidebar-file-editor{overflow:auto;flex:1;padding:0 12px}.semi-sidebar-detail .semi-sidebar-code-content{overflow:auto}.semi-sidebar-main .semi-sidebar-code-content{height:200px;overflow:auto}.semi-sidebar-main .semi-sidebar-collapse-file .semi-collapse-content{max-height:400px;overflow:auto}.semi-sidebar-main .semi-sidebar-collapse-code .semi-collapse-content{max-height:200px;overflow:auto}.semi-sidebar-main .semi-codeHighlight{height:200px;overflow:auto}.semi-sidebar-detail-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;color:var(--semi-color-text-0);padding:12px}.semi-sidebar-detail-header-left{display:flex;flex-direction:row;column-gap:8px;align-items:center}.semi-sidebar-detail-header-title{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-sidebar-detail-header-right{display:flex;flex-direction:row;column-gap:4px;align-items:center}.semi-skeleton-avatar,.semi-skeleton-image,.semi-skeleton-title,.semi-skeleton-button{background:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small)}.semi-skeleton-avatar-circle{border-radius:50%}.semi-skeleton-avatar-extra-extra-small{width:20px;height:20px}.semi-skeleton-avatar-extra-small{width:24px;height:24px}.semi-skeleton-avatar-medium{width:48px;height:48px}.semi-skeleton-avatar-small{width:32px;height:32px}.semi-skeleton-avatar-large{width:72px;height:72px}.semi-skeleton-avatar-extra-large{width:128px;height:128px}.semi-skeleton-paragraph{margin:0;padding:0;list-style-type:none}.semi-skeleton-paragraph li{background:var(--semi-color-fill-0);border-radius:var(--semi-border-radius-small);width:100%;height:16px;margin-bottom:10px}.semi-skeleton-paragraph li:last-child{width:60%;margin-bottom:0}.semi-skeleton-paragraph li:first-child{width:100%}.semi-skeleton-title{width:100%;height:24px}.semi-skeleton-button{width:115px;height:32px}.semi-skeleton-image{width:100%;height:100%}.semi-skeleton-active .semi-skeleton-avatar,.semi-skeleton-active .semi-skeleton-image,.semi-skeleton-active .semi-skeleton-title,.semi-skeleton-active .semi-skeleton-button,.semi-skeleton-active .semi-skeleton-paragraph li{background:linear-gradient(90deg,var(--semi-color-fill-0) 25%,var(--semi-color-fill-1) 44%,var(--semi-color-fill-0) 88%);background-size:400% 100%;animation:1.4s skeleton-loading ease infinite;animation-fill-mode:forwards}@keyframes skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.semi-rtl .semi-skeleton,.semi-portal-rtl .semi-skeleton{direction:rtl}.semi-slider{padding:0 13px;margin:0}.semi-slider-wrapper{box-sizing:border-box;position:relative;height:32px;width:100%;display:inline-block;vertical-align:bottom}.semi-slider-rail{box-sizing:border-box;margin:0;padding:0;color:#000000a6;font-size:14px;font-variant:tabular-nums;line-height:1.5;list-style:none;font-feature-settings:"tnum";position:absolute;height:4px;cursor:pointer;touch-action:none;background-color:var(--semi-color-fill-0);width:100%;border-radius:var(--semi-border-radius-small);top:14px}.semi-slider-handle{box-shadow:0 4px 6px #0000001a,0 0 1px #0000004d;box-sizing:border-box;touch-action:none;position:absolute;width:24px;height:24px;margin-top:4px;background-color:var(--semi-color-white);border:none;border-radius:50%;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:var(--semi-transform_scale-small) translate(-50%) translateY(0);display:inline-flex;justify-content:center;align-items:center}.semi-slider-handle:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-slider-handle-dot{background:var(--semi-color-primary);width:4px;height:4px;border-radius:var(--semi-border-radius-circle)}.semi-slider-handle:hover{background-color:var(--semi-color-white)}.semi-slider-handle-clicked{border:solid 1px var(--semi-color-focus-border);cursor:grabbing}.semi-slider-track{height:4px;background:var(--semi-color-primary);border-radius:var(--semi-border-radius-small);position:absolute;cursor:pointer;top:14px}.semi-slider-tooltip{position:absolute;top:-40px}.semi-slider-dots{width:100%;background:#0000}.semi-slider-dot{position:absolute;top:14px;width:4px;height:4px;background-color:var(--semi-color-white);border-radius:50%;cursor:pointer;transform:translate(0)}.semi-slider-dot-active{background-color:var(--semi-color-white)}.semi-slider-marks{position:absolute;top:23px;left:0;width:100%;font-size:14px}.semi-slider-mark{position:absolute;display:inline-block;color:var(--semi-color-text-2);text-align:center;cursor:pointer;transform:translate(-50%)}.semi-slider-marks-reverse{position:absolute;top:23px;left:0;width:100%;font-size:14px}.semi-slider-mark-reverse{position:absolute;display:inline-block;color:var(--semi-color-text-2);text-align:center;cursor:pointer;transform:translate(-50%) rotate(-180deg)}.semi-slider-boundary{position:relative;font-size:12px;color:var(--semi-color-text-0);visibility:hidden;top:30px}.semi-slider-boundary span{position:absolute;display:inline-block}.semi-slider-boundary-min{left:0}.semi-slider-boundary-max{right:0}.semi-slider-boundary-show{visibility:visible}.semi-slider-vertical-wrapper{width:4px;height:100%}.semi-slider-vertical-wrapper .semi-slider-track{width:4px}.semi-slider-vertical-wrapper .semi-slider-marks{height:100%;margin-top:-30px;margin-left:29px}.semi-slider-vertical-wrapper .semi-slider-marks-reverse{height:100%;margin-top:-30px;margin-left:-26px}.semi-slider-vertical-wrapper .semi-slider-rail{width:4px;height:100%;top:0}.semi-slider-vertical-wrapper .semi-slider-handle{margin-top:0;margin-left:-10px;transform:var(--semi-transform_scale-small) translateY(-50%) translate(0)}.semi-slider-vertical-wrapper .semi-slider-dot{transform:translateY(0)}.semi-slider-disabled{cursor:not-allowed}.semi-slider-disabled .semi-slider-handle{cursor:not-allowed;box-shadow:none;border:1px var(--semi-color-border) solid}.semi-slider-disabled .semi-slider-handle:hover{background-color:var(--semi-color-white)}.semi-slider-disabled .semi-slider-rail{cursor:not-allowed}.semi-slider-disabled .semi-slider-track{cursor:not-allowed;background-color:var(--semi-color-primary-disabled)}.semi-slider-disabled .semi-slider-dot{cursor:not-allowed;background-color:var(--semi-color-white);border-color:var(--semi-color-white);box-shadow:none}.semi-slider-handle-tooltip{text-align:center}.semi-slider-reverse{transform:rotate(180deg)}.semi-rtl .semi-slider,.semi-portal-rtl .semi-slider{direction:rtl}.semi-rtl .semi-slider-handle,.semi-portal-rtl .semi-slider-handle{transform:var(--semi-transform_scale-small) translate(50%) translateY(0)}.semi-rtl .semi-slider-mark,.semi-portal-rtl .semi-slider-mark{transform:translate(50%)}.semi-rtl .semi-slider-mark-reverse,.semi-portal-rtl .semi-slider-mark-reverse{transform:translate(50%) rotate(-180deg)}.semi-rtl .semi-slider-boundary-min,.semi-portal-rtl .semi-slider-boundary-min{left:auto;right:0}.semi-rtl .semi-slider-boundary-max,.semi-portal-rtl .semi-slider-boundary-max{right:auto;left:0}.semi-slider-rtl .semi-slider-handle{transform:var(--semi-transform_scale-small) translate(50%) translateY(0)}.semi-slider-rtl .semi-slider-mark{transform:translate(50%)}.semi-slider-rtl .semi-slider-mark-reverse{transform:translate(50%) rotate(-180deg)}.semi-slider-rtl .semi-slider-boundary-min{left:auto;right:0}.semi-slider-rtl .semi-slider-boundary-max{right:auto;left:0}.semi-space{display:inline-flex}.semi-space-vertical{flex-direction:column}.semi-space-horizontal{flex-direction:row}.semi-space-align-center{align-items:center}.semi-space-align-end{align-items:flex-end}.semi-space-align-start{align-items:flex-start}.semi-space-align-baseline{align-items:baseline}.semi-space-wrap{flex-wrap:wrap}.semi-space-tight-horizontal{column-gap:8px}.semi-space-tight-vertical{row-gap:8px}.semi-space-medium-horizontal{column-gap:16px}.semi-space-medium-vertical{row-gap:16px}.semi-space-loose-horizontal{column-gap:24px}.semi-space-loose-vertical{row-gap:24px}.semi-rtl .semi-space,.semi-portal-rtl .semi-space{direction:rtl}.semi-spin{position:relative;display:inline-block;width:20px;height:20px}.semi-spin-wrapper{text-align:center;position:absolute;width:100%;transform:translateY(-50%);top:50%;color:var(--semi-color-primary)}.semi-spin-wrapper>svg{display:inline;animation:.6s linear infinite semi-animation-rotate;animation-fill-mode:forwards;vertical-align:top;width:20px;height:20px}.semi-spin-animate{display:inline-flex;animation:1.6s linear infinite semi-animation-rotate;animation-fill-mode:forwards}.semi-spin-children{opacity:.5;-webkit-user-select:none;user-select:none}.semi-spin-block{display:block}.semi-spin-block:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.semi-spin-block .semi-spin-wrapper{display:block}.semi-spin-block.semi-spin{height:auto;width:auto}.semi-spin-hidden:after{content:none}.semi-spin-hidden>.semi-spin-children{opacity:1;-webkit-user-select:auto;user-select:auto}.semi-spin-small{width:14px;height:14px}.semi-spin-small>.semi-spin-wrapper svg{width:14px;height:14px}.semi-spin-middle{width:20px;height:20px}.semi-spin-middle>.semi-spin-wrapper svg{width:20px;height:20px}.semi-spin-large{width:32px;height:32px}.semi-spin-large>.semi-spin-wrapper svg{width:32px;height:32px}.semi-spin-container{overflow:hidden}.semi-rtl .semi-spin,.semi-portal-rtl .semi-spin,.semi-rtl .semi-spin-container,.semi-portal-rtl .semi-spin-container{direction:rtl}.semi-steps .semi-col{flex:1}.semi-steps-vertical .semi-row-flex{flex-direction:column}.semi-steps .semi-steps-item{box-sizing:border-box;display:flex;height:72px;position:relative;overflow:hidden;margin-right:16px;border:1px solid rgba(0,0,0,0);border-radius:var(--semi-border-radius-medium);padding:12px 16px;transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-small));transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-steps .semi-steps-item .semi-steps-item-title{position:relative;font-size:18px;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--semi-color-text-0);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-steps .semi-steps-item .semi-steps-item-description{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-steps .semi-steps-item-process{background-color:var(--semi-color-primary-light-default)}.semi-steps .semi-steps-item-process .semi-steps-item-left:not(.semi-steps-item-icon){background:var(--semi-color-primary)}.semi-steps .semi-steps-item-process .semi-steps-item-title,.semi-steps .semi-steps-item-process .semi-steps-item-icon{color:var(--semi-color-primary)}.semi-steps .semi-steps-item-wait .semi-steps-item-left:not(.semi-steps-item-icon){background:var(--semi-color-text-2)}.semi-steps .semi-steps-item-wait .semi-steps-item-icon{color:var(--semi-color-text-2)}.semi-steps .semi-steps-item-finish .semi-icon,.semi-steps .semi-steps-item-finish .semi-steps-item-title{color:var(--semi-color-success)}.semi-steps .semi-steps-item-finish-hover:hover{background-color:var(--semi-color-fill-0)}.semi-steps .semi-steps-item-finish-hover:hover .semi-icon,.semi-steps .semi-steps-item-finish-hover:hover .semi-steps-item-title{color:var(--semi-color-success-hover)}.semi-steps .semi-steps-item-finish-active:active{background-color:var(--semi-color-fill-1)}.semi-steps .semi-steps-item-finish-active:active .semi-icon,.semi-steps .semi-steps-item-finish-active:active .semi-steps-item-title{color:var(--semi-color-success-active)}.semi-steps .semi-steps-item-error .semi-icon,.semi-steps .semi-steps-item-error .semi-steps-item-title{color:var(--semi-color-danger)}.semi-steps .semi-steps-item-error-hover:hover{background:var(--semi-color-fill-0)}.semi-steps .semi-steps-item-error-hover:hover .semi-icon,.semi-steps .semi-steps-item-error-hover:hover .semi-steps-item-title{color:var(--semi-color-danger-hover)}.semi-steps .semi-steps-item-error-active:active{background-color:var(--semi-color-fill-1)}.semi-steps .semi-steps-item-error-active:active .semi-icon,.semi-steps .semi-steps-item-error-active:active .semi-steps-item-title{color:var(--semi-color-danger-active)}.semi-steps .semi-steps-item-warning .semi-steps-item-title,.semi-steps .semi-steps-item-warning .semi-icon{color:var(--semi-color-warning)}.semi-steps .semi-steps-item-warning-hover:hover{background:var(--semi-color-fill-0)}.semi-steps .semi-steps-item-warning-hover:hover .semi-steps-item-title,.semi-steps .semi-steps-item-warning-hover:hover .semi-icon{color:var(--semi-color-warning-hover)}.semi-steps .semi-steps-item-warning-active:active{background-color:var(--semi-color-fill-1)}.semi-steps .semi-steps-item-warning-active:active .semi-steps-item-title,.semi-steps .semi-steps-item-warning-active:active .semi-icon{color:var(--semi-color-warning-active)}.semi-steps .semi-steps-item-clickable{cursor:pointer}.semi-steps .semi-steps-item-left{width:24px;height:24px;line-height:32px;text-align:center;border-radius:32px;display:flex;align-items:center;justify-content:center;font-size:20px;line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;flex-grow:0}.semi-steps .semi-steps-item-left.semi-steps-item-plain{color:rgba(var(--semi-white),1)}.semi-steps .semi-steps-item-left-process{background:var(--semi-color-primary-light-default)}.semi-steps .semi-steps-item-content{margin-left:16px;flex:1;overflow:hidden}.semi-steps-basic.semi-steps-horizontal{display:flex;flex-flow:row nowrap}.semi-steps-basic.semi-steps-horizontal.semi-steps-hasline .semi-steps-item-title:after{content:"";position:absolute;top:50%;left:100%;display:block;width:9999px;height:1px;background:var(--semi-color-fill-2)}.semi-steps-basic.semi-steps-horizontal .semi-steps-item{padding-left:16px}.semi-steps-basic.semi-steps-horizontal .semi-steps-item:first-child{padding-left:0}.semi-steps-basic.semi-steps-horizontal .semi-steps-item:last-child{flex:none}.semi-steps-basic.semi-steps-horizontal .semi-steps-item:last-child .semi-steps-item-title{max-width:100%;padding-right:0}.semi-steps-basic.semi-steps-horizontal .semi-steps-item:last-child .semi-steps-item-title:after{display:none}.semi-steps-basic.semi-steps-horizontal .semi-steps-item-done .semi-steps-item-container .semi-steps-item-title:after{background:var(--semi-color-primary)}.semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-content{flex:1}.semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-description{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);width:100%;max-width:268px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title{max-width:80%;min-height:24px;display:inline-flex;align-items:center}.semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title .semi-steps-item-title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title .semi-steps-item-title-text-empty{width:0}.semi-steps-basic.semi-steps-vertical{display:flex;flex-flow:column nowrap}.semi-steps-basic.semi-steps-vertical .semi-steps-item-icon{box-sizing:content-box}.semi-steps-basic.semi-steps-vertical.semi-steps-small .semi-steps-item .semi-steps-item-content{min-height:40px}.semi-steps-basic.semi-steps-vertical.semi-steps-hasline .semi-steps-item-icon:after{content:"";position:absolute;top:100%;left:50%;display:block;width:1px;height:9999px;background:var(--semi-color-fill-2)}.semi-steps-basic.semi-steps-vertical .semi-steps-item{padding-top:9px}.semi-steps-basic.semi-steps-vertical .semi-steps-item:first-child{padding-top:0}.semi-steps-basic.semi-steps-vertical .semi-steps-item:last-child .semi-steps-item-icon:after{display:none}.semi-steps-basic.semi-steps-vertical .semi-steps-item-done .semi-steps-item-icon:after{background:var(--semi-color-primary)}.semi-steps-basic.semi-steps-vertical .semi-steps-item .semi-steps-item-content{min-height:42px;padding-bottom:22px}.semi-steps-basic.semi-steps-vertical .semi-steps-item .semi-steps-item-icon{display:inline-flex;position:relative;padding-bottom:9px}.semi-steps-basic.semi-steps-vertical .semi-steps-item .semi-steps-item-description{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);width:100%}.semi-steps-basic.semi-steps-vertical .semi-steps-item .semi-steps-item-title{max-width:100%}.semi-steps-basic.semi-steps-vertical .semi-steps-item .semi-steps-item-title .semi-steps-item-title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-steps-basic .semi-steps-item{box-sizing:border-box;position:relative;display:inline-block;vertical-align:top;overflow:hidden;flex:1;transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-small))}.semi-steps-basic .semi-steps-item-clickable{cursor:pointer}.semi-steps-basic .semi-steps-item-hover:hover .semi-steps-item-title,.semi-steps-basic .semi-steps-item-hover:hover .semi-steps-item-description{color:var(--semi-color-focus-border)}.semi-steps-basic .semi-steps-item .semi-steps-item-container{display:flex;align-items:flex-start}.semi-steps-basic .semi-steps-item .semi-steps-item-left{display:flex;justify-content:center;align-items:center;margin-right:8px}.semi-steps-basic .semi-steps-item .semi-steps-item-left .semi-steps-item-icon{display:flex;height:24px;align-items:center}.semi-steps-basic .semi-steps-item .semi-steps-item-left .semi-steps-item-number-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;background:var(--semi-color-primary);border-radius:var(--semi-border-radius-circle);color:var(--semi-color-white);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-steps-basic .semi-steps-item .semi-steps-item-title{position:relative;display:inline-block;font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:24px;font-weight:600;color:var(--semi-color-text-0);vertical-align:top;padding-right:16px;margin-bottom:4px;transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-steps-basic .semi-steps-item-finish .semi-steps-item-left .semi-steps-item-icon{color:var(--semi-color-primary)}.semi-steps-basic .semi-steps-item-finish .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{color:var(--semi-color-white)}.semi-steps-basic .semi-steps-item-wait .semi-steps-item-title,.semi-steps-basic .semi-steps-item-wait .semi-steps-item-left .semi-steps-item-icon{color:var(--semi-color-text-2)}.semi-steps-basic .semi-steps-item-wait .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{background:var(--semi-color-fill-0);color:var(--semi-color-text-2)}.semi-steps-basic .semi-steps-item-wait-hover:hover .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{background:var(--semi-color-secondary-light-default);color:var(--semi-color-focus-border)}.semi-steps-basic .semi-steps-item-process .semi-steps-item-left .semi-steps-item-icon{color:var(--semi-color-primary)}.semi-steps-basic .semi-steps-item-process .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{color:var(--semi-color-white)}.semi-steps-basic .semi-steps-item-error .semi-steps-item-left .semi-steps-item-icon{color:var(--semi-color-danger)}.semi-steps-basic .semi-steps-item-error .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{color:var(--semi-color-primary)}.semi-steps-basic .semi-steps-item-warning .semi-steps-item-left .semi-steps-item-icon{color:var(--semi-color-warning)}.semi-steps-basic .semi-steps-item-warning .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{color:var(--semi-color-white)}.semi-steps-basic.semi-steps-small .semi-steps-item .semi-steps-item-title{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-steps-basic.semi-steps-small .semi-steps-item .semi-steps-item-left .semi-steps-item-icon{height:20px}.semi-steps-basic.semi-steps-small .semi-steps-item .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;width:20px;height:20px}.semi-steps-nav{display:inline-flex;flex-flow:row nowrap}.semi-steps-nav .semi-steps-item{box-sizing:border-box}.semi-steps-nav .semi-steps-item:last-child{flex:none}.semi-steps-nav .semi-steps-item:last-child .semi-steps-item-content{width:auto}.semi-steps-nav .semi-steps-item .semi-steps-item-container{display:flex;align-items:center;color:var(--semi-color-text-2)}.semi-steps-nav .semi-steps-item .semi-steps-item-container .semi-steps-item-icon{display:inline-flex;flex:1;justify-content:center;color:var(--semi-grey-3);min-width:60px}.semi-steps-nav .semi-steps-item .semi-steps-item-content{flex:1;display:inline-block}.semi-steps-nav .semi-steps-item .semi-steps-item-title{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;max-width:17em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}.semi-steps-nav .semi-steps-item-active .semi-steps-item-title{color:var(--semi-color-text-0);font-weight:600}.semi-steps-nav.semi-steps-small .semi-steps-item .semi-steps-item-title{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-rtl .semi-steps,.semi-portal-rtl .semi-steps{direction:rtl}.semi-rtl .semi-steps-item,.semi-portal-rtl .semi-steps-item{margin-right:auto;margin-left:16px}.semi-rtl .semi-steps-item-content,.semi-portal-rtl .semi-steps-item-content{margin-left:auto;margin-right:16px}.semi-rtl .semi-steps-basic,.semi-portal-rtl .semi-steps-basic{direction:rtl}.semi-rtl .semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title,.semi-portal-rtl .semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title{padding-left:16px}.semi-rtl .semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title:after,.semi-portal-rtl .semi-steps-basic.semi-steps-horizontal .semi-steps-item .semi-steps-item-title:after{right:100%}.semi-rtl .semi-steps-basic.semi-steps-vertical .semi-steps-item,.semi-portal-rtl .semi-steps-basic.semi-steps-vertical .semi-steps-item{margin:0}.semi-rtl .semi-steps-nav,.semi-portal-rtl .semi-steps-nav{direction:rtl}.semi-switch{box-sizing:border-box;display:inline-block;border-radius:12px;border:1px rgba(0,0,0,0) solid;position:relative;cursor:pointer;background-color:var(--semi-color-fill-0);transition:background-color .2s var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);width:40px;height:24px}.semi-switch:hover{background-color:var(--semi-color-fill-1)}.semi-switch:active{border:1px var(--semi-color-fill-2) solid}.semi-switch:active .semi-switch-knob{width:24px}.semi-switch-focus{outline:2px solid var(--semi-color-primary-light-active)}.semi-switch-checked{background-color:var(--semi-color-success)}.semi-switch-checked:hover{background-color:var(--semi-color-success-hover)}.semi-switch-checked .semi-switch-knob{transform:translate(18px);background-color:rgba(var(--semi-white),1)}.semi-switch-checked:active .semi-switch-knob{transform:translate(12px)}.semi-switch-active{background-color:var(--semi-color-success-active)}.semi-switch-disabled{cursor:not-allowed;background-color:#0000;border:1px var(--semi-color-border) solid}.semi-switch-disabled:hover,.semi-switch-disabled:active{background-color:#0000}.semi-switch-disabled:active .semi-switch-knob{width:18px}.semi-switch-disabled .semi-switch-knob{cursor:not-allowed;box-shadow:none;border:1px var(--semi-color-border) solid}.semi-switch-disabled .semi-switch-native-control{pointer-events:none;cursor:not-allowed}.semi-switch-disabled.semi-switch-checked{border-color:#0000;background-color:var(--semi-color-success-disabled)}.semi-switch-disabled.semi-switch-checked:active .semi-switch-knob{transform:translate(18px)}.semi-switch-disabled.semi-switch-checked .semi-switch-knob{box-shadow:none;border:none}.semi-switch-disabled.semi-switch-loading:not(.semi-switch-checked):hover{background-color:var(--semi-color-fill-1)}.semi-switch-knob{box-shadow:0 4px 6px #0000001a,0 0 1px #0000004d;cursor:pointer;border-radius:9px;background-color:rgba(var(--semi-white),1);box-sizing:border-box;position:absolute;left:0;right:auto;transition:transform .2s ease-in-out,width .2s ease-in-out;width:18px;height:18px;top:2px;transform:translate(2px)}.semi-switch-native-control{width:100%;height:100%;opacity:0;cursor:inherit;pointer-events:auto;margin:0;position:absolute;top:0;left:0}.semi-switch-native-control[type=checkbox]{width:inherit;height:inherit}.semi-switch-checked-text,.semi-switch-unchecked-text{position:absolute;font-size:12px;height:100%;width:20px;display:flex;justify-content:center;align-items:center}.semi-switch-checked-text{color:var(--semi-color-white)}.semi-switch-unchecked-text{color:var(--semi-color-text-2);right:0}.semi-switch-loading{display:inline-flex;align-items:center;background-color:var(--semi-color-fill-1)}.semi-switch-loading-spin .semi-spin-wrapper{display:inline-flex;align-items:center;color:var(--semi-color-white)}.semi-switch-loading .semi-switch-loading-spin{transform:translate(2px)}.semi-switch-loading .semi-switch-loading-spin>.semi-spin-wrapper>svg{width:18px;height:18px}.semi-switch-loading.semi-switch-checked{background-color:var(--semi-color-success-hover)}.semi-switch-loading.semi-switch-checked .semi-switch-loading-spin{transform:translate(16px)}.semi-switch-loading.semi-switch-small .semi-switch-loading-spin{transform:translate(2px)}.semi-switch-loading.semi-switch-small .semi-switch-loading-spin>.semi-spin-wrapper>svg{width:10px;height:10px}.semi-switch-loading.semi-switch-small.semi-switch-checked .semi-switch-loading-spin{transform:translate(10px)}.semi-switch-loading.semi-switch-large .semi-switch-loading-spin{transform:translate(2px)}.semi-switch-loading.semi-switch-large .semi-switch-loading-spin>.semi-spin-wrapper>svg{width:28px;height:28px}.semi-switch-loading.semi-switch-large.semi-switch-checked .semi-switch-loading-spin{transform:translate(22px)}.semi-switch-disabled.semi-switch-checked{background-color:var(--semi-color-success-disabled)}.semi-switch-large{width:54px;height:32px;border-radius:16px}.semi-switch-large .semi-switch-knob{width:24px;height:24px;top:3px;border-radius:12px;transform:translate(3px)}.semi-switch-large.semi-switch-checked .semi-switch-knob{transform:translate(26px)}.semi-switch-large.semi-switch-checked:active .semi-switch-knob{transform:translate(16px)}.semi-switch-large:active .semi-switch-knob{width:34px}.semi-switch-large .semi-switch-checked-text,.semi-switch-large .semi-switch-unchecked-text{width:26px;font-size:14px}.semi-switch-small{width:26px;height:16px;border-radius:8px}.semi-switch-small .semi-switch-knob{width:12px;height:12px;top:1px;border-radius:6px;transform:translate(1px)}.semi-switch-small.semi-switch-checked .semi-switch-knob{transform:translate(11px)}.semi-switch-small.semi-switch-checked:active .semi-switch-knob{transform:translate(9px)}.semi-switch-small:active .semi-switch-knob{width:14px}.semi-form .semi-switch-native-control{width:100%;height:100%}.semi-rtl .semi-switch,.semi-portal-rtl .semi-switch{direction:rtl}.semi-rtl .semi-switch-checked .semi-switch-knob,.semi-portal-rtl .semi-switch-checked .semi-switch-knob{transform:translate(-18px)}.semi-rtl .semi-switch-checked:active .semi-switch-knob,.semi-portal-rtl .semi-switch-checked:active .semi-switch-knob{transform:translate(-12px)}.semi-rtl .semi-switch-knob,.semi-portal-rtl .semi-switch-knob{right:0;left:auto;transform:translate(-2px)}.semi-rtl .semi-switch-native-control,.semi-portal-rtl .semi-switch-native-control{right:0}.semi-rtl .semi-switch-unchecked-text,.semi-portal-rtl .semi-switch-unchecked-text{left:0}.semi-rtl .semi-switch-loading .semi-switch-loading-spin,.semi-portal-rtl .semi-switch-loading .semi-switch-loading-spin{transform:translate(-2px)}.semi-rtl .semi-switch-loading.semi-switch-checked .semi-switch-loading-spin,.semi-portal-rtl .semi-switch-loading.semi-switch-checked .semi-switch-loading-spin{transform:translate(-16px)}.semi-rtl .semi-switch-loading.semi-switch-small .semi-switch-loading-spin,.semi-portal-rtl .semi-switch-loading.semi-switch-small .semi-switch-loading-spin{transform:translate(-2px)}.semi-rtl .semi-switch-loading.semi-switch-small.semi-switch-checked .semi-switch-loading-spin,.semi-portal-rtl .semi-switch-loading.semi-switch-small.semi-switch-checked .semi-switch-loading-spin{transform:translate(-10px)}.semi-rtl .semi-switch-loading.semi-switch-large .semi-switch-loading-spin,.semi-portal-rtl .semi-switch-loading.semi-switch-large .semi-switch-loading-spin{transform:translate(-2px)}.semi-rtl .semi-switch-loading.semi-switch-large.semi-switch-checked .semi-switch-loading-spin,.semi-portal-rtl .semi-switch-loading.semi-switch-large.semi-switch-checked .semi-switch-loading-spin{transform:translate(-22px)}.semi-rtl .semi-switch-large .semi-switch-knob,.semi-portal-rtl .semi-switch-large .semi-switch-knob{transform:translate(-3px)}.semi-rtl .semi-switch-large.semi-switch-checked .semi-switch-knob,.semi-portal-rtl .semi-switch-large.semi-switch-checked .semi-switch-knob{transform:translate(-26px)}.semi-rtl .semi-switch-large.semi-switch-checked:active .semi-switch-knob,.semi-portal-rtl .semi-switch-large.semi-switch-checked:active .semi-switch-knob{transform:translate(-16px)}.semi-rtl .semi-switch-small .semi-switch-knob,.semi-portal-rtl .semi-switch-small .semi-switch-knob{transform:translate(-1px)}.semi-rtl .semi-switch-small.semi-switch-checked .semi-switch-knob,.semi-portal-rtl .semi-switch-small.semi-switch-checked .semi-switch-knob{transform:translate(-11px)}.semi-rtl .semi-switch-small.semi-switch-checked:active .semi-switch-knob,.semi-portal-rtl .semi-switch-small.semi-switch-checked:active .semi-switch-knob{transform:translate(-9px)}.semi-table-panel-operation{background-color:var(--semi-color-primary);padding:8px 16px;display:flex;justify-content:space-between;color:var(--semi-color-text-2)}.semi-table-panel-operation-right,.semi-table-panel-operation-left{display:flex;justify-content:space-between}.semi-table-panel-operation-selected{color:var(--semi-color-primary-light-active)}.semi-table-pagination-info{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}.semi-table-pagination-outer{display:flex;justify-content:space-between;align-items:center}.semi-table{width:100%;text-align:left;border-collapse:separate;border-spacing:0;font-size:inherit;display:table}.semi-table-wrapper{zoom:1;position:relative;clear:both;box-sizing:border-box;margin:0;padding:0;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0);width:100%}.semi-table-wrapper[data-column-fixed=true]{z-index:1}.semi-table-wrapper-ltr,.semi-table-wrapper-ltr .semi-spin{direction:ltr}.semi-table-middle .semi-table-tbody>.semi-table-row>.semi-table-row-cell{padding-top:12px;padding-bottom:12px}.semi-table-small .semi-table-tbody>.semi-table-row>.semi-table-row-cell{padding-top:8px;padding-bottom:8px}.semi-table-title{position:relative;padding:16px 0}.semi-table-container{position:relative}.semi-table-header{overflow:hidden;scrollbar-base-color:rgba(0,0,0,0)}.semi-table-header::-webkit-scrollbar{background-color:#0000;border-bottom:2px solid var(--semi-color-border)}.semi-table-header-sticky{position:sticky;z-index:102}.semi-table-header-sticky .semi-table-thead>.semi-table-row>.semi-table-row-head{background-color:var(--semi-color-bg-1)}.semi-table-header-hidden{height:0}.semi-table-align-center .semi-table-operate-wrapper{justify-content:center}.semi-table-align-right .semi-table-operate-wrapper{justify-content:flex-end}.semi-table-operate-wrapper{display:flex;justify-content:flex-start}.semi-table-body{overflow:auto;width:100%;box-sizing:border-box}.semi-table-colgroup{display:table-column-group}.semi-table-colgroup .semi-table-col{display:table-column}.semi-table-colgroup .semi-table-column-expand,.semi-table-colgroup .semi-table-column-selection{width:48px}.semi-table-thead>.semi-table-row>.semi-table-row-head{background-color:var(--semi-color-bg-1);color:var(--semi-color-text-2);font-weight:600;text-align:left;border-bottom:2px solid var(--semi-color-border);padding:8px 16px;vertical-align:middle;overflow-wrap:break-word;position:relative;transition:background-color var(--semi-transition_duration-none) linear}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-row-head-clickSort{cursor:pointer}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-row-head-clickSort:hover{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-0)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left,.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right{z-index:101;position:sticky;background-color:var(--semi-color-bg-1)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last{border-right:1px solid var(--semi-color-border);box-shadow:3px 0 0 0 var(--semi-color-shadow)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last.resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last.resizing .react-resizable-handle:hover{background-color:unset}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first{border-left:1px solid var(--semi-color-border);box-shadow:-3px 0 0 0 var(--semi-color-shadow)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first.resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first.resizing .react-resizable-handle:hover{background-color:unset}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first[x-type=column-scrollbar]{box-shadow:none;border-left:rgba(0,0,0,0)}.semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-column-selection{text-align:center}.semi-table-thead>.semi-table-row>.semi-table-row-head[colspan]:not([colspan="1"]){text-align:center}.semi-table-thead>.semi-table-row>.semi-table-row-head .semi-table-header-column{display:inline-flex;align-items:center}.semi-table-thead>.semi-table-row>.semi-table-row-head-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-table-thead>.semi-table-row>.semi-table-row-head-ellipsis .semi-table-row-head-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-table-thead>.semi-table-row .react-resizable{position:relative;background-clip:padding-box}.semi-table-thead>.semi-table-row .resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-thead>.semi-table-row .resizing .react-resizable-handle:hover{background-color:unset}.semi-table-thead>.semi-table-row .react-resizable-handle{position:absolute;width:9px;height:calc(100% - 8px);background-color:var(--semi-color-border);bottom:4px;right:-1px;cursor:col-resize;z-index:0}.semi-table-thead>.semi-table-row .react-resizable-handle:hover{background-color:var(--semi-color-primary)}.semi-table-tbody{display:table-row-group}.semi-table-tbody>.semi-table-row{display:table-row;background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row.semi-table-row-hovered>.semi-table-row-cell{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-0)}.semi-table-tbody>.semi-table-row.semi-table-row-hovered>.semi-table-row-cell.semi-table-cell-fixed-left,.semi-table-tbody>.semi-table-row.semi-table-row-hovered>.semi-table-row-cell.semi-table-cell-fixed-right{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row:hover>.semi-table-row-cell{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-0)}.semi-table-tbody>.semi-table-row:hover>.semi-table-row-cell.semi-table-cell-fixed-left,.semi-table-tbody>.semi-table-row:hover>.semi-table-row-cell.semi-table-cell-fixed-right{background-image:linear-gradient(0deg,var(--semi-color-fill-0),var(--semi-color-fill-0));background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row>.semi-table-row-cell{display:table-cell;overflow-wrap:break-word;border-left:none;border-right:none;border-bottom:1px solid var(--semi-color-border);padding:16px;box-sizing:border-box;position:relative;vertical-align:middle}.semi-table-tbody>.semi-table-row>.semi-table-row-cell.resizing{border-right:2px solid var(--semi-color-primary)}.semi-table-tbody>.semi-table-row>.semi-table-row-cell-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semi-table-tbody>.semi-table-row.semi-table-row-expand>.semi-table-row-cell{background-color:var(--semi-color-fill-0)}.semi-table-tbody>.semi-table-row.semi-table-row-hidden{display:none}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left,.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right{z-index:101;position:sticky;background-color:var(--semi-color-bg-1)}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last{border-right:1px solid var(--semi-color-border);box-shadow:3px 0 0 0 var(--semi-color-shadow)}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first{border-left:1px solid var(--semi-color-border);box-shadow:-3px 0 0 0 var(--semi-color-shadow)}.semi-table-tbody>.semi-table-row>.semi-table-cell-fixed>*{transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms}.semi-table-tbody>.semi-table-row>*{transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeOut) 0ms}.semi-table-tbody>.semi-table-row-section{display:table-row}.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell{background-color:rgba(var(--semi-grey-0),1);border-bottom:1px solid var(--semi-color-border)}.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell:not(.semi-table-column-selection){padding:10px 16px}.semi-table-tbody>.semi-table-row-section .semi-table-section-inner{display:inline-flex;align-items:center}.semi-table-virtualized .semi-table-tbody{display:block}.semi-table-virtualized .semi-table-tbody>.semi-table-row{display:flex}.semi-table-virtualized .semi-table-tbody>.semi-table-row>.semi-table-row-cell{word-wrap:unset;word-break:unset;white-space:nowrap;display:inline-flex;align-items:center;overflow:hidden}.semi-table-virtualized .semi-table-tbody>.semi-table-row-section>.semi-table-row-cell{padding-top:16px;padding-bottom:16px;display:flex}.semi-table-virtualized .semi-table-tbody>.semi-table-row-expand>.semi-table-row-cell{padding:0;overflow:unset}.semi-table-footer{background-color:var(--semi-color-fill-0);padding:16px;margin:0;position:relative}.semi-table .semi-table-selection-wrap{display:inline-flex;vertical-align:bottom}.semi-table .semi-table-selection-disabled{cursor:not-allowed}.semi-table .semi-table-selection-disabled>.semi-checkbox{pointer-events:none}.semi-table .semi-table-column-hidden{display:none}.semi-table .semi-table-column-selection{text-align:center}.semi-table .semi-table-column-selection .semi-checkbox-inner-display .semi-icon{left:0;top:0}.semi-table .semi-table-column-expand .semi-table-expand-icon{transform:translateY(2px)}.semi-table .semi-table-column-expand .semi-table-expand-icon:last-child{margin-right:0}.semi-table .semi-table-column-sorter{display:inline-block;width:16px;height:16px;vertical-align:middle;text-align:center}.semi-table .semi-table-column-sorter-wrapper{display:flex;gap:4px;align-items:center;cursor:pointer;overflow:hidden}.semi-table .semi-table-column-sorter-up,.semi-table .semi-table-column-sorter-down{height:0;display:block;color:var(--semi-color-text-2)}.semi-table .semi-table-column-sorter-up:hover .anticon,.semi-table .semi-table-column-sorter-down:hover .anticon{color:var(--semi-color-text-2)}.semi-table .semi-table-column-sorter-up svg,.semi-table .semi-table-column-sorter-down svg{width:16px;height:16px}.semi-table .semi-table-column-sorter-up.on .semi-icon-caretup,.semi-table .semi-table-column-sorter-up.on .semi-icon-caretdown,.semi-table .semi-table-column-sorter-down.on .semi-icon-caretup,.semi-table .semi-table-column-sorter-down.on .semi-icon-caretdown{color:var(--semi-color-primary)}.semi-table .semi-table-column-filter{margin-left:4px;display:inline-flex;cursor:pointer;color:var(--semi-color-text-2);align-items:center}.semi-table .semi-table-column-filter svg{width:16px;height:16px}.semi-table .semi-table-column-filter.on{color:var(--semi-color-primary)}.semi-table-bordered>.semi-table-title{padding-left:16px;padding-right:16px;border-top:1px solid var(--semi-color-border);border-right:1px solid var(--semi-color-border);border-left:1px solid var(--semi-color-border)}.semi-table-bordered>.semi-table-container{border:1px solid var(--semi-color-border);border-right:0;border-bottom:0}:where(.semi-table-bordered)>.semi-table-container>.semi-table-header::-webkit-scrollbar{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered)>.semi-table-container>.semi-table-footer{border-left:1px solid var(--semi-color-border);border-right:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-border)}.semi-table-bordered:not(.semi-table-scroll-position-right)>.semi-table-container:after{content:"";position:absolute;top:0;right:0;bottom:0;width:1px;background-color:var(--semi-color-border);display:block;z-index:103;pointer-events:none}.semi-table-bordered:not(.semi-table-scroll-position-right)>.semi-table-container>.semi-table-header{box-shadow:inset -1px 0 0 0 var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container)>.semi-table-body>.semi-table-placeholder{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container>.semi-table-body)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head .react-resizable-handle{background-color:#0000}:where(.semi-table-bordered>.semi-table-container>.semi-table-body)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head,:where(.semi-table-bordered>.semi-table-container>.semi-table-body)>.semi-table>.semi-table-tbody>.semi-table-row>.semi-table-row-cell{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container>.semi-table-header)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head{border-right:1px solid var(--semi-color-border)}:where(.semi-table-bordered>.semi-table-container>.semi-table-header)>.semi-table>.semi-table-thead>.semi-table-row>.semi-table-row-head .react-resizable-handle{background-color:#0000}.semi-table-placeholder{position:sticky;left:0;z-index:1;box-sizing:border-box;padding:16px 12px;color:var(--semi-color-text-2);font-size:14px;text-align:center;background:#0000;border-bottom:1px solid var(--semi-color-border)}.semi-table-fixed{table-layout:fixed;min-width:100%}.semi-table-fixed>.semi-table-tbody>.semi-table-row-expand>.semi-table-row-cell>.semi-table-expand-inner,.semi-table-fixed>.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell>.semi-table-section-inner{position:sticky;overflow:auto;left:0;margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px;height:100%;display:flex;align-items:center}.semi-table-fixed-header table{table-layout:fixed}.semi-table-scroll-position-left .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last,.semi-table-scroll-position-left .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-left-last{box-shadow:none}.semi-table-scroll-position-right .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first,.semi-table-scroll-position-right .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-right-first{box-shadow:none}.semi-table-pagination-outer{color:var(--semi-color-text-2);min-height:60px}.semi-table-expand-icon{color:var(--semi-color-text-2);cursor:pointer;display:inline-flex;align-items:center;-webkit-user-select:none;user-select:none;background:#0000;position:relative;margin-right:8px}.semi-table-expand-icon-cell{display:inline-flex;align-items:center;justify-content:center}.semi-table-expand-icon .semi-table-expandedIcon-show{transition:transform .15s cubic-bezier(.62,.05,.36,.95);transform:rotate(90deg)}.semi-table-expand-icon .semi-table-expandedIcon-hide{transition:transform .15s cubic-bezier(.62,.05,.36,.95);transform:rotate(0)}.semi-table-column-filter-dropdown .semi-dropdown-menu{max-height:290px;overflow-y:auto}.semi-table-wrapper-rtl .semi-table{direction:rtl;text-align:right}.semi-table-wrapper-rtl .semi-table-align-left .semi-table-operate-wrapper{justify-content:flex-end}.semi-table-wrapper-rtl .semi-table-align-right .semi-table-operate-wrapper{justify-content:flex-start}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head{text-align:right}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-left-last.resizing{border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first{border-left:0;border-right:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first.resizing{border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row>.semi-table-row-head.semi-table-cell-fixed-right-first[x-type=column-scrollbar]{box-shadow:none;border-right:rgba(0,0,0,0)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row .resizing{border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-thead>.semi-table-row .react-resizable-handle{right:auto;left:-1px}.semi-table-wrapper-rtl .semi-table-tbody{display:table-row-group}.semi-table-wrapper-rtl .semi-table-tbody>.semi-table-row>.semi-table-row-cell.resizing{border-right:0;border-left:2px solid var(--semi-color-primary)}.semi-table-wrapper-rtl .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first{border-left:0;border-right:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table .semi-table-column-selection .semi-checkbox-inner-display .semi-icon{left:auto;right:0}.semi-table-wrapper-rtl .semi-table .semi-table-column-expand .semi-table-expand-icon{transform:scaleX(-1) translateY(2px)}.semi-table-wrapper-rtl .semi-table .semi-table-column-expand .semi-table-expand-icon:last-child{margin-right:auto;margin-left:0}.semi-table-wrapper-rtl .semi-table .semi-table-column-sorter,.semi-table-wrapper-rtl .semi-table .semi-table-column-filter{margin-left:0;margin-right:4px}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-container{border-left:0;border-right:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-thead>.semi-table-row>.semi-table-row-head,.semi-table-wrapper-rtl .semi-table-bordered .semi-table-tbody>.semi-table-row>.semi-table-row-cell{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-placeholder{border-left:1px solid var(--semi-color-border);border-right:0}.semi-table-wrapper-rtl .semi-table-bordered .semi-table-header::-webkit-scrollbar{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-table-wrapper-rtl .semi-table-bordered:not(.semi-table-scroll-position-left)>.semi-table-container:after{content:"";position:absolute;top:0;left:0;bottom:0;width:1px;background-color:var(--semi-color-border);display:block;z-index:103;pointer-events:none}.semi-table-wrapper-rtl .semi-table-fixed>.semi-table-tbody>.semi-table-row-expand>.semi-table-row-cell>.semi-table-expand-inner,.semi-table-wrapper-rtl .semi-table-fixed>.semi-table-tbody>.semi-table-row-section>.semi-table-row-cell>.semi-table-section-inner{left:auto;right:0;margin-right:-16px;margin-left:-16px;padding-right:16px;padding-left:16px}.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last,.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-left-last{box-shadow:3px 0 0 0 var(--semi-color-shadow)}.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first,.semi-table-wrapper-rtl .semi-table-scroll-position-left .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-right-first{box-shadow:none}.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-left-last,.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-left-last{box-shadow:none}.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-tbody>.semi-table-row>.semi-table-cell-fixed-right-first,.semi-table-wrapper-rtl .semi-table-scroll-position-right .semi-table-thead>.semi-table-row>.semi-table-cell-fixed-right-first{box-shadow:-3px 0 0 0 var(--semi-color-shadow)}.semi-table-wrapper-rtl .semi-table-expand-icon{margin-right:auto;margin-left:8px;transform:scaleX(-1) translateY(2px)}.semi-table-wrapper-rtl .semi-spin{direction:rtl}.semi-tabs{box-sizing:border-box;position:relative}.semi-tabs-left{display:flex;flex-direction:row}.semi-tabs-bar{position:relative;white-space:nowrap;outline:none}.semi-tabs-bar-left{display:flex;flex-direction:column}.semi-tabs-bar-extra{padding:0 5px}.semi-tabs-bar-more-trigger{display:inline-block;cursor:pointer;color:var(--semi-color-text-2)}.semi-tabs-bar-more-trigger-content{display:flex;align-content:center}.semi-tabs-bar-more-trigger-content-icon:not(:not(.semi-tabs-bar-more-trigger-content-icon)){margin:0 8px;flex-shrink:0;display:flex;align-items:center}.semi-tabs-bar-more-trigger-line{padding:16px 4px 14px}.semi-tabs-bar-more-trigger-card,.semi-tabs-bar-more-trigger-button{padding:8px 12px}.semi-tabs-bar .semi-tabs-tab{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;box-sizing:border-box;position:relative;display:block;float:left;font-weight:400;color:var(--semi-color-text-2);-webkit-user-select:none;user-select:none}.semi-tabs-bar .semi-tabs-tab .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){position:relative;margin-right:8px;top:3px;color:var(--semi-color-text-2);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-bar .semi-tabs-tab .semi-icon.semi-tabs-tab-icon-close{margin-right:0;font-size:14px;color:var(--semi-color-text-2);margin-left:10px;cursor:pointer}.semi-tabs-bar .semi-tabs-tab:hover{color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab:active{color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab:active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab-active,.semi-tabs-bar .semi-tabs-tab-active:hover{cursor:default;font-weight:600;color:var(--semi-color-text-0)}.semi-tabs-bar .semi-tabs-tab-active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate),.semi-tabs-bar .semi-tabs-tab-active:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-primary)}.semi-tabs-bar .semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close,.semi-tabs-bar .semi-tabs-tab-active:hover .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-bar .semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close:hover{color:var(--semi-color-text-1)}.semi-tabs-bar .semi-tabs-tab-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-tabs-bar .semi-tabs-tab-disabled:hover{color:var(--semi-color-disabled-text);border-bottom:none}.semi-tabs-tab-single.semi-tabs-tab{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer;box-sizing:border-box;position:relative;display:inline-block;font-weight:400;color:var(--semi-color-text-2);-webkit-user-select:none;user-select:none}.semi-tabs-tab-single.semi-tabs-tab .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){position:relative;margin-right:8px;top:3px;color:var(--semi-color-text-2);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-tab-single.semi-tabs-tab .semi-icon.semi-tabs-tab-icon-close{margin-right:0;font-size:14px;color:var(--semi-color-text-2);margin-left:10px;cursor:pointer}.semi-tabs-tab-single.semi-tabs-tab .semi-icon.semi-tabs-tab-icon-close.semi-icon-close:hover,.semi-tabs-tab-single.semi-tabs-tab:hover{color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:hover .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-tab-single.semi-tabs-tab:active{color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab:active .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-tab-single.semi-tabs-tab-active,.semi-tabs-tab-single.semi-tabs-tab-active:hover{cursor:default;font-weight:600;color:var(--semi-color-text-0)}.semi-tabs-tab-single.semi-tabs-tab-active .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate),.semi-tabs-tab-single.semi-tabs-tab-active:hover .semi-icon:not(.semi-icon-checkbox_tick,.semi-icon-radio,.semi-icon-checkbox_indeterminate){color:var(--semi-color-primary)}.semi-tabs-tab-single.semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close,.semi-tabs-tab-single.semi-tabs-tab-active:hover .semi-icon.semi-tabs-tab-icon-close{color:var(--semi-color-text-2)}.semi-tabs-tab-single.semi-tabs-tab-active .semi-icon.semi-tabs-tab-icon-close:hover{color:var(--semi-color-text-1)}.semi-tabs-tab-single.semi-tabs-tab-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-tabs-tab-single.semi-tabs-tab-disabled:hover{color:var(--semi-color-disabled-text);border-bottom:none}.semi-tabs-bar-collapse,.semi-tabs-bar-collapse .semi-tabs-bar-overflow-list{display:flex;align-items:center}.semi-tabs-bar-collapse .semi-overflow-list{flex:1}.semi-tabs-bar-collapse .semi-overflow-list .semi-overflow-list-scroll-wrapper{-ms-overflow-style:none;scrollbar-width:none}.semi-tabs-bar-collapse .semi-overflow-list .semi-overflow-list-scroll-wrapper::-webkit-scrollbar{display:none;width:0;height:0}.semi-tabs-bar-collapse .semi-overflow-list .semi-overflow-list-scroll-wrapper:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-collapse .semi-overflow-list>.semi-button-disabled{color:var(--semi-color-disabled-text);background-color:#0000}.semi-tabs-bar-collapse .semi-overflow-list>.semi-button-disabled:hover{color:var(--semi-color-disabled-text);background-color:#0000}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start{margin-right:4px}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start>.semi-button[aria-disabled=false]{color:var(--semi-color-primary);padding:8px;border:0px solid rgba(0,0,0,0);background-color:#0000}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start>.semi-button[aria-disabled=false]:hover{background-color:var(--semi-color-fill-0);color:var(--semi-color-primary);border-color:#0000}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-start>.semi-button[aria-disabled=false]:active{background-color:var(--semi-color-fill-1);color:var(--semi-color-primary);border-color:#0000}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end{margin-left:4px}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end>.semi-button[aria-disabled=false]{color:var(--semi-color-primary);padding:8px;border:0px solid rgba(0,0,0,0);background-color:#0000}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end>.semi-button[aria-disabled=false]:hover{background-color:var(--semi-color-fill-0);color:var(--semi-color-primary);border-color:#0000}.semi-tabs-bar-collapse .semi-tabs-bar-arrow-end>.semi-button[aria-disabled=false]:active{background-color:var(--semi-color-fill-1);color:var(--semi-color-primary);border-color:#0000}.semi-tabs-bar-dropdown{max-height:300px;overflow-y:auto}.semi-tabs-bar:after{content:"";height:0;display:block;clear:both}.semi-tabs-bar-line.semi-tabs-bar-top{border-bottom:1px solid var(--semi-color-border);transition:color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab{padding:16px 4px 14px;transition:border-bottom-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);border-bottom:2px solid rgba(0,0,0,0)}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:nth-of-type(1){padding-left:0}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:hover{border-bottom:2px solid var(--semi-color-fill-0)}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-1px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:active{border-bottom:2px solid var(--semi-color-fill-1)}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:24px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-small{padding:8px 4px 6px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-medium{padding:12px 4px 10px}.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-active,.semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab-active:hover{border-bottom:2px solid var(--semi-color-primary)}.semi-tabs-bar-line.semi-tabs-bar-left{border-right:1px solid var(--semi-color-border)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab{padding:12px;border-left:2px solid rgba(0,0,0,0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:hover{border-left:2px solid var(--semi-color-fill-0);background-color:var(--semi-color-fill-0)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:active{border-left:2px solid var(--semi-color-fill-1);background-color:var(--semi-color-fill-1)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-small{padding:6px}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-medium{padding:10px}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active{background-color:var(--semi-color-primary-light-default)}.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active,.semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active:hover{border-left:2px solid var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-tabs-bar-line .semi-tabs-bar-extra{height:50px;line-height:50px}.semi-tabs-bar-line .semi-tabs-bar-line-extra-small{height:36px;line-height:36px}.semi-tabs-bar-card.semi-tabs-bar-top:before{position:absolute;right:0;left:0;bottom:0;border-bottom:1px solid var(--semi-color-border);content:""}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab{border:1px solid rgba(0,0,0,0);border-bottom:none;border-radius:var(--semi-border-radius-small) var(--semi-border-radius-small) 0 0}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:hover{border-bottom:none}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:8px}.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab-active,.semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab-active:hover{padding:8px 12px 7px;border:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-bg-1);background:#0000}.semi-tabs-bar-card.semi-tabs-bar-left{border-right:1px solid var(--semi-color-border)}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab{border:1px solid rgba(0,0,0,0);border-right:none;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:hover{border-right:none}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:not(:last-of-type){margin-bottom:8px}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:after{content:" ";width:1px;position:absolute;right:-1px;top:0;bottom:0;background:var(--semi-color-bg-1)}.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active,.semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:hover{padding:8px 12px;border:1px solid var(--semi-color-border);border-right:none;background:#0000}.semi-tabs-bar-card .semi-tabs-tab{padding:8px 12px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-bar-card .semi-tabs-tab:hover{background:var(--semi-color-fill-0)}.semi-tabs-bar-card .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-card .semi-tabs-tab:active{background:var(--semi-color-fill-1)}.semi-tabs-bar-button{border:none}.semi-tabs-bar-button.semi-tabs-bar-left .semi-tabs-tab:not(:last-of-type){margin-bottom:8px}.semi-tabs-bar-button.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:8px}.semi-tabs-bar-button .semi-tabs-tab{padding:8px 12px;border-radius:var(--semi-border-radius-small);color:var(--semi-color-text-2);border:none;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-bar-button .semi-tabs-tab:hover{border:none;background-color:var(--semi-color-fill-0)}.semi-tabs-bar-button .semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-bar-button .semi-tabs-tab:active{background-color:var(--semi-color-fill-1)}.semi-tabs-bar-button .semi-tabs-tab-active,.semi-tabs-bar-button .semi-tabs-tab-active:hover{color:var(--semi-color-primary);border:none;background-color:var(--semi-color-primary-light-default)}.semi-tabs-bar-slash .semi-tabs-tab{padding:12px 0}.semi-tabs-bar-slash .semi-tabs-tab:nth-of-type(1){padding-left:0}.semi-tabs-bar-slash .semi-tabs-tab:not(:last-of-type){margin-right:16px}.semi-tabs-bar-slash .semi-tabs-tab:not(:last-of-type):after{content:"";margin-left:16px;display:inline-block;height:14px;width:8px;margin-top:3px;margin-bottom:3px;vertical-align:bottom;background:linear-gradient(to bottom right,transparent 0%,transparent calc(50% - 1px),var(--semi-color-text-2) 50%,transparent calc(50% + 1px),transparent 100%)}.semi-tabs-content{width:100%;padding:5px 0}.semi-tabs-content-left{height:100%;padding:0 5px}.semi-tabs-pane{width:100%;overflow:hidden;color:var(--semi-color-text-0)}.semi-tabs-pane:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-tabs-pane-inactive,.semi-tabs-content-no-animated .semi-tabs-pane-inactive{display:none}@keyframes semi-tabs-panel-keyframe-leftShow{0%{transform:translate(60px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes semi-tabs-panel-keyframe-rightShow{0%{transform:translate(-60px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes semi-tabs-panel-keyframe-topShow{0%{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes semi-tabs-panel-keyframe-bottomShow{0%{transform:translateY(-60px);opacity:0}to{transform:translateY(0);opacity:1}}.semi-tabs-pane-animate-leftShow{animation:.2s semi-tabs-panel-keyframe-leftShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-pane-animate-rightShow{animation:.2s semi-tabs-panel-keyframe-rightShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-pane-animate-topShow{animation:.2s semi-tabs-panel-keyframe-topShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-pane-animate-bottomShow{animation:.2s semi-tabs-panel-keyframe-bottomShow ease-in-out 0s;animation-fill-mode:forwards}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab{font-size:14px;padding:16px 4px 14px;transition:border-bottom-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);border-bottom:2px solid rgba(0,0,0,0)}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:nth-of-type(1){padding-left:0}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:hover{border-bottom:2px solid var(--semi-color-fill-0)}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-1px}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab:active{border-bottom:2px solid var(--semi-color-fill-1)}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-small{font-size:14px;padding:8px 4px 6px}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-medium{font-size:14px;padding:12px 4px 10px}.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-active,.semi-tabs-tab-line.semi-tabs-tab-top.semi-tabs-tab-active:hover{border-bottom:2px solid var(--semi-color-primary)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab{padding:12px;border-left:2px solid rgba(0,0,0,0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab:hover{border-left:2px solid var(--semi-color-fill-0);background-color:var(--semi-color-fill-0)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab:active{border-left:2px solid var(--semi-color-fill-1);background-color:var(--semi-color-fill-1)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-small{padding:6px}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-medium{padding:10px}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-active{background-color:var(--semi-color-primary-light-default)}.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-active,.semi-tabs-tab-line.semi-tabs-tab-left.semi-tabs-tab-active:hover{border-left:2px solid var(--semi-color-primary);background-color:var(--semi-color-primary-light-default)}.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab{border:1px solid rgba(0,0,0,0);border-bottom:none;border-radius:var(--semi-border-radius-small) var(--semi-border-radius-small) 0 0}.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab:hover{border-bottom:none}.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab-active,.semi-tabs-tab-card.semi-tabs-tab-top.semi-tabs-tab-active:hover{padding:8px 12px 7px;border:1px solid var(--semi-color-border);border-bottom:1px solid var(--semi-color-bg-1);background:#0000}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab{border:1px solid rgba(0,0,0,0);border-right:none;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small)}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab:hover{border-right:none}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab-active:after{content:" ";width:1px;position:absolute;right:-1px;top:0;bottom:0;background:var(--semi-color-bg-1)}.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab-active,.semi-tabs-tab-card.semi-tabs-tab-left.semi-tabs-tab-active:hover{padding:8px 12px;border:1px solid var(--semi-color-border);border-right:none;background:#0000}.semi-tabs-tab-card.semi-tabs-tab{padding:8px 12px;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-tab-card.semi-tabs-tab:hover{background:var(--semi-color-fill-0)}.semi-tabs-tab-card.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-tab-card.semi-tabs-tab:active{background:var(--semi-color-fill-1)}.semi-tabs-tab-button{border:none}.semi-tabs-tab-button.semi-tabs-tab{padding:8px 12px;border-radius:var(--semi-border-radius-small);color:var(--semi-color-text-2);border:none;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none))}.semi-tabs-tab-button.semi-tabs-tab:hover{border:none;background-color:var(--semi-color-fill-0)}.semi-tabs-tab-button.semi-tabs-tab:focus-visible{outline:2px solid var(--semi-color-primary-light-active);outline-offset:-2px}.semi-tabs-tab-button.semi-tabs-tab:active{background-color:var(--semi-color-fill-1)}.semi-tabs-tab-button.semi-tabs-tab-active,.semi-tabs-tab-button.semi-tabs-tab-active:hover{color:var(--semi-color-primary);border:none;background-color:var(--semi-color-primary-light-default)}.semi-rtl .semi-tabs,.semi-portal-rtl .semi-tabs{direction:rtl}.semi-rtl .semi-tabs-bar .semi-tabs-tab,.semi-portal-rtl .semi-tabs-bar .semi-tabs-tab{float:right}.semi-rtl .semi-tabs-bar .semi-tabs-tab .semi-icon,.semi-portal-rtl .semi-tabs-bar .semi-tabs-tab .semi-icon{margin-right:0;margin-left:8px}.semi-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-start,.semi-portal-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-start{margin-right:0;margin-left:4px}.semi-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-end,.semi-portal-rtl .semi-tabs-bar-collapse .semi-tabs-bar-arrow-end{margin-left:0;margin-right:4px}.semi-rtl .semi-tabs-bar-collapse .semi-icon-chevron_right,.semi-rtl .semi-tabs-bar-collapse .semi-icon-chevron_left,.semi-portal-rtl .semi-tabs-bar-collapse .semi-icon-chevron_right,.semi-portal-rtl .semi-tabs-bar-collapse .semi-icon-chevron_left{transform:scaleX(-1)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type),.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:0;margin-left:24px}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab{border-left:0;border-right:2px solid rgba(0,0,0,0)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:hover,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:hover{border-left:0;border-right:2px solid var(--semi-color-fill-0)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:active,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab:active{border-left:0;border-right:2px solid var(--semi-color-fill-1)}.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active,.semi-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active:hover,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active,.semi-portal-rtl .semi-tabs-bar-line.semi-tabs-bar-left .semi-tabs-tab-active:hover{border-left:0;border-right:2px solid var(--semi-color-primary)}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type),.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-left:0;margin-right:8px}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab{border:1px solid rgba(0,0,0,0);border-left:none}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:hover,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab:hover{border-left:none}.semi-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:after,.semi-portal-rtl .semi-tabs-bar-card.semi-tabs-bar-left .semi-tabs-tab-active:after{right:auto;left:-1px}.semi-rtl .semi-tabs-bar-button.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type),.semi-portal-rtl .semi-tabs-bar-button.semi-tabs-bar-top .semi-tabs-tab:not(:last-of-type){margin-right:auto;margin-left:8px}.semi-tag{box-sizing:border-box;border-radius:var(--semi-border-radius-small);background-color:#0000;position:relative;-webkit-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;vertical-align:bottom;display:flex;justify-content:center;align-items:center;display:inline-flex}.semi-tag-default,.semi-tag-small{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:20px;padding:2px 8px}.semi-tag-default:focus-visible,.semi-tag-small:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-tag-square{border-radius:var(--semi-border-radius-small)}.semi-tag-circle{border-radius:var(--semi-border-radius-full)}.semi-tag-large{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;padding:4px 8px;height:24px}.semi-tag-large:focus-visible{outline:2px solid var(--semi-color-primary-light-active)}.semi-tag-invisible{display:none}.semi-tag-prefix-icon{display:flex;padding-right:4px}.semi-tag-suffix-icon{display:flex;padding-left:4px}.semi-tag-content{flex:1}.semi-tag-content-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.semi-tag-content-center{display:flex;justify-content:center;align-items:center;height:100%;min-width:0}.semi-tag-close{display:flex;justify-content:center;align-items:center;color:var(--semi-color-text-2);padding-left:4px;cursor:pointer}.semi-tag-close:hover{color:var(--semi-color-text-1)}.semi-tag-close:active{color:var(--semi-color-text-0)}.semi-tag-closable{padding:4px 4px 4px 8px}.semi-tag-avatar-square .semi-avatar,.semi-tag-avatar-circle .semi-avatar{margin-right:4px}.semi-tag-avatar-square{padding:0 4px 0 0}.semi-tag-avatar-square .semi-avatar>img{background-color:var(--semi-color-default)}.semi-tag-avatar-circle{padding:2px 4px 2px 2px}.semi-tag-avatar-square.semi-tag-default .semi-avatar,.semi-tag-avatar-square.semi-tag-small .semi-avatar{width:20px;height:20px}.semi-tag-avatar-square.semi-tag-large .semi-avatar{width:24px;height:24px}.semi-tag-avatar-circle.semi-tag-small,.semi-tag-avatar-circle.semi-tag-default{border-radius:11px}.semi-tag-avatar-circle.semi-tag-small .semi-avatar,.semi-tag-avatar-circle.semi-tag-default .semi-avatar{width:16px;height:16px}.semi-tag-avatar-circle.semi-tag-large{border-radius:13px}.semi-tag-avatar-circle.semi-tag-large .semi-avatar{width:20px;height:20px}.semi-tag-colorful{font-weight:600}.semi-tag-colorful.semi-tag-solid{background:var(--semi-color-ai-purple);color:var(--semi-color-white)}.semi-tag-colorful.semi-tag-solid.semi-tag-gradient{background:var(--semi-color-ai-general)}.semi-tag-colorful.semi-tag-light{background:rgba(var(--semi-ai-purple-0),1);color:var(--semi-color-ai-purple)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient{background:var(--semi-ai-general-0)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(1){stop-color:rgba(var(--semi-ai-general-5-0),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(2){stop-color:rgba(var(--semi-ai-general-5-1),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(3){stop-color:rgba(var(--semi-ai-general-5-2),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(4){stop-color:rgba(var(--semi-ai-general-5-3),1)}.semi-tag-colorful.semi-tag-light.semi-tag-gradient .semi-tag-content{background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:#0000}.semi-tag-colorful.semi-tag-ghost{background:var(--semi-color-white);color:var(--semi-color-ai-purple);border-color:var(--semi-color-ai-general)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient{border:none}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(1){stop-color:rgba(var(--semi-ai-general-5-0),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(2){stop-color:rgba(var(--semi-ai-general-5-1),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(3){stop-color:rgba(var(--semi-ai-general-5-2),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-prefix-icon svg stop:nth-child(4){stop-color:rgba(var(--semi-ai-general-5-3),1)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient.semi-tag-circle:before{border-radius:var(--semi-border-radius-full)}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--semi-border-radius-small);padding:1px;background:var(--semi-color-ai-general);-webkit-mask:linear-gradient(var(--semi-color-white) 0 0) content-box,linear-gradient(var(--semi-color-white) 0 0);mask:linear-gradient(var(--semi-color-white) 0 0) content-box,linear-gradient(var(--semi-color-white) 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.semi-tag-colorful.semi-tag-ghost.semi-tag-gradient .semi-tag-content{background:var(--semi-color-ai-general);-webkit-background-clip:text;background-clip:text;color:#0000}.semi-tag-group{display:block;height:auto}.semi-tag-group .semi-tag{margin-bottom:0;margin-right:8px}.semi-tag-group-max.semi-tag-group-small{height:22px}.semi-tag-group-max.semi-tag-group-large{height:26px}.semi-tag-rest-group-popover .semi-tag{margin-right:8px;margin-bottom:0}.semi-tag-rest-group-popover .semi-tag:last-of-type{margin-right:0}.semi-tag-amber-ghost{background-color:#0000;border:1px solid rgba(var(--semi-amber-4),1);color:rgba(var(--semi-amber-5),1)}.semi-tag-amber-solid{background-color:rgba(var(--semi-amber-5),1);color:rgba(var(--semi-white),1)}.semi-tag-amber-light{background-color:rgba(var(--semi-amber-5),.15);color:rgba(var(--semi-amber-8),1)}.semi-tag-blue-ghost{background-color:#0000;border:1px solid rgba(var(--semi-blue-4),1);color:rgba(var(--semi-blue-5),1)}.semi-tag-blue-solid{background-color:rgba(var(--semi-blue-5),1);color:rgba(var(--semi-white),1)}.semi-tag-blue-light{background-color:rgba(var(--semi-blue-5),.15);color:rgba(var(--semi-blue-8),1)}.semi-tag-cyan-ghost{background-color:#0000;border:1px solid rgba(var(--semi-cyan-4),1);color:rgba(var(--semi-cyan-5),1)}.semi-tag-cyan-solid{background-color:rgba(var(--semi-cyan-5),1);color:rgba(var(--semi-white),1)}.semi-tag-cyan-light{background-color:rgba(var(--semi-cyan-5),.15);color:rgba(var(--semi-cyan-8),1)}.semi-tag-green-ghost{background-color:#0000;border:1px solid rgba(var(--semi-green-4),1);color:rgba(var(--semi-green-5),1)}.semi-tag-green-solid{background-color:rgba(var(--semi-green-5),1);color:rgba(var(--semi-white),1)}.semi-tag-green-light{background-color:rgba(var(--semi-green-5),.15);color:rgba(var(--semi-green-8),1)}.semi-tag-grey-ghost{background-color:#0000;border:1px solid rgba(var(--semi-grey-4),1);color:rgba(var(--semi-grey-5),1)}.semi-tag-grey-solid{background-color:rgba(var(--semi-grey-5),1);color:rgba(var(--semi-white),1)}.semi-tag-grey-light{background-color:rgba(var(--semi-grey-5),.15);color:rgba(var(--semi-grey-8),1)}.semi-tag-indigo-ghost{background-color:#0000;border:1px solid rgba(var(--semi-indigo-4),1);color:rgba(var(--semi-indigo-5),1)}.semi-tag-indigo-solid{background-color:rgba(var(--semi-indigo-5),1);color:rgba(var(--semi-white),1)}.semi-tag-indigo-light{background-color:rgba(var(--semi-indigo-5),.15);color:rgba(var(--semi-indigo-8),1)}.semi-tag-light-blue-ghost{background-color:#0000;border:1px solid rgba(var(--semi-light-blue-4),1);color:rgba(var(--semi-light-blue-5),1)}.semi-tag-light-blue-solid{background-color:rgba(var(--semi-light-blue-5),1);color:rgba(var(--semi-white),1)}.semi-tag-light-blue-light{background-color:rgba(var(--semi-light-blue-5),.15);color:rgba(var(--semi-light-blue-8),1)}.semi-tag-light-green-ghost{background-color:#0000;border:1px solid rgba(var(--semi-light-green-4),1);color:rgba(var(--semi-light-green-5),1)}.semi-tag-light-green-solid{background-color:rgba(var(--semi-light-green-5),1);color:rgba(var(--semi-white),1)}.semi-tag-light-green-light{background-color:rgba(var(--semi-light-green-5),.15);color:rgba(var(--semi-light-green-8),1)}.semi-tag-lime-ghost{background-color:#0000;border:1px solid rgba(var(--semi-lime-4),1);color:rgba(var(--semi-lime-5),1)}.semi-tag-lime-solid{background-color:rgba(var(--semi-lime-5),1);color:rgba(var(--semi-white),1)}.semi-tag-lime-light{background-color:rgba(var(--semi-lime-5),.15);color:rgba(var(--semi-lime-8),1)}.semi-tag-orange-ghost{background-color:#0000;border:1px solid rgba(var(--semi-orange-4),1);color:rgba(var(--semi-orange-5),1)}.semi-tag-orange-solid{background-color:rgba(var(--semi-orange-5),1);color:rgba(var(--semi-white),1)}.semi-tag-orange-light{background-color:rgba(var(--semi-orange-5),.15);color:rgba(var(--semi-orange-8),1)}.semi-tag-pink-ghost{background-color:#0000;border:1px solid rgba(var(--semi-pink-4),1);color:rgba(var(--semi-pink-5),1)}.semi-tag-pink-solid{background-color:rgba(var(--semi-pink-5),1);color:rgba(var(--semi-white),1)}.semi-tag-pink-light{background-color:rgba(var(--semi-pink-5),.15);color:rgba(var(--semi-pink-8),1)}.semi-tag-purple-ghost{background-color:#0000;border:1px solid rgba(var(--semi-purple-4),1);color:rgba(var(--semi-purple-5),1)}.semi-tag-purple-solid{background-color:rgba(var(--semi-purple-5),1);color:rgba(var(--semi-white),1)}.semi-tag-purple-light{background-color:rgba(var(--semi-purple-5),.15);color:rgba(var(--semi-purple-8),1)}.semi-tag-red-ghost{background-color:#0000;border:1px solid rgba(var(--semi-red-4),1);color:rgba(var(--semi-red-5),1)}.semi-tag-red-solid{background-color:rgba(var(--semi-red-5),1);color:rgba(var(--semi-white),1)}.semi-tag-red-light{background-color:rgba(var(--semi-red-5),.15);color:rgba(var(--semi-red-8),1)}.semi-tag-teal-ghost{background-color:#0000;border:1px solid rgba(var(--semi-teal-4),1);color:rgba(var(--semi-teal-5),1)}.semi-tag-teal-solid{background-color:rgba(var(--semi-teal-5),1);color:rgba(var(--semi-white),1)}.semi-tag-teal-light{background-color:rgba(var(--semi-teal-5),.15);color:rgba(var(--semi-teal-8),1)}.semi-tag-violet-ghost{background-color:#0000;border:1px solid rgba(var(--semi-violet-4),1);color:rgba(var(--semi-violet-5),1)}.semi-tag-violet-solid{background-color:rgba(var(--semi-violet-5),1);color:rgba(var(--semi-white),1)}.semi-tag-violet-light{background-color:rgba(var(--semi-violet-5),.15);color:rgba(var(--semi-violet-8),1)}.semi-tag-yellow-ghost{background-color:#0000;border:1px solid rgba(var(--semi-yellow-4),1);color:rgba(var(--semi-yellow-5),1)}.semi-tag-yellow-solid{background-color:rgba(var(--semi-yellow-5),1);color:rgba(var(--semi-white),1)}.semi-tag-yellow-light{background-color:rgba(var(--semi-yellow-5),.15);color:rgba(var(--semi-yellow-8),1)}.semi-tag-white-ghost,.semi-tag-white-solid,.semi-tag-white-light{background-color:var(--semi-color-bg-4);border:1px solid rgba(var(--semi-grey-2),.7);color:var(--semi-color-text-0)}.semi-tag-white-ghost .semi-tag-close,.semi-tag-white-light .semi-tag-close,.semi-tag-white-solid .semi-tag-close{color:var(--semi-color-text-2)}.semi-tag-avatar-square,.semi-tag-avatar-circle{background-color:var(--semi-color-bg-4);border:1px solid var(--semi-color-border);color:var(--semi-color-text-0)}.semi-tag-split{display:inline-flex;align-items:center}.semi-tag-split .semi-tag{border-radius:0;margin-right:1px}.semi-tag-split .semi-tag-first{border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-tag-split .semi-tag-last{border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small);margin-right:unset}.semi-tag-split .semi-tag-circle.semi-tag-first{border-top-left-radius:var(--semi-border-radius-full);border-bottom-left-radius:var(--semi-border-radius-full)}.semi-tag-split .semi-tag-circle.semi-tag-last{border-top-right-radius:var(--semi-border-radius-full);border-bottom-right-radius:var(--semi-border-radius-full)}.semi-rtl .semi-tag,.semi-portal-rtl .semi-tag{direction:rtl}.semi-rtl .semi-tag-close,.semi-portal-rtl .semi-tag-close{padding-left:auto;padding-right:4px}.semi-rtl .semi-tag-closable,.semi-portal-rtl .semi-tag-closable{padding:4px 8px 4px 4px}.semi-rtl .semi-tag-avatar-square .semi-avatar,.semi-rtl .semi-tag-avatar-circle .semi-avatar,.semi-portal-rtl .semi-tag-avatar-square .semi-avatar,.semi-portal-rtl .semi-tag-avatar-circle .semi-avatar{margin-right:auto;margin-left:4px}.semi-rtl .semi-tag-avatar-square,.semi-portal-rtl .semi-tag-avatar-square{padding-right:auto;padding-left:4px}.semi-rtl .semi-tag-avatar-circle,.semi-portal-rtl .semi-tag-avatar-circle{padding:2px 2px 2px 4px}.semi-rtl .semi-tag-group,.semi-portal-rtl .semi-tag-group{direction:rtl}.semi-rtl .semi-tag-group .semi-tag,.semi-portal-rtl .semi-tag-group .semi-tag{margin-right:auto;margin-left:8px}.semi-rtl .semi-tag-rest-group-popover,.semi-portal-rtl .semi-tag-rest-group-popover{direction:rtl}.semi-rtl .semi-tag-rest-group-popover .semi-tag,.semi-portal-rtl .semi-tag-rest-group-popover .semi-tag{margin-right:0;margin-left:8px}.semi-rtl .semi-tag-rest-group-popover .semi-tag:last-of-type,.semi-portal-rtl .semi-tag-rest-group-popover .semi-tag:last-of-type{margin-right:auto;margin-left:0}.semi-tagInput{background-color:var(--semi-color-fill-0);border:1px rgba(0,0,0,0) solid;border-radius:var(--semi-border-radius-small);display:inline-flex;font-weight:400;width:100%;min-height:32px;box-sizing:border-box;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-tagInput-small{min-height:24px}.semi-tagInput-large{min-height:40px}.semi-tagInput-drag-item{display:flex;align-items:center}.semi-tagInput-drag-item-move{z-index:2000}.semi-tagInput-drag-handler{color:var(--semi-color-text-2);margin-right:4px;cursor:move}.semi-tagInput-sortable-item{position:relative;max-width:100%}.semi-tagInput-sortable-item-over{overflow:visible}.semi-tagInput-sortable-item-over:before{content:"";display:block;height:100%;width:2px;background-color:var(--semi-color-primary);position:absolute;left:-2px;top:0}.semi-tagInput-sortable-item-active{opacity:.5}.semi-tagInput-hover{background-color:var(--semi-color-fill-1);border:1px rgba(0,0,0,0) solid}.semi-tagInput-focus{background-color:var(--semi-color-fill-0);border:1px var(--semi-color-focus-border) solid}.semi-tagInput-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-tagInput-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-tagInput-warning.semi-tagInput-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-tagInput-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-tagInput-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-tagInput-error.semi-tagInput-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-tagInput-disabled{background-color:var(--semi-color-disabled-fill);cursor:not-allowed}.semi-tagInput-disabled .semi-tagInput-clearBtn,.semi-tagInput-disabled .semi-tagInput-prefix,.semi-tagInput-disabled .semi-tagInput-suffix{color:var(--semi-color-disabled-text)}.semi-tagInput-disabled .semi-tagInput-wrapper{cursor:not-allowed}.semi-tagInput-disabled .semi-tagInput-wrapper-tag{color:var(--semi-color-disabled-text);background-color:#0000}.semi-tagInput-disabled .semi-tagInput-wrapper-input{cursor:not-allowed}.semi-tagInput-disabled .semi-tagInput-wrapper-input::placeholder{color:var(--semi-color-disabled-text)}.semi-tagInput-wrapper{display:flex;flex-wrap:wrap;flex-grow:1;align-items:center;padding-left:4px;padding-right:4px;overflow:hidden;position:relative}.semi-tagInput-wrapper-tag{margin-right:4px;white-space:pre;max-width:100%}.semi-tagInput-wrapper-tag-size-small{margin-top:1px;margin-bottom:1px}.semi-tagInput-wrapper-tag-size-default{margin-top:2px;margin-bottom:2px}.semi-tagInput-wrapper-tag-size-large{margin-top:3px;margin-bottom:3px}.semi-tagInput-wrapper-tag-icon{padding-left:4px}.semi-tagInput-wrapper-typo{font-size:12px}.semi-tagInput-wrapper-typo-disabled{color:var(--semi-color-disabled-text)}.semi-tagInput-wrapper-n{cursor:pointer;font-size:12px;margin-right:4px;color:var(--semi-color-text-0);padding-left:8px;padding-right:8px}.semi-tagInput-wrapper-n-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-tagInput-wrapper .semi-tagInput-wrapper-input{flex-grow:1;width:min-content;min-width:2px;max-width:100%;border:none;outline:none;background-color:#0000;font-size:14px}.semi-tagInput-wrapper .semi-tagInput-wrapper-input:hover{background-color:#0000}.semi-tagInput-wrapper .semi-tagInput-wrapper-input:not(:first-child)>input{padding-left:0}.semi-tagInput-wrapper .semi-tagInput-wrapper-input-small{height:20px;margin-top:1px;margin-bottom:1px;line-height:20px}.semi-tagInput-wrapper .semi-tagInput-wrapper-input-small .semi-input-small{height:20px;line-height:20px}.semi-tagInput-wrapper .semi-tagInput-wrapper-input-default{height:24px;margin-top:2px;margin-bottom:2px;line-height:24px}.semi-tagInput-wrapper .semi-tagInput-wrapper-input-default .semi-input-default{height:24px;line-height:24px}.semi-tagInput-wrapper .semi-tagInput-wrapper-input-large{height:24px;margin-top:3px;margin-bottom:3px;line-height:24px}.semi-tagInput-wrapper .semi-tagInput-wrapper-input-large .semi-input-large{height:24px;line-height:24px}.semi-tagInput-wrapper-inputMirror{position:absolute;top:0;left:0;visibility:hidden;pointer-events:none;height:0;overflow:hidden;white-space:pre;font-size:14px;font-weight:400;font-family:inherit}.semi-tagInput-clearBtn{display:flex;justify-content:center;align-items:center;width:32px;flex-shrink:0;color:var(--semi-color-text-2)}.semi-tagInput-clearBtn:hover{cursor:pointer;color:var(--semi-color-primary-hover)}.semi-tagInput-clearBtn-invisible{visibility:hidden}.semi-tagInput-inset-label{margin:0 12px;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-tagInput-prefix,.semi-tagInput-suffix{display:flex;justify-content:center;align-items:center}.semi-tagInput-prefix-text,.semi-tagInput-suffix-text{margin:0 12px;font-weight:600;white-space:nowrap;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-tagInput-prefix-icon,.semi-tagInput-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-tagInput-prefix-text,.semi-tagInput-suffix-text{color:var(--semi-color-text-2)}.semi-tagInput-with-prefix .semi-input{padding-left:0}.semi-tagInput-tag-content-wrapper{display:flex;align-items:center}.semi-tagInput-sortable-list{display:flex;flex-flow:row wrap;width:100%}.semi-rtl .semi-tagInput,.semi-portal-rtl .semi-tagInput{direction:rtl}.semi-rtl .semi-tagInput-wrapper-tag,.semi-portal-rtl .semi-tagInput-wrapper-tag{margin-left:4px;margin-right:0}.semi-rtl .semi-tagInput-wrapper-input:not(:first-child)>input,.semi-portal-rtl .semi-tagInput-wrapper-input:not(:first-child)>input{padding-right:0}.semi-timepicker{display:inline-block}.semi-timepicker-panel .semi-scrolllist-body{height:252px}.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer-nocycle>ul:before,.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item>ul:before{height:108px}.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item,.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer{-ms-overflow-style:none;scrollbar-width:none}.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item::-webkit-scrollbar,.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer::-webkit-scrollbar{display:none;width:0;height:0}.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item>ul,.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item-wheel .semi-scrolllist-list-outer>ul{padding-bottom:108px}.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item{-ms-overflow-style:none;scrollbar-width:none}.semi-timepicker-panel .semi-scrolllist-body .semi-scrolllist-item::-webkit-scrollbar{display:none;width:0;height:0}.semi-timepicker-panel .semi-scrolllist-item,.semi-timepicker-panel .semi-scrolllist-item-wheel{flex:none}.semi-timepicker-panel .semi-scrolllist-item-wheel,.semi-timepicker-panel .semi-scrolllist-item-wheel:not(:last-child){border:none}.semi-timepicker-panel-list-ampm{width:72px}.semi-timepicker-panel-list-hour,.semi-timepicker-panel-list-minute,.semi-timepicker-panel-list-second{width:64px}.semi-timepicker-range-panel .semi-timepicker-lists{display:flex;box-shadow:0 4px 14px #0000001a;border:1px solid rgba(0,0,0,.1);border-radius:var(--semi-border-radius-medium)}.semi-timepicker-range-panel .semi-timepicker-lists .semi-scrolllist:first-of-type{border-radius:var(--semi-border-radius-medium) 0 0 var(--semi-border-radius-medium)}.semi-timepicker-range-panel .semi-timepicker-lists .semi-scrolllist:last-of-type{border-radius:0 var(--semi-border-radius-medium) var(--semi-border-radius-medium) 0}.semi-timepicker-range-panel .semi-timepicker-lists>.semi-scrolllist:not(:last-child) .semi-scrolllist-body{border-right:2px solid var(--semi-color-border)}.semi-timepicker-range-panel .semi-timepicker-lists>.semi-scrolllist{box-shadow:none}.semi-timepicker-range-panel .semi-timepicker-lists>.semi-scrolllist .semi-scrolllist-body,.semi-timepicker-range-panel .semi-timepicker-lists>.semi-scrolllist .semi-scrolllist-header{padding:0}.semi-timepicker .semi-timepicker-input{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;border-radius:var(--semi-border-radius-small);align-items:center}.semi-timepicker .semi-input-readonly{cursor:pointer}.semi-timepicker .semi-input-borderless:not(:focus-within):not(:hover) .semi-input-suffix{opacity:0}.semi-rtl .semi-timepicker,.semi-portal-rtl .semi-timepicker,.semi-rtl .semi-timepicker-panel,.semi-portal-rtl .semi-timepicker-panel,.semi-rtl .semi-timepicker-range,.semi-portal-rtl .semi-timepicker-range{direction:rtl}.semi-rtl .semi-timepicker-range-panel .semi-timepicker-lists>.semi-scrolllist:not(:last-child) .semi-scrolllist-body,.semi-portal-rtl .semi-timepicker-range-panel .semi-timepicker-lists>.semi-scrolllist:not(:last-child) .semi-scrolllist-body{border-right:0;border-left:2px solid var(--semi-color-border)}.semi-timeline{margin:0;padding:8px;width:100%;list-style:none}.semi-timeline-item{position:relative;margin:0;padding:0 0 24px;list-style:none}.semi-timeline-item-tail{position:absolute;top:20px;left:4px;height:calc(100% - 20px);border-left:1px solid var(--semi-color-text-3)}.semi-timeline-item-head{position:absolute;top:5px;width:9px;height:9px;border-radius:var(--semi-border-radius-circle)}.semi-timeline-item-head-ongoing{background-color:var(--semi-color-primary)}.semi-timeline-item-head-default{background-color:var(--semi-color-tertiary-light-active)}.semi-timeline-item-head-success{background-color:var(--semi-color-success)}.semi-timeline-item-head-warning{background-color:var(--semi-color-warning)}.semi-timeline-item-head-error{background-color:var(--semi-color-danger)}.semi-timeline-item-head-custom{position:absolute;display:flex;align-self:center;top:10px;left:5px;width:auto;height:auto;border:0;border-radius:0;transform:translate(-50%,-50%)}.semi-timeline-item .semi-timeline-item-head-custom.semi-timeline-item-head-ongoing{background-color:#0000;color:var(--semi-color-primary)}.semi-timeline-item .semi-timeline-item-head-custom.semi-timeline-item-head-success{background-color:#0000;color:var(--semi-color-success)}.semi-timeline-item .semi-timeline-item-head-custom.semi-timeline-item-head-warning{background-color:#0000;color:var(--semi-color-warning)}.semi-timeline-item .semi-timeline-item-head-custom.semi-timeline-item-head-error{background-color:#0000;color:var(--semi-color-danger)}.semi-timeline-item .semi-timeline-item-head-custom.semi-timeline-item-head-default{background-color:#0000;color:var(--semi-color-tertiary-light-active)}.semi-timeline-item-content{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;margin:0 0 0 25px;word-break:break-word;color:var(--semi-color-text-0)}.semi-timeline-item-content-extra,.semi-timeline-item-content-time{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);margin-top:4px}.semi-timeline-item:last-child>.semi-timeline-item-tail{border-left:none}.semi-timeline-alternate .semi-timeline-item-tail,.semi-timeline-alternate .semi-timeline-item-head,.semi-timeline-alternate .semi-timeline-item-head-custom,.semi-timeline-right .semi-timeline-item-tail,.semi-timeline-right .semi-timeline-item-head,.semi-timeline-right .semi-timeline-item-head-custom,.semi-timeline-center .semi-timeline-item-tail,.semi-timeline-center .semi-timeline-item-head,.semi-timeline-center .semi-timeline-item-head-custom{left:50%}.semi-timeline-alternate .semi-timeline-item-head.semi-timeline-item-head-custom,.semi-timeline-right .semi-timeline-item-head.semi-timeline-item-head-custom,.semi-timeline-center .semi-timeline-item-head.semi-timeline-item-head-custom{margin-left:0}.semi-timeline-alternate .semi-timeline-item-head,.semi-timeline-right .semi-timeline-item-head,.semi-timeline-center .semi-timeline-item-head{margin-left:-4px}.semi-timeline-alternate .semi-timeline-item-left .semi-timeline-item-content,.semi-timeline-right .semi-timeline-item-left .semi-timeline-item-content,.semi-timeline-center .semi-timeline-item-left .semi-timeline-item-content{left:calc(50% - 4px);width:calc(50% - 14px);text-align:left}.semi-timeline-alternate .semi-timeline-item-right .semi-timeline-item-content,.semi-timeline-right .semi-timeline-item-right .semi-timeline-item-content,.semi-timeline-center .semi-timeline-item-right .semi-timeline-item-content{width:calc(50% - 20px);margin:0;text-align:right}.semi-timeline-center .semi-timeline-item-content-time{position:absolute;top:-2px;margin-left:calc(-40px - 100%);width:100%;text-align:right}.semi-timeline-right .semi-timeline-item-right .semi-timeline-item-tail,.semi-timeline-right .semi-timeline-item-right .semi-timeline-item-head,.semi-timeline-right .semi-timeline-item-right .semi-timeline-item-head-custom{left:calc(100% - 9px)}.semi-timeline-right .semi-timeline-item-right .semi-timeline-item-content{width:calc(100% - 28px)}.semi-rtl .semi-timeline,.semi-portal-rtl .semi-timeline{direction:rtl}.semi-rtl .semi-timeline-item-tail,.semi-portal-rtl .semi-timeline-item-tail{left:auto;right:4px;border-left:0;border-right:1px solid var(--semi-color-text-3)}.semi-rtl .semi-timeline-item-head-custom,.semi-portal-rtl .semi-timeline-item-head-custom{left:auto;right:5px;transform:translate(50%,-50%)}.semi-rtl .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-item-content{margin:0 25px 0 0}.semi-rtl .semi-timeline-item:last-child .semi-timeline-item-tail,.semi-portal-rtl .semi-timeline-item:last-child .semi-timeline-item-tail{border-right:none}.semi-rtl .semi-timeline-alternate .semi-timeline-item-tail,.semi-rtl .semi-timeline-alternate .semi-timeline-item-head,.semi-rtl .semi-timeline-alternate .semi-timeline-item-head-custom,.semi-rtl .semi-timeline-right .semi-timeline-item-tail,.semi-rtl .semi-timeline-right .semi-timeline-item-head,.semi-rtl .semi-timeline-right .semi-timeline-item-head-custom,.semi-rtl .semi-timeline-center .semi-timeline-item-tail,.semi-rtl .semi-timeline-center .semi-timeline-item-head,.semi-rtl .semi-timeline-center .semi-timeline-item-head-custom,.semi-portal-rtl .semi-timeline-alternate .semi-timeline-item-tail,.semi-portal-rtl .semi-timeline-alternate .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-alternate .semi-timeline-item-head-custom,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-tail,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-head-custom,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-tail,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-head-custom{left:auto;right:50%}.semi-rtl .semi-timeline-alternate .semi-timeline-item-head,.semi-rtl .semi-timeline-right .semi-timeline-item-head,.semi-rtl .semi-timeline-center .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-alternate .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-head{margin-left:0;margin-right:-4px}.semi-rtl .semi-timeline-alternate .semi-timeline-item-left .semi-timeline-item-content,.semi-rtl .semi-timeline-right .semi-timeline-item-left .semi-timeline-item-content,.semi-rtl .semi-timeline-center .semi-timeline-item-left .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-alternate .semi-timeline-item-left .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-left .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-left .semi-timeline-item-content{left:auto;right:calc(50% - 4px);text-align:right}.semi-rtl .semi-timeline-alternate .semi-timeline-item-right .semi-timeline-item-content,.semi-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-content,.semi-rtl .semi-timeline-center .semi-timeline-item-right .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-alternate .semi-timeline-item-right .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-content,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-right .semi-timeline-item-content{text-align:left}.semi-rtl .semi-timeline-center .semi-timeline-item-content-time,.semi-portal-rtl .semi-timeline-center .semi-timeline-item-content-time{margin-left:0;margin-right:calc(-40px - 100%);text-align:left}.semi-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-tail,.semi-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-head,.semi-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-head-custom,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-tail,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-head,.semi-portal-rtl .semi-timeline-right .semi-timeline-item-right .semi-timeline-item-head-custom{left:0;right:calc(100% - 9px)}.semi-toast{pointer-events:none}.semi-toast-wrapper{position:fixed;height:0;top:0;width:100%;display:flex;justify-content:center;z-index:1010}.semi-toast-wrapper .semi-toast-innerWrapper{width:fit-content;height:fit-content;text-align:center}.semi-toast-wrapper .semi-toast-innerWrapper-hover .semi-toast-zero-height-wrapper{perspective:unset;perspective-origin:center center}.semi-toast-zero-height-wrapper{transition:all .3s cubic-bezier(.22,.57,.02,1.2);perspective-origin:center 280px;perspective:280px;height:0;overflow:visible}.semi-toast-content{pointer-events:all;box-shadow:var(--semi-shadow-elevated);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--semi-color-bg-3);border-radius:var(--semi-border-radius-medium);padding:12px 8px;display:inline-flex;align-items:flex-start;justify-content:center;margin:12px;font-weight:600;color:var(--semi-color-text-0)}.semi-toast-content .semi-toast-close-button{margin-top:-2px;height:20px}.semi-toast-content .semi-toast-content-text{margin-left:12px;margin-right:12px;text-align:left;word-wrap:break-word;overflow-wrap:break-word}.semi-toast-light.semi-toast-warning .semi-toast-content{background-color:var(--semi-color-warning-light-default);border:1px solid var(--semi-color-warning)}.semi-toast-light.semi-toast-warning .semi-toast-icon-warning{color:var(--semi-color-warning)}.semi-toast-light.semi-toast-success .semi-toast-content{background-color:var(--semi-color-success-light-default);border:1px solid var(--semi-color-success)}.semi-toast-light.semi-toast-success .semi-toast-icon-success{color:var(--semi-color-success)}.semi-toast-light.semi-toast-info .semi-toast-content{background-color:var(--semi-color-info-light-default);border:1px solid var(--semi-color-info)}.semi-toast-light.semi-toast-info .semi-toast-icon-info{color:var(--semi-color-info)}.semi-toast-light.semi-toast-error .semi-toast-content{background-color:var(--semi-color-danger-light-default);border:1px solid var(--semi-color-danger)}.semi-toast-light.semi-toast-error .semi-toast-icon-error{color:var(--semi-color-danger)}.semi-toast .semi-toast-icon-warning{color:var(--semi-color-warning)}.semi-toast .semi-toast-icon-success{color:var(--semi-color-success)}.semi-toast .semi-toast-icon-info{color:var(--semi-color-info)}.semi-toast .semi-toast-icon-error{color:var(--semi-color-danger)}.semi-toast-animation-show{animation:.3s semi-toast-keyframe-toast-show cubic-bezier(.22,.57,.02,1.2) 0s;animation-fill-mode:forwards}.semi-toast-animation-hide{animation:.3s semi-toast-keyframe-toast-hide cubic-bezier(.22,.57,.02,1.2) 0s;animation-fill-mode:forwards}@keyframes semi-toast-keyframe-toast-show{0%{opacity:0;transform:translateY(-100%)}to{opacity:1}}@keyframes semi-toast-keyframe-toast-hide{0%{opacity:1}to{opacity:0;transform:translateY(-100%)}}.semi-toast-rtl{direction:rtl}.semi-toast-rtl .semi-toast-content .semi-toast-content-text{text-align:right;margin-left:12px;margin-right:12px}.semi-transfer{background-color:var(--semi-color-bg-1);border:1px solid var(--semi-color-border);border-radius:var(--semi-border-radius-medium);min-width:402px;height:400px;box-sizing:border-box;display:flex}.semi-transfer-disabled .semi-transfer-header,.semi-transfer-disabled .semi-transfer-item{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-transfer-disabled .semi-transfer-item:hover{background-color:inherit}.semi-transfer-disabled .semi-transfer-item:hover .semi-transfer-item-close-icon{visibility:hidden}.semi-transfer-disabled .semi-transfer-item:active{background-color:inherit}.semi-transfer-custom-panel{border:none;min-width:inherit;height:inherit}.semi-transfer-header{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:center;height:24px;margin:12px 12px 8px;color:var(--semi-color-text-2);flex-shrink:0}.semi-transfer-header-all{font-weight:600;margin-left:16px}.semi-transfer-header .semi-button{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-transfer-item{min-height:36px;box-sizing:border-box;padding:8px 9px 8px 12px;-webkit-user-select:none;user-select:none;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;color:var(--semi-color-text-1);cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-transfer-item:hover{background-color:var(--semi-color-fill-0)}.semi-transfer-item:active{background-color:var(--semi-color-fill-1)}.semi-transfer-item-disabled{cursor:not-allowed}.semi-transfer-item-disabled:hover{background-color:inherit}.semi-transfer-item .semi-transfer-item-close-icon{font-size:12px;cursor:pointer;visibility:hidden;color:var(--semi-color-text-2)}.semi-transfer-left{width:50%;border-right:1px solid var(--semi-color-border);display:flex;flex-direction:column}.semi-transfer-left-list{overflow:auto;flex-grow:1}.semi-transfer-left-pagination{padding:12px;flex-shrink:0;display:flex;justify-content:center}.semi-transfer-left-empty{height:36px}.semi-transfer-left>.semi-spin{width:100%;flex-grow:1}.semi-transfer-right{width:50%;display:flex;flex-direction:column;position:relative}.semi-transfer-right-header{margin-top:12px;margin-bottom:0;height:32px;flex-shrink:0}.semi-transfer-right-list{overflow:auto;flex-grow:1}.semi-transfer-right-item{color:var(--semi-color-text-0);cursor:auto}.semi-transfer-right-item:hover .semi-transfer-item-close-icon{flex-shrink:0;visibility:visible;cursor:pointer}.semi-transfer-right-item:hover .semi-transfer-item-close-icon.semi-transfer-item-close-icon-disabled{visibility:hidden}.semi-transfer-right-item-text{flex:1;word-break:break-all}.semi-transfer-right-item-drag-handler{margin-right:4px;flex-shrink:0;cursor:move}.semi-transfer-right-item-drag-item-move{z-index:2000}.semi-transfer-right-item-sortable-item-active{opacity:0}.semi-transfer-right-empty{position:absolute;height:100%}.semi-transfer-empty{width:100%;display:flex;justify-content:center;align-items:center;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2)}.semi-transfer-filter{margin:12px 12px 0}.semi-transfer-group-title{color:var(--semi-color-text-2);padding-left:12px;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:28px;display:flex;align-items:center}.semi-rtl .semi-transfer,.semi-portal-rtl .semi-transfer{direction:rtl}.semi-rtl .semi-transfer-header-all,.semi-portal-rtl .semi-transfer-header-all{margin-left:0;margin-right:16px}.semi-rtl .semi-transfer-item,.semi-portal-rtl .semi-transfer-item{padding-left:9px;padding-right:12px}.semi-rtl .semi-transfer-left,.semi-portal-rtl .semi-transfer-left{border-right:0;border-left:1px solid var(--semi-color-border)}.semi-rtl .semi-transfer-group-title,.semi-portal-rtl .semi-transfer-group-title{padding-left:0;padding-right:12px}.semi-tree-search-wrapper{padding:8px 12px}.semi-tree-wrapper{display:flex;flex-direction:column}.semi-tree-option-list{overflow-x:hidden;overflow-y:auto;box-sizing:border-box;flex:1;padding:8px 0}.semi-tree-option-list ul,.semi-tree-option-list li{list-style-type:none;padding:0;margin:0}.semi-tree-option-list li.semi-tree-option{box-sizing:border-box;padding-top:4px;padding-bottom:4px;padding-left:8px}.semi-tree-option-list li>.semi-tree-option-label{list-style-type:none;padding:0}.semi-tree-option-list .semi-tree-option-expand-icon,.semi-tree-option-list .semi-tree-option-empty-icon{box-sizing:border-box;width:12px;color:var(--semi-color-text-2);margin-right:8px;display:flex;flex-shrink:0}.semi-tree-option-list .semi-tree-option{display:flex;align-items:center;cursor:pointer;transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);transform:scale(var(--semi-transform_scale-none));font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;word-break:break-word;color:var(--semi-color-text-0);position:relative}.semi-tree-option-list .semi-tree-option-label{display:flex;align-items:center}.semi-tree-option-list .semi-tree-option-label>.semi-icon{margin-right:8px}.semi-tree-option-list .semi-tree-option-label .semi-checkbox{margin-right:8px}.semi-tree-option-list .semi-tree-option-label-text{display:block;flex:1}.semi-tree-option-list .semi-tree-option-ellipsis .semi-tree-option-label-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.semi-tree-option-list .semi-tree-option-label-text,.semi-tree-option-list .semi-tree-option .semi-checkbox-addon{border-radius:var(--semi-border-radius-small)}.semi-tree-option-list .semi-tree-option-label-text:hover,.semi-tree-option-list .semi-tree-option .semi-checkbox-addon:hover{background-color:var(--semi-color-fill-0)}.semi-tree-option-list .semi-tree-option-label-text:active,.semi-tree-option-list .semi-tree-option .semi-checkbox-addon:active{background-color:var(--semi-color-fill-1)}.semi-tree-option-list .semi-tree-option-item-icon{color:var(--semi-color-text-2)}.semi-tree-option-list .semi-tree-option-active .semi-tree-option-label-text{background-color:var(--semi-color-primary-light-default)}.semi-tree-option-list .semi-tree-option-active:hover,.semi-tree-option-list .semi-tree-option-active:active{background-color:#0000}.semi-tree-option-list .semi-tree-option-selected .semi-tree-option-label,.semi-tree-option-list .semi-tree-option-selected .semi-tree-option-label:hover,.semi-tree-option-list .semi-tree-option-selected .semi-tree-option-label:active{background-color:var(--semi-color-primary-light-default)}.semi-tree-option-list .semi-tree-option-collapsed .semi-tree-option-expand-icon{transform:rotate(270deg)}.semi-tree-option-list .semi-tree-option-highlight{font-weight:600;color:var(--semi-color-primary);background-color:inherit}.semi-tree-option-list .semi-tree-option-hidden{display:none}.semi-tree-option-list .semi-tree-option-disabled .semi-tree-option-label{color:var(--semi-color-disabled-text)}.semi-tree-option-list .semi-tree-option-fullLabel-draggable,.semi-tree-option-list .semi-tree-option-draggable{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;user-select:none;-khtml-user-drag:element;-webkit-user-drag:element}.semi-tree-option-list .semi-tree-option-draggable{box-sizing:border-box;border-left:2px solid rgba(0,0,0,0)}.semi-tree-option-list .semi-tree-option-draggable .semi-tree-option-label{border-top:2px rgba(0,0,0,0) solid;border-bottom:2px rgba(0,0,0,0) solid}.semi-tree-option-list .semi-tree-option-draggable .semi-tree-option-drag-over-gap-top{border-top:2px var(--semi-color-primary) solid}.semi-tree-option-list .semi-tree-option-draggable .semi-tree-option-drag-over-gap-bottom{border-bottom:2px var(--semi-color-primary) solid}.semi-tree-option-list .semi-tree-option-draggable .semi-tree-option-indent .semi-tree-option-indent-unit:before{top:0;bottom:0}.semi-tree-option-list .semi-tree-option-draggable .semi-tree-option-switcher-leaf-line:before{top:0;bottom:0}.semi-tree-option-list .semi-tree-option-draggable.semi-tree-option-tree-node-last-leaf .semi-tree-option-switcher-leaf-line:before{height:50%}.semi-tree-option-list .semi-tree-option-fullLabel-draggable.semi-tree-option-fullLabel-drag-over-gap-top{border-top:2px var(--semi-color-primary) solid}.semi-tree-option-list .semi-tree-option-fullLabel-draggable.semi-tree-option-fullLabel-drag-over-gap-bottom{border-bottom:2px var(--semi-color-primary) solid}.semi-tree-option-list .semi-tree-option-drag-over.semi-tree-option-draggable,.semi-tree-option-list .semi-tree-option-drag-over.semi-tree-option-fullLabel-draggable{border:2px solid var(--semi-color-primary)}.semi-tree-option-list .semi-tree-option-drag-over.semi-tree-option-draggable .semi-tree-option-label,.semi-tree-option-list .semi-tree-option-drag-over.semi-tree-option-fullLabel-draggable .semi-tree-option-label{border-top:0;border-bottom:0}.semi-tree-option-list .semi-tree-option-drag-over.semi-tree-option-draggable+.semi-tree-option-selected:after,.semi-tree-option-list .semi-tree-option-drag-over.semi-tree-option-fullLabel-draggable+.semi-tree-option-selected:after{content:"";position:absolute;top:0;left:-2px;bottom:0;right:-1px;border-top:2px solid var(--semi-color-primary)}.semi-tree-option-list .semi-tree-option-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;user-select:none}.semi-tree-option-list .semi-tree-option-indent-unit{display:inline-block;width:20px}.semi-tree-option-list .semi-tree-option-indent-show-line .semi-tree-option-indent-unit{position:relative;height:100%}.semi-tree-option-list .semi-tree-option-indent-show-line .semi-tree-option-indent-unit:before{position:absolute;top:-4px;inset-inline-start:6px;bottom:-4px;border-inline-end:1px solid var(--semi-color-text-3);content:""}.semi-tree-option-list .semi-tree-option-indent-show-line .semi-tree-option-indent-unit-end:before{display:none}.semi-tree-option-list .semi-tree-option-switcher{position:relative;flex:none;align-self:stretch;width:12px;margin:0 8px 0 0;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none}.semi-tree-option-list .semi-tree-option-switcher-leaf-line{z-index:1;position:relative;display:inline-block;width:100%;height:100%}.semi-tree-option-list .semi-tree-option-switcher-leaf-line:before{position:absolute;top:-4px;inset-inline-start:6px;bottom:-4px;border-inline-end:1px solid var(--semi-color-text-3);content:""}.semi-tree-option-list .semi-tree-option-switcher-leaf-line:after{box-sizing:border-box;position:absolute;width:8px;height:50%;border-bottom:1px solid var(--semi-color-text-3);content:"";margin-inline-start:1px}.semi-tree-option-list .semi-tree-option-tree-node-last-leaf .semi-tree-option-switcher-leaf-line:before{height:calc(50% + 4px)}.semi-tree-option-list li.semi-tree-option-draggable.semi-tree-option{padding-top:0;padding-bottom:0}.semi-tree-option-list li.semi-tree-option-draggable.semi-tree-option .semi-tree-option-label{padding:2px 0}.semi-tree-option-list li.semi-tree-option-draggable.semi-tree-option .semi-tree-option-selected,.semi-tree-option-list li.semi-tree-option-draggable.semi-tree-option .semi-tree-option-selected:hover,.semi-tree-option-list li.semi-tree-option-draggable.semi-tree-option .semi-tree-option-selected:active{background-color:#0000}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-1{padding-left:8px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-2{padding-left:28px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-3{padding-left:48px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-4{padding-left:68px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-5{padding-left:88px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-6{padding-left:108px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-7{padding-left:128px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-8{padding-left:148px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-9{padding-left:168px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-10{padding-left:188px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-11{padding-left:208px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-12{padding-left:228px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-13{padding-left:248px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-14{padding-left:268px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-15{padding-left:288px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-16{padding-left:308px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-17{padding-left:328px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-18{padding-left:348px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-19{padding-left:368px}.semi-tree-option-list .semi-tree-option.semi-tree-option-fullLabel-level-20{padding-left:388px}.semi-tree-option-list .semi-tree-option-empty:hover,.semi-tree-option-list .semi-tree-option-empty:active{background-color:#0000}.semi-tree-option-list .semi-tree-option-label-empty{padding-left:0;justify-content:center;color:var(--semi-color-disabled-text);-webkit-user-select:none;user-select:none;cursor:not-allowed}.semi-tree-option-list .semi-checkboxGroup-vertical{row-gap:0}.semi-tree-option-list-block .semi-tree-option:hover{background-color:var(--semi-color-fill-0)}.semi-tree-option-list-block .semi-tree-option:active{background-color:var(--semi-color-fill-1)}.semi-tree-option-list-block .semi-tree-option-label{flex:1}.semi-tree-option-list-block .semi-tree-option-active,.semi-tree-option-list-block .semi-tree-option-active:hover,.semi-tree-option-list-block .semi-tree-option-active:active{background-color:var(--semi-color-primary-light-default)}.semi-tree-option-list-block .semi-tree-option-active .semi-tree-option-label-text{background-color:#0000}.semi-tree-option-list-block .semi-tree-option-expand-icon{flex-shrink:0;box-sizing:content-box}.semi-tree-option-list-block .semi-tree-option-expand-icon:hover{color:var(--semi-color-text-0)}.semi-tree-option-list-block .semi-tree-option-expand-icon:active{color:var(--semi-color-black)}.semi-tree-option-list-block .semi-tree-option-spin-icon{display:flex;line-height:0;color:var(--semi-color-primary)}.semi-tree-option-list-block .semi-tree-option-spin-icon svg{width:12px;height:12px}.semi-tree-option-list-block .semi-tree-option-selected{background-color:var(--semi-color-primary-light-default)}.semi-tree-option-list-block .semi-tree-option-selected .semi-tree-option-label,.semi-tree-option-list-block .semi-tree-option-selected .semi-tree-option-label:hover,.semi-tree-option-list-block .semi-tree-option-selected .semi-tree-option-label:active,.semi-tree-option-list-block .semi-tree-option-selected .semi-checkbox-addon{background-color:#0000}.semi-tree-option-list-block .semi-tree-option-selected:hover,.semi-tree-option-list-block .semi-tree-option-selected:active{background-color:var(--semi-color-primary-light-default)}.semi-tree-option-list-block .semi-tree-option-label-text,.semi-tree-option-list-block .semi-tree-option .semi-checkbox-addon{padding:0;border-radius:var(--semi-border-radius-small)}.semi-tree-option-list-block .semi-tree-option-label-text:hover,.semi-tree-option-list-block .semi-tree-option .semi-checkbox-addon:hover,.semi-tree-option-list-block .semi-tree-option-label-text:active,.semi-tree-option-list-block .semi-tree-option .semi-checkbox-addon:active{background-color:#0000}.semi-tree-option-list-block .semi-tree-option-label-text{width:0}.semi-tree-option-list-block .semi-tree-option-empty:hover,.semi-tree-option-list-block .semi-tree-option-empty:active{background-color:#0000}.semi-rtl .semi-tree,.semi-popover-rtl .semi-tree,.semi-rtl .semi-tree-wrapper,.semi-popover-rtl .semi-tree-wrapper,.semi-rtl .semi-tree-option-list,.semi-popover-rtl .semi-tree-option-list{direction:rtl}.semi-rtl .semi-tree-option-list .semi-tree-option-expand-icon,.semi-rtl .semi-tree-option-list .semi-tree-option-empty-icon,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-expand-icon,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-empty-icon{margin-right:0;margin-left:8px}.semi-rtl .semi-tree-option-list .semi-tree-option,.semi-popover-rtl .semi-tree-option-list .semi-tree-option{padding-left:0;padding-right:8px}.semi-rtl .semi-tree-option-list .semi-tree-option-label>.semi-icon,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-label>.semi-icon{margin-right:0;margin-left:8px}.semi-rtl .semi-tree-option-list .semi-tree-option-label .semi-checkbox,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-label .semi-checkbox{margin-right:0;margin-left:8px}.semi-rtl .semi-tree-option-list .semi-tree-option-collapsed .semi-tree-option-expand-icon,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-collapsed .semi-tree-option-expand-icon{transform:rotate(90deg)}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-1,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-1{padding-left:0;padding-right:8px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-2,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-2{padding-left:0;padding-right:28px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-3,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-3{padding-left:0;padding-right:48px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-4,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-4{padding-left:0;padding-right:68px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-5,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-5{padding-left:0;padding-right:88px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-6,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-6{padding-left:0;padding-right:108px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-7,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-7{padding-left:0;padding-right:128px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-8,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-8{padding-left:0;padding-right:148px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-9,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-9{padding-left:0;padding-right:168px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-10,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-10{padding-left:0;padding-right:188px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-11,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-11{padding-left:0;padding-right:208px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-12,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-12{padding-left:0;padding-right:228px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-13,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-13{padding-left:0;padding-right:248px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-14,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-14{padding-left:0;padding-right:268px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-15,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-15{padding-left:0;padding-right:288px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-16,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-16{padding-left:0;padding-right:308px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-17,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-17{padding-left:0;padding-right:328px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-18,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-18{padding-left:0;padding-right:348px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-19,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-19{padding-left:0;padding-right:368px}.semi-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-20,.semi-popover-rtl .semi-tree-option-list li.semi-tree-option.semi-tree-option-fullLabel-level-20{padding-left:0;padding-right:388px}.semi-rtl .semi-tree-option-list .semi-tree-option-label-empty,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-label-empty{padding-left:auto;padding-right:0}.semi-rtl .semi-tree-option-list .semi-tree-option-switcher,.semi-popover-rtl .semi-tree-option-list .semi-tree-option-switcher{margin-right:0;margin-left:8px}.semi-rtl .semi-tree-option-list-block,.semi-popover-rtl .semi-tree-option-list-block{direction:rtl}.semi-tree-select{box-sizing:border-box;border-radius:var(--semi-border-radius-small);border:1px solid rgba(0,0,0,0);min-width:80px;min-height:32px;line-height:32px;font-weight:400;background-color:var(--semi-color-fill-0);display:inline-flex;align-items:center;position:relative;cursor:pointer}.semi-tree-select:hover{background-color:var(--semi-color-fill-1);border:1px solid rgba(0,0,0,0)}.semi-tree-select:active{background-color:var(--semi-color-fill-2)}.semi-tree-select-focus,.semi-tree-select-focus:hover{background-color:var(--semi-color-fill-0);border:1px solid var(--semi-color-focus-border);outline:0}.semi-tree-select-focus:active{background-color:var(--semi-color-fill-2)}.semi-tree-select-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-tree-select-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-tree-select-warning.semi-tree-select-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-tree-select-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning-light-active)}.semi-tree-select-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-tree-select-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-tree-select-error.semi-tree-select-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-tree-select-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger-light-active)}.semi-tree-select-disabled{cursor:not-allowed;-webkit-user-select:none;user-select:none;background-color:var(--semi-color-disabled-fill)}.semi-tree-select-disabled:hover{background-color:var(--semi-color-disabled-fill)}.semi-tree-select-disabled .semi-tree-select-selection,.semi-tree-select-disabled .semi-tree-select-selection-placeholder{color:var(--semi-color-disabled-text);cursor:not-allowed}.semi-tree-select-disabled .semi-tree-select-arrow,.semi-tree-select-disabled .semi-tree-select-prefix,.semi-tree-select-disabled .semi-tree-select-suffix{color:var(--semi-color-disabled-text)}.semi-tree-select-disabled .semi-tag{color:var(--semi-color-disabled-text);background-color:#0000}.semi-tree-select-selection{font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;height:100%;display:inline-flex;align-items:center;flex-wrap:wrap;flex-grow:1;overflow:hidden;padding-left:12px;padding-right:0;cursor:pointer;color:var(--semi-color-text-0);position:relative}.semi-tree-select-selection-content{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.semi-tree-select-selection-placeholder{color:var(--semi-color-text-2)}.semi-tree-select-selection .semi-tag-group{height:inherit;display:inline-flex;align-items:center;flex-wrap:wrap}.semi-tree-select-selection .semi-tag{margin:1px 2px}.semi-tree-select-selection-TriggerSearchItem{position:absolute;max-width:calc(100% - 12px);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.semi-tree-select-selection-TriggerSearchItem-placeholder{opacity:.6}.semi-tree-select-selection-TriggerSearchItem-disabled{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-tree-select-selection .semi-tree-select-triggerSingleSearch-upper{z-index:1}.semi-tree-select-selection .semi-tree-select-triggerSingleSearch-wrapper{width:100%}.semi-tree-select-selection .semi-tree-select-triggerSingleSearch-wrapper .semi-tree-select-inputTrigger .semi-input-wrapper{background:#0000}.semi-tree-select-selection .semi-tree-select-triggerSingleSearch-wrapper .semi-input-wrapper{height:100%;width:100%;border:none;background-color:#0000}.semi-tree-select-selection .semi-tree-select-triggerSingleSearch-wrapper .semi-input-wrapper-focus{border:none}.semi-tree-select-selection .semi-tree-select-triggerSingleSearch-wrapper .semi-input{padding-left:0;padding-right:0}.semi-tree-select-selection .semi-tagInput{border:hidden;background:#0000;min-height:30px}.semi-tree-select-selection .semi-tagInput-small{min-height:22px}.semi-tree-select-selection .semi-tagInput-large{min-height:38px}.semi-tree-select-selection .semi-tagInput .semi-tagInput-wrapper{padding-left:4px;padding-right:4px}.semi-tree-select-selection .semi-tagInput .semi-tagInput-wrapper .semi-input-wrapper .semi-input{padding-left:0}.semi-tree-select-selection .semi-tagInput .semi-tagInput-wrapper .semi-input-wrapper-default,.semi-tree-select-selection .semi-tagInput .semi-tagInput-wrapper .semi-input-wrapper-large{margin-top:1px;margin-bottom:1px}.semi-tree-select-multiple-tagInput-notEmpty .semi-tagInput{margin-left:-4px}.semi-tree-select-multiple-tagInput-empty .semi-tagInput{margin-left:4px}.semi-tree-select-multiple{display:inline-flex}.semi-tree-select-multiple .semi-tree-select-selection{padding-left:4px;padding-right:0}.semi-tree-select-multiple .semi-tree-select-selection-placeholder{padding-left:8px}.semi-tree-select-triggerTagWrap{max-width:100%}.semi-tree-select-triggerTagWrap .semi-tree-select-selection{min-width:0}.semi-tree-select-triggerTagWrap.semi-tree-select-multiple{height:auto}.semi-tree-select-triggerTagWrap.semi-tree-select-multiple .semi-tree-select-selection{height:auto;min-height:30px;overflow:visible}.semi-tree-select-triggerTagWrap.semi-tree-select-multiple.semi-tree-select-small .semi-tree-select-selection{min-height:22px}.semi-tree-select-triggerTagWrap.semi-tree-select-multiple.semi-tree-select-large .semi-tree-select-selection{min-height:38px}.semi-tree-select-triggerTagWrap .semi-tagInput{min-width:0;max-width:100%;flex:1 1 auto}.semi-tree-select-triggerTagWrap .semi-tagInput .semi-tagInput-wrapper-input{max-width:100%}.semi-tree-select-small{min-height:24px;line-height:24px}.semi-tree-select-large{min-height:40px;line-height:40px}.semi-tree-select-large .semi-tree-select-selection{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-tree-select-arrow{display:inline-flex;align-items:center;flex-shrink:0;height:100%;justify-content:center;width:32px;color:var(--semi-color-text-2)}.semi-tree-select-inset-label{display:inline;margin:0 12px;font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);flex-shrink:0;white-space:nowrap}.semi-tree-select.semi-tree-select-with-prefix{display:inline-flex;align-items:center}.semi-tree-select-arrow,.semi-tree-select-clearbtn{display:inline-flex;align-items:center;height:100%;flex-shrink:0;justify-content:center;width:32px;color:var(--semi-color-text-2)}.semi-tree-select-clearbtn:hover{color:var(--semi-color-primary-hover)}.semi-tree-select-clearbtn:active{color:var(--semi-color-primary-active)}.semi-tree-select-prefix,.semi-tree-select-suffix{display:inline;display:flex;justify-content:center;align-items:center}.semi-tree-select-prefix-text,.semi-tree-select-suffix-text{color:var(--semi-color-text-2);font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin:0 12px}.semi-tree-select-prefix-icon,.semi-tree-select-suffix-icon{color:var(--semi-color-text-2);margin:0 8px}.semi-tree-select-prefix.semi-tree-select-with-suffix .semi-tree-select-selection,.semi-tree-select-suffix.semi-tree-select-with-suffix .semi-tree-select-selection{padding-right:0}.semi-tree-select-prefix-search-wrapper,.semi-tree-select-suffix-search-wrapper{padding:8px 12px;border-bottom:1px solid var(--semi-color-fill-0)}.semi-tree-select-prefix-maxTagCount,.semi-tree-select-suffix-maxTagCount{color:var(--semi-color-text-2);font-size:14px}.semi-tree-select-prefix-popover,.semi-tree-select-suffix-popover{max-height:300px;overflow:auto}.semi-tree-select-popover .semi-tree-wrapper{height:100%;display:flex;flex-direction:column}.semi-tree-select-popover .semi-tree-wrapper .semi-tree-option-list{flex:1;min-width:230px}.semi-tree-select-popover .semi-tree-wrapper .semi-tree-option-list-hidden{padding:0}.semi-tree-select-popover .semi-tree-wrapper .semi-tree-search-wrapper{border-bottom:1px var(--semi-color-fill-0) solid}.semi-tree-select-borderless:not(:focus-within):not(:hover){background-color:#0000;border-color:#0000}.semi-tree-select-borderless:not(:focus-within):not(:hover) .semi-tree-select-arrow{opacity:0}.semi-tree-select-borderless:focus-within:not(:active){background-color:#0000}.semi-tree-select-borderless.semi-tree-select-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-tree-select-borderless.semi-tree-select-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-tree-select-borderless.semi-tree-select-error:focus-within{border-color:var(--semi-color-danger)}.semi-tree-select-borderless.semi-tree-select-warning:focus-within{border-color:var(--semi-color-warning)}.semi-rtl .semi-tree-select,.semi-portal-rtl .semi-tree-select{direction:rtl}.semi-rtl .semi-tree-select .semi-tagInput .semi-input,.semi-portal-rtl .semi-tree-select .semi-tagInput .semi-input{padding-right:0}.semi-rtl .semi-tree-select-multiple-tagInput-notEmpty .semi-tagInput,.semi-portal-rtl .semi-tree-select-multiple-tagInput-notEmpty .semi-tagInput{margin-left:0;margin-right:-4px}.semi-rtl .semi-tree-select-multiple-tagInput-empty .semi-tagInput,.semi-portal-rtl .semi-tree-select-multiple-tagInput-empty .semi-tagInput{margin-left:0;margin-right:4px}.semi-rtl .semi-tree-select-selection,.semi-portal-rtl .semi-tree-select-selection{padding-right:12px;padding-left:0}.semi-rtl .semi-tree-select-multiple .semi-tree-select-selection,.semi-portal-rtl .semi-tree-select-multiple .semi-tree-select-selection{padding-left:0;padding-right:4px}.semi-rtl .semi-tree-select-multiple .semi-tree-select-selection-placeholder,.semi-portal-rtl .semi-tree-select-multiple .semi-tree-select-selection-placeholder{padding-left:0;padding-right:8px}.semi-rtl .semi-tree-select-prefix.semi-tree-select-with-suffix .semi-tree-select-selection,.semi-rtl .semi-tree-select-suffix.semi-tree-select-with-suffix .semi-tree-select-selection,.semi-portal-rtl .semi-tree-select-prefix.semi-tree-select-with-suffix .semi-tree-select-selection,.semi-portal-rtl .semi-tree-select-suffix.semi-tree-select-with-suffix .semi-tree-select-selection{padding-right:auto;padding-left:0}.semi-rtl .semi-tree-select-popover,.semi-portal-rtl .semi-tree-select-popover{direction:rtl}.semi-upload{display:flex;flex-wrap:wrap}.semi-upload-tooltip-children-wrapper{display:inline-flex;width:fit-content;height:fit-content;vertical-align:middle}.semi-upload-disabled,.semi-upload-disabled .semi-upload-file-card,.semi-upload-disabled .semi-upload-file-card-close{cursor:not-allowed}.semi-upload-disabled .semi-upload-drag-area{border:none;cursor:not-allowed}.semi-upload-disabled .semi-upload-drag-area:hover{background-color:var(--semi-color-tertiary-light-default)}.semi-upload-disabled .semi-upload-drag-area-main-text,.semi-upload-disabled .semi-upload-drag-area-sub-text,.semi-upload-disabled .semi-upload-drag-area-icon{cursor:not-allowed;color:var(--semi-color-disabled-text)}.semi-upload-hidden-input,.semi-upload-hidden-input-replace{display:none}.semi-upload-add{display:flex;align-items:center}.semi-upload[x-prompt-pos=right] .semi-upload-add,.semi-upload[x-prompt-pos=right] .semi-upload-prompt{display:inline-flex}.semi-upload[x-prompt-pos=bottom] .semi-upload-add{display:flex}.semi-upload[x-prompt-pos=bottom] .semi-upload-prompt{display:flex;flex-basis:100%}.semi-upload[x-prompt-pos=bottom] .semi-upload-file-list{flex-basis:100%}.semi-upload[x-prompt-pos=left] .semi-upload-add{display:inline-flex}.semi-upload[x-prompt-pos=left] .semi-upload-prompt{display:inline-flex;order:-1}.semi-upload[x-prompt-pos=left] .semi-upload-file-list{order:2}.semi-upload-file-list{flex-basis:100%;flex-shrink:0;display:block;margin-top:8px;margin-bottom:8px}.semi-upload-file-list-main{display:flex;flex-wrap:wrap;flex-shrink:0;gap:8px;margin-bottom:8px}.semi-upload-file-list-main p{display:flex;align-items:center}.semi-upload-file-list-title{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-2);margin-bottom:4px}.semi-upload-file-list-title-choosen{margin-right:8px}.semi-upload-file-list-title-clear{cursor:pointer;color:var(--semi-color-primary)}.semi-upload-file-card{border-radius:var(--semi-border-radius-medium);display:inline-flex;align-items:center;justify-content:space-between;height:52px;width:250px;background-color:var(--semi-color-fill-0);cursor:pointer}.semi-upload-file-card:hover{background-color:var(--semi-color-fill-1)}.semi-upload-file-card a{text-decoration:none}.semi-upload-file-card-preview{height:36px;width:36px;color:var(--semi-color-text-2);margin:8px;display:flex;justify-content:center;align-items:center;border-radius:var(--semi-border-radius-small);flex-shrink:0}.semi-upload-file-card-preview img{width:36px;height:36px;object-fit:cover}.semi-upload-file-card-preview-placeholder{background-color:rgba(var(--semi-grey-3),1);color:rgba(var(--semi-white),1)}.semi-upload-file-card-show-pointer{cursor:pointer}.semi-upload-file-card-info{display:flex;align-items:center}.semi-upload-file-card-info-main{display:flex;flex-wrap:wrap;flex:1}.semi-upload-file-card-info-main-text{display:flex;align-items:center;flex-basis:100%}.semi-upload-file-card-info-main-control{display:flex}.semi-upload-file-card-info-name{width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;color:var(--semi-color-text-0)}.semi-upload-file-card-info-size{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;margin-left:8px;color:var(--semi-color-text-2);margin-top:1px}.semi-upload-file-card-info-replace{display:inline-flex;margin-left:8px;color:var(--semi-color-text-2)}.semi-upload-file-card-info-validate-message{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:center;color:var(--semi-color-text-0)}.semi-upload-file-card-info-retry{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-primary);cursor:pointer;margin-left:8px}.semi-upload-file-card-info .semi-progress{flex-basis:100%;margin-top:4px}.semi-upload-file-card-close{margin-left:8px;margin-right:8px;flex-shrink:0}.semi-upload-file-card-replace{margin-left:8px;width:24px;flex-shrink:0}.semi-upload-file-card-icon-loading,.semi-upload-file-card-icon-error.semi-icon{font-size:11px;margin-right:2px}.semi-upload-file-card-icon-error{position:relative;top:-1px}.semi-upload-file-card-icon-loading{line-height:0}.semi-upload-file-card-icon-loading .semi-spin-wrapper svg{height:11px;width:11px}.semi-upload-file-card-fail{background-color:var(--semi-color-danger-light-default)}.semi-upload-file-card-fail:hover{background-color:var(--semi-color-danger-light-hover)}.semi-upload-file-card-fail .semi-upload-file-card-info-validate-message{color:var(--semi-color-danger)}.semi-upload-picture{display:flex}.semi-upload-picture[x-prompt-pos=bottom]{flex-direction:column}.semi-upload-picture[x-prompt-pos=bottom] .semi-upload-prompt,.semi-upload-picture[x-prompt-pos=right] .semi-upload-prompt{order:1}.semi-upload-picture-add{background-color:var(--semi-color-fill-0);height:96px;width:96px;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;border:2px dashed var(--semi-color-border);color:var(--semi-color-tertiary);border-radius:var(--semi-border-radius-small);cursor:pointer}.semi-upload-picture-add:hover{background-color:var(--semi-color-fill-1)}.semi-upload-picture-add:active{background-color:var(--semi-color-fill-2)}.semi-upload-picture-add-disabled{cursor:not-allowed}.semi-upload-picture-add-disabled:hover,.semi-upload-picture-add-disabled:active{background-color:var(--semi-color-fill-0)}.semi-upload-picture-file-list{flex-basis:inherit;margin-top:0;margin-bottom:0}.semi-upload-picture-file-card{display:flex;align-items:center;justify-content:center;height:96px;width:96px;border-radius:var(--semi-border-radius-small);box-sizing:border-box;position:relative;overflow:hidden}.semi-upload-picture-file-card img{height:96px;width:96px;object-fit:cover;border-radius:var(--semi-border-radius-small)}.semi-upload-picture-file-card-custom-thumbnail .semi-image img{width:inherit;height:inherit}.semi-upload-picture-file-card-close{visibility:hidden;display:inline-flex;position:absolute;top:8px;right:8px;border-radius:var(--semi-border-radius-circle);cursor:pointer;transition:all 0s}.semi-upload-picture-file-card-icon-close{font-size:16px;color:var(--semi-color-white)}.semi-upload-picture-file-card:before{visibility:hidden;background-color:var(--semi-color-overlay-bg);content:"";position:absolute;left:0;right:0;top:0;bottom:0}.semi-upload-picture-file-card-retry{visibility:hidden;background-color:var(--semi-color-white);width:24px;height:24px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--semi-color-primary);border-radius:var(--semi-border-radius-circle);display:flex;align-items:center;justify-content:center;cursor:pointer}.semi-upload-picture-file-card-icon-retry{transform:scaleX(-1);font-size:13px}.semi-upload-picture-file-card-replace{visibility:hidden;display:inline-flex;position:absolute;cursor:pointer;top:50%;left:50%;color:var(--semi-color-white);transform:translate3D(-50%,-50%,0)}.semi-upload-picture-file-card-preview{visibility:hidden;display:inline-flex;position:absolute;cursor:pointer;top:50%;left:50%;transform:translate3D(-50%,-50%,0)}.semi-upload-picture-file-card-preview-fallback{background-color:var(--semi-color-fill-0);border:2px var(--semi-color-border);color:var(--semi-color-tertiary);border-radius:var(--semi-border-radius-small)}.semi-upload-picture-file-card-pic-info{display:inline-flex;box-sizing:border-box;justify-content:space-between;align-items:center;position:absolute;width:100%;height:24px;padding:0 10px;bottom:0;left:0;color:var(--semi-color-white);font-size:12px;font-weight:600;background:linear-gradient(0deg,#16161a4d,#16161a00 77.08%)}.semi-upload-picture-file-card-icon-loading,.semi-upload-picture-file-card-icon-error{position:absolute;bottom:6px;right:6px;color:var(--semi-color-danger)}.semi-upload-picture-file-card-icon-loading{font-size:14px}.semi-upload-picture-file-card-show-pointer{cursor:pointer}.semi-upload-picture-file-card-error{border:1px solid var(--semi-color-danger);outline:1px solid var(--semi-color-danger)}.semi-upload-picture-file-card:hover:before{visibility:visible}.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-close,.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-replace,.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-retry,.semi-upload-picture-file-card:hover .semi-upload-picture-file-card-preview{visibility:visible}.semi-upload-picture-file-card-uploading:before{visibility:visible}.semi-upload-picture-file-card .semi-progress-circle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.semi-upload-drag-area{border-radius:var(--semi-border-radius-small);border:2px dashed var(--semi-color-border);width:100%;padding:12px;background-color:var(--semi-color-tertiary-light-default);display:flex;justify-content:center;align-items:center;flex-direction:column;cursor:pointer}.semi-upload-drag-area:hover{background-color:var(--semi-color-primary-light-default);border-color:var(--semi-color-primary)}.semi-upload-drag-area-custom{border:none;padding:0;background-color:inherit}.semi-upload-drag-area-custom:hover{background-color:inherit}.semi-upload-drag-area-legal{background-color:var(--semi-color-primary-light-default);border-color:var(--semi-color-primary)}.semi-upload-drag-area-legal .semi-upload-drag-area-sub-text{display:none}.semi-upload-drag-area-icon{color:var(--semi-color-primary)}.semi-upload-drag-area-text{text-align:center}.semi-upload-drag-area-main-text{cursor:pointer;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:4px;color:var(--semi-color-text-0)}.semi-upload-drag-area-main-text:hover,.semi-upload-drag-area-main-text:active{color:var(--semi-color-text-0)}.semi-upload-drag-area-sub-text{cursor:pointer;font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--semi-color-text-0)}.semi-upload-drag-area-sub-text:hover,.semi-upload-drag-area-sub-text:active{color:var(--semi-color-text-0)}.semi-upload-drag-area-tips{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600}.semi-upload-drag-area-tips-legal{color:var(--semi-color-primary)}.semi-upload-validate-message{flex-basis:100%;flex-shrink:0;display:block;color:var(--semi-color-danger)}.semi-rtl .semi-upload,.semi-portal-rtl .semi-upload{direction:rtl}.semi-rtl .semi-upload-file-list-title-choosen,.semi-portal-rtl .semi-upload-file-list-title-choosen{margin-right:0;margin-left:8px}.semi-rtl .semi-upload-file-list-title-choosen,.semi-rtl .semi-upload-file-list-title-clear,.semi-portal-rtl .semi-upload-file-list-title-choosen,.semi-portal-rtl .semi-upload-file-list-title-clear{display:inline-block}.semi-rtl .semi-upload-file-card-info-size,.semi-portal-rtl .semi-upload-file-card-info-size,.semi-rtl .semi-upload-file-card-info-retry,.semi-portal-rtl .semi-upload-file-card-info-retry{margin-left:0;margin-right:8px}.semi-rtl .semi-upload-file-card-icon-loading,.semi-rtl .semi-upload-file-card-icon-error,.semi-portal-rtl .semi-upload-file-card-icon-loading,.semi-portal-rtl .semi-upload-file-card-icon-error{margin-right:0;margin-left:2px}.semi-rtl .semi-upload-picture-file-card-close,.semi-portal-rtl .semi-upload-picture-file-card-close{right:auto;left:8px}.semi-rtl .semi-upload-picture-file-card .semi-progress-circle,.semi-portal-rtl .semi-upload-picture-file-card .semi-progress-circle,.semi-rtl .semi-upload-picture-file-card-retry,.semi-portal-rtl .semi-upload-picture-file-card-retry{left:auto;right:50%;transform:translate(50%,-50%)}.semi-rtl .semi-upload-picture-file-card-icon-loading,.semi-rtl .semi-upload-picture-file-card-icon-error,.semi-portal-rtl .semi-upload-picture-file-card-icon-loading,.semi-portal-rtl .semi-upload-picture-file-card-icon-error{right:0;left:6px}.semi-userGuide-spotlight{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none}.semi-userGuide-spotlight-transparent-rect{pointer-events:auto}.semi-userGuide-spotlight-rect{transition:all .2s cubic-bezier(.4,0,.2,1)}.semi-userGuide-popover{max-width:fit-content;width:400px}.semi-userGuide-popup-content{color:var(--semi-color-text-0)}.semi-userGuide-popup-content-primary{color:var(--semi-color-tertiary-light-default)}.semi-userGuide-popup-content-cover img{display:block;height:200px;width:100%;border-radius:var(--semi-border-radius-medium) var(--semi-border-radius-medium) 0 0}.semi-userGuide-popup-content-body{padding:24px}.semi-userGuide-popup-content-title{font-size:18px;font-weight:600;line-height:24px;margin-bottom:8px}.semi-userGuide-popup-content-description{font-size:14px;line-height:20px;margin-bottom:48px}.semi-userGuide-popup-content-footer{display:flex;justify-content:space-between;align-items:center}.semi-userGuide-popup-content-buttons{display:flex;gap:12px;margin-left:120px}.semi-userGuide-popup-content-indicator{font-size:14px;line-height:20px}.semi-userGuide-modal .semi-modal-small{width:fit-content}.semi-userGuide-modal .semi-modal-content{padding:0;width:600px;max-width:fit-content}.semi-userGuide-modal-cover{height:300px}.semi-userGuide-modal-indicator{height:30px;display:flex;justify-content:center;align-items:center;column-gap:8px}.semi-userGuide-modal-indicator-item{width:6px;height:6px;border-radius:var(--semi-border-radius-large);background-color:var(--semi-color-primary-light-active)}.semi-userGuide-modal-indicator-item-active{background:var(--semi-color-primary)}.semi-userGuide-modal-body{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:24px 48px}.semi-userGuide-modal-body-title{font-size:18px;font-weight:600;line-height:24px;margin-bottom:8px}.semi-userGuide-modal-body-description{font-size:14px;line-height:20px}.semi-userGuide-modal-footer{display:flex;justify-content:center;align-items:center;padding:24px;column-gap:12px}.semi-videoPlayer{position:relative;display:inline-block;width:100%;height:100%}.semi-videoPlayer ::-webkit-media-controls{display:none}.semi-videoPlayer-wrapper{width:100%;height:100%;position:relative;line-height:0}.semi-videoPlayer-wrapper video{width:100%;height:100%;object-fit:contain}.semi-videoPlayer-wrapper-dark{background-color:rgba(var(--semi-grey-8),1);color:var(--semi-color-bg-0)}.semi-videoPlayer-wrapper-light{background-color:var(--semi-color-disabled-bg);color:rgba(var(--semi-grey-8),1)}.semi-videoPlayer-pause{top:0;left:0;width:100%;height:100%;position:absolute;display:flex;justify-content:center;align-items:center;pointer-events:none}.semi-videoPlayer-pause svg{font-size:88px;color:var(--semi-color-text-1);pointer-events:none}.semi-videoPlayer-error{top:0;left:0;width:100%;height:100%;position:absolute;display:flex;justify-content:center;align-items:center;flex-direction:column;font-weight:600;font-size:14px}.semi-videoPlayer-error-svg{margin-bottom:12px}.semi-videoPlayer-error-dark{background-color:rgba(var(--semi-grey-8),1);color:var(--semi-color-bg-0)}.semi-videoPlayer-error-dark path{fill:var(--semi-color-bg-0)}.semi-videoPlayer-error-light{background-color:var(--semi-color-disabled-bg);color:rgba(var(--semi-grey-8),1)}.semi-videoPlayer-error-light path{fill:rgba(var(--semi-grey-8),1)}.semi-videoPlayer-poster{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.semi-videoPlayer-poster-hide{opacity:0}.semi-videoPlayer-notification{position:absolute;bottom:78px;left:8px;text-align:center;background-color:var(--semi-color-overlay-bg);color:var(--semi-color-default);padding:8px 12px;line-height:20px;border-radius:3px;font-size:14px}.semi-videoPlayer-mirror video{transform:rotateX(0) rotateY(180deg)}.semi-videoPlayer-controls{position:absolute;bottom:0;left:0;right:0;height:fit-content;opacity:1;transition:opacity .5s ease-in-out;z-index:1}.semi-videoPlayer-controls-hide{opacity:0}.semi-videoPlayer-controls-menu{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;height:56px;background-color:#1c1f23cc;padding:12px 16px}.semi-videoPlayer-controls-menu-left,.semi-videoPlayer-controls-menu-right{display:flex;align-items:center}.semi-videoPlayer-controls-menu-item{margin-right:8px}.semi-videoPlayer-controls-menu-button svg{color:#fff}.semi-videoPlayer-controls-time{color:#fff;font-size:14px;margin-right:8px;padding:0 8px;font-variant-numeric:tabular-nums}.semi-videoPlayer-controls-popover{background-color:#0000}.semi-videoPlayer-controls-volume{box-sizing:border-box;width:40px;height:160px;background-color:var(--semi-color-overlay-bg);color:#ffffffb3;border-radius:4px;padding:0 4px;line-height:16px;font-size:12px;-webkit-user-select:none;user-select:none}.semi-videoPlayer-controls-volume-title{padding:10px 0;text-align:center}.semi-videoPlayer-controls-popup{display:flex;justify-content:center;align-items:center;width:50px;height:24px;background-color:var(--semi-color-overlay-bg);color:#fff;font-weight:600;font-size:12px;line-height:16px;border-radius:3px;cursor:pointer}.semi-videoPlayer-controls-popup-menu{width:48px;background-color:var(--semi-color-overlay-bg);border-radius:4px}.semi-videoPlayer-controls-popup-menu-item{display:flex;justify-content:center;align-items:center;padding:0 8px;height:32px;color:#fff;font-size:12px}.semi-videoPlayer-controls-popup-menu-item:hover{background-color:#43444a!important}.semi-videoPlayer-controls-popup-menu .semi-dropdown-item-active{color:var(--semi-color-primary);font-weight:600;cursor:pointer}.semi-videoPlayer-progress{position:relative;height:20px;display:flex;align-items:center;justify-content:center;cursor:pointer;margin:0 8px}.semi-videoPlayer-progress-markers{position:absolute;width:100%;height:100%}.semi-videoPlayer-progress-tooltip{top:6px}.semi-videoPlayer-progress-tooltip-content{display:flex;justify-content:center;align-items:center}.semi-videoPlayer-progress-slider{position:absolute;width:100%;height:100%;left:0;bottom:0;border-radius:999px}.semi-videoPlayer-progress-slider-active .semi-videoPlayer-progress-slider-list,.semi-videoPlayer-progress-slider-active .semi-videoPlayer-progress-slider-played,.semi-videoPlayer-progress-slider-active .semi-videoPlayer-progress-slider-buffered,.semi-videoPlayer-progress-slider:hover .semi-videoPlayer-progress-slider-list,.semi-videoPlayer-progress-slider:hover .semi-videoPlayer-progress-slider-played,.semi-videoPlayer-progress-slider:hover .semi-videoPlayer-progress-slider-buffered{height:10px;transition:transform .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-videoPlayer-progress-slider-list{position:absolute;bottom:0;left:0;background-color:rgba(var(--semi-grey-5),1);height:4px;width:calc(100% - 2px);margin-right:2px;border-radius:999px;transition:transform .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-videoPlayer-progress-slider-played{position:absolute;bottom:0;left:0;background-color:var(--semi-color-primary);height:4px;border-radius:999px;transition:transform .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-videoPlayer-progress-slider-buffered{position:absolute;bottom:0;left:0;background-color:rgba(var(--semi-grey-3),1);height:4px;border-radius:999px;transition:transform .3s;transition-timing-function:cubic-bezier(.62,.05,.36,.95)}.semi-videoPlayer-progress-handle{box-sizing:border-box;position:absolute;width:16px;height:16px;background-color:#fff;border:1px solid var(--semi-color-primary);box-shadow:0 0 4px 0 var(--semi-color-shadow);border-radius:50%;top:15px}@keyframes semi-animation-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.semi-button.semi-button-with-icon{display:inline-flex;align-items:center}.semi-button.semi-button-with-icon .semi-button-content{display:flex;align-items:center;justify-content:center}.semi-button.semi-button-loading{pointer-events:none;cursor:not-allowed}.semi-button.semi-button-loading .semi-button-content>svg,.semi-button.semi-button-loading .semi-button-content-loading-icon{width:16px;height:16px;animation:.6s linear infinite semi-animation-rotate;animation-fill-mode:forwards}.semi-button.semi-button-with-icon-only{padding:8px;height:32px;width:32px;justify-content:center;align-items:center}.semi-button.semi-button-with-icon-only.semi-button-size-small{padding:4px;height:24px;width:24px}.semi-button.semi-button-with-icon-only.semi-button-size-large{padding:12px;height:40px;width:40px}.semi-button-content-left{margin-right:8px;display:flex;align-items:center}.semi-button-content-right{margin-left:8px;display:flex;align-items:center}.semi-rtl .semi-button,.semi-portal-rtl .semi-button{direction:rtl;padding-left:12px;padding-right:12px}.semi-rtl .semi-button-size-small,.semi-portal-rtl .semi-button-size-small{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-size-large,.semi-portal-rtl .semi-button-size-large{padding-left:16px;padding-right:16px}.semi-rtl .semi-button-group,.semi-portal-rtl .semi-button-group{direction:rtl}.semi-rtl .semi-button-group>.semi-button,.semi-portal-rtl .semi-button-group>.semi-button{padding-left:0;padding-right:0}.semi-rtl .semi-button-group>.semi-button .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button .semi-button-content{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-group>.semi-button-size-large .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button-size-large .semi-button-content{padding-left:16px;padding-right:16px}.semi-rtl .semi-button-group>.semi-button-size-small .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button-size-small .semi-button-content{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only{padding-left:0;padding-right:0}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only .semi-button-content{padding-left:8px;padding-right:8px}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-small .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-small .semi-button-content{padding-left:4px;padding-right:4px}.semi-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-large .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button.semi-button-with-icon-only.semi-button-size-large .semi-button-content{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-group>.semi-button:first-child,.semi-portal-rtl .semi-button-group>.semi-button:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--semi-border-radius-small);border-bottom-right-radius:var(--semi-border-radius-small)}.semi-rtl .semi-button-group>.semi-button:not(:last-child) .semi-button-content,.semi-portal-rtl .semi-button-group>.semi-button:not(:last-child) .semi-button-content{border-left:1px var(--semi-color-border) solid;border-right:0}.semi-rtl .semi-button-group>.semi-button:last-child,.semi-portal-rtl .semi-button-group>.semi-button:last-child{border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--semi-border-radius-small);border-bottom-left-radius:var(--semi-border-radius-small)}.semi-rtl .semi-button.semi-button-with-icon-only,.semi-portal-rtl .semi-button.semi-button-with-icon-only{padding-left:8px;padding-right:8px}.semi-rtl .semi-button.semi-button-with-icon-only.semi-button-size-small,.semi-portal-rtl .semi-button.semi-button-with-icon-only.semi-button-size-small{padding-left:4px;padding-right:4px}.semi-rtl .semi-button.semi-button-with-icon-only.semi-button-size-large,.semi-portal-rtl .semi-button.semi-button-with-icon-only.semi-button-size-large{padding-left:12px;padding-right:12px}.semi-rtl .semi-button-content-left,.semi-portal-rtl .semi-button-content-left{margin-left:8px;margin-right:0}.semi-rtl .semi-button-content-right,.semi-portal-rtl .semi-button-content-right{margin-right:8px;margin-left:0}.semi-input-textarea-wrapper{box-sizing:border-box;display:inline-block;position:relative;width:100%;border:1px rgba(0,0,0,0) solid;border-radius:var(--semi-border-radius-small);vertical-align:bottom;background-color:var(--semi-color-fill-0);transition:background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none),border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-input-textarea-wrapper-resizeX{display:inline-block;width:fit-content;max-width:100%}.semi-input-textarea-wrapper:hover{background-color:var(--semi-color-fill-1)}.semi-input-textarea-wrapper-focus{background-color:var(--semi-color-fill-0);border:1px var(--semi-color-focus-border) solid}.semi-input-textarea-wrapper-focus:hover,.semi-input-textarea-wrapper-focus:active{background-color:var(--semi-color-fill-0)}.semi-input-textarea-wrapper:active{background-color:var(--semi-color-fill-2)}.semi-input-textarea-wrapper .semi-input-clearbtn{position:absolute;top:0;min-width:24px;color:var(--semi-color-text-2);right:4px;height:32px;display:flex;align-items:center;justify-content:center}.semi-input-textarea-wrapper .semi-input-clearbtn>svg{pointer-events:none}.semi-input-textarea-wrapper .semi-input-clearbtn:hover{cursor:pointer}.semi-input-textarea-wrapper .semi-input-clearbtn:hover .semi-icon{color:var(--semi-color-primary-hover)}.semi-input-textarea-wrapper .semi-input-clearbtn-hidden{visibility:hidden}.semi-input-textarea-wrapper-disabled,.semi-input-textarea-wrapper-readonly{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:var(--semi-color-disabled-fill)}.semi-input-textarea-wrapper-disabled:hover,.semi-input-textarea-wrapper-readonly:hover{background-color:var(--semi-color-disabled-fill)}.semi-input-textarea-wrapper-disabled::placeholder,.semi-input-textarea-wrapper-readonly::placeholder{color:var(--semi-color-disabled-text)}.semi-input-textarea-wrapper-readonly{cursor:text}.semi-input-textarea-wrapper-error{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger-light-default)}.semi-input-textarea-wrapper-error:hover{background-color:var(--semi-color-danger-light-hover);border-color:var(--semi-color-danger-light-hover)}.semi-input-textarea-wrapper-error.semi-input-textarea-wrapper-focus{background-color:var(--semi-color-danger-light-default);border-color:var(--semi-color-danger)}.semi-input-textarea-wrapper-error:active{background-color:var(--semi-color-danger-light-active);border-color:var(--semi-color-danger)}.semi-input-textarea-wrapper-warning{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning-light-default)}.semi-input-textarea-wrapper-warning:hover{background-color:var(--semi-color-warning-light-hover);border-color:var(--semi-color-warning-light-hover)}.semi-input-textarea-wrapper-warning.semi-input-textarea-wrapper-focus{background-color:var(--semi-color-warning-light-default);border-color:var(--semi-color-warning)}.semi-input-textarea-wrapper-warning:active{background-color:var(--semi-color-warning-light-active);border-color:var(--semi-color-warning)}.semi-input-textarea{position:relative;resize:none;padding:5px 12px;box-shadow:none;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:#0000;border:0 solid rgba(0,0,0,0);vertical-align:bottom;width:100%;outline:none;cursor:text;box-sizing:border-box;color:var(--semi-color-text-0)}.semi-input-textarea:hover{border-color:#0000}.semi-input-textarea::placeholder{color:var(--semi-color-text-2)}.semi-input-textarea-showClear{padding-right:36px}.semi-input-textarea-disabled,.semi-input-textarea-readonly{cursor:not-allowed;color:var(--semi-color-disabled-text);background-color:#0000}.semi-input-textarea-disabled:hover,.semi-input-textarea-readonly:hover{background-color:#0000}.semi-input-textarea-disabled::placeholder,.semi-input-textarea-readonly::placeholder{color:var(--semi-color-disabled-text)}.semi-input-textarea-readonly{cursor:text}.semi-input-textarea-autosize{overflow:hidden;resize:none}.semi-input-textarea-counter{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;flex-direction:column;justify-content:center;padding:3px 12px 5px;min-height:24px;text-align:right;color:var(--semi-color-text-2)}.semi-input-textarea-counter-exceed{color:var(--semi-color-danger)}.semi-input-textarea-borderless:not(:focus-within):not(:hover){background-color:#0000;border-color:#0000}.semi-input-textarea-borderless:focus-within:not(:active){background-color:#0000}.semi-input-textarea-borderless.semi-input-textarea-wrapper-error:not(:focus-within){border-color:var(--semi-color-danger)}.semi-input-textarea-borderless.semi-input-textarea-wrapper-warning:not(:focus-within){border-color:var(--semi-color-warning)}.semi-input-textarea-borderless.semi-input-textarea-wrapper-error .semi-input-textarea-counter{color:var(--semi-color-danger)}.semi-input-textarea-borderless.semi-input-textarea-wrapper-warning .semi-input-textarea-counter{color:var(--semi-color-warning)}.semi-input-textarea-wrapper-withLineNumber{display:flex;padding:0;align-items:flex-start}.semi-input-textarea-wrapper-withLineNumber.semi-input-textarea-wrapper-resizeX{display:inline-flex;width:fit-content;max-width:100%}.semi-input-textarea-wrapper-withLineNumber.semi-input-textarea-wrapper-resizeX .semi-input-textarea-content{flex:0 0 auto}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber{flex-shrink:0;padding:5px 12px;background-color:var(--semi-color-fill-1);border-right:1px solid var(--semi-color-border);color:var(--semi-color-text-2);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:inherit;line-height:1.5;text-align:right;-webkit-user-select:none;user-select:none;min-width:36px;border-radius:var(--semi-border-radius-small) 0 0 var(--semi-border-radius-small);overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-ms-overflow-style:none}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber::-webkit-scrollbar{display:none}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-content{display:flex;flex:1;min-width:0}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber-item{display:flex;align-items:flex-start;justify-content:flex-end;box-sizing:border-box}.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea{border-radius:0 var(--semi-border-radius-small) var(--semi-border-radius-small) 0;line-height:1.5;flex:1}.semi-rtl .semi-input-wrapper,.semi-portal-rtl .semi-input-wrapper{direction:rtl}.semi-rtl .semi-input-wrapper__with-prefix .semi-input,.semi-portal-rtl .semi-input-wrapper__with-prefix .semi-input{padding-left:auto;padding-right:0}.semi-rtl .semi-input-wrapper__with-suffix .semi-input,.semi-portal-rtl .semi-input-wrapper__with-suffix .semi-input{padding-right:auto;padding-left:0}.semi-rtl .semi-input,.semi-portal-rtl .semi-input{padding-left:12px;padding-right:12px}.semi-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-portal-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-text,.semi-portal-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-text{margin-left:auto;margin-right:0}.semi-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-portal-rtl .semi-input-clearbtn+.semi-rtl .semi-input-suffix+.semi-input-suffix-icon,.semi-portal-rtl .semi-input-clearbtn+.semi-portal-rtl .semi-input-suffix+.semi-input-suffix-icon{margin-left:auto;margin-right:0}.semi-rtl .semi-input-append,.semi-portal-rtl .semi-input-append{border-left:0;border-right:1px rgba(0,0,0,0) solid}.semi-rtl .semi-input-prepend,.semi-portal-rtl .semi-input-prepend{border-right:0;border-left:1px rgba(0,0,0,0) solid}.semi-rtl .semi-input-group .semi-select:not(:last-child):after,.semi-rtl .semi-input-group .semi-cascader:not(:last-child):after,.semi-rtl .semi-input-group .semi-tree-select:not(:last-child):after,.semi-rtl .semi-input-group>.semi-input-wrapper:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-select:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-cascader:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-tree-select:not(:last-child):after,.semi-portal-rtl .semi-input-group>.semi-input-wrapper:not(:last-child):after{right:auto;left:-1px}.semi-rtl .semi-input-group .semi-input-number:not(:last-child):after,.semi-portal-rtl .semi-input-group .semi-input-number:not(:last-child):after{right:auto;left:-1px}.semi-rtl .semi-input-textarea-wrapper,.semi-portal-rtl .semi-input-textarea-wrapper{direction:rtl}.semi-rtl .semi-input-textarea-counter,.semi-portal-rtl .semi-input-textarea-counter{text-align:left}.semi-rtl .semi-input-textarea-showClear,.semi-portal-rtl .semi-input-textarea-showClear{padding-right:0;padding-left:36px}body,:host{--semi-transition_duration-slowest:0ms;--semi-transition_duration-slower:0ms;--semi-transition_duration-slow:0ms;--semi-transition_duration-normal:0ms;--semi-transition_duration-fast:0ms;--semi-transition_duration-faster:0ms;--semi-transition_duration-fastest:0ms;--semi-transition_duration-none:0ms;--semi-transition_function-linear:linear;--semi-transition_function-ease:ease;--semi-transition_function-easeIn:ease-in;--semi-transition_function-easeOut:ease-out;--semi-transition_function-easeInIOut:ease-in-out;--semi-transition_delay-none: 0ms;--semi-transition_delay-slowest:0ms;--semi-transition_delay-slower:0ms;--semi-transition_delay-slow:0ms;--semi-transition_delay-normal:0ms;--semi-transition_delay-fast:0ms;--semi-transition_delay-faster:0ms;--semi-transition_delay-fastest:0ms;--semi-transform_scale-none:scale(1,1);--semi-transform_scale-small:scale(1,1);--semi-transform_scale-medium:scale(1,1);--semi-transform_scale-large:scale(1,1);--semi-transform-rotate-none:rotate(0deg);--semi-transform_rotate-clockwise90deg:rotate(90deg);--semi-transform_rotate-clockwise180deg:rotate(180deg);--semi-transform_rotate-clockwise270deg:rotate(270deg);--semi-transform_rotate-clockwise360deg:rotate(360deg);--semi-transform_rotate-anticlockwise90deg:rotate(-90deg);--semi-transform_rotate-anticlockwise180deg:rotate(-180deg);--semi-transform_rotate-anticlockwise270deg:rotate(-270deg);--semi-transform_rotate-anticlockwise360deg:rotate(-360deg)}body,body .semi-always-light,:host,:host .semi-always-light{--semi-amber-0: 254,251,235;--semi-amber-1: 252,245,206;--semi-amber-2: 249,232,158;--semi-amber-3: 246,216,111;--semi-amber-4: 243,198,65;--semi-amber-5: 240,177,20;--semi-amber-6: 200,138,15;--semi-amber-7: 160,102,10;--semi-amber-8: 120,70,6;--semi-amber-9: 80,43,3;--semi-black: 0,0,0;--semi-blue-0: 234,245,255;--semi-blue-1: 203,231,254;--semi-blue-2: 152,205,253;--semi-blue-3: 101,178,252;--semi-blue-4: 50,149,251;--semi-blue-5: 0,100,250;--semi-blue-6: 0,98,214;--semi-blue-7: 0,79,179;--semi-blue-8: 0,61,143;--semi-blue-9: 0,44,107;--semi-cyan-0: 229,247,248;--semi-cyan-1: 194,239,240;--semi-cyan-2: 138,221,226;--semi-cyan-3: 88,203,211;--semi-cyan-4: 44,184,197;--semi-cyan-5: 5,164,182;--semi-cyan-6: 3,134,152;--semi-cyan-7: 1,105,121;--semi-cyan-8: 0,77,91;--semi-cyan-9: 0,50,61;--semi-green-0: 236,247,236;--semi-green-1: 208,240,209;--semi-green-2: 164,224,167;--semi-green-3: 125,209,130;--semi-green-4: 90,194,98;--semi-green-5: 59,179,70;--semi-green-6: 48,149,59;--semi-green-7: 37,119,47;--semi-green-8: 27,89,36;--semi-green-9: 17,60,24;--semi-grey-0: 249,249,249;--semi-grey-1: 230,232,234;--semi-grey-2: 198,202,205;--semi-grey-3: 167,171,176;--semi-grey-4: 136,141,146;--semi-grey-5: 107,112,117;--semi-grey-6: 85,91,97;--semi-grey-7: 65,70,76;--semi-grey-8: 46,50,56;--semi-grey-9: 28,31,35;--semi-indigo-0: 236,239,248;--semi-indigo-1: 209,216,240;--semi-indigo-2: 167,179,225;--semi-indigo-3: 128,144,211;--semi-indigo-4: 94,111,196;--semi-indigo-5: 63,81,181;--semi-indigo-6: 51,66,161;--semi-indigo-7: 40,52,140;--semi-indigo-8: 31,40,120;--semi-indigo-9: 23,29,99;--semi-light-blue-0: 233,247,253;--semi-light-blue-1: 201,236,252;--semi-light-blue-2: 149,216,248;--semi-light-blue-3: 98,195,245;--semi-light-blue-4: 48,172,241;--semi-light-blue-5: 0,149,238;--semi-light-blue-6: 0,123,202;--semi-light-blue-7: 0,99,167;--semi-light-blue-8: 0,75,131;--semi-light-blue-9: 0,53,95;--semi-light-green-0: 243,248,236;--semi-light-green-1: 227,240,208;--semi-light-green-2: 200,226,165;--semi-light-green-3: 173,211,126;--semi-light-green-4: 147,197,91;--semi-light-green-5: 123,182,60;--semi-light-green-6: 100,152,48;--semi-light-green-7: 78,121,38;--semi-light-green-8: 57,91,27;--semi-light-green-9: 37,61,18;--semi-lime-0: 242,250,230;--semi-lime-1: 227,246,197;--semi-lime-2: 203,237,142;--semi-lime-3: 183,227,91;--semi-lime-4: 167,218,44;--semi-lime-5: 155,209,0;--semi-lime-6: 126,174,0;--semi-lime-7: 99,139,0;--semi-lime-8: 72,104,0;--semi-lime-9: 47,70,0;--semi-orange-0: 255,248,234;--semi-orange-1: 254,238,204;--semi-orange-2: 254,217,152;--semi-orange-3: 253,193,101;--semi-orange-4: 253,166,51;--semi-orange-5: 252,136,0;--semi-orange-6: 210,103,0;--semi-orange-7: 168,74,0;--semi-orange-8: 126,49,0;--semi-orange-9: 84,29,0;--semi-pink-0: 253,236,239;--semi-pink-1: 251,207,216;--semi-pink-2: 246,160,181;--semi-pink-3: 242,115,150;--semi-pink-4: 237,72,123;--semi-pink-5: 233,30,99;--semi-pink-6: 197,19,86;--semi-pink-7: 162,11,72;--semi-pink-8: 126,5,58;--semi-pink-9: 90,1,43;--semi-purple-0: 247,233,247;--semi-purple-1: 239,202,240;--semi-purple-2: 221,155,224;--semi-purple-3: 201,111,209;--semi-purple-4: 180,73,194;--semi-purple-5: 158,40,179;--semi-purple-6: 135,30,158;--semi-purple-7: 113,22,138;--semi-purple-8: 92,15,117;--semi-purple-9: 73,10,97;--semi-red-0: 254,242,237;--semi-red-1: 254,221,210;--semi-red-2: 253,183,165;--semi-red-3: 251,144,120;--semi-red-4: 250,102,76;--semi-red-5: 249,57,32;--semi-red-6: 213,37,21;--semi-red-7: 178,20,12;--semi-red-8: 142,8,5;--semi-red-9: 106,1,3;--semi-teal-0: 228,247,244;--semi-teal-1: 192,240,232;--semi-teal-2: 135,224,211;--semi-teal-3: 84,209,193;--semi-teal-4: 39,194,176;--semi-teal-5: 0,179,161;--semi-teal-6: 0,149,137;--semi-teal-7: 0,119,111;--semi-teal-8: 0,89,85;--semi-teal-9: 0,60,58;--semi-violet-0: 243,237,249;--semi-violet-1: 226,209,244;--semi-violet-2: 196,167,233;--semi-violet-3: 166,127,221;--semi-violet-4: 136,91,210;--semi-violet-5: 106,58,199;--semi-violet-6: 87,47,179;--semi-violet-7: 70,37,158;--semi-violet-8: 54,28,138;--semi-violet-9: 40,20,117;--semi-white: 255,255,255;--semi-yellow-0: 255,253,234;--semi-yellow-1: 254,251,203;--semi-yellow-2: 253,243,152;--semi-yellow-3: 252,232,101;--semi-yellow-4: 251,218,50;--semi-yellow-5: 250,200,0;--semi-yellow-6: 208,170,0;--semi-yellow-7: 167,139,0;--semi-yellow-8: 125,106,0;--semi-yellow-9: 83,72,0;--semi-ai-purple-0: 248,237,255;--semi-ai-purple-1: 242,218,255;--semi-ai-purple-2: 227,181,255;--semi-ai-purple-3: 209,145,255;--semi-ai-purple-4: 189,108,255;--semi-ai-purple-5: 166,71,255;--semi-ai-purple-6: 134,54,219;--semi-ai-purple-7: 105,40,184;--semi-ai-purple-8: 78,28,148;--semi-ai-purple-9: 54,18,112;--semi-ai-general-0-3: 239,247,255;--semi-ai-general-0-2: 244,244,255;--semi-ai-general-0-1: 248,237,255;--semi-ai-general-0-0: 255,242,255;--semi-ai-general-1-3: 213,235,255;--semi-ai-general-1-2: 223,224,255;--semi-ai-general-1-1: 242,218,255;--semi-ai-general-1-0: 255,218,254;--semi-ai-general-2-3: 171,213,255;--semi-ai-general-2-2: 193,192,255;--semi-ai-general-2-1: 227,181,255;--semi-ai-general-2-0: 254,181,255;--semi-ai-general-3-3: 130,190,255;--semi-ai-general-3-2: 163,160,255;--semi-ai-general-3-1: 209,145,255;--semi-ai-general-3-0: 249,143,255;--semi-ai-general-4-3: 88,166,255;--semi-ai-general-4-2: 134,129,255;--semi-ai-general-4-1: 189,108,255;--semi-ai-general-4-0: 242,106,255;--semi-ai-general-5-3: 46,140,255;--semi-ai-general-5-2: 107,97,255;--semi-ai-general-5-1: 166,71,255;--semi-ai-general-5-0: 233,69,255;--semi-ai-general-6-3: 33,114,219;--semi-ai-general-6-2: 88,77,219;--semi-ai-general-6-1: 134,54,219;--semi-ai-general-6-0: 194,53,219;--semi-ai-general-7-3: 22,89,184;--semi-ai-general-7-2: 71,59,184;--semi-ai-general-7-1: 105,40,184;--semi-ai-general-7-0: 157,39,184;--semi-ai-general-8-3: 13,67,148;--semi-ai-general-8-2: 55,43,148;--semi-ai-general-8-1: 78,28,148;--semi-ai-general-8-0: 121,27,148;--semi-ai-general-9-3: 7,47,112;--semi-ai-general-9-2: 40,29,112;--semi-ai-general-9-1: 54,18,112;--semi-ai-general-9-0: 88,17,112;--semi-ai-general-0: linear-gradient(278deg, rgba(var(--semi-ai-general-0-0)) 0%, rgba(var(--semi-ai-general-0-1)) 30%, rgba(var(--semi-ai-general-0-2)) 60%, rgba(var(--semi-ai-general-0-3)) 100%);--semi-ai-general-1: linear-gradient(278deg, rgba(var(--semi-ai-general-1-0)) 0%, rgba(var(--semi-ai-general-1-1)) 30%, rgba(var(--semi-ai-general-1-2)) 60%, rgba(var(--semi-ai-general-1-3)) 100%);--semi-ai-general-2: linear-gradient(278deg, rgba(var(--semi-ai-general-2-0)) 0%, rgba(var(--semi-ai-general-2-1)) 30%, rgba(var(--semi-ai-general-2-2)) 60%, rgba(var(--semi-ai-general-2-3)) 100%);--semi-ai-general-3: linear-gradient(278deg, rgba(var(--semi-ai-general-3-0)) 0%, rgba(var(--semi-ai-general-3-1)) 30%, rgba(var(--semi-ai-general-3-2)) 60%, rgba(var(--semi-ai-general-3-3)) 100%);--semi-ai-general-4: linear-gradient(278deg, rgba(var(--semi-ai-general-4-0)) 0%, rgba(var(--semi-ai-general-4-1)) 30%, rgba(var(--semi-ai-general-4-2)) 60%, rgba(var(--semi-ai-general-4-3)) 100%);--semi-ai-general-5: linear-gradient(278deg, rgba(var(--semi-ai-general-5-0)) 0%, rgba(var(--semi-ai-general-5-1)) 30%, rgba(var(--semi-ai-general-5-2)) 60%, rgba(var(--semi-ai-general-5-3)) 100%);--semi-ai-general-6: linear-gradient(278deg, rgba(var(--semi-ai-general-6-0)) 0%, rgba(var(--semi-ai-general-6-1)) 30%, rgba(var(--semi-ai-general-6-2)) 60%, rgba(var(--semi-ai-general-6-3)) 100%);--semi-ai-general-7: linear-gradient(278deg, rgba(var(--semi-ai-general-7-0)) 0%, rgba(var(--semi-ai-general-7-1)) 30%, rgba(var(--semi-ai-general-7-2)) 60%, rgba(var(--semi-ai-general-7-3)) 100%);--semi-ai-general-8: linear-gradient(278deg, rgba(var(--semi-ai-general-8-0)) 0%, rgba(var(--semi-ai-general-8-1)) 30%, rgba(var(--semi-ai-general-8-2)) 60%, rgba(var(--semi-ai-general-8-3)) 100%);--semi-ai-general-9: linear-gradient(278deg, rgba(var(--semi-ai-general-9-0)) 0%, rgba(var(--semi-ai-general-9-1)) 30%, rgba(var(--semi-ai-general-9-2)) 60%, rgba(var(--semi-ai-general-9-3)) 100%)}body[theme-mode=dark],body .semi-always-dark,:host([theme-mode=dark]),:host .semi-always-dark{--semi-red-0: 108,9,11;--semi-red-1: 144,17,16;--semi-red-2: 180,32,25;--semi-red-3: 215,51,36;--semi-red-4: 251,73,50;--semi-red-5: 252,114,90;--semi-red-6: 253,153,131;--semi-red-7: 253,190,172;--semi-red-8: 254,224,213;--semi-red-9: 255,243,239;--semi-pink-0: 92,7,48;--semi-pink-1: 128,14,65;--semi-pink-2: 164,23,81;--semi-pink-3: 199,34,97;--semi-pink-4: 235,47,113;--semi-pink-5: 239,86,134;--semi-pink-6: 243,126,159;--semi-pink-7: 247,168,188;--semi-pink-8: 251,211,220;--semi-pink-9: 253,238,241;--semi-purple-0: 74,16,97;--semi-purple-1: 94,23,118;--semi-purple-2: 115,31,138;--semi-purple-3: 137,40,159;--semi-purple-4: 160,51,179;--semi-purple-5: 181,83,194;--semi-purple-6: 202,120,209;--semi-purple-7: 221,160,225;--semi-purple-8: 239,206,240;--semi-purple-9: 247,235,247;--semi-violet-0: 64,27,119;--semi-violet-1: 76,36,140;--semi-violet-2: 88,46,160;--semi-violet-3: 100,57,181;--semi-violet-4: 114,70,201;--semi-violet-5: 136,101,212;--semi-violet-6: 162,136,223;--semi-violet-7: 190,173,233;--semi-violet-8: 221,212,244;--semi-violet-9: 241,238,250;--semi-indigo-0: 23,30,101;--semi-indigo-1: 32,41,122;--semi-indigo-2: 41,54,142;--semi-indigo-3: 52,68,163;--semi-indigo-4: 64,83,183;--semi-indigo-5: 95,113,197;--semi-indigo-6: 129,145,212;--semi-indigo-7: 167,180,226;--semi-indigo-8: 209,216,241;--semi-indigo-9: 237,239,248;--semi-blue-0: 5,49,112;--semi-blue-1: 10,70,148;--semi-blue-2: 19,92,184;--semi-blue-3: 29,117,219;--semi-blue-4: 41,144,255;--semi-blue-5: 84,169,255;--semi-blue-6: 127,193,255;--semi-blue-7: 169,215,255;--semi-blue-8: 212,236,255;--semi-blue-9: 239,248,255;--semi-light-blue-0: 0,55,97;--semi-light-blue-1: 0,77,133;--semi-light-blue-2: 3,102,169;--semi-light-blue-3: 10,129,204;--semi-light-blue-4: 19,159,240;--semi-light-blue-5: 64,180,243;--semi-light-blue-6: 110,200,246;--semi-light-blue-7: 157,220,249;--semi-light-blue-8: 206,238,252;--semi-light-blue-9: 235,248,254;--semi-cyan-0: 4,52,61;--semi-cyan-1: 7,79,92;--semi-cyan-2: 10,108,123;--semi-cyan-3: 14,137,153;--semi-cyan-4: 19,168,184;--semi-cyan-5: 56,187,198;--semi-cyan-6: 98,205,212;--semi-cyan-7: 145,223,227;--semi-cyan-8: 198,239,241;--semi-cyan-9: 231,247,248;--semi-teal-0: 2,60,57;--semi-teal-1: 4,90,85;--semi-teal-2: 7,119,111;--semi-teal-3: 10,149,136;--semi-teal-4: 14,179,161;--semi-teal-5: 51,194,176;--semi-teal-6: 94,209,193;--semi-teal-7: 142,225,211;--semi-teal-8: 196,240,232;--semi-teal-9: 230,247,244;--semi-green-0: 18,60,25;--semi-green-1: 28,90,37;--semi-green-2: 39,119,49;--semi-green-3: 50,149,61;--semi-green-4: 62,179,73;--semi-green-5: 93,194,100;--semi-green-6: 127,209,132;--semi-green-7: 166,225,168;--semi-green-8: 208,240,209;--semi-green-9: 236,247,236;--semi-light-green-0: 38,61,19;--semi-light-green-1: 59,92,29;--semi-light-green-2: 81,123,40;--semi-light-green-3: 103,153,52;--semi-light-green-4: 127,184,64;--semi-light-green-5: 151,198,95;--semi-light-green-6: 176,212,129;--semi-light-green-7: 201,227,167;--semi-light-green-8: 228,241,209;--semi-light-green-9: 243,248,237;--semi-lime-0: 49,70,3;--semi-lime-1: 75,105,5;--semi-lime-2: 103,141,9;--semi-lime-3: 132,176,12;--semi-lime-4: 162,211,17;--semi-lime-5: 174,220,58;--semi-lime-6: 189,229,102;--semi-lime-7: 207,237,150;--semi-lime-8: 229,246,201;--semi-lime-9: 243,251,233;--semi-yellow-0: 84,73,3;--semi-yellow-1: 126,108,6;--semi-yellow-2: 168,142,10;--semi-yellow-3: 210,175,15;--semi-yellow-4: 252,206,20;--semi-yellow-5: 253,222,67;--semi-yellow-6: 253,235,113;--semi-yellow-7: 254,245,160;--semi-yellow-8: 254,251,208;--semi-yellow-9: 255,254,236;--semi-amber-0: 81,46,9;--semi-amber-1: 121,75,15;--semi-amber-2: 161,107,22;--semi-amber-3: 202,143,30;--semi-amber-4: 242,183,38;--semi-amber-5: 245,202,80;--semi-amber-6: 247,219,122;--semi-amber-7: 250,234,166;--semi-amber-8: 252,246,210;--semi-amber-9: 254,251,237;--semi-orange-0: 85,31,3;--semi-orange-1: 128,53,6;--semi-orange-2: 170,80,10;--semi-orange-3: 213,111,15;--semi-orange-4: 255,146,20;--semi-orange-5: 255,174,67;--semi-orange-6: 255,199,114;--semi-orange-7: 255,221,161;--semi-orange-8: 255,239,208;--semi-orange-9: 255,249,237;--semi-grey-0: 28,31,35;--semi-grey-1: 46,50,56;--semi-grey-2: 65,70,76;--semi-grey-3: 85,91,97;--semi-grey-4: 107,112,117;--semi-grey-5: 136,141,146;--semi-grey-6: 167,171,176;--semi-grey-7: 198,202,205;--semi-grey-8: 230,232,234;--semi-grey-9: 249,249,249;--semi-white: 255, 255, 255;--semi-black: 0, 0, 0;--semi-ai-purple-0: 58,23,112;--semi-ai-purple-1: 83,35,148;--semi-ai-purple-2: 111,49,184;--semi-ai-purple-3: 141,65,219;--semi-ai-purple-4: 167,68,255;--semi-ai-purple-5: 195,117,255;--semi-ai-purple-6: 213,152,255;--semi-ai-purple-7: 229,186,255;--semi-ai-purple-8: 243,221,255;--semi-ai-purple-9: 251,243,255;--semi-ai-general-0-0: 9,44,100;--semi-ai-general-0-1: 39,29,108;--semi-ai-general-0-2: 58,23,112;--semi-ai-general-0-3: 80,18,101;--semi-ai-general-1-0: 17,64,136;--semi-ai-general-1-1: 54,43,144;--semi-ai-general-1-2: 83,35,148;--semi-ai-general-1-3: 113,28,137;--semi-ai-general-2-0: 26,86,172;--semi-ai-general-2-1: 70,59,180;--semi-ai-general-2-2: 111,49,184;--semi-ai-general-2-3: 148,41,173;--semi-ai-general-3-0: 38,111,207;--semi-ai-general-3-1: 88,78,215;--semi-ai-general-3-2: 141,65,219;--semi-ai-general-3-3: 185,55,208;--semi-ai-general-4-0: 35,127,240;--semi-ai-general-4-1: 94,84,248;--semi-ai-general-4-2: 167,68,255;--semi-ai-general-4-3: 219,56,241;--semi-ai-general-5-0: 91,162,245;--semi-ai-general-5-1: 134,129,252;--semi-ai-general-5-2: 195,117,255;--semi-ai-general-5-3: 234,107,246;--semi-ai-general-6-0: 131,187,248;--semi-ai-general-6-1: 163,160,253;--semi-ai-general-6-2: 213,152,255;--semi-ai-general-6-3: 243,143,248;--semi-ai-general-7-0: 172,210,250;--semi-ai-general-7-1: 192,192,253;--semi-ai-general-7-2: 229,186,255;--semi-ai-general-7-3: 249,180,251;--semi-ai-general-8-0: 213,233,253;--semi-ai-general-8-1: 223,223,254;--semi-ai-general-8-2: 243,221,255;--semi-ai-general-8-3: 253,217,252;--semi-ai-general-9-0: 239,247,254;--semi-ai-general-9-1: 244,244,255;--semi-ai-general-9-2: 251,243,255;--semi-ai-general-9-3: 254,241,254;--semi-ai-general-0: linear-gradient(278deg, rgba(var(--semi-ai-general-0-0)) 0%, rgba(var(--semi-ai-general-0-1)) 30%, rgba(var(--semi-ai-general-0-2)) 60%, rgba(var(--semi-ai-general-0-3)) 100%);--semi-ai-general-1: linear-gradient(278deg, rgba(var(--semi-ai-general-1-0)) 0%, rgba(var(--semi-ai-general-1-1)) 30%, rgba(var(--semi-ai-general-1-2)) 60%, rgba(var(--semi-ai-general-1-3)) 100%);--semi-ai-general-2: linear-gradient(278deg, rgba(var(--semi-ai-general-2-0)) 0%, rgba(var(--semi-ai-general-2-1)) 30%, rgba(var(--semi-ai-general-2-2)) 60%, rgba(var(--semi-ai-general-2-3)) 100%);--semi-ai-general-3: linear-gradient(278deg, rgba(var(--semi-ai-general-3-0)) 0%, rgba(var(--semi-ai-general-3-1)) 30%, rgba(var(--semi-ai-general-3-2)) 60%, rgba(var(--semi-ai-general-3-3)) 100%);--semi-ai-general-4: linear-gradient(278deg, rgba(var(--semi-ai-general-4-0)) 0%, rgba(var(--semi-ai-general-4-1)) 30%, rgba(var(--semi-ai-general-4-2)) 60%, rgba(var(--semi-ai-general-4-3)) 100%);--semi-ai-general-5: linear-gradient(278deg, rgba(var(--semi-ai-general-5-0)) 0%, rgba(var(--semi-ai-general-5-1)) 30%, rgba(var(--semi-ai-general-5-2)) 60%, rgba(var(--semi-ai-general-5-3)) 100%);--semi-ai-general-6: linear-gradient(278deg, rgba(var(--semi-ai-general-6-0)) 0%, rgba(var(--semi-ai-general-6-1)) 30%, rgba(var(--semi-ai-general-6-2)) 60%, rgba(var(--semi-ai-general-6-3)) 100%);--semi-ai-general-7: linear-gradient(278deg, rgba(var(--semi-ai-general-7-0)) 0%, rgba(var(--semi-ai-general-7-1)) 30%, rgba(var(--semi-ai-general-7-2)) 60%, rgba(var(--semi-ai-general-7-3)) 100%);--semi-ai-general-8: linear-gradient(278deg, rgba(var(--semi-ai-general-8-0)) 0%, rgba(var(--semi-ai-general-8-1)) 30%, rgba(var(--semi-ai-general-8-2)) 60%, rgba(var(--semi-ai-general-8-3)) 100%);--semi-ai-general-9: linear-gradient(278deg, rgba(var(--semi-ai-general-9-0)) 0%, rgba(var(--semi-ai-general-9-1)) 30%, rgba(var(--semi-ai-general-9-2)) 60%, rgba(var(--semi-ai-general-9-3)) 100%)}body,body[theme-mode=dark] .semi-always-light,:host,:host .semi-always-light{font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;--semi-color-white: rgba(var(--semi-white), 1);--semi-color-black: rgba(var(--semi-black), 1);--semi-color-primary: rgba(var(--semi-blue-5), 1);--semi-color-primary-hover: rgba(var(--semi-blue-6), 1);--semi-color-primary-active: rgba(var(--semi-blue-7), 1);--semi-color-primary-disabled: rgba(var(--semi-blue-2), 1);--semi-color-primary-light-default: rgba(var(--semi-blue-0), 1);--semi-color-primary-light-hover: rgba(var(--semi-blue-1), 1);--semi-color-primary-light-active: rgba(var(--semi-blue-2), 1);--semi-color-secondary: rgba(var(--semi-light-blue-5), 1);--semi-color-secondary-hover: rgba(var(--semi-light-blue-6), 1);--semi-color-secondary-active: rgba(var(--semi-light-blue-7), 1);--semi-color-secondary-disabled: rgba(var(--semi-light-blue-2), 1);--semi-color-secondary-light-default: rgba(var(--semi-light-blue-0), 1);--semi-color-secondary-light-hover: rgba(var(--semi-light-blue-1), 1);--semi-color-secondary-light-active: rgba(var(--semi-light-blue-2), 1);--semi-color-tertiary: rgba(var(--semi-grey-5), 1);--semi-color-tertiary-hover: rgba(var(--semi-grey-6), 1);--semi-color-tertiary-active: rgba(var(--semi-grey-7), 1);--semi-color-tertiary-light-default: rgba(var(--semi-grey-0), 1);--semi-color-tertiary-light-hover: rgba(var(--semi-grey-1), 1);--semi-color-tertiary-light-active: rgba(var(--semi-grey-2), 1);--semi-color-default: rgba(var(--semi-grey-0), 1);--semi-color-default-hover: rgba(var(--semi-grey-1), 1);--semi-color-default-active: rgba(var(--semi-grey-2), 1);--semi-color-info: rgba(var(--semi-blue-5), 1);--semi-color-info-hover: rgba(var(--semi-blue-6), 1);--semi-color-info-active: rgba(var(--semi-blue-7), 1);--semi-color-info-disabled: rgba(var(--semi-blue-2), 1);--semi-color-info-light-default: rgba(var(--semi-blue-0), 1);--semi-color-info-light-hover: rgba(var(--semi-blue-1), 1);--semi-color-info-light-active: rgba(var(--semi-blue-2), 1);--semi-color-success: rgba(var(--semi-green-5), 1);--semi-color-success-hover: rgba(var(--semi-green-6), 1);--semi-color-success-active: rgba(var(--semi-green-7), 1);--semi-color-success-disabled: rgba(var(--semi-green-2), 1);--semi-color-success-light-default: rgba(var(--semi-green-0), 1);--semi-color-success-light-hover: rgba(var(--semi-green-1), 1);--semi-color-success-light-active: rgba(var(--semi-green-2), 1);--semi-color-danger: rgba(var(--semi-red-5), 1);--semi-color-danger-hover: rgba(var(--semi-red-6), 1);--semi-color-danger-active: rgba(var(--semi-red-7), 1);--semi-color-danger-light-default: rgba(var(--semi-red-0), 1);--semi-color-danger-light-hover: rgba(var(--semi-red-1), 1);--semi-color-danger-light-active: rgba(var(--semi-red-2), 1);--semi-color-warning: rgba(var(--semi-orange-5), 1);--semi-color-warning-hover: rgba(var(--semi-orange-6), 1);--semi-color-warning-active: rgba(var(--semi-orange-7), 1);--semi-color-warning-light-default: rgba(var(--semi-orange-0), 1);--semi-color-warning-light-hover: rgba(var(--semi-orange-1), 1);--semi-color-warning-light-active: rgba(var(--semi-orange-2), 1);--semi-color-focus-border: rgba(var(--semi-blue-5), 1);--semi-color-disabled-text: rgba(var(--semi-grey-9), .35);--semi-color-disabled-border: rgba(var(--semi-grey-1), 1);--semi-color-disabled-bg: rgba(var(--semi-grey-1), 1);--semi-color-disabled-fill: rgba(var(--semi-grey-8), .04);--semi-color-shadow: rgba(var(--semi-black), .04);--semi-color-link: rgba(var(--semi-blue-5), 1);--semi-color-link-hover: rgba(var(--semi-blue-6), 1);--semi-color-link-active: rgba(var(--semi-blue-7), 1);--semi-color-link-visited: rgba(var(--semi-blue-5), 1);--semi-color-border: rgba(var(--semi-grey-9), .08);--semi-color-nav-bg: rgba(var(--semi-white), 1);--semi-color-overlay-bg: rgba(22, 22, 26, .6);--semi-color-fill-0: rgba(var(--semi-grey-8), .05);--semi-color-fill-1: rgba(var(--semi-grey-8), .09);--semi-color-fill-2: rgba(var(--semi-grey-8), .13);--semi-color-bg-0: rgba(var(--semi-white), 1);--semi-color-bg-1: rgba(var(--semi-white), 1);--semi-color-bg-2: rgba(var(--semi-white), 1);--semi-color-bg-3: rgba(var(--semi-white), 1);--semi-color-bg-4: rgba(var(--semi-white), 1);--semi-color-text-0: rgba(var(--semi-grey-9), 1);--semi-color-text-1: rgba(var(--semi-grey-9), .8);--semi-color-text-2: rgba(var(--semi-grey-9), .62);--semi-color-text-3: rgba(var(--semi-grey-9), .35);--semi-shadow-elevated: 0 0 1px rgba(0, 0, 0, .3), 0 4px 14px rgba(0, 0, 0, .1);--semi-border-radius-extra-small: 3px;--semi-border-radius-small: 3px;--semi-border-radius-medium: 6px;--semi-border-radius-large: 12px;--semi-border-radius-circle: 50%;--semi-border-radius-full: 9999px;--semi-color-highlight-bg: rgba(var(--semi-yellow-4), 1);--semi-color-highlight: rgba(var(--semi-black), 1);--semi-color-data-0: rgba(87, 105, 255, 1);--semi-color-data-1: rgba(142, 212, 231, 1);--semi-color-data-2: rgba(245, 135, 0, 1);--semi-color-data-3: rgba(220, 183, 252, 1);--semi-color-data-4: rgba(74, 156, 247, 1);--semi-color-data-5: rgba(243, 204, 53, 1);--semi-color-data-6: rgba(254, 128, 144, 1);--semi-color-data-7: rgba(139, 215, 210, 1);--semi-color-data-8: rgba(131, 176, 35, 1);--semi-color-data-9: rgba(233, 165, 229, 1);--semi-color-data-10: rgba(48, 167, 206, 1);--semi-color-data-11: rgba(249, 192, 100, 1);--semi-color-data-12: rgba(177, 113, 249, 1);--semi-color-data-13: rgba(119, 182, 249, 1);--semi-color-data-14: rgba(200, 143, 2, 1);--semi-color-data-15: rgba(255, 170, 178, 1);--semi-color-data-16: rgba(51, 176, 171, 1);--semi-color-data-17: rgba(182, 215, 129, 1);--semi-color-data-18: rgba(212, 88, 212, 1);--semi-color-data-19: rgba(188, 198, 255, 1);--semi-color-ai-general: var(--semi-ai-general-5);--semi-color-ai-general-hover: var(--semi-ai-general-6);--semi-color-ai-general-active: var(--semi-ai-general-7);--semi-color-ai-general-disabled: var(--semi-ai-general-2);--semi-color-ai-purple: rgba(var(--semi-ai-purple-5));--semi-color-ai-purple-hover: rgba(var(--semi-ai-purple-6));--semi-color-ai-purple-active: rgba(var(--semi-ai-purple-7));--semi-color-ai-purple-disabled: rgba(var(--semi-ai-purple-2));--semi-color-ai-background-bottom: linear-gradient(201.15deg, rgba(255, 255, 255, .04) 6.58%, rgba(255, 226, 138, .04) 32.88%, rgba(231, 45, 255, .04) 67.93%, rgba(0, 115, 255, .04) 94.23%);--semi-color-ai-background-bottom-hover: linear-gradient(201.15deg, rgba(255, 255, 255, .08) 6.58%, rgba(255, 226, 138, .08) 32.88%, rgba(231, 45, 255, .08) 67.93%, rgba(0, 115, 255, .08) 94.23%);--semi-color-ai-background-bottom-active: linear-gradient(201.15deg, rgba(255, 255, 255, .12) 6.58%, rgba(255, 226, 138, .12) 32.88%, rgba(231, 45, 255, .12) 67.93%, rgba(0, 115, 255, .12) 94.23%);--semi-color-ai-background-top: linear-gradient(201.15deg, rgba(83, 56, 255, .16) 6.58%, rgba(176, 48, 240, .096) 32.88%, rgba(231, 45, 255, .048) 59.17%, rgba(255, 255, 255, 0) 94.23%);--semi-color-ai-background-top-hover: linear-gradient(201.15deg, rgba(83, 56, 255, .24) 6.58%, rgba(176, 48, 240, .144) 32.88%, rgba(231, 45, 255, .072) 59.17%, rgba(255, 255, 255, 0) 94.23%);--semi-color-ai-background-top-hover: linear-gradient(201.15deg, rgba(83, 56, 255, .32) 6.58%, rgba(176, 48, 240, .192) 32.88%, rgba(231, 45, 255, .096) 59.17%, rgba(255, 255, 255, 0) 94.23%)}body[theme-mode=dark],body .semi-always-dark,:host([theme-mode=dark]),:host .semi-always-dark{font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;--semi-color-white: rgba(228, 231, 245, 1);--semi-color-black: rgba(var(--semi-black), 1);--semi-color-primary: rgba(var(--semi-blue-5), 1);--semi-color-primary-hover: rgba(var(--semi-blue-6), 1);--semi-color-primary-active: rgba(var(--semi-blue-7), 1);--semi-color-primary-disabled: rgba(var(--semi-blue-2), 1);--semi-color-primary-light-default: rgba(var(--semi-blue-5), .2);--semi-color-primary-light-hover: rgba(var(--semi-blue-5), .3);--semi-color-primary-light-active: rgba(var(--semi-blue-5), .4);--semi-color-secondary: rgba(var(--semi-light-blue-5), 1);--semi-color-secondary-hover: rgba(var(--semi-light-blue-6), 1);--semi-color-secondary-active: rgba(var(--semi-light-blue-7), 1);--semi-color-secondary-disabled: rgba(var(--semi-light-blue-2), 1);--semi-color-secondary-light-default: rgba(var(--semi-light-blue-5), .2);--semi-color-secondary-light-hover: rgba(var(--semi-light-blue-5), .3);--semi-color-secondary-light-active: rgba(var(--semi-light-blue-5), .4);--semi-color-tertiary: rgba(var(--semi-grey-5), 1);--semi-color-tertiary-hover: rgba(var(--semi-grey-6), 1);--semi-color-tertiary-active: rgba(var(--semi-grey-7), 1);--semi-color-tertiary-light-default: rgba(var(--semi-grey-5), .2);--semi-color-tertiary-light-hover: rgba(var(--semi-grey-5), .3);--semi-color-tertiary-light-active: rgba(var(--semi-grey-5), .4);--semi-color-default: rgba(var(--semi-grey-0), 1);--semi-color-default-hover: rgba(var(--semi-grey-1), 1);--semi-color-default-active: rgba(var(--semi-grey-2), 1);--semi-color-info: rgba(var(--semi-blue-5), 1);--semi-color-info-hover: rgba(var(--semi-blue-6), 1);--semi-color-info-active: rgba(var(--semi-blue-7), 1);--semi-color-info-disabled: rgba(var(--semi-blue-2), 1);--semi-color-info-light-default: rgba(var(--semi-blue-5), .2);--semi-color-info-light-hover: rgba(var(--semi-blue-5), .3);--semi-color-info-light-active: rgba(var(--semi-blue-5), .4);--semi-color-success: rgba(var(--semi-green-5), 1);--semi-color-success-hover: rgba(var(--semi-green-6), 1);--semi-color-success-active: rgba(var(--semi-green-7), 1);--semi-color-success-disabled: rgba(var(--semi-green-2), 1);--semi-color-success-light-default: rgba(var(--semi-green-5), .2);--semi-color-success-light-hover: rgba(var(--semi-green-5), .3);--semi-color-success-light-active: rgba(var(--semi-green-5), .4);--semi-color-danger: rgba(var(--semi-red-5), 1);--semi-color-danger-hover: rgba(var(--semi-red-6), 1);--semi-color-danger-active: rgba(var(--semi-red-7), 1);--semi-color-danger-light-default: rgba(var(--semi-red-5), .2);--semi-color-danger-light-hover: rgba(var(--semi-red-5), .3);--semi-color-danger-light-active: rgba(var(--semi-red-5), .4);--semi-color-warning: rgba(var(--semi-orange-5), 1);--semi-color-warning-hover: rgba(var(--semi-orange-6), 1);--semi-color-warning-active: rgba(var(--semi-orange-7), 1);--semi-color-warning-light-default: rgba(var(--semi-orange-5), .2);--semi-color-warning-light-hover: rgba(var(--semi-orange-5), .3);--semi-color-warning-light-active: rgba(var(--semi-orange-5), .4);--semi-color-focus-border: rgba(var(--semi-blue-5), 1);--semi-color-disabled-text: rgba(var(--semi-grey-9), .35);--semi-color-disabled-border: rgba(var(--semi-grey-1), 1);--semi-color-disabled-bg: rgba(var(--semi-grey-1), 1);--semi-color-disabled-fill: rgba(var(--semi-grey-8), .04);--semi-color-link: rgba(var(--semi-blue-5), 1);--semi-color-link-hover: rgba(var(--semi-blue-6), 1);--semi-color-link-active: rgba(var(--semi-blue-7), 1);--semi-color-link-visited: rgba(var(--semi-blue-5), 1);--semi-color-nav-bg: rgba(35, 36, 41, 1);--semi-shadow-elevated: inset 0 0 0 1px rgba(255, 255, 255, .1), 0 4px 14px rgba(0, 0, 0, .25);--semi-color-overlay-bg: rgba(22, 22, 26, .6);--semi-color-fill-0: rgba(var(--semi-white), .12);--semi-color-fill-1: rgba(var(--semi-white), .16);--semi-color-fill-2: rgba(var(--semi-white), .2);--semi-color-border: rgba(var(--semi-white), .08);--semi-color-shadow: rgba(var(--semi-black), .04);--semi-color-bg-0: rgba(22, 22, 26, 1);--semi-color-bg-1: rgba(35, 36, 41, 1);--semi-color-bg-2: rgba(53, 54, 60, 1);--semi-color-bg-3: rgba(67, 68, 74, 1);--semi-color-bg-4: rgba(79, 81, 89, 1);--semi-color-text-0: rgba(var(--semi-grey-9), 1);--semi-color-text-1: rgba(var(--semi-grey-9), .8);--semi-color-text-2: rgba(var(--semi-grey-9), .6);--semi-color-text-3: rgba(var(--semi-grey-9), .35);--semi-border-radius-extra-small: 3px;--semi-border-radius-small: 3px;--semi-border-radius-medium: 6px;--semi-border-radius-large: 12px;--semi-border-radius-circle: 50%;--semi-border-radius-full: 9999px;--semi-color-highlight-bg: rgba(var(--semi-yellow-2), 1);--semi-color-highlight: rgba(var(--semi-white), 1);--semi-color-data-0: rgba(94, 109, 194, 1);--semi-color-data-1: rgba(8, 104, 120, 1);--semi-color-data-2: rgba(250, 173, 63, 1);--semi-color-data-3: rgba(76, 43, 156, 1);--semi-color-data-4: rgba(16, 125, 248, 1);--semi-color-data-5: rgba(248, 202, 16, 1);--semi-color-data-6: rgba(195, 30, 87, 1);--semi-color-data-7: rgba(5, 119, 115, 1);--semi-color-data-8: rgba(154, 207, 13, 1);--semi-color-data-9: rgba(117, 29, 138, 1);--semi-color-data-10: rgba(16, 162, 180, 1);--semi-color-data-11: rgba(208, 110, 11, 1);--semi-color-data-12: rgba(113, 66, 197, 1);--semi-color-data-13: rgba(7, 100, 212, 1);--semi-color-data-14: rgba(251, 232, 110, 1);--semi-color-data-15: rgba(160, 19, 73, 1);--semi-color-data-16: rgba(11, 179, 167, 1);--semi-color-data-17: rgba(98, 138, 6, 1);--semi-color-data-18: rgba(162, 48, 179, 1);--semi-color-data-19: rgba(40, 51, 138, 1);--semi-color-ai-general: var(--semi-ai-general-5);--semi-color-ai-general-hover: var(--semi-ai-general-6);--semi-color-ai-general-active: var(--semi-ai-general-7);--semi-color-ai-general-disabled: var(--semi-ai-general-2);--semi-color-ai-purple: rgba(var(--semi-ai-purple-5));--semi-color-ai-purple-hover: rgba(var(--semi-ai-purple-6));--semi-color-ai-purple-active: rgba(var(--semi-ai-purple-7));--semi-color-ai-purple-disabled: rgba(var(--semi-ai-purple-2));--semi-color-ai-background-bottom: linear-gradient(201.15deg, rgba(255, 226, 138, .2) 6.58%, rgba(231, 45, 255, .2) 50.4%, rgba(0, 115, 255, .2) 94.23%);--semi-color-ai-background-bottom-hover: linear-gradient(201.15deg, rgba(255, 226, 138, .3) 6.58%, rgba(231, 45, 255, .3) 50.4%, rgba(0, 115, 255, .3) 94.23%);--semi-color-ai-background-bottom-active: linear-gradient(201.15deg, rgba(255, 226, 138, .4) 6.58%, rgba(231, 45, 255, .4) 50.4%, rgba(0, 115, 255, .4) 94.23%);--semi-color-ai-background-top: linear-gradient(201.15deg, rgba(83, 56, 255, .36) 6.58%, rgba(176, 48, 240, .216) 32.88%, rgba(154, 0, 174, .108) 59.17%, rgba(0, 0, 0, 0) 94.23%);--semi-color-ai-background-top-hover: linear-gradient(201.15deg, rgba(83, 56, 255, .54) 6.58%, rgba(176, 48, 240, .324) 32.88%, rgba(154, 0, 174, .162) 59.17%, rgba(0, 0, 0, 0) 94.23%);--semi-color-ai-background-top-hover: linear-gradient(201.15deg, rgba(83, 56, 255, .72) 6.58%, rgba(176, 48, 240, .432) 32.88%, rgba(154, 0, 174, .216) 59.17%, rgba(0, 0, 0, 0) 94.23%)}.semi-light-scrollbar::-webkit-scrollbar,.semi-light-scrollbar *::-webkit-scrollbar{width:8px;height:8px}.semi-light-scrollbar::-webkit-scrollbar-track,.semi-light-scrollbar *::-webkit-scrollbar-track{background:#0000}.semi-light-scrollbar::-webkit-scrollbar-corner,.semi-light-scrollbar *::-webkit-scrollbar-corner{background-color:#0000}.semi-light-scrollbar::-webkit-scrollbar-thumb,.semi-light-scrollbar *::-webkit-scrollbar-thumb{border-radius:6px;background:transparent;transition:all 1s}.semi-light-scrollbar:hover::-webkit-scrollbar-thumb,.semi-light-scrollbar *:hover::-webkit-scrollbar-thumb{background:var(--semi-color-fill-2)}.semi-light-scrollbar::-webkit-scrollbar-thumb:hover,.semi-light-scrollbar *::-webkit-scrollbar-thumb:hover{background:var(--semi-color-fill-1)}.semi-typography{color:var(--semi-color-text-0);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-typography.semi-typography-secondary{color:var(--semi-color-text-1)}.semi-typography.semi-typography-tertiary{color:var(--semi-color-text-2)}.semi-typography.semi-typography-quaternary{color:var(--semi-color-text-3)}.semi-typography.semi-typography-warning{color:var(--semi-color-warning)}.semi-typography.semi-typography-success{color:var(--semi-color-success)}.semi-typography.semi-typography-danger{color:var(--semi-color-danger)}.semi-typography.semi-typography-link{color:var(--semi-color-link);font-weight:600}.semi-typography.semi-typography-disabled{color:var(--semi-color-disabled-text);cursor:not-allowed;-webkit-user-select:none;user-select:none}.semi-typography.semi-typography-disabled.semi-typography-link{color:var(--semi-color-link)}.semi-typography-icon{margin-right:4px;vertical-align:middle;color:inherit}.semi-typography-small{font-size:12px;line-height:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400}.semi-typography-small.semi-typography-paragraph{font-weight:400}.semi-typography code{border:1px solid var(--semi-color-border);border-radius:2px;color:var(--semi-color-text-2);background-color:var(--semi-color-fill-1);padding:2px 4px}.semi-typography mark{background-color:var(--semi-color-primary-light-default)}.semi-typography u{text-decoration:underline;text-decoration-skip-ink:auto}.semi-typography del{text-decoration:line-through}.semi-typography strong{font-weight:600}.semi-typography a{display:inline;color:var(--semi-color-link);cursor:pointer;text-decoration:none}.semi-typography a:visited{color:var(--semi-color-link-visited)}.semi-typography a:hover{color:var(--semi-color-link-hover)}.semi-typography a:active{color:var(--semi-color-link-active)}.semi-typography a .semi-typography-link-underline:hover{border-bottom:1px solid var(--semi-color-link-hover);margin-bottom:-1px}.semi-typography a .semi-typography-link-underline:active{border-bottom:1px solid var(--semi-color-link-active);margin-bottom:-1px}.semi-typography-ellipsis-single-line{overflow:hidden}.semi-typography-ellipsis-multiple-line{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.semi-typography-ellipsis-multiple-line.semi-typography-ellipsis-multiple-line-text{display:-webkit-inline-box}.semi-typography-ellipsis-overflow-ellipsis{display:block;white-space:nowrap;text-overflow:ellipsis}.semi-typography-ellipsis-overflow-ellipsis.semi-typography-ellipsis-overflow-ellipsis-text{display:inline-block;max-width:100%;vertical-align:top}.semi-typography-ellipsis-expand{display:inline;margin-left:8px}.semi-typography-action-copy{display:inline-flex;vertical-align:middle;padding:0;margin-left:4px}.semi-typography a.semi-typography-action-copy-icon{display:inline-flex}.semi-typography-action-copied{display:inline-flex;padding:0;margin-left:4px;color:var(--semi-color-text-2)}.semi-typography-action-copied .semi-icon{vertical-align:middle;color:var(--semi-color-success)}.semi-typography-paragraph{margin:0}h1.semi-typography,.semi-typography-h1.semi-typography{font-size:32px;line-height:44px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin:0}h1.semi-typography.semi-typography-h1-weight-light,.semi-typography-h1.semi-typography.semi-typography-h1-weight-light{font-weight:200}h1.semi-typography.semi-typography-h1-weight-regular,.semi-typography-h1.semi-typography.semi-typography-h1-weight-regular{font-weight:400}h1.semi-typography.semi-typography-h1-weight-medium,.semi-typography-h1.semi-typography.semi-typography-h1-weight-medium{font-weight:500}h1.semi-typography.semi-typography-h1-weight-semibold,.semi-typography-h1.semi-typography.semi-typography-h1-weight-semibold{font-weight:600}h1.semi-typography.semi-typography-h1-weight-bold,.semi-typography-h1.semi-typography.semi-typography-h1-weight-bold{font-weight:700}h2.semi-typography,.semi-typography-h2.semi-typography{font-size:28px;line-height:40px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin:0}h2.semi-typography.semi-typography-h2-weight-light,.semi-typography-h2.semi-typography.semi-typography-h2-weight-light{font-weight:200}h2.semi-typography.semi-typography-h2-weight-regular,.semi-typography-h2.semi-typography.semi-typography-h2-weight-regular{font-weight:400}h2.semi-typography.semi-typography-h2-weight-medium,.semi-typography-h2.semi-typography.semi-typography-h2-weight-medium{font-weight:500}h2.semi-typography.semi-typography-h2-weight-semibold,.semi-typography-h2.semi-typography.semi-typography-h2-weight-semibold{font-weight:600}h2.semi-typography.semi-typography-h2-weight-bold,.semi-typography-h2.semi-typography.semi-typography-h2-weight-bold{font-weight:700}h3.semi-typography,.semi-typography-h3.semi-typography{font-size:24px;line-height:32px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin:0}h3.semi-typography.semi-typography-h3-weight-light,.semi-typography-h3.semi-typography.semi-typography-h3-weight-light{font-weight:200}h3.semi-typography.semi-typography-h3-weight-regular,.semi-typography-h3.semi-typography.semi-typography-h3-weight-regular{font-weight:400}h3.semi-typography.semi-typography-h3-weight-medium,.semi-typography-h3.semi-typography.semi-typography-h3-weight-medium{font-weight:500}h3.semi-typography.semi-typography-h3-weight-semibold,.semi-typography-h3.semi-typography.semi-typography-h3-weight-semibold{font-weight:600}h3.semi-typography.semi-typography-h3-weight-bold,.semi-typography-h3.semi-typography.semi-typography-h3-weight-bold{font-weight:700}h4.semi-typography,.semi-typography-h4.semi-typography{font-size:20px;line-height:28px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin:0}h4.semi-typography.semi-typography-h4-weight-light,.semi-typography-h4.semi-typography.semi-typography-h4-weight-light{font-weight:200}h4.semi-typography.semi-typography-h4-weight-regular,.semi-typography-h4.semi-typography.semi-typography-h4-weight-regular{font-weight:400}h4.semi-typography.semi-typography-h4-weight-medium,.semi-typography-h4.semi-typography.semi-typography-h4-weight-medium{font-weight:500}h4.semi-typography.semi-typography-h4-weight-semibold,.semi-typography-h4.semi-typography.semi-typography-h4-weight-semibold{font-weight:600}h4.semi-typography.semi-typography-h4-weight-bold,.semi-typography-h4.semi-typography.semi-typography-h4-weight-bold{font-weight:700}h5.semi-typography,.semi-typography-h5.semi-typography{font-size:18px;line-height:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin:0}h5.semi-typography.semi-typography-h5-weight-light,.semi-typography-h5.semi-typography.semi-typography-h5-weight-light{font-weight:200}h5.semi-typography.semi-typography-h5-weight-regular,.semi-typography-h5.semi-typography.semi-typography-h5-weight-regular{font-weight:400}h5.semi-typography.semi-typography-h5-weight-medium,.semi-typography-h5.semi-typography.semi-typography-h5-weight-medium{font-weight:500}h5.semi-typography.semi-typography-h5-weight-semibold,.semi-typography-h5.semi-typography.semi-typography-h5-weight-semibold{font-weight:600}h5.semi-typography.semi-typography-h5-weight-bold,.semi-typography-h5.semi-typography.semi-typography-h5-weight-bold{font-weight:700}h6.semi-typography,.semi-typography-h6.semi-typography{font-size:16px;line-height:22px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:600;margin:0}h6.semi-typography.semi-typography-h6-weight-light,.semi-typography-h6.semi-typography.semi-typography-h6-weight-light{font-weight:200}h6.semi-typography.semi-typography-h6-weight-regular,.semi-typography-h6.semi-typography.semi-typography-h6-weight-regular{font-weight:400}h6.semi-typography.semi-typography-h6-weight-medium,.semi-typography-h6.semi-typography.semi-typography-h6-weight-medium{font-weight:500}h6.semi-typography.semi-typography-h6-weight-semibold,.semi-typography-h6.semi-typography.semi-typography-h6-weight-semibold{font-weight:600}h6.semi-typography.semi-typography-h6-weight-bold,.semi-typography-h6.semi-typography.semi-typography-h6-weight-bold{font-weight:700}p.semi-typography-extended,.semi-typography-paragraph.semi-typography-extended{line-height:24px;font-weight:400}.semi-rtl .semi-typography,.semi-portal-rtl .semi-typography{direction:rtl}.semi-rtl .semi-typography-link a,.semi-rtl .semi-typography a,.semi-portal-rtl .semi-typography-link a,.semi-portal-rtl .semi-typography a{display:inline-block}.semi-rtl .semi-typography-icon,.semi-portal-rtl .semi-typography-icon{margin-right:auto;margin-left:4px}.semi-rtl .semi-typography-ellipsis-expand,.semi-portal-rtl .semi-typography-ellipsis-expand{margin-left:auto}.semi-rtl .semi-typography-action-copy,.semi-portal-rtl .semi-typography-action-copy,.semi-rtl .semi-typography-action-copied,.semi-portal-rtl .semi-typography-action-copied{margin-left:auto;margin-right:4px}@keyframes semi-tooltip-zoomIn{0%{opacity:0;transform:scale(.8)}50%{opacity:1}}@keyframes semi-tooltip-bounceIn{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.01)}to{opacity:1;transform:scale(1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}}@keyframes semi-tooltip-zoomOut{0%{opacity:1}60%{opacity:0;transform:scale(.8)}to{opacity:0}}.semi-tooltip-wrapper{position:relative;background-color:rgba(var(--semi-grey-7),1);-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--semi-color-bg-0);border-radius:var(--semi-border-radius-medium);padding:8px 12px;left:0;top:0;word-wrap:break-word;overflow-wrap:break-word;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;opacity:0;max-width:240px}.semi-tooltip-wrapper-show{opacity:1}.semi-tooltip-content{min-width:0}.semi-tooltip-trigger{display:inline-block;width:auto;height:auto}.semi-tooltip-with-arrow{display:flex;align-items:center;justify-content:center;box-sizing:border-box}.semi-tooltip-animation-show{animation:semi-tooltip-zoomIn .1s cubic-bezier(.215,.61,.355,1);animation-fill-mode:forwards}.semi-tooltip-animation-hide{animation:semi-tooltip-zoomOut .1s cubic-bezier(.215,.61,.355,1);animation-fill-mode:forwards}.semi-tooltip-wrapper .semi-tooltip-icon-arrow{height:7px;width:24px;position:absolute;color:rgba(var(--semi-grey-7),1)}.semi-tooltip-wrapper[x-placement=top] .semi-tooltip-icon-arrow{left:var(--semi-tooltip-arrow-offset-x, 50%);transform:translate(-50%);bottom:-6px}.semi-tooltip-wrapper[x-placement=top].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=top] .semi-tooltip-with-arrow{min-width:36px}.semi-tooltip-wrapper[x-placement=topLeft] .semi-tooltip-icon-arrow{bottom:-6px;left:6px}.semi-tooltip-wrapper[x-placement=topLeft].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=topLeft] .semi-tooltip-with-arrow{min-width:36px}.semi-tooltip-wrapper[x-placement=topRight] .semi-tooltip-icon-arrow{bottom:-6px;right:6px}.semi-tooltip-wrapper[x-placement=topRight].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=topRight] .semi-tooltip-with-arrow{min-width:36px}.semi-tooltip-wrapper[x-placement=leftTop] .semi-tooltip-icon-arrow{width:7px;height:24px;right:-6px;top:5px}.semi-tooltip-wrapper[x-placement=leftTop].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=leftTop] .semi-tooltip-with-arrow{min-height:34px}.semi-tooltip-wrapper[x-placement=left] .semi-tooltip-icon-arrow{width:7px;height:24px;right:-6px;top:var(--semi-tooltip-arrow-offset-y, 50%);transform:translateY(-50%)}.semi-tooltip-wrapper[x-placement=left].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=left] .semi-tooltip-with-arrow{min-height:34px}.semi-tooltip-wrapper[x-placement=leftBottom] .semi-tooltip-icon-arrow{width:7px;height:24px;right:-6px;bottom:5px}.semi-tooltip-wrapper[x-placement=leftBottom].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=leftBottom] .semi-tooltip-with-arrow{min-height:34px}.semi-tooltip-wrapper[x-placement=rightTop] .semi-tooltip-icon-arrow{width:7px;height:24px;left:-6px;top:5px;transform:rotate(180deg)}.semi-tooltip-wrapper[x-placement=rightTop].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=rightTop] .semi-tooltip-with-arrow{min-height:34px}.semi-tooltip-wrapper[x-placement=right] .semi-tooltip-icon-arrow{width:7px;height:24px;left:-6px;top:var(--semi-tooltip-arrow-offset-y, 50%);transform:translateY(-50%) rotate(180deg)}.semi-tooltip-wrapper[x-placement=right].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=right] .semi-tooltip-with-arrow{min-height:34px}.semi-tooltip-wrapper[x-placement=rightBottom] .semi-tooltip-icon-arrow{width:7px;height:24px;left:-6px;bottom:5px;transform:rotate(180deg)}.semi-tooltip-wrapper[x-placement=rightBottom].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=rightBottom] .semi-tooltip-with-arrow{min-height:34px}.semi-tooltip-wrapper[x-placement=bottomLeft] .semi-tooltip-icon-arrow{top:-6px;left:6px;transform:rotate(180deg)}.semi-tooltip-wrapper[x-placement=bottomLeft].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=bottomLeft] .semi-tooltip-with-arrow{min-width:36px}.semi-tooltip-wrapper[x-placement=bottom] .semi-tooltip-icon-arrow{top:-6px;left:var(--semi-tooltip-arrow-offset-x, 50%);transform:translate(-50%) rotate(180deg)}.semi-tooltip-wrapper[x-placement=bottom].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=bottom] .semi-tooltip-with-arrow{min-width:36px}.semi-tooltip-wrapper[x-placement=bottomRight] .semi-tooltip-icon-arrow{right:6px;top:-6px;transform:rotate(180deg)}.semi-tooltip-wrapper[x-placement=bottomRight].semi-tooltip-with-arrow,.semi-tooltip-wrapper[x-placement=bottomRight] .semi-tooltip-with-arrow{min-width:36px}.semi-rtl .semi-tooltip-wrapper,.semi-portal-rtl .semi-tooltip-wrapper{direction:rtl;padding-right:12px;padding-left:12px;left:auto;right:0}.semi-portal{position:absolute;top:0;left:0;width:100%;z-index:1}.semi-portal-inner{position:absolute;background-color:transparent;min-width:max-content}.semi-icon{display:inline-block;font-style:normal;line-height:0;text-align:center;text-transform:none;text-rendering:optimizeLegibility;fill:currentColor}.semi-icon-extra-small{font-size:8px}.semi-icon-small{font-size:12px}.semi-icon-default{font-size:16px}.semi-icon-large{font-size:20px}.semi-icon-extra-large{font-size:24px}.semi-icon-spinning{animation:.6s linear infinite semi-icon-animation-rotate;animation-fill-mode:forwards}@keyframes semi-icon-animation-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes semi-popover-zoomIn{0%{opacity:0;transform:scale(.8)}50%{opacity:1}}@keyframes semi-popover-zoomOut{0%{opacity:1}60%{opacity:0;transform:scale(.8)}to{opacity:0}}.semi-popover-wrapper{position:relative;background-color:var(--semi-color-bg-3);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--semi-shadow-elevated);z-index:1030;border-radius:var(--semi-border-radius-medium);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif;opacity:0}.semi-popover-wrapper-show{opacity:1}.semi-popover-trigger{display:inline-block;width:auto;height:auto}.semi-popover-title{padding:8px;border-bottom:1px solid var(--semi-color-border)}.semi-popover-confirm{position:absolute}.semi-popover-with-arrow{padding:12px;box-sizing:border-box}.semi-popover-animation-show{animation:semi-popover-zoomIn .1s cubic-bezier(.215,.61,.355,1);animation-fill-mode:forwards}.semi-popover-animation-hide{animation:semi-popover-zoomOut .1s cubic-bezier(.215,.61,.355,1);animation-fill-mode:forwards}.semi-popover-icon-arrow path:nth-child(1){fill:var(--semi-color-border)}.semi-popover-icon-arrow path:nth-child(2){fill:var(--semi-color-bg-3)}.semi-popover-wrapper .semi-popover-icon-arrow{height:8px;width:24px;position:absolute;color:unset}.semi-popover-wrapper[x-placement=top] .semi-popover-icon-arrow{left:var(--semi-tooltip-arrow-offset-x, 50%);transform:translate(-50%);bottom:-7px}.semi-popover-wrapper[x-placement=top].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=top] .semi-popover-with-arrow{min-width:36px}.semi-popover-wrapper[x-placement=topLeft] .semi-popover-icon-arrow{bottom:-7px;left:6px}.semi-popover-wrapper[x-placement=topLeft].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=topLeft] .semi-popover-with-arrow{min-width:36px}.semi-popover-wrapper[x-placement=topRight] .semi-popover-icon-arrow{bottom:-7px;right:6px}.semi-popover-wrapper[x-placement=topRight].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=topRight] .semi-popover-with-arrow{min-width:36px}.semi-popover-wrapper[x-placement=leftTop] .semi-popover-icon-arrow{width:8px;height:24px;right:-7px;top:6px}.semi-popover-wrapper[x-placement=leftTop].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=leftTop] .semi-popover-with-arrow{min-height:36px}.semi-popover-wrapper[x-placement=left] .semi-popover-icon-arrow{width:8px;height:24px;right:-7px;top:var(--semi-tooltip-arrow-offset-y, 50%);transform:translateY(-50%)}.semi-popover-wrapper[x-placement=left].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=left] .semi-popover-with-arrow{min-height:36px}.semi-popover-wrapper[x-placement=leftBottom] .semi-popover-icon-arrow{width:8px;height:24px;right:-7px;bottom:6px}.semi-popover-wrapper[x-placement=leftBottom].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=leftBottom] .semi-popover-with-arrow{min-height:36px}.semi-popover-wrapper[x-placement=rightTop] .semi-popover-icon-arrow{width:8px;height:24px;left:-7px;top:6px;transform:rotate(180deg)}.semi-popover-wrapper[x-placement=rightTop].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=rightTop] .semi-popover-with-arrow{min-height:36px}.semi-popover-wrapper[x-placement=right] .semi-popover-icon-arrow{width:8px;height:24px;left:-7px;top:var(--semi-tooltip-arrow-offset-y, 50%);transform:translateY(-50%) rotate(180deg)}.semi-popover-wrapper[x-placement=right].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=right] .semi-popover-with-arrow{min-height:36px}.semi-popover-wrapper[x-placement=rightBottom] .semi-popover-icon-arrow{width:8px;height:24px;left:-7px;bottom:6px;transform:rotate(180deg)}.semi-popover-wrapper[x-placement=rightBottom].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=rightBottom] .semi-popover-with-arrow{min-height:36px}.semi-popover-wrapper[x-placement=bottomLeft] .semi-popover-icon-arrow{top:-7px;left:6px;transform:rotate(180deg)}.semi-popover-wrapper[x-placement=bottomLeft].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=bottomLeft] .semi-popover-with-arrow{min-width:36px}.semi-popover-wrapper[x-placement=bottom] .semi-popover-icon-arrow{top:-7px;left:var(--semi-tooltip-arrow-offset-x, 50%);transform:translate(-50%) rotate(180deg)}.semi-popover-wrapper[x-placement=bottom].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=bottom] .semi-popover-with-arrow{min-width:36px}.semi-popover-wrapper[x-placement=bottomRight] .semi-popover-icon-arrow{right:6px;top:-7px;transform:rotate(180deg)}.semi-popover-wrapper[x-placement=bottomRight].semi-popover-with-arrow,.semi-popover-wrapper[x-placement=bottomRight] .semi-popover-with-arrow{min-width:36px}.semi-popover.semi-popover-rtl{direction:rtl}.semi-collapsible-transition{transition:height .25s cubic-bezier(.25,.1,.25,1) var(--semi-transition_delay-none),opacity .25s var(--semi-transition_function-easeIn) var(--semi-transition_delay-none)}.semi-collapse-item{border-bottom:1px solid var(--semi-color-border)}.semi-collapse-header{display:flex;align-items:center;justify-content:space-between;margin:4px 8px;padding:8px;border-radius:var(--semi-border-radius-small);outline:none;cursor:pointer;color:var(--semi-color-text-0);font-weight:600;font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-collapse-header-right{display:flex;align-items:center}.semi-collapse-header-right span{display:flex;padding-right:8px}.semi-collapse-header-right span:last-child{padding-right:0}.semi-collapse-header-icon{width:16px;height:16px;color:var(--semi-color-text-2)}.semi-collapse-header-iconLeft{justify-content:flex-start}.semi-collapse-header-iconLeft .semi-collapse-header-icon{margin-right:8px}.semi-collapse-header-iconDisabled{color:var(--semi-color-disabled-text)}.semi-collapse-header:hover{background-color:var(--semi-color-fill-0)}.semi-collapse-header:active{background-color:var(--semi-color-fill-1)}.semi-collapse-header-disabled{color:var(--semi-color-disabled-text)}.semi-collapse-header-disabled:hover{background-color:transparent}.semi-collapse-content{padding:4px 16px 8px;color:var(--semi-color-text-1);font-size:14px;line-height:20px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Helvetica Neue,Helvetica,Arial,sans-serif}.semi-collapse-content p{margin:0}.semi-rtl .semi-collapse,.semi-portal-rtl .semi-collapse{direction:rtl}.semi-rtl .semi-collapse-header-right span,.semi-portal-rtl .semi-collapse-header-right span{display:flex;padding-right:0;padding-left:8px}.semi-rtl .semi-collapse-header-right span:last-child,.semi-portal-rtl .semi-collapse-header-right span:last-child{padding-right:0;padding-left:0} diff --git a/frontends/desktop/dist/assets/tauri-compat-D_GD_wMe.js b/frontends/desktop/dist/assets/tauri-compat-D_GD_wMe.js deleted file mode 100644 index 18634597..00000000 --- a/frontends/desktop/dist/assets/tauri-compat-D_GD_wMe.js +++ /dev/null @@ -1,47 +0,0 @@ -function H_(s,i){for(var r=0;ro[l]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))o(l);new MutationObserver(l=>{for(const f of l)if(f.type==="childList")for(const d of f.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&o(d)}).observe(document,{childList:!0,subtree:!0});function r(l){const f={};return l.integrity&&(f.integrity=l.integrity),l.referrerPolicy&&(f.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?f.credentials="include":l.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function o(l){if(l.ep)return;l.ep=!0;const f=r(l);fetch(l.href,f)}})();var na=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function He(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var gl={exports:{}},Ri={},ml={exports:{}},me={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var og;function U_(){if(og)return me;og=1;var s=Symbol.for("react.element"),i=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),d=Symbol.for("react.context"),p=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),C=Symbol.iterator;function b(T){return T===null||typeof T!="object"?null:(T=C&&T[C]||T["@@iterator"],typeof T=="function"?T:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},A=Object.assign,k={};function R(T,j,ae){this.props=T,this.context=j,this.refs=k,this.updater=ae||x}R.prototype.isReactComponent={},R.prototype.setState=function(T,j){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,j,"setState")},R.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function z(){}z.prototype=R.prototype;function H(T,j,ae){this.props=T,this.context=j,this.refs=k,this.updater=ae||x}var W=H.prototype=new z;W.constructor=H,A(W,R.prototype),W.isPureReactComponent=!0;var $=Array.isArray,Y=Object.prototype.hasOwnProperty,M={current:null},N={key:!0,ref:!0,__self:!0,__source:!0};function U(T,j,ae){var se,fe={},ue=null,he=null;if(j!=null)for(se in j.ref!==void 0&&(he=j.ref),j.key!==void 0&&(ue=""+j.key),j)Y.call(j,se)&&!N.hasOwnProperty(se)&&(fe[se]=j[se]);var de=arguments.length-2;if(de===1)fe.children=ae;else if(1-1}return Gl=i,Gl}var Xl,$g;function pw(){if($g)return Xl;$g=1;var s=ga();function i(r,o){var l=this.__data__,f=s(l,r);return f<0?(++this.size,l.push([r,o])):l[f][1]=o,this}return Xl=i,Xl}var Ql,Bg;function ma(){if(Bg)return Ql;Bg=1;var s=uw(),i=cw(),r=fw(),o=dw(),l=pw();function f(d){var p=-1,g=d==null?0:d.length;for(this.clear();++p1?i-1:0),o=1;o0&&arguments[0]!==void 0?arguments[0]:"value";const r=this.getProps();return i in r}_isInProps(i){const r=this.getProps();return i in r}init(i){}destroy(){}log(i){for(var r=arguments.length,o=new Array(r>1?r-1:0),l=1;l(r.substr(0,5)==="data-"&&(i[r]=s[r]),i),{})}const{hasOwnProperty:xw}=Object.prototype;class $r extends Ee.Component{constructor(i){super(i),this.isControlled=r=>!!(r&&this.props&&typeof this.props=="object"&&xw.call(this.props,r)),this.setStateAsync=r=>new Promise(o=>{this.setState(r,o)}),this.cache={},this.foundation=null}componentDidMount(){this.foundation&&typeof this.foundation.init=="function"&&this.foundation.init()}componentWillUnmount(){this.foundation&&typeof this.foundation.destroy=="function"&&this.foundation.destroy(),this.cache={}}get adapter(){return{getContext:i=>{if(this.context&&i)return this.context[i]},getContexts:()=>this.context,getProp:i=>this.props[i],getProps:()=>this.props,getState:i=>this.state[i],getStates:()=>this.state,setState:(i,r)=>this.setState(Object.assign({},i),r),getCache:i=>i&&this.cache[i],getCaches:()=>this.cache,setCache:(i,r)=>i&&(this.cache[i]=r),stopPropagation:i=>{try{i.stopPropagation(),i.nativeEvent&&i.nativeEvent.stopImmediatePropagation()}catch{}},persistEvent:i=>{i&&i.persist&&typeof i.persist=="function"&&i.persist()}}}log(i){for(var r=arguments.length,o=new Array(r>1?r-1:0),l=1;l0&&arguments[0]!==void 0?arguments[0]:this.props;return bw(i)}}$r.propTypes={};$r.defaultProps={};var mu,lm;function Rw(){if(lm)return mu;lm=1;var s=Kt(),i=function(){return s.Date.now()};return mu=i,mu}var vu,um;function kw(){if(um)return vu;um=1;var s=/\s/;function i(r){for(var o=r.length;o--&&s.test(r.charAt(o)););return o}return vu=i,vu}var yu,cm;function Iw(){if(cm)return yu;cm=1;var s=kw(),i=/^\s+/;function r(o){return o&&o.slice(0,s(o)+1).replace(i,"")}return yu=r,yu}var _u,fm;function Aw(){if(fm)return _u;fm=1;var s=Iw(),i=Nt(),r=da(),o=NaN,l=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,d=/^0o[0-7]+$/i,p=parseInt;function g(m){if(typeof m=="number")return m;if(r(m))return o;if(i(m)){var _=typeof m.valueOf=="function"?m.valueOf():m;m=i(_)?_+"":_}if(typeof m!="string")return m===0?m:+m;m=s(m);var C=f.test(m);return C||d.test(m)?p(m.slice(2),C?2:8):l.test(m)?o:+m}return _u=g,_u}var wu,dm;function Nw(){if(dm)return wu;dm=1;var s=Nt(),i=Rw(),r=Aw(),o="Expected a function",l=Math.max,f=Math.min;function d(p,g,m){var _,C,b,x,A,k,R=0,z=!1,H=!1,W=!0;if(typeof p!="function")throw new TypeError(o);g=r(g)||0,s(m)&&(z=!!m.leading,H="maxWait"in m,b=H?l(r(m.maxWait)||0,g):b,W="trailing"in m?!!m.trailing:W);function $(ne){var pe=_,_e=C;return _=C=void 0,R=ne,x=p.apply(_e,pe),x}function Y(ne){return R=ne,A=setTimeout(U,g),z?$(ne):x}function M(ne){var pe=ne-k,_e=ne-R,Pe=g-pe;return H?f(Pe,b-_e):Pe}function N(ne){var pe=ne-k,_e=ne-R;return k===void 0||pe>=g||pe<0||H&&_e>=b}function U(){var ne=i();if(N(ne))return X(ne);A=setTimeout(U,M(ne))}function X(ne){return A=void 0,W&&_?$(ne):(_=C=void 0,x)}function ee(){A!==void 0&&clearTimeout(A),R=0,_=k=C=A=void 0}function V(){return A===void 0?x:X(i())}function ce(){var ne=i(),pe=N(ne);if(_=arguments,C=this,k=ne,pe){if(A===void 0)return Y(k);if(H)return clearTimeout(A),A=setTimeout(U,g),$(k)}return A===void 0&&(A=setTimeout(U,g)),x}return ce.cancel=ee,ce.flush=V,ce}return wu=d,wu}var Su,pm;function jw(){if(pm)return Su;pm=1;var s=Nw(),i=Nt(),r="Expected a function";function o(l,f,d){var p=!0,g=!0;if(typeof l!="function")throw new TypeError(r);return i(d)&&(p="leading"in d?!!d.leading:p,g="trailing"in d?!!d.trailing:g),s(l,f,{leading:p,maxWait:f,trailing:g})}return Su=o,Su}var Mw=jw();const hm=He(Mw);var Cu={exports:{}};/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/var gm;function Dw(){return gm||(gm=1,(function(s){(function(){var i={}.hasOwnProperty;function r(){for(var f="",d=0;d-1&&o%1==0&&o-1&&r%1==0&&r<=s}return Bu=i,Bu}var Hu,Lm;function Qw(){if(Lm)return Hu;Lm=1;var s=cr(),i=ld(),r=rn(),o="[object Arguments]",l="[object Array]",f="[object Boolean]",d="[object Date]",p="[object Error]",g="[object Function]",m="[object Map]",_="[object Number]",C="[object Object]",b="[object RegExp]",x="[object Set]",A="[object String]",k="[object WeakMap]",R="[object ArrayBuffer]",z="[object DataView]",H="[object Float32Array]",W="[object Float64Array]",$="[object Int8Array]",Y="[object Int16Array]",M="[object Int32Array]",N="[object Uint8Array]",U="[object Uint8ClampedArray]",X="[object Uint16Array]",ee="[object Uint32Array]",V={};V[H]=V[W]=V[$]=V[Y]=V[M]=V[N]=V[U]=V[X]=V[ee]=!0,V[o]=V[l]=V[R]=V[f]=V[z]=V[d]=V[p]=V[g]=V[m]=V[_]=V[C]=V[b]=V[x]=V[A]=V[k]=!1;function ce(ne){return r(ne)&&i(ne.length)&&!!V[s(ne)]}return Hu=ce,Hu}var Uu,Fm;function ud(){if(Fm)return Uu;Fm=1;function s(i){return function(r){return i(r)}}return Uu=s,Uu}var Ii={exports:{}};Ii.exports;var qm;function cd(){return qm||(qm=1,(function(s,i){var r=i1(),o=i&&!i.nodeType&&i,l=o&&!0&&s&&!s.nodeType&&s,f=l&&l.exports===o,d=f&&r.process,p=(function(){try{var g=l&&l.require&&l.require("util").types;return g||d&&d.binding&&d.binding("util")}catch{}})();s.exports=p})(Ii,Ii.exports)),Ii.exports}var Wu,zm;function wa(){if(zm)return Wu;zm=1;var s=Qw(),i=ud(),r=cd(),o=r&&r.isTypedArray,l=o?i(o):s;return Wu=l,Wu}var Vu,$m;function c1(){if($m)return Vu;$m=1;var s=Kw(),i=Hi(),r=Et(),o=Ui(),l=_a(),f=wa(),d=Object.prototype,p=d.hasOwnProperty;function g(m,_){var C=r(m),b=!C&&i(m),x=!C&&!b&&o(m),A=!C&&!b&&!x&&f(m),k=C||b||x||A,R=k?s(m.length,String):[],z=R.length;for(var H in m)(_||p.call(m,H))&&!(k&&(H=="length"||x&&(H=="offset"||H=="parent")||A&&(H=="buffer"||H=="byteLength"||H=="byteOffset")||l(H,z)))&&R.push(H);return R}return Vu=g,Vu}var Ku,Bm;function Sa(){if(Bm)return Ku;Bm=1;var s=Object.prototype;function i(r){var o=r&&r.constructor,l=typeof o=="function"&&o.prototype||s;return r===l}return Ku=i,Ku}var Gu,Hm;function f1(){if(Hm)return Gu;Hm=1;function s(i,r){return function(o){return i(r(o))}}return Gu=s,Gu}var Xu,Um;function Yw(){if(Um)return Xu;Um=1;var s=f1(),i=s(Object.keys,Object);return Xu=i,Xu}var Qu,Wm;function d1(){if(Wm)return Qu;Wm=1;var s=Sa(),i=Yw(),r=Object.prototype,o=r.hasOwnProperty;function l(f){if(!s(f))return i(f);var d=[];for(var p in Object(f))o.call(f,p)&&p!="constructor"&&d.push(p);return d}return Qu=l,Qu}var Yu,Vm;function Hr(){if(Vm)return Yu;Vm=1;var s=pa(),i=ld();function r(o){return o!=null&&i(o.length)&&!s(o)}return Yu=r,Yu}var Zu,Km;function Ca(){if(Km)return Zu;Km=1;var s=c1(),i=d1(),r=Hr();function o(l){return r(l)?s(l):i(l)}return Zu=o,Zu}var Ju,Gm;function Zw(){if(Gm)return Ju;Gm=1;var s=Br(),i=Ca();function r(o,l){return o&&s(l,i(l),o)}return Ju=r,Ju}var ec,Xm;function Jw(){if(Xm)return ec;Xm=1;function s(i){var r=[];if(i!=null)for(var o in Object(i))r.push(o);return r}return ec=s,ec}var tc,Qm;function eS(){if(Qm)return tc;Qm=1;var s=Nt(),i=Sa(),r=Jw(),o=Object.prototype,l=o.hasOwnProperty;function f(d){if(!s(d))return r(d);var p=i(d),g=[];for(var m in d)m=="constructor"&&(p||!l.call(d,m))||g.push(m);return g}return tc=f,tc}var nc,Ym;function Wi(){if(Ym)return nc;Ym=1;var s=c1(),i=eS(),r=Hr();function o(l){return r(l)?s(l,!0):i(l)}return nc=o,nc}var rc,Zm;function tS(){if(Zm)return rc;Zm=1;var s=Br(),i=Wi();function r(o,l){return o&&s(l,i(l),o)}return rc=r,rc}var Ai={exports:{}};Ai.exports;var Jm;function p1(){return Jm||(Jm=1,(function(s,i){var r=Kt(),o=i&&!i.nodeType&&i,l=o&&!0&&s&&!s.nodeType&&s,f=l&&l.exports===o,d=f?r.Buffer:void 0,p=d?d.allocUnsafe:void 0;function g(m,_){if(_)return m.slice();var C=m.length,b=p?p(C):new m.constructor(C);return m.copy(b),b}s.exports=g})(Ai,Ai.exports)),Ai.exports}var ic,ev;function h1(){if(ev)return ic;ev=1;function s(i,r){var o=-1,l=i.length;for(r||(r=Array(l));++of?0:f+r),o=o>f?f:o,o<0&&(o+=f),f=r>o?0:o-r>>>0,r>>>=0;for(var d=Array(f);++l0&&f(_)?l>1?r(_,l-1,f,d,p):s(p,_):d||(p[p.length]=_)}return p}return Hc=r,Hc}var Uc,zv;function PS(){if(zv)return Uc;zv=1;var s=OS();function i(r){var o=r==null?0:r.length;return o?s(r,1):[]}return Uc=i,Uc}var Wc,$v;function bS(){if($v)return Wc;$v=1;function s(i,r,o){switch(o.length){case 0:return i.call(r);case 1:return i.call(r,o[0]);case 2:return i.call(r,o[0],o[1]);case 3:return i.call(r,o[0],o[1],o[2])}return i.apply(r,o)}return Wc=s,Wc}var Vc,Bv;function O1(){if(Bv)return Vc;Bv=1;var s=bS(),i=Math.max;function r(o,l,f){return l=i(l===void 0?o.length-1:l,0),function(){for(var d=arguments,p=-1,g=i(d.length-l,0),m=Array(g);++p0){if(++f>=s)return arguments[0]}else f=0;return l.apply(void 0,arguments)}}return Qc=o,Qc}var Yc,Kv;function P1(){if(Kv)return Yc;Kv=1;var s=RS(),i=kS(),r=i(s);return Yc=r,Yc}var Zc,Gv;function b1(){if(Gv)return Zc;Gv=1;var s=PS(),i=O1(),r=P1();function o(l){return r(i(l,void 0,s),l+"")}return Zc=o,Zc}var Jc,Xv;function IS(){if(Xv)return Jc;Xv=1;var s=a1(),i=T1(),r=CS(),o=zr(),l=Br(),f=TS(),d=b1(),p=_1(),g=1,m=2,_=4,C=d(function(b,x){var A={};if(b==null)return A;var k=!1;x=s(x,function(z){return z=o(z,b),k||(k=z.length>1),z}),l(b,p(b),A),k&&(A=i(A,g|m|_,f));for(var R=x.length;R--;)r(A,x[R]);return A});return Jc=C,Jc}var AS=IS();const Ta=He(AS),Ea={PREFIX:`${qn}-typography`},st={WEIGHT:["light","regular","medium","semibold","bold","default"],TYPE:["primary","secondary","danger","warning","success","tertiary","quaternary"],SIZE:["normal","small","inherit"],SPACING:["normal","extended"],HEADING:[1,2,3,4,5,6],RULE:["text","numbers","bytes-decimal","bytes-binary","percentages","exponential"],TRUNCATE:["ceil","floor","round"]};var NS=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l1?f[p-1]:void 0,m=p>2?f[2]:void 0;for(g=o.length>3&&typeof g=="function"?(p--,g):void 0,m&&i(f[0],f[1],m)&&(g=p<3?void 0:g,p=1),l=Object(l);++dx))return!1;var k=C.get(d),R=C.get(p);if(k&&R)return k==p&&R==d;var z=-1,H=!0,W=g&l?new s:void 0;for(C.set(d,p),C.set(p,d);++zf===r))>-1;)o.splice(l,1)}}else ca(r)&&this._eventMap.delete(i);return this}emit(i){for(var r=arguments.length,o=new Array(r>1?r-1:0),l=1;ld(...o)),!0):!1}}function Ni(s){try{return s instanceof HTMLElement}catch{return typeof s=="object"&&s.nodeType===1&&typeof s.style=="object"&&typeof s.ownerDocument=="object"}}function OC(s){for(var i=arguments.length,r=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o(r[o]=s[o],r),{})}function bC(s){s.stopPropagation(),s.preventDefault()}function pO(s){return s.length===1&&s.match(/\S/)}function Pa(s,i){for(let r=0;r0&&Pa(s,s[0])}function gO(s){s.length>0&&Pa(s,s[s.length-1])}function mO(s,i){let r,o;s.length>0&&(i===s[0]?r=s[s.length-1]:(o=s.indexOf(i),r=s[o-1]),Pa(s,r))}function vO(s,i){let r,o;s.length>0&&(i===s[s.length-1]?r=s[0]:(o=s.indexOf(i),r=s[o+1]),Pa(s,r))}function yO(s,i,r,o){let l,f;return!s||!r||!o||o.length>1?-1:(o=o.toLowerCase(),l=s.indexOf(i)+1,l>=s.length&&(l=0),f=r.indexOf(o,l),f===-1&&(f=r.indexOf(o,0)),f>=0?f:-1)}function _O(s,i){if(!s)return null;for(;s.parentElement&&Te(s.parentElement,"attributes.role.value","")!==i;)s=s.parentElement;return s.parentElement}function wO(s,i){for(let r=0;r{this._adapter.removePortal()},this.setDisplayNone=(o,l)=>{this._adapter.setDisplayNone(o,l)},this.updateStateIfCursorOnTrigger=o=>{var l,f;if(!((l=o==null?void 0:o.matches)===null||l===void 0)&&l.call(o,":hover")){const d=this._adapter.getEventName(),p=this.getState("triggerEventSet");(f=p[d.mouseEnter])===null||f===void 0||f.call(p)}},this.onResize=()=>{this.getState("visible")&&this.calcPosition()},this.delayShow=()=>{const o=this.getProp("mouseEnterDelay");this.clearDelayTimer(),o>0?this._timer=setTimeout(()=>{this.show(),this.clearDelayTimer()},o):this.show()},this.show=()=>{if(this._initContainerPosition(),this._adapter.getAnimatingState())return;const o=this.getProp("content"),l=this.getProp("trigger"),f=this.getProp("clickTriggerToHide"),{visible:d,displayNone:p}=this.getStates();if(p&&this.setDisplayNone(!1),!d){if(this.clearDelayTimer(),this._adapter.on("portalInserted",()=>{this.calcPosition()}),l==="hover"){const g=()=>{var m;const _=this._adapter.getTriggerDOM();l&&!(!((m=_==null?void 0:_.matches)===null||m===void 0)&&m.call(_,":hover"))&&this.hide(),this._adapter.off("portalInserted",g)};this._adapter.on("portalInserted",g)}this._adapter.on("positionUpdated",()=>{this._togglePortalVisible(!0)}),this._adapter.insertPortal(o,{left:-9999,top:-9999}),l==="custom"&&this._adapter.registerClickOutsideHandler(()=>{}),(l==="click"||f||l==="contextMenu")&&this._adapter.registerClickOutsideHandler(this.hide),this._bindScrollEvent(),this._bindResizeEvent()}},this.calcPosition=function(o,l,f){let d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;o=(Fn(o)?r._adapter.getTriggerBounding():o)||Object.assign({},Mr),f=(Fn(f)?r._adapter.getPopupContainerRect():f)||Object.assign({},Mr),l=(Fn(l)?r._adapter.getWrapperBounding():l)||Object.assign({},Mr);let p=r.calcPosStyle({triggerRect:o,wrapperRect:l,containerRect:f}),g=r.getProp("position");if(r.getProp("autoAdjustOverflow")){const{position:m,isHeightOverFlow:_,isWidthOverFlow:C}=r.adjustPosIfNeed(g,p,o,l,f);(g!==m||_||C)&&(g=m,p=r.calcPosStyle({triggerRect:o,wrapperRect:l,containerRect:f,position:g,spacing:null,isOverFlow:[_,C]}))}return d&&r._mounted&&r._adapter.setPosition(Object.assign(Object.assign({},p),{position:g})),p},this.delayHide=()=>{const o=this.getProp("mouseLeaveDelay");this.clearDelayTimer(),o>0?this._timer=setTimeout(()=>{this.hide(),this.clearDelayTimer()},o):this.hide()},this.hide=()=>{this.clearDelayTimer(),this._togglePortalVisible(!1),this._adapter.off("portalInserted"),this._adapter.off("positionUpdated")},this.handleContainerKeydown=o=>{const{guardFocus:l,closeOnEsc:f}=this.getProps();switch(o&&o.key){case"Escape":f&&this._handleEscKeyDown(o);break;case"Tab":if(l){const d=this._adapter.getContainer(),p=this._adapter.getFocusableElements(d);p.length&&(o.shiftKey?this._handleContainerShiftTabKeyDown(p,o):this._handleContainerTabKeyDown(p,o))}break}},this._timer=null}init(){const{wrapperId:i}=this.getProps();this._mounted=!0,this._bindEvent(),this._shouldShow(),i||this._adapter.setId()}destroy(){this._mounted=!1,this.unBindEvent()}_bindEvent(){const i=this.getProp("trigger"),{triggerEventSet:r,portalEventSet:o}=this._generateEvent(i);this._bindTriggerEvent(r),this._bindPortalEvent(o),this._bindResizeEvent()}unBindEvent(){this._adapter.unregisterClickOutsideHandler(),this.unBindResizeEvent(),this.unBindScrollEvent(),clearTimeout(this._timer)}_bindTriggerEvent(i){this._adapter.registerTriggerEvent(i)}_bindPortalEvent(i){this._adapter.registerPortalEvent(i)}_bindResizeEvent(){this._adapter.registerResizeHandler(this.onResize)}unBindResizeEvent(){this._adapter.unregisterResizeHandler(this.onResize)}_adjustPos(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"reverse",l=arguments.length>3?arguments[3]:void 0;switch(o){case"reverse":return this._reversePos(i,r);case"expand":return this._expandPos(i,l);case"reduce":return this._reducePos(i);default:return this._reversePos(i,r)}}_reversePos(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1){if(ia.TOP.test(i))return i.replace("top","bottom").replace("Top","Bottom");if(ia.BOTTOM.test(i))return i.replace("bottom","top").replace("Bottom","Top")}else{if(ia.LEFT.test(i))return i.replace("left","right").replace("Left","Right");if(ia.RIGHT.test(i))return i.replace("right","left").replace("Right","Left")}return i}_expandPos(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",r=arguments.length>1?arguments[1]:void 0;return i.concat(r)}_reducePos(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";const r=["Top","Bottom","Left","Right"].find(o=>i.endsWith(o));return r?i.replace(r,""):i}clearDelayTimer(){this._timer&&(clearTimeout(this._timer),this._timer=null)}_generateEvent(i){const r=this._adapter.getEventName(),o={[r.keydown]:f=>{this._handleTriggerKeydown(f)}};let l={};switch(i){case"focus":o[r.focus]=()=>{this.getProp("condition")!==!1&&this.delayShow()},o[r.blur]=()=>{this.delayHide()},l=o;break;case"click":o[r.click]=()=>{this.getProp("condition")!==!1&&this.show()},l={};break;case"hover":o[r.mouseEnter]=()=>{this.setCache("isClickToHide",!1),this.getProp("condition")!==!1&&this.delayShow()},o[r.mouseLeave]=()=>{this.delayHide()},o[r.focus]=()=>{const{disableFocusListener:f}=this.getProps();this.getProp("condition")!==!1&&!f&&this.delayShow()},o[r.blur]=()=>{const{disableFocusListener:f}=this.getProps();!f&&this.delayHide()},l=Object.assign({},o),this.getProp("clickToHide")&&(l[r.click]=()=>{this.setCache("isClickToHide",!0),this.hide()},l[r.mouseEnter]=()=>{this.getCache("isClickToHide")||this.getProp("condition")!==!1&&this.delayShow()});break;case"custom":break;case"contextMenu":o[r.contextMenu]=f=>{this.getProp("condition")!==!1&&(f.preventDefault(),this.show())};break}return{triggerEventSet:o,portalEventSet:l}}_shouldShow(){this.getProp("visible")&&this.show()}_togglePortalVisible(i){const r=this.getState("visible"),o=this.getState("isInsert");(r!==i||o!==i)&&this._adapter.togglePortalVisible(i,()=>{i&&this._adapter.setInitialFocus(),this._adapter.notifyVisibleChange(i)})}_roundPixel(i){return typeof i=="number"?Math.round(i):i}calcTransformOrigin(i,r,o,l){if(i&&r&&o!=null&&l!=null){if(this.getProp("transformFromCenter")){if(["topLeft","bottomLeft"].includes(i))return`${this._roundPixel(r.width/2)}px ${-l*100}%`;if(["topRight","bottomRight"].includes(i))return`calc(100% - ${this._roundPixel(r.width/2)}px) ${-l*100}%`;if(["leftTop","rightTop"].includes(i))return`${-o*100}% ${this._roundPixel(r.height/2)}px`;if(["leftBottom","rightBottom"].includes(i))return`${-o*100}% calc(100% - ${this._roundPixel(r.height/2)}px)`}return`${-o*100}% ${-l*100}%`}return null}calcPosStyle(i){var r;const{spacing:o,isOverFlow:l}=i,{innerWidth:f}=window,d=(Fn(i.triggerRect)?i.triggerRect:this._adapter.getTriggerBounding())||Object.assign({},Mr),p=(Fn(i.containerRect)?i.containerRect:this._adapter.getPopupContainerRect())||Object.assign({},Mr),g=(Fn(i.wrapperRect)?i.wrapperRect:this._adapter.getWrapperBounding())||Object.assign({},Mr),m=i.position!=null?i.position:this.getProp("position"),_=o??this.getProp("spacing"),{arrowPointAtCenter:C,showArrow:b,arrowBounding:x}=this.getProps(),A=b&&C;let k=_,R=0;if(typeof _!="number"){const Me=m.includes("top")||m.includes("bottom");k=Me?_.y:_.x,R=Me?_.x:_.y}const z=Te(x,"width",24),H=Te(x,"width",24),W=Te(x,"offsetY",0),$=6,Y=6;let M,N,U=0,X=0;const ee=d.left+d.width/2,V=d.top+d.height/2,ce=$+z/2,ne=Y+H/2,pe=g.height-p.height,_e=g.width-p.width,Pe=pe>0?pe:0,we=_e>0?_e:0,F=l&&l[0],K=l&&l[1],G=ee-p.leftf,ae=Math.abs((g==null?void 0:g.width)-((r=this._adapter.getContainer())===null||r===void 0?void 0:r.clientWidth))>1;switch(ae&&(k=k*g.width/this._adapter.getContainer().clientWidth),m){case"top":M=K?G?p.left+g.width/2:p.right-g.width/2+we:ee+R,N=F?p.top:d.top-k,U=-.5,X=F?0:-1;break;case"topLeft":M=K?j?p.left:p.right-g.width:A?ee-ce+R:d.left+R,N=F?p.top:d.top-k,X=F?0:-1;break;case"topRight":M=K?p.right+we:A?ee+ce+R:d.right+R,N=F?p.top:d.top-k,X=F?0:-1,U=-1;break;case"left":M=K?p.left:d.left-k,N=F?T?p.top+g.height/2:p.bottom-g.height/2+Pe:V+R,U=K?0:-1,X=-.5;break;case"leftTop":M=K?p.left:d.left-k,N=F?p.top:A?V-ne+R:d.top+R,U=K?0:-1;break;case"leftBottom":M=K?p.left:d.left-k,N=F?p.bottom:A?V+ne+R:d.bottom+R,U=K?0:-1,X=-1;break;case"bottom":M=K?G?p.left+g.width/2:p.right-g.width/2+we:ee+R,N=F?p.bottom:d.top+d.height+k,U=-.5,X=F?-1:0;break;case"bottomLeft":M=K?j?p.left:p.right-g.width:A?ee-ce+R:d.left+R,N=F?p.bottom:d.top+d.height+k,X=F?-1:0;break;case"bottomRight":M=K?p.right+we:A?ee+ce+R:d.right+R,N=F?p.bottom:d.top+d.height+k,U=-1,X=F?-1:0;break;case"right":M=K?p.right:d.right+k,N=F?T?p.top+g.height/2:p.bottom-g.height/2+Pe:V+R,U=K?-1:0,X=-.5;break;case"rightTop":M=K?p.right:d.right+k,N=F?p.top:A?V-ne+R:d.top+R,U=K?-1:0;break;case"rightBottom":M=K?p.right:d.right+k,N=F?p.bottom:A?V+ne+R:d.bottom+R,U=K?-1:0,X=-1;break;case"leftTopOver":M=K?p.left:d.left-k,N=F?p.top:d.top-k;break;case"rightTopOver":M=K?p.right:d.right+k,N=F?p.top:d.top-k,U=-1;break;case"leftBottomOver":M=K?p.left:d.left-k,N=F?p.bottom:d.bottom+k,X=-1;break;case"rightBottomOver":M=K?p.right:d.right+k,N=F?p.bottom:d.bottom+k,U=-1,X=-1;break}const se=this.calcTransformOrigin(m,d,U,X),fe=this._adapter.containerIsBody();if(M=M-p.left,N=N-p.top,ae&&(M/=g.width/this._adapter.getContainer().clientWidth),ae&&(N/=g.height/this._adapter.getContainer().clientHeight),fe&&!this._adapter.containerIsRelativeOrAbsolute()){const Me=this._adapter.getDocumentElementBounding();M+=p.left-Me.left,N+=p.top-Me.top}M=fe?M:M+p.scrollLeft,N=fe?N:N+p.scrollTop;const ue=d.height;if(this.getProp("showArrow")&&!C&&ue<=(H/2+W)*2){const Me=ue/2-(W+H/2);(m.includes("Top")||m.includes("Bottom"))&&!m.includes("Over")&&(N=m.includes("Top")?N+Me:N-Me)}let he,de;if(b&&["top","bottom","left","right"].includes(m))if(C){if((m==="top"||m==="bottom")&&g.width>0){const Je=(ee-M)/g.width+.5,ft=(z/2+$)/g.width,jt=1-ft,ve=Math.max(ft,Math.min(jt,Je));Math.abs(ve-.5)>.01&&(he=`${ve*100}%`)}if((m==="left"||m==="right")&&g.height>0){const Je=(V-N)/g.height+.5,ft=(H/2+Y)/g.height,jt=1-ft,ve=Math.max(ft,Math.min(jt,Je));Math.abs(ve-.5)>.01&&(de=`${ve*100}%`)}}else{if((m==="top"||m==="bottom")&&g.width>0){const Je=$+z/2;G?he=`${Je/g.width*100}%`:he=`${(g.width-Je)/g.width*100}%`}if((m==="left"||m==="right")&&g.height>0){const Je=Y+H/2;T?de=`${Je/g.height*100}%`:de=`${(g.height-Je)/g.height*100}%`}}const ge={left:this._roundPixel(M),top:this._roundPixel(N)};he&&(ge["--semi-tooltip-arrow-offset-x"]=he),de&&(ge["--semi-tooltip-arrow-offset-y"]=de);let be="";return U!=null&&(be+=`translateX(${U*100}%) `,Object.defineProperty(ge,"translateX",{enumerable:!1,value:U})),X!=null&&(be+=`translateY(${X*100}%) `,Object.defineProperty(ge,"translateY",{enumerable:!1,value:X})),se!=null&&(ge.transformOrigin=se),be&&(ge.transform=be),ge}isLR(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";return i.includes("left")||i.includes("right")}isTB(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";return i.includes("top")||i.includes("bottom")}isReverse(i,r,o){return io}isOverFlow(i,r,o){return i=o||r>=o}getReverse(i,r,o,l){return i&&l||o}adjustPosIfNeed(i,r,o,l,f){const{innerWidth:d,innerHeight:p}=window,{margin:g}=this.getProps(),m=typeof g=="number"?g:g.marginLeft,_=typeof g=="number"?g:g.marginTop,C=typeof g=="number"?g:g.marginRight,b=typeof g=="number"?g:g.marginBottom;let x=!1,A=!1;const k=this.getProp("spacing");let R=k,z=0;if(typeof k!="number"){const H=i.includes("top")||i.includes("bottom");R=H?k.y:k.x,z=H?k.x:k.y}if(l.width>0&&l.height>0){const H=o.left,W=o.right,$=o.top,Y=o.bottom,M=d-H,N=p-$,U=d-W,X=p-Y,ee=l.width>o.width,V=l.height>o.height,ce=$-_l.height+R,ne=H-ml.width+R,pe=X-bl.height+R,_e=U-Cl.width+R;N-bl.height+R,Y-_l.height+R;const Pe=Nl.height+z,we=Yl.height+z,F=Ml.width+z,K=Wl.width+z,G=Nl.height+R,T=Yl.height+R,j=Ml.width,ae=Wl.width,se=$-f.top,fe=H-f.left,ue=se+o.height,he=fe+o.width,de=f.bottom-Y,ge=f.right-W,be=de+o.height,Me=ge+o.width,Je=this.isReverse(se-_,de-b,l.height+R),ft=this.isReverse(fe-m,ge-C,l.width+R),jt=this.isReverse(de-b,se-_,l.height+R),ve=this.isReverse(ge-C,fe-m,l.width+R);this.isReverse(be-b,ue-_,l.height+R),this.isReverse(ue-_,be-b,l.height+R);const on=this.isReverse(be,ue,l.height+z),ye=this.isReverse(ue,be,l.height+z),Mt=this.isReverse(Me,he,l.width+z),Ot=this.isReverse(he,Me,l.width+z),et=o.height/2,$e=o.width/2,tt=this.isOverFlow($-_,X-b,l.height+R),Fe=this.isOverFlow(H-m,U-C,l.width+R),Dt=this.isOverFlow(Y-_,N-b,l.height+R),Lt=this.isOverFlow(W-m,M-C,l.width+R),$n=this.isHalfOverFlow(Y-et,N-et,(l.height+z)/2),an=this.isHalfOverFlow(W-$e,M-$e,(l.width+z)/2),nt=this.isHalfAllEnough(Y-et,N-et,(l.height+z)/2),Gt=this.isHalfAllEnough(W-$e,M-$e,(l.width+z)/2),Pt=this.isOverFlow(se-_,de-b,l.height+R),Ft=this.isOverFlow(fe-m,ge-C,l.width+R),mn=this.isOverFlow(ue-_,be-b,l.height+R),lt=this.isOverFlow(he-m,Me-C,l.width+R),yt=this.isHalfOverFlow(ue-et,be-et,(l.height+z)/2),Ki=this.isHalfOverFlow(he-$e,Me-$e,(l.width+z)/2),vn=this.isHalfAllEnough(ue-et,be-et,(l.height+z)/2),yn=this.isHalfAllEnough(he-$e,Me-$e,(l.width+z)/2),Bn=this.getReverse(tt,Pt,ce,Je),Hn=this.getReverse(Fe,Ft,ne,ft),Un=this.getReverse(tt,Pt,pe,jt),Xt=this.getReverse(Fe,Ft,_e,ve),_t=this.getReverse(Dt,mn,Pe,on),Wn=this.getReverse(Dt,mn,we,ye),sn=this.getReverse(Lt,lt,F,Mt),Vn=this.getReverse(Lt,lt,K,Ot),Wr=$n&&yt,Vr=an&&Ki;switch(i){case"top":Bn&&(i=this._adjustPos(i,!0)),Vr&&(sn||Vn)&&(i=this._adjustPos(i,!0,"expand",sn?"Right":"Left"));break;case"topLeft":Bn&&(i=this._adjustPos(i,!0)),sn&&ee&&(i=this._adjustPos(i)),A&&(Gt||yn)&&(i=this._adjustPos(i,!0,"reduce"));break;case"topRight":Bn&&(i=this._adjustPos(i,!0)),Vn&&ee&&(i=this._adjustPos(i)),A&&(Gt||yn)&&(i=this._adjustPos(i,!0,"reduce"));break;case"left":Hn&&(i=this._adjustPos(i)),Wr&&(_t||Wn)&&(i=this._adjustPos(i,!1,"expand",_t?"Bottom":"Top"));break;case"leftTop":Hn&&(i=this._adjustPos(i)),_t&&V&&(i=this._adjustPos(i,!0)),x&&(nt||vn)&&(i=this._adjustPos(i,!1,"reduce"));break;case"leftBottom":Hn&&(i=this._adjustPos(i)),Wn&&V&&(i=this._adjustPos(i,!0)),x&&(nt||vn)&&(i=this._adjustPos(i,!1,"reduce"));break;case"bottom":Un&&(i=this._adjustPos(i,!0)),Vr&&(sn||Vn)&&(i=this._adjustPos(i,!0,"expand",sn?"Right":"Left"));break;case"bottomLeft":Un&&(i=this._adjustPos(i,!0)),sn&&ee&&(i=this._adjustPos(i)),A&&(Gt||yn)&&(i=this._adjustPos(i,!0,"reduce"));break;case"bottomRight":Un&&(i=this._adjustPos(i,!0)),Vn&&ee&&(i=this._adjustPos(i)),A&&(Gt||yn)&&(i=this._adjustPos(i,!0,"reduce"));break;case"right":Xt&&(i=this._adjustPos(i)),Wr&&(_t||Wn)&&(i=this._adjustPos(i,!1,"expand",_t?"Bottom":"Top"));break;case"rightTop":Xt&&(i=this._adjustPos(i)),_t&&V&&(i=this._adjustPos(i,!0)),x&&(nt||vn)&&(i=this._adjustPos(i,!1,"reduce"));break;case"rightBottom":Xt&&(i=this._adjustPos(i)),Wn&&V&&(i=this._adjustPos(i,!0)),x&&(nt||vn)&&(i=this._adjustPos(i,!1,"reduce"));break;case"leftTopOver":G&&(i=this._adjustPos(i,!0)),j&&(i=this._adjustPos(i));break;case"leftBottomOver":T&&(i=this._adjustPos(i,!0)),j&&(i=this._adjustPos(i));break;case"rightTopOver":G&&(i=this._adjustPos(i,!0)),ae&&(i=this._adjustPos(i));break;case"rightBottomOver":T&&(i=this._adjustPos(i,!0)),ae&&(i=this._adjustPos(i));break}this.isTB(i)&&(x=tt&&Pt,i==="top"||i==="bottom"?A=an&&Ki||W<0||U<0:A=Lt&<||W<0||U<0),this.isLR(i)&&(A=Fe&&Ft,i==="left"||i==="right"?x=$n&&yt||$<0||N<0:x=Dt&&mn||$<0||N<0)}return{position:i,isHeightOverFlow:x,isWidthOverFlow:A}}_bindScrollEvent(){this._adapter.registerScrollHandler(()=>this.calcPosition())}unBindScrollEvent(){this._adapter.unregisterScrollHandler()}_initContainerPosition(){this._adapter.getContainerPosition()||!this._adapter.containerIsBody()||this._adapter.updateContainerPosition()}_handleTriggerKeydown(i){const{closeOnEsc:r,disableArrowKeyDown:o}=this.getProps(),l=this._adapter.getContainer(),f=this._adapter.getFocusableElements(l),d=f.length;switch(i&&i.key){case"Escape":bC(i),r&&this._handleEscKeyDown(i);break;case"ArrowUp":!o&&d&&this._handleTriggerArrowUpKeydown(f,i);break;case"ArrowDown":!o&&d&&this._handleTriggerArrowDownKeydown(f,i);break}}focusTrigger(){const{trigger:i,returnFocusOnClose:r,preventScroll:o}=this.getProps();if(r&&i!=="custom"){const l=this._adapter.getTriggerNode();l&&"focus"in l&&l.focus({preventScroll:o})}}_handleEscKeyDown(i){const{trigger:r}=this.getProps();r!=="custom"&&(this.focusTrigger(),this.hide()),this._adapter.notifyEscKeydown(i)}_handleContainerTabKeyDown(i,r){const{preventScroll:o}=this.getProps(),l=this._adapter.getActiveElement();i[i.length-1]===l&&(i[0].focus({preventScroll:o}),r.preventDefault())}_handleContainerShiftTabKeyDown(i,r){const{preventScroll:o}=this.getProps(),l=this._adapter.getActiveElement();i[0]===l&&(i[i.length-1].focus({preventScroll:o}),r.preventDefault())}_handleTriggerArrowDownKeydown(i,r){const{preventScroll:o}=this.getProps();i[0].focus({preventScroll:o}),r.preventDefault()}_handleTriggerArrowUpKeydown(i,r){const{preventScroll:o}=this.getProps();i[i.length-1].focus({preventScroll:o}),r.preventDefault()}};const RC={PREFIX:`${qn}-tooltip`},Mi={POSITION_SET:["top","topLeft","topRight","left","leftTop","leftBottom","right","rightTop","rightBottom","bottom","bottomLeft","bottomRight","leftTopOver","rightTopOver","leftBottomOver","rightBottomOver"],TRIGGER_SET:["hover","focus","click","custom","contextMenu"],STATUS_DISABLED:"disabled",STATUS_LOADING:"loading"},ar={ARROW_BOUNDING:{offsetX:0,offsetY:2,width:24,height:7},DEFAULT_Z_INDEX:1060,MOUSE_ENTER_DELAY:50,MOUSE_LEAVE_DELAY:50,SPACING:8,MARGIN:0};function kC(s){return`${s}-${new Date().getTime()}-${Math.random()}`}function CO(){var s,i;try{return(i=(s=crypto==null?void 0:crypto.randomUUID)===null||s===void 0?void 0:s.call(crypto))!==null&&i!==void 0?i:String(9987e3+-1e11).replace(/[018]/g,r=>(Number(r)^crypto.getRandomValues(new Uint8Array(1))[0]&15>>Number(r)/4).toString(16))}catch{return kC("semi")}}function vd(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{prefix:i="",length:r=7}=s,o="0123456789abcdefghijklmnopqrstuvwxyz",l=o.length;let f="";for(let d=0;d{if(typeof i=="function")return i(r);if(typeof r=="function"||I.isValidElement(r)||Object.prototype.toString.call(r)==="[object Error]")return r;if(Array.isArray(r)&&r.length===0){const o=Object.keys(r);if(o.length){const l=[];o.forEach(f=>{NC(l,f,r[f])});try{Fi(Te(process,"env.NODE_ENV")!=="production",`[Semi] You may use an out-of-bounds array. In some cases, your program may not behave as expected. - The maximum length of an array is 4294967295. - Please check whether the array subscript in your data exceeds the maximum value of the JS array subscript`)}catch{}return l}else return}})}const FC=s=>I.isValidElement(s)&&Te(s.type,"elementType")==="Icon";function qC(){return document?document.activeElement:null}function zC(s){if(!Ni(s))return[];const r=["input:not([disabled]):not([tabindex='-1'])","textarea:not([disabled]):not([tabindex='-1'])","button:not([disabled]):not([tabindex='-1'])","a[href]:not([tabindex='-1'])","select:not([disabled]):not([tabindex='-1'])","area[href]:not([tabindex='-1'])","iframe:not([tabindex='-1'])","object:not([tabindex='-1'])","*[tabindex]:not([tabindex='-1'])","*[contenteditable]:not([tabindex='-1'])"].join(",");return Array.from(s.querySelectorAll(r))}function yd(s,i){return jy(this,void 0,void 0,function*(){if(i===0){yield s();return}else{yield new Promise(r=>{setTimeout(()=>jy(this,void 0,void 0,function*(){yield yd(s,i-1),r()}),0)});return}})}function EO(){return globalThis&&Object.prototype.toString.call(globalThis)==="[object Window]"?window.innerWidth-document.documentElement.clientWidth:0}function ba(s){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=()=>{var o,l;return((l=(o=sr==null?void 0:sr.config)===null||o===void 0?void 0:o.overrideDefaultProps)===null||l===void 0?void 0:l[s])||{}};return new Proxy(Object.assign({},i),{get(o,l,f){const d=r();return l in d?d[l]:Reflect.get(o,l,f)},set(o,l,f,d){return Reflect.set(o,l,f,d)},ownKeys(){const o=r();return Array.from(new Set([...Reflect.ownKeys(i),...Object.keys(o)]))},getOwnPropertyDescriptor(o,l){const f=r();return l in f?Reflect.getOwnPropertyDescriptor(f,l):Reflect.getOwnPropertyDescriptor(o,l)}})}var qf={exports:{}},vt={},zf={exports:{}},$f={};/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var My;function $C(){return My||(My=1,(function(s){function i(F,K){var G=F.length;F.push(K);e:for(;0>>1,j=F[T];if(0>>1;Tl(fe,G))uel(he,fe)?(F[T]=he,F[ue]=G,T=ue):(F[T]=fe,F[se]=G,T=se);else if(uel(he,G))F[T]=he,F[ue]=G,T=ue;else break e}}return K}function l(F,K){var G=F.sortIndex-K.sortIndex;return G!==0?G:F.id-K.id}if(typeof performance=="object"&&typeof performance.now=="function"){var f=performance;s.unstable_now=function(){return f.now()}}else{var d=Date,p=d.now();s.unstable_now=function(){return d.now()-p}}var g=[],m=[],_=1,C=null,b=3,x=!1,A=!1,k=!1,R=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,H=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function W(F){for(var K=r(m);K!==null;){if(K.callback===null)o(m);else if(K.startTime<=F)o(m),K.sortIndex=K.expirationTime,i(g,K);else break;K=r(m)}}function $(F){if(k=!1,W(F),!A)if(r(g)!==null)A=!0,Pe(Y);else{var K=r(m);K!==null&&we($,K.startTime-F)}}function Y(F,K){A=!1,k&&(k=!1,z(U),U=-1),x=!0;var G=b;try{for(W(K),C=r(g);C!==null&&(!(C.expirationTime>K)||F&&!V());){var T=C.callback;if(typeof T=="function"){C.callback=null,b=C.priorityLevel;var j=T(C.expirationTime<=K);K=s.unstable_now(),typeof j=="function"?C.callback=j:C===r(g)&&o(g),W(K)}else o(g);C=r(g)}if(C!==null)var ae=!0;else{var se=r(m);se!==null&&we($,se.startTime-K),ae=!1}return ae}finally{C=null,b=G,x=!1}}var M=!1,N=null,U=-1,X=5,ee=-1;function V(){return!(s.unstable_now()-eeF||125T?(F.sortIndex=G,i(m,F),r(g)===null&&F===r(m)&&(k?(z(U),U=-1):k=!0,we($,G-T))):(F.sortIndex=j,i(g,F),A||x||(A=!0,Pe(Y))),F},s.unstable_shouldYield=V,s.unstable_wrapCallback=function(F){var K=b;return function(){var G=b;b=K;try{return F.apply(this,arguments)}finally{b=G}}}})($f)),$f}var Dy;function BC(){return Dy||(Dy=1,zf.exports=$C()),zf.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ly;function HC(){if(Ly)return vt;Ly=1;var s=td(),i=BC();function r(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,m=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,_={},C={};function b(e){return g.call(C,e)?!0:g.call(_,e)?!1:m.test(e)?C[e]=!0:(_[e]=!0,!1)}function x(e,t,n,a){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return a?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function A(e,t,n,a){if(t===null||typeof t>"u"||x(e,t,n,a))return!0;if(a)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function k(e,t,n,a,u,c,h){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=a,this.attributeNamespace=u,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=c,this.removeEmptyString=h}var R={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){R[e]=new k(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];R[t]=new k(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){R[e]=new k(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){R[e]=new k(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){R[e]=new k(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){R[e]=new k(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){R[e]=new k(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){R[e]=new k(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){R[e]=new k(e,5,!1,e.toLowerCase(),null,!1,!1)});var z=/[\-:]([a-z])/g;function H(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(z,H);R[t]=new k(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(z,H);R[t]=new k(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(z,H);R[t]=new k(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){R[e]=new k(e,1,!1,e.toLowerCase(),null,!1,!1)}),R.xlinkHref=new k("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){R[e]=new k(e,1,!1,e.toLowerCase(),null,!0,!0)});function W(e,t,n,a){var u=R.hasOwnProperty(t)?R[t]:null;(u!==null?u.type!==0:a||!(2y||u[h]!==c[y]){var w=` -`+u[h].replace(" at new "," at ");return e.displayName&&w.includes("")&&(w=w.replace("",e.displayName)),w}while(1<=h&&0<=y);break}}}finally{ae=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?j(e):""}function fe(e){switch(e.tag){case 5:return j(e.type);case 16:return j("Lazy");case 13:return j("Suspense");case 19:return j("SuspenseList");case 0:case 2:case 15:return e=se(e.type,!1),e;case 11:return e=se(e.type.render,!1),e;case 1:return e=se(e.type,!0),e;default:return""}}function ue(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case N:return"Fragment";case M:return"Portal";case X:return"Profiler";case U:return"StrictMode";case ne:return"Suspense";case pe:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case V:return(e.displayName||"Context")+".Consumer";case ee:return(e._context.displayName||"Context")+".Provider";case ce:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case _e:return t=e.displayName||null,t!==null?t:ue(e.type)||"Memo";case Pe:t=e._payload,e=e._init;try{return ue(e(t))}catch{}}return null}function he(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ue(t);case 8:return t===U?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function de(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ge(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function be(e){var t=ge(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var u=n.get,c=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return u.call(this)},set:function(h){a=""+h,c.call(this,h)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return a},setValue:function(h){a=""+h},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Me(e){e._valueTracker||(e._valueTracker=be(e))}function Je(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=ge(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function ft(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function jt(e,t){var n=t.checked;return G({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function ve(e,t){var n=t.defaultValue==null?"":t.defaultValue,a=t.checked!=null?t.checked:t.defaultChecked;n=de(t.value!=null?t.value:n),e._wrapperState={initialChecked:a,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function on(e,t){t=t.checked,t!=null&&W(e,"checked",t,!1)}function ye(e,t){on(e,t);var n=de(t.value),a=t.type;if(n!=null)a==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(a==="submit"||a==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Ot(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ot(e,t.type,de(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Mt(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var a=t.type;if(!(a!=="submit"&&a!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ot(e,t,n){(t!=="number"||ft(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var et=Array.isArray;function $e(e,t,n,a){if(e=e.options,t){t={};for(var u=0;u"+t.valueOf().toString()+"",t=nt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Pt(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ft={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mn=["Webkit","ms","Moz","O"];Object.keys(Ft).forEach(function(e){mn.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ft[t]=Ft[e]})});function lt(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ft.hasOwnProperty(e)&&Ft[e]?(""+t).trim():t+"px"}function yt(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var a=n.indexOf("--")===0,u=lt(n,t[n],a);n==="float"&&(n="cssFloat"),a?e.setProperty(n,u):e[n]=u}}var Ki=G({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vn(e,t){if(t){if(Ki[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(r(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(r(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(r(61))}if(t.style!=null&&typeof t.style!="object")throw Error(r(62))}}function yn(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Bn=null;function Hn(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Un=null,Xt=null,_t=null;function Wn(e){if(e=hi(e)){if(typeof Un!="function")throw Error(r(280));var t=e.stateNode;t&&(t=vo(t),Un(e.stateNode,e.type,t))}}function sn(e){Xt?_t?_t.push(e):_t=[e]:Xt=e}function Vn(){if(Xt){var e=Xt,t=_t;if(_t=Xt=null,Wn(e),t)for(e=0;e>>=0,e===0?32:31-(o0(e)/a0|0)|0}var Zi=64,Ji=4194304;function Qr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function eo(e,t){var n=e.pendingLanes;if(n===0)return 0;var a=0,u=e.suspendedLanes,c=e.pingedLanes,h=n&268435455;if(h!==0){var y=h&~u;y!==0?a=Qr(y):(c&=h,c!==0&&(a=Qr(c)))}else h=n&~u,h!==0?a=Qr(h):c!==0&&(a=Qr(c));if(a===0)return 0;if(t!==0&&t!==a&&(t&u)===0&&(u=a&-a,c=t&-t,u>=c||u===16&&(c&4194240)!==0))return t;if((a&4)!==0&&(a|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=a;0n;n++)t.push(e);return t}function Yr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-qt(t),e[t]=n}function c0(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var a=e.eventTimes;for(e=e.expirationTimes;0=oi),Zd=" ",Jd=!1;function ep(e,t){switch(e){case"keyup":return F0.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function tp(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gr=!1;function z0(e,t){switch(e){case"compositionend":return tp(t);case"keypress":return t.which!==32?null:(Jd=!0,Zd);case"textInput":return e=t.data,e===Zd&&Jd?null:e;default:return null}}function $0(e,t){if(gr)return e==="compositionend"||!Xa&&ep(e,t)?(e=Vd(),oo=Ha=Tn=null,gr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=lp(n)}}function cp(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?cp(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function fp(){for(var e=window,t=ft();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ft(e.document)}return t}function Za(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Q0(e){var t=fp(),n=e.focusedElem,a=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&cp(n.ownerDocument.documentElement,n)){if(a!==null&&Za(n)){if(t=a.start,e=a.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var u=n.textContent.length,c=Math.min(a.start,u);a=a.end===void 0?c:Math.min(a.end,u),!e.extend&&c>a&&(u=a,a=c,c=u),u=up(n,c);var h=up(n,a);u&&h&&(e.rangeCount!==1||e.anchorNode!==u.node||e.anchorOffset!==u.offset||e.focusNode!==h.node||e.focusOffset!==h.offset)&&(t=t.createRange(),t.setStart(u.node,u.offset),e.removeAllRanges(),c>a?(e.addRange(t),e.extend(h.node,h.offset)):(t.setEnd(h.node,h.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,mr=null,Ja=null,ui=null,es=!1;function dp(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;es||mr==null||mr!==ft(a)||(a=mr,"selectionStart"in a&&Za(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),ui&&li(ui,a)||(ui=a,a=ho(Ja,"onSelect"),0Sr||(e.current=ds[Sr],ds[Sr]=null,Sr--)}function xe(e,t){Sr++,ds[Sr]=e.current,e.current=t}var bn={},rt=Pn(bn),dt=Pn(!1),Xn=bn;function Cr(e,t){var n=e.type.contextTypes;if(!n)return bn;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===t)return a.__reactInternalMemoizedMaskedChildContext;var u={},c;for(c in n)u[c]=t[c];return a&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=u),u}function pt(e){return e=e.childContextTypes,e!=null}function yo(){ke(dt),ke(rt)}function bp(e,t,n){if(rt.current!==bn)throw Error(r(168));xe(rt,t),xe(dt,n)}function xp(e,t,n){var a=e.stateNode;if(t=t.childContextTypes,typeof a.getChildContext!="function")return n;a=a.getChildContext();for(var u in a)if(!(u in t))throw Error(r(108,he(e)||"Unknown",u));return G({},n,a)}function _o(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||bn,Xn=rt.current,xe(rt,e),xe(dt,dt.current),!0}function Rp(e,t,n){var a=e.stateNode;if(!a)throw Error(r(169));n?(e=xp(e,t,Xn),a.__reactInternalMemoizedMergedChildContext=e,ke(dt),ke(rt),xe(rt,e)):ke(dt),xe(dt,n)}var un=null,wo=!1,ps=!1;function kp(e){un===null?un=[e]:un.push(e)}function l_(e){wo=!0,kp(e)}function xn(){if(!ps&&un!==null){ps=!0;var e=0,t=Oe;try{var n=un;for(Oe=1;e>=h,u-=h,cn=1<<32-qt(t)+u|n<le?(Ge=oe,oe=null):Ge=oe.sibling;var Ce=D(E,oe,O[le],B);if(Ce===null){oe===null&&(oe=Ge);break}e&&oe&&Ce.alternate===null&&t(E,oe),S=c(Ce,S,le),ie===null?re=Ce:ie.sibling=Ce,ie=Ce,oe=Ge}if(le===O.length)return n(E,oe),Ie&&Yn(E,le),re;if(oe===null){for(;lele?(Ge=oe,oe=null):Ge=oe.sibling;var Ln=D(E,oe,Ce.value,B);if(Ln===null){oe===null&&(oe=Ge);break}e&&oe&&Ln.alternate===null&&t(E,oe),S=c(Ln,S,le),ie===null?re=Ln:ie.sibling=Ln,ie=Ln,oe=Ge}if(Ce.done)return n(E,oe),Ie&&Yn(E,le),re;if(oe===null){for(;!Ce.done;le++,Ce=O.next())Ce=q(E,Ce.value,B),Ce!==null&&(S=c(Ce,S,le),ie===null?re=Ce:ie.sibling=Ce,ie=Ce);return Ie&&Yn(E,le),re}for(oe=a(E,oe);!Ce.done;le++,Ce=O.next())Ce=Q(oe,E,le,Ce.value,B),Ce!==null&&(e&&Ce.alternate!==null&&oe.delete(Ce.key===null?le:Ce.key),S=c(Ce,S,le),ie===null?re=Ce:ie.sibling=Ce,ie=Ce);return e&&oe.forEach(function(B_){return t(E,B_)}),Ie&&Yn(E,le),re}function ze(E,S,O,B){if(typeof O=="object"&&O!==null&&O.type===N&&O.key===null&&(O=O.props.children),typeof O=="object"&&O!==null){switch(O.$$typeof){case Y:e:{for(var re=O.key,ie=S;ie!==null;){if(ie.key===re){if(re=O.type,re===N){if(ie.tag===7){n(E,ie.sibling),S=u(ie,O.props.children),S.return=E,E=S;break e}}else if(ie.elementType===re||typeof re=="object"&&re!==null&&re.$$typeof===Pe&&Dp(re)===ie.type){n(E,ie.sibling),S=u(ie,O.props),S.ref=gi(E,ie,O),S.return=E,E=S;break e}n(E,ie);break}else t(E,ie);ie=ie.sibling}O.type===N?(S=or(O.props.children,E.mode,B,O.key),S.return=E,E=S):(B=Go(O.type,O.key,O.props,null,E.mode,B),B.ref=gi(E,S,O),B.return=E,E=B)}return h(E);case M:e:{for(ie=O.key;S!==null;){if(S.key===ie)if(S.tag===4&&S.stateNode.containerInfo===O.containerInfo&&S.stateNode.implementation===O.implementation){n(E,S.sibling),S=u(S,O.children||[]),S.return=E,E=S;break e}else{n(E,S);break}else t(E,S);S=S.sibling}S=cl(O,E.mode,B),S.return=E,E=S}return h(E);case Pe:return ie=O._init,ze(E,S,ie(O._payload),B)}if(et(O))return J(E,S,O,B);if(K(O))return te(E,S,O,B);Eo(E,O)}return typeof O=="string"&&O!==""||typeof O=="number"?(O=""+O,S!==null&&S.tag===6?(n(E,S.sibling),S=u(S,O),S.return=E,E=S):(n(E,S),S=ul(O,E.mode,B),S.return=E,E=S),h(E)):n(E,S)}return ze}var Pr=Lp(!0),Fp=Lp(!1),Oo=Pn(null),Po=null,br=null,_s=null;function ws(){_s=br=Po=null}function Ss(e){var t=Oo.current;ke(Oo),e._currentValue=t}function Cs(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function xr(e,t){Po=e,_s=br=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(ht=!0),e.firstContext=null)}function Rt(e){var t=e._currentValue;if(_s!==e)if(e={context:e,memoizedValue:t,next:null},br===null){if(Po===null)throw Error(r(308));br=e,Po.dependencies={lanes:0,firstContext:e}}else br=br.next=e;return t}var Zn=null;function Ts(e){Zn===null?Zn=[e]:Zn.push(e)}function qp(e,t,n,a){var u=t.interleaved;return u===null?(n.next=n,Ts(t)):(n.next=u.next,u.next=n),t.interleaved=n,dn(e,a)}function dn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Rn=!1;function Es(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function zp(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function pn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function kn(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Se&2)!==0){var u=a.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),a.pending=t,dn(e,n)}return u=a.interleaved,u===null?(t.next=t,Ts(a)):(t.next=u.next,u.next=t),a.interleaved=t,dn(e,n)}function bo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Fa(e,n)}}function $p(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var u=null,c=null;if(n=n.firstBaseUpdate,n!==null){do{var h={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};c===null?u=c=h:c=c.next=h,n=n.next}while(n!==null);c===null?u=c=t:c=c.next=t}else u=c=t;n={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:c,shared:a.shared,effects:a.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function xo(e,t,n,a){var u=e.updateQueue;Rn=!1;var c=u.firstBaseUpdate,h=u.lastBaseUpdate,y=u.shared.pending;if(y!==null){u.shared.pending=null;var w=y,P=w.next;w.next=null,h===null?c=P:h.next=P,h=w;var L=e.alternate;L!==null&&(L=L.updateQueue,y=L.lastBaseUpdate,y!==h&&(y===null?L.firstBaseUpdate=P:y.next=P,L.lastBaseUpdate=w))}if(c!==null){var q=u.baseState;h=0,L=P=w=null,y=c;do{var D=y.lane,Q=y.eventTime;if((a&D)===D){L!==null&&(L=L.next={eventTime:Q,lane:0,tag:y.tag,payload:y.payload,callback:y.callback,next:null});e:{var J=e,te=y;switch(D=t,Q=n,te.tag){case 1:if(J=te.payload,typeof J=="function"){q=J.call(Q,q,D);break e}q=J;break e;case 3:J.flags=J.flags&-65537|128;case 0:if(J=te.payload,D=typeof J=="function"?J.call(Q,q,D):J,D==null)break e;q=G({},q,D);break e;case 2:Rn=!0}}y.callback!==null&&y.lane!==0&&(e.flags|=64,D=u.effects,D===null?u.effects=[y]:D.push(y))}else Q={eventTime:Q,lane:D,tag:y.tag,payload:y.payload,callback:y.callback,next:null},L===null?(P=L=Q,w=q):L=L.next=Q,h|=D;if(y=y.next,y===null){if(y=u.shared.pending,y===null)break;D=y,y=D.next,D.next=null,u.lastBaseUpdate=D,u.shared.pending=null}}while(!0);if(L===null&&(w=q),u.baseState=w,u.firstBaseUpdate=P,u.lastBaseUpdate=L,t=u.shared.interleaved,t!==null){u=t;do h|=u.lane,u=u.next;while(u!==t)}else c===null&&(u.shared.lanes=0);tr|=h,e.lanes=h,e.memoizedState=q}}function Bp(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var a=Rs.transition;Rs.transition={};try{e(!1),t()}finally{Oe=n,Rs.transition=a}}function sh(){return kt().memoizedState}function d_(e,t,n){var a=jn(e);if(n={lane:a,action:n,hasEagerState:!1,eagerState:null,next:null},lh(e))uh(t,n);else if(n=qp(e,t,n,a),n!==null){var u=ct();Wt(n,e,a,u),ch(n,t,a)}}function p_(e,t,n){var a=jn(e),u={lane:a,action:n,hasEagerState:!1,eagerState:null,next:null};if(lh(e))uh(t,u);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var h=t.lastRenderedState,y=c(h,n);if(u.hasEagerState=!0,u.eagerState=y,zt(y,h)){var w=t.interleaved;w===null?(u.next=u,Ts(t)):(u.next=w.next,w.next=u),t.interleaved=u;return}}catch{}finally{}n=qp(e,t,u,a),n!==null&&(u=ct(),Wt(n,e,a,u),ch(n,t,a))}}function lh(e){var t=e.alternate;return e===je||t!==null&&t===je}function uh(e,t){_i=Io=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ch(e,t,n){if((n&4194240)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Fa(e,n)}}var jo={readContext:Rt,useCallback:it,useContext:it,useEffect:it,useImperativeHandle:it,useInsertionEffect:it,useLayoutEffect:it,useMemo:it,useReducer:it,useRef:it,useState:it,useDebugValue:it,useDeferredValue:it,useTransition:it,useMutableSource:it,useSyncExternalStore:it,useId:it,unstable_isNewReconciler:!1},h_={readContext:Rt,useCallback:function(e,t){return Jt().memoizedState=[e,t===void 0?null:t],e},useContext:Rt,useEffect:Jp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Ao(4194308,4,nh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ao(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ao(4,2,e,t)},useMemo:function(e,t){var n=Jt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var a=Jt();return t=n!==void 0?n(t):t,a.memoizedState=a.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},a.queue=e,e=e.dispatch=d_.bind(null,je,e),[a.memoizedState,e]},useRef:function(e){var t=Jt();return e={current:e},t.memoizedState=e},useState:Yp,useDebugValue:Ds,useDeferredValue:function(e){return Jt().memoizedState=e},useTransition:function(){var e=Yp(!1),t=e[0];return e=f_.bind(null,e[1]),Jt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var a=je,u=Jt();if(Ie){if(n===void 0)throw Error(r(407));n=n()}else{if(n=t(),Ke===null)throw Error(r(349));(er&30)!==0||Vp(a,t,n)}u.memoizedState=n;var c={value:n,getSnapshot:t};return u.queue=c,Jp(Gp.bind(null,a,c,e),[e]),a.flags|=2048,Ci(9,Kp.bind(null,a,c,n,t),void 0,null),n},useId:function(){var e=Jt(),t=Ke.identifierPrefix;if(Ie){var n=fn,a=cn;n=(a&~(1<<32-qt(a)-1)).toString(32)+n,t=":"+t+"R"+n,n=wi++,0<\/script>",e=e.removeChild(e.firstChild)):typeof a.is=="string"?e=h.createElement(n,{is:a.is}):(e=h.createElement(n),n==="select"&&(h=e,a.multiple?h.multiple=!0:a.size&&(h.size=a.size))):e=h.createElementNS(e,n),e[Yt]=t,e[pi]=a,kh(e,t,!1,!1),t.stateNode=e;e:{switch(h=yn(n,a),n){case"dialog":Re("cancel",e),Re("close",e),u=a;break;case"iframe":case"object":case"embed":Re("load",e),u=a;break;case"video":case"audio":for(u=0;uNr&&(t.flags|=128,a=!0,Ti(c,!1),t.lanes=4194304)}else{if(!a)if(e=Ro(h),e!==null){if(t.flags|=128,a=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Ti(c,!0),c.tail===null&&c.tailMode==="hidden"&&!h.alternate&&!Ie)return ot(t),null}else 2*qe()-c.renderingStartTime>Nr&&n!==1073741824&&(t.flags|=128,a=!0,Ti(c,!1),t.lanes=4194304);c.isBackwards?(h.sibling=t.child,t.child=h):(n=c.last,n!==null?n.sibling=h:t.child=h,c.last=h)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=qe(),t.sibling=null,n=Ne.current,xe(Ne,a?n&1|2:n&1),t):(ot(t),null);case 22:case 23:return al(),a=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==a&&(t.flags|=8192),a&&(t.mode&1)!==0?(Tt&1073741824)!==0&&(ot(t),t.subtreeFlags&6&&(t.flags|=8192)):ot(t),null;case 24:return null;case 25:return null}throw Error(r(156,t.tag))}function C_(e,t){switch(gs(t),t.tag){case 1:return pt(t.type)&&yo(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Rr(),ke(dt),ke(rt),xs(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Ps(t),null;case 13:if(ke(Ne),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));Or()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ke(Ne),null;case 4:return Rr(),null;case 10:return Ss(t.type._context),null;case 22:case 23:return al(),null;case 24:return null;default:return null}}var Fo=!1,at=!1,T_=typeof WeakSet=="function"?WeakSet:Set,Z=null;function Ir(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(a){De(e,t,a)}else n.current=null}function Gs(e,t,n){try{n()}catch(a){De(e,t,a)}}var Nh=!1;function E_(e,t){if(as=ro,e=fp(),Za(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var u=a.anchorOffset,c=a.focusNode;a=a.focusOffset;try{n.nodeType,c.nodeType}catch{n=null;break e}var h=0,y=-1,w=-1,P=0,L=0,q=e,D=null;t:for(;;){for(var Q;q!==n||u!==0&&q.nodeType!==3||(y=h+u),q!==c||a!==0&&q.nodeType!==3||(w=h+a),q.nodeType===3&&(h+=q.nodeValue.length),(Q=q.firstChild)!==null;)D=q,q=Q;for(;;){if(q===e)break t;if(D===n&&++P===u&&(y=h),D===c&&++L===a&&(w=h),(Q=q.nextSibling)!==null)break;q=D,D=q.parentNode}q=Q}n=y===-1||w===-1?null:{start:y,end:w}}else n=null}n=n||{start:0,end:0}}else n=null;for(ss={focusedElem:e,selectionRange:n},ro=!1,Z=t;Z!==null;)if(t=Z,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Z=e;else for(;Z!==null;){t=Z;try{var J=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(J!==null){var te=J.memoizedProps,ze=J.memoizedState,E=t.stateNode,S=E.getSnapshotBeforeUpdate(t.elementType===t.type?te:Bt(t.type,te),ze);E.__reactInternalSnapshotBeforeUpdate=S}break;case 3:var O=t.stateNode.containerInfo;O.nodeType===1?O.textContent="":O.nodeType===9&&O.documentElement&&O.removeChild(O.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(r(163))}}catch(B){De(t,t.return,B)}if(e=t.sibling,e!==null){e.return=t.return,Z=e;break}Z=t.return}return J=Nh,Nh=!1,J}function Ei(e,t,n){var a=t.updateQueue;if(a=a!==null?a.lastEffect:null,a!==null){var u=a=a.next;do{if((u.tag&e)===e){var c=u.destroy;u.destroy=void 0,c!==void 0&&Gs(t,n,c)}u=u.next}while(u!==a)}}function qo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var a=n.create;n.destroy=a()}n=n.next}while(n!==t)}}function Xs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function jh(e){var t=e.alternate;t!==null&&(e.alternate=null,jh(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Yt],delete t[pi],delete t[fs],delete t[a_],delete t[s_])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Mh(e){return e.tag===5||e.tag===3||e.tag===4}function Dh(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Mh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Qs(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=mo));else if(a!==4&&(e=e.child,e!==null))for(Qs(e,t,n),e=e.sibling;e!==null;)Qs(e,t,n),e=e.sibling}function Ys(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(e=e.child,e!==null))for(Ys(e,t,n),e=e.sibling;e!==null;)Ys(e,t,n),e=e.sibling}var Qe=null,Ht=!1;function In(e,t,n){for(n=n.child;n!==null;)Lh(e,t,n),n=n.sibling}function Lh(e,t,n){if(Qt&&typeof Qt.onCommitFiberUnmount=="function")try{Qt.onCommitFiberUnmount(Yi,n)}catch{}switch(n.tag){case 5:at||Ir(n,t);case 6:var a=Qe,u=Ht;Qe=null,In(e,t,n),Qe=a,Ht=u,Qe!==null&&(Ht?(e=Qe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Qe.removeChild(n.stateNode));break;case 18:Qe!==null&&(Ht?(e=Qe,n=n.stateNode,e.nodeType===8?cs(e.parentNode,n):e.nodeType===1&&cs(e,n),ni(e)):cs(Qe,n.stateNode));break;case 4:a=Qe,u=Ht,Qe=n.stateNode.containerInfo,Ht=!0,In(e,t,n),Qe=a,Ht=u;break;case 0:case 11:case 14:case 15:if(!at&&(a=n.updateQueue,a!==null&&(a=a.lastEffect,a!==null))){u=a=a.next;do{var c=u,h=c.destroy;c=c.tag,h!==void 0&&((c&2)!==0||(c&4)!==0)&&Gs(n,t,h),u=u.next}while(u!==a)}In(e,t,n);break;case 1:if(!at&&(Ir(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"))try{a.props=n.memoizedProps,a.state=n.memoizedState,a.componentWillUnmount()}catch(y){De(n,t,y)}In(e,t,n);break;case 21:In(e,t,n);break;case 22:n.mode&1?(at=(a=at)||n.memoizedState!==null,In(e,t,n),at=a):In(e,t,n);break;default:In(e,t,n)}}function Fh(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new T_),t.forEach(function(a){var u=N_.bind(null,e,a);n.has(a)||(n.add(a),a.then(u,u))})}}function Ut(e,t){var n=t.deletions;if(n!==null)for(var a=0;au&&(u=h),a&=~c}if(a=u,a=qe()-a,a=(120>a?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*P_(a/1960))-a,10e?16:e,Nn===null)var a=!1;else{if(e=Nn,Nn=null,Uo=0,(Se&6)!==0)throw Error(r(331));var u=Se;for(Se|=4,Z=e.current;Z!==null;){var c=Z,h=c.child;if((Z.flags&16)!==0){var y=c.deletions;if(y!==null){for(var w=0;wqe()-el?rr(e,0):Js|=n),mt(e,t)}function Yh(e,t){t===0&&((e.mode&1)===0?t=1:(t=Ji,Ji<<=1,(Ji&130023424)===0&&(Ji=4194304)));var n=ct();e=dn(e,t),e!==null&&(Yr(e,t,n),mt(e,n))}function A_(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yh(e,n)}function N_(e,t){var n=0;switch(e.tag){case 13:var a=e.stateNode,u=e.memoizedState;u!==null&&(n=u.retryLane);break;case 19:a=e.stateNode;break;default:throw Error(r(314))}a!==null&&a.delete(t),Yh(e,n)}var Zh;Zh=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||dt.current)ht=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return ht=!1,w_(e,t,n);ht=(e.flags&131072)!==0}else ht=!1,Ie&&(t.flags&1048576)!==0&&Ip(t,Co,t.index);switch(t.lanes=0,t.tag){case 2:var a=t.type;Lo(e,t),e=t.pendingProps;var u=Cr(t,rt.current);xr(t,n),u=Is(null,t,a,e,u,n);var c=As();return t.flags|=1,typeof u=="object"&&u!==null&&typeof u.render=="function"&&u.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,pt(a)?(c=!0,_o(t)):c=!1,t.memoizedState=u.state!==null&&u.state!==void 0?u.state:null,Es(t),u.updater=Mo,t.stateNode=u,u._reactInternals=t,Fs(t,a,e,n),t=Bs(null,t,a,!0,c,n)):(t.tag=0,Ie&&c&&hs(t),ut(null,t,u,n),t=t.child),t;case 16:a=t.elementType;e:{switch(Lo(e,t),e=t.pendingProps,u=a._init,a=u(a._payload),t.type=a,u=t.tag=M_(a),e=Bt(a,e),u){case 0:t=$s(null,t,a,e,n);break e;case 1:t=Eh(null,t,a,e,n);break e;case 11:t=_h(null,t,a,e,n);break e;case 14:t=wh(null,t,a,Bt(a.type,e),n);break e}throw Error(r(306,a,""))}return t;case 0:return a=t.type,u=t.pendingProps,u=t.elementType===a?u:Bt(a,u),$s(e,t,a,u,n);case 1:return a=t.type,u=t.pendingProps,u=t.elementType===a?u:Bt(a,u),Eh(e,t,a,u,n);case 3:e:{if(Oh(t),e===null)throw Error(r(387));a=t.pendingProps,c=t.memoizedState,u=c.element,zp(e,t),xo(t,a,null,n);var h=t.memoizedState;if(a=h.element,c.isDehydrated)if(c={element:a,isDehydrated:!1,cache:h.cache,pendingSuspenseBoundaries:h.pendingSuspenseBoundaries,transitions:h.transitions},t.updateQueue.baseState=c,t.memoizedState=c,t.flags&256){u=kr(Error(r(423)),t),t=Ph(e,t,a,n,u);break e}else if(a!==u){u=kr(Error(r(424)),t),t=Ph(e,t,a,n,u);break e}else for(Ct=On(t.stateNode.containerInfo.firstChild),St=t,Ie=!0,$t=null,n=Fp(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Or(),a===u){t=hn(e,t,n);break e}ut(e,t,a,n)}t=t.child}return t;case 5:return Hp(t),e===null&&vs(t),a=t.type,u=t.pendingProps,c=e!==null?e.memoizedProps:null,h=u.children,ls(a,u)?h=null:c!==null&&ls(a,c)&&(t.flags|=32),Th(e,t),ut(e,t,h,n),t.child;case 6:return e===null&&vs(t),null;case 13:return bh(e,t,n);case 4:return Os(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Pr(t,null,a,n):ut(e,t,a,n),t.child;case 11:return a=t.type,u=t.pendingProps,u=t.elementType===a?u:Bt(a,u),_h(e,t,a,u,n);case 7:return ut(e,t,t.pendingProps,n),t.child;case 8:return ut(e,t,t.pendingProps.children,n),t.child;case 12:return ut(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(a=t.type._context,u=t.pendingProps,c=t.memoizedProps,h=u.value,xe(Oo,a._currentValue),a._currentValue=h,c!==null)if(zt(c.value,h)){if(c.children===u.children&&!dt.current){t=hn(e,t,n);break e}}else for(c=t.child,c!==null&&(c.return=t);c!==null;){var y=c.dependencies;if(y!==null){h=c.child;for(var w=y.firstContext;w!==null;){if(w.context===a){if(c.tag===1){w=pn(-1,n&-n),w.tag=2;var P=c.updateQueue;if(P!==null){P=P.shared;var L=P.pending;L===null?w.next=w:(w.next=L.next,L.next=w),P.pending=w}}c.lanes|=n,w=c.alternate,w!==null&&(w.lanes|=n),Cs(c.return,n,t),y.lanes|=n;break}w=w.next}}else if(c.tag===10)h=c.type===t.type?null:c.child;else if(c.tag===18){if(h=c.return,h===null)throw Error(r(341));h.lanes|=n,y=h.alternate,y!==null&&(y.lanes|=n),Cs(h,n,t),h=c.sibling}else h=c.child;if(h!==null)h.return=c;else for(h=c;h!==null;){if(h===t){h=null;break}if(c=h.sibling,c!==null){c.return=h.return,h=c;break}h=h.return}c=h}ut(e,t,u.children,n),t=t.child}return t;case 9:return u=t.type,a=t.pendingProps.children,xr(t,n),u=Rt(u),a=a(u),t.flags|=1,ut(e,t,a,n),t.child;case 14:return a=t.type,u=Bt(a,t.pendingProps),u=Bt(a.type,u),wh(e,t,a,u,n);case 15:return Sh(e,t,t.type,t.pendingProps,n);case 17:return a=t.type,u=t.pendingProps,u=t.elementType===a?u:Bt(a,u),Lo(e,t),t.tag=1,pt(a)?(e=!0,_o(t)):e=!1,xr(t,n),dh(t,a,u),Fs(t,a,u,n),Bs(null,t,a,!0,e,n);case 19:return Rh(e,t,n);case 22:return Ch(e,t,n)}throw Error(r(156,t.tag))};function Jh(e,t){return Ad(e,t)}function j_(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function At(e,t,n,a){return new j_(e,t,n,a)}function ll(e){return e=e.prototype,!(!e||!e.isReactComponent)}function M_(e){if(typeof e=="function")return ll(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ce)return 11;if(e===_e)return 14}return 2}function Dn(e,t){var n=e.alternate;return n===null?(n=At(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Go(e,t,n,a,u,c){var h=2;if(a=e,typeof e=="function")ll(e)&&(h=1);else if(typeof e=="string")h=5;else e:switch(e){case N:return or(n.children,u,c,t);case U:h=8,u|=8;break;case X:return e=At(12,n,t,u|2),e.elementType=X,e.lanes=c,e;case ne:return e=At(13,n,t,u),e.elementType=ne,e.lanes=c,e;case pe:return e=At(19,n,t,u),e.elementType=pe,e.lanes=c,e;case we:return Xo(n,u,c,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ee:h=10;break e;case V:h=9;break e;case ce:h=11;break e;case _e:h=14;break e;case Pe:h=16,a=null;break e}throw Error(r(130,e==null?e:typeof e,""))}return t=At(h,n,t,u),t.elementType=e,t.type=a,t.lanes=c,t}function or(e,t,n,a){return e=At(7,e,a,t),e.lanes=n,e}function Xo(e,t,n,a){return e=At(22,e,a,t),e.elementType=we,e.lanes=n,e.stateNode={isHidden:!1},e}function ul(e,t,n){return e=At(6,e,null,t),e.lanes=n,e}function cl(e,t,n){return t=At(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function D_(e,t,n,a,u){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=La(0),this.expirationTimes=La(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=La(0),this.identifierPrefix=a,this.onRecoverableError=u,this.mutableSourceEagerHydrationData=null}function fl(e,t,n,a,u,c,h,y,w){return e=new D_(e,t,n,y,w),t===1?(t=1,c===!0&&(t|=8)):t=0,c=At(3,null,null,t),e.current=c,c.stateNode=e,c.memoizedState={element:a,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Es(c),e}function L_(e,t,n){var a=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(i){console.error(i)}}return s(),qf.exports=HC(),qf.exports}var _d=N1();const UC=He(_d),j1=H_({__proto__:null,default:UC},[_d]),lr=Object.assign({},j1),qy=lr.render,zy=lr.unmountComponentAtNode,$y=lr.findDOMNode,{version:M1}=j1,D1=Number((M1||"").split(".")[0]);let By=!1;function WC(){var s;By||D1<18&&typeof((s=sr.config)===null||s===void 0?void 0:s.createRoot)=="function"&&(By=!0,console.warn(`[Semi UI] createRoot was injected but React version is ${M1} (< 18). This configuration is unusual and may cause unexpected behavior.`))}function Hy(s){var i;const r=(i=lr.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)!==null&&i!==void 0?i:lr.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;r&&typeof r=="object"&&(r.usingClientEntryPoint=s)}function VC(){var s;if(typeof((s=sr.config)===null||s===void 0?void 0:s.createRoot)=="function")return sr.config.createRoot;if(typeof lr.createRoot=="function")return lr.createRoot}let Uy=!1;function KC(){Uy||(Uy=!0,console.error(`[Semi UI] createRoot is not available. If you are using React 19, please inject createRoot before using Semi components. For details, see: https://semi.design/zh-CN/ecosystem/react19 -[Semi UI] createRoot 不可用。如果您正在使用 React 19,请在使用 Semi 组件前注入 createRoot。详情请参阅:https://semi.design/zh-CN/ecosystem/react19`))}const Di="__semi_react_root__";function OO(s,i){WC();const r=VC();if(r){Hy(!0);const o=i[Di]||r(i);Hy(!1),o.render(s),i[Di]=o}else qy?qy(s,i):KC()}function PO(s){s[Di]?(s[Di].unmount(),delete s[Di]):zy&&zy(s)}function GC(s){var i;try{const r=(i=s==null?void 0:s._reactInternals)!==null&&i!==void 0?i:s==null?void 0:s._reactInternalFiber;if(!r||typeof r!="object")return null;let o=r.child,l=0;const f=50;for(;o&&l=19?(r=(i=s.props)===null||i===void 0?void 0:i.ref)!==null&&r!==void 0?r:null:(o=s.ref)!==null&&o!==void 0?o:null:null}const xa=I.createContext({}),XC=()=>document.body;class Ra extends Ee.PureComponent{constructor(i,r){var o;super(i),o=this,this.initContainer=function(l){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var d,p;try{let g;if(!o.el||!(!((d=o.state)===null||d===void 0)&&d.container)||!Array.from(o.state.container.childNodes).includes(o.el)){o.el=document.createElement("div");const _=(o.props.getPopupContainer||l.getPopupContainer||XC)();return _.appendChild(o.el),o.addStyle(o.props.style),o.addClass(o.props.prefixCls,l,o.props.className),g=_,g}}catch(g){if(!f)throw g}return(p=o.state)===null||p===void 0?void 0:p.container},this.addStyle=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(o.el)for(const f of Object.keys(l))o.el.style[f]=l[f]},this.addClass=function(l){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:o.context;const{direction:d}=f;for(var p=arguments.length,g=new Array(p>2?p-2:0),m=2;m{const{className:i,style:r}=s,o=QC(s,["className","style"]);return I.createElement("svg",Object.assign({"aria-hidden":!0,className:i,style:r},o,{width:"24",height:"7",viewBox:"0 0 24 7",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"}),I.createElement("path",{d:"M24 0V1C20 1 18.5 2 16.5 4C14.5 6 14 7 12 7C10 7 9.5 6 7.5 4C5.5 2 4 1 0 1V0H24Z"}))};var ZC=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{const{className:i,style:r}=s,o=ZC(s,["className","style"]);return I.createElement("svg",Object.assign({"aria-hidden":!0,className:i,style:r},o,{width:"7",height:"24",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor"}),I.createElement("path",{d:"M0 0L1 0C1 4, 2 5.5, 4 7.5S7,10 7,12S6 14.5, 4 16.5S1,20 1,24L0 24L0 0z"}))},eT=v.shape({offsetX:v.number,offsetY:v.number,width:v.number,height:v.number});class F1 extends I.Component{constructor(i){super(i),this.handleAnimationStart=()=>{var r,o;(o=(r=this.props).onAnimationStart)===null||o===void 0||o.call(r)},this.handleAnimationEnd=()=>{this.setState({currentClassName:this.props.endClassName,extraStyle:{animationFillMode:this.props.fillMode},isAnimating:!1},()=>{var r,o;(o=(r=this.props).onAnimationEnd)===null||o===void 0||o.call(r,!1)})},this.state={currentClassName:this.props.startClassName,extraStyle:{animationFillMode:this.props.fillMode},isAnimating:!0}}componentDidMount(){var i,r,o,l;(r=(i=this.props).onAnimationStart)===null||r===void 0||r.call(i),this.props.motion||((l=(o=this.props).onAnimationEnd)===null||l===void 0||l.call(o,!1),this.setState({isAnimating:!1}))}componentDidUpdate(i,r,o){const l=Object.keys(this.props).filter(f=>!Li(this.props[f],i[f]));l.includes("animationState"),(l.includes("startClassName")||l.includes("replayKey")||l.includes("motion"))&&this.setState({currentClassName:this.props.startClassName,extraStyle:{animationFillMode:this.props.fillMode},isAnimating:!0},()=>{var f,d,p,g;(d=(f=this.props).onAnimationStart)===null||d===void 0||d.call(f),this.props.motion||((g=(p=this.props).onAnimationEnd)===null||g===void 0||g.call(p,this.state.isAnimating),this.setState({isAnimating:!1}))})}render(){var i;return this.props.motion?this.props.children({animationClassName:(i=this.state.currentClassName)!==null&&i!==void 0?i:"",animationStyle:this.state.extraStyle,animationEventsNeedBind:{onAnimationStart:this.handleAnimationStart,onAnimationEnd:this.handleAnimationEnd},isAnimating:this.state.isAnimating}):this.props.children({animationClassName:"",animationStyle:{},animationEventsNeedBind:{},isAnimating:this.state.isAnimating})}}F1.defaultProps={motion:!0,replayKey:""};var Wy=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);ldocument.body;class zn extends $r{constructor(i){super(i),this.isAnimating=!1,this.cachedLatestTransitionState="enter",this.setContainerEl=r=>this.containerEl={current:r},this.isSpecial=r=>{if(Ni(r))return!!r.disabled;if(Ee.isValidElement(r)){if(Te(r,"props.disabled"))return Mi.STATUS_DISABLED;const l=Te(r,"props.loading"),f=!Fn(r)&&!Fn(r.type)&&(Te(r,"type.elementType")==="Button"||Te(r,"type.elementType")==="IconButton");if(l&&f)return Mi.STATUS_LOADING}return!1},this.didLeave=()=>{this.props.keepDOM?this.foundation.setDisplayNone(!0):this.foundation.removePortal(),this.foundation.unBindEvent()},this.renderIcon=()=>{const{placement:r}=this.state,{showArrow:o,prefixCls:l,style:f}=this.props;let d=null;const p=Le([`${l}-icon-arrow`]),g=Te(f,"backgroundColor"),m=r!=null&&r.includes("left")||r!=null&&r.includes("right")?I.createElement(JC,null):I.createElement(YC,null);return o&&(Ee.isValidElement(o)?d=o:d=I.cloneElement(m,{className:p,style:{color:g,fill:"currentColor"}})),d},this.handlePortalInnerClick=r=>{this.props.clickToHide&&this.foundation.hide(),this.props.stopPropagation&&oa(r)},this.handlePortalMouseDown=r=>{this.props.stopPropagation&&oa(r)},this.handlePortalFocus=r=>{this.props.stopPropagation&&oa(r)},this.handlePortalBlur=r=>{this.props.stopPropagation&&oa(r)},this.handlePortalInnerKeyDown=r=>{this.foundation.handleContainerKeydown(r)},this.renderContentNode=r=>{const o={initialFocusRef:this.initialFocusRef};return md(r)?r(o):r},this.renderPortal=()=>{const{containerStyle:r={},visible:o,portalEventSet:l,placement:f,displayNone:d,transitionState:p,id:g,isPositionUpdated:m}=this.state,{prefixCls:_,content:C,showArrow:b,style:x,motion:A,role:k,zIndex:R}=this.props,z=this.renderContentNode(C),{className:H}=this.props,W=this.context.direction,$=Le(H,{[`${_}-wrapper`]:!0,[`${_}-wrapper-show`]:o,[`${_}-with-arrow`]:!!b,[`${_}-rtl`]:W==="rtl"}),Y=this.renderIcon(),M=Ta(r,A?["transformOrigin"]:void 0),N=Te(r,"transformOrigin"),U=Te(r,"--semi-tooltip-arrow-offset-x"),X=Te(r,"--semi-tooltip-arrow-offset-y"),ee=Object.assign(Object.assign({},U?{"--semi-tooltip-arrow-offset-x":U}:{}),X?{"--semi-tooltip-arrow-offset-y":X}:{}),V=Te(x,"opacity",null),ce=V||1,ne=I.createElement(F1,{fillMode:"forwards",animationState:p,motion:A&&m,startClassName:p==="enter"?`${la}-animation-show`:`${la}-animation-hide`,onAnimationStart:()=>this.isAnimating=!0,onAnimationEnd:()=>{var pe,_e;p==="leave"&&(this.didLeave(),(_e=(pe=this.props).afterClose)===null||_e===void 0||_e.call(pe)),this.isAnimating=!1}},pe=>{let{animationStyle:_e,animationClassName:Pe,animationEventsNeedBind:we}=pe;return I.createElement("div",Object.assign({className:Le($,Pe),style:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},_e),d?{display:"none"}:{}),{transformOrigin:N}),x),ee),V?{opacity:m?ce:"0"}:{})},l,we,{role:k,"x-placement":f,id:g}),I.createElement("div",{className:`${la}-content`},z),Y)});return I.createElement(Ra,{getPopupContainer:this.props.getPopupContainer,style:{zIndex:R}},I.createElement("div",{tabIndex:-1,className:`${qn}-portal-inner`,style:M,ref:this.setContainerEl,onClick:this.handlePortalInnerClick,onFocus:this.handlePortalFocus,onBlur:this.handlePortalBlur,onMouseDown:this.handlePortalMouseDown,onKeyDown:this.handlePortalInnerKeyDown},ne))},this.wrapSpan=r=>{const{wrapperClassName:o}=this.props,l=Te(r,"props.style.display"),f=Te(r,"props.block"),d=typeof r=="string",p={};return d||(p.display="inline-block"),(f||rT.includes(l))&&(p.width="100%"),I.createElement("span",{className:o,style:p},r)},this.mergeEvents=(r,o)=>{const l={};return TC(o,(f,d)=>{typeof f=="function"&&(l[d]=function(){f(...arguments),r&&typeof r[d]=="function"&&r[d](...arguments)})}),l},this.getPopupId=()=>this.state.id,this.state={visible:!1,transitionState:"",triggerEventSet:{},portalEventSet:{},containerStyle:{},isInsert:!1,placement:i.position||"top",transitionStyle:{},isPositionUpdated:!1,id:i.wrapperId,displayNone:!1},this.foundation=new xC(this.adapter),this.eventManager=new EC,this.triggerEl=I.createRef(),this.containerEl=I.createRef(),this.initialFocusRef=I.createRef(),this.clickOutsideHandler=null,this.resizeHandler=null,this.isWrapped=!1,this.containerPosition=void 0}get adapter(){var i=this;return Object.assign(Object.assign({},super.adapter),{on:function(){return i.eventManager.on(...arguments)},off:function(){return i.eventManager.off(...arguments)},getAnimatingState:()=>this.isAnimating,insertPortal:(r,o)=>{var{position:l}=o,f=Wy(o,["position"]);this.cachedLatestTransitionState="enter",this.setState({isInsert:!0,transitionState:"enter",containerStyle:Object.assign(Object.assign({},this.state.containerStyle),f),isPositionUpdated:!1},()=>{var d;const p=()=>{this.cachedLatestTransitionState==="enter"&&this.eventManager.emit("portalInserted")},g=(d=this.containerEl)===null||d===void 0?void 0:d.current;if(g&&(g.offsetWidth>0||g.offsetHeight>0)){p();return}if(g&&typeof ResizeObserver<"u"){let m=!1;const _=new ResizeObserver(()=>{!m&&g.offsetWidth>0&&g.offsetHeight>0&&(m=!0,_.disconnect(),p())});_.observe(g),setTimeout(()=>{m||(m=!0,_.disconnect(),p())},50);return}setTimeout(p,0)})},removePortal:()=>{this.setState({isInsert:!1,isPositionUpdated:!1})},getEventName:()=>({mouseEnter:"onMouseEnter",mouseLeave:"onMouseLeave",mouseOut:"onMouseOut",mouseOver:"onMouseOver",click:"onClick",focus:"onFocus",blur:"onBlur",keydown:"onKeyDown",contextMenu:"onContextMenu"}),registerTriggerEvent:r=>{this.setState({triggerEventSet:r})},registerPortalEvent:r=>{this.setState({portalEventSet:r})},getTriggerBounding:()=>{const r=this.adapter.getTriggerNode();return this.triggerEl.current=r,r&&r.getBoundingClientRect()},getPopupContainerRect:()=>{const r=this.getPopupContainer();let o=null;if(r&&Ni(r)){const l=PC(r.getBoundingClientRect());o=Object.assign(Object.assign({},l),{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop})}return o},containerIsBody:()=>this.getPopupContainer()===document.body,containerIsRelative:()=>{const r=this.getPopupContainer();return window.getComputedStyle(r).getPropertyValue("position")==="relative"},containerIsRelativeOrAbsolute:()=>["relative","absolute"].includes(this.containerPosition),getWrapperBounding:()=>{const r=this.containerEl&&this.containerEl.current;return r&&r.getBoundingClientRect()},getDocumentElementBounding:()=>document.documentElement.getBoundingClientRect(),setPosition:r=>{var{position:o}=r,l=Wy(r,["position"]);this.setState({containerStyle:Object.assign(Object.assign({},this.state.containerStyle),l),placement:o,isPositionUpdated:!0},()=>{this.eventManager.emit("positionUpdated")})},setDisplayNone:(r,o)=>{this.setState({displayNone:r},o)},updatePlacementAttr:r=>{this.setState({placement:r})},togglePortalVisible:(r,o)=>{const l={};l.transitionState=r?"enter":"leave",l.visible=r,this.cachedLatestTransitionState=l.transitionState,this.mounted&&this.setState(l,()=>{o()})},registerClickOutsideHandler:r=>{this.clickOutsideHandler&&this.adapter.unregisterClickOutsideHandler(),this.clickOutsideHandler=o=>{var l;if(!this.mounted)return!1;let f=this.triggerEl&&this.triggerEl.current,d=this.containerEl&&this.containerEl.current;f=(l=ji(f))!==null&&l!==void 0?l:f;const p=o.target,g=o.composedPath&&o.composedPath()||[p],m=this.props.clickTriggerToHide?f&&f.contains(p)||g.includes(f):!1;(f&&!f.contains(p)&&d&&!d.contains(p)&&!(g.includes(d)||g.includes(f))||m)&&(this.props.onClickOutSide(o),r())},window.addEventListener("mousedown",this.clickOutsideHandler)},unregisterClickOutsideHandler:()=>{this.clickOutsideHandler&&(window.removeEventListener("mousedown",this.clickOutsideHandler),this.clickOutsideHandler=null)},registerResizeHandler:r=>{this.resizeHandler&&this.adapter.unregisterResizeHandler(),this.resizeHandler=hm(o=>{if(!this.mounted)return!1;r(o)},10),window.addEventListener("resize",this.resizeHandler,!1)},unregisterResizeHandler:()=>{this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler,!1),this.resizeHandler=null)},notifyVisibleChange:r=>{this.props.onVisibleChange(r)},registerScrollHandler:r=>{this.scrollHandler&&this.adapter.unregisterScrollHandler(),this.scrollHandler=hm(o=>{if(!this.mounted)return!1;const l=this.adapter.getTriggerNode();if(o.target.contains(l)){const d={x:o.target.scrollLeft,y:o.target.scrollTop};r(d)}},10),window.addEventListener("scroll",this.scrollHandler,!0)},unregisterScrollHandler:()=>{this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler,!0),this.scrollHandler=null)},canMotion:()=>!!this.props.motion,updateContainerPosition:()=>{const r=document.body.getAttribute("data-position");if(r){this.containerPosition=r;return}requestAnimationFrame(()=>{const o=this.getPopupContainer();if(o&&Ni(o)){const f=window.getComputedStyle(o).getPropertyValue("position");document.body.setAttribute("data-position",f),this.containerPosition=f}})},getContainerPosition:()=>this.containerPosition,getContainer:()=>this.containerEl&&this.containerEl.current,getTriggerNode:()=>{let r=this.triggerEl.current;if(!Ni(r)){const o=ji(r);if(o)r=o;else return r&&Fi(!0,"[Semi Tooltip] The trigger element's ref did not return a DOM node. Please ensure the trigger component forwards ref correctly."),null}return r},getFocusableElements:r=>zC(r),getActiveElement:()=>qC(),setInitialFocus:()=>{const{preventScroll:r}=this.props,o=Te(this,"initialFocusRef.current");o&&"focus"in o&&o.focus({preventScroll:r})},notifyEscKeydown:r=>{this.props.onEscKeyDown(r)},setId:()=>{this.setState({id:vd()})},getTriggerDOM:()=>this.triggerEl.current?ji(this.triggerEl.current):null})}componentDidMount(){this.mounted=!0,this.getPopupContainer=this.props.getPopupContainer||this.context.getPopupContainer||iT,this.foundation.init(),yd(()=>{let i=this.triggerEl.current;i&&!(i instanceof HTMLElement)&&(i=ji(i)),this.foundation.updateStateIfCursorOnTrigger(i)},1)}componentWillUnmount(){this.mounted=!1,this.foundation.destroy()}focusTrigger(){this.foundation.focusTrigger()}rePosition(){return this.foundation.calcPosition()}componentDidUpdate(i,r){Fi(this.props.mouseLeaveDelay{const{tooltipRef:A}=g.props;A?this.triggerEl.current=A.current:this.triggerEl.current=x;const k=L1(g);typeof k=="function"?k(x):k&&typeof k=="object"&&(k.current=x)},tabIndex:g.props.tabIndex||0,"data-popupid":l}));return I.createElement(I.Fragment,null,i?this.renderPortal():null,b)}}zn.contextType=xa;zn.propTypes={children:v.node,motion:v.bool,autoAdjustOverflow:v.bool,position:v.oneOf(tT),getPopupContainer:v.func,mouseEnterDelay:v.number,mouseLeaveDelay:v.number,trigger:v.oneOf(nT).isRequired,className:v.string,wrapperClassName:v.string,clickToHide:v.bool,clickTriggerToHide:v.bool,visible:v.bool,style:v.object,content:v.oneOfType([v.node,v.func]),prefixCls:v.string,onVisibleChange:v.func,onClickOutSide:v.func,spacing:v.oneOfType([v.number,v.object]),margin:v.oneOfType([v.number,v.object]),showArrow:v.oneOfType([v.bool,v.node]),zIndex:v.number,rePosKey:v.oneOfType([v.string,v.number]),arrowBounding:eT,transformFromCenter:v.bool,arrowPointAtCenter:v.bool,stopPropagation:v.bool,role:v.string,wrapWhenSpecial:v.bool,guardFocus:v.bool,returnFocusOnClose:v.bool,preventScroll:v.bool,keepDOM:v.bool,condition:v.bool};zn.__SemiComponentName__="Tooltip";zn.defaultProps=ba(zn.__SemiComponentName__,{arrowBounding:ar.ARROW_BOUNDING,autoAdjustOverflow:!0,arrowPointAtCenter:!0,trigger:"hover",transformFromCenter:!0,position:"top",prefixCls:la,role:"tooltip",mouseEnterDelay:ar.MOUSE_ENTER_DELAY,mouseLeaveDelay:ar.MOUSE_LEAVE_DELAY,motion:!0,onVisibleChange:Ze,onClickOutSide:Ze,spacing:ar.SPACING,margin:ar.MARGIN,showArrow:!0,wrapWhenSpecial:!0,zIndex:ar.DEFAULT_Z_INDEX,closeOnEsc:!1,guardFocus:!1,returnFocusOnClose:!1,onEscKeyDown:Ze,disableFocusListener:!1,disableArrowKeyDown:!1,keepDOM:!1,condition:!0});var aa={exports:{}},Vy;function oT(){if(Vy)return aa.exports;Vy=1;const s=(i,{target:r=document.body}={})=>{const o=document.createElement("textarea"),l=document.activeElement;o.value=i,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const f=document.getSelection();let d=!1;f.rangeCount>0&&(d=f.getRangeAt(0)),r.append(o),o.select(),o.selectionStart=0,o.selectionEnd=i.length;let p=!1;try{p=document.execCommand("copy")}catch{}return o.remove(),d&&(f.removeAllRanges(),f.addRange(d)),l&&l.focus(),p};return aa.exports=s,aa.exports.default=s,aa.exports}var aT=oT();const sT=He(aT);function q1(){}const z1=I.createContext(null);function Dr(s){return function(){var i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=i.width?String(i.width):s.defaultWidth,o=s.formats[r]||s.formats[s.defaultWidth];return o}}function tn(s){return function(i,r){var o=r!=null&&r.context?String(r.context):"standalone",l;if(o==="formatting"&&s.formattingValues){var f=s.defaultFormattingWidth||s.defaultWidth,d=r!=null&&r.width?String(r.width):f;l=s.formattingValues[d]||s.formattingValues[f]}else{var p=s.defaultWidth,g=r!=null&&r.width?String(r.width):s.defaultWidth;l=s.values[g]||s.values[p]}var m=s.argumentCallback?s.argumentCallback(i):i;return l[m]}}function nn(s){return function(i){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=r.width,l=o&&s.matchPatterns[o]||s.matchPatterns[s.defaultMatchWidth],f=i.match(l);if(!f)return null;var d=f[0],p=o&&s.parsePatterns[o]||s.parsePatterns[s.defaultParseWidth],g=Array.isArray(p)?uT(p,function(C){return C.test(d)}):lT(p,function(C){return C.test(d)}),m;m=s.valueCallback?s.valueCallback(g):g,m=r.valueCallback?r.valueCallback(m):m;var _=i.slice(d.length);return{value:m,rest:_}}}function lT(s,i){for(var r in s)if(s.hasOwnProperty(r)&&i(s[r]))return r}function uT(s,i){for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:{},o=i.match(s.matchPattern);if(!o)return null;var l=o[0],f=i.match(s.parsePattern);if(!f)return null;var d=s.valueCallback?s.valueCallback(f[0]):f[0];d=r.valueCallback?r.valueCallback(d):d;var p=i.slice(l.length);return{value:d,rest:p}}}function Jf(s){"@babel/helpers - typeof";return Jf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},Jf(s)}function cT(s){if(s===null||s===!0||s===!1)return NaN;var i=Number(s);return isNaN(i)?i:i<0?Math.ceil(i):Math.floor(i)}function wd(s,i){if(i.length1?"s":"")+" required, but only "+i.length+" present")}function fT(s){wd(1,arguments);var i=Object.prototype.toString.call(s);return s instanceof Date||Jf(s)==="object"&&i==="[object Date]"?new Date(s.getTime()):typeof s=="number"||i==="[object Number]"?new Date(s):((typeof s=="string"||i==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}var dT={};function pT(){return dT}function Ky(s,i){var r,o,l,f,d,p,g,m;wd(1,arguments);var _=pT(),C=cT((r=(o=(l=(f=i==null?void 0:i.weekStartsOn)!==null&&f!==void 0?f:i==null||(d=i.locale)===null||d===void 0||(p=d.options)===null||p===void 0?void 0:p.weekStartsOn)!==null&&l!==void 0?l:_.weekStartsOn)!==null&&o!==void 0?o:(g=_.locale)===null||g===void 0||(m=g.options)===null||m===void 0?void 0:m.weekStartsOn)!==null&&r!==void 0?r:0);if(!(C>=0&&C<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var b=fT(s),x=b.getUTCDay(),A=(x0?"in "+l:l+" ago":l},mT={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},vT={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},yT={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},_T={date:Dr({formats:mT,defaultWidth:"full"}),time:Dr({formats:vT,defaultWidth:"full"}),dateTime:Dr({formats:yT,defaultWidth:"full"})},wT={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ST=function(i,r,o,l){return wT[i]},CT={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},TT={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ET={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},OT={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},PT={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},bT={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},xT=function(i,r){var o=Number(i),l=o%100;if(l>20||l<10)switch(l%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},RT={ordinalNumber:xT,era:tn({values:CT,defaultWidth:"wide"}),quarter:tn({values:TT,defaultWidth:"wide",argumentCallback:function(i){return i-1}}),month:tn({values:ET,defaultWidth:"wide"}),day:tn({values:OT,defaultWidth:"wide"}),dayPeriod:tn({values:PT,defaultWidth:"wide",formattingValues:bT,defaultFormattingWidth:"wide"})},kT=/^(\d+)(th|st|nd|rd)?/i,IT=/\d+/i,AT={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},NT={any:[/^b/i,/^(a|c)/i]},jT={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},MT={any:[/1/i,/2/i,/3/i,/4/i]},DT={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},LT={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},FT={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},qT={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},zT={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},$T={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},BT={ordinalNumber:$1({matchPattern:kT,parsePattern:IT,valueCallback:function(i){return parseInt(i,10)}}),era:nn({matchPatterns:AT,defaultMatchWidth:"wide",parsePatterns:NT,defaultParseWidth:"any"}),quarter:nn({matchPatterns:jT,defaultMatchWidth:"wide",parsePatterns:MT,defaultParseWidth:"any",valueCallback:function(i){return i+1}}),month:nn({matchPatterns:DT,defaultMatchWidth:"wide",parsePatterns:LT,defaultParseWidth:"any"}),day:nn({matchPatterns:FT,defaultMatchWidth:"wide",parsePatterns:qT,defaultParseWidth:"any"}),dayPeriod:nn({matchPatterns:zT,defaultMatchWidth:"any",parsePatterns:$T,defaultParseWidth:"any"})},HT={code:"en-US",formatDistance:gT,formatLong:_T,formatRelative:ST,localize:RT,match:BT,options:{weekStartsOn:0,firstWeekContainsDate:1}};function UT(s,i,r){wd(2,arguments);var o=Ky(s,r),l=Ky(i,r);return o.getTime()===l.getTime()}var WT={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},VT=function(i,r,o){var l,f=WT[i];return typeof f=="string"?l=f:r===1?l=f.one:l=f.other.replace("{{count}}",String(r)),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?l+"内":l+"前":l},KT={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},GT={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},XT={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},QT={date:Dr({formats:KT,defaultWidth:"full"}),time:Dr({formats:GT,defaultWidth:"full"}),dateTime:Dr({formats:XT,defaultWidth:"full"})};function Gy(s,i,r){var o="eeee p";return UT(s,i,r)?o:s.getTime()>i.getTime()?"'下个'"+o:"'上个'"+o}var YT={lastWeek:Gy,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Gy,other:"PP p"},ZT=function(i,r,o,l){var f=YT[i];return typeof f=="function"?f(r,o,l):f},JT={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},eE={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},tE={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},nE={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},rE={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},iE={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},oE=function(i,r){var o=Number(i);switch(r==null?void 0:r.unit){case"date":return o.toString()+"日";case"hour":return o.toString()+"时";case"minute":return o.toString()+"分";case"second":return o.toString()+"秒";default:return"第 "+o.toString()}},aE={ordinalNumber:oE,era:tn({values:JT,defaultWidth:"wide"}),quarter:tn({values:eE,defaultWidth:"wide",argumentCallback:function(i){return i-1}}),month:tn({values:tE,defaultWidth:"wide"}),day:tn({values:nE,defaultWidth:"wide"}),dayPeriod:tn({values:rE,defaultWidth:"wide",formattingValues:iE,defaultFormattingWidth:"wide"})},sE=/^(第\s*)?\d+(日|时|分|秒)?/i,lE=/\d+/i,uE={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},cE={any:[/^(前)/i,/^(公元)/i]},fE={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},dE={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},pE={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},hE={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},gE={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},mE={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},vE={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},yE={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},_E={ordinalNumber:$1({matchPattern:sE,parsePattern:lE,valueCallback:function(i){return parseInt(i,10)}}),era:nn({matchPatterns:uE,defaultMatchWidth:"wide",parsePatterns:cE,defaultParseWidth:"any"}),quarter:nn({matchPatterns:fE,defaultMatchWidth:"wide",parsePatterns:dE,defaultParseWidth:"any",valueCallback:function(i){return i+1}}),month:nn({matchPatterns:pE,defaultMatchWidth:"wide",parsePatterns:hE,defaultParseWidth:"any"}),day:nn({matchPatterns:gE,defaultMatchWidth:"wide",parsePatterns:mE,defaultParseWidth:"any"}),dayPeriod:nn({matchPatterns:vE,defaultMatchWidth:"any",parsePatterns:yE,defaultParseWidth:"any"})},wE={code:"zh-CN",formatDistance:VT,formatLong:QT,formatRelative:ZT,localize:aE,match:_E,options:{weekStartsOn:1,firstWeekContainsDate:4}};const ed={code:"zh-CN",currency:"CNY",dateFnsLocale:wE,Pagination:{pageSize:"每页条数:${pageSize}",total:"总页数:${total}",jumpTo:"跳至",page:"页"},Modal:{confirm:"确定",cancel:"取消"},Tabs:{more:"更多"},TimePicker:{placeholder:{time:"请选择时间",timeRange:"请选择时间范围"},begin:"开始时间",end:"结束时间",hour:"时",minute:"分",second:"秒",AM:"上午",PM:"下午"},DatePicker:{placeholder:{date:"请选择日期",dateTime:"请选择日期及时间",dateRange:["开始日期","结束日期"],dateTimeRange:["开始日期","结束日期"],monthRange:["开始月份","结束月份"]},presets:"快捷选择",footer:{confirm:"确定",cancel:"取消"},selectDate:"返回选择日期",selectTime:"选择时间",year:"年",month:"月",day:"日",monthText:"${year}年 ${month}",months:{1:"1月",2:"2月",3:"3月",4:"4月",5:"5月",6:"6月",7:"7月",8:"8月",9:"9月",10:"10月",11:"11月",12:"12月"},fullMonths:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12"},weeks:{Mon:"一",Tue:"二",Wed:"三",Thu:"四",Fri:"五",Sat:"六",Sun:"日"},localeFormatToken:{FORMAT_SWITCH_DATE:"yyyy-MM-dd"}},Navigation:{collapseText:"收起侧边栏",expandText:"展开侧边栏"},Popconfirm:{confirm:"确定",cancel:"取消"},Table:{emptyText:"暂无数据",pageText:"显示第 ${currentStart} 条-第 ${currentEnd} 条,共 ${total} 条",descend:"点击降序",ascend:"点击升序",cancelSort:"取消排序",confirmFilter:"确定",resetFilter:"重置"},Select:{emptyText:"暂无数据",createText:"创建"},Cascader:{emptyText:"暂无数据"},Tree:{emptyText:"暂无数据",searchPlaceholder:"搜索"},List:{emptyText:"暂无数据"},Calendar:{allDay:"全天",AM:"上午${time}时",PM:"下午${time}时",datestring:"日",remaining:"还有${remained}项"},Upload:{mainText:"点击上传文件或拖拽文件到这里",illegalTips:"不支持此类型文件",legalTips:"松手开始上传",retry:"重试",replace:"替换文件",clear:"清空",selectedFiles:"已选择文件",illegalSize:"文件尺寸不合法",fail:"上传失败",cropTitle:"裁切图片",cropOk:"确定",cropCancel:"取消"},TreeSelect:{searchPlaceholder:"搜索"},Typography:{copy:"复制",copied:"复制成功",expand:"展开",collapse:"收起"},Transfer:{emptyLeft:"暂无数据",emptySearch:"无搜索结果",emptyRight:"暂无内容,可从左侧勾选",placeholder:"搜索",clear:"清空",selectAll:"全选",clearSelectAll:"取消全选",total:"总个数:${total}",selected:"已选个数:${total}"},Form:{optional:"(可选)"},Image:{preview:"预览",loading:"加载中",loadError:"加载失败",prevTip:"上一张",nextTip:"下一张",zoomInTip:"放大",zoomOutTip:"缩小",rotateTip:"旋转",downloadTip:"下载",adaptiveTip:"适应页面",originTip:"原始尺寸"},Chat:{deleteConfirm:"确认删除该会话吗?",clearContext:"上下文已清除",copySuccess:"复制成功",stop:"停止",copy:"复制",copied:"复制成功",dropAreaText:"将文件放到这里"},UserGuide:{skip:"跳过",next:"下一步",prev:"上一步",finish:"完成"},InputNumber:{},JsonViewer:{search:"查找",replace:"替换",replaceAll:"全部替换"},VideoPlayer:{rateChange:"切换速率至 ${rate}",qualityChange:"切换清晰度至${quality}",routeChange:"切换线路至${route}",mirror:"镜像",cancelMirror:"取消镜像",loading:"加载中...",stall:"加载失败",noResource:"暂无资源",videoError:"视频加载错误"},AIChatDialogue:{delete:"删除",deleteConfirm:"确认要删除吗?",deleteContent:"删除后将无法恢复!",copySuccess:"复制成功",loading:"请稍候...",reasoning:{completed:"已思考完成",thinking:"正在思考中..."},annotationText:"篇资料"},Feedback:{submit:"提交",cancel:"取消"},AIChatInput:{template:"模板",configure:"配置",selected:"已选 ${count} 个"},Sidebar:{linkAddSuccess:"已添加链接",linkRemoveSuccess:"已移除链接",enterLinkAddress:"输入链接地址",validateFailInfo:"验证失败,请重新上传",uploadFailInfo:"上传失败,请重试",uploadImgInfo:"点击上传图片或者拖拽图片到这里",defaultMcpInfo:"预设 MCP,不可关闭",searchPlaceholder:"请输入",emptyCustomMcpInfo:"暂无自定义 MCP",newMcpAdd:"自定义 MCP",mcpConfigure:"MCP 配置",annotationTitle:"参考来源",activeMCPNumber:"已激活 MCP 数:",copySuccess:"复制成功"},AudioPlayer:{backward:"后退 ${skipDuration} 秒",forward:"前进 ${skipDuration} 秒",prev:"上一首",next:"下一首",loop:"循环播放",volume:"音量",mediaError:"音频加载失败"}};class qi extends Ee.Component{renderChildren(i,r){const{componentName:o}=this.props;let l=i;i!=null&&i.code||(l=ed);const f=Te(ed,"dateFnsLocale"),d=Te(l,"dateFnsLocale",f),p=Te(l,"currency");return r(l[o],l.code,d,p)}render(){const{children:i}=this.props;return I.createElement(xa.Consumer,null,r=>{let{locale:o}=r;return I.createElement(z1.Consumer,null,l=>this.renderChildren(o||l,i))})}}qi.propTypes={componentName:v.string.isRequired,children:v.any};qi.defaultProps={componentName:""};const SE="semi";var CE=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{const{svg:r,spin:o=!1,rotate:l,style:f,className:d,prefixCls:p=SE,type:g,size:m="default",fill:_}=s,C=CE(s,["svg","spin","rotate","style","className","prefixCls","type","size","fill"]),b=Le(`${p}-icon`,{[`${p}-icon-extra-small`]:m==="extra-small",[`${p}-icon-small`]:m==="small",[`${p}-icon-default`]:m==="default",[`${p}-icon-large`]:m==="large",[`${p}-icon-extra-large`]:m==="extra-large",[`${p}-icon-spinning`]:o===!0,[`${p}-icon-${g}`]:!!g},d),x={};return Number.isSafeInteger(l)&&(x.transform=`rotate(${l}deg)`),Object.assign(x,f),I.createElement("span",Object.assign({role:"img",ref:i,"aria-label":g,className:b,style:x},C),_?I.cloneElement(r,{fill:_}):r)});B1.elementType="Icon";const Ur=(s,i)=>{const r=I.forwardRef((o,l)=>I.createElement(B1,Object.assign({svg:I.createElement(s),type:i,ref:l},o)));return r.elementType="Icon",r};function TE(s){return Ee.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),Ee.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M23 12a11 11 0 1 1-22 0 11 11 0 0 1 22 0Zm-9.5 5.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0ZM12 5a1.9 1.9 0 0 0-1.89 2l.3 5.5a1.59 1.59 0 0 0 3.17 0l.3-5.5c.07-1.09-.8-2-1.88-2Z",fill:"currentColor"}))}const bO=Ur(TE,"alert_circle");function EE(s){return Ee.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),Ee.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.08 7.6a1.5 1.5 0 0 1 2.12 0l5.66 5.65 5.66-5.65a1.5 1.5 0 1 1 2.12 2.12l-6.72 6.72a1.5 1.5 0 0 1-2.12 0L4.08 9.72a1.5 1.5 0 0 1 0-2.12Z",fill:"currentColor"}))}const OE=Ur(EE,"chevron_down");function PE(s){return Ee.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),Ee.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M19.64 16.44a1.5 1.5 0 0 1-2.12 0l-5.66-5.66-5.66 5.66a1.5 1.5 0 1 1-2.12-2.12L10.8 7.6a1.5 1.5 0 0 1 2.12 0l6.72 6.72a1.5 1.5 0 0 1 0 2.12Z",fill:"currentColor"}))}const bE=Ur(PE,"chevron_up");function xE(s){return Ee.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),Ee.createElement("path",{d:"M7 4c0-1.1.9-2 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2h-1V8c0-2-1-3-3-3H7V4Z",fill:"currentColor"}),Ee.createElement("path",{d:"M5 7a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2H5Z",fill:"currentColor"}))}const RE=Ur(xE,"copy");function kE(s){return Ee.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),Ee.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21.35 4.27c.68.47.86 1.4.38 2.08l-10 14.5a1.5 1.5 0 0 1-2.33.17l-6.5-7a1.5 1.5 0 0 1 2.2-2.04l5.23 5.63 8.94-12.96a1.5 1.5 0 0 1 2.08-.38Z",fill:"currentColor"}))}const IE=Ur(kE,"tick");function AE(s){return Ee.createElement("svg",Object.assign({viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",focusable:!1,"aria-hidden":!0},s),Ee.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm5.88-13.18-6.2 7.6a1.5 1.5 0 0 1-2.37 0l-3.5-4a1.5 1.5 0 1 1 2.37-1.84l2.3 2.46L15.5 8a1.5 1.5 0 1 1 2.38 1.82Z",fill:"currentColor"}))}const xO=Ur(AE,"tick_circle"),RO={BACKSPACE:8,TAB:9,ENTER:13,ESC:27,UP:38,DOWN:40},NE="Enter";function H1(s){return Te(s,"key")===NE}const Bf=Ea.PREFIX;class Sd extends I.PureComponent{constructor(i){super(i),this.copy=r=>{const{content:o,duration:l,onCopy:f}=this.props,d=sT(o);f&&f(r,o,d),this.setCopied(o,l)},this.setCopied=(r,o)=>{this.setState({copied:!0,item:r}),this._timeId=setTimeout(()=>{this.resetCopied()},o*1e3)},this.resetCopied=()=>{this._timeId&&(clearTimeout(this._timeId),this._timeId=null,this.setState({copied:!1,item:""}))},this.renderSuccessTip=()=>{const{successTip:r}=this.props;return typeof r<"u"?r:I.createElement(qi,{componentName:"Typography"},o=>I.createElement("span",null,I.createElement(IE,null),o.copied))},this.renderCopyIcon=()=>{const{icon:r}=this.props,o={role:"button",tabIndex:0,onClick:this.copy,onKeyPress:f=>H1(f)&&this.copy(f)},l=I.createElement("a",{className:`${Bf}-action-copy-icon`},I.createElement(RE,Object.assign({onClick:this.copy},o)));return I.isValidElement(r)?I.cloneElement(r,o):l},this.state={copied:!1,item:""}}componentWillUnmount(){this._timeId&&(clearTimeout(this._timeId),this._timeId=null)}render(){const{style:i,className:r,forwardRef:o,copyTip:l,render:f}=this.props,{copied:d}=this.state,p=Le(r,{[`${Bf}-action-copy`]:!d,[`${Bf}-action-copied`]:d});return f?f(d,this.copy,this.props):I.createElement(qi,{componentName:"Typography"},g=>I.createElement("span",{style:Object.assign({marginLeft:"4px"},i),className:p,ref:o},d?this.renderSuccessTip():I.createElement(zn,{content:typeof l<"u"?l:g.copy},this.renderCopyIcon())))}}Sd.propTypes={content:v.string,onCopy:v.func,successTip:v.node,copyTip:v.node,duration:v.number,style:v.object,className:v.string,icon:v.node};Sd.defaultProps={content:"",onCopy:q1,duration:3,style:{},className:""};const U1={PREFIX:`${qn}-popover`,ARROW:`${qn}-popover-icon-arrow`},W1={POSITION_SET:["top","topLeft","topRight","left","leftTop","leftBottom","right","rightTop","rightBottom","bottom","bottomLeft","bottomRight","leftTopOver","rightTopOver"],TRIGGER_SET:["hover","focus","click","custom","contextMenu"]},Lr={ARROW_BOUNDING:Object.assign(Object.assign({},ar.ARROW_BOUNDING),{offsetY:6,offsetX:0,height:8}),SPACING:4,SPACING_WITH_ARROW:10,DEFAULT_Z_INDEX:1030};var jE=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l0&&arguments[0]!==void 0?arguments[0]:{};const{position:i="",className:r,arrowStyle:o,popStyle:l}=s,f=jE(s,["position","className","arrowStyle","popStyle"]),d=i.indexOf("top")===0||i.indexOf("bottom")===0,p=Le(r,U1.ARROW),g=Te(o,"borderOpacity"),m=Te(o,"backgroundColor",Te(l,"backgroundColor")),_=Te(o,"borderColor",Te(l,"borderColor")),C=Object.assign(Object.assign({},f),{width:Lr.ARROW_BOUNDING.width,height:Lr.ARROW_BOUNDING.height,xmlns:"http://www.w3.org/2000/svg",className:p});return d?I.createElement("svg",Object.assign({},C),I.createElement("path",{d:"M0 0.5L0 1.5C4 1.5, 5.5 3, 7.5 5S10,8 12,8S14.5 7, 16.5 5S20,1.5 24,1.5L24 0.5L0 0.5z",style:{fill:_,opacity:g}}),I.createElement("path",{d:"M0 0L0 1C4 1, 5.5 2, 7.5 4S10,7 12,7S14.5 6, 16.5 4S20,1 24,1L24 0L0 0z",style:{fill:m}})):I.createElement("svg",Object.assign({},C),I.createElement("path",{d:"M0.5 0L1.5 0C1.5 4, 3 5.5, 5 7.5S8,10 8,12S7 14.5, 5 16.5S1.5,20 1.5,24L0.5 24L0.5 0z",style:{fill:_,opacity:g}}),I.createElement("path",{d:"M0 0L1 0C1 4, 2 5.5, 4 7.5S7,10 7,12S6 14.5, 4 16.5S1,20 1,24L0 24L0 0z",style:{fill:m}}))};var DE=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{var r;(r=this.tooltipRef.current)===null||r===void 0||r.focusTrigger()},this.renderPopCard=r=>{let{initialFocusRef:o}=r;const{content:l,contentClassName:f,prefixCls:d}=this.props,{direction:p}=this.context,g=Le(d,f,{[`${d}-rtl`]:p==="rtl"}),m=this.renderContentNode({initialFocusRef:o,content:l});return I.createElement("div",{className:g},I.createElement("div",{className:`${d}-content`},m))},this.renderContentNode=r=>{const{initialFocusRef:o,content:l}=r,f={initialFocusRef:o};return md(l)?l(f):l},this.tooltipRef=I.createRef()}render(){const i=this.props,{children:r,prefixCls:o,showArrow:l,arrowStyle:f={},arrowBounding:d,position:p,style:g,trigger:m}=i,_=DE(i,["children","prefixCls","showArrow","arrowStyle","arrowBounding","position","style","trigger"]);let{spacing:C}=this.props;const b={position:p,className:"",popStyle:g,arrowStyle:f},x=l?I.createElement(ME,Object.assign({},b)):!1;ca(C)&&(C=l?Lr.SPACING_WITH_ARROW:Lr.SPACING);const A=m==="click"||m==="custom"?"dialog":"tooltip";return I.createElement(zn,Object.assign({guardFocus:!0,ref:this.tooltipRef},_,{trigger:m,position:p,style:g,content:this.renderPopCard,prefixCls:o,spacing:C,showArrow:x,arrowBounding:d,role:A}),r)}}Fr.contextType=xa;Fr.propTypes={children:v.node,content:v.oneOfType([v.node,v.func]),visible:v.bool,autoAdjustOverflow:v.bool,motion:v.bool,position:v.oneOf(LE),margin:v.oneOfType([v.number,v.object]),mouseEnterDelay:v.number,mouseLeaveDelay:v.number,trigger:v.oneOf(FE).isRequired,contentClassName:v.oneOfType([v.string,v.array]),onVisibleChange:v.func,onClickOutSide:v.func,style:v.object,spacing:v.oneOfType([v.number,v.object]),zIndex:v.number,showArrow:v.bool,arrowStyle:v.shape({borderColor:v.string,backgroundColor:v.string,borderOpacity:v.oneOfType([v.string,v.number])}),arrowPointAtCenter:v.bool,arrowBounding:v.object,prefixCls:v.string,guardFocus:v.bool,disableArrowKeyDown:v.bool,condition:v.bool};Fr.__SemiComponentName__="Popover";Fr.defaultProps=ba(Fr.__SemiComponentName__,{arrowBounding:Lr.ARROW_BOUNDING,showArrow:!1,autoAdjustOverflow:!0,zIndex:Lr.DEFAULT_Z_INDEX,motion:!0,trigger:"hover",cancelText:"No",okText:"Yes",position:"bottom",prefixCls:U1.PREFIX,onClickOutSide:Ze,onEscKeyDown:Ze,closeOnEsc:!0,returnFocusOnClose:!0,guardFocus:!0,disableFocusListener:!0});let Ae;function Hf(s){if(!s)return 0;const i=s.match(/^\d*(\.\d*)?/);return i?Number(i[0]):0}function qE(s){return Array.prototype.slice.apply(s).map(r=>`${r}: ${s.getPropertyValue(r)};`).join("")}const zE=function(s,i){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"",o=arguments.length>3?arguments[3]:void 0,l=arguments.length>4?arguments[4]:void 0,f=arguments.length>5?arguments[5]:void 0,d=arguments.length>6?arguments[6]:void 0,p=arguments.length>7?arguments[7]:void 0;if(r.length===0)return"";Ae||(Ae=document.createElement("div"),Ae.setAttribute("aria-hidden","true"),document.body.appendChild(Ae));const g=window.getComputedStyle(s),m=qE(g),_=Hf(g.lineHeight),C=Math.round(_*(i+1)+Hf(g.paddingTop)+Hf(g.paddingBottom));Ae.setAttribute("style",m),Ae.style.position="fixed",Ae.style.left="0",g.getPropertyValue("width")==="auto"&&s.offsetWidth&&(Ae.style.width=`${s.offsetWidth}px`),Ae.style.height="auto",Ae.style.top="-999999px",Ae.style.zIndex="-1000",p&&(Ae.style.fontWeight="600"),Ae.style.textOverflow="clip",Ae.style.webkitLineClamp="none",Ae.innerHTML="";function b(){const W=Ae.scrollWidth<=Ae.offsetWidth,$=Ae.scrollHeight0){const W=document.createTextNode(f);x.appendChild(W)}Ae.appendChild(x),Object.values(Ta(o,"expand")).map(W=>W&&Ae.appendChild(W.cloneNode(!0)));function k(){Ae.innerHTML="",Ae.appendChild(x),Object.values(o).map(W=>W&&Ae.appendChild(W.cloneNode(!0)))}function R(W,$){const Y=W.length;return $?d==="end"?W.slice(0,$)+l:W.slice(0,$)+l+W.slice(Y-$,Y):l}function z(W,$){let Y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,M=arguments.length>3&&arguments[3]!==void 0?arguments[3]:$.length,N=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;const U=Math.floor((Y+M)/2),X=R($,U);if(W.textContent=X,Y>=M-1&&M>0)for(let ee=M;ee>=Y;ee-=1){const V=R($,ee);if(W.textContent=V,b())return V}else if(M===0)return l;return b()?z(W,$,U,M,U):z(W,$,Y,U,N)}let H=r;return b()||(k(),H=z(A,r,0,d==="middle"?Math.floor(r.length/2):r.length)),Ae.innerHTML="",H},V1=I.createContext("normal");var fa;(function(s){s.Width="width",s.Height="height",s.All="all"})(fa||(fa={}));class Cd extends $r{constructor(i){var r;super(i),r=this,this.formerPropertyValue=new Map,this.getElement=()=>{try{const o=this.childNode||this;return ji(o)||(o instanceof Element?o:null)}catch{return null}},this.handleResizeEventTriggered=o=>{var l,f,d,p;if(this.props.observerProperty===fa.All)(f=(l=this.props).onResize)===null||f===void 0||f.call(l,o);else{const g=[];for(const m of o)this.formerPropertyValue.has(m.target)?m.contentRect[this.props.observerProperty]!==this.formerPropertyValue.get(m.target)&&(this.formerPropertyValue.set(m.target,m.contentRect[this.props.observerProperty]),g.push(m)):(this.formerPropertyValue.set(m.target,m.contentRect[this.props.observerProperty]),g.push(m));g.length>0&&((p=(d=this.props).onResize)===null||p===void 0||p.call(d,g))}},this.observeElement=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const l=r.getElement();if(r.observer||(r.observer=new ResizeObserver(r.handleResizeEventTriggered)),!(l&&l instanceof Element)){r.observer.disconnect();return}l===r.element&&!o||(r.observer.disconnect(),r.element=l,r.observer.observe(l),r.props.observeParent&&l.parentNode&&l.parentNode.ownerDocument&&l.parentNode.ownerDocument.defaultView&&l.parentNode instanceof l.parentNode.ownerDocument.defaultView.HTMLElement&&(r._parentNode=l.parentNode,r.observer.observe(r._parentNode)))},this.mergeRef=(o,l)=>{this.childNode=l,typeof o=="function"?o(l):typeof o=="object"&&o&&"current"in o&&(o.current=l)},globalThis.ResizeObserver&&(this.observer=new ResizeObserver(this.handleResizeEventTriggered))}componentDidMount(){var i;(i=this.observeElement)===null||i===void 0||i.call(this)}componentDidUpdate(i){var r;(r=this.observeElement)===null||r===void 0||r.call(this,this.props.observeParent!==i.observeParent)}componentWillUnmount(){this.observer&&(this.observer.disconnect(),this.observer=null,this.element=null)}render(){const i=I.Children.only(this.props.children),r=L1(i);return I.cloneElement(i,{ref:o=>this.mergeRef(r,o)})}}Cd.propTypes={onResize:v.func,observeParent:v.bool,observerProperty:v.string,delayTick:v.number};Cd.defaultProps={onResize:()=>{},observeParent:!1,observerProperty:"all",delayTick:0};var Uf=function(s,i,r,o){function l(f){return f instanceof r?f:new r(function(d){d(f)})}return new(r||(r=Promise))(function(f,d){function p(_){try{m(o.next(_))}catch(C){d(C)}}function g(_){try{m(o.throw(_))}catch(C){d(C)}}function m(_){_.done?f(_.value):l(_.value).then(p,g)}m((o=o.apply(s,i||[])).next())})},$E=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{const{mark:r,code:o,underline:l,strong:f,link:d,disabled:p}=s;let g=i;const m=(_,C)=>{let b={};_&&(typeof _=="object"&&(b=Object.assign({},_)),g=I.createElement(C,b,g))};return m(r,"mark"),m(o,"code"),m(l&&!d,"u"),m(f,"strong"),m(s.delete,"del"),m(d,p?"span":"a"),g};class dr extends Ee.Component{constructor(i){super(i),this.observerTakingEffect=!1,this.onResize=r=>Uf(this,void 0,void 0,function*(){return this.rafId&&window.cancelAnimationFrame(this.rafId),new Promise(o=>{this.rafId=window.requestAnimationFrame(()=>Uf(this,void 0,void 0,function*(){yield this.getEllipsisState(),o()}))})}),this.canUseCSSEllipsis=()=>{const{copyable:r}=this.props,{expandable:o,expandText:l,pos:f,suffix:d}=this.getEllipsisOpt();return!o&&ra(l)&&!r&&f==="end"&&!d.length},this.shouldTruncated=r=>!r||r<1?!1:r<=1?this.compareSingleRow():this.wrapperRef.current.scrollHeight>this.wrapperRef.current.offsetHeight,this.compareSingleRow=()=>{if(!(document&&document.createRange))return!1;const r=this.wrapperRef.current,o=r.clientWidth,l=window.getComputedStyle(r),f=parseFloat(l.paddingLeft)||0,d=parseFloat(l.paddingRight)||0,p=Math.max(0,o-f-d),g=Array.from(r.childNodes),m=document.createRange(),_=g.reduce((C,b)=>{var x;return m.selectNodeContents(b),C+((x=m.getBoundingClientRect().width)!==null&&x!==void 0?x:0)},0);return m.detach(),_>p},this.showTooltip=()=>{var r,o;const{isOverflowed:l,isTruncated:f,expanded:d}=this.state,{showTooltip:p,expandable:g,expandText:m}=this.getEllipsisOpt(),_=this.canUseCSSEllipsis(),C=!d&&(_?l:f),x=!g&&ra(m)&&C&&p;if(!x)return x;const A={type:"tooltip"};return typeof p=="object"?p.type&&p.type.toLowerCase()==="popover"?ZS({opts:{showArrow:!0}},p,{opts:{className:Le({[`${Xe}-ellipsis-popover`]:!0,[(r=p==null?void 0:p.opts)===null||r===void 0?void 0:r.className]:!!(!((o=p==null?void 0:p.opts)===null||o===void 0)&&o.className)})}}):Object.assign(Object.assign({},A),p):A},this.onHover=()=>{if(this.canUseCSSEllipsis()){const{rows:o,suffix:l,pos:f}=this.getEllipsisOpt(),d=this.shouldTruncated(o);this.setState({isOverflowed:d,isTruncated:!1});return}},this.getEllipsisState=()=>Uf(this,void 0,void 0,function*(){const{rows:r,suffix:o,pos:l,showTooltip:f}=this.getEllipsisOpt(),{children:d,strong:p}=this.props;if(!this.wrapperRef||!this.wrapperRef.current){yield this.onResize();return}const{expanded:g}=this.state;if(this.canUseCSSEllipsis()){if(f){const x=this.shouldTruncated(r);return new Promise(A=>{this.setState({isOverflowed:x,isTruncated:!1},A)})}return}if(FS(d))return new Promise(x=>{this.setState({isTruncated:!1,isOverflowed:!1},x)});if(Fi("children"in this.props&&typeof d!="string","[Semi Typography] Only children with pure text could be used with ellipsis at this moment."),!r||r<0||g)return;const _={expand:this.expandRef.current,copy:this.copyRef&&this.copyRef.current},C=Array.isArray(d)?d.join(""):String(d),b=zE(this.wrapperRef.current,r,C,_,BE,o,l,p);return new Promise(x=>{this.setState({isOverflowed:!1,ellipsisContent:b,isTruncated:C!==b},x)})}),this.toggleOverflow=r=>{const{onExpand:o,expandable:l,collapsible:f}=this.getEllipsisOpt(),{expanded:d}=this.state;o&&o(!d,r),(l&&!d||f&&d)&&this.setState({expanded:!d})},this.getEllipsisOpt=()=>{const{ellipsis:r}=this.props;return r?Object.assign({rows:1,expandable:!1,pos:"end",suffix:"",showTooltip:!1,collapsible:!1,expandText:r.expandable?this.expandStr:void 0,collapseText:r.collapsible?this.collapseStr:void 0},typeof r=="object"?r:null):{}},this.renderExpandable=()=>{const{expanded:r,isTruncated:o}=this.state;if(!o)return null;const{expandText:l,expandable:f,collapseText:d,collapsible:p}=this.getEllipsisOpt(),g=!f&&ra(l),m=!p&&ra(d);let _;return!r&&!g?_=l:r&&!m&&(_=d),!g||!m?I.createElement("a",{role:"button",tabIndex:0,className:`${Xe}-ellipsis-expand`,key:"expand",ref:this.expandRef,"aria-label":_,onClick:this.toggleOverflow,onKeyPress:C=>H1(C)&&this.toggleOverflow(C)},_):null},this.getEllipsisStyle=()=>{const{ellipsis:r,component:o}=this.props;if(!r)return{ellipsisCls:"",ellipsisStyle:{}};const{rows:l}=this.getEllipsisOpt(),{expanded:f}=this.state,d=!f&&this.canUseCSSEllipsis(),p=Le({[`${Xe}-ellipsis`]:!0,[`${Xe}-ellipsis-single-line`]:l===1,[`${Xe}-ellipsis-multiple-line`]:l>1,[`${Xe}-ellipsis-multiple-line-text`]:l>1&&o==="span",[`${Xe}-ellipsis-overflow-ellipsis`]:l===1&&d,[`${Xe}-ellipsis-overflow-ellipsis-text`]:l===1&&d&&o==="span"}),g=d&&l>1?{WebkitLineClamp:l}:{};return{ellipsisCls:p,ellipsisStyle:g}},this.renderEllipsisText=r=>{const{suffix:o}=r,{children:l}=this.props,{isTruncated:f,expanded:d,ellipsisContent:p}=this.state;return d||!f?I.createElement("span",{onMouseEnter:this.onHover},l,o&&o.length?o:null):I.createElement("span",{onMouseEnter:this.onHover},p,o)},this.state={editable:!1,copied:!1,isOverflowed:!1,ellipsisContent:i.children,expanded:!1,isTruncated:!1,prevChildren:null},this.wrapperRef=I.createRef(),this.expandRef=I.createRef(),this.copyRef=I.createRef()}componentDidMount(){this.props.ellipsis&&this.onResize().then(()=>yd(()=>this.observerTakingEffect=!0,1))}static getDerivedStateFromProps(i,r){const{prevChildren:o}=r,l={};return l.prevChildren=i.children,i.ellipsis&&o!==i.children&&(l.isOverflowed=!1,l.ellipsisContent=i.children,l.expanded=!1,l.isTruncated=!0),l}componentDidUpdate(i){this.props.children!==i.children&&(this.forceUpdate(),this.props.ellipsis&&this.onResize())}componentWillUnmount(){this.rafId&&window.cancelAnimationFrame(this.rafId)}renderOperations(){return I.createElement(I.Fragment,null,this.renderExpandable(),this.renderCopy())}renderCopy(){var i;const{copyable:r,children:o}=this.props;if(!r)return null;const l=(i=r==null?void 0:r.content)!==null&&i!==void 0?i:o;let f,d=!1;Array.isArray(l)?(f="",l.forEach(g=>{typeof g=="object"&&(d=!0),f+=String(g)})):(typeof l!="object"||(d=!0),f=String(l)),Fi(d,"Content to be copied in Typography is a object, it will case a [object Object] mistake when copy to clipboard.");const p=Object.assign({content:f,duration:3},typeof r=="object"?r:null);return I.createElement(Sd,Object.assign({},p,{forwardRef:this.copyRef}))}renderIcon(){const{icon:i,size:r}=this.props,o=r==="inherit"?this.context:r;if(!i)return null;const l=o==="small"?"small":"default";return I.createElement("span",{className:`${Xe}-icon`,"x-semi-prop":"icon"},FC(i)?I.cloneElement(i,{size:l}):i)}renderContent(){const i=this.props,{component:r,children:o,className:l,type:f,spacing:d,disabled:p,style:g,ellipsis:m,icon:_,size:C,link:b,heading:x,weight:A}=i,k=$E(i,["component","children","className","type","spacing","disabled","style","ellipsis","icon","size","link","heading","weight"]),R=Ta(k,["strong","editable","mark","copyable","underline","code","delete"]),z=C==="inherit"?this.context:C,H=this.renderIcon(),W=this.getEllipsisOpt(),{ellipsisCls:$,ellipsisStyle:Y}=this.getEllipsisStyle();let M=m?this.renderEllipsisText(W):o;const N=Le({[`${Xe}-link-text`]:b,[`${Xe}-link-underline`]:this.props.underline&&b});M=HE(this.props,I.createElement(I.Fragment,null,H,this.props.link?I.createElement("span",{className:N},M):M));const U=/^h[1-6]$/,X=$S(x)&&U.test(x),ee=Le(l,$,{[`${Xe}-${f}`]:f&&!b,[`${Xe}-${z}`]:z,[`${Xe}-link`]:b,[`${Xe}-disabled`]:p,[`${Xe}-${d}`]:d,[`${Xe}-${x}`]:X,[`${Xe}-${x}-weight-${A}`]:X&&A&&isNaN(Number(A))}),V=Object.assign(Object.assign({},isNaN(Number(A))?{}:{fontWeight:A}),g);return I.createElement(Oa,Object.assign({tooltipRef:this.wrapperRef,className:ee,style:Object.assign(Object.assign({},V),Y),component:r,forwardRef:this.wrapperRef},R),M,this.renderOperations())}renderTipWrapper(){const{children:i}=this.props,r=this.showTooltip(),o=this.renderContent();if(r){const{type:l,opts:f,renderTooltip:d}=r;return md(d)?d(i,o):l.toLowerCase()==="popover"?I.createElement(Fr,Object.assign({content:i,position:"top"},f),o):I.createElement(zn,Object.assign({content:i,position:"top"},f),o)}else return o}render(){var i=this;const{size:r}=this.props,o=r==="inherit"?this.context:r,l=I.createElement(V1.Provider,{value:o},I.createElement(qi,{componentName:"Typography"},f=>(this.expandStr=f.expand,this.collapseStr=f.collapse,this.renderTipWrapper())));return this.props.ellipsis?I.createElement(Cd,{onResize:function(){i.observerTakingEffect&&i.onResize(...arguments)},observeParent:!0,observerProperty:fa.Width},l):l}}dr.propTypes={children:v.node,copyable:v.oneOfType([v.shape({text:v.string,onCopy:v.func,successTip:v.node,copyTip:v.node}),v.bool]),delete:v.bool,disabled:v.bool,ellipsis:v.oneOfType([v.shape({rows:v.number,expandable:v.bool,expandText:v.string,onExpand:v.func,suffix:v.string,showTooltip:v.oneOfType([v.shape({type:v.string,opts:v.object}),v.bool]),collapsible:v.bool,collapseText:v.string,pos:v.oneOf(["end","middle"])}),v.bool]),mark:v.bool,underline:v.bool,link:v.oneOfType([v.object,v.bool]),spacing:v.oneOf(st.SPACING),strong:v.bool,size:v.oneOf(st.SIZE),type:v.oneOf(st.TYPE),style:v.object,className:v.string,icon:v.oneOfType([v.node,v.string]),heading:v.string,component:v.string};dr.defaultProps={children:null,copyable:!1,delete:!1,disabled:!1,ellipsis:!1,icon:"",mark:!1,underline:!1,strong:!1,link:!1,type:"primary",spacing:"normal",size:"normal",style:{},className:""};dr.contextType=V1;class Td extends Ee.PureComponent{render(){return I.createElement(dr,Object.assign({component:"span"},this.props))}}Td.propTypes={copyable:v.oneOfType([v.object,v.bool]),delete:v.bool,disabled:v.bool,icon:v.oneOfType([v.node,v.string]),ellipsis:v.oneOfType([v.object,v.bool]),mark:v.bool,underline:v.bool,link:v.oneOfType([v.object,v.bool]),strong:v.bool,type:v.oneOf(st.TYPE),size:v.oneOf(st.SIZE),style:v.object,className:v.string,code:v.bool,component:v.string,weight:v.number};Td.defaultProps={copyable:!1,delete:!1,disabled:!1,icon:"",ellipsis:!1,mark:!1,underline:!1,strong:!1,link:!1,type:"primary",style:{},size:"normal",className:""};var UE=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{const p=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];let g=0;for(;d>=1e3;)d/=1e3,g++;return`${this.truncatePrecision(d)} ${p[g]}`},"bytes-binary":d=>{const p=["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];let g=0;for(;d>=1024;)d/=1024,g++;return`${this.truncatePrecision(d)} ${p[g]}`},percentages:d=>`${this.truncatePrecision(d*100)}%`,exponential:d=>{const g=d.toExponential(this.precision+2).split("e");return`${this.truncatePrecision(Number(g[0]))}e${g[1]}`}},this.truncateMethods={ceil:Math.ceil,floor:Math.floor,round:Math.round},this.isDiyParser=typeof f<"u",this.content=i,this.rule=r,this.precision=o,this.truncate=l,this.parser=f}format(){return this.isDiyParser?this.parser(this.content):this.rule==="text"?Wf(this.content).map(i=>Vf(i)?this.truncatePrecision(i):i).join(""):this.rule==="numbers"?Wf(this.content).filter(i=>Vf(i)).map(i=>this.truncatePrecision(i)).join(","):Wf(this.content).map(i=>Vf(i)?this.ruleMethods[this.rule](Number(i)):i).join("")}truncatePrecision(i){const r=this.truncateMethods[this.truncate](Number(i)*Math.pow(10,this.precision))/Math.pow(10,this.precision),o=r.toString().split(".");if(o.length===1)return r.toFixed(this.precision);const l=o[1].length;return ltypeof r=="string"||typeof r=="number"?new VE(String(r),this.props.rule,this.props.precision,this.props.truncate,this.props.parser).format():typeof r=="function"?this.formatNodeDFS(r()):typeof r=="object"&&"children"in r.props?Object.assign(Object.assign({},r),{props:Object.assign(Object.assign({},r.props),{children:this.formatNodeDFS(r.props.children)})}):r),i.length===1?i[0]:i}render(){const i=Object.assign({},this.props);return delete i.rule,delete i.parser,i.children=this.formatNodeDFS(this.props.children),I.createElement(dr,Object.assign({component:"span"},i))}}Pd.propTypes={rule:v.oneOf(st.RULE),precision:v.number,truncate:v.oneOf(st.TRUNCATE),parser:v.func,copyable:v.oneOfType([v.object,v.bool]),delete:v.bool,disabled:v.bool,icon:v.oneOfType([v.node,v.string]),mark:v.bool,underline:v.bool,link:v.oneOfType([v.object,v.bool]),strong:v.bool,type:v.oneOf(st.TYPE),size:v.oneOf(st.SIZE),style:v.object,className:v.string,code:v.bool,component:v.string};Pd.defaultProps={rule:"text",precision:0,truncate:"round",parser:void 0,copyable:!1,delete:!1,icon:"",mark:!1,underline:!1,strong:!1,link:!1,type:"primary",style:{},size:"normal",className:""};const ka=Oa;ka.Text=Td;ka.Title=Ed;ka.Paragraph=Od;ka.Numeral=Pd;var KE=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l0&&arguments[0]!==void 0?arguments[0]:{};const{id:i,className:r,customIconCls:o}=s,l=KE(s,["id","className","customIconCls"]),f=Te(sr,"config.overrideDefaultProps.Spin.indicator");if(f&&I.isValidElement(f))return I.cloneElement(f,{className:Le({[o]:o,[r]:r})});const d="linearGradient-semi-spin",[p,g]=Ee.useState(()=>ca(i)?d:`linearGradient-${i}`);return Ee.useEffect(()=>{if(!ca(i)){g(`linearGradient-${i}`);return}const m=vd({prefix:"semi-spin-gradient"});g(`linearGradient-${m}`)},[i]),I.createElement("svg",Object.assign({},l,{className:r,width:"48",height:"48",viewBox:"0 0 36 36",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,"data-icon":"spin"}),I.createElement("defs",null,I.createElement("linearGradient",{x1:"0%",y1:"100%",x2:"100%",y2:"100%",id:p},I.createElement("stop",{stopColor:"currentColor",stopOpacity:"0",offset:"0%"}),I.createElement("stop",{stopColor:"currentColor",stopOpacity:"0.50",offset:"39.9430698%"}),I.createElement("stop",{stopColor:"currentColor",offset:"100%"}))),I.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},I.createElement("rect",{fillOpacity:"0.01",fill:"none",x:"0",y:"0",width:"36",height:"36"}),I.createElement("path",{d:"M34,18 C34,9.163444 26.836556,2 18,2 C11.6597233,2 6.18078805,5.68784135 3.59122325,11.0354951",stroke:`url(#${p})`,strokeWidth:"4",strokeLinecap:"round"})))}var Kf,Xy;function GE(){if(Xy)return Kf;Xy=1;var s=id(),i=A1(),r=zr();function o(l,f,d){for(var p=-1,g=f.length,m={};++p"u"&&this._adapter.addActiveKey(d)}}class rO extends Bi{constructor(i){super(Object.assign({},i)),this.updateDOMInRenderTree=r=>{this._adapter.setDOMInRenderTree(r)},this.updateDOMHeight=r=>{this._adapter.setDOMHeight(r)},this.updateVisible=r=>{this._adapter.setVisible(r)},this.updateIsTransitioning=r=>{this._adapter.setIsTransitioning(r)}}}const n1={PREFIX:`${qn}-collapsible`};class ur extends $r{constructor(i){super(i),this.domRef=I.createRef(),this.hasBeenRendered=!1,this.handleResize=r=>{const o=r[0];if(o){const l=ur.getEntryInfo(o);this.foundation.updateDOMHeight(l.height),this.foundation.updateDOMInRenderTree(l.isShown)}},this.isChildrenInRenderTree=()=>this.domRef.current?this.domRef.current.offsetHeight>0:!1,this.state={domInRenderTree:!1,domHeight:0,visible:this.props.isOpen,isTransitioning:!1,cacheIsOpen:this.props.isOpen},this.foundation=new rO(this.adapter)}get adapter(){return Object.assign(Object.assign({},super.adapter),{setDOMInRenderTree:i=>{this.state.domInRenderTree!==i&&this.setState({domInRenderTree:i})},setDOMHeight:i=>{this.state.domHeight!==i&&this.setState({domHeight:i})},setVisible:i=>{this.state.visible!==i&&this.setState({visible:i})},setIsTransitioning:i=>{this.state.isTransitioning!==i&&this.setState({isTransitioning:i})}})}componentDidMount(){super.componentDidMount(),this.resizeObserver=new ResizeObserver(this.handleResize),this.resizeObserver.observe(this.domRef.current);const i=this.isChildrenInRenderTree();this.foundation.updateDOMInRenderTree(i),i&&this.foundation.updateDOMHeight(this.domRef.current.scrollHeight)}static getDerivedStateFromProps(i,r){const o={},l=i.isOpen!==r.cacheIsOpen;return l&&(i.isOpen||!i.motion)&&(o.visible=i.isOpen),i.motion&&l&&(o.isTransitioning=!0),o.cacheIsOpen=i.isOpen,o}componentDidUpdate(i,r,o){const l=Object.keys(t1(this.props,["reCalcKey"])).filter(d=>!Li(this.props[d],i[d])),f=Object.keys(t1(this.state,["domInRenderTree"])).filter(d=>!Li(this.state[d],r[d]));l.includes("reCalcKey")&&this.foundation.updateDOMHeight(this.domRef.current.scrollHeight),f.includes("domInRenderTree")&&this.state.domInRenderTree&&this.foundation.updateDOMHeight(this.domRef.current.scrollHeight)}componentWillUnmount(){super.componentWillUnmount(),this.resizeObserver.disconnect()}render(){const{isOpen:i,collapseHeight:r,collapseHeightAdaptive:o}=this.props,l=o?Math.min(this.state.domHeight,r):r,f=Object.assign({overflow:"hidden",height:i?this.state.domHeight:l,opacity:i||!this.props.fade||r!==0?1:0,transitionDuration:`${this.props.motion&&this.state.isTransitioning?this.props.duration:0}ms`},this.props.style),d=Le(`${n1.PREFIX}-wrapper`,{[`${n1.PREFIX}-transition`]:this.props.motion&&this.state.isTransitioning},this.props.className),p=this.props.keepDOM&&(this.props.lazyRender?this.hasBeenRendered:!0)||this.props.collapseHeight!==0||this.state.visible||this.props.isOpen;return p&&!this.hasBeenRendered&&(this.hasBeenRendered=!0),I.createElement("div",Object.assign({className:d,style:f,onTransitionEnd:()=>{var g,m;this.props.isOpen||this.foundation.updateVisible(!1),this.foundation.updateIsTransitioning(!1),(m=(g=this.props).onMotionEnd)===null||m===void 0||m.call(g)}},this.getDataAttr(this.props)),I.createElement("div",{"x-semi-prop":"children",ref:this.domRef,style:{overflow:"hidden"},id:this.props.id},p&&this.props.children))}}ur.__SemiComponentName__="Collapsible";ur.defaultProps=ba(ur.__SemiComponentName__,{isOpen:!1,duration:250,motion:!0,keepDOM:!1,lazyRender:!1,collapseHeight:0,collapseHeightAdaptive:!1,fade:!1});ur.getEntryInfo=s=>{let i;s.borderBoxSize?i=!(s.borderBoxSize[0].blockSize===0&&s.borderBoxSize[0].inlineSize===0):i=!(s.contentRect.height===0&&s.contentRect.width===0);let r=0;return s.borderBoxSize?r=Math.ceil(s.borderBoxSize[0].blockSize):r=s.target.clientHeight,{isShown:i,height:r}};const K1=I.createContext({});var iO=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{var o;(this.context.clickHeaderToExpand||!((o=this.headerExpandIconTriggerRef.current)===null||o===void 0)&&o.contains(r.target))&&this.context.onClick(i,r)}}componentDidMount(){this.ariaID=vd({})}renderHeader(i){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const{showArrow:o,header:l,extra:f}=this.props;let{expandIcon:d,collapseIcon:p}=this.context;const{expandIconPosition:g}=this.context;typeof d>"u"&&(d=I.createElement(OE,null)),typeof p>"u"&&(p=I.createElement(bE,null));const m=I.createElement("span",{ref:this.headerExpandIconTriggerRef,"aria-hidden":"true",className:Le([`${Vt.PREFIX}-header-icon`,{[`${Vt.PREFIX}-header-iconDisabled`]:!r}])},r&&i?p:d),_=g==="left";return typeof l=="string"?I.createElement(I.Fragment,null,o&&(_?m:null),I.createElement("span",null,l),I.createElement("span",{className:`${Vt.PREFIX}-header-right`},I.createElement("span",null,f),o&&(_?null:m))):I.createElement(I.Fragment,null,o&&(_?m:null),l,o&&(_?null:m))}render(){const i=this.props,{className:r,children:o,itemKey:l,reCalcKey:f,header:d,extra:p,showArrow:g,disabled:m}=i,_=iO(i,["className","children","itemKey","reCalcKey","header","extra","showArrow","disabled"]),{keepDOM:C,expandIconPosition:b,activeSet:x,motion:A,lazyRender:k}=this.context,R=x.has(l),z=Le(r,{[`${Vt.PREFIX}-item`]:!0,[`${Vt.PREFIX}-item-active`]:R}),H=Le({[`${Vt.PREFIX}-header`]:!0,[`${Vt.PREFIX}-header-disabled`]:m,[`${Vt.PREFIX}-header-iconLeft`]:b==="left"}),W=Le({[`${Vt.PREFIX}-content`]:!0});return I.createElement("div",Object.assign({className:z},_),I.createElement("div",{role:"button",tabIndex:0,className:H,"aria-disabled":m,"aria-expanded":R?"true":"false","aria-owns":this.ariaID,onClick:$=>!m&&this.handleClick(l,$)},this.renderHeader(R,o!==void 0&&!m)),o&&I.createElement(ur,{lazyRender:k,isOpen:R,keepDOM:C,motion:A,onMotionEnd:this.props.onMotionEnd,reCalcKey:f},I.createElement("div",{className:W,"aria-hidden":!R,id:this.ariaID},I.createElement("div",{className:`${Vt.PREFIX}-content-wrapper`},o))))}}Ia.contextType=K1;Ia.propTypes={itemKey:v.string,extra:v.node,header:v.oneOfType([v.string,v.node]),className:v.string,reCalcKey:v.oneOfType([v.string,v.number]),showArrow:v.bool,disabled:v.bool};Ia.defaultProps={showArrow:!0,disabled:!1};var oO=function(s,i){var r={};for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&i.indexOf(o)<0&&(r[o]=s[o]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,o=Object.getOwnPropertySymbols(s);l{this.foundation.handleChange(o,l)},this.foundation=new nO(this.adapter);const r=this.foundation.initActiveKey();this.state={activeSet:new Set(r)},this.onChange=this.onChange.bind(this)}get adapter(){return Object.assign(Object.assign({},super.adapter),{handleChange:(i,r)=>this.props.onChange(i,r),addActiveKey:i=>this.setState({activeSet:i})})}static getDerivedStateFromProps(i,r){if(i.activeKey){const o=Array.isArray(i.activeKey)?i.activeKey:[i.activeKey],l=new Set(o);return Li(l,r.activeSet)?r:Object.assign(Object.assign({},r),{activeSet:l})}return r}componentWillUnmount(){this.foundation.destroy()}render(){const i=this.props,{defaultActiveKey:r,lazyRender:o,accordion:l,style:f,motion:d,className:p,keepDOM:g,expandIconPosition:m,expandIcon:_,collapseIcon:C,children:b,clickHeaderToExpand:x}=i;oO(i,["defaultActiveKey","lazyRender","accordion","style","motion","className","keepDOM","expandIconPosition","expandIcon","collapseIcon","children","clickHeaderToExpand"]);const A=Le(Vt.PREFIX,p),{activeSet:k}=this.state;return I.createElement("div",Object.assign({className:A,style:f},this.getDataAttr(this.props)),I.createElement(K1.Provider,{value:{activeSet:k,expandIcon:_,collapseIcon:C,clickHeaderToExpand:x,keepDOM:g,expandIconPosition:m,onClick:this.onChange,motion:d,lazyRender:o}},b))}}zi.Panel=Ia;zi.propTypes={activeKey:v.oneOfType([v.string,v.array]),defaultActiveKey:v.oneOfType([v.string,v.array]),accordion:v.bool,clickHeaderToExpand:v.bool,onChange:v.func,expandIcon:v.node,collapseIcon:v.node,style:v.object,className:v.string,keepDOM:v.bool,motion:v.oneOfType([v.bool,v.func,v.object]),expandIconPosition:v.oneOf(tO.iconPosition),lazyRender:v.bool};zi.__SemiComponentName__="Collapse";zi.defaultProps=ba(zi.__SemiComponentName__,{defaultActiveKey:"",clickHeaderToExpand:!0,onChange:q1,expandIconPosition:"right",lazyRender:!1});class G1 extends Ee.Component{constructor(i){super(i),this.state={}}render(){const{children:i,locale:r}=this.props;return I.createElement(z1.Provider,{value:r},i)}}G1.propTypes={locale:v.object,children:v.node};G1.defaultProps={locale:ed};var sa={},r1;function aO(){if(r1)return sa;r1=1;var s=N1();return sa.createRoot=s.createRoot,sa.hydrateRoot=s.hydrateRoot,sa}var IO=aO();const AO={code:"en-US",dateFnsLocale:HT,currency:"USD",Pagination:{pageSize:"Items per page: ${pageSize}",total:"Total pages: ${total}",jumpTo:"Jump to",page:" page"},Modal:{confirm:"Confirm",cancel:"Cancel"},Tabs:{more:"More"},TimePicker:{placeholder:{time:"Select time",timeRange:"Select a time range"},begin:"Start Time",end:"End Time",hour:"",minute:"",second:"",AM:"AM",PM:"PM"},DatePicker:{placeholder:{date:"Select date",dateTime:"Select date and time",dateRange:["Start date","End date"],dateTimeRange:["Start date","End date"],monthRange:["Start month","End month"]},presets:"Presets",footer:{confirm:"Confirm",cancel:"Cancel"},selectDate:"Select Date",selectTime:"Select Time",year:"year",month:"month",day:"day",monthText:"${month} ${year}",months:{1:"Jan",2:"Feb",3:"Mar",4:"Apr",5:"May",6:"Jun",7:"Jul",8:"Aug",9:"Sep",10:"Oct",11:"Nov",12:"Dec"},fullMonths:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},weeks:{Mon:"Mon",Tue:"Tue",Wed:"Wed",Thu:"Thu",Fri:"Fri",Sat:"Sat",Sun:"Sun"},localeFormatToken:{FORMAT_SWITCH_DATE:"MM/dd/yyyy"}},Popconfirm:{confirm:"Confirm",cancel:"Cancel"},Navigation:{collapseText:"Collapse Sidebar",expandText:"Expand Sidebar"},Table:{emptyText:"No Result",pageText:"Showing ${currentStart} to ${currentEnd} of ${total}",descend:"Click to descend",ascend:"Click to ascend",cancelSort:"Cancel sorting",confirmFilter:"OK",resetFilter:"Reset"},Select:{emptyText:"No Result",createText:"Create"},Cascader:{emptyText:"No Result"},Tree:{emptyText:"No Result",searchPlaceholder:"Search"},List:{emptyText:"No Result"},Calendar:{allDay:"All Day",AM:"${time} AM",PM:"${time} PM",datestring:"",remaining:"${remained} more"},Upload:{mainText:"Click to Upload File or Drag File to here",illegalTips:"This type of file is not supported",legalTips:"Release and start uploading",retry:"Retry",replace:"Replace File",clear:"Clear",selectedFiles:"Selected Files",illegalSize:"Illegal file size",fail:"Upload fail",cropTitle:"Crop Image",cropOk:"OK",cropCancel:"Cancel"},TreeSelect:{searchPlaceholder:"Search"},Typography:{copy:"Copy",copied:"Copied",expand:"Expand",collapse:"Collapse"},Transfer:{emptyLeft:"No Data",emptySearch:"No search results",emptyRight:"No content, check from the left",placeholder:"Search",clear:"Clear",selectAll:"Select all",clearSelectAll:"Unselect all",total:"Total items: ${total}",selected:"Items selected: ${total}"},Form:{optional:"(optional)"},Image:{preview:"Preview",loading:"Loading",loadError:"Failed to load",prevTip:"Previous",nextTip:"Next",zoomInTip:"Zoom in",zoomOutTip:"Zoom out",rotateTip:"Rotate",downloadTip:"Download",adaptiveTip:"Adapt to the page",originTip:"Original size"},Chat:{deleteConfirm:"Are you sure you want to delete this session?",clearContext:"Context cleared",copySuccess:"Copy successful.",stop:"Stop",copy:"Copy",copied:"Copied",dropAreaText:"Put the file here"},UserGuide:{skip:"Skip",next:"Next",prev:"Prev",finish:"Finish"},InputNumber:{},JsonViewer:{search:"Search",replace:"Replace",replaceAll:"Replace All"},VideoPlayer:{rateChange:"Switch rate to ${rate}",qualityChange:"Switch quality to ${quality}",routeChange:"Switch route to ${route}",mirror:"Mirror",cancelMirror:"Cancel mirror",loading:"Loading...",stall:"Loading failed",noResource:"No resource",videoError:"Video load error"},AIChatDialogue:{delete:"Delete",deleteConfirm:"Are you sure you want to delete this message?",deleteContent:"This message will be permanently deleted and cannot be recovered.",copySuccess:"Copy successful.",loading:"Loading...",reasoning:{completed:"Reasoning completed",thinking:"Thinking..."},annotationText:"pieces of information"},Feedback:{submit:"Submit",cancel:"Cancel"},AIChatInput:{template:"Template",configure:"Configure",selected:"Selected ${count} items"},Sidebar:{linkAddSuccess:"Link added successfully",linkRemoveSuccess:"Link removed successfully",enterLinkAddress:"Enter link address",validateFailInfo:"Verification failed, please upload again",uploadFailInfo:"Upload failed, please try again",uploadImgInfo:"Click to upload image or drag image here",defaultMcpInfo:"Preset MCP, cannot be closed",searchPlaceholder:"Please enter",emptyCustomMcpInfo:"No custom MCP yet",newMcpAdd:"Custom MCP",mcpConfigure:"MCP Configuration",annotationTitle:"Reference Source",activeMCPNumber:"Number of activated MCPs:",copySuccess:"Copy successful."},AudioPlayer:{backward:"Backward ${skipDuration}s",forward:"Forward ${skipDuration}s",prev:"Previous",next:"Next",loop:"Loop",volume:"Volume",mediaError:"Audio load error"}};function sO(s){if(s instanceof Error)return s.message;if(typeof s=="string")return s;try{return JSON.stringify(s)}catch{return String(s)}}function NO(s,i){const r=sO(s).toLowerCase(),o=i.toLowerCase();return r.includes(o)?["not found","unknown command","does not exist","doesn't exist","not registered"].some(l=>r.includes(l)):!1}export{EO as $,h1 as A,qn as B,Et as C,da as D,NE as E,Cw as F,ya as G,Ew as H,QE as I,RO as J,KS as K,HS as L,Ni as M,Te as N,xa as O,v as P,OO as Q,I as R,xO as S,ka as T,bO as U,Ta as V,PO as W,qi as X,F1 as Y,Ra as Z,md as _,Nt as a,od as a$,Mi as a0,hO as a1,gO as a2,wO as a3,yO as a4,Pa as a5,_O as a6,pO as a7,vO as a8,mO as a9,wd as aA,fT as aB,cT as aC,Jf as aD,Ky as aE,pT as aF,HT as aG,Lr as aH,W1 as aI,cd as aJ,Xw as aK,Li as aL,Kw as aM,_C as aN,dO as aO,OC as aP,Fr as aQ,yS as aR,Hr as aS,qS as aT,OS as aU,gd as aV,sS as aW,G_ as aX,sC as aY,FS as aZ,H1 as a_,IE as aa,zn as ab,ar as ac,Aw as ad,ca as ae,bE as af,OE as ag,kC as ah,sr as ai,lO as aj,cO as ak,uO as al,_d as am,NO as an,sO as ao,zi as ap,G1 as aq,AO as ar,ed as as,IO as at,bw as au,RE as av,kO as aw,t1 as ax,hm as ay,Cd as az,Ee as b,fC as b0,Ow as b1,YE as b2,Z_ as b3,id as b4,yC as b5,GS as b6,wS as b7,E1 as b8,Fn as b9,EC as ba,qC as bb,zC as bc,Td as bd,iC as be,nS as bf,TC as bg,mS as bh,ZS as bi,T1 as bj,TO as bk,d1 as bl,Vi as bm,Tw as bn,td as bo,N1 as bp,zw as bq,CO as br,na as bs,Ur as c,cr as d,rn as e,Bi as f,He as g,Ze as h,$S as i,NC as j,$r as k,Le as l,FC as m,ra as n,vd as o,bC as p,q1 as q,Nw as r,ba as s,a1 as t,Ca as u,rC as v,Fi as w,ud as x,oC as y,CS as z}; diff --git a/frontends/desktop/dist/build-provenance.json b/frontends/desktop/dist/build-provenance.json deleted file mode 100644 index 6330f1a5..00000000 --- a/frontends/desktop/dist/build-provenance.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "schemaVersion": 1, - "product": "GenericAgent React Desktop 2.0", - "version": "0.2.1", - "sourceRepository": "https://github.com/abraxas914/GenericAgent", - "sourceCommit": "4a67226e18cb003db1210357ea4a283774773acc", - "generatedAssetCount": 98, - "generatedManifestSha256": "06cbee59e1d232982095bb3966d7b23621b1aa785a6c7e90d82d66dedc5af7ed" -} diff --git a/frontends/desktop/dist/fallback.html b/frontends/desktop/dist/fallback.html deleted file mode 100644 index 1e4fd09e..00000000 --- a/frontends/desktop/dist/fallback.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - -Startup recovery - - - -
-

完成启动设置

-

恢复界面未能加载。你仍可选择应用运行所需的位置并继续启动。

-

此页面不依赖应用界面组件,可在前端资源损坏时独立运行。

- -
应用文件夹
尚未选择应用文件夹
选择此前用于运行桌面版的应用文件夹。
-
Python 环境
选择应用文件夹后自动识别
应用会自动选择可用环境;如有需要,可以重新选择。
-

- -
诊断信息
GenericAgent Desktop startup diagnostics

诊断信息由启动服务脱敏后提供,包含本机路径和错误日志,不包含 API Key、会话或记忆内容。

-
帮助与反馈

如果仍无法完成启动,可添加微信联系:

RoundSquisheenpersist0612
-
- - - diff --git a/frontends/desktop/dist/index.html b/frontends/desktop/dist/index.html deleted file mode 100644 index 41d4157f..00000000 --- a/frontends/desktop/dist/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -GenericAgent - - - - - - - - - - - -
- - diff --git a/frontends/desktop/dist/loading.html b/frontends/desktop/dist/loading.html deleted file mode 100644 index cfbb18d8..00000000 --- a/frontends/desktop/dist/loading.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -GenericAgent - - - - - - - - - - - - - -
-
- -
-
- - diff --git a/frontends/desktop/dist/setup.html b/frontends/desktop/dist/setup.html deleted file mode 100644 index 9dd8f316..00000000 --- a/frontends/desktop/dist/setup.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - -GenericAgent — Fix startup - - - - - - - - - - - - - -
-
- -
-
- - diff --git a/frontends/desktop/package.json b/frontends/desktop/package.json deleted file mode 100644 index be8d01cf..00000000 --- a/frontends/desktop/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "genericagent-web2", - "version": "0.2.1", - "scripts": { - "tauri": "tauri", - "test:dist": "node scripts/verify-compiled-dist.mjs", - "build:dmg": "tauri build --bundles dmg && bash scripts/post-dmg.sh src-tauri/target/release/bundle/dmg/*.dmg" - }, - "devDependencies": { - "@tauri-apps/cli": "2.11.4" - } -} diff --git a/frontends/desktop/packaging/CHECKLIST.md b/frontends/desktop/packaging/CHECKLIST.md deleted file mode 100644 index c85bb6ab..00000000 --- a/frontends/desktop/packaging/CHECKLIST.md +++ /dev/null @@ -1,48 +0,0 @@ -# GenericAgent Desktop 测试 CHECKLIST - ---- - -## 一、聊天页面 - -- [ ] 发消息能正常收到回复,顶栏状态在「运行中」「就绪」之间切换,中文输入法 Enter 不会误发,超长粘贴会被截断 -- [ ] 上传文件、拖拽图片到输入框,能发送且 agent 能识别,流式回复中可中断,悬停消息能复制全文 -- [ ] 代码块/数学公式/多轮折叠都正常,长回复(2000 字以上)末尾不丢字 -- [ ] 起始页预设卡片可跳转(指挥家)或触发对应模式(Plan / Goal 等),自定义预设可增删且刷新后仍在 -- [ ] 切换模型后用量页能记录新模型,设置页调字号后聊天字体实时变,ask_user 弹问题卡能正常答复 -- [ ] 切换到一个 300 轮对话以上的 session,确保页面不卡顿 - ---- - -## 二、会话列表 - -- [ ] 新对话能创建,空态文案正常显示,搜索框能按标题过滤 -- [ ] 置顶/取消置顶/重命名/删除(激活和非激活分别测),都即时生效且刷新后持久 -- [ ] 右栏可拖窄拖宽和整体折叠,跑任务的会话有运行中视觉标识 - ---- - -## 三、指挥家 - -- [ ] 派一个多步骤目标,顶栏状态进入运行中,右侧分工进度出现子任务卡片,任务跑完主区有简报回复 - ---- - -## 四、后台服务 - -- [ ] 确保修改的配置能保存到本地,除此之外都是原有功能,不需要测试 - ---- - -## 五、用量 - -- [ ] 在聊天和指挥家页面发送消息并收到回复,确保聊天和指挥家都能被统计用量,且模型无误 -- [ ] 表格列宽固定不跳动,会话名过长用省略号显示且悬停有 tooltip,点击会话行可展开按时间倒序的明细 -- [ ] 趋势图折叠展开后不变形,日期范围筛选 + 重置生效,已删除的会话标「此会话已删除」 - ---- - -## 六、设置页面(外观 / 字号 / 语言 / 模型管理) - -- [ ] 外观浅色/深色切换,浅色下「素色」开关可用,聊天字号 10-20 可调,关弹窗再开后所有设置仍生效 -- [ ] 中英文切换后整个 UI 文案跟着变,无中英混杂 -- [ ] 模型可添加/编辑/删除,添加弹窗里的 DeepSeek / 通义千问 快速接入会预填地址+协议+模型,用户只需粘贴 API key 就能保存使用 diff --git a/frontends/desktop/packaging/README.md b/frontends/desktop/packaging/README.md deleted file mode 100644 index 158b5d2f..00000000 --- a/frontends/desktop/packaging/README.md +++ /dev/null @@ -1,118 +0,0 @@ -# Desktop packaging - -This directory contains the scripts and locked Python inputs used to assemble GenericAgent Desktop packages. -The directory is not copied wholesale into a release; the workflow selects only the platform scripts and -requirements files required by each package. - -## Submitted renderer boundary - -Official upstream package jobs consume the tracked `frontends/desktop/dist/**` renderer directly. They install -only the minimal submitted Tauri CLI manifest and do not run Vite, TypeScript, React tests, or any other renderer -source command. Tauri embeds `dist/**` in the native application. The portable `runtime/app` copy deliberately -excludes `dist/**` so the same renderer is not duplicated as loose runtime data. - -The React source, issue tracker, and contribution home is -. The exact accepted fork commit and generated content manifest are -recorded in `dist/build-provenance.json`. `frontends/desktop/static/**` remains the independent Desktop v1 and is -unchanged by Desktop 2.0 packaging. - -The submitted package, bundle, qualification, and provenance version for this release is `0.2.1`. - -The Semi Design MIT text is tracked as `dist/THIRD_PARTY_NOTICES.txt`. Root attributes force the source notice and -compiled notice to LF on every platform, and all three package builders verify the locked notice SHA-256 before -building. - -## Inputs - -```text -frontends/desktop/packaging/ -├── README.md -├── dmg-build-requirements.txt -├── python-runtime-requirements.txt -└── scripts/ - ├── merge_desktop_settings.py - ├── windows/ - │ ├── install_windows.ps1 - │ ├── uninstall.bat - │ └── uninstall_windows.ps1 - ├── linux/ - │ ├── install_linux.sh - │ └── uninstall.sh - └── macos/ - ├── install_macos.sh - └── uninstall.command -``` - -- Node is fixed at `22.23.2`; the compiled-only jobs install exactly `@tauri-apps/cli` `2.11.4` with - `npm install --package-lock=false`, assert that no source lockfile was created, and never invoke Vite. Rust is - fixed at `1.95.0` and crates are locked by `Cargo.lock`. -- Root `.gitattributes` pins both the source `public/THIRD_PARTY_NOTICES.txt` path and the delivered - `dist/THIRD_PARTY_NOTICES.txt` path to LF; the source file itself stays outside this compiled-only PR. Each of - the three builders runs the cross-platform compiled-distribution contract immediately before Tauri embeds the - tracked `dist`, locking the notice SHA-256 to - `2acf865e87e59090121369aac0575467067fdd7999923a70d785a46ceae3330f` and failing on any byte drift. -- python-build-standalone is fixed at release `20260814`, CPython `3.12.14`, an explicit architecture, and an - archive SHA-256 on each platform. -- The macOS builder runs on the Apple-silicon `macos-26` host with - `DEVELOPER_DIR=/Applications/Xcode_26.5.app/Contents/Developer` and hard-fails unless Xcode `26.5` - (build `17F42`) and the macOS `26.5` SDK are active. Host CPython `3.12.10` is used only for the hash-locked - DMG layout tools and remains separate from the embedded `3.12.14` runtime. -- Windows converts `RUNNER_TEMP` with `cygpath -u` before passing its archive path to POSIX tools. -- Linux builds on Ubuntu 22.04, uses a dedicated glibc-2.35 Rust cache prefix with target/bin caching disabled, - and scans every packaged ELF to reject a maximum GLIBC requirement above 2.35. -- Runtime direct and transitive dependencies use exact versions in `python-runtime-requirements.txt`; downloads - require binary wheels. The DMG layout requirements use exact versions and wheel hashes. -- Preparation disables Python bytecode writes and removes `__pycache__`, `.pyc`, and `.pyo` files across the - complete bundled runtime without removing vendored Python packages. -- Checkout, Node/Python setup, artifact upload/download, Rust toolchain, and Rust cache actions use full commit - SHA pins and disable persisted checkout credentials. - -These controls do not make the packages bit-for-bit reproducible. Runner images, Ubuntu packages, the Windows -SDK/UCRT input, platform wheels, and native packaging metadata can change or contain timestamps. Candidate -artifact SHA-256 values and release-qualification reports remain the evidence for a particular build. - -## Candidate artifacts and publication - -Manual `workflow_dispatch` runs build the selected platform or all three platforms as downloadable Actions -artifacts. They never create or edit a GitHub Release. - -A maintainer-created `desktop-portable-*` tag starts this publication graph: - -```text -Windows builder (contents: read) ─┐ -Linux builder (contents: read) ─┼─ verified Actions artifacts ─┐ -macOS builder (contents: read) ─┘ │ - ▼ - publisher (contents: write) - validate six files/checksums - create one invisible draft - verify uploaded asset set - expose one prerelease -``` - -The three builders do not receive a write token and do not call the GitHub Release API. The publisher runs only -for a matching tag push after all three builders succeed; it does not check out source or run package tooling. -It refuses to overwrite an existing Release for the tag. - -The prerelease contains exactly: - -- `GenericAgent-Desktop-Windows-Portable.zip` -- `SHA256SUMS-windows.txt` -- `GenericAgent-Desktop-Linux-Portable.tar.gz` -- `SHA256SUMS-linux.txt` -- `GenericAgent-Desktop-macOS-aarch64.dmg` -- `GenericAgent-Desktop-macOS-aarch64.dmg.sha256` - -The macOS application is ad-hoc signed only. It is not Developer ID signed or notarized, and the published notes -retain the documented context-menu / Privacy & Security opening path. - -## Validation - -- `npm run test:dist` verifies required compiled entries, references, source leakage, dead assets, the notice hash, - version/CSP/E2E isolation, source provenance, and the atomic release contract. -- `python -m pytest frontends/tests` verifies Desktop bridge, conductor, model/session/upload behavior, the - Desktop-only cost ledger, transactional data import, release-qualification tooling, owned service/port - behavior, `GA_ROOT`, and Tauri security contracts. -- Rust formatting, clippy, production/E2E tests, and a Tauri `--no-bundle` build validate the native shell against - the tracked renderer. -- Shell, Python, PowerShell, YAML, action pinning, boundary diff, and conflict checks run before delivery. diff --git a/frontends/desktop/packaging/TODO.md b/frontends/desktop/packaging/TODO.md deleted file mode 100644 index 85cd6858..00000000 --- a/frontends/desktop/packaging/TODO.md +++ /dev/null @@ -1,85 +0,0 @@ -# GenericAgent Desktop 测试 TODO - -## 目标 - -目前打算采用 git action 构建发布版,本轮测试主要关注三个结果: - -1. 测试者优先验证已有 Release 产物是否能在目标系统运行。 -2. 若 Release 产物不可用,再记录失败原因,并考虑本地构建或调整 GitHub Action 构建方法。 -3. Release 产物能启动后,再做核心功能兼容性测试。 - ---- - -## 系统覆盖 - -重点测试 Windows 和 Linux; - -| 优先级 | 系统 | 架构/版本 | 测试员 | 状态 | 备注 | -|---|---|---|---|---|---| -| P0 | Windows 11 | x64 | 无 | 开发过程中已测试 | 当前最优先 Windows 环境 | -| P0 | Windows 10 | x64 | 杨航 | TODO | 常见 Windows 环境 | -| P0 | Ubuntu 24.04 LTS | x64 | 张景铭 | TODO | 当前常见 Linux LTS | -| P0 | Ubuntu 22.04 LTS | x64 | 张景铭 | TODO | 仍然常见的 Linux LTS | -| P1 | Debian 12 | x64 | 曹兮 | TODO | 可选,覆盖 Debian 系 | -| Owner | macOS | Apple Silicon 或 Intel | 杨航 | TODO | | - - ---- - -## 每个系统需要完成的任务 - -### 任务 1:下载并验证已有 Release 产物 - -测试员优先使用已有 Release,不要求先在本机生成程序壳。 - -当前测试 Release: - -```text -https://github.com/dd3xp/GenericAgent_Desktop/releases/tag/desktop-windows-test-3-1 -``` - -当前资产命名: - -```text -GenericAgent-Desktop-Windows.exe -GenericAgent-Desktop-Linux.AppImage -SHA256SUMS.txt -``` - -测试步骤: - -1. 下载对应系统的 Release 产物和 `SHA256SUMS.txt`; -2. 启动环境配置脚本 -3. 运行程序壳; -4. 记录是否能打开主界面、是否能连上本地 bridge/后端; - -环境配置脚本 Windows 可参考: - -```powershell -# 在仓库根目录执行 -.\frontends\desktop\packaging\scripts\windows\install_windows.ps1 -``` - -环境配置脚本 Linux 可参考: - -```bash -chmod +x frontends/desktop/packaging/scripts/linux/install_linux.sh -./frontends/desktop/packaging/scripts/linux/install_linux.sh --mode PrepareOnly -chmod +x GenericAgent-Desktop-Linux.AppImage -./GenericAgent-Desktop-Linux.AppImage -``` - -说明:Linux 脚本 `frontends/desktop/packaging/scripts/linux/install_linux.sh` 目前作为参考实现使用,已在 Ubuntu 24.04.4 LTS x64 上做过初步试用,但仍需按清单做完整验证。脚本核心做法是准备运行环境,并写入用户级桌面配置(如 `~/.ga_desktop_settings.json`),让程序壳能找到 `project_dir`、`python_path` 和 bridge 脚本。 - -### 任务 2:Release 不可用时的升级路径 - -如果 Release 产物在目标系统不可用: -1. 如果只是目标机缺少运行环境,优先修正环境配置脚本; -2. 如果 Release 产物本身不兼容,尝试在目标系统本地构建; -3. 如果本地构建可行,再考虑修改 GitHub Action 的 Linux/Windows 构建方法,让 CI 产物与本地成功产物保持一致。 - -### 任务 3:核心功能兼容性测试 - -Release 产物可以启动并连上后端后,再根据 `frontends/desktop/packaging/CHECKLIST.md` 测试不同平台下的界面和核心功能兼容性。 - ---- diff --git a/frontends/desktop/packaging/dmg-build-requirements.txt b/frontends/desktop/packaging/dmg-build-requirements.txt deleted file mode 100644 index 677ed72b..00000000 --- a/frontends/desktop/packaging/dmg-build-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Pure-Python tools used only to write the curated Finder layout. -ds-store==1.3.3 \ - --hash=sha256:b92a371efbf1b4ccce2a04d1ed13fceacc4736c81ba09cf5aefb74c088160a35 -mac-alias==2.2.3 \ - --hash=sha256:7362b521d2132ef92f606a37abfed5fcd849ceb2f28b6f9743e014b02af92f0d diff --git a/frontends/desktop/packaging/python-runtime-requirements.txt b/frontends/desktop/packaging/python-runtime-requirements.txt deleted file mode 100644 index 3fe5dd80..00000000 --- a/frontends/desktop/packaging/python-runtime-requirements.txt +++ /dev/null @@ -1,37 +0,0 @@ -# Desktop embedded-runtime lock for CPython 3.12.14. -# -# Direct and transitive versions are exact so all three builders resolve the same -# dependency graph. Wheel file hashes remain platform-specific and are not locked -# here; see README.md for that remaining reproducibility risk. -aiohappyeyeballs==2.7.1 -aiohttp==3.14.3 -aiosignal==1.4.0 -annotated-doc==0.0.5 -annotated-types==0.8.0 -anyio==4.14.2 -attrs==26.1.0 -beautifulsoup4==4.15.0 -bottle==0.13.4 -certifi==2026.7.22 -charset-normalizer==3.5.1 -click==8.4.2 -colorama==0.4.6 -fastapi==0.141.1 -frozenlist==1.8.0 -h11==0.16.0 -idna==3.19 -multidict==6.7.1 -propcache==0.5.2 -psutil==7.1.1 -pydantic==2.13.4 -pydantic-core==2.46.4 -requests==2.34.2 -simple-websocket-server==0.4.4 -soupsieve==2.9.2 -starlette==1.6.0 -typing-extensions==4.16.0 -typing-inspection==0.4.4 -urllib3==2.7.0 -uvicorn==0.52.1 -websockets==17.0.1 -yarl==1.24.5 diff --git a/frontends/desktop/packaging/scripts/linux/install_linux.sh b/frontends/desktop/packaging/scripts/linux/install_linux.sh deleted file mode 100755 index 1c4bf581..00000000 --- a/frontends/desktop/packaging/scripts/linux/install_linux.sh +++ /dev/null @@ -1,459 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# The desktop AppImage injects PYTHONHOME/PYTHONPATH/LD_LIBRARY_PATH pointing at its own -# read-only mount, which breaks the bundled python ("No module named 'encodings'"). Always -# run with a clean python env so the embedded interpreter uses its own stdlib/libs. -unset PYTHONHOME PYTHONPATH LD_LIBRARY_PATH -export PYTHONDONTWRITEBYTECODE=1 - -# GenericAgent Desktop Linux installer. -# Expected normal location: GenericAgent/frontends/install_linux.sh -# Expected AppImage: GenericAgent/frontends/GenericAgent.AppImage -# -# Usage: -# ./install_linux.sh -# ./install_linux.sh --project-dir /path/to/GenericAgent -# ./install_linux.sh --mode PrepareOnly|Launch|BridgeOnly -# ./install_linux.sh --skip-pip-install -# -# What this script does: -# 1. Resolve the GenericAgent project root containing agentmain.py. -# 2. Resolve/create a Python runtime under project .venv unless --no-venv is used. -# 3. Install minimal desktop bridge dependencies unless --skip-pip-install is used. -# 4. Write ~/.ga_desktop_settings.json for the AppImage desktop shell. -# 5. chmod +x GenericAgent.AppImage. -# 6. Create/update desktop and application-menu .desktop launchers. -# 7. By default, do not launch the app; use --mode Launch if desired. - -PROJECT_DIR="" -PYTHON_PATH="" -MODE="PrepareOnly" -NO_VENV=0 -SKIP_PIP_INSTALL=0 -APPIMAGE_PATH="" -WHEEL_DIR="" -EXTRA_PACKAGES="" - -log_step() { printf '\n==> %s\n' "$*" >&2; } -log_ok() { printf '[OK] %s\n' "$*" >&2; } -log_warn() { printf '[WARN] %s\n' "$*" >&2; } -fail() { printf '[ERROR] %s\n' "$*" >&2; exit 1; } - -usage() { - sed -n '1,28p' "$0" -} - -while [[ $# -gt 0 ]]; do - case "$1" in - --project-dir|-p) - [[ $# -ge 2 ]] || fail "Missing value for $1" - PROJECT_DIR="$2"; shift 2 ;; - --python-path) - [[ $# -ge 2 ]] || fail "Missing value for $1" - PYTHON_PATH="$2"; shift 2 ;; - --mode|-m) - [[ $# -ge 2 ]] || fail "Missing value for $1" - MODE="$2"; shift 2 ;; - --appimage) - [[ $# -ge 2 ]] || fail "Missing value for $1" - APPIMAGE_PATH="$2"; shift 2 ;; - --no-venv) - NO_VENV=1; shift ;; - --skip-pip-install) - SKIP_PIP_INSTALL=1; shift ;; - --wheel-dir) - [[ $# -ge 2 ]] || fail "Missing value for $1" - WHEEL_DIR="$2"; shift 2 ;; - --extra-packages) - [[ $# -ge 2 ]] || fail "Missing value for $1" - EXTRA_PACKAGES="$2"; shift 2 ;; - --help|-h) - usage; exit 0 ;; - *) - fail "Unknown argument: $1" ;; - esac -done - -case "$MODE" in - PrepareOnly|Launch|BridgeOnly) ;; - *) fail "Unsupported --mode '$MODE'. Expected PrepareOnly, Launch, or BridgeOnly." ;; -esac - -resolve_script_root() { - local src="${BASH_SOURCE[0]}" - while [[ -L "$src" ]]; do - local dir - dir="$(cd -P "$(dirname "$src")" && pwd)" - src="$(readlink "$src")" - [[ "$src" != /* ]] && src="$dir/$src" - done - cd -P "$(dirname "$src")" && pwd -} - -abs_path() { - local value="$1" - case "$value" in - "~") value="$HOME" ;; - "~/"*) value="$HOME/${value#~/}" ;; - esac - [[ "$value" == /* ]] || value="$PWD/$value" - if [[ -d "$value" ]]; then - (cd -P "$value" && pwd) - else - local directory base - directory="$(dirname "$value")" - base="$(basename "$value")" - printf '%s/%s\n' "$(cd -P "$directory" && pwd)" "$base" - fi -} - -has_agentmain() { [[ -f "$1/agentmain.py" ]]; } - -find_project_root() { - local script_root="$1" - if [[ -n "$PROJECT_DIR" ]]; then - local p - p="$(abs_path "$PROJECT_DIR")" - has_agentmain "$p" || fail "Project dir does not contain agentmain.py: $PROJECT_DIR" - printf '%s\n' "$p" - return - fi - - local candidates=( - "$script_root/.." - "$PWD/.." - "$PWD" - "$script_root" - "$script_root/../.." - "$HOME/GenericAgent" - "$HOME/GenericAgent_Desktop" - "$HOME/GenericAgent_Desktop_test" - ) - - local c p - for c in "${candidates[@]}"; do - [[ -e "$c" ]] || continue - p="$(abs_path "$c")" - if has_agentmain "$p"; then - printf '%s\n' "$p" - return - fi - done - - fail "Cannot locate GenericAgent project root. Put this script in GenericAgent/frontends or pass --project-dir /path/to/GenericAgent." -} - -python_supported() { - local py="$1" - "$py" - <<'PY' >/dev/null 2>&1 -import sys -raise SystemExit(0 if (3, 10) <= sys.version_info[:2] < (3, 14) else 1) -PY -} - -python_exe() { - local py="$1" - "$py" - <<'PY' -import sys -print(sys.executable) -PY -} - -find_python() { - if [[ -n "$PYTHON_PATH" ]]; then - python_supported "$PYTHON_PATH" || fail "Specified Python is not supported: $PYTHON_PATH. Need Python >=3.10,<3.14." - python_exe "$PYTHON_PATH" - return - fi - - local py - for py in python3.12 python3.11 python3.10 python3 python; do - if command -v "$py" >/dev/null 2>&1 && python_supported "$py"; then - python_exe "$py" - return - fi - done - fail "No supported Python found. Install Python 3.10-3.13 or pass --python-path." -} - -ensure_venv() { - local root="$1" - local base_py="$2" - if [[ "$NO_VENV" -eq 1 ]]; then - printf '%s\n' "$base_py" - return - fi - - local venv="$root/.venv" - local vpy="$venv/bin/python" - if [[ ! -x "$vpy" ]]; then - # NOTE: ensure_venv's stdout is captured by the caller as the python path - # (PY="$(ensure_venv ...)"), so progress markers must NOT be printed here — - # they go on the main-flow stdout instead. Only the venv path goes to stdout. - log_step "Create virtual environment: $venv" - "$base_py" -m venv "$venv" || fail "Failed to create venv. On Debian/Ubuntu install python3-venv." - fi - python_supported "$vpy" || fail "Venv Python is not supported: $vpy" - printf '%s\n' "$vpy" -} - -install_dependencies() { - local root="$1" - local py="$2" - if [[ "$SKIP_PIP_INSTALL" -eq 1 ]]; then - log_warn "Skipped pip install because --skip-pip-install was used." - return - fi - - printf 'GAPROGRESS|deps\n' - if [[ -n "$WHEEL_DIR" ]]; then - # Offline (portable bundle): install from local wheels only, no network, no pip self-upgrade. - log_step "Install dependencies offline from $WHEEL_DIR" - local locked_requirements="$WHEEL_DIR/requirements.txt" - [[ -f "$locked_requirements" ]] || fail "Pinned offline requirements are missing: $locked_requirements" - # Install deps directly (NOT an editable -e of the source): an editable install bakes the - # project's absolute path into a .pth. Combined with --no-venv (deps go into the relocatable - # embedded python) this keeps the portable bundle movable. The bridge adds the source to - # sys.path itself (ensure_ga_import_path), so no install of the project is needed. - # shellcheck disable=SC2086 - "$py" -m pip install --no-compile --no-index --find-links "$WHEEL_DIR" \ - --requirement "$locked_requirements" $EXTRA_PACKAGES \ - || fail "Offline pip install failed (check wheel dir)." - else - log_step "Install/refresh minimal Python dependencies" - "$py" -m pip install --no-compile --upgrade pip setuptools wheel || fail "pip bootstrap failed." - # shellcheck disable=SC2086 - "$py" -m pip install --no-compile -e "$root" psutil $EXTRA_PACKAGES || fail "pip install failed." - fi - printf 'GAPROGRESS|done\n' -} - -clean_portable_runtime_bytecode() { - local root="$1" - local py="$2" - [[ -n "$WHEEL_DIR" && "$NO_VENV" -eq 1 ]] || return - local runtime_root - runtime_root="$(cd "$root/.." && pwd -P)" - [[ -d "$runtime_root/python" && "$py" == "$runtime_root"/python/* ]] \ - || fail "Refusing to clean an unverified portable runtime: $runtime_root" - find "$runtime_root" -type d -name '__pycache__' -prune -exec rm -rf {} + - find "$runtime_root" -type f \( -name '*.pyc' -o -name '*.pyo' \) -delete - ! find "$runtime_root" -type d -name '__pycache__' -print -quit | grep -q . \ - || fail "Python bytecode cache directory remains in portable runtime" - ! find "$runtime_root" -type f \( -name '*.pyc' -o -name '*.pyo' \) -print -quit | grep -q . \ - || fail "Python bytecode remains in portable runtime" -} - -ensure_mykey() { - local root="$1" - local mykey="$root/mykey.py" - local tpl="$root/mykey_template.py" - if [[ -f "$mykey" ]]; then - log_ok "mykey.py exists" - elif [[ -f "$tpl" ]]; then - cp "$tpl" "$mykey" - log_warn "Created mykey.py from mykey_template.py. Please fill API keys before model calls." - else - log_warn "mykey.py and mykey_template.py are missing. Model config may need manual setup." - fi -} - -write_desktop_settings() { - local root="$1" - local py="$2" - local bridge="$root/frontends/desktop_bridge.py" - local settings_path="$HOME/.ga_desktop_settings.json" - local helper="$SCRIPT_ROOT/merge_desktop_settings.py" - [[ -f "$helper" ]] || helper="$SCRIPT_ROOT/../merge_desktop_settings.py" - [[ -f "$bridge" ]] || fail "desktop_bridge.py not found: $bridge" - [[ -f "$helper" ]] || fail "Desktop settings merge helper not found: $helper" - - "$py" "$helper" \ - --settings "$settings_path" \ - --python-path "$py" \ - --project-dir "$root" \ - --bridge-script "$bridge" - log_ok "Wrote desktop settings: $settings_path" -} - -find_appimage() { - local root="$1" - local script_root="$2" - - if [[ -n "$APPIMAGE_PATH" ]]; then - local p - p="$(abs_path "$APPIMAGE_PATH")" - [[ -f "$p" ]] || fail "AppImage not found: $APPIMAGE_PATH" - printf '%s\n' "$p" - return - fi - - local candidates=( - "$script_root/GenericAgent.AppImage" - "$root/frontends/GenericAgent.AppImage" - ) - local p - for p in "${candidates[@]}"; do - if [[ -f "$p" ]]; then - printf '%s\n' "$(abs_path "$p")" - return - fi - done - - # Last-resort support for older versioned artifacts, but generated releases should use GenericAgent.AppImage. - find "$root/frontends" -maxdepth 1 -type f -name '*.AppImage' 2>/dev/null | sort | head -n 1 || true -} - -find_icon() { - local root="$1" - local candidates=( - "$root/frontends/desktop/src-tauri/icons/icon.png" - "$root/frontends/desktop/src-tauri/icons/128x128.png" - "$root/frontends/desktop/src-tauri/icons/128x128@2x.png" - ) - local p - for p in "${candidates[@]}"; do - if [[ -f "$p" ]]; then - printf '%s\n' "$p" - return - fi - done - printf '%s\n' "generic" -} - -shell_quote() { - local value="$1" - value="${value//\\/\\\\}" - value="${value//\"/\\\"}" - value="${value//\$/\\\$}" - value="${value//\`/\\\`}" - printf '"%s"\n' "$value" -} - -write_desktop_file() { - local out="$1" - local root="$2" - local appimage="$3" - local icon="$4" - mkdir -p "$(dirname "$out")" - cat > "$out" </dev/null 2>&1; then - gio set "$desktop_file" metadata::trusted true >/dev/null 2>&1 || true - gio set "$menu_file" metadata::trusted true >/dev/null 2>&1 || true - fi - if command -v update-desktop-database >/dev/null 2>&1; then - update-desktop-database "$menu_dir" >/dev/null 2>&1 || true - fi - - log_ok "Desktop launcher: $desktop_file" - log_ok "If your file manager marks the desktop icon as untrusted, right-click it and choose Allow Launching." -} - -start_bridge() { - local root="$1" - local py="$2" - local bridge="$root/frontends/desktop_bridge.py" - [[ -f "$bridge" ]] || fail "desktop_bridge.py not found: $bridge" - log_step "Start bridge: $bridge" - export PYTHONPATH="$root:$root/frontends:${PYTHONPATH:-}" - exec "$py" "$bridge" -} - -launch_appimage() { - local appimage="$1" - log_step "Launch AppImage" - nohup "$appimage" >/tmp/genericagent-desktop-appimage.log 2>&1 & - log_ok "Started: $appimage" - log_ok "Log: /tmp/genericagent-desktop-appimage.log" -} - -SCRIPT_ROOT="$(resolve_script_root)" - -log_step "Resolve project root" -ROOT="$(find_project_root "$SCRIPT_ROOT")" -log_ok "Project root: $ROOT" - -# Portable self-prepare (offline, --wheel-dir set): the AppImage is already running and -# manages itself, so skip AppImage discovery and desktop-launcher creation. -PORTABLE_PREPARE=0 -[[ -n "$WHEEL_DIR" ]] && PORTABLE_PREPARE=1 - -APPIMAGE="" -if [[ "$PORTABLE_PREPARE" -eq 0 ]]; then - log_step "Resolve AppImage" - APPIMAGE="$(find_appimage "$ROOT" "$SCRIPT_ROOT")" - [[ -n "$APPIMAGE" ]] || fail "GenericAgent.AppImage not found. Put it next to install_linux.sh in GenericAgent/frontends/." - chmod +x "$APPIMAGE" - log_ok "AppImage: $APPIMAGE" -fi - -log_step "Resolve Python" -BASE_PY="$(find_python)" -log_ok "Base Python: $BASE_PY" - -# Progress marker on the real stdout (the Rust shell reads it); must be outside the -# command-substitution that captures ensure_venv's stdout as the python path. -printf 'GAPROGRESS|venv\n' -PY="$(ensure_venv "$ROOT" "$BASE_PY")" -log_ok "Runtime Python: $PY" - -install_dependencies "$ROOT" "$PY" -ensure_mykey "$ROOT" -write_desktop_settings "$ROOT" "$PY" -clean_portable_runtime_bytecode "$ROOT" "$PY" -if [[ "$PORTABLE_PREPARE" -eq 0 ]]; then - install_desktop_launchers "$ROOT" "$APPIMAGE" -fi - -case "$MODE" in - PrepareOnly) - log_ok "Linux desktop setup finished. Start GenericAgent Desktop from the desktop icon or application menu." - ;; - Launch) - launch_appimage "$APPIMAGE" - ;; - BridgeOnly) - start_bridge "$ROOT" "$PY" - ;; -esac diff --git a/frontends/desktop/packaging/scripts/linux/uninstall.sh b/frontends/desktop/packaging/scripts/linux/uninstall.sh deleted file mode 100644 index 5da4c4aa..00000000 --- a/frontends/desktop/packaging/scripts/linux/uninstall.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash -# GenericAgent Desktop — portable uninstall (Linux). -# -# Removes everything THIS portable bundle put on the machine, then deletes the -# bundle folder itself: -# 1. Stop the bundle's processes (GUI + bridge/conductor/scheduler python) — -# only processes whose exe/cmdline live inside this bundle, so a second -# install on the same machine is left alone. -# 2. Remove the desktop shortcut (GenericAgent.desktop) — only when its Exec -# points into this bundle. -# 3. Detach only settings paths owned by this bundle; keep preferences and any -# second bundle / external source selection. -# 4. Remove the WebKitGTK data dir (~/.local/share + ~/.cache for the app id). -# 5. Delete the bundle folder. -set -u - -BUNDLE="$(cd "$(dirname "$0")" && pwd)" -APP_ID="com.genericagent.app" - -echo "============================================================" -echo " GenericAgent Desktop - Uninstall" -echo "============================================================" -echo -echo "This will completely remove GenericAgent from this computer:" -echo " - stop its background services (bridge 14168 / conductor 8900)" -echo " - delete the desktop shortcut" -echo " - detach this bundle from shared desktop settings (preferences are kept)" -echo " - delete WebView data (~/.local/share/$APP_ID, ~/.cache/$APP_ID)" -echo " - delete THIS folder and everything in it:" -echo " $BUNDLE" -echo -echo "This cannot be undone." -echo -read -r -p "Type Y to uninstall, anything else to cancel: " CONFIRM -case "$CONFIRM" in - y|Y) ;; - *) echo; echo "Cancelled. Nothing was changed."; exit 0 ;; -esac - -echo -echo "==> Stopping GenericAgent backend services" -# Best-effort graceful exit only when the listener reports an app_dir inside -# this bundle. Never ask a second bundle or foreign listener to shut down. -RUNTIME_PY="$BUNDLE/runtime/python/bin/python3" -PROJECT_DIR="$BUNDLE/runtime/app" -SETTINGS_HELPER="$BUNDLE/runtime/merge_desktop_settings.py" -IDENTITY="$(curl -fsS -m 3 "http://127.0.0.1:14168/services/identity" 2>/dev/null || true)" -if [[ -x "$RUNTIME_PY" && -n "$IDENTITY" ]] && \ - BUNDLE="$BUNDLE" IDENTITY="$IDENTITY" "$RUNTIME_PY" -c \ - 'import json, os, pathlib; app=pathlib.Path(json.loads(os.environ["IDENTITY"])["app_dir"]).resolve(); bundle=pathlib.Path(os.environ["BUNDLE"]).resolve(); raise SystemExit(0 if app == bundle or bundle in app.parents else 1)'; then - curl -fsS -m 3 -X POST "http://127.0.0.1:14168/services/bridge/exit" >/dev/null 2>&1 || true -else - echo " bridge listener is not owned by this bundle; left running" -fi -sleep 1 - -# Kill any process whose exe or command line lives inside this bundle — never touch -# a second install (different path). Skip our own uninstall shell and its parent. -for pid in $(ls /proc 2>/dev/null | grep -E '^[0-9]+$'); do - [ "$pid" = "$$" ] && continue - [ "$pid" = "$PPID" ] && continue - exe="$(readlink -f "/proc/$pid/exe" 2>/dev/null || true)" - cl="$( (cat "/proc/$pid/cmdline" 2>/dev/null || true) | tr '\0' ' ')" - case "$exe $cl" in - *"$BUNDLE"*) kill -9 "$pid" 2>/dev/null && echo " killed PID $pid" ;; - esac -done -echo "[OK] backend stopped" - -echo "==> Removing desktop shortcut" -removed_shortcut=0 -for f in "$HOME/.local/share/applications/GenericAgent.desktop" \ - "${XDG_DESKTOP_DIR:-$HOME/Desktop}/GenericAgent.desktop" \ - "$HOME/桌面/GenericAgent.desktop"; do - [ -f "$f" ] || continue - if grep -qF "$BUNDLE" "$f" 2>/dev/null; then - rm -f "$f" && { echo "[OK] removed $f"; removed_shortcut=1; } - else - echo " $f points to another bundle; left in place" - fi -done -[ "$removed_shortcut" = 0 ] && echo " no desktop shortcut for this bundle found" - -echo "==> Detaching bundle paths from shared settings" -if [[ -f "$HOME/.ga_desktop_settings.json" && -x "$RUNTIME_PY" \ - && -f "$SETTINGS_HELPER" && -f "$PROJECT_DIR/frontends/desktop_settings.py" ]]; then - if "$RUNTIME_PY" "$SETTINGS_HELPER" \ - --settings "$HOME/.ga_desktop_settings.json" \ - --project-dir "$PROJECT_DIR" \ - --remove-bundle "$BUNDLE"; then - echo "[OK] removed this bundle's path keys; preferences and overrides were kept" - else - echo " settings were invalid or locked; left unchanged" - fi -else - echo " no owned settings paths could be detached" -fi - -echo "==> Removing WebView data" -for d in "$HOME/.local/share/$APP_ID" "$HOME/.cache/$APP_ID"; do - if [ -d "$d" ]; then rm -rf "$d" && echo "[OK] removed $d"; fi -done - -echo "==> Removing the bundle folder" -cd /tmp || cd / -if rm -rf "$BUNDLE" 2>/dev/null && [ ! -e "$BUNDLE" ]; then - echo "[OK] removed $BUNDLE" -else - # A still-mounted AppImage or busy file can block removal; retry detached after we exit. - nohup bash -c 'for i in $(seq 1 20); do rm -rf "'"$BUNDLE"'" 2>/dev/null; [ -e "'"$BUNDLE"'" ] || exit 0; sleep 1; done' >/dev/null 2>&1 & - echo "[OK] bundle folder will be removed after exit: $BUNDLE" -fi - -echo -echo "GenericAgent has been uninstalled." diff --git a/frontends/desktop/packaging/scripts/macos/install_macos.sh b/frontends/desktop/packaging/scripts/macos/install_macos.sh deleted file mode 100755 index f7e80615..00000000 --- a/frontends/desktop/packaging/scripts/macos/install_macos.sh +++ /dev/null @@ -1,208 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PYTHONDONTWRITEBYTECODE=1 - -# GenericAgent Desktop macOS portable installer/preparer. -# Intended bundle layout: -# GenericAgent-Desktop-macOS/ -# GenericAgent.app -# runtime/ -# python/ wheels/ install_macos.sh app/ -# -# Usage: -# ./install_macos.sh --python-path /path/to/python3 --project-dir /path/to/runtime/app --wheel-dir /path/to/wheels --mode PrepareOnly -# ./install_macos.sh --mode BridgeOnly - -PROJECT_DIR="" -PYTHON_PATH="" -MODE="PrepareOnly" -NO_VENV=0 -SKIP_PIP_INSTALL=0 -WHEEL_DIR="" -EXTRA_PACKAGES="" -APP_PATH="" - -log_step() { printf '\n==> %s\n' "$*" >&2; } -log_ok() { printf '[OK] %s\n' "$*" >&2; } -log_warn() { printf '[WARN] %s\n' "$*" >&2; } -fail() { printf '[ERROR] %s\n' "$*" >&2; exit 1; } -progress() { printf 'GAPROGRESS|%s\n' "$1"; } - -usage() { sed -n '1,18p' "$0"; } - -while [[ $# -gt 0 ]]; do - case "$1" in - --project-dir|-p) [[ $# -ge 2 ]] || fail "Missing value for $1"; PROJECT_DIR="$2"; shift 2 ;; - --python-path) [[ $# -ge 2 ]] || fail "Missing value for $1"; PYTHON_PATH="$2"; shift 2 ;; - --mode|-m) [[ $# -ge 2 ]] || fail "Missing value for $1"; MODE="$2"; shift 2 ;; - --app|-a) [[ $# -ge 2 ]] || fail "Missing value for $1"; APP_PATH="$2"; shift 2 ;; - --no-venv) NO_VENV=1; shift ;; - --skip-pip-install) SKIP_PIP_INSTALL=1; shift ;; - --wheel-dir) [[ $# -ge 2 ]] || fail "Missing value for $1"; WHEEL_DIR="$2"; shift 2 ;; - --extra-packages) [[ $# -ge 2 ]] || fail "Missing value for $1"; EXTRA_PACKAGES="$2"; shift 2 ;; - --help|-h) usage; exit 0 ;; - *) fail "Unknown argument: $1" ;; - esac -done - -case "$MODE" in - PrepareOnly|Launch|BridgeOnly) ;; - *) fail "Unsupported --mode '$MODE'. Expected PrepareOnly, Launch, or BridgeOnly." ;; -esac - -resolve_script_root() { - local src="${BASH_SOURCE[0]}" - while [[ -L "$src" ]]; do - local dir - dir="$(cd -P "$(dirname "$src")" && pwd)" - src="$(readlink "$src")" - [[ "$src" != /* ]] && src="$dir/$src" - done - cd -P "$(dirname "$src")" && pwd -} - -abs_path() { - "$PYTHON_FOR_ABS" - "$1" <<'PY' -import os, sys -print(os.path.abspath(os.path.expanduser(sys.argv[1]))) -PY -} - -SCRIPT_ROOT="$(resolve_script_root)" -PYTHON_FOR_ABS="${PYTHON_PATH:-python3}" - -if [[ -z "$PROJECT_DIR" ]]; then - for c in "$SCRIPT_ROOT/app" "$SCRIPT_ROOT/../runtime/app" "$SCRIPT_ROOT/.." "$PWD"; do - if [[ -f "$c/agentmain.py" ]]; then PROJECT_DIR="$c"; break; fi - done -fi -[[ -n "$PROJECT_DIR" ]] || fail "Cannot resolve project dir; pass --project-dir" -PROJECT_DIR="$(abs_path "$PROJECT_DIR")" -[[ -f "$PROJECT_DIR/agentmain.py" ]] || fail "Project dir does not contain agentmain.py: $PROJECT_DIR" - -if [[ -z "$PYTHON_PATH" ]]; then - if [[ -x "$SCRIPT_ROOT/python/bin/python3" ]]; then PYTHON_PATH="$SCRIPT_ROOT/python/bin/python3"; else PYTHON_PATH="python3"; fi -fi -PYTHON_PATH="$(abs_path "$PYTHON_PATH")" -"$PYTHON_PATH" --version >&2 || fail "Python not runnable: $PYTHON_PATH" - -if [[ -z "$WHEEL_DIR" && -d "$SCRIPT_ROOT/wheels" ]]; then WHEEL_DIR="$SCRIPT_ROOT/wheels"; fi -if [[ -n "$WHEEL_DIR" ]]; then WHEEL_DIR="$(abs_path "$WHEEL_DIR")"; fi - -venv_python() { - printf '%s\n' "$PROJECT_DIR/.venv/bin/python" -} - -ensure_venv() { - if [[ "$NO_VENV" == "1" ]]; then return; fi - local vpy - vpy="$(venv_python)" - if [[ ! -x "$vpy" ]]; then - progress venv - log_step "Create venv: $PROJECT_DIR/.venv" - "$PYTHON_PATH" -m venv "$PROJECT_DIR/.venv" - fi -} - -install_deps() { - local py="$1" - [[ "$SKIP_PIP_INSTALL" == "1" ]] && return - progress deps - log_step "Install desktop bridge dependencies" - local pkgs=( - "requests>=2.28" "beautifulsoup4>=4.12" "bottle>=0.12" "simple-websocket-server>=0.4" "aiohttp>=3.9" psutil - ) - if [[ -n "$EXTRA_PACKAGES" ]]; then - # shellcheck disable=SC2206 - pkgs+=( $EXTRA_PACKAGES ) - fi - if [[ -n "$WHEEL_DIR" && -d "$WHEEL_DIR" ]]; then - # A wheelhouse repair only needs pip itself. Keep the path fully offline and - # do not install setuptools/wheel into the prepared runtime. - local locked_requirements="$WHEEL_DIR/requirements.txt" - [[ -f "$locked_requirements" ]] || fail "Pinned offline requirements are missing: $locked_requirements" - "$py" -m pip install --no-compile --no-index --find-links "$WHEEL_DIR" \ - --requirement "$locked_requirements" "${pkgs[@]:6}" - else - log_warn "No wheel dir supplied; falling back to online pip install" - "$py" -m pip install --no-compile --upgrade pip setuptools wheel - "$py" -m pip install --no-compile "${pkgs[@]}" - fi -} - -clean_portable_runtime_bytecode() { - local py="$1" - [[ -n "$WHEEL_DIR" && "$NO_VENV" == "1" ]] || return - local runtime_root - runtime_root="$(cd "$PROJECT_DIR/.." && pwd -P)" - [[ -d "$runtime_root/python" && "$py" == "$runtime_root"/python/* ]] \ - || fail "Refusing to clean an unverified portable runtime: $runtime_root" - find "$runtime_root" -type d -name '__pycache__' -prune -exec rm -rf {} + - find "$runtime_root" -type f \( -name '*.pyc' -o -name '*.pyo' \) -delete - ! find "$runtime_root" -type d -name '__pycache__' -print -quit | grep -q . \ - || fail "Python bytecode cache directory remains in portable runtime" - ! find "$runtime_root" -type f \( -name '*.pyc' -o -name '*.pyo' \) -print -quit | grep -q . \ - || fail "Python bytecode remains in portable runtime" -} - -ensure_mykey() { - local mykey="$PROJECT_DIR/mykey.py" - local tpl="$PROJECT_DIR/mykey_template.py" - if [[ -f "$mykey" ]]; then - log_ok "mykey.py exists" - elif [[ -f "$tpl" ]]; then - cp "$tpl" "$mykey" - log_warn "Created mykey.py from mykey_template.py. Please fill API keys before model calls." - else - log_warn "mykey.py and mykey_template.py are missing. Model config may need manual setup." - fi -} - -write_settings() { - local py="$1" - local settings_path="$HOME/.ga_desktop_settings.json" - local bridge="$PROJECT_DIR/frontends/desktop_bridge.py" - local helper="$SCRIPT_ROOT/merge_desktop_settings.py" - [[ -f "$helper" ]] || helper="$SCRIPT_ROOT/../merge_desktop_settings.py" - [[ -f "$bridge" ]] || fail "desktop_bridge.py not found: $bridge" - [[ -f "$helper" ]] || fail "Desktop settings merge helper not found: $helper" - "$py" "$helper" \ - --settings "$settings_path" \ - --python-path "$py" \ - --project-dir "$PROJECT_DIR" \ - --bridge-script "$bridge" - log_ok "Wrote desktop settings: $settings_path" -} - -start_bridge() { - local py="$1" - local bridge="$PROJECT_DIR/frontends/desktop_bridge.py" - [[ -f "$bridge" ]] || fail "desktop_bridge.py not found: $bridge" - export PYTHONPATH="$PROJECT_DIR:$PROJECT_DIR/frontends:${PYTHONPATH:-}" - exec "$py" "$bridge" -} - -launch_app() { - if [[ -n "$APP_PATH" ]]; then - open "$APP_PATH" - elif [[ -d "$SCRIPT_ROOT/../GenericAgent.app" ]]; then - open "$SCRIPT_ROOT/../GenericAgent.app" - else - log_warn "GenericAgent.app not found next to runtime; skip launch" - fi -} - -ensure_venv -RUNTIME_PY="$(venv_python)" -if [[ "$NO_VENV" == "1" ]]; then RUNTIME_PY="$PYTHON_PATH"; fi -install_deps "$RUNTIME_PY" -ensure_mykey -write_settings "$RUNTIME_PY" -clean_portable_runtime_bytecode "$RUNTIME_PY" -progress done - -case "$MODE" in - PrepareOnly) log_ok "Prepare complete: $PROJECT_DIR" ;; - BridgeOnly) start_bridge "$RUNTIME_PY" ;; - Launch) launch_app ;; -esac diff --git a/frontends/desktop/packaging/scripts/macos/uninstall.command b/frontends/desktop/packaging/scripts/macos/uninstall.command deleted file mode 100644 index cc640423..00000000 --- a/frontends/desktop/packaging/scripts/macos/uninstall.command +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash -# GenericAgent Desktop — portable uninstall (macOS). Double-clickable in Finder (.command). -# -# Removes everything THIS portable bundle put on the machine, then deletes the -# bundle folder itself: -# 1. Stop the bundle's processes (GUI + bridge/conductor/scheduler python) — -# only processes whose command line lives inside this bundle. -# 2. Remove the desktop alias (~/Desktop/GenericAgent.app) — only when it links -# into this bundle. -# 3. Detach only this bundle's path settings while keeping shared preferences. -# 4. Remove the WKWebView data for the app id under ~/Library. -# 5. Delete the bundle folder. -set -u - -BUNDLE="$(cd "$(dirname "$0")" && pwd)" -APP_ID="com.genericagent.app" - -echo "============================================================" -echo " GenericAgent Desktop - Uninstall" -echo "============================================================" -echo -echo "This will completely remove GenericAgent from this computer:" -echo " - stop its background services (bridge 14168 / conductor 8900)" -echo " - delete the desktop alias" -echo " - detach this bundle from shared desktop settings (preferences are kept)" -echo " - delete WebView data (~/Library/.../$APP_ID)" -echo " - delete THIS folder and everything in it:" -echo " $BUNDLE" -echo -echo "This cannot be undone." -echo -read -r -p "Type Y to uninstall, anything else to cancel: " CONFIRM -case "$CONFIRM" in - y|Y) ;; - *) echo; echo "Cancelled. Nothing was changed."; exit 0 ;; -esac - -echo -echo "==> Stopping GenericAgent backend services" -RUNTIME_ROOT="$BUNDLE/runtime" -[[ -d "$RUNTIME_ROOT/app" ]] || RUNTIME_ROOT="$BUNDLE/GenericAgent.app/Contents/Resources/runtime" -RUNTIME_PY="$RUNTIME_ROOT/python/bin/python3" -PROJECT_DIR="$RUNTIME_ROOT/app" -SETTINGS_HELPER="$RUNTIME_ROOT/merge_desktop_settings.py" -IDENTITY="$(curl -fsS -m 3 "http://127.0.0.1:14168/services/identity" 2>/dev/null || true)" -if [[ -x "$RUNTIME_PY" && -n "$IDENTITY" ]] && \ - BUNDLE="$BUNDLE" IDENTITY="$IDENTITY" "$RUNTIME_PY" -c \ - 'import json, os, pathlib; app=pathlib.Path(json.loads(os.environ["IDENTITY"])["app_dir"]).resolve(); bundle=pathlib.Path(os.environ["BUNDLE"]).resolve(); raise SystemExit(0 if app == bundle or bundle in app.parents else 1)'; then - curl -fsS -m 3 -X POST "http://127.0.0.1:14168/services/bridge/exit" >/dev/null 2>&1 || true -else - echo " bridge listener is not owned by this bundle; left running" -fi -sleep 1 - -# Kill any process whose command line lives inside this bundle (no /proc on macOS, -# so match on the full argv via ps; -ww disables column truncation so a deep bundle -# path is never cut off). Scoped to the bundle path → other installs untouched. -# Skip our own shell ($$) and its parent (the Terminal-spawned launcher). -selfpid=$$ -ps -axww -o pid=,command= 2>/dev/null | while read -r pid cmd; do - [ "$pid" = "$selfpid" ] && continue - [ "$pid" = "$PPID" ] && continue - case "$cmd" in - *"$BUNDLE"*) kill -9 "$pid" 2>/dev/null && echo " killed PID $pid" ;; - esac -done -echo "[OK] backend stopped" - -echo "==> Removing desktop alias" -link="$HOME/Desktop/GenericAgent.app" -if [ -L "$link" ]; then - case "$(readlink "$link")" in - "$BUNDLE"*) rm -f "$link" && echo "[OK] removed $link" ;; - *) echo " desktop alias points to another bundle; left in place" ;; - esac -else - echo " no desktop alias found" -fi - -echo "==> Detaching bundle paths from shared settings" -if [[ -f "$HOME/.ga_desktop_settings.json" && -x "$RUNTIME_PY" \ - && -f "$SETTINGS_HELPER" && -f "$PROJECT_DIR/frontends/desktop_settings.py" ]]; then - if "$RUNTIME_PY" "$SETTINGS_HELPER" \ - --settings "$HOME/.ga_desktop_settings.json" \ - --project-dir "$PROJECT_DIR" \ - --remove-bundle "$BUNDLE"; then - echo "[OK] removed this bundle's path keys; preferences and overrides were kept" - else - echo " settings were invalid or locked; left unchanged" - fi -else - echo " no owned settings paths could be detached" -fi - -echo "==> Removing WebView data" -for d in "$HOME/Library/WebKit/$APP_ID" \ - "$HOME/Library/Caches/$APP_ID" \ - "$HOME/Library/Application Support/$APP_ID" \ - "$HOME/Library/HTTPStorages/$APP_ID" \ - "$HOME/Library/Saved Application State/$APP_ID.savedState"; do - if [ -e "$d" ]; then rm -rf "$d" && echo "[OK] removed $d"; fi -done -rm -f "$HOME/Library/Preferences/$APP_ID.plist" 2>/dev/null || true - -echo "==> Removing the bundle folder" -cd /tmp || cd / -if rm -rf "$BUNDLE" 2>/dev/null && [ ! -e "$BUNDLE" ]; then - echo "[OK] removed $BUNDLE" -else - nohup bash -c 'for i in $(seq 1 20); do rm -rf "'"$BUNDLE"'" 2>/dev/null; [ -e "'"$BUNDLE"'" ] || exit 0; sleep 1; done' >/dev/null 2>&1 & - echo "[OK] bundle folder will be removed after exit: $BUNDLE" -fi - -echo -echo "GenericAgent has been uninstalled." diff --git a/frontends/desktop/packaging/scripts/merge_desktop_settings.py b/frontends/desktop/packaging/scripts/merge_desktop_settings.py deleted file mode 100644 index 557f3496..00000000 --- a/frontends/desktop/packaging/scripts/merge_desktop_settings.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python3 -"""Update or detach package-owned Desktop paths without dropping user settings.""" - -from __future__ import annotations - -import argparse -import sys -from pathlib import Path - - -def main() -> None: - parser = argparse.ArgumentParser() - parser.add_argument("--settings", required=True, type=Path) - parser.add_argument("--project-dir", required=True) - parser.add_argument("--python-path") - parser.add_argument("--bridge-script") - parser.add_argument("--remove-bundle") - args = parser.parse_args() - - sys.path.insert(0, str(Path(args.project_dir).resolve() / "frontends")) - from desktop_settings import merge_package_paths, remove_bundle_paths - - if args.remove_bundle: - if args.python_path or args.bridge_script: - parser.error("--remove-bundle cannot be combined with path updates") - remove_bundle_paths(args.settings, args.remove_bundle) - return - if not args.python_path or not args.bridge_script: - parser.error("--python-path and --bridge-script are required when updating settings") - merge_package_paths( - args.settings, - python_path=args.python_path, - project_dir=args.project_dir, - bridge_script=args.bridge_script, - ) - - -if __name__ == "__main__": - main() diff --git a/frontends/desktop/packaging/scripts/windows/install_windows.ps1 b/frontends/desktop/packaging/scripts/windows/install_windows.ps1 deleted file mode 100644 index b513f852..00000000 --- a/frontends/desktop/packaging/scripts/windows/install_windows.ps1 +++ /dev/null @@ -1,421 +0,0 @@ -<# -GenericAgent Desktop Windows setup script - -Usage examples: - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -ProjectDir D:\GenericAgent_Desktop -Mode PrepareOnly - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -Mode BridgeOnly - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -Mode NpmInstallOnly - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -Mode DesktopBuildOnly - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -Mode DesktopDevOnly - -Mirror examples (default to China mirrors for faster downloads): - # use the built-in defaults (Tsinghua PyPI + npmmirror) - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 - # use a different pip mirror - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -PipIndexUrl https://mirrors.aliyun.com/pypi/simple/ - # disable mirrors, fall back to official PyPI / npm registry - powershell -ExecutionPolicy Bypass -File .\install_windows.ps1 -PipIndexUrl "" -NpmRegistry "" - -What this script does: - 1. Locate GenericAgent project dir, which must contain agentmain.py. - 2. Locate a supported Python, or create/use .venv. - 3. Install minimal Python dependencies for desktop bridge. - 4. Copy mykey_template.py to mykey.py if mykey.py is missing. - 5. Write %USERPROFILE%\.ga_desktop_settings.json for the Tauri shell. - 6. Optionally install npm/Tauri dependencies, build debug desktop exe, or start bridge/exe. - -Important: - - This script lives under test_workspace and is still a draft, but these modes have been smoke-tested here: - PrepareOnly, BridgeOnly/manual bridge smoke, NpmInstallOnly, DesktopBuildOnly, and debug exe GUI autostart. - - Development install and packaged-user install are not exactly the same. - Shared part: Python/env/deps/config preparation. - Different part: where files live, whether exe exists, whether Python is bundled. -#> - -param( - [string]$ProjectDir = "", - [string]$PythonPath = "", - [ValidateSet("Auto", "PrepareOnly", "BridgeOnly", "ExeOnly", "NpmInstallOnly", "DesktopDevOnly", "DesktopBuildOnly")] - [string]$Mode = "Auto", - [switch]$NoVenv, - [switch]$SkipPipInstall, - [switch]$SkipNpmInstall, - [switch]$SkipWebView2Check, - # Package mirrors. Default to China mirrors for speed; pass "" to use the official source. - [string]$PipIndexUrl = "https://pypi.tuna.tsinghua.edu.cn/simple", - [string]$NpmRegistry = "https://registry.npmmirror.com", - # Offline install: when set, pip installs from local wheels only (no network). Used by the portable bundle. - [string]$WheelDir = "", - # Extra packages to install beyond the core deps (e.g. "fastapi uvicorn websockets" for the conductor service). - [string]$ExtraPipPackages = "" -) - -$ErrorActionPreference = "Stop" -$env:PYTHONDONTWRITEBYTECODE = "1" - -function Write-Step([string]$msg) { Write-Host "`n==> $msg" -ForegroundColor Cyan } -function Write-Ok([string]$msg) { Write-Host "[OK] $msg" -ForegroundColor Green } -function Write-Warn([string]$msg) { Write-Host "[WARN] $msg" -ForegroundColor Yellow } -function Fail([string]$msg) { throw "[ERROR] $msg" } - -function Resolve-ScriptRoot { - if ($PSScriptRoot) { return (Resolve-Path $PSScriptRoot).Path } - return (Get-Location).Path -} - -function Find-ProjectRoot([string]$startDir) { - if ($ProjectDir) { - $p = Resolve-Path $ProjectDir -ErrorAction Stop - if (Test-Path (Join-Path $p "agentmain.py")) { return $p.Path } - Fail "ProjectDir does not contain agentmain.py: $ProjectDir" - } - - $candidates = @( - (Get-Location).Path, - $startDir, - (Join-Path $startDir ".."), - (Join-Path $startDir "..\.."), - (Join-Path $startDir "..\..\.."), - "D:\GenericAgent_Desktop" - ) - - foreach ($c in $candidates) { - try { $rp = Resolve-Path $c -ErrorAction Stop } catch { continue } - if (Test-Path (Join-Path $rp.Path "agentmain.py")) { return $rp.Path } - } - Fail "Cannot locate GenericAgent project root. Pass -ProjectDir ." -} - -function Get-PythonVersionObject([string]$py) { - try { - $out = & $py -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}')" 2>$null - if ($LASTEXITCODE -ne 0 -or -not $out) { return $null } - return [version]($out.Trim()) - } catch { return $null } -} - -function Test-SupportedPython([string]$py) { - $v = Get-PythonVersionObject $py - if (-not $v) { return $false } - return ($v.Major -eq 3 -and $v.Minor -ge 10 -and $v.Minor -lt 14) -} - -function Find-Python([string]$root) { - if ($PythonPath) { - if (Test-SupportedPython $PythonPath) { return (Resolve-Path $PythonPath).Path } - Fail "Specified Python is not supported. Need Python >=3.10,<3.14: $PythonPath" - } - - $portableCandidates = @( - (Join-Path $root ".portable\uv-python\python.exe"), - (Join-Path $root ".portable\python\python.exe"), - (Join-Path $root "python\python.exe") - ) - foreach ($p in $portableCandidates) { - if ((Test-Path $p) -and (Test-SupportedPython $p)) { return (Resolve-Path $p).Path } - } - - $cmds = @("python", "py") - foreach ($cmd in $cmds) { - try { - if ($cmd -eq "py") { - $probe = & py -3.12 -c "import sys; print(sys.executable)" 2>$null - if ($LASTEXITCODE -eq 0 -and $probe -and (Test-SupportedPython $probe.Trim())) { return $probe.Trim() } - $probe = & py -3.11 -c "import sys; print(sys.executable)" 2>$null - if ($LASTEXITCODE -eq 0 -and $probe -and (Test-SupportedPython $probe.Trim())) { return $probe.Trim() } - $probe = & py -3.10 -c "import sys; print(sys.executable)" 2>$null - if ($LASTEXITCODE -eq 0 -and $probe -and (Test-SupportedPython $probe.Trim())) { return $probe.Trim() } - } else { - $probe = & python -c "import sys; print(sys.executable)" 2>$null - if ($LASTEXITCODE -eq 0 -and $probe -and (Test-SupportedPython $probe.Trim())) { return $probe.Trim() } - } - } catch { } - } - - Fail "No supported Python found. Install Python 3.10-3.13, or pass -PythonPath." -} - -function Ensure-Venv([string]$root, [string]$basePython) { - if ($NoVenv) { return $basePython } - $venvDir = Join-Path $root ".venv" - $venvPy = Join-Path $venvDir "Scripts\python.exe" - if (-not (Test-Path $venvPy)) { - Write-Host "GAPROGRESS|venv" - Write-Step "Create virtual environment: $venvDir" - & $basePython -m venv $venvDir - if ($LASTEXITCODE -ne 0) { Fail "Failed to create venv." } - } - if (-not (Test-SupportedPython $venvPy)) { Fail "Venv Python is invalid: $venvPy" } - return (Resolve-Path $venvPy).Path -} - -function Install-Dependencies([string]$root, [string]$py) { - if ($SkipPipInstall) { Write-Warn "SkipPipInstall is set; dependencies are not installed."; return } - - # Extra packages (e.g. conductor service deps) appended to the core install. - $extra = @() - if ($ExtraPipPackages) { $extra = $ExtraPipPackages.Split(" ", [StringSplitOptions]::RemoveEmptyEntries) } - - # Offline mode (portable bundle): install from local wheels only, no network, no pip self-upgrade. - if ($WheelDir) { - $wd = (Resolve-Path $WheelDir -ErrorAction Stop).Path - $lockedRequirements = Join-Path $wd "requirements.txt" - if (-not (Test-Path $lockedRequirements -PathType Leaf)) { - Fail "Pinned offline requirements are missing: $lockedRequirements" - } - Write-Ok "offline wheels: $wd" - if ($extra.Count) { Write-Ok "extra packages: $($extra -join ', ')" } - Write-Host "GAPROGRESS|deps" - Write-Step "Install GenericAgent dependencies and desktop bridge extras (offline)" - # Install deps directly (NOT an editable -e of the source): an editable install bakes the - # project's absolute path into a .pth. With -NoVenv (deps go into the relocatable embedded - # python) this keeps the portable bundle movable. The bridge adds the source to sys.path - # itself (ensure_ga_import_path), so the project itself need not be installed. - & $py -m pip install --no-compile --no-index --find-links $wd --requirement $lockedRequirements @extra - if ($LASTEXITCODE -ne 0) { Fail "offline pip install failed (check wheels dir)." } - Write-Host "GAPROGRESS|done" - return - } - - # Online mode: use a pip index mirror when -PipIndexUrl is set (default: Tsinghua). Pass -PipIndexUrl "" for official PyPI. - $pipIndexArgs = @() - if ($PipIndexUrl) { - $pipIndexArgs = @("-i", $PipIndexUrl) - Write-Ok "pip index mirror: $PipIndexUrl" - } else { - Write-Warn "No pip mirror set; using official PyPI." - } - Write-Step "Upgrade pip" - & $py -m pip install --no-compile @pipIndexArgs --upgrade pip - if ($LASTEXITCODE -ne 0) { Fail "pip upgrade failed." } - - Write-Step "Install GenericAgent minimal package and desktop bridge extras" - # pyproject.toml already includes: requests, beautifulsoup4, bottle, simple-websocket-server, aiohttp. - # desktop_bridge.py additionally imports psutil. - & $py -m pip install --no-compile @pipIndexArgs -e $root psutil @extra - if ($LASTEXITCODE -ne 0) { Fail "pip install failed." } -} - -function Remove-PortableRuntimeBytecode([string]$root, [string]$py) { - if (-not $WheelDir -or -not $NoVenv) { return } - $runtimeRoot = [System.IO.Path]::GetFullPath((Split-Path $root -Parent)) - $pythonRoot = [System.IO.Path]::GetFullPath((Join-Path $runtimeRoot "python")) - $pythonPrefix = $pythonRoot.TrimEnd('\', '/') + [System.IO.Path]::DirectorySeparatorChar - $pythonPath = [System.IO.Path]::GetFullPath($py) - if (-not (Test-Path $pythonRoot -PathType Container) -or - -not $pythonPath.StartsWith($pythonPrefix, [System.StringComparison]::OrdinalIgnoreCase)) { - Fail "Refusing to clean an unverified portable runtime: $runtimeRoot" - } - Get-ChildItem -LiteralPath $runtimeRoot -Directory -Filter "__pycache__" -Recurse -Force | - Sort-Object { $_.FullName.Length } -Descending | - Remove-Item -Recurse -Force - Get-ChildItem -LiteralPath $runtimeRoot -File -Recurse -Force | - Where-Object { $_.Name -match '\.py[co]$' } | - Remove-Item -Force - $cacheDir = Get-ChildItem -LiteralPath $runtimeRoot -Directory -Filter "__pycache__" -Recurse -Force | - Select-Object -First 1 - $bytecode = Get-ChildItem -LiteralPath $runtimeRoot -File -Recurse -Force | - Where-Object { $_.Name -match '\.py[co]$' } | - Select-Object -First 1 - if ($cacheDir -or $bytecode) { Fail "Python bytecode remains in portable runtime" } -} - -function Ensure-MyKey([string]$root) { - $mykey = Join-Path $root "mykey.py" - $tpl = Join-Path $root "mykey_template.py" - if (Test-Path $mykey) { - Write-Ok "mykey.py exists" - return - } - if (Test-Path $tpl) { - Copy-Item $tpl $mykey - Write-Warn "Created mykey.py from mykey_template.py. User still needs to fill API keys." - } else { - Write-Warn "mykey.py and mykey_template.py are missing. Model config may not work." - } -} - -function Write-DesktopSettings([string]$root, [string]$py) { - $settingsPath = Join-Path $env:USERPROFILE ".ga_desktop_settings.json" - $bridge = Join-Path $root "frontends\desktop_bridge.py" - $scriptRoot = Resolve-ScriptRoot - $helper = Join-Path $scriptRoot "merge_desktop_settings.py" - if (-not (Test-Path -LiteralPath $helper -PathType Leaf)) { - $helper = Join-Path (Split-Path $scriptRoot -Parent) "merge_desktop_settings.py" - } - if (-not (Test-Path -LiteralPath $bridge -PathType Leaf)) { - Fail "desktop_bridge.py not found: $bridge" - } - if (-not (Test-Path -LiteralPath $helper -PathType Leaf)) { - Fail "Desktop settings merge helper not found: $helper" - } - & $py $helper --settings $settingsPath --python-path $py --project-dir $root --bridge-script $bridge - if ($LASTEXITCODE -ne 0) { Fail "Desktop settings merge failed." } - Write-Ok "Wrote desktop settings: $settingsPath" -} - -function Test-WebView2Installed { - if ($SkipWebView2Check) { return } - Write-Step "Check Microsoft Edge WebView2 Runtime" - $keys = @( - "HKLM:\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}", - "HKLM:\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}", - "HKCU:\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" - ) - foreach ($k in $keys) { - if (Test-Path $k) { Write-Ok "WebView2 Runtime detected"; return } - } - Write-Warn "WebView2 Runtime not detected. Tauri desktop window may fail on clean Windows." - Write-Warn "Download: https://developer.microsoft.com/microsoft-edge/webview2/" -} - -function Find-DesktopDir([string]$root) { - $desktop = Join-Path $root "frontends\desktop" - if (-not (Test-Path (Join-Path $desktop "src-tauri\tauri.conf.json"))) { - Fail "Tauri desktop dir not found: $desktop" - } - return (Resolve-Path $desktop).Path -} - -function Ensure-NodeAndNpm { - $node = Get-Command node -ErrorAction SilentlyContinue - $npm = Get-Command npm -ErrorAction SilentlyContinue - if (-not $node) { Fail "node is not available in PATH. Install Node.js 20+ for desktop dev/build." } - if (-not $npm) { Fail "npm is not available in PATH. Install Node.js/npm for desktop dev/build." } - $nodeVer = & node --version - $npmVer = & cmd /c npm --version - Write-Ok "Node: $nodeVer; npm: $npmVer" -} - -function Install-DesktopNpm([string]$root) { - if ($SkipNpmInstall) { Write-Warn "SkipNpmInstall is set; desktop npm dependencies are not installed."; return } - $desktop = Find-DesktopDir $root - Ensure-NodeAndNpm - # Use an npm registry mirror when -NpmRegistry is set (default: npmmirror). Pass -NpmRegistry "" for official registry. - $npmRegArgs = @() - if ($NpmRegistry) { - $npmRegArgs = @("--registry", $NpmRegistry) - Write-Ok "npm registry mirror: $NpmRegistry" - } - Write-Step "Install Tauri desktop npm dependencies: $desktop" - Push-Location $desktop - try { - & cmd /c npm install --package-lock=false @npmRegArgs - if ($LASTEXITCODE -ne 0) { Fail "npm install failed in $desktop" } - & cmd /c npx tauri --version - if ($LASTEXITCODE -ne 0) { Fail "npx tauri --version failed after npm install" } - } finally { - Pop-Location - } -} - -function Build-DesktopDebug([string]$root) { - $desktop = Find-DesktopDir $root - Install-DesktopNpm $root - Write-Step "Build Tauri debug desktop exe" - Push-Location $desktop - try { - & cmd /c npx tauri build --debug - if ($LASTEXITCODE -ne 0) { Fail "Tauri debug build failed." } - } finally { - Pop-Location - } - $debugExe = Join-Path $desktop "src-tauri\target\debug\ga-desktop.exe" - if (Test-Path $debugExe) { Write-Ok "Debug exe: $debugExe" } else { Write-Warn "Debug exe not found at expected path: $debugExe" } -} - -function Start-DesktopDev([string]$root) { - $desktop = Find-DesktopDir $root - Install-DesktopNpm $root - Write-Step "Start Tauri desktop dev shell" - Write-Warn "This keeps running in current console. If status checks fail, bypass proxy for http://127.0.0.1:14168/status." - Push-Location $desktop - try { - & cmd /c npx tauri dev -- --dev - } finally { - Pop-Location - } -} - -function Find-PackagedExe([string]$root) { - $candidates = @( - (Join-Path $root "frontends\GenericAgent.exe"), - (Join-Path $root "frontends\desktop\src-tauri\target\release\GenericAgent.exe"), - (Join-Path $root "frontends\desktop\src-tauri\target\release\ga-desktop.exe"), - (Join-Path $root "frontends\desktop\src-tauri\target\debug\ga-desktop.exe") - ) - foreach ($p in $candidates) { if (Test-Path $p) { return (Resolve-Path $p).Path } } - return "" -} - -function Start-Bridge([string]$root, [string]$py) { - $bridge = Join-Path $root "frontends\desktop_bridge.py" - if (-not (Test-Path $bridge)) { Fail "desktop_bridge.py not found: $bridge" } - Write-Step "Start bridge: $bridge" - Write-Warn "This keeps running in current console. Browse http://127.0.0.1:14168/status to check." - $env:PYTHONPATH = "$root;$(Join-Path $root 'frontends');$env:PYTHONPATH" - & $py $bridge -} - -function Start-Exe([string]$root) { - $exe = Find-PackagedExe $root - if (-not $exe) { Fail "Packaged GenericAgent.exe not found. Use -Mode BridgeOnly or build Tauri first." } - Write-Step "Start packaged desktop exe" - Start-Process -FilePath $exe -WorkingDirectory (Split-Path $exe -Parent) - Write-Ok "Started: $exe" -} - -Write-Step "Resolve project root" -$scriptRoot = Resolve-ScriptRoot -$root = Find-ProjectRoot $scriptRoot -Write-Ok "Project root: $root" - -Write-Step "Resolve Python" -$basePy = Find-Python $root -Write-Ok "Base Python: $basePy" - -$py = Ensure-Venv $root $basePy -Write-Ok "Runtime Python: $py" - -Install-Dependencies $root $py -Ensure-MyKey $root -Write-DesktopSettings $root $py -Remove-PortableRuntimeBytecode $root $py -Test-WebView2Installed - -if ($Mode -eq "PrepareOnly") { - Write-Ok "Preparation finished. No app started because -Mode PrepareOnly was used." - exit 0 -} - -if ($Mode -eq "BridgeOnly") { - Start-Bridge $root $py - exit 0 -} - -if ($Mode -eq "NpmInstallOnly") { - Install-DesktopNpm $root - Write-Ok "Desktop npm setup finished." - exit 0 -} - -if ($Mode -eq "DesktopBuildOnly") { - Build-DesktopDebug $root - Write-Ok "Desktop debug build finished." - exit 0 -} - -if ($Mode -eq "DesktopDevOnly") { - Start-DesktopDev $root - exit 0 -} - -if ($Mode -eq "ExeOnly") { - Start-Exe $root - exit 0 -} - -# Auto mode: prefer packaged exe if present, otherwise start bridge for source/dev tree. -$exe = Find-PackagedExe $root -if ($exe) { Start-Exe $root } else { Start-Bridge $root $py } diff --git a/frontends/desktop/packaging/scripts/windows/uninstall.bat b/frontends/desktop/packaging/scripts/windows/uninstall.bat deleted file mode 100644 index 9df3809f..00000000 --- a/frontends/desktop/packaging/scripts/windows/uninstall.bat +++ /dev/null @@ -1,37 +0,0 @@ -@echo off -setlocal -cd /d "%~dp0" - -echo ============================================================ -echo GenericAgent Desktop - Uninstall -echo ============================================================ -echo. -echo This will completely remove GenericAgent from this computer: -echo - stop its background services (ports 14168 / 8900) -echo - delete the desktop shortcut -echo - detach this bundle from shared settings; keep preferences and other installs -echo - delete THIS folder and everything in it: -echo "%~dp0" -echo. -echo This cannot be undone. -echo. -set /p CONFIRM="Type Y to uninstall, anything else to cancel: " -if /i not "%CONFIRM%"=="Y" ( - echo. - echo Cancelled. Nothing was changed. - pause - exit /b 0 -) - -echo. -rem %~dp0 ends with a backslash; passing "...\dir\" makes the trailing \" escape the closing -rem quote, so PowerShell receives a path with a literal quote ("Illegal characters in path"). -rem Strip the trailing backslash before passing the bundle dir. -set "BUNDLE=%~dp0" -if "%BUNDLE:~-1%"=="\" set "BUNDLE=%BUNDLE:~0,-1%" -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0runtime\uninstall_windows.ps1" -BundleDir "%BUNDLE%" - -echo. -echo You can close this window now. -timeout /t 3 >nul -exit /b 0 diff --git a/frontends/desktop/packaging/scripts/windows/uninstall_windows.ps1 b/frontends/desktop/packaging/scripts/windows/uninstall_windows.ps1 deleted file mode 100644 index 29179b19..00000000 --- a/frontends/desktop/packaging/scripts/windows/uninstall_windows.ps1 +++ /dev/null @@ -1,161 +0,0 @@ -<# -GenericAgent Desktop — portable uninstall (Windows). - -Removes everything THIS portable bundle put on the machine, then deletes the -bundle folder itself: - 1. Stop the bundle's backend processes (bridge 14168 / conductor 8900 / scheduler) - — only processes whose executable lives inside this bundle, so other bundles - on the same machine are left alone. - 2. Remove the desktop shortcut (GenericAgent.lnk) — only when it points into - this bundle. - 3. Detach only path settings owned by this bundle while preserving preferences, - external source selection, and any second installed bundle. - 4. Schedule deletion of the bundle folder after this script exits (a folder - cannot delete itself while code runs inside it). - -Invoked by uninstall.bat (which confirms with the user first). Not meant to be -run directly without -BundleDir. -#> - -param( - [Parameter(Mandatory = $true)] - [string]$BundleDir -) - -$ErrorActionPreference = "SilentlyContinue" - -function Write-Step([string]$m) { Write-Host "==> $m" -ForegroundColor Cyan } -function Write-Ok([string]$m) { Write-Host "[OK] $m" -ForegroundColor Green } -function Write-Info([string]$m) { Write-Host " $m" -ForegroundColor Gray } - -# Normalize the bundle dir to an absolute path with a trailing separator for prefix checks. -# Defensive: strip stray quotes / trailing separators a caller may have leaked in (e.g. the -# classic "%~dp0" trailing-backslash-before-quote bug). -$BundleDir = $BundleDir.Trim().Trim('"').TrimEnd('\', '/') -try { $bundle = (Resolve-Path -LiteralPath $BundleDir).Path } catch { $bundle = $BundleDir } -$bundlePrefix = ($bundle.TrimEnd('\') + '\').ToLowerInvariant() - -function Path-IsInsideBundle([string]$p) { - if (-not $p) { return $false } - try { $rp = (Resolve-Path -LiteralPath $p -ErrorAction Stop).Path } catch { $rp = $p } - return $rp.ToLowerInvariant().StartsWith($bundlePrefix) -} - -# ── 1. Graceful backend shutdown, then force-kill bundle-owned processes ────── -Write-Step "Stopping GenericAgent backend services" - -# Best-effort graceful exit only when identity.app_dir belongs to this bundle. -try { - $identity = Invoke-RestMethod -Uri "http://127.0.0.1:14168/services/identity" -Method Get -TimeoutSec 3 - if ($identity.app_dir -and (Path-IsInsideBundle ([string]$identity.app_dir))) { - Invoke-WebRequest -Uri "http://127.0.0.1:14168/services/bridge/exit" -Method Post ` - -TimeoutSec 3 -UseBasicParsing | Out-Null - Start-Sleep -Milliseconds 800 - } else { - Write-Info "bridge listener is not owned by this bundle; left running" - } -} catch { } - -# Force-kill anything still listening on our ports, but ONLY if the owning process -# executable lives inside this bundle (don't disturb a second installed copy). -foreach ($port in 14168, 8900) { - foreach ($conn in (Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue)) { - $proc = Get-Process -Id $conn.OwningProcess -ErrorAction SilentlyContinue - if ($proc -and (Path-IsInsideBundle $proc.Path)) { - Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue - Write-Info "killed PID $($proc.Id) ($($proc.ProcessName)) on port $port" - } elseif ($proc) { - Write-Info "port $port held by a process outside this bundle (PID $($proc.Id)); left running" - } - } -} - -# Kill ANY process whose executable image lives inside this bundle, regardless of name -# (GenericAgent.exe, python.exe, or any child tool it spawned). Limiting to the bundle path -# means we never touch a second installed copy. -foreach ($p in (Get-Process -ErrorAction SilentlyContinue)) { - if (Path-IsInsideBundle $p.Path) { - Stop-Process -Id $p.Id -Force -ErrorAction SilentlyContinue - Write-Info "killed PID $($p.Id) ($($p.ProcessName))" - } -} -Write-Ok "backend stopped" - -# ── 2. Desktop shortcut (only if it targets this bundle) ───────────────────── -Write-Step "Removing desktop shortcut" -$desktop = [Environment]::GetFolderPath('Desktop') -$lnk = Join-Path $desktop 'GenericAgent.lnk' -if (Test-Path -LiteralPath $lnk) { - $target = $null - try { - $ws = New-Object -ComObject WScript.Shell - $target = $ws.CreateShortcut($lnk).TargetPath - } catch { } - if ((-not $target) -or (Path-IsInsideBundle $target)) { - Remove-Item -LiteralPath $lnk -Force -ErrorAction SilentlyContinue - Write-Ok "removed $lnk" - } else { - Write-Info "desktop shortcut points to another bundle; left in place" - } -} else { - Write-Info "no desktop shortcut found" -} - -# ── 3. Shared settings file ────────────────────────────────────────────────── -Write-Step "Detaching bundle paths from shared settings" -$settings = Join-Path $env:USERPROFILE '.ga_desktop_settings.json' -$runtimePy = Join-Path $bundle 'runtime\python\python.exe' -$projectDir = Join-Path $bundle 'runtime\app' -$settingsHelper = Join-Path $bundle 'runtime\merge_desktop_settings.py' -if ((Test-Path -LiteralPath $settings -PathType Leaf) -and - (Test-Path -LiteralPath $runtimePy -PathType Leaf) -and - (Test-Path -LiteralPath $settingsHelper -PathType Leaf) -and - (Test-Path -LiteralPath (Join-Path $projectDir 'frontends\desktop_settings.py') -PathType Leaf)) { - & $runtimePy $settingsHelper --settings $settings --project-dir $projectDir --remove-bundle $bundle - if ($LASTEXITCODE -eq 0) { - Write-Ok "removed this bundle's path keys; preferences and overrides were kept" - } else { - Write-Info "settings were invalid or locked; left unchanged" - } -} else { - Write-Info "no owned settings paths could be detached" -} - -# ── 3b. WebView2 data dir (cache + localStorage) ───────────────────────────── -# Tauri creates %LOCALAPPDATA%\com.genericagent.app\ (EBWebView: HTTP cache + localStorage) -# outside the bundle, keyed by the app identifier. Only the Tauri desktop shell uses it (the -# project's other frontends — qt/tui/conductor — do not), so removing it is safe. Other -# GenericAgent bundles share the same identifier and would just rebuild it on next launch. -Write-Step "Removing WebView2 data" -$wv = Join-Path $env:LOCALAPPDATA 'com.genericagent.app' -if (Test-Path -LiteralPath $wv) { - Remove-Item -LiteralPath $wv -Recurse -Force -ErrorAction SilentlyContinue - if (Test-Path -LiteralPath $wv) { Write-Info "WebView2 data partially locked; some files remain" } - else { Write-Ok "removed $wv" } -} else { - Write-Info "no WebView2 data found" -} - -# ── 4. Schedule deletion of the bundle folder ──────────────────────────────── -# The folder cannot remove itself while this script (and the uninstall.bat that -# launched it) run from inside it. Spawn a detached cmd that waits for our process -# tree to fully exit, then retries the delete a few times in case a handle lingers. -Write-Step "Scheduling removal of the bundle folder" -$deleter = @" -cd /d "%TEMP%" -for /l %%i in (1,1,20) do ( - rd /s /q "$bundle" 2>nul - if not exist "$bundle" goto done - ping 127.0.0.1 -n 2 >nul -) -:done -"@ -$deleterPath = Join-Path $env:TEMP ("ga_uninstall_{0}.bat" -f ([guid]::NewGuid().ToString('N'))) -Set-Content -LiteralPath $deleterPath -Value $deleter -Encoding ASCII -# Start detached so it survives this script + uninstall.bat exiting. The retry loop -# (20 tries x ~1s) covers the brief window where the parent processes release handles. -Start-Process -FilePath "cmd.exe" -ArgumentList "/c", "`"$deleterPath`"" -WindowStyle Hidden | Out-Null -Write-Ok "bundle folder will be deleted after exit: $bundle" - -Write-Host "" -Write-Host "GenericAgent has been uninstalled." -ForegroundColor Green diff --git a/frontends/desktop/release_qualification/README.md b/frontends/desktop/release_qualification/README.md deleted file mode 100644 index c2e253cb..00000000 --- a/frontends/desktop/release_qualification/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Desktop release qualification - -`run_release_qualification.py` is the common production-package runner. Platform wrappers install -or extract one artifact produced from a candidate commit and invoke it against the production binary. -It temporarily uses the real per-user settings path, restores it byte-for-byte, and therefore -must run in a dedicated Windows/Linux/macOS test account. - -Every platform report records the candidate commit, artifact SHA-256, OS/architecture, bootstrap -snapshots, bridge identity/PIDs, package paths before and after relocation, screenshots, redacted -fake-model transcript, data results, cleanup status, and a short manual checklist. Screenshots and -manual checklist values are supporting material for the release owner; they do not determine the -automated evidence gate result. - -After all three reports and the Windows native retry report are complete, combine them: - -```bash -python3 frontends/desktop/release_qualification/verify_release_evidence.py \ - --expected-commit \ - --windows \ - --linux \ - --macos \ - --windows-native-report \ - --output -``` - -The verifier fails on a commit mismatch, missing artifact digest, failed automated scenario, -incomplete bootstrap evidence, missing macOS app immutability proof, or unclean final process/port -state. The release owner still reviews the screenshots and platform checklists separately before -publishing. The manifest is evidence for the candidate SHA; it is not committed to the repository. diff --git a/frontends/desktop/release_qualification/linux/README.md b/frontends/desktop/release_qualification/linux/README.md deleted file mode 100644 index 5526db46..00000000 --- a/frontends/desktop/release_qualification/linux/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Ubuntu 24.04 release qualification - -Run this on a real Ubuntu 24.04 x64 desktop in a dedicated test account. FUSE must be available. -A screenshot tool (`gnome-screenshot`, `scrot`, or ImageMagick `import`) supplies optional review -evidence when present. - -```bash -frontends/desktop/release_qualification/linux/run_linux_release_qualification.sh \ - --artifact /path/GenericAgent-Desktop-Linux-Portable.tar.gz \ - --expected-commit \ - --keep-work-dir -``` - -The wrapper verifies/extracts the tar, preserves the AppImage launch path, and runs the shared -production qualification. It covers package shape, embedded Python, first launch, warm -restart, package-owned bridge plus external `GA_ROOT`, deterministic chat, upload, memory import, -foreign-port protection, recovery after release, relocation into a path containing spaces and -Chinese characters, stale-override fallback, optional P2P degradation, screenshots, and cleanup. - -After automation passes, review the Linux manual items: executable bit and desktop launcher, -window dragging/close behavior, retry button after port release, native directory picker, and -visual/loading behavior. The report retains these checklist values for notes, but the automated -evidence verifier does not require them to be edited to `pass`. diff --git a/frontends/desktop/release_qualification/linux/run_linux_release_qualification.sh b/frontends/desktop/release_qualification/linux/run_linux_release_qualification.sh deleted file mode 100755 index b9e162dc..00000000 --- a/frontends/desktop/release_qualification/linux/run_linux_release_qualification.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -usage() { - echo "Usage: $0 --artifact --expected-commit [--work-dir ]" >&2 -} - -artifact="" -expected_commit="" -work_dir="" -keep_work_dir=0 -while [[ $# -gt 0 ]]; do - case "$1" in - --artifact) artifact="$2"; shift 2 ;; - --expected-commit) expected_commit="$2"; shift 2 ;; - --work-dir) work_dir="$2"; shift 2 ;; - --keep-work-dir) keep_work_dir=1; shift ;; - *) usage; exit 2 ;; - esac -done - -[[ -n "$artifact" && -n "$expected_commit" ]] || { usage; exit 2; } -artifact="$(realpath "$artifact")" -[[ -f "$artifact" ]] || { echo "Artifact not found: $artifact" >&2; exit 1; } -script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -driver="$script_dir/../run_release_qualification.py" -if [[ -z "$work_dir" ]]; then - work_dir="$(mktemp -d -t ga-linux-release-qualification.XXXXXX)" -else - mkdir -p "$work_dir" - work_dir="$(realpath "$work_dir")" -fi -extract_dir="$work_dir/extracted" -report_dir="$work_dir/report" -driver_work="$work_dir/driver-work" -mkdir -p "$extract_dir" "$report_dir" "$driver_work" - -cleanup() { - if [[ $keep_work_dir -eq 0 ]]; then - echo "Evidence kept at $report_dir; extracted package kept until the report is collected." - else - echo "Work directory kept at $work_dir" - fi -} -trap cleanup EXIT - -tar -xzf "$artifact" -C "$extract_dir" -package_root="$extract_dir/GenericAgent-Desktop-Linux-Portable" -if [[ ! -d "$package_root" ]]; then - mapfile -t roots < <(find "$extract_dir" -mindepth 1 -maxdepth 1 -type d) - [[ ${#roots[@]} -eq 1 ]] || { echo "Could not identify the portable package root" >&2; exit 1; } - package_root="${roots[0]}" -fi -chmod +x "$package_root/GenericAgent.AppImage" - -sidecar="$(dirname "$artifact")/SHA256SUMS-linux.txt" -[[ -f "$sidecar" ]] || { echo "Linux SHA-256 sidecar not found: $sidecar" >&2; exit 1; } -expected_hash="$(grep -Eo '[0-9a-fA-F]{64}' "$sidecar" | head -n 1 | tr '[:upper:]' '[:lower:]')" -actual_hash="$(sha256sum "$artifact" | awk '{print $1}')" -[[ "$actual_hash" == "$expected_hash" ]] || { echo "Artifact SHA-256 mismatch" >&2; exit 1; } - -python3 "$driver" \ - --platform linux \ - --artifact "$artifact" \ - --expected-commit "$expected_commit" \ - --package-root "$package_root" \ - --application-relative "GenericAgent.AppImage" \ - --runtime-relative "runtime" \ - --relocated-root "$work_dir/relocated/含 空格/GenericAgent 包" \ - --report-dir "$report_dir" \ - --work-dir "$driver_work" \ - --allow-user-settings-mutation diff --git a/frontends/desktop/release_qualification/macos/README.md b/frontends/desktop/release_qualification/macos/README.md deleted file mode 100644 index e002613a..00000000 --- a/frontends/desktop/release_qualification/macos/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# macOS 15 DMG release qualification - -Run this on a real macOS 15 machine in a dedicated test account. The wrapper mounts the DMG, -copies its app into `/Applications` under a collision-safe qualification name, launches the production -binary, and later moves that exact app to a path containing spaces and Chinese characters. - -```bash -frontends/desktop/release_qualification/macos/run_macos_release_qualification.sh \ - --artifact /path/GenericAgent-Desktop-macOS-aarch64.dmg \ - --expected-commit \ - --keep-work-dir -``` - -The release workflow builds this artifact on the explicit macOS 15 arm64 runner and names it -`aarch64`; it is not an Intel/universal binary. The app is ad-hoc signed only, not Developer ID -signed or notarized. - -In addition to the shared chat/data/port/relocation checks, this qualification hard-fails if the DMG -does not contain the build-time `.prepared` marker or if any file inside the `.app` changes from -first launch through restart and relocation. It verifies the package bridge remains inside the -app while `GA_ROOT` points at an external core, then verifies a deleted override falls back to the -stable writable runtime at `~/Library/Application Support/GenericAgent/runtime/app`. - -After automation, review Gatekeeper/open-anyway, traffic lights, focus, retry behavior, the native -directory picker, and visual/loading behavior. The report keeps those checklist values as supporting -notes, but the automated verifier does not require them to be edited to `pass`. The wrapper restores -the settings file exactly and removes its temporary `/Applications` copy; run it only in a dedicated -account because the normal Application Support runtime may be created. diff --git a/frontends/desktop/release_qualification/macos/run_macos_release_qualification.sh b/frontends/desktop/release_qualification/macos/run_macos_release_qualification.sh deleted file mode 100755 index 594bcdaf..00000000 --- a/frontends/desktop/release_qualification/macos/run_macos_release_qualification.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -usage() { - echo "Usage: $0 --artifact --expected-commit [--work-dir ]" >&2 -} - -artifact="" -expected_commit="" -work_dir="" -keep_work_dir=0 -while [[ $# -gt 0 ]]; do - case "$1" in - --artifact) artifact="$2"; shift 2 ;; - --expected-commit) expected_commit="$2"; shift 2 ;; - --work-dir) work_dir="$2"; shift 2 ;; - --keep-work-dir) keep_work_dir=1; shift ;; - *) usage; exit 2 ;; - esac -done - -[[ -n "$artifact" && -n "$expected_commit" ]] || { usage; exit 2; } -artifact="$(cd "$(dirname "$artifact")" && pwd)/$(basename "$artifact")" -[[ -f "$artifact" ]] || { echo "Artifact not found: $artifact" >&2; exit 1; } -script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -driver="$script_dir/../run_release_qualification.py" -if [[ -z "$work_dir" ]]; then - work_dir="$(mktemp -d -t ga-macos-release-qualification.XXXXXX)" -else - mkdir -p "$work_dir" - work_dir="$(cd "$work_dir" && pwd)" -fi -report_dir="$work_dir/report" -driver_work="$work_dir/driver-work" -mount_point="$work_dir/dmg" -install_app="/Applications/GenericAgent Release Qualification $$.app" -mounted=0 -mkdir -p "$report_dir" "$driver_work" "$mount_point" - -cleanup() { - if [[ $mounted -eq 1 ]]; then - hdiutil detach "$mount_point" -quiet || true - fi - if [[ -d "$install_app" ]]; then - rm -rf -- "$install_app" - fi - if [[ $keep_work_dir -eq 1 ]]; then - echo "Work directory kept at $work_dir" - else - echo "Evidence kept at $report_dir" - fi -} -trap cleanup EXIT - -[[ ! -e "$install_app" ]] || { echo "Refusing to replace existing app: $install_app" >&2; exit 1; } -sidecar="$artifact.sha256" -[[ -f "$sidecar" ]] || { echo "macOS SHA-256 sidecar not found: $sidecar" >&2; exit 1; } -expected_hash="$(grep -Eo '[0-9a-fA-F]{64}' "$sidecar" | head -n 1 | tr '[:upper:]' '[:lower:]')" -actual_hash="$(shasum -a 256 "$artifact" | awk '{print $1}')" -[[ "$actual_hash" == "$expected_hash" ]] || { echo "Artifact SHA-256 mismatch" >&2; exit 1; } - -hdiutil attach "$artifact" -mountpoint "$mount_point" -nobrowse -readonly -quiet -mounted=1 -source_app="$(find "$mount_point" -mindepth 1 -maxdepth 1 -type d -name '*.app' | head -n 1)" -[[ -n "$source_app" ]] || { echo "DMG does not contain an application" >&2; exit 1; } -ditto "$source_app" "$install_app" -hdiutil detach "$mount_point" -quiet -mounted=0 - -binary="$(find "$install_app/Contents/MacOS" -mindepth 1 -maxdepth 1 -type f -perm -111 | head -n 1)" -[[ -n "$binary" ]] || { echo "Installed application has no executable" >&2; exit 1; } -binary_relative="${binary#"$install_app"/}" - -python3 "$driver" \ - --platform macos \ - --artifact "$artifact" \ - --expected-commit "$expected_commit" \ - --package-root "$install_app" \ - --application-relative "$binary_relative" \ - --runtime-relative "Contents/Resources/runtime" \ - --relocated-root "$work_dir/relocated/含 空格/GenericAgent 已移动.app" \ - --report-dir "$report_dir" \ - --work-dir "$driver_work" \ - --allow-user-settings-mutation \ - --allow-external-package diff --git a/frontends/desktop/release_qualification/run_release_qualification.py b/frontends/desktop/release_qualification/run_release_qualification.py deleted file mode 100644 index 908de869..00000000 --- a/frontends/desktop/release_qualification/run_release_qualification.py +++ /dev/null @@ -1,1027 +0,0 @@ -#!/usr/bin/env python3 -"""Cross-platform release qualification for GenericAgent Desktop 2.0. - -This runner deliberately exercises a production binary and its packaged runtime. It does -not import product code from the checkout and it does not require network access. The -platform wrappers are responsible for extracting/installing the artifact and then pass the -application/runtime paths here. - -The production binary uses the real per-user settings file, so the runner refuses to start -without an explicit acknowledgement. It backs up that file byte-for-byte and restores it in -``finally``. Run this only in a dedicated OS test account: macOS may also create its normal -stable writable runtime under Application Support during the stale-override fallback test. -""" - -from __future__ import annotations - -import argparse -import base64 -import contextlib -import hashlib -import http.server -import json -import os -import platform -import plistlib -import shutil -import socket -import subprocess -import sys -import threading -import time -import urllib.error -import urllib.request -from pathlib import Path -from typing import Any - - -BRIDGE_HOST = "127.0.0.1" -DEFAULT_BRIDGE_PORT = 14168 -BRIDGE_PORT = DEFAULT_BRIDGE_PORT -BRIDGE_BASE = f"http://{BRIDGE_HOST}:{BRIDGE_PORT}" -RELEASE_VERSION = "0.2.1" -CONDUCTOR_SERVICE_ID = "frontends/conductor.py" -DEFAULT_CONDUCTOR_PORT = 8900 -E2E_CONDUCTOR_PORT_ENV = "GA_DESKTOP_E2E_CONDUCTOR_PORT" - - -class JourneyFailure(RuntimeError): - pass - - -def utc_now() -> str: - return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) - - -def sha256(path: Path) -> str: - digest = hashlib.sha256() - with path.open("rb") as stream: - for chunk in iter(lambda: stream.read(1024 * 1024), b""): - digest.update(chunk) - return digest.hexdigest() - - -def canonical(path: Path | str) -> Path: - return Path(path).expanduser().resolve() - - -def is_within(child: Path | str, parent: Path | str) -> bool: - try: - canonical(child).relative_to(canonical(parent)) - return True - except (OSError, ValueError): - return False - - -def read_json(path: Path, default: Any = None) -> Any: - try: - return json.loads(path.read_text(encoding="utf-8")) - except (OSError, json.JSONDecodeError): - return default - - -def write_json(path: Path, value: Any) -> None: - path.parent.mkdir(parents=True, exist_ok=True) - path.write_text(json.dumps(value, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") - - -def read_macos_bundle_versions(package_root: Path) -> tuple[str, str]: - info_path = package_root / "Contents" / "Info.plist" - try: - with info_path.open("rb") as stream: - info = plistlib.load(stream) - except (OSError, plistlib.InvalidFileException, TypeError, ValueError) as error: - raise JourneyFailure(f"macOS application Info.plist is missing or invalid: {info_path}") from error - if not isinstance(info, dict): - raise JourneyFailure(f"macOS application Info.plist is missing or invalid: {info_path}") - - values = { - "CFBundleShortVersionString": info.get("CFBundleShortVersionString"), - "CFBundleVersion": info.get("CFBundleVersion"), - } - for key, value in values.items(): - if not isinstance(value, str) or value != RELEASE_VERSION: - raise JourneyFailure(f"macOS {key} is {value!r}; expected {RELEASE_VERSION!r}") - return values["CFBundleShortVersionString"], values["CFBundleVersion"] - - -def request_json(method: str, path: str, body: Any = None, timeout: float = 5.0) -> Any: - payload = None if body is None else json.dumps(body).encode("utf-8") - request = urllib.request.Request(f"{BRIDGE_BASE}{path}", data=payload, method=method) - if payload is not None: - request.add_header("Content-Type", "application/json") - with urllib.request.urlopen(request, timeout=timeout) as response: - return json.loads(response.read().decode("utf-8")) - - -def request_json_with_status( - method: str, - path: str, - body: Any = None, - timeout: float = 5.0, -) -> tuple[int, Any]: - """Return an intentional HTTP error as JSON without treating it as a retry signal.""" - payload = None if body is None else json.dumps(body).encode("utf-8") - request = urllib.request.Request(f"{BRIDGE_BASE}{path}", data=payload, method=method) - if payload is not None: - request.add_header("Content-Type", "application/json") - try: - with urllib.request.urlopen(request, timeout=timeout) as response: - status = int(response.status) - raw = response.read() - except urllib.error.HTTPError as error: - status = int(error.code) - raw = error.read() - error.close() - try: - value = json.loads(raw.decode("utf-8")) - except (UnicodeDecodeError, json.JSONDecodeError) as error: - raise JourneyFailure(f"{method} {path} returned HTTP {status} without valid JSON") from error - return status, value - - -def completed_assistant_reply(snapshot: Any) -> str | None: - if not isinstance(snapshot, dict): - raise JourneyFailure("chat messages response is not an object") - status = snapshot.get("status") - if status in {"error", "cancelled"}: - detail = snapshot.get("lastError") or status - raise JourneyFailure(f"chat entered terminal state {status}: {detail}") - messages = snapshot.get("messages") - if not isinstance(messages, list): - raise JourneyFailure("chat messages response has no messages list") - reply = next( - ( - content - for message in reversed(messages) - if isinstance(message, dict) - and message.get("role") == "assistant" - and isinstance((content := message.get("content")), str) - and "Harness reply" in content - ), - None, - ) - if reply is None: - return None - if status != "idle" or snapshot.get("hasUnfinishedWork") is not False: - return None - return reply - - -def validate_import_maintenance_conflict(status: int, payload: Any) -> list[str]: - if status != 409 or not isinstance(payload, dict): - raise JourneyFailure(f"initial memory import was not the expected HTTP 409: {status} {payload}") - if payload.get("ok") is not False or payload.get("code") != "maintenance_conflict": - raise JourneyFailure(f"initial memory import returned the wrong conflict: {payload}") - if payload.get("runningSessions") != []: - raise JourneyFailure(f"memory import still saw unfinished Desktop sessions: {payload}") - running_extras = payload.get("runningExtras") - if ( - not isinstance(running_extras, list) - or not running_extras - or any(not isinstance(item, str) or not item for item in running_extras) - or len(running_extras) != len(set(running_extras)) - or CONDUCTOR_SERVICE_ID not in running_extras - ): - raise JourneyFailure(f"memory import did not identify the running conductor: {payload}") - return running_extras - - -def verified_stopped_extras_panel(payload: Any, expected_ids: list[str]) -> dict[str, Any] | None: - if not isinstance(payload, dict) or not expected_ids: - return None - services = payload.get("services") - if not isinstance(services, list): - return None - states: dict[str, dict[str, Any]] = {} - for item in services: - if not isinstance(item, dict) or not isinstance(item.get("id"), str): - continue - service_id = item["id"] - if service_id in states: - return None - states[service_id] = item - for service_id in expected_ids: - state = states.get(service_id) - if ( - state is None - or state.get("running") is not False - or state.get("status") != "offline" - ): - return None - return payload - - -def verified_owned_conductor( - payload: Any, - expected_port: int, - port_is_listening: bool, -) -> dict[str, Any] | None: - """Return the one live conductor owned by this bridge, never an external listener.""" - if port_is_listening is not True or not isinstance(payload, dict): - return None - services = payload.get("services") - if not isinstance(services, list): - return None - matches = [ - item - for item in services - if isinstance(item, dict) and item.get("id") == CONDUCTOR_SERVICE_ID - ] - if len(matches) != 1: - return None - state = matches[0] - pid = state.get("pid") - if ( - state.get("status") != "running" - or state.get("running") is not True - or state.get("owned") is not True - or state.get("external") is not False - or state.get("port") != expected_port - or not isinstance(pid, int) - or isinstance(pid, bool) - or pid <= 0 - ): - return None - return state - - -def wait_until(label: str, predicate, timeout: float, interval: float = 0.25) -> Any: - deadline = time.monotonic() + timeout - last_error: BaseException | None = None - while time.monotonic() < deadline: - try: - value = predicate() - if value: - return value - except (OSError, ValueError, urllib.error.URLError, json.JSONDecodeError) as error: - last_error = error - time.sleep(interval) - suffix = f": {last_error}" if last_error else "" - raise JourneyFailure(f"timed out waiting for {label}{suffix}") - - -def loopback_port_is_free(port: int) -> bool: - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as probe: - probe.settimeout(0.25) - return probe.connect_ex((BRIDGE_HOST, port)) != 0 - - -def port_is_free() -> bool: - return loopback_port_is_free(BRIDGE_PORT) - - -def allocate_isolated_conductor_port() -> int: - for _ in range(20): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as reservation: - reservation.bind((BRIDGE_HOST, 0)) - port = int(reservation.getsockname()[1]) - if port not in {BRIDGE_PORT, DEFAULT_BRIDGE_PORT, DEFAULT_CONDUCTOR_PORT}: - return port - raise JourneyFailure("could not allocate an isolated conductor port") - - -def pid_is_alive(pid: int) -> bool: - if pid <= 0: - return False - try: - os.kill(pid, 0) - except ProcessLookupError: - return False - except PermissionError: - return True - except OSError: - return False - return True - - -class FakeOpenAIHandler(http.server.BaseHTTPRequestHandler): - protocol_version = "HTTP/1.1" - - def log_message(self, _format: str, *_args: Any) -> None: - return - - def do_POST(self) -> None: # noqa: N802 - stdlib callback name - length = int(self.headers.get("Content-Length", "0")) - raw = self.rfile.read(length) - try: - body = json.loads(raw or b"{}") - except json.JSONDecodeError: - body = {} - self.server.transcript.append({ # type: ignore[attr-defined] - "path": self.path, - "model": body.get("model", ""), - "authorization": "[redacted]" if self.headers.get("Authorization") else "", - "at": utc_now(), - }) - events = [ - {"choices": [{"delta": {"content": "Harness reply"}}]}, - { - "choices": [], - "usage": { - "prompt_tokens": 101, - "completion_tokens": 17, - "prompt_tokens_details": {"cached_tokens": 11}, - }, - }, - ] - data = "".join(f"data: {json.dumps(event)}\n\n" for event in events) - data += "data: [DONE]\n\n" - encoded = data.encode("utf-8") - self.send_response(200) - self.send_header("Content-Type", "text/event-stream; charset=utf-8") - self.send_header("Content-Length", str(len(encoded))) - self.send_header("Connection", "close") - self.end_headers() - self.wfile.write(encoded) - - -class FakeOpenAI: - def __init__(self) -> None: - self.server = http.server.ThreadingHTTPServer((BRIDGE_HOST, 0), FakeOpenAIHandler) - self.server.transcript = [] # type: ignore[attr-defined] - self.thread = threading.Thread(target=self.server.serve_forever, daemon=True) - self.started = False - - @property - def base_url(self) -> str: - return f"http://{BRIDGE_HOST}:{self.server.server_port}" - - @property - def transcript(self) -> list[dict[str, Any]]: - return list(self.server.transcript) # type: ignore[attr-defined] - - def start(self) -> None: - self.thread.start() - self.started = True - - def stop(self) -> None: - if self.started: - self.server.shutdown() - self.server.server_close() - if self.started: - self.thread.join(timeout=5) - - -class ForeignIdentityHandler(http.server.BaseHTTPRequestHandler): - def log_message(self, _format: str, *_args: Any) -> None: - return - - def do_GET(self) -> None: # noqa: N802 - stdlib callback name - payload = json.dumps({"service": "foreign-p2-package-listener", "pid": os.getpid()}).encode() - self.send_response(200) - self.send_header("Content-Type", "application/json") - self.send_header("Content-Length", str(len(payload))) - self.end_headers() - self.wfile.write(payload) - - -def fake_mykey(base_url: str) -> str: - return "\n".join( - [ - "native_oai_config = {", - " 'name': 'GenericAgent package E2E',", - " 'apikey': 'e2e-dummy-key',", - f" 'apibase': {str(base_url + '/v1')!r},", - " 'model': 'e2e-model',", - " 'api_mode': 'chat_completions',", - " 'stream': True,", - " 'max_retries': 0,", - " 'connect_timeout': 2,", - " 'read_timeout': 30,", - "}", - "", - ] - ) - - -def tree_snapshot(root: Path) -> dict[str, tuple[int, int]]: - snapshot: dict[str, tuple[int, int]] = {} - for path in sorted(root.rglob("*")): - if path.is_file() and not path.is_symlink(): - stat = path.stat() - snapshot[path.relative_to(root).as_posix()] = (stat.st_size, stat.st_mtime_ns) - return snapshot - - -def capture_screenshot(target: Path) -> bool: - target.parent.mkdir(parents=True, exist_ok=True) - system = platform.system() - commands: list[list[str]] = [] - if system == "Darwin": - commands = [["screencapture", "-x", str(target)]] - elif system == "Linux": - commands = [ - ["gnome-screenshot", "-f", str(target)], - ["scrot", str(target)], - ["import", "-window", "root", str(target)], - ] - for command in commands: - if not shutil.which(command[0]): - continue - completed = subprocess.run(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) - if completed.returncode == 0 and target.is_file() and target.stat().st_size > 0: - return True - return False - - -class Journey: - def __init__(self, args: argparse.Namespace) -> None: - self.args = args - self.package_root = canonical(args.package_root) - self.application_relative = Path(args.application_relative) - self.runtime_relative = Path(args.runtime_relative) - self.runtime_root = self.package_root / self.runtime_relative - self.application = self.package_root / self.application_relative - self.report_dir = canonical(args.report_dir) - self.work_dir = canonical(args.work_dir) - self.settings_path = Path.home() / ".ga_desktop_settings.json" - self.settings_existed = self.settings_path.exists() - self.settings_bytes = self.settings_path.read_bytes() if self.settings_existed else b"" - self.settings_mode = self.settings_path.stat().st_mode if self.settings_existed else None - self.conductor_port = allocate_isolated_conductor_port() - self.default_conductor_port_initially_free = loopback_port_is_free(DEFAULT_CONDUCTOR_PORT) - self.fake = FakeOpenAI() - self.external_root = self.work_dir / "external compatible core" - self.stale_root = self.work_dir / "external compatible core.removed" - self.process: subprocess.Popen[bytes] | None = None - self.process_log = None - self.foreign_server: http.server.ThreadingHTTPServer | None = None - self.foreign_thread: threading.Thread | None = None - self.screenshots: list[str] = [] - self.app_snapshot: dict[str, tuple[int, int]] | None = None - self.report: dict[str, Any] = { - "schemaVersion": 1, - "startedAt": utc_now(), - "expectedCommit": args.expected_commit, - "releaseVersion": RELEASE_VERSION, - "artifact": {}, - "environment": { - "system": platform.system(), - "release": platform.release(), - "version": platform.version(), - "architecture": platform.machine(), - "python": platform.python_version(), - "isolatedConductorPort": self.conductor_port, - "defaultConductorPortInitiallyFree": self.default_conductor_port_initially_free, - }, - "paths": {"before": str(self.package_root)}, - "checks": {}, - "bootstrap": {}, - "identities": {}, - "pids": [], - "screenshots": self.screenshots, - "manualChecklist": self.manual_checklist(args.platform), - "failures": [], - } - - @staticmethod - def manual_checklist(system: str) -> dict[str, str]: - common = { - "loadingFallbackAndMainRender": "pending", - "nativeDirectoryPicker": "pending", - "noVisualRegression": "pending", - } - platform_items = { - "windows": { - "framelessTitlebarAndThreeButtons": "pending", - "trayAndCloseHides": "pending", - "shortcutSelfHealsAfterMove": "pending", - }, - "linux": { - "appImageExecutableAndDesktopLauncher": "pending", - "windowDragAndCloseBehavior": "pending", - "retryButtonAfterPortRelease": "pending", - }, - "macos": { - "gatekeeperOrOpenAnyway": "pending", - "trafficLightsAndWindowFocus": "pending", - "retryButtonAfterPortRelease": "pending", - }, - } - return {**common, **platform_items[system]} - - def check_package_shape(self) -> None: - required = [ - self.application, - self.runtime_root / "app" / "agentmain.py", - self.runtime_root / "app" / "frontends" / "desktop_bridge.py", - self.runtime_root / "app" / "frontends" / "desktop" / "static" / "index.html", - ] - python = self.runtime_root / "python" / ("python.exe" if self.args.platform == "windows" else "bin/python3") - required.append(python) - missing = [str(path) for path in required if not path.exists()] - if missing: - raise JourneyFailure(f"package paths are missing: {missing}") - source_package_json = self.runtime_root / "app" / "frontends" / "desktop" / "package.json" - if source_package_json.exists(): - raise JourneyFailure(f"runtime contains excluded Desktop source metadata: {source_package_json}") - if self.args.platform == "macos" and not (self.runtime_root / ".prepared").is_file(): - raise JourneyFailure("macOS package has no build-time .prepared marker") - if self.args.platform == "macos": - short_version, bundle_version = read_macos_bundle_versions(self.package_root) - self.report["checks"]["packagedVersion"] = short_version - self.report["checks"]["packagedBundleVersion"] = bundle_version - self.report["checks"]["packageShape"] = True - - def prepare_external_root(self) -> None: - if self.external_root.exists() or self.stale_root.exists(): - raise JourneyFailure(f"test work directory is not clean: {self.work_dir}") - shutil.copytree(self.runtime_root / "app", self.external_root, symlinks=True) - (self.external_root / "mykey.py").write_text(fake_mykey(self.fake.base_url), encoding="utf-8") - write_json( - self.settings_path, - {"lang": "en", "ga_source_override": str(self.external_root), "ui": {"llmNo": 0}}, - ) - - def scenario_dir(self, name: str) -> Path: - path = self.report_dir / "bootstrap" / name - path.mkdir(parents=True, exist_ok=True) - return path - - def start_application(self, scenario: str) -> None: - if self.process is not None: - raise JourneyFailure("application is already running") - if not loopback_port_is_free(self.conductor_port): - raise JourneyFailure( - f"isolated conductor port {self.conductor_port} is occupied before {scenario}" - ) - report = self.scenario_dir(scenario) - log_path = self.report_dir / "logs" / f"{scenario}.log" - log_path.parent.mkdir(parents=True, exist_ok=True) - self.process_log = log_path.open("wb") - env = os.environ.copy() - env["GA_DESKTOP_E2E_REPORT_DIR"] = str(report) - env[E2E_CONDUCTOR_PORT_ENV] = str(self.conductor_port) - self.process = subprocess.Popen( - [str(self.application)], - cwd=str(self.package_root), - env=env, - stdout=self.process_log, - stderr=subprocess.STDOUT, - ) - self.report["pids"].append({"scenario": scenario, "app": self.process.pid}) - - def stop_application(self) -> None: - process_record = self.report["pids"][-1] if self.report["pids"] else None - with contextlib.suppress(Exception): - request_json("POST", "/services/bridge/exit", {}, timeout=2) - if self.process is not None: - with contextlib.suppress(subprocess.TimeoutExpired): - self.process.terminate() - self.process.wait(timeout=8) - if self.process.poll() is None: - self.process.kill() - self.process.wait(timeout=5) - self.process = None - if self.process_log is not None: - self.process_log.close() - self.process_log = None - wait_until("bridge port cleanup", port_is_free, 20) - wait_until( - "isolated conductor port cleanup", - lambda: loopback_port_is_free(self.conductor_port), - 20, - ) - if process_record is not None: - owned = { - kind: int(pid) - for kind in ("app", "bridge", "conductor") - if isinstance((pid := process_record.get(kind)), int) - and not isinstance(pid, bool) - and pid > 0 - } - wait_until( - f"{process_record.get('scenario', 'application')} owned processes to exit", - lambda: all(not pid_is_alive(pid) for pid in owned.values()), - 20, - ) - self.report["checks"].setdefault("ownedProcessStops", {})[ - str(process_record.get("scenario", "application")) - ] = owned - - def wait_ready(self, scenario: str, expected_root: Path | None) -> dict[str, Any]: - latest = self.scenario_dir(scenario) / "bootstrap-latest.json" - - def ready_snapshot() -> dict[str, Any] | None: - value = read_json(latest, {}) - if value.get("phase") == "failed": - raise JourneyFailure(f"bootstrap failed in {scenario}: {value.get('failure')}") - return value if value.get("phase") == "ready" else None - - snapshot = wait_until(f"{scenario} bootstrap ready", ready_snapshot, self.args.start_timeout) - - def expected_identity() -> dict[str, Any] | None: - value = request_json("GET", "/services/identity", timeout=2) - if not value.get("ga_root") or not value.get("app_dir") or not value.get("pid"): - return None - if expected_root is not None and canonical(value["ga_root"]) != canonical(expected_root): - return None - return value - - identity = wait_until(f"{scenario} bridge identity", expected_identity, 30) - if is_within(identity["app_dir"], self.external_root): - raise JourneyFailure("desktop bridge came from external GA_ROOT instead of the package") - expected_app_dir = self.runtime_root / "app" / "frontends" - if canonical(identity["app_dir"]) != canonical(expected_app_dir): - raise JourneyFailure( - f"package bridge app_dir mismatch: {identity['app_dir']} != {expected_app_dir}" - ) - build_id = str(identity.get("build_id", "")) - expected = self.args.expected_commit.strip().lower() - if expected and expected[:7] not in build_id.lower(): - raise JourneyFailure(f"bridge build_id {build_id!r} does not contain commit {expected[:7]}") - self.report["bootstrap"][scenario] = snapshot - self.report["identities"][scenario] = identity - self.report["pids"][-1]["bridge"] = identity["pid"] - conductor = wait_until( - f"{scenario} owned isolated conductor", - lambda: verified_owned_conductor( - request_json("GET", "/services/panel", timeout=5), - self.conductor_port, - not loopback_port_is_free(self.conductor_port), - ), - 30, - 0.25, - ) - self.report["pids"][-1]["conductor"] = conductor["pid"] - ownership = self.report["checks"].setdefault("isolatedConductorOwnership", {}) - ownership[scenario] = conductor - return identity - - def run_chat_upload_memory(self) -> None: - session = request_json("POST", "/session/new", {"cwd": str(self.external_root)}) - sid = session.get("sessionId") - if not sid: - raise JourneyFailure(f"session creation failed: {session}") - tiny_png = base64.b64encode( - b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01" - ).decode() - uploaded = request_json( - "POST", - "/upload", - {"name": "p2.png", "dataUrl": f"data:image/png;base64,{tiny_png}", "sid": sid}, - ) - upload_path = Path(str(uploaded.get("path", ""))) - if not uploaded.get("ok") or not upload_path.is_file() or not is_within(upload_path, self.external_root): - raise JourneyFailure(f"package upload did not stay under GA_ROOT: {uploaded}") - accepted = request_json( - "POST", - f"/session/{sid}/prompt", - {"prompt": "[E2E:normal] release package smoke", "display": "release package smoke"}, - ) - if not accepted.get("ok"): - raise JourneyFailure(f"chat prompt was rejected: {accepted}") - - def assistant_reply() -> str | None: - value = request_json("GET", f"/session/{sid}/messages?limit=20", timeout=3) - return completed_assistant_reply(value) - - wait_until("deterministic package chat reply", assistant_reply, 90, 0.5) - if not self.fake.transcript: - raise JourneyFailure("fake model received no request") - - source = self.work_dir / "memory import source" - source_memory = source / "memory" - source_responses = source / "temp" / "model_responses" - source_sessions = source / "temp" / "desktop_sessions" - destination_memory = self.external_root / "memory" - destination_responses = self.external_root / "temp" / "model_responses" - for directory in (source_memory, source_responses, source_sessions, destination_memory, destination_responses): - directory.mkdir(parents=True, exist_ok=True) - (destination_memory / "p2-package-memory.txt").write_text("before\n", encoding="utf-8") - (source_memory / "p2-package-memory.txt").write_text("after\n", encoding="utf-8") - (destination_responses / "shared.json").write_text("destination\n", encoding="utf-8") - (source_responses / "shared.json").write_text("source-must-not-win\n", encoding="utf-8") - (source_responses / "new.json").write_text("new\n", encoding="utf-8") - current_session_file = self.external_root / "temp" / "desktop_sessions" / f"{sid}.json" - wait_until("persisted package session", current_session_file.is_file, 10) - shutil.copy2(current_session_file, source_sessions / current_session_file.name) - imported_sid = "sess-p2-package-imported" - write_json( - source_sessions / f"{imported_sid}.json", - { - "id": imported_sid, - "title": "Qualification imported", - "messages": [], - "msg_seq": 0, - "cwd": str(source), - "created_at": time.time(), - "updated_at": time.time(), - }, - ) - imported_session_file = self.external_root / "temp" / "desktop_sessions" / f"{imported_sid}.json" - backup_parent = self.external_root / "temp" - - def import_target_snapshot() -> dict[str, Any]: - files: dict[str, bytes] = {} - for data_root in ( - destination_memory, - destination_responses, - self.external_root / "temp" / "desktop_sessions", - ): - if not data_root.exists(): - continue - for path in sorted(data_root.rglob("*")): - if path.is_file() and not path.is_symlink(): - files[path.relative_to(self.external_root).as_posix()] = path.read_bytes() - return { - "files": files, - "importedSessionExists": imported_session_file.exists(), - "backupDirectories": sorted( - path.name for path in backup_parent.glob("memory_import_backup_*") - ), - } - - before_conflict = import_target_snapshot() - conflict_status, conflict_payload = request_json_with_status( - "POST", - "/memory/import", - {"sourceDir": str(source)}, - timeout=20, - ) - running_extras = validate_import_maintenance_conflict(conflict_status, conflict_payload) - if import_target_snapshot() != before_conflict: - raise JourneyFailure("rejected memory import changed target data") - - stopped = request_json("POST", "/services/stop-extras", {}, timeout=20) - if not isinstance(stopped, dict) or stopped.get("ok") is not True: - raise JourneyFailure(f"managed extras stop request failed: {stopped}") - - def stopped_extras_panel() -> dict[str, Any] | None: - panel = request_json("GET", "/services/panel", timeout=5) - return verified_stopped_extras_panel(panel, running_extras) - - stopped_panel = wait_until( - "managed extras to stop before memory import", - stopped_extras_panel, - 30, - 0.25, - ) - result = request_json("POST", "/memory/import", {"sourceDir": str(source)}, timeout=20) - required_fields = { - "memoryCopied", - "responsesCopied", - "responsesSkipped", - "sessionsAdded", - "backupDir", - } - if not result.get("ok") or not required_fields.issubset(result): - raise JourneyFailure(f"memory import response contract failed: {result}") - backup_file = Path(result["backupDir"]) / "memory" / "p2-package-memory.txt" - if backup_file.read_text(encoding="utf-8") != "before\n": - raise JourneyFailure("memory import did not preserve the pre-import backup") - if (destination_memory / "p2-package-memory.txt").read_text(encoding="utf-8") != "after\n": - raise JourneyFailure("memory import did not overwrite memory") - if (destination_responses / "shared.json").read_text(encoding="utf-8") != "destination\n": - raise JourneyFailure("memory import overwrote an existing response") - if not (destination_responses / "new.json").is_file() or result["sessionsAdded"] != 1: - raise JourneyFailure(f"memory response/session merge failed: {result}") - self.report["checks"].update( - { - "deterministicChat": True, - "uploadUnderExternalRoot": True, - "memoryImportMaintenanceGate": { - "code": conflict_payload["code"], - "runningSessions": conflict_payload["runningSessions"], - "runningExtras": running_extras, - "stoppedPanel": stopped_panel, - }, - "memoryImport": result, - "fakeModelRequests": self.fake.transcript, - } - ) - - def run_port_conflict(self) -> None: - if not port_is_free(): - raise JourneyFailure("bridge port was not released before foreign-port test") - self.foreign_server = http.server.ThreadingHTTPServer( - (BRIDGE_HOST, BRIDGE_PORT), ForeignIdentityHandler - ) - self.foreign_thread = threading.Thread(target=self.foreign_server.serve_forever, daemon=True) - self.foreign_thread.start() - self.start_application("foreign-port") - latest = self.scenario_dir("foreign-port") / "bootstrap-latest.json" - - def failed_snapshot() -> dict[str, Any] | None: - value = read_json(latest, {}) - return value if value.get("phase") == "failed" else None - - failed = wait_until("foreign port bootstrap failure", failed_snapshot, 90) - if failed.get("failure", {}).get("code") != "port_conflict": - raise JourneyFailure(f"foreign port produced the wrong failure: {failed}") - if self.foreign_thread is None or not self.foreign_thread.is_alive(): - raise JourneyFailure("desktop terminated the foreign listener") - self.report["bootstrap"]["foreign-port"] = failed - self.report["checks"]["foreignListenerSurvived"] = True - screenshot = self.report_dir / "screenshots" / "foreign-port.png" - if capture_screenshot(screenshot): - self.screenshots.append(str(screenshot)) - if self.process is not None: - self.process.terminate() - with contextlib.suppress(subprocess.TimeoutExpired): - self.process.wait(timeout=8) - if self.process.poll() is None: - self.process.kill() - self.process = None - if self.process_log is not None: - self.process_log.close() - self.process_log = None - self.foreign_server.shutdown() - self.foreign_server.server_close() - self.foreign_server = None - if self.foreign_thread: - self.foreign_thread.join(timeout=5) - self.foreign_thread = None - wait_until("foreign port release", port_is_free, 10) - self.start_application("after-port-release") - self.wait_ready("after-port-release", self.external_root) - self.report["checks"]["portRecovery"] = "release-then-production-restart" - - def relocate_package(self) -> None: - self.stop_application() - destination = canonical(self.args.relocated_root) - if destination.exists(): - raise JourneyFailure(f"relocation target already exists: {destination}") - destination.parent.mkdir(parents=True, exist_ok=True) - shutil.move(str(self.package_root), str(destination)) - self.package_root = destination - self.application = destination / self.application_relative - self.runtime_root = destination / self.runtime_relative - self.report["paths"]["after"] = str(destination) - self.start_application("relocated") - identity = self.wait_ready("relocated", self.external_root) - if not is_within(identity["app_dir"], destination): - raise JourneyFailure("relocated package still reported the previous package path") - self.report["checks"]["relocation"] = True - - def stale_override_fallback(self) -> None: - self.stop_application() - self.external_root.rename(self.stale_root) - self.start_application("stale-override") - identity = self.wait_ready("stale-override", None) - if canonical(identity["ga_root"]) == canonical(self.external_root): - raise JourneyFailure("deleted GA_ROOT override did not fall back") - fallback = canonical(identity["ga_root"]) - if not (fallback / "agentmain.py").is_file(): - raise JourneyFailure(f"fallback GA_ROOT is not a usable core: {fallback}") - panel = request_json("GET", "/services/panel", timeout=5) - if "services" not in panel: - raise JourneyFailure(f"service panel failed with optional P2P dependencies absent: {panel}") - self.report["checks"]["staleOverrideFallback"] = str(fallback) - self.report["checks"]["optionalP2PDoesNotBlockReady"] = True - - def restore_settings(self) -> None: - if self.settings_existed: - self.settings_path.write_bytes(self.settings_bytes) - if self.settings_mode is not None: - os.chmod(self.settings_path, self.settings_mode) - else: - with contextlib.suppress(FileNotFoundError): - self.settings_path.unlink() - - def cleanup(self) -> None: - with contextlib.suppress(Exception): - self.stop_application() - with contextlib.suppress(Exception): - if self.foreign_server is not None: - self.foreign_server.shutdown() - self.foreign_server.server_close() - with contextlib.suppress(Exception): - if self.foreign_thread is not None: - self.foreign_thread.join(timeout=5) - with contextlib.suppress(Exception): - self.fake.stop() - with contextlib.suppress(Exception): - if self.stale_root.exists() and not self.external_root.exists(): - self.stale_root.rename(self.external_root) - self.restore_settings() - self.report["checks"]["settingsRestored"] = ( - self.settings_path.read_bytes() == self.settings_bytes - if self.settings_existed - else not self.settings_path.exists() - ) - self.report["checks"]["finalPortFree"] = port_is_free() - self.report["checks"]["finalConductorPortFree"] = loopback_port_is_free( - self.conductor_port - ) - self.report["checks"]["defaultConductorPortPreserved"] = ( - loopback_port_is_free(DEFAULT_CONDUCTOR_PORT) - == self.default_conductor_port_initially_free - ) - owned_pids = { - int(pid) - for item in self.report["pids"] - for pid in (item.get("app"), item.get("bridge"), item.get("conductor")) - if isinstance(pid, int) and pid > 0 - } - deadline = time.monotonic() + 10 - while any(pid_is_alive(pid) for pid in owned_pids) and time.monotonic() < deadline: - time.sleep(0.2) - alive_pids = sorted(pid for pid in owned_pids if pid_is_alive(pid)) - self.report["checks"]["finalAliveOwnedPids"] = alive_pids - self.report["checks"]["finalOwnedProcessesExited"] = not alive_pids - - def save_report(self, success: bool) -> None: - self.report["success"] = success - self.report["manualComplete"] = all( - value == "pass" for value in self.report["manualChecklist"].values() - ) - self.report["completedAt"] = utc_now() - write_json(self.report_dir / "real-package-report.json", self.report) - - def run(self) -> None: - if not self.args.allow_user_settings_mutation: - raise JourneyFailure("pass --allow-user-settings-mutation in a dedicated OS test account") - if not port_is_free(): - raise JourneyFailure(f"{BRIDGE_HOST}:{BRIDGE_PORT} is already occupied before the test") - if not is_within(self.package_root, self.work_dir.parent) and not self.args.allow_external_package: - raise JourneyFailure("package root must be inside the test work area") - self.report_dir.mkdir(parents=True, exist_ok=True) - self.work_dir.mkdir(parents=True, exist_ok=True) - if self.args.artifact: - artifact = canonical(self.args.artifact) - self.report["artifact"] = { - "path": str(artifact), - "sha256": sha256(artifact), - "size": artifact.stat().st_size, - } - self.check_package_shape() - self.fake.start() - self.prepare_external_root() - if self.args.platform == "macos": - self.app_snapshot = tree_snapshot(self.package_root) - - self.start_application("first-launch") - self.wait_ready("first-launch", self.external_root) - ready_shot = self.report_dir / "screenshots" / "ready.png" - if capture_screenshot(ready_shot): - self.screenshots.append(str(ready_shot)) - self.run_chat_upload_memory() - - self.stop_application() - self.start_application("warm-restart") - self.wait_ready("warm-restart", self.external_root) - self.report["checks"]["warmRestart"] = True - - self.stop_application() - self.run_port_conflict() - self.relocate_package() - self.stale_override_fallback() - - if self.args.platform == "macos" and self.app_snapshot is not None: - after_snapshot = tree_snapshot(self.package_root) - if after_snapshot != self.app_snapshot: - changed = sorted(set(after_snapshot) ^ set(self.app_snapshot)) - changed += sorted( - key - for key in set(after_snapshot) & set(self.app_snapshot) - if after_snapshot[key] != self.app_snapshot[key] - ) - raise JourneyFailure(f"first launch modified the signed .app: {changed[:20]}") - self.report["checks"]["macAppImmutable"] = True - - -def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser() - parser.add_argument("--platform", choices=("windows", "linux", "macos"), required=True) - parser.add_argument("--artifact", default="") - parser.add_argument("--expected-commit", required=True) - parser.add_argument("--package-root", required=True) - parser.add_argument("--application-relative", required=True) - parser.add_argument("--runtime-relative", required=True) - parser.add_argument("--relocated-root", required=True) - parser.add_argument("--report-dir", required=True) - parser.add_argument("--work-dir", required=True) - parser.add_argument("--start-timeout", type=float, default=300) - parser.add_argument("--allow-user-settings-mutation", action="store_true") - parser.add_argument("--allow-external-package", action="store_true") - return parser.parse_args() - - -def main() -> int: - args = parse_args() - journey = Journey(args) - success = False - try: - journey.run() - success = True - return 0 - except BaseException as error: # retain evidence for assertion and unexpected failures - journey.report["failures"].append(f"{type(error).__name__}: {error}") - print(f"release qualification failed: {error}", file=sys.stderr) - return 1 - finally: - with contextlib.suppress(BaseException): - journey.cleanup() - journey.save_report( - success - and journey.report["checks"].get("finalPortFree", False) - and journey.report["checks"].get("finalConductorPortFree", False) - and journey.report["checks"].get("defaultConductorPortPreserved", False) - ) - print(journey.report_dir / "real-package-report.json") - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/frontends/desktop/release_qualification/verify_release_evidence.py b/frontends/desktop/release_qualification/verify_release_evidence.py deleted file mode 100644 index 8db293a0..00000000 --- a/frontends/desktop/release_qualification/verify_release_evidence.py +++ /dev/null @@ -1,181 +0,0 @@ -#!/usr/bin/env python3 -"""Combine three package reports and enforce the automated release evidence gate.""" - -from __future__ import annotations - -import argparse -import json -import sys -from pathlib import Path -from typing import Any - - -COMMON_CHECKS = ( - "packageShape", - "deterministicChat", - "uploadUnderExternalRoot", - "isolatedConductorOwnership", - "memoryImport", - "warmRestart", - "foreignListenerSurvived", - "portRecovery", - "relocation", - "staleOverrideFallback", - "optionalP2PDoesNotBlockReady", - "settingsRestored", - "finalPortFree", - "finalConductorPortFree", - "defaultConductorPortPreserved", - "ownedProcessStops", - "finalOwnedProcessesExited", -) - -SUCCESSFUL_APPLICATION_SCENARIOS = { - "first-launch", - "warm-restart", - "after-port-release", - "relocated", - "stale-override", -} - - -def load(path: str) -> dict[str, Any]: - target = Path(path).expanduser().resolve() - try: - value = json.loads(target.read_text(encoding="utf-8")) - except (OSError, json.JSONDecodeError) as error: - raise ValueError(f"cannot read {target}: {error}") from error - if not isinstance(value, dict): - raise ValueError(f"report is not an object: {target}") - value["_path"] = str(target) - return value - - -def assert_report(name: str, report: dict[str, Any], expected_commit: str) -> list[str]: - failures: list[str] = [] - actual_commit = str(report.get("expectedCommit", "")).lower() - if actual_commit != expected_commit.lower(): - failures.append(f"{name}: commit {actual_commit!r} != {expected_commit!r}") - if report.get("releaseVersion") != "0.2.1": - failures.append(f"{name}: release version is not 0.2.1") - if report.get("success") is not True: - failures.append(f"{name}: automated qualification did not pass") - if not str(report.get("artifact", {}).get("sha256", "")): - failures.append(f"{name}: artifact SHA-256 is missing") - checks = report.get("checks", {}) - for check in COMMON_CHECKS: - if not checks.get(check): - failures.append(f"{name}: required check {check} did not pass") - environment = report.get("environment") - isolated_port = ( - environment.get("isolatedConductorPort") if isinstance(environment, dict) else None - ) - if ( - not isinstance(isolated_port, int) - or isinstance(isolated_port, bool) - or not 1 <= isolated_port <= 65535 - or isolated_port in {8900, 14168} - ): - failures.append(f"{name}: isolated conductor port is missing or invalid") - ownership = checks.get("isolatedConductorOwnership") - if not isinstance(ownership, dict) or set(ownership) != SUCCESSFUL_APPLICATION_SCENARIOS: - failures.append(f"{name}: conductor ownership does not cover every successful launch") - elif isinstance(isolated_port, int): - for scenario, state in ownership.items(): - pid = state.get("pid") if isinstance(state, dict) else None - if ( - not isinstance(state, dict) - or state.get("status") != "running" - or state.get("running") is not True - or state.get("owned") is not True - or state.get("external") is not False - or state.get("port") != isolated_port - or not isinstance(pid, int) - or isinstance(pid, bool) - or pid <= 0 - ): - failures.append(f"{name}: invalid conductor ownership evidence for {scenario}") - stops = checks.get("ownedProcessStops") - if not isinstance(stops, dict) or set(stops) != SUCCESSFUL_APPLICATION_SCENARIOS: - failures.append(f"{name}: owned process stops do not cover every successful launch") - else: - for scenario, pids in stops.items(): - expected_conductor_pid = ( - ownership.get(scenario, {}).get("pid") if isinstance(ownership, dict) else None - ) - if ( - not isinstance(pids, dict) - or set(pids) != {"app", "bridge", "conductor"} - or any( - not isinstance(pid, int) or isinstance(pid, bool) or pid <= 0 - for pid in pids.values() - ) - or len(set(pids.values())) != 3 - or pids.get("conductor") != expected_conductor_pid - ): - failures.append(f"{name}: invalid owned process stop evidence for {scenario}") - if name == "macos" and checks.get("macAppImmutable") is not True: - failures.append("macos: signed .app immutability did not pass") - required_bootstrap = SUCCESSFUL_APPLICATION_SCENARIOS | {"foreign-port"} - missing_bootstrap = sorted(required_bootstrap - set(report.get("bootstrap", {}))) - if missing_bootstrap: - failures.append(f"{name}: missing bootstrap evidence {missing_bootstrap}") - return failures - - -def main() -> int: - parser = argparse.ArgumentParser() - parser.add_argument("--expected-commit", required=True) - parser.add_argument("--windows", required=True) - parser.add_argument("--linux", required=True) - parser.add_argument("--macos", required=True) - parser.add_argument("--windows-native-report", required=True) - parser.add_argument("--output", required=True) - args = parser.parse_args() - - reports = { - "windows": load(args.windows), - "linux": load(args.linux), - "macos": load(args.macos), - } - failures: list[str] = [] - for name, report in reports.items(): - failures.extend(assert_report(name, report, args.expected_commit)) - - windows_native = load(args.windows_native_report) - if windows_native.get("success") is not True: - failures.append("windows native wrapper did not pass") - if windows_native.get("checks", {}).get("portConflictRecovery") is not True: - failures.append("windows native retry path did not pass") - if windows_native.get("checks", {}).get("settingsRestored") is not True: - failures.append("windows native wrapper did not restore the original settings file") - manifest = { - "schemaVersion": 1, - "candidateCommit": args.expected_commit, - "releaseVersion": "0.2.1", - "platforms": { - name: { - "report": report["_path"], - "artifactSha256": report.get("artifact", {}).get("sha256"), - "environment": report.get("environment"), - "success": report.get("success"), - } - for name, report in reports.items() - }, - "windowsNativeReport": windows_native["_path"], - "gate": "pass" if not failures else "fail", - "failures": failures, - } - output = Path(args.output).expanduser().resolve() - output.parent.mkdir(parents=True, exist_ok=True) - output.write_text(json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") - if failures: - for failure in failures: - print(f"FAIL: {failure}", file=sys.stderr) - return 1 - print(output) - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/frontends/desktop/release_qualification/windows/Invoke-WindowsReleaseQualification.ps1 b/frontends/desktop/release_qualification/windows/Invoke-WindowsReleaseQualification.ps1 deleted file mode 100644 index f50afaca..00000000 --- a/frontends/desktop/release_qualification/windows/Invoke-WindowsReleaseQualification.ps1 +++ /dev/null @@ -1,661 +0,0 @@ -[CmdletBinding()] -param( - [string]$Repo = "abraxas914/GenericAgent", - [Parameter(Mandatory = $true)] - [string]$RunId, - [string]$ExpectedCommit = "", - [string]$PackageZip = "", - [string]$WorkDir = "", - [ValidateSet("Full", "Smoke", "FailureOnly")] - [string]$Mode = "Full", - [switch]$KeepWorkDir -) - -$ErrorActionPreference = "Stop" -Set-StrictMode -Version 2.0 - -if (-not $WorkDir) { - $WorkDir = Join-Path $env:TEMP ("ga-desktop-release-qualification\run-" + $RunId) -} - -$ScriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Path -$WorkDir = [System.IO.Path]::GetFullPath($WorkDir) -$DownloadDir = Join-Path $WorkDir "download" -$ExtractDir = Join-Path $WorkDir "app" -$ReportDir = Join-Path $WorkDir "report" -$ScreensDir = Join-Path $ReportDir "screenshots" -$ReportPath = Join-Path $ReportDir "e2e-report.json" -$RunSucceeded = $false -$PortWasFreeAtStart = $false -$UserHome = [Environment]::GetFolderPath([Environment+SpecialFolder]::UserProfile) -$SettingsPath = Join-Path $UserHome ".ga_desktop_settings.json" -$SettingsExisted = Test-Path -LiteralPath $SettingsPath -[byte[]]$SettingsBackupBytes = @() -$SettingsAttributes = $null -if ($SettingsExisted) { - $SettingsBackupBytes = [System.IO.File]::ReadAllBytes($SettingsPath) - $SettingsAttributes = [System.IO.File]::GetAttributes($SettingsPath) -} - -$Report = [ordered]@{ - repo = $Repo - runId = $RunId - expectedCommit = $ExpectedCommit - mode = $Mode - package = [ordered]@{} - environment = [ordered]@{} - checks = [ordered]@{} - screenshots = @() - manualChecklist = [ordered]@{ - windowsTitlebarVisible = "manual" - exactlyThreeWindowButtons = "manual" - titlebarBlankAreaDrags = "manual" - buttonAreaDoesNotDrag = "manual" - minimizeWorks = "manual" - maximizeRestoreWorks = "manual" - closeHidesToTray = "manual" - sidebarNavHasNoBlankRow = "manual" - nativeDirectoryPicker = "manual" - shortcutSelfHealsAfterMove = "manual" - loadingFallbackAndMainRender = "manual" - } - failures = @() - startedAt = (Get-Date).ToUniversalTime().ToString("o") -} - -function Write-Step([string]$Message) { - Write-Host "" - Write-Host "==> $Message" -} - -function Add-Failure([string]$Message) { - $script:Report.failures += $Message -} - -function Save-Report { - $script:Report.completedAt = (Get-Date).ToUniversalTime().ToString("o") - $json = $script:Report | ConvertTo-Json -Depth 12 - [System.IO.Directory]::CreateDirectory($ReportDir) | Out-Null - [System.IO.File]::WriteAllText($ReportPath, $json, [System.Text.UTF8Encoding]::new($false)) -} - -function Fail([string]$Message) { - Add-Failure $Message - Save-Report - throw $Message -} - -function Ensure-Dir([string]$Path) { - [System.IO.Directory]::CreateDirectory($Path) | Out-Null -} - -function Test-Command([string]$Name) { - $cmd = Get-Command $Name -ErrorAction SilentlyContinue - return $null -ne $cmd -} - -function Normalize-Commit([string]$Commit) { - return ($Commit -replace "\s", "").ToLowerInvariant() -} - -function Test-CommitMatches([string]$Actual, [string]$Expected) { - if (-not $Expected) { return $true } - $actualNorm = Normalize-Commit $Actual - $expectedNorm = Normalize-Commit $Expected - return $actualNorm.StartsWith($expectedNorm) -or $expectedNorm.StartsWith($actualNorm) -} - -function Get-RunMetadata { - if (-not (Test-Command "gh")) { - Fail "GitHub CLI 'gh' is required when -PackageZip is not enough to skip run metadata." - } - $json = & gh run view $RunId --repo $Repo --json headSha,status,conclusion,event,name 2>&1 - if ($LASTEXITCODE -ne 0) { - Fail "gh run view failed: $json" - } - $meta = ($json | Out-String) | ConvertFrom-Json - $script:Report.run = $meta - if ($ExpectedCommit -and -not (Test-CommitMatches $meta.headSha $ExpectedCommit)) { - Fail "Run headSha $($meta.headSha) does not match expected commit $ExpectedCommit" - } - return $meta -} - -function Resolve-PackageZip { - Ensure-Dir $DownloadDir - if ($PackageZip) { - $zipPath = [System.IO.Path]::GetFullPath($PackageZip) - if (-not (Test-Path -LiteralPath $zipPath)) { - Fail "Package zip not found: $zipPath" - } - return $zipPath - } - - if (-not (Test-Command "gh")) { - Fail "GitHub CLI 'gh' is required to download artifacts." - } - - Write-Step "Download GitHub Actions artifact" - $downloadOutput = & gh run download $RunId --repo $Repo --dir $DownloadDir 2>&1 - if ($LASTEXITCODE -ne 0) { - Fail "gh run download failed: $downloadOutput" - } - - $zips = @(Get-ChildItem -LiteralPath $DownloadDir -Recurse -Filter "GenericAgent-Desktop-Windows-Portable.zip") - if ($zips.Count -ne 1) { - Fail "Expected exactly one GenericAgent-Desktop-Windows-Portable.zip under $DownloadDir, found $($zips.Count)" - } - return $zips[0].FullName -} - -function Test-Sha256([string]$ZipPath) { - Write-Step "Verify SHA-256" - $hash = (Get-FileHash -LiteralPath $ZipPath -Algorithm SHA256).Hash.ToLowerInvariant() - $shaFile = $ZipPath + ".sha256" - if (-not (Test-Path -LiteralPath $shaFile)) { - $matches = @(Get-ChildItem -LiteralPath (Split-Path -Parent $ZipPath) -Recurse -File | Where-Object { - $_.Name -like "*.sha256" -or $_.Name -like "SHA256SUMS*.txt" - }) - if ($matches.Count -eq 1) { - $shaFile = $matches[0].FullName - } - } - if (Test-Path -LiteralPath $shaFile) { - $expectedText = [System.IO.File]::ReadAllText($shaFile) - $expectedHash = ([regex]::Match($expectedText, "[A-Fa-f0-9]{64}")).Value.ToLowerInvariant() - if (-not $expectedHash) { - Fail "Could not parse SHA-256 from $shaFile" - } - if ($hash -ne $expectedHash) { - Fail "SHA-256 mismatch. actual=$hash expected=$expectedHash" - } - $script:Report.package.sha256File = $shaFile - $script:Report.package.expectedSha256 = $expectedHash - } else { - Fail "SHA-256 sidecar not found next to $ZipPath" - } - $script:Report.package.sha256 = $hash -} - -function Expand-Package([string]$ZipPath) { - Write-Step "Extract package" - if (Test-Path -LiteralPath $ExtractDir) { - Remove-Item -LiteralPath $ExtractDir -Recurse -Force - } - Ensure-Dir $ExtractDir - Expand-Archive -LiteralPath $ZipPath -DestinationPath $ExtractDir -Force - - $packageRoot = Join-Path $ExtractDir "GenericAgent-Desktop-Windows-Portable" - if (-not (Test-Path -LiteralPath $packageRoot)) { - $dirs = @(Get-ChildItem -LiteralPath $ExtractDir -Directory) - if ($dirs.Count -eq 1) { - $packageRoot = $dirs[0].FullName - } - } - if (-not (Test-Path -LiteralPath $packageRoot)) { - Fail "Could not find extracted package root under $ExtractDir" - } - return [System.IO.Path]::GetFullPath($packageRoot) -} - -function Assert-PackageShape([string]$PackageRoot) { - Write-Step "Validate package structure" - $required = @( - "GenericAgent.exe", - "runtime\install_windows.ps1", - "runtime\wheels", - "runtime\python", - "runtime\app\frontends\desktop_bridge.py" - ) - foreach ($rel in $required) { - $path = Join-Path $PackageRoot $rel - if (-not (Test-Path -LiteralPath $path)) { - Fail "Package is missing required path: $rel" - } - } - $script:Report.package.root = $PackageRoot - $script:Report.package.exe = Join-Path $PackageRoot "GenericAgent.exe" - $script:Report.package.form = "windows-portable-zip" -} - -function Get-WindowsEnvironment { - $os = Get-CimInstance Win32_OperatingSystem - $cpu = Get-CimInstance Win32_Processor | Select-Object -First 1 - $arch = if ($env:PROCESSOR_ARCHITECTURE) { $env:PROCESSOR_ARCHITECTURE } else { [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString() } - return [ordered]@{ - caption = $os.Caption - version = $os.Version - buildNumber = $os.BuildNumber - architecture = $arch - cpu = $cpu.Name - userInteractive = [Environment]::UserInteractive - webView2Installed = Test-WebView2Installed - } -} - -function Test-WebView2Installed { - $keys = @( - "HKLM:\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}", - "HKLM:\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}", - "HKCU:\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" - ) - foreach ($key in $keys) { - if (Test-Path $key) { return $true } - } - return $false -} - -function Get-PortState { - try { - $connections = @(Get-NetTCPConnection -LocalAddress "127.0.0.1" -LocalPort 14168 -ErrorAction SilentlyContinue) - return @($connections | Select-Object LocalAddress, LocalPort, State, OwningProcess) - } catch { - return @() - } -} - -function Get-GaProcesses { - return @(Get-Process | Where-Object { - $_.ProcessName -like "GenericAgent*" -or $_.ProcessName -like "ga-desktop*" -or $_.ProcessName -like "python*" - } | Select-Object ProcessName, Id, Path) -} - -function Stop-ProcessTreeSafe([int]$ProcessId) { - try { - Stop-Process -Id $ProcessId -Force -ErrorAction SilentlyContinue - } catch {} -} - -function Capture-Screenshot([string]$Name) { - Ensure-Dir $ScreensDir - $path = Join-Path $ScreensDir $Name - try { - Add-Type -AssemblyName System.Windows.Forms - Add-Type -AssemblyName System.Drawing - $bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds - $bitmap = [System.Drawing.Bitmap]::new($bounds.Width, $bounds.Height) - $graphics = [System.Drawing.Graphics]::FromImage($bitmap) - $graphics.CopyFromScreen($bounds.Location, [System.Drawing.Point]::Empty, $bounds.Size) - $bitmap.Save($path, [System.Drawing.Imaging.ImageFormat]::Png) - $graphics.Dispose() - $bitmap.Dispose() - $script:Report.screenshots += $path - return $path - } catch { - Add-Failure "Screenshot failed for ${Name}: $($_.Exception.Message)" - return $null - } -} - -function Wait-ForBootstrapPhase( - [string]$ReportDirectory, - [string]$Phase, - [int]$TimeoutSeconds, - [int]$AfterSequence = 0 -) { - $latest = Join-Path $ReportDirectory "bootstrap-latest.json" - $deadline = (Get-Date).AddSeconds($TimeoutSeconds) - while ((Get-Date) -lt $deadline) { - if (Test-Path -LiteralPath $latest) { - try { - $snapshot = [System.IO.File]::ReadAllText($latest) | ConvertFrom-Json - if ([int]$snapshot.seq -le $AfterSequence) { - Start-Sleep -Milliseconds 500 - continue - } - if ($snapshot.phase -eq $Phase) { - return $snapshot - } - if ($Phase -ne "failed" -and $snapshot.phase -eq "failed") { - return $snapshot - } - } catch {} - } - Start-Sleep -Milliseconds 500 - } - return $null -} - -function Wait-ForBootstrapAnyPhase([string]$ReportDirectory, [string[]]$Phases, [int]$TimeoutSeconds) { - $latest = Join-Path $ReportDirectory "bootstrap-latest.json" - $deadline = (Get-Date).AddSeconds($TimeoutSeconds) - while ((Get-Date) -lt $deadline) { - if (Test-Path -LiteralPath $latest) { - try { - $snapshot = [System.IO.File]::ReadAllText($latest) | ConvertFrom-Json - if ($Phases -contains [string]$snapshot.phase) { - return $snapshot - } - } catch {} - } - Start-Sleep -Milliseconds 500 - } - return $null -} - -function Wait-ForBridgeIdentity([string]$ExpectedRoot, [int]$TimeoutSeconds) { - $deadline = (Get-Date).AddSeconds($TimeoutSeconds) - while ((Get-Date) -lt $deadline) { - try { - $identity = Invoke-RestMethod -Uri "http://127.0.0.1:14168/services/identity" -TimeoutSec 2 - if ($identity.ga_root) { - $reported = [System.IO.Path]::GetFullPath([string]$identity.ga_root).TrimEnd('\') - $expected = [System.IO.Path]::GetFullPath($ExpectedRoot).TrimEnd('\') - if ($reported.Equals($expected, [System.StringComparison]::OrdinalIgnoreCase)) { - return $identity - } - } - } catch {} - Start-Sleep -Milliseconds 700 - } - return $null -} - -function Start-GenericAgent([string]$PackageRoot, [string]$Scenario) { - $exe = Join-Path $PackageRoot "GenericAgent.exe" - $scenarioReportDir = Join-Path $ReportDir $Scenario - Ensure-Dir $scenarioReportDir - $env:GA_DESKTOP_E2E_REPORT_DIR = $scenarioReportDir - try { - return Start-Process -FilePath $exe -WorkingDirectory $PackageRoot -PassThru - } finally { - Remove-Item Env:\GA_DESKTOP_E2E_REPORT_DIR -ErrorAction SilentlyContinue - } -} - -function Stop-GenericAgent { - foreach ($proc in @(Get-Process GenericAgent -ErrorAction SilentlyContinue)) { - Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue - } - foreach ($proc in @(Get-Process ga-desktop -ErrorAction SilentlyContinue)) { - Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue - } -} - -function Stop-BridgeOnPort { - foreach ($conn in @(Get-PortState)) { - if ($conn.OwningProcess) { - try { - $proc = Get-Process -Id $conn.OwningProcess -ErrorAction Stop - if ($proc.ProcessName -like "python*" -or $proc.ProcessName -like "GenericAgent*" -or $proc.ProcessName -like "ga-desktop*") { - Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue - } - } catch {} - } - } -} - -function Invoke-FreshLaunch([string]$PackageRoot) { - Write-Step "Fresh launch and first-run prepare" - $marker = Join-Path $PackageRoot "runtime\.prepared" - if (Test-Path -LiteralPath $marker) { - Fail "Fresh package already has runtime\\.prepared before launch" - } - - $proc = Start-GenericAgent $PackageRoot "fresh" - $script:Report.checks.freshProcessId = $proc.Id - Start-Sleep -Seconds 2 - Capture-Screenshot "loading-first.png" | Out-Null - $prepSnapshot = Wait-ForBootstrapAnyPhase (Join-Path $ReportDir "fresh") @("preparing", "ready", "failed") 30 - if ($prepSnapshot -and $prepSnapshot.phase -eq "preparing") { - Capture-Screenshot "preparing.png" | Out-Null - } else { - $prepPhase = if ($prepSnapshot) { [string]$prepSnapshot.phase } else { "unavailable" } - $script:Report.checks.preparingScreenshot = "not captured; phase was $prepPhase" - } - - $snapshot = Wait-ForBootstrapPhase (Join-Path $ReportDir "fresh") "ready" 240 - if (-not $snapshot -or $snapshot.phase -ne "ready") { - Capture-Screenshot "fresh-failed.png" | Out-Null - Fail "Fresh launch did not reach bootstrap ready" - } - - if (-not (Test-Path -LiteralPath $marker)) { - Fail "Fresh launch reached ready but runtime\\.prepared was not created" - } - $identity = Wait-ForBridgeIdentity (Join-Path $PackageRoot "runtime\app") 30 - if (-not $identity) { - Fail "Bridge identity did not match extracted runtime app" - } - Capture-Screenshot "main-ready.png" | Out-Null - $script:Report.checks.freshReady = $true - $script:Report.checks.bridgeIdentity = $identity -} - -function Start-ForeignPortListener { - Write-Step "Start unknown foreign listener on 127.0.0.1:14168" - $ready = Join-Path $WorkDir "foreign-listener.ready" - Remove-Item -LiteralPath $ready -Force -ErrorAction SilentlyContinue - $fixture = Join-Path $ScriptRoot "fixtures\foreign-port-listener.ps1" - $proc = Start-Process -FilePath "powershell.exe" -ArgumentList @( - "-NoProfile", - "-ExecutionPolicy", "Bypass", - "-File", $fixture, - "-Port", "14168", - "-ReadyFile", $ready - ) -WindowStyle Hidden -PassThru - $deadline = (Get-Date).AddSeconds(20) - while ((Get-Date) -lt $deadline) { - if ((Test-Path -LiteralPath $ready) -and (Get-PortState).Count -gt 0) { - return $proc - } - Start-Sleep -Milliseconds 250 - } - Stop-ProcessTreeSafe $proc.Id - Fail "Foreign listener did not bind 127.0.0.1:14168" -} - -function Invoke-SetupRetry( - [System.Diagnostics.Process]$AppProcess, - [int]$TimeoutSeconds, - [int]$AfterSequence -) { - Add-Type -AssemblyName System.Windows.Forms - $sig = @" -using System; -using System.Runtime.InteropServices; -public static class Win32Focus { - [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); - [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); -} -"@ - Add-Type -TypeDefinition $sig -ErrorAction SilentlyContinue - try { - $AppProcess.Refresh() - if ($AppProcess.MainWindowHandle -ne [IntPtr]::Zero) { - [Win32Focus]::ShowWindow($AppProcess.MainWindowHandle, 9) | Out-Null - [Win32Focus]::SetForegroundWindow($AppProcess.MainWindowHandle) | Out-Null - Start-Sleep -Milliseconds 500 - [System.Windows.Forms.SendKeys]::SendWait("{TAB}{TAB}{ENTER}") - } - } catch { - Add-Failure "Automatic setup retry keypress failed: $($_.Exception.Message)" - } - - $snapshot = Wait-ForBootstrapPhase ` - (Join-Path $ReportDir "port-conflict") "ready" $TimeoutSeconds $AfterSequence - if ($snapshot -and $snapshot.phase -eq "ready") { - $script:Report.checks.setupRetry = "automatic" - return $true - } - - Write-Host "" - Write-Host "Manual action required: click 'Retry startup' in the setup window." - $snapshot = Wait-ForBootstrapPhase ` - (Join-Path $ReportDir "port-conflict") "ready" 180 $AfterSequence - if ($snapshot -and $snapshot.phase -eq "ready") { - $script:Report.checks.setupRetry = "manual" - return $true - } - return $false -} - -function Invoke-PortConflictScenario([string]$PackageRoot) { - Write-Step "Port conflict recovery scenario" - Stop-GenericAgent - Stop-BridgeOnPort - Start-Sleep -Seconds 2 - - $listener = Start-ForeignPortListener - $script:Report.checks.foreignListenerPid = $listener.Id - $appProc = Start-GenericAgent $PackageRoot "port-conflict" - Start-Sleep -Seconds 2 - - $failed = Wait-ForBootstrapPhase (Join-Path $ReportDir "port-conflict") "failed" 80 - if (-not $failed -or $failed.phase -ne "failed") { - Stop-ProcessTreeSafe $listener.Id - Fail "Port conflict scenario did not reach failed phase" - } - if ($failed.failure.code -ne "port_conflict") { - Stop-ProcessTreeSafe $listener.Id - Fail "Expected port_conflict, got $($failed.failure.code)" - } - try { - Get-Process -Id $listener.Id -ErrorAction Stop | Out-Null - $script:Report.checks.foreignListenerSurvived = $true - } catch { - Fail "Foreign listener was not alive after port_conflict" - } - Capture-Screenshot "setup-failure.png" | Out-Null - - Stop-ProcessTreeSafe $listener.Id - Start-Sleep -Seconds 2 - if (-not (Invoke-SetupRetry $appProc 40 ([int]$failed.seq))) { - Fail "Setup retry did not reach ready after releasing port" - } - Capture-Screenshot "setup-retry-ready.png" | Out-Null - $script:Report.checks.portConflictRecovery = $true -} - -function Invoke-ProductionContractJourney( - [string]$PackageRoot, - [string]$ZipPath -) { - Write-Step "Run production package chat, data, relocation, and fallback journey" - if (-not $ExpectedCommit) { - Fail "Full mode requires -ExpectedCommit for the production build identity assertion" - } - Stop-GenericAgent - Stop-BridgeOnPort - Start-Sleep -Seconds 2 - - # The package itself must be movable while the journey is running. Running the driver - # with runtime\python\python.exe would keep that executable open and make Windows reject - # the relocation, so copy the already-prepared embedded interpreter outside the package. - $driverPythonRoot = Join-Path $WorkDir "production-contract-python" - if (Test-Path -LiteralPath $driverPythonRoot) { - Remove-Item -LiteralPath $driverPythonRoot -Recurse -Force - } - Copy-Item -LiteralPath (Join-Path $PackageRoot "runtime\python") ` - -Destination $driverPythonRoot -Recurse -Force - $python = Join-Path $driverPythonRoot "python.exe" - if (-not (Test-Path -LiteralPath $python)) { - Fail "Could not create an out-of-package Python for the relocation journey" - } - $driver = [System.IO.Path]::GetFullPath((Join-Path $ScriptRoot "..\run_release_qualification.py")) - $contractReport = Join-Path $ReportDir "production-contract" - $contractWork = Join-Path $WorkDir "production-contract-work" - $relocated = Join-Path $ExtractDir "relocated\含 空格\GenericAgent 包" - & $python $driver ` - --platform windows ` - --artifact $ZipPath ` - --expected-commit $ExpectedCommit ` - --package-root $PackageRoot ` - --application-relative "GenericAgent.exe" ` - --runtime-relative "runtime" ` - --relocated-root $relocated ` - --report-dir $contractReport ` - --work-dir $contractWork ` - --allow-user-settings-mutation - if ($LASTEXITCODE -ne 0) { - Fail "Production package contract journey failed; see $contractReport" - } - $script:Report.checks.productionContract = [System.IO.File]::ReadAllText( - (Join-Path $contractReport "real-package-report.json") - ) | ConvertFrom-Json -} - -try { - Ensure-Dir $WorkDir - Ensure-Dir $ReportDir - Ensure-Dir $ScreensDir - $Report.environment = Get-WindowsEnvironment - - if (-not $PackageZip) { - Write-Step "Read GitHub Actions run metadata" - Get-RunMetadata | Out-Null - } elseif ($ExpectedCommit) { - $Report.run = [ordered]@{ headSha = $ExpectedCommit; source = "local-package" } - } - - $zip = Resolve-PackageZip - $Report.package.zip = $zip - Test-Sha256 $zip - $packageRoot = Expand-Package $zip - Assert-PackageShape $packageRoot - $Report.environment.initialPortState = @(Get-PortState) - $Report.environment.initialProcesses = @(Get-GaProcesses) - if ($Report.environment.initialPortState.Count -gt 0) { - Fail "127.0.0.1:14168 was already occupied before release qualification" - } - $script:PortWasFreeAtStart = $true - - if ($Mode -eq "Smoke" -or $Mode -eq "Full") { - Invoke-FreshLaunch $packageRoot - } - if ($Mode -eq "FailureOnly" -or $Mode -eq "Full") { - Invoke-PortConflictScenario $packageRoot - } - if ($Mode -eq "Full") { - Invoke-ProductionContractJourney $packageRoot $zip - } - - Stop-GenericAgent - Stop-BridgeOnPort - Start-Sleep -Seconds 2 - $Report.environment.finalPortState = @(Get-PortState) - $Report.environment.finalProcesses = @(Get-GaProcesses) - if ($Report.environment.finalPortState.Count -gt 0) { - Fail "Package journey left a listener on 127.0.0.1:14168" - } - $Report.success = $true - $script:RunSucceeded = $true - Save-Report - Write-Host "" - Write-Host "Release qualification report: $ReportPath" -} catch { - $Report.success = $false - Add-Failure $_.Exception.Message - $Report.environment.finalPortState = @(Get-PortState) - $Report.environment.finalProcesses = @(Get-GaProcesses) - Save-Report - Write-Error $_.Exception.Message - exit 1 -} finally { - if ($script:PortWasFreeAtStart) { - Stop-GenericAgent - Stop-BridgeOnPort - } - if ($SettingsExisted) { - [System.IO.File]::WriteAllBytes($SettingsPath, $SettingsBackupBytes) - if ($null -ne $SettingsAttributes) { - [System.IO.File]::SetAttributes($SettingsPath, $SettingsAttributes) - } - } else { - Remove-Item -LiteralPath $SettingsPath -Force -ErrorAction SilentlyContinue - } - $script:Report.checks.settingsRestored = if ($SettingsExisted) { - [Convert]::ToBase64String([System.IO.File]::ReadAllBytes($SettingsPath)) -eq ` - [Convert]::ToBase64String($SettingsBackupBytes) - } else { - -not (Test-Path -LiteralPath $SettingsPath) - } - Save-Report - if ($script:RunSucceeded -and -not $KeepWorkDir) { - Remove-Item -LiteralPath $ExtractDir -Recurse -Force -ErrorAction SilentlyContinue - Remove-Item -LiteralPath $DownloadDir -Recurse -Force -ErrorAction SilentlyContinue - Write-Host "Report kept at: $ReportDir" - } else { - Write-Host "WorkDir kept for diagnostics: $WorkDir" - } -} diff --git a/frontends/desktop/release_qualification/windows/README.md b/frontends/desktop/release_qualification/windows/README.md deleted file mode 100644 index 613b6947..00000000 --- a/frontends/desktop/release_qualification/windows/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Windows Desktop release qualification - -This folder contains the Windows qualification runner for the portable desktop package. It exercises: - -1. Download a GitHub Actions artifact, or use a local zip. -2. Verify commit, SHA-256, and required package files. -3. Extract to a clean directory. -4. Launch `GenericAgent.exe` directly. -5. Wait for first-run prepare, bridge identity, and bootstrap `ready`. -6. In `Full` mode, inject an unknown process on port `14168`, verify `port_conflict`, release it, and retry from setup. -7. Run the shared production-package qualification with the embedded Python: package-owned bridge plus - external `GA_ROOT`, fake-model chat, upload, memory import, warm restart, a second foreign-port - assertion, relocation into a path with spaces and Chinese characters, stale override fallback, - optional P2P degradation, and process/settings cleanup. - -## Full Run - -```powershell -.\frontends\desktop\release_qualification\windows\Invoke-WindowsReleaseQualification.ps1 ` - -Repo abraxas914/GenericAgent ` - -RunId 29071095889 ` - -ExpectedCommit 696ddfc ` - -Mode Full -``` - -Use `-PackageZip C:\path\GenericAgent-Desktop-Windows-Portable.zip` when the artifact has expired or has already been downloaded. - -## Modes - -- `Smoke`: package verification, extraction, first launch, prepare marker, bridge identity, bootstrap ready. -- `FailureOnly`: assumes the package can be extracted and focuses on the unknown port conflict and setup retry path. -- `Full`: runs `Smoke`, the native retry failure path, and the complete production package qualification. - It requires `-ExpectedCommit` so the bridge build identity is tied to the candidate SHA. - -## Manual Checks - -The script collects screenshots and writes these checklist items to the report for separate human review: - -- Loading, prepare, setup, and main windows always show the Windows titlebar. -- Right side has exactly minimize, maximize, and close. -- Blank titlebar area drags the window; button area does not. -- Minimize works. -- Maximize and restore work. -- Close hides to tray instead of exiting. -- Sidebar nav sits directly below the custom titlebar with no blank row. -- The native directory picker opens and returns a real directory. -- The shortcut self-heals after the portable folder is moved. -- Loading, fallback, and main React pages render through the Tauri resource protocol. - -Screenshot capture and checklist values are supporting evidence. They do not determine the automated -qualification result or need to be edited to `pass` before the evidence verifier runs. - -## Report - -Reports are written under `\report`: - -- `e2e-report.json` -- `bootstrap-events.jsonl` -- `bootstrap-latest.json` -- screenshots such as `loading-first.png`, `main-ready.png`, and `setup-failure.png` -- `production-contract/real-package-report.json`, including artifact SHA-256, OS/architecture, - bootstrap phases, bridge identities, PIDs/ports, before/after paths, deterministic data results, - and cleanup state - -Failures exit non-zero and keep diagnostics unless `-KeepWorkDir` is omitted and cleanup succeeds. diff --git a/frontends/desktop/release_qualification/windows/fixtures/foreign-port-listener.ps1 b/frontends/desktop/release_qualification/windows/fixtures/foreign-port-listener.ps1 deleted file mode 100644 index fe90a8a7..00000000 --- a/frontends/desktop/release_qualification/windows/fixtures/foreign-port-listener.ps1 +++ /dev/null @@ -1,35 +0,0 @@ -param( - [int]$Port = 14168, - [string]$ReadyFile = "" -) - -$ErrorActionPreference = "Stop" -Set-StrictMode -Version 2.0 - -$listener = [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Parse("127.0.0.1"), $Port) -$listener.Start() - -if ($ReadyFile) { - $dir = Split-Path -Parent $ReadyFile - if ($dir) { - [System.IO.Directory]::CreateDirectory($dir) | Out-Null - } - [System.IO.File]::WriteAllText($ReadyFile, "ready", [System.Text.Encoding]::ASCII) -} - -try { - while ($true) { - $client = $listener.AcceptTcpClient() - try { - $stream = $client.GetStream() - $body = "foreign listener" - $response = "HTTP/1.1 404 Not Found`r`nContent-Type: text/plain`r`nContent-Length: $($body.Length)`r`nConnection: close`r`n`r`n$body" - $bytes = [System.Text.Encoding]::ASCII.GetBytes($response) - $stream.Write($bytes, 0, $bytes.Length) - } finally { - $client.Close() - } - } -} finally { - $listener.Stop() -} diff --git a/frontends/desktop/scripts/gen_ds_store.py b/frontends/desktop/scripts/gen_ds_store.py deleted file mode 100644 index e359434a..00000000 --- a/frontends/desktop/scripts/gen_ds_store.py +++ /dev/null @@ -1,68 +0,0 @@ -"""Generate a .DS_Store file for DMG layout. - -Usage: python3 gen_ds_store.py - -Creates a .DS_Store that configures Finder to display: -- 540x380 window -- icon view, 128px icons -- at (140, 190), Applications at (400, 190) -""" -import sys -import struct -from ds_store import DSStore, DSStoreEntry -from mac_alias import Alias -import plistlib - -def main(): - output_path = sys.argv[1] - app_name = sys.argv[2] - - with DSStore.open(output_path, 'w+') as ds: - # Icon view properties for the folder - icvp = { - 'backgroundColorBlue': 1.0, - 'backgroundColorGreen': 1.0, - 'backgroundColorRed': 1.0, - 'backgroundType': 1, # 1 = solid color - 'gridOffsetX': 0.0, - 'gridOffsetY': 0.0, - 'gridSpacing': 100.0, - 'iconSize': 128.0, - 'labelOnBottom': True, - 'showIconPreview': True, - 'showItemInfo': False, - 'textSize': 13.0, - 'viewOptionsVersion': 1, - 'arrangeBy': 'none', - } - ds['.'] = DSStoreEntry('.', 'icvp', plistlib.dumps(icvp, fmt=plistlib.FMT_BINARY)) - - # Window bounds/settings - # vSrn = view style (icnv = icon view) - ds['.'] = DSStoreEntry('.', 'vSrn', 1) - - # bwsp = browser window settings plist - bwsp = { - 'WindowBounds': '{{100, 100}, {540, 380}}', - 'ShowPathbar': False, - 'ShowSidebar': False, - 'ShowStatusBar': False, - 'ShowToolbar': False, - 'ShowTabView': False, - 'SidebarWidth': 0, - } - ds['.'] = DSStoreEntry('.', 'bwsp', plistlib.dumps(bwsp, fmt=plistlib.FMT_BINARY)) - - # Icon positions (Iloc = icon location, 16 bytes: x(4) + y(4) + padding(8)) - # GenericAgent.app at (140, 190) - iloc_app = struct.pack('>II', 140, 190) + b'\xff\xff\xff\xff\xff\xff\x00\x00' - ds[app_name] = DSStoreEntry(app_name, 'Iloc', iloc_app) - - # Applications at (400, 190) - iloc_apps = struct.pack('>II', 400, 190) + b'\xff\xff\xff\xff\xff\xff\x00\x00' - ds['Applications'] = DSStoreEntry('Applications', 'Iloc', iloc_apps) - - print(f"Generated: {output_path}") - -if __name__ == '__main__': - main() diff --git a/frontends/desktop/scripts/post-dmg.sh b/frontends/desktop/scripts/post-dmg.sh deleted file mode 100644 index 50b58f0e..00000000 --- a/frontends/desktop/scripts/post-dmg.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/bash -# Repackage a Tauri-bundled DMG into a clean DMG with proper Finder layout. -# Only contains .app + Applications symlink + .DS_Store for layout. -# No .VolumeIcon.icns, .background, .fseventsd or other debris. -# -# Usage: ./scripts/post-dmg.sh -# Requires: macOS (hdiutil), Python 3 with ds_store package - -set -euo pipefail - -DMG_PATH="${1:-}" -HDIUTIL_BIN="${HDIUTIL_BIN:-hdiutil}" -if [[ -z "$DMG_PATH" ]]; then - echo "Usage: $0 " >&2 - exit 1 -fi - -if [[ ! -f "$DMG_PATH" ]]; then - echo "Error: DMG not found: $DMG_PATH" >&2 - exit 1 -fi - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -DMG_DIR="$(cd "$(dirname "$DMG_PATH")" && pwd)" -DMG_NAME="$(basename "$DMG_PATH")" -STAGE_DIR="$(mktemp -d)" -RW_DMG="$(mktemp -u).dmg" - -cleanup() { - if [[ -n "${MOUNT_POINT:-}" ]] && mount | grep -q "$MOUNT_POINT"; then - "$HDIUTIL_BIN" detach "$MOUNT_POINT" -force 2>/dev/null || true - fi - rm -rf "$STAGE_DIR" "$RW_DMG" -} -trap cleanup EXIT - -# --- Step 1: Extract app from original DMG --- -echo "Mounting original DMG..." -MOUNT_OUTPUT="$("$HDIUTIL_BIN" attach "$DMG_PATH" -readonly -noverify -noautoopen -plist)" -MOUNT_POINT="$(echo "$MOUNT_OUTPUT" | grep -A1 'mount-point' | grep '' | sed 's/.*\(.*\)<\/string>.*/\1/' | head -1)" - -if [[ -z "$MOUNT_POINT" ]]; then - echo "Error: could not determine mount point" >&2 - exit 1 -fi - -APP_NAME="" -for item in "$MOUNT_POINT"/*.app; do - if [[ -d "$item" ]]; then - APP_NAME="$(basename "$item")" - ditto "$item" "$STAGE_DIR/$APP_NAME" - break - fi -done - -if [[ -z "$APP_NAME" ]]; then - echo "Error: no .app found in DMG" >&2 - exit 1 -fi - -"$HDIUTIL_BIN" detach "$MOUNT_POINT" -quiet -unset MOUNT_POINT - -# --- Step 2: Prepare stage directory --- -ln -s /Applications "$STAGE_DIR/Applications" - -# Generate .DS_Store with layout metadata -python3 -c " -import struct, plistlib, sys -sys.path.insert(0, '') -from ds_store import DSStore, DSStoreEntry - -app_name = '$APP_NAME' -output = '$STAGE_DIR/.DS_Store' - -entries = [] - -# Icon positions (Iloc: x(4) + y(4) + padding(8)) -iloc_app = struct.pack('>II', 140, 190) + b'\xff\xff\xff\xff\xff\xff\x00\x00' -entries.append(DSStoreEntry(app_name, 'Iloc', 'blob', iloc_app)) - -iloc_apps = struct.pack('>II', 400, 190) + b'\xff\xff\xff\xff\xff\xff\x00\x00' -entries.append(DSStoreEntry('Applications', 'Iloc', 'blob', iloc_apps)) - -# Icon view properties -icvp = { - 'backgroundColorBlue': 1.0, - 'backgroundColorGreen': 1.0, - 'backgroundColorRed': 1.0, - 'backgroundType': 1, - 'gridOffsetX': 0.0, - 'gridOffsetY': 0.0, - 'gridSpacing': 100.0, - 'iconSize': 128.0, - 'labelOnBottom': True, - 'showIconPreview': True, - 'showItemInfo': False, - 'textSize': 13.0, - 'viewOptionsVersion': 1, - 'arrangeBy': 'none', -} -entries.append(DSStoreEntry('.', 'icvp', 'blob', plistlib.dumps(icvp, fmt=plistlib.FMT_BINARY))) - -# View style (1 = icon view) -entries.append(DSStoreEntry('.', 'vSrn', 'long', 1)) - -# Browser window settings -bwsp = { - 'WindowBounds': '{{100, 100}, {540, 380}}', - 'ShowSidebar': False, - 'ShowStatusBar': False, - 'ShowToolbar': False, - 'ShowTabView': False, - 'SidebarWidth': 0, -} -entries.append(DSStoreEntry('.', 'bwsp', 'blob', plistlib.dumps(bwsp, fmt=plistlib.FMT_BINARY))) - -with DSStore.open(output, 'w+') as ds: - for e in entries: - ds.insert(e) -" - -echo " Stage: $APP_NAME + Applications + .DS_Store" - -# --- Step 3: Create final DMG --- -VOLNAME="${APP_NAME%.app}" -CREATE_STATUS=1 -for attempt in 1 2 3; do - rm -f "$DMG_DIR/$DMG_NAME" - if "$HDIUTIL_BIN" create \ - -volname "$VOLNAME" \ - -srcfolder "$STAGE_DIR" \ - -ov \ - -format UDZO \ - "$DMG_DIR/$DMG_NAME"; then - CREATE_STATUS=0 - break - else - CREATE_STATUS=$? - fi - - if [[ "$attempt" -lt 3 ]]; then - echo "hdiutil create failed (attempt $attempt/3, exit $CREATE_STATUS); retrying..." >&2 - sleep $((attempt * 2)) - fi -done - -if [[ "$CREATE_STATUS" -ne 0 ]]; then - echo "Error: hdiutil create failed after 3 attempts" >&2 - exit "$CREATE_STATUS" -fi - -echo "Done: $DMG_NAME ($(du -h "$DMG_DIR/$DMG_NAME" | cut -f1))" diff --git a/frontends/desktop/scripts/verify-compiled-dist.mjs b/frontends/desktop/scripts/verify-compiled-dist.mjs deleted file mode 100644 index 39ee7e3f..00000000 --- a/frontends/desktop/scripts/verify-compiled-dist.mjs +++ /dev/null @@ -1,401 +0,0 @@ -import { createHash } from 'node:crypto'; -import { execFileSync } from 'node:child_process'; -import { access, readFile, readdir } from 'node:fs/promises'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -const desktopDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); -const repoRoot = path.resolve(desktopDir, '..', '..'); -const distDir = path.join(desktopDir, 'dist'); -const expectedVersion = '0.2.1'; -const expectedSourceCommit = '4a67226e18cb003db1210357ea4a283774773acc'; -const expectedNoticeSha256 = '2acf865e87e59090121369aac0575467067fdd7999923a70d785a46ceae3330f'; -const noticeAttributeRules = [ - 'frontends/desktop/public/THIRD_PARTY_NOTICES.txt text eol=lf', - 'frontends/desktop/dist/THIRD_PARTY_NOTICES.txt text eol=lf', -]; -const excludedManifestFiles = new Set(['README.md', 'build-provenance.json']); -const removedLegacyAssets = [ - 'styles.css', - 'i18n.js', - 'phosphor-icons.js', - 'vendor/marked.min.js', - 'assets/fonts/fonts.css', - 'assets/fonts/README.md', - 'assets/fonts/azonix-wordmark.woff2', - 'assets/fonts/jetbrains-mono-latin.woff2', - 'assets/fonts/lexend-latin.woff2', - 'assets/fonts/noto-sans-latin.woff2', -]; -const semiPackages = [ - '@douyinfe/semi-animation', - '@douyinfe/semi-animation-react', - '@douyinfe/semi-animation-styled', - '@douyinfe/semi-foundation', - '@douyinfe/semi-icons', - '@douyinfe/semi-illustrations', - '@douyinfe/semi-json-viewer-core', - '@douyinfe/semi-theme-default', - '@douyinfe/semi-ui', -]; - -function fail(message) { - throw new Error(message); -} - -async function exists(file) { - try { - await access(file); - return true; - } catch { - return false; - } -} - -async function readJson(file) { - return JSON.parse(await readFile(file, 'utf8')); -} - -async function walk(dir) { - const entries = await readdir(dir, { withFileTypes: true }); - const files = []; - for (const entry of entries) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) files.push(...await walk(fullPath)); - if (entry.isFile()) files.push(fullPath); - } - return files; -} - -function sha256(contents) { - return createHash('sha256').update(contents).digest('hex'); -} - -function relativeToDist(file) { - return path.relative(distDir, file).split(path.sep).join('/'); -} - -async function assertExists(relativePath) { - if (!await exists(path.join(distDir, relativePath))) { - fail(`missing compiled asset: ${relativePath}`); - } -} - -function workflowJob(workflow, name) { - const match = new RegExp(`^ ${name}:\\s*$`, 'm').exec(workflow); - if (!match) return ''; - const remainder = workflow.slice(match.index + match[0].length); - const nextJob = /^ [a-zA-Z0-9_-]+:\s*$/m.exec(remainder); - return nextJob ? remainder.slice(0, nextJob.index) : remainder; -} - -async function verifyHtmlReferences(relativePath) { - const html = await readFile(path.join(distDir, relativePath), 'utf8'); - const references = [...html.matchAll(/\b(?:src|href)=["']([^"']+)["']/g)].map((match) => match[1]); - for (const reference of references) { - if (/^(?:[a-z]+:|#|\/\/)/i.test(reference)) continue; - const cleanReference = reference.split(/[?#]/, 1)[0].replace(/^\//, ''); - if (cleanReference) await assertExists(cleanReference); - } -} - -function verifyTrackedSourceBoundary() { - const tracked = execFileSync('git', ['ls-files'], { cwd: repoRoot, encoding: 'utf8' }) - .split('\n') - .filter(Boolean); - const forbidden = tracked.filter((file) => ( - file.startsWith('frontends/desktop/src/') - || file.startsWith('frontends/desktop/public/') - || file.startsWith('frontends/desktop/e2e/') - || /^frontends\/desktop\/(?:index|loading|setup)\.html$/.test(file) - || /^frontends\/desktop\/(?:vite\.config\.[^/]+|tsconfig(?:\.[^/]+)?\.json|package-lock\.json)$/.test(file) - )); - if (forbidden.length > 0) { - fail(`tracked React development files crossed the compiled-only boundary: ${forbidden.join(', ')}`); - } -} - -async function verifyNoticeAttributes() { - const attributes = await readFile(path.join(repoRoot, '.gitattributes'), 'utf8'); - const lines = attributes.split(/\r?\n/); - for (const rule of noticeAttributeRules) { - const noticePath = rule.split(/\s+/, 1)[0]; - const matchingRules = lines.filter((line) => line.trim().split(/\s+/, 1)[0] === noticePath); - if (matchingRules.length !== 1 || matchingRules[0] !== rule) { - fail(`third-party notice must have one exact LF attribute rule: ${rule}`); - } - } -} - -async function verifyVersionsRendererAndEntry() { - const packageJson = await readJson(path.join(desktopDir, 'package.json')); - const tauriConfig = await readJson(path.join(desktopDir, 'src-tauri', 'tauri.conf.json')); - const tauriE2eConfig = await readJson(path.join(desktopDir, 'src-tauri', 'tauri.e2e.conf.json')); - const cargoToml = await readFile(path.join(desktopDir, 'src-tauri', 'Cargo.toml'), 'utf8'); - const cargoLock = await readFile(path.join(desktopDir, 'src-tauri', 'Cargo.lock'), 'utf8'); - const desktopShell = await readFile(path.join(desktopDir, 'src-tauri', 'src', 'lib.rs'), 'utf8'); - - if (packageJson.version !== expectedVersion) fail(`package.json version must be ${expectedVersion}`); - if (tauriConfig.version !== expectedVersion) fail(`tauri.conf.json version must be ${expectedVersion}`); - if (tauriConfig.build?.frontendDist !== '../dist') fail('Tauri frontendDist must be ../dist'); - for (const sourceBuildKey of ['beforeBuildCommand', 'beforeDevCommand', 'devUrl']) { - if (sourceBuildKey in tauriConfig.build) fail(`compiled-only Tauri config must not require ${sourceBuildKey}`); - } - if (!/^\[package\][\s\S]*?^name = "ga-desktop"$[\s\S]*?^version = "0\.2\.1"$/m.test(cargoToml)) { - fail(`Cargo.toml ga-desktop version must be ${expectedVersion}`); - } - if (!/^\[\[package\]\][\s\S]*?^name = "ga-desktop"$\nversion = "0\.2\.1"$/m.test(cargoLock)) { - fail(`Cargo.lock ga-desktop version must be ${expectedVersion}`); - } - - const productionSecurity = tauriConfig.app?.security; - if (!productionSecurity?.csp || typeof productionSecurity.csp !== 'object') { - fail('production renderer must use an explicit CSP'); - } - if (String(productionSecurity.csp['script-src']).includes('unsafe-eval')) { - fail('production CSP must not enable unsafe-eval'); - } - if (!String(productionSecurity.csp['connect-src']).includes('127.0.0.1:14168')) { - fail('production CSP must retain the Desktop loopback bridge'); - } - if (JSON.stringify(productionSecurity).includes('wdio:')) { - fail('production Tauri security config must not grant WebDriver permissions'); - } - if (!JSON.stringify(tauriE2eConfig).includes('wdio:default')) { - fail('E2E-only Tauri config must retain its isolated WebDriver capability'); - } - if (!desktopShell.includes('fn main_ui_url_from_current')) { - fail('desktop shell must resolve index.html from the active Tauri asset origin'); - } - if (/tauri::Url::parse\("http:\/\/127\.0\.0\.1:14168\/?"\)/.test(desktopShell)) { - fail('desktop shell must not navigate the renderer to the legacy bridge root'); - } -} - -async function verifyReleaseContract() { - const workflow = await readFile( - path.join(repoRoot, '.github', 'workflows', 'desktop-release-package.yml'), - 'utf8', - ); - const buildJobs = ['build-windows', 'build-linux', 'build-macos']; - const tauriCommands = { - 'build-windows': 'npm run tauri build -- --bundles nsis', - 'build-linux': 'npm run tauri build -- --bundles appimage', - 'build-macos': 'npm run tauri build -- --bundles app', - }; - const jobNames = [...workflow.slice(workflow.search(/^jobs:\s*$/m)).matchAll(/^ ([a-zA-Z0-9_-]+):\s*$/gm)] - .map((match) => match[1]); - if (JSON.stringify(jobNames) !== JSON.stringify([...buildJobs, 'publish-release'])) { - fail('release workflow must contain exactly three builders and one publisher'); - } - if (!/^permissions:\n contents: read\s*$/m.test(workflow)) { - fail('release workflow must default to contents: read'); - } - if ((workflow.match(/^ contents: write\s*$/gm) ?? []).length !== 1) { - fail('release workflow must grant contents: write exactly once'); - } - if ((workflow.match(/^ run: npm run test:dist$/gm) ?? []).length !== 3) { - fail('all three builders must run the compiled renderer byte contract'); - } - if (/\bnpm ci\b|\bnpm run build\b|\b(?:npx|npm exec)\s+vite\b/.test(workflow)) { - fail('compiled-only release workflow must not require the React source toolchain'); - } - - for (const job of buildJobs) { - const body = workflowJob(workflow, job); - if (!body) fail(`missing release builder: ${job}`); - if (!/^ permissions:\n contents: read\s*$/m.test(body) || body.includes('contents: write')) { - fail(`${job} must have read-only repository permission`); - } - if (!/uses: actions\/checkout@[0-9a-f]{40}[^\n]*\n with:\n persist-credentials: false/.test(body)) { - fail(`${job} checkout must use a full SHA and disable persisted credentials`); - } - if (body.includes('secrets.GITHUB_TOKEN') || /\bgh release\b/.test(body)) { - fail(`${job} must not receive a release token or publish`); - } - if (!body.includes('npm install --package-lock=false') - || !body.includes("if(v!=='2.11.4')") - || !body.includes('test ! -e package-lock.json') - || body.includes('npm ci')) { - fail(`${job} must install only the submitted minimal Tauri package manifest`); - } - const adjacentGate = new RegExp( - ' - name: Verify tracked compiled renderer bytes\\n' - + ' working-directory: frontends/desktop\\n' - + ' run: npm run test:dist\\n\\n' - + ' - name: [^\\n]+\\n' - + ' working-directory: frontends/desktop\\n' - + ` run: ${tauriCommands[job].replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`, - ); - if (!adjacentGate.test(body)) { - fail(`${job} must validate notice bytes immediately before Tauri embeds dist`); - } - if (!(body.includes("--exclude='./frontends/desktop/dist'") - || body.includes("--exclude='frontends/desktop/dist'"))) { - fail(`${job} must not duplicate Tauri-embedded dist inside runtime/app`); - } - if (!/--exclude='(?:\.\/)?frontends\/desktop\/release_qualification'/.test(body)) { - fail(`${job} must not package release qualification tooling inside runtime/app`); - } - if (!(body.includes('test ! -e "$RUNTIME/app/frontends/desktop/dist"') - || body.includes('test ! -e "$RUNTIME_SRC/app/frontends/desktop/dist"'))) { - fail(`${job} must verify dist is not duplicated inside runtime/app`); - } - } - - const windows = workflowJob(workflow, 'build-windows'); - if (!windows.includes('cygpath -u "$RUNNER_TEMP"') - || !windows.includes('PBS_ARCHIVE="${RUNNER_TEMP_POSIX}/pbs-windows-x86_64.tar.gz"')) { - fail('Windows packaging must convert RUNNER_TEMP with cygpath before POSIX tools use it'); - } - const macos = workflowJob(workflow, 'build-macos'); - if (!macos.includes('runs-on: macos-26') - || !macos.includes('DEVELOPER_DIR: /Applications/Xcode_26.5.app/Contents/Developer') - || !macos.includes('test "$(uname -m)" = arm64') - || !macos.includes('test "$(xcodebuild -version | sed -n \'1p\')" = "Xcode 26.5"') - || !macos.includes('test "$(xcodebuild -version | sed -n \'2p\')" = "Build version 17F42"') - || !macos.includes('test "$(xcrun --sdk macosx --show-sdk-version)" = "26.5"') - || !workflow.includes('MACOS_PACKAGING_PYTHON_VERSION: "3.12.10"') - || !workflow.includes('PBS_PYTHON_VERSION: "3.12.14"')) { - fail('macOS packaging must pin macos-26, Xcode 26.5 build 17F42, SDK 26.5, arm64, and separate Python inputs'); - } - const linux = workflowJob(workflow, 'build-linux'); - if (!linux.includes('runs-on: ubuntu-22.04') - || !linux.includes('prefix-key: "v1-rust-release-ubuntu-22.04-glibc-2.35"') - || linux.includes('prefix-key: "v0-rust"') - || !linux.includes('cache-targets: "false"') - || !linux.includes('cache-bin: "false"')) { - fail('Linux packaging must isolate its Ubuntu 22.04/glibc 2.35 Rust cache ABI'); - } - - const publisher = workflowJob(workflow, 'publish-release'); - if (!publisher.includes('needs: [build-windows, build-linux, build-macos]') - || !publisher.includes("github.event_name == 'push'") - || !publisher.includes('refs/tags/desktop-portable-') - || !/^ permissions:\n contents: write\s*$/m.test(publisher)) { - fail('publisher must be the sole tag-only writer after all three builders'); - } - const publisherRun = publisher.slice(publisher.indexOf(' run: |')); - if (!publisher.includes('TAG_NAME: ${{ github.ref_name }}') - || publisherRun.includes('${{ github.ref_name }}') - || !publisherRun.includes('^desktop-portable-[A-Za-z0-9._-]+$')) { - fail('publisher must pass the tag through env and validate it before shell use'); - } - if ((publisher.match(/actions\/download-artifact@/g) ?? []).length !== 3 - || (publisher.match(/\bgh release create\b/g) ?? []).length !== 1 - || publisher.includes('gh release upload') - || !publisher.includes('--draft') - || !publisher.includes('gh release edit "$TAG_NAME" --draft=false --prerelease')) { - fail('publisher must aggregate three artifacts as a verified draft, then expose one prerelease'); - } - for (const file of [ - 'GenericAgent-Desktop-Windows-Portable.zip', - 'SHA256SUMS-windows.txt', - 'GenericAgent-Desktop-Linux-Portable.tar.gz', - 'SHA256SUMS-linux.txt', - 'GenericAgent-Desktop-macOS-aarch64.dmg', - 'GenericAgent-Desktop-macOS-aarch64.dmg.sha256', - ]) { - if (!publisher.includes(file)) fail(`publisher does not require release asset: ${file}`); - } -} - -async function verifyGeneratedManifest(files) { - const provenance = await readJson(path.join(distDir, 'build-provenance.json')); - const generatedFiles = files - .map((file) => ({ file, relativePath: relativeToDist(file) })) - .filter(({ relativePath }) => !excludedManifestFiles.has(relativePath)) - .sort((left, right) => left.relativePath.localeCompare(right.relativePath, 'en')); - - const manifestLines = []; - for (const { file, relativePath } of generatedFiles) { - manifestLines.push(`${sha256(await readFile(file))} ${relativePath}\n`); - } - const manifestDigest = sha256(manifestLines.join('')); - - if (provenance.version !== expectedVersion) fail(`provenance version must be ${expectedVersion}`); - if (provenance.sourceRepository !== 'https://github.com/abraxas914/GenericAgent') { - fail('provenance source repository is incorrect'); - } - if (provenance.sourceCommit !== expectedSourceCommit) fail('provenance source commit is incorrect'); - if (provenance.generatedAssetCount !== generatedFiles.length) { - fail(`provenance asset count mismatch: expected ${provenance.generatedAssetCount}, found ${generatedFiles.length}`); - } - if (provenance.generatedManifestSha256 !== manifestDigest) { - fail(`provenance manifest mismatch: expected ${provenance.generatedManifestSha256}, found ${manifestDigest}`); - } -} - -async function main() { - const requiredFiles = [ - 'index.html', - 'loading.html', - 'setup.html', - 'fallback.html', - 'assets/ga-logo.svg', - 'THIRD_PARTY_NOTICES.txt', - 'README.md', - 'build-provenance.json', - ]; - await Promise.all(requiredFiles.map(assertExists)); - for (const deadAsset of removedLegacyAssets) { - if (await exists(path.join(distDir, deadAsset))) { - fail(`dead legacy React asset remains in compiled output: ${deadAsset}`); - } - } - - verifyTrackedSourceBoundary(); - await verifyNoticeAttributes(); - const files = await walk(distDir); - const forbiddenSource = files.map(relativeToDist).filter((file) => /(?:\.map|\.tsx?|\.jsx)$/i.test(file)); - if (forbiddenSource.length > 0) fail(`compiled distribution contains source files: ${forbiddenSource.join(', ')}`); - - const searchableFiles = files.filter((file) => /\.(?:html|js|css)$/i.test(file)); - const searchableContents = []; - for (const file of searchableFiles) { - const contents = await readFile(file, 'utf8'); - searchableContents.push(contents); - if (/(?:webdriverio|__GA_E2E__|wdio:|sourceMappingURL|webpack:\/\/|\/Users\/)/i.test(contents)) { - fail(`compiled distribution leaks source/E2E material: ${relativeToDist(file)}`); - } - } - const compiledRenderer = searchableContents.join('\n'); - for (const marker of [ - 'services/capabilities', - 'data-import-row', - 'data-export-row', - 'get_macos_titlebar_metrics', - 'titlebar-controls', - ]) { - if (!compiledRenderer.includes(marker)) { - fail(`compiled distribution is missing the v0.2.1 renderer contract: ${marker}`); - } - } - - const notice = await readFile(path.join(distDir, 'THIRD_PARTY_NOTICES.txt')); - if (sha256(notice) !== expectedNoticeSha256) fail('Semi Design third-party notice hash is incorrect'); - const readme = await readFile(path.join(distDir, 'README.md'), 'utf8'); - for (const value of [ - expectedSourceCommit, - ...semiPackages, - 'https://github.com/DouyinFE/semi-design', - 'https://semi.design', - 'Copyright (c) 2021 DouyinFE', - 'License: MIT', - 'THIRD_PARTY_NOTICES.txt', - '5ddf03bb152666637bdfcfa44f1fac3cff5a66b6', - '2fb55d944e4444b08cb9ad76c13aef7a5788186b', - '3e7ca6a2b20eefdb3ee335dc0d520c3b6d9d57f8', - 'not a claim that later builds are bit-for-bit reproducible', - ]) { - if (!readme.includes(value)) fail(`compiled README is missing required provenance/license text: ${value}`); - } - - await Promise.all(['index.html', 'loading.html', 'setup.html'].map(verifyHtmlReferences)); - await verifyVersionsRendererAndEntry(); - await verifyReleaseContract(); - await verifyGeneratedManifest(files); - console.log('Compiled React Desktop 2.0 distribution contracts passed.'); -} - -await main(); diff --git a/frontends/desktop/src-tauri/.cargo/config.toml b/frontends/desktop/src-tauri/.cargo/config.toml deleted file mode 100644 index 28e3047d..00000000 --- a/frontends/desktop/src-tauri/.cargo/config.toml +++ /dev/null @@ -1,7 +0,0 @@ -# Statically link the MSVC CRT (UCRT + vcruntime) into the Windows exe so the thin -# shell itself runs on systems lacking an in-box Universal CRT (stripped/older -# images) — no DLLs needed next to GenericAgent.exe. Target-scoped: macOS/Linux -# builds never read this section. The embedded python keeps its own app-local UCRT -# (copied in CI next to python.exe) for the bridge/conductor subprocesses. -[target.x86_64-pc-windows-msvc] -rustflags = ["-C", "target-feature=+crt-static"] diff --git a/frontends/desktop/src-tauri/Cargo.lock b/frontends/desktop/src-tauri/Cargo.lock deleted file mode 100644 index ca93ab8d..00000000 --- a/frontends/desktop/src-tauri/Cargo.lock +++ /dev/null @@ -1,5789 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "ashpd" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f3f79755c74fd155000314eb349864caa787c6592eace6c6882dad873d9c39" -dependencies = [ - "async-fs", - "async-net", - "enumflags2", - "futures-channel", - "futures-util", - "rand", - "raw-window-handle", - "serde", - "serde_repr", - "url", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "zbus", -] - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-lock" -version = "3.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-net" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" -dependencies = [ - "async-io", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-process" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "async-signal" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "atk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" -dependencies = [ - "atk-sys", - "glib 0.18.5", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" -dependencies = [ - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "axum" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" -dependencies = [ - "axum-core", - "bytes", - "form_urlencoded", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "serde_core", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "sync_wrapper", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2", -] - -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" - -[[package]] -name = "bytemuck" -version = "1.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" -dependencies = [ - "serde", -] - -[[package]] -name = "cairo-rs" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" -dependencies = [ - "bitflags 2.11.1", - "cairo-sys-rs", - "glib 0.18.5", - "libc", - "once_cell", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys 0.18.1", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "camino" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 2.0.18", -] - -[[package]] -name = "cargo_toml" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" -dependencies = [ - "serde", - "toml 0.9.12+spec-1.1.0", -] - -[[package]] -name = "cc" -version = "1.2.62" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon 0.12.16", -] - -[[package]] -name = "cfg-expr" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb693542bcafa528e198be0ebd9d3632ca5b7c93dbe7237460e199910835997c" -dependencies = [ - "smallvec", - "target-lexicon 0.13.5", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "chrono" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" -dependencies = [ - "iana-time-zone", - "num-traits", - "serde", - "windows-link 0.2.1", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "time", - "version_check", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" -dependencies = [ - "bitflags 2.11.1", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.11.1", - "core-foundation", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa", - "phf", - "smallvec", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.117", -] - -[[package]] -name = "ctor" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" -dependencies = [ - "ctor-proc-macro", - "dtor", -] - -[[package]] -name = "ctor-proc-macro" -version = "0.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.117", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dbus" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" -dependencies = [ - "libc", - "libdbus-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.117", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys 0.5.0", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.5.2", - "windows-sys 0.61.2", -] - -[[package]] -name = "dispatch2" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" -dependencies = [ - "bitflags 2.11.1", - "block2", - "libc", - "objc2", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dlib" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" -dependencies = [ - "libloading", -] - -[[package]] -name = "dlopen2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dom_query" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" -dependencies = [ - "bit-set", - "cssparser", - "foldhash 0.2.0", - "html5ever", - "precomputed-hash", - "selectors", - "tendril", -] - -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - -[[package]] -name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -dependencies = [ - "serde", -] - -[[package]] -name = "dtoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" - -[[package]] -name = "dtoa-short" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dtor" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" -dependencies = [ - "dtor-proc-macro", -] - -[[package]] -name = "dtor-proc-macro" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "embed-resource" -version = "3.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a88c8d26de40ed18fe748c547845aa39de1db3afd958f8cb91579f3644bcb" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml 1.1.2+spec-1.1.0", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "erased-serde" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" -dependencies = [ - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "flate2" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-executor" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "slab", -] - -[[package]] -name = "ga-desktop" -version = "0.2.1" -dependencies = [ - "dirs 5.0.1", - "objc2-app-kit", - "rfd", - "serde", - "serde_json", - "tauri", - "tauri-build", - "tauri-plugin-opener", - "tauri-plugin-single-instance", - "tauri-plugin-wdio", - "tauri-plugin-wdio-webdriver", -] - -[[package]] -name = "gdk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib 0.18.5", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib 0.18.5", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys 0.18.1", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "gdk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys 0.18.1", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "pango-sys", - "pkg-config", - "system-deps 6.2.2", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" -dependencies = [ - "gdk-sys", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "pkg-config", - "system-deps 6.2.2", -] - -[[package]] -name = "gdkx11" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib 0.18.5", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" -dependencies = [ - "gdk-sys", - "glib-sys 0.18.1", - "libc", - "system-deps 6.2.2", - "x11", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi 5.3.0", - "wasip2", -] - -[[package]] -name = "getrandom" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" -dependencies = [ - "cfg-if", - "libc", - "r-efi 6.0.0", - "wasip2", - "wasip3", -] - -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys 0.18.1", - "glib 0.18.5", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "system-deps 6.2.2", - "winapi", -] - -[[package]] -name = "gio-sys" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0071fe88dba8e40086c8ff9bbb62622999f49628344b1d1bf490a48a29d80f22" -dependencies = [ - "glib-sys 0.21.5", - "gobject-sys 0.21.5", - "libc", - "system-deps 7.0.8", - "windows-sys 0.61.2", -] - -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.11.1", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys 0.18.1", - "glib-macros 0.18.5", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "glib" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16de123c2e6c90ce3b573b7330de19be649080ec612033d397d72da265f1bd8b" -dependencies = [ - "bitflags 2.11.1", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys 0.21.5", - "glib-macros 0.21.5", - "glib-sys 0.21.5", - "gobject-sys 0.21.5", - "libc", - "memchr", - "smallvec", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.2", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "glib-macros" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf59b675301228a696fe01c3073974643365080a76cc3ed5bc2cbc466ad87f17" -dependencies = [ - "heck 0.5.0", - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "glib-sys" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d95e1a3a19ae464a7286e14af9a90683c64d70c02532d88d87ce95056af3e6c" -dependencies = [ - "libc", - "system-deps 7.0.8", -] - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys 0.18.1", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "gobject-sys" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dca35da0d19a18f4575f3cb99fe1c9e029a2941af5662f326f738a21edaf294" -dependencies = [ - "glib-sys 0.21.5", - "libc", - "system-deps 7.0.8", -] - -[[package]] -name = "gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib 0.18.5", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys 0.18.1", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "pango-sys", - "system-deps 6.2.2", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" -dependencies = [ - "log", - "markup5ever", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-util" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core 0.62.2", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ico" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" -dependencies = [ - "byteorder", - "png 0.17.16", -] - -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - -[[package]] -name = "infer" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" -dependencies = [ - "cfb", -] - -[[package]] -name = "ipnet" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" - -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "javascriptcore-rs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" -dependencies = [ - "bitflags 1.3.2", - "glib 0.18.5", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" -dependencies = [ - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys 0.3.1", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" -dependencies = [ - "jni-sys 0.4.1", -] - -[[package]] -name = "jni-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" -dependencies = [ - "quote", - "syn 2.0.117", -] - -[[package]] -name = "js-sys" -version = "0.3.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" -dependencies = [ - "cfg-if", - "futures-util", - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" -dependencies = [ - "jsonptr", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "jsonptr" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "keyboard-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" -dependencies = [ - "bitflags 2.11.1", - "serde", - "unicode-segmentation", -] - -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] -name = "libappindicator" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib 0.18.5", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] - -[[package]] -name = "libappindicator-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading", - "once_cell", -] - -[[package]] -name = "libc" -version = "0.2.186" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" - -[[package]] -name = "libdbus-sys" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" -dependencies = [ - "pkg-config", -] - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libredox" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" -dependencies = [ - "libc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "markup5ever" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" -dependencies = [ - "log", - "tendril", - "web_atoms", -] - -[[package]] -name = "matchit" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "muda" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae8844f63b5b118e334e205585b8c5c17b984121dbdb179d44aeb087ffad3cb" -dependencies = [ - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "once_cell", - "png 0.18.1", - "serde", - "thiserror 2.0.18", - "windows-sys 0.61.2", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.11.1", - "jni-sys 0.3.1", - "log", - "ndk-sys", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys 0.3.1", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "num-conv" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "objc2" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" -dependencies = [ - "objc2-encode", - "objc2-exception-helper", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" -dependencies = [ - "bitflags 2.11.1", - "block2", - "libc", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image", - "objc2-core-text", - "objc2-core-video", - "objc2-foundation", - "objc2-quartz-core", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-data" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" -dependencies = [ - "bitflags 2.11.1", - "dispatch2", - "objc2", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" -dependencies = [ - "bitflags 2.11.1", - "dispatch2", - "objc2", - "objc2-core-foundation", - "objc2-io-surface", -] - -[[package]] -name = "objc2-core-image" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-location" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-text" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", -] - -[[package]] -name = "objc2-core-video" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-io-surface", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-exception-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" -dependencies = [ - "cc", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" -dependencies = [ - "bitflags 2.11.1", - "block2", - "libc", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-io-surface" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-javascript-core" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586" -dependencies = [ - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "objc2-security" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" -dependencies = [ - "bitflags 2.11.1", - "block2", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image", - "objc2-core-location", - "objc2-core-text", - "objc2-foundation", - "objc2-quartz-core", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-web-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" -dependencies = [ - "bitflags 2.11.1", - "block2", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "objc2-javascript-core", - "objc2-security", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "open" -version = "5.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d3b65c44123a56e0133d2cd06ce4361bd3ca99d41198b2f25e3c3db9b8b4a" -dependencies = [ - "dunce", - "is-wsl", - "libc", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib 0.18.5", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link 0.2.1", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros", - "phf_shared", - "serde", -] - -[[package]] -name = "phf_codegen" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "piper" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" - -[[package]] -name = "plist" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1" -dependencies = [ - "base64 0.22.1", - "indexmap 2.14.0", - "quick-xml", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "png" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" -dependencies = [ - "bitflags 2.11.1", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "pollster" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" - -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" -dependencies = [ - "toml_datetime 0.6.3", - "toml_edit 0.20.2", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit 0.25.11+spec-1.1.0", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.39.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "rand" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.11.1", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 1.0.69", -] - -[[package]] -name = "redox_users" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" -dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 2.0.18", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - -[[package]] -name = "reqwest" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "sync_wrapper", - "tokio", - "tokio-util", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", -] - -[[package]] -name = "rfd" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" -dependencies = [ - "ashpd", - "block2", - "dispatch2", - "js-sys", - "log", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "pollster", - "raw-window-handle", - "urlencoding", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustc-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags 2.11.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.117", -] - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "selectors" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" -dependencies = [ - "bitflags 2.11.1", - "cssparser", - "derive_more", - "log", - "new_debug_unreachable", - "phf", - "phf_codegen", - "precomputed-hash", - "rustc-hash", - "servo_arc", - "smallvec", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-untagged" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" -dependencies = [ - "erased-serde", - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" -dependencies = [ - "itoa", - "serde", - "serde_core", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_spanned" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2" -dependencies = [ - "base64 0.22.1", - "bs58", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.0", - "schemars 0.9.0", - "schemars 1.2.1", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "servo_arc" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" - -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "softbuffer" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" -dependencies = [ - "bytemuck", - "js-sys", - "ndk", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation", - "objc2-quartz-core", - "raw-window-handle", - "redox_syscall", - "tracing", - "wasm-bindgen", - "web-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib 0.18.5", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" -dependencies = [ - "gio-sys 0.18.1", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "libc", - "system-deps 6.2.2", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "string_cache" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] - -[[package]] -name = "string_cache_codegen" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "swift-rs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr 0.15.8", - "heck 0.5.0", - "pkg-config", - "toml 0.8.2", - "version-compare", -] - -[[package]] -name = "system-deps" -version = "7.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396a35feb67335377e0251fcbc1092fc85c484bd4e3a7a54319399da127796e7" -dependencies = [ - "cfg-expr 0.20.8", - "heck 0.5.0", - "pkg-config", - "toml 1.1.2+spec-1.1.0", - "version-compare", -] - -[[package]] -name = "tao" -version = "0.35.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33f7f9e486ade65fcf1e45c440f9236c904f5c1002cdc7fc6ae582777345ce4" -dependencies = [ - "bitflags 2.11.1", - "block2", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dbus", - "dispatch2", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "jni", - "libc", - "log", - "ndk", - "ndk-sys", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "once_cell", - "parking_lot", - "percent-encoding", - "raw-window-handle", - "tao-macros", - "unicode-segmentation", - "url", - "windows", - "windows-core 0.61.2", - "windows-version", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - -[[package]] -name = "target-lexicon" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" - -[[package]] -name = "tauri" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93bd86d231f0a8138f11a02a584769fe4b703dc36ae133d783228dbc4801405" -dependencies = [ - "anyhow", - "bytes", - "cookie", - "dirs 6.0.0", - "dunce", - "embed_plist", - "getrandom 0.3.4", - "glob", - "gtk", - "heck 0.5.0", - "http", - "jni", - "libc", - "log", - "mime", - "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "percent-encoding", - "plist", - "raw-window-handle", - "reqwest", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "swift-rs", - "tauri-build", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "thiserror 2.0.18", - "tokio", - "tray-icon", - "url", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows", -] - -[[package]] -name = "tauri-build" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a318b234cc2dea65f575467bafcfb76286bce228ebc3778e337d61d03213007" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs 6.0.0", - "glob", - "heck 0.5.0", - "json-patch", - "schemars 0.8.22", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bd11644962add2549a60b7e7c6800f17d7020156e02f516021d8103e80cc528" -dependencies = [ - "base64 0.22.1", - "brotli", - "ico", - "json-patch", - "plist", - "png 0.17.16", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.117", - "tauri-utils", - "thiserror 2.0.18", - "time", - "url", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed9d3742a37a355d2e47c9af924e9fbc112abb76f9835d35d4780e318419502" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-plugin" -version = "2.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri-utils", - "walkdir", -] - -[[package]] -name = "tauri-plugin-opener" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17e1bea14edce6b793a04e2417e3fd924b9bc4faae83cdee7d714156cceeed29" -dependencies = [ - "dunce", - "glob", - "objc2-app-kit", - "objc2-foundation", - "open", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.18", - "url", - "windows", - "zbus", -] - -[[package]] -name = "tauri-plugin-single-instance" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8f29386f5e9fdc699182388a33ee80a56de436d91b67459e86afef426282af" -dependencies = [ - "serde", - "serde_json", - "tauri", - "thiserror 2.0.18", - "tracing", - "windows-sys 0.60.2", - "zbus", -] - -[[package]] -name = "tauri-plugin-wdio" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa9b559f110924b9897793767a3bb4880c195db75838030eb224f94d21565d9" -dependencies = [ - "log", - "serde", - "serde_json", - "tauri", - "tauri-build", - "tauri-plugin", - "thiserror 1.0.69", - "tokio", - "uuid", -] - -[[package]] -name = "tauri-plugin-wdio-webdriver" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5bffe978c41b06ad44a5f4b5b543405918cf316b98756c678a6431061f2e9" -dependencies = [ - "async-trait", - "axum", - "base64 0.22.1", - "block2", - "cairo-rs", - "glib 0.21.5", - "gtk", - "javascriptcore-rs", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-web-kit", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "tempfile", - "thiserror 2.0.18", - "tokio", - "tracing", - "uuid", - "webkit2gtk", - "webview2-com", - "windows", - "windows-core 0.61.2", -] - -[[package]] -name = "tauri-runtime" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fef478ba1d2ac21c2d528740b24d0cb315e1e8b1111aae53fafac34804371fc" -dependencies = [ - "cookie", - "dpi", - "gtk", - "http", - "jni", - "objc2", - "objc2-ui-kit", - "objc2-web-kit", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror 2.0.18", - "url", - "webkit2gtk", - "webview2-com", - "windows", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3989df2ae1c476404fe0a2e8ffc4cfbde97e51efd613c2bb5355fbc9ab52cf0" -dependencies = [ - "gtk", - "http", - "jni", - "log", - "objc2", - "objc2-app-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "url", - "webkit2gtk", - "webview2-com", - "windows", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" -dependencies = [ - "anyhow", - "brotli", - "cargo_metadata", - "ctor", - "dom_query", - "dunce", - "glob", - "http", - "infer", - "json-patch", - "log", - "memchr", - "phf", - "plist", - "proc-macro2", - "quote", - "regex", - "schemars 0.8.22", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", - "url", - "urlpattern", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" -dependencies = [ - "dunce", - "embed-resource", - "toml 1.1.2+spec-1.1.0", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.2", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "tendril" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24" -dependencies = [ - "new_debug_unreachable", - "utf-8", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "time" -version = "0.3.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.52.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.3", - "toml_edit 0.20.2", -] - -[[package]] -name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "indexmap 2.14.0", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 0.7.15", -] - -[[package]] -name = "toml" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" -dependencies = [ - "indexmap 2.14.0", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 1.0.3", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime 0.6.3", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" -dependencies = [ - "indexmap 2.14.0", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.3", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.25.11+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "winnow 1.0.3", -] - -[[package]] -name = "toml_parser" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" -dependencies = [ - "winnow 1.0.3", -] - -[[package]] -name = "toml_writer" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51" -dependencies = [ - "bitflags 2.11.1", - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", - "url", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tray-icon" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15edbb0d80583e85ee8df283410038e17314df5cba30da2087a54a85216c0773" -dependencies = [ - "crossbeam-channel", - "dirs 6.0.0", - "libappindicator", - "muda", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation", - "once_cell", - "png 0.18.1", - "serde", - "thiserror 2.0.18", - "windows-sys 0.61.2", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - -[[package]] -name = "typenum" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" - -[[package]] -name = "uds_windows" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" -dependencies = [ - "memoffset", - "tempfile", - "windows-sys 0.61.2", -] - -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-segmentation" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", - "serde_derive", -] - -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - -[[package]] -name = "urlpattern" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" -dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" -dependencies = [ - "getrandom 0.4.2", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "version-compare" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.117", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.121" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasm-streams" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver", -] - -[[package]] -name = "wayland-backend" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" -dependencies = [ - "cc", - "downcast-rs", - "rustix", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" -dependencies = [ - "bitflags 2.11.1", - "rustix", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.32.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" -dependencies = [ - "bitflags 2.11.1", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" -dependencies = [ - "proc-macro2", - "quick-xml", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" -dependencies = [ - "dlib", - "log", - "pkg-config", -] - -[[package]] -name = "web-sys" -version = "0.3.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web_atoms" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff6eef815df1834fd250e3a2ff436044d82a9f1bc1980ca1dbdf07effc538" -dependencies = [ - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", -] - -[[package]] -name = "webkit2gtk" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys 0.18.1", - "glib 0.18.5", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup3", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" -dependencies = [ - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-sys", - "gio-sys 0.18.1", - "glib-sys 0.18.1", - "gobject-sys 0.18.0", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pkg-config", - "soup3-sys", - "system-deps 6.2.2", -] - -[[package]] -name = "webview2-com" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows", - "windows-core 0.61.2", - "windows-implement", - "windows-interface", -] - -[[package]] -name = "webview2-com-macros" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "webview2-com-sys" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" -dependencies = [ - "thiserror 2.0.18", - "windows", - "windows-core 0.61.2", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "window-vibrancy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" -dependencies = [ - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link 0.1.3", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link 0.2.1", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-version" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" - -[[package]] -name = "winnow" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap 2.14.0", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap 2.14.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] -name = "writeable" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" - -[[package]] -name = "wry" -version = "0.55.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" -dependencies = [ - "base64 0.22.1", - "block2", - "cookie", - "crossbeam-channel", - "dirs 6.0.0", - "dom_query", - "dpi", - "dunce", - "gdkx11", - "gtk", - "http", - "javascriptcore-rs", - "jni", - "libc", - "ndk", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror 2.0.18", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows", - "windows-core 0.61.2", - "windows-version", - "x11-dl", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - -[[package]] -name = "zbus" -version = "5.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" -dependencies = [ - "async-broadcast", - "async-executor", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix", - "serde", - "serde_repr", - "tracing", - "uds_windows", - "uuid", - "windows-sys 0.61.2", - "winnow 1.0.3", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" -dependencies = [ - "serde", - "winnow 1.0.3", - "zvariant", -] - -[[package]] -name = "zerocopy" -version = "0.8.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "zvariant" -version = "5.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee" -dependencies = [ - "endi", - "enumflags2", - "serde", - "url", - "winnow 1.0.3", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn 2.0.117", - "winnow 1.0.3", -] diff --git a/frontends/desktop/src-tauri/Cargo.toml b/frontends/desktop/src-tauri/Cargo.toml deleted file mode 100644 index 5dffde53..00000000 --- a/frontends/desktop/src-tauri/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -name = "ga-desktop" -version = "0.2.1" -edition = "2021" - -[build-dependencies] -tauri-build = { version = "2", features = [] } - -[dependencies] -tauri = { version = "2", features = ["devtools", "tray-icon"] } -tauri-plugin-single-instance = "2" -tauri-plugin-opener = "2" -tauri-plugin-wdio = { version = "1.2.0", optional = true } -tauri-plugin-wdio-webdriver = { version = "1.2.0", optional = true } -serde = { version = "1", features = ["derive"] } -serde_json = "1" -dirs = "5" -rfd = "0.15" - -[target.'cfg(target_os = "macos")'.dependencies] -objc2-app-kit = { version = "0.3.2", default-features = false, features = ["NSButton", "NSControl", "NSView", "NSWindow"] } - -[features] -default = [] -e2e = ["dep:tauri-plugin-wdio", "dep:tauri-plugin-wdio-webdriver"] - -[lib] -name = "ga_desktop_lib" -crate-type = ["lib", "cdylib", "staticlib"] diff --git a/frontends/desktop/src-tauri/build.rs b/frontends/desktop/src-tauri/build.rs deleted file mode 100644 index 2b5d70c5..00000000 --- a/frontends/desktop/src-tauri/build.rs +++ /dev/null @@ -1,39 +0,0 @@ -use std::process::Command; - -fn git_text(args: &[&str]) -> Option { - Command::new("git") - .args(args) - .output() - .ok() - .filter(|output| output.status.success()) - .map(|output| String::from_utf8_lossy(&output.stdout).trim().to_string()) - .filter(|value| !value.is_empty()) -} - -fn main() { - // Build identity used to decide whether a bridge already holding :14168 belongs to THIS - // build. commit hash + build timestamp → distinct on every build, even when the human - // version in tauri.conf.json is unchanged (so same-version re-publishes still take over - // a stale bridge). The bridge reports this back via GET /services/identity. - let source_revision = git_text(&["rev-parse", "HEAD"]).unwrap_or_else(|| "nogit".to_string()); - let short_revision: String = source_revision.chars().take(12).collect(); - let stamp = std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .map(|d| d.as_secs()) - .unwrap_or(0); - println!("cargo:rustc-env=GA_BUILD_ID={}-{}", short_revision, stamp); - println!("cargo:rustc-env=GA_SOURCE_REVISION={source_revision}"); - // Watch both HEAD and its resolved branch ref. This works in ordinary - // checkouts, detached CI checkouts, and linked worktrees; watching only - // `/.git/HEAD` misses branch advances and is invalid in a worktree. - if let Some(head_path) = git_text(&["rev-parse", "--git-path", "HEAD"]) { - println!("cargo:rerun-if-changed={head_path}"); - } - if let Some(head_ref) = git_text(&["symbolic-ref", "-q", "HEAD"]) { - if let Some(ref_path) = git_text(&["rev-parse", "--git-path", &head_ref]) { - println!("cargo:rerun-if-changed={ref_path}"); - } - } - - tauri_build::build() -} diff --git a/frontends/desktop/src-tauri/capabilities/default.json b/frontends/desktop/src-tauri/capabilities/default.json deleted file mode 100644 index 28ba6d90..00000000 --- a/frontends/desktop/src-tauri/capabilities/default.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "identifier": "default", - "description": "Least-privilege capabilities for the main application window", - "windows": ["main"], - "permissions": [ - "core:event:allow-listen", - "core:event:allow-unlisten", - "core:window:allow-minimize", - "core:window:allow-toggle-maximize", - "core:window:allow-close", - "core:window:allow-start-dragging", - "allow-start-bridge", - "allow-retry-bootstrap", - "allow-get-bootstrap-snapshot", - "allow-export-mykey", - "allow-pick-directory", - "allow-pick-data-backup-file", - "allow-pick-data-export-path", - "allow-reveal-in-file-manager", - "allow-get-ga-source", - "allow-validate-ga-source", - "allow-set-ga-source", - "allow-clear-ga-source", - "allow-get-macos-titlebar-metrics", - "allow-shortcut-should-ask", - "allow-shortcut-decide", - "opener:allow-open-url", - "opener:allow-default-urls" - ] -} diff --git a/frontends/desktop/src-tauri/capabilities/setup.json b/frontends/desktop/src-tauri/capabilities/setup.json deleted file mode 100644 index 4e94ab66..00000000 --- a/frontends/desktop/src-tauri/capabilities/setup.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "identifier": "setup", - "description": "Startup-recovery commands for the setup window only", - "windows": ["setup"], - "permissions": [ - "core:event:allow-listen", - "core:event:allow-unlisten", - "allow-start-bridge-with-config", - "allow-retry-bootstrap", - "allow-get-bootstrap-snapshot", - "allow-get-config", - "allow-discover-python-for-project", - "allow-pick-directory", - "allow-pick-python-interpreter" - ] -} diff --git a/frontends/desktop/src-tauri/icons/128x128.png b/frontends/desktop/src-tauri/icons/128x128.png deleted file mode 100644 index cfb5e7f98a7a63d8682a13684668e3f3091fad74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5253 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 diff --git a/frontends/desktop/src-tauri/icons/128x128@2x.png b/frontends/desktop/src-tauri/icons/128x128@2x.png deleted file mode 100644 index e9c944946a3b4ac25ee547ba0f69e2c96149c523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10977 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 wD!Iz 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 n8%bE9CzIi4+fcp@H2Z00000NkvXXu0mjf4RkJ8 diff --git a/frontends/desktop/src-tauri/icons/icon.icns b/frontends/desktop/src-tauri/icons/icon.icns deleted file mode 100644 index 7fe7a9d30ecb247a5bf03bd6bbf8c0db3df683e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108452 zcmb?@bySq$^Y5}WqJ$tRAV`Y{2!fpIGC?ldRselcOzd$1De)%m2=_ ze8gr~dy{8mVe2g5I96SG_PeI4>!_RB9x4!V6oA+hUE|n(EGIraGqdS)d0f$9Ioe>B zBA;%TB1DmGmy$607^Rlyj+otPdMYW2>FyjaeHIX~GJD|dZ#1UvK#h0n%SO|!G1=VG z(o!coy92*oYpAWQ?YheSIyS8$3Q4x2qk&rHmDF(>sp&UD!t}%GBq7pXk3EqC195T& zCpYYzL*6;OeYQZrC~`PjBGlZvZ2^^3I(UfNAS-QNVK>~jLTLPHmN(bJQD!40ijT(d z=TZ{uBsn?hgU&#GO74jarTE}7=YAE+mx}j81=fV4lLgT8(b1S-85>{?eZxV2E2q5t*8Kdu^HXlz$mV&+zIXTtCQ^d_B)WHc+S*K? z6thNN7rO>2-F@j7hTUg{!-@V(@>L>Z7xR{HVtTuDj zXEh*TkMO*+Q?0?%0jKii=dkI1Y`o8!-dElsEt;$hALMgv?T>yRZ#*G<%!(s?-{-{R zc%4rmwINCN5q0~_3@yzr>D~L}slOH$*vLiqgws{E_4Ee4UYMEx7EOEVp_$?5>&qu9 z8Zj_HL=>gbfS&~E``Xy3A8Fd?s*_>=`nB`vHjTF!!@aKG%`h02o15FOnHgytn*#V^ z(+SUy^sSEec7^pF@yzY%2621eMhj7rIs-@HPutr_Yv{_HoNCs+6%UCCzz~~k{c#_ zThufcMl~x(0W27jTeotx#=kcTph6)x9*}=9v$Z8SIjLCMoo6Jt;%P8?7;cy6zGW=* zqr`^)iBlkJwtFR!&a(@tAxa`i=_a{mxc9>Ykp6y|`QNs{{R4dJ|*c*E^{# z9j?CGcmY?{jeSePhz?h`{cwEnKA6)mWG)dd_g1{a1^D5;oFDVj-OPWE|Im(%kK-T~ zc|G8WE|}`^xje03uE?p zi(7Kb&($B;Ei0*ce*IL_}>RJ24~G3X8ShW ze=yJw6eK>`LG#QYbU>8kRAtMh&EA4Q!w-QFzWiSV8Y!?$>R+HKwsTnki>Uq+Xm$+! z-e^tHVEhBp6CKE7nPX=53GQYGJ=cxxB=Y%$6V4GYZ#z}|IUzx*)VzpWpLaM^!H zJJi4o-)rd39{Wb6sY$%&;pw@3)F(uaWhs`Hm!~FqHT1+3jT@9mUU0C=;Gb>SXnH%$ zc_rl5?{>E3B*FVMiea~>r;kj^D=IK1X2h}(bk5hW&fn@617Xxbbn}k&S}Rtyci61m z_*m~N$xFW!5MVU%IsEfY$dp-8`f(u(@7`KO8*;aoGqmef_ZoeeaYp;n^kY)IPU$29 zx>xs0iL4VK%y0cBigg4eFjo=0`@P!!{YC0_{DSP{(vutR32A8;M|8Bbj%1!?(m3Rw zu?Zybhwpl?n;i;P5#GW{F|RdH0bvWqy8S&Mj&n~xw97>GsiaazL_SNTP--i^F|s}_3g9i+?ZQEO<5cJ9fGWGVuoX)l$x4IX**ln ztheR_J;QynETzHI)^snqXLnAaANy{u2shB&rX{t0d@09I8`8)U(i4{q5&QXU+Y(1B zUifM6efXMS5r5AmpE>es2SVyeW8Tt3NXjmi262IQ6OyiW|M@!i>g)R;Mcbp7N<XCG!Z%0EE6uz&aP%h+vtY$}xw*j=aCO`>OZgnm`6dO0Ic9bOo0zJ1$uOqnJTkb zL%=W+t_SsBofa2q{2L-zr7yAVu!``0OfH>F!G;!RYV2+k-@F-;YhdvZD|cmnURj8P9y0OpMCAp&kv1{O zVCHdJ@=}X>PL!*7oEfIBb;N#>GPhWeiH;MIj&)x9ahKxYUY4Nn?>j-BPmQrUBEC^5 z{T$6x4t2@QRf6Z3GUJ@w;3SRXjm=no?@1h$rPqB@`0?)kq#+`7b5rurOi_)~`QUx0 zjf?snME?)MjSVfGyLSdjnPZPv1Kr#N(u9BJ&fHlJSic;}?gHpU-!sI-(CmFeLLABD zjS;iav9VXf8Le+_7Z-aLqO7c}{Bisy=~%oyQmy0cr*t1NksaIkQ`m8IoL*2JEBG>`B|*_NQ&q?|sPbr`6z4-g1-A!CDAx4#%+U z=bkmhMR+VS5*uq_KCviF{~bY@(AC7zkbMxP*O3mEP&A((AMfrh{Q4E1(;(tj^-`sU zt`5pBo2H8I23zh75l(FA!h0+tg6p|6lP4e0A$_>H`TAF#1KlufTr9bWI`f`va*i_r zUvY34>^bq1yIJM4G*ZHxd_?wg4?hWCXwfjgA`Mu>F?lPw6scYl`{nJ+;|C`phY#kr zMB}3$(?-756&~HG{zRMsSFmVy^fzWwg$rZ-#tFO4l#u%P&Y;R8J|Sh-Icd5uzku+Y z=6HxFNwE*8U)WV}EL*-HllpKUkw8xFUiO@WRttye`^)EJ%rwNDNXqmWb43gdw>c)* z>&1_BWVM@T^9teBpkRlxrF2SF)~UV5;jouSKy6qg6B`Zj-mBKTPAngz$_~jb{sxy7 z()b?#+_n&!RTrV8?)Xzin=Spw*xX!mC7wGm@#uxom4MU2+=)Ti8;y2R_IutB@tGro zC!Vmc=acgne;Mdcs)JUGFtAFyzhL{}7dKoL`iNXN@6C^$>Mv4vd4617U9s;jw0eDC zbb@>W(pWho@i(cS0!MJPi`(^Y54jWt|dMCl{1es>vF)zho)?%><}y3=IdJ;Je} zNd#7cjv9Q=E!c^JLmpkcBQX#w(~iQB*LS_i{%!ZEDTTUcjNGXQeE;ql;s%wAL_S(Q zyZ}34c8Ts$GTYxIKKj)T?Da90 z%>k1|#{Yn;9z!5T6#p}>f`VmG$Uj_l>^*)7ff$bccU+Z@@BP`T39Dep`jM}w4t zG$@Y)`s^ka4o)5yS8I9G*6z=fiZ6br>(kZE2|A>t9kp_U7#r~MZ5RUpE((dhN}B)*JFi@su~whJ}@ zy}?oX78?8Q+c$ky5b(|p`WV?6L_L{Zdcv)WBB*#(943mb%mD&PWfb%7hk>d=@A-h8 z$L^d+{HIT^96>1M5*MHMzXe&kZ&INrCoj+SvCl#x(a^{!jmxAZiAyuL5MkcqJ(VHu zr~A;j>CLmP$ue`px;He2P3{}G^GzOx&YR;!4dkrPW!FPRD9OkUs{0&&ea-e-Y7crn zlJzWkQlCqKO|KPxlQJ>OY=n1|U~p-RY9}u;fG+@ZVbbbbJ5#^cJ|D-fCh;W-JrA%j zp{VD!aJ|j&!h=NaFOe-lKQhEiZu-4{uA(x*$ZOd+?|AfUa!AbOQpKXx<>3h)6!JBW z9>3SWMuN)1VcuWDG~o^bS!Jb*0f%=j2ZuR5H9~UByY}^z+?;dQO_#MFc@IV0*jA5r z=bIBheyq5<=>D+BJ7HrRDKVzHhQS=87R25{_}~zZtF3}oTW+Dp%bL~?CN{VIgY zWIut|v=WmhQmw3Aq}hnMJfUmh6L~o~&K&|87p7Zk2fusNrpgT2Ef(8QD^EQ( zWBm7*I$SR4DK4{hwG^5_k*~lKYtY+AwIOoDevq zTkSzIJENnc1_8*O`nB3n(-&fwK&{09PFpmbq&|ymp$*E~b1SSs7W>M8_`Ft_G_;TVY^z!;o=azd9Jhc@=nd&@O3Kz6&Ab6O`-x({O0T^I zo0H)@gO4RzH!@yzy|=oDM+#A;3piWFna)owI=inQ8)76)zy494zQ3_Z?pbhJDl@_T=fzw2f5ufDMzT8e69>gBmEsnM z?uvQuo1=~-x*<@h=}%K?ii*x_PcAW+Q(I+vw)JX?TxyivSblBB(~~$)g^vtdfxwx)zr9MA2r&5IRRO!N zMHfJV#|UW;e3sP%7q(*fKu*D}`+Zzpr&xPKz0uW*U2?x2HWgd^|Md#sOSSFQ9$(KY#XbsLwP zSP&wtgI!i*CUYrR*oa(klP8nvyr5I%OAH#N(9_q)ILOK5zNHGCf@5Lxe;{Il z90p&Qj=w^`@!)umshu*huk}02paO0ZDte1vcwNL}Gneo3QZ9~Dg!AG_i#v#DYQ*bD z(_uletjbE^Oh=Q3TLBtn1`|{n-oHQO>9PmO`ke4=k71K7zd47UH81*skd(%#&Bj-YnGYN!g{{~TBl6nE5zX5@F%Yq^qwAl9Nmm}ZP z?KUX|+=Zz{$#T~jLd4}}$=4_X+2Dd@#?qUZmxKF>-j^FT8Nb>BW-Ua$cDa0x*ENcy zPV94dCkh=SB_LAjUR38b)G^Uey++qn?UT)^%wqlOUWBRdM&8u%SzL8UyA%(Od}ump z7y)}%g`vFV1E=z3*wulgSlg?vOZJ+2)89bmrmSHroqdaQEQquk!Fn=wpwq@En|O>- zf$IE}2@Ewc#d9yKkHpWz-s=}Z&{tB3akHm~S~7o+4Gmfnb5Ya>j_O(WLaU$hefENv z?=$BlAaEj-0oDfd$Xy(h){j!gUh^K`PPV3CJB*lfzjD%kdjV3&vv7uml}YS-vfnOh zmwD0kh}L8L`7z9STLAKTKefqS^4Jgl{8{*2BoI;)ji3iS&|Jq6?v*f)Y%|x0J6>(* z?*hXu#fU^^gJ-ib1P(I(1Q1H2W%Ta6>9K0^p?Q-(>T;{X%b zT`>?#LLk!Z?j-Be@7M%KO7+K%PPU$`U!1RW*;p%J%gd@}h%vKJj6un=>32;VoL?Qe ztSns2zQ0Ll$ROg{?R`bQ*|(1kfe$3ojcZfoI>LH-eM3l%lGHi{(?nz@6U+>34@sX;Y_W)=q9ry-xZAr-TD6Yb;VoQ?o;sk z*AvCX8aeXS@*f!{j2AQS5dDOQsqbH!dM_hH%Z(b%5A#)0zgXFSE{z^v4y58Wg+SD& zGVbgThI>sP8dR9f*NE=g{zNsdq4~LgSi`Mw*#c z<`2*T?kg{&r^RpH6M`Vzw9cXs{X@)8$R`0kBa8jk1FkOnRh&?SO4uHh5Ie`d3w9tu zM~$i?B-g%mY~e#7qGQm&bn=)&IQPAK%bnOH?pvdcZlR5bJTB_22BZ&Q5r(*GZHr?~ z9`=M6&BxK9YaloYSa-d@X(HaQAavaL?F5+WHm%g`-O4A)v-M6NjjI0+W}uKHVK3YK zr(OBb<|XdhGio?laNFssJfo2p4u4oY{1%UaOVohnPP* zb9>apQOBl#hmr;AhkoWL@LO0|WRE3h(&8+0j9Ch zIOpAUH)$VpyrXEZpoVQh0fe$@JH5QEmMM{5E{;+3MPfmuaQl{+@*=RuPN8 zXLQ_C@~=;0WZ~RWzE>=(Z*9p#Z{2NsJ(w^w%9qQWb?T$&V?2a#s7Z7nYGxRQmh(Z+>?I+-nVSB}HKOBy3Q4_JTOr z@|5|J>18iQK=FE`Mb7* z;PH~Hui%5k`fnuR4Ef0-FO>2eeUj(t8+-MDXw&MF7ypX4eu8HI_ht#6TjE?ud!F?D<58ZQO^fj!>4^m;2e#t+jTg$ zp0T+NCY06cl^GoEkVux!rdf!hp3z~&NJ>@6ejnkv^+6Kd@M;oRE#5J}x%wBlPDA#Bb`kY-IIqJZwh{?Q%1_cpN{V-DJu3Ws;D?jHlMK^0XUa)oFZF4VmD7e5Q z;a}8VYyC>G$JXQqAA&47q}7!g^x+i0jSEd^Ap%hoZhyaX?fXLXu--q2O!8ih*R$SI zf(;$>a>~K3ofKYjFj9My(y$5Kz#4--qpLoenSql*s(KXPLbUQL4%XaGhqVRi3c1 z&D6VZ9NJda;!e}8^dUgEkbz0gpy#4<`cH{S4;K6|jnyDq zbMvHbYZJAXv0&OHua-Y5gDw3WSQ{M2hOJ)!CsIGH$G7%|aQs?=Z9dNgf< zV@rwN2C`akUTjw<{hxA%1Ox=e z?2y1_>Z(*YO|@FPQ(b4|8GgHsB`KuqjnaFPGThPRBw`~T=jF!D+Mk%^S}4%KD+)WQ zZ_~S6ox9WqAfuHox4e0XG|Mfem#j)cWI}Hx8+YeDkN5ROUxg@bY;4eYUrQ6h2E8AZ z>2m4*{PV+J#3QGLmb`?rhhGV#O!g4=Q;r`QMO(`qX zFDs_vB!Fr25_WW_M)3-5h;26U&-_s*Ph@0Y+2#cuT(2$VfFt*pyPEDSMcgy5?(rg|S?H!w4J@4he_aR;i{xrSbaRebDn1`c)wxTQ!-V zb*mT$E`+w8F!T5C@$%Z8(@~LZ*n8cJ4>kv{@{|3l=C$7Z`**muAp#wWv0cHGY`rx` z)E%h7_P5$Pa{&^nd9JKHCVf>)o@Pzhg=(>48ecfW8ki(4dV%6%V>n!A`1|4tr^NZD9wasvG zVIjxINCuqiwcR_Oe%;nv%TleiLxD=7yM3@C))AEbJJ{TA|Fgw_Gh>@p&qp#Cix$}R zYBp)QtH|~B^)Cj*^nh!bOr+%2J^qm_&bEnb% z;&AoA{EGEvRv0tUzB7u}YnXVA6wQ-MB3 zD98m1giIt3Gsmu$v7V8ZRw_nY&I*Jl$~SK(;KVaR1X|Et_-_BIlsK{Hgxp0xF&$13 zEU9%wMNHLUVqXD`LkQL%!wuE;PPUZVlx|R&__D!~n#&k~GBAOC(djBDlHYSLuN{#? zPAVVl4XBhJc{=L^6T02*QM8Y^h4PXNylObytd%yB22Wm+(L4vjXmfHFFpk%W>rO!| z|3qyzABJLp2~#m}|%9oO#bJP9imh^@ihc($IY)PwC)|f%6CaJ6z26SAK#koH620#ISWP@>vPnOMo0iC8rF{h!-Z%80z zFY6A>_v3ymJ_&%9-v{S?{eyf2~ zWmSouV@YsZN`4PW1}I4i$H(1TyC)-to^Zb{V;n&RRRRPd@{pfjQ{xJpRZ`k8m5<@! z{5x>v#D`I}yI%Sin66L~lF3h)mjQ!U@q!)TURiI;?~ce`s--^_e7QP~ZnQ8r7fTg# zINWdvs^1a{YUVX+kV0P@vSxo{yX^;R&$z*3D zL`9YD<$$aDme7t^`4V8$JBDxe)ja^5e)Sv>QOn{uZkP@oQ1_i&@X!VF8%RQJe!wHefZo0;fir z8%mmOkK*r{eBwCg4zKdWdSKM>NK*mp4}O&`7C5>DtpxA|oTNN_bkVQ`@&Ugdq*VVX z{%m`?nw(*Y3)~@?$$X_}5_U47XL2! z*pxf4>kpm>|MI<7it$t87-}l20(PuR{`G%Pn%0%F_|Lr(9~z(jxGU;8mz%5iZhRVynYtJDhHguPC`V)Dx?NSc56e5Xcm+Pq?^$8 zyniyVvewf4AiiEnd8ZokBTb~_y0)In>4VBYe+A)zgAcff<)I3|k;WB=4_5lDBp&Gj zUt}UCO@#sAlgEygpLEeKdwqvabDpnHU4G}rQoz4pfUTuMhQuJ1sEp&|8wB8E_#<+N zIZ_fM35Nxc(3Veg`&s{YC2f%fBli|1=H%_cO2*xW&J3|1X!q|6TO| ze*OPJDye_B{wM$c7g7JqqnQ5P`u}pP|K z8;z)1cdylrYrDT16aO&~VQOV<{WtJ)>hPMtlZ&>#6&=U=!K)UJL2lBe-}XdPfp^D7 zN004)l$rW5$X?rpXh8VGD>XGWJ;11|)6mdxv9ZZha%y(Zap{&8a_NlCnSqc(wbkemCVkW4b3}V{1T@3#*zN%PwNW}YF`%_IyUOVO3Qw) za8vU!Wl$N3fLv&WL;3SliNY84!%M%D30M)Rl#A9fVJ7jMT6oWJ2_W!6!Apru$*J{- zK9juXRuf>DVB+g584nN?barNHYxNlYzV(qhDc}0tVnQXqllbYglD78e4~5R@?BRbw4f7Z(qWGYClTl*apJ$_Rp_NgSxAnM+OQ)DZ z<9h3V&QiJ!CH+oI`D6v{Cm+jWcANKv7+|0QG(cw(pQ_WHXuQ-nNDl2o!q&4xwL!~A zMO)4!6?J){!x$*6aaS_X$fwoh3j_{<$UVy(v=aOB=MRNe(o~C&+etr5tB$7Ts9biy zp#6Yh2MMWdg$*BIzbUl<>irhbI$&S_X1c0aEmL6vlsP(71_}3xAkS{F^HL=B@%m^i zqmiN|MOu=&0ye68#!c>gy^F7xZ#yXknm7g*+>060v-y$6SFxDtRPJEX?9)?B04XAj znUpf=gG1n7A78niD}i?zt^;? zf0>{SaNf^ap0y8VSWrl3S@EKS*nK-bzx@vUiMO~%4<=_%D$?Q6>SQOf_9a|3M-P8?m1GKkg z9{FJapq^a7WGQ=UzSMwhm~G6~^IjW5%G(CWtyGsb_6D9_dPYVt)O+>EL* zb~Kg?^XwfSYLgz9n}|sOibuSzMhng*sW1MQz7^d9wM?P-tBSVE@XMulXWF%|CnA}? zh9e=;J;=mqN^xIzy(v@E9jaE$l?EKN>NZt_Qa?aJB#^cbU;J>JeTX#k;%F^-lHLA( z1+i?$N|5>ydN7fH`_PuxMReS|9Rw3pRSvi!4`#0u>2kCMl*xL1jOwe{aSm!Gymo%hkK+lvSo zB7*obUhI7sUh;d+d2CrMkXN2rU4h0{c9Um-luGhprJV!wACl!iC}l}l2oa^Lo`$Kz z&o@)$#uEm&(`>aBe=n88~m4_$`2c?zt|~q~t79l4zvyD4Ra^Uvfu$zgm|ti!K&zGK@&|tV7N>IBlYZ-qW!wM z39l|!EeXAFVV%=r{&lF2W)RQ6#VAo4O)pX$%_y0%;&MR0Mx}8$H&6@m3AHp+=0PH5 z+vufU%mU2ha1!c&v6^V)Ed_yd)x;D~!K&{2Ck*7P_ zM}NHvy4!)PcIlial1wDqC~F>5SL ziSZ#Z`Zf=mZ4|98&apEME;$F?f7BE93~M3Y4eLGQ2!HExzar810Jb%WT+Idvz13d^COD0t|y)>$PXHvZ2gcM@bX2 zNY-ASCs|dc7m3iC=hdZHDsMI@0Vj#}o|FdLBYX%wA?msTTWmAT(A#k5{Q=cG$J)c8 z`7=;)VIllnU3jIJ1j0h?uR$#6b~&K-d)Q(o(_t?0q%4&j4Xx zxDo3aOW9ggJY{zs49vg`1=~)@J}wUA*Kdcg&`+Po<;BmA$+Ri=WLA zoa}dfEVk&2E&`D)87X|;ZntNOQxLftuhXjPhw)iVJe)zGPObB~rJ9Vxu0uD`@z*$P z)#8o3HOY##YR^9|9 zA29)hV+32R1$J-8;{1>MtCAeSJ1e zyPgL+pdotLSj_K-lXY4^4fWvoU0UgbJ8<-j8*tf>D242R#R3Ybp*Q1Aj_TU`e--QNf&?-yX4=J?5>ze ze#T_Mk$NXsEesPhx5@s9`A)n2^A;ABuLAZ*t0Q{a#3PoK{^Bu z>p_ZV`(x+TFqXo-4?uD;0)2v*cDRKVVr%N7rWlbvCiAr%?629=VP0Z(dK^meH;Wm> zNTRk)*oIr(t=pmnNmjgq8omQdZt~t=r-`9x}5E zkFOvv|DMaRE^>ptuK9fUFdy`1%dX>Bh;kN`hm!5B`}uzMv*qi{#zEh@beHX)Mz`;- zsiZvC0TWGv3?Gg0Lv>EB+0c{ClIbH9Axb982UGQ0Pj?qD;yQsn^4@2v=1RTJcv8ly zKeX!5oN<|Fvu)jf0CB7nO2Q~K7(jrMVe-Korqpm@-l?P+Xu#0q5@M`1)Zpv+<*rbXQ9OGuiY!oN0G!W|pZ@7u&ZXE; zIbYxRO)Jr&u2hG=c2L7Gvgytl1h=2199&&P@F%or}pxN{{SuI+NaId}1^%Mr! zKy6U%{JMj#=PClwrbq(i{;(Q-kI4;lwlKR;I_Y7KQ`f@2eW!iW&!-)ZzD7~jKk)xy z*78KA3k)b!Qk48%nWkN&US^|lZ`>)IZ}!r ze-Yu_2PZ2Kby@dNwDMLu0A6m8XHveH^rs%$pi^A3vw*0@m=ApBd<{a(UpK^}2^rJz z-r`g)_P;RpaKLY}*dwlN8Rjzw_>~fXVW0POcdK9FW1TR>&{FH?Z3VCKzGVTG5=bai z;|(r*f9Ce;b^Z)4zRZ@!ooGIj`G=V#?-DaZEZqx@q3z*Z4@}#nryyxr=OobbL(@~! z@gl9h7Tul4(FyygrFSHeOc?@eS^{KRfh3}Gl_yWYgomC^nSqXRgLBZe<@N*pt<}RQ z2&P#frCn=-yi@Au_*jYP*oj7&_r#R}n2=SJa?`U(Qz|ek^rDkqz&dhA0RKTH@7{?- z0E3_f;u>1R3E|c+!-yp-S0FW>L}7ggCsU@k(V=iIIHkpd5;yy)^3|j>F!9A$$YWSn z2uOb|Z&9lO?OKaI)xIwfW=OGKg=0AE`c6#W#j`-boe?^kJACcAJ68nCT{FNz1s%>L z#y9HjE)wpU=9>aAv_SBRjK0cc|NLOZnmb=h0}keZiosM$66M^riby9z%{(Jw=AmXQ zy(;&IzgVI{x^P;|lv6=K5~&tbv>otV{&`0F`?7dzrj2%fO%6M{%0Qaq6D! zkmh2uSH&%iA9Mkk*rk3;PCxP(G$6^#)Fmk+o>!)6S45D-4Zo|+(#o(P?2)|M@A9>B z^f>bRC33Vl!@0lPjNvPKMA)&`>Zwa%HdC|ldZ`_&iM2kVteT*-FFrx)BK>rG+Jc#U z{O`4PnIW-piDHGuxbSHi)vNqfC9!m~M}@I>ICY9^UjO{9YI6S~M&wpUi}v4wi7Bh0 zSo(q%*ta9Kq(>b!bAO-I=u${A1L_CJ^k4Gc)c=<3}Q~=-}Zfuo+lfYx$&FyZ7XbU00qjWF?WP;JTkHH8|WIqTyW~H z(rR#3GbOsl2ZeQRjFjl9c^nNri6esGz=_75akz3!ZxE(SX11=*~1N#X|b}|cwxQkZZ(V`Xr$hKXFJ6 zXNX@@2-LT5zyOoAAaL1S;o;qPRBKRZ2Qu+PB6#fypng}zgLSLXOky;r=KbBO$VNd< z=Rf@#(NWOED@@iiY<+SZ0=Tmn^-d|gPV62OLQ1fJks%Q;Tr=sO-9;G=23SrHgLe~N z)DNx7c9i~ZnXXQ{F)jm0Mp4gFM~tZJ zMCTJxB6aP6(`g&)C{Is{b{jv6B{Z_RP(F%w!7RwsyvvIX^Gr8tzSx=#)$1|C=8 zwBeNKf>8CvfaZ}dW5DB!;#N$Hy#5y|&`hXlweJ9hK88~R(i}n#(k!Lpy6M7pEJiZm zX-@(HT*rb5qZUH6O33qeWdRZV)9R#55C&oo47?4w`K!`mD($rDDfG^RmxUnp$75^2 zw;i*7r0;2g94};i`(FV1O$Pt`d902^=F^5f0mOL*S)pJ3UjK6C^BE!l=_zP6Kw;5v zgL&2J!!ZaoW2cCFemI_WinLGN2{=W8p=5$SdvkkEKwf_2bem#fHll#O%>jVDg$Il` z=PY0Vk3sZiFN6~JWs7&EL6f__W1-2kFs;%0ugZ5#06M$lfYUxs1^rgTZ;x)hiwRY) zwpJMhB^Z432J`niKCPXbR6 z{z%KQN!5DDArJLBZa}ua78^I$Z8+pN5Tp@d2K!C92OwoOH!U7-WgoGT@~aP0tPFutji%)=KwV5L4VR?JXLQ@)o}92eGpJ6lQu3~n@f2%w$Q(sBo6N;ZAuDu3!!r-@?%7V zM>}#D&0*n}msFS4ipgA%2^`aH@V|I2=(HfF@C9<{b)Su`_zutRn~G$HZ~(%l6BYmtD(sxaC8eRs3p`)O zHzc9hT3R1jUdS>azK^i^I=7D=n*fcZ@2BD*hVylkKXV%psQUr|qi=aBd=~i@|4P1M zFaw~Vc2oQxy5$NUg=lDe+U#S5J$7aG&sGs*t z)wi>+KjX#qIXtf_){{Qa^(z^(XjufQj)$PiHL31@*m=5!{sd9P1vm-4<$0PD`^(-Fifo3%mBlZOw!lL1hp20g;%MVd42|K6gvd{#b z*0tdRk%yLL9PQWC!p2y^>}kdj9d1lt;y1X%%zXgL5MiOpS#PUuOW`GznzYW;T>WZw ztud@G2k#tIHaT#yE**xujsVs<^|PY6c`DNZeEzS&^Ihae*p-Z9;M24g80RC(S9XZA zJ%K$c{h!<=zUf6*m{l4Ee*g70tLgvt%c8&-3n|tZGitD zcxWpWt#ndTo5w>MH2}uz-^#atySn&0lsdaGK+~{*A$7a^0NY^=16aI|j|F&SAKdBP z(p#u@adBb0$p?TC3%WF0)>9rU<+0rtz;E%(d<4}0Gi6>Th_>Q5mMqP?dW*hWt&%9b z*%rku$j($n=5+GI5JS%wOb-ain93|Wm?5B*>fzgCk6bvH@{6{VQUT;rRF?Yy67xHP zH zp20?ESNjnAfFMD>VS@)WEIkfk*g2}}{!Mko=EDvBA#OpckaX+HFA(r%g%%@Btmo7K za^bgn0EYUqX22WJJOEm1hfP5J(HG3K$cQqT%Ma`fdSEhB$c=!S7)Ngxm8k`&6)k|A zYfysrA8wHKN8I6g=)Nae;horN@Bym$ymL1ip7{kL6LtQtDy5|LfRM|hH%lsB(6-Yq zSlCcVd^L&qy%B_M8N z|I1vX)>2B?-_w!FJ3W>O1*7#&j9S|Fb++m6JF_-oM0XqJgTDYQVMVz&nl}jTMGl*G z33zV56fo^7;(+IxKz9rPAyHm*hiNoYsP+`+7YaiN!ypIQXxsCp8vL1SuxK|M&KScy z?f^X2^*-wL?`|a!4lOq{L0xlQ1xSUwpk)GJ`(_=(CYzY04xAFhsTUV>&*XH~6cWM|zrT$_5no zNF>fjK5@XqazH1dY_a(a6r4Xrmncc08ju6m++iO;2RANDSRFm0TFy&E=TAk~X@VwC z7^ESW?~V*hgdHH!9)jq!Jf^mm681977b7W$RaNjZn(j<>ca%Xi2QrBSWXL`1G4_8z zdV~W{3`{}zVo)UX$q#Hi==*~N1FwX2Kw@$mVSz4bR;cK!Y?Yo#@^iEpPMhA-fCH@k zx6KPEZO(fo%9`-D24rcP1W0^*u9|ZE2@JbR?NX~ZcQv^tedaOLWi;6{!t7%3V zH!O>@gkon~u<*s~82QFcnW?4<4H5Se-2p@zj#Fnap>=sEsB40-@z*^UT>o=J4fyrk z6@6ix;ok>jOrPKzW0HL4Qj?S{&`v+Yya(BpNDo`U3S7qNGzZm{Up~jf-kEDuR@i3~ zzJnX%xd6bn`VGLisEc@8jV6vm75zSeC$un2-HN9X$WLu^;(YP>T}T&e3m^%oC+Zvw zuX})fEf~;^AZTO??8u31XmWj(_T2fCdCTD77r@r(n1Dt-|LMUH+NK2G&3aD`pS8^O9vxzMx0R zr9FcEPBnSYr9Zgo3}!HlbSeN9-scrm^P4lYRqZawJN6_`g*X79^$;5+=O_|uX7L8D zdRYPrO`3ah6o8Vy2iG=39FGn*;`(Ub+xhe7$$_nGWR2aJJPBt?1u}Z?iG%9o;q6-~ zBNUnBy$LSWs@~rZpTp73^Tf^s8O;XU@WvE-}&&;{4D-&k*ilmZ}{qI5by zSM8_CxoNzh$9JXfcEcWhFz7LXKQrr#oTk>v>5a;lQg69Q#zrrkt#h%M-PO8TH|sbU z1)T;(#dBl*GVY2qvs3iZ6x9EGS+*92K+TIyx{X(unvQjV-qE%A)C=HUwnDGPfZ<5_ z+Q>?-;3kMjdw1N%WLe4O)lrCV>Jp}SAf7upft{NfPD&8CXG)|VdXsK5>5R7`z0zV) zDB!r`AJ;`M=Bt}G~YGN^*d>6o|-4$`YKSfQ|%TK+P z^{L1P3=#25FRdn;@>>LJX=;A&h~uH2Ym_AEh)3@Is?5} zFm$KH&>*EKA}BDlfCwlh2!jZSN_WrD2q<9yqJV&OOG}H2gdp7^-Q6+!!Efzr@3Ypo z_IJ)%d;f9H#ax#HZ#?t7_xr>hzx)2tjMcgSydYtFwIEAt{dCK1%X|B`%G0&68n7}R z?yfwla!<30-2)gp`3WS|+O3P>N#2{9m0@*-)jT<+s-%I6d`(8Q9P7VsOtn=Q9QXit z&y&q6J;b0IjXe^dceDDId6xUepUO8lR~db5e8$v z0R&`iD+?J(eIaAyJELw(Js=Le^JA@NcjdvVP;^_^Jra#w2Fd?L9 z2S>A1<1x$`bRdc&fOYG1#s!FKEiiYZ;{yJ5*X6jEu!zepS6o$~VplAJRi1Fc0QA!X z?8RB~F7)8l;ycF~Fnlhqnrz?=o#jncn~}+S z7-g~s{A39V8`D2u@#=W&E=xYTJ+rmUFL%kk-S*xdGAPRRg2tB`%)yPry|s*_oP@TW za<9dto3%pigHzP`*(;|p-Oru8y>H_HW?Ty0sOo~uiaY(X!x~{tX zA{gV=p1w0$WF-<6EQ)&2I}1z9cA%3#W zc6wR1PJg_(U}tD(@#N0+nNN8qAnm5@l2XwfB`8>5Eu?Pz-TmN7*lD}R9f^5cJ||8! zLYqG8MrP`FRW>&0dg}e~z#5v@SO><&5|89sf`ufAN$03X7=kpb*IXSAyCxw9;#Qrg z6c9B)jNU>Cd{zhW!^Fx*9wd*}neysCkPmX?v^U&G6M1_W7L41Dcp~zms&75f#D(Jd8m{u>}lwHlJ#sR!T zLW68EHy;bI6ty8#XuDd;t|Fk98KwOS;E@BpaG)x*Y-g@%&wDk<8H&KFdjyI3mji4) zFaE^qJy8-2H$LU6^n#vn{o^E`^zoc$PW=Z%toTtpCdHG{R1KhkjTJwT%c}(xQ$0cb z{A#OL>=P%g?gsbiyX!FM;W-9_v9tHzo2L4z&0xeHEX&LmKYvC7gLM}X0b=@Zb>nxC zkKx+DJPRyDL|w`$VcD7g-Fo{$>zAJtjncrqaqYY6QBr9_gY92;0?^nBF&o{ggbMxvTv4N-0$8+9)p;clwI`( z!RWQa%tvE50Hx@CEpRWQ;p@L#{eTq8AZ6GO@>rHBFHP%s*MG9rIosCC~k zvt)hp&=o@}TjqSzrxKF#i6!Lu2(SWuj~(Ovtdr0C*jmb`c-M zi;6+iO$TUf8mx%3C(P_jM9pp;?BrtaKHXXD&9)idO=oO<*UU#q9^$yqhy#)DcN>Mk zM*y&z_ap00;A=R2X(x=W3U-uWkeU(XfX(;-a37tr3)B&z4jsUp^xyN`^>Qn9m`Z=| zQcdMd9H_dF{@!TVn)-hI)Z*YpPs+pz&X6`a)UejO(y-9f516sw!E=Dx9>5Ru^2UY2 zXgpM79k3KAlOg*>SwHcV6 z0N)hQl0T6H8BNAgug|cxa6(oq`F>jqd?sg?td}fQ=s1dvt`np0vt1jP|32C>Fl;*Z zHj^d0H~M#T7uh;kvxh{Q^4i}&fBrlhM8GZC;T=??y0rY}e47H^m6b^a~PSy5lzY#b))sj~XrzRNVY%xq>JhMjGuff=+egV#D{Y zgSIX+BP(%nag3t^S|g-no)dogp7JAKLGD3srF?yhy5lYQ+5nmfPtfM$FAp47dz0kN zR>5!>Fp9sYX@E_r#P&n7UEcE^Bn0`Mf?d*j8bZx=`SGueZ1vb9m(qQ%D(NQIAic%>s5iKan0qGD<=r}fvqq1 z2b+|0X4uP@yu?_L(zBoyizlau0()jJ@G108|76cmVOvPu3U*uCXvBSzc-MXpz?x>) zV*^@;Bu!7e)M*VGAr2GMSf(VVqo?ih<=sc+O+gW*bYFw^Fgx0i!KsZ=xACk<*~C8v zw8^TkzI)y>Fxq0{Bc=>o+iQ7KFlCNE{348H*{sPTIZ7uML=m$t>R!w_gG&J%?!32? zk1mK%axwe1FRdRbk?z}!2d2xLVqf)G93PF_Wj;^sh=&R{s0Ibcl0e(QAz1tsJts$tbd>?5!8#&0-5lYxw=()!)TC9eZis3 z`+zvXsoA$%`69;>nDJeK1(#XyxnPPy>KmYtgf8m>B8o#>{AtgnKLK-E(J)BGP@(;p zv!AZIDIIZ3`yw)`3VPYPuVXHc1DlkA?xD+n=h9_LB~`{(!@0)6H%6leO*uyQEP{=< zVljaGM#owme;dEV#&+J;wirpHDm#iqEqoQ`?jh)28Di5%Zn5uuFQf`!7 zE4q}3MvN^j>ZAdy5PZP+10VR=f5@}{z@^~x7xw#452DUa1L1+szq%iFcF{k-^uKyP z@^91sqpPUDfB$XupC0@#boJkV)qg=M_z~(~bwN)NqEiJA*dkRx;SmRM@OLBRFFGB> znR7tzDV1R;YgsCA9D9j_le5t~A}s7~J_uBDL2_?^^T-k|h;6x%2RA9|tSjndIc z+id#wjRX7%X}kq#`bMXn4{R|0x^d03;+d!*Uoz~#F-U2-sQ)`f>16W^8y+YllcWjY zw#t>+dNse^fHEdZf1BIpf(!~^E1cbciLy5K#m!FFn2P@)LXPo9-K?c-T{CbD zOb9{!&z9|GpXjt0@U;lRnPhnhoM@Se_30T*S8)i!@cxF|ophK-{69{5z>@W?YX^KC z4r;)(k&1ignIEA?c%K#qUUy(NL33E>ix)R)ZH8yV@z4p#xXb_w#p6!c4w)M-3g?vUtxQ(N}bFAh9oLT@1U-KX(uf$?L7$J zw=-Il9xoh)gQTpPeFk(c$ir?jf37y+2wr+1fk>?2((%C-mD`Ae*DNsM(pF@@y*o+z z<_gO`VBfT3d5t*c{T^|V~XRjw<{0+mo{7AsYNZAw!CD+U-`@}V}Oy4h(F zFcZ#eXzRMAGpMp84s16o&tJZLYp1OBkLS*YT;k<5+*vuw6oAkUuK^DpD&6~IEM7$4 z6Rge$f+)MY2p}IyX7dGRNF+ThtEvxEGQv?do(B?*l&=65zGd zK<9gNVjT|HeYSs31HfCH6y)q$R412!Pl0z=^}$L~%a5}%Dl@;JQGX!XcmR_kGM>{P zKzPl1V7_n5zkLXm&wAGQ;wcW8Z|UvtB~#O0LegdiPL~nbW9-OB1-ME|>LZ5vf)^qa zT|i23H(Z^_@jbBmn`G79{&I`OASr_Ja-(1n45+au@0Kl~Ofn*Wn>@rv0n_zB$ND(# z@}p|K40JxEV&<(;M8lcC*6==k@>4+^L1nJnna90lSQMSy< zk2_Ykrltg&4NN7ToLx*OG>LgW;^llgzBivrq51X*;FUfcB*0K^c(-mOtLFrJcuKF| z1QqWvyy5X@H(b0PjGJ$-t=g;GOaU=Gc502N^8Gaid@S8X%7QxGoVO&!AutOuy1#Px zvCjT{qTJS}zxw^8Y@)g{v4~4X=>^oibfxe>b^wxp5Ip*~O@2!ph-cMIfi)mA55L}_ zH65)7NBL?U;?J;yVYzt1sniyX3Ip*l2#nFVJXYWv2E>CgXlwV=G2A#U@*P5< zDCtJ2w22hPzu#@WRyXjpXb_KZx6XVGXO|AyB!c5W^$DY5Fyi#2@R8aOidZmek?Sys zA>19rR;ryrnh#Oz;z?aD0^3>oOrMJq_&~P(Zxi%*z$N+_&aS1rzH2Bq6jFAz&cv#{+`wCF=dK*C4n7E(GvJ z0D_8n-2Tp^h92^>uIJEAi3;KY86`pr`~3uQWe;gSVw5`aY)ri`tpf*qG^|SpmdC|T zV~z2mB#1kU9%UG#eN|~eYe<6{Tx%F)Iudr(_V(Wcap1s9$OBH|LMLD?@J#*r140oH z2ne@>;#z~D;2pewcWvd>qW+%~v@0Bmp+$lU7!n0vR;64(g*npnv!~|&k#YLz(ABjOWbI*;sIcDJkTPTE&eC|*CWsG=2>4H^ zRpSIf+*BJ&#iiW*0OGP%vyvDd8QEVGvJl1(ZooQ?)eV>wHP{UEO7o$^ZEC5fFyE-K zH!ECd>(5Fr@Bm2FvroE&H_kf#p5q=U%mk7&x-LH&Q|pAGQr7ivrggZ8WjGZW-JQz^fXboROU-I)6-E?plWMJ3B3U(YlwzRaQ1-VT}N8=O;TLX_GT?(yj{BHWn zouqjDfRB6G{m=!m!Ds0h4+1z4(F6RUM9Zf)7M~0hPA-CI!>F(Ll&_5jbXo&n=zeii z1d%UrhJdFuQE$a-=?t-0QtPf8#o=tr2kdgK3 zN>klyX^}4<){q8IUvI~VkzVHGl9C!42AR8(n4@9z4O+$4q(?BMopikqfJg2CV@RUg z?eV;9V{11Mbh59&TGB^Z_X`rIql-_vWdzo%>xw~Aa+W7n^_7fwF(|`zmtvw9edOT@ zIt0*2N8j`oC2>zTrz5R@9u12?bP_!w(zI4CW`9O)KrR$-s=x6e1t$gQjeYbK%g6B3 zE@Lx6fSK&(6%*@vTV2NmLowcPwGKXp0{^g~)|Xvj*48(Ie9;hg1%GhUX8yj$)*Dgu zo#%OHj&+9671|3=pEWgntn1)9i2y#L+1$&IzPkcfuz{zJjt;kyA9#k$eN9mimzbVt zz|ZciXj+?abWHdSrmK*8Ko7`MjR9`vVw5ZXyzI3AIXSQ<-uaHUP8z5O z0unBas2jMI5mA>)1tA$Uy9&@VS2~kjmcHoQj8!YGk(w%lZe6F}tSl=iHLyU6o)W>YAX%~37=2a^- zty8+cqv`t6Wk%`aI535^lsS>?nzpHKtQ|N2${V?S`LZ0{z|CK>r~~QSd$ZYE)uX3ye?EK9DL_It)s})>QFp^|6bcEp_s|bE4m6 zrKP{7h8(8>*WuA-ijDIj`gE4y{cywj%pi^M~O$f-;y91EK1X04>Kx^u1Yy;*Ak(@fMh@Y!*z?m61o#L&wd56y84Zm3@fGL& zh)z+N_dz$c>WaJcy-xE%B)1>9pDkr^$4)DG9I``O6q&Aj*sGZyKM3}K#|F3#FFXbw zJ|h6^cszf^#0oNhp^~GTcGWw21t!M5Irz};+lLwZbN9v}4*5!%Uco0B#km@Bq_ zMk=>vF&p0)DyL|uzyzg4ee?Y;XESz8{wd_RWMTBn9_&O|^Oso?_NqZX>et86jo1&( z#TP&^&+p@7X{uAbo(548pt7;4D0rEfg)MvG8q~u*6&q`Mb+}Wn^6(9YVV-M3Q8sUG zbc(J@jC)VTl6Z{!81K$A`?&$!{%pyHCWqv_Nru z9CBp7$m1%q)-KVn2NEI|*Jl$7I--w+jp%4GDwmA6-&a94_I;$pI+qtRaGM1nW8m5i zkUgo%fKa~m5nogTNd8)W87L&DS7i2WL}FCO3E&Y9BKbhQ&e`5WBU_AXDZ0}=HQ%(g z6o_M84ai?#)Zh|sH-yd8>JCs(M-GWDH)0pS%3^x2d7Q6o7T^J$_EwJO-)qW#aQecC zd+&|u>`lj?nU(&TcPmawmLrCGo|1;9_sP$gPwXe_UxTe`o(uv*HY*f74@%DCq^eU> z#zo?355KU0K+%s!z|nX`vsspl5tpCr8tZfywkgrvhMjK+2)SbdTxUN(Xh1;P>wZsM z!Vnlo6~SY^No>ngXZ!urk&2C65UzIV-^+L|(mCErJp1yheqlK}bfbfb<9&Kk+#OJv z$13B?>eCPDb*@W(q`qBX>$Ml3^ey5rQ#UNP{lHtMWF0ZUTqJ4cU#S{6Km8N4zfV~tak@s`PeS3_O*HT zx=j33Yu`xW7t*kmo_kvslt|H=`k~2K^rSm752SjfIAbi8&C~QXEnDOfKoTYevVvS( z3KZL|+n|o8$--{!C(pOIa4^O9x=;_M1HhCqzJNsI#&IX;3{W;n!|=1EO&b6RmQvcc zUVj)#PXs0<_L9W0*^ZA)QaLCA3aSsL&n@-Ul+J-lfBUxu`6-txPYbCb^u<0|U|ijo zeB$>qcO&zR&cyg*7I6Gq=pMn^F;)P}XE+ufRVXQlmu(f=sz$KgfR zIQjh7g{t4*YnzgA$30VE`}dM}Bbg?K7Uj4jwN!hWXo{1(si&ehKU)Ai(^C_q~ z-o#bslVKcv6R5g4`5z=YUtR?<=L0;?b$YbYzhHhaVF1GTU412POKE{3Lp zSpYk$A7~9fpM%U@)w3dNU82m-iOm-o?gU!1rs}3IFrCCFI5D8CelaZHelb5@hr9cX|3T|puAAy_Bi4g* zCRIRvQbhI1?r4;zOlN5(+fVj476)0(*Jqkc1Moa#3ZlH+n6Rx%vD!lXn?3rpZ zw{@t;Q^)9Y!jS^v=Vtpppnl5(fH2aSliBH6|EczkwdL~hD$pG&2uK;Dm{x6hAI$u7BzW_Z{C%hM&zu8^8Nl)aGDv^WexZpYhPQk@+4rj*Q8cp z`IVW>&lR+r@f!utjp1pai?jpR*|6Ek6}=^sz};PG_ag)rMuX=$lj;RF*~*J|o9e+_ zioFgXKi@%^>eCZPN3}+f0-NHjg96Ls?Q7H*^R%w;s71XJiNerCcgHj;;Y0SbG&%ye zXSUu$rKt{=x92sy)x35c-)1lN=Aijass~~~dJG0E`mFt9uERDYn~XjmhV8PPj?}#w zec)J|{@a=%jxSgw#W<4~qbPn?Ixs>PS!9# zo}`Z3&9)8lIA>Q?o3j&P^(M8l|{hfczzBgH@JtF<3U8l)f#uA}%N zC~RIw&AijWe23gGLCL9-kFi#n`oFGkEb~|xmRM;!-2iF-#QS&p0oHyBsGC#H2D0~Y z12?K{*53Q(>bN+3(3=)6ANlijo(lq7G&H#=74@hvd||%+06$hE~<0dbt2q$hwnk9HkL%N`=Th#o1N`2K#7WQN?fdW!bv?;~gH)l4T zm%w<`+?*LYFu?e#fI&sYYxDcY?{Qf}fXDm8#Iz7j!7_mJNRl~e0j2zUJN7{0t;9N6 z#P7#L3)MJ%834Z9rh;5VfMFn@_&XTw0}>OM>edM^a&>0{0C?vtP$r(EF*UmpV-Mzy zD>uVGgObSH05DN{0Jf%M5LkCmCHVue_z~Bm5)>(%#d8l>AoZ$EnMDnVJ3Zj&ICnpWXk&5(l&& z&r(XQyVws`0`LRu@Nn#fR@pT=d4$Vg=lLI8E7n)Uz&f&oh2TkWvav?8;IXoCO87%y zysT`mSYT|dyjTd7k3E(J&dvvsV2fwLW0T|rKVWQ}>jk#8L0U3=2n<5b#zs|*!>LoVhqBPJ(a7W6 zNI9(oyo0nDsWoxwTMZQ8IN{lGcT)C0SRC;OGTLuAhL<>XD)tZ-I?&MSAT6oLC0SfN zL>Cu9Ac||G1b5J#eQ%qAy!35c9HjM#mxUDEan=;*qFVrtBv&13i<<{ z1Pz|VMNZv?o0)};PSb^#2^{~&6O)kA(U4pK56wnR${g`mCU7Jh8!Hd*v~|W2Lug%z}X}qX99+@^I;({u749dpa0nlVgLI=*f}Mzknf`FW!osEs1C6bLCNhxe*XKUlE%E->n!jF6b?xyuTn?aJ9O%3hq7dU8cLNmGNvY0x4=*=Uh; zia2+2Zks@#;JeJU+PI9ZMk{2xzDLe4->#tI%9NlVTW@mD5rP9&0(-H#251TzQ-7|L-rgZTbU?0;tv_rJXmZZLzauiHEWOC16NhcLVx zKgRus&++(625=G%(OUZt=l<=$nie>H2ZuX4{byI49^r6zAPlQG@bjO4j&Q5=FaGn> zpkZ9Z81A1o{*MMvaijmF=l}DU{fpE8^QGs%pG)9BO5k4%pyPivKL6GD{ulFu;a|-! zFaiJb`FZE>1ZH?KcJdz|>}2f4+5CR;=#u0)4azwU$~g_nIStA=4azwU$~g_nIStA= z4azwU$~g_nIStA=4azwU$~g_nISmTHI-Jv>oYSD3)1UyD$~g_nIStA=4azwU$~g@R z>I^vnpa|dt@=L(Vc=jKND1Z<0>^}&=OZ{7xChF|Be}CyeJ^26N{{O|L$g{8eSKt4? zxc}dG^}k)%r$OFerOK?%9s-m2Z`_PIpq4R6qq1tW)(FYW@=RMAp*Z8#B@1TlMr8Isd zlnOu1`oJYJU!*W6WodPgPAjbHG8VsZf-|fOhM<3kHJwknrOHLb!C}sOu;z3{f}CgF z=jUy)c#lM<*(fn4z^PW-F+AQca!d?hWD9(P!d9B*~V_LCD49T=;rJuM9l4V~ZKc6K;D_Ly{*QZg|~JiOq4i6s0RCkuH< z;qXcdVEIb{B)FUc0#7g>q$VFbIXSsqebRM3Px%G2mtjf8(sG;Sk&VSb5&Tly@kzMkHpCveUs;gfXQvVtu2@1{(ZoyJ3Zag z$!tvWrMmK9Q+uNJ=i5ehI$wo6P4{7D`=lILIfS9&c>^cAo(A!d8G?+gJ=3ssXckZ~ z357p@et&2Bm1bgB0mt+DRZ%^^Pu2M7G5E+$;r)+OKV&akt&K^4ef8>ImHNX1$H_+g zZ`GT#l_QPh1`bmmLPWBh2ugWhIga%g?N3V^#2^CibBxM=1^4CI`MQl&_shg|v^(J9 zjayKa)PCRC;h2p--`WAC?xRm@r|!zi%G}3pRvsRy?`hpR0Y5nT62t+{bmhA6BciPz z5zk++OFB+RZ}R$!(Oneip%=9JExg|$b7Z|e+isM2M?>QR5B@mJhT>yvM}y1#lS|5S zlsv>dv}~Afgu7~QF8;)tz3>N&NTPu1OXNxt=JensNOQ@yqXWGbGgpV4KtOyWcQ>Y{ zri^M&b{jJ^KS+ri9_~rm6E>7^&6&|mRiH;uQ=9{Y~jTmUKzxM6`K8iQl(&{v%prHLs zYiYoyd~|nuq|)i_n;>!1jnaZThpF#|9XGdPJycbHDm+|OcWr%D_xauwO_N1FG}l}O zP<00iSs6(^{*}97Gh8N(_Y7hiAZmuEhmJd5C2_g)?y5`YYk@l1<8I9#!HLpd^fEG= zyX3^Oau4+E1Fd7fT7I4dWVKR}Y|>KBZE-5(Kq@Yj=0sxngPYGtCL~_fp|+PKCdNa^ zSr2Pyz4s41Hv7qa+u#owJ;Y>^bN!a`zpToNU0Wxl1$3M|>&&Un^PLTTB*TC}IxjBH zWPEwJoT4#F6p!VA*4O_M8KF6$82oXe@Z<=&pw6%)J@fA&_!tVuzdPvhNo&D%;x9tfhm8g;|_we0aE zg|zIEb#F#YQDfRf_cR|u^b0%&!2)P5TWgP2Pfq}KmwsPs5=Y#skjB@9($~vrfjBho zuzx@!;ab6~Pt_0aZhhfDhEMv$LW*5xZ+i{^&bdChS)`XOlaLq8{)pojgNggY-t0#{Lp|x6|NjV`K3b=Y=7QjXxE}JVd018uSMP8|*^HRaZUN z#zx0m%8U_p;f;7gq|U zdbvyUDwL^*g zS;t-BU2?J=t90t`7rSELEZnN!Mm$g;_M6b>roxeaCv!eIjdl*~vd$RxXq{mM+Tn%fJ`6wVv`Z&z$@(YMq|#jMxa4 zKaUTJo7Q_D{qSAjH+r$9Hgr{yQt==NZ{oXppoO`4-)Noe295CWH$#YRu)T<33BTc; z9VVAa`Fzrg224AApwvoI-LTW{KY{H*Y@l7H>h#j zUypvcR2SD{gEv!1GlYTgl2jv(i12JP?oeAjdIoY z)B*a@b?IXN%u0SC*0gmRMbrAQ7~lB8XCf+LdpoZ^!XLL|Iub7nlC$0HL8qTSxQZi^ zhd;PfsGS<@04SV&6=@0fKIpj_)|UdZ;mp^sdlHNL(G`TmlyIu+s7P#-ICL-Hq(PLs8w4USFpxC5633CrV!EA#gptqBG{pSQ&bY&KQsK6ixJE@9xUMif*IF~(J?eDI zc+3?F`M@od2VtUU?zriD96J-`qkF&?|M98eP`uG6Rpk5;jbc4DnT< zYkdr*l!GfFFQLgvWAbo)qD8lprSIb1-DiSuhfajz(V}KMk~*H+fhFV_mRjyR4#8=K zK%r(ijs`?eZ^VW}QT_;Ca@22j^YK%lm>G>U$oeDwn~AlG(FG&7(xlI%;%0X!XP-~-Zeqp?6lglL2F;9(Njg`Z&W=8TXVf9PS;tuq10Fm>m8Qc z2yIu_mr|MJA;yZz%AxeahM^bisb9Y=QPCk^}fU$7k^hcJi2TMUfXJukgthgq4+A4+S9^DwUG&kpO%{Km0)}jO@pzuXGFAr#&TUZFh@Z5sP z$c9qdBX9s2peWxc#k0@B!Lc}(Naagh<5ntLa{OB0RroD~SM}3BU+K68?Ipk`jL^4; zT`eusHzgQ^;za-a8KVXY{g+$o9tfX|6GHN8%@OBr4YhT-!l4h19XH%+-{?Vz>dPA= zOS<#Q$1Vava{>0sZ1NQH_uA_|gd>m5d6O4J$=;t@;@{R&Z0qoYPtcIPj)~z^j$jm# z!FhiQ+n$?|?Cr>MXi+|rU9U&dS@jN$Z|xP<9`3F2RXH!DJcaMaM?tDRAs-L;G(6?o zJ{);Q_sKa>XkQzu0~XK4A@qYGoeW(1?fA6Xbh`Sh$^C7o)6=x^uJ43MG!sRotUqbY zcgup-BDIPsED zmqnOM_3{U+bmDA#ih^D52X=te*L=Z6qUhmQWo^gax326$>adu^z8gI6hn|xM=z*JUEcOcj&9PNQcM`E4vYz z2Y}UkNw>2X0bS~Na&ib~y2`>Sd!q_k0#WO+Hlr)3xn@Kp3#X;`W16pPczDx$Kh&VY z{^S09YUH;LSzN9!g)j+Ocq2XLimr>F#=$e(mF#)KM!W4R_2Y6AUc1X2tJR+~xYu38 zu(t%UaMP|e%xdLhi&v_A-HipMwXPf{-Wxm{r$=k81aC>RbaVJIeOC~-R-7$h@)#vW z#lW~r59OnEEnVMH9pVEf^y`AyCnzVMS^jO0#Vo$?t6@xN^d91P4I`-7pFjGo+GDF{ zZLx<)e^%&fv|W-3QZc|4^?O9aXYYW!u4!*g#n&m@QQs%bRjxPJSG zoY(0=9mByZ<#wlzKd&>Ae3c`Z>2idgOSvr4R>EoBr-o!NUQ~+!+keS!-3W19ZtmqV zFKX<^r=J@F2y@;!UXhb!o&P!xX0rX|XMNV%pDo){W|586yX@jmUoRJhishY%mcpdm zR)wD7t=>%%&VyJ&^Ph`9(+i)Ue;a(y_t1m#^rJ$^bJ4m7!hr8NXR|-hV}-&`Wzlx( zJDd)0o#j2JnwA{m<9L-z!hC;0-8(LnI+h+)WJp*#O?j&Rti51H43er6NreW|461vb zglBfCs3`UIdTd#dijhSeqjQJ!-X(ezjNc?GIwt(Z3p$?o_eWjoqB*qeCU88-JgHx_%}aL%P1)`7vPgQNMcPu6cy6o`x$av9PGYDsl(mSB?+27i_N2q~)}n9*tkW-}PlwT0S8p z`|1$;D{nR*=iHV=cdyJ4@~*NcPM<5*YLBe&qaeOqke=g5O|>lP30xNcw!UJ}C_1wC??Hv*DzVgw&1I~64QuwLNse9$E z+c%N&3JURt7eDQ)kP@WVt$w+ba^m8twPtYjDZZ&-ce31`x*(RxFPRUL*RH)~=PVae zMk%vDfhSHCdTPE^{%S`YE+bD}ViVJvLi9|ZU`X-n-2FS*JUoXFX$!l5;|-$ z*Y~Q9q`KtHRV+dbRxgLeH+AmJ*u^=_R|~LI;pIQ;&%ev1oKqFJ*`?;L>2AlE<`->I z%SaM@gqZwMHVs7auJ1I2f}LJHR^*CS~hHfkE0PjrR1-cVjBg{@;!*5^Nlu;~UUWAy;~J*Q4mO8I$_A`9fjB{M^C@L6sb|xCV!h7*LzAx&Jx8GN70)I z@oBf$H*J|ZW#X~4X@8i(#av85* zeK4KIz*d2pQVE#c6dsJZpMV54`u>~ZZ@L?AziAtM}v6SvX zo_71PYDHXeM4Ml9Ug@lF?G!wsGkrRmR4-A3eR*n56K z0%DK`5i6wK&55!3e&GV$XXWF*Uszgw+_Xo&&A8my6JIOoLD32R9`_F zHbjhi=QdJN^e6stqD3SsnFbOF+zU0uueXz}1~(6%*}}U*;2U@mMelBUWM|6@=80>? z#oX5Q%_%=wBOqfA-83xg$}`fJv@eYmSc#mo8LPf;d;hSja1H&QuF!qMY)4YuN^88c zjL+xAqwf*XgMsCA&-YWfVnnd)d3c(dnhd}YtF;=6h*t2wtXDqL_4AqbqbTB(fkL(F zjrwQ0`79~q_8v_Jfy|AP-`0J0dQNc%9YXh7?}vYe-AR(k%e|P|pG?HI(DZ}NOQ-Tt z1U~!{)JnqiTbL%9O6HCb^!O+eQ~jVMw76teoIKCu!s?5Vxo2;F!~hM^Gc+#lhQ`q; z5z&Pv;MP&gJ&{IJYy`NC`{<_=V6@Hcf+vauvMpNQDm^iyMq#NThW>8L0~`T&#_5R4 zqZMEpzl$CbE(prxwYmL@{Zi59xv1kbgie?XJ@(=<`52N=pXYh9(+>vib%r_h#NDNdNi6{FwIcqtKP?YZ5fb-65r&AFc^yR9InvO3ii_b{YmGM9`#G{Du;ba_ zYFe_Z(!*Yf`8aZ8wnUpTVk|yX zu>O`Tj40Xv2TY6Uy3NowCz)v*3pRWJR^xB-xEWHN|zHEuq!{Tpi?c$k0$~sT5KCCgMX?SfiD+xUB13B)=Qi{lOm@CY5Xu1k{&F8`*kB+l=@{% z+z%=82_n+`dOSjE@uSS^Tf9WaWv97`K$-I*L+3ETI$=SQ7`y7r<0YsDKFoBqic+4T z1)o+>;2XZrOEfgWncZ`(F$v`?Ga(bO_`N z$Ry10u}x7M6;m&Vb)&=?bFs<15KZcOzlH8O5#76C#FtqoXyhbjBsB3?)lyDAdY~~r z`J^d9Zv_4>3XtU_K2!MmQ3luzq6HmF{`|EDeGgR^I5sK`1|(>siFv-p#)fs)-H z#A_!<6q)xUPVMc8^RQ2gwJyrh`{ap>Qxb4@e&$PO+aYxahN(UNi}coD4)~SFwcJ&% zE9qBN9UaxQ&FeZZB1pwL=`aJS5)Oah-9zlqE4k~t3@exg1J}=b*wdR}5M`w^{{W6A zOR|Z2@R}PiyMuGIRA-a;E>B(1R3?TC??ggMHZp{q`>^$^llt#ZhN9A}Lzuv!G!n7( zTxX%xkDqz$YIe}2jl<{?oL$nx+G1EIJQ!Kv>Xg4zThbabNLb^wcXy9hD-WA2h%ch? zk>U>?Keb$tQI1|-T6pI@vgRf>zkfKgkY&(40{WM>gF#x!m!7u1EzntSBb~VByx6?^Z14Av6*2f*K-#;+wDtrBD zQdPL%OR}{h-mCR%>PKYkllHp7y%!U!ZsRt(4q;zb7r9OjKL<+*Y?QmBK}aCHn6ss- zIGP@tkFd=Sl zU-u+G0|pdHGOd4_1rZD)*H3ao^uyGe=DVT_g$G?e9;a5j=)9Jqv`=GxhO~;X^_Xyb zagKF9lH`gdp#|>LFj|furEjM{Bc_EQM9C~cFZ+M)-TL3^QT>1As}00`z1Z*tMcE*5 z-1xM7SV>L}x<()er$TN;`2Z&{{0cNMI5^u*h@NDPSPl+FE*%^kq<|oCqhXGo@T6m< zyFP+56c~ymBu<0eBsX8j#_AL5LH`?j?;Vcy`!|fgFMEa%C9AAtgb>1I6=m;{6;W9k zA@fp-GE-KBLX^GtC_5sQEoIBjp4abn`P|Qa+|TcO9QXIR|9Fn$`J;avm-jf|=lMEc z=WCDFfU+lSc;<%=VhL0GJ8M9vL}v|E%;|U0+v{wFQ@3~S05!HvshZid(;^4bkWf4JSuTt9Fj_xh~)Nn zOlN|bvtd_|><3y}_dSd!#o0l#9FC2O8oF_KVN8vHKrR^l1(`N!XlRI7_;GL$M!k8% zh&+GnrX^b>+ry7|Xm-u8Q{QRX_w;>qa*Q{eMw}7cs>=_|-)nPfl{vo7iS$k1Oc1pz zILF6FSBk<9AfOr8tfM6OT70KhPu}2AMLUys0wD%B|6A+F)aUWQX<|)HQ)_8_U9g4b&MCJX6g0|ky5&C*T3XJ9QERb5xp`s zO8!G{X(&Yn#jXWx&! zZ@OWU_KSwPzHV#GAG;5%A}KcXqXiqd>yq~bF?R>s?zfH$q6zulA|k_sX3o z)Wsb~Za=NM7$=G%&?+dYBQNATkBzy!JDZxJw^XOuC&-0Z3>Dw`ys+Gxf$caYdY8mV z)Ox1a;$dcauRnW3;p)}K#`VOf%O#=Y5kHg5KUH3sk=|O5!2Swiy)rdZHJOcsJSuy^ z#+$g=RW!H|F6Q89ygiq3{$`22x6Di-Pn}ILG3#kb(`GyuFtQU{!6a6F{Ns0Bb+hzE zZAZ$lW_W+zEa5}C-zX5bfMI@(h=TEg@A41UjH&7A={ANmdNeh?@?KD2;3eZSM^US$ zXY{=#s!V5)V#2eUY&1g!Rv9(i>WTJT_@q0GoQ)>esp;R%FJ~_7+VR(Qbqo8>x#l$4 zQ+~gXlE^VBJ853yb)SHijFFlnn2cuoJes=BVK|{h;R$=Y!Ery!lx6b`l2**m<0q+4 zlNHGyhUOx2+k!7cL3puwPq9z=g21B6I0UPw=5_L-rm_FjXL{OG7c-N2;|Wo6`Xt8# zv9Aup!G`@V*KoCtbg6hu4}aT$6LV6;X0qx_P_c>Q+{F%4CJRe_4BNioZ>qt-&>!w5 zGnU{w7O>v_z;#$+whijtPB5E*dF{UDOlO%1{j_F}5l^eE`&s(F zELP_dSIyZdLU+Vp^_`Eb4SaS1+>Ce8uO&-pM?cnI{^9qKdWvP8oGR}%&treg@UnRI zM8iEZ*4jWH%QT{*42@*53&O&}4AEDX=Hv+EUe=5)Kcu*#q%^Ibd^nBDEYZnLqfg1NrDnyN|QsUTQsUO(jh7D@gSfy`NUk$K<`uMb`=u z{2*?Pq(3+##Ilt4X13lE{XOSUM!9XXwX2GXDVEF68NjG&)jAH58rSF|&O12deGrb) z36xy?anSH&VPQd21uy#q2gw*4l}z2~rFe+#+FN4vuXf9d`50Aeai^rDkU-{edm?AF za?}~Z3pQMC@zwtlILSpK?D3pPPw{(EIUrE%X0ks5QhF5d6wZPP20B&?-XuM3KXAIH!t=%CAhl z7@N@OK1A+@>HPH&B(+S+&;Y}MKjfcB!N#O23-C39*#`KPK)ilzS8b}5P$@F zALRRjkK)7Gxz!d{)=D6L{TfM^=>@8j-u(nXjWaQHR)V=^fTkLB@68g z*do`pPyQiY-QFFoFvZ)KxL4BJDs39F%)K;{ss zPYn%IzjIp|^mBF>SpRs$YlbsU|8jUy*FpO8S|8fS$EW=kzWc2~#LCKw>gD4;K?XePIyI)!xhVqwz2UL9w8zC{ zUPna<^PWB1fY*;c{P7s|q?jxi-Me`S`^WOpd-Ecju!k!vlH>qKv9+BUY~|R2u2k!r za#Rw15+dMCp8bmCgrM2TWdQ*hF%gl8)%Eqz*2Kg$m*fgsYh()%j~v8*`$=g{2z^y1 zWqYBJOFi(3e#}Gj`C_`moq~di@vGsdeH6)MV%)cfMz)ync*030zkCqB`z><`BB4$S z42Ke{Y_Y9>dQ2WgapRd%H;LuB!00~IuOMR|yF1rIwG{KdAplHyQr5OJ7t8OlYc!J! zV6+~4`=e?RAw$2t(`0qccGQ95GmBMSdfl1)Tm2X2bC%Y4PKRI9o@GA6$G6@e9NfAn zoL=U$KC6|yHQ&Gd(vNa`TiR=#$Kd1EdAyZS8VV+{4&KM+vs}bwY(c7V7t#+jWSOha zpFKOjnV9G*eqEfM?4v>?Dw|-$=W;)@CY@uy+`V{G_G|rtI_ntDXZ6gTbe+t_-fzB2 zS^P+jGWLt0+y0`KP`Z6{X~alsDtX2$Q8r;=kl}g^Uz^}{);f6_w2;1BfNcw{%u(DX zC`wt~vWMkcyT!%d#CjTcP4C_{=0B;N&AXT8qzsm*LMplRlX4`*M8Q#aeM!W7+zMID zcb7#UXWvzOnOatK_xlIm>5+fZ0&;uTyw{@Cip(2sG!p~Gw2 z{sK9hZa=qZPvA;Ks3@r`=E_?9cvbX1Wa{cI`FCFDjW$@W zsT{*%x5k$IDLbTlz)r&WEF?s2JZxlSB(lV=|5#pj_Gt%U(Ge32-|9piQW6J@Va5J{U3-nJ~lF0wn=?|J$%21XBVY5CTi z3+G5em#LH+`J!J>M^54i2IEtprZB9}-rAWv*{FrUnOEJi(0l7I?ymJ`=}LRsap2W~6dIMs~{%BOVi#7;_mLtiQTc$?y; zwD*-I9sz+@r2O460hz^whpQ7UXQQH?oY2#K*~J!Sb!LT$b6ZA*$O1p~b9=ijh_%He z11JTHx#Rfg`#&Fz`EHrEj#R9X`EUOUvTQWnXwjHA!0>V&7*y|1LsBUK<%s0cI zK2@<^H)WM`Omo}7YgOV9ssEaKwd^bi63X9=6rO~MQKnRqhS74VdX|3p;6?E8^6~w8 z7n*=OdU{`iwNjfq@cTZA(y6?<;=(LXdpxT1MwL5%%)UxU=nCO!n#L39VELT6eog%t zN2nd9Mm{m6>~27Da{sq)jZy9wR95h#=q#>_p7aeU`LMGg`TS9MNQkVK-hC08UkYsq z>b1CLr5mZNp7E}@g#)3a^ufoA&sMoV$h;+x%`bWyv%C8wkeJ2OBJ>MMwO7gI)HfeH zbmwB}1{~RYS{L?~&kHMl>oPPomDb9ceBLug3PAuHckkX^=3dx%GS}-bnRu;&s9c-v zOxsvSz?CaT4doz|QW$)07Yrk~O5Nr%+Noe;;Wwu}cpIOPSbHTXyKhm~9myNW&B{^} zij=!xm?If|`s-6qBurD)8GKAhg=jXB0{!bJPZ}A$1lB`cDkV2p zJ%EypvR?f&Qg8Oo$0(zV_IeZrn~E@oqYa7Tz*qh^{~+@z)f+htu8*(J8fELtKUk26 zuk274#t;+H);P;?y&#P~zhBnWGplZHE%ke-i*>oK?63Db52%$x< z@cly%U0ph+%bpkZx+9iuew%;t_{kHO>HK4bol~1t2s!I$sRPsfFPSN|RaeRo+Gx?y zDvudeO+CF^R%UHTM~T=RBN~I3!unv+QtbY3-I!OB4>#s|TPC*7^R#9>riuOPHpov@ z?+S`~zJb{el{=^dr7lyvS8BZDhh&X}F-6+`6U~$YVId5HH`iulTQUXxiX?_KTUV+oJ_S*<>Q{A+L!i^C!;fu^il4NWZ%k%5Yj>e^8<}zGD!ca zyO*el@NzxC~KacP8#$S~gmC9e9h{F2wk z@22Ta-&dw}ORUEAU$tEQl$z+ZU$3>@-u2Ks6F-VUdA=b;$C(S7R;u!Dak<*k9<#(p zsy91(Em(YHWMq=0cP44SBpp=DB;8uB!^%jniAGesLNy?aJec?-ndb+aWp;~1dRf1n zS-#DJDmDl{&4KqioS|ZG#|7SUll1v}OCukVkQ4kr`+t)2QS`lOwDS}K^Ou!fUv;DC zLqTtXN{9&(^%AMaZ##DEm<>3=Eg+h{NTm`n??`~?hKz;&I=}enn3z8wn`}t77vDc9 zsnI4~v7Dk}yntbrboop@-MhAHO8ObK`AEio&ARy<~qs!uHNi8zCW~Qz4^Q)07Bh1q8yUrly7{+TIzfR1>eX zgr024bdXY`uYFHQ=X6chXF4>r<0zfjg@Bi*-CLMF21ewPPw{zOvG=R6 zZo7F{nf|y$o}6tAd9*UEHufFQtOUh|f&kcz)`zl-^dluD z9r3%<_U`sw@}DC4gaT%6vI`4kr_h<5fq|aK{B*Kd3EH-9JyJ2%=n@u*9VphxScx`-q{D<{~2QqSdruuni4ZeqCSicwiZ_gDY z_AHa+g@rL|d%M~<>VM``u;SxQbZTu-q!F_`%qKODlAjy`8CxaklVJJ9iX@LZJ%#+c z-+4E?{FA1Hp7y;v&3^Fy{d@c7&>-Ep{$ZgN@i8BTs&}l`zkdB%h^@Qv(e#GpFbV%k zBdu#|t8YSaBi8xJ3O#;54ge%nRIc0pibSuYKMf2Ridla0EK8pAsM`}1cyAm%`p1`P zpeH@vo&7F9ex7;V^Ez{*9sD~O`)BuR?^+>m2rUp$ts=*X<8P2}li~CH7%fOCXd1zs z|G-EP#;)Dm$)Y(rF6wo*Of(EZX9>zaJJ@c~aS#iMp{d>d&A7MT+qJ#^y~K{8^j7-` zNAjOiqFK8NS$fy{2q3F=qpFryNFFjKh4pyQ1t8Gt{VG6 z?S#)x*O2j8hV4ZL=;YgNRWS9=PTSxR!^rx3J1@1h`=;NU1%qI8~@ z+|F*|3OGYJ+|wO%^_S{^7i_#el&?6JUYD5}yf{+Pu202t7hiUF_Uz_XU9xi~AvMW$ zb(YVIWabulO(tRp$I|*-uX}w6O8MHgo8TO=O;Dnn0gfrmFh&i^&`oq@65?ux~|d(=|y3wBa>z7k!3r;*$YUYd;) zy&2_1#f{)tS@5HVTKJ4k~F(E)R`h%h2wV3`XTiczG8Q+Bhic-jJ zu%SrdzpwD-w)-ZNdon|5{pKR8&cV+cooP$pTc05Oc|Fze_yfP3YxFAg-@0>*OQINj zi_m_y*obxm z$&A!jyF!-F7uR>h%ci%E`!YL{doFe|(hcQ2t5V5-Sdy;&$xvR2f4ZeTR&e+`k=QLf z+fdngJJ%|!6GleY6X?T7UhRpyc&CZ-b3|PQYDY*>~4u z^M^Nfl<&#(JaM ztnY%Dr4D16W&K9f$%D^1LR8u1!l!fZQj0ML%g^KjhHjKON;e$}u5=_bDmo}G!4}2X_Y#Jq-S~ImeK*{EI(TuislN{-_%QQ9B^GwOe&} z)gBB_sgm^y{GA8uRo9?>SX<@4ddfVl8u2 z;G@xZE~1{SAOqVI)q2)I76Cg`3D~_*yO`^6_Y{Xi=MZOe=YZc(%6#4Y55El z4VihFqe9Vqh%MdLlCB-T5YNgmcDv<^{dnWvog}`}3V$_*pvuaNsu#kGTxDGj3{!Zs zeRE>L-7RHk`HLo2x9;o&gP5Y9U%=wt9S1f=W-#2gCO0LdTQReQHnSFr zH;7U?I+`5wOje|bs8um{Pa&&IRm;yWs-}s0Xsmhef(6K4AeuWiXrf;9*H)?<6Y04= zjU%ZB)?~l?~yI@;teR`S6U&#YuUD_`&h7+p7}~O1~x;rzlh-wvvzQ z`5!i}|E5>s)b}U^q2f;`lLehdNw8csOUftttK_Hb#I%3S{5s7yjlRUN@hpjFu1|n3 zV2{|~yO*rpD<*ek6&2Fq8gDB9#W0TNT|#J`333!02PRwXEgy?cgkdrJJH`tMsgZn3 zkJm06efVK4PfigL${jai(u?U5#-xfltMT8~D0xczBvpK#@RgI3hbK)}7!6PJJxSjnNhdqFG#;`z z$T@o0nPZKATI+4971{Tw+cl?OsVjI{u+a9-kTW|!5)yE{M|ywtG+HO1$si^~rP9Hg zy(4;MMc`X$0f!v>SGD5fQ<%5+2rZsZ&~8&8*$toMH)%I*1Qx*rJMyq8>L-PS3`!Pz z{>s@+iKU9iPrpZBAR8Ya*Z6udGFY#}8J!x&Wx#o2=*Ja**!$a{L&~4~J?2nf-WU%4i zHh6K$qKl#75$(zqUERr3_a7;|C&bg-4FIQVo@o84xV6aq>C@$bVWgxgkH3jp5gd%N z^){gtD3uSjf}+lX$rqH{>xxKo<48eu{>qA1K!F00 zrpg;Cqo@};hljxgaPdL9_Y1uRUw-WMo_viIR9Q;rGd6C?~_pWbob)XIn#Id7Dq_kEk57b5nDV9?&y z>fU3vRBzuNn4zH=l}*c?2x^ot=DWe^(fzgi%f?VbZvzvH&&o$j2$ok)#e4DVTY~Hl zd&l56bgl#r<7xA)rosmS`MMFOuDp=yH+mz;S@(al?*C@p z|IhRG|7P9)&AR`ab^kZ({%_X(->mz;S@(al?*C@p|INDpn|1#;>;7-n{okznzghQx zv+n<9-T%$H|C@FHH|zdy*8Trh3H5K*{okznzghQxv+n<9-T%$H|C@FHH|zdy*8ShC z`~MqR_d*vC#7^>Gv+fBX9+u#r_EP@L=N}=+-JO53?iWT$tNW~e$gV8k5q!&{*!}*^ z6Gp{mVfk~{mEXM4*7^J@-Pdv-8xe0C>TsdYa)IJpyjEZVy>^GPkwVM~PD|eBVxw5s zWZRAl{@>pBN^JR#E^p1>HxpLq+^F#rpV_@JHovP!Zc$Uc)+rUwc|AsP({6Qqp?`dP zx2x{ZxN?2Xu;8XrwsFaC6LV4Nh zhr(e`AxDDu7=k`F;5ARAb>qfqwO1E+`VF8m%1tOkUEGO6A^XF7%Uz%My)ChIA^Uj@ zdr)HKF&+w;EKn00OuKlxl?cx~2;V%2kQ1A5pBfKQ)@pkwqtlZMi7B-@J*8O3w*HPD zSx9J8c194guP03GX`r}X2!zH*?-xASRF<1dcB)z|?Yl~Xu$foyEmg(8*D?QGy4=z( zSQmBRIx~+#g74R4urU!VRLJo4&R1$;T)pW&DJul2XA$xKzv&l=otZ z!5k~(hk4KQ5+M0+nj=_~<1bj=R871jbb@bNSq?#3C5G*b?iWLOtjR33)6R`FeTF26 zg=zKS?mX6b#ddhtAkQp^2SFyopgKgf8&UDIM^ug`r^t$LcYk_CjzR)W{SZXn10g|_ zhi1FCZn1dX_PM;bP*ecvhJ+}D?E&m?1pcv0Y?AJmdHoL81p020Ao;Vz2x1BE{O6BW zLY;T2ZP1*D7cwV(_{?kNVQv=8fCNR8xtO!5CS|z=V}5(adF%+=mJcNC$ID`O1f7>_ zQpXRr#tf(tWB@I@+Z}Q3A%=E5&MN#V)cH5AVnJk`DOITV zI)*}+T70*{+D5#WYgRvz`|D7^Q`WFv4;2G+*=*0$rFlsLFO=FIyUI`0_8um9}YHTeIm2>a9OXf+_EzwXk zKWBp)S!sBu{`ytLYIDMP_f^*W?^zK<(a-GE092Na3dg)i)yvZF^C3aDOAD-8qL;Qc z62#PmU?dvvg@UV_x1ryH=gSgSJj}fU^XU&+xzCJ>Y|cZ|IgSr^dbxxw>JbJaG9-Tm z_JaTgd-%EBnaU=&`p=e->$GYUf?)8z!wMKL-cCtH;URqcCPW%@J1(J0%oS;dr>e6F+vi z`PTDiK*2K@Fgw;NeD3s2lGGU}*Jb^M2VrA4Sn`Oqbu9nYY*_14aTCU2O4H9Vc5XhI zVH-hYC{Bj7(nA$nkLjN4{tU@}yYF$2Ox;azD1Ext$wUK{aO41R`pLwN~A+gE$2=N+ZGJ!AV-i8$&fT1+yfdh|6RR8332#4Yb&Eo=ayi@gPHjof0>e$NVii;wQ3Y z5hOAOQjN-2n`K{COWre>@482jl41&_`{O6V_bQrj52P&^XF#Fd-b)qSu29C@Xdhrg$XP}7Irnj4Y;x9> zSwz`%`3Lu{B+qe`#{dd4V@N?9-yC)-;-X|m+Tz6=jBTLhQ3-BYJkL#;7K^(4;-hkr zQ3Ma;W<6{YE?s&ZSBewR8#%o5qxwO2di!d6OPb!<)2LPteBxuDM?A(DaU*Y|Ml0`! zwF^{zJEez2`a^O2N2+ZPu%2sQ%5bOAf_b5!g~b_)7hl00GQ9>GO!Wo8m5yIQ9{ISh z2MdqBKEW(``XrQ|bm2fFk$bsyhr1o5+-@OFA+bDge$XfR&8ja|dMwlUZ#PiNW9|{K z*={WCgmeUw($d2&rJOFd>laumZ^*(^AVx36iQ2ipa~O6%frZ&k&9-qThXNgqJ@+8> zl_P>ePkHZ583;2=u`ol0RjOruPLLc$fJA3lx5&DVIGf%CB*q<^ z{O5dz`D~SLI}a{zeAAJKQJShY`i6xevn+h7Jr;M!>#xL^dT%U^aywSe*|4L_3GzQB z`X6H3M*Q}eamb-by1ThZTeth2u&)RY6E^=+NBzs?Kdq@p_nwBsPaJj__L3oD;m4T6 zJF0hoXW{Ne;%|<6Br}Rk%ghhmBSu#kmEW_RuE!rX#O?TGJtxMr=vKeu2byriesx-`eq2dUF4^H7(_q*X<&z>L0;;1zaW|xbnVoYLKh;R30$BR16 zBHQYDHJh(+h>T8Z&z*C_gBFGNR{cMb9vx}qI2o$YPWn5^RiqYx?PLoDS6Mih!;iop zXkT;xQ8}<|tBlv~e8&;G^1&io+i;2LOCkR7r9cJD-g2GnD=`P{NfLB`asJPFTc_a$z_xx(Q;$w$}t6uiSyVJc#U}^O`5FWeA*;IDlyJ5wgiwVjXNw zKbX`yi9!ePADa7a=xN|49q<6Kf=rBnryTiNK2doDT{=&am9=EnWEzAc+qTOr9@+#Y zKxQtIQm+>O$7lWbeeEkqWC{=^8z^i0^BmxE$~S<|NvJ{BNrD`Aff22nLo3F5DFHpo zLRoyx=U!gf%i=)UK49 z5x{r956Wc5U7U+Q*g#s8yq(ajMD%5|fb)H|KiNlQd!M&uTy`CRSUpr+{CZ{>V$tQaV0!sBuJv zQbum|zZw*^Eyqv!L&<;UeUFT^Du0uJK<%EiGch_OE;G7Cuy%wNlB%`G4$)7m?P2CnnPbYq!t*@S4x@ zgtjey^l)yIrIxGDi`?nq(4d6}Bo^l~lFykoJUI)3kyUd-JfHy`PA%Xj#ZAiq8dG^L z6x20G_KqtotjW;c4e3ycG>N zCUI~~Vz_ZPChhAEHdi}DXhXlI8xrz_e<}55dvK@_a8!uB+uh8Z{;Bab6mdE$teEpa|{bP56 zpE%@!u0aY(Fakm*?@oF7{_k(9AMYa_30uDi2Mx}^W%L`*`JA$e#j>$oy^n54=qXW2 z5fJi3sNj|yj&)yNsUJ}NcmuC|*pXiZ^5|tdF2ietws5M#7|i0dU-}T&KV~qqUd6rf z@s+rf*$t>P9-k%!#dF{iaz+d)K>~*se-^cfl&^dmGsbZf%@rB!{u-lWVni+DW!~L_^MIV$`L`Db zZZjj-V|?5{E({iZVS{%Rr#w*hFOOlM0D^6j-|k5fpuvb%sQ?D_FsT>f%!u9x-HMb+ zCNWpIu6YG?PNmDR#Hk;Inz}#gpbo8H+@Qx;auaORtv+}pCG>-S&MBRDml>doF>k-9 zcgdf_E1>YX<2Vsws4*zI0bOlrB*swrAn@44@EP4~h8q^rP#*t5_2y8Pl7u(uPc`vT zdmQ8urrWFIoX*e+_LfU2zC~V*-zy{FULu6JTbZC7KnqbFC5e92NcP~65rAKn4Y49Z8_eDTW5?1@0E z%@1tFRvJGOdXw?!Pa%~ZbyZpdq8WbsE93i1*+7hmZ zW!UoO;9IQE?sec$TK9-s^DZ8*pZ?;};j=RpYXdVu#0o+FjZ)uNQKI)Fu=tkQeI#3G z%1w8~>v+-m`(h72Fs*de!XcZ+%^cLhcvY?>Xnbt0q{NJZvanaCBNdM6Jiy&T!`hz$ zAc`_Sg(IP-ALM-itU?n)i%g@r=lhwNWk@K~R?5*uPDXLZ8@kHG^+10_l70R>eTI9K z({rh!jh+?>WtLJefv=@RWkcUg5ZtCauE^r09N^HAw;xpOrYnoc*F)S^M(0f~`m6#= zx+P{zjM>DYLvZy19#3x-zDenb4i4{-NeqAKz!@{Y2gX_ztf+t9tC;B3kPT~l!EO8b zfTTV(LgpQg#z!hZp*YFU(un8e^B_H3aYvWd#;3HYH()1*vCtAGrx31DS8Rx3TqqHs zo5p%DP2jn>b6)}QxM2DA89*C7xh#aaPliC1n%uXzaUXGMBpsh}A^7?HD$5rhZn!l0 z4k{kC*yYv44E{WZDIDP;fs4A;KouigNRS&~7(kHcGh4|1PZ~_Th^@`^mxPQcxJJD* ziqdRalEn>C2JJGMbu`pkv$tq4=XBm>;)s;uAuE1n=^K8W^$R_@FN9f^#yi5wp7iT_ zpyVNc>O)V8_^sT>j18k!dan2C9#Nh!=+#1km}yJE6RlZ@#kE=ZfnXZdUhirTE+No0 zPu&J&R9+lJA57wahnrPj1%CZMbIDjX={0aY#BGr_8Dd5T@)#WL6lO$eY(sV_Utz7| z8U1-(khqXPs#;oF9j~RTZs)`z&=YhJ#~F}6x?C^LnGUxMg(J7I@DYsi5+hoa0l`7j z*v$W6ql6e)1~KCr032;bj5swK3!?0yTsoJx8SYcT)&h9@eViEJc1L0hrWG54Kwp%S zjxCn|*z-HvU81$PXOS}p-bgJyQoY)YGYTOHDctcZDH%PEgSw*eRYV2~nBi0y3;`%x zvbAgc$e=jFg9DVJuoK?)v~k_5e{gM55HEXkxd^qKi97I$*S3)AHJCoD&q}~&xPX?g zt?0uVAQwDx;XeS)pD!h~$8f)b@qQzQm2U6<^C>}J%AbG^)ASg)8<~>VzyCe)A3z+k zVD5HeaR-FMpQ>I~3Yq?JG|y+ui0ggaSZF$ZV%%G>unj2$Y8+e91C%fXzBSW=l!(mU zg2;dUUqAQ8dmN%1eM8TtGcjHZHzVc#Lp0jTk%bFG=D2M~6n7a= z`fFrp_{oDoEPlzuSK#Vz55#A4@OU)*#su=;DF1r2_tcN?5kQL`dYq_;khbR@;K(b& zhWmp=ksvXG47gwD&xLmW|2!X#`yTY@lkFF53C-!baXF`8p*yw z*enN2>dxXG)kKb_%7**>&ri(JPaMAgZ)4&BhagAe{+FL@M^}%Az#RSjm-qh5wEpdT z7z7Ox+kY(L-#-1%ivQ(<|J{54-9-Q8y`#0V9j)sB@V$Q-;=g1QHcL0hZ>gAo-S9vd+|sD#c}P9l98pyIq$c`*(JX9aewUi6rY-z|3d1|{y? z3e59-@AEpcv-V@psbvDy9{jhVqj4?^@y12ncqRDE;Z&W3W;2UiRu;p9Lrgs=awB5 z_1mAAekMPQV3rNiuSLfRPgO(-WL`=4|MBk2N8sYPkEp*ltMOW>m|-b^)|Aaa0d*=H zl1EpAS|7RFwbFAZ-rKJ`fi-Ffq6z_9w3;Q3WJJT*J1VDLl=lYwu?N>r9C)86d2sGU zcjMJb)ksMTG}h_B3Cv+E{Kmz>ph)mgV?aQ;xmeO~mM$A2L#h9yb+ztIG`f#HcA%@A`q#%r|B zs^yjI4~l~U9fnL3YzUX;v;AbZ`>nADBZX5-V2W-hBLXxtl*MkCW9h*Ne{Rs|w`B%v z%JKEz8zHPC2iT!tnuhC3q_epexRDESw#7vEq4&-mLa#w5KShQ|9bK~LKP`DsVqWJw z1seFfd$qz&*Q7mYjvr})vt6G;vLoyn(8Hw;H$MeFB_o9; zzr_rz>}^P;uDjGNM6|U=*4dzbTT@LurdlyDD+if`!q?Q zrnc2&Yt=-jlv4z=$9}=Xdauvc!q3pU3(Wl7vF*#zi+HnNf8A3egwH>}SA{)kn@FP} zv!ghdm4czfs>&&~)o$kL=e(NQ+ym^<)dGN^pFz8W6A_n%WnfUnibI4Ht=qcf4;8Z8 z59-LlT$)}E+rUN-ZlVymM?}rg8sJpbLSe{5Wb(}dXAaZZYGxUqa`h81zsQHC9-}3b zQFV3A^#S;A!8k&O_v;w)r%T_&fgb824)D}@yx?l;u5h(gB7zz2d;nVw809CLr8S4f zNdu*jR+EFhWLnX?-v(~iVSj#n^!6IPY!sLjG1Wx}o5L*)RI<92^T`faVm5zK`+*Bk zbgNPedvZ_!1GY~cdzb?CgJRlvUs<=!Z2!#-bwm-*7AwBAw)u9 z#o4zuYU29}<@gxI!%@Faq};l#vRUAa=!UM!O2qJN#R5>LaPA~eKA;WhjMPgA8#C;K zKus?v??P@sktriN?ERUm=HQw&H>dU(aW=6p9ke0Ci;Nr}eOCf{06 z`W5=BhQ3gjR1reXG>u|EOT6&!lmJ=+@bA3cpKE%jy)NXCZ3Kl*tK1s{0(Nc3R{Zu? zHm}VE%j39*Zb?mq_D%rR?EXUqAng&o*|>78=DB}8=1|}zZnvW=TFWP+LdF5BN`4~B z1IMHmsA2Q;-j6AOnK0F3*^CPx5KXrjmecgwmnKDNZ0tIdcMwgLV3{HPI(dj3WEOAuEu+#NDJqhR!57_gus<9eX}- z<_bFOjk&b*)8nV06TO#$6ZdP?C8j1b!5vA82cMd9=r{G?AKmFnsv$_ZP;6h}4W3jk z?mF?K?^v820E`5OVt2vLbi#Qeboq{~8w#`=%=$vjmWCDd5r8%t%uSekq->9^l6^PB z;S|rTZ^a!r>1>u@a1Tu%PK*#rt)B>oqd@$h)u8r?443{~5%QEN+1QLtc z&;ti|>XlI@TuZo{U|a^TXx-$#e|z<|SrPk&k?rd{J+N2xy8|~v_{VGau2d|trl7+Z zh4}Jn$ADcl!7;csj@wNm`@%M^bSW$t8?-4fc;DWAk$X_I$9jYh^}9IMGV)-C863>A z`V=Iwh<043w1=XZ-?$s~NJR^m-p!_j%hvj=u>8Rh<3(TCEJ< z!RNyr(EaFxHpFgyUVDa)SB+b-zG&CSx7@P&-N3xbZ*LJgAZR0frlOpf;#>Y-t6-=2 z4$t3yjs@Ey6ekwB3D$tsAKuH+0^88+)~X4`YuXZim9t>G>jR+coYoT{JPC$4R{b*5 zyv}cbBQN68`3f3vVP6Ifm<88wV*(5wq2T0e!r8~^iCPEA&%$QM-|k7f6fcxxRP-*b zVKJp=g&sG^V?OUIe{!pqinj%?;%qD2$vz(@=i6|`0h~)+3H3)FY8$^W-nYFaHT;C) zB;8D+NId~Qj``jO@2iU2e4ie>7_JS~I9MtpfJmJA;j_k1i2CF5X1_y3gPQ?ql&wOJ z$&~xzA`-YxvAKc$P7<8te23!b(sZa}DgYf<;Ty_=O;cAvpxgA_eXWv$ZvQLKEIrK3mdKyQKXje=spAr z97BTTt0uuT>j-Om)D*(d0=7gNAWpVEP*Rf&k0TwrGq(vI7CnLf%Na>tuSkK`p?@)6 zx`!@?(!K0`a+{*Q;-hZYM?geLufihlamcv7?C&lYTA~otkP7`d)AK9|f9^dHy2OEt z@!+FGwk^T4e&iOJOV>Jk73Xk?`d;H*_HY20e!iuGnk2d$ABi#msUgbbH){m++2m>7 z@?7t(YZmRlL7P|o=fh1zi=+zMB`Yg&>f&up%?X+HuMPjKM|lWZqx6hpy{iv4JEFGC zS(!2tT|P9)YF+@^sC6#{n+=Au{z)9Xl=}eFO#XbX)FNAD#aT4V|9l>60i%`nZqjWG zPfBh+;KySe0?CEfS+%5E?XJg4lOS(kZc#Ohvcr9yWw<~F=br%%uZ zWH$$Gov85Pr1d;M_%$6!8*UKnUkNhDHID;ush?~@$n=wCxarrI{Cy@IPa~h05$dNS zOZ)4+v~R&XM`#`b@NSZrS&w*1o4jd(Xn`~bM*gw^`=T#&sfuNe+|3Zf0x~q38 z&u{X7I+NrrFjOMdIL?~Vcqila-Bm0lh@pA}z#J#bSh3{~K<;@D(*x z^iA+=un=LKK#&wkRevo>Mlop4_CRUQ1u>{Aa3NE zWaC}lMq>)5=`b8?YNZ9stmC(ABSYDr;L`YDZII;@$}0NzfgRyQKo$hET|0^uSv-vW2&^;}v>bMv zC{zV)jSV#?pd_bKTe$vm4-*y@ygYg!3(hn8w-m1~o(u1MEp?uN4J?2q&|o;}Ts&lja3eyYzP#F9UUiwBZ*iAa@6b}^pTH;Hi~!dQ zui}wpgih=IVFU*-UiIDNnJm|90{aOTJ*b8s^z>Ae)`TQRG*x) zv-4?>kpeQBsb0dbISB$dex_RpbY5v|X*7y;=6qiDsk)snkGW1;FjJls9vIx<=@P)W z0#gU6!sYe7Ppbt$;JBol;cP^YY>$<#|B*%d9D|tMgVkS$>j%4hOObmtJ6IGX4==Fs z793z-PPPo>jTseKe7wrV#I|sFmD9Z3q{v3?F^(5E+4WAR^mx!^EP(STSmgy*ygkNn zYZNPA!C3nCd!D(h*Va-xP8ZAc1QAx%%co05>YN{TFH7|z`eZ1h&3c4d$NeuyHPCkU_7Tth@%1H z#l7l!xR2WV;KHNq%SPQ*!XctVCSt`qfBKVQwP%3}%rA!DBjV99NlkWn1_b?pcgV47JX9Dx^7ETF$V({&ZX)p?$^W|p)Xb$j%%k0i_wA??~@DGNlg)Rd8m)$_>wP|>@#%g_2f$iW9 z9_CL;8&|?hHzduYVGY>j`0uPdp^wNdw|Z30^-gS=ZgA#E>I2)?_ut`mJH?0DYxa#6 zL}yGk-v`YZtb^xOFQ8B2bR8NOG{iOD%*rX%#zE|5GSHkW&#JJ%95dPoc~U_E8#7ZT8hq$DRV&Gh%m9-mL4!Ct5c++MjaJqMy+@9h%pUEXkscUVAT*D7DIgCQpr< z+tDL&pxs>79zLi88-*$#`Xn=)-0o~6k;lO!3wVr|G#L;!Q1j6cTWJLcQ2nl|_{hpt zVA1oIvtK_xi);v&J@hoiQRHCC^0^8%?TI$CT@MhQ;|(#wlDo6v?pW6wK*z7kzXEX( zC(ibQ`jplz;=WLhlbO`ulXUd-P5G9Nhh4{Tb7R!x_ulBA)q26oKwG0^Jlo;NsV~=*kB( zg{Tfguw_GqV%3Z9kz4o1pN_sDdx-756?-56eeZOJ2qO=c6+b+o>^(w>5}XMB;$(Z{ zQ;pakU~8#-4-6#HchjgX+-Y+`!WnzuFL1B{1oiaRh=}lDL8;T2`q7^Doj{6}XZNwR zTy!ZEAk{oyU&3_~V2M|qHuv}2_}N4|rulIPJ=T_7FdKkFKimptJXuuo5$g z%;%O5u`?!?g{Fwd=mvx^jetJU4OSTzM?my_EP#<77q=P3*v{lsO#{tk#NH$GnHtG2 z-ufNv0?4AS3+(hQVf%4Z?dHxO`nGWI#^7H^Z!7jxVSyP5y@3~i?%<*Wxut5M#R4}J z7k;z6k1e!ZW%d|(zAymsDcAwq0qJgTp|jeASYYYW?RU2yLs z77M<#>y_j`_t*UA*ok3>%IFywxP`*)LuS%cy5co4hGnBz948-Ky%iCdv#1_t&rqLJ z_T!a3rE#hKNodKrnU9Z${2T)wsy-c5BUrcJ6Ns1nXkpwREI8NQed_i`r{>rDZ&e|+ z+v6eD^B2IPLnXxq%6i2y4B%yxH9QTd&sDdF-JY1=yfy%YtC_znZItjUwD+NshDQ$# zAZG0aBgBP)1r*+u7b%e84-zT)r( z1Ts~C*TG^F)B4sJXfV!0cQUy4{=e$JJg&yCefKF6B}I~<38{!8G*5^$C@OQ4lu$%b zO2Z~p(x8MCrP5$16_F-GG@!xIJgE$6PPH5NbFQ`h-gDmb{)Y2Af1E##&*$5B?`J>5 zde*wvz3$<<3*f#Ne9?jnV7rDXZl|Gc}f7oN1YN`G>m zoIGAI8Jv(qP2(4vyYv3YjzxIF+}5Cq<$IoQr>H)Qg^G^zu|{rl^~8*qffN!?c;{{l z(dBL&*i}24pBwh@MpLXVx#F9o!UF(z{$k5n=+?{H{b=9%+J1{umCF`=X97T%6E^Dx z+!sztM*Hji?>d29W=g`o}&3SzFb>`Q2$|d%SM5FkrWOS$FJXymmnxK64YN zQ_^S0?ueM-EWWF7rl+9x%Iu@1J~%Gz`< zV5v?5(6?)>-KIW)KEDeH{39A?uFL|w#xd|0 zl%Yh!g!l~C`;V?XNPVH2l%E8owtCZ~uh2eF z2gTiHuQk3G&-i)gs>;)G`YDEQWrrNYdy;K=Z!K$mYY;YHcXA8{-s@8&{(jAkhFftf zdZOtLT*{l8ULF}wwK^o(i}akC)I2D4dQ2WtWI*wjad1D8Q=yv`YWo|pjSj&K{p@18 z)!G#pWDP?PU2!Q>srQ=+xzLBHe63KK>>epauKb7yLbzx>U`Nh9U9^t};N<8r*!T91 zPrvTcJd7UO$gOQu3%H-5)b{OlS;wNVegds?U6>9U>vobi!eY~vSw3)J%2ZfT#jAoA z@!|~>YziOS7G*isW;|z&X|=y)szP_2VT}rh-42A7N#!Me=n7bNK9XyKaknbljQ}Wa zC&9FIL>#aPg0`?ejq^9JeD3PnY?v`yW{N1k^qYmtc)jwWh416?qJOq2eGm%HJmtT>GuiS9v}JZ2L^LfM?|I^u61?`pP^IA zT!GD2S7K2j?ps>XYV2h;(rG1b;2IpPF+86=&aXA7tFoe0lw(G~46d+KAJ!DK-bs!&BkkLMy<6!uAp`E$G*{?E9xnO1+e`=_3^fv62Obs3-LvK@a>J?SSTly zi6|8zLOoHui>!qIR9CuOMY^$(CU74O=9Mc?nlsi)ZwbklukD9V$~G|>h|WDolUjTI zwrkyTq(5y;7B_H&mc!PZjo$aa=2m2?xzq~gH7xv8epx6_&p)NIX_7;}H3)Dzn4HTc z46*sEV|_B(qBPXHZ}&TmAz*=2)Y))RE5NTezrUU{UV)|+OTWL7<`2ZIMr6N;i=llu zPx~Y6wYnKOh^37d{j$6^OxgiCU^_r86mn-1-(Th6?=LAOSMDL9Kr*(s%%%gd9QAJr zyg(=!(|l1n$8(~;=p%j}}!Vv7`lg+k=qaT?RyM=2kZ*J#hX`^MkZ} z$UlP&l>p4tVrfE(GHL6mjQ7*K2pqpA@*2mFPy#bxz9HDirBMWXJQ(l2-lT`~aD7$~ z|60=hKnSkY3z9xN+Zv{U;Yy^&5OBNq;#XYYHs^rOw1UMD(s@nOslH=huTd+SfFBQU zxM`$v&&k9|IeBGUk(P*4ZvUl?jI@lu4$7}Wj*6<`4Qz5 z0KKbL(od3+mB=ETX$_FxriccZ-^iQN0;vnKaNG7%$b+aO;P^hN&D!I`J8z}Tq)pqt z7pIQ=qGZ%-t66rvtMtAimUuL*;M=7|$FGDN_e6C?^NXtLP}GH`K$JQ2Ywxoln9Sv) z8y zP4U7kM)A)^8j&Kb;|B71A0&(1+&F*?vd6+(v)XAYg;h=1((~lemHVE^q^yCn`(V(| z5$U%^8ZxL0{fpR5iH?sSdye)&Djn`&lMiz4s5Cn{3$ketw z>ME9JzBx&$@;u{>1+?K;Lw0xo{89n;6SJ*XJiF>+ieQIL=c7e8ts(YiS**$O06?XQ zuOauMMl#KJzf;~S$P>bU<4g{;vDo(@wLCvF8!hc`rYD=F<|msWgs?I@`iVn=$P%n9 z83C5uvb!Go6G?uEntkAw~&I=k&7Tr!i z@$I#3k&om{3w+i=U_ODoana3_=?y@VZlVv_MTX*T#26@Rk z6kkujp>uuR%-R7n!z^yQ<#wm&-f?yQweJ*G*=P55dKXxwt^F!_yP4^BdvFrOUN;zv z{vtjzB}%wG?0UDJk)^g*y}P2aCS6ds_TA}*=lzP=*H}?eUrKTw#)pXQ7|^%G!rq?D zuQjpy(1$as**-P4tc~8^BW@I7(@Uq!a|-FThoUyeXyys#` zSVU&n4GTE50hU(7C*nvZWy_{BeAauF`wJ@rj_+xll(%4lQ}{ZG3RWON4hiRpyfP>N z!@-4_Za=5Z5;>f?ICt9Pbx%Qb#BfK{3~h^acEj{5-lE$v?J!76-Zs^{F@NVPI^GOo z4=fmmmkQJRFYgLS)k!zW>bx&y7?^^_GK)wYXNj8gqYf4p7XSU9y&&*W^wH^ zj)vLTUC?-NA;OCDu)>_4sP>t>!N(o9u7}0^mA>Dm+6_@F!acE$e_zZcEXl0AOp@JK zby;OnL>2EOq#wQMp{KS*DF%T~=VD{rIjyw3CS6*}!%I-w(lPvf#U_4@xzLYQQqQb`g zH@nsyFPv^lVsXy9hRs@Ydh>H6sytqDj2HEKyIt7ET~#_mIy$uG=_4$HE=+n!l=&<% z_x8#&Aj{!)aQY+JHvM}k!{^EEPmM3OAdDW2oluJs$>==%)<}0r?l5U|exESX9&T*@ z>w7!ciN=GqYDFS0PqvY6elTz4p6$-6C+{NQ|5~TuHScQ&Dt_?I8`C*CSx)(TXCsXn z8JH`AeRRXufFoO&>Qo%M7=a6oMSKXF?+z08Iq<6C+k3HTX8`2p;b45t0RDpb*mH7V zk>*x5(mW?%EbD|pGC);{nu)8N&+xRI;}%_VA)h zIrO!xq?kLAzm_w6XDzhlq2P+jEmAt}>B($#<9hl79*6SSP<{1}O=qS`cz@$t(p~q| zplb}aWZj+&+W_9&^U>}<_6At&hh}f9Iq2gQz5yW4`ehVkn znj}q!7lDa(&J<5{xx@ZF0PzCfz=t1Kkh?9gkS}Aw5D4BjCMJGlZ=h_#S!GzW1fTG!0X%%vwnGica<>S z)WP<{O+j=roU1rVFvUOK9m`Qd*b%7La4#t zUuE|_IefKd$c~@2A0*&F)uL#(Ca$aP%NdA4mr3~osSUEgqsu$ujbwh2%&ZnRNNiFb z`xS34aA5}H)T^nY($T9|q<4-ZfV?)1l~cxb+ZRA`VW^`UkST2czJ?275Q!Vud(waq zB7{6ei8kxWw%3Q_^K$cso7C1Uc#hIzJv10H^RRH8*zhwMp$PfxAnhGHe!P4ASGaD# z@V9>lm;rD8EKxPrD@eMldki;N-7P@9eC9W*j#~ z5k_Lb2=BqL<{i0GN5NWDQSK~mEaIClj%ZDebuR**>ddL%Pj1@?0QY^f-4~szd_4R6JYnbdqPgH3 zFqgS{<(=)dV~cmH+SspyHnkacJpDc-zU0<;+J2%xBnb(%^>Z(*<`A$nz5YhZC|4$b za(KV6^G(iTF6leUb?mOUBbMQ3V>*1}MAWx8{6PpOzgz4lA_7qUE`irm898+J$WJDG z)1D<|OR<;r<>jV5MqOjD>KCBYz|%?zsGr*QlJK^aq(s@mg4)CJK?;7$?#%w2q!sCY z>5LQCVneF^2FH|HSKb9J(shO<(ADE3_M+wd$$n^Kyan8yCne-Ajqn154X&S&eObO7 zdrKn>DkJ7Kc(ulhDaNz$CROYO(@t-qk*;@gV`_ZRe)b?9$Dz$-0R zDDSzQEKm@KJp)gET)(>r%2vQ4rzcJVvedBtaK%fKn?G|sy0}D1$E=y$wQEiDH>N1_P3oiCZCHQ_(X&A_(ekI5S{vlD z+cR{ydkz+yb3QFvjcN3$3glt5+Q9k1&u`5tk zK)>X{)XbmLY^Awwt(V;;BD2{~Om$_Y8(pr}>lr1Y7tQ&6U8N}nSWVcrOBeLkA2D&9 z$2aHx^XJNIXY^TrK@Mt7>C2=T?^`Nr)~>mIuLJvA1LfZ}Wc%#ArVby^)TaKJ+K)+9 zEZ%~EA_Ph{O#1Y{{V6zZ{}rB(7&OplVatuTPkpMgk>bBiH zvBRbs7?G3EE}HBWFMkxWq!3PVzk7W#aPAbD-AK5Zn;||QHr_?6C}uNYHLZ%Q&i6)N z1c|tN&J{Yc7%N2kZTRWyK%}Ne`rd@#Izj}zd~OQ2q^lR==!ZWh)sAj$t=`*`4?2_OQZjp?Ve)6)tJqZ6mMulP ze}0ySu(*Fv^>^$Ofca0&F|GP)4|MPN2`=yOToz)@GcJ=HT-v!~7QxR-|#@{_t zLch0%PAwRy_#)8E$_+x*#xB9c29)#FLPYTq5I#onIP5kq+~)DeCs`N zNmK^MUylQ_oaY} zwy0zY+;!2jU6ry(F~rY*>2s=dd6J~-v1ZTAC0OK(r84Ufo|+BJA;#bmzt%d;(}QGi zB}*{r=8gB%YoP|lw6~OZCBg6BR&#@~iX$(G`5Sa7=&$)(55+FLbc@Il@<<&{<2=ow zFItD1=(C>4hi%-zh*9oHSQB7T4_rnoFfC6?9;Vl3#)QCpz?#0vZ`OLYaHRCW&qDGh z&4q&@UZTltMt~DtjK$(4Gv=vlnaWQo*JGHXfiMNDh&{6PKJsvOmiEg&X#y%$7JRkX}k8%`L3 zXDT$cRBuH@X?A&vZb)Ms%$0yg?pdSszy9{23_sIo zMTT|PO#h8u!&+DXwE*!8>-X_Dxq0U-qA>8BFkf|`)7kQofXXqGY%pua1crR>)FlPwR56Q7 ztHjR>MOU7;^GR>tg-py`x5o7l`g(^njcptZ(DF{zZsJsPYg!D4c%NI9!~k<916fv5 z;ze+O8?QXPTKgv@qHRUeZafm5a85Ib0m;({!@X_rbGg5q#fx_^`w}EV?eCkV%z?4t z2s`M+wfr$Fs^dgpK z`cp4xrq-sjNiT|Jl)w?zYk)(IX9IX%ncC@#(qDn{W1z98TRwuBiU zD!;gCUcmV%5H+KO{@40Qd239cuYSf~cZ!4`DX|96IGJr?iF;OT5fth#ZGdvsL~p`6 zjyFx}{`-Vl5Nze$*I74vjYnK*ml|E5SIiB9`X1Oxvgw^_<6SO}3PL{!IL+?;b$!cf462gS3>8g|r3!OSrxEa~Mu-&Rp}1kZ_l>l?xS}YDFs2{YmS>c-UvZ>D;hz3OjCE3?TW)I?Io(DKSQifMx{B1ZeU63k3Y}w;v#RlIw`-{3Z#NG07 zt^`c26=sWG*BJcq*_hkum9X|vH3jYiz+QE_$T-Bg{4}aWXb73cOT-soRYP$J`ErY2 zt5F^Pm99%H6t2xi_f78Ut1}xO5?5*onOSjwCCMd{M2mpX*mG^vw2OlrMgE*yuLIY9 zj@o%W7G}gYaOxf!`h>tQeT!91Fk;0{eOo?p1f@`T?3RnKd#4KfNy0Gf8Lv_y@AC{-E z;MGo33Kf|A;dDwnd%-}Gb60o5iz+TE-D9_m+M_|HVo4Fon)nR3)NbO+Jf{uF=#TM5 zx|o3RP&SbvW6PRviAjjtrTt`0j$=yjtM|qJh{^2(*!^8$fbiSVpD{OzhwOZVh;s`_ zXT2koL3=(7sDk#kNc%gZZ+#B61u4n7UqU=+$iT>z3`xneW*<+w&1}WJ*oW6M^2cNN zvcf#6+H1>A&2`#?AcT)3x67^2|FHmQjRpFb`k)=qrx+&u;~;+|$e(}yh&f784DyGt zkMNI^{LvwM6LF1&5MoI3;Vlvr}olB9* zB9s8vY7PnVfeK;&{io>_D#(5fa>n*N0C4axY-Rnp8lhTJag-E=o8Fs)&!N_}O$E+y z7tKf;!^9}8r2E-){z?w*?qu_vEL|L@BuX;!3f8heeai@;)uxb-Jd3GhD=YGe`Zk;V zl^CE`{hha4GZ0Hoyo@ktC<;(O$0x#jzV5kyFpbp8pq89$qqU||faXSC##e30KYSFv z!-&~IZnQPF_bjWlmOk=Hhn!964SJPZjrx3MB(5N>yjnPek;r~o2_6SdZ5+X|mbH`# zZ8-Jv=TdS?$pC9S&_pYjOX2~NfA`6u83U*-Q(2(J?mC^gJ2bt6+FszT5rMI1Y;F2O z_fIZn>>c_|ss*6rjwZ)ruqyr*k_eNcZoM;>qL8~@%RYVTXtia*fR;2>cYh|%mMkt9 z9@A3iBoMDJTNWKlP{qMes#Z*^zLS=uR&$YCUMh!k zcaaBe(3W)KjLrDl+wS|GjPzggS>Zhp{PIx8%m}ofp&p@suQiW3FVVYyCgULr!s^_^ zT_r*$&7G_UWA3mAU`bjGO<$y}dD&Ow&Z4~Q>UXo4G+7rP%*E;L=`o$%ru~`HTv>)- zDD#jiktohFg=+gL#!-B<@kP*O(iAa#8Y*Yen;)nVIiz$fgK1iydi?iS%W0HW^XJ`) z>`B9=%CX(tJh~16)4v5pwj$&fk5x0}>n!Ruc_!io$DVbM1Zpt@IbI@akmihIp}O9W zZlsC)9mT~Q+CTTS&0x$DRZSp*=|N8523A3klsi2dG==dHQMMEba<6l6y;#4?g&)0_ zpN8+wo1PudnfP74n>9pP3kyN&86t!{MZhp7=~;plAcQGcY|WOTwGsn=`U<}C{G(Yz zo%Aj>YR_#SGUNh6XFy}lcaPb3+ov)yDr;*R>RO;YD595+C{02_l_{t1P{nnJqJ~!x zk-i$^M(?rT8mlJ>)U`)njT4)>R|7&a4MS=(J}6fOHf-j#`RI6m_^Z<6bpV zmXvnz-f-RFz+Fsna3({Dz-qTQkI)ObDB$;Y?IrhnGli;_q54SOFRDElEU+{rR7O0P7?Cu_<*&FnOn2!0 zO5|zCh-qJ}2Vbpfq&lH$P&gNs?lfpEnFz7* zP?JgKJ^gV($4Z+&gG$Yw2b1uF^(xerUIiF?w@G(xp#FGxSGALs8c`#iU-mO)hkWc) zxGBVuKNzv^uiW+cTedhwYDuIJm*pAz7K6z1{^%c@mlDlS#o6+_l;yz5*2nNt{tBba z>v|M{PMIN1*|iYoKRo9s-w2c0tlfYLUGLo9?@9*QIpKy}CS?u2&|f8%KITSe=ACNd zq7INbKshJ+$$h3?vZuMu#pX%*Ka_+a9s}OhV40m5g&ZDaFu5X!{yvAgu$)|y+;=D2 zoRcyopZiR6x<1`A?_u58PYEQFBQ4TkUL`n>=asIailr9T+7co5|5bVL86gUrd>u?6w1L%!42j7`ig5zh_Dn)@KRi}QMbo3GY%u{#QPi$Z6 zN1toVsV|vXO)o6QAYGYl_-Sr5pJI)KrMunnY-ZbLq4XN!E}bOTm~0*@Ou4-81Qbjn zf)>ZrAi>(NFp2HdN88(kJ_QQz{1Qhu)8oFkA&IfEX14O?2RO8m=FXjmWtMUNYWKO! zyc3%zSt*yzbE}aEAw>x;UnW(Pm%FQ3zS>4z_G?ia{&!Bn`S@6!w zXoSQ`)TI-H2aw#y%8?Pi3^u-f&Jz5vHGx-7SxZ_oBzigpo`|0r&6+e9!Vi-AS=Ei+ z<7Fyqykbi4y>`t0Ue$rJ=g&9dx8k#;C>Sv85z!qvfv?8}FjBE!ZoB`8asK_MB!y~W zOc^$|+p^T07y#{0#WY+4^O!wRrl!mkbJ$J!9P@Lc_=|aK#avqpXQ+&ies`oQpb4%$BT^J9pP}IxrTECj^^;~qCzl9< zlOD(cSm=?qJ|tkh<2lEijhHnm;uH#U>vmYUO&$Xn^otPYjdocIxRB}-eVZz=Mo0Ig z2Ri440t&Phc0~0qmXVAnl8#!-DI8Fx7YT%XFvT_lJucZ*s|6uHB?j^H1iZ&q{9{1?sX9d|y z@Mbcn$=XYL%)MDlc-euq8RgalkG>O&rFKf)i8p+I#Dpx9q7L}3;$lIJTNdLQ6**gNU=iv;17 zds<2{MAlE&J2kC5ROYFAHP3m6iBdN>-TnwPyzsy?_pGWF8vuF_(cw9ZC`TmjQV>~E zL`nZ2D=v5r}|dt!?-9*nH`6_kL*plGe*blPP>zmkd~P&py&b`LJClqX4ZL?EX<5{g$$E zkHh^?#o-oTzeEzF+^vkeS0Y{Y;jWL;JVUGK6;Jq@kTLlTl2$Z8!j$$OtL+*m?+YmH zBP-bU=c=dcve5ss;`3#BZS|2)+l1%BQgo+fhOs6aZ6D zm@ZG_`#pXXzi&+*8|t*bMVC}QKHz(eie-?Fj<`LQfPK<1W{eApGzp;zd91o@K5I7K zN59eY&o-iL7*i2_b=CV*fC2_dW}B!!UsSxkM=%kG8=j}z;EeWcMOxM$#jF@NO zsU{-Kp8DY+$48<+BnF0d^!~Wo-JPLv=jerMiY2Yq{bgC6^(#&yy8fOXg*m4I&s^%! zxSHc}9V(|?Ewv<_dYHvU&A5?w0$l1e;_Y1R{Q2T(^#m_f^>LDEysi6rTQD)VL*p|v z_Gh`7&fs{dngc_|6zTUwa=waG{R6wRiV*_TwOa^YD}GID&Szh+G(%%w)^5{)zIlv{ z6JR+cV5me$TavYU+H`*dej5Lhj$7-u7SSxUx=AjkMclw}ZDP9SEWT{4Vn zQX+gaDA0rHoQ%s@!p0MUNZd>sAv2}^cs;NpKaWp3oZ;2J_}RqCrVFX>XwRbY2tyQSFu>Tq*@9(loscU`-^1;NPN_D7y7=7&gaYs5_b z!r_m&<69)=LytETk!Z0(5n1Kqx&32@KPLvU%&1V2@m?Qm515$j5yE_` zehzUPy!UM;qcFQIxZY%`u9($;DijD~50&K#CI&`6I%QRb@K8KOcl~A=)8FMoWMD0B7XWrPhLnvNyvqqv$NN>`p8yrU z^^91O0Z++F2%4A>u-l(~acw<-Uy)*KY;) zux^A$Ye11HtXVR~+BPCUx}zq5@A8j6H>s8+Olf5ekHHz~r#eiCm<)V^cR5#3+Q>iE z!mZNf(hSObL;0Pv36^KOzoNINkd7=?Ll$&C(q?)`Fy_>QUZlNm7*0X0Uu}#yBf5(0 zpPOK$T>Va;EBywb2TIYN)7BjkTD2C zj$I;$Q9!}O_u1r)O278xFpC?8v}A$!iH(^{ZMQ_Mykrp7muDmWyBqFxtl`t6Pu&3o z^0^{s;aa83LnX_g48DGh59|2|0^&q6WOhP@A3zOY1!OuN`pl(5Wy{q6JRC$JUU6*e zLQ1Gx--du`AjA0>fK9={AWq7;5_MxgBO4QlH0^!#|I2+HfI&@s>%+1 z+qWb@PM_QaHh{?bgL?>mgZt-m1u`GM8&7f~aKyope&Khh7@0_JQw}QLs@9RVkU$U# zEka}{iDt})DIG}p2#~U~#4kE;lb={z!6r&uSsD$TlL+5#jps<;hv#(9m@2j!3Boov ziAjdpY9wd6=dtx&@&pw!xv-Q7bBjFoA^!B33Qmn7olEM7emM1V5~O|;(r}YqP&ml7 zx+V5EE2+A6CHvu7?S)G@Np_8pr$(@b%*Cv$Li9c&4mDbqZ7bM4vKaeRfQK*?xw<74 zzUOWt6}vtoA0jk4&I|-ev*W7(6>9aPJSHX|Q?eBcXaGrMqq|$0iCO`wHl_x8ieP{{ zDse82V#yt0x>HdiZXc@WnBz>DJuu+>?`WL8-q79q$2Ow=ip!kpB|ZX}4G+Nw&7_kS{Q$=!jmFTN2zu6C*>v3-_LR)-Tx)p=vf zn}-2@;;i@lA-pTipKry(ix(iJd1Ku~Z3yx+6;_KW#-{;H%S8J!PpJ%XXomH~zQ`uo z57f*VuR(^*K$EOH##l&7-vHI~35ZM+TP-B!+a@r``d`6R*rQO@oPN;Hu&sHqs#{M2 zDn?M*Ed}&=0WB|ZW{oAdf9!7Oq8MMZhN||H0!|S}M%1panpD!%2A4LDRJ1*R&iyJMH{fRlZ7``q zQ1T6uD5*z^bRkngN?Yilx?JWq?;l@1)jEB#*v%%j$UXX7`EB}J-}b-a4s62;L3aZ& zkhm3U&Dxhwkt9>>H5X3y9eZ<$p71_-GTj^0>c>4qG|I$OpP%aZ^x>PY0o_|qPxdp# zQS^N$umVc}I;dI%IUA-YZUO_Dt=WT?=?L?lRbGdj)+D~xzPohFV9P2jEd)gge< z(Z5K7FERwm3TD{Y{5`y=`t53dE8EDa3tda;Z8p+L-DrLOh|5|9Bt67ADRD7Bk*Q)! z@c#f2PBC$@KoLspoCqb#5c9|Jh5WPT_=!vx6I!yz%3z_$LSGSH(Rpi2lkWJ;UY{f+ zdQN1f#EiQxi}tC`@Ta#6h%?CdxDyJ`3s$|^{c5%-Lxhi<9{(Wo)_LmbQ9g14?zPua zQ%gcvR!tZ;;33Ztn!8ABzL2Odo_kJgiin6PuB6Zu(x3n|L!8}Ae53w9Z156sKe4Ie zOQ;3E|4$W`$|xpA;yQ(-zPlCjJiN&Ir5VeaIbw< z+8dTESf#!IH{c=95S}M0zED`)mpofyikO%UL z9FQ-YPVN0pvuO4|7X5uMwU_?KSM~?|I`Q{c@^^y%pC|u4$ogL=|Kq^l|NlSx`)_Ui V$Nm4M0eFRfY45+j&%eI!{{VuxWeWfR diff --git a/frontends/desktop/src-tauri/icons/icon.ico b/frontends/desktop/src-tauri/icons/icon.ico deleted file mode 100644 index f52ee357bd75fa20934f40d5c02457b90ecb8072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19298 zcmcG$cT`hf7%g}Mp-XQfN-t6r1Ob(%AEkLT

_ug~9Z-0C5?_41W2GK(zA`tizflTQj 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 Wl1=jW&%w!q(A6=#QlNb=`2PT2Yh@Pz diff --git a/frontends/desktop/src-tauri/permissions/bridge-commands.toml b/frontends/desktop/src-tauri/permissions/bridge-commands.toml deleted file mode 100644 index b606b2b5..00000000 --- a/frontends/desktop/src-tauri/permissions/bridge-commands.toml +++ /dev/null @@ -1,94 +0,0 @@ -[[permission]] -identifier = "allow-start-bridge" -description = "Spawn bridge from the services panel when bridge was stopped." -commands.allow = ["start_bridge"] - -[[permission]] -identifier = "allow-start-bridge-with-config" -description = "Spawn bridge from setup with explicit python/project paths." -commands.allow = ["start_bridge_with_config"] - -[[permission]] -identifier = "allow-retry-bootstrap" -description = "Retry the unified desktop bootstrap with validated Python and project paths." -commands.allow = ["retry_bootstrap"] - -[[permission]] -identifier = "allow-get-bootstrap-snapshot" -description = "Read the current desktop bootstrap state and filtered diagnostics." -commands.allow = ["get_bootstrap_snapshot"] - -[[permission]] -identifier = "allow-get-config" -description = "Read saved bridge spawn configuration." -commands.allow = ["get_config"] - -[[permission]] -identifier = "allow-discover-python-for-project" -description = "Discover a usable Python environment for a selected application folder." -commands.allow = ["discover_python_for_project"] - -[[permission]] -identifier = "allow-export-mykey" -description = "Save mykey.py via native file dialog." -commands.allow = ["export_mykey"] - -[[permission]] -identifier = "allow-pick-directory" -description = "Pick a local application, data, or repository directory via a native folder dialog." -commands.allow = ["pick_directory"] - -[[permission]] -identifier = "allow-pick-python-interpreter" -description = "Pick a Python environment through a native file dialog." -commands.allow = ["pick_python_interpreter"] - -[[permission]] -identifier = "allow-pick-data-backup-file" -description = "Pick a desktop data backup ZIP via a native file dialog." -commands.allow = ["pick_data_backup_file"] - -[[permission]] -identifier = "allow-pick-data-export-path" -description = "Choose the destination for a desktop data backup ZIP." -commands.allow = ["pick_data_export_path"] - -[[permission]] -identifier = "allow-reveal-in-file-manager" -description = "Reveal a completed local export in the system file manager." -commands.allow = ["reveal_in_file_manager"] - -[[permission]] -identifier = "allow-get-ga-source" -description = "Read the user-set external GenericAgent source directory." -commands.allow = ["get_ga_source"] - -[[permission]] -identifier = "allow-validate-ga-source" -description = "Validate a local repository without persisting or reconnecting." -commands.allow = ["validate_ga_source"] - -[[permission]] -identifier = "allow-set-ga-source" -description = "Point the desktop shell at an external GenericAgent source and restart the bridge." -commands.allow = ["set_ga_source"] - -[[permission]] -identifier = "allow-clear-ga-source" -description = "Clear the external GA source override and fall back to the bundled runtime." -commands.allow = ["clear_ga_source"] - -[[permission]] -identifier = "allow-get-macos-titlebar-metrics" -description = "Read native macOS traffic-light geometry for the main window." -commands.allow = ["get_macos_titlebar_metrics"] - -[[permission]] -identifier = "allow-shortcut-should-ask" -description = "Check whether to show the first-run desktop-shortcut prompt." -commands.allow = ["shortcut_should_ask"] - -[[permission]] -identifier = "allow-shortcut-decide" -description = "Persist the user's desktop-shortcut choice and create it if enabled." -commands.allow = ["shortcut_decide"] diff --git a/frontends/desktop/src-tauri/src/lib.rs b/frontends/desktop/src-tauri/src/lib.rs deleted file mode 100644 index 4752817f..00000000 --- a/frontends/desktop/src-tauri/src/lib.rs +++ /dev/null @@ -1,3792 +0,0 @@ -use serde::{Deserialize, Serialize}; -use std::collections::VecDeque; -use std::fs::OpenOptions; -use std::io::{BufRead, BufReader, Write}; -use std::net::{SocketAddr, TcpStream, ToSocketAddrs}; -use std::path::{Path, PathBuf}; -use std::process::{Child, Command, Stdio}; -use std::sync::{LazyLock, Mutex}; -use std::thread; -use std::time::{Duration, Instant}; -use tauri::{Emitter, Manager}; - -#[cfg(windows)] -use std::os::windows::process::CommandExt; - -#[cfg(windows)] -use tauri::menu::{MenuBuilder, MenuItemBuilder}; -#[cfg(windows)] -use tauri::tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}; - -static BRIDGE_PROCESS: Mutex> = Mutex::new(None); -static BRIDGE_LOG_READERS: Mutex>> = Mutex::new(Vec::new()); -static SETTINGS_WRITE_LOCK: Mutex<()> = Mutex::new(()); - -#[derive(Clone, Debug, PartialEq)] -struct BridgeEndpoint { - host: String, - port: u16, -} - -impl BridgeEndpoint { - fn socket_addr(&self) -> String { - format!("{}:{}", self.host, self.port) - } - - fn tcp_addr(&self) -> Option { - (self.host.as_str(), self.port) - .to_socket_addrs() - .ok()? - .find(|addr| addr.ip().is_loopback()) - } -} - -fn bridge_endpoint_from_values( - host: Option<&str>, - port: Option<&str>, -) -> Result { - let host = host.unwrap_or("127.0.0.1").trim(); - if host != "127.0.0.1" && host != "localhost" && host != "::1" { - return Err("BRIDGE_HOST must be loopback".to_string()); - } - let port = port - .unwrap_or("14168") - .parse::() - .map_err(|_| "BRIDGE_PORT must be between 1 and 65535".to_string())?; - if port == 0 { - return Err("BRIDGE_PORT must be between 1 and 65535".to_string()); - } - Ok(BridgeEndpoint { - host: host.to_string(), - port, - }) -} - -fn bridge_endpoint() -> BridgeEndpoint { - bridge_endpoint_from_values( - std::env::var("BRIDGE_HOST").ok().as_deref(), - std::env::var("BRIDGE_PORT").ok().as_deref(), - ) - .unwrap_or(BridgeEndpoint { - host: "127.0.0.1".to_string(), - port: 14168, - }) -} - -const MAX_DIAGNOSTIC_LINES: usize = 100; -const MAX_DIAGNOSTIC_LINE_BYTES: usize = 2 * 1024; - -fn sanitize_diagnostic_line(line: &str) -> String { - let lower = line.to_ascii_lowercase(); - const SENSITIVE_MARKERS: [&str; 12] = [ - "apikey", - "api_key", - "authorization", - "bearer", - "secret", - "token", - "mykey", - "[session]", - "[turn]", - "memory", - "conversation", - "llm_history", - ]; - if SENSITIVE_MARKERS - .iter() - .any(|marker| lower.contains(marker)) - { - return "[redacted sensitive diagnostic line]".to_string(); - } - - let mut end = line.len().min(MAX_DIAGNOSTIC_LINE_BYTES); - while end > 0 && !line.is_char_boundary(end) { - end -= 1; - } - line[..end].to_string() -} - -fn push_bounded_log(logs: &mut VecDeque, line: &str) { - logs.push_back(sanitize_diagnostic_line(line)); - while logs.len() > MAX_DIAGNOSTIC_LINES { - logs.pop_front(); - } -} - -#[derive(Debug, PartialEq)] -enum ListenerIdentity { - Owned, - KnownGenericAgent, - Foreign, -} - -fn classify_listener_identity( - identity: Option<&serde_json::Value>, - project_dir: &str, -) -> ListenerIdentity { - let Some(identity) = identity else { - return ListenerIdentity::Foreign; - }; - let reported_root = identity - .get("ga_root") - .and_then(|value| value.as_str()) - .unwrap_or(""); - let reported_build = identity - .get("build_id") - .and_then(|value| value.as_str()) - .unwrap_or(""); - let reported_pid = identity - .get("pid") - .and_then(|value| value.as_u64()) - .unwrap_or(0); - if reported_root.is_empty() || reported_pid == 0 { - return ListenerIdentity::Foreign; - } - let same_root = { - let (reported, expected) = (norm_path(reported_root), norm_path(project_dir)); - #[cfg(windows)] - { - reported.eq_ignore_ascii_case(&expected) - } - #[cfg(not(windows))] - { - reported == expected - } - }; - if same_root && reported_build == env!("GA_BUILD_ID") { - ListenerIdentity::Owned - } else { - ListenerIdentity::KnownGenericAgent - } -} - -#[cfg(any(windows, test))] -fn should_retry_without_breakaway(raw_os_error: Option) -> bool { - raw_os_error == Some(5) -} - -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] -#[serde(rename_all = "snake_case")] -enum BootstrapMode { - HotStart, - ColdStart, - Prepare, -} - -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] -#[serde(rename_all = "snake_case")] -enum BootstrapPhase { - Idle, - Resolving, - Preparing, - StartingService, - OpeningUi, - Ready, - Failed, -} - -#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)] -#[serde(rename_all = "snake_case")] -enum BootstrapFailureCode { - ConfigUnresolved, - PrepareFailed, - SpawnFailed, - BridgeShutdownRefused, - PortConflict, - ServiceTimeout, - ServiceExited, - UiNavigationFailed, - Unknown, -} - -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] -#[serde(rename_all = "snake_case")] -enum PortState { - Free, - Owned, - Foreign, - Unknown, -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -struct BootstrapFailure { - code: BootstrapFailureCode, - detail: String, -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -struct BootstrapDiagnostics { - build_id: String, - platform: String, - project_dir: String, - python_path: String, - port_state: PortState, - bridge_identity: Option, - recent_logs: Vec, -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -struct BootstrapSnapshot { - seq: u64, - mode: BootstrapMode, - phase: BootstrapPhase, - stage: Option, - progress: u8, - failure: Option, - diagnostics: BootstrapDiagnostics, -} - -fn current_platform() -> String { - #[cfg(windows)] - { - "windows".to_string() - } - #[cfg(target_os = "macos")] - { - "macos".to_string() - } - #[cfg(all(not(windows), not(target_os = "macos")))] - { - "linux".to_string() - } -} - -static BOOTSTRAP_STATE: LazyLock> = LazyLock::new(|| { - Mutex::new(BootstrapSnapshot { - seq: 0, - mode: BootstrapMode::ColdStart, - phase: BootstrapPhase::Idle, - stage: None, - progress: 0, - failure: None, - diagnostics: BootstrapDiagnostics { - build_id: env!("GA_BUILD_ID").to_string(), - platform: current_platform(), - project_dir: String::new(), - python_path: String::new(), - port_state: PortState::Unknown, - bridge_identity: None, - recent_logs: Vec::new(), - }, - }) -}); - -fn write_e2e_bootstrap_snapshot(snapshot: &BootstrapSnapshot) { - let Some(report_dir) = std::env::var_os("GA_DESKTOP_E2E_REPORT_DIR") else { - return; - }; - let report_dir = PathBuf::from(report_dir); - if report_dir.as_os_str().is_empty() { - return; - } - if std::fs::create_dir_all(&report_dir).is_err() { - return; - } - - let Ok(line) = serde_json::to_string(snapshot) else { - return; - }; - if let Ok(mut file) = OpenOptions::new() - .create(true) - .append(true) - .open(report_dir.join("bootstrap-events.jsonl")) - { - let _ = writeln!(file, "{line}"); - } - - if let Ok(json) = serde_json::to_vec_pretty(snapshot) { - let _ = std::fs::write(report_dir.join("bootstrap-latest.json"), json); - } -} - -fn snapshot_update( - app_handle: Option<&tauri::AppHandle>, - update: impl FnOnce(&mut BootstrapSnapshot), -) -> BootstrapSnapshot { - let snapshot = { - let mut state = BOOTSTRAP_STATE.lock().unwrap(); - update(&mut state); - state.seq = state.seq.saturating_add(1); - state.clone() - }; - if let Some(app_handle) = app_handle { - let _ = app_handle.emit("bootstrap", snapshot.clone()); - } - write_e2e_bootstrap_snapshot(&snapshot); - snapshot -} - -fn begin_bootstrap( - app_handle: &tauri::AppHandle, - mode: BootstrapMode, - python_path: &str, - project_dir: &str, -) { - snapshot_update(Some(app_handle), |snapshot| { - snapshot.mode = mode; - snapshot.phase = BootstrapPhase::Resolving; - snapshot.stage = Some("validate".to_string()); - snapshot.progress = 5; - snapshot.failure = None; - snapshot.diagnostics.project_dir = project_dir.to_string(); - snapshot.diagnostics.python_path = python_path.to_string(); - snapshot.diagnostics.port_state = PortState::Unknown; - snapshot.diagnostics.bridge_identity = None; - snapshot.diagnostics.recent_logs.clear(); - }); -} - -fn set_bootstrap_phase( - app_handle: &tauri::AppHandle, - phase: BootstrapPhase, - stage: Option<&str>, - progress: u8, -) { - snapshot_update(Some(app_handle), |snapshot| { - snapshot.phase = phase; - snapshot.stage = stage.map(str::to_string); - snapshot.progress = progress.min(100); - snapshot.failure = None; - }); -} - -fn record_diagnostic_log(app_handle: &tauri::AppHandle, line: &str) { - if matches!( - BOOTSTRAP_STATE.lock().unwrap().phase, - BootstrapPhase::Ready | BootstrapPhase::Failed - ) { - return; - } - snapshot_update(Some(app_handle), |snapshot| { - let mut logs: VecDeque = snapshot.diagnostics.recent_logs.drain(..).collect(); - push_bounded_log(&mut logs, line); - snapshot.diagnostics.recent_logs = logs.into_iter().collect(); - }); -} - -fn set_port_diagnostics( - app_handle: &tauri::AppHandle, - port_state: PortState, - identity: Option<&serde_json::Value>, -) { - snapshot_update(Some(app_handle), |snapshot| { - snapshot.diagnostics.port_state = port_state; - snapshot.diagnostics.bridge_identity = identity.map(ToString::to_string); - }); -} - -#[tauri::command] -fn get_bootstrap_snapshot() -> BootstrapSnapshot { - BOOTSTRAP_STATE.lock().unwrap().clone() -} - -/// Get project root (parent of frontends/) -fn project_root() -> PathBuf { - std::env::current_exe() - .expect("cannot get exe path") - .parent() - .expect("cannot get exe dir") // frontends/ - .parent() - .expect("cannot get project root") // project root - .to_path_buf() -} - -/// Directory next to which a self-contained bundle keeps its runtime/ folder. -/// Windows: the exe's folder. Linux: the .AppImage's folder ($APPIMAGE) when launched as an -/// AppImage (current_exe would otherwise point inside the read-only squashfs mount). -/// macOS portable package: the folder containing GenericAgent.app and runtime/. -fn bundle_anchor_dir() -> Option { - #[cfg(not(windows))] - { - if let Some(p) = std::env::var_os("APPIMAGE") { - if let Some(d) = PathBuf::from(p).parent() { - return Some(d.to_path_buf()); - } - } - } - - let exe = std::env::current_exe().ok()?; - - #[cfg(target_os = "macos")] - { - // current_exe() inside a bundle is: - // /GenericAgent.app/Contents/MacOS/GenericAgent - // Prefer the standard macOS layout where runtime is embedded in the app: - // GenericAgent.app/Contents/Resources/runtime/app/agentmain.py - // Fall back to the old portable layout for compatibility: - // /runtime/app/agentmain.py - let mut d = exe.parent(); - while let Some(dir) = d { - if dir.extension().and_then(|s| s.to_str()) == Some("app") { - let resources = dir.join("Contents").join("Resources"); - if resources - .join("runtime") - .join("app") - .join("agentmain.py") - .exists() - { - return Some(resources); - } - if let Some(parent) = dir.parent() { - return Some(parent.to_path_buf()); - } - } - d = dir.parent(); - } - } - - Some(exe.parent()?.to_path_buf()) -} - -/// Embedded interpreter inside the bundle's runtime/python (base python, before venv). -fn bundle_python() -> Option { - let root = bundle_root()?; - #[cfg(windows)] - let p = root.join("python").join("python.exe"); - #[cfg(not(windows))] - let p = root.join("python").join("bin").join("python3"); - if p.exists() { - Some(p) - } else { - None - } -} - -fn platform_python_name() -> &'static str { - #[cfg(windows)] - { - "python" - } - #[cfg(not(windows))] - { - "python3" - } -} - -fn project_venv_python(project: &Path) -> PathBuf { - #[cfg(windows)] - { - project.join(".venv").join("Scripts").join("python.exe") - } - #[cfg(not(windows))] - { - project.join(".venv").join("bin").join("python") - } -} - -fn portable_python(project: &Path) -> Option { - let root = project.join(".portable").join("uv-python"); - #[cfg(windows)] - let direct = root.join("python.exe"); - #[cfg(not(windows))] - let direct = root.join("bin").join("python3"); - if direct.is_file() { - return Some(direct); - } - - let mut children = std::fs::read_dir(root) - .ok()? - .flatten() - .map(|entry| entry.path()) - .filter(|path| path.is_dir()) - .collect::>(); - children.sort(); - children.into_iter().find_map(|path| { - #[cfg(windows)] - let python = path.join("python.exe"); - #[cfg(not(windows))] - let python = path.join("bin").join("python3"); - python.is_file().then_some(python) - }) -} - -fn discover_python_for_project_path(project: &Path, saved_python: Option<&str>) -> String { - if let Some(python) = bundle_python() { - return display_path(&python); - } - let venv = project_venv_python(project); - if venv.is_file() { - return display_path(&venv); - } - if let Some(python) = portable_python(project) { - return display_path(&python); - } - if let Some(python) = saved_python - .map(str::trim) - .filter(|python| python_interpreter_resolves(python)) - { - return python.to_string(); - } - let fallback = platform_python_name(); - if python_interpreter_resolves(fallback) { - fallback.to_string() - } else { - String::new() - } -} - -/// Resolve package, project-local, portable, saved, then PATH Python in that order. -fn find_python() -> String { - let discovered = discover_python_for_project_path(&project_root(), None); - if discovered.is_empty() { - platform_python_name().to_string() - } else { - discovered - } -} - -fn python_interpreter_resolves(python_path: &str) -> bool { - let python_path = python_path.trim(); - if python_path.is_empty() { - return false; - } - - let explicit_path = python_path.contains('/') || python_path.contains('\\'); - if explicit_path { - return PathBuf::from(python_path).is_file(); - } - - let Some(path_entries) = std::env::var_os("PATH") else { - return false; - }; - for directory in std::env::split_paths(&path_entries) { - if directory.join(python_path).is_file() { - return true; - } - #[cfg(windows)] - { - let extensions = - std::env::var("PATHEXT").unwrap_or_else(|_| ".EXE;.CMD;.BAT".to_string()); - for extension in extensions - .split(';') - .filter(|extension| !extension.is_empty()) - { - if directory - .join(format!("{python_path}{extension}")) - .is_file() - || directory - .join(format!("{python_path}{}", extension.to_ascii_lowercase())) - .is_file() - { - return true; - } - } - } - } - false -} - -/// Find the project directory (folder containing agentmain.py). -/// Bundle layout: /runtime/app/agentmain.py. Dev layout: walk up from the exe. -fn find_project_dir() -> Option { - // Bundle layout: source tucked under /runtime/app/ - if let Some(anchor) = bundle_anchor_dir() { - let app = anchor.join("runtime").join("app"); - if app.join("agentmain.py").exists() { - return Some(app.to_string_lossy().to_string()); - } - } - - // Dev/source layout: walk up to 8 levels from the exe location. - let exe = std::env::current_exe().ok()?; - let mut dir = Some(exe.parent()?); - for _ in 0..8 { - match dir { - Some(d) => { - if d.join("agentmain.py").exists() { - return Some(d.to_string_lossy().to_string()); - } - dir = d.parent(); - } - None => break, - } - } - None -} - -fn resolve_settings_path(home_dir: Option, e2e_override: Option<&str>) -> PathBuf { - if let Some(path) = e2e_override.filter(|path| !path.trim().is_empty()) { - return PathBuf::from(path); - } - home_dir - .unwrap_or_else(|| PathBuf::from(".")) - .join(".ga_desktop_settings.json") -} - -/// Settings file path: ~/.ga_desktop_settings.json. -/// -/// Windows resolves the home directory through Known Folders and ignores an overridden -/// USERPROFILE. E2E builds therefore accept an explicit sandbox-owned settings file; the -/// production feature set never reads this override. -fn settings_path() -> PathBuf { - #[cfg(feature = "e2e")] - let e2e_override = if std::env::var("GA_E2E").ok().as_deref() == Some("1") { - std::env::var("GA_E2E_SETTINGS_PATH").ok() - } else { - None - }; - #[cfg(not(feature = "e2e"))] - let e2e_override: Option = None; - - resolve_settings_path(dirs::home_dir(), e2e_override.as_deref()) -} - -fn read_settings_from_strict( - path: &Path, -) -> Result, String> { - if !path.exists() { - return Ok(serde_json::Map::new()); - } - let content = std::fs::read_to_string(path) - .map_err(|error| format!("cannot read Desktop settings: {error}"))?; - match serde_json::from_str(&content) { - Ok(serde_json::Value::Object(object)) => Ok(object), - Ok(_) => Err("Desktop settings must be a JSON object".to_string()), - Err(error) => Err(format!("cannot parse Desktop settings: {error}")), - } -} - -fn read_settings_from(path: &Path) -> serde_json::Map { - read_settings_from_strict(path).unwrap_or_default() -} - -/// Read the settings file as a JSON object (empty object when missing/unparseable). -fn read_settings() -> serde_json::Map { - read_settings_from(&settings_path()) -} - -#[cfg(windows)] -fn atomic_replace(source: &Path, destination: &Path) -> std::io::Result<()> { - use std::os::windows::ffi::OsStrExt; - - #[link(name = "Kernel32")] - extern "system" { - fn MoveFileExW( - existing_file_name: *const u16, - new_file_name: *const u16, - flags: u32, - ) -> i32; - } - - const MOVEFILE_REPLACE_EXISTING: u32 = 0x1; - const MOVEFILE_WRITE_THROUGH: u32 = 0x8; - let source_wide: Vec = source.as_os_str().encode_wide().chain(Some(0)).collect(); - let destination_wide: Vec = destination - .as_os_str() - .encode_wide() - .chain(Some(0)) - .collect(); - let result = unsafe { - MoveFileExW( - source_wide.as_ptr(), - destination_wide.as_ptr(), - MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH, - ) - }; - if result == 0 { - Err(std::io::Error::last_os_error()) - } else { - Ok(()) - } -} - -struct SettingsFileLock { - path: PathBuf, - token: String, -} - -impl SettingsFileLock { - fn acquire(settings: &Path) -> Result { - const TIMEOUT: Duration = Duration::from_secs(5); - const STALE_AFTER: Duration = Duration::from_secs(30); - let parent = settings - .parent() - .ok_or_else(|| "settings path has no parent".to_string())?; - std::fs::create_dir_all(parent) - .map_err(|error| format!("create settings directory: {error}"))?; - let name = settings - .file_name() - .and_then(|part| part.to_str()) - .unwrap_or("ga_desktop_settings.json"); - let path = settings.with_file_name(format!("{name}.lock")); - let nonce = std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap_or_default() - .as_nanos(); - let token = format!("{}:{nonce}", std::process::id()); - let deadline = Instant::now() + TIMEOUT; - loop { - match std::fs::create_dir(&path) { - Ok(()) => { - if let Err(error) = std::fs::write(path.join("owner"), &token) { - let _ = std::fs::remove_dir(&path); - return Err(format!("write settings lock owner: {error}")); - } - return Ok(Self { path, token }); - } - Err(error) if error.kind() == std::io::ErrorKind::AlreadyExists => { - let metadata = std::fs::symlink_metadata(&path) - .map_err(|error| format!("inspect settings lock: {error}"))?; - if metadata.file_type().is_symlink() || !metadata.is_dir() { - return Err(format!( - "settings lock is not a directory: {}", - display_path(&path) - )); - } - let stale = metadata - .modified() - .ok() - .and_then(|modified| modified.elapsed().ok()) - .map(|age| age > STALE_AFTER) - .unwrap_or(false); - if stale { - let tombstone = path.with_file_name(format!("{name}.lock.stale.{nonce}")); - if std::fs::rename(&path, &tombstone).is_ok() { - let _ = std::fs::remove_dir_all(tombstone); - continue; - } - } - if Instant::now() >= deadline { - return Err(format!( - "timed out waiting for settings lock: {}", - display_path(&path) - )); - } - thread::sleep(Duration::from_millis(50)); - } - Err(error) => return Err(format!("create settings lock: {error}")), - } - } - } -} - -impl Drop for SettingsFileLock { - fn drop(&mut self) { - let owner = self.path.join("owner"); - if std::fs::read_to_string(&owner).ok().as_deref() == Some(self.token.as_str()) { - let _ = std::fs::remove_file(owner); - let _ = std::fs::remove_dir(&self.path); - } - } -} - -#[cfg(not(windows))] -fn atomic_replace(source: &Path, destination: &Path) -> std::io::Result<()> { - std::fs::rename(source, destination) -} - -fn write_settings_atomically(path: &Path, value: &serde_json::Value) -> std::io::Result<()> { - let parent = path.parent().ok_or_else(|| { - std::io::Error::new( - std::io::ErrorKind::InvalidInput, - "settings path has no parent", - ) - })?; - std::fs::create_dir_all(parent)?; - let text = serde_json::to_string_pretty(value) - .map_err(|error| std::io::Error::new(std::io::ErrorKind::InvalidData, error))?; - let nonce = std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap_or_default() - .as_nanos(); - let name = path - .file_name() - .and_then(|part| part.to_str()) - .unwrap_or("ga_desktop_settings.json"); - let temporary = parent.join(format!(".{name}.{}.{}.tmp", std::process::id(), nonce)); - let result = (|| { - let mut file = OpenOptions::new() - .write(true) - .create_new(true) - .open(&temporary)?; - file.write_all(text.as_bytes())?; - file.write_all(b"\n")?; - file.sync_all()?; - atomic_replace(&temporary, path)?; - #[cfg(unix)] - std::fs::File::open(parent)?.sync_all()?; - Ok(()) - })(); - if result.is_err() { - let _ = std::fs::remove_file(&temporary); - } - result -} - -fn update_settings_at( - path: &Path, - mutator: impl FnOnce(&mut serde_json::Map), -) -> Result<(), String> { - let _file_lock = SettingsFileLock::acquire(path)?; - let mut object = read_settings_from_strict(path)?; - mutator(&mut object); - write_settings_atomically(path, &serde_json::Value::Object(object)) - .map_err(|error| format!("cannot write Desktop settings: {error}")) -} - -fn update_settings( - mutator: impl FnOnce(&mut serde_json::Map), -) -> Result<(), String> { - let _guard = SETTINGS_WRITE_LOCK - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()); - update_settings_at(&settings_path(), mutator) -} - -/// Merge `updates` into the existing settings file and write it back, preserving any keys -/// we don't touch. The old code rewrote the file with only python_path/project_dir, which -/// would silently drop sibling keys like `desktop_shortcut`. Always go through here. -fn merge_settings(updates: serde_json::Value) -> Result<(), String> { - if let serde_json::Value::Object(updates) = updates { - return update_settings(move |object| { - for (key, value) in updates { - object.insert(key, value); - } - }); - } - Err("settings update must be a JSON object".to_string()) -} - -fn valid_ga_source_override_from( - settings: &serde_json::Map, -) -> Option { - let source = settings - .get("ga_source_override") - .and_then(|value| value.as_str()) - .unwrap_or("") - .trim(); - if source.is_empty() { - return None; - } - let path = PathBuf::from(source); - if path.join("agentmain.py").exists() { - Some(display_path(&path)) - } else { - None - } -} - -fn effective_ga_root_from( - project_dir: &str, - settings: &serde_json::Map, -) -> String { - valid_ga_source_override_from(settings) - .unwrap_or_else(|| display_path(&builtin_ga_root(project_dir))) -} - -/// Desktop-shortcut preference stored in settings under `desktop_shortcut`. -/// None = never asked (first run) -/// Some(true)/Some(false) = user's remembered choice. -fn read_shortcut_pref() -> Option { - read_settings() - .get("desktop_shortcut") - .and_then(|v| v.as_bool()) -} - -fn write_shortcut_pref(enabled: bool) -> Result<(), String> { - merge_settings(serde_json::json!({ "desktop_shortcut": enabled })) -} - -/// Create (or overwrite) a desktop shortcut pointing at the CURRENT exe. Overwriting on every -/// enabled launch is what makes the portable bundle relocatable: move the folder, relaunch, and -/// the shortcut is rewritten to the new path. Windows-only (uses a .lnk via WScript.Shell). -#[cfg(windows)] -fn ensure_desktop_shortcut() { - let Ok(exe) = std::env::current_exe() else { - return; - }; - let Some(desktop) = dirs::desktop_dir() else { - return; - }; - let lnk = desktop.join("GenericAgent.lnk"); - let work_dir = exe - .parent() - .map(|p| p.to_path_buf()) - .unwrap_or_else(|| exe.clone()); - - let exe_s = exe.to_string_lossy().replace('\'', "''"); - let lnk_s = lnk.to_string_lossy().replace('\'', "''"); - let work_s = work_dir.to_string_lossy().replace('\'', "''"); - - // Build the shortcut via WScript.Shell COM, consistent with the existing powershell usage - // elsewhere in this file. No extra crate needed. - let script = format!( - "$ws = New-Object -ComObject WScript.Shell; \ - $sc = $ws.CreateShortcut('{lnk}'); \ - $sc.TargetPath = '{exe}'; \ - $sc.WorkingDirectory = '{work}'; \ - $sc.IconLocation = '{exe}'; \ - $sc.Save()", - lnk = lnk_s, - exe = exe_s, - work = work_s - ); - - let mut cmd = Command::new("powershell.exe"); - cmd.args([ - "-NoProfile", - "-ExecutionPolicy", - "Bypass", - "-Command", - &script, - ]); - cmd.creation_flags(0x08000000); // CREATE_NO_WINDOW - let _ = cmd.status(); -} - -#[cfg(target_os = "linux")] -fn ensure_desktop_shortcut() { - // Launch target: the AppImage path when running as one, else the current exe. Writing the - // current path on every enabled launch keeps a relocated bundle's launcher valid. - let Some(target) = std::env::var_os("APPIMAGE") - .map(PathBuf::from) - .or_else(|| std::env::current_exe().ok()) - else { - return; - }; - let exec = target.to_string_lossy().replace('"', ""); - // Linux .desktop Icon= needs an image file (or themed name), not the AppImage path. The CI - // ships GenericAgent.png next to the AppImage; fall back to a generic themed icon otherwise. - let icon = bundle_anchor_dir() - .map(|d| d.join("GenericAgent.png")) - .filter(|p| p.exists()) - .map(|p| p.to_string_lossy().into_owned()) - .unwrap_or_else(|| "application-x-executable".to_string()); - let entry = format!( - "[Desktop Entry]\nType=Application\nName=GenericAgent\nComment=GenericAgent Desktop\n\ - Exec=\"{exec}\"\nIcon={icon}\nTerminal=false\nCategories=Utility;Development;\n", - exec = exec, - icon = icon - ); - let write_desktop = |path: &std::path::Path| { - if std::fs::write(path, &entry).is_ok() { - use std::os::unix::fs::PermissionsExt; - let _ = std::fs::set_permissions(path, std::fs::Permissions::from_mode(0o755)); - } - }; - if let Some(home) = dirs::home_dir() { - let apps = home.join(".local/share/applications"); - let _ = std::fs::create_dir_all(&apps); - write_desktop(&apps.join("GenericAgent.desktop")); - } - if let Some(desktop) = dirs::desktop_dir() { - let _ = std::fs::create_dir_all(&desktop); - let f = desktop.join("GenericAgent.desktop"); - write_desktop(&f); - // GNOME marks unknown launchers "untrusted"; flag ours so it runs on double-click. Best effort. - let _ = Command::new("gio") - .args(["set", &f.to_string_lossy(), "metadata::trusted", "true"]) - .status(); - } -} - -#[cfg(target_os = "macos")] -fn ensure_desktop_shortcut() { - // The .app is the launchable unit; drop a symlink to it on the Desktop. - let Ok(exe) = std::env::current_exe() else { - return; - }; - let mut app: Option = None; - let mut d = exe.parent(); - while let Some(dir) = d { - if dir.extension().and_then(|s| s.to_str()) == Some("app") { - app = Some(dir.to_path_buf()); - break; - } - d = dir.parent(); - } - let (Some(app), Some(desktop)) = (app, dirs::desktop_dir()) else { - return; - }; - let link = desktop.join("GenericAgent.app"); - let _ = std::fs::remove_file(&link); - let _ = std::os::unix::fs::symlink(&app, &link); -} - -#[cfg(all(not(windows), not(target_os = "linux"), not(target_os = "macos")))] -fn ensure_desktop_shortcut() {} - -/// First-run shortcut handling for portable bundles (all platforms). Self-heals the shortcut -/// path on every enabled launch (cheap, no UI). The first-run ASK is driven by the frontend -/// (see the `shortcut_should_ask` / `shortcut_decide` commands): a native dialog from this -/// background startup thread has no parent window and gets buried behind the main window on -/// first launch, so the prompt is owned by the web UI instead, which always renders on top. -fn maybe_setup_shortcut() { - if bundle_root().is_none() { - return; - } - // Only self-heal when the user already opted in. Never prompt here. - if read_shortcut_pref() == Some(true) { - ensure_desktop_shortcut(); - } -} - -/// Frontend asks whether to show the first-run "create desktop shortcut?" prompt. -/// True only on a portable bundle whose preference has never been set. -#[tauri::command] -fn shortcut_should_ask() -> bool { - bundle_root().is_some() && read_shortcut_pref().is_none() -} - -/// Frontend reports the user's choice. Persists it and creates the shortcut when enabled. -#[tauri::command] -fn shortcut_decide(create: bool) -> Result<(), String> { - write_shortcut_pref(create)?; - if create { - ensure_desktop_shortcut(); - } - Ok(()) -} - -#[cfg(target_os = "macos")] -fn running_inside_app_bundle() -> bool { - std::env::current_exe() - .ok() - .map(|path| { - path.components() - .any(|component| component.as_os_str().to_string_lossy().ends_with(".app")) - }) - .unwrap_or(false) -} - -/// User-set external GenericAgent core. The desktop bridge and conductor remain package-owned; -/// this path is only injected as GA_ROOT. A moved or deleted core falls back to the bundled one. -fn valid_ga_source_override() -> Option { - valid_ga_source_override_from(&read_settings()) -} - -/// Remove a single key from the settings file (merge_settings can only add/overwrite). -fn remove_setting(key: &str) -> Result<(), String> { - let key = key.to_string(); - update_settings(move |object| { - object.remove(&key); - }) -} - -fn restore_setting(key: &str, value: Option) -> Result<(), String> { - match value { - Some(value) => merge_settings(serde_json::json!({ key: value })), - None => remove_setting(key), - } -} - -const RUNTIME_MARKER_FILENAME: &str = ".ga-package-runtime.json"; -const RUNTIME_MARKER_SCHEMA: u32 = 1; -const PRESERVED_RUNTIME_PATHS: [&str; 4] = ["mykey.py", "mykey.json", "memory", "temp"]; - -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] -#[serde(rename_all = "camelCase")] -struct RuntimePackageMarker { - schema: u32, - package: String, - package_version: String, - build_id: String, - source_revision: String, -} - -#[derive(Debug, Eq, PartialEq)] -enum RuntimeCopyStatus { - Current, - Installed, - Refreshed, -} - -fn expected_runtime_marker() -> RuntimePackageMarker { - RuntimePackageMarker { - schema: RUNTIME_MARKER_SCHEMA, - package: env!("CARGO_PKG_NAME").to_string(), - package_version: env!("CARGO_PKG_VERSION").to_string(), - build_id: env!("GA_BUILD_ID").to_string(), - source_revision: env!("GA_SOURCE_REVISION").to_string(), - } -} - -fn runtime_marker_path(runtime: &Path) -> PathBuf { - runtime.join(RUNTIME_MARKER_FILENAME) -} - -fn read_runtime_marker(runtime: &Path) -> Option { - let text = std::fs::read_to_string(runtime_marker_path(runtime)).ok()?; - serde_json::from_str(&text).ok() -} - -fn runtime_copy_is_current(runtime: &Path, expected: &RuntimePackageMarker) -> bool { - runtime.join("agentmain.py").is_file() - && runtime - .join("frontends") - .join("desktop_bridge.py") - .is_file() - && read_runtime_marker(runtime).as_ref() == Some(expected) -} - -fn remove_fs_path(path: &Path) -> Result<(), String> { - if path.is_symlink() || path.is_file() { - std::fs::remove_file(path).map_err(|error| format!("remove {:?}: {error}", path)) - } else if path.is_dir() { - std::fs::remove_dir_all(path).map_err(|error| format!("remove {:?}: {error}", path)) - } else { - Ok(()) - } -} - -fn copy_dir_replace(src: &Path, dst: &Path) -> Result<(), String> { - if src.is_symlink() || !src.is_dir() { - return Err(format!("refusing to copy unsafe directory {:?}", src)); - } - std::fs::create_dir_all(dst).map_err(|error| format!("create {:?}: {error}", dst))?; - for entry in std::fs::read_dir(src).map_err(|error| format!("read {:?}: {error}", src))? { - let entry = entry.map_err(|error| error.to_string())?; - let source = entry.path(); - let destination = dst.join(entry.file_name()); - let file_type = entry.file_type().map_err(|error| error.to_string())?; - if file_type.is_symlink() { - return Err(format!("refusing to copy symbolic link {:?}", source)); - } - if file_type.is_dir() { - if destination.exists() && !destination.is_dir() { - remove_fs_path(&destination)?; - } - copy_dir_replace(&source, &destination)?; - } else if file_type.is_file() { - if destination.exists() && !destination.is_file() { - remove_fs_path(&destination)?; - } - if let Some(parent) = destination.parent() { - std::fs::create_dir_all(parent).map_err(|error| error.to_string())?; - } - std::fs::copy(&source, &destination) - .map_err(|error| format!("copy {:?} -> {:?}: {error}", source, destination))?; - } else { - return Err(format!("refusing to copy special file {:?}", source)); - } - } - Ok(()) -} - -fn copy_preserved_runtime_data(existing: &Path, staging: &Path) -> Result<(), String> { - for relative in PRESERVED_RUNTIME_PATHS { - let source = existing.join(relative); - if !source.exists() && !source.is_symlink() { - continue; - } - if source.is_symlink() { - return Err(format!( - "refusing to preserve symbolic-link user data {:?}", - source - )); - } - let destination = staging.join(relative); - remove_fs_path(&destination)?; - if source.is_dir() { - copy_dir_replace(&source, &destination)?; - } else if source.is_file() { - if let Some(parent) = destination.parent() { - std::fs::create_dir_all(parent).map_err(|error| error.to_string())?; - } - std::fs::copy(&source, &destination) - .map_err(|error| format!("preserve {:?} -> {:?}: {error}", source, destination))?; - } else { - return Err(format!("refusing to preserve special file {:?}", source)); - } - } - Ok(()) -} - -fn unique_runtime_sibling(parent: &Path, label: &str) -> Result { - let nanos = std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .map(|duration| duration.as_nanos()) - .unwrap_or(0); - for suffix in 0..1000_u32 { - let candidate = parent.join(format!( - ".app-{label}-{}-{nanos}-{suffix}", - std::process::id() - )); - if !candidate.exists() && !candidate.is_symlink() { - return Ok(candidate); - } - } - Err(format!("cannot allocate runtime {label} path")) -} - -fn refresh_runtime_copy_with_activation( - source: &Path, - destination: &Path, - preserved_source: Option<&Path>, - expected: &RuntimePackageMarker, - activate: F, -) -> Result -where - F: FnOnce(&Path, &Path) -> std::io::Result<()>, -{ - if runtime_copy_is_current(destination, expected) { - return Ok(RuntimeCopyStatus::Current); - } - if source.is_symlink() - || !source.join("agentmain.py").is_file() - || !source.join("frontends").join("desktop_bridge.py").is_file() - { - return Err(format!( - "bundled core is incomplete at {}", - display_path(source) - )); - } - if destination.is_symlink() || (destination.exists() && !destination.is_dir()) { - return Err(format!( - "writable runtime is not a safe directory at {}", - display_path(destination) - )); - } - let parent = destination - .parent() - .ok_or_else(|| "writable runtime has no parent directory".to_string())?; - std::fs::create_dir_all(parent) - .map_err(|error| format!("create writable runtime parent: {error}"))?; - let staging = unique_runtime_sibling(parent, "staging")?; - std::fs::create_dir(&staging) - .map_err(|error| format!("create writable runtime staging dir: {error}"))?; - - let prepare_result = (|| { - copy_dir_replace(source, &staging)?; - if let Some(existing) = - preserved_source.or_else(|| destination.is_dir().then_some(destination)) - { - copy_preserved_runtime_data(existing, &staging)?; - } - let marker = serde_json::to_string_pretty(expected) - .map_err(|error| format!("serialize runtime marker: {error}"))?; - std::fs::write(runtime_marker_path(&staging), marker + "\n") - .map_err(|error| format!("write runtime marker: {error}"))?; - if !runtime_copy_is_current(&staging, expected) { - return Err("staged writable runtime failed validation".to_string()); - } - Ok(()) - })(); - if let Err(error) = prepare_result { - let _ = remove_fs_path(&staging); - return Err(error); - } - - let existed = destination.is_dir(); - let rollback = match unique_runtime_sibling(parent, "rollback") { - Ok(path) => path, - Err(error) => { - let _ = remove_fs_path(&staging); - return Err(error); - } - }; - if existed { - if let Err(error) = std::fs::rename(destination, &rollback) { - let _ = remove_fs_path(&staging); - return Err(format!("backup previous writable runtime: {error}")); - } - } - - if let Err(error) = activate(&staging, destination) { - let _ = remove_fs_path(&staging); - if existed { - if destination.exists() || destination.is_symlink() { - let _ = remove_fs_path(destination); - } - if let Err(rollback_error) = std::fs::rename(&rollback, destination) { - return Err(format!( - "activate writable runtime: {error}; restore previous runtime from {}: {rollback_error}", - display_path(&rollback) - )); - } - } - return Err(format!("activate writable runtime: {error}")); - } - - if existed { - // The activated tree already contains copied user data. This old tree is - // retained until activation succeeds, then removed on a best-effort basis. - let _ = remove_fs_path(&rollback); - Ok(RuntimeCopyStatus::Refreshed) - } else { - Ok(RuntimeCopyStatus::Installed) - } -} - -fn refresh_runtime_copy( - source: &Path, - destination: &Path, - expected: &RuntimePackageMarker, -) -> Result { - refresh_runtime_copy_with_activation(source, destination, None, expected, |staging, active| { - std::fs::rename(staging, active) - }) -} - -fn trusted_legacy_runtime(runtime_parent: &Path) -> Result, String> { - if !runtime_parent.is_dir() { - return Ok(None); - } - let mut candidates = Vec::new(); - for entry in std::fs::read_dir(runtime_parent) - .map_err(|error| format!("read legacy runtime parent: {error}"))? - { - let entry = entry.map_err(|error| format!("read legacy runtime entry: {error}"))?; - let version_dir = entry.path(); - if entry.file_name() == "app" - || entry - .file_type() - .map_err(|error| error.to_string())? - .is_symlink() - { - continue; - } - let version_name = entry.file_name().to_string_lossy().to_string(); - let version_key = version_name - .split('-') - .next() - .unwrap_or("") - .split('.') - .map(str::parse::) - .collect::, _>>(); - let Ok(version_key) = version_key else { - continue; - }; - if version_key.is_empty() { - continue; - } - let app = version_dir.join("app"); - if app.is_symlink() - || !app.is_dir() - || !app.join("agentmain.py").is_file() - || !app.join("frontends").join("desktop_bridge.py").is_file() - { - continue; - } - let Some(marker) = read_runtime_marker(&app) else { - continue; - }; - if marker.schema != RUNTIME_MARKER_SCHEMA - || marker.package != env!("CARGO_PKG_NAME") - || marker.package_version != version_name - { - continue; - } - candidates.push((version_key, app)); - } - candidates.sort_by(|left, right| left.0.cmp(&right.0)); - Ok(candidates.pop().map(|(_, path)| path)) -} - -fn refresh_runtime_copy_from_legacy( - source: &Path, - legacy: &Path, - destination: &Path, - expected: &RuntimePackageMarker, -) -> Result { - let result = refresh_runtime_copy_with_activation( - source, - destination, - Some(legacy), - expected, - |staging, active| std::fs::rename(staging, active), - )?; - let _ = remove_fs_path(legacy); - if let Some(parent) = legacy.parent() { - let _ = std::fs::remove_dir(parent); - } - Ok(result) -} - -fn builtin_ga_root(project_dir: &str) -> PathBuf { - #[cfg(target_os = "macos")] - { - if running_inside_app_bundle() { - if let Some(data_dir) = dirs::data_dir() { - return data_dir.join("GenericAgent").join("runtime").join("app"); - } - } - } - PathBuf::from(project_dir) -} - -fn ensure_builtin_ga_root(project_dir: &str) -> Result<(), String> { - if valid_ga_source_override().is_some() { - return Ok(()); - } - let source = PathBuf::from(project_dir); - let destination = builtin_ga_root(project_dir); - if same_path(&source, &destination) { - return Ok(()); - } - let expected = expected_runtime_marker(); - if !destination.exists() { - if let Some(parent) = destination.parent() { - if let Some(legacy) = trusted_legacy_runtime(parent)? { - return refresh_runtime_copy_from_legacy(&source, &legacy, &destination, &expected) - .map(|_| ()); - } - } - } - refresh_runtime_copy(&source, &destination, &expected).map(|_| ()) -} - -fn same_path(a: &Path, b: &Path) -> bool { - let a = a.canonicalize().unwrap_or_else(|_| a.to_path_buf()); - let b = b.canonicalize().unwrap_or_else(|_| b.to_path_buf()); - #[cfg(windows)] - { - display_path(&a).eq_ignore_ascii_case(&display_path(&b)) - } - #[cfg(not(windows))] - { - a == b - } -} - -fn display_path(path: &Path) -> String { - let value = path.to_string_lossy().to_string(); - #[cfg(windows)] - { - if let Some(rest) = value.strip_prefix("\\\\?\\") { - return rest.to_string(); - } - } - value -} - -/// Read config from settings file, or auto-discover and save. -/// Self-contained bundles always prefer their own runtime/app over stale user settings, -/// otherwise an old ~/.ga_desktop_settings.json can silently point the UI at a different checkout. -pub fn get_or_discover_config() -> (String, String) { - let path = settings_path(); - - // An external core never replaces project_dir: project_dir locates the package-owned bridge, - // while sanitize_bundle_env injects the selected core as GA_ROOT. - if bundle_root().is_some() { - let python = find_python(); - let project = find_project_dir().unwrap_or_default(); - if !python.is_empty() && !project.is_empty() { - let _ = merge_settings(serde_json::json!({ - "python_path": python, - "project_dir": project - })); - return (python, project); - } - } - - #[cfg(target_os = "macos")] - let trust_settings = !running_inside_app_bundle(); - #[cfg(not(target_os = "macos"))] - let trust_settings = true; - - // A packaged macOS app never trusts a stale path from a previous install/translocation. - if trust_settings && path.exists() { - if let Ok(content) = std::fs::read_to_string(&path) { - if let Ok(val) = serde_json::from_str::(&content) { - let python = val - .get("python_path") - .and_then(|v| v.as_str()) - .unwrap_or("") - .to_string(); - let project = val - .get("project_dir") - .and_then(|v| v.as_str()) - .unwrap_or("") - .to_string(); - if python_interpreter_resolves(&python) - && !project.is_empty() - && PathBuf::from(&project) - .join("frontends") - .join("desktop_bridge.py") - .exists() - { - return (python, project); - } - } - } - } - - // Auto-discover - let project = find_project_dir().unwrap_or_default(); - let python = if project.is_empty() { - find_python() - } else { - discover_python_for_project_path(Path::new(&project), None) - }; - - // Save discovered config - if !python.is_empty() && !project.is_empty() { - let _ = merge_settings(serde_json::json!({ - "python_path": python, - "project_dir": project - })); - } - - (python, project) -} - -/// Self-contained bundle support dir: holds python/, wheels/, install_windows.ps1 and app/. -/// Typical portable layout keeps only the exe (+README) at the top level and tucks everything -/// else under /runtime/. Returns None when this is not a bundle (e.g. dev build). -fn bundle_root() -> Option { - let runtime = bundle_anchor_dir()?.join("runtime"); - if runtime.join("app").join("agentmain.py").exists() { - return Some(runtime); - } - None -} - -/// Marker written after a successful offline prepare. Lives under runtime/ so it travels -/// with the bundle: a relocated folder stays "prepared" (deps live in the embedded python, -/// which is itself relocatable) and won't re-run prepare. -fn prepared_marker() -> Option { - Some(bundle_root()?.join(".prepared")) -} - -/// True when this is a self-contained bundle whose python env has not been prepared yet -/// (embedded python present but deps not yet installed into it). -fn needs_first_run_prepare(project_dir: &str) -> bool { - if project_dir.is_empty() { - return false; - } - bundle_python().is_some() && prepared_marker().map(|m| !m.exists()).unwrap_or(false) -} - -/// Clear env vars a host launcher injects pointing at its own runtime. The Linux AppImage exports -/// PYTHONHOME/PYTHONPATH (-> bundled python crashes with "No module named 'encodings'") and -/// LD_LIBRARY_PATH (-> wrong shared libs). Our bundled python / prepare / bridge must run clean. -fn sanitize_bundle_env(cmd: &mut Command, project_dir: &str) { - cmd.env_remove("PYTHONHOME"); - cmd.env_remove("PYTHONPATH"); - cmd.env_remove("LD_LIBRARY_PATH"); - cmd.env("PYTHONDONTWRITEBYTECODE", "1"); - // Stamp the bridge we spawn with this build's id so a later app launch can tell whether the - // bridge holding :14168 is ours (see bridge_identity_matches / GET /services/identity). - cmd.env("GA_BUILD_ID", env!("GA_BUILD_ID")); - let ga_root = effective_ga_root(project_dir); - if ga_root.is_empty() { - cmd.env_remove("GA_ROOT"); - } else { - cmd.env("GA_ROOT", ga_root); - } - let endpoint = bridge_endpoint(); - cmd.env("BRIDGE_HOST", &endpoint.host); - cmd.env("BRIDGE_PORT", endpoint.port.to_string()); -} - -/// Run the offline prepare (install_windows.ps1 -Mode PrepareOnly) using bundled python + wheels. -/// Streams the script's stdout and forwards GAPROGRESS markers to `report(pct, message)`. -/// Blocking; intended to run on a background thread. Writes ~/.ga_desktop_settings.json. -fn run_offline_prepare( - project_dir: &str, - report: &dyn Fn(i32, &str), - log: &dyn Fn(&str), -) -> Result<(), String> { - let root = bundle_root().ok_or("cannot locate bundle root")?; - let wheels = root.join("wheels"); - - #[cfg(windows)] - let (script, py) = ( - root.join("install_windows.ps1"), - root.join("python").join("python.exe"), - ); - #[cfg(target_os = "macos")] - let (script, py) = ( - root.join("install_macos.sh"), - root.join("python").join("bin").join("python3"), - ); - #[cfg(all(not(windows), not(target_os = "macos")))] - let (script, py) = ( - root.join("install_linux.sh"), - root.join("python").join("bin").join("python3"), - ); - - if !script.exists() || !py.exists() || !wheels.exists() { - return Err(format!("prepare resources missing under {:?}", root)); - } - - #[cfg(windows)] - let mut cmd = { - let mut c = Command::new("powershell.exe"); - c.args(["-NoProfile", "-ExecutionPolicy", "Bypass", "-File"]) - .arg(&script) - .arg("-PythonPath") - .arg(&py) - .arg("-ProjectDir") - .arg(project_dir) - .arg("-WheelDir") - .arg(&wheels) - .arg("-ExtraPipPackages") - .arg("fastapi uvicorn websockets") - // -NoVenv: install deps straight into the embedded python (no venv) so the - // bundle is relocatable. See prepared_marker / find_python. - .args(["-Mode", "PrepareOnly", "-SkipNpmInstall", "-NoVenv"]); - c - }; - #[cfg(not(windows))] - let mut cmd = { - let mut c = Command::new("bash"); - c.arg(&script) - .arg("--python-path") - .arg(&py) - .arg("--project-dir") - .arg(project_dir) - .arg("--wheel-dir") - .arg(&wheels) - .arg("--extra-packages") - .arg("fastapi uvicorn websockets") - // --no-venv: install deps straight into the embedded python (no venv) so the - // bundle is relocatable. See prepared_marker / find_python. - .args(["--mode", "PrepareOnly", "--no-venv"]); - c - }; - - cmd.stdout(Stdio::piped()).stderr(Stdio::piped()); - sanitize_bundle_env(&mut cmd, project_dir); - #[cfg(windows)] - cmd.creation_flags(0x08000000); // CREATE_NO_WINDOW - let mut child = cmd - .spawn() - .map_err(|e| format!("failed to launch prepare: {}", e))?; - - // Drain both streams concurrently so a verbose prepare cannot deadlock on a full pipe. - // Only stable stage keys reach the main copy; raw output is retained in diagnostics. - let (sender, receiver) = std::sync::mpsc::channel::>(); - let mut stream_count = 0; - if let Some(stdout) = child.stdout.take() { - stream_count += 1; - let sender = sender.clone(); - thread::spawn(move || { - for line in BufReader::new(stdout).lines().map_while(Result::ok) { - let _ = sender.send(Some(line)); - } - let _ = sender.send(None); - }); - } - if let Some(stderr) = child.stderr.take() { - stream_count += 1; - let sender = sender.clone(); - thread::spawn(move || { - for line in BufReader::new(stderr).lines().map_while(Result::ok) { - let _ = sender.send(Some(line)); - } - let _ = sender.send(None); - }); - } - drop(sender); - - let mut completed_streams = 0; - while completed_streams < stream_count { - match receiver.recv() { - Ok(Some(line)) => { - if let Some(key) = line.trim().strip_prefix("GAPROGRESS|") { - match key.trim() { - "venv" => report(25, "python"), - "deps" => report(50, "dependencies"), - "done" => report(75, "dependencies"), - _ => {} - } - } else { - log(&line); - } - } - Ok(None) => completed_streams += 1, - Err(_) => break, - } - } - - let status = child - .wait() - .map_err(|e| format!("prepare wait failed: {}", e))?; - if !status.success() { - return Err(format!("prepare exited with status {:?}", status.code())); - } - // Record success so later launches (and relocated copies) skip the prepare step. - if let Some(marker) = prepared_marker() { - let _ = std::fs::write(&marker, b"ok\n"); - } - Ok(()) -} - -const MAX_IDENTITY_RESPONSE_BYTES: usize = 32 * 1024; -const MAX_IDENTITY_PATH_BYTES: usize = 2 * 1024; -const MAX_IDENTITY_BUILD_BYTES: usize = 256; -const MAX_SHUTDOWN_RESPONSE_BYTES: usize = 4 * 1024; - -#[derive(Debug, PartialEq, Eq)] -enum BridgeShutdownResponse { - Accepted, - Refused { status: u16, maintenance: bool }, - Indeterminate, -} - -fn normalize_bridge_identity(identity: serde_json::Value) -> Option { - let ga_root = identity.get("ga_root")?.as_str()?; - let build_id = identity - .get("build_id") - .and_then(|value| value.as_str()) - .unwrap_or(""); - let pid = identity.get("pid")?.as_u64()?; - if ga_root.is_empty() - || ga_root.len() > MAX_IDENTITY_PATH_BYTES - || build_id.len() > MAX_IDENTITY_BUILD_BYTES - || pid == 0 - { - return None; - } - Some(serde_json::json!({ - "ga_root": ga_root, - "build_id": build_id, - "pid": pid - })) -} - -/// GET /services/identity from a running bridge; returns the parsed JSON (or None when the -/// endpoint is absent — i.e. an older/foreign bridge). -fn bridge_reported_identity() -> Option { - use std::io::{Read, Write}; - let endpoint = bridge_endpoint(); - let addr = endpoint.tcp_addr()?; - let mut stream = TcpStream::connect_timeout(&addr, Duration::from_millis(800)).ok()?; - let _ = stream.set_read_timeout(Some(Duration::from_millis(800))); - let _ = stream.set_write_timeout(Some(Duration::from_millis(600))); - let req = format!( - "GET /services/identity HTTP/1.1\r\nHost: {}\r\nConnection: close\r\n\r\n", - endpoint.socket_addr(), - ); - stream.write_all(req.as_bytes()).ok()?; - let mut buf = Vec::new(); - stream - .take((MAX_IDENTITY_RESPONSE_BYTES + 1) as u64) - .read_to_end(&mut buf) - .ok()?; - if buf.len() > MAX_IDENTITY_RESPONSE_BYTES { - return None; - } - let text = String::from_utf8_lossy(&buf); - let mut response = text.splitn(2, "\r\n\r\n"); - let headers = response.next()?; - let status = headers.lines().next()?; - if !(status.starts_with("HTTP/1.1 200 ") || status.starts_with("HTTP/1.0 200 ")) { - return None; - } - let body = response.next()?; - normalize_bridge_identity(serde_json::from_str(body.trim()).ok()?) -} - -fn norm_path(p: &str) -> String { - std::fs::canonicalize(p) - .map(|c| c.to_string_lossy().to_string()) - .unwrap_or_else(|_| p.to_string()) -} - -fn effective_ga_root(project_dir: &str) -> String { - effective_ga_root_from(project_dir, &read_settings()) -} - -fn bootstrap_failure(code: BootstrapFailureCode, detail: impl AsRef) -> BootstrapFailure { - BootstrapFailure { - code, - detail: sanitize_diagnostic_line(detail.as_ref()), - } -} - -fn parse_bridge_shutdown_response(response: &[u8]) -> BridgeShutdownResponse { - // The HTTP status line is authoritative even if an error body is truncated - // or contains non-UTF-8 bytes. Lossy decoding cannot turn an invalid status - // line into one of the exact HTTP/version/status tokens accepted below. - let text = String::from_utf8_lossy(response); - let Some((status_line, _)) = text.split_once("\r\n") else { - return BridgeShutdownResponse::Indeterminate; - }; - let mut parts = status_line.split_ascii_whitespace(); - let Some(version) = parts.next() else { - return BridgeShutdownResponse::Indeterminate; - }; - if version != "HTTP/1.0" && version != "HTTP/1.1" { - return BridgeShutdownResponse::Indeterminate; - } - let Some(raw_status) = parts.next() else { - return BridgeShutdownResponse::Indeterminate; - }; - if raw_status.len() != 3 || !raw_status.bytes().all(|byte| byte.is_ascii_digit()) { - return BridgeShutdownResponse::Indeterminate; - } - let Ok(status) = raw_status.parse::() else { - return BridgeShutdownResponse::Indeterminate; - }; - if (200..300).contains(&status) { - return BridgeShutdownResponse::Accepted; - } - let body = text - .split_once("\r\n\r\n") - .map(|(_, body)| body.trim()) - .unwrap_or(""); - let maintenance = status == 409 - && serde_json::from_str::(body) - .ok() - .and_then(|document| { - document - .get("code") - .and_then(serde_json::Value::as_str) - .map(|code| code == "maintenance_conflict") - }) - .unwrap_or(false); - BridgeShutdownResponse::Refused { - status, - maintenance, - } -} - -fn request_bridge_shutdown() -> BridgeShutdownResponse { - request_bridge_shutdown_at(&bridge_endpoint()) -} - -fn request_bridge_shutdown_at(endpoint: &BridgeEndpoint) -> BridgeShutdownResponse { - use std::io::{Read, Write}; - let Some(addr) = endpoint.tcp_addr() else { - return BridgeShutdownResponse::Indeterminate; - }; - let Ok(mut stream) = TcpStream::connect_timeout(&addr, Duration::from_millis(800)) else { - return BridgeShutdownResponse::Indeterminate; - }; - let _ = stream.set_read_timeout(Some(Duration::from_millis(600))); - let _ = stream.set_write_timeout(Some(Duration::from_millis(600))); - let req = format!( - "POST /services/bridge/exit HTTP/1.1\r\nHost: {}\r\nContent-Length: 0\r\nConnection: close\r\n\r\n", - endpoint.socket_addr(), - ); - if stream.write_all(req.as_bytes()).is_err() { - return BridgeShutdownResponse::Indeterminate; - } - let mut response = Vec::new(); - // A timeout or oversized body must not erase an already received explicit - // non-2xx status. Parse the bounded prefix; an incomplete status line stays - // indeterminate and retains the established own-child fallback. - let _ = stream - .take(MAX_SHUTDOWN_RESPONSE_BYTES as u64) - .read_to_end(&mut response); - parse_bridge_shutdown_response(&response) -} - -fn shutdown_refusal_failure(response: BridgeShutdownResponse) -> Option { - let BridgeShutdownResponse::Refused { - status, - maintenance, - } = response - else { - return None; - }; - let detail = if maintenance { - "the Desktop bridge is busy with data maintenance and refused a safe restart".to_string() - } else { - format!("the Desktop bridge refused a safe restart with HTTP {status}") - }; - Some(bootstrap_failure( - BootstrapFailureCode::BridgeShutdownRefused, - detail, - )) -} - -fn is_bridge_running() -> bool { - bridge_endpoint() - .tcp_addr() - .is_some_and(|addr| TcpStream::connect(addr).is_ok()) -} - -fn resolve_existing_listener( - app_handle: &tauri::AppHandle, - project_dir: &str, -) -> Result { - if !is_bridge_running() { - if BRIDGE_PROCESS.lock().unwrap().is_some() { - record_diagnostic_log( - app_handle, - "A tracked bridge process no longer owns the local listener; stopping it before retry.", - ); - stop_tracked_bridge(); - } - set_port_diagnostics(app_handle, PortState::Free, None); - return Ok(false); - } - - let identity = bridge_reported_identity(); - match classify_listener_identity(identity.as_ref(), project_dir) { - ListenerIdentity::Owned => { - set_port_diagnostics(app_handle, PortState::Owned, identity.as_ref()); - Ok(true) - } - ListenerIdentity::Foreign => { - set_port_diagnostics(app_handle, PortState::Foreign, None); - Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - format!( - "{} is held by an unidentified process", - bridge_endpoint().socket_addr() - ), - )) - } - ListenerIdentity::KnownGenericAgent => { - set_port_diagnostics(app_handle, PortState::Foreign, identity.as_ref()); - record_diagnostic_log( - app_handle, - "A previous GenericAgent bridge was found; requesting graceful shutdown.", - ); - if let Some(failure) = shutdown_refusal_failure(request_bridge_shutdown()) { - record_diagnostic_log(app_handle, &failure.detail); - return Err(failure); - } - let start = Instant::now(); - while is_bridge_running() && start.elapsed() < Duration::from_secs(10) { - thread::sleep(Duration::from_millis(200)); - } - - if is_bridge_running() { - let remaining_identity = bridge_reported_identity(); - if classify_listener_identity(remaining_identity.as_ref(), project_dir) - != ListenerIdentity::KnownGenericAgent - { - set_port_diagnostics( - app_handle, - PortState::Foreign, - remaining_identity.as_ref(), - ); - return Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - "the local listener changed identity while waiting for shutdown", - )); - } - record_diagnostic_log( - app_handle, - "The identified old bridge ignored graceful shutdown; it will not be force-stopped.", - ); - return Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - format!( - "the identified old bridge did not release {}", - bridge_endpoint().socket_addr() - ), - )); - } - - if is_bridge_running() { - set_port_diagnostics( - app_handle, - PortState::Foreign, - bridge_reported_identity().as_ref(), - ); - Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - format!( - "the identified old bridge did not release {}", - bridge_endpoint().socket_addr() - ), - )) - } else { - // A bridge spawned by this desktop process may release the socket slightly - // before its process and pipe readers finish. Reap only that tracked child; - // an untracked bridge that exited gracefully is left untouched. - let tracked_child = BRIDGE_PROCESS.lock().unwrap().is_some(); - if tracked_child { - stop_tracked_bridge(); - } - set_port_diagnostics(app_handle, PortState::Free, None); - Ok(false) - } - } - } -} - -fn bridge_command(python_path: &str, project_dir: &str) -> Result { - if python_path.trim().is_empty() { - return Err(bootstrap_failure( - BootstrapFailureCode::SpawnFailed, - "Python interpreter path is empty", - )); - } - let dir = PathBuf::from(project_dir); - let script = dir.join("frontends").join("desktop_bridge.py"); - if !script.exists() { - return Err(bootstrap_failure( - BootstrapFailureCode::ConfigUnresolved, - format!("desktop bridge not found under {}", dir.display()), - )); - } - - let mut cmd = Command::new(python_path); - cmd.arg(&script).current_dir(&dir); - cmd.stdout(Stdio::piped()).stderr(Stdio::piped()); - sanitize_bundle_env(&mut cmd, project_dir); - Ok(cmd) -} - -fn capture_bridge_output( - app_handle: tauri::AppHandle, - stream_name: &'static str, - stream: R, -) -> thread::JoinHandle<()> { - thread::spawn(move || { - for line in BufReader::new(stream).lines().map_while(Result::ok) { - record_diagnostic_log(&app_handle, &format!("{stream_name}: {line}")); - } - }) -} - -fn join_bridge_log_readers() { - let readers = std::mem::take(&mut *BRIDGE_LOG_READERS.lock().unwrap()); - for reader in readers { - let _ = reader.join(); - } -} - -fn spawn_bridge_process( - app_handle: &tauri::AppHandle, - python_path: &str, - project_dir: &str, -) -> Result<(), BootstrapFailure> { - if is_bridge_running() { - return Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - format!( - "cannot spawn while {} is already in use", - bridge_endpoint().socket_addr() - ), - )); - } - - let mut command = bridge_command(python_path, project_dir)?; - #[cfg(windows)] - command.creation_flags(0x08000000 | 0x01000000); // CREATE_NO_WINDOW | CREATE_BREAKAWAY_FROM_JOB - - let spawn_result = command.spawn(); - #[cfg(windows)] - let mut child = match spawn_result { - Ok(child) => child, - Err(error) if should_retry_without_breakaway(error.raw_os_error()) => { - record_diagnostic_log( - app_handle, - "Windows denied CREATE_BREAKAWAY_FROM_JOB; retrying with CREATE_NO_WINDOW.", - ); - let mut fallback = bridge_command(python_path, project_dir)?; - fallback.creation_flags(0x08000000); // CREATE_NO_WINDOW - fallback.spawn().map_err(|fallback_error| { - bootstrap_failure( - BootstrapFailureCode::SpawnFailed, - format!("bridge spawn fallback failed: {fallback_error}"), - ) - })? - } - Err(error) => { - return Err(bootstrap_failure( - BootstrapFailureCode::SpawnFailed, - format!("bridge spawn failed: {error}"), - )); - } - }; - #[cfg(not(windows))] - let mut child = spawn_result.map_err(|error| { - bootstrap_failure( - BootstrapFailureCode::SpawnFailed, - format!("bridge spawn failed: {error}"), - ) - })?; - - let mut readers = Vec::new(); - if let Some(stdout) = child.stdout.take() { - readers.push(capture_bridge_output(app_handle.clone(), "stdout", stdout)); - } - if let Some(stderr) = child.stderr.take() { - readers.push(capture_bridge_output(app_handle.clone(), "stderr", stderr)); - } - *BRIDGE_LOG_READERS.lock().unwrap() = readers; - *BRIDGE_PROCESS.lock().unwrap() = Some(child); - Ok(()) -} - -fn bridge_exit_status() -> Result, BootstrapFailure> { - let result = { - let mut process = BRIDGE_PROCESS.lock().unwrap(); - let result = match process.as_mut() { - Some(child) => child.try_wait().map_err(|error| { - bootstrap_failure( - BootstrapFailureCode::ServiceExited, - format!("failed to inspect bridge process: {error}"), - ) - })?, - None => None, - }; - if result.is_some() { - *process = None; - } - result - }; - if let Some(status) = result { - join_bridge_log_readers(); - return Ok(Some(format!("bridge exited with status {status}"))); - } - Ok(None) -} - -fn stop_tracked_bridge() { - if let Some(mut child) = BRIDGE_PROCESS.lock().unwrap().take() { - let _ = child.kill(); - let _ = child.wait(); - } - join_bridge_log_readers(); -} - -fn wait_for_owned_bridge( - app_handle: &tauri::AppHandle, - project_dir: &str, - timeout: Duration, -) -> Result<(), BootstrapFailure> { - let start = Instant::now(); - let mut unidentified_since: Option = None; - while start.elapsed() < timeout { - if let Some(detail) = bridge_exit_status()? { - return Err(bootstrap_failure( - BootstrapFailureCode::ServiceExited, - detail, - )); - } - - if let Some(identity) = bridge_reported_identity() { - match classify_listener_identity(Some(&identity), project_dir) { - ListenerIdentity::Owned => { - set_port_diagnostics(app_handle, PortState::Owned, Some(&identity)); - return Ok(()); - } - ListenerIdentity::KnownGenericAgent => { - set_port_diagnostics(app_handle, PortState::Foreign, Some(&identity)); - return Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - "a different GenericAgent bridge answered during readiness", - )); - } - ListenerIdentity::Foreign => { - set_port_diagnostics(app_handle, PortState::Foreign, None); - return Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - "a foreign identity response answered during readiness", - )); - } - } - } - - if is_bridge_running() { - let since = unidentified_since.get_or_insert_with(Instant::now); - if BRIDGE_PROCESS.lock().unwrap().is_none() || since.elapsed() >= Duration::from_secs(2) - { - set_port_diagnostics(app_handle, PortState::Foreign, None); - return Err(bootstrap_failure( - BootstrapFailureCode::PortConflict, - "an unidentified process answered during readiness", - )); - } - } else { - unidentified_since = None; - } - thread::sleep(Duration::from_millis(150)); - } - - Err(bootstrap_failure( - BootstrapFailureCode::ServiceTimeout, - format!( - "bridge identity did not become ready within {} seconds", - timeout.as_secs() - ), - )) -} - -fn main_ui_url_from_current(mut current_url: tauri::Url) -> Result { - if current_url.cannot_be_a_base() { - return Err("current main window URL cannot resolve an application asset".to_string()); - } - current_url.set_path("/index.html"); - current_url.set_query(None); - current_url.set_fragment(None); - Ok(current_url) -} - -fn open_main_window(app_handle: &tauri::AppHandle, dev_mode: bool) -> Result<(), BootstrapFailure> { - let main_window = app_handle.get_webview_window("main").ok_or_else(|| { - bootstrap_failure( - BootstrapFailureCode::UiNavigationFailed, - "main window is unavailable", - ) - })?; - // Derive the target from the webview's current loading.html URL so each - // platform keeps the asset scheme Tauri selected for it. WebView2 uses - // http://tauri.localhost while WKWebView uses tauri://localhost. - let current_url = main_window.url().map_err(|error| { - bootstrap_failure( - BootstrapFailureCode::UiNavigationFailed, - format!("main window URL could not be read: {error}"), - ) - })?; - let url = main_ui_url_from_current(current_url.clone()) - .map_err(|error| bootstrap_failure(BootstrapFailureCode::UiNavigationFailed, error))?; - // Source switches are invoked from index.html. Navigating that same webview while its - // Tauri command is in flight destroys the JavaScript callback, so the caller never sees - // the command resolve and a subsequent clear_ga_source can remain blocked. Initial - // bootstrap still moves loading.html to index.html; hot restarts keep the current page. - if current_url != url { - main_window.navigate(url).map_err(|error| { - bootstrap_failure( - BootstrapFailureCode::UiNavigationFailed, - format!("main window navigation failed: {error}"), - ) - })?; - } - main_window.show().map_err(|error| { - bootstrap_failure( - BootstrapFailureCode::UiNavigationFailed, - format!("main window could not be shown: {error}"), - ) - })?; - main_window.set_focus().map_err(|error| { - bootstrap_failure( - BootstrapFailureCode::UiNavigationFailed, - format!("main window could not be focused: {error}"), - ) - })?; - - if dev_mode { - main_window.open_devtools(); - } else { - let _ = main_window.eval( - r#" - document.addEventListener('keydown', function(e) { - if (e.key === 'F12' || e.key === 'F5' || - (e.ctrlKey && e.key === 'r') || - (e.ctrlKey && e.shiftKey && e.key === 'I')) { - e.preventDefault(); - } - }); - document.addEventListener('contextmenu', function(e) { - e.preventDefault(); - }); - "#, - ); - } - - if let Some(setup_window) = app_handle.get_webview_window("setup") { - let _ = setup_window.hide(); - } - Ok(()) -} - -fn show_bootstrap_recovery(app_handle: &tauri::AppHandle) { - if let Some(main_window) = app_handle.get_webview_window("main") { - let _ = main_window.hide(); - } - if let Some(setup_window) = app_handle.get_webview_window("setup") { - let _ = setup_window.show(); - let _ = setup_window.set_focus(); - } -} - -static BOOTSTRAP_RUN_LOCK: Mutex<()> = Mutex::new(()); - -fn bootstrap_inner( - app_handle: &tauri::AppHandle, - python_path: &str, - project_dir: &str, - dev_mode: bool, -) -> Result<(), BootstrapFailure> { - let project = PathBuf::from(project_dir); - if project_dir.trim().is_empty() - || !project.join("agentmain.py").exists() - || !project.join("frontends").join("desktop_bridge.py").exists() - { - return Err(bootstrap_failure( - BootstrapFailureCode::ConfigUnresolved, - format!("GenericAgent source was not found at {}", project.display()), - )); - } - if !python_interpreter_resolves(python_path) { - return Err(bootstrap_failure( - BootstrapFailureCode::SpawnFailed, - format!("Python interpreter was not found at {python_path}"), - )); - } - - ensure_builtin_ga_root(project_dir) - .map_err(|detail| bootstrap_failure(BootstrapFailureCode::PrepareFailed, detail))?; - - set_bootstrap_phase(app_handle, BootstrapPhase::Resolving, Some("validate"), 10); - let expected_ga_root = effective_ga_root(project_dir); - let prepare_needed = needs_first_run_prepare(project_dir); - let already_ready = resolve_existing_listener(app_handle, &expected_ga_root)?; - if already_ready { - snapshot_update(Some(app_handle), |snapshot| { - snapshot.mode = BootstrapMode::HotStart - }); - } else { - snapshot_update(Some(app_handle), |snapshot| { - snapshot.mode = if prepare_needed { - BootstrapMode::Prepare - } else { - BootstrapMode::ColdStart - }; - }); - if prepare_needed { - set_bootstrap_phase(app_handle, BootstrapPhase::Preparing, Some("validate"), 15); - let report = |progress: i32, stage: &str| { - set_bootstrap_phase( - app_handle, - BootstrapPhase::Preparing, - Some(stage), - progress.clamp(0, 100) as u8, - ); - }; - let log = |line: &str| record_diagnostic_log(app_handle, line); - run_offline_prepare(project_dir, &report, &log) - .map_err(|detail| bootstrap_failure(BootstrapFailureCode::PrepareFailed, detail))?; - } - - set_bootstrap_phase( - app_handle, - BootstrapPhase::StartingService, - Some("service"), - 82, - ); - spawn_bridge_process(app_handle, python_path, project_dir)?; - } - - set_bootstrap_phase( - app_handle, - BootstrapPhase::StartingService, - Some("service"), - 90, - ); - let timeout = if prepare_needed && !already_ready { - Duration::from_secs(60) - } else { - Duration::from_secs(30) - }; - wait_for_owned_bridge(app_handle, &expected_ga_root, timeout)?; - - set_bootstrap_phase(app_handle, BootstrapPhase::OpeningUi, Some("ui"), 98); - open_main_window(app_handle, dev_mode)?; - set_bootstrap_phase(app_handle, BootstrapPhase::Ready, None, 100); - maybe_setup_shortcut(); - Ok(()) -} - -fn execute_bootstrap( - app_handle: &tauri::AppHandle, - python_path: String, - project_dir: String, - dev_mode: bool, -) -> Result<(), String> { - let _run_guard = BOOTSTRAP_RUN_LOCK - .lock() - .map_err(|_| "bootstrap lock poisoned".to_string())?; - let initial_mode = if needs_first_run_prepare(&project_dir) { - BootstrapMode::Prepare - } else { - BootstrapMode::ColdStart - }; - begin_bootstrap(app_handle, initial_mode, &python_path, &project_dir); - - match bootstrap_inner(app_handle, &python_path, &project_dir, dev_mode) { - Ok(()) => Ok(()), - Err(failure) => { - if should_force_stop_tracked_bridge(failure.code) { - // This handle only ever refers to a child spawned by this desktop process. - // It is safe to stop; the unidentified listener itself is never targeted. - stop_tracked_bridge(); - } - record_diagnostic_log(app_handle, &failure.detail); - snapshot_update(Some(app_handle), |snapshot| { - snapshot.phase = BootstrapPhase::Failed; - snapshot.progress = snapshot.progress.min(99); - snapshot.failure = Some(failure.clone()); - }); - show_bootstrap_recovery(app_handle); - Err(failure.detail) - } - } -} - -fn should_force_stop_tracked_bridge(code: BootstrapFailureCode) -> bool { - matches!( - code, - BootstrapFailureCode::ServiceTimeout | BootstrapFailureCode::PortConflict - ) -} - -async fn execute_bootstrap_async( - app_handle: tauri::AppHandle, - python_path: String, - project_dir: String, - dev_mode: bool, -) -> Result<(), String> { - tauri::async_runtime::spawn_blocking(move || { - execute_bootstrap(&app_handle, python_path, project_dir, dev_mode) - }) - .await - .map_err(|error| format!("bootstrap task failed: {error}"))? -} - -fn resolve_requested_bootstrap_config( - requested_python: String, - requested_project: String, -) -> Result<(String, String), String> { - if bundle_root().is_some() { - return Ok(get_or_discover_config()); - } - let python = if requested_python.trim().is_empty() { - let settings = read_settings(); - let saved = settings.get("python_path").and_then(|value| value.as_str()); - discover_python_for_project_path(Path::new(requested_project.trim()), saved) - } else { - requested_python - }; - merge_settings(serde_json::json!({ - "python_path": python, - "project_dir": requested_project - }))?; - Ok((python, requested_project)) -} - -#[tauri::command] -async fn retry_bootstrap( - app_handle: tauri::AppHandle, - python_path: String, - project_dir: String, -) -> Result<(), String> { - let (python_path, project_dir) = resolve_requested_bootstrap_config(python_path, project_dir)?; - execute_bootstrap_async(app_handle, python_path, project_dir, false).await -} - -#[tauri::command] -async fn start_bridge_with_config( - app_handle: tauri::AppHandle, - python_path: String, - project_dir: String, -) -> Result<(), String> { - let (python_path, project_dir) = resolve_requested_bootstrap_config(python_path, project_dir)?; - execute_bootstrap_async(app_handle, python_path, project_dir, false).await -} - -#[tauri::command] -async fn start_bridge(app_handle: tauri::AppHandle) -> Result<(), String> { - let (python_path, project_dir) = get_or_discover_config(); - execute_bootstrap_async(app_handle, python_path, project_dir, false).await -} - -#[tauri::command] -fn get_config() -> (String, String) { - get_or_discover_config() -} - -#[tauri::command] -fn discover_python_for_project(project_dir: String, current_python: Option) -> String { - discover_python_for_project_path(Path::new(project_dir.trim()), current_python.as_deref()) -} - -#[tauri::command] -fn export_mykey(content: String) -> Result, String> { - let path = rfd::FileDialog::new() - .set_file_name("mykey.py") - .add_filter("Python", &["py"]) - .save_file(); - match path { - Some(p) => { - std::fs::write(&p, content.as_bytes()).map_err(|e| e.to_string())?; - Ok(Some(p.to_string_lossy().into_owned())) - } - None => Ok(None), - } -} - -#[tauri::command] -fn pick_directory(title: Option) -> Option { - let mut dlg = rfd::FileDialog::new(); - if let Some(t) = title { - if !t.is_empty() { - dlg = dlg.set_title(&t); - } - } - dlg.pick_folder().map(|p| p.to_string_lossy().into_owned()) -} - -#[tauri::command] -fn pick_python_interpreter(title: Option) -> Result, String> { - let mut dialog = rfd::FileDialog::new(); - #[cfg(windows)] - { - dialog = dialog.add_filter("Python", &["exe"]); - } - if let Some(value) = title.filter(|value| !value.is_empty()) { - dialog = dialog.set_title(&value); - } - let Some(path) = dialog.pick_file() else { - return Ok(None); - }; - if !path.is_file() { - return Err("the selected Python environment is unavailable".to_string()); - } - Ok(Some(display_path(&path))) -} - -#[tauri::command] -fn pick_data_backup_file(title: Option) -> Option { - let mut dialog = rfd::FileDialog::new().add_filter("ZIP", &["zip"]); - if let Some(value) = title.filter(|value| !value.is_empty()) { - dialog = dialog.set_title(&value); - } - dialog - .pick_file() - .map(|path| path.to_string_lossy().into_owned()) -} - -#[tauri::command] -fn pick_data_export_path(default_name: String, title: Option) -> Option { - let safe_default = Path::new(&default_name) - .file_name() - .and_then(|name| name.to_str()) - .filter(|name| name.to_ascii_lowercase().ends_with(".zip")) - .unwrap_or("GenericAgent-data-backup.zip"); - let mut dialog = rfd::FileDialog::new() - .add_filter("ZIP", &["zip"]) - .set_file_name(safe_default); - if let Some(value) = title.filter(|value| !value.is_empty()) { - dialog = dialog.set_title(&value); - } - dialog.save_file().map(|mut path| { - if path.extension().and_then(|value| value.to_str()) != Some("zip") { - path.set_extension("zip"); - } - path.to_string_lossy().into_owned() - }) -} - -#[tauri::command] -fn reveal_in_file_manager(path: String) -> Result<(), String> { - let target = PathBuf::from(path.trim()); - if !target.is_file() { - return Err("the selected file is unavailable".to_string()); - } - #[cfg(target_os = "macos")] - let mut command = { - let mut command = Command::new("open"); - command.arg("-R").arg(&target); - command - }; - #[cfg(windows)] - let mut command = { - let mut command = Command::new("explorer"); - command.arg("/select,").arg(&target); - command.creation_flags(0x08000000); - command - }; - #[cfg(all(unix, not(target_os = "macos")))] - let mut command = { - let mut command = Command::new("xdg-open"); - command.arg(target.parent().unwrap_or(Path::new("."))); - command - }; - command - .spawn() - .map(|_| ()) - .map_err(|error| format!("cannot reveal the selected file: {error}")) -} - -#[tauri::command] -fn get_ga_source() -> String { - valid_ga_source_override().unwrap_or_default() -} - -fn saved_ga_source_override() -> Option { - read_settings() - .get("ga_source_override") - .and_then(|value| value.as_str()) - .map(str::to_string) -} - -fn probe_ga_source(dir: &str) -> Result<(), String> { - let (python, bundle_project) = get_or_discover_config(); - if python.is_empty() { - return Err("no python available to run the compatibility probe".to_string()); - } - let probe = PathBuf::from(&bundle_project) - .join("frontends") - .join("ga_contract_probe.py"); - if !probe.exists() { - return Err("the packaged compatibility probe is missing".to_string()); - } - - let mut command = Command::new(python); - command.arg(probe).arg(dir); - sanitize_bundle_env(&mut command, &bundle_project); - command.env("GA_ROOT", dir); - #[cfg(windows)] - command.creation_flags(0x08000000); - let output = command - .output() - .map_err(|error| format!("compatibility probe failed to run: {error}"))?; - let stdout = String::from_utf8_lossy(&output.stdout); - if let Some(line) = stdout - .lines() - .rev() - .find(|line| line.trim_start().starts_with('{')) - { - if let Ok(verdict) = serde_json::from_str::(line.trim()) { - if verdict.get("ok").and_then(|value| value.as_bool()) == Some(true) { - return Ok(()); - } - let missing = verdict - .get("missing") - .and_then(|value| value.as_array()) - .map(|items| { - items - .iter() - .filter_map(|item| item.as_str()) - .collect::>() - .join(", ") - }) - .unwrap_or_default(); - let detail = verdict - .get("error") - .and_then(|value| value.as_str()) - .unwrap_or(""); - let mut message = "this GenericAgent core is not compatible".to_string(); - if !missing.is_empty() { - message.push_str(&format!(": missing {missing}")); - } - if !detail.is_empty() { - message.push_str(&format!(" ({detail})")); - } - return Err(message); - } - } - let stderr = String::from_utf8_lossy(&output.stderr); - Err(format!( - "compatibility probe returned no verdict: {}", - stderr.lines().last().unwrap_or("") - )) -} - -fn validated_ga_source(dir: &str) -> Result { - let source = PathBuf::from(dir.trim()); - if !source.join("agentmain.py").exists() { - return Err("not a GenericAgent source: agentmain.py not found".to_string()); - } - let source = source.canonicalize().unwrap_or(source); - let source_text = display_path(&source); - probe_ga_source(&source_text)?; - Ok(source_text) -} - -async fn restart_for_current_source(app_handle: tauri::AppHandle) -> Result { - let (python_path, project_dir) = get_or_discover_config(); - let expected_ga_root = effective_ga_root(&project_dir); - execute_bootstrap_async(app_handle, python_path, project_dir, false).await?; - Ok(expected_ga_root) -} - -async fn apply_ga_source_with_rollback( - app_handle: tauri::AppHandle, - next_override: Option, - previous_override: Option, -) -> Result { - restore_setting("ga_source_override", next_override)?; - match restart_for_current_source(app_handle.clone()).await { - Ok(root) => Ok(root), - Err(error) => { - restore_setting("ga_source_override", previous_override).map_err(|rollback_error| { - format!( - "{error}; restoring the previous workspace setting failed: {rollback_error}" - ) - })?; - match restart_for_current_source(app_handle).await { - Ok(_) => Err(error), - Err(rollback_error) => Err(format!( - "{error}; restoring the previous workspace also failed: {rollback_error}" - )), - } - } - } -} - -#[tauri::command] -async fn validate_ga_source(dir: String) -> Result { - tauri::async_runtime::spawn_blocking(move || validated_ga_source(&dir)) - .await - .map_err(|error| format!("compatibility probe task failed: {error}"))? -} - -#[tauri::command] -async fn set_ga_source(app_handle: tauri::AppHandle, dir: String) -> Result { - let source_text = validate_ga_source(dir).await?; - let previous_override = saved_ga_source_override(); - apply_ga_source_with_rollback(app_handle, Some(source_text), previous_override).await -} - -#[tauri::command] -async fn clear_ga_source(app_handle: tauri::AppHandle) -> Result { - let previous_override = saved_ga_source_override(); - apply_ga_source_with_rollback(app_handle, None, previous_override).await -} - -#[derive(Clone, Debug, Serialize)] -#[serde(rename_all = "camelCase")] -struct MacosTitlebarMetrics { - traffic_light_center_y: f64, - traffic_light_right_x: f64, -} - -#[cfg(target_os = "macos")] -fn measure_macos_titlebar_metrics( - webview: &tauri::webview::PlatformWebview, -) -> Result { - use objc2_app_kit::{NSView, NSWindow, NSWindowButton}; - - let ns_window = webview.ns_window(); - let webview_handle = webview.inner(); - if ns_window.is_null() || webview_handle.is_null() { - return Err("macOS titlebar native handles are unavailable".to_string()); - } - - // SAFETY: Tauri documents these handles as the NSWindow and WKWebView for - // this callback. with_webview schedules the callback on the main thread. - let window = unsafe { &*ns_window.cast::() }; - let content_view = unsafe { &*webview_handle.cast::() }; - let bounds = content_view.bounds(); - - let mut min_y = f64::INFINITY; - let mut max_x = f64::NEG_INFINITY; - let mut max_y = f64::NEG_INFINITY; - for kind in [ - NSWindowButton::CloseButton, - NSWindowButton::MiniaturizeButton, - NSWindowButton::ZoomButton, - ] { - let button = window - .standardWindowButton(kind) - .ok_or_else(|| "macOS titlebar button is unavailable".to_string())?; - // SAFETY: AppKit owns the standard button and its superview for the - // lifetime of this main-thread callback. - let superview = unsafe { button.superview() } - .ok_or_else(|| "macOS titlebar button has no superview".to_string())?; - let rect = content_view.convertRect_fromView(button.frame(), Some(&superview)); - min_y = min_y.min(rect.origin.y); - max_x = max_x.max(rect.origin.x + rect.size.width); - max_y = max_y.max(rect.origin.y + rect.size.height); - } - - let appkit_center_y = min_y + (max_y - min_y) / 2.0; - let traffic_light_center_y = if content_view.isFlipped() { - appkit_center_y - bounds.origin.y - } else { - bounds.origin.y + bounds.size.height - appkit_center_y - }; - let metrics = MacosTitlebarMetrics { - traffic_light_center_y, - traffic_light_right_x: max_x - bounds.origin.x, - }; - if !metrics.traffic_light_center_y.is_finite() - || !metrics.traffic_light_right_x.is_finite() - || metrics.traffic_light_center_y < 0.0 - || metrics.traffic_light_right_x < 0.0 - { - return Err("macOS titlebar metrics are invalid".to_string()); - } - Ok(metrics) -} - -#[tauri::command] -async fn get_macos_titlebar_metrics( - window: tauri::WebviewWindow, -) -> Result, String> { - #[cfg(target_os = "macos")] - { - let (sender, receiver) = std::sync::mpsc::sync_channel(1); - window - .with_webview(move |webview| { - let _ = sender.send(measure_macos_titlebar_metrics(&webview)); - }) - .map_err(|error| format!("cannot schedule macOS titlebar measurement: {error}"))?; - return tauri::async_runtime::spawn_blocking(move || { - receiver - .recv_timeout(Duration::from_secs(1)) - .map_err(|_| "macOS titlebar measurement timed out".to_string())? - .map(Some) - }) - .await - .map_err(|error| format!("macOS titlebar measurement task failed: {error}"))?; - } - - #[cfg(not(target_os = "macos"))] - { - let _ = window; - Ok(None) - } -} - -#[cfg_attr(mobile, tauri::mobile_entry_point)] -pub fn run() { - let args: Vec = std::env::args().collect(); - let no_autostart = args.iter().any(|a| a == "--no-autostart"); - let dev_mode = args.iter().any(|a| a == "--dev"); - - let (eff_py, eff_project) = get_or_discover_config(); - - let builder = tauri::Builder::default() - .plugin(tauri_plugin_opener::init()) - .plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| { - let bootstrap_failed = matches!( - BOOTSTRAP_STATE.lock().unwrap().phase, - BootstrapPhase::Failed - ); - if bootstrap_failed { - if let Some(window) = app.get_webview_window("setup") { - let _ = window.show(); - let _ = window.set_focus(); - } - } else if let Some(window) = app.get_webview_window("main") { - let _ = window.unminimize(); - let _ = window.show(); - let _ = window.set_focus(); - } - })); - - #[cfg(feature = "e2e")] - let builder = if std::env::var("GA_E2E").ok().as_deref() == Some("1") { - builder - .plugin(tauri_plugin_wdio::init()) - .plugin(tauri_plugin_wdio_webdriver::init()) - } else { - builder - }; - - builder - .invoke_handler(tauri::generate_handler![ - start_bridge_with_config, - start_bridge, - retry_bootstrap, - get_bootstrap_snapshot, - get_config, - discover_python_for_project, - export_mykey, - pick_directory, - pick_python_interpreter, - pick_data_backup_file, - pick_data_export_path, - reveal_in_file_manager, - get_ga_source, - validate_ga_source, - set_ga_source, - clear_ga_source, - get_macos_titlebar_metrics, - shortcut_should_ask, - shortcut_decide - ]) - .setup(move |app| { - // Show the loading window immediately so the first-run prepare isn't a blank screen. - // The window starts on loading.html (a local page), so no "connection refused" flash. - if let Some(w) = app.get_webview_window("main") { - // Windows: remove native decorations at runtime (config keeps them for macOS - // traffic lights). titleBarStyle:"Overlay" is macOS-only in Tauri v2. - #[cfg(windows)] - let _ = w.set_decorations(false); - let _ = w.show(); - } - - // Windows: system tray so the app can hide-on-close instead of exiting. - #[cfg(windows)] - { - let show_item = MenuItemBuilder::with_id("show", "显示主窗口").build(app)?; - let quit_item = MenuItemBuilder::with_id("quit", "退出").build(app)?; - let menu = MenuBuilder::new(app) - .item(&show_item) - .separator() - .item(&quit_item) - .build()?; - - let _tray = TrayIconBuilder::new() - .icon(app.default_window_icon().unwrap().clone()) - .tooltip("GenericAgent") - .menu(&menu) - .on_menu_event(|app, event| match event.id().as_ref() { - "show" => { - if let Some(w) = app.get_webview_window("main") { - let _ = w.show(); - let _ = w.unminimize(); - let _ = w.set_focus(); - } - } - "quit" => { - app.exit(0); - } - _ => {} - }) - .on_tray_icon_event(|tray, event| { - if let TrayIconEvent::Click { - button: MouseButton::Left, - button_state: MouseButtonState::Up, - .. - } = event - { - if let Some(w) = tray.app_handle().get_webview_window("main") { - let _ = w.show(); - let _ = w.unminimize(); - let _ = w.set_focus(); - } - } - }) - .build(app)?; - } - - let handle = app.handle().clone(); - let python_path = eff_py.clone(); - let project_dir = eff_project.clone(); - thread::spawn(move || { - if no_autostart && !is_bridge_running() { - begin_bootstrap( - &handle, - BootstrapMode::ColdStart, - &python_path, - &project_dir, - ); - let failure = bootstrap_failure( - BootstrapFailureCode::Unknown, - "automatic bridge startup was disabled by --no-autostart", - ); - snapshot_update(Some(&handle), |snapshot| { - snapshot.phase = BootstrapPhase::Failed; - snapshot.failure = Some(failure); - }); - show_bootstrap_recovery(&handle); - } else { - let _ = execute_bootstrap(&handle, python_path, project_dir, dev_mode); - } - }); - Ok(()) - }) - .on_window_event(|window, event| { - if let tauri::WindowEvent::CloseRequested { api, .. } = event { - let label = window.label(); - if label == "main" { - #[cfg(windows)] - { - // Windows: hide to tray instead of exiting. Bridge stays alive. - api.prevent_close(); - let _ = window.hide(); - } - #[cfg(not(windows))] - { - let _ = api; - window.app_handle().exit(0); - } - } else if label == "setup" { - // Setup closed -> exit if main is not visible - if let Some(main_win) = window.app_handle().get_webview_window("main") { - if !main_win.is_visible().unwrap_or(false) { - window.app_handle().exit(0); - } - } else { - window.app_handle().exit(0); - } - } - } - }) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn sensitive_diagnostic_lines_are_replaced_and_long_lines_are_bounded() { - assert_eq!( - sanitize_diagnostic_line("Authorization: Bearer super-secret"), - "[redacted sensitive diagnostic line]" - ); - assert_eq!( - sanitize_diagnostic_line("API_KEY=should-not-leak"), - "[redacted sensitive diagnostic line]" - ); - assert_eq!( - sanitize_diagnostic_line("[session] Quarterly planning"), - "[redacted sensitive diagnostic line]" - ); - assert_eq!( - sanitize_diagnostic_line("restored memory entry: personal note"), - "[redacted sensitive diagnostic line]" - ); - assert!(sanitize_diagnostic_line(&"x".repeat(4096)).len() <= MAX_DIAGNOSTIC_LINE_BYTES); - } - - #[test] - fn recent_log_buffer_keeps_only_the_last_hundred_lines() { - let mut logs = VecDeque::new(); - for index in 0..125 { - push_bounded_log(&mut logs, &format!("line-{index}")); - } - assert_eq!(logs.len(), MAX_DIAGNOSTIC_LINES); - assert_eq!(logs.front().map(String::as_str), Some("line-25")); - assert_eq!(logs.back().map(String::as_str), Some("line-124")); - } - - #[test] - fn listener_identity_distinguishes_owned_known_and_foreign_ports() { - let project = std::env::current_dir().unwrap(); - let project_text = project.to_string_lossy(); - let owned = serde_json::json!({ - "ga_root": project_text, - "build_id": env!("GA_BUILD_ID"), - "pid": 100 - }); - let old = serde_json::json!({ - "ga_root": project_text, - "build_id": "older-build", - "pid": 101 - }); - assert_eq!( - classify_listener_identity(Some(&owned), &project_text), - ListenerIdentity::Owned - ); - assert_eq!( - classify_listener_identity(Some(&old), &project_text), - ListenerIdentity::KnownGenericAgent - ); - assert_eq!( - classify_listener_identity(None, &project_text), - ListenerIdentity::Foreign - ); - assert_eq!( - classify_listener_identity(Some(&serde_json::json!({"status": "ok"})), &project_text), - ListenerIdentity::Foreign - ); - } - - #[test] - fn bridge_identity_is_bounded_and_only_keeps_allowlisted_fields() { - let normalized = normalize_bridge_identity(serde_json::json!({ - "ga_root": "/tmp/GenericAgent", - "build_id": "build-1", - "pid": 42, - "authorization": "must-not-survive" - })) - .unwrap(); - assert_eq!( - normalized.get("ga_root").and_then(|value| value.as_str()), - Some("/tmp/GenericAgent") - ); - assert_eq!( - normalized.get("build_id").and_then(|value| value.as_str()), - Some("build-1") - ); - assert_eq!( - normalized.get("pid").and_then(|value| value.as_u64()), - Some(42) - ); - assert!(normalized.get("authorization").is_none()); - - assert!(normalize_bridge_identity(serde_json::json!({ - "ga_root": "x".repeat(MAX_IDENTITY_PATH_BYTES + 1), - "build_id": "build-1", - "pid": 42 - })) - .is_none()); - assert!(normalize_bridge_identity(serde_json::json!({ - "ga_root": "/tmp/GenericAgent", - "build_id": "x".repeat(MAX_IDENTITY_BUILD_BYTES + 1), - "pid": 42 - })) - .is_none()); - } - - #[test] - fn bridge_shutdown_response_distinguishes_acceptance_and_explicit_refusal() { - assert_eq!( - parse_bridge_shutdown_response(b"HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\n{}"), - BridgeShutdownResponse::Accepted - ); - assert_eq!( - parse_bridge_shutdown_response( - b"HTTP/1.1 409 Conflict\r\nContent-Type: application/json\r\n\r\n{\"code\":\"maintenance_conflict\"}" - ), - BridgeShutdownResponse::Refused { - status: 409, - maintenance: true, - } - ); - assert_eq!( - parse_bridge_shutdown_response(b"HTTP/1.0 503 Unavailable\r\n\r\n"), - BridgeShutdownResponse::Refused { - status: 503, - maintenance: false, - } - ); - assert_eq!( - parse_bridge_shutdown_response(b"HTTP/1.1 409"), - BridgeShutdownResponse::Indeterminate - ); - assert_eq!( - parse_bridge_shutdown_response(b"NOT-HTTP 200 OK\r\n\r\n"), - BridgeShutdownResponse::Indeterminate - ); - let mut non_utf8_refusal = b"HTTP/1.1 503 Unavailable\r\n\r\n".to_vec(); - non_utf8_refusal.push(0xff); - assert_eq!( - parse_bridge_shutdown_response(&non_utf8_refusal), - BridgeShutdownResponse::Refused { - status: 503, - maintenance: false, - } - ); - } - - #[test] - fn explicit_shutdown_refusal_never_allows_force_stopping_the_tracked_bridge() { - let failure = shutdown_refusal_failure(BridgeShutdownResponse::Refused { - status: 409, - maintenance: true, - }) - .unwrap(); - assert_eq!(failure.code, BootstrapFailureCode::BridgeShutdownRefused); - assert!(failure.detail.contains("data maintenance")); - assert!(!should_force_stop_tracked_bridge(failure.code)); - assert!(should_force_stop_tracked_bridge( - BootstrapFailureCode::PortConflict - )); - assert!(should_force_stop_tracked_bridge( - BootstrapFailureCode::ServiceTimeout - )); - } - - #[test] - fn shutdown_request_honors_a_live_bridge_maintenance_refusal() { - use std::io::{Read, Write}; - use std::net::TcpListener; - use std::sync::mpsc; - - let listener = TcpListener::bind("127.0.0.1:0").unwrap(); - let port = listener.local_addr().unwrap().port(); - let (request_sender, request_receiver) = mpsc::channel(); - let server = thread::spawn(move || { - let (mut stream, _) = listener.accept().unwrap(); - let mut request = [0u8; 1024]; - let length = stream.read(&mut request).unwrap(); - request_sender.send(request[..length].to_vec()).unwrap(); - let body = br#"{"code":"maintenance_conflict"}"#; - write!( - stream, - "HTTP/1.1 409 Conflict\r\nContent-Type: application/json\r\nContent-Length: {}\r\nConnection: close\r\n\r\n", - body.len() - ) - .unwrap(); - stream.write_all(body).unwrap(); - }); - let endpoint = BridgeEndpoint { - host: "127.0.0.1".to_string(), - port, - }; - - assert_eq!( - request_bridge_shutdown_at(&endpoint), - BridgeShutdownResponse::Refused { - status: 409, - maintenance: true, - } - ); - let request = String::from_utf8(request_receiver.recv().unwrap()).unwrap(); - assert!(request.starts_with("POST /services/bridge/exit HTTP/1.1\r\n")); - server.join().unwrap(); - } - - #[test] - fn breakaway_fallback_is_limited_to_access_denied() { - assert!(should_retry_without_breakaway(Some(5))); - assert!(!should_retry_without_breakaway(Some(2))); - assert!(!should_retry_without_breakaway(None)); - } - - #[test] - fn python_validation_rejects_an_unresolvable_explicit_path() { - let current_exe = std::env::current_exe().unwrap(); - assert!(python_interpreter_resolves(¤t_exe.to_string_lossy())); - assert!(!python_interpreter_resolves( - "/definitely/missing/genericagent-python" - )); - } - - #[test] - fn project_python_discovery_prefers_venv_then_sorted_portable_then_saved() { - let root = std::env::temp_dir().join(format!( - "ga-python-discovery-{}-{}", - std::process::id(), - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos() - )); - let portable_a = root.join(".portable").join("uv-python").join("a"); - let portable_z = root.join(".portable").join("uv-python").join("z"); - #[cfg(windows)] - let portable_a_python = portable_a.join("python.exe"); - #[cfg(not(windows))] - let portable_a_python = portable_a.join("bin").join("python3"); - #[cfg(windows)] - let portable_z_python = portable_z.join("python.exe"); - #[cfg(not(windows))] - let portable_z_python = portable_z.join("bin").join("python3"); - std::fs::create_dir_all(portable_a_python.parent().unwrap()).unwrap(); - std::fs::create_dir_all(portable_z_python.parent().unwrap()).unwrap(); - std::fs::write(&portable_a_python, []).unwrap(); - std::fs::write(&portable_z_python, []).unwrap(); - - let current_exe = std::env::current_exe().unwrap(); - assert_eq!( - discover_python_for_project_path(&root, Some(current_exe.to_str().unwrap())), - display_path(&portable_a_python) - ); - - let venv = project_venv_python(&root); - std::fs::create_dir_all(venv.parent().unwrap()).unwrap(); - std::fs::write(&venv, []).unwrap(); - assert_eq!( - discover_python_for_project_path(&root, Some(current_exe.to_str().unwrap())), - display_path(&venv) - ); - std::fs::remove_dir_all(&root).unwrap(); - } - - #[test] - fn bridge_endpoint_uses_defaults_and_validates_overrides() { - let default = bridge_endpoint_from_values(None, None).unwrap(); - assert_eq!(default.host, "127.0.0.1"); - assert_eq!(default.port, 14168); - assert_eq!(default.socket_addr(), "127.0.0.1:14168"); - - let custom = bridge_endpoint_from_values(Some("localhost"), Some("24168")).unwrap(); - assert_eq!(custom.host, "localhost"); - assert_eq!(custom.port, 24168); - - assert!(bridge_endpoint_from_values(Some("0.0.0.0"), Some("24168")).is_err()); - assert!(bridge_endpoint_from_values(Some("127.0.0.1"), Some("0")).is_err()); - assert!(bridge_endpoint_from_values(Some("127.0.0.1"), Some("bad")).is_err()); - } - - #[test] - fn main_ui_url_keeps_the_platform_asset_origin() { - let windows = main_ui_url_from_current( - tauri::Url::parse("http://tauri.localhost/loading.html?phase=ready#status").unwrap(), - ) - .unwrap(); - assert_eq!(windows.as_str(), "http://tauri.localhost/index.html"); - - let macos = - main_ui_url_from_current(tauri::Url::parse("tauri://localhost/loading.html").unwrap()) - .unwrap(); - assert_eq!(macos.as_str(), "tauri://localhost/index.html"); - - let dev = main_ui_url_from_current( - tauri::Url::parse("http://localhost:5173/loading.html").unwrap(), - ) - .unwrap(); - assert_eq!(dev.as_str(), "http://localhost:5173/index.html"); - - let current = tauri::Url::parse("tauri://localhost/index.html").unwrap(); - assert_eq!(main_ui_url_from_current(current.clone()).unwrap(), current); - } - - #[test] - fn main_ui_url_rejects_non_hierarchical_urls() { - let data_url = tauri::Url::parse("data:text/plain,loading").unwrap(); - assert!(main_ui_url_from_current(data_url).is_err()); - } - - #[test] - fn explicit_e2e_settings_path_wins_over_platform_home_resolution() { - let resolved = resolve_settings_path( - Some(PathBuf::from("C:\\Users\\runneradmin")), - Some("C:\\sandbox\\home\\.ga_desktop_settings.json"), - ); - assert_eq!( - resolved, - PathBuf::from("C:\\sandbox\\home\\.ga_desktop_settings.json") - ); - - assert_eq!( - resolve_settings_path(Some(PathBuf::from("/home/user")), None), - PathBuf::from("/home/user/.ga_desktop_settings.json") - ); - } - - fn runtime_test_root(label: &str) -> PathBuf { - let root = std::env::temp_dir().join(format!( - "ga-runtime-{label}-{}-{}", - std::process::id(), - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos() - )); - std::fs::create_dir_all(&root).unwrap(); - root - } - - #[test] - fn settings_update_rejects_malformed_json_without_overwriting_it() { - let root = runtime_test_root("settings-malformed"); - let settings = root.join(".ga_desktop_settings.json"); - let malformed = b"{\"ga_source_override\":"; - std::fs::write(&settings, malformed).unwrap(); - - let error = update_settings_at(&settings, |document| { - document.insert("desktop_shortcut".to_string(), serde_json::json!(true)); - }) - .unwrap_err(); - - assert!(error.contains("cannot parse Desktop settings")); - assert_eq!(std::fs::read(&settings).unwrap(), malformed); - assert!(!settings - .with_file_name(".ga_desktop_settings.json.lock") - .exists()); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn settings_lock_serializes_read_modify_replace_and_preserves_union() { - use std::sync::mpsc; - - let root = runtime_test_root("settings-union"); - let settings = root.join(".ga_desktop_settings.json"); - std::fs::write(&settings, "{}\n").unwrap(); - let (locked_sender, locked_receiver) = mpsc::channel(); - let (release_sender, release_receiver) = mpsc::channel(); - let first_path = settings.clone(); - let first = thread::spawn(move || { - let _lock = SettingsFileLock::acquire(&first_path).unwrap(); - let mut document = read_settings_from_strict(&first_path).unwrap(); - locked_sender.send(()).unwrap(); - release_receiver.recv().unwrap(); - document.insert("ui".to_string(), serde_json::json!({"lang": "en"})); - write_settings_atomically(&first_path, &serde_json::Value::Object(document)).unwrap(); - }); - locked_receiver.recv().unwrap(); - let second_path = settings.clone(); - let second = thread::spawn(move || { - update_settings_at(&second_path, |document| { - document.insert("conductor".to_string(), serde_json::json!({"llmNo": 2})); - }) - .unwrap(); - }); - thread::sleep(Duration::from_millis(100)); - assert!(!second.is_finished()); - release_sender.send(()).unwrap(); - first.join().unwrap(); - second.join().unwrap(); - - let document = read_settings_from_strict(&settings).unwrap(); - assert_eq!(document.get("ui"), Some(&serde_json::json!({"lang": "en"}))); - assert_eq!( - document.get("conductor"), - Some(&serde_json::json!({"llmNo": 2})) - ); - assert!(!settings - .with_file_name(".ga_desktop_settings.json.lock") - .exists()); - let residue = std::fs::read_dir(&root) - .unwrap() - .filter_map(Result::ok) - .filter(|entry| entry.file_name().to_string_lossy().ends_with(".tmp")) - .count(); - assert_eq!(residue, 0); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn preserved_external_override_drives_spawn_and_listener_identity() { - let root = runtime_test_root("external-identity"); - let package = root.join("bundle").join("app"); - let external = root.join("external-core"); - std::fs::create_dir_all(&package).unwrap(); - std::fs::create_dir_all(&external).unwrap(); - std::fs::write(external.join("agentmain.py"), "# external").unwrap(); - let mut settings = serde_json::Map::new(); - settings.insert( - "ga_source_override".to_string(), - serde_json::json!(display_path(&external)), - ); - settings.insert("conductor".to_string(), serde_json::json!({"llmNo": 3})); - settings.insert("desktop_shortcut".to_string(), serde_json::json!(true)); - settings.insert("unknown".to_string(), serde_json::json!({"keep": true})); - settings.insert( - "python_path".to_string(), - serde_json::json!("/bundle/python"), - ); - settings.insert( - "project_dir".to_string(), - serde_json::json!(display_path(&package)), - ); - settings.insert( - "bridge_script".to_string(), - serde_json::json!(display_path(&package.join("frontends/desktop_bridge.py"))), - ); - - let expected_root = effective_ga_root_from(&display_path(&package), &settings); - let identity = serde_json::json!({ - "ga_root": expected_root, - "build_id": env!("GA_BUILD_ID"), - "pid": 42 - }); - - assert_eq!(expected_root, display_path(&external)); - assert_eq!( - classify_listener_identity(Some(&identity), &expected_root), - ListenerIdentity::Owned - ); - assert_eq!(settings["conductor"], serde_json::json!({"llmNo": 3})); - assert_eq!(settings["desktop_shortcut"], serde_json::json!(true)); - assert_eq!(settings["unknown"], serde_json::json!({"keep": true})); - std::fs::remove_dir_all(root).unwrap(); - } - - fn seed_package_runtime(root: &Path, agent_text: &str, bridge_text: &str) { - std::fs::create_dir_all(root.join("frontends")).unwrap(); - std::fs::create_dir_all(root.join("memory")).unwrap(); - std::fs::create_dir_all(root.join("temp")).unwrap(); - std::fs::write(root.join("agentmain.py"), agent_text).unwrap(); - std::fs::write( - root.join("frontends").join("desktop_bridge.py"), - bridge_text, - ) - .unwrap(); - std::fs::write(root.join("memory").join("package-default.md"), "package").unwrap(); - std::fs::write(root.join("temp").join("package-cache.txt"), "package").unwrap(); - std::fs::write(root.join("mykey_template.py"), "# template").unwrap(); - } - - fn write_runtime_marker(root: &Path, marker: &RuntimePackageMarker) { - std::fs::write( - runtime_marker_path(root), - serde_json::to_string_pretty(marker).unwrap(), - ) - .unwrap(); - } - - fn runtime_tree_bytes(root: &Path) -> Vec<(PathBuf, Vec)> { - fn collect(root: &Path, folder: &Path, output: &mut Vec<(PathBuf, Vec)>) { - for entry in std::fs::read_dir(folder).unwrap() { - let path = entry.unwrap().path(); - if path.is_dir() { - collect(root, &path, output); - } else { - output.push(( - path.strip_prefix(root).unwrap().to_path_buf(), - std::fs::read(path).unwrap(), - )); - } - } - } - - let mut output = Vec::new(); - collect(root, root, &mut output); - output.sort_by(|left, right| left.0.cmp(&right.0)); - output - } - - #[test] - fn fresh_runtime_install_never_writes_the_packaged_source() { - let root = runtime_test_root("fresh-install"); - let package = root - .join("GenericAgent.app") - .join("Contents") - .join("Resources"); - let runtime = root.join("application-support").join("app"); - seed_package_runtime(&package, "packaged agent", "packaged bridge"); - let package_before = runtime_tree_bytes(&package); - let expected = expected_runtime_marker(); - - let result = refresh_runtime_copy(&package, &runtime, &expected).unwrap(); - - assert_eq!(result, RuntimeCopyStatus::Installed); - assert_eq!(runtime_tree_bytes(&package), package_before); - assert!(!runtime_marker_path(&package).exists()); - assert_eq!(read_runtime_marker(&runtime), Some(expected)); - assert_eq!( - std::fs::read_to_string(runtime.join("agentmain.py")).unwrap(), - "packaged agent" - ); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn stale_same_version_runtime_refreshes_package_code_and_preserves_user_data() { - let root = runtime_test_root("refresh"); - let package = root.join("signed-package-app"); - let runtime = root.join("application-support").join("app"); - seed_package_runtime(&package, "new agent", "new bridge"); - seed_package_runtime(&runtime, "old fork agent", "old fork bridge"); - - std::fs::write(runtime.join("mykey.py"), "user key").unwrap(); - std::fs::write(runtime.join("mykey.json"), "user json key").unwrap(); - std::fs::write(runtime.join("memory").join("user.md"), "remember me").unwrap(); - std::fs::remove_file(runtime.join("memory").join("package-default.md")).unwrap(); - let responses = runtime.join("temp").join("model_responses"); - let sessions = runtime.join("temp").join("desktop_sessions"); - std::fs::create_dir_all(&responses).unwrap(); - std::fs::create_dir_all(&sessions).unwrap(); - std::fs::write(responses.join("response.txt"), "response").unwrap(); - std::fs::write(sessions.join("sess-one.json"), "session").unwrap(); - std::fs::write( - runtime.join("temp").join("tui_v3_settings.json"), - "settings", - ) - .unwrap(); - std::fs::write(runtime.join("temp").join("token_ledger.jsonl"), "ledger").unwrap(); - let host_settings = root.join(".ga_desktop_settings.json"); - std::fs::write(&host_settings, "host settings").unwrap(); - - let expected = expected_runtime_marker(); - let mut old_marker = expected.clone(); - old_marker.build_id = "old-fork-build".to_string(); - old_marker.source_revision = "old-fork-source".to_string(); - write_runtime_marker(&runtime, &old_marker); - - let result = refresh_runtime_copy(&package, &runtime, &expected).unwrap(); - - assert_eq!(result, RuntimeCopyStatus::Refreshed); - assert_eq!( - std::fs::read_to_string(runtime.join("agentmain.py")).unwrap(), - "new agent" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("frontends").join("desktop_bridge.py")).unwrap(), - "new bridge" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("mykey.py")).unwrap(), - "user key" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("mykey.json")).unwrap(), - "user json key" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("memory").join("user.md")).unwrap(), - "remember me" - ); - assert!(!runtime.join("memory").join("package-default.md").exists()); - assert_eq!( - std::fs::read_to_string(responses.join("response.txt")).unwrap(), - "response" - ); - assert_eq!( - std::fs::read_to_string(sessions.join("sess-one.json")).unwrap(), - "session" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("temp").join("tui_v3_settings.json")).unwrap(), - "settings" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("temp").join("token_ledger.jsonl")).unwrap(), - "ledger" - ); - assert_eq!(read_runtime_marker(&runtime), Some(expected)); - assert_eq!( - std::fs::read_to_string(&host_settings).unwrap(), - "host settings" - ); - assert_eq!( - std::fs::read_to_string(package.join("agentmain.py")).unwrap(), - "new agent" - ); - assert!(!runtime_marker_path(&package).exists()); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn matching_runtime_marker_keeps_hot_start_copy_untouched() { - let root = runtime_test_root("current"); - let package = root.join("signed-package-app"); - let runtime = root.join("application-support").join("app"); - seed_package_runtime(&package, "new package bytes", "new package bridge"); - seed_package_runtime(&runtime, "already active bytes", "already active bridge"); - let expected = expected_runtime_marker(); - write_runtime_marker(&runtime, &expected); - - let result = refresh_runtime_copy(&package, &runtime, &expected).unwrap(); - - assert_eq!(result, RuntimeCopyStatus::Current); - assert_eq!( - std::fs::read_to_string(runtime.join("agentmain.py")).unwrap(), - "already active bytes" - ); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn failed_runtime_activation_restores_old_code_marker_and_user_data() { - let root = runtime_test_root("rollback"); - let package = root.join("signed-package-app"); - let runtime = root.join("application-support").join("app"); - seed_package_runtime(&package, "new agent", "new bridge"); - seed_package_runtime(&runtime, "old agent", "old bridge"); - std::fs::write(runtime.join("mykey.py"), "user key").unwrap(); - std::fs::write(runtime.join("memory").join("user.md"), "user memory").unwrap(); - let expected = expected_runtime_marker(); - let mut old_marker = expected.clone(); - old_marker.build_id = "old-build".to_string(); - write_runtime_marker(&runtime, &old_marker); - - let error = refresh_runtime_copy_with_activation( - &package, - &runtime, - None, - &expected, - |_staging, _destination| { - Err(std::io::Error::new( - std::io::ErrorKind::PermissionDenied, - "simulated activation failure", - )) - }, - ) - .unwrap_err(); - - assert!(error.contains("simulated activation failure")); - assert_eq!( - std::fs::read_to_string(runtime.join("agentmain.py")).unwrap(), - "old agent" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("mykey.py")).unwrap(), - "user key" - ); - assert_eq!( - std::fs::read_to_string(runtime.join("memory").join("user.md")).unwrap(), - "user memory" - ); - assert_eq!(read_runtime_marker(&runtime), Some(old_marker)); - let leftovers = std::fs::read_dir(runtime.parent().unwrap()) - .unwrap() - .filter_map(Result::ok) - .filter(|entry| entry.file_name().to_string_lossy().starts_with(".app-")) - .count(); - assert_eq!(leftovers, 0); - assert_eq!( - std::fs::read_to_string(package.join("agentmain.py")).unwrap(), - "new agent" - ); - assert!(!runtime_marker_path(&package).exists()); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn legacy_versioned_runtime_migrates_into_stable_root_with_all_user_data() { - let root = runtime_test_root("legacy-migration"); - let package = root.join("signed-package-app"); - let runtime_parent = root.join("application-support").join("runtime"); - let legacy = runtime_parent.join("0.2.0").join("app"); - let stable = runtime_parent.join("app"); - seed_package_runtime(&package, "new agent", "new bridge"); - seed_package_runtime(&legacy, "old agent", "old bridge"); - std::fs::write(legacy.join("mykey.py"), "user key").unwrap(); - std::fs::write(legacy.join("mykey.json"), "user json key").unwrap(); - std::fs::write(legacy.join("memory").join("user.md"), "memory").unwrap(); - std::fs::create_dir_all(legacy.join("temp").join("desktop_sessions")).unwrap(); - std::fs::write( - legacy - .join("temp") - .join("desktop_sessions") - .join("sess.json"), - "session", - ) - .unwrap(); - std::fs::write(legacy.join("temp").join("token_ledger.jsonl"), "ledger").unwrap(); - let mut legacy_marker = expected_runtime_marker(); - legacy_marker.package_version = "0.2.0".to_string(); - legacy_marker.build_id = "old-build".to_string(); - write_runtime_marker(&legacy, &legacy_marker); - let mut expected = expected_runtime_marker(); - expected.package_version = "0.2.1".to_string(); - expected.build_id = "new-build".to_string(); - - assert_eq!( - trusted_legacy_runtime(&runtime_parent).unwrap(), - Some(legacy.clone()) - ); - let result = - refresh_runtime_copy_from_legacy(&package, &legacy, &stable, &expected).unwrap(); - - assert_eq!(result, RuntimeCopyStatus::Installed); - assert_eq!( - std::fs::read_to_string(stable.join("agentmain.py")).unwrap(), - "new agent" - ); - assert_eq!( - std::fs::read_to_string(stable.join("mykey.py")).unwrap(), - "user key" - ); - assert_eq!( - std::fs::read_to_string(stable.join("mykey.json")).unwrap(), - "user json key" - ); - assert_eq!( - std::fs::read_to_string(stable.join("memory").join("user.md")).unwrap(), - "memory" - ); - assert_eq!( - std::fs::read_to_string( - stable - .join("temp") - .join("desktop_sessions") - .join("sess.json") - ) - .unwrap(), - "session" - ); - assert_eq!( - std::fs::read_to_string(stable.join("temp").join("token_ledger.jsonl")).unwrap(), - "ledger" - ); - assert_eq!(read_runtime_marker(&stable), Some(expected)); - assert!(!legacy.exists()); - std::fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn failed_legacy_runtime_activation_leaves_legacy_data_and_no_stable_root() { - let root = runtime_test_root("legacy-rollback"); - let package = root.join("signed-package-app"); - let legacy = root.join("runtime").join("0.2.0").join("app"); - let stable = root.join("runtime").join("app"); - seed_package_runtime(&package, "new agent", "new bridge"); - seed_package_runtime(&legacy, "old agent", "old bridge"); - std::fs::write(legacy.join("mykey.py"), "user key").unwrap(); - let expected = expected_runtime_marker(); - - let error = refresh_runtime_copy_with_activation( - &package, - &stable, - Some(&legacy), - &expected, - |_staging, _active| { - Err(std::io::Error::new( - std::io::ErrorKind::PermissionDenied, - "simulated migration activation failure", - )) - }, - ) - .unwrap_err(); - - assert!(error.contains("simulated migration activation failure")); - assert!(!stable.exists()); - assert_eq!( - std::fs::read_to_string(legacy.join("agentmain.py")).unwrap(), - "old agent" - ); - assert_eq!( - std::fs::read_to_string(legacy.join("mykey.py")).unwrap(), - "user key" - ); - std::fs::remove_dir_all(root).unwrap(); - } -} diff --git a/frontends/desktop/src-tauri/src/main.rs b/frontends/desktop/src-tauri/src/main.rs deleted file mode 100644 index ab57d1cb..00000000 --- a/frontends/desktop/src-tauri/src/main.rs +++ /dev/null @@ -1,5 +0,0 @@ -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -fn main() { - ga_desktop_lib::run() -} diff --git a/frontends/desktop/src-tauri/tauri.conf.json b/frontends/desktop/src-tauri/tauri.conf.json deleted file mode 100644 index cc022341..00000000 --- a/frontends/desktop/src-tauri/tauri.conf.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "productName": "GenericAgent", - "version": "0.2.1", - "identifier": "com.genericagent.app", - "build": { - "frontendDist": "../dist" - }, - "app": { - "withGlobalTauri": true, - "security": { - "csp": { - "default-src": "'self' tauri: asset:", - "script-src": "'self'", - "style-src": "'self' 'unsafe-inline'", - "font-src": "'self' data: asset: http://asset.localhost", - "img-src": "'self' data: blob: asset: http://asset.localhost http://127.0.0.1:14168 http://localhost:14168", - "media-src": "'self' data: blob: http://127.0.0.1:14168 http://localhost:14168", - "connect-src": "'self' ipc: http://ipc.localhost http://127.0.0.1:14168 http://localhost:14168 ws://127.0.0.1:14168 ws://localhost:14168 http://127.0.0.1:8900 http://localhost:8900 ws://127.0.0.1:8900 ws://localhost:8900", - "worker-src": "'self' blob:", - "object-src": "'none'", - "base-uri": "'self'", - "form-action": "'none'", - "frame-src": "'none'", - "frame-ancestors": "'none'" - }, - "devCsp": { - "default-src": "'self' tauri: asset: http://localhost:5173", - "script-src": "'self' 'unsafe-inline' 'unsafe-eval' http://localhost:5173", - "style-src": "'self' 'unsafe-inline' http://localhost:5173", - "font-src": "'self' data: asset: http://asset.localhost http://localhost:5173", - "img-src": "'self' data: blob: asset: http://asset.localhost http://localhost:5173 http://127.0.0.1:14168 http://localhost:14168", - "media-src": "'self' data: blob: http://127.0.0.1:14168 http://localhost:14168", - "connect-src": "'self' ipc: http://ipc.localhost http://localhost:5173 ws://localhost:5173 http://127.0.0.1:14168 http://localhost:14168 ws://127.0.0.1:14168 ws://localhost:14168 http://127.0.0.1:8900 http://localhost:8900 ws://127.0.0.1:8900 ws://localhost:8900", - "worker-src": "'self' blob:", - "object-src": "'none'", - "base-uri": "'self'", - "form-action": "'none'", - "frame-src": "'none'", - "frame-ancestors": "'none'" - }, - "capabilities": ["default", "setup"] - }, - "windows": [ - { - "title": "", - "label": "main", - "width": 1280, - "height": 800, - "resizable": true, - "maximized": false, - "visible": false, - "titleBarStyle": "Overlay", - "trafficLightPosition": { "x": 13, "y": 22 }, - "dragDropEnabled": false, - "url": "loading.html" - }, - { - "title": "", - "label": "setup", - "width": 600, - "height": 580, - "resizable": false, - "visible": false, - "center": true, - "url": "setup.html" - } - ] - }, - "bundle": { - "active": true, - "targets": ["nsis", "dmg"], - "icon": ["icons/icon.ico", "icons/icon.png", "icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png"], - "macOS": { - "dmg": { - "windowSize": { - "width": 540, - "height": 380 - }, - "appPosition": { - "x": 140, - "y": 200 - }, - "applicationFolderPosition": { - "x": 400, - "y": 200 - } - } - } - } -} diff --git a/frontends/desktop/src-tauri/tauri.e2e.conf.json b/frontends/desktop/src-tauri/tauri.e2e.conf.json deleted file mode 100644 index 0df11198..00000000 --- a/frontends/desktop/src-tauri/tauri.e2e.conf.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "app": { - "security": { - "csp": { - "connect-src": "'self' ipc: http://ipc.localhost http://127.0.0.1:* ws://127.0.0.1:* http://localhost:14168 ws://localhost:14168 http://127.0.0.1:8900 http://localhost:8900 ws://127.0.0.1:8900 ws://localhost:8900" - }, - "capabilities": [ - "default", - "setup", - { - "identifier": "e2e", - "description": "Test-only WebdriverIO capability", - "windows": ["main", "setup"], - "permissions": ["wdio:default"] - } - ] - } - } -} diff --git a/frontends/desktop/static/app.js b/frontends/desktop/static/app.js deleted file mode 100644 index 85bc8449..00000000 --- a/frontends/desktop/static/app.js +++ /dev/null @@ -1,6245 +0,0 @@ -// GenericAgent 桌面版 —— bridge 适配 + 业务 UI(HTTP 命令 / WS 状态 / i18n)。 -// 文案全部走 i18n:静态用 data-i18n / data-i18n-ph / data-i18n-title, -// 动态用 t(key)。dev 标注层与发给 agent 的预设 prompt 不进 UI 字典。 -'use strict'; - -/* ═══════════════ 端口/URL 常量 ═══════════════ - bridge / conductor 的端口和 origin 都集中在这里。要换端口、要切同源、 - 要让 bridge 代理 conductor —— 改这一块即可,下面所有 URL 引用全都跟着走。 - *_ORIGIN 不带尾巴 path,调用方自己拼 "/sessions" "/ws" 等。 */ -const BRIDGE_PORT = 14168; -const CONDUCTOR_PORT = 8900; -const BRIDGE_ORIGIN = `${location.protocol}//${location.hostname}:${BRIDGE_PORT}`; -const BRIDGE_WS_ORIGIN = `${location.protocol === 'https:' ? 'wss:' : 'ws:'}//${location.hostname}:${BRIDGE_PORT}`; -const CONDUCTOR_ORIGIN = `${location.protocol}//${location.hostname}:${CONDUCTOR_PORT}`; -const CONDUCTOR_WS_ORIGIN = `${location.protocol === 'https:' ? 'wss:' : 'ws:'}//${location.hostname}:${CONDUCTOR_PORT}`; - -/* ═══════════════ 进程状态 store ═══════════════ */ -const _serviceById = {}; -const _serviceListeners = new Set(); - -function _serviceList() { - return Object.values(_serviceById).sort((a, b) => String(a.id).localeCompare(String(b.id))); -} - -function _serviceNotify() { - const items = _serviceList(); - for (const cb of _serviceListeners) { - try { cb(items, _serviceById); } catch (e) { console.error('[service-store]', e); } - } -} - -const gaServiceStore = { - applySnapshot(services) { - for (const k of Object.keys(_serviceById)) delete _serviceById[k]; - for (const s of services || []) { - if (s && s.id) _serviceById[s.id] = s; - } - _serviceNotify(); - }, - applyChanged(service) { - if (service && service.id) _serviceById[service.id] = service; - _serviceNotify(); - }, - onServices(cb) { - _serviceListeners.add(cb); - cb(_serviceList(), _serviceById); - return () => _serviceListeners.delete(cb); - }, - list: _serviceList, - get: (id) => _serviceById[id], -}; - -let bridgeUiOffline = false; - -/* ═══════════════ Bridge 适配(HTTP 命令 + WS 状态) ═══════════════ */ -(function initGaBridge() { - const listeners = new Map(); - let ws = null; - let cachedBridgeReady = null; - let wsRetries = 0; - let wsRetryTimer = null; - const bridgeBase = BRIDGE_ORIGIN; - const wsUrl = `${BRIDGE_WS_ORIGIN}/ws`; - - function on(channel, cb) { - if (typeof cb !== 'function') return () => {}; - if (!listeners.has(channel)) listeners.set(channel, new Set()); - listeners.get(channel).add(cb); - if (channel === 'bridge-ready' && cachedBridgeReady) { - try { cb(cachedBridgeReady); } catch (err) { console.error('[ga bridge] replay bridge-ready', err); } - } - return () => listeners.get(channel)?.delete(cb); - } - - function emit(channel, payload) { - if (channel === 'bridge-ready') cachedBridgeReady = payload; - const set = listeners.get(channel); - if (!set) return; - for (const cb of Array.from(set)) { - try { cb(payload); } catch (err) { console.error('[ga bridge]', channel, err); } - } - } - - function handleServiceWs(msg) { - if (msg.type === 'services.snapshot') gaServiceStore.applySnapshot(msg.services); - else if (msg.type === 'service.changed') gaServiceStore.applyChanged(msg.service); - emit('service-state', msg); - } - - const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); - const tauriInvoke = (name, args = {}) => { - const invoke = window.__TAURI__?.core?.invoke; - if (!invoke) throw new Error('Tauri IPC is not available'); - return invoke(name, args); - }; - - async function http(path, options = {}) { - const headers = Object.assign({}, options.headers || {}); - const init = Object.assign({}, options, { headers }); - if (init.body && typeof init.body !== 'string') { - headers['Content-Type'] = headers['Content-Type'] || 'application/json'; - init.body = JSON.stringify(init.body); - } - const res = await fetch(`${bridgeBase}${path}`, init); - const text = await res.text(); - let data = null; - try { data = text ? JSON.parse(text) : {}; } catch (_) { data = { raw: text }; } - if (!res.ok) { - const err = new Error((data && (data.error || data.message)) || `${res.status} ${res.statusText}`); - err.status = res.status; - err.data = data; - throw err; - } - return data; - } - - async function waitBridgeStatus(timeoutMs = 20000) { - const deadline = Date.now() + timeoutMs; - let lastErr = null; - while (Date.now() < deadline) { - try { - const status = await http('/status'); - wsRetries = 0; - connectWs(); - return status; - } catch (err) { - lastErr = err; - await sleep(350); - } - } - throw lastErr || new Error('Bridge did not become ready'); - } - - function connectWs() { - if (ws && (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING)) return; - if (wsRetryTimer) { clearTimeout(wsRetryTimer); wsRetryTimer = null; } - try { - ws = new WebSocket(wsUrl); - ws.addEventListener('open', () => { wsRetries = 0; emit('bridge-log', 'WS connected'); }); - ws.addEventListener('message', (ev) => { - let msg; - try { msg = JSON.parse(ev.data); } catch (_) { return; } - if (msg.type === 'bridge-ready') emit('bridge-ready', msg); - else if (msg.type === 'services.snapshot' || msg.type === 'service.changed') handleServiceWs(msg); - else if (msg.type === 'session-state') emit('bridge-notification', msg); - else if (msg.type === 'bridge-log') emit('bridge-log', msg.payload || msg); - else if (msg.type === 'bridge-error') emit('bridge-error', msg.payload || msg); - }); - ws.addEventListener('close', () => { emit('bridge-closed', { reason: 'ws-closed' }); scheduleWsReconnect(); }); - ws.addEventListener('error', () => emit('bridge-error', { type: 'ws-error', message: 'WebSocket error' })); - } catch (err) { - emit('bridge-error', { type: 'ws-error', message: err.message || String(err) }); - scheduleWsReconnect(); - } - } - - /* WS 自动重连(指数退避,封顶 30s)。手机浏览器后台会被 OS 掐 WS, - 不重连的话回到前台还是死连接。`visibilitychange` 那一段是回前台立刻重连。 */ - function scheduleWsReconnect() { - if (wsRetryTimer) clearTimeout(wsRetryTimer); - if (typeof document !== 'undefined' && document.hidden) return; // 后台等回前台再连 - const delay = Math.min(30000, 1000 * Math.pow(2, wsRetries)); - wsRetries++; - wsRetryTimer = setTimeout(() => { wsRetryTimer = null; connectWs(); }, delay); - } - if (typeof document !== 'undefined') { - document.addEventListener('visibilitychange', () => { - if (!document.hidden && (!ws || ws.readyState >= WebSocket.CLOSING)) { - wsRetries = 0; connectWs(); - } - }); - } - - async function rpc(method, params = {}) { - switch (method) { - case 'app/status': return http('/status'); - case 'app/config/get': return http('/config'); - case 'app/config/save': return http('/config', { method: 'POST', body: params || {} }); - case 'get/model-profiles': return http('/model-profiles'); - case 'session/new': return http('/session/new', { method: 'POST', body: params || {} }); - case 'session/prompt': { - const sid = params.sessionId || params.id || params.bridgeSessionId; - if (!sid) throw new Error('session/prompt missing sessionId'); - return http(`/session/${encodeURIComponent(sid)}/prompt`, { method: 'POST', body: params || {} }); - } - case 'session/poll': { - const sid = params.sessionId || params.id || params.bridgeSessionId; - if (!sid) throw new Error('session/poll missing sessionId'); - const after = params.afterId ?? params.after ?? 0; - const limit = params.limit ?? 200; - return http(`/session/${encodeURIComponent(sid)}/messages?after=${encodeURIComponent(after)}&limit=${encodeURIComponent(limit)}`); - } - case 'session/cancel': { - const sid = params.sessionId || params.id || params.bridgeSessionId; - if (!sid) throw new Error('session/cancel missing sessionId'); - return http(`/session/${encodeURIComponent(sid)}/cancel`, { method: 'POST', body: params || {} }); - } - case 'app/path/open': return http('/path/open', { method: 'POST', body: params || {} }); - case 'services/start': { - const id = params.id; - if (!id) throw new Error('services/start missing id'); - return http('/services/start', { method: 'POST', body: { id } }); - } - case 'services/stop': { - const id = params.id; - if (!id) throw new Error('services/stop missing id'); - return http('/services/stop', { method: 'POST', body: { id } }); - } - case 'services/logs': { - const id = params.id; - if (!id) throw new Error('services/logs missing id'); - const tail = params.tail ?? 200; - return http(`/services/logs?id=${encodeURIComponent(id)}&tail=${encodeURIComponent(tail)}`); - } - case 'services/panel': return http('/services/panel'); - case 'services/bridge/exit': return http('/services/bridge/exit', { method: 'POST' }); - case 'services/mykey/get': return http('/services/mykey'); - case 'services/mykey/save': return http('/services/mykey', { method: 'POST', body: params || {} }); - case 'services/conductor/model/get': return http('/services/conductor/model'); - case 'services/conductor/model/save': return http('/services/conductor/model', { method: 'POST', body: params || {} }); - case 'memory/import': return http('/memory/import', { method: 'POST', body: params || {} }); - case 'app/path/selectGaRoot': return http('/config'); - case 'list_continuable_sessions': return { sessions: [] }; - case 'restore_session': throw new Error('restore_session is not implemented in web2 bridge'); - default: throw new Error(`Unknown RPC method: ${method}`); - } - } - - async function startService(id) { - try { - const res = await rpc('services/start', { id }); - if (res.service) gaServiceStore.applyChanged(res.service); - return res; - } catch (e) { - if (e.data && e.data.service) gaServiceStore.applyChanged(e.data.service); - throw e; - } - } - - async function stopService(id) { - const res = await rpc('services/stop', { id }); - if (res.service) gaServiceStore.applyChanged(res.service); - return res; - } - - async function spawnBridge() { - connectWs(); - try { - const status = await http('/status'); - bridgeUiOffline = false; - return status; - } catch (_) { - await tauriInvoke('start_bridge'); - const status = await waitBridgeStatus(); - bridgeUiOffline = false; - return status; - } - } - - async function exitBridge() { - const res = await rpc('services/bridge/exit'); - cachedBridgeReady = null; - if (ws) { - try { ws.close(); } catch (_) {} - } - return res; - } - - window.ga = { - platform: navigator.platform.toLowerCase().includes('mac') ? 'darwin' : 'win32', - startBridge: async () => { connectWs(); return http('/status'); }, - spawnBridge, - stopBridge: async () => ({ ok: true }), - exitBridge, - checkStatus: () => rpc('app/status', {}), - getConfig: () => rpc('app/config/get', {}), - saveConfig: (cfg) => rpc('app/config/save', cfg || {}), - getModelProfiles: () => rpc('get/model-profiles', {}), - selectGaRoot: () => rpc('app/path/selectGaRoot', {}), - openMykeyTemplate: () => rpc('app/path/open', { kind: 'mykeyTemplate' }), - openMykey: () => rpc('app/path/open', { kind: 'mykey' }), - startService, - stopService, - getServiceLogs: (id, tail = 200) => rpc('services/logs', { id, tail }), - getServicePanel: () => rpc('services/panel', {}), - getMykeyContent: () => rpc('services/mykey/get', {}), - saveMykeyContent: (content) => rpc('services/mykey/save', { content }), - importMemory: (sourceDir) => rpc('memory/import', { sourceDir }), - getGaSource: () => tauriInvoke('get_ga_source'), - setGaSource: (dir) => tauriInvoke('set_ga_source', { dir }), - clearGaSource: () => tauriInvoke('clear_ga_source'), - moveGaRuntime: (dir) => tauriInvoke('move_ga_runtime', { dir }), - getConductorModel: () => rpc('services/conductor/model/get', {}), - saveConductorModel: (llmNo) => rpc('services/conductor/model/save', { llmNo }), - tauriInvoke, - setBridgeUiOffline: (offline) => { bridgeUiOffline = !!offline; }, - pollSession: (sessionId, afterId = 0) => rpc('session/poll', { sessionId, afterId }), - rpc, - onBridgeMessage: (cb) => on('bridge-message', cb), - onBridgeNotification: (cb) => on('bridge-notification', cb), - onBridgeError: (cb) => on('bridge-error', cb), - onBridgeClosed: (cb) => on('bridge-closed', cb), - onBridgeReady: (cb) => on('bridge-ready', cb), - onBridgeLog: (cb) => on('bridge-log', cb), - onServiceState: (cb) => on('service-state', cb), - onOpenSearch: (cb) => on('open-search', cb), - }; - - connectWs(); - http('/status').then(status => emit('bridge-ready', status)) - .catch(err => emit('bridge-error', { type: 'http-error', message: err.message || String(err) })); -})(); - -/* ═══════════════ i18n ═══════════════ */ -const I18N = window.GA_I18N?.dict || { zh: {}, en: {} }; -const LANGS = window.GA_I18N?.languages || ['zh', 'en']; -const STORE = { lang: 'ga_lang', theme: 'ga_theme', appearance: 'ga_appearance', plain: 'ga_plain', fontSize: 'ga_font_size' }; -const APPEARANCE_IDS = ['light', 'dark']; -const CHAT_FONT_MIN = 10; -const CHAT_FONT_MAX = 20; -const CHAT_FONT_DEFAULT = 14; -const CHAT_FONT_LEGACY = { sm: 12, md: 14, lg: 16 }; -const HLJS_THEME_BASE = 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/'; - -function normalizeChatFontSize(value) { - if (typeof value === 'string' && CHAT_FONT_LEGACY[value]) return CHAT_FONT_LEGACY[value]; - const n = parseInt(value, 10); - if (Number.isFinite(n)) return Math.min(CHAT_FONT_MAX, Math.max(CHAT_FONT_MIN, n)); - return CHAT_FONT_DEFAULT; -} - -function bootUiFromDom() { - const root = document.documentElement; - const out = { lang: 'zh', theme: '1', appearance: 'light', plainUi: false, chatFontSize: CHAT_FONT_DEFAULT }; - if (root.lang === 'en') out.lang = 'en'; - if (root.dataset.theme) out.theme = root.dataset.theme; - if (APPEARANCE_IDS.includes(root.dataset.appearance)) out.appearance = root.dataset.appearance; - if (out.appearance === 'light' && root.dataset.plain === '1') out.plainUi = true; - if (root.dataset.chatFont) out.chatFontSize = normalizeChatFontSize(root.dataset.chatFont); - return out; -} -let { lang, theme, appearance, plainUi, chatFontSize } = bootUiFromDom(); - -function syncHljsTheme() { - const link = document.getElementById('hljs-theme'); - if (link) link.href = HLJS_THEME_BASE + (appearance === 'dark' ? 'github-dark.min.css' : 'github.min.css'); - document.querySelectorAll('.bubble.md pre code').forEach(block => { - if (typeof hljs !== 'undefined') hljs.highlightElement(block); - }); -} - -/** 服务端 ui 落盘后的本地镜像,仅供 index.html 内联脚本首帧防闪;不是真相源。 */ -function syncBootCache() { - localStorage.setItem(STORE.lang, lang); - localStorage.setItem(STORE.theme, theme); - localStorage.setItem(STORE.appearance, appearance); - localStorage.setItem(STORE.fontSize, String(chatFontSize)); - if (plainUi) localStorage.setItem(STORE.plain, '1'); - else localStorage.removeItem(STORE.plain); -} -async function persistUiPrefs() { - try { - await window.ga.saveConfig({ - config: { lang, theme, appearance, plain: plainUi, llmNo: state.llmNo, fontSize: chatFontSize }, - }); - syncBootCache(); - } catch (_) {} -} -const bridgeHost = () => BRIDGE_ORIGIN; -async function bridgeFetch(path, opts = {}) { - const headers = { ...(opts.headers || {}) }; - const init = { ...opts, headers }; - if (init.body && typeof init.body !== 'string') { - headers['Content-Type'] = 'application/json'; - init.body = JSON.stringify(init.body); - } - const res = await fetch(`${bridgeHost()}${path}`, init); - let data = {}; - try { data = await res.json(); } catch (_) {} - if (!res.ok) throw new Error(data.error || data.message || res.statusText); - return data; -} -function t(key, vars) { - if (window.GA_I18N?.t) return window.GA_I18N.t(lang, key, vars); - let text = (I18N[lang] && I18N[lang][key]) || (I18N.zh && I18N.zh[key]) || key; - if (vars) { - for (const [name, value] of Object.entries(vars)) text = text.replaceAll(`{${name}}`, String(value)); - } - return text; -} -window.gaT = t; -document.addEventListener('collab:running-count', e => { - const b = document.getElementById('collab-badge'); - if (!b) return; - const n = e.detail?.count || 0; - b.hidden = !n; - b.textContent = n ? (n > 9 ? '9+' : String(n)) : ''; -}); -function optionalPh(key) { - const sep = (lang === 'en') ? ', ' : ','; - return `${t('common.optional')}${sep}${t(key)}`; -} -function setTooltip(el, text) { - if (!el) return; - const value = String(text || '').trim(); - el.removeAttribute('title'); - if (el.hasAttribute('data-no-tooltip')) { - delete el.dataset.tooltip; - if (value) el.setAttribute('aria-label', value); - return; - } - if (value) { - el.dataset.tooltip = value; - if (!el.hasAttribute('aria-label')) el.setAttribute('aria-label', value); - } else { - delete el.dataset.tooltip; - } -} -function applyI18n() { - document.documentElement.lang = (lang === 'en') ? 'en' : 'zh-CN'; - document.title = t('app.title'); - document.querySelectorAll('[data-i18n]').forEach(el => { el.textContent = t(el.dataset.i18n); }); - document.querySelectorAll('[data-i18n-ph]').forEach(el => { - const phKey = el.dataset.i18nPh; - const val = el.hasAttribute('data-optional-ph') ? optionalPh(phKey) : t(phKey); - if (el.isContentEditable) el.setAttribute('data-ph', val); // contenteditable 用 :empty::before 显示 - else el.setAttribute('placeholder', val); - }); - document.querySelectorAll('[data-i18n-title]').forEach(el => { setTooltip(el, t(el.dataset.i18nTitle)); }); - migrateNativeTooltips(); - renderLangList(); - // 语言切换后重算激活模型 chip 文案;若当前会话已有渠道组运行态模型,保留运行态而非退回首选项 - const _ap = (state.modelProfiles || []).find(p => (p.id ?? 0) === state.llmNo); - if (_ap) state.modelName = modelDisplayName(_ap); - if (_ap?.kind === 'mixin' && state.liveModel?.sessionId === state.activeId) applyLiveModel(state.liveModel); - else if (typeof updateModelChip === 'function') updateModelChip(); - window.gaRefreshModelGuide?.(); - window.collabRetranslate?.(); - syncAskUserUi(); -} -// 语言对应国旗 SVG(en 用美国旗,按要求) -const FLAGS = { - zh: '', - en: '', -}; -function renderLangList() { - const box = document.getElementById('lang-list'); - if (!box) return; - box.innerHTML = ''; - LANGS.forEach(code => { - const row = document.createElement('label'); - row.className = 'model-row' + (lang === code ? ' sel' : ''); - row.innerHTML = `${FLAGS[code] || ''}${escapeHtml(t('lang.' + code))}`; - row.addEventListener('click', (e) => { e.preventDefault(); selectLang(code); }); - box.appendChild(row); - }); -} -function selectLang(code) { - if (!LANGS.includes(code) || lang === code) return; - lang = code; - applyI18n(); - renderSessionList(); - refreshStatusLabel(); - updateModelChip(); - renderSettingsModels(); - if (typeof renderAllPresets === 'function') renderAllPresets(); - if (isServicesPageActive()) refreshServicesPanel(); - void persistUiPrefs(); -} -function syncChatFontSegments(value) { - document.querySelectorAll('.chat-font-seg').forEach(el => { - const v = parseInt(el.dataset.value, 10); - el.classList.toggle('on', v <= value); - el.classList.toggle('cur', v === value); - }); - const stepper = document.getElementById('chat-font-stepper'); - if (stepper) { - stepper.setAttribute('aria-valuenow', String(value)); - stepper.setAttribute('aria-valuetext', `${value}px`); - } -} -function chatFontFromPointer(clientX) { - const segs = document.getElementById('chat-font-segments'); - if (!segs) return chatFontSize; - const rect = segs.getBoundingClientRect(); - const ratio = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width)); - return CHAT_FONT_MIN + Math.round(ratio * (CHAT_FONT_MAX - CHAT_FONT_MIN)); -} -function initChatFontStepper() { - const segs = document.getElementById('chat-font-segments'); - if (!segs || segs.childElementCount) return; - for (let i = CHAT_FONT_MIN; i <= CHAT_FONT_MAX; i++) { - const btn = document.createElement('button'); - btn.type = 'button'; - btn.className = 'chat-font-seg'; - btn.dataset.value = String(i); - btn.tabIndex = -1; - btn.addEventListener('click', (e) => { - e.stopPropagation(); - applyChatFontSize(i); - }); - segs.appendChild(btn); - } - const stepper = document.getElementById('chat-font-stepper'); - if (!stepper || stepper.dataset.bound) return; - stepper.dataset.bound = '1'; - let dragging = false; - const pick = (clientX, persist) => applyChatFontSize(chatFontFromPointer(clientX), { persist }); - stepper.addEventListener('pointerdown', (e) => { - if (e.button !== 0) return; - dragging = true; - stepper.setPointerCapture(e.pointerId); - pick(e.clientX, false); - }); - stepper.addEventListener('pointermove', (e) => { - if (!dragging) return; - pick(e.clientX, false); - }); - const endDrag = (e, persist) => { - if (!dragging) return; - dragging = false; - try { stepper.releasePointerCapture(e.pointerId); } catch (_) {} - pick(e.clientX, persist); - }; - stepper.addEventListener('pointerup', (e) => endDrag(e, true)); - stepper.addEventListener('pointercancel', (e) => endDrag(e, false)); - stepper.addEventListener('keydown', (e) => { - if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') { - e.preventDefault(); - applyChatFontSize(chatFontSize - 1); - } else if (e.key === 'ArrowRight' || e.key === 'ArrowUp') { - e.preventDefault(); - applyChatFontSize(chatFontSize + 1); - } else if (e.key === 'Home') { - e.preventDefault(); - applyChatFontSize(CHAT_FONT_MIN); - } else if (e.key === 'End') { - e.preventDefault(); - applyChatFontSize(CHAT_FONT_MAX); - } - }); -} -function applyChatFontSize(size, { persist } = { persist: true }) { - chatFontSize = normalizeChatFontSize(size); - document.documentElement.dataset.chatFont = String(chatFontSize); - document.documentElement.style.setProperty('--chat-font', `${chatFontSize}px`); - const label = document.getElementById('chat-font-value'); - if (label) label.textContent = `${chatFontSize}px`; - syncChatFontSegments(chatFontSize); - if (persist) void persistUiPrefs(); -} -function applyTheme(id, { persist } = { persist: true }) { - // 主题选色已下线,只保留灰色亮色主题(--accent 在 styles.css 里硬编码)。 - // 函数保留可调用,只把 dataset.theme 固定到 '1' 兼容旧 localStorage。 - theme = '1'; - document.documentElement.dataset.theme = '1'; - if (persist) void persistUiPrefs(); -} -function syncPlainSwitch() { - const row = document.getElementById('plain-ui-row'); - const sw = document.getElementById('plain-ui-switch'); - if (!row || !sw) return; - const show = appearance === 'light'; - row.hidden = !show; - sw.setAttribute('aria-checked', plainUi ? 'true' : 'false'); -} -function applyAppearance(nextApp, nextPlain, { persist } = { persist: true }) { - appearance = APPEARANCE_IDS.includes(nextApp) ? nextApp : 'light'; - if (appearance === 'light') plainUi = !!nextPlain; - else plainUi = false; - document.documentElement.dataset.appearance = appearance; - if (plainUi) document.documentElement.dataset.plain = '1'; - else delete document.documentElement.dataset.plain; - document.querySelectorAll('#appearance-seg .appear-card').forEach(el => { - const on = el.dataset.appearance === appearance; - el.classList.toggle('sel', on); - el.setAttribute('aria-checked', on ? 'true' : 'false'); - }); - syncPlainSwitch(); - syncHljsTheme(); - if (persist) void persistUiPrefs(); -} - -/* ═══════════════ 侧边栏导航 ═══════════════ */ -const nav = document.getElementById('nav'); -const pages = document.querySelectorAll('#pages .page'); -let currentPage = 'chat'; -function gaGoPage(key) { - const item = nav?.querySelector(`.nav-item[data-page="${key}"]`); - if (!item) return; - currentPage = key; - nav.querySelectorAll('.nav-item').forEach(n => n.classList.toggle('active', n === item)); - pages.forEach(p => p.classList.toggle('active', p.dataset.page === key)); - renderSessionList(); - window.gaSetActiveFileComposer?.(key === 'collab' ? 'collab' : 'chat'); - if (key === 'collab') window.collabInit?.(); -} -window.gaGoPage = gaGoPage; -nav.addEventListener('click', (e) => { - const item = e.target.closest('.nav-item'); - if (!item) return; - gaGoPage(item.dataset.page); -}); - -/* ═══════════════ 弹窗开关 ═══════════════ */ -const openModal = (id) => { const m = document.getElementById(id); if (m) m.hidden = false; }; -window.gaOpenModal = openModal; -const closeModals = () => document.querySelectorAll('.modal').forEach(m => { - m.hidden = true; - m.querySelectorAll('.field-limit-hint').forEach(h => h.style.display = 'none'); -}); -const bindClick = (id, fn) => { const el = document.getElementById(id); if (el) el.addEventListener('click', fn); }; -function openServiceManagerFromSettings() { - closeModals(); - gaGoPage('services'); - setSvcTab('status'); - void loadStatusPanel(); -} -bindClick('add-model-btn', (e) => { - e.stopPropagation(); - openAddModelForm(); -}); -bindClick('settings-btn', (e) => { e.stopPropagation(); openSettings(); }); -bindClick('settings-services-btn', (e) => { e.stopPropagation(); openServiceManagerFromSettings(); }); - -const importMykeyInput = document.getElementById('import-mykey-input'); -async function importMykeyFromFile(file) { - if (!file) return; - const text = await file.text(); - if (!text.trim()) throw new Error(t('err.mykeyImport')); - await window.ga.saveMykeyContent(text); - await loadModelProfiles(); -} -bindClick('import-mykey-btn', (e) => { - e.stopPropagation(); - if (importMykeyInput) importMykeyInput.click(); -}); -if (importMykeyInput) { - importMykeyInput.addEventListener('change', async () => { - const file = importMykeyInput.files && importMykeyInput.files[0]; - importMykeyInput.value = ''; - if (!file) return; - try { - await importMykeyFromFile(file); - showChanToast(t('sys.mykeyImported'), '', 'ok'); - } catch (err) { - showChanToast(t('err.mykeyImport'), err.message || String(err), 'err'); - } - }); -} -async function exportMykeyToDir() { - const res = await window.ga.getMykeyContent(); - const content = (res && res.content) ? String(res.content) : ''; - if (!content.trim()) throw new Error(t('err.mykeyExport')); - // WebView2:独立缓存 + 无目录选择/下载;走 Tauri 原生另存为 - if (window.__TAURI__?.core?.invoke) { - const path = await window.ga.tauriInvoke('export_mykey', { content }); - if (!path) return; - showChanToast(t('sys.mykeyExported'), path, 'ok'); - return; - } - if (typeof window.showDirectoryPicker === 'function') { - const dir = await window.showDirectoryPicker(); - const handle = await dir.getFileHandle('mykey.py', { create: true }); - const writable = await handle.createWritable(); - await writable.write(content); - await writable.close(); - showChanToast(t('sys.mykeyExported'), '', 'ok'); - return; - } - const blob = new Blob([content], { type: 'text/plain;charset=utf-8' }); - const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = 'mykey.py'; - a.rel = 'noopener'; - document.body.appendChild(a); - a.click(); - a.remove(); - URL.revokeObjectURL(url); - showChanToast(t('sys.mykeyExported'), '', 'ok'); -} -bindClick('export-mykey-btn', async (e) => { - e.stopPropagation(); - try { - await exportMykeyToDir(); - } catch (err) { - if (err && (err.name === 'AbortError' || err.code === 20)) return; - showChanToast(t('err.mykeyExport'), err.message || String(err), 'err'); - } -}); -// 记忆/session 导入与外接 GA 源码。 -async function importMemoryFromDir() { - let sourceDir = ''; - if (window.__TAURI__?.core?.invoke) { - sourceDir = await window.ga.tauriInvoke('pick_directory', { title: t('sys.memoryPickTitle') }); - } else { - sourceDir = window.prompt(t('sys.memoryImportPrompt')) || ''; - } - if (!sourceDir) return; - const res = await window.ga.importMemory(sourceDir); - if (!res || res.ok === false) throw new Error((res && res.error) || 'import failed'); - const detail = `memory: ${res.memoryCopied}, model_responses: ${res.responsesCopied}` - + (res.responsesSkipped ? ` (skip ${res.responsesSkipped})` : '') - + `, ${t('sys.memorySessions')}: ${res.sessionsAdded || 0}` - + (res.backupDir ? `\n${t('sys.memoryImportBackup')}: ${res.backupDir}` : ''); - if (res.sessionsAdded) { - try { await loadSessions(); renderSessionList(); } catch (_) {} - } - showChanToast(t('sys.memoryImported'), detail, 'ok'); -} -bindClick('import-memory-btn', async (e) => { - e.stopPropagation(); - try { - await importMemoryFromDir(); - } catch (err) { - showChanToast(t('err.memoryImport'), err.message || String(err), 'err'); - } -}); -bindClick('move-ga-runtime-btn', async (e) => { - e.stopPropagation(); - if (!window.__TAURI__?.core?.invoke) { - showChanToast(t('err.gaRuntimeDesktopOnly'), '', 'err'); - return; - } - try { - const dir = await window.ga.tauriInvoke('pick_directory', { title: t('sys.gaRuntimeMoveTitle') }); - if (!dir) return; - const confirmed = await showConfirmDialog({ - title: t('confirm.gaRuntimeMoveTitle'), - message: t('confirm.gaRuntimeMove'), - okText: t('set.moveGaRuntime'), - }); - if (!confirmed) return; - showChanToast(t('sys.gaRuntimeMoving'), dir, 'ok'); - const project = await window.ga.moveGaRuntime(dir); - await refreshGaSource(); - showChanToast(t('sys.gaRuntimeMoved'), project || dir, 'ok'); - } catch (err) { - showChanToast(t('err.gaRuntimeMove'), err.message || String(err), 'err'); - } -}); -const gaSourceCurrentEl = document.getElementById('ga-source-current'); -const gaSourceClearBtn = document.getElementById('ga-source-clear-btn'); -async function refreshGaSource() { - if (!window.__TAURI__?.core?.invoke) return; - let cur = ''; - try { cur = await window.ga.getGaSource(); } catch (_) { cur = ''; } - if (gaSourceCurrentEl) { - if (cur) { - gaSourceCurrentEl.textContent = `${t('set.gaSourceCurrent')}: ${cur}`; - gaSourceCurrentEl.hidden = false; - } else { - gaSourceCurrentEl.hidden = true; - } - } - if (gaSourceClearBtn) gaSourceClearBtn.hidden = !cur; -} -bindClick('ga-source-btn', async (e) => { - e.stopPropagation(); - if (!window.__TAURI__?.core?.invoke) { - showChanToast(t('err.gaSourceDesktopOnly'), '', 'err'); - return; - } - try { - const dir = await window.ga.tauriInvoke('pick_directory', { title: t('sys.gaSourcePickTitle') }); - if (!dir) return; - showChanToast(t('sys.gaSourceSwitching'), dir, 'ok'); - const project = await window.ga.setGaSource(dir); - await refreshGaSource(); - showChanToast(t('sys.gaSourceSet'), project || dir, 'ok'); - } catch (err) { - showChanToast(t('err.gaSourceSet'), err.message || String(err), 'err'); - } -}); -bindClick('ga-source-clear-btn', async (e) => { - e.stopPropagation(); - const confirmed = await showConfirmDialog({ - title: t('confirm.gaSourceClearTitle'), - message: t('confirm.gaSourceClear'), - okText: t('set.gaSourceClear'), - }); - if (!confirmed) return; - try { - showChanToast(t('sys.gaSourceSwitching'), '', 'ok'); - await window.ga.clearGaSource(); - await refreshGaSource(); - showChanToast(t('sys.gaSourceCleared'), '', 'ok'); - } catch (err) { - showChanToast(t('err.gaSourceSet'), err.message || String(err), 'err'); - } -}); -refreshGaSource(); -// 侧边栏「快速接入」:官方模型 → 预填表单;ga-token → 开 portal 写 mykey -const pqEl = document.getElementById('provider-quickstart'); -const pqGaBtn = document.getElementById('pq-ga-token'); -if (pqGaBtn) bridgeFetch('/subscription-portal').then(r => { pqGaBtn.hidden = !r?.available; }).catch(() => {}); -if (pqEl) pqEl.addEventListener('click', (e) => { - const btn = e.target.closest('.pq-btn[data-provider]'); - if (!btn) return; - e.preventDefault(); e.stopPropagation(); - if (btn.dataset.provider === 'ga-token') { - window.ga.getMykeyContent().then(r => { - const base = r?.content || '', t0 = Date.now(); - bridgeFetch('/subscription-portal', { method: 'POST', body: {} }); - const timer = setInterval(async () => { - const cur = (await window.ga.getMykeyContent().catch(() => null))?.content; - if ((cur != null && cur !== base) || Date.now() - t0 > 3e5) { clearInterval(timer); if (cur !== base) await loadModelProfiles(); } - }, 3000); - }); - return; - } - openAddModelFormForProvider(btn.dataset.provider); -}); -// 「快速接入」卡片折叠/展开(向下箭头),状态记忆到 localStorage -const pqToggle = document.getElementById('pq-toggle'); -if (pqEl && pqToggle) { - const applyPq = (collapsed) => { - pqEl.classList.toggle('collapsed', collapsed); - pqToggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true'); - }; - let pqCollapsed = false; - try { pqCollapsed = localStorage.getItem('ga_pq_collapsed') === '1'; } catch (_) {} - applyPq(pqCollapsed); - const togglePq = (e) => { - if (e) e.stopPropagation(); - pqCollapsed = !pqEl.classList.contains('collapsed'); - applyPq(pqCollapsed); - try { localStorage.setItem('ga_pq_collapsed', pqCollapsed ? '1' : '0'); } catch (_) {} - }; - pqToggle.addEventListener('click', togglePq); - pqToggle.addEventListener('keydown', (e) => { - if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); togglePq(); } - }); -} -// 接入指引:复制获取 API Key 的链接 -bindClick('model-guide-copy', (e) => { - e.preventDefault(); e.stopPropagation(); - const link = document.getElementById('model-guide-link'); - const url = link ? link.href : ''; - if (!url || !navigator.clipboard) return; - navigator.clipboard.writeText(url).then(() => showChanToast(t('guide.copied'), '', 'ok')).catch(() => {}); -}); -bindClick('preset-btn', (e) => { e.stopPropagation(); openModal('preset-modal'); }); -document.querySelectorAll('.modal').forEach(m => - m.addEventListener('click', (e) => { - if (e.target.closest('[data-close]')) { - m.hidden = true; - m.querySelectorAll('.field-limit-hint').forEach(h => h.style.display = 'none'); - } - })); -document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeModals(); }); - -function showConfirmDialog({ title, message, okText, okKind = 'primary', cancelText } = {}) { - const modal = document.getElementById('confirm-modal'); - if (!modal) return Promise.resolve(false); - const titleEl = document.getElementById('confirm-title'); - const msgEl = document.getElementById('confirm-message'); - const okBtn = document.getElementById('confirm-ok'); - const cancelBtn = document.getElementById('confirm-cancel'); - if (titleEl) titleEl.textContent = title || t('common.confirm'); - if (msgEl) msgEl.textContent = message || ''; - if (cancelBtn) cancelBtn.textContent = cancelText || t('common.cancel'); - if (okBtn) { - okBtn.textContent = okText || t('common.confirm'); - okBtn.classList.toggle('danger', okKind === 'danger'); - okBtn.classList.toggle('primary', okKind !== 'danger'); - } - modal.hidden = false; - return new Promise(resolve => { - let done = false; - const finish = (yes) => { - if (done) return; - done = true; - modal.hidden = true; - cleanup(); - resolve(yes); - }; - const onOk = (e) => { e.preventDefault(); e.stopPropagation(); finish(true); }; - const onCancel = (e) => { e.preventDefault(); e.stopPropagation(); finish(false); }; - const onClose = (e) => { if (e.target.closest('[data-close]')) finish(false); }; - const onKey = (e) => { if (e.key === 'Escape') { e.preventDefault(); e.stopPropagation(); finish(false); } }; - const cleanup = () => { - okBtn?.removeEventListener('click', onOk); - cancelBtn?.removeEventListener('click', onCancel); - modal.removeEventListener('click', onClose, true); - document.removeEventListener('keydown', onKey, true); - }; - okBtn?.addEventListener('click', onOk); - cancelBtn?.addEventListener('click', onCancel); - modal.addEventListener('click', onClose, true); - document.addEventListener('keydown', onKey, true); - okBtn?.focus(); - }); -} - -/* ═══════════════ Markdown ═══════════════ */ -if (typeof marked !== 'undefined') { - marked.setOptions({ gfm: true, breaks: true, mangle: false, headerIds: false }); -} -const ALLOWED_URI_RE = /^(https?:|mailto:|tel:|#|\/)/i; -function escapeHtml(s) { - const d = document.createElement('div'); d.textContent = String(s == null ? '' : s); return d.innerHTML; -} -/** GA list_llms 形如 SessionClass/备注;桌面 UI 只展示 / 后一段 */ -function profileLabel(name) { - const s = String(name || ''); - const i = s.indexOf('/'); - return (i >= 0 ? s.slice(i + 1) : s).trim(); -} -function normalizeProfiles(list) { - return (list || []).map(p => ({ ...p, name: profileLabel(p.name) || p.name })); -} -function sanitizeMarkdown(html) { - const tpl = document.createElement('template'); - tpl.innerHTML = String(html); - const blocked = new Set(['SCRIPT','STYLE','IFRAME','OBJECT','EMBED','LINK','META','BASE','FORM','INPUT','BUTTON']); - const walker = document.createTreeWalker(tpl.content, NodeFilter.SHOW_ELEMENT); - const rmv = []; - while (walker.nextNode()) { - const el = walker.currentNode; - if (blocked.has(el.tagName)) { rmv.push(el); continue; } - for (const attr of Array.from(el.attributes)) { - const n = attr.name.toLowerCase(), v = attr.value.trim(); - if (n.startsWith('on') || n === 'srcdoc') { el.removeAttribute(attr.name); continue; } - if ((n === 'href' || n === 'src' || n === 'xlink:href') && v && !ALLOWED_URI_RE.test(v)) el.removeAttribute(attr.name); - } - if (el.tagName === 'A') { el.setAttribute('rel','noopener noreferrer'); el.setAttribute('target','_blank'); } - } - rmv.forEach(el => el.remove()); - return tpl.innerHTML; -} -/* ═══════════════ LaTeX 保护 (PR移植) ═══════════════ */ -const _latexSlots = []; -function protectLatex(text) { - _latexSlots.length = 0; - // 先保护代码围栏和行内代码,避免其中的 $ \( \[ 被误匹配 - const _codeSlots = []; - // 代码围栏 ```...``` - text = text.replace(/```[\s\S]*?```/g, (m) => { - const id = _codeSlots.length; - _codeSlots.push(m); - return `\x00CODE:${id}\x00`; - }); - // 行内代码 `...` - text = text.replace(/`[^`\n]+`/g, (m) => { - const id = _codeSlots.length; - _codeSlots.push(m); - return `\x00CODE:${id}\x00`; - }); - // 块级 \[...\] - text = text.replace(/\\\[([\s\S]+?)\\\]/g, (_, expr) => { - const id = _latexSlots.length; - _latexSlots.push({ expr: expr.trim(), display: true }); - return ``; - }); - // 块级 $$...$$ - text = text.replace(/\$\$([\s\S]+?)\$\$/g, (_, expr) => { - const id = _latexSlots.length; - _latexSlots.push({ expr: expr.trim(), display: true }); - return ``; - }); - // 行内 \(...\) - text = text.replace(/\\\(([\s\S]+?)\\\)/g, (_, expr) => { - const id = _latexSlots.length; - _latexSlots.push({ expr: expr.trim(), display: false }); - return ``; - }); - // 行内 $...$(不贪婪,排除 $$ 和转义) - text = text.replace(/(? { - const id = _latexSlots.length; - _latexSlots.push({ expr: expr.trim(), display: false }); - return ``; - }); - // 恢复代码占位符 - text = text.replace(/\x00CODE:(\d+)\x00/g, (_, i) => _codeSlots[Number(i)]); - return text; -} -function restoreLatex(html) { - if (!_latexSlots.length) return html; - return html.replace(//g, (_, i) => { - const slot = _latexSlots[Number(i)]; - if (!slot) return ''; - if (typeof katex === 'undefined') { - return slot.display ? `

${escapeHtml(slot.expr)}
` - : `${escapeHtml(slot.expr)}`; - } - try { - const rendered = katex.renderToString(slot.expr, { displayMode: slot.display, throwOnError: false }); - return slot.display ? `
${rendered}
` - : `${rendered}`; - } catch (_) { return escapeHtml(slot.expr); } - }); -} - -function renderMarkdown(text) { - if (typeof marked === 'undefined') return escapeHtml(text).replace(/\n/g, '
'); - try { - const protected_ = protectLatex(String(text || '')); - let html = sanitizeMarkdown(marked.parse(protected_)); - html = restoreLatex(html); - // TUI 风格代码块:包装 pre>code 为 .code-block 容器 + 语言头 - html = html.replace(/
]*>([\s\S]*?)<\/code><\/pre>/g,
-      (_, lang, body) => {
-        const label = lang || 'code';
-        return `
${escapeHtml(label)}
${body}
`; - }); - return html; - } catch (_) { return escapeHtml(text); } -} -/** - * Agent 流协议(与 agent_loop.py / continue_cmd 一致)按行解析: - * - 工具调用:🛠️ 行 + 开围栏行 `` `{n}text `` + 正文 + 闭围栏行(仅 `{n},取区间内最后一行) - * - 工具结果:开围栏行 `` `{n} ``(n≥5)+ 正文 + 同长度闭围栏行 - */ -function parseAgentFenceLine(line) { - const m = /^[ \t]*(`{3,})([^\n`]*)[ \t]*$/.exec(line ?? ''); - if (!m) return null; - return { ticks: m[1].length, tag: m[2] }; -} - -function isAgentStructureBoundaryLine(line, opts) { - if (/^🛠️ Tool:/.test(line)) return true; - // 工具「结果」区内:5 反引号是开/闭围栏,不能当边界(否则闭围栏会被当成下一结构 → 拆出多个空「工具结果」) - if (!opts || !opts.forToolResult) { - const f = parseAgentFenceLine(line); - if (f && f.ticks >= 5 && f.tag === '') return true; - } - if (/^\*\*LLM Running \(Turn \d+\)/.test(line)) return true; - if (/^/i.test(line)) return true; - return false; -} - -function indexOfNextAgentStructureLine(lines, from, opts) { - for (let i = from; i < lines.length; i++) { - if (isAgentStructureBoundaryLine(lines[i], opts)) return i; - } - return lines.length; -} - -function lastFenceCloseLineIndex(lines, from, toExclusive, tickCount) { - let last = -1; - for (let i = from; i < toExclusive; i++) { - const f = parseAgentFenceLine(lines[i]); - if (f && f.ticks === tickCount && f.tag === '') last = i; - } - return last; -} - -function parseToolCallBlock(lines, i) { - const m = /^🛠️ Tool: `([^`]+)`/.exec(lines[i] || ''); - if (!m) return null; - const open = parseAgentFenceLine(lines[i + 1]); - if (!open || open.tag !== 'text') return null; - const bodyStart = i + 2; - const zoneEnd = indexOfNextAgentStructureLine(lines, bodyStart); - const closeIdx = lastFenceCloseLineIndex(lines, bodyStart, zoneEnd, open.ticks); - if (closeIdx < 0) return null; - return { - name: m[1], - body: lines.slice(bodyStart, closeIdx).join('\n'), - nextLine: closeIdx + 1, - }; -} - -function parseToolResultBlock(lines, i) { - const open = parseAgentFenceLine(lines[i]); - if (!open || open.ticks < 5 || open.tag !== '') return null; - const bodyStart = i + 1; - const zoneEnd = indexOfNextToolResultZoneEnd(lines, bodyStart); - const closeIdx = lastFenceCloseLineIndex(lines, bodyStart, zoneEnd, open.ticks); - if (closeIdx < 0) return null; - return { - body: lines.slice(bodyStart, closeIdx).join('\n'), - nextLine: closeIdx + 1, - }; -} - -/** 工具结果区 zone:不把 5 反引号围栏行当边界(见 isAgentStructureBoundaryLine) */ -function indexOfNextToolResultZoneEnd(lines, from) { - return indexOfNextAgentStructureLine(lines, from, { forToolResult: true }); -} - -/** 流式未闭合工具调用(对齐 TUI _safe_pos:末尾 in-flight 🛠️ 块) */ -function parseInFlightToolCall(lines, i) { - if (parseToolCallBlock(lines, i)) return null; - const m = /^🛠️ Tool: `([^`]+)`/.exec(lines[i] || ''); - if (!m) return null; - const open = parseAgentFenceLine(lines[i + 1]); - let bodyStart; - let zoneEnd; - if (open && open.tag === 'text') { - bodyStart = i + 2; - zoneEnd = indexOfNextAgentStructureLine(lines, bodyStart); - if (lastFenceCloseLineIndex(lines, bodyStart, zoneEnd, open.ticks) >= 0) return null; - } else { - bodyStart = i + 1; - zoneEnd = lines.length; - for (let j = i + 1; j < lines.length; j++) { - if (isAgentStructureBoundaryLine(lines[j])) { zoneEnd = j; break; } - } - } - return { - name: m[1], - body: lines.slice(bodyStart, zoneEnd).join('\n'), - nextLine: zoneEnd, - inFlight: true, - }; -} - -/** 流式未闭合工具结果(5 反引号围栏未到) */ -function parseInFlightToolResult(lines, i) { - if (parseToolResultBlock(lines, i)) return null; - const open = parseAgentFenceLine(lines[i]); - if (!open || open.ticks < 5 || open.tag !== '') return null; - const bodyStart = i + 1; - const zoneEnd = indexOfNextToolResultZoneEnd(lines, bodyStart); - if (lastFenceCloseLineIndex(lines, bodyStart, zoneEnd, open.ticks) >= 0) return null; - return { - body: lines.slice(bodyStart, zoneEnd).join('\n'), - nextLine: zoneEnd, - inFlight: true, - }; -} - -/** 将 agent 协议块替换为占位符,其余行原样保留给 Markdown */ -function foldAgentProtocolBlocks(body, { onTool, onResult }) { - const lines = String(body || '').split('\n'); - const out = []; - let proseFrom = 0; - let i = 0; - - const flushProse = (until) => { - if (until <= proseFrom) return; - out.push(lines.slice(proseFrom, until).join('\n')); - proseFrom = until; - }; - - while (i < lines.length) { - const tool = parseToolCallBlock(lines, i); - if (tool) { - flushProse(i); - out.push(onTool(tool.name, tool.body)); - i = tool.nextLine; - proseFrom = i; - continue; - } - const result = parseToolResultBlock(lines, i); - if (result) { - flushProse(i); - out.push(onResult(result.body)); - i = result.nextLine; - proseFrom = i; - continue; - } - const liveTool = parseInFlightToolCall(lines, i); - if (liveTool) { - flushProse(i); - out.push(onTool(liveTool.name, liveTool.body, { inFlight: true })); - i = liveTool.nextLine; - proseFrom = i; - continue; - } - const liveResult = parseInFlightToolResult(lines, i); - if (liveResult) { - flushProse(i); - out.push(onResult(liveResult.body, { inFlight: true })); - i = liveResult.nextLine; - proseFrom = i; - continue; - } - i++; - } - flushProse(lines.length); - return out.join(''); -} - -function extractAskUserToolJson(content) { - const lines = String(content || '').split('\n'); - for (let i = 0; i < lines.length; i++) { - const block = parseToolCallBlock(lines, i); - if (block && block.name === 'ask_user') return block.body; - } - return null; -} - -// ============================================================================ -// [turn_segs 数据结构层] —— 单轮渲染的纯函数,供 append-only draft 与静态消息复用 -// 设计:每个函数自包含(内部自建 folds/asks 占位栈,渲染完即还原),轮间零共享状态。 -// renderTurnBody(body) : 单轮原文 → 该轮内层HTML(块级折叠thinking/tool/result) -// renderTurnFold(body, turnIndex) : 单轮原文 → 旧轮的
折叠壳(内部下标0起,标题显示1起+summary副标题) -// 结构化 turn_segs 渲染使用的纯函数:折叠工具块、ask_user 与轮摘要。 -// ============================================================================ -// 去除 GenericAgent 轮次分隔标记;turn_segs 已结构化,不应展示原始 marker -function stripTurnMarker(body) { - return String(body || '') - .replace(/^\s*\**LLM Running \(Turn \d+\) \.\.\.\**\s*/i, ''); -} - -function renderTurnBody(body) { - // 自包含:每次调用独立的占位栈,渲染完立即还原,无跨调用共享状态 - const folds = []; - const asks = []; - const stash = (label, b, cls, opts) => { - folds.push({ label, body: b, cls: cls || '', open: !!(opts && opts.open) }); - return `\n\n§§FOLD:${folds.length - 1}§§\n\n`; - }; - const stashAsk = (data) => { asks.push(data); return `\n\n§§ASK:${asks.length - 1}§§\n\n`; }; - let s = stripTurnMarker(body); - s = s.replace(/[\s\S]*?<\/thinking>/gi, m => stash(t('fold.thinking'), m.replace(/<\/?thinking>/gi, ''), 'fold-thinking')); - s = foldAgentProtocolBlocks(s, { - onTool(name, json, meta) { - if (name === 'ask_user' && !meta?.inFlight) { - const data = parseAskUserJson(json); - if (data && normalizeAskUserData(data)) return stashAsk(data); - } - const live = !!meta?.inFlight; - return stash(`${t('fold.tool')}: ${name}${live ? ' …' : ''}`, json, - live ? 'fold-tool fold-tool-live' : 'fold-tool', { open: live }); - }, - onResult(b, meta) { - const live = !!meta?.inFlight; - return stash(`${t('fold.toolResult')}${live ? ' …' : ''}`, b, - live ? 'fold-result fold-tool-live' : 'fold-result', { open: live }); - }, - }); - s = s.replace(/[\s\S]*?<\/function_calls>/gi, m => stash(t('fold.tool'), m, 'fold-tool')); - s = s.replace(/[\s\S]*?<\/function_results>/gi, m => stash(t('fold.toolResult'), m, 'fold-result')); - s = s.replace(/([\s\S]*?)<\/summary>/gi, (_, inner) => `
${inner}
`); - let html = renderMarkdown(s); - // 还原占位符 - html = html - .replace(/§§ASK:(\d+)§§/g, (_, i) => { - const data = asks[Number(i)]; - return data ? renderAskUserNotice(data) : ''; - }) - .replace(/§§FOLD:(\d+)§§/g, (_, i) => { - const f = folds[Number(i)]; - if (!f) return ''; - const openAttr = f.open ? ' open' : ''; - return `
${escapeHtml(f.label)}
${escapeHtml(f.body)}
`; - }); - return html; -} - -// 抽出该轮首个 文本作为折叠头副标题;无则回退提取工具名列表 -function extractTurnSummaryPure(raw) { - const m = /([\s\S]*?)<\/summary>/i.exec(raw || ''); - if (m) return m[1].replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim(); - const tools = []; - const toolRe = /🛠️\s*Tool:\s*`([^`]+)`/g; - let tm; - while ((tm = toolRe.exec(raw || '')) !== null) { - if (!tools.includes(tm[1])) tools.push(tm[1]); - } - return tools.length ? tools.join(', ') : ''; -} - -// 旧轮折叠壳:内部 turnIndex 从 0 起;UI 标题显示为 1 起。调用方一律传内部下标。 -function turnDisplayNo(turnIndex) { - return Math.max(0, Number(turnIndex) || 0) + 1; -} -function renderTurnFold(body, turnIndex) { - const raw = stripTurnMarker(body); - const sum = extractTurnSummaryPure(raw); - const bodyForRender = sum ? raw.replace(/[\s\S]*?<\/summary>\s*/i, '') : raw; - const inner = renderTurnBody(bodyForRender); - const turnLabel = t('fold.turn').replace('{n}', turnDisplayNo(turnIndex)); - const head = sum - ? `${escapeHtml(turnLabel)}:${escapeHtml(sum)}` - : escapeHtml(turnLabel); - return `
${head}${inner}
`; -} - -function lastInflightBlockBody(body) { - const lines = String(body || '').split('\n'); - let last = null; - for (let i = 0; i < lines.length; i++) { - const liveTool = parseInFlightToolCall(lines, i); - if (liveTool?.inFlight) { last = { body: liveTool.body }; i = liveTool.nextLine - 1; continue; } - const closedTool = parseToolCallBlock(lines, i); - if (closedTool) { last = null; i = closedTool.nextLine - 1; continue; } - const liveRes = parseInFlightToolResult(lines, i); - if (liveRes?.inFlight) { last = { body: liveRes.body }; i = liveRes.nextLine - 1; continue; } - const closedRes = parseToolResultBlock(lines, i); - if (closedRes) { last = null; i = closedRes.nextLine - 1; continue; } - } - return last; -} - -function tryPatchInflightToolDom(curEl, body, prevBody) { - if (!prevBody || body.length < prevBody.length || !body.startsWith(prevBody)) return false; - if (!curEl.querySelector('details.fold-tool-live')) return false; - const prevBlock = lastInflightBlockBody(prevBody); - const curBlock = lastInflightBlockBody(body); - if (!curBlock || !prevBlock || !curBlock.body.startsWith(prevBlock.body)) return false; - const liveFolds = curEl.querySelectorAll('details.fold-tool-live'); - const pre = liveFolds[liveFolds.length - 1]?.querySelector('.fold-pre'); - if (!pre) return false; - pre.textContent = curBlock.body; - return true; -} - -function parseAskUserJson(raw) { - if (raw == null) return null; - const txt = String(raw).trim(); - if (!txt) return null; - try { return JSON.parse(txt); } catch (_) {} - try { - let out = ''; - let inStr = false; - let esc = false; - for (let i = 0; i < txt.length; i++) { - const c = txt[i]; - if (esc) { out += c; esc = false; continue; } - if (c === '\\') { out += c; esc = true; continue; } - if (c === '"') { inStr = !inStr; out += c; continue; } - if (inStr) { - if (c === '\n') out += '\\n'; - else if (c === '\r') out += '\\r'; - else if (c === '\t') out += '\\t'; - else if (c.charCodeAt(0) < 0x20) out += '\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'); - else out += c; - } else out += c; - } - return JSON.parse(out); - } catch (_) {} - return null; -} - -function normalizeAskUserData(data) { - const raw = data || {}; - const question = String(raw.question || '').trim(); - if (!question) return null; - const cs = raw.candidates || []; - const candidates = Array.isArray(cs) - ? cs.map(x => String(x == null ? '' : x)).filter(x => x.trim()) - : []; - return { question, candidates }; -} - -/** 格式化 ask_user 题干:编号与正文同行;无空行时在 2./3. 前分段 */ -function formatAskUserQuestion(text) { - let s = String(text || '').trim(); - if (!s) return s; - // 「1.\n正文」→「1. 正文」 - s = s.replace(/^(\d+[.、::)])\s*\n+\s*/gm, '$1 '); - s = s.replace(/(\n)(\d+[.、::)])\s*\n+\s*/g, '$1$2 '); - s = s.replace(/(\n|^)(问题\s*\d+\s*[::.、)]?)\s*\n+\s*/gi, '$1$2 '); - // 题与题之间:尚无空行时,仅在 2./3. 前插入空行(不动 1. 与题干) - if (!/\n\s*\n/.test(s)) { - s = s.replace(/(\S)\s+(?=问题\s*[2-9]\d*\s*[::.、)]?\s*)/gi, '$1\n\n'); - s = s.replace(/(\S)\s+(?=[2-9]\d*[.、::)]\s+\S)/g, '$1\n\n'); - } - return boldAskQuestionLines(s); -} - -function boldAskQuestionLines(text) { - return String(text || '').split('\n').map(line => { - const t = line.trim(); - if (!t || /^\*\*.+\*\*$/.test(t)) return line; - if (/^\d+[.、::)]\s+\S/.test(t)) return '**' + t + '**'; - if (/^问题\s*\d+/i.test(t)) return '**' + t + '**'; - if (/[??]\s*$/.test(t) && !/^[A-Da-d][.)]\s/.test(t)) return '**' + t + '**'; - return line; - }).join('\n'); -} - -function markAskOptionHtml(html) { - let out = String(html || ''); - out = out.replace(/

([^<]*[A-Da-d][.)]\s[^<]*)<\/p>/gi, '

$1

'); - out = out.replace(/()\s*([A-Da-d][.)]\s[^<]+)/gi, '$2'); - return out; -} - -/** 预览模式:true = 始终显示 candidates;false = 题干已含选项/多题时不重复渲染底部列表 */ -const ASK_USER_ALWAYS_SHOW_CANDIDATES = false; - -/** 题干已含选项/多题,或 candidates 无法与题干对应时,不再重复渲染底部列表 */ -function shouldShowAskCandidates(item) { - if (!item || !item.candidates.length) return false; - if (ASK_USER_ALWAYS_SHOW_CANDIDATES) return true; - const q = item.question; - if (/两个问题|多个问题|两道|两题/.test(q)) return false; - if ((q.match(/问题\s*\d/gi) || []).length >= 2) return false; - if ((q.match(/^[ \t]*\d+[.、::)]\s+/gm) || []).length >= 2) return false; - if ((q.match(/^[ \t]*[A-Da-d][.)]\s/mg) || []).length >= 2) return false; - const comboN = item.candidates.filter(c => /\d+[A-Da-d]\s*\+\s*\d+[A-Da-d]/i.test(c)).length; - if (comboN >= Math.max(1, Math.ceil(item.candidates.length * 0.5))) return false; - // 题干里有多道问句,却把全部选项平铺在 candidates → 无法区分归属,不展示 - const qMarks = (q.match(/[??]/g) || []).length; - if (qMarks >= 2 && item.candidates.length > 4) return false; - return true; -} - - -function renderAskUserNotice(data) { - const item = normalizeAskUserData(data); - if (!item) return ''; - // 单题与多题统一处理:多题的选项本就内联在题干里;单题的选项放在 candidates 里, - // 这里把它折叠进题干,按同样的 A./B./C. 内联方式渲染,不再单独画一个编号列表。 - const question = foldAskCandidates(item); - const qHtml = markAskOptionHtml(renderMarkdown(formatAskUserQuestion(question))); - return `
-
- ${escapeHtml(t('ask.banner'))} - - ${escapeHtml(t('ask.replyHint'))} -
- ${qHtml ? `
${qHtml}
` : ''} -
`; -} - -/** 单题的 candidates 折叠进题干(统一成 A./B./C. 内联选项);多题或无法对应时原样返回题干 */ -function foldAskCandidates(item) { - if (!shouldShowAskCandidates(item)) return item.question; - const opts = item.candidates.map((c, j) => { - const label = String(c).replace(/^\s*(?:[A-Za-z]|\d{1,2})\s*[.)、::]\s*/, '').trim(); - return `${String.fromCharCode(65 + j)}. ${label}`; - }).join('\n'); - // 用单换行(而非空行)拼进题干,让题干+选项渲染成同一个

,每个选项都跟在
后面 — - // 与多题内联选项走完全一致的 .ask-option-line 缩进,避免首项 A 贴左边、B/C/D 缩进的错位。 - return item.question.replace(/\s+$/, '') + '\n' + opts; -} - -function askUserPlaceholder(item) { - // 单题与多题统一:都用自由作答提示,不再针对单题单独显示「输入 1/2/3 选择」 - return t('ask.placeholderOpen'); -} - -function assistantStructuredText(msg) { - if (!msg || msg.role !== 'assistant') return ''; - if (Array.isArray(msg.turn_segs) && msg.turn_segs.length) return msg.turn_segs.join('\n'); - return typeof msg.content === 'string' ? msg.content : ''; -} - -function getPendingAskUser(sess) { - if (!sess || rt(sess).busy) return null; - const msgs = sess.messages || []; - let lastAskIdx = -1; - let askData = null; - for (let i = msgs.length - 1; i >= 0; i--) { - if (msgs[i].role !== 'assistant') continue; - const json = extractAskUserToolJson(assistantStructuredText(msgs[i])); - if (json != null) { - lastAskIdx = i; - askData = normalizeAskUserData(parseAskUserJson(json)); - break; - } - } - if (!askData) return null; - const replied = msgs.slice(lastAskIdx + 1).some(m => m.role === 'user'); - return replied ? null : askData; -} - -function syncAskUserUi() { - const sess = activeSess(); - const pending = sess ? getPendingAskUser(sess) : null; - const notices = [...document.querySelectorAll('.ask-user-notice')]; - notices.forEach((el, i) => { - const isLast = i === notices.length - 1; - el.classList.toggle('is-active', !!pending && isLast); - el.classList.toggle('is-answered', !pending || !isLast); - }); - if (inputEl) inputEl.setAttribute('data-ph', pending ? askUserPlaceholder(pending) : t('composer.placeholder')); // contenteditable 用 data-ph(无 placeholder 属性) - if (composerEl) composerEl.classList.toggle('is-awaiting-answer', !!pending); -} - -/* ═══════════════ 渲染后增强 (PR移植) ═══════════════ */ -/* ───────────── 统一复制 SVG Icon ───────────── */ -// Phosphor 图标助手:把 window.gaIcon(name) 包一层,给动态渲染的 UI 用,与静态 [data-ga-icon] 保持一致 -const GA_ICON = (name, className = '') => (typeof window.gaIcon === 'function' ? window.gaIcon(name, className) : ''); -const SVG_COPY_ICON = GA_ICON('copy'); -const SVG_CHECK_ICON = GA_ICON('check'); - -function postRenderEnhance(containerEl) { - if (!containerEl) return; - // 代码高亮 + 复制按钮(.code-block 容器已自带头部复制按钮,跳过) - containerEl.querySelectorAll('pre code').forEach(block => { - if (typeof hljs !== 'undefined') hljs.highlightElement(block); - if (block.closest('.code-block')) return; // TUI 风格容器已有复制按钮 - if (!block.parentElement.querySelector('.code-copy-btn')) { - const btn = document.createElement('button'); - btn.className = 'code-copy-btn'; btn.innerHTML = SVG_COPY_ICON; - btn.title = t('act.copy'); - btn.onclick = () => { - navigator.clipboard.writeText(block.textContent).then(() => { - btn.innerHTML = SVG_CHECK_ICON; setTimeout(() => btn.innerHTML = SVG_COPY_ICON, 1500); - }); - }; - block.parentElement.style.position = 'relative'; - block.parentElement.appendChild(btn); - } - }); - // TUI 代码块头部复制按钮绑定 - containerEl.querySelectorAll('.code-block-copy').forEach(btn => { - if (btn.dataset.bound) return; - btn.dataset.bound = '1'; - btn.onclick = () => { - const code = btn.closest('.code-block').querySelector('code'); - if (!code) return; - navigator.clipboard.writeText(code.textContent.trim()).then(() => { - btn.textContent = '\u2713'; - setTimeout(() => { btn.textContent = '\u29C9'; }, 1500); - }); - }; - }); - // KaTeX 复制按钮 - containerEl.querySelectorAll('.katex-block').forEach(el => { - if (el.querySelector('.latex-copy-btn')) return; - const src = el.querySelector('annotation[encoding="application/x-tex"]'); - if (!src) return; - const btn = document.createElement('button'); - btn.className = 'latex-copy-btn'; btn.textContent = '\u29C9'; - btn.title = t('act.copyTex'); - btn.onclick = () => { - navigator.clipboard.writeText(src.textContent).then(() => { - btn.textContent = '\u2713'; setTimeout(() => btn.textContent = '\u29C9', 1500); - }); - }; - el.style.position = 'relative'; - el.appendChild(btn); - }); - syncAskUserUi(); -} - - -/* ═══════════════ 状态 ═══════════════ */ -const state = { - sessions: new Map(), activeId: null, bridgeReady: false, - llmNo: 0, modelProfiles: [], modelName: null, - conductorLlmNo: null, conductorModelName: null, - runtime: new Map(), - pendingFiles: [], - fileSeq: 0, -}; -function rt(sess) { - let r = state.runtime.get(sess.id); - if (!r) { r = { polling:false, busy:false, lastId:0, seen:new Set(), draftEl:null, draftSegs:null, draftTurn:0, taskStartedAt:null, taskEndedAt:null, taskTimerId:null, planCompleteAt:null, planLostAt:null, planHoldItems:[], planLastPayload:null, planVisiblePayload:null, planLastComplete:false, planHideTimer:null, planDismissedComplete:false, planCollapsed:false, planShowAll:false }; state.runtime.set(sess.id, r); } - return r; -} -const activeSess = () => state.sessions.get(state.activeId) || null; -const isActive = (sess) => sess && sess.id === state.activeId; - -function saveSessions() {} -function patchSession(sess, fields) { - if (!sess.bridgeSessionId) return; - fetch(`${BRIDGE_ORIGIN}/session/${encodeURIComponent(sess.bridgeSessionId)}`, { - method: 'PATCH', headers: {'Content-Type':'application/json'}, body: JSON.stringify(fields) - }).catch(() => {}); -} -async function loadSessions() { - try { - const res = await fetch(`${BRIDGE_ORIGIN}/sessions`); - const data = await res.json(); - if (!data.sessions) return; - for (const s of data.sessions) { - state.sessions.set(s.id, { - id: s.id, bridgeSessionId: s.id, title: s.title, - messages: [], untitled: s.untitled ?? true, - pinned: s.pinned ?? false, lastActiveTs: s.updatedAt || s.createdAt, - llmNo: s.model && s.model.llmNo != null ? s.model.llmNo : null - }); - } - // 刷新后固定恢复「上次正在看的会话」(前端持久化的 ga_active),而不是 bridge 的 - // activeSessionId(=最近更新的会话,会随后台会话变动而跳来跳去)。没有有效的已存 - // 会话则置空 → 显示「新会话」空态,由用户自己点选。 - const savedActive = localStorage.getItem('ga_active'); - state.activeId = (savedActive && state.sessions.has(savedActive)) ? savedActive : null; - } catch (_) {} -} - -/* ═══════════════ DOM refs ═══════════════ */ -const chatPage = document.querySelector('.page[data-page="chat"]'); -const msgArea = chatPage.querySelector('.msg-area'); -const chatStart = msgArea.querySelector('.chat-start'); -const inputEl = document.getElementById('chat-input'); -const sendBtn = document.getElementById('send-btn'); -const planBarEl = document.getElementById('plan-bar'); -const composerEl = document.getElementById('chat-composer'); -const msgLoading = document.getElementById('msg-loading'); -const sessionLoadingEl = document.getElementById('session-loading'); -const MIN_MSG_LOADING_MS = 450; -const HYDRATE_LOADING_TIMEOUT_MS = 10000; -const POLL_MSG_LIMIT = 200; -const PLAN_LOST_GRACE_MS = 1500; // tuiapp_v2._PLAN_LOST_GRACE_SEC -const PLAN_DISMISS_STORE = 'ga_plan_dismissed_v1'; - -let _submitInFlight = false; -const runToggle = document.getElementById('run-toggle'); -const chatStatus = pageStatusBar(runToggle); -const runLabel = runToggle?.querySelector('.rs-label'); -const convListEl = document.querySelector('.conv-list'); -const newConvBtn = document.querySelector('.new-conv'); -const searchInput = document.querySelector('.search input'); -const rpResize = document.getElementById('rp-resize'); -const rpPanel = document.getElementById('rightpanel'); -const bodyEl = document.querySelector('.body'); -/* 每个页面的 page-top 各自挂一对 hamburger / 会话 按钮(.pt-sb-toggle / .pt-rp-toggle), - 全部绑同一个 toggle,效果跟以前的单一 sb-toggle/rp-toggle 一样,只是入口变成顶栏。 */ -document.querySelectorAll('.pt-sb-toggle').forEach(b => b.addEventListener('click', () => bodyEl.classList.toggle('sb-collapsed'))); -document.querySelectorAll('.pt-rp-toggle').forEach(b => b.addEventListener('click', () => bodyEl.classList.toggle('rp-collapsed'))); - -const sbResize = document.getElementById('sb-resize'); -const sbPanel = document.querySelector('.sidebar'); - -// 通用拖拽:dir=+1 拖动 →clientX 增大就增宽(左侧栏);dir=-1 反之(右侧) -function bindResize(handle, panel, dir, min, max) { - if (!handle || !panel) return; - let dragging = false, startX = 0, startW = 0; - handle.addEventListener('mousedown', (e) => { - dragging = true; startX = e.clientX; startW = panel.offsetWidth; - handle.classList.add('dragging'); - panel.style.transition = 'none'; // 拖拽期间禁用 transition,避免宽度动画延迟 - document.body.style.cursor = 'col-resize'; - document.body.style.userSelect = 'none'; - e.preventDefault(); - }); - document.addEventListener('mousemove', (e) => { - if (!dragging) return; - const w = Math.min(max, Math.max(min, startW + dir * (e.clientX - startX))); - panel.style.width = w + 'px'; - panel.style.flex = '0 0 ' + w + 'px'; - }); - document.addEventListener('mouseup', () => { - if (!dragging) return; - dragging = false; - handle.classList.remove('dragging'); - panel.style.transition = ''; // 恢复 CSS transition(按钮折叠动画仍生效) - document.body.style.cursor = ''; - document.body.style.userSelect = ''; - }); -} -bindResize(rpResize, rpPanel, -1, 160, 400); // 右栏:cursor 左移 → 增宽 -bindResize(sbResize, sbPanel, +1, 180, 360); // 左栏:cursor 右移 → 增宽 -const modelChip = document.getElementById('model-chip'); -const modelNameEl= modelChip ? modelChip.querySelector('.model-name') : null; -// conductor 页面也有一个独立的模型 chip,共用一份模型数据 -const collabModelChip = document.getElementById('cdb-model-chip'); -const collabModelNameEl = collabModelChip ? collabModelChip.querySelector('.model-name') : null; - -let msgsEl = null; -function ensureMsgs() { - if (!msgsEl) { - msgsEl = document.createElement('div'); - msgsEl.className = 'msgs'; - msgArea.insertBefore(msgsEl, msgLoading || null); - } - return msgsEl; -} -function refreshEmptyState(sess) { - const has = sess && sess.messages.length > 0; - msgArea.classList.toggle('has-msgs', !!has); - if (chatStart) chatStart.style.display = has ? 'none' : ''; - if (msgsEl) msgsEl.style.display = has ? '' : 'none'; -} - -function planTpl(tpl, v) { - return String(tpl || '').replace(/\{(\w+)\}/g, (_, k) => (v[k] != null ? String(v[k]) : `{${k}}`)); -} - -function planItemsSignature(items) { - return (items || []) - .map(it => `${String(it.status || '')}\u001e${String(it.content || '')}`) - .join('\u001f'); -} - -function planDismissId(sess, plan) { - if (!sess || !plan) return ''; - const total = plan.total ?? (plan.items || []).length; - const done = plan.done ?? (plan.items || []).filter(it => it.status === 'done').length; - return `${sess.id || sess.bridgeSessionId || 'session'}\u001d${done}/${total}\u001d${planItemsSignature(plan.items || [])}`; -} - -function readPlanDismissed() { - try { - const raw = localStorage.getItem(PLAN_DISMISS_STORE); - const parsed = raw ? JSON.parse(raw) : {}; - return parsed && typeof parsed === 'object' ? parsed : {}; - } catch (_) { - return {}; - } -} - -function isPlanDismissed(sess, plan) { - if (!plan?.complete) return false; - const id = planDismissId(sess, plan); - return !!(id && readPlanDismissed()[id]); -} - -function markPlanDismissed(sess, plan) { - const id = planDismissId(sess, plan); - if (!id) return; - const dismissed = readPlanDismissed(); - dismissed[id] = Date.now(); - try { localStorage.setItem(PLAN_DISMISS_STORE, JSON.stringify(dismissed)); } catch (_) {} -} - -let planPollTimer; -function syncPlanPollTimer() { - const on = !!(activeSess()?.bridgeSessionId && state.bridgeReady); - if (on && !planPollTimer) { - planPollTimer = setInterval(() => { - const s = activeSess(); - if (!s || !isActive(s)) return; - planFetch(s); - planTick(s); - }, 1000); - } else if (!on && planPollTimer) { - clearInterval(planPollTimer); - planPollTimer = null; - } -} - -function clearPlanGrace(r) { - r.planCompleteAt = r.planLostAt = null; - r.planHoldItems = []; - r.planLastPayload = null; - r.planVisiblePayload = null; - r.planLastComplete = false; - r.planDismissedComplete = false; - if (r.planHideTimer) { clearTimeout(r.planHideTimer); r.planHideTimer = null; } -} - -/** tuiapp_v2._refresh_planbar:用 runtime 里缓存的 items / placeholder 重绘 */ -function refreshPlanBarFromRuntime(sess) { - const r = rt(sess); - const lp = r.planLastPayload; - let items = r.planHoldItems || []; - if (r.planLostAt != null && Date.now() - r.planLostAt >= PLAN_LOST_GRACE_MS) { - items = []; - r.planHoldItems = []; - r.planLostAt = null; - } - if (r.planDismissedComplete) { - refreshPlanBar(null); - return; - } - if (!items.length) { - if (lp?.active && lp.placeholder) { - refreshPlanBar(lp); - return; - } - const held = r.planHoldItems || []; - if (lp?.complete && (lp.items?.length || held.length)) { - refreshPlanBar({ - active: true, - placeholder: false, - items: lp.items?.length ? lp.items : held, - done: lp.done ?? held.filter(it => it.status === 'done').length, - total: lp.total ?? (lp.items?.length || held.length), - complete: true, - step: lp.step || '', - }); - return; - } - refreshPlanBar(null); - return; - } - refreshPlanBar({ - active: true, - placeholder: false, - items, - done: lp?.done ?? items.filter(it => it.status === 'done').length, - total: lp?.total ?? items.length, - complete: !!(lp?.complete || (items.length && items.every(it => it.status === 'done'))), - step: lp?.step || '', - }); -} - -/** 每秒 tick grace(对齐 TUI _poll_plan_files → _refresh_planbar) */ -function planTick(sess) { - if (!sess || !isActive(sess)) return; - refreshPlanBarFromRuntime(sess); -} - -function applyPlanPayload(sess, raw) { - if (!sess) return; - const r = rt(sess); - const now = Date.now(); - - if (raw?.active) { - if (raw.placeholder && !r.planLastPayload?.active) { - r.planCollapsed = false; - r.planShowAll = false; - } - r.planLastPayload = raw; - const items = raw.items || []; - if (items.length) { - r.planLostAt = null; - r.planHoldItems = items; - } else if (!raw.placeholder && !raw.complete && r.planHoldItems.length) { - if (!r.planLostAt) r.planLostAt = now; - } - const nowComplete = !!raw.complete && (items.length > 0 || r.planHoldItems.length > 0); - const wasComplete = r.planLastComplete; - if (nowComplete && !wasComplete) { - r.planCompleteAt = now; - r.planDismissedComplete = isPlanDismissed(sess, { ...raw, items: items.length ? items : r.planHoldItems }); - } else if (nowComplete) { - r.planDismissedComplete = isPlanDismissed(sess, { ...raw, items: items.length ? items : r.planHoldItems }); - } else if (!nowComplete) { - r.planCompleteAt = null; - r.planDismissedComplete = false; - if (r.planHideTimer) { clearTimeout(r.planHideTimer); r.planHideTimer = null; } - } - r.planLastComplete = nowComplete; - } else if (r.planHoldItems.length && !r.planDismissedComplete) { - if (!r.planLostAt) r.planLostAt = now; - } else if (!r.planDismissedComplete) { - clearPlanGrace(r); - } - - if (!isActive(sess)) return; - if (r.planDismissedComplete) { - refreshPlanBar(null); - return; - } - if (raw?.active && raw.placeholder) { - refreshPlanBar(raw); - return; - } - if (raw?.active && raw.complete && (raw.items?.length || r.planHoldItems.length)) { - refreshPlanBar({ - ...raw, - items: raw.items?.length ? raw.items : r.planHoldItems, - }); - return; - } - refreshPlanBarFromRuntime(sess); -} - -function planItemUi(status, isCurrent) { - const st = String(status || 'open').toLowerCase(); - if (st === 'done') return { cls: 'plan-item--done', mark: '✓' }; - if (st === 'error' || st === 'failed') return { cls: 'plan-item--error', mark: '✕' }; - if (st === 'warn' || st === 'warning') return { cls: 'plan-item--warn', mark: '!' }; - if (isCurrent) return { cls: 'plan-item--current', mark: '●' }; - return { cls: 'plan-item--pending', mark: '○' }; -} - -function pickPlanWindow(items, stepText) { - const list = Array.isArray(items) ? items : []; - if (!list.length) return { shown: [], curInShown: -1, overflow: 0 }; - let cur = list.findIndex(it => it.status !== 'done'); - if (cur < 0) cur = list.length - 1; - const step = String(stepText || '').trim(); - if (step) { - const hit = list.findIndex(it => String(it.content || '').includes(step.slice(0, 24))); - if (hit >= 0) cur = hit; - } - let start, end; - if (cur <= 1) { - start = cur; - end = Math.min(list.length, cur + 3); - } else { - start = cur - 1; - end = Math.min(list.length, cur + 2); - } - const shown = list.slice(start, end); - return { shown, curInShown: cur - start, overflow: Math.max(0, list.length - shown.length) }; -} - -function planCapsuleLabel(plan) { - const step = plan.step ? String(plan.step).slice(0, 80) : ''; - if (plan.complete) return { tag: t('plan.capsuleComplete'), step: step || planTpl(t('plan.complete'), { n: plan.total }) }; - if (plan.placeholder) return { tag: t('plan.placeholder'), step: '' }; - return { tag: t('plan.capsuleRunning'), step: step || planTpl(t('plan.header'), { done: plan.done, total: plan.total }) }; -} - -function bindPlanCardUiOnce() { - if (!planBarEl || planBarEl._planUiBound) return; - planBarEl._planUiBound = true; - planBarEl.addEventListener('click', (e) => { - const sess = activeSess(); - if (!sess) return; - const r = rt(sess); - const payload = r.planLastPayload; - const visiblePayload = r.planVisiblePayload || payload; - if (e.target.closest('[data-plan-dismiss]')) { - markPlanDismissed(sess, visiblePayload); - r.planDismissedComplete = true; - refreshPlanBar(null); - return; - } - if (!payload?.active && !visiblePayload?.active) return; - if (e.target.closest('[data-plan-expand]')) { - r.planCollapsed = false; - refreshPlanBar(visiblePayload); - } else if (e.target.closest('[data-plan-collapse]')) { - r.planCollapsed = true; - refreshPlanBar(visiblePayload); - } else if (e.target.closest('[data-plan-details]')) { - r.planShowAll = !r.planShowAll; - refreshPlanBar(visiblePayload); - } - }); -} - -function refreshPlanBar(plan) { - if (!planBarEl) return; - bindPlanCardUiOnce(); - if (!plan?.active) { - planBarEl.hidden = true; - planBarEl.replaceChildren(); - planBarEl.className = 'plan-card'; - planBarEl._planRenderSig = ''; - return; - } - const sess = activeSess(); - const r = sess ? rt(sess) : { planCollapsed: false, planShowAll: false }; - const collapsed = !!r.planCollapsed; - const stepText = plan.step ? String(plan.step).slice(0, 120) : ''; - const done = plan.done ?? (plan.items || []).filter(it => it.status === 'done').length; - const total = plan.total ?? (plan.items || []).length; - const mod = [ - 'plan-card', - collapsed ? 'plan-card--collapsed' : 'plan-card--expanded', - plan.complete ? 'plan-card--complete' : '', - plan.placeholder ? 'plan-card--placeholder' : '', - ].filter(Boolean).join(' '); - const planItemsSig = planItemsSignature(plan.items || []); - if (sess && plan.complete && isPlanDismissed(sess, plan)) { - r.planDismissedComplete = true; - planBarEl.hidden = true; - planBarEl.replaceChildren(); - planBarEl.className = 'plan-card'; - planBarEl._planRenderSig = ''; - return; - } - r.planVisiblePayload = plan; - const renderSig = JSON.stringify([ - lang, mod, stepText, done, total, !!r.planShowAll, plan.pathHint || '', planItemsSig - ]); - if (!planBarEl.hidden && planBarEl.className === mod && planBarEl._planRenderSig === renderSig) return; - planBarEl._planRenderSig = renderSig; - planBarEl.hidden = false; - planBarEl.className = mod; - - if (collapsed) { - const cap = planCapsuleLabel(plan); - planBarEl.innerHTML = ''; - const btn = document.createElement('button'); - btn.type = 'button'; - btn.className = 'plan-capsule'; - btn.dataset.planExpand = '1'; - const dot = document.createElement('span'); - dot.className = 'plan-status-dot'; - const ico = document.createElement('span'); - ico.className = 'plan-capsule-ic'; - ico.innerHTML = GA_ICON('listChecks'); - const txt = document.createElement('span'); - txt.className = 'plan-capsule-text'; - if (cap.step) txt.innerHTML = `${escapeHtml(cap.tag)} · ${escapeHtml(cap.step)}`; - else txt.textContent = cap.tag; - const chev = document.createElement('span'); - chev.className = 'plan-capsule-chevron'; - chev.innerHTML = GA_ICON('caretRight'); - btn.append(dot, ico, txt, chev); - planBarEl.append(btn); - return; - } - - const frag = document.createDocumentFragment(); - const head = document.createElement('div'); - head.className = 'plan-card-head'; - const dot = document.createElement('span'); - dot.className = 'plan-status-dot'; - const title = document.createElement('span'); - title.className = 'plan-title'; - title.textContent = plan.placeholder ? t('plan.placeholder') - : plan.complete ? t('plan.completeTitle') - : t('plan.running'); - head.append(dot, title); - if (!plan.placeholder && total > 0) { - const prog = document.createElement('span'); - prog.className = 'plan-progress'; - prog.textContent = `${done}/${total}`; - head.append(prog); - } - const actions = document.createElement('div'); - actions.className = 'plan-head-actions'; - if (plan.complete) { - const dismissBtn = document.createElement('button'); - dismissBtn.type = 'button'; - dismissBtn.className = 'plan-btn'; - dismissBtn.dataset.planDismiss = '1'; - dismissBtn.innerHTML = `${GA_ICON('x', 'plan-btn-ic')}${escapeHtml(t('plan.dismiss'))}`; - actions.append(dismissBtn); - } - const collapseBtn = document.createElement('button'); - collapseBtn.type = 'button'; - collapseBtn.className = 'plan-btn'; - collapseBtn.dataset.planCollapse = '1'; - collapseBtn.innerHTML = `${GA_ICON('caretDown', 'plan-btn-ic')}${escapeHtml(t('plan.fold'))}`; - actions.append(collapseBtn); - head.append(actions); - frag.append(head); - - if (stepText) { - const cur = document.createElement('div'); - cur.className = 'plan-current'; - const lab = document.createElement('span'); - lab.className = 'plan-current-label'; - lab.textContent = `${t('plan.current')}:`; - const body = document.createElement('span'); - body.className = 'plan-current-text'; - body.textContent = stepText; - cur.append(lab, body); - frag.append(cur); - } - - if (plan.placeholder) { - const wait = document.createElement('div'); - wait.className = 'plan-wait'; - wait.textContent = planTpl(t('plan.waiting'), { path: plan.pathHint || 'plan.md' }); - frag.append(wait); - } else { - const list = plan.items || []; - const { shown, curInShown, overflow } = r.planShowAll - ? { shown: list, curInShown: list.findIndex(it => it.status !== 'done'), overflow: 0 } - : pickPlanWindow(list, stepText); - if (shown.length) { - const ul = document.createElement('ul'); - ul.className = 'plan-items'; - shown.forEach((it, i) => { - const ui = planItemUi(it.status, i === curInShown); - const li = document.createElement('li'); - li.className = 'plan-item ' + ui.cls; - const mark = document.createElement('span'); - mark.className = 'plan-item-mark'; - mark.textContent = ui.mark; - const txt = document.createElement('span'); - txt.className = 'plan-item-text'; - txt.textContent = it.content || ''; - li.append(mark, txt); - ul.append(li); - }); - frag.append(ul); - } - const foot = document.createElement('div'); - foot.className = 'plan-foot'; - const moreN = r.planShowAll ? 0 : (overflow || Math.max(0, list.length - shown.length)); - if (moreN > 0) { - const hint = document.createElement('span'); - hint.className = 'plan-more-hint'; - hint.textContent = planTpl(t('plan.overflow'), { n: moreN }); - foot.append(hint); - } - if (list.length > 3) { - const det = document.createElement('button'); - det.type = 'button'; - det.className = 'plan-btn'; - det.dataset.planDetails = '1'; - det.innerHTML = `${GA_ICON(r.planShowAll ? 'caretDown' : 'caretRight', 'plan-btn-ic')}${escapeHtml(r.planShowAll ? t('plan.collapse') : t('plan.details'))}`; - foot.append(det); - } - if (foot.childNodes.length) frag.append(foot); - } - planBarEl.replaceChildren(frag); -} - -async function planFetch(sess) { - if (!sess?.bridgeSessionId || !state.bridgeReady || !isActive(sess)) return; - try { - const res = await fetch(`${BRIDGE_ORIGIN}/session/${encodeURIComponent(sess.bridgeSessionId)}/plan`); - if (!res.ok) throw new Error(`plan ${res.status}`); - const data = await res.json(); - applyPlanPayload(sess, data.plan ?? data.result?.plan); - } catch (_) { /* 对齐 TUI:读盘/网络失败不立刻清空条 */ } -} - -async function planPoll(sess) { - await planFetch(sess); - planTick(sess); -} - -/* ═══════════════ 消息渲染 ═══════════════ */ -function stripAttachPlaceholders(text) { - return String(text || '').replace(/\[(Image|File)\s+#\d+\]\s*/g, '').trim(); -} -// 把消息文本里的 [Image #N]/[File #N] 占位符“按原位置”渲染成内联 chip(显示文件名),其余文本转义+换行, -// 这样消息里能看到附件在文本中的位置(卡片/缩略图照常另外渲染)。lookup(kind,n) 取该附件文件名。 -// 同时兜底去掉内联的本地上传路径(历史/conductor 回显)。 -function renderMsgTextWithChips(text, lookup) { - const s = String(text || '').replace(/[^\s]*desktop_uploads[^\s]*\s*/g, ''); - const esc = t2 => escapeHtml(t2).replace(/\n/g, '
'); - const re = /\[(Image|File)\s+#(\d+)\]/g; - let out = '', last = 0, m; - while ((m = re.exec(s))) { - out += esc(s.slice(last, m.index)); - const name = (lookup && lookup(m[1], Number(m[2]))) || (m[1] === 'Image' ? 'image' : 'file'); - out += `${escapeHtml(name)}`; - last = re.lastIndex; - } - out += esc(s.slice(last)); - return out.trim(); -} -function fileSubLabel(name) { - const m = String(name || '').match(/\.([^.]+)$/); - if (!m) return t('file.kindGeneric'); - const ext = m[1].toLowerCase(); - const docExts = ['pdf', 'doc', 'docx', 'rtf', 'odt', 'pages', 'tex']; - const sheetExts = ['xls', 'xlsx', 'csv', 'tsv', 'numbers', 'ods']; - const slideExts = ['ppt', 'pptx', 'key', 'odp']; - const codeExts = ['py', 'js', 'ts', 'tsx', 'jsx', 'java', 'c', 'cpp', 'h', 'hpp', 'rs', 'go', 'rb', 'php', 'sh', 'html', 'css', 'json', 'yaml', 'yml', 'xml', 'sql', 'md']; - const archiveExts = ['zip', 'tar', 'gz', 'rar', '7z', 'bz2']; - const audioExts = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'm4a']; - const videoExts = ['mp4', 'mov', 'avi', 'mkv', 'webm', 'wmv']; - if (docExts.includes(ext)) return t('file.kindDoc'); - if (sheetExts.includes(ext)) return t('file.kindSheet'); - if (slideExts.includes(ext)) return t('file.kindSlide'); - if (codeExts.includes(ext)) return t('file.kindCode') + ' · ' + ext.toUpperCase(); - if (archiveExts.includes(ext)) return t('file.kindArchive'); - if (audioExts.includes(ext)) return t('file.kindAudio'); - if (videoExts.includes(ext)) return t('file.kindVideo'); - return ext.toUpperCase(); -} -/** 无 turn_segs 时按 LLM Running 标记切轮(与 stapp.fold_turns 同源) */ -function splitContentTurnSegs(content) { - const src = String(content || ''); - const parts = src.split(/\**LLM Running \(Turn \d+\) \.\.\.\**/); - const segs = []; - for (let i = 1; i < parts.length; i++) { - const body = parts[i] || ''; - if (body.length || segs.length) segs.push(body); - } - if (segs.length > 1) return segs; - return src.length ? [src] : []; -} - -function assistantTurnSegs(msg) { - if (Array.isArray(msg?.turn_segs) && msg.turn_segs.length) return msg.turn_segs; - if (typeof msg?.content === 'string' && msg.content.length) return splitContentTurnSegs(msg.content); - return []; -} - -/** turn_segs 未就绪时回退 content(双轨兼容,不改 ljq 渲染主路径) */ -function draftSegsFromPartial(raw, m) { - const segs = Array.isArray(m.turn_segs) ? m.turn_segs : []; - if (segs.length && segs.some(s => (s || '').length > 0)) return segs; - const content = typeof raw.content === 'string' ? raw.content : (m.content || ''); - return content ? [content] : segs; -} -function firstNonEmptyTurnIndex(segs) { - const arr = Array.isArray(segs) ? segs : []; - for (let i = 0; i < arr.length; i++) { - if ((arr[i] || '').length > 0) return i; - } - return 0; -} -// 后端 curr_turn 是内部 0-based 下标。展示时优先当前 turn;若该 turn 为空,回退到最后一个非空 turn。 -function resolveVisibleTurnIndex(segs, preferredTurn) { - const arr = Array.isArray(segs) ? segs : []; - const first = firstNonEmptyTurnIndex(arr); - const preferred = Number.isFinite(Number(preferredTurn)) ? Number(preferredTurn) : -1; - if (preferred >= 0 && (arr[preferred] || '').length > 0) return preferred; - for (let i = arr.length - 1; i >= 0; i--) { - if ((arr[i] || '').length > 0) return i; - } - return Math.max(first, preferred >= 0 ? preferred : (arr.length ? arr.length - 1 : first)); -} -// 静态完整渲染:visibleTurn 之前的 seg 固化折叠;visibleTurn 作为当前正文展示。 -function renderAssistantTurnsHtml(segs, currTurn, withCursor = false) { - const arr = Array.isArray(segs) ? segs : []; - if (!arr.length) return ''; - const first = firstNonEmptyTurnIndex(arr); - const curr = resolveVisibleTurnIndex(arr, currTurn); - let html = ''; - for (let i = first; i < curr; i++) { - if ((arr[i] || '').length > 0) html += `

${renderTurnFold(arr[i] || '', i)}
`; - } - html += `
${renderTurnBody(arr[curr] || '')}${withCursor ? '' : ''}
`; - return html; -} -function assistantCopyText(msg) { - const segs = assistantTurnSegs(msg); - if (segs.length) { - // 复制保持旧行为:只复制当前/最后可见 turn,不复制已折叠历史 turn。 - const turn = resolveVisibleTurnIndex(segs, msg?.curr_turn); - return stripTurnMarker(segs[turn] || '').replace(/[\s\S]*?<\/summary>\s*/i, '').trim(); - } - return ''; -} -function msgNode(msg) { - const el = document.createElement('div'); - el.className = 'msg ' + (msg.role || 'system'); - if (msg.role === 'user') { - const shown = (typeof msg.display === 'string' && msg.display.length) ? msg.display : msg.content; - const imgsHtml = (msg.images && msg.images.length) - ? `
${msg.images.map(im => ``).join('')}
` - : ''; - const filesHtml = (msg.files && msg.files.length) - ? `
${msg.files.map(f => { - const name = f.name || 'file'; - const sub = fileSubLabel(name); - return `
${GA_ICON('fileText')}${escapeHtml(name)}${escapeHtml(sub)}
`; - }).join('')}
` - : ''; - const chipText = renderMsgTextWithChips(shown, (kind, n) => { - const hit = (kind === 'Image' ? (msg.images || []) : (msg.files || [])).find(x => x.id === 'f-' + n); - return hit && (hit.name || ''); - }); - const textHtml = chipText ? `
${chipText}
` : ''; - el.innerHTML = `
${filesHtml}${imgsHtml}${textHtml}
`; - } - else if (msg.role === 'assistant') { - const segs = assistantTurnSegs(msg); - let html = renderAssistantTurnsHtml(segs, msg.curr_turn, false); - if (msg.stopped) html += `

[${escapeHtml(t('status.stopped'))}]

`; - el.innerHTML = `
${html}
`; - postRenderEnhance(el.querySelector('.bubble')); - } - else if (msg.role === 'error') el.innerHTML = `
${escapeHtml(msg.content)}
`; - else el.innerHTML = `
${escapeHtml(msg.content)}
`; - if (msg.role === 'user' || msg.role === 'assistant') { - const copyBtn = document.createElement('button'); - copyBtn.className = 'bubble-copy-btn'; - copyBtn.title = t('act.copy'); - copyBtn.innerHTML = SVG_COPY_ICON; - copyBtn.addEventListener('click', (e) => { - e.stopPropagation(); - const text = (msg.role === 'user') - ? stripAttachPlaceholders((typeof msg.display === 'string' && msg.display.length) ? msg.display : (msg.content || '')) - : assistantCopyText(msg); - navigator.clipboard.writeText(text).then(() => { - copyBtn.innerHTML = SVG_CHECK_ICON; - setTimeout(() => { copyBtn.innerHTML = SVG_COPY_ICON; }, 1500); - }); - }); - el.appendChild(copyBtn); - } - return el; -} -function collabItemToMsg(item) { - const attach = arr => (arr || []).map(x => { - const sid = x.sid != null ? x.sid : (String(x.id || '').startsWith('f-') ? String(x.id).slice(2) : x.id); - return { id: 'f-' + sid, name: x.name, path: x.path, dataUrl: x.dataUrl }; - }); - if (item.role === 'user') { - return { role: 'user', content: item.msg, display: item.msg, images: attach(item.images), files: attach(item.files) }; - } - if (item.role === 'conductor') return { role: 'assistant', turn_segs: [item.msg || ''], curr_turn: 0 }; - if (item.role === 'error') return { role: 'error', content: item.msg || '' }; - return { role: 'system', content: item.msg || '' }; -} -function renderAllMessages(sess) { - const box = ensureMsgs(); box.innerHTML = ''; - for (const m of sess.messages) box.appendChild(msgNode(m)); - syncAskUserUi(); - // badge 恢复在 pollSession finally 中执行(此时 messages 已通过异步加载填充) - refreshEmptyState(sess); scrollBottom(true); -} -// 遍历消息对,用 ts 差值恢复 badge;对运行中任务恢复 taskStartedAt -function restoreElapsedBadges(sess, box) { - const msgs = sess.messages; - if (!msgs || !msgs.length) return; - const nodes = box.querySelectorAll('.msg'); - let lastUserTs = null; - for (let i = 0; i < msgs.length; i++) { - if (msgs[i].role === 'user') { - lastUserTs = msgs[i].ts ? msgs[i].ts * 1000 : null; // 无 ts 则重置 - } else if (msgs[i].role === 'assistant') { - if (lastUserTs && msgs[i].ts) { - const elapsed = msgs[i].ts * 1000 - lastUserTs; - if (elapsed > 0 && nodes[i]) { - ensureTaskElapsedBadge(nodes[i], lastUserTs, msgs[i].ts * 1000); - } - } - lastUserTs = null; - } - } - // 运行中任务:最后一条是 user 且 session busy,恢复实时计时 - if (lastUserTs && rt(sess).busy) { - const r = rt(sess); - r.taskStartedAt = lastUserTs; - r.taskEndedAt = null; - } -} -function appendMessage(sess, msg) { - if (!isActive(sess)) return; - const el = msgNode(msg); - ensureMsgs().appendChild(el); - if (msg.role === 'assistant') { - const r = rt(sess); - if (r.taskStartedAt) { - ensureTaskElapsedBadge(el, r.taskStartedAt, r.taskEndedAt || Date.now()); - r.taskStartedAt = null; r.taskEndedAt = null; - } - } - refreshEmptyState(sess); scrollBottom(true); - if (msg.role === 'assistant' || msg.role === 'user') syncAskUserUi(); -} -function isNearBottom(threshold = 80) { - return msgArea.scrollHeight - msgArea.scrollTop - msgArea.clientHeight < threshold; -} -function scrollBottom(force) { - if (force || isNearBottom()) { - requestAnimationFrame(() => { msgArea.scrollTop = msgArea.scrollHeight; }); - } -} -/* ═══════════════ 打字机效果 (PR移植) ═══════════════ */ -const TW_SPEED = 10; // 逐字步长;paintDraft 只重绘当前轮 -const TW_INTERVAL = 35; // ms -const TW_CATCHUP_THRESHOLD = 480; // 积压过大时加速追平 -const TW_CATCHUP_MULTIPLIER = 8; -const TW_RECOVER_MIN = 1200; // 保留常量;刷新恢复改由 snapDraftRecover 一律对齐 -const DRAFT_INTERACT_MS = 520; // 用户滚代码块/点折叠时暂缓 DOM 重写 - -function isDraftInteractFrozen(r) { - return Date.now() < (r.draftFreezeUntil || 0); -} -function armDraftInteractFreeze(r, ms = DRAFT_INTERACT_MS) { - r.draftFreezeUntil = Math.max(r.draftFreezeUntil || 0, Date.now() + ms); -} -function snapshotDraftScroll(root) { - if (!root) return []; - return [...root.querySelectorAll('.bubble .code-block pre, .bubble .fold-pre')].map(n => n.scrollTop); -} -function restoreDraftScroll(root, tops) { - if (!root || !tops.length) return; - const nodes = root.querySelectorAll('.bubble .code-block pre, .bubble .fold-pre'); - tops.forEach((top, i) => { if (nodes[i] && top > 0) nodes[i].scrollTop = top; }); -} -function bindDraftInteractGuard(el, r) { - if (!el || el.dataset.gaDraftGuard) return; - el.dataset.gaDraftGuard = '1'; - const arm = () => { if (!r._suppressToggleFreeze) armDraftInteractFreeze(r); }; - el.addEventListener('mousedown', (e) => { - if (e.target.closest('details summary, .code-block pre, .fold-pre')) armDraftInteractFreeze(r); - }, true); - el.addEventListener('wheel', (e) => { - if (e.target.closest('.code-block pre, .fold-pre')) armDraftInteractFreeze(r); - }, { capture: true, passive: true }); - el.addEventListener('toggle', (e) => { - if (e.target.matches('details')) arm(); - }, true); -} -function resetTypewriterState(r) { - if (r.twState?.timer) clearInterval(r.twState.timer); - r.twState = null; - r.draftRecoverPending = false; - r.draftStreamBaseline = 0; - r._draftPaintBody = ''; -} - -/** 刷新/hydrate/重连:已有 partial 一次性对齐全文并单帧绘制,不重播打字机 */ -function snapDraftRecover(r) { - if (!r.draftRecoverPending || !r.draftEl) return false; - if (!r.twState) r.twState = { turn: 0, shown: 0, timer: null }; - const tw = r.twState; - if (tw.timer) { clearInterval(tw.timer); tw.timer = null; } - const segs = Array.isArray(r.draftSegs) ? r.draftSegs : []; - const turn = Math.max(0, Number(r.draftTurn) || 0); - tw.turn = turn; - tw.shown = (segs[turn] || '').length; - r.draftRecoverPending = false; - r.draftStreamBaseline = tw.shown; - r._draftPaintBody = ''; - ensureDraftFrozenThrough(r, turn); - paintDraft(r, turn, segs[turn] || ''); - return true; -} - -function renderDraft(sess) { - const r = rt(sess); - if (!isActive(sess)) return; - const box = ensureMsgs(); - if (!r.draftEl || r.draftEl.parentNode !== box) { - r.draftEl = document.createElement('div'); r.draftEl.className = 'msg assistant'; box.appendChild(r.draftEl); - bindDraftInteractGuard(r.draftEl, r); - if (r.taskStartedAt) ensureTaskElapsedBadge(r.draftEl, r.taskStartedAt, null); - } - if (!r.twState) r.twState = { turn: 0, shown: 0, timer: null }; - const tw = r.twState; - const backendTurn = Math.max(0, Number(r.draftTurn) || 0); - if (tw.turn == null || tw.turn < 0) tw.turn = 0; - if (tw.turn > backendTurn) tw.turn = backendTurn; - // 流式渲染模型:segs 是源数据;tw.turn 是正在打字的 turn;tw.turn 之前的 DOM 一旦 frozen 就不再动。 - ensureDraftFrozenThrough(r, tw.turn); - - const tick = () => { - const segs = Array.isArray(r.draftSegs) ? r.draftSegs : []; - const backendTurnNow = Math.max(0, Number(r.draftTurn) || 0); - if (tw.turn == null || tw.turn < 0) tw.turn = 0; - if (tw.turn > backendTurnNow) tw.turn = backendTurnNow; - r.streamTurn = tw.turn; - const cur = segs[tw.turn] || ''; - - // 当前 turn 打完,并且后端已进入后续 turn:当前 DOM 固化,然后打字机推进到下一 turn。 - if (tw.shown >= cur.length && backendTurnNow > tw.turn) { - paintDraft(r, tw.turn, cur); - freezeCurrentTurnDom(r, tw.turn); - tw.turn += 1; - tw.shown = 0; - r.streamTurn = tw.turn; - return; - } - - if (tw.shown >= cur.length) return; // 中途不停止 timer,等新 partial/done。 - if (isDraftInteractFrozen(r)) return; - - const t0 = performance.now(); - const backlog = cur.length - tw.shown; - let step = backlog > TW_CATCHUP_THRESHOLD ? TW_SPEED * TW_CATCHUP_MULTIPLIER : TW_SPEED; - const last = tw.lastElapsed || 0; - if (last > 60) step = Math.max(step, Math.ceil(backlog / 3)); - else step = Math.min(step, 120); - tw.shown = Math.min(tw.shown + step, cur.length); - paintDraft(r, tw.turn, cur.slice(0, tw.shown)); - tw.lastElapsed = performance.now() - t0; - }; - - if (snapDraftRecover(r)) { - if (!tw.timer) tw.timer = setInterval(tick, TW_INTERVAL); - refreshEmptyState(sess); - return; - } - - if (!tw.timer) tw.timer = setInterval(tick, TW_INTERVAL); - if (!isDraftInteractFrozen(r)) tick(); - refreshEmptyState(sess); -} - -function ensureDraftFrozenThrough(r, currTurn) { - if (!r.draftEl) return; - const segs = Array.isArray(r.draftSegs) ? r.draftSegs : []; - const upto = Math.max(0, Number(currTurn) || 0); - let bubble = r.draftEl.querySelector(':scope > .bubble.md'); - if (!bubble) { - bubble = document.createElement('div'); - bubble.className = 'bubble md'; - r.draftEl.appendChild(bubble); - } - const cur = bubble.querySelector(':scope > .turn-cur'); - for (let turn = 0; turn < upto; turn++) { - if (bubble.querySelector(`:scope > .turn-frozen[data-turn="${turn}"]`)) continue; - const frozen = document.createElement('div'); - frozen.className = 'turn-frozen'; - frozen.dataset.turn = turn; - frozen.innerHTML = renderTurnFold(segs[turn] || '', turn); - if (cur) bubble.insertBefore(frozen, cur); - else bubble.appendChild(frozen); - postRenderEnhance(frozen); - } -} - -function freezeCurrentTurnDom(r, turn) { - if (!r.draftEl) return; - const bubble = r.draftEl.querySelector(':scope > .bubble.md'); - if (!bubble) return; - const cur = bubble.querySelector(':scope > .turn-cur'); - if (!cur) return; - cur.className = 'turn-frozen'; - cur.dataset.turn = turn; - cur.innerHTML = renderTurnFold((r.draftSegs || [])[turn] || '', turn); - postRenderEnhance(cur); -} - -function paintDraft(r, turn, visibleCurrBody) { - if (!r.draftEl || isDraftInteractFrozen(r)) return; - const wasNear = isNearBottom(); - let bubble = r.draftEl.querySelector(':scope > .bubble.md'); - if (!bubble) { - bubble = document.createElement('div'); - bubble.className = 'bubble md'; - r.draftEl.appendChild(bubble); - } - let cur = bubble.querySelector(':scope > .turn-cur'); - if (!cur) { - cur = document.createElement('div'); - cur.className = 'turn-cur'; - bubble.appendChild(cur); - } - cur.dataset.turn = turn ?? 0; - const body = visibleCurrBody || ''; - const prevBody = r._draftPaintBody || ''; - if (!tryPatchInflightToolDom(cur, body, prevBody)) { - cur.innerHTML = renderTurnBody(body) + ''; - postRenderEnhance(cur); - } else if (!cur.querySelector('.cursor')) { - cur.insertAdjacentHTML('beforeend', ''); - } - r._draftPaintBody = body; - - if (wasNear) { - const inCodeScroll = document.activeElement?.closest?.('.code-block pre, .fold-pre') - && r.draftEl.contains(document.activeElement); - if (!inCodeScroll) scrollBottom(); - } -} - -function flushTypewriter(sess) { - resetTypewriterState(rt(sess)); -} - -/* ═══════════════ 运行状态 ═══════════════ */ -function pageStatusBar(btnEl) { - const label = btnEl?.querySelector('.rs-label'); - return { - /** state: 'ready' | 'busy' | 'offline' | 'connecting';兼容旧调用 set(text, true) */ - set(text, state = 'ready') { - if (!btnEl) return; - const mode = state === true ? 'busy' : (state === false ? 'ready' : state); - btnEl.classList.remove('busy', 'offline', 'connecting'); - if (mode === 'busy') btnEl.classList.add('busy'); - else if (mode === 'offline') btnEl.classList.add('offline'); - else if (mode === 'connecting') btnEl.classList.add('connecting'); - if (label) label.textContent = text ?? ''; - }, - setBusy(text) { this.set(text, 'busy'); }, - setReady() { this.set(t('status.ready'), 'ready'); }, - setDisconnected() { this.set(t('status.disconnected'), 'offline'); }, - setConnecting() { this.set(t('status.connecting'), 'connecting'); }, - }; -} -function refreshStatusLabel() { - const s = activeSess(); - if (s && rt(s).busy) { - chatStatus.setBusy(formatTaskElapsed(Date.now() - (rt(s).taskStartedAt || Date.now()))); - } else if (state.bridgeReady) { - chatStatus.setReady(); - } else { - chatStatus.setDisconnected(); - } -} - -/* ═══════════════ 消息计时 ═══════════════ */ -function formatTaskElapsed(ms) { - const v = Number(ms); - if (!Number.isFinite(v) || v < 0) return ''; - const sec = Math.round(v / 1000); - if (sec < 60) return t('timing.elapsed').replace('{t}', `${Math.max(1, sec)}s`); - const min = Math.floor(sec / 60), s = sec % 60; - if (min < 60) return t('timing.elapsed').replace('{t}', `${min}m ${s}s`); - const hr = Math.floor(min / 60), m = min % 60; - return t('timing.elapsed').replace('{t}', `${hr}h ${m}m`); -} - -function ensureTaskElapsedBadge(wrap, startedAt, endedAt) { - if (!wrap || !startedAt) return null; - let badge = wrap.querySelector(':scope > .task-elapsed'); - if (!badge) { - badge = document.createElement('div'); - badge.className = 'task-elapsed'; - wrap.prepend(badge); - } - const elapsed = (endedAt || Date.now()) - startedAt; - badge.textContent = formatTaskElapsed(elapsed); - badge.dataset.live = endedAt ? '' : '1'; - return badge; -} - -function startTaskTimer(sess) { - const r = rt(sess); - if (r.taskStartedAt) return; // 已在计时,不重置 - // 优先从消息时间戳恢复(刷新后持久化) - const msgs = sess.messages; - let restored = 0; - if (msgs && msgs.length) { - for (let i = msgs.length - 1; i >= 0; i--) { - if (msgs[i].role === 'user' && msgs[i].ts) { restored = msgs[i].ts * 1000; break; } - } - } - r.taskStartedAt = restored || Date.now(); - r.taskEndedAt = null; - if (r.taskTimerId) clearInterval(r.taskTimerId); - r.taskTimerId = setInterval(() => { - if (!r.taskStartedAt) return; - const el = r.draftEl || document.querySelector('.msg-list .msg.assistant:last-child'); - if (el) ensureTaskElapsedBadge(el, r.taskStartedAt, null); - // 更新左上角状态栏显示实时耗时 - if (isActive(sess)) { - chatStatus.setBusy(formatTaskElapsed(Date.now() - r.taskStartedAt)); - } - }, 1000); -} - -function stopTaskTimer(sess) { - const r = rt(sess); - if (r.taskTimerId) { clearInterval(r.taskTimerId); r.taskTimerId = null; } - if (!r.taskStartedAt) return; - r.taskEndedAt = Date.now(); -} - -function setBusy(sess, busy) { - const r = rt(sess); - if (r.busy && !busy) resetTypewriterState(r); - r.busy = busy; - if (busy) startTaskTimer(sess); else stopTaskTimer(sess); - if (!isActive(sess)) return; - if (busy) { - chatStatus.setBusy(formatTaskElapsed(Date.now() - (r.taskStartedAt || Date.now()))); - } else if (state.bridgeReady) { - chatStatus.setReady(); - } else { - chatStatus.setDisconnected(); - } - if (sendBtn) { - sendBtn.classList.toggle('is-stop', busy); - sendBtn.setAttribute('aria-label', busy ? t('act.stop') : t('act.send')); - sendBtn.title = busy ? t('act.stop') : ''; - } -} -// run-toggle 现为纯状态展示组件:运行中转红,不再响应点击(停止改由发送键的录制键承担) - -/* ═══════════════ 会话 ═══════════════ */ -function isUntitled(x) { return !x || /^(new chat|新对话|新会话)$/i.test(String(x).trim()); } -function sortedSessions() { - // display order: pinned first, then most-recently-active. [0] is the topmost. - return [...state.sessions.values()].sort((a, b) => { - if (a.pinned && !b.pinned) return -1; - if (!a.pinned && b.pinned) return 1; - return (b.lastActiveTs || 0) - (a.lastActiveTs || 0); - }); -} -function renderSessionList() { - convListEl.innerHTML = ''; - const query = (searchInput ? searchInput.value : '').trim().toLowerCase(); - const all = sortedSessions(); - const filtered = query - ? all.filter(s => { - const title = displayTitle(s).toLowerCase(); - const hasMsg = s.messages && s.messages.some(m => (m.text || '').toLowerCase().includes(query)); - return title.includes(query) || hasMsg; - }) - : all; - if (filtered.length === 0) { - const e = document.createElement('div'); - e.className = 'conv-empty'; e.textContent = t('conv.emptyList'); - convListEl.appendChild(e); return; - } - for (const sess of filtered) { - const r = state.runtime.get(sess.id); - const busy = !!(r && r.busy); - const item = document.createElement('div'); - item.className = 'conv-item' + (currentPage === 'chat' && sess.id === state.activeId ? ' active' : '') + (busy ? '' : ' idle'); - item.dataset.id = sess.id; - const pinSvg = sess.pinned ? GA_ICON('pushPinSimple', 'ci-pin') : ''; - item.innerHTML = - `
` + - `
${pinSvg}${escapeHtml(displayTitle(sess))}
` + - `
${busy ? t('status.running') : t('status.idle')}
` + - ``; - convListEl.appendChild(item); - } -} -if (searchInput) searchInput.addEventListener('input', () => renderSessionList()); -async function ensureBridgeSession(sess) { - if (sess.bridgeSessionId) return sess.bridgeSessionId; - const res = await window.ga.rpc('session/new', { cwd: '', mcp_servers: [] }); - if (res?.error) throw new Error(res.error.message || res.error); - sess.bridgeSessionId = res.sessionId || res.result?.sessionId; - return sess.bridgeSessionId; -} -// 仿 TUI(continue_cmd.py 的 _preview_text 思路):sess.title 只在用户手动 rename 时被填, -// 平时为空;sidebar 显示名实时从消息派生 —— 优先取最后一段 assistant 输出里的 ..., -// 其次用首条用户消息纯文本,都没有时回退到 t('conv.defaultTitle')。 -function isAutoTitle(x) { - const s = String(x || '').trim(); - if (!s) return true; - if (/^(new chat|新对话|新会话)$/i.test(s)) return true; - if (/^agent-\d+$/i.test(s)) return true; // 兼容上一轮误存的 agent-N - return false; -} -function displayTitle(sess) { - if (sess && sess.title && !isAutoTitle(sess.title)) return sess.title; - const msgs = (sess && sess.messages) || []; - // 1) 优先:最后一段 assistant 文本里的 ... - for (let i = msgs.length - 1; i >= 0; i--) { - const m = msgs[i]; - if (!m || m.role !== 'assistant') continue; - const txt = assistantStructuredText(m); - const sm = /([\s\S]*?)<\/summary>/i.exec(txt); - if (sm && sm[1].trim()) { - const line = sm[1].trim().split('\n')[0].trim(); - if (line) return line.length > 60 ? line.slice(0, 60) + '…' : line; - } - } - // 2) 兜底:首条用户消息纯文本(去附件占位符) - for (const m of msgs) { - if (!m || m.role !== 'user') continue; - const raw = typeof m.content === 'string' ? m.content : (m.display || ''); - const clean = stripAttachPlaceholders(raw).trim(); - if (clean) return clean.length > 40 ? clean.slice(0, 40) + '…' : clean; - } - return t('conv.defaultTitle'); -} -async function newSession() { - const localId = 'local-' + Date.now() + '-' + Math.random().toString(16).slice(2); - const sess = { id: localId, bridgeSessionId: null, title: '', messages: [], untitled: true, lastActiveTs: Date.now() }; - state.sessions.set(localId, sess); - try { - await ensureBridgeSession(sess); - state.sessions.delete(localId); - sess.id = sess.bridgeSessionId; - state.sessions.set(sess.id, sess); - } catch (e) { showError(t('err.newSession') + ': ' + (e.message || e)); } - setActiveSession(sess.id); - saveSessions(); - renderSessionList(); -} -function sessionNeedsHydrate(sess) { - return !!(sess?.bridgeSessionId && state.bridgeReady && !sess.messages.length); -} - -function runSessionHydrate(sess) { - setSessionLoading(true); - const tid = setTimeout(() => { - if (isActive(sess)) setSessionLoading(false); - }, HYDRATE_LOADING_TIMEOUT_MS); - return hydrateSession(sess).finally(() => { - clearTimeout(tid); - if (isActive(sess)) setSessionLoading(false); - }); -} - -function setActiveSession(id) { - setSessionLoading(false); - state.activeId = id; - if (id) localStorage.setItem('ga_active', id); // 持久化当前会话,刷新后固定恢复它 - const sess = state.sessions.get(id); - if (!sess) return; - // 切会话:回显该会话绑定的模型(后端权威)。未绑定(null)则保持当前全局默认显示。 - if (sess.llmNo != null && sess.llmNo !== state.llmNo) { - state.llmNo = sess.llmNo; - state.liveModel = null; - const p = (state.modelProfiles || []).find(x => (x.id ?? 0) === sess.llmNo); - if (p) state.modelName = modelDisplayName(p); - updateModelChip(); - renderSettingsModels(); - } - if (msgsEl) msgsEl.innerHTML = ''; - const r = rt(sess); - r.draftEl = null; - resetTypewriterState(r); - renderAllMessages(sess); - scrollBottom(true); - setBusy(sess, rt(sess).busy); - renderSessionList(); - refreshPlanBar(null); - syncPlanPollTimer(); - if (!sess.bridgeSessionId || !state.bridgeReady) return; - if (sessionNeedsHydrate(sess)) { - runSessionHydrate(sess); - } else { - restoreElapsedBadges(sess, ensureMsgs()); - planPoll(sess); - } -} -async function closeSession(id) { - const sess = state.sessions.get(id); - if (sess && sess.bridgeSessionId) { - try { await window.ga.rpc('session/cancel', { sessionId: sess.bridgeSessionId }); } catch (_) {} - fetch(`${BRIDGE_ORIGIN}/session/${sess.bridgeSessionId}`, { method: 'DELETE' }).catch(() => {}); - } - state.sessions.delete(id); state.runtime.delete(id); - if (state.activeId === id) { - const next = (sortedSessions()[0] || {}).id || null; // 切到列表最靠上的会话 - if (next) setActiveSession(next); - else { state.activeId = null; localStorage.removeItem('ga_active'); if (msgsEl) msgsEl.innerHTML = ''; refreshEmptyState(null); refreshStatusLabel(); } - } - saveSessions(); - renderSessionList(); -} - -const convMenu = document.getElementById('conv-menu'); -let menuTargetId = null; -function hideConvMenu() { - if (!convMenu) return; - convMenu.hidden = true; - menuTargetId = null; -} -function positionConvMenu(anchor) { - if (!convMenu || !anchor) return; - convMenu.hidden = false; - const rect = anchor.getBoundingClientRect(); - const pad = 8; - const gap = 4; - const w = convMenu.offsetWidth; - const h = convMenu.offsetHeight; - const left = Math.max(pad, Math.min(window.innerWidth - w - pad, rect.right - w)); - const below = rect.bottom + gap; - const above = rect.top - h - gap; - const top = below + h <= window.innerHeight - pad ? below : Math.max(pad, above); - convMenu.style.left = `${left}px`; - convMenu.style.top = `${top}px`; -} -function isSessionRowInteractiveTarget(target) { - const el = target instanceof Element ? target : null; - return !!el?.closest?.( - '.ci-more, .ci-rename-input, button, input, textarea, select, a, [contenteditable="true"], [data-no-session-select]' - ); -} -convListEl.addEventListener('click', (e) => { - const more = e.target.closest('.ci-more'); - if (more) { - e.stopPropagation(); - hideTooltip(); - const item = more.closest('.conv-item'); - const nextTargetId = item?.dataset.id || null; - if (!nextTargetId) { - hideConvMenu(); - return; - } - if (!convMenu.hidden && menuTargetId === nextTargetId) { - hideConvMenu(); - return; - } - menuTargetId = nextTargetId; - // 根据当前会话置顶状态切菜单文案:置顶 / 取消置顶 - const tgt = state.sessions.get(menuTargetId); - const pinSpan = convMenu.querySelector('[data-act="pin"] [data-i18n]'); - if (pinSpan) { - const k = tgt && tgt.pinned ? 'ctx.unpin' : 'ctx.pin'; - pinSpan.setAttribute('data-i18n', k); - pinSpan.textContent = t(k); - } - positionConvMenu(more); - return; - } - if (isSessionRowInteractiveTarget(e.target)) return; - const it = e.target.closest('.conv-item'); - if (it && it.dataset.id) { - setActiveSession(it.dataset.id); - const chatNav = nav.querySelector('.nav-item[data-page="chat"]'); - if (chatNav && !chatNav.classList.contains('active')) chatNav.click(); - } -}); -convMenu.addEventListener('click', (e) => { - e.stopPropagation(); - const act = e.target.closest('.ctx-item')?.dataset.act; - const sess = menuTargetId && state.sessions.get(menuTargetId); - if (sess && act === 'pin') { - if (sess.pinned) { - sess.pinned = false; // 取消置顶 + 放到 pinned 之后、其它 unpinned 之前(unpinned 区域顶部) - const others = [...state.sessions.values()].filter(s => s.id !== sess.id); - const m = new Map(); - for (const s of others) if (s.pinned) m.set(s.id, s); // 先所有仍 pinned 的 - m.set(sess.id, sess); // 再本会话(刚 unpinned) - for (const s of others) if (!s.pinned) m.set(s.id, s); // 再其它 unpinned - state.sessions = m; - } else { - sess.pinned = true; // 置顶 + 移到列表顶 - const m = new Map(); m.set(sess.id, sess); - for (const [k, v] of state.sessions) if (k !== sess.id) m.set(k, v); - state.sessions = m; - } - saveSessions(); - patchSession(sess, { pinned: sess.pinned }); - renderSessionList(); - } else if (sess && act === 'rename') { - hideConvMenu(); - const item = convListEl.querySelector(`.conv-item[data-id="${sess.id}"]`); - if (!item) return; - const titleEl = item.querySelector('.ci-title'); - if (!titleEl) return; - const oldTitle = sess.title || ''; - item.classList.add('renaming'); - const inp = document.createElement('input'); - inp.className = 'ci-rename-input'; - inp.dataset.noSessionSelect = '1'; - inp.maxLength = 50; - inp.value = oldTitle; - titleEl.replaceWith(inp); - bindToastLimit(inp); - inp.focus(); - inp.select(); - const finish = (save) => { - if (inp._done) return; - inp._done = true; - const val = inp.value.trim(); - if (save && val && val !== oldTitle) { - sess.title = val; - sess.untitled = false; - saveSessions(); - patchSession(sess, { title: val, untitled: false }); - const history = tokLoadHistory(); - const sid = sess.bridgeSessionId || sess.id; - let changed = false; - history.forEach(h => { if (h.sessionId === sid) { h.title = val; changed = true; } }); - if (changed) tokSaveHistory(history); - } - renderSessionList(); - }; - inp.addEventListener('keydown', e => { - if (e.key === 'Enter') { e.preventDefault(); finish(true); } - else if (e.key === 'Escape') { e.preventDefault(); finish(false); } - }); - inp.addEventListener('blur', () => finish(true)); - return; - } else if (sess && act === 'del') { - closeSession(sess.id); - } - hideConvMenu(); -}); -document.addEventListener('click', hideConvMenu); -newConvBtn.addEventListener('click', (e) => { e.preventDefault(); newSession(); }); - -/* ═══════════════ 轮询 + 流式 ═══════════════ */ -function normalize(m) { - const o = { id: Number(m.id || 0), role: m.role || 'system' }; - if (m.role !== 'assistant') o.content = m.content || ''; - if (typeof m.display === 'string' && m.display.length) o.display = m.display; - if (m.stopped) o.stopped = true; - if (m.images) o.images = m.images; - if (m.files) o.files = m.files; - if (m.ts) o.ts = m.ts; - // [turn_segs双轨] 透传结构化轮数组(若后端提供);落库消息与 partial 都可能带 - if (Array.isArray(m.turn_segs)) o.turn_segs = m.turn_segs; - if (typeof m.curr_turn === 'number') o.curr_turn = m.curr_turn; - if (m.role === 'assistant' && !o.turn_segs?.length && typeof m.content === 'string') o.content = m.content; - return o; -} -function upsert(sess, raw, partial) { - const m = normalize(raw); const r = rt(sess); - if (partial && m.role === 'assistant') { - if (!r.draftEl) resetTypewriterState(r); - const prevLen = (Array.isArray(r.draftSegs) ? (r.draftSegs[r.draftTurn] || '') : '').length; - r.draftSegs = draftSegsFromPartial(raw, m); - r.draftTurn = (typeof m.curr_turn === 'number') ? m.curr_turn : Math.max(0, r.draftSegs.length - 1); - const curLen = (r.draftSegs[r.draftTurn] || '').length; - const wasEmpty = prevLen === 0; - // 新 draft(含刷新/停止后再开):对齐已有 partial,避免从 0 重播打字机 - if ((!r.draftEl || wasEmpty) && curLen > 0) { - r.draftRecoverPending = true; - } - const tw = r.twState; - if (tw && curLen > (r.draftStreamBaseline || 0)) { - const baseline = r.draftStreamBaseline || 0; - if (tw.shown < baseline) tw.shown = baseline; - } - r.draftStreamBaseline = curLen; - if (isActive(sess)) renderDraft(sess); - return; - } - if (!m.id || r.seen.has(m.id)) return; - r.seen.add(m.id); r.lastId = Math.max(r.lastId, m.id); - if (m.role === 'assistant' && r.draftEl) { - // done 收尾:用 final m 原地重画 bubble(保留 ljq 的"复用 draftEl 不闪烁"优化), - // 同时彻底丢掉 partial 累积的 DOM——避免 frp 高延迟下漏掉的最后一拍丢字。 - // assistantTurnSegs(m) 双轨处理 turn_segs/content,跟 msgNode refresh 路径同源。 - flushTypewriter(sess); - const segs = assistantTurnSegs(m); - const curr = resolveVisibleTurnIndex(segs, m.curr_turn); - r.draftSegs = segs; - r.draftTurn = curr; - r.streamTurn = curr; - if (!r.twState) r.twState = { shown: 0, timer: null }; - if (r.twState.timer) { clearInterval(r.twState.timer); r.twState.timer = null; } - r.twState.turn = curr; - r.twState.shown = (segs[curr] || '').length; - r.draftRecoverPending = false; - if (isActive(sess)) { - let bubble = r.draftEl.querySelector(':scope > .bubble.md'); - if (!bubble) { - bubble = document.createElement('div'); - bubble.className = 'bubble md'; - r.draftEl.appendChild(bubble); - } - bubble.innerHTML = renderAssistantTurnsHtml(segs, curr, false); - postRenderEnhance(bubble); - } - const cursor = r.draftEl.querySelector('.cursor'); - if (cursor) cursor.remove(); - if (r.taskStartedAt) { - ensureTaskElapsedBadge(r.draftEl, r.taskStartedAt, r.taskEndedAt || Date.now()); - r.taskStartedAt = null; r.taskEndedAt = null; - } - if (!r.draftEl.querySelector('.bubble-copy-btn')) { - const copyBtn = document.createElement('button'); - copyBtn.className = 'bubble-copy-btn'; - copyBtn.title = t('act.copy'); - copyBtn.innerHTML = SVG_COPY_ICON; - copyBtn.addEventListener('click', (e) => { - e.stopPropagation(); - const text = assistantCopyText(m); - navigator.clipboard.writeText(text).then(() => { - copyBtn.innerHTML = SVG_CHECK_ICON; - setTimeout(() => { copyBtn.innerHTML = SVG_COPY_ICON; }, 1500); - }); - }); - r.draftEl.appendChild(copyBtn); - } - r.draftEl = null; r.draftSegs = null; r.draftTurn = 0; r.streamTurn = 0; - sess.messages.push(m); - refreshEmptyState(sess); - if (m.role === 'assistant' || m.role === 'user') syncAskUserUi(); - saveSessions(); - return; - } - sess.messages.push(m); appendMessage(sess, m); - saveSessions(); -} - -async function fetchSessionPoll(sess, opts = {}) { - const r = rt(sess); - const sid = sess.bridgeSessionId || sess.id; - const afterId = opts.after ?? r.lastId ?? 0; - const limit = opts.limit ?? POLL_MSG_LIMIT; - const res = await window.ga.rpc('session/poll', { sessionId: sid, afterId, limit }); - if (res?.error) throw new Error(res.error.message || res.error); - return res.result || res; -} - -function applyPollResult(sess, result) { - if (result.partial) upsert(sess, result.partial, true); - for (const msg of (result.messages || [])) upsert(sess, msg, false); - const busy = result.status === 'running' || !!result.partial; - setBusy(sess, busy); - if (isActive(sess)) { - applyPlanPayload(sess, result.plan); - applyLiveModel(result.model, sess); - } - return busy; -} - -/** 用后端运行态模型刷新 chip + 选择器。后端是权威: - * - 同步该会话绑定的 llmNo(live.llmNo)到 sess/state,切回会话能正确回显; - * - mixin: 显示「渠道组(当前子模型)」,跟随故障转移; - * - native: 显示后端真正在用的模型名(live.current),而非前端静态选择。 */ -function applyLiveModel(live, sess = activeSess()) { - if (!live) return; - // 回写该会话绑定的模型下标(权威来自后端)。 - if (live.llmNo != null && sess) sess.llmNo = live.llmNo; - if (isActive(sess) && live.llmNo != null && state.llmNo !== live.llmNo) { - state.llmNo = live.llmNo; - renderSettingsModels(); - } - const selected = (state.modelProfiles || []).find(p => (p.id ?? 0) === state.llmNo); - if (!isActive(sess)) return; - if (selected && selected.kind === 'mixin') { - if (!live.isMixin || !live.current) return; - state.liveModel = { ...live, sessionId: sess?.id || state.activeId }; - const label = `${t('model.aggregationShort')}${lang === 'en' ? ' (' : '('}${profileLabel(live.current) || live.current}${lang === 'en' ? ')' : ')'}`; - if (state.modelName !== label) { state.modelName = label; updateModelChip(); } - return; - } - // native: chip 跟随后端实际模型名(没拿到运行态时回退到选中 profile 的静态名) - state.liveModel = null; - const label = (live.current ? (profileLabel(live.current) || live.current) : null) - || (selected ? modelDisplayName(selected) : null); - if (label && state.modelName !== label) { state.modelName = label; updateModelChip(); } -} - -/** hydrate 批量灌历史,避免逐条 appendMessage 触发全量重绘 */ -function hydrateHistoryMessages(sess, messages) { - const r = rt(sess); - for (const raw of (messages || [])) { - const m = normalize(raw); - if (!m.id || r.seen.has(m.id)) continue; - r.seen.add(m.id); - r.lastId = Math.max(r.lastId, m.id); - sess.messages.push(m); - } - if (isActive(sess)) renderAllMessages(sess); -} - -/** 拉历史:limit=0 一次拿全量(bridge 不截断);不等 idle,running 续交给 pollSession */ -async function hydrateSession(sess) { - try { - const result = await fetchSessionPoll(sess, { after: 0, limit: 0 }); - hydrateHistoryMessages(sess, result.messages); - if (result.partial) upsert(sess, result.partial, true); - const busy = result.status === 'running' || !!result.partial; - setBusy(sess, busy); - if (isActive(sess)) applyPlanPayload(sess, result.plan); - if (busy && !rt(sess).polling) pollSession(sess); - } catch (e) { - showError(t('err.poll') + ': ' + (e.message || e)); - setBusy(sess, false); - } finally { - if (isActive(sess)) { - restoreElapsedBadges(sess, ensureMsgs()); - syncAskUserUi(); - } - tokPollBridge(); - } -} - -async function pollSession(sess) { - const r = rt(sess); - if (r.polling) { r.pollAgain = true; return; } - r.polling = true; - r.pollAgain = false; - /* 手机切后台再回前台时,第一拍 fetch 经常用着死连接秒挂(Failed to fetch), - 但只要给链路 1-2 秒重建,后续就稳。原版一炸就 showError,体验糟。 - 改成:同一次 polling 循环里连续失败 ≥ MAX_ERRORS 次才放弃, - 单次失败做指数退避(1s / 2s / 4s / 8s),够 ride through 一次后台恢复抖动。 */ - const MAX_ERRORS = 5; - let consecutiveErrors = 0; - try { - do { - try { - const result = await fetchSessionPoll(sess); - consecutiveErrors = 0; - let busy = applyPollResult(sess, result); - if (busy) await new Promise(z => setTimeout(z, 500)); - else { - const hasFinalAssistant = (result.messages || []).some(m => m && m.role === 'assistant'); - if (r.draftEl && !hasFinalAssistant) { - await new Promise(z => setTimeout(z, 150)); - const finalResult = await fetchSessionPoll(sess); - busy = applyPollResult(sess, finalResult); - if (busy) { - await new Promise(z => setTimeout(z, 500)); - continue; - } - } - if (r.draftEl) { r.draftEl.remove(); r.draftEl = null; r.draftSegs = null; r.draftTurn = 0; } - resetTypewriterState(r); - break; - } - } catch (innerErr) { - consecutiveErrors++; - if (consecutiveErrors >= MAX_ERRORS) throw innerErr; - const backoff = Math.min(8000, 1000 * Math.pow(2, consecutiveErrors - 1)); - await new Promise(z => setTimeout(z, backoff)); - } - } while (true); - } catch (e) { - showError(t('err.poll') + ': ' + (e.message || e)); - setBusy(sess, false); - } finally { - r.polling = false; renderSessionList(); - // 历史消息已全部加载,恢复已完成任务的耗时 badge - if (isActive(sess)) { - restoreElapsedBadges(sess, ensureMsgs()); - syncAskUserUi(); - } - tokPollBridge(); - if (r.pollAgain) { - r.pollAgain = false; - pollSession(sess); - } - } -} - -function removeUsedPendingFiles(usedFiles) { - if (!usedFiles.length) return; - const usedSids = new Set(usedFiles.map(f => f.sid)); - const touched = new Set(usedFiles.map(f => fileCtx(f))); - state.pendingFiles = state.pendingFiles.filter(f => !usedSids.has(f.sid)); - touched.forEach(ctx => renderThumbStrip(ctx)); -} - -function clearDraft(sess) { - const r = rt(sess); - resetTypewriterState(r); - if (r.draftEl) { r.draftEl.remove(); r.draftEl = null; r.draftSegs = null; r.draftTurn = 0; } -} - -async function waitSessionIdle(sess, maxMs = 4000) { - const start = Date.now(); - while (rt(sess).busy && Date.now() - start < maxMs) { - await new Promise(z => setTimeout(z, 100)); - } - return !rt(sess).busy; -} - -function setSessionLoading(on) { - if (!msgArea || !sessionLoadingEl) return; - if (on && msgArea.classList.contains('is-loading')) return; - msgArea.classList.toggle('is-session-loading', !!on); - sessionLoadingEl.hidden = !on; - if (on && sessionLoadingEl.querySelector('[data-i18n]')) { - sessionLoadingEl.querySelector('[data-i18n]').textContent = t('chat.sessionLoading'); - } -} - -function setMsgLoading(on) { - if (msgArea) msgArea.classList.toggle('is-loading', !!on); - if (msgLoading) { - msgLoading.hidden = !on; - if (on) { - setSessionLoading(false); - scrollBottom(); - } - } -} - -function setComposerLocked(on) { - if (composerEl) composerEl.classList.toggle('is-locked', !!on); - if (inputEl) inputEl.contentEditable = on ? 'false' : 'true'; // contenteditable 无 readOnly,改切 contentEditable - if (sendBtn) { - sendBtn.disabled = !!on; - sendBtn.classList.toggle('is-busy', !!on); - sendBtn.setAttribute('aria-busy', on ? 'true' : 'false'); - } -} - -/** stapp.py 同款:运行中再发 → cancel 当前轮次,等 idle 后再提交新 prompt */ -async function interruptBeforeSend(sess) { - if (!rt(sess).busy) return true; - const t0 = Date.now(); - setMsgLoading(true); - try { - clearDraft(sess); - try { - const res = await window.ga.rpc('session/cancel', { sessionId: sess.bridgeSessionId || sess.id }); - if (res?.error) throw new Error(res.error.message || res.error); - } catch (e) { - showChanToast(t('err.stop') + ': ' + (e.message || e), '', 'err'); - return false; - } - showChanToast(t('sys.interruptPrev.hint'), '', 'info'); - const idle = await waitSessionIdle(sess); - clearDraft(sess); - if (!idle) { - showChanToast(t('err.interruptTimeout'), '', 'err'); - return false; - } - return true; - } finally { - const wait = Math.max(0, MIN_MSG_LOADING_MS - (Date.now() - t0)); - if (wait) await new Promise(r => setTimeout(r, wait)); - setMsgLoading(false); - } -} - -/* ═══════════════ 发送 / 取消 ═══════════════ */ -async function sendPrompt(text) { - text = String(text || '').trim(); - if (!text) return false; - if (!state.bridgeReady) { showError(t('err.bridge')); return false; } - if (!state.activeId) { await newSession(); if (!state.activeId) return false; } - const sess = activeSess(); const r = rt(sess); - if (r.busy) { - const interrupted = await interruptBeforeSend(sess); - if (!interrupted) return false; - } - // PLAN/AUTO 现在是预设功能(preset 卡片)一次性发送,不再是常驻 prefix - const composedPrompt = expandFilePlaceholders(text).trim(); - const usedFiles = collectUsedFiles(text); - const userMsg = { role: 'user', content: text, ts: Date.now() / 1000 }; - const previewImgs = usedFiles.filter(f => f.isImage).map(f => ({ id: 'f-' + f.sid, name: f.name, path: f.path, dataUrl: f.dataUrl || '' })); - if (previewImgs.length) userMsg.images = previewImgs; - const previewFiles = usedFiles.filter(f => !f.isImage).map(f => ({ id: 'f-' + f.sid, name: f.name, path: f.path })); - if (previewFiles.length) userMsg.files = previewFiles; - sess.messages.push(userMsg); appendMessage(sess, userMsg); - sess.lastActiveTs = Date.now(); - // 仿 TUI:不再从首条消息自动改名 —— 标题在 newSession 时已设为 agent-N, - // 之后只接受用户手动 rename。 - saveSessions(); - setBusy(sess, true); - try { - let sid = await ensureBridgeSession(sess); - try { - await bridgeFetch(`/session/${encodeURIComponent(sid)}/restore`, { method: 'POST', body: {} }); - } catch (restoreErr) { - if (/not found/i.test(restoreErr.message || '')) { - sess.bridgeSessionId = null; - sid = await ensureBridgeSession(sess); - state.sessions.delete(sess.id); - sess.id = sess.bridgeSessionId; - state.sessions.set(sess.id, sess); - state.activeId = sess.id; - localStorage.setItem('ga_active', sess.id); // 会话 id 因 bridge 重建而变更,同步持久化 - } - } - const res = await window.ga.rpc('session/prompt', { sessionId: sid, prompt: composedPrompt, display: text, - files: previewFiles, imageMetas: previewImgs.map(im => ({ name: im.name, path: im.path })) }); - if (res?.error) throw new Error(res.error.message || res.error); - removeUsedPendingFiles(usedFiles); - const uid = Number(res.userMessageId || res.result?.userMessageId || 0); - if (uid) { - userMsg.id = uid; - r.seen.add(uid); - r.lastId = Math.max(r.lastId, uid); - } - planPoll(sess); - pollSession(sess); - return true; - } catch (e) { - const em = { role: 'error', content: e.message || String(e) }; - sess.messages.push(em); appendMessage(sess, em); - setBusy(sess, false); - return false; - } -} -async function cancelPrompt() { - const sess = activeSess(); - if (!sess || !rt(sess).busy) return false; - try { - const res = await window.ga.rpc('session/cancel', { sessionId: sess.bridgeSessionId || sess.id }); - if (res?.error) throw new Error(res.error.message || res.error); - clearDraft(sess); - rt(sess).pollAgain = true; - return true; - } catch (e) { showError(t('err.stop') + ': ' + (e.message || e)); return false; } -} - -/* ═══════════════ 输入区 / slash / 预设 ═══════════════ */ -async function submitInput() { - if (_submitInFlight) return; - let text = composerText('chat'); - if (!text.trim()) return; - const slashName = slashCommandName(text); - if (slashName) { - inputEl.innerHTML = ''; - handleSlash(slashName); - return; - } - if (text.length > 20000) { - text = text.slice(0, 20000); - showToast(t('err.charLimit').replace('{n}', 20000), 'warn'); - } - _submitInFlight = true; - setComposerLocked(true); - try { - const sent = await sendPrompt(text); - if (sent) { - inputEl.innerHTML = ''; - } - } finally { - _submitInFlight = false; - setComposerLocked(false); - syncAskUserUi(); - } -} -sendBtn.addEventListener('click', (e) => { - e.preventDefault(); - const sess = activeSess(); - if (sess && rt(sess).busy) { cancelPrompt(); return; } // 运行中:发送键是录制键 → 纯停止 - submitInput(); -}); -inputEl.addEventListener('keydown', (e) => { - if (e.key === 'Enter' && !e.shiftKey && !e.isComposing && e.keyCode !== 229) { e.preventDefault(); submitInput(); } -}); -// 输入框的 input/paste 监听统一在 bindComposerUpload(ctx) 里绑(chat + collab 通用) -function showSystem(text) { - const sess = activeSess(); if (!sess) return; - const m = { role: 'system', content: text }; - sess.messages.push(m); appendMessage(sess, m); -} -function showError(text) { - const sess = activeSess(); - if (sess) { const m = { role: 'error', content: text }; sess.messages.push(m); appendMessage(sess, m); } - else console.error(text); -} -let _toastTimer = null; -function showToast(text) { - let el = document.getElementById('ga-toast'); - if (!el) { el = document.createElement('div'); el.id = 'ga-toast'; el.className = 'ga-toast'; document.body.appendChild(el); } - el.textContent = text; - el.classList.add('show'); - clearTimeout(_toastTimer); - _toastTimer = setTimeout(() => el.classList.remove('show'), 1800); -} - -let tooltipEl = null; -let tooltipTarget = null; -let tooltipTimer = null; -function ensureTooltipEl() { - if (!tooltipEl) { - tooltipEl = document.createElement('div'); - tooltipEl.className = 'ga-tooltip'; - tooltipEl.hidden = true; - document.body.appendChild(tooltipEl); - } - return tooltipEl; -} -function migrateNativeTooltips(root = document) { - const nodes = []; - if (root?.nodeType === Node.ELEMENT_NODE && root.hasAttribute?.('title')) nodes.push(root); - root?.querySelectorAll?.('[title]').forEach(el => nodes.push(el)); - nodes.forEach(el => { - const value = el.getAttribute('title') || ''; - setTooltip(el, value); - }); -} -function tooltipNodeFromEventTarget(target) { - const el = target?.closest?.('[data-tooltip],[title]'); - if (el?.hasAttribute('title')) { - const value = el.getAttribute('title') || ''; - setTooltip(el, value); - } - return el?.dataset?.tooltip ? el : null; -} -function positionTooltip() { - if (!tooltipEl || !tooltipTarget || tooltipEl.hidden) return; - const r = tooltipTarget.getBoundingClientRect(); - const pad = 8; - const tw = tooltipEl.offsetWidth; - const th = tooltipEl.offsetHeight; - const left = Math.max(pad, Math.min(window.innerWidth - tw - pad, r.left + r.width / 2 - tw / 2)); - const topAbove = r.top - th - 8; - const top = topAbove >= pad ? topAbove : Math.min(window.innerHeight - th - pad, r.bottom + 8); - tooltipEl.style.left = `${left}px`; - tooltipEl.style.top = `${Math.max(pad, top)}px`; -} -function showTooltip(target) { - const text = target?.dataset?.tooltip || ''; - if (!text) return; - tooltipTarget = target; - clearTimeout(tooltipTimer); - tooltipTimer = setTimeout(() => { - const el = ensureTooltipEl(); - el.textContent = text; - el.hidden = false; - el.classList.add('show'); - positionTooltip(); - }, 180); -} -function hideTooltip() { - clearTimeout(tooltipTimer); - tooltipTimer = null; - tooltipTarget = null; - if (tooltipEl) { - tooltipEl.classList.remove('show'); - tooltipEl.hidden = true; - } -} -function initCustomTooltips() { - migrateNativeTooltips(); - document.addEventListener('pointerover', (e) => { - const target = tooltipNodeFromEventTarget(e.target); - if (target) showTooltip(target); - }, true); - document.addEventListener('pointerout', (e) => { - if (!tooltipTarget) return; - const from = e.target?.closest?.('[data-tooltip]'); - if (from === tooltipTarget && !tooltipTarget.contains(e.relatedTarget)) hideTooltip(); - }, true); - document.addEventListener('focusin', (e) => { - const target = tooltipNodeFromEventTarget(e.target); - if (target) showTooltip(target); - }, true); - document.addEventListener('focusout', hideTooltip, true); - window.addEventListener('scroll', hideTooltip, true); - window.addEventListener('resize', hideTooltip); - new MutationObserver((records) => { - for (const rec of records) { - if (rec.type === 'attributes' && rec.attributeName === 'title') migrateNativeTooltips(rec.target); - rec.addedNodes?.forEach(node => migrateNativeTooltips(node)); - } - }).observe(document.body, { subtree: true, childList: true, attributes: true, attributeFilter: ['title'] }); -} -const SLASH_COMMANDS = new Set(['help', 'new', 'clear', 'stop', 'settings']); -function slashCommandName(text) { - const trimmed = String(text || '').trim(); - if (!trimmed.startsWith('/')) return ''; - const token = trimmed.slice(1).split(/\s+/)[0]; - return SLASH_COMMANDS.has(token) ? token : ''; -} -async function handleSlash(name) { - switch (name) { - case 'help': showSystem(t('slash.help')); break; - case 'new': await newSession(); break; - case 'clear': { const s = activeSess(); if (s) { s.messages = []; renderAllMessages(s); } break; } - case 'stop': if (await cancelPrompt()) showSystem(t('sys.stopRequested')); break; - case 'settings': openSettings(); break; - default: showSystem(t('slash.unknown') + ': /' + name); - } -} -// 预设卡:按 data-preset 解耦(与翻译后的标题无关) -document.querySelectorAll('.feature-grid').forEach(grid => { - grid.addEventListener('click', (e) => { - const editBtn = e.target.closest('.fc-edit'); - if (editBtn) { - e.stopPropagation(); - const cp = state.customPresets.find(p => p.id === editBtn.dataset.editId); - if (cp) openCustomPresetEditor(cp); - return; - } - const xBtn = e.target.closest('.fc-x'); - if (xBtn) { - e.stopPropagation(); - const kind = xBtn.dataset.removeKind; - const id = xBtn.dataset.removeId; - if (kind === 'builtin') hideBuiltinPreset(id); - else if (kind === 'custom') removeCustomPreset(id); - return; - } - const card = e.target.closest('.fcard'); - if (!card || !grid.contains(card)) return; - const key = card.dataset.preset; - if (key === 'add') { closeModals(); openModal('custom-preset-modal'); resetCustomPresetForm(); return; } - if (card.classList.contains('fcard-custom')) { - const id = card.dataset.id; - const cp = state.customPresets.find(p => p.id === id); - if (cp) { closeModals(); sendPrompt(cp.prompt); } - return; - } - if (!key) { inputEl.focus(); closeModals(); return; } - const bp = BUILTIN_PRESETS.find(p => p.key === key); - if (bp?.navigate) { closeModals(); gaGoPage(bp.navigate); window.collabFocus?.(); return; } - const prompt = I18N[lang]['presetPrompt.' + key] || I18N.zh['presetPrompt.' + key]; - closeModals(); - if (prompt) sendPrompt(prompt); - }); -}); - -/* ═══════════════ 模型 / 设置 ═══════════════ */ -function updateModelChip() { - const name = state.modelName || ''; - if (modelNameEl) modelNameEl.textContent = name; - if (collabModelNameEl) collabModelNameEl.textContent = state.conductorModelName || name; -} -function modelDisplayName(p, fallbackName) { - if (p && p.kind === 'mixin') { - // 静态回退显示「渠道组(首选模型名)」;运行后由 applyLiveModel 切到真实当前子模型。 - const primary = (p.members || [])[0]; - if (!primary) return t('model.aggregation'); - const open = lang === 'en' ? ' (' : '(', close = lang === 'en' ? ')' : ')'; - return `${t('model.aggregationShort')}${open}${profileLabel(primary) || primary}${close}`; - } - return profileLabel(fallbackName ?? (p && p.name)) || (fallbackName ?? (p && p.name)) || null; -} -async function selectModel(id, name) { - state.llmNo = id; - state.liveModel = null; - const p = (state.modelProfiles || []).find(x => (x.id ?? 0) === id); - state.modelName = modelDisplayName(p, name); - updateModelChip(); - renderSettingsModels(); - // 申请切换:有活跃会话 -> 绑定到该会话(后端权威);同时更新全局默认(供新建会话初始值)。 - // 后端是真相源,前端只发请求;申请失败则回滚显示并提示。 - const sess = activeSess(); - if (sess && sess.bridgeSessionId) { - const prevNo = sess.llmNo; - sess.llmNo = id; - try { - await bridgeFetch(`/session/${encodeURIComponent(sess.bridgeSessionId)}/model`, { method: 'POST', body: { llmNo: id } }); - } catch (ex) { - // 后端没切成功:回滚到该会话原绑定,避免前端显示与后端不一致。 - sess.llmNo = prevNo; - if (prevNo != null) { - state.llmNo = prevNo; - const pp = (state.modelProfiles || []).find(x => (x.id ?? 0) === prevNo); - if (pp) state.modelName = modelDisplayName(pp); - updateModelChip(); - renderSettingsModels(); - } - showChanToast(t('err.modelSwitch'), ex.message || '', 'err'); - return; - } - } else if (sess) { - sess.llmNo = id; - } - await persistUiPrefs(); // 写 ui.llmNo 全局默认 -} -async function selectConductorModel(id, name) { - state.conductorLlmNo = id; - const p = (state.modelProfiles || []).find(x => (x.id ?? 0) === id); - state.conductorModelName = modelDisplayName(p, name); - updateModelChip(); - try { await window.ga.saveConductorModel(id); } catch (_) {} -} -async function addToMixin(id) { - try { - const res = await bridgeFetch(`/model-profiles/${id}/mixin`, { method: 'POST', body: {} }); - if (res?.ok === false || res?.error) throw new Error(res.error || t('err.mixinFailed')); - state.modelProfiles = normalizeProfiles(res.profiles || []); - renderSettingsModels(); - } catch (ex) { showChanToast(t('err.mixinFailed'), ex.message || '', 'err'); } -} -async function removeFromMixin(id) { - try { - const res = await bridgeFetch(`/model-profiles/${id}/mixin`, { method: 'DELETE', body: {} }); - if (res?.ok === false || res?.error) throw new Error(res.error || t('err.mixinFailed')); - state.modelProfiles = normalizeProfiles(res.profiles || []); - renderSettingsModels(); - } catch (ex) { showChanToast(t('err.mixinFailed'), ex.message || '', 'err'); } -} -async function reorderMixin(members) { - try { - const res = await bridgeFetch('/model-profiles/mixin/order', { method: 'PUT', body: { members } }); - if (res?.ok === false || res?.error) throw new Error(res.error || t('err.mixinFailed')); - state.modelProfiles = normalizeProfiles(res.profiles || []); - renderSettingsModels(); - const active = state.modelProfiles.find(p => (p.id ?? 0) === state.llmNo); - if (active) { state.modelName = modelDisplayName(active); updateModelChip(); } - } catch (ex) { showChanToast(t('err.mixinFailed'), ex.message || '', 'err'); renderSettingsModels(); } -} -function flipReorder(container, mutate) { - const rows = [...container.querySelectorAll('.model-member:not(.dragging)')]; - const first = new Map(rows.map(el => [el, el.getBoundingClientRect()])); - mutate(); - rows.forEach(el => { - const a = first.get(el), b = el.getBoundingClientRect(); - if (!a) return; - const dx = a.left - b.left, dy = a.top - b.top; - if (!dx && !dy) return; - el.style.transition = 'none'; - el.style.transform = `translate(${dx}px, ${dy}px)`; - requestAnimationFrame(() => { - el.style.transition = 'transform .14s cubic-bezier(.2,.8,.2,1)'; - el.style.transform = ''; - }); - }); -} -function bindMixinDrag(body, members) { - let drag = null; - const clear = () => { - body.querySelectorAll('.model-member').forEach(x => x.classList.remove('dragging', 'drag-over')); - document.body.classList.remove('mixin-dragging'); - }; - body.addEventListener('pointerdown', (e) => { - const handle = e.target.closest('.model-member-drag'); - if (!handle || e.button !== 0) return; - const row = handle.closest('.model-member'); - if (!row) return; - e.preventDefault(); - handle.setPointerCapture?.(e.pointerId); - drag = { handle, row, name: row.dataset.member, order: [...members], original: [...members], pointerId: e.pointerId, over: null }; - row.classList.add('dragging'); - document.body.classList.add('mixin-dragging'); - }); - body.addEventListener('pointermove', (e) => { - if (!drag) return; - const over = document.elementFromPoint(e.clientX, e.clientY)?.closest('.model-member'); - if (!over || !body.contains(over) || over === drag.row) return; - const rect = over.getBoundingClientRect(); - const after = e.clientY > rect.top + rect.height / 2; - const overKey = `${over.dataset.member}:${after ? 'after' : 'before'}`; - if (overKey === drag.over) return; - drag.over = overKey; - const from = drag.order.indexOf(drag.name), overIdx = drag.order.indexOf(over.dataset.member); - if (from < 0 || overIdx < 0) return; - const [moved] = drag.order.splice(from, 1); - let insertAt = drag.order.indexOf(over.dataset.member) + (after ? 1 : 0); - drag.order.splice(insertAt, 0, moved); - flipReorder(body, () => { - if (after) body.insertBefore(drag.row, over.nextSibling); - else body.insertBefore(drag.row, over); - }); - }); - const finish = (e) => { - if (!drag) return; - drag.handle.releasePointerCapture?.(drag.pointerId); - const changed = JSON.stringify(drag.order) !== JSON.stringify(drag.original); - const next = drag.order; - drag = null; - clear(); - if (changed) reorderMixin(next); - }; - body.addEventListener('pointerup', finish); - body.addEventListener('pointercancel', finish); -} -const MODEL_ACT_EDIT = GA_ICON('pencilSimple'); -const MODEL_ACT_DEL = GA_ICON('trash'); -let editingModelId = null; - -function setModelApikeyMode(isAdd) { - const apikey = document.getElementById('model-apikey-input'); - const apikeyReq = document.querySelector('#model-apikey-label .field-req'); - if (!apikey) return; - apikey.required = isAdd; - apikey.dataset.i18nPh = isAdd ? 'model.apikeyPh' : 'model.apikeyKeep'; - if (isAdd) apikey.removeAttribute('data-optional-ph'); - else { apikey.value = ''; apikey.setAttribute('data-optional-ph', ''); } - if (apikeyReq) apikeyReq.hidden = !isAdd; -} - -/* ═══════════════ 官方模型快速接入(DeepSeek / 通义千问)═══════════════ */ -// 预填 API 地址 / 协议 / 模型,用户只需粘贴 API Key。apibase 末尾的 /v1 会被 -// 后端自动补成 /v1/chat/completions(见 mykey_template.py 的拼接规则)。 -const PROVIDER_PRESETS = { - deepseek: { - label: 'DeepSeek', descKey: 'pq.deepseekDesc', - protocol: 'oai', apibase: 'https://api.deepseek.com/v1', - model: 'deepseek-v4-pro', name: 'DeepSeek', - keyUrl: 'https://platform.deepseek.com/api_keys', - color: '#4D6BFE', tint: 'rgba(77,107,254,.12)', - logo: '', - }, - qwen: { - label: '通义千问', descKey: 'pq.qwenDesc', - protocol: 'oai', apibase: 'https://dashscope.aliyuncs.com/compatible-mode/v1', - model: 'qwen3.6-max-preview', name: '通义千问', - keyUrl: 'https://bailian.console.aliyun.com/?apiKey=1', - color: '#615CED', tint: 'rgba(97,92,237,.12)', - logo: '', - }, -}; -window.gaProviderPresets = PROVIDER_PRESETS; - -// 在「添加模型」弹窗顶部显示/隐藏接入指引横幅。key 为 null 时隐藏。 -function setModelGuide(key) { - const box = document.getElementById('model-guide'); - if (!box) return; - const p = key && PROVIDER_PRESETS[key]; - if (!p) { box.hidden = true; box.dataset.provider = ''; return; } - box.hidden = false; - box.dataset.provider = key; - const logo = document.getElementById('model-guide-logo'); - if (logo) { logo.innerHTML = p.logo || ''; logo.style.background = p.tint || ''; } - const nameEl = document.getElementById('model-guide-name'); - if (nameEl) nameEl.textContent = p.label; - const link = document.getElementById('model-guide-link'); - if (link) { link.href = p.keyUrl; link.textContent = t('guide.getKey').replace('{name}', p.label); } -} -window.gaRefreshModelGuide = () => { - const box = document.getElementById('model-guide'); - if (box && !box.hidden && box.dataset.provider) setModelGuide(box.dataset.provider); -}; - -function openAddModelFormForProvider(key) { - const p = PROVIDER_PRESETS[key]; - if (!p) return openAddModelForm(); - editingModelId = null; - const form = document.getElementById('add-model-form'); - const title = document.getElementById('model-form-title'); - const errEl = document.getElementById('add-model-err'); - if (title) title.dataset.i18n = 'modal.addModel'; - if (form) { - form.reset(); - form.model.value = p.model || ''; - form.apibase.value = p.apibase || ''; - form.name.value = p.name || ''; - const pr = form.querySelector(`input[name="protocol"][value="${p.protocol}"]`); - if (pr) pr.checked = true; - } - setModelApikeyMode(true); - if (errEl) { errEl.hidden = true; errEl.textContent = ''; } - setModelGuide(key); - openModal('add-model-modal'); - applyI18n(); - const apikey = document.getElementById('model-apikey-input'); - if (apikey) setTimeout(() => apikey.focus(), 60); -} - -function openAddModelForm() { - editingModelId = null; - const form = document.getElementById('add-model-form'); - const title = document.getElementById('model-form-title'); - const errEl = document.getElementById('add-model-err'); - if (title) title.dataset.i18n = 'modal.addModel'; - if (form) form.reset(); - setModelApikeyMode(true); - setModelGuide(null); - if (errEl) { errEl.hidden = true; errEl.textContent = ''; } - openModal('add-model-modal'); - applyI18n(); -} -async function openEditModelForm(id) { - editingModelId = id; - setModelGuide(null); - const errEl = document.getElementById('add-model-err'); - if (errEl) { errEl.hidden = true; errEl.textContent = ''; } - try { - const res = await bridgeFetch(`/model-profiles/${id}`); - const p = res.profile; - if (!p) throw new Error(t('err.modelSave')); - const form = document.getElementById('add-model-form'); - const title = document.getElementById('model-form-title'); - if (title) title.dataset.i18n = 'modal.editModel'; - if (form) { - form.model.value = p.model || ''; - form.apibase.value = p.apibase || ''; - form.name.value = p.name || ''; - form.max_retries.value = p.max_retries ?? 5; - form.connect_timeout.value = p.connect_timeout ?? 15; - form.read_timeout.value = p.read_timeout ?? 300; - // 编辑模式:按 varName 回填协议分段控件 - const pv = /claude/i.test(p.varName || '') ? 'claude' : 'oai'; - const pr = form.querySelector(`input[name="protocol"][value="${pv}"]`); - if (pr) pr.checked = true; - // 回填流式开关(默认流式) - const sv = (p.stream === false) ? 'false' : 'true'; - const sr = form.querySelector(`input[name="stream"][value="${sv}"]`); - if (sr) sr.checked = true; - } - setModelApikeyMode(false); - openModal('add-model-modal'); - applyI18n(); - } catch (ex) { - showChanToast(t('err.modelSave'), ex.message || '', 'err'); - } -} -async function deleteModel(id, name) { - const label = profileLabel(name) || name || ('#' + id); - if (!(await showConfirmDialog({ title: t('common.delete'), message: `${t('confirm.modelDelete')}\n${label}`, okText: t('common.delete'), okKind: 'danger' }))) return; - try { - const res = await bridgeFetch(`/model-profiles/${id}`, { method: 'DELETE', body: {} }); - if (res?.ok === false || res?.error) throw new Error(res.error || t('err.modelDelete')); - const wasActive = state.llmNo === id; - const oldNo = state.llmNo; - state.modelProfiles = normalizeProfiles(res.profiles || []); - if (wasActive) { - const p = state.modelProfiles[0]; - if (p) await selectModel(p.id ?? 0, p.name); - else { state.llmNo = 0; state.modelName = null; updateModelChip(); } - } else if (oldNo > id) { - const p = state.modelProfiles[oldNo - 1]; - if (p) await selectModel(p.id ?? (oldNo - 1), p.name); - } - renderSettingsModels(); - } catch (ex) { - const msg = ex.message || ''; - showChanToast(msg.includes('last profile') ? t('err.modelDeleteLast') : t('err.modelDelete'), msg.includes('last profile') ? '' : msg, 'err'); - } -} -function renderSettingsModels() { - const box = document.getElementById('model-list'); - if (!box) return; - box.innerHTML = ''; - const list = state.modelProfiles || []; - const mixin = list.find(p => p.kind === 'mixin'); - const natives = list.filter(p => p.kind !== 'mixin'); - const byName = new Map(natives.map(p => [p.name, p])); - - // ── 渠道组(自动故障转移):可展开组;本身也可被选为激活模型 ── - if (mixin) { - const gid = mixin.id ?? 0; - const members = mixin.members || []; - const expanded = state.mixinExpanded !== false; // 默认展开 - const group = document.createElement('div'); - group.className = 'model-group'; - const head = document.createElement('label'); - head.className = 'model-row model-row--mixin' + (state.llmNo === gid ? ' sel' : ''); - head.innerHTML = `${GA_ICON(expanded ? 'caretDown' : 'caretRight')}${escapeHtml(t('model.aggregation'))}`; - head.querySelector('[data-act="toggle"]').addEventListener('click', (e) => { e.stopPropagation(); e.preventDefault(); state.mixinExpanded = !expanded; renderSettingsModels(); }); - head.addEventListener('click', (e) => { if (e.target.closest('[data-act="toggle"]')) return; e.preventDefault(); selectModel(gid, mixin.name); }); - group.appendChild(head); - if (expanded) { - const body = document.createElement('div'); - body.className = 'model-mixin-body'; - if (!members.length) { - const em = document.createElement('div'); - em.className = 'model-mixin-empty'; em.textContent = t('model.emptyMixin'); - body.appendChild(em); - } else { - members.forEach((mName, i) => { - const mp = byName.get(mName); - const row = document.createElement('div'); - row.className = 'model-member'; - row.dataset.member = mName; - row.innerHTML = `${escapeHtml(profileLabel(mName) || mName)}`; - row.querySelector('[data-act="unmix"]').addEventListener('click', (e) => { e.stopPropagation(); e.preventDefault(); if (mp) removeFromMixin(mp.id ?? 0); }); - body.appendChild(row); - }); - bindMixinDrag(body, members); - } - group.appendChild(body); - } - box.appendChild(group); - } - - // ── 独立模型(聚合渠道组已自带分隔,这里不再单列标题)── - if (!natives.length) { - const empty = document.createElement('div'); - empty.className = 'set-empty'; empty.textContent = t('set.noModels'); - box.appendChild(empty); - } else { - for (const p of natives) { - const id = p.id ?? 0; - const label = profileLabel(p.name) || p.name || ('#' + id); - const row = document.createElement('label'); - row.className = 'model-row' + (state.llmNo === id ? ' sel' : ''); - // 独立列表按钮统一为「加入渠道组」(➕);移除只在渠道组展开区做。 - // 已在渠道组的,按钮仍是「加入」,但点击只提示「已在渠道组中」,并用 is-in 给个淡淡的视觉区分。 - const mixToggle = !mixin ? '' : ``; - row.innerHTML = `${escapeHtml(label)}${mixToggle}`; - row.querySelector('[data-act="edit"]').addEventListener('click', (e) => { e.stopPropagation(); e.preventDefault(); openEditModelForm(id); }); - row.querySelector('[data-act="delete"]').addEventListener('click', (e) => { e.stopPropagation(); e.preventDefault(); deleteModel(id, p.name); }); - const addBtn = row.querySelector('[data-act="addmix"]'); - if (addBtn) addBtn.addEventListener('click', (e) => { - e.stopPropagation(); e.preventDefault(); - if (p.inMixin) showToast(t('model.alreadyInMixin')); - else addToMixin(id); - }); - row.addEventListener('click', (e) => { - if (e.target.closest('.model-row-actions')) return; - e.preventDefault(); - selectModel(id, p.name); - }); - box.appendChild(row); - } - } - applyI18n(); -} -function openSettings() { - openModal('settings-modal'); - renderSettingsModels(); - renderLangList(); - applyTheme(theme, { persist: false }); - applyAppearance(appearance, plainUi, { persist: false }); - applyChatFontSize(chatFontSize, { persist: false }); -} -async function loadModelProfiles() { - try { - const res = await window.ga.getModelProfiles(); - const list = res?.profiles || res?.result?.profiles || []; - state.modelProfiles = normalizeProfiles(list); - const active = state.modelProfiles.find(p => p.active) || state.modelProfiles[0]; - if (active) { - state.llmNo = active.id ?? 0; - state.modelName = modelDisplayName(active); - } - // conductor chip 的显示名只在 loadBridgeConfig/selectConductorModel 更新;导入密钥等 - // 仅刷新 profiles 的路径若不在此一并重算,会让 conductor chip 停在旧文案(如空渠道组)。 - if (state.conductorLlmNo != null) { - const cp = state.modelProfiles.find(p => (p.id ?? 0) === state.conductorLlmNo); - if (cp) state.conductorModelName = modelDisplayName(cp); - } - updateModelChip(); - renderSettingsModels(); - } catch (_) {} -} -/* ═══════════════ 模型菜单(chat + conductor 共用一份逻辑,各自一个 DOM) ═══════════════ */ -const modelMenu = document.getElementById('model-menu'); -const collabModelMenu = document.getElementById('cdb-model-menu'); -function renderModelMenu(menuEl) { - if (!menuEl) return; - const list = state.modelProfiles || []; - const selectedNo = menuEl === collabModelMenu ? state.conductorLlmNo : state.llmNo; - const selectedName = menuEl === collabModelMenu ? state.conductorModelName : state.modelName; - const rows = list.map((p, i) => { - const no = (p.id ?? i); - const isActive = (selectedNo === no) ? ' active' : ''; - const label = (isActive && p.kind === 'mixin' && selectedName) ? selectedName : modelDisplayName(p); - return `
${escapeHtml(label || '')}
`; - }); - menuEl.innerHTML = rows.join(''); - applyI18n(); -} -function openModelMenu(chipEl, menuEl) { - if (!chipEl || !menuEl) return; - if (typeof hideConvMenu === 'function') hideConvMenu(); - window.collabComposer?.closeMenu?.(); - closeAllModelMenus(); - renderModelMenu(menuEl); - menuEl.hidden = false; - chipEl.classList.add('open'); - const chipRect = chipEl.getBoundingClientRect(); - const composer = chipEl.closest('.composer'); - if (composer) { - const composerRect = composer.getBoundingClientRect(); - menuEl.style.left = (chipRect.left - composerRect.left) + 'px'; - menuEl.style.bottom = (composerRect.bottom - chipRect.top + 4) + 'px'; - } -} -function closeAllModelMenus() { - if (modelMenu) modelMenu.hidden = true; - if (collabModelMenu) collabModelMenu.hidden = true; - if (modelChip) modelChip.classList.remove('open'); - if (collabModelChip) collabModelChip.classList.remove('open'); -} -function bindModelMenuItemClick(menuEl, onSelect) { - if (!menuEl) return; - menuEl.addEventListener('click', (e) => { - e.stopPropagation(); - const item = e.target.closest('.ga-menu-item'); - if (!item) return; - const no = parseInt(item.dataset.llmno, 10); - if (Number.isNaN(no)) return; - const p = (state.modelProfiles || []).find(x => (x.id ?? 0) === no); - onSelect(no, (p && p.name) || ''); - closeAllModelMenus(); - }); -} -bindModelMenuItemClick(modelMenu, selectModel); -bindModelMenuItemClick(collabModelMenu, selectConductorModel); -if (modelChip) modelChip.addEventListener('click', (e) => { - e.preventDefault(); e.stopPropagation(); - if (modelMenu && !modelMenu.hidden) { closeAllModelMenus(); return; } - openModelMenu(modelChip, modelMenu); -}); -if (collabModelChip) collabModelChip.addEventListener('click', (e) => { - e.preventDefault(); e.stopPropagation(); - if (collabModelMenu && !collabModelMenu.hidden) { closeAllModelMenus(); return; } - openModelMenu(collabModelChip, collabModelMenu); -}); -document.addEventListener('click', (e) => { - if (e.target.closest('#model-menu') || e.target.closest('#model-chip') || - e.target.closest('#cdb-model-menu') || e.target.closest('#cdb-model-chip') || - e.target.closest('#chat-menu') || e.target.closest('#chat-plus-btn') || - e.target.closest('#cdb-menu') || e.target.closest('#cdb-plus-btn')) return; - closeAllModelMenus(); - window.chatComposer?.closeMenu?.(); - window.collabComposer?.closeMenu?.(); -}); -document.addEventListener('keydown', (e) => { - if (e.key === 'Escape') { - closeAllModelMenus(); - window.chatComposer?.closeMenu?.(); - window.collabComposer?.closeMenu?.(); - } -}); - -// 主题色板已删除,点击事件不再注册 -const appearanceSeg = document.getElementById('appearance-seg'); -if (appearanceSeg) appearanceSeg.addEventListener('click', (e) => { - const btn = e.target.closest('.appear-card[data-appearance]'); - if (!btn) return; - const isLight = btn.dataset.appearance === 'light'; - applyAppearance(btn.dataset.appearance, isLight && plainUi); -}); -const plainUiSwitch = document.getElementById('plain-ui-switch'); -if (plainUiSwitch) plainUiSwitch.addEventListener('click', () => { - if (appearance === 'light') applyAppearance('light', !plainUi); -}); -async function loadBridgeConfig() { - try { - const res = await window.ga.getConfig(); - const cfg = res?.config || {}; - if (LANGS.includes(cfg.lang)) { - lang = cfg.lang; - applyI18n(); - } - if (cfg.theme != null) applyTheme(cfg.theme, { persist: false }); - if (cfg.appearance) applyAppearance(cfg.appearance, !!cfg.plain, { persist: false }); - if (cfg.fontSize != null) applyChatFontSize(cfg.fontSize, { persist: false }); - if (cfg.llmNo != null && state.modelProfiles.length) { - const p = state.modelProfiles.find(x => (x.id ?? 0) === cfg.llmNo); - if (p) { - state.llmNo = cfg.llmNo; - state.modelName = modelDisplayName(p); - renderSettingsModels(); - } - } - const cno = cfg.conductor?.llmNo ?? cfg.llmNo; - if (cno != null && state.modelProfiles.length) { - const cp = state.modelProfiles.find(x => (x.id ?? 0) === cno); - if (cp) { - state.conductorLlmNo = cno; - state.conductorModelName = modelDisplayName(cp); - } - } - updateModelChip(); - syncBootCache(); - } catch (_) {} -} - -const addModelForm = document.getElementById('add-model-form'); -if (addModelForm) addModelForm.addEventListener('submit', async (e) => { - e.preventDefault(); - const errEl = document.getElementById('add-model-err'); - const fd = new FormData(addModelForm); - const payload = Object.fromEntries(fd.entries()); - const isEdit = editingModelId != null; - if (!payload.apibase?.trim() || !payload.model?.trim()) { - if (errEl) { errEl.textContent = t('err.modelRequired'); errEl.hidden = false; } - return; - } - if (!isEdit && !payload.apikey?.trim()) { - if (errEl) { errEl.textContent = t('err.modelRequired'); errEl.hidden = false; } - return; - } - try { - const res = isEdit - ? await bridgeFetch(`/model-profiles/${editingModelId}`, { method: 'PUT', body: payload }) - : await bridgeFetch('/model-profiles', { method: 'POST', body: payload }); - if (res?.ok === false || res?.error) throw new Error(res.error || t('err.modelSave')); - state.modelProfiles = normalizeProfiles(res.profiles || []); - const pid = isEdit ? editingModelId : (res.profileId ?? state.modelProfiles.at(-1)?.id ?? 0); - const p = state.modelProfiles.find(x => (x.id ?? 0) === pid) || state.modelProfiles.at(-1); - if (p) await selectModel(p.id ?? pid, p.name); - document.getElementById('add-model-modal').hidden = true; - addModelForm.reset(); - editingModelId = null; - if (errEl) errEl.hidden = true; - } catch (ex) { - if (errEl) { errEl.textContent = (ex.message || t('err.modelSave')); errEl.hidden = false; } - } -}); - -/* ═══════════════ 文件上传(图片+任意文件,tuiapp_v2 模式) ═══════════════ */ -const MAX_UPLOAD_FILES = 10; -const MAX_UPLOAD_BYTES = 500 * 1024 * 1024; // 500 MB -const IMG_EXT_RE = /\.(png|jpe?g|gif|webp|bmp|svg)$/i; -const thumbStrip = document.getElementById('thumb-strip'); -const chatPanel = document.querySelector('main.main'); -let activeFileComposer = 'chat'; - -function fileCtx(f) { return f.ctx || 'chat'; } -function filesForCtx(ctx) { return state.pendingFiles.filter(f => fileCtx(f) === ctx); } - -function composerPageEl(ctx) { - const page = ctx === 'collab' ? 'collab' : 'chat'; - return document.querySelector(`.page--chat-ui[data-page="${page}"]`); -} -function composerRootEl(ctx) { - return composerPageEl(ctx)?.querySelector('.composer'); -} -function composerCfg(ctx = activeFileComposer) { - const root = composerRootEl(ctx); - const page = composerPageEl(ctx); - return { - input: root?.querySelector('.composer-inset .input') || null, - strip: root?.querySelector('.thumb-strip') || null, - uploadBtn: null, - imgInput: root?.querySelector('input[type="file"]') || null, - dropZone: ctx === 'collab' ? page : chatPanel, - }; -} - -function renderThumbStrip(ctx = activeFileComposer) { - const cfg = composerCfg(ctx); - if (!cfg.strip) return; - const files = filesForCtx(ctx); - if (files.length === 0) { - cfg.strip.innerHTML = ''; - cfg.strip.hidden = true; - return; - } - cfg.strip.innerHTML = files.map(f => { - if (f.isImage && f.dataUrl) { - return `
`; - } - const name = f.name || 'file'; - const label = name.replace(/[<>&]/g, c => ({ '<': '<', '>': '>', '&': '&' }[c])); - const sub = fileSubLabel(name).replace(/[<>&]/g, c => ({ '<': '<', '>': '>', '&': '&' }[c])); - const path = (f.path || '').replace(/[<>&"]/g, c => ({ '<': '<', '>': '>', '&': '&', '"': '"' }[c])); - const dataName = name.replace(/[<>&"]/g, c => ({ '<': '<', '>': '>', '&': '&', '"': '"' }[c])); - return `
${GA_ICON('fileText')}${label}${sub}
`; - }).join(''); - cfg.strip.hidden = false; - applyI18n(); -} - -// 在 ctx 对应输入框(contenteditable)的光标处插入原子 chip(删不进中间,像 @人) -function insertPlaceholderInComposer(file, ctx = activeFileComposer) { - const input = composerCfg(ctx).input; - if (!input) return; - const chip = document.createElement('span'); - chip.className = 'ph-chip'; - chip.setAttribute('contenteditable', 'false'); - chip.dataset.sid = String(file.sid); - chip.dataset.kind = file.isImage ? 'image' : 'file'; - chip.textContent = file.name || 'file'; - input.focus(); - const sel = window.getSelection(); - let range; - if (sel && sel.rangeCount && input.contains(sel.getRangeAt(0).commonAncestorContainer)) { - range = sel.getRangeAt(0); - } else { - range = document.createRange(); range.selectNodeContents(input); range.collapse(false); - } - range.deleteContents(); - range.insertNode(chip); - const sp = document.createTextNode(' '); // chip 后补一个 nbsp,便于继续打字/定位光标 - chip.after(sp); - range.setStartAfter(sp); range.collapse(true); - if (sel) { sel.removeAllRanges(); sel.addRange(range); } - input.dispatchEvent(new Event('input', { bubbles: true })); -} - -// 按 sid 从该文件所属 ctx 的输入框移除 chip(连同紧邻空格) -function removePlaceholderFromComposer(file) { - const input = composerCfg(fileCtx(file)).input; - if (!input) return; - const chip = input.querySelector(`.ph-chip[data-sid="${file.sid}"]`); - if (!chip) return; - const next = chip.nextSibling; - if (next && next.nodeType === 3) next.nodeValue = next.nodeValue.replace(/^[\s ]/, ''); - chip.remove(); - input.dispatchEvent(new Event('input', { bubbles: true })); -} - -// 读取 contenteditable 输入框为纯文本:chip → [Image #N]/[File #N],
/
→ 换行 -function readComposerTextFrom(input) { - if (!input) return ''; - const ser = (node, first) => { - if (node.nodeType === 3) return node.nodeValue; - if (node.nodeType !== 1) return ''; - if (node.classList && node.classList.contains('ph-chip')) { - const kind = node.dataset.kind === 'image' ? 'Image' : 'File'; - return `[${kind} #${node.dataset.sid}]`; - } - if (node.tagName === 'BR') return '\n'; - let inner = ''; - node.childNodes.forEach(c => { inner += ser(c, false); }); - return (first ? '' : '\n') + inner; - }; - let out = ''; - input.childNodes.forEach((n, i) => { out += ser(n, i === 0); }); - return out.replace(/ /g, ' '); -} - -function composerText(ctx = activeFileComposer) { - return readComposerTextFrom(composerCfg(ctx).input); -} - -function isImageFile(f) { - return (f && (f.type || '').startsWith('image/')) || IMG_EXT_RE.test(f?.name || ''); -} - -function placeholderFor(file) { - return file.isImage ? `[Image #${file.sid}]` : `[File #${file.sid}]`; -} - -function expandFilePlaceholders(text) { - return text.replace(/\[(Image|File) #(\d+)\]/g, (m, kind, n) => { - const f = state.pendingFiles.find(x => x.sid === Number(n)); - return (f && f.path) ? f.path : ''; // #3 悬空占位符(无对应文件)→ 删掉,不把垃圾发给 agent - }); -} - -function collectUsedFiles(text) { - const used = []; - text.replace(/\[(Image|File) #(\d+)\]/g, (m, kind, n) => { - const f = state.pendingFiles.find(x => x.sid === Number(n)); - if (f) used.push(f); - return m; - }); - return used; -} - -// ── 附件占位符健壮性 ───────────────────────────────────────────── -// 统一移除一个待发附件:出列 + (可选)抹占位符 + 重绘 + 删 bridge 上的文件 -function removePendingFile(sid, { stripPlaceholder = false } = {}) { - const idx = state.pendingFiles.findIndex(f => f.sid === sid); - if (idx < 0) return; - const removed = state.pendingFiles.splice(idx, 1)[0]; - if (stripPlaceholder) removePlaceholderFromComposer(removed); - renderThumbStrip(fileCtx(removed)); - if (removed.path) { - fetch(`${BRIDGE_ORIGIN}/upload`, { - method: 'DELETE', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ path: removed.path }), - }).catch(() => {}); - } -} -// #1 对账:DOM 里 chip 没了(被原子删除/退格整块删)→ 同步移除附件 + 删磁盘文件 -function reconcilePendingFiles(ctx = activeFileComposer) { - const input = composerCfg(ctx).input; - if (!input) return; - const present = new Set([...input.querySelectorAll('.ph-chip[data-sid]')].map(c => Number(c.dataset.sid))); - for (const f of filesForCtx(ctx).filter(x => !present.has(x.sid))) { - removePendingFile(f.sid, { stripPlaceholder: false }); - } -} - -async function uploadOne(name, dataUrl, sid) { - const res = await fetch(`${BRIDGE_ORIGIN}/upload`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ name, dataUrl, sid: sid || '' }), - }); - const j = await res.json(); - if (!j.ok) throw new Error(j.error || 'upload failed'); - return j.path; -} - -async function addFiles(fileList) { - const files = Array.from(fileList || []); - if (files.length === 0) return; - let skipped = false; - let emptyHit = false; - const accepted = []; - for (const f of files) { - if (!f || f.size === 0) { emptyHit = true; continue; } - if (f.size > MAX_UPLOAD_BYTES) { skipped = true; continue; } - if (state.pendingFiles.length + accepted.length >= MAX_UPLOAD_FILES) { skipped = true; break; } - accepted.push(f); - } - if (emptyHit) showChanToast(t('upload.empty'), '', 'err'); - if (accepted.length === 0) { - if (skipped) showChanToast(t('upload.tooLarge'), '', 'err'); - return; - } - const ctx = activeFileComposer; - let uploadSid = ''; - if (ctx === 'collab') { - uploadSid = 'collab'; - } else { - let upSess = activeSess(); - if (!upSess) { await newSession(); upSess = activeSess(); } - if (upSess && !upSess.bridgeSessionId) { try { await ensureBridgeSession(upSess); } catch (_) {} } - uploadSid = (upSess && upSess.bridgeSessionId) || ''; - } - for (const f of accepted) { - try { - const dataUrl = await new Promise((resolve, reject) => { - const r = new FileReader(); - r.onload = () => resolve(String(r.result || '')); - r.onerror = () => reject(r.error); - r.readAsDataURL(f); - }); - const path = await uploadOne(f.name || 'file', dataUrl, uploadSid); - state.fileSeq += 1; - const sid = state.fileSeq; - const isImage = isImageFile(f); - const entry = { - sid, name: f.name || 'file', isImage, path, - dataUrl: isImage ? dataUrl : '', - ctx, - }; - state.pendingFiles.push(entry); - insertPlaceholderInComposer(entry, ctx); - renderThumbStrip(ctx); - } catch (e) { - showChanToast(t('upload.failed'), e.message || String(e), 'err'); - } - } - if (skipped) showChanToast(t('upload.tooLarge'), '', 'err'); -} - -function handleThumbStripClick(e, ctx) { - const x = e.target.closest('.x'); - if (x) { - const sid = Number(x.dataset.sid); - const idx = state.pendingFiles.findIndex(f => f.sid === sid && fileCtx(f) === ctx); - if (idx >= 0) { - const removed = state.pendingFiles[idx]; - state.pendingFiles.splice(idx, 1); - removePlaceholderFromComposer(removed); - renderThumbStrip(ctx); - if (removed.path) { - fetch(`${BRIDGE_ORIGIN}/upload`, { - method: 'DELETE', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ path: removed.path }), - }).catch(() => {}); - } - } - return; - } - const fileChip = e.target.closest('.file-chip.pending'); - if (fileChip) { - const path = fileChip.getAttribute('data-path'); - const name = fileChip.getAttribute('data-name'); - if (path) openUploadFile(path, name); - return; - } - const img = e.target.closest('img'); - if (img && img.src) openLightbox(img.src); -} - -function bindComposerUpload(ctx) { - const cfg = composerCfg(ctx); - if (!cfg.input || cfg.input.dataset.gaUploadBound) return; - cfg.input.dataset.gaUploadBound = ctx; - - if (cfg.uploadBtn && !cfg.uploadBtn.dataset.bound) { - cfg.uploadBtn.dataset.bound = '1'; - cfg.uploadBtn.addEventListener('click', (e) => { - e.preventDefault(); - activeFileComposer = ctx; - cfg.imgInput?.click(); - }); - } - if (cfg.imgInput && !cfg.imgInput.dataset.bound) { - cfg.imgInput.dataset.bound = '1'; - cfg.imgInput.addEventListener('change', () => { - activeFileComposer = ctx; - addFiles(cfg.imgInput.files); - cfg.imgInput.value = ''; - }); - } - cfg.strip?.addEventListener('click', (e) => handleThumbStripClick(e, ctx)); - cfg.input.addEventListener('paste', (e) => { - activeFileComposer = ctx; - const cd = e.clipboardData || window.clipboardData; - const items = cd && cd.items; - const files = []; - if (items) for (const it of items) { if (it.kind === 'file') { const f = it.getAsFile(); if (f) files.push(f); } } - if (files.length) { e.preventDefault(); addFiles(files); return; } - // 富文本粘贴 → 强制纯文本(contenteditable 默认会粘 HTML,会污染输入框) - e.preventDefault(); - const text = cd ? cd.getData('text/plain').replace(/\r\n/g, '\n') : ''; - if (!text) return; - // Hard-limit: only insert what fits within maxLen - const maxLen = 20000; - const curLen = cfg.input.textContent.length; - const sel = window.getSelection(); - const selLen = (sel.rangeCount && cfg.input.contains(sel.anchorNode)) ? sel.toString().length : 0; - const remaining = maxLen - curLen + selLen; - if (remaining <= 0) { showChanToast(t('err.charLimit').replace('{n}', maxLen), '', 'err'); return; } - const insert = text.slice(0, remaining); - document.execCommand('insertText', false, insert); - if (text.length > remaining) showChanToast(t('err.charLimit').replace('{n}', maxLen), '', 'err'); - }); - cfg.input.addEventListener('input', () => { - activeFileComposer = ctx; - // 内容清空后浏览器可能残留
,抹掉以便 :empty 占位提示生效 - if (!cfg.input.textContent.trim() && !cfg.input.querySelector('.ph-chip')) cfg.input.innerHTML = ''; - reconcilePendingFiles(ctx); // chip 被删 → 同步清理附件 + 删磁盘文件 - }); - const zone = cfg.dropZone; - const dropKey = `dropBound_${ctx}`; - if (!zone || zone.dataset[dropKey]) return; - zone.dataset[dropKey] = '1'; - let dragDepth = 0; - const hasFiles = (e) => { - const types = e.dataTransfer && e.dataTransfer.types; - if (!types) return false; - for (let i = 0; i < types.length; i += 1) { - if (types[i] === 'Files') return true; - } - return false; - }; - zone.addEventListener('dragenter', (e) => { - if (!hasFiles(e)) return; - e.preventDefault(); - activeFileComposer = ctx; - dragDepth += 1; - zone.classList.add('dragover'); - zone.dataset.dropHint = t('upload.dropHint'); - }); - zone.addEventListener('dragover', (e) => { - if (!hasFiles(e)) return; - e.preventDefault(); - activeFileComposer = ctx; - e.dataTransfer.dropEffect = 'copy'; - }); - zone.addEventListener('dragleave', (e) => { - if (!hasFiles(e)) return; - dragDepth = Math.max(0, dragDepth - 1); - if (dragDepth === 0) zone.classList.remove('dragover'); - }); - zone.addEventListener('drop', (e) => { - if (!hasFiles(e)) return; - e.preventDefault(); - dragDepth = 0; - zone.classList.remove('dragover'); - activeFileComposer = ctx; - addFiles(e.dataTransfer.files); - }); -} - -bindComposerUpload('chat'); -bindComposerUpload('collab'); - -Object.assign(window, { - gaSetActiveFileComposer: ctx => { activeFileComposer = ctx === 'collab' ? 'collab' : 'chat'; }, - gaPageStatusBar: pageStatusBar, - gaExpandFilePlaceholders: expandFilePlaceholders, - gaRenderMsgChips: renderMsgTextWithChips, - gaCollectUsedFiles: collectUsedFiles, - gaComposerText: composerText, - gaClearUsedPendingFiles: text => removeUsedPendingFiles(collectUsedFiles(text)), - gaFileSubLabel: fileSubLabel, - gaMsgNode: msgNode, - gaCollabItemToMsg: collabItemToMsg, - gaPostRenderEnhance: postRenderEnhance, - gaEscapeHtml: escapeHtml, -}); - -if (chatPanel) { - const blockFileDrop = e => { - const types = e.dataTransfer?.types; - if (!types) return; - for (let i = 0; i < types.length; i += 1) if (types[i] === 'Files') { e.preventDefault(); return; } - }; - window.addEventListener('dragover', blockFileDrop); - window.addEventListener('drop', blockFileDrop); -} - -/* ═══════════════ bridge 事件 ═══════════════ */ -window.ga.onBridgeReady(async () => { - state.bridgeReady = true; - syncPlanPollTimer(); - refreshStatusLabel(); - if (!state.activeId) { refreshEmptyState(null); } - await loadModelProfiles(); - await loadBridgeConfig(); - if (isServicesPageActive()) renderChannelList(gaServiceStore.list()); - const sess = activeSess(); - if (sess && sessionNeedsHydrate(sess)) { - await runSessionHydrate(sess); - } else if (sess) planPoll(sess); - delete document.documentElement.dataset.bootHasSessions; - if (sess) refreshEmptyState(sess); -}); -setTimeout(() => { delete document.documentElement.dataset.bootHasSessions; }, 3000); -window.ga.onBridgeNotification((msg) => { - if (msg && msg.type === 'session-state') { - for (const sess of state.sessions.values()) { - if (sess.bridgeSessionId === msg.sessionId) { - if (['running', 'idle', 'error', 'cancelled'].includes(msg.status) || - ['running', 'idle', 'error', 'cancelled'].includes(msg.state)) { - pollSession(sess); - } - if (msg.state === 'idle' || msg.status === 'idle') tokPollBridge(); - renderSessionList(); - break; - } - } - } -}); -window.ga.onBridgeError((err) => { console.warn('[bridge error]', err); }); -window.ga.onBridgeClosed(() => { - state.bridgeReady = false; - syncPlanPollTimer(); - const s = activeSess(); - if (s) applyPlanPayload(s, null); - chatStatus.setDisconnected(); -}); - -/* ═══════════════ Token 用量页 ═══════════════ */ -const tokTbody = document.getElementById('tok-tbody'); -const tokTable = document.getElementById('tok-table'); -const tokPager = document.getElementById('tok-pager'); -const tokSince = document.getElementById('tok-since'); -const tokUntil = document.getElementById('tok-until'); -const tokTotalN = document.getElementById('tok-total-n'); -const tokTodayN = document.getElementById('tok-today-n'); -const tokCostN = document.getElementById('tok-cost-n'); -const TOK_PER_PAGE = 15; -let _tokPage = 0; -let _tokHistory = []; -let _tokLastSnap = {}; - -// Model price table: $/M tokens [input, output] -const MODEL_PRICES = { - 'gpt-5.4':[2.50,15],'gpt-5':[1.25,10],'gpt-5-mini':[0.25,2],'gpt-4o':[2.50,10],'gpt-4o-mini':[0.15,0.60], - 'gpt-4.1':[2,8],'gpt-4.1-mini':[0.40,1.60],'gpt-4.1-nano':[0.10,0.40],'o4-mini':[0.55,2.20], - 'claude-opus-4-8':[5,25],'claude-opus-4-7':[5,25],'claude-opus-4-6':[5,25],'claude-sonnet-4-6':[3,15],'claude-sonnet-4-5':[3,15],'claude-haiku-4-5':[1,5], - 'deepseek-v4':[0.14,0.28],'deepseek-v4-pro':[0.435,0.87],'deepseek-chat':[0.14,0.28],'deepseek-reasoner':[0.55,2.19], - 'glm-5.1':[0.50,0.50],'minimax-m2.7':[0.50,0.50],'kimi-for-coding':[0.50,2], -}; -const CNY_RATE = 7.2; -function estCost(inp, out, model, cacheRead, cacheCreate) { - let p = [3,15]; - if (model) { const m = model.toLowerCase().replace(/\[.*\]/,''); p = MODEL_PRICES[m] || Object.entries(MODEL_PRICES).find(([k])=>m.includes(k))?.[1] || p; } - const isClaudeOrDS = model && /claude|deepseek/i.test(model); - const cacheReadRate = isClaudeOrDS ? 0.1 : 0.5; - const cacheWriteRate = isClaudeOrDS ? 1.25 : 1.0; - const cost = (inp*p[0] + out*p[1] + (cacheRead||0)*p[0]*cacheReadRate + (cacheCreate||0)*p[0]*cacheWriteRate) / 1e6 * CNY_RATE; - return cost.toFixed(2); -} -function fmtTok(n) { return n>=1e6?(n/1e6).toFixed(2)+'M':n>=1e3?(n/1e3).toFixed(1)+'k':String(n); } -function fmtTime(ts) { return new Date(ts*1000).toLocaleString(undefined,{month:'short',day:'numeric',hour:'2-digit',minute:'2-digit'}); } -function modelPriceTip(model) { - if (!model) return ''; - const m = model.toLowerCase().replace(/\[.*\]/,''); - const entry = MODEL_PRICES[m] || Object.entries(MODEL_PRICES).find(([k])=>m.includes(k))?.[1]; - const known = !!entry; - const p = entry || [3,15]; - const isClaudeOrDS = /claude|deepseek/i.test(m); - const cacheReadRate = isClaudeOrDS ? 0.1 : 0.5; - const cacheWriteRate = isClaudeOrDS ? 1.25 : 1.0; - const lines = []; - if (!known) lines.push(t('tok.pricingUnknown')); - lines.push(t('tok.priceInput') + p[0] + ' /M'); - lines.push(t('tok.priceOutput') + p[1] + ' /M'); - lines.push(t('tok.priceCacheW') + (p[0] * cacheWriteRate).toFixed(2) + ' /M'); - lines.push(t('tok.priceCacheR') + (p[0] * cacheReadRate).toFixed(2) + ' /M'); - return lines.join('\n'); -} - -function tokLoadHistory() { return _tokHistory; } -function tokSaveHistory(h) { - _tokHistory = h; - fetch(`${BRIDGE_ORIGIN}/token-history`, { - method:'POST', headers:{'Content-Type':'application/json'}, - body: JSON.stringify({history:h, snap:_tokLastSnap, conductorHist:_condHist, conductorLast:_condLast}) - }).catch(()=>{}); -} - -let _tokPolling = false; -async function tokPollBridge() { - if (_tokPolling) return; - _tokPolling = true; - try { - if (!_tokHistory.length) { - const stored = await bridgeFetch('/token-history'); - if (stored.history?.length) _tokHistory = stored.history; - if (stored.snap) _tokLastSnap = stored.snap; - if (stored.conductorHist) _condHist = stored.conductorHist; - if (stored.conductorLast) _condLast = stored.conductorLast; - } - const data = await bridgeFetch('/token-stats'); - const history = tokLoadHistory(); - for (const r of (data.records||[])) { - const key = r.thread; - const sid = key.replace('GA-',''); - const sess = [...state.sessions.values()].find(s=>s.bridgeSessionId===sid); - if (sess && rt(sess).busy) continue; - const prev = _tokLastSnap[key] || {input:0,output:0,cacheCreate:0,cacheRead:0}; - let di = r.input-prev.input, do_ = r.output-prev.output, dc = r.cacheCreate-prev.cacheCreate, dr = r.cacheRead-prev.cacheRead; - if (di<0||do_<0||dc<0||dr<0) { di = r.input; do_ = r.output; dc = r.cacheCreate; dr = r.cacheRead; } - if (di>0||do_>0||dc>0||dr>0) { - const title = sess ? displayTitle(sess) : sid; - history.push({sessionId:sid, title:title, input:di, output:do_, cacheCreate:dc, cacheRead:dr, model:r.model||'', ts:Date.now()/1000}); - if(sess?.title) history.forEach(h=>{if(h.sessionId===sid&&(!h.title||h.title===sid))h.title=sess.title;}); - } - _tokLastSnap[key] = {input:r.input, output:r.output, cacheCreate:r.cacheCreate, cacheRead:r.cacheRead}; - } - tokSaveHistory(history); - } catch(_) {} - _tokPolling = false; -} - -function tokGetFiltered() { - let records = tokLoadHistory(); - const parseD = v => v ? new Date(v.replace(/\s+/,'T')).getTime()/1000 : 0; - const since = parseD(tokSince?.value); - const until = parseD(tokUntil?.value); - if (since) records = records.filter(r=>r.ts>=since); - if (until) records = records.filter(r=>r.ts<=until); - return records; -} - -function tokRenderStats(filtered, all) { - let total=0, totalInput=0, totalCacheRead=0, totalCacheCreate=0; - filtered.forEach(r=>{total+=(r.input||0)+(r.output||0)+(r.cacheRead||0)+(r.cacheCreate||0); totalInput+=(r.input||0); totalCacheRead+=(r.cacheRead||0); totalCacheCreate+=(r.cacheCreate||0);}); - if(tokTotalN) tokTotalN.textContent=fmtTok(total); - const cacheBase = totalInput + totalCacheRead + totalCacheCreate; - if(tokCostN) tokCostN.textContent= cacheBase > 0 ? (totalCacheRead / cacheBase * 100).toFixed(1) + '%' : '0%'; - const todayStart=new Date(); todayStart.setHours(0,0,0,0); const todayTs=todayStart.getTime()/1000; - let todayT=0; all.filter(r=>r.ts>=todayTs).forEach(r=>{todayT+=(r.input||0)+(r.output||0)+(r.cacheRead||0)+(r.cacheCreate||0);}); - if(tokTodayN) tokTodayN.textContent=fmtTok(todayT); -} - -function tokRenderTable(records) { - if(!tokTbody) return; - const bySession=new Map(); - for(const r of records){ - const k=r.sessionId||'?'; - const ss= r._conductor ? null : [...state.sessions.values()].find(s=>s.bridgeSessionId===k); - let title = ss ? displayTitle(ss) : (r.title||k); - const deleted = r._conductor ? !!r._killed : !ss; - if(!bySession.has(k)) bySession.set(k,{title:title,deleted:deleted,input:0,output:0,cacheCreate:0,cacheRead:0,lastTs:0,prompts:[]}); - const s=bySession.get(k); s.input+=r.input||0; s.output+=r.output||0; s.cacheCreate+=r.cacheCreate||0; s.cacheRead+=r.cacheRead||0; - if(r.ts>s.lastTs){s.lastTs=r.ts; s.title=title;} s.prompts.push(r); - } - tokTbody.innerHTML=''; - if(bySession.size===0){tokTbody.innerHTML=`${t('tok.noData')}`;if(tokPager)tokPager.innerHTML='';return;} - const sorted=[...bySession.values()].sort((a,b)=>b.lastTs-a.lastTs); - const totalPages=Math.ceil(sorted.length/TOK_PER_PAGE); - if(_tokPage>=totalPages)_tokPage=totalPages-1; - const pageItems=sorted.slice(_tokPage*TOK_PER_PAGE,(_tokPage+1)*TOK_PER_PAGE); - for(const s of pageItems){ - const sCacheBase = s.input + s.cacheRead + s.cacheCreate; - const sCacheRate = sCacheBase > 0 ? (s.cacheRead / sCacheBase * 100).toFixed(1) + '%' : '0%'; - const tr=document.createElement('tr'); tr.className='tok-row-session'; - tr.innerHTML=`${escapeHtml(s.title)}${s.deleted?''+t('tok.deleted')+'':''}${fmtTok(s.input)}${fmtTok(s.output)}${fmtTok(s.cacheCreate)}${fmtTok(s.cacheRead)}${sCacheRate}`; - tokTbody.appendChild(tr); - const details=[]; s.prompts.sort((a,b)=>b.ts-a.ts); - for(const p of s.prompts){ - const dr=document.createElement('tr'); dr.className='tok-detail'; dr.hidden=true; - const modelHtml = p.model ? ` · ${escapeHtml(p.model)}` : ''; - const pCacheBase = (p.input||0) + (p.cacheRead||0) + (p.cacheCreate||0); - const pCacheRate = pCacheBase > 0 ? ((p.cacheRead||0) / pCacheBase * 100).toFixed(1) + '%' : '0%'; - dr.innerHTML=`${fmtTime(p.ts)}${modelHtml}${fmtTok(p.input||0)}${fmtTok(p.output||0)}${fmtTok(p.cacheCreate||0)}${fmtTok(p.cacheRead||0)}${pCacheRate}`; - tokTbody.appendChild(dr); details.push(dr); - } - tr.addEventListener('click',()=>{const o=tr.classList.toggle('open');details.forEach(d=>d.hidden=!o);}); - } - if(tokPager){renderTokPager(tokPager, totalPages, _tokPage, p => { _tokPage = p; tokRenderTable(records); });} -} - -/* 分页按钮:首页/末页 + 当前页前后各 2 + 省略号,最多渲染 ~9 个 DOM, - 1000 页和 10 页都长一样,不会一行排开拖死浏览器。 */ -function renderTokPager(host, totalPages, currentPage, onJump) { - host.innerHTML = ''; - if (totalPages <= 1) return; - const makeBtn = (label, page, opts = {}) => { - const b = document.createElement('button'); - if (opts.svg) b.innerHTML = label; - else b.textContent = label; - if (opts.active) b.classList.add('active'); - if (opts.arrow) b.classList.add('tok-pager-arrow'); - if (opts.disabled) b.disabled = true; - if (!opts.disabled) b.addEventListener('click', () => onJump(page)); - return b; - }; - const makeEllipsis = () => { - const s = document.createElement('span'); - s.className = 'tok-pager-gap'; - s.textContent = '…'; - return s; - }; - // 收集页码:1 / 当前-2..当前+2 / 末页,去重并填省略号 - const pages = new Set([0, totalPages - 1]); - for (let i = Math.max(0, currentPage - 2); i <= Math.min(totalPages - 1, currentPage + 2); i++) pages.add(i); - const sorted = [...pages].sort((a, b) => a - b); - // 首尾箭头用 phosphor 图标(跟侧栏 .chev 同款),不再用 Unicode 字符 - host.appendChild(makeBtn(GA_ICON('caretLeft'), currentPage - 1, { svg: true, arrow: true, disabled: currentPage === 0 })); - let prev = -1; - for (const p of sorted) { - if (prev >= 0 && p - prev > 1) host.appendChild(makeEllipsis()); - host.appendChild(makeBtn(String(p + 1), p, { active: p === currentPage })); - prev = p; - } - host.appendChild(makeBtn(GA_ICON('caretRight'), currentPage + 1, { svg: true, arrow: true, disabled: currentPage === totalPages - 1 })); -} - -async function loadTokenPage(){await tokPollBridge();const f=tokGetFiltered();const all=tokLoadHistory();tokRenderStats(f,all);tokRenderTable(f);} - -const _COND_HIST_KEY = 'conductor_token_hist'; -const _COND_LAST_KEY = 'conductor_token_last'; -const _condZero = {input:0,output:0,cacheCreate:0,cacheRead:0,cost:0}; -let _condHist = null, _condLast = null; -function _condLoadHist() { return _condHist || {..._condZero}; } -function _condLoadLast() { return _condLast; } -function _condSave(hist, last) { - _condHist = hist; _condLast = last; - fetch(`${BRIDGE_ORIGIN}/token-history`, { - method:'POST', headers:{'Content-Type':'application/json'}, - body: JSON.stringify({history:_tokHistory, snap:_tokLastSnap, conductorHist:hist, conductorLast:last}) - }).catch(()=>{}); -} - -/* ─── Token tab switching ─── */ -let _tokTab = 'chat'; -const tokTabs = document.getElementById('tok-tabs'); -const tokFilter = document.querySelector('.tok-filter'); -const tokStatRow = document.querySelector('.page[data-page="token"] .stat-row'); -if (tokTabs) tokTabs.addEventListener('click', e => { - const btn = e.target.closest('.tok-tab'); - if (!btn || btn.classList.contains('active')) return; - tokTabs.querySelectorAll('.tok-tab').forEach(b => b.classList.remove('active')); - btn.classList.add('active'); - _tokTab = btn.dataset.tab; - _tokPage = 0; - if (_tokTab === 'conductor') { if (tokFilter) tokFilter.style.display = 'none'; if (tokStatRow) tokStatRow.style.display = 'none'; if (tokTable) tokTable.classList.add('tok-table--conductor'); loadConductorTokens(); } - else { if (tokFilter) tokFilter.style.display = ''; if (tokStatRow) tokStatRow.style.display = ''; if (tokTable) tokTable.classList.remove('tok-table--conductor'); loadTokenPage(); } -}); - -async function loadConductorTokens() { - let curIn = 0, curOut = 0, curCc = 0, curCr = 0, curCost = 0; - let fetchOk = false; - try { - const data = await (await fetch(`${CONDUCTOR_ORIGIN}/token-stats`)).json(); - const recs = (data.records || []).filter(r => r.thread === 'conductor-agent' || r.thread.startsWith('subagent-')); - for (const r of recs) { - curIn += r.input || 0; curOut += r.output || 0; curCc += r.cacheCreate || 0; curCr += r.cacheRead || 0; - curCost += parseFloat(estCost(r.input || 0, r.output || 0, r.model || '', r.cacheRead || 0, r.cacheCreate || 0)); - } - fetchOk = true; - } catch (_) { - if (tokTbody) tokTbody.innerHTML = `${t('tok.condOffline')}`; - return; - } - const hist = _condLoadHist(); - const last = _condLoadLast(); - if (fetchOk && last && (curIn < last.input || curOut < last.output)) { - hist.input += last.input; hist.output += last.output; hist.cacheCreate += last.cacheCreate; hist.cacheRead += last.cacheRead; hist.cost += last.cost; - } - if (fetchOk) _condSave(hist, {input:curIn, output:curOut, cacheCreate:curCc, cacheRead:curCr, cost:curCost}); - const hIn = hist.input + curIn, hOut = hist.output + curOut, hCc = hist.cacheCreate + curCc, hCr = hist.cacheRead + curCr, hCost = hist.cost + curCost; - if (!tokTbody) return; - const tip = t('tok.condTip'); - const _ci = GA_ICON('gitFork', 'tok-cond-ico'); - const hCacheBase = hIn + hCr + hCc; - const hCacheRate = hCacheBase > 0 ? (hCr / hCacheBase * 100).toFixed(1) + '%' : '0%'; - const curCacheBase = curIn + curCr + curCc; - const curCacheRate = curCacheBase > 0 ? (curCr / curCacheBase * 100).toFixed(1) + '%' : '0%'; - tokTbody.innerHTML = `${_ci}${t('tok.condTotal')}${fmtTok(hIn)}${fmtTok(hOut)}${fmtTok(hCc)}${fmtTok(hCr)}${hCacheRate}${_ci}${t('tok.condCurrent')}${fmtTok(curIn)}${fmtTok(curOut)}${fmtTok(curCc)}${fmtTok(curCr)}${curCacheRate}`; - const pager = document.getElementById('tok-pager'); - if (pager) pager.innerHTML = ''; -} - -/* Flatpickr 初始化 */ -const _fpOpts = { enableTime:true, time_24hr:true, dateFormat:'Y-m-d H:i', locale:window.flatpickr?.l10ns?.[document.documentElement.lang==='en'?'default':'zh']||'default', allowInput:false, onChange(){ _tokPage=0; loadTokenPage(); } }; -const fpSince = tokSince ? flatpickr(tokSince, _fpOpts) : null; -const fpUntil = tokUntil ? flatpickr(tokUntil, _fpOpts) : null; -const tokResetBtn=document.getElementById('tok-reset'); -if(tokResetBtn)tokResetBtn.addEventListener('click',()=>{if(fpSince)fpSince.clear();if(fpUntil)fpUntil.clear();_tokPage=0;loadTokenPage();}); - -/* ─── Token trend chart ─── */ -nav.addEventListener('click',(e)=>{const item=e.target.closest('.nav-item');if(item&&item.dataset.page==='token'){if(_tokTab==='conductor')loadConductorTokens();else loadTokenPage();}if(item&&item.dataset.page==='services')refreshServicesPanel();}); -/* ═══════════════ 自定义预设 ═══════════════ */ -const CP_KEY = 'ga_custom_presets'; -const HB_KEY = 'ga_hidden_builtins'; - -const BUILTIN_PRESETS = [ - { key: 'butler', titleKey: 'preset.butler.t', descKey: 'preset.butler.d', navigate: 'collab', - get iconSvg() { return GA_ICON('gitFork', 'fc-ic'); } }, - { key: 'plan', titleKey: 'preset.plan.t', descKey: 'preset.plan.d', promptKey: 'presetPrompt.plan', - get iconSvg() { return GA_ICON('listChecks', 'fc-ic'); } }, - { key: 'goal', titleKey: 'preset.goal.t', descKey: 'preset.goal.d', promptKey: 'presetPrompt.goal', - get iconSvg() { return GA_ICON('crosshair', 'fc-ic'); } }, - { key: 'autonomous', titleKey: 'preset.autonomous.t', descKey: 'preset.autonomous.d', promptKey: 'presetPrompt.autonomous', - get iconSvg() { return GA_ICON('gridFour', 'fc-ic'); } }, - { key: 'hive', titleKey: 'preset.hive.t', descKey: 'preset.hive.d', promptKey: 'presetPrompt.hive', - get iconSvg() { return GA_ICON('hexagon', 'fc-ic'); } }, - { key: 'review', titleKey: 'preset.review.t', descKey: 'preset.review.d', promptKey: 'presetPrompt.review', - get iconSvg() { return GA_ICON('magnifyingGlass', 'fc-ic'); } }, - { key: 'findwork', titleKey: 'preset.findwork.t', descKey: 'preset.findwork.d', promptKey: 'presetPrompt.findwork', - get iconSvg() { return GA_ICON('robot', 'fc-ic'); } }, - { key: 'mine', titleKey: 'preset.mine.t', descKey: 'preset.mine.d', promptKey: 'presetPrompt.mine', - get iconSvg() { return GA_ICON('star', 'fc-ic'); } }, -]; -const ADD_ICON_SVG = GA_ICON('plus', 'fc-ic'); -// 自定义保存后生成的卡片图标(用户图标,表示"用户自定义的任务")—— 与"添加"卡的 + 区分 -const CUSTOM_ICON_SVG = ''; - -state.customPresets = []; -state.hiddenBuiltins = new Set(); - -function loadCustomPresets() { - try { - const raw = localStorage.getItem(CP_KEY); - const arr = raw ? JSON.parse(raw) : []; - state.customPresets = Array.isArray(arr) ? arr.filter(p => p && p.id && p.title && p.prompt) : []; - } catch { state.customPresets = []; } -} -function saveCustomPresets() { - localStorage.setItem(CP_KEY, JSON.stringify(state.customPresets)); -} -function loadHiddenBuiltins() { - try { - const raw = localStorage.getItem(HB_KEY); - const arr = raw ? JSON.parse(raw) : []; - state.hiddenBuiltins = new Set(Array.isArray(arr) ? arr.filter(k => typeof k === 'string') : []); - } catch { state.hiddenBuiltins = new Set(); } -} -function saveHiddenBuiltins() { - localStorage.setItem(HB_KEY, JSON.stringify([...state.hiddenBuiltins])); -} - -const EDIT_PENCIL_SVG = ''; -function makeCardEl({ kind, dataAttrs, iconSvg, titleText, descText, removable, editable }) { - const card = document.createElement('div'); - card.className = 'fcard ' + kind; - for (const [k, v] of Object.entries(dataAttrs || {})) card.dataset[k] = v; - card.innerHTML = iconSvg; - if (editable) { - const ed = document.createElement('button'); - ed.className = 'fc-edit'; - ed.type = 'button'; - ed.dataset.editId = dataAttrs?.id || ''; - ed.dataset.i18nTitle = 'customPreset.editTitle'; - ed.title = t('customPreset.editTitle'); - ed.innerHTML = EDIT_PENCIL_SVG; - card.appendChild(ed); - } - if (removable) { - const x = document.createElement('button'); - x.className = 'fc-x'; - x.type = 'button'; - x.dataset.removeKind = kind === 'fcard-builtin' ? 'builtin' : 'custom'; - x.dataset.removeId = dataAttrs?.id || dataAttrs?.preset || ''; - x.dataset.i18nTitle = 'customPreset.removeTitle'; - x.title = t('customPreset.removeTitle'); - x.textContent = '×'; - card.appendChild(x); - } - const titleEl = document.createElement('div'); - titleEl.className = 'fc-t'; - titleEl.textContent = titleText; - titleEl.title = titleText; // 截断后悬停看完整标题 - card.appendChild(titleEl); - const descEl = document.createElement('div'); - descEl.className = 'fc-d'; - descEl.textContent = descText; - descEl.title = descText; // 截断后悬停看完整描述 - card.appendChild(descEl); - return card; -} - -function renderAllPresets() { - document.querySelectorAll('.feature-grid').forEach(grid => { - grid.innerHTML = ''; - for (const bp of BUILTIN_PRESETS) { - if (state.hiddenBuiltins.has(bp.key)) continue; - grid.appendChild(makeCardEl({ - kind: 'fcard-builtin', - dataAttrs: { preset: bp.key }, - iconSvg: bp.iconSvg, - titleText: t(bp.titleKey), - descText: t(bp.descKey), - removable: true, - })); - } - for (const cp of state.customPresets) { - grid.appendChild(makeCardEl({ - kind: 'fcard-custom', - dataAttrs: { id: cp.id }, - iconSvg: CUSTOM_ICON_SVG, - titleText: cp.title, - descText: cp.prompt, - removable: true, - editable: true, - })); - } - const addCard = makeCardEl({ - kind: 'add', - dataAttrs: { preset: 'add' }, - iconSvg: ADD_ICON_SVG, - titleText: t('preset.add.t'), - descText: t('preset.add.d'), - removable: false, - }); - grid.appendChild(addCard); - }); - updateRestoreBtnVisibility(); -} - -function addCustomPreset(title, prompt) { - const id = 'cp-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 6); - state.customPresets.push({ id, title, prompt }); - saveCustomPresets(); - renderAllPresets(); -} -function updateCustomPreset(id, title, prompt) { - const cp = state.customPresets.find(p => p.id === id); - if (!cp) return; - cp.title = title; - cp.prompt = prompt; - saveCustomPresets(); - renderAllPresets(); -} -function removeCustomPreset(id) { - const idx = state.customPresets.findIndex(p => p.id === id); - if (idx < 0) return; - state.customPresets.splice(idx, 1); - saveCustomPresets(); - renderAllPresets(); -} -function hideBuiltinPreset(key) { - if (!BUILTIN_PRESETS.some(bp => bp.key === key)) return; - state.hiddenBuiltins.add(key); - saveHiddenBuiltins(); - renderAllPresets(); -} -function restoreBuiltinPresets() { - state.hiddenBuiltins.clear(); - saveHiddenBuiltins(); - renderAllPresets(); -} -function updateRestoreBtnVisibility() { - const btn = document.getElementById('preset-restore-btn'); - if (!btn) return; - btn.hidden = state.hiddenBuiltins.size === 0; -} - -const cpModal = document.getElementById('custom-preset-modal'); -const cpTitleInput = document.getElementById('cp-title'); -const cpPromptInput = document.getElementById('cp-prompt'); -const cpSaveBtn = document.getElementById('cp-save'); -const cpError = document.getElementById('cp-error'); -const cpModalTitle = cpModal?.querySelector('.modal-title'); -let cpEditId = null; // null=新建模式; 否则为正在编辑的自定义预设 id -function clearCpFieldHints() { - cpModal?.querySelectorAll('.field-limit-hint').forEach(h => { h.style.display = 'none'; }); -} -function resetCustomPresetForm() { - cpEditId = null; - if (cpModalTitle) cpModalTitle.textContent = t('modal.customPreset'); - if (cpTitleInput) cpTitleInput.value = ''; - if (cpPromptInput) cpPromptInput.value = ''; - if (cpError) { cpError.hidden = true; cpError.textContent = ''; } - clearCpFieldHints(); - setTimeout(() => { if (cpTitleInput) cpTitleInput.focus(); }, 0); -} -function openCustomPresetEditor(cp) { - closeModals(); - openModal('custom-preset-modal'); - cpEditId = cp.id; - if (cpModalTitle) cpModalTitle.textContent = t('modal.editCustomPreset'); - if (cpTitleInput) cpTitleInput.value = cp.title; - if (cpPromptInput) cpPromptInput.value = cp.prompt; - if (cpError) { cpError.hidden = true; cpError.textContent = ''; } - clearCpFieldHints(); - setTimeout(() => { if (cpTitleInput) cpTitleInput.focus(); }, 0); -} -if (cpSaveBtn) cpSaveBtn.addEventListener('click', () => { - const title = (cpTitleInput?.value || '').trim(); - const prompt = (cpPromptInput?.value || '').trim(); - if (!title || !prompt) { - if (cpError) { cpError.textContent = t('customPreset.empty'); cpError.hidden = false; } - return; - } - if (cpEditId) updateCustomPreset(cpEditId, title, prompt); - else addCustomPreset(title, prompt); - cpEditId = null; - if (cpModal) cpModal.hidden = true; -}); - -const restoreBtn = document.getElementById('preset-restore-btn'); -if (restoreBtn) restoreBtn.addEventListener('click', () => { restoreBuiltinPresets(); }); - - -/* ═══════════════ 图片预览 lightbox ═══════════════ */ -const lightbox = document.getElementById('lightbox'); -const lightboxImg = document.getElementById('lightbox-img'); -function openLightbox(src) { - if (!lightbox || !lightboxImg || !src) return; - lightboxImg.src = src; - lightbox.hidden = false; -} -function closeLightbox() { - if (!lightbox || !lightboxImg) return; - lightbox.hidden = true; - lightboxImg.src = ''; -} -if (lightbox) { - lightbox.addEventListener('click', (e) => { - if (e.target.closest('[data-close]')) closeLightbox(); - }); -} -document.addEventListener('keydown', (e) => { - if (e.key === 'Escape' && lightbox && !lightbox.hidden) closeLightbox(); -}); -if (msgArea) { - msgArea.addEventListener('click', (e) => { - const img = e.target.closest('.user-imgs img'); - if (img && img.src) { openLightbox(img.src); return; } - const fileChip = e.target.closest('.user-files .file-chip'); - if (fileChip) { - const path = fileChip.getAttribute('data-path'); - const name = fileChip.getAttribute('data-name'); - if (path) openUploadFile(path, name); - } - }); -} - -function uploadRawUrl(path, download) { - return `${BRIDGE_ORIGIN}/upload/raw?path=${encodeURIComponent(path || '')}${download ? '&download=1' : ''}`; -} -async function openUploadFile(path, name) { - const a = document.createElement('a'); - a.href = uploadRawUrl(path, true); - a.download = name || ''; - document.body.appendChild(a); - a.click(); - a.remove(); -} - -/* ═══════════════ 后台服务页 Tab(消息通道 / 状态面板) ═══════════════ */ -let _svcTab = 'channels'; -const svcTabsEl = document.getElementById('svc-tabs'); - -function isServicesPageActive() { - return !!document.querySelector('.page[data-page="services"].active'); -} -function isSvcTab(tab) { - return isServicesPageActive() && _svcTab === tab; -} -function setSvcTab(tab) { - if (!tab || tab === _svcTab) return; - _svcTab = tab; - svcTabsEl?.querySelectorAll('.svc-tab').forEach((b) => b.classList.toggle('active', b.dataset.tab === tab)); - document.querySelectorAll('[data-svc-panel]').forEach((p) => p.classList.toggle('active', p.dataset.svcPanel === tab)); - if (tab === 'channels') renderChannelList(gaServiceStore.list()); - else loadStatusPanel(); -} -function refreshServicesPanel() { - if (!isServicesPageActive()) return; - if (_svcTab === 'channels') renderChannelList(gaServiceStore.list()); - else loadStatusPanel(); -} -if (svcTabsEl) { - svcTabsEl.addEventListener('click', (e) => { - const btn = e.target.closest('.svc-tab'); - if (!btn) return; - setSvcTab(btn.dataset.tab); - }); -} - -/* ═══════════════ 消息通道(复用 gaServiceStore + WS 同步) ═══════════════ */ -const CHAN_ICON = GA_ICON('chatTeardropText', 'lr-ic'); -const CHAN_FILE_LABELS = { - 'qqapp.py': 'ch.qq', - 'wechatapp.py': 'ch.wechat', - 'wecomapp.py': 'ch.wecom', - 'dingtalkapp.py': 'ch.dingtalk', - 'tgapp.py': 'ch.telegram', - 'dcapp.py': 'ch.discord', - 'fsapp.py': 'ch.lark', -}; -const chanListEl = document.getElementById('chan-list'); -const chanEmptyEl = document.getElementById('chan-empty'); -const chanLogModal = document.getElementById('chan-log-modal'); -const chanLogPre = document.getElementById('chan-log-pre'); -const chanLogTitle = document.getElementById('chan-log-title'); -const chanConfigModal = document.getElementById('chan-config-modal'); -const chanConfigTitle = document.getElementById('chan-config-title'); -const chanConfigEditor = document.getElementById('chan-config-editor'); -const chanConfigSave = document.getElementById('chan-config-save'); -let _chanLogId = null; -let _chanBusy = false; -let _chanToastTimer = null; - -function getToastRoot() { - let root = document.getElementById('toast-root'); - if (!root) { - root = document.createElement('div'); - root.id = 'toast-root'; - root.className = 'toast-root'; - root.setAttribute('aria-live', 'polite'); - document.body.appendChild(root); - } - return root; -} - -function showChanToast(title, detail, kind) { - if (!title) return; - const root = getToastRoot(); - if (_chanToastTimer) clearTimeout(_chanToastTimer); - root.innerHTML = ''; - const el = document.createElement('div'); - el.className = `toast toast-${kind === 'err' ? 'err' : kind === 'info' ? 'info' : 'ok'}`; - const tEl = document.createElement('span'); - tEl.className = 'toast-title'; - tEl.textContent = title; - el.appendChild(tEl); - if (detail) { - const dEl = document.createElement('span'); - dEl.className = 'toast-detail'; - dEl.textContent = detail; - el.appendChild(dEl); - } - root.appendChild(el); - const show = () => el.classList.add('show'); - requestAnimationFrame(show); - setTimeout(show, 16); - _chanToastTimer = setTimeout(() => { - el.classList.remove('show'); - setTimeout(() => el.remove(), 300); - }, 3000); -} - -/* ── Input length validation ── */ -(function initInputLimits() { - let _toastTimer = null; - - // msgKey 默认用会截断的文案;硬上限输入框传 'err.charLimitReached'(只提醒不提截断) - function limitToast(maxLen, msgKey = 'err.charLimit') { - clearTimeout(_toastTimer); - _toastTimer = setTimeout(() => { - const msg = t(msgKey).replace('{n}', maxLen); - showChanToast(msg, '', 'err'); - }, 300); - } - - // Toast-based: for elements with maxLength attribute (input/textarea) —— 硬上限,不会截断 - function bindToastLimit(el) { - if (!el || !el.maxLength || el.maxLength < 0) return; - el.addEventListener('input', () => { - if (el.value.length >= el.maxLength) limitToast(el.maxLength, 'err.charLimitReached'); - }); - } - - // Toast-based: for contenteditable elements (no native maxLength) - // Note: we only warn on input, not hard-truncate, because truncating innerHTML - // would destroy embedded chips, cursor position, and break IME composition. - // Actual truncation happens at send time in submitInput(). - function bindContentEditableLimit(el, maxLen) { - if (!el) return; - let composing = false; - el.addEventListener('compositionstart', () => { composing = true; }); - el.addEventListener('compositionend', () => { - composing = false; - trimExcess(); - }); - // Layer 1: block non-IME input when at capacity - el.addEventListener('beforeinput', (e) => { - if (composing) return; // let IME through, trim after compositionend - if (e.inputType === 'historyUndo' || e.inputType === 'historyRedo') return; - if (e.inputType && e.inputType.startsWith('delete')) return; - if (el.textContent.length >= maxLen) { - e.preventDefault(); - limitToast(maxLen); - } - }); - // Layer 2: after IME commits, trim excess from last text node - function trimExcess() { - const cur = el.textContent.length; - if (cur <= maxLen) return; - const excess = cur - maxLen; - // Walk text nodes in reverse to trim from the end (skip chip internals) - const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT); - const textNodes = []; - while (walker.nextNode()) textNodes.push(walker.currentNode); - if (!textNodes.length) return; - let toRemove = excess; - for (let i = textNodes.length - 1; i >= 0 && toRemove > 0; i--) { - const node = textNodes[i]; - if (node.nodeValue.length <= toRemove) { - toRemove -= node.nodeValue.length; - node.nodeValue = ''; - } else { - node.nodeValue = node.nodeValue.slice(0, node.nodeValue.length - toRemove); - toRemove = 0; - } - } - limitToast(maxLen); - } - } - - // Per-field inline hint: creates a small red span right after the input. - // 用 JS 管控长度(去掉原生 maxlength),以便"超限尝试"时可靠告警: - // 超出上限的字符先被键入,再由本逻辑截回上限并告警——每次超限都触发 input, - // 兼容打字/粘贴/中文 IME。到达上限本身合法、不告警。告警出现后自动消失,不常驻。 - function bindFieldInlineLimit(el) { - if (!el || !el.maxLength || el.maxLength < 0) return; - const max = el.maxLength; - el.removeAttribute('maxlength'); // 转为 JS 管控 - const hint = document.createElement('span'); - hint.className = 'field-limit-hint'; - hint.style.cssText = 'color:var(--err,#dc2626);font-size:.75rem;display:none;margin-top:2px'; - el.insertAdjacentElement('afterend', hint); - let hideTimer = null; - function warn() { - hint.textContent = t('err.charLimitReached').replace('{n}', max); - hint.style.display = 'block'; - clearTimeout(hideTimer); - hideTimer = setTimeout(() => { hint.style.display = 'none'; }, 2500); - } - function enforce() { - if (el.value.length <= max) return; - const atEnd = el.selectionStart >= el.value.length; - el.value = el.value.slice(0, max); - if (atEnd) el.setSelectionRange(max, max); - warn(); - } - let composing = false; - el.addEventListener('compositionstart', () => { composing = true; }); - el.addEventListener('compositionend', () => { composing = false; enforce(); }); - el.addEventListener('input', () => { if (!composing) enforce(); }); - } - - window.bindFieldInlineLimit = bindFieldInlineLimit; - window.bindToastLimit = bindToastLimit; - - // Number field: clamp to max on blur, no red text; block non-integer chars - function bindNumberClamp(el) { - if (!el || !el.max) return; - const max = Number(el.max); - if (!max) return; - // Block all non-digit keys (allow navigation/editing keys) - el.addEventListener('keydown', (e) => { - if (e.ctrlKey || e.metaKey || e.altKey) return; // allow shortcuts - if (['Backspace','Delete','Tab','ArrowLeft','ArrowRight','Home','End'].includes(e.key)) return; - if (e.key.length === 1 && !/[0-9]/.test(e.key)) e.preventDefault(); - }); - el.addEventListener('input', () => { - // Strip non-digit chars (IME can bypass keydown) - const cleaned = el.value.replace(/[^0-9]/g, ''); - if (cleaned !== el.value) el.value = cleaned; - const v = Number(el.value); - if (el.value !== '' && v > max) el.value = max; - }); - } - - // Wait for DOM ready - function setup() { - // Contenteditable inputs (chat + collab) - const chatInput = document.querySelector('.input[contenteditable][data-i18n-ph="composer.placeholder"]'); - const collabInput = document.getElementById('cdb-input'); - bindContentEditableLimit(chatInput, 20000); - bindContentEditableLimit(collabInput, 20000); - - // Toast targets (standard inputs/textareas with maxLength) - const searchInput = document.querySelector('.search input'); - const mykeyEditor = document.getElementById('chan-config-editor'); - [searchInput, mykeyEditor].forEach(bindToastLimit); - - // Model form: per-field inline hints - const form = document.getElementById('add-model-form'); - if (form) { - ['model', 'apikey', 'apibase', 'name'].forEach(name => { - bindFieldInlineLimit(form.querySelector(`[name="${name}"]`)); - }); - ['max_retries', 'connect_timeout', 'read_timeout'].forEach(name => { - bindNumberClamp(form.querySelector(`[name="${name}"]`)); - }); - } - - // Preset form: 每字段独立内联提示(标题/Prompt 各自独立,互不串扰) - bindFieldInlineLimit(document.getElementById('cp-title')); - bindFieldInlineLimit(document.getElementById('cp-prompt')); - - // First-run desktop-shortcut prompt (Windows portable bundle only). Driven from the web UI - // so the dialog always renders on top — a native dialog from the Rust startup thread had no - // parent window and got buried behind the main window on first launch. - maybeAskDesktopShortcut(); - } - - async function maybeAskDesktopShortcut() { - try { - const should = await window.ga.tauriInvoke('shortcut_should_ask'); - if (!should) return; - const create = await showConfirmDialog({ title: t('common.confirm'), message: t('shortcut.askConfirm'), okText: t('common.confirm') }); - await window.ga.tauriInvoke('shortcut_decide', { create }); - } catch (_) { /* not in tauri / not a bundle — ignore */ } - } - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', setup); - } else { - setup(); - } -})(); - -function channelDisplayName(ch) { - const file = (ch.name || ch.id || '').split('/').pop(); - const key = CHAN_FILE_LABELS[file]; - return key ? t(key) : (ch.name || ch.id || ''); -} -function channelStatusClass(status) { - if (status === 'running') return 'on'; - if (status === 'error') return 'err'; - return 'off'; -} -function channelStatusLabel(status) { - const map = { - running: 'st.running', offline: 'st.offline', error: 'st.error', - starting: 'st.starting', stopping: 'st.stopping', - }; - return t(map[status] || 'st.offline'); -} -function channelErrorMessage(code) { - const map = { not_configured: 'err.channelNotConfigured' }; - return t(map[code] || code || 'err.channelStart'); -} -function channelToastDetail(e) { - const svc = e.data && e.data.service; - if (svc && svc.lastError) return svc.lastError; - const code = e.data && e.data.error; - return channelErrorMessage(code || e.message); -} -function renderChannelList(channels) { - if (!chanListEl) return; - const rows = (channels || []).filter((ch) => (ch.id || '').startsWith('frontends/')); - chanListEl.innerHTML = ''; - if (chanEmptyEl) chanEmptyEl.hidden = rows.length > 0; - for (const ch of rows) { - const row = document.createElement('div'); - row.className = 'list-row'; - row.dataset.channelId = ch.id; - const stClass = channelStatusClass(ch.status || 'offline'); - const running = !!ch.running; - row.innerHTML = ` - ${CHAN_ICON} -
- - -
- - - - - `; - row.querySelector('.chan-name').textContent = channelDisplayName(ch); - row.querySelector('.chan-path').textContent = ch.name || ch.id; - row.querySelector('.chan-status').textContent = channelStatusLabel(ch.status || 'offline'); - row.querySelector('[data-act="configure"]').textContent = t('act.configure'); - row.querySelector('[data-act="logs"]').textContent = t('act.logs'); - chanListEl.appendChild(row); - } -} -async function toggleChannel(id, running, toggleEl) { - if (_chanBusy) return; - _chanBusy = true; - if (toggleEl) toggleEl.disabled = true; - const label = channelDisplayName(gaServiceStore.get(id) || { id }); - try { - if (running) { - await window.ga.stopService(id); - showChanToast(t('sys.channelStopped') + ' · ' + label, '', 'ok'); - } else { - const res = await window.ga.startService(id); - if (res && res.service && res.service.status === 'error') { - throw Object.assign(new Error(res.service.lastError || 'start_failed'), { data: res }); - } - showChanToast(t('sys.channelStarted') + ' · ' + label, '', 'ok'); - } - } catch (e) { - showChanToast( - (running ? t('err.channelStop') : t('err.channelStart')) + ' · ' + label, - channelToastDetail(e), - 'err' - ); - } finally { - _chanBusy = false; - if (toggleEl) toggleEl.disabled = false; - } -} -async function openChannelLogs(id) { - if (!chanLogModal || !chanLogPre) return; - _chanLogId = id; - const ch = gaServiceStore.get(id) || { id }; - const titleName = id === '__bridge__' ? (ch.name || 'bridge') : statusDisplayName(ch); - if (chanLogTitle) chanLogTitle.textContent = t('modal.channelLogs') + ' · ' + titleName; - chanLogPre.textContent = t('ch.loading'); - openModal('chan-log-modal'); - try { - const res = await window.ga.getServiceLogs(id, 200); - const lines = res.lines || []; - chanLogPre.textContent = lines.length ? lines.join('\n') : t('ch.logEmpty'); - } catch (e) { - chanLogPre.textContent = t('err.channelLoad') + ': ' + (e.message || e); - } -} -async function openChannelMykey(channelId) { - if (!chanConfigModal || !chanConfigEditor) return; - const ch = gaServiceStore.get(channelId) || { id: channelId }; - if (chanConfigTitle) { - chanConfigTitle.textContent = t('modal.mykeyConfig') + (channelId ? ' · ' + channelDisplayName(ch) : ''); - } - chanConfigEditor.value = t('ch.loading'); - chanConfigEditor.disabled = true; - if (chanConfigSave) chanConfigSave.disabled = true; - openModal('chan-config-modal'); - try { - const res = await window.ga.getMykeyContent(); - chanConfigEditor.value = res.content || ''; - } catch (e) { - chanConfigEditor.value = t('err.channelLoad') + ': ' + (e.message || e); - } finally { - chanConfigEditor.disabled = false; - if (chanConfigSave) chanConfigSave.disabled = false; - chanConfigEditor.focus(); - } -} -async function saveChannelMykey() { - if (!chanConfigEditor || !chanConfigSave) return; - chanConfigSave.disabled = true; - try { - await window.ga.saveMykeyContent(chanConfigEditor.value); - showChanToast(t('sys.configSaved'), '', 'ok'); - chanConfigModal.hidden = true; - } catch (e) { - showChanToast(t('err.channelLoad'), e.message || String(e), 'err'); - } finally { - chanConfigSave.disabled = false; - } -} -if (chanConfigSave) { - chanConfigSave.addEventListener('click', saveChannelMykey); -} - -/* ═══════════════ 状态面板(复用 ServiceManager + 启停/日志) ═══════════════ */ -const statusListEl = document.getElementById('status-list'); -const BRIDGE_SERVICE_ID = '__bridge__'; -const EXTRA_SERVICE_IDS = new Set(['frontends/conductor.py', 'reflect/scheduler.py']); - -function bridgeOfflinePanelServices() { - return [ - { - id: BRIDGE_SERVICE_ID, - name: `bridge (:${BRIDGE_PORT})`, - status: 'offline', - running: false, - pid: null, - memMb: null, - cpuPct: null, - managed: false, - }, - { - id: 'frontends/conductor.py', - name: 'frontends/conductor.py', - status: 'offline', - running: false, - pid: null, - memMb: null, - cpuPct: null, - managed: false, - bridgeOffline: true, - }, - { - id: 'reflect/scheduler.py', - name: 'reflect/scheduler.py', - status: 'offline', - running: false, - pid: null, - memMb: null, - cpuPct: null, - managed: false, - bridgeOffline: true, - }, - ]; -} - -function statusDisplayName(s) { - if (!s) return ''; - if (s.id === BRIDGE_SERVICE_ID) return s.name || 'bridge'; - if (s.id === 'reflect/scheduler.py') return t('proc.scheduler'); - if (s.id === 'frontends/conductor.py') return t('proc.conductor'); - return channelDisplayName(s); -} -function fmtPid(pid) { return pid ? `PID ${pid}` : '—'; } -function fmtRes(s) { - const cpu = s.cpuPct != null ? `${s.cpuPct}%` : '—'; - const mem = s.memMb != null ? `${s.memMb}MB` : '—'; - return `${cpu} / ${mem}`; -} - -function renderStatusPanel(services) { - if (!statusListEl) return; - statusListEl.innerHTML = ''; - for (const s of services || []) { - const row = document.createElement('div'); - row.className = 'list-row'; - row.dataset.serviceId = s.id; - const stClass = channelStatusClass(s.status || 'offline'); - const running = !!s.running; - const managed = s.managed !== false; - const isBridge = s.id === BRIDGE_SERVICE_ID; - const isExtra = EXTRA_SERVICE_IDS.has(s.id); - let acts = ''; - if (isBridge) { - if (running) { - acts += ``; - acts += ``; - } else { - acts += ``; - } - } else if (!s.bridgeOffline) { - acts += ``; - if (managed) { - if (running) acts += ``; - if (isExtra) { - acts += ``; - } else { - acts += ``; - } - } - } - row.innerHTML = ` - - - - - - ${acts}`; - row.querySelector('.st-name').textContent = statusDisplayName(s); - row.querySelector('.st-status').textContent = channelStatusLabel(s.status || 'offline'); - row.querySelector('.st-pid').textContent = fmtPid(s.pid); - row.querySelector('.st-res').textContent = fmtRes(s); - const logBtn = row.querySelector('[data-act="logs"]'); - if (logBtn) logBtn.textContent = t('act.logs'); - const rstBtn = row.querySelector('[data-act="restart"]'); - if (rstBtn) rstBtn.textContent = t('act.restart'); - const startBridgeBtn = row.querySelector('[data-act="bridge-start"]'); - if (startBridgeBtn) startBridgeBtn.textContent = t('act.start'); - const exitBridgeBtn = row.querySelector('[data-act="bridge-exit"]'); - if (exitBridgeBtn) exitBridgeBtn.textContent = t('act.exit'); - const textToggleBtn = row.querySelector('.link-btn[data-act="toggle"]'); - if (textToggleBtn) textToggleBtn.textContent = running ? t('act.exit') : t('act.start'); - statusListEl.appendChild(row); - } -} - -async function loadStatusPanel() { - if (!statusListEl) return; - if (bridgeUiOffline) { - renderStatusPanel(bridgeOfflinePanelServices()); - return; - } - try { - const res = await window.ga.getServicePanel(); - renderStatusPanel(res.services || []); - } catch (_) { - window.ga.setBridgeUiOffline(true); - gaServiceStore.applySnapshot(bridgeOfflinePanelServices()); - renderStatusPanel(bridgeOfflinePanelServices()); - } -} - -async function restartService(id) { - const label = statusDisplayName(gaServiceStore.get(id) || { id }); - await window.ga.stopService(id); - const res = await window.ga.startService(id); - if (res && res.service && res.service.status === 'error') { - throw Object.assign(new Error(res.service.lastError || 'start_failed'), { data: res }); - } - showChanToast(t('act.restart') + ' · ' + label, '', 'ok'); -} - -if (statusListEl) { - statusListEl.addEventListener('click', async (e) => { - const row = e.target.closest('.list-row'); - if (!row) return; - const id = row.dataset.serviceId; - const actEl = e.target.closest('[data-act]'); - if (!actEl || !id) return; - const act = actEl.dataset.act; - if (act === 'logs') { - openChannelLogs(id); - return; - } - if (act === 'bridge-start') { - if (_chanBusy) return; - _chanBusy = true; - actEl.disabled = true; - try { - await window.ga.spawnBridge(); - await loadStatusPanel(); - showChanToast(t('sys.channelStarted') + ' · bridge', '', 'ok'); - } catch (err) { - showChanToast(t('err.channelStart') + ' · bridge', err.message || String(err), 'err'); - } finally { - _chanBusy = false; - actEl.disabled = false; - } - return; - } - if (act === 'bridge-exit') { - if (_chanBusy) return; - _chanBusy = true; - actEl.disabled = true; - try { - window.ga.setBridgeUiOffline(true); - gaServiceStore.applySnapshot(bridgeOfflinePanelServices()); - renderStatusPanel(bridgeOfflinePanelServices()); - await window.ga.exitBridge(); - showChanToast(t('sys.channelStopped') + ' · bridge', '', 'ok'); - } catch (err) { - showChanToast(t('err.channelStop') + ' · bridge', err.message || String(err), 'err'); - } finally { - _chanBusy = false; - actEl.disabled = false; - } - return; - } - if (act === 'restart') { - if (_chanBusy) return; - _chanBusy = true; - try { - await restartService(id); - await loadStatusPanel(); - } catch (err) { - showChanToast(t('act.restart') + ' · ' + statusDisplayName({ id }), err.message || String(err), 'err'); - } finally { - _chanBusy = false; - } - return; - } - if (act === 'toggle') { - if (actEl.disabled || _chanBusy) return; - const running = actEl.classList.contains('on'); - await toggleChannel(id, running, actEl); - if (isSvcTab('status')) loadStatusPanel(); - } - }); -} - -gaServiceStore.onServices((list) => { - if (isSvcTab('channels')) renderChannelList(list); - if (isSvcTab('status')) { - if (bridgeUiOffline) renderStatusPanel(bridgeOfflinePanelServices()); - else loadStatusPanel(); - } -}); -if (chanListEl) { - chanListEl.addEventListener('click', async (e) => { - const row = e.target.closest('.list-row'); - if (!row) return; - const id = row.dataset.channelId; - const actEl = e.target.closest('[data-act]'); - if (!actEl || !id) return; - const act = actEl.dataset.act; - if (act === 'logs') { - openChannelLogs(id); - return; - } - if (act === 'configure') { - openChannelMykey(id); - return; - } - if (act === 'toggle') { - if (actEl.disabled || _chanBusy) return; - const running = actEl.classList.contains('on'); - await toggleChannel(id, running, actEl); - } - }); -} - -/* ═══════════════ 启动 ═══════════════ */ -(async () => { -await loadSessions(); -applyAppearance(appearance, plainUi, { persist: false }); -applyTheme(theme, { persist: false }); -initChatFontStepper(); -applyChatFontSize(chatFontSize, { persist: false }); -syncHljsTheme(); -applyI18n(); -initCustomTooltips(); -updateModelChip(); -renderSessionList(); -loadCustomPresets(); -loadHiddenBuiltins(); -renderAllPresets(); -if (state.activeId) setActiveSession(state.activeId); -else refreshEmptyState(null); -// bridge-ready 可能在上面的 await 期间就已到达(WS 一连上 bridge 即推送), -// 此时 state.bridgeReady 已为 true,直接按真实状态渲染,避免把「就绪」覆盖回「连接中」。 -if (state.bridgeReady) refreshStatusLabel(); -else chatStatus.setConnecting(); -window.ga.startBridge && window.ga.startBridge(); -})(); - -/* 聊天 / Conductor 共用 composer 绑定(结构:.composer > .composer-slot > .composer-inset) */ -function bindComposerInRoot(root, opts) { - if (!root || root.dataset.composerBound) return null; - root.dataset.composerBound = '1'; - const ctx = opts.ctx || root.dataset.composerCtx || 'chat'; - const input = root.querySelector('.composer-inset .input'); - const fileInput = root.querySelector('input[type="file"]'); - const plusBtn = root.querySelector('.composer-plus'); - const menu = root.querySelector('.composer-menu'); - const sendBtn = root.querySelector('.send'); - - function closeMenu() { - if (!menu) return; - menu.hidden = true; - plusBtn?.setAttribute('aria-expanded', 'false'); - } - - function openMenu() { - if (!menu || !plusBtn) return; - closeAllModelMenus?.(); - if (ctx === 'chat') window.collabComposer?.closeMenu?.(); - else window.chatComposer?.closeMenu?.(); - menu.hidden = false; - plusBtn.setAttribute('aria-expanded', 'true'); - } - - function toggleMenu() { - if (!menu) return; - if (menu.hidden) openMenu(); - else closeMenu(); - } - - function doSend() { opts.onSend?.(); } - - plusBtn?.addEventListener('click', (e) => { - e.preventDefault(); - e.stopPropagation(); - toggleMenu(); - }); - - menu?.addEventListener('click', (e) => { - const item = e.target.closest('[data-composer-action]'); - if (!item) return; - e.stopPropagation(); - closeMenu(); - const act = item.dataset.composerAction; - if (act === 'upload') { - window.gaSetActiveFileComposer?.(ctx); - fileInput?.click(); - return; - } - if (act === 'preset') openModal('preset-modal'); - }); - - input?.addEventListener('keydown', (e) => { - if (e.key === 'Enter' && !e.shiftKey && !e.isComposing && e.keyCode !== 229) { - e.preventDefault(); - doSend(); - } - }); - - sendBtn?.addEventListener('click', (e) => { - e.preventDefault(); - doSend(); - }); - - opts.afterBind?.(root, { input, closeMenu, doSend }); - return { ctx, input, closeMenu, focus: () => input?.focus() }; -} - -(function () { - 'use strict'; - const root = document.getElementById('chat-composer'); - const bound = bindComposerInRoot(root, { - ctx: 'chat', - onSend() { - const sess = activeSess(); - if (sess && rt(sess).busy) { cancelPrompt(); return; } - submitInput(); - }, - }); - if (bound) window.chatComposer = { closeMenu: bound.closeMenu, focus: bound.focus }; -})(); - -(function () { - 'use strict'; - const root = document.getElementById('cdb-composer'); - if (!root) return; - - let onSend = null; - const input = root.querySelector('.composer-inset .input'); - const sendBtn = root.querySelector('.send'); - - function text() { return window.gaComposerText?.('collab') ?? ''; } - function clearIfMatch(raw) { - if (input && text().trim() === String(raw || '').trim()) input.innerHTML = ''; - } - function setEnabled(on) { - if (input) input.contentEditable = on ? 'true' : 'false'; - if (sendBtn) sendBtn.disabled = !on; - } - - const bound = bindComposerInRoot(root, { - ctx: 'collab', - onSend() { if (onSend) onSend(text()); }, - afterBind() { - document.querySelectorAll('#collab-quick [data-prompt-key]').forEach((btn) => { - btn.addEventListener('click', () => { - if (!onSend) return; - const key = btn.dataset.promptKey; - onSend((window.gaT && window.gaT(key)) || key); - }); - }); - }, - }); - if (!bound) return; - - function init(handler) { - onSend = handler; - } - - window.collabComposer = { - init, text, clearIfMatch, setEnabled, - focus: bound.focus, - closeMenu: bound.closeMenu, - }; -})(); - -/* Conductor 页 — 直连 Conductor WS,不走 bridge session */ -(function () { - 'use strict'; - const wsUrl = () => `${CONDUCTOR_WS_ORIGIN}/ws`; - const FAIL_MAX = 5, RECON_BASE = 1200, RECON_MAX = 30000; - const $ = id => document.getElementById(id); - const t = k => (window.gaT && window.gaT(k)) || k; - const esc = s => (window.gaEscapeHtml ? window.gaEscapeHtml(s) : String(s ?? '').replace(/[&<>"]/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"' }[c]))); - const stripAttach = text => String(text || '') - .replace(/\[(Image|File)\s+#\d+\]\s*/g, '') - .replace(/[^\s]*desktop_uploads[^\s]*\s*/g, '') // 兜底:去掉内联的本地上传路径,避免历史/回显消息把全路径甩出来 - .trim(); - const GA_STATUS_BREATHE_SM = ''; - function collabStatusMark(status) { - switch (status) { - case 'running': return GA_STATUS_BREATHE_SM; - case 'reported': return ''; - case 'paused': return ''; - case 'failed': return ''; - case 'terminated': return ''; - default: return ''; - } - } - const ST_KEYS = { running: 'collab.stRunning', reported: 'collab.stReported', paused: 'collab.stPaused', failed: 'collab.stFailed', terminated: 'collab.stTerminated' }; - - const S = { - everConnected: false, reconnecting: false, serviceAvailable: false, - messages: [], workers: [], runningCount: 0, - conductorTyping: false, failCount: 0, - historyReady: false, reconnectAt: 0, progressOpen: false, - }; - let ws, connectTimer, reconnectTick, titleSeq = 0, wsGen = 0, localSeq = 0; - const titleSeen = new Map(); - let prevRail = { running: 0, done: 0, issue: 0, count: 0, sig: '' }; - const prevUpdated = new Map(); - const collabStatus = window.gaPageStatusBar?.($('collab-run-toggle')); - - let draftEl = null; - - const scrollMsgs = () => { - const root = $('collab-msgs'); - const sc = root?.querySelector('.collab-scroll'); - if (sc) sc.scrollTop = sc.scrollHeight; - }; - const showDraft = () => S.conductorTyping && S.serviceAvailable && S.historyReady && S.messages.length > 0; - - function workerSig(list) { - return (list || []).map(w => `${w.id}:${w.updatedAt}:${w.status}`).join('|'); - } - - function pulseEl(el) { - if (!el) return; - el.classList.remove('pulse'); - void el.offsetWidth; - el.classList.add('pulse'); - } - - function syncProgressDrawer() { - const page = document.querySelector('.page[data-page="collab"]'); - if (page) page.classList.toggle('collab-prog-open', S.progressOpen); - } - - function syncRail(opts = {}) { - const rail = $('collab-rail'); - const hasChat = S.historyReady && S.messages.length > 0; - if (rail) rail.hidden = !hasChat; - - const running = S.workers.filter(w => w.status === 'running').length; - const done = S.workers.filter(w => w.status === 'reported').length; - const issue = S.workers.filter(w => w.status === 'failed').length; - const runBadge = $('collab-rail-run'); - const doneBadge = $('collab-rail-done'); - const issueBadge = $('collab-rail-issue'); - const runN = $('collab-rail-run-n'); - const doneN = $('collab-rail-done-n'); - const issueN = $('collab-rail-issue-n'); - - if (runBadge) runBadge.hidden = running <= 0; - if (doneBadge) doneBadge.hidden = done <= 0; - if (issueBadge) issueBadge.hidden = issue <= 0; - if (runN) runN.textContent = String(running); - if (doneN) doneN.textContent = String(done); - if (issueN) issueN.textContent = String(issue); - - const sig = workerSig(S.workers); - if (opts.pulse) { - if (running > prevRail.running || S.workers.length > prevRail.count) pulseEl(runBadge); - if (done > prevRail.done) pulseEl(doneBadge); - if (issue > prevRail.issue) pulseEl(issueBadge); - } else if (sig !== prevRail.sig) { - if (running !== prevRail.running) pulseEl(runBadge); - if (done !== prevRail.done) pulseEl(doneBadge); - if (issue !== prevRail.issue) pulseEl(issueBadge); - } - prevRail = { running, done, issue, count: S.workers.length, sig }; - syncProgressDrawer(); - } - - function toggleProgress(open) { - S.progressOpen = typeof open === 'boolean' ? open : !S.progressOpen; - syncRail(); - } - - function clearDraft() { - if (draftEl) { draftEl.remove(); draftEl = null; } - } - - function syncDraft() { - const list = $('collab-msg-list'); - if (!list || list.hidden || !showDraft()) return clearDraft(); - if (!draftEl) draftEl = document.createElement('div'); - draftEl.className = 'msg system collab-msg-enter'; - draftEl.setAttribute('aria-label', t('collab.typing')); - draftEl.innerHTML = '
'; - list.appendChild(draftEl); - requestAnimationFrame(scrollMsgs); - } - - function relTime(ts) { - if (!ts) return ''; - const ms = typeof ts === 'number' ? (ts > 1e12 ? ts : ts * 1000) : Date.parse(ts); - if (!ms || Number.isNaN(ms)) return ''; - const sec = Math.max(0, Math.floor((Date.now() - ms) / 1000)); - if (sec < 10) return t('collab.timeJust'); - if (sec < 60) return t('collab.timeSec').replace('{n}', sec); - const min = Math.floor(sec / 60); - if (min < 60) return t('collab.timeMin').replace('{n}', min); - const hr = Math.floor(min / 60); - return hr < 24 ? t('collab.timeHr').replace('{n}', hr) : t('collab.timeDay').replace('{n}', Math.floor(hr / 24)); - } - - function mapStatus(status, reply) { - const r = (reply || '').trim(); - if (status === 'running') return 'running'; - if (status === 'failed') return 'failed'; - if (status === 'aborted') return 'terminated'; - if (status === 'stopped') return r ? 'reported' : 'paused'; - return 'paused'; - } - - function normalizeWorker(raw) { - if (!titleSeen.has(raw.id)) titleSeen.set(raw.id, ++titleSeq); - const ui = mapStatus(raw.status, raw.reply); - let title = String(raw.prompt ?? '').replace(/^[\s请帮我麻烦]+/u, '').trim(); - if (!title) title = t('collab.taskFallback').replace('{n}', titleSeen.get(raw.id)); - else { - title = (title.split(/[\n。!?.!?]/)[0] || '').trim(); - if (title.length > 18) title = title.slice(0, 18) + '…'; - } - const reply = String(raw.reply || '').replace(/\s+/g, ' ').trim(); - let summary = reply ? (reply.length > 80 ? reply.slice(0, 80) + '…' : reply) : t(ui === 'running' ? 'collab.summaryRunning' : 'collab.summaryWait'); - return { id: raw.id, title, status: ui, summary, fullReply: raw.reply || '', updatedAt: raw.updated_at }; - } - - function syncCollabStatus() { - if (!collabStatus) return; - if (S.conductorTyping && S.serviceAvailable) collabStatus.setBusy(t('status.running')); - else if (S.serviceAvailable) collabStatus.setReady(); - else if (S.reconnecting || (!S.everConnected && S.failCount < FAIL_MAX)) collabStatus.setConnecting(); - else collabStatus.set(t('collab.offlineShort'), 'offline'); // 顶栏直接显示"无法连接 Conductor(8900)"取代"未连接" - } - - function setConnUi() { - const retry = $('collab-retry'); - const avail = S.serviceAvailable; - const trying = !avail && !S.everConnected && S.failCount < FAIL_MAX; - // 只有"真离线且不在自动重连"才显示刷新图标(右边的手动重试入口) - if (retry) retry.hidden = avail || S.reconnecting || trying; - window.collabComposer?.setEnabled?.(avail); - syncCollabStatus(); - syncDraft(); - syncRail(); - } - - let cardMenu = null; - function hideCardMenu() { if (cardMenu) { cardMenu.remove(); cardMenu = null; } } - function showCardMenu(x, y, sid) { - hideCardMenu(); - cardMenu = document.createElement('div'); - cardMenu.className = 'ctx-menu'; - cardMenu.style.left = x + 'px'; - cardMenu.style.top = y + 'px'; - cardMenu.innerHTML = `
${GA_ICON('trash')}${esc(t('ctx.del'))}
`; - cardMenu.querySelector('.ctx-item').onclick = (e) => { - e.stopPropagation(); - fetch(`${CONDUCTOR_ORIGIN}/subagent/${sid}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'kill' }) }); - hideCardMenu(); - }; - document.body.appendChild(cardMenu); - setTimeout(() => document.addEventListener('mousedown', (e) => { if (!cardMenu?.contains(e.target)) hideCardMenu(); }, { once: true }), 0); - } - - let drawerEl = null; - function closeWorkerDrawer() { if (drawerEl) { drawerEl.remove(); drawerEl = null; } } - function openWorkerDrawer(w) { - closeWorkerDrawer(); - drawerEl = document.createElement('div'); - drawerEl.className = 'collab-drawer-wrap'; - drawerEl.innerHTML = `
`; - const bubble = drawerEl.querySelector('.collab-drawer-body .bubble'); - if (bubble) { - bubble.innerHTML = renderTurnBody(w.fullReply || t('collab.summaryWait')); - postRenderEnhance(bubble); - } - drawerEl.querySelector('.collab-drawer-backdrop').onclick = closeWorkerDrawer; - drawerEl.querySelector('.collab-drawer-close').onclick = closeWorkerDrawer; - document.body.appendChild(drawerEl); - } - - function renderWorkers() { - const box = $('collab-workers'), empty = $('collab-progress-empty'); - if (!box) return; - if (empty) empty.hidden = S.workers.length > 0; - box.innerHTML = S.workers.map(w => ` -
-
${collabStatusMark(w.status)}${esc(t(ST_KEYS[w.status] || 'collab.stPaused'))}${w.updatedAt ? `${esc(relTime(w.updatedAt))}` : ''}
-
${esc(w.title)}
-
${esc(w.summary)}
-
`).join(''); - box.querySelectorAll('.collab-card').forEach(el => { - const w = S.workers.find(x => x.id === el.dataset.sid); - if (w) { - const prev = prevUpdated.get(w.id); - if (prev != null && prev !== w.updatedAt) pulseEl(el); - prevUpdated.set(w.id, w.updatedAt); - } - el.addEventListener('contextmenu', e => { - e.preventDefault(); - showCardMenu(e.clientX, e.clientY, el.dataset.sid); - }); - el.addEventListener('click', () => { - if (w) openWorkerDrawer(w); - }); - }); - const running = S.workers.filter(w => w.status === 'running').length; - const done = S.workers.filter(w => w.status === 'reported').length; - S.runningCount = running; - document.dispatchEvent(new CustomEvent('collab:running-count', { detail: { count: running } })); - const stats = $('collab-progress-stats'); - if (stats) { - const has = running > 0 || done > 0; - stats.hidden = !has; - if (has) { - stats.innerHTML = [ - running > 0 ? `${GA_STATUS_BREATHE_SM}${running} ${esc(t('collab.statRunning'))}` : '', - done > 0 ? `${done} ${esc(t('collab.statDone'))}` : '', - ].filter(Boolean).join(''); - } - } - syncRail({ pulse: true }); - } - - function syncMessages() { - const area = $('collab-msgs'), welcome = $('collab-welcome'), list = $('collab-msg-list'); - if (!area || !list) return; - if (!S.historyReady) { - area.classList.remove('has-msgs'); - if (welcome) welcome.hidden = true; - list.hidden = true; - syncRail(); - return; - } - const has = S.messages.length > 0; - area.classList.toggle('has-msgs', has); - if (welcome) welcome.hidden = has; - list.hidden = !has; - list.replaceChildren(); - const toMsg = window.gaCollabItemToMsg; - const render = window.gaMsgNode; - if (toMsg && render) { - for (const item of S.messages) { - const el = render(toMsg(item)); - el.classList.add('collab-msg-enter'); - list.appendChild(el); - } - } - syncDraft(); - scrollMsgs(); - syncRail(); - } - - function pushMsg(item) { - if (item.id && S.messages.some(m => m.id === item.id)) return; - if (item.role === 'user') { - const plain = stripAttach(item.msg); - const expand = window.gaExpandFilePlaceholders; - for (let i = S.messages.length - 1; i >= 0; i--) { - const m = S.messages[i]; - // 服务端回显的 msg 是 expand(本地文本)(附件被展开成了本地路径),和本地乐观消息其实是同一条。 - // 命中后保留本地那条的干净显示(占位符 msg + 结构化 files/images 卡片),只补服务端 id/ts, - // 丢弃带路径的回显文本 —— 既去重、又不丢卡片、不外露本地路径,与 chat 显示一致。 - if (m._local && m.role === 'user' && - (stripAttach(m.msg) === plain || m.msg === item.msg || (expand && expand(m.msg) === item.msg))) { - m.id = item.id || m.id; - if (item.ts != null) m.ts = item.ts; - if (item.read != null) m.read = item.read; - m._local = false; - syncMessages(); - setConnUi(); - return; - } - } - } - S.messages.push(item); - if (item.role === 'conductor') S.conductorTyping = false; - syncMessages(); - setConnUi(); - } - - function setWorkers(rawList) { - S.workers = (rawList || []).map(normalizeWorker); - renderWorkers(); - } - - function onWsData(data, gen) { - if (gen !== wsGen) return; - if (data.type === 'hello') { - S.historyReady = true; - S.messages = (data.chat || []).map(raw => ({ id: raw.id, role: raw.role || 'system', msg: raw.msg || '', ts: raw.ts, read: raw.read, files: raw.files || [], images: raw.images || [] })); - S.conductorTyping = !!data.running; - setWorkers(data.subagents || []); - syncMessages(); - setConnUi(); - } else if (data.type === 'subagents') setWorkers(data.items || []); - else if (data.type === 'chat') pushMsg({ id: data.item.id, role: data.item.role || 'system', msg: data.item.msg || '', ts: data.item.ts, read: data.item.read, files: data.item.files || [], images: data.item.images || [] }); - } - - function resetWs() { - wsGen++; - if (!ws) return; - const old = ws; - ws = null; - old.onopen = old.onclose = old.onerror = old.onmessage = null; - try { old.close(); } catch {} - } - - function scheduleReconnect() { - clearTimeout(connectTimer); - clearInterval(reconnectTick); - if (!S.everConnected && S.failCount >= FAIL_MAX) { - S.reconnecting = false; - return setConnUi(); - } - const delay = Math.min(RECON_MAX, RECON_BASE * Math.pow(2, Math.max(0, S.failCount - 1))); - S.reconnectAt = Date.now() + delay; - S.reconnecting = S.everConnected; - setConnUi(); - reconnectTick = setInterval(() => { if (!S.reconnecting) clearInterval(reconnectTick); else setConnUi(); }, 500); - connectTimer = setTimeout(connect, delay); - } - - function connect() { - if (ws && (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING)) return; - clearTimeout(connectTimer); - clearInterval(reconnectTick); - const gen = ++wsGen; - setConnUi(); - let sock; - try { sock = new WebSocket(wsUrl()); } catch (e) { - if (gen !== wsGen) return; - S.failCount++; - return scheduleReconnect(); - } - ws = sock; - sock.onopen = () => { - if (gen !== wsGen) return; - S.everConnected = true; - S.serviceAvailable = true; - S.reconnecting = false; - S.failCount = 0; - setConnUi(); - }; - sock.onclose = (ev) => { - if (gen !== wsGen) return; - S.serviceAvailable = false; - if (S.everConnected) S.reconnecting = true; - else S.failCount++; - setConnUi(); - scheduleReconnect(); - }; - sock.onerror = () => {}; - sock.onmessage = ev => { - if (gen !== wsGen) return; - try { onWsData(JSON.parse(ev.data), gen); } catch {} - }; - } - - function sendText(rawText) { - const text = (rawText || '').trim(); - if (!text || !ws || ws.readyState !== WebSocket.OPEN) return false; - window.gaSetActiveFileComposer?.('collab'); - const expand = window.gaExpandFilePlaceholders || (s => s); - const collect = window.gaCollectUsedFiles || (() => []); - const clearUsed = window.gaClearUsedPendingFiles || (() => {}); - const used = collect(text); - const images = [], files = []; - for (const f of used) (f.isImage ? images : files).push(f.isImage ? { path: f.path, dataUrl: f.dataUrl, name: f.name, sid: f.sid } : { path: f.path, name: f.name, sid: f.sid }); - S.messages.push({ id: `_local_${++localSeq}`, _local: true, role: 'user', msg: text, ts: Date.now() / 1000, images, files }); - S.conductorTyping = true; - syncMessages(); - ws.send(JSON.stringify({ msg: expand(text), files, images })); - clearUsed(text); - window.collabComposer?.clearIfMatch?.(text); - setConnUi(); - return true; - } - - $('collab-retry')?.addEventListener('click', () => { S.failCount = 0; S.reconnecting = false; resetWs(); connect(); }); - $('collab-rail-toggle')?.addEventListener('click', () => toggleProgress()); - $('collab-prog-close')?.addEventListener('click', () => toggleProgress(false)); - - window.collabComposer?.init?.(sendText); - - window.collabInit = () => { - window.gaSetActiveFileComposer?.('collab'); - syncMessages(); - setConnUi(); - renderWorkers(); - connect(); - }; - window.collabFocus = () => window.collabComposer?.focus?.(); - window.collabRetranslate = () => { renderWorkers(); syncMessages(); setConnUi(); }; -})(); - -/* ═══════════════ Composer layout: inline / stacked ═══════════════ */ -(function initComposerLayout() { - const BREAKPOINT = 480; - const SINGLE_LINE = 36; - - document.querySelectorAll('.composer-inset').forEach(inset => { - const input = inset.querySelector('.input'); - if (!input) return; - - function update() { - const wide = inset.offsetWidth >= BREAKPOINT; - const single = input.scrollHeight <= SINGLE_LINE; - inset.classList.toggle('is-inline', wide && single); - } - - new ResizeObserver(update).observe(inset); - input.addEventListener('input', update); - update(); - }); -})(); diff --git a/frontends/desktop/static/assets/fonts/README.md b/frontends/desktop/static/assets/fonts/README.md deleted file mode 100644 index f8e5a57e..00000000 --- a/frontends/desktop/static/assets/fonts/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Desktop Font Assets - -These font files are the offline Latin bundle for the vanilla desktop shell. - -## Files - -- `azonix-wordmark.woff2` - - Role: brand wordmark only - - Source: converted on 2026-05-25 from the local owner-installed file at `~/Library/Fonts/azonix/Azonix.otf` - - License: owner-provided / verify before external redistribution - - Note: this repo currently treats Azonix as a project-local brand asset - -- `lexend-latin.woff2` - - Role: English titles and navigation - - Source: Google Fonts CSS2 API, specimen page - - Downloaded: 2026-05-25 - - License: SIL Open Font License 1.1 - -- `noto-sans-latin.woff2` - - Role: English body copy and default Latin UI text - - Source: Google Fonts CSS2 API, specimen page - - Downloaded: 2026-05-25 - - License: SIL Open Font License 1.1 - -- `jetbrains-mono-latin.woff2` - - Role: config/value dense controls and numeric surfaces - - Source: Google Fonts CSS2 API, specimen page - - Downloaded: 2026-05-25 - - License: SIL Open Font License 1.1 - -## Notes - -- Only Latin subsets are bundled here. Chinese UI text continues to use the existing system fallback stack. -- Runtime does not fetch fonts from a CDN. `frontends/desktop/static/assets/fonts/fonts.css` is the only font entrypoint for the vanilla shell. diff --git a/frontends/desktop/static/assets/fonts/azonix-wordmark.woff2 b/frontends/desktop/static/assets/fonts/azonix-wordmark.woff2 deleted file mode 100644 index 947bfbebca88ae495253f19f8b679b6929e55dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6848 zcmV;x8b9TCPew9NR8&s@02;sm3;+NC052>602*=t0RR9100000000000000000000 z0000Dt}7di92_tPU;uOVEJ?IX+xXMDojY5jW zoZ|nF$;lWZCL5^rkE({@3M8~UR?AiJR+2*c+zK}CO_KL!xbK)VRr8Gx#RM^lm}u(! z*ye|7iI2A@4Xq=#(N7h$fa!nr5t7VWxR$e*JYaz#WkSWWo>bY^c$Ngh02?*77Cez9 zxlT9pJIq5Qi+v8S^?O^A-TiNKN2$J4%OE_$qN_1Di^eg&OIf-P|846*ozdo=F&Z&r zFas+_sSUORU0w&;tS_o?D_?&Z7!?a!g%qr1W*<5WP(;h>!`Gj*xL8? zywqZ+Nfcl{p}a)$#_#j<_ovDE`;CI}K&}1s_GTVGVHGl^kv)k<)#O#RkxW7)6RDKG z9~S9<07;@yvTVOk2U65-bOU%9Wm7}4Zq{AGcQbdBqUREbWrg$x78pom_!pCjUJ6Pf zXyYnaRd0%xwkIp<|J%otCP~8CHj>qK(D3kb2FZ2oxW>7=C_?zJSW+?S zq61XxNPwgX>JqaGG+|r-yRZp~poC5s$G8N#su;-@my%Vmc27f&Do-1ASl5Eb&f??P z6ZvsArZXd7%lqY7%Gxx=$b+Yoqur2>Ib-)YJ?{3{&g~a@3*C7sbgp-}+abD}KKH`%u@M({E!p{rEkdF+K^gmMcDwU+t^cK~j zdeoGfQ%h=19d*{#0K?r!dwc1i}Isb30T-w2fe8tc!5_0abQO5rn9xbpQBQ}a~)$okc^acu< z73IuSNp?Vz0+%b!X>t$WF}@IcaK}KJH2H$AgEr9F^`hYZVki5PG|w40lp z!^yg%skD{-2a{*EdSYeA@Htnb4G-n-_@N1*jATt~_67^ZpsT9}H+yb!4X5gARfXC1 z$7eVX9ckWZ5RA-7kQZu9A><4Io}sD&5Cj152dwL-U6tNuXUPQu@MN%O>o&AiWMn8_ zcAVV;{aAUYvlywe@||YSh1Zw?z+4y4$L>7$$&!awmaL0B>0M{k5g~h~KFHr@b3=N% zGQkp}+qHRQT|b>F`SbW4t^3K6*5%Wq=(@l*ZnblFv`HdWCQh|Uyfxf}iQ45FsT_>Y zf~?6vnP>)JlR?((_4N)n+x9GqI0L>yTezIDJgwL@1A&@x*1lCT9tN(}^z$>tXU$J9 z^dgSWX+OJyxcU06&lp8`EhgV5;wH>80VG0zgamr*Z`V@7an0IehDw!ksZH} zFjc=kQv#MJNgLHPyY(BJ}wuIDzJUlLjOas@lbXL>5FMcrsoK``{Z*jO&9*xwU1ALlxZ8k>_zm6TUi=K5Vcw5Gpp^-Tg6O2B z^h?@cpF1|{n&4VFaKMCcJ}6qf{T_!}8Dbdtf#Qs6)fjF)7*B!#KL!C7u95Eo6nJ9j zH+kv3V6{B75y>6WXw$pwPtr4EX@2|lxznzcwQMRHCW#~Gp0|Zty(F?yA0TI0jeI1t zvJ^jCK_8U?GSk5z5d?_|PJ(GgK1cxjhCH%cedXskKLnZLY({jtSjuLTh3FJ{cS~?? zfzGjS@M|f-j4fXe|@%b7VrtqlZip^Ya2ty~J18jssNN{${X zRRp#(c)M(!-*v6gzwCP1xym%fZGg)OGc74BSkQXXa=_=R@w+|q<3z#XjM%h3eb63- z1pOXRwjd4Bz|6+)Q5w5M`+Kq?I7uQq;Q3zBr@f=l$hb zFPN@hpXs&DLkQ6RNuRoZ$gwkQ+ZK#Yi<)xu(6fi!D`4mXv3GYkH7`DXI~7YN$l(Js zU%xB|z1)#JXP@DoI$nC04MkFoznd_Aszx0Gb;vL)AO^U* z8F10&_4+XHndlX4VZRwndc4iZW69UPu-59`3~EBUH8z`T<`ezH*N|uVdYR^pB;XV_ zGXZ&s8U|1XUE8s-zS9*c(6lz#7pJrd3vzo^`+`4WQ1k0HoiyE?Ea%p?E|2otD4fJkWTdIF#VK&;C;z%8;{6Tl`> zgW{lJ6+>A2E?0MC4}%6DUcX*>_>Bk1fl&{U=9&KFhIUnv8qqWv%ex1Y?9IBu8ioyx zh{qaX)}x%D)-!^}o5a&i$1F9ey6BRWN$!DGjtS(jVGZ|mzulSf#5N;2|0DZ1mL0jDA%JDI$u zf8B~uBE)fD;gW0=ab2Z(x<9!g3q#fcoysOaTQi_O@RMb$!wwOEH5Wd0>_w-oLn5`-S(ru+g3o1+$;A7meJum0k+7xg z9qY;MZPRzGUK5H=2pp5yPDl>%v`vn}P&Sc`6ns-85-1@mhf1C#f1nbFb zNs8}){7dGXHMR`H6ab%(c$KiU1^zu<|~mS(lZ9*jN^qGLG& zAY1c`>1(9*$Hl>49e;;Ml3a>w7^kWnlOFys9?x75u_k(ldL7nrGYJQZiwbNjrX5Ch zw&DqipWZq1)x~nCY5BgNe^-E#W<#8V^}5hjYZb<{oxSp4I56TTjttO*ODWVW-;@nD zV4zQeI5E6ksl z0>}aonE-hJz60ZPr8>-hAUCE?y7K&&xm`XVF3%yNWtXm_ogyhTX0gyl%rL<41^p%9 z1tAL>fHe>Fqab9SMshEHVirEZVp^zFAJ!Y}#`l^0ZUAZA81ueN?lTYtaJ|o_hFRfH z;3N=Dz}^kFuVRABkaPjS#!aJ(ev9lj1YZ=@rR?6za1!@)T-{eH`GS7aRoeSGVA8c1 zhN}VFAxD~SgChL45{c0FB5`k=2MGND zzb6hI{=WIE@}}cdIme^axp?nu-1N;4tzyGfj7<5DE4}E){anc9Oyy4Q<6-`xK$U2P zKF|sMpn^J#9Wf${3y5O-ux!VJh_Y*!!Sx1w$a2Gm<`Lu zXH&D8+5BvA7B!3>x(1%QqLv4USJ-FOf*CjZuk&?HXhjlC(X zqeBdjxpO`utYBxun=f$;!48jVz`>6r0uwyaIKAj(%X5*IIpL%JByYl%`Lm3hhB`uS zyAb>~57yCCz4@mDU_Ah*#LgRwLG4!bUB8aBKiv^ipVI}rvLa46($Q*Zz1S&Dcy+?} zmktT<2vTfx3QG@|$R}B_r->VU$>tjvjvFFXafHl18MCBFtZV)XOm-H5WqCF74}?{q zr6~An*VVh_c$qbJvQt-s#$kt=)!9BR&a6V?sZb-il){Dn_&07mb`i{YDHRbMy1x4V zYMapXUJjm&8J)6AIA$bzXYy-dll=}y2qA?JOB3-sJ5834@I)rdnPrycjY(;PJyUB^ zOC%APf)>=!elXfZ;mxhKt)@N9Q;>?(6ZSpCg6)FGTsrL)Fm{&dp=mkXn z!EV!}$V^^i*TOLrzYMPoJvN-tDce!%TE~QgnLm6ItX73KZb{pbk)cZ$F85kkMACI` zRdHrTC;T}Z4TuG#sD+ekEeFA0z=+MbZkP^$bt9k+b|!f`F$wp|%D0<67k=JgKfp~Z zmcw)_?M@PX9MthJfKmD3rxH%5eFthq;-3L>n03708M;!|W)i5%SzJ?_ zVOV1~Wo?#Y{rfD$6pV$>rCfJ=sYqpKRIp2?U@9WdEEux`l@qLTRY+g6S;N@` z7z=+JQ|KxQLEWcmPY0*+KMk*H&~fnz#uQCu z3t4u%;#3)K&!YbM>9u!X84oTKtmJ}v&8pNjaF0t*fozF9#N!Q~G!P~DPn~F(S^=nP z6bF;)!LP(5sdB>EvqCG+UKO@S9Aw(#TiYk5J_}YWE0b3xJq6Z8PgGP6=nAP7yav=Z zT0G~CAKIN^k)0IpH`95`X0x5EoCwg8R=A~2ZfT3ylY<^IJH}5lvVlyPT-cfa^K!XU z!FP@ItLWrd`1HHzvjfzDVj0)74D|+!1-|6#sxd(h7R&VL?2#B!0XCn}20r5%;>Vy6 zKqM|Bk}nsIA=6)hWp>P~+}Q^}(B^pY39N~%w~k*17Ky@oT%7R?IHL`PlbFs_sG(Rt zA8MQxt~5@478J@82s8Wtv|C{_p#Ke^Lch;N|9$UZ;Wu&F=V=B*2?;kA25MiD1XF|1?OhPgLe;Bm@(wTF@hdlPRyj^3a-=Ha0A)M{=fo2^WG#<`wnpbB zwel4RdbDymv`$5a4E7o#Lcx@RS_%;6nY=MKZWw52p+MLFo$0yqm48@XAe1-buZfom~Q_rND z0`a-RSfr=8pdUr$C96`p5@SxBXlPc2lSrVLqbU!&^D?NW+= zW>N6lGgPXQx7Aq3WF)06?f<>;V+W%iE=t z){S)J%qjp$Dmoqgvo@fZ!XtoMpg7X*X*3JL$@!WT#FlleI;C+DKf&iuTUcgkM@ zl~9E>q{ddT-mYDB0eqg^xbxu2i?;xQgb<;^go_X!st(vLGu^wd8UfMHB`{ z1mVfyrKeifdkq2e*Hzsj}(AV;PZm&JB{ z4-*7|vt@~)wfG>RFgPNJTt|{1-87NOe>+K6!|SY=&cFd18Ac@B8q01MudEQv=j=YBii( z{ke7LRl5;0);#pMK_v1P{S-v2f#X2S<%9?S>a;G+F``c>^7^Z3w13a0Oqy`nMMwJe zC;$8Jlzk<-fJQ%S&QYKYS>3AJ-M$WZ@M`rN3MSSxvy0p^Rw>VbPoOn2l$2W2l~Pbe zVnW~S=l#BF2m)_bKK240aP_Y10S|cE5qLt?^zh|`4S+?g)yw0wyj41=uin+eT~!jn z9n4D|^!8cY66YlxxBMaM9>nQ@$`ztAX^JL!b+R&G6~$afe(G%TPp*QaB|=bhN3iLx zuU)`unTehnM)$_S)MK!1DV%LC@boY)Y8U2ep0nb}D%@+(Iha(?y>a1rn@#J~v8NL@ zTSKx{xXs0a(VO1*=3Rrw;3%xEb~HSnQb$#o>bs>c#0FqN8Y?;$8wi~QBQeWD`W3|< z7zv$tP$mxR(%4-NV`mJ5{15;DGyoa^0000$1E2w@X=rFnKjnG_%~QE(yvV9VJ|}WZ zfk4oCbG?G*sa!PP$h!=!W}M<0y1-&?pkpdm6pg1WlpqL#AP9mW2!bF8f+!^ti9{kX zMq|=*TMLgnj%a0AiFpTavP5=M^004j_gb+dqA%qZ8LI@#* z5TdIF000000000000000^zNMy0)apv5C{YUf%M~t6a@uEnuaFBz`&4YVPRomDHbC} zj2JOu#E2=mITz(m;+B+@lpy&iDWfQgq{5{NluG4HdMtc7KIv7;`;@uM5~56|r#w;0 z%ge7KRD^em8_HCuR7HDLRaF&^;W&=tI93Ni?Kt(ZToDbCs7sP0NfI(-X#aM={qE1q z-$NC}*RQ{Lu$=ObeETj|qL8|biJT{QTp4HeE2p!#3WaW~q;@^3*VolB_V!u3I;tpN zO#TVLP+J9HE|tv^ZMIjU&(SjOIk%j3CRQdT{FGO&!cMjOP%^Dmv96n|;o1^BwZ-Zf zw_Y-{r&Zh zJ!WSm8tb_Bl|Yq5idVbNKHIH*O=Ko2zgu^+e;OXt+`-bwz>shInRTEb5q2q2S6XW8 zIbN*#s?Lm0H_PLAsjBuO=jlYVEbBZBzK7&ur@GS()^9KLp-qnL-kL u#l|M`PERLkgL!zUg?I_Q_wk!+W>@(;YcgBYu29B z8U!E(heijZ3|mPSae=W-rJe`5Sygh!9h;xYI5y#S6l5k}hG#}?7iqOP+5i71B^@#} z#2TQ|b*lC|^)E`9#Nrlfw64$zwN8<8*du2d7w} z-`8Uv+~sA;qXa?zxU1AVn&?!u&PJ6p#y2)eI z?q`>k@v}{?a+!Y_7rBfiq1y*%=MS$f8mK`AlIh)c{isCO9u_*)*42C!7`x0ytP_>K z@c(?B{jYt_ty@XD@F1l7QE5K=6XQPuG}KJg2uA1U`P}T!z3&l1j3I@XA`>xpwud)<5>O4_>M{=@~7>`1nT=lLIN-S-ER(1%bgG%687ql%s`8X~?M%|qL4T0IlT z{=7QvRiGTCcTFJ$$`NfJr-7D@XE*=zu>H5w#?TZf8U5Q2{|{de;X^DRSNeVWDt8gB-IGUTBB>q0Rq4v84SL3sY z?)hhC_rAX(iUQ4YPrRdb&DGtD%ePu1;)kMCVYRpay<1=RLQB;>&^liEs^qglHu8jq zFAZPEyay6U=~Qggqg{{ID<2!ov&l(?-T5m$t?!VgsqyFBe}9%Z>21R0r1SuLmw+9! zP$<`!RSo3oi|vNiPV}OTw!Q((^w}ty16vxOq(s&aKlHXD2&j!;M{^ z_o)xE4>o#8shguO0@853&iZ&w57%kLGnD4M&RI|BiCxI>NiNvVZ zice1%N&7mMN60ZY1ftCF4)TEXjXLO8-NOG@$l@Xu6lz+D5I9+S&OE(;~ zo3-rt5itAsSZwo&Nde#maKhJB^m!3vU9t}$l`%#uZG8W*ENlHv{QrMzjkgQ!{f(pd z7u8o)F-BfQL~K#}{eHf`-&gfbKuWvplQxuKDGDk&vyb=R4&(Cw=Xm#p5rtG+A!!}# z|3CKo>SAW|X^!vnb)C14@syB5goLDsMC|^r)n-%?dqG}d<>SQ&dS3_vKOge1fLVqB zohSp*a)w|##WYSCy;IKOOqAY8Hpoc4O1IE)v$7Ex~Yo+n)0-e||8xDOQnt%D4^7Uys-iAD%7_oDModU>9n3)2mHmEJ!5CX4& zA;Ik?PN0L+4*jgI6+p}7{zf2u8~eY%cq<@SX(+D)=?c@ek_BcP#9hZQJjDm`Wo{^aqDxX6koLh-9m3(UXHEPkOL#Ox5SH$1| zlM+XisdQAGddIbB*Qr~NZ}mCli~;9eHe}c}BSzhJkJW^q{OqA$*iD-?=b3qba9Iq{ zvTBC3Jyr=-cY_P#ayX~!{rU6v-~Tjp5Jn~zxlkCp0!}y=w-RL<3}P-YD@_kgBc@@K z(`1r+IOllI9%25T0LJ^q+r~~~nQ^M&FN4ZJM{Xg(x*P6b(&M|D#@_o&$#? zRQ0+g6{ZrZnAu0Ow`8wSK33jVdX?BcsrW*%Q&y-#EdNRVwOlFZeo4sA$_~LTYe?pC z>X6GrDu-an^px94NHPXvEJ;k=U(}21Io0^>VP&n96*P+3d9Jgv!?nG*Cpz>U^^Ntz z((X(@wU@N#wSCuip-tY#ZN1&vJJQ@5(#pr5;dQo{67k}BfP2eb!ENPIxzXH78PypJ z9}^kT8ARozSEm;kD2j_+MP$*PbV#c-Hu3+ck?s6-5kb!cAnMul9+^X zdWu$3Bju7mTu~*)4GE_+L)V&3>xo)KF*4u{cUch%e#>YQ&K^L>EytH6j@j z3>qu1m7Qf$3hSxnMOo2W`jm=_?w2qxkm`VT$nrC#cKLQ1fSL_GG~ z=ey8x!xajG*B;R-nzGN6sHD;Ldz;57D(LWCnd4kAR9vl~V*lgAYZ(EM?x*z?## zWyZuWXQ^ze(d^hAOMpV6v0bLF9uYm%C)=ZaO%FGC=&_*z#2zvvkw{mvUcY-DfK8MM zQOd6i5bob59*YuWWSI>d(l-L7C7BrC6NVo zx9A0O+5&6-?4xNR-#m$q5OuF}`gdL0-0hB|Me{@>yBnQDTU}9vkT%r)GjSSl^{skx z7cWWobBzjgX8T2fdM8`=%;~T@(J7aOj_pHjU2aCWl2Mw7QISOYa}G*?jL{LMhi@-*{suD zf!$oSQ?u+Ol=eC0Kf8+Nw+~s%gXMHT$3|1!6a8NyyJ4U3hmxI5Lh;*ra&`bS*GhQT z1fT-FZ!veZEch~aS7YKGX)(W{$5eN=Kq&q+Hi8KOeD&DbS%KYYr(>e7rLVVp#J*$C ze{kW>A1nX?_EIpccIk9_9?^af9L=!#uEu)UHJ^5>Jr#C8t%2QPdn9!xq1YxpIW@v* zYpjQD^HxSHI(jhFuCO^`Dz`TC8aa+DPFHh1EPbrk{B1O&Jp}#WlVvnZyT$RC&!U~7 z*M}P7mnk9ZCq0L#oqQCYz^d^Ude0{@G@@mPB+!l!F7fYfje3)u9N!mbsqq$)dPP!? z=4=qKJrpf`>DHzXl+*Z=IBU(f;Q2B8Go{p`F@ei{Os7^Fv6&E0wJo^pkY3(@BxH8z zc|>Bo=P-;KZ-5s*Iz$ftIz-#71H%$6cS6B&IXUWt%c=1OxaBdQ1a}71TLA|IF1I%G zZE~DNoT=s;pk#~)?kxiBA?mk2JWCL}VJ3uoECBjpeT(eeK3X50pZ;g!!b{wRGT)r^ zholk+WPSmQ7GP;=nD4d=0AJ?MB%#38Jbwbe9f>R{eflYdkq;_NzchsAVaaS*8er!k zoxZe`rlgg0oEu9VsHE1ZtKuW=^lc6^M-_**M{bTXNZZ}C=y&Kwn*|j)b<&i~x3bMF zB@A`S%~E`+&$>m=mXqs~1#;iyNB>^?cigSjU!n zr4n;2royMy?N1joc!rkXu@9|vJ|<8di^U;E+B#ZyZAH=AKig1iW&ueot;xC(>Bxzp zZo0o4{`W|p61n7XMC)*SpiOHrPbnJ|yrhzA_5 zapl(}eyxA1ZYc{~l(CNQbS&vG4c@z&#>cbHtWm=-!srG2V2 zT?(1rhIcE3Yu-3@*7;=da3EFsJCm$DY%t;Gw6?m2FSDzMB;>15nGdb1ZW&e07Hp5k z^LSNmdZooY_(SW1z%)7xkOk^CELONqL zrkX`+MM9p8y2PnmLz-|i!1`g00toTts*|{#T1Zwm+m$-B@&_g{kQ9+LBi8LrydU(U zuu1`%X#>jW){_&xDzwTh)t(wJxLhB@+{sGfxFrIreH0OwTVyjKaxBNid#8zWTWY6;-BEdVYsU!7zE2z4*h_X^I=1!zFR0Wf3L zAVx(u1)=BT-0MM7N1bS?i?tMI(`69G_`jU<@5L>;ES>W0ARaZ!n^0Cs;9DgI?*@di zokH~UzLdUXYYr2<-hRPrCCr$Wn0>M?iDBG>3{>^)nPfeyLcsHVXr>Qr(hy4R2b}vA zp`fJ=_3SKXPoXDgscFE~kLYGd^q}SX-PKuut7GMq2iha`z!`m@(@s)NN8G&K!KJdr zj;Xco5~zq9_S#a(OZ6gkz-r{5Mu^PRM zUPD6I>hY>d`sf=jomk_%EuuHMRE7yQ$Gs_)tU;UAQp=TGR;C8n9%ghfZ46_zusb37^NXUyxmv|V~kS21ij8OP?>@xHA1S5EbQx<0WXt_HAr<{@W^mYS=$GB7lNkJB~ym;z+Zr-6B)G~4s! ziG+DRQ#KREr}jC0APb!oHM&*Zu27y;kAGnJ!Im=Qe1VfNzD?;H1<3`&~>c$tjMBor^zpO0?b0)pv;XAv-g#nq7h zg9ER?2u5f|4s&1GK#VhJjPmyC`p?HfQHMF z@2>zbOJpaZfCAl!koKPfjd{VDQcQk@&;w)htKz-{yyy|8gTNG1+=qc~{3gJ?J2(2k zk*yqo4NDJfQQ9P+bBN7NLh0;!noX-6W35qvuGjmgYASWseg6P<3Y|&(NLrgdUpM?9 zka73G*jimQbaJmM=>g`6po;7Rbiyr_Yb)DOb7pC24SP~Il%i-K*UrKppR#=b9i_dF z2u)&EhxUxUkG7rRN<3(*IWYR0>H>&-PNCMYxEj)rm>i{6GD71r+02AG+Ws4L2z$cB zTnA7QRw82jVNC;sSQ`ljKVLC3&^O=jgbfulCK37plO`C89fLW+a3zBS)5t;ezbVE- z=&)E~2)_&f?#5R*!~lB-k;ar%z+NcCINA~;*qOM}(XN$)D%Q`}5>ysKtG8mhg;5`D zpuL4qD3+e7p~}5ya4KP+rW?bw{4Fd5{$!>kUhB+F#RyvCZYtJgog{9-Q=(-_D1J^) z*3xF(<@dm6bF+uT-;;xRzqa1)K3A~PnYd;1aIt^8TL@zb) zQBkoDdKUIN?6xqu$6VDk#q%niu1I(;Ca6Sv1#X^)Rg|3B*{EEkNCQ@oTtnC);d;Hu zqwf)nL8RI5;Y=bD)mrrVx+$VXH*UYNo=sE3#j!IF1^o+w2Pg5|L6)sRXVL?=SqmJ4 zkr|_vh#?-<$twIbvb96m$*j8y+)C$ReoKLxF%-6w;mRzVbO~M$Th7WX8FW#+#_=gW zXC5Q^!o!4DNIahi0hlH+S+l_50*h{4c2QK6wZXtA-sI71T&ofkH9R>mg9hOyQ5bxi zPv^v4Z6>rDdk%$~Edi#)T*OlmPYs}#VxAkHhM5XHC>W2*3$$(MEL?jK-~N3*dm2o=CE4V78|s7uXj=DC zx+$J^tTPDV$+W>(EUt!h5>{ELixKJ<8*L^~yZsLIE_=enOfOLx>w06<{olSN5dHt# z57*z~6E6ct{uNOP6u}vU@I^yJZgUMn=0Hht?5$wz>-~;@)IU=iyq4clfr|- zHAXTAeB0~cu47T$p!;nHaF6KbBoth)MVE(_F4`$sS2Rjc+8R{dLd(Zksf^Tyt{OPn zYbmu#R}>~_zHNnO3g&KBVpc9)8YVs9m(>)s8UGJ&U}T3fC?(hfuOOj@d3u>VHKXGc z)rT(wfF|>o!x{*x!8Ssf7_P74VPKLgoQq)hj5;aMH7rAKmodZ=H6T|tm| zOoj!fS~LofJ}>5|W~+(vM+7lpYaoV&m^QD(Ec$hciO$1XCf7}H*BnGP7KOZ!s!)$s zBHLtBwbTQNxD;CjLSG0O5;At^(u73MI=ffz20#5L}m`Y*B1K(v!fknbIIvG_wsS8+>aZlGxF1!2uwtlev#ya== zS{0w zP~}O{xu<43=>spX4B)3%>b0VH-j4nD+jZ>q?4)OI#?x!D-{E;T?T0K5yvFXwULo9= zWRFsl_c09@9zwDSGaB;Xn`CsbOL1-wz{BBw&D)r#bs2es-BpjOX&=O7KnA-HyH-JY zNhrHYJsG9rYIv#MEluoFJmaaosjKcY2JBw!q+8TkeAR|pc-M4ay5`Kr(|YMi{dsy7 zw}A3lmbNo;D~qckeF;8YatkArFMP~Q$b0P`XMMFT6JF{!%aeXF@&$l1u?M!Z3asP*}=nVNLz%-iBCJJ+6ZMVm_(xIa@x)KG87_V zLjKCthXJyHzCm2|TIR+7{aedw0LsuWM*-OnIvD->5LrHy(81EL!AuA`doYUUhlxFS zNyx>No`;jMfH`r>niPu0ab^vX=0GJxX7Ns$17~bA!DrloD&sJ#b1N;hQYk+^EB2vV zK}7^Ojg^3h-H`U9Z+j_NjL<&mTW%)gF1r`GojqY<&c~=QYrt_nz{me9MW>pRkrY#O zguYR}1h5-b-{33106pJzywn5HUtRJk5bEsh>?;im6JI-OO<@&cx&$OoyHU7qU0>ZW zOuWkga?&HC9q3~UNbHV{Z0glf$!^OOH!_>Kq#7P%<=#lMO$7u!ciU9XJ(|*3pUTs8 zyY}3Nx7BD_-MGkt-k{7NB8f=ajIt4BqL@3=oh2?!dkZCvnS7T1I$+R-vuypPO?hO}HYbI}_v zvI1^mPuLoFIw~S-$X`!|{|9GKfOrfm9;p#ph8AUTkzESsGGF!n1PC>4M(ZR8=8#oG z;QagFr1GE@unQg;Ek?~6kl4i=R@bkKnPiF!6}N!mIO}qaXkl?Rq=l$um)Oe)Es$D@ znGoyjd_*IA!o(bRP!U-J{%KUfhr#bmfb?WbjL-v+ELSnKrknCbln3$6cDk5uGWYfClk0S#Tu}^?n zQJD*2&bA_h!Qji(;*D1o*c&46wa^e4eKRff9$AQcVDPLJ-1whR3A)c zx=wI9JG}~#yPB$-m+WZaOtGh)HD?x+){_p?WFN-j^STlEh5S>?hu&wa7JL{7nXbJ5 zHYLVrN|iS1XcJ9SB`rzBh1e;T>vp(E$gWXlMta5V=H22y@Gy2p*Fcky^0u9<0no&) zl7;Wwu9cnlIUIi^8X<9wQ##6typuVU=DI8jn~M#JA&NxtGL3 zEI=(RZA~bq&<*Br7K?!2R#{9ioHU@Zh^)@E0gc&8T>Nd2%Z`TZ%;b@nHAaP5&tQ|& z7e5Ui?cpOIlYwWDc%^DnO(Uzs;0$&Il*cozVM{@3Ca&aRH-Xp9{#D+K$W!Cr-QXeK zg)|Ha4(|8jVb6}{>ktq2)SUm&$K$Vtyj`Fn2-U%Q+z{0$R+kp@Qa#ROV=mp+6!?EC zG%Kf92^}d@aWeIwK?s6?$qs@}Ttk;#SF7r-k-p~jfl+0o^q^#+xk08a!gw(Q-erAF~Yz^YD z6BDz5$|oG&56)g};I1{=dB? zMhb6_;Vt*Cb=6dLxNKHOd|<3W)KCQRzH0b|5mH6Y4xZ`^wq)FTuIyNb_W{yU&`P`j zJMZ0%T04)e13(Z6fB{uLEIS1psd|iBh0nHT9snMuuMb;IstIuh*042IH*P0o;I0HhVoz7(BI)sJTqQ*n|M&e9QY4tkVO{ z9RHXX^h1&JXEN`ZK!Vnze0Gr71`s^(Lpj$gADt=e?h9)IW$hNsHC@P~QM zM5D6c4@~?`HBF=h zvEsyw;0;VPbSw=2SxtyfAd3t~Ej6WVFcpY~o<$B5vjUiWb_T`Dc$Dxe^?#c+sn?*< zELGa2sYnI#!#@AisoOWYAb>uIAUFbHw3W9q8qpTV5$HA{g!9xgY@ivoXG7CU`;`yd zQ)^ZHu(xTIvR3E4Reits*g0pNxQt3Kk%dd zG<@N}3vffI7uv7P90UY_W>%w1X0iBs{ry~-n}dpB)h66CQn_eV!L$x5QS zq>_>q(_)o3dbW$|EooL^NkJL7HY~8LA{z^x%8waLA35jUT|{U%Hn8&OJrm*TE*$f> zQhkL)FY-MlN^N0MA7v}$R^DqdVXqq1x%_zBn$ge)R1c|6vf*RuXZ~ISXi-OO3#fG=Kk(Z>8L~j#V+DBA9zi%xI!u-6tWC zI3SNJpU)LkF`NNSw-Nq-{!v5CX780yETO_6KQ5OMf?KS2>#&vGI;)%j%jYH;=UE3M zJ@*!B@zulY86Z4W5(zZ1?Pr5gH@)+SeF~r~sv(aQIb*W2ncB(1ASy@az(qw|alohw z`y>_6y$Atl$YuSCkeDI_Jqdvu78UN5r{}I*@fXA0Rn-bL+IE7-VReQf6kMbA=Gdw> zLSqMf%445)ebOaU!(rfJc!U#$zmb3m%l=%>5;v(1P>ki!-if1Mc5m<1Hhxy(I)rJ zBsao`D-4lI)PxgQOEk?QO0ks>Z$+L$dtkUtZTQ5iWgkgsfQia!V4^AC0TB}QQ3*}S zsK7@>K9#@iKoJB%5_S~^ff3+wi;Vd*Y+Fkx zs-+EKMv5#lWKq$UqENp$3a!R$;graj6~024F$!i%B!4rzaTm@t|3gdyd(-Xmjd;P% zS(ev|(E=+HE;u$~L|_cqF}fV*>;(HN5TdkQlXi`52W>ibSdJ${Wg_Hu8#a6bQ00qI zwDUKmK%OctHxJJ)Rprp3@qT*%d6zp~6`6Itu&kchH6E6b7d9rT*uv}r+t=>}ywSav zSj?_`35e$(5>dFiis{GnD8tr@XAFHtXz|0^bo|?&Uj~Y2B ziafSO#{=SGq@@b9bJitB6(8_N>=cIZmtX^cS^89Y+R5%O|y zwl*q7dn}PEd1>VJG`6U04~kNhuPp;-bv$|VgAszAXrc(*zE094ic5_py;oJRvlX?l zCf++AGAK|TZDzLS2t8UWLvBlJ>@p&gIERkf_*eFA1_n*-L?95@I1dUZ_hVCN?6Q9F zeUG9i(^&m5J<~fQINXHQZ zZz_v{ksHQBY47UX8`eN8kH8e089RnS5MmPXM1w8ja!P<#x{h8Tb_(;9vkAns+u){) zT9vcKZEEgTbhyhEN5MYV`9$-?p$$`=XQ2)s)z(y!zd?l2;cn%^^|*OX(H;*A!>59N z+!M+5`nC&mA=FXp*M0J8e&!ceFcqHcZ~1o$6C{8##yWVp%kPkR<8jO!SOT>TEg@`jDn^rB*N!sKdo;?N*!^xgebIyC3*3DF(d_KZgb}eg80Q zC;oq=w0NI!fAnesdM`gNjCbGc>r3Gz4wA^nk#xsegz@w79HH>m^G3u(1@9xp%-Jg0 zb%XBHwgsU5_aYn7jh3C=#$=CKb6ne_N*^((wQ5$^h6R6LHP)P{=Mp+)>OTm`IJC!L zkd@#_=n*?J8wHPX1_i3Iv-7cAo1zW&7|e>$lW-ACUta{e>U0a+gi&Xi4AC0Zj+ZZ_ z6gL)}!G<%F{lkb){H?*&g61;%R=g3Dd8RQLlTe8h)=#&a3bo}o2!iQfU(A0N!qxuA zM#Xr784UF=yAbn1(Qxm6`!-s-Vc)ATX2*wGZhh7ia@VbG_5xzwm|@E^4-E7^cY{xB z){Y;16B#!*ILlwiE(4dhuQoc!0Wb7uf2Qc+^~>+y+vs7wQHq_|JW7_3Z$%q{p^)+^ zSxQxfG7Gv>5O)+xb>-cS;@!0ZHyFWYFjVLQ!43^cwK6)vWJos>y zohfYc&D;L{#$2C+$%+>ASG9S<9;M|1nD9<;NnEqBQVKpKr*L+PTfSr=j(mnDOM^1w zB6n#3V)=X)@IY%*0pK?;6>5D?f0<(*e2B3f?s6#V?Q7Ol@CZfxeA@75$NI9+?oYZ< zeOQ&|Yq|;}bxsL#Zp;(Ok?^R0!EwKO(WHbUPR-n5x6X+BgK2gY6b?bzi2{lvQe30yDsoh*o);KIt)vxp;$ror)4$=+XLcY(K|65FF z2fWOFo86je^xO9Rqv9(OHnoY^OH`JUV{+pxpDP*yp`mCc zCkdQU7D1VCx6Ndn0*RumJ&8os!n+%+N&RXqmJ5`Q8tsZHPTUgOUlx4A)0D&6>XXaQzq(qB$IsW=JiWfNy@lcMXwwOF3y}C|m31#u{Q@b* z#R?MD{`lyvP@fq>}MJFUI@Qs9Bq3cQR58@7+K@wk69%5t)0h=V;b!a_siJpLndvkIe6 z9*D1UF3QiSQ<2r}$ftes%wkV_P^j2@pBbF8UezdDqmXH!*DaLJ*J9Ku$8P`|?x?DH zS=yM5Pa2K9K*B?u&z#P~KAk$g(t3po6^WNdA~;*#4tOL@318@jO&Vcw316e}2(pS{Tm@+q3Jt6>t27ZW z3>6M#x$}Q{12->8keJ=!(|iJ|TV`3^k{?fnGsPiabhmbmo-tI4q@`M#R$9h&3}v=* zjVVV%gZ)!q4oDAktofVV=D#StqXU@vJ}ZwEV8(#w`vX|PA4*KFI}Okx?bfx}%YA&9 zi$`(kb1D8>2z`zMAGS`s4qN=s8iWVF_O?n~ix?qDe}-$19>ho?l^t!sHHypXc1X*H z+-K)h4d(eU&@zfIF=4E$K z2a=8bHmf=7E&IwExJG}`l?%ll4J0PT7h%sA*7!<1jK8p8k)Rgc=Mar3N zb>$m}0yoNGNFvp!WgEdqM`{kO3;ZHPTP75h6m*Tq!wIdfR7kC8Ag!$2*!soK|01COBt_x4 z#H7}$k!(pi7d~A^HpQT|ISOHcClfAdsR2%03@H_INFvDK!B@+ZjWIUANhvAv^1;Np z!`O3dcq!nJDr*}{Bk@S3T%WB}=#`OpWLZrEczNnx@!VJEra8spsm^nAUd=r1rF(Gv z;=KZK0vS~dOj|XMQ-HG5_#W&?N19iCG?&V6g)?X6Uf( zxG^Ii1Mf(Mhm3Ctv2o>3hg>BC3yenMw-v`}G7CrKT284q`yV zv}q#ma)a1hzE<@SJC(~|3#C?QXZ|kgH;D-ksRPDcw1Db?|}3{o8IV=@UG zVLT&2!QdnO(Yoz=5!rDBWmR5|F27{Er?d`hKjY@#ifU6K)$ukkoxbUbP>}_<6js(1 zr{Hn0N+*|1@h__QU@1nOV#Zx?I$I>C)1HpxgrVWNM#NN%x|udl&NjSgJdK(4h)JEd zJ15K;j+%{@l7ceeicw{`+yV&lu!WdXz_#XcJcXYr*`i{P5Y}K)r5=&Xb#QiiE?cV7 zi{ujz2@K0)K(!&)tk-VFHgCo^|A76VRV({2z$ST`8cW@{Tcy@Xq>xVaZl$!P5xhFa zaLsP&Pt1f8SI%mhnKTD;3mK?*5uss3;qF-F0#yIl*{KT)+Z;oo3rNv z!B_D|Lu={=Yc5JsFV^@6eMiH-jH_uoQgg*9eKBX&5pehjdgpS0cV2$US+)8s+MZt; zaSz~l*6eg_6)u~t$3W|ONx7TCE$?GUJ|@9mkBi%rP0!<*~Z{c^As-=2#E9xM3Q1FD{Vecooi1CYHOPhjM@*|S<3k5oSP%Zy=`e3wQ;AS5E-n{>P5q`1DErD- zpR-aQ@dV zmLE>8s89hT#TI%AcZjD=%X}ghKh0!uwLK*nHoC#BDVkO7wPhnJ5hp`G;NjYsh9b3; zpEr}ERx2ixRBdo#tkQ*h(sgVxq6VkvvkK>^O1(i=T_xA^x4hag=j38$eno6r3-z#P z7uZS=kFOd6AFVCi(cxJh!`wupZDJxs*k*-vRtro^GnnSNM&lP-G9e0u34yyDT}Y)+>e0w}xLwrjQ{L?1Ir9e%l>&(yl5q>|Sqpr4r&X{*Zqm%r z?IM}W`BSLX3PoCtE6aa-BYx~*5i9lyfPY$j8M7h- z&EUnyC%FNT-U0=w5o^R9UP-*t7GU?oaTiht?TQi2AobcDdIwbRq;X6OgDd`hZ_v$? zH=|&k|J(d#ALva%AxO3-I(|?p>O_H}+&pFmaIj$DxN*cAsTW@j zzpA($?|UljxwQm-$)^d0nLQ3$x|up3o*`PXZ|fpw{0)OTY;Ly1vrB&~+d^1SqMURG0JikNd_F!(->dqP;>wu-r3*+DXd~f*j znmV#t2!TzjH~xnHrhG+`WFII3@U;AU9zsjGgoX!E%ah~l*uBfyJROY*r7Imuii46+ zC-3b9ic$X5ThJCU z7^i5Q5iigwbSirC*`uRoAn-NVjP9=79*)9|2XNNg&_U9tqPmn37M6a zgsHfKtmtxfv6{EOYE?{vP0E^TG4lY0+?eaDV>JTY0D>M4EQcGW!O;mX`4slS$FHvN z_nf%-~5#RgF`kD)hY&`tT3bIo!jW_9LH*+vf0T(wB@>{pu@5}Ch3!h@#Awq ztXe^4a`sQ+Od4l;uQd_6z?_vn*8cUCLU zyoMz~`&7~1{Uf-jj}_X~9U6Q8Y0wbZIEXf)0&so{1%=53so#Hj0@-6;^P*rpc##<- zl$)hyFr!zcRMEQkO@8=ZHWm~V*OQa${dW70SpHw6WJ>Jc4#&&FLVqz?J)WO`1;d{F zotzx<#BK*_#?AyLGhru#@hJz#!TA(K_VyG9*HjZ6IDdb^q>nGV9T!?wl^?uN*@Fd_ zSAjg77kd7m&I@i0uggv*I|abJwLzSr+C=*J$W_ zD9aw^5x@$G{2x)W>hhOSnoJJWNbhP!FK43FC{To($ISm*XD=?XegAF0i384kj(&d5 z`DuX7@6(ox`2*?)%U7@iy2yTLQC(uUej-_+M3^JL2d%+;2Hx zkR;NW+cIHYuBF4G%Y`$yrQVJu>4Rhpt1(rKm$y{gy*16nh&eDVtyI{+t4(8d@;Z2( z;1LOP6fxPE#Jm1=1t}4hW zaoeab3Rhox_#~x^^#Y6^dG4q#wxHH(mjhjauRvFT#EoJnQ>yFo%>Rx}mYq$dbK_=4 z>caD#a#>EEH#lL_dm>YHftzfrvymWAT~8`GtCvaP-YbekBJv#Ba-&Td{Kcz-S-F0^ zECRc8c?pd+#LS7fb7>KkxjP1M{FY{gy4KidRM$2uEY_wc)YOcxEaLJVvOXE#Uc^%> z6$d_&9EBXnF4d`o3xr;mO0_W$P5|)KnGH}ezdtf(IW=SwYSgJF$ob$J2f`E-J`C^jc5jTOLQ2Y`WKp=i*cjr-lz%<(Tf z@y;Ti9|V!*Go(H6)5??=#fywli7oJR;F%u~KI$*5G3PR1*xHBfce<@{`mzUuw6DvY zMl`+X8MmwJ=v;Z&6eNOuJT)V8cK;xp%$OPw}*sb zEs(Bs82(Qp((__XUaYSAba=6M&Du)W>1lWnDEF%}f!itQpUfWFoXK72u6_zkoW|Do z-_qYRbpTW6r&*%#2) z90=|g()kCsp|>ix%TRxC>ezwaaVpWqnSW4w^X(XH1-ctFNY_=_mFy7ulwIC=qP5I* z__L3L9+d=_JPLZY$5}e&E&T$2QM}`0JZC<?@1HS1oBrviXydonW^eDjN_?MHzKr z{CD*C;qi4j0aJwH^Dz{SJSs;dnm4v~27}7RDa}RaWX%ztcn&0EG>FMf0cLjzLR$)o zsku!Pq1JBg2N%b0!k5NT$=~*Z5^xE2g8~#>tjXRnJnnnUc+8^QpB*SJ8Q{+qW{ogw zMb3%mU>r?BSE8Szc%xZS{w}Nv(C1dyxL?ZAey>B$?!08}nR7lUT29CM+>X_Gu_jzw zRMmKTnyYf{8gDUZx35j5Dw*_hYMQKc)SjNA@UB@~p*TIg%4T?_s~WKSGdTB(qdAU& z0XzHjG=J9|d=3cs_I%k8hs6KN+3%YLVKcry_o*woH2CA3n7kU3@7}x4{K2D#h>AZv2{(%@qJ{r-vCf9jE;rRRlAYs?yD{g<+vsrWcT|P`<^hK zm;t&S(EjI~9m-r_4A$k}`oOu9y|B_cDBIS?-``u^X51TFHx}9)3%_WJe#CX2yhi(S zsjrORvP#mc1y`{}l{*^UjB*>&(89k4twx~HM=l9^`3BU8&BRKCf#7^!JAt2KF#DI6)KQ}3^ z7yChGGJ#)1Qbfxr>Vp1{)hxZ9UOrtg`~2MJvRBt*mfNg==h8zJ0s()953}o)`pkY} zjoUTZUpD5!{sO&E9bC%4PK8`~l<+E~pTgwo8z^_m$;a^l&HrA7oB`$Er*$q<)FmWW zP?Qd3Iup{R1HEba4)^kn5D@MU&qB8I9ikxvq6nl_a zRMw$h%(xONuzSqCuZ1Ue-(s)D^BXS|+c$+DL?6u>TeCkV=IXAwW3*REKRUCq+O#Ao zC5cQ;N}`fu^}E6VoFyrF?7~t~u%>x{wXnI@>+c2MF7)-5)`ydwwQyN)es6Dip4Dar z9FG`QWo5xC@haDz01^`k2?>PeH~?r`O15uqofZxv$uK!%8Vhwry#AXYfZnZU$P5S{ z@~!Y_3JUv}k7<;k7QnepdGaea-rOt@cZARQVB{KhX9vSac6wm&o1Hd|JjXB=+F(QK z#F#cE)d0^|8*o|_T@J4H;3-}jqd&DOHBFtOT>JK_{hFC!l(&JJ7(zQ0;v^sdMCAt+ zz4XxY%bvPkdu+Y-0#m?D>6I_(^(CjLu5*tgID@_qM4CNk^qf∓Jw5)|1+k+LPLo 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 diff --git a/frontends/desktop/static/assets/fonts/noto-sans-latin.woff2 b/frontends/desktop/static/assets/fonts/noto-sans-latin.woff2 deleted file mode 100644 index e082930455df9ca4195fa8274dbb1a9c1546d640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35856 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 diff --git a/frontends/desktop/static/fallback.html b/frontends/desktop/static/fallback.html deleted file mode 100644 index d676d451..00000000 --- a/frontends/desktop/static/fallback.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - -GenericAgent - - - - -

-

-

- - -
- -
-

- - -
- -
-

- - -
-
- - - - - diff --git a/frontends/desktop/static/ga-web.js b/frontends/desktop/static/ga-web.js deleted file mode 100644 index 960f0b92..00000000 --- a/frontends/desktop/static/ga-web.js +++ /dev/null @@ -1,142 +0,0 @@ -// GenericAgent Web2 browser bridge adapter. -// HTTP is the command/data channel. WebSocket only carries small state events. -(() => { - 'use strict'; - - const listeners = new Map(); - let ws = null; - let cachedBridgeReady = null; - const bridgeBase = `${location.protocol}//${location.hostname}:14168`; - const wsUrl = `${location.protocol === 'https:' ? 'wss' : 'ws'}://${location.hostname}:14168/ws`; - - function on(channel, cb) { - if (typeof cb !== 'function') return () => {}; - if (!listeners.has(channel)) listeners.set(channel, new Set()); - listeners.get(channel).add(cb); - if (channel === 'bridge-ready' && cachedBridgeReady) { - try { cb(cachedBridgeReady); } catch (err) { console.error('[ga-web2 listener] replay bridge-ready', err); } - } - return () => listeners.get(channel)?.delete(cb); - } - - function emit(channel, payload) { - if (channel === 'bridge-ready') cachedBridgeReady = payload; - const set = listeners.get(channel); - if (!set) return; - for (const cb of Array.from(set)) { - try { cb(payload); } catch (err) { console.error('[ga-web2 listener]', channel, err); } - } - } - - async function http(path, options = {}) { - const headers = Object.assign({}, options.headers || {}); - const init = Object.assign({}, options, { headers }); - if (init.body && typeof init.body !== 'string') { - headers['Content-Type'] = headers['Content-Type'] || 'application/json'; - init.body = JSON.stringify(init.body); - } - const res = await fetch(`${bridgeBase}${path}`, init); - const text = await res.text(); - let data = null; - try { data = text ? JSON.parse(text) : {}; } catch (_) { data = { raw: text }; } - if (!res.ok) { - const err = new Error((data && (data.error || data.message)) || `${res.status} ${res.statusText}`); - err.status = res.status; - err.data = data; - throw err; - } - return data; - } - - function connectWs() { - if (ws && (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING)) return; - try { - ws = new WebSocket(wsUrl); - ws.addEventListener('open', () => emit('bridge-log', 'WS state channel connected')); - ws.addEventListener('message', (ev) => { - let msg; - try { msg = JSON.parse(ev.data); } catch (_) { return; } - if (msg.type === 'bridge-ready') { - emit('bridge-ready', msg); - } else if (msg.type === 'session-state') { - emit('bridge-notification', msg); - } else if (msg.type === 'bridge-log') { - emit('bridge-log', msg.payload || msg); - } else if (msg.type === 'bridge-error') { - emit('bridge-error', msg.payload || msg); - } - }); - ws.addEventListener('close', () => emit('bridge-closed', { reason: 'ws-closed' })); - ws.addEventListener('error', () => emit('bridge-error', { type: 'ws-error', message: 'WebSocket state channel error' })); - } catch (err) { - emit('bridge-error', { type: 'ws-error', message: err.message || String(err) }); - } - } - - async function rpc(method, params = {}) { - switch (method) { - case 'app/status': - return http('/status'); - case 'app/config/get': - return http('/config'); - case 'app/config/save': - return http('/config', { method: 'POST', body: params || {} }); - case 'get/model-profiles': - return http('/model-profiles'); - case 'session/new': - return http('/session/new', { method: 'POST', body: params || {} }); - case 'session/prompt': { - const sid = params.sessionId || params.id || params.bridgeSessionId; - if (!sid) throw new Error('session/prompt missing sessionId'); - return http(`/session/${encodeURIComponent(sid)}/prompt`, { method: 'POST', body: params || {} }); - } - case 'session/poll': { - const sid = params.sessionId || params.id || params.bridgeSessionId; - if (!sid) throw new Error('session/poll missing sessionId'); - const after = params.afterId ?? params.after ?? 0; - const limit = params.limit ?? 200; - return http(`/session/${encodeURIComponent(sid)}/messages?after=${encodeURIComponent(after)}&limit=${encodeURIComponent(limit)}`); - } - case 'session/cancel': { - const sid = params.sessionId || params.id || params.bridgeSessionId; - if (!sid) throw new Error('session/cancel missing sessionId'); - return http(`/session/${encodeURIComponent(sid)}/cancel`, { method: 'POST', body: params || {} }); - } - case 'app/path/open': - return http('/path/open', { method: 'POST', body: params || {} }); - case 'app/path/selectGaRoot': - return http('/config'); - case 'list_continuable_sessions': - return { sessions: [] }; - case 'restore_session': - throw new Error('restore_session is not implemented in web2 bridge'); - default: - throw new Error(`Unknown RPC method: ${method}`); - } - } - - window.ga = { - platform: navigator.platform.toLowerCase().includes('mac') ? 'darwin' : 'win32', - startBridge: async () => { connectWs(); return http('/status'); }, - stopBridge: async () => ({ ok: true }), - checkStatus: () => rpc('app/status', {}), - getConfig: () => rpc('app/config/get', {}), - saveConfig: (cfg) => rpc('app/config/save', cfg || {}), - getModelProfiles: () => rpc('get/model-profiles', {}), - selectGaRoot: () => rpc('app/path/selectGaRoot', {}), - openMykeyTemplate: () => rpc('app/path/open', { kind: 'mykeyTemplate' }), - openMykey: () => rpc('app/path/open', { kind: 'mykey' }), - pollSession: (sessionId, afterId = 0) => rpc('session/poll', { sessionId, afterId }), - rpc, - onBridgeMessage: (cb) => on('bridge-message', cb), - onBridgeNotification: (cb) => on('bridge-notification', cb), - onBridgeError: (cb) => on('bridge-error', cb), - onBridgeClosed: (cb) => on('bridge-closed', cb), - onBridgeReady: (cb) => on('bridge-ready', cb), - onBridgeLog: (cb) => on('bridge-log', cb), - onOpenSearch: (cb) => on('open-search', cb) - }; - - connectWs(); - http('/status').then(status => emit('bridge-ready', status)).catch(err => emit('bridge-error', { type: 'http-error', message: err.message || String(err) })); -})(); diff --git a/frontends/desktop/static/i18n.js b/frontends/desktop/static/i18n.js deleted file mode 100644 index 0787d919..00000000 --- a/frontends/desktop/static/i18n.js +++ /dev/null @@ -1,528 +0,0 @@ -(() => { - const I18N = { - zh: { - 'app.title': 'GenericAgent 桌面版', - 'brand.sub': '桌面终端', - 'nav.chat': '聊天', 'nav.services': '后台服务', 'nav.channels': '消息通道', 'nav.status': '状态面板', - 'nav.collab': '指挥家', 'nav.token': '用量', - 'foot.settings': '配置', 'foot.ver': 'GenericAgent · 桌面版', - 'chat.startTitle': '开始对话', 'chat.startSub': '直接输入,或点预设功能一键启动', - 'preset.butler.t': '指挥家', 'preset.butler.d': '复杂任务自动拆解,只需查看进度和简报', - 'preset.plan.t': 'Plan 模式', 'preset.plan.d': '加载 Plan SOP,按探索→规划→执行→验证流程', - 'preset.goal.t': 'Goal 模式', 'preset.goal.d': '设定目标,自主完成', - 'preset.autonomous.t': '自主行动', 'preset.autonomous.d': '按 SOP 规划/执行任务,产出报告(reflect/autonomous.py 同源)', - 'preset.hive.t': 'Hive 协作', 'preset.hive.d': '多 worker 协同攻坚', - 'preset.review.t': '深度复核', 'preset.review.d': '挑刺式质量把关', - 'preset.findwork.t': '找点事做', 'preset.findwork.d': '分析当前情况,推荐一批让你感兴趣的 TODO', - 'preset.mine.t': '我的·周报', 'preset.mine.d': '自定义:抓本周提交并写周报', - 'preset.add.t': '自定义', 'preset.add.d': '任意一句话存为功能', - 'composer.placeholder': 'GA 能帮你做些什么?', - 'search.placeholder': '搜索会话…', 'conv.new': '新对话', - 'ctx.pin': '置顶', 'ctx.unpin': '取消置顶', 'ctx.rename': '重命名', 'ctx.del': '删除', - 'common.close': '关闭', 'common.more': '更多', 'common.optional': '选填', 'common.save': '保存', - 'modal.preset': '预设功能', 'modal.addModel': '添加模型', 'modal.editModel': '编辑模型', 'modal.settings': '配置', - 'modal.customPreset': '自定义预设', - 'modal.editCustomPreset': '编辑任务', - 'customPreset.titlePh': '标题,例如「写周报」', - 'customPreset.promptPh': 'Prompt 内容,发送时会作为消息提交', - 'customPreset.empty': '标题和 Prompt 不能为空', - 'customPreset.removeTitle': '删除', - 'customPreset.editTitle': '编辑', - 'builtinPreset.restoreBtn': '恢复默认预设', - 'set.appearance': '外观', 'set.plainUi': '素色', 'set.fontSize': '聊天字号', 'set.lang': '语言', 'set.model': '模型', 'set.addModel': '添加模型', 'set.features': '功能', 'set.importMykey': '导入模型配置', 'set.exportMykey': '导出模型配置', 'set.importMemory': '导入记忆与会话记录', 'set.moveGaRuntime': '复制并切换 GA 工作目录', 'set.gaSource': '接入外部 GenericAgent 源码', 'set.gaSourceClear': '改用内置版本', 'set.gaSourceCurrent': '当前接入', 'set.serviceManager': '后台服务管理', - 'set.importMykeyTip': '从 mykey.py 导入已有的模型与 API 配置', - 'set.exportMykeyTip': '将当前模型与 API 配置导出为 mykey.py', - 'set.importMemoryTip': '从另一个 GenericAgent 根目录导入记忆、模型响应和会话记录', - 'set.moveGaRuntimeTip': '把当前 GA 工作目录复制到所选位置,并切换后端使用新位置', - 'set.gaSourceTip': '选择包含 agentmain.py 的 GenericAgent 根目录,桌面端将使用其中的后端源码', - 'set.gaSourceClearTip': '取消接入当前外部源码,切换回安装包内置的 GenericAgent 版本', - 'set.serviceManagerTip': '查看并管理消息通道与后台进程的运行状态和日志', - 'shortcut.askConfirm': '是否在桌面创建 GenericAgent 快捷方式?', - 'appearance.light': '浅色', 'appearance.dark': '深色', - 'set.noModels': '暂无模型,点击下方添加', - 'lang.zh': '简体中文', 'lang.en': 'English', - 'model.name': '备注', 'model.namePh': '会显示在模型列表', - 'model.apikey': 'API Key', 'model.apikeyPh': 'sk-...', 'model.apikeyKeep': '留空则保持原 Key 不变', - 'model.apibase': 'API 地址', 'model.apibasePh': 'https://.../v1/messages', - 'model.protocol': '协议', 'model.protocolPick': '请选择…', 'model.protocolOai': 'OpenAI 兼容 (chat/completions)', 'model.protocolClaude': 'Anthropic (Claude /v1/messages)', - 'model.stream': '响应方式', 'model.streamOn': '流式', 'model.streamOff': '非流式', - 'model.model': '模型', 'model.modelPh': 'model 参数名', - 'model.modelHint': '须与中转站/官方文档中的 model 字段完全一致', - 'model.retries': '重试 (次)', 'model.connTimeout': '连接超时 (s)', 'model.readTimeout': '读取超时 (s)', - 'model.save': '保存', 'common.cancel': '取消', 'common.confirm': '确认', 'common.edit': '编辑', 'common.delete': '删除', - 'pq.title': '快速接入官方模型', 'pq.sub': '填好 API Key 即可使用', 'pq.toggle': '展开 / 收起', - 'pq.deepseekDesc': '官方 API · OpenAI 兼容', 'pq.qwenDesc': '通义千问 · 阿里云百炼', - 'pq.gaToken': '获取 Token', 'pq.gaTokenDesc': '订阅后自动写入模型配置', - 'guide.step1': '点击下方链接,登录后创建并复制 API Key', - 'guide.step2': '把 Key 粘贴到下方「API Key」输入框', - 'guide.step3': '点击保存,即可在模型列表中选用', - 'guide.prefillTip': '已为你预填 API 地址、协议与模型,可按需修改', - 'guide.getKey': '获取 {name} 的 API Key', 'guide.copy': '复制链接', 'guide.copied': '链接已复制', - 'err.modelSave': '保存失败', 'err.modelSwitch': '切换模型失败', 'err.modelRequired': '请填写模型、API Key 和 API 地址', - 'err.modelDelete': '删除失败', 'err.modelDeleteLast': '至少保留一个模型', - 'confirm.modelDelete': '确定删除该模型配置?', - 'confirm.gaSourceClearTitle': '改用内置版本?', - 'confirm.gaSourceClear': '取消接入后,桌面端将停止使用当前外部 GenericAgent 源码,并切换回安装包内置版本。是否继续?', - 'model.aggregation': '渠道组(自动故障转移)', 'model.aggregationShort': '渠道组', 'model.aggregationDesc': '按顺序尝试,失败自动切换到下一个', - 'model.emptyMixin': '尚未加入模型', - 'model.addToMixin': '加入渠道组', 'model.inMixin': '已在渠道组', 'model.removeFromMixin': '移出渠道组', 'model.alreadyInMixin': '已在渠道组中', 'model.dragReorder': '拖拽调整顺序', - 'err.mixinFailed': '操作失败', - 'page.services.title': '后台服务', 'page.services.sub': 'IM 消息通道与后台进程,集中查看、启停与日志', - 'page.channels.title': '消息通道', 'page.channels.sub': '后台 IM 进程:列表、启停与日志(同 hub.pyw)', - 'page.status.title': '状态面板', 'page.status.sub': 'hub.pyw 管理的后台进程/服务,集中查看与启停', - 'page.collab.title': '指挥家', 'page.collab.sub': '交代目标,自动拆活与跟进', - 'collab.progressTitle': '分工进度', - 'collab.progressEmpty': '还没有任务在执行。告诉指挥家你的目标后,这里会显示拆分后的处理进度。', - 'collab.placeholder': '请对指挥家描述你想完成的目标', - 'collab.guideTitle': '把要完成的事告诉指挥家', - 'collab.guideWhen': '适合需要多步处理、要花一些时间才能完成的目标。日常聊天和快问快答,请用左侧「聊天」。', - 'collab.guideStep1t': '描述目标', - 'collab.guideStep1d': '在聊天框里写下你想做的事,发给指挥家', - 'collab.guideStep2t': '自动拆解', - 'collab.guideStep2d': '指挥家自动拆解、分配任务,实时监督和调度', - 'collab.guideStep3t': '交付摘要', - 'collab.guideStep3d': '指挥家根据执行状态,呈上任务简报', - 'collab.guideStep4t': '随时调整', - 'collab.guideStep4d': '随时补充要求或细节,指挥家都会处理', - 'collab.chipProgress': '现在进展如何?', - 'collab.chipPause': '先暂停当前任务', - 'collab.chipSummary': '总结一下目前的结果', - 'collab.showProgressTitle': '查看分工进度', - 'collab.statRunning': '进行中', - 'collab.statDone': '已完成', - 'collab.plusMenu': '更多操作', - 'collab.switchMode': '切换模式', - 'collab.typing': '指挥家正在处理', - 'collab.offline': '无法连接指挥家服务,请确认后端已启动。', - 'collab.retry': '重试', - 'collab.reconnect': '连接断开,正在重连… 已保留上次任务进度。', - 'collab.reconnectIn': '{n} 秒后重试', - 'collab.stRunning': '执行中', 'collab.stReported': '已回报', 'collab.stPaused': '已暂停', - 'collab.stFailed': '遇到问题', 'collab.stTerminated': '已终止', - 'collab.summaryRunning': '正在处理中…', 'collab.summaryWait': '等待回报', - 'collab.taskFallback': '任务 {n}', - 'collab.timeJust': '刚刚', - 'collab.timeSec': '{n} 秒前', - 'collab.timeMin': '{n} 分钟前', - 'collab.timeHr': '{n} 小时前', - 'collab.timeDay': '{n} 天前', - 'page.token.title': '用量', 'page.token.sub': '每会话与累计用量及缓存率', - 'status.connecting': '正在连接…', 'status.ready': '服务在线', 'status.running': '处理中', - 'status.disconnected': '服务离线', 'status.stopped': '已停止', 'status.idle': '待命', - 'conv.emptyList': '暂无会话,点「+ 新对话」开始', 'conv.defaultTitle': '新对话', - 'err.bridge': '服务未响应', 'err.newSession': '新建会话失败', 'err.poll': '轮询失败', 'err.stop': '停止失败', - 'err.interruptTimeout': '等待上一轮停止超时,请稍后再试', - 'sys.interruptPrev.hint': '已停止上一轮,正在处理新消息', - 'chat.interrupting': '正在停止上一轮…', - 'chat.sessionLoading': '正在加载会话…', - 'sys.stopRequested': '已请求停止', - 'slash.help': '可用命令:\n/new 新会话 /clear 清屏 /stop 停止 /settings 设置', - 'slash.unknown': '未知命令', - 'upload.hint': '上传文件:选择 / 拖拽 / 粘贴', - 'upload.button': '上传文件', - 'upload.tooLarge': '文件过大或数量超限', 'upload.empty': '跳过空文件', - 'upload.failed': '上传失败', - 'err.charLimit': '已达字数上限({n}),发送时将自动截断', 'err.charLimitReached': '已达字数上限({n})', 'err.numMax': '不能超过 {n}', - 'file.openFailed': '无法打开文件', - 'file.kindGeneric': '文件', - 'file.kindDoc': '文档', - 'file.kindSheet': '表格', - 'file.kindSlide': '幻灯片', - 'file.kindCode': '代码', - 'file.kindArchive': '压缩包', - 'file.kindAudio': '音频', - 'file.kindVideo': '视频', - 'upload.removeTitle': '移除', - 'upload.dropHint': '松开以上传文件', - 'lightbox.closeTitle': '关闭', - 'fold.thinking': '思考', 'fold.tool': '工具调用', 'fold.toolResult': '工具结果', 'fold.llm': 'LLM Running', 'fold.turn': '第 {n} 轮', - 'plan.header': '计划 ({done}/{total})', 'plan.complete': '✓ 计划完成 ({n}/{n})', - 'plan.running': '计划执行中', 'plan.completeTitle': '计划完成', - 'plan.placeholder': '计划模式已激活', 'plan.waiting': '等待写入 {path} …', 'plan.overflow': '还有 {n} 项', - 'plan.current': '当前', 'plan.fold': '折叠', 'plan.collapse': '收起', 'plan.expand': '展开', 'plan.details': '详情', 'plan.dismiss': '不再显示', - 'plan.capsuleRunning': '运行中', 'plan.capsuleComplete': '已完成', - 'timing.elapsed': '已运行 {t}', - 'model.auto': '自动选择', - 'model.menuLabel': '选择模型', - 'chip.plan': 'Plan', - 'chip.auto': 'Auto', - 'ch.wechat': '微信', 'ch.wecom': '企业微信', 'ch.lark': '飞书', 'ch.dingtalk': '钉钉', - 'ch.qq': 'QQ', 'ch.telegram': 'Telegram', 'ch.discord': 'Discord', - 'ch.loading': '加载中…', 'ch.empty': '未发现 IM 进程脚本', - 'ch.logEmpty': '暂无日志', - 'err.channelLoad': '加载失败', 'err.channelStart': '启动失败', 'err.channelStop': '停止失败', - 'err.mykeyImport': '导入模型配置失败', - 'err.mykeyExport': '导出模型配置失败', - 'err.channelNotConfigured': '请先在 mykey.py 中配置该平台', - 'sys.channelStarted': '已启动', 'sys.channelStopped': '已停止', - 'modal.channelLogs': '进程日志', - 'modal.mykeyConfig': 'mykey.py 配置', - 'sys.configSaved': '配置已保存', - 'sys.mykeyImported': '模型配置已导入', - 'sys.mykeyExported': '模型配置已导出', - 'sys.memoryImported': '记忆已导入', - 'err.memoryImport': '导入记忆失败', - 'err.gaRuntimeMove': '复制并切换 GA 工作目录失败', - 'err.gaRuntimeDesktopOnly': '此功能仅在桌面版中可用', - 'sys.memoryImportBackup': '原记忆已备份至', - 'sys.memorySessions': '会话', - 'sys.gaSourcePickTitle': '选择要接入的 GenericAgent 源码根目录(含 agentmain.py)', - 'sys.gaSourceSwitching': '正在切换并重启后端...', - 'sys.gaSourceSet': '已接入独立 GenericAgent', - 'sys.gaSourceCleared': '已取消接入,恢复内置版本', - 'err.gaSourceSet': '接入失败', - 'err.gaSourceDesktopOnly': '此功能仅在桌面版中可用', - 'sys.memoryPickTitle': '选择 GenericAgent 根目录(包含 memory 与 temp 的目录)', - 'sys.memoryImportPrompt': '请输入 GenericAgent 根目录的完整路径(包含 memory 与 temp 的目录,而非 memory 文件夹本身):', - 'sys.gaRuntimeMoveTitle': '选择新的 GA 工作目录位置', - 'sys.gaRuntimeMoving': '正在复制并切换 GA 工作目录...', - 'sys.gaRuntimeMoved': '已切换到新的 GA 工作目录', - 'confirm.gaRuntimeMoveTitle': '复制并切换 GA 工作目录?', - 'confirm.gaRuntimeMove': '当前 GA 工作目录会复制到你选择的位置,并重启后端使用新目录。安装包内置目录会保留以保证桌面壳可启动;如果当前已是外部目录,旧目录会在切换成功后删除。是否继续?', - 'st.starting': '启动中…', 'st.stopping': '停止中…', 'st.online': '在线', 'st.offline': '离线', 'st.error': '错误', 'st.running': '运行', 'st.abnormal': '异常', - 'act.configure': '配置', 'act.logs': '日志', 'act.restart': '重启', 'act.stop': '停止', 'act.start': '启动', 'act.exit': '退出', - 'act.copy': '复制', 'act.copied': '已复制', 'act.copyTex': 'TeX', 'act.send': '发送', - 'proc.imbotWechat': 'imbot · 微信', 'proc.imbotDing': 'imbot · 钉钉', 'proc.scheduler': '定时任务调度', 'proc.conductor': '指挥家', - 'cm.scheduling': '调度中', 'cm.running': '执行中', 'cm.idleSt': '空闲', - 'cm.master': '已派 3 子任务', 'cm.w1': '子任务:抓取数据', 'cm.w2': '子任务:复核结果', 'cm.sub': '等待派单', - 'tok.total': '累计', 'tok.cost': '缓存率', 'tok.today': '今日', 'tok.tabAll': '聊天', 'tok.tabConductor': '指挥家', 'tok.condTotal': '指挥家累计', 'tok.condCurrent': '指挥家本次', 'tok.condTip': '指挥家消耗不计入聊天累计', 'tok.condOffline': '指挥家服务离线', 'tok.disclaimer': '不同 API 网站的计费价格可能会有差异,请以实际网站为准。', - 'tok.colSession': '会话', 'tok.colIn': '输入', 'tok.colOut': '输出', 'tok.colCacheW': '缓存写入', 'tok.colCache': '缓存读取', 'tok.colCost': '成本', - 'tok.from': '从', 'tok.to': '到', 'tok.reset': '重置', 'tok.noData': '暂无记录', 'tok.deleted': '此会话已删除', - 'tok.pricingUnknown': '⚠ 此模型计费规则尚未明确,按默认估算', - 'tok.priceInput': '输入: $', 'tok.priceOutput': '输出: $', - 'tok.priceCacheW': '缓存写入: $', 'tok.priceCacheR': '缓存读取: $', - 'presetPrompt.goal': '进入 Goal 模式:读 L3 goal mode SOP,自主达成我接下来描述的目标。', - 'presetPrompt.plan': '进入 Plan 模式:先读 memory/plan_sop.md,按其中「探索→规划→执行→验证」流程,等我接下来描述要做的任务。', - 'presetPrompt.autonomous': '🤖 进入自主行动模式:阅读 memory/autonomous_operation_sop.md,按 SOP 选取或规划任务,独立执行并产出报告。', - 'presetPrompt.hive': '启动 Goal Hive 模式:按 hive SOP 拉起多个 worker 协同完成我接下来的目标。', - 'presetPrompt.review': '进入监察者模式:对刚才的产出严格挑刺、逐项复核并报告问题。', - 'presetPrompt.findwork': '按照自主行动的规划部分,充分分析我的情况,给我生成一批 TODO,务必让我感兴趣。', - 'presetPrompt.mine': '抓取本周的 git 提交并写一份周报。', - 'ask.banner': 'GA 等你回答', - 'ask.replyHint': '在下方输入框回复', - 'ask.placeholderOpen': '在此输入你的回答… (Enter 发送)', - }, - en: { - 'app.title': 'GenericAgent Desktop', - 'brand.sub': 'Desktop terminal', - 'nav.chat': 'Chat', 'nav.services': 'Services', 'nav.channels': 'Channels', 'nav.status': 'Status', - 'nav.collab': 'Conductor', 'nav.token': 'Usage', - 'foot.settings': 'Settings', 'foot.ver': 'GenericAgent · Desktop', - 'chat.startTitle': 'Start a conversation', 'chat.startSub': 'Type a message, or pick a preset', - 'preset.butler.t': 'Conductor', 'preset.butler.d': 'Auto-decompose complex tasks; just check progress and briefings', - 'preset.plan.t': 'Plan mode', 'preset.plan.d': 'Load Plan SOP — explore→plan→execute→verify', - 'preset.goal.t': 'Goal mode', 'preset.goal.d': 'Set a goal, run autonomously', - 'preset.autonomous.t': 'Autonomous mode', 'preset.autonomous.d': 'Plan/execute tasks per SOP and produce reports (same as reflect/autonomous.py)', - 'preset.hive.t': 'Hive', 'preset.hive.d': 'Multi-worker collaboration', - 'preset.review.t': 'Deep review', 'preset.review.d': 'Strict quality check', - 'preset.findwork.t': 'Find me work', 'preset.findwork.d': 'Analyze my context and suggest a batch of interesting TODOs', - 'preset.mine.t': 'My · Weekly', 'preset.mine.d': 'Custom: weekly report from commits', - 'preset.add.t': 'Custom', 'preset.add.d': 'Save any prompt as a function', - 'composer.placeholder': 'What can GA do for you?', - 'search.placeholder': 'Search chats…', 'conv.new': 'New chat', - 'ctx.pin': 'Pin', 'ctx.unpin': 'Unpin', 'ctx.rename': 'Rename', 'ctx.del': 'Delete', - 'common.close': 'Close', 'common.more': 'More', 'common.optional': 'Optional', 'common.save': 'Save', - 'modal.preset': 'Presets', 'modal.addModel': 'Add model', 'modal.editModel': 'Edit model', 'modal.settings': 'Settings', - 'modal.customPreset': 'Custom preset', - 'modal.editCustomPreset': 'Edit task', - 'customPreset.titlePh': 'Title, e.g. "Weekly report"', - 'customPreset.promptPh': 'Prompt body — sent as the message when clicked', - 'customPreset.empty': 'Title and Prompt cannot be empty', - 'customPreset.removeTitle': 'Delete', - 'customPreset.editTitle': 'Edit', - 'builtinPreset.restoreBtn': 'Restore defaults', - 'set.appearance': 'Appearance', 'set.plainUi': 'Plain', 'set.fontSize': 'Chat font size', 'set.lang': 'Language', 'set.model': 'Model', 'set.addModel': 'Add model', 'set.features': 'Features', 'set.importMykey': 'Import model config', 'set.exportMykey': 'Export model config', 'set.importMemory': 'Import memory and sessions', 'set.moveGaRuntime': 'Copy and switch GA workspace', 'set.gaSource': 'Connect external GenericAgent source', 'set.gaSourceClear': 'Use bundled version', 'set.gaSourceCurrent': 'Connected to', 'set.serviceManager': 'Service manager', - 'set.importMykeyTip': 'Import existing model and API settings from mykey.py', - 'set.exportMykeyTip': 'Export the current model and API settings as mykey.py', - 'set.importMemoryTip': 'Import memory, model responses, and sessions from another GenericAgent root directory', - 'set.moveGaRuntimeTip': 'Copy the current GA workspace to the selected location and switch the backend to it', - 'set.gaSourceTip': 'Select a GenericAgent root containing agentmain.py and use its backend source code', - 'set.gaSourceClearTip': 'Disconnect the current external source and switch back to the bundled GenericAgent version', - 'set.serviceManagerTip': 'View and manage message channels, background processes, and their logs', - 'shortcut.askConfirm': 'Create a desktop shortcut for GenericAgent?', - 'appearance.light': 'Light', 'appearance.dark': 'Dark', - 'set.noModels': 'No models yet — add one below', - 'lang.zh': '简体中文', 'lang.en': 'English', - 'model.name': 'Note', 'model.namePh': 'Shown in the model list', - 'model.apikey': 'API Key', 'model.apikeyPh': 'sk-...', 'model.apikeyKeep': 'Leave blank to keep the current key', - 'model.apibase': 'API base URL', 'model.apibasePh': 'https://.../v1/messages', - 'model.protocol': 'Protocol', 'model.protocolPick': 'Select…', 'model.protocolOai': 'OpenAI-compatible (chat/completions)', 'model.protocolClaude': 'Anthropic (Claude /v1/messages)', - 'model.stream': 'Response', 'model.streamOn': 'Stream', 'model.streamOff': 'Non-stream', - 'model.model': 'Model', 'model.modelPh': 'model parameter name', - 'model.modelHint': 'Must match the model field in your provider docs exactly', - 'model.retries': 'Retries (×)', 'model.connTimeout': 'Connect (s)', 'model.readTimeout': 'Read (s)', - 'model.save': 'Save', 'common.cancel': 'Cancel', 'common.confirm': 'Confirm', 'common.edit': 'Edit', 'common.delete': 'Delete', - 'pq.title': 'Quick connect a model', 'pq.sub': 'Add your API key to get started', 'pq.toggle': 'Expand / collapse', - 'pq.deepseekDesc': 'Official API · OpenAI-compatible', 'pq.qwenDesc': 'Tongyi Qwen · Aliyun Bailian', - 'pq.gaToken': 'Get Token', 'pq.gaTokenDesc': 'Subscribe — config is written automatically', - 'guide.step1': 'Open the link, sign in, then create & copy your API key', - 'guide.step2': 'Paste the key into the “API Key” field below', - 'guide.step3': 'Click Save — then pick it from the model list', - 'guide.prefillTip': 'API base, protocol and model are pre-filled — edit if needed', - 'guide.getKey': 'Get your {name} API key', 'guide.copy': 'Copy link', 'guide.copied': 'Link copied', - 'err.modelSave': 'Save failed', 'err.modelSwitch': 'Failed to switch model', 'err.modelRequired': 'Model, API Key and base URL are required', - 'err.modelDelete': 'Delete failed', 'err.modelDeleteLast': 'At least one model is required', - 'confirm.modelDelete': 'Delete this model profile?', - 'confirm.gaSourceClearTitle': 'Use the bundled version?', - 'confirm.gaSourceClear': 'The desktop app will stop using the current external GenericAgent source and switch back to its bundled version. Continue?', - 'model.aggregation': 'Channel group (auto failover)', 'model.aggregationShort': 'Channel group', 'model.aggregationDesc': 'Tries in order, switches to the next on failure', - 'model.emptyMixin': 'No models added yet', - 'model.addToMixin': 'Add to channel', 'model.inMixin': 'In channel', 'model.removeFromMixin': 'Remove from channel', 'model.alreadyInMixin': 'Already in the channel', 'model.dragReorder': 'Drag to reorder', - 'err.mixinFailed': 'Operation failed', - 'page.services.title': 'Services', 'page.services.sub': 'IM channels and background processes — view, start/stop, logs', - 'page.channels.title': 'Channels', 'page.channels.sub': 'Background IM processes: list, start/stop, logs (hub.pyw style)', - 'page.status.title': 'Status', 'page.status.sub': 'Background processes/services managed by hub.pyw', - 'page.collab.title': 'Conductor', 'page.collab.sub': 'Describe a goal — split, delegate, and follow up', - 'collab.progressTitle': 'Progress', - 'collab.progressEmpty': 'No tasks running yet. After you describe a goal to Conductor, split tasks will appear here.', - 'collab.placeholder': 'Describe the goal you want to accomplish', - 'collab.guideTitle': 'Tell Conductor what you want done', - 'collab.guideWhen': 'Best for multi-step goals that take a while. For everyday chat and quick questions, use Chat in the sidebar.', - 'collab.guideStep1t': 'Describe your goal', - 'collab.guideStep1d': 'Write what you want done in the chat box and send it to Conductor', - 'collab.guideStep2t': 'Auto breakdown', - 'collab.guideStep2d': 'Conductor breaks down, assigns, monitors, and coordinates', - 'collab.guideStep3t': 'Summary', - 'collab.guideStep3d': 'Conductor delivers a briefing based on execution status', - 'collab.guideStep4t': 'Adjust anytime', - 'collab.guideStep4d': 'Add requirements or details anytime — Conductor handles them', - 'collab.chipProgress': 'How is it going?', - 'collab.chipPause': 'Pause current tasks', - 'collab.chipSummary': 'Summarize progress so far', - 'collab.showProgressTitle': 'View task progress', - 'collab.statRunning': 'Running', - 'collab.statDone': 'Done', - 'collab.plusMenu': 'More actions', - 'collab.switchMode': 'Switch mode', - 'collab.typing': 'Conductor is working', - 'collab.offline': 'Cannot reach the service. Make sure the backend is running.', - 'collab.retry': 'Retry', - 'collab.reconnect': 'Disconnected — reconnecting… Your last progress is kept.', - 'collab.reconnectIn': 'Retry in {n}s', - 'collab.stRunning': 'Running', 'collab.stReported': 'Reported', 'collab.stPaused': 'Paused', - 'collab.stFailed': 'Issue', 'collab.stTerminated': 'Ended', - 'collab.summaryRunning': 'Working…', 'collab.summaryWait': 'Awaiting report', - 'collab.taskFallback': 'Task {n}', - 'collab.timeJust': 'just now', - 'collab.timeSec': '{n}s ago', - 'collab.timeMin': '{n}m ago', - 'collab.timeHr': '{n}h ago', - 'collab.timeDay': '{n}d ago', - 'page.token.title': 'Usage', 'page.token.sub': 'Per-session and total usage & cache rate', - 'status.connecting': 'Connecting…', 'status.ready': 'Service online', 'status.running': 'Working…', - 'status.disconnected': 'Service offline', 'status.stopped': 'Stopped', 'status.idle': 'Standby', - 'conv.emptyList': 'No chats yet — click “+ New chat”', 'conv.defaultTitle': 'New chat', - 'err.bridge': 'Service not responding', 'err.newSession': 'Failed to create session', 'err.poll': 'Polling failed', 'err.stop': 'Stop failed', - 'err.interruptTimeout': 'Timed out waiting for the previous reply to stop — try again', - 'sys.interruptPrev.hint': 'Previous reply stopped — processing new message', - 'chat.interrupting': 'Stopping previous reply…', - 'chat.sessionLoading': 'Loading conversation…', - 'sys.stopRequested': 'Stop requested', - 'slash.help': 'Commands:\n/new new chat /clear clear /stop stop /settings settings', - 'slash.unknown': 'Unknown command', - 'upload.hint': 'Upload file: pick / drag / paste', - 'upload.button': 'Upload file', - 'upload.tooLarge': 'File too large or limit reached', 'upload.empty': 'Skipped empty file', - 'upload.failed': 'Upload failed', - 'err.charLimit': 'Character limit reached ({n}), text will be truncated on send', 'err.charLimitReached': 'Character limit reached ({n})', 'err.numMax': 'Cannot exceed {n}', - 'file.openFailed': 'Cannot open file', - 'file.kindGeneric': 'File', - 'file.kindDoc': 'Document', - 'file.kindSheet': 'Spreadsheet', - 'file.kindSlide': 'Slides', - 'file.kindCode': 'Code', - 'file.kindArchive': 'Archive', - 'file.kindAudio': 'Audio', - 'file.kindVideo': 'Video', - 'upload.removeTitle': 'Remove', - 'upload.dropHint': 'Drop to upload files', - 'lightbox.closeTitle': 'Close', - 'fold.thinking': 'Thinking', 'fold.tool': 'Tool call', 'fold.toolResult': 'Tool result', 'fold.llm': 'LLM Running', 'fold.turn': 'Turn {n}', - 'plan.header': 'Plan ({done}/{total})', 'plan.complete': '✓ Plan complete ({n}/{n})', - 'plan.running': 'Running plan', 'plan.completeTitle': 'Plan complete', - 'plan.placeholder': 'Plan mode activated', 'plan.waiting': 'waiting for {path} …', 'plan.overflow': '+{n} more', - 'plan.current': 'Now', 'plan.fold': 'Fold', 'plan.collapse': 'Collapse', 'plan.expand': 'Expand', 'plan.details': 'Details', 'plan.dismiss': 'Hide', - 'plan.capsuleRunning': 'Running', 'plan.capsuleComplete': 'Done', - 'timing.elapsed': 'Elapsed {t}', - 'model.auto': 'Auto', - 'model.menuLabel': 'Select model', - 'chip.plan': 'Plan', - 'chip.auto': 'Auto', - 'ch.wechat': 'WeChat', 'ch.wecom': 'WeCom', 'ch.lark': 'Lark', 'ch.dingtalk': 'DingTalk', - 'ch.qq': 'QQ', 'ch.telegram': 'Telegram', 'ch.discord': 'Discord', - 'ch.loading': 'Loading…', 'ch.empty': 'No IM process scripts found', - 'ch.logEmpty': 'No log output yet', - 'err.channelLoad': 'Failed to load', 'err.channelStart': 'Start failed', 'err.channelStop': 'Stop failed', - 'err.mykeyImport': 'Failed to import model config', - 'err.mykeyExport': 'Failed to export model config', - 'err.channelNotConfigured': 'Configure this platform in mykey.py first', - 'sys.channelStarted': 'Started', 'sys.channelStopped': 'Stopped', - 'modal.channelLogs': 'Process logs', - 'modal.mykeyConfig': 'mykey.py', - 'sys.configSaved': 'Configuration saved', - 'sys.mykeyImported': 'Model config imported', - 'sys.mykeyExported': 'Model config exported', - 'sys.memoryImported': 'Memory imported', - 'err.memoryImport': 'Failed to import memory', - 'err.gaRuntimeMove': 'Failed to copy and switch GA workspace', - 'err.gaRuntimeDesktopOnly': 'This feature is only available in the desktop app', - 'sys.memoryImportBackup': 'Previous memory backed up to', - 'sys.memorySessions': 'sessions', - 'sys.gaSourcePickTitle': 'Select the GenericAgent source root to connect to (contains agentmain.py)', - 'sys.gaSourceSwitching': 'Switching and restarting the backend...', - 'sys.gaSourceSet': 'Connected to the external GenericAgent', - 'sys.gaSourceCleared': 'Disconnected, restored the bundled version', - 'err.gaSourceSet': 'Failed to connect', - 'err.gaSourceDesktopOnly': 'This feature is only available in the desktop app', - 'sys.memoryPickTitle': 'Select the GenericAgent root directory (the folder containing memory and temp)', - 'sys.memoryImportPrompt': 'Enter the full path of the GenericAgent root directory (the folder containing memory and temp, not the memory folder itself):', - 'sys.gaRuntimeMoveTitle': 'Choose the new GA workspace location', - 'sys.gaRuntimeMoving': 'Copying and switching GA workspace...', - 'sys.gaRuntimeMoved': 'Switched to the new GA workspace', - 'confirm.gaRuntimeMoveTitle': 'Copy and switch GA workspace?', - 'confirm.gaRuntimeMove': 'The current GA workspace will be copied to the selected location and the backend will restart from it. The bundled folder is kept so the desktop shell can still start; if the current folder is already external, the old folder is deleted after a successful switch. Continue?', - 'st.starting': 'Starting…', 'st.stopping': 'Stopping…', 'st.online': 'Online', 'st.offline': 'Offline', 'st.error': 'Error', 'st.running': 'Running', 'st.abnormal': 'Error', - 'act.configure': 'Configure', 'act.logs': 'Logs', 'act.restart': 'Restart', 'act.stop': 'Stop', 'act.start': 'Start', 'act.exit': 'Exit', - 'act.copy': 'Copy', 'act.copied': 'Copied', 'act.copyTex': 'TeX', 'act.send': 'Send', - 'proc.imbotWechat': 'imbot · WeChat', 'proc.imbotDing': 'imbot · DingTalk', 'proc.scheduler': 'Scheduler', 'proc.conductor': 'Conductor', - 'cm.scheduling': 'Scheduling', 'cm.running': 'Running', 'cm.idleSt': 'Idle', - 'cm.master': 'Dispatched 3 subtasks', 'cm.w1': 'Subtask: fetch data', 'cm.w2': 'Subtask: review results', 'cm.sub': 'Waiting for tasks', - 'tok.total': 'Total', 'tok.cost': 'Cache rate', 'tok.today': 'Today', 'tok.tabAll': 'Chat', 'tok.tabConductor': 'Conductor', 'tok.condTotal': 'Conductor Total', 'tok.condCurrent': 'Conductor Current', 'tok.condTip': 'Conductor usage is not included in chat totals', 'tok.condOffline': 'Service offline', 'tok.disclaimer': 'Pricing may vary by API provider. Please refer to the actual website.', - 'tok.colSession': 'Session', 'tok.colIn': 'Input', 'tok.colOut': 'Output', 'tok.colCacheW': 'Cache write', 'tok.colCache': 'Cache read', 'tok.colCost': 'Cost', - 'tok.from': 'From', 'tok.to': 'To', 'tok.reset': 'Reset', 'tok.noData': 'No records', 'tok.deleted': 'Session deleted', - 'tok.pricingUnknown': '⚠ Pricing not confirmed, using defaults', - 'tok.priceInput': 'Input: $', 'tok.priceOutput': 'Output: $', - 'tok.priceCacheW': 'Cache write: $', 'tok.priceCacheR': 'Cache read: $', - 'presetPrompt.goal': 'Enter Goal mode: read the L3 goal-mode SOP and autonomously achieve the goal I describe next.', - 'presetPrompt.plan': 'Enter Plan mode: first read memory/plan_sop.md, follow its explore→plan→execute→verify flow, and wait for the task I describe next.', - 'presetPrompt.autonomous': '🤖 Enter autonomous mode: read memory/autonomous_operation_sop.md, follow the SOP to pick or plan a task, execute independently, and produce a report.', - 'presetPrompt.hive': 'Start Goal Hive mode: per the hive SOP, spawn multiple workers to collaboratively achieve the goal I describe next.', - 'presetPrompt.review': 'Enter reviewer mode: strictly scrutinize the previous output, review item by item and report issues.', - 'presetPrompt.findwork': 'Following the autonomous planning section, analyze my situation thoroughly and generate a batch of TODOs that genuinely interest me.', - 'presetPrompt.mine': 'Collect this week\'s git commits and write a weekly report.', - 'ask.banner': 'GA is waiting for your answer', - 'ask.replyHint': 'Reply in the input below', - 'ask.placeholderOpen': 'Type your answer here… (Enter to send)', - }, -}; - - const BOOT_I18N = { - zh: { - 'loading.starting_app': '正在启动 GenericAgent...', - 'loading.start': '首次运行:正在准备运行环境...', - 'loading.venv': '正在创建运行环境...', - 'loading.deps': '正在安装依赖...', - 'loading.done': '依赖安装完成', - 'loading.starting': '正在启动服务...', - 'setup.title': 'GenericAgent - 设置', - 'setup.heading': '需要设置', - 'setup.backend_failed': '后端未能启动,请配置下方路径。', - 'setup.prepare_error': '安装失败,错误详情:', - 'setup.py_label': 'Python 解释器路径', - 'setup.py_placeholder': 'python / 解释器路径', - 'setup.py_hint': '例如 C:/Python312/python.exe 或 ~/miniconda3/envs/myenv/bin/python', - 'setup.project_label': '项目目录', - 'setup.project_placeholder': 'GenericAgent 文件夹路径', - 'setup.project_hint': '包含 frontends/desktop_bridge.py 的文件夹', - 'setup.start': '启动', - 'setup.err_py': '请输入 Python 路径', - 'setup.err_project': '请输入项目目录', - 'setup.starting_bridge': '正在启动 bridge...', - 'setup.connected': '已连接,正在打开主窗口...', - 'setup.failed': '启动失败:{error}', - 'setup.limit': '已达字符数上限({n})' - }, - en: { - 'loading.starting_app': 'Starting GenericAgent...', - 'loading.start': 'First run: preparing the runtime...', - 'loading.venv': 'Creating the runtime environment...', - 'loading.deps': 'Installing dependencies...', - 'loading.done': 'Dependencies installed', - 'loading.starting': 'Starting services...', - 'setup.title': 'GenericAgent - Setup', - 'setup.heading': 'Setup Required', - 'setup.backend_failed': 'The backend could not start. Please configure the paths below.', - 'setup.prepare_error': 'Setup failed. Details:', - 'setup.py_label': 'Python interpreter path', - 'setup.py_placeholder': 'python / path to interpreter', - 'setup.py_hint': 'e.g. C:/Python312/python.exe or ~/miniconda3/envs/myenv/bin/python', - 'setup.project_label': 'Project directory', - 'setup.project_placeholder': 'path to GenericAgent folder', - 'setup.project_hint': 'The folder containing frontends/desktop_bridge.py', - 'setup.start': 'Start', - 'setup.err_py': 'Please enter Python path', - 'setup.err_project': 'Please enter project directory', - 'setup.starting_bridge': 'Starting bridge...', - 'setup.connected': 'Connected. Opening the main window...', - 'setup.failed': 'Failed: {error}', - 'setup.limit': 'Character limit reached ({n})' - } -}; - - for (const [code, messages] of Object.entries(BOOT_I18N)) { - I18N[code] = Object.assign(I18N[code] || {}, messages); - } - - const LANGS = Object.freeze(Object.keys(I18N)); - - function normalizeLang(code) { - return LANGS.includes(code) ? code : 'zh'; - } - - function browserLang() { - return (navigator.language || '').toLowerCase().startsWith('zh') ? 'zh' : 'en'; - } - - function bootLang() { - try { - const saved = localStorage.getItem('ga_lang'); - if (LANGS.includes(saved)) return saved; - } catch (_) {} - return browserLang(); - } - - function tFor(lang, key, vars) { - const active = normalizeLang(lang); - let text = (I18N[active] && I18N[active][key]) || (I18N.zh && I18N.zh[key]) || (I18N.en && I18N.en[key]) || key; - if (vars) { - for (const [name, value] of Object.entries(vars)) { - text = text.replaceAll(`{${name}}`, String(value)); - } - } - return text; - } - - function apply(root, activeLang) { - const lang = normalizeLang(activeLang || bootLang()); - const scope = root || document; - if (scope === document) document.documentElement.lang = lang === 'en' ? 'en' : 'zh-CN'; - scope.querySelectorAll('[data-i18n]').forEach(el => { - el.textContent = tFor(lang, el.dataset.i18n); - }); - scope.querySelectorAll('[data-i18n-ph]').forEach(el => { - el.setAttribute('data-ph', tFor(lang, el.dataset.i18nPh)); - }); - scope.querySelectorAll('[data-i18n-placeholder]').forEach(el => { - el.setAttribute('placeholder', tFor(lang, el.dataset.i18nPlaceholder)); - }); - scope.querySelectorAll('[data-i18n-title]').forEach(el => { - el.setAttribute('title', tFor(lang, el.dataset.i18nTitle)); - el.setAttribute('aria-label', tFor(lang, el.dataset.i18nTitle)); - }); - } - - window.GA_I18N = { - dict: I18N, - languages: LANGS, - t: tFor, - apply, - bootLang, - browserLang, - }; - - window.GA_BOOT_I18N = { - get lang() { return bootLang(); }, - t(key, vars) { return tFor(bootLang(), key, vars); }, - apply(root) { return apply(root || document, bootLang()); }, - }; -})(); diff --git a/frontends/desktop/static/index.html b/frontends/desktop/static/index.html deleted file mode 100644 index 6bdb2683..00000000 --- a/frontends/desktop/static/index.html +++ /dev/null @@ -1,705 +0,0 @@ - - - - -GenericAgent - - - - - - - - - - - - - - -
- -
- - - -
- - -
- -
- - -
-
- - - -
-
-
-
-
-
-
-
-
-
-
- - -
-
-
-
- -
- -
-
-
- - -
- - - -
-
-
- - -
-
-
-
-
- - -
-
- - - -
-
-
-
- - -
-
-
- -
-
-
-
-
-
- - -
-
- -
- - -
- -
-
-
-
-
- - -
-
- - -
-
-
- - - -
-
-
-
-
- -
-
-
- - -
- - - -
-
-
- - -
-
-
-
-
- - -
-
- - - -
-
-
-
- - -
-
- - - - - -
-
-
0
-
0%
-
0
-
- - - - - - - - - - -
-
-
-
- -
-
- - -
- - -
- - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - diff --git a/frontends/desktop/static/loading.html b/frontends/desktop/static/loading.html deleted file mode 100644 index cdd446c6..00000000 --- a/frontends/desktop/static/loading.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - -GenericAgent - - - - - -
-
-
-
-
- - diff --git a/frontends/desktop/static/phosphor-icons.js b/frontends/desktop/static/phosphor-icons.js deleted file mode 100644 index 6a76f642..00000000 --- a/frontends/desktop/static/phosphor-icons.js +++ /dev/null @@ -1,101 +0,0 @@ -(() => { - const PATHS = { - chatTeardropText: - 'M172,112a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h68A8,8,0,0,1,172,112Zm-8,24H96a8,8,0,0,0,0,16h68a8,8,0,0,0,0-16Zm68-12A100.11,100.11,0,0,1,132,224H48a16,16,0,0,1-16-16V124a100,100,0,0,1,200,0Zm-16,0a84,84,0,0,0-168,0v84h84A84.09,84.09,0,0,0,216,124Z', - broadcast: - 'M128,88a40,40,0,1,0,40,40A40,40,0,0,0,128,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,152Zm73.71,7.14a80,80,0,0,1-14.08,22.2,8,8,0,0,1-11.92-10.67,63.95,63.95,0,0,0,0-85.33,8,8,0,1,1,11.92-10.67,80.08,80.08,0,0,1,14.08,84.47ZM69,103.09a64,64,0,0,0,11.26,67.58,8,8,0,0,1-11.92,10.67,79.93,79.93,0,0,1,0-106.67A8,8,0,1,1,80.29,85.34,63.77,63.77,0,0,0,69,103.09ZM248,128a119.58,119.58,0,0,1-34.29,84,8,8,0,1,1-11.42-11.2,103.9,103.9,0,0,0,0-145.56A8,8,0,1,1,213.71,44,119.58,119.58,0,0,1,248,128ZM53.71,200.78A8,8,0,1,1,42.29,212a119.87,119.87,0,0,1,0-168,8,8,0,1,1,11.42,11.2,103.9,103.9,0,0,0,0,145.56Z', - chartBar: - 'M224,200h-8V40a8,8,0,0,0-8-8H152a8,8,0,0,0-8,8V80H96a8,8,0,0,0-8,8v40H48a8,8,0,0,0-8,8v64H32a8,8,0,0,0,0,16H224a8,8,0,0,0,0-16ZM160,48h40V200H160ZM104,96h40V200H104ZM56,144H88v56H56Z', - usersThree: - 'M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z', - coins: - 'M184,89.57V84c0-25.08-37.83-44-88-44S8,58.92,8,84v40c0,20.89,26.25,37.49,64,42.46V172c0,25.08,37.83,44,88,44s88-18.92,88-44V132C248,111.3,222.58,94.68,184,89.57ZM232,132c0,13.22-30.79,28-72,28-3.73,0-7.43-.13-11.08-.37C170.49,151.77,184,139,184,124V105.74C213.87,110.19,232,122.27,232,132ZM72,150.25V126.46A183.74,183.74,0,0,0,96,128a183.74,183.74,0,0,0,24-1.54v23.79A163,163,0,0,1,96,152,163,163,0,0,1,72,150.25Zm96-40.32V124c0,8.39-12.41,17.4-32,22.87V123.5C148.91,120.37,159.84,115.71,168,109.93ZM96,56c41.21,0,72,14.78,72,28s-30.79,28-72,28S24,97.22,24,84,54.79,56,96,56ZM24,124V109.93c8.16,5.78,19.09,10.44,32,13.57v23.37C36.41,141.4,24,132.39,24,124Zm64,48v-4.17c2.63.1,5.29.17,8,.17,3.88,0,7.67-.13,11.39-.35A121.92,121.92,0,0,0,120,171.41v23.46C100.41,189.4,88,180.39,88,172Zm48,26.25V174.4a179.48,179.48,0,0,0,24,1.6,183.74,183.74,0,0,0,24-1.54v23.79a165.45,165.45,0,0,1-48,0Zm64-3.38V171.5c12.91-3.13,23.84-7.79,32-13.57V172C232,180.39,219.59,189.4,200,194.87Z', - sidebarSimple: - 'M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,56H80V200H40ZM216,200H96V56H216V200Z', - pencilSimple: - 'M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z', - magnifyingGlass: - 'M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z', - books: - 'M231.65,194.55,198.46,36.75a16,16,0,0,0-19-12.39L132.65,34.42a16.08,16.08,0,0,0-12.3,19l33.19,157.8A16,16,0,0,0,169.16,224a16.25,16.25,0,0,0,3.38-.36l46.81-10.06A16.09,16.09,0,0,0,231.65,194.55ZM136,50.15c0-.06,0-.09,0-.09l46.8-10,3.33,15.87L139.33,66Zm6.62,31.47,46.82-10.05,3.34,15.9L146,97.53Zm6.64,31.57,46.82-10.06,13.3,63.24-46.82,10.06ZM216,197.94l-46.8,10-3.33-15.87L212.67,182,216,197.85C216,197.91,216,197.94,216,197.94ZM104,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V48A16,16,0,0,0,104,32ZM56,48h48V64H56Zm0,32h48v96H56Zm48,128H56V192h48v16Z', - gridFour: - 'M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,80H136V56h64ZM120,56v64H56V56ZM56,136h64v64H56Zm144,64H136V136h64v64Z', - robot: - 'M200,48H136V16a8,8,0,0,0-16,0V48H56A32,32,0,0,0,24,80V192a32,32,0,0,0,32,32H200a32,32,0,0,0,32-32V80A32,32,0,0,0,200,48Zm16,144a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V80A16,16,0,0,1,56,64H200a16,16,0,0,1,16,16Zm-52-56H92a28,28,0,0,0,0,56h72a28,28,0,0,0,0-56Zm-24,16v24H116V152ZM80,164a12,12,0,0,1,12-12h8v24H92A12,12,0,0,1,80,164Zm84,12h-8V152h8a12,12,0,0,1,0,24ZM72,108a12,12,0,1,1,12,12A12,12,0,0,1,72,108Zm88,0a12,12,0,1,1,12,12A12,12,0,0,1,160,108Z', - dotsThree: - 'M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z', - folderSimplePlus: - 'M216,72H130.67L102.93,51.2a16.12,16.12,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V200a16,16,0,0,0,16,16H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72Zm0,128H40V64H93.33L123.2,86.4A8,8,0,0,0,128,88h88Zm-56-56a8,8,0,0,1-8,8H136v16a8,8,0,0,1-16,0V152H104a8,8,0,0,1,0-16h16V120a8,8,0,0,1,16,0v16h16A8,8,0,0,1,160,144Z', - folderSimple: - 'M216,72H130.67L102.93,51.2a16.12,16.12,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V200a16,16,0,0,0,16,16H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72Zm0,128H40V64H93.33L123.2,86.4A8,8,0,0,0,128,88h88Z', - bracketsCurly: - 'M43.18,128a29.78,29.78,0,0,1,8,10.26c4.8,9.9,4.8,22,4.8,33.74,0,24.31,1,36,24,36a8,8,0,0,1,0,16c-17.48,0-29.32-6.14-35.2-18.26-4.8-9.9-4.8-22-4.8-33.74,0-24.31-1-36-24-36a8,8,0,0,1,0-16c23,0,24-11.69,24-36,0-11.72,0-23.84,4.8-33.74C50.68,38.14,62.52,32,80,32a8,8,0,0,1,0,16C57,48,56,59.69,56,84c0,11.72,0,23.84-4.8,33.74A29.78,29.78,0,0,1,43.18,128ZM240,120c-23,0-24-11.69-24-36,0-11.72,0-23.84-4.8-33.74C205.32,38.14,193.48,32,176,32a8,8,0,0,0,0,16c23,0,24,11.69,24,36,0,11.72,0,23.84,4.8,33.74a29.78,29.78,0,0,0,8,10.26,29.78,29.78,0,0,0-8,10.26c-4.8,9.9-4.8,22-4.8,33.74,0,24.31-1,36-24,36a8,8,0,0,0,0,16c17.48,0,29.32-6.14,35.2-18.26,4.8-9.9,4.8-22,4.8-33.74,0-24.31,1-36,24-36a8,8,0,0,0,0-16Z', - gear: - 'M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.21,107.21,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.71,107.71,0,0,0-26.25-10.87,8,8,0,0,0-7.06,1.49L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.21,107.21,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8,8,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8,8,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z', - caretLeft: - 'M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z', - caretDown: - 'M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z', - caretRight: - 'M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z', - paperPlaneTilt: - 'M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z', - paperclip: - 'M209.66,122.34a8,8,0,0,1,0,11.32l-82.05,82a56,56,0,0,1-79.2-79.21L147.67,35.73a40,40,0,1,1,56.61,56.55L105,193A24,24,0,1,1,71,159L154.3,74.38A8,8,0,1,1,165.7,85.6L82.39,170.31a8,8,0,1,0,11.27,11.36L192.93,81A24,24,0,1,0,159,47L59.76,147.68a40,40,0,1,0,56.53,56.62l82.06-82A8,8,0,0,1,209.66,122.34Z', - lightning: - 'M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z', - pushPinSimple: - 'M216,168h-9.29L185.54,48H192a8,8,0,0,0,0-16H64a8,8,0,0,0,0,16h6.46L49.29,168H40a8,8,0,0,0,0,16h80v56a8,8,0,0,0,16,0V184h80a8,8,0,0,0,0-16ZM86.71,48h82.58l21.17,120H65.54Z', - trash: - 'M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z', - x: - 'M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z', - dotsThreeVertical: - 'M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm0-56a12,12,0,1,1-12-12A12,12,0,0,1,140,72Zm0,112a12,12,0,1,1-12-12A12,12,0,0,1,140,184Z', - plus: - 'M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z', - copy: - 'M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z', - check: - 'M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z', - crosshair: - 'M232,120h-8.34A96.14,96.14,0,0,0,136,32.34V24a8,8,0,0,0-16,0v8.34A96.14,96.14,0,0,0,32.34,120H24a8,8,0,0,0,0,16h8.34A96.14,96.14,0,0,0,120,223.66V232a8,8,0,0,0,16,0v-8.34A96.14,96.14,0,0,0,223.66,136H232a8,8,0,0,0,0-16Zm-96,87.6V200a8,8,0,0,0-16,0v7.6A80.15,80.15,0,0,1,48.4,136H56a8,8,0,0,0,0-16H48.4A80.15,80.15,0,0,1,120,48.4V56a8,8,0,0,0,16,0V48.4A80.15,80.15,0,0,1,207.6,120H200a8,8,0,0,0,0,16h7.6A80.15,80.15,0,0,1,136,207.6ZM128,88a40,40,0,1,0,40,40A40,40,0,0,0,128,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,152Z', - compass: - 'M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216ZM172.42,72.84l-64,32a8.05,8.05,0,0,0-3.58,3.58l-32,64A8,8,0,0,0,80,184a8.1,8.1,0,0,0,3.58-.84l64-32a8.05,8.05,0,0,0,3.58-3.58l32-64a8,8,0,0,0-10.74-10.74ZM138,138,97.89,158.11,118,118l40.15-20.07Z', - listChecks: - 'M224,128a8,8,0,0,1-8,8H128a8,8,0,0,1,0-16h88A8,8,0,0,1,224,128ZM128,72h88a8,8,0,0,0,0-16H128a8,8,0,0,0,0,16Zm88,112H128a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16ZM82.34,42.34,56,68.69,45.66,58.34A8,8,0,0,0,34.34,69.66l16,16a8,8,0,0,0,11.32,0l32-32A8,8,0,0,0,82.34,42.34Zm0,64L56,132.69,45.66,122.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Zm0,64L56,196.69,45.66,186.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z', - star: - 'M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z', - fileText: - 'M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Zm-32-80a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,136Zm0,32a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,168Z', - gitFork: - 'M224,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H80a8,8,0,0,1-8-8V95a32,32,0,1,0-16,0v17a24,24,0,0,0,24,24h40v25a32,32,0,1,0,16,0V136h40a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,224,64ZM48,64A16,16,0,1,1,64,80,16,16,0,0,1,48,64Zm96,128a16,16,0,1,1-16-16A16,16,0,0,1,144,192ZM192,80a16,16,0,1,1,16-16A16,16,0,0,1,192,80Z', - hexagon: - 'M223.68,66.15,135.68,18h0a15.88,15.88,0,0,0-15.36,0l-88,48.17a16,16,0,0,0-8.32,14v95.64a16,16,0,0,0,8.32,14l88,48.17a15.88,15.88,0,0,0,15.36,0l88-48.17a16,16,0,0,0,8.32-14V80.18A16,16,0,0,0,223.68,66.15ZM216,175.82,128,224,40,175.82V80.18L128,32h0l88,48.17Z', - }; - - function gaIcon(name, className = '') { - const d = PATHS[name]; - if (!d) return ''; - const cls = className ? ` class="${className}"` : ''; - return `