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 0acaaff0..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff b/frontends/desktop/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff deleted file mode 100644 index b804d7b3..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff and /dev/null differ 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 c6f9a5e7..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf b/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf deleted file mode 100644 index 9ff4a5e0..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff b/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff deleted file mode 100644 index 9759710d..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 b/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 deleted file mode 100644 index f390922e..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 and /dev/null differ 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 9bdd534f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff and /dev/null differ 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 75344a1f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 and /dev/null differ 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 f522294f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf b/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf deleted file mode 100644 index 4e98259c..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff b/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff deleted file mode 100644 index e7730f66..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff and /dev/null differ 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 395f28be..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf b/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf deleted file mode 100644 index b8461b27..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 b/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 deleted file mode 100644 index 735f6948..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff b/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff deleted file mode 100644 index acab069f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 b/frontends/desktop/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 deleted file mode 100644 index ab2ad21d..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff b/frontends/desktop/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff deleted file mode 100644 index f38136ac..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff and /dev/null differ 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 4060e627..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf and /dev/null differ 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 5931794d..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 and /dev/null differ 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 dc007977..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf and /dev/null differ 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 67807b0b..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf b/frontends/desktop/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf deleted file mode 100644 index 0e9b0f35..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf and /dev/null differ 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 6f43b594..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff and /dev/null differ 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 b50920e1..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 and /dev/null differ 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 eb24a7ba..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 and /dev/null differ 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 21f58129..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff and /dev/null differ 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 dd45e1ed..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf b/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf deleted file mode 100644 index 728ce7a1..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf and /dev/null differ 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 29657023..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 and /dev/null differ 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 0ae390d7..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff and /dev/null differ 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 eb5159d4..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf b/frontends/desktop/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf deleted file mode 100644 index 70d559b4..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf and /dev/null differ 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 215c143f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf b/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf deleted file mode 100644 index 2f65a8a3..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf and /dev/null differ 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 cfaa3bda..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 and /dev/null differ 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 8d47c02d..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff and /dev/null differ 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 349c06dc..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff b/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff deleted file mode 100644 index 7e02df96..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf b/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf deleted file mode 100644 index d5850df9..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf and /dev/null differ 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 537279f6..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf and /dev/null differ 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 31b84829..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff and /dev/null differ 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 a90eea85..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 and /dev/null differ 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 fd679bf3..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf and /dev/null differ 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 b3048fc1..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 and /dev/null differ 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 0e7da821..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Script-Regular-D5yQViql.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Size1-Regular-C195tn64.woff b/frontends/desktop/dist/assets/KaTeX_Size1-Regular-C195tn64.woff deleted file mode 100644 index 7f292d91..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size1-Regular-C195tn64.woff and /dev/null differ 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 871fd7d1..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 b/frontends/desktop/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 deleted file mode 100644 index c5a8462f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf b/frontends/desktop/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf deleted file mode 100644 index 7a212caf..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf and /dev/null differ 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 e1bccfe2..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff b/frontends/desktop/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff deleted file mode 100644 index d241d9be..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff and /dev/null differ 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 e6e9b658..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf b/frontends/desktop/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf deleted file mode 100644 index 00bff349..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf and /dev/null differ 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 e1ec5457..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf b/frontends/desktop/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf deleted file mode 100644 index 74f08921..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf and /dev/null differ 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 680c1308..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 and /dev/null differ 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 2432419f..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 b/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 deleted file mode 100644 index 771f1af7..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 and /dev/null differ diff --git a/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf b/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf deleted file mode 100644 index c83252c5..00000000 Binary files a/frontends/desktop/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf and /dev/null differ 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 938db267..00000000 Binary files a/frontends/desktop/dist/assets/codicon-DjkITdqj.ttf and /dev/null differ 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,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) 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 cfb5e7f9..00000000 Binary files a/frontends/desktop/src-tauri/icons/128x128.png and /dev/null differ 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 e9c94494..00000000 Binary files a/frontends/desktop/src-tauri/icons/128x128@2x.png and /dev/null differ diff --git a/frontends/desktop/src-tauri/icons/32x32.png b/frontends/desktop/src-tauri/icons/32x32.png deleted file mode 100644 index 63a15c78..00000000 Binary files a/frontends/desktop/src-tauri/icons/32x32.png and /dev/null differ diff --git a/frontends/desktop/src-tauri/icons/icon.icns b/frontends/desktop/src-tauri/icons/icon.icns deleted file mode 100644 index 7fe7a9d3..00000000 Binary files a/frontends/desktop/src-tauri/icons/icon.icns and /dev/null differ diff --git a/frontends/desktop/src-tauri/icons/icon.ico b/frontends/desktop/src-tauri/icons/icon.ico deleted file mode 100644 index f52ee357..00000000 Binary files a/frontends/desktop/src-tauri/icons/icon.ico and /dev/null differ diff --git a/frontends/desktop/src-tauri/icons/icon.png b/frontends/desktop/src-tauri/icons/icon.png deleted file mode 100644 index dad73e81..00000000 Binary files a/frontends/desktop/src-tauri/icons/icon.png and /dev/null differ 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 947bfbeb..00000000 Binary files a/frontends/desktop/static/assets/fonts/azonix-wordmark.woff2 and /dev/null differ diff --git a/frontends/desktop/static/assets/fonts/fonts.css b/frontends/desktop/static/assets/fonts/fonts.css deleted file mode 100644 index 8103b351..00000000 --- a/frontends/desktop/static/assets/fonts/fonts.css +++ /dev/null @@ -1,21 +0,0 @@ -@font-face { - font-family: "GA Azonix"; - src: - url("./azonix-wordmark.woff2") format("woff2"), - local("Azonix"), - local("Azonix Regular"), - local("Azonix-Regular"); - font-style: normal; - font-weight: 400; - font-display: swap; - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; -} - -@font-face { - font-family: "GA JetBrains Mono"; - src: url("./jetbrains-mono-latin.woff2") format("woff2"); - font-style: normal; - font-weight: 400 600; - font-display: swap; - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} diff --git a/frontends/desktop/static/assets/fonts/jetbrains-mono-latin.woff2 b/frontends/desktop/static/assets/fonts/jetbrains-mono-latin.woff2 deleted file mode 100644 index 2ca6ac60..00000000 Binary files a/frontends/desktop/static/assets/fonts/jetbrains-mono-latin.woff2 and /dev/null differ diff --git a/frontends/desktop/static/assets/fonts/lexend-latin.woff2 b/frontends/desktop/static/assets/fonts/lexend-latin.woff2 deleted file mode 100644 index 0968c152..00000000 Binary files a/frontends/desktop/static/assets/fonts/lexend-latin.woff2 and /dev/null differ 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 e0829304..00000000 Binary files a/frontends/desktop/static/assets/fonts/noto-sans-latin.woff2 and /dev/null differ 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 `