diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml new file mode 100644 index 0000000..c5ec612 --- /dev/null +++ b/.github/codeql-config.yml @@ -0,0 +1,6 @@ +name: Creative Launch Workspace CodeQL configuration + +paths-ignore: + - docs/assets/launch-control-motion.js + - docs/assets/launch-control-chunks/** + - frontend/generated/** diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5be273a..04adbac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -104,3 +104,5 @@ jobs: QA_ASSETS_DIR: /tmp/creative-launch-workspace/assets QA_EVIDENCE_DIR: /tmp/creative-launch-workspace/evidence run: npm run qa:frontend + - name: Check committed landing bundles are current + run: git diff --exit-code -- frontend/generated docs/assets/launch-control-motion.js docs/assets/launch-control-motion.css docs/assets/launch-control-chunks diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1f65c6b..f8d5016 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -35,6 +35,7 @@ jobs: with: languages: ${{ matrix.language }} build-mode: none + config-file: ./.github/codeql-config.yml - uses: github/codeql-action/analyze@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0 with: category: "/language:${{ matrix.language }}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f005a2..5d2f83e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 4.0.0 — 2026-07-15 + +- Removed the unrelated industrial raster, its preload and every generated format from the landing and social preview. +- Added a real Astryx 0.1.6 React island with pinned dependencies, a compiled Launch Control theme and accessible Card, Badge, ProgressBar, StatusDot and Button primitives. +- Implemented the requested Three.js r128 faceted mesh as a semantic decision token moving through Detect, Route and Prove before stopping on the receipt. +- Added reduced-motion, save-data and WebGL fallbacks, viewport and tab pausing, deterministic replay controls and strict gzip budgets. +- Rebuilt the social card around the product decision trace and expanded browser contracts for the new motion surface. + ## 3.0.0 — 2026-07-15 - Rebuilt the canonical product landing from a blank visual system with a neutral depth shell, Inter, restrained Instrument Serif accents, charcoal controls and one industrial-orange brand color. diff --git a/DESIGN.md b/DESIGN.md index 22bb873..fba0e09 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -11,7 +11,7 @@ Launch Control is a B2B pre-launch QA product for Meta Ads. It must read as a re The direction is Industrial AI Elegance, combining Apple-like hierarchy and material restraint with Linear-like product proof. The signature is the orange route from Detect to Route to Prove. The page never uses portfolio, personal-project or case-study framing. -The hero may use one abstract orange control sculpture as a secondary brand object on desktop. The native Queue, Review and Receipt interface is always the primary proof. The sculpture disappears on mobile so useful product state reaches the first viewport. +The hero demonstrates a recorded decision trace from Detect to Route to Prove. Astryx provides the accessible product controls and Three.js r128 renders a faceted orange decision token that moves once through the workflow and stops. No generated raster or decorative product sculpture is allowed. ## Foundations @@ -68,12 +68,14 @@ Tabs use WAI-ARIA semantics, arrow-key navigation and a Transitions.dev sliding ## Motion - Hero rise: 620ms with 60ms stagger. +- Recorded trace: 6600ms from Detect to Route to Prove, then a complete stop. +- Three.js token: `IcosahedronGeometry(3, 0)`, orange `#E34A32`, flat-shaded metal material, DPR capped at 1.5. - Tab pill: 250ms cubic-bezier(.22,1,.36,1). - Inspector entrance: 280ms, 12px horizontal travel. - Receipt timeline: 260ms with 60ms stagger. - Button press: scale .98 for 100ms. -No `transition: all`, ease-in entrance, autoplay carousel, permanent drift or decorative parallax. Reduced-motion mode removes translation and variable-weight behavior while keeping all content visible. +No `transition: all`, ease-in entrance, autoplay carousel, permanent drift or decorative parallax. Reduced-motion mode renders the final receipt in one static WebGL frame and runs no RAF loop. ## Content and conversion @@ -92,7 +94,7 @@ Synthetic counts must always be labeled as a current synthetic run. Never add fa - No horizontal overflow at 320px or 200% text zoom. - Keyboard tabs and visible focus. - Reduced motion, reduced transparency and increased contrast modes. -- Responsive AVIF and WebP for the brand sculpture. PNG is fallback only. +- No hero raster. Astryx and Three.js bundles are self-hosted, split and gzip-budgeted. - Target Lighthouse: 90+ performance and 100 accessibility. ## No-go rules diff --git a/README.md b/README.md index 39891b8..5681d7a 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ Validate approvals, placements, destinations, naming and UTMs across every creat **Mathieu Petroni** designed and built the review workflow, AI orchestration, evaluations, trust boundaries, deterministic validators and responsive interface. -[![Launch Control product](docs/assets/social-card-v3.png)](https://mattyu-dev.github.io/creative-launch-workspace/) +[![Launch Control product](docs/assets/social-card-v4.png)](https://mattyu-dev.github.io/creative-launch-workspace/) -The V3 public product is a from-scratch Apple and Linear inspired system built with Inter, Instrument Serif accents, a neutral depth shell, charcoal controls and one industrial-orange action color. Queue, Review and Receipt are native interactive states, not screenshots. The only raster image is a new abstract brand sculpture served as AVIF or WebP; it never replaces product proof. +The V4 public product is an Apple and Linear inspired system built with Inter, restrained Instrument Serif accents, a neutral depth shell, charcoal controls and one operational orange. The hero uses a real Astryx React island and an on-demand Three.js r128 decision trace; Queue, Review and Receipt remain native interactive states rather than screenshots. ## Why this exists diff --git a/docs/assets/fix-lab.png b/docs/assets/fix-lab.png index 409d0f9..88949ef 100644 Binary files a/docs/assets/fix-lab.png and b/docs/assets/fix-lab.png differ diff --git a/docs/assets/guided-receipt-mobile.png b/docs/assets/guided-receipt-mobile.png index aa04783..08b0b1a 100644 Binary files a/docs/assets/guided-receipt-mobile.png and b/docs/assets/guided-receipt-mobile.png differ diff --git a/docs/assets/guided-receipt-mobile.webp b/docs/assets/guided-receipt-mobile.webp index 6553636..7a48a7f 100644 Binary files a/docs/assets/guided-receipt-mobile.webp and b/docs/assets/guided-receipt-mobile.webp differ diff --git a/docs/assets/guided-review-mobile-step-3.png b/docs/assets/guided-review-mobile-step-3.png index a70f524..f3866d6 100644 Binary files a/docs/assets/guided-review-mobile-step-3.png and b/docs/assets/guided-review-mobile-step-3.png differ diff --git a/docs/assets/guided-review-step-3.png b/docs/assets/guided-review-step-3.png index cc93649..4981d96 100644 Binary files a/docs/assets/guided-review-step-3.png and b/docs/assets/guided-review-step-3.png differ diff --git a/docs/assets/launch-control-chunks/Tooltip-2W65UMVO.js b/docs/assets/launch-control-chunks/Tooltip-2W65UMVO.js new file mode 100644 index 0000000..38d0800 --- /dev/null +++ b/docs/assets/launch-control-chunks/Tooltip-2W65UMVO.js @@ -0,0 +1 @@ +"use client";import{y as a}from"./chunk-Z74MQLWI.js";import"./chunk-FJBRNDM2.js";export{a as Tooltip}; diff --git a/docs/assets/launch-control-chunks/chunk-FJBRNDM2.js b/docs/assets/launch-control-chunks/chunk-FJBRNDM2.js new file mode 100644 index 0000000..610c364 --- /dev/null +++ b/docs/assets/launch-control-chunks/chunk-FJBRNDM2.js @@ -0,0 +1 @@ +var g=Object.create;var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(b,a)=>()=>{try{return a||b((a={exports:{}}).exports,a),a.exports}catch(c){throw a=0,c}};var l=(b,a,c,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of i(a))!k.call(b,d)&&d!==c&&f(b,d,{get:()=>a[d],enumerable:!(e=h(a,d))||e.enumerable});return b};var n=(b,a,c)=>(c=b!=null?g(j(b)):{},l(a||!b||!b.__esModule?f(c,"default",{value:b,enumerable:!0}):c,b));export{m as a,n as b}; diff --git a/docs/assets/launch-control-chunks/chunk-Z74MQLWI.js b/docs/assets/launch-control-chunks/chunk-Z74MQLWI.js new file mode 100644 index 0000000..3de7e3e --- /dev/null +++ b/docs/assets/launch-control-chunks/chunk-Z74MQLWI.js @@ -0,0 +1,17 @@ +import{a as q,b as S}from"./chunk-FJBRNDM2.js";var me=q(s=>{"use strict";/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var K=Symbol.for("react.transitional.element"),Ve=Symbol.for("react.portal"),Pe=Symbol.for("react.fragment"),qe=Symbol.for("react.strict_mode"),Ie=Symbol.for("react.profiler"),Ye=Symbol.for("react.consumer"),Ge=Symbol.for("react.context"),We=Symbol.for("react.forward_ref"),Ue=Symbol.for("react.suspense"),Xe=Symbol.for("react.memo"),fe=Symbol.for("react.lazy"),Ze=Symbol.for("react.activity"),le=Symbol.iterator;function Ke(e){return e===null||typeof e!="object"?null:(e=le&&e[le]||e["@@iterator"],typeof e=="function"?e:null)}var ge={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},pe=Object.assign,xe={};function H(e,r,t){this.props=e,this.context=r,this.refs=xe,this.updater=t||ge}H.prototype.isReactComponent={};H.prototype.setState=function(e,r){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,r,"setState")};H.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function he(){}he.prototype=H.prototype;function Q(e,r,t){this.props=e,this.context=r,this.refs=xe,this.updater=t||ge}var J=Q.prototype=new he;J.constructor=Q;pe(J,H.prototype);J.isPureReactComponent=!0;var ce=Array.isArray;function Z(){}var h={H:null,A:null,T:null,S:null},ve=Object.prototype.hasOwnProperty;function ee(e,r,t){var o=t.ref;return{$$typeof:K,type:e,key:r,ref:o!==void 0?o:null,props:t}}function Qe(e,r){return ee(e.type,r,e.props)}function re(e){return typeof e=="object"&&e!==null&&e.$$typeof===K}function Je(e){var r={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(t){return r[t]})}var ue=/\/+/g;function X(e,r){return typeof e=="object"&&e!==null&&e.key!=null?Je(""+e.key):r.toString(36)}function er(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Z,Z):(e.status="pending",e.then(function(r){e.status==="pending"&&(e.status="fulfilled",e.value=r)},function(r){e.status==="pending"&&(e.status="rejected",e.reason=r)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function M(e,r,t,o,n){var a=typeof e;(a==="undefined"||a==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(a){case"bigint":case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case K:case Ve:i=!0;break;case fe:return i=e._init,M(i(e._payload),r,t,o,n)}}if(i)return n=n(e),i=o===""?"."+X(e,0):o,ce(n)?(t="",i!=null&&(t=i.replace(ue,"$&/")+"/"),M(n,r,t,"",function(y){return y})):n!=null&&(re(n)&&(n=Qe(n,t+(n.key==null||e&&e.key===n.key?"":(""+n.key).replace(ue,"$&/")+"/")+i)),r.push(n)),1;i=0;var d=o===""?".":o+":";if(ce(e))for(var v=0;v{"use strict";ye.exports=me()});var Te=q(G=>{"use strict";/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var sr=Symbol.for("react.transitional.element"),ir=Symbol.for("react.fragment");function ze(e,r,t){var o=null;if(t!==void 0&&(o=""+t),r.key!==void 0&&(o=""+r.key),"key"in r){t={};for(var n in r)n!=="key"&&(t[n]=r[n])}else t=r;return r=t.ref,{$$typeof:sr,type:e,key:o,ref:r!==void 0?r:null,props:t}}G.Fragment=ir;G.jsx=ze;G.jsxs=ze});var W=q((Or,Ce)=>{"use strict";Ce.exports=Te()});var P=S(O(),1);var Y=S(O(),1),te=typeof window<"u"?Y.useLayoutEffect:Y.useEffect;var V={},be;function or(){if(be)return V;be=1,Object.defineProperty(V,"__esModule",{value:!0}),V.styleq=void 0;var e=new WeakMap,r="$$css";function t(n){var a,i,d;return n!=null&&(a=n.disableCache===!0,i=n.disableMix===!0,d=n.transform),function(){for(var y=[],T="",b=null,u="",F=a?null:e,A=new Array(arguments.length),_=0;_0;){var x=A.pop();if(!(x==null||x===!1)){if(Array.isArray(x)){for(var g=0;g0&&(n.style=t),o!=null&&o!==""&&(n["data-style-src"]=o),n}var _r=Object.freeze({});var m=S(O(),1);var w=S(O(),1);function ke(e){return(e.style.anchorName??"").split(",").map(t=>t.trim()).filter(Boolean)}function we(e,r){e.style.anchorName=r.join(", ")}function _e(e,r){let t=ke(e);t.includes(r)||(t.push(r),we(e,t))}function Ee(e,r){we(e,ke(e).filter(t=>t!==r))}var Fr={"--color-accent":"light-dark(#0064E0, #2694FE)","--color-accent-muted":"light-dark(#0082FB33, #0082FB3F)","--color-on-accent":"light-dark(#FFFFFF, #FFFFFF)","--color-neutral":"light-dark(rgba(5, 54, 89, 0.1), rgba(223, 226, 229, 0.2))","--color-background-surface":"light-dark(#FFFFFF, #1F1F22)","--color-background-body":"light-dark(#F1F4F7, #111112)","--color-overlay":"light-dark(#01122866, #11111299)","--color-overlay-hover":"light-dark(#0536590C, #FFFFFF0C)","--color-overlay-pressed":"light-dark(#05365919, #FFFFFF19)","--color-background-muted":"light-dark(#0536590C, #1111127F)","--color-text-primary":"light-dark(#0A1317, #DFE2E5)","--color-text-secondary":"light-dark(#4E606F, #AAAFB5)","--color-text-disabled":"light-dark(#A4B0BC, #6F747C)","--color-text-accent":"light-dark(#0064E0, #3E9EFB)","--color-on-dark":"light-dark(#FFFFFF, #FFFFFF)","--color-on-light":"light-dark(#000000, #000000)","--color-icon-accent":"light-dark(#0064E0, #2694FE)","--color-icon-primary":"light-dark(#0A1317, #DFE2E5)","--color-icon-secondary":"light-dark(#4E606F, #AAAFB5)","--color-icon-disabled":"light-dark(#A4B0BC, #6F747C)","--color-background-card":"light-dark(#FFFFFF, #1F1F22)","--color-background-popover":"light-dark(#FFFFFF, #28292C)","--color-background-inverted":"light-dark(#0A1317, #FFFFFF)","--color-background-error-inverted":"light-dark(#AA071E, #E3193B)","--color-success":"light-dark(#0D8626, #0D8626)","--color-success-muted":"light-dark(#0B991F33, #0B991F3F)","--color-on-success":"light-dark(#FFFFFF, #FFFFFF)","--color-error":"light-dark(#E3193B, #F5394F)","--color-error-muted":"light-dark(#E3193B33, #F5394F3F)","--color-on-error":"light-dark(#FFFFFF, #FFFFFF)","--color-warning":"light-dark(#E9AF08, #F2C00B)","--color-warning-muted":"light-dark(#E2A40033, #E2A4003F)","--color-on-warning":"light-dark(#0A1317, #0A1317)","--color-border":"light-dark(#05365919, #F2F4F619)","--color-border-emphasized":"light-dark(#CCD3DB, #494D53)","--color-skeleton":"light-dark(#CCD3DB, #5A5E66)","--color-track":"light-dark(#CCD3DB, #5A5E66)","--color-shadow":"light-dark(rgba(5, 54, 89, 0.1), rgba(0, 0, 0, 0.3))","--color-tint-hover":"light-dark(black, white)","--color-background-blue":"light-dark(#0171E333, #0171E333)","--color-border-blue":"light-dark(#0064E0, #2694FE)","--color-icon-blue":"light-dark(#0064E0, #2694FE)","--color-text-blue":"light-dark(#042F97, #AFD7FF)","--color-background-cyan":"light-dark(#03A7D733, #03A7D733)","--color-border-cyan":"light-dark(#089DD0, #0171A4)","--color-icon-cyan":"light-dark(#00ACC1, #26C6DA)","--color-text-cyan":"light-dark(#014975, #A1EEF9)","--color-background-gray":"light-dark(#0A131733, #666A724C)","--color-border-gray":"light-dark(#647685, #748695)","--color-icon-gray":"light-dark(#4E606F, #AAAFB5)","--color-text-gray":"light-dark(#0A1317, #E7EAED)","--color-background-green":"light-dark(#24BB5E33, #24BB5E33)","--color-border-green":"light-dark(#0D8626, #0B991F)","--color-icon-green":"light-dark(#0D8626, #26A756)","--color-text-green":"light-dark(#09441F, #A5F690)","--color-background-orange":"light-dark(#F2790233, #F2790233)","--color-border-orange":"light-dark(#EB6E00, #B34A01)","--color-icon-orange":"light-dark(#E9690B, #FB8C00)","--color-text-orange":"light-dark(#6B2203, #FDB876)","--color-background-pink":"light-dark(#E638B333, #E638B333)","--color-border-pink":"light-dark(#F351C0, #C02294)","--color-icon-pink":"light-dark(#C2185B, #EC407A)","--color-text-pink":"light-dark(#650053, #FEADE3)","--color-background-purple":"light-dark(#7952FF33, #7952FF33)","--color-border-purple":"light-dark(#9081FF, #7340FE)","--color-icon-purple":"light-dark(#5B08D8, #7952FF)","--color-text-purple":"light-dark(#3E0697, #B3B0FE)","--color-background-red":"light-dark(#E3193B33, #E3193B33)","--color-border-red":"light-dark(#E3193B, #F5394F)","--color-icon-red":"light-dark(#D31130, #E3193B)","--color-text-red":"light-dark(#7B0210, #FFB2B8)","--color-background-teal":"light-dark(#0DB7AF33, #0DB7AF33)","--color-border-teal":"light-dark(#08A3A3, #08767D)","--color-icon-teal":"light-dark(#009688, #26A69A)","--color-text-teal":"light-dark(#083943, #40DCCD)","--color-background-yellow":"light-dark(#E2A40033, #E2A40033)","--color-border-yellow":"light-dark(#C58600, #B47700)","--color-icon-yellow":"light-dark(#FBC02D, #FFEE58)","--color-text-yellow":"light-dark(#753F07, #FBCE03)"};var Ar={"--spacing-0":"0px","--spacing-0-5":"2px","--spacing-1":"4px","--spacing-1-5":"6px","--spacing-2":"8px","--spacing-3":"12px","--spacing-4":"16px","--spacing-5":"20px","--spacing-6":"24px","--spacing-7":"28px","--spacing-8":"32px","--spacing-9":"36px","--spacing-10":"40px","--spacing-11":"44px","--spacing-12":"48px"},zr={"--spacing-0":"var(--spacing-0)","--spacing-0-5":"var(--spacing-0-5)","--spacing-1":"var(--spacing-1)","--spacing-1-5":"var(--spacing-1-5)","--spacing-2":"var(--spacing-2)","--spacing-3":"var(--spacing-3)","--spacing-4":"var(--spacing-4)","--spacing-5":"var(--spacing-5)","--spacing-6":"var(--spacing-6)","--spacing-7":"var(--spacing-7)","--spacing-8":"var(--spacing-8)","--spacing-9":"var(--spacing-9)","--spacing-10":"var(--spacing-10)","--spacing-11":"var(--spacing-11)","--spacing-12":"var(--spacing-12)",__varGroupHash__:"x1kvdh9l"},Tr={"--size-element-sm":"28px","--size-element-md":"32px","--size-element-lg":"36px"};var Cr={"--radius-none":"0px","--radius-inner":"4px","--radius-element":"8px","--radius-container":"12px","--radius-page":"28px","--radius-chat":"28px","--radius-full":"9999px"};var Rr={"--shadow-low":"0px 1px 1px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), 0px 2px 8px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2))","--shadow-med":"0px 1px 2px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), 0px 2px 12px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2))","--shadow-high":"0px 2px 2px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), 0px 8px 24px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.3))","--shadow-inset-hover":"inset 0px 0px 0px 2px light-dark(rgba(5, 54, 89, 0.15), rgba(223, 226, 229, 0.2))","--shadow-inset-selected":"inset 0px 0px 0px 2px rgba(1, 113, 227, 0.5)","--shadow-inset-success":"inset 0px 0px 0px 2px rgba(38, 167, 86, 0.3)","--shadow-inset-warning":"inset 0px 0px 0px 2px rgba(226, 164, 0, 0.3)","--shadow-inset-error":"inset 0px 0px 0px 2px rgba(227, 25, 59, 0.3)"};var jr={"--duration-fast-min":"130ms","--duration-fast":"175ms","--duration-fast-max":"230ms","--duration-medium-min":"310ms","--duration-medium":"410ms","--duration-medium-max":"550ms","--duration-slow-min":"730ms","--duration-slow":"975ms","--duration-slow-max":"1300ms"},Fe={"--duration-fast-min":"var(--duration-fast-min)","--duration-fast":"var(--duration-fast)","--duration-fast-max":"var(--duration-fast-max)","--duration-medium-min":"var(--duration-medium-min)","--duration-medium":"var(--duration-medium)","--duration-medium-max":"var(--duration-medium-max)","--duration-slow-min":"var(--duration-slow-min)","--duration-slow":"var(--duration-slow)","--duration-slow-max":"var(--duration-slow-max)",__varGroupHash__:"x14lkjui"},Br={"--ease-standard":"cubic-bezier(0.24, 1, 0.4, 1)"},Ae={"--ease-standard":"var(--ease-standard)",__varGroupHash__:"xf09i69"},Dr={"--transition-fast":"0.15s ease","--transition-normal":"0.2s ease"};var Nr={"--font-family-body":'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',"--font-family-code":'"SF Mono", Monaco, Consolas, monospace',"--font-family-heading":'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif'};var $r={"--font-size-4xs":"0.375rem","--font-size-3xs":"0.4375rem","--font-size-2xs":"0.5rem","--font-size-xs":"0.625rem","--font-size-sm":"0.75rem","--font-size-base":"0.875rem","--font-size-lg":"1.0625rem","--font-size-xl":"1.25rem","--font-size-2xl":"1.5rem","--font-size-3xl":"1.8125rem","--font-size-4xl":"2.1875rem","--font-size-5xl":"2.625rem"};var Sr={"--font-weight-normal":"400","--font-weight-medium":"500","--font-weight-semibold":"600","--font-weight-bold":"700"};var Mr={"--text-heading-1-size":"var(--font-size-2xl)","--text-heading-1-weight":"var(--font-weight-semibold)","--text-heading-1-leading":"1.3333","--text-heading-2-size":"var(--font-size-xl)","--text-heading-2-weight":"var(--font-weight-semibold)","--text-heading-2-leading":"1.4","--text-heading-3-size":"var(--font-size-lg)","--text-heading-3-weight":"var(--font-weight-semibold)","--text-heading-3-leading":"1.4118","--text-heading-4-size":"var(--font-size-base)","--text-heading-4-weight":"var(--font-weight-semibold)","--text-heading-4-leading":"1.4286","--text-heading-5-size":"var(--font-size-sm)","--text-heading-5-weight":"var(--font-weight-semibold)","--text-heading-5-leading":"1.6667","--text-heading-6-size":"var(--font-size-xs)","--text-heading-6-weight":"var(--font-weight-semibold)","--text-heading-6-leading":"1.6","--text-body-size":"var(--font-size-base)","--text-body-weight":"var(--font-weight-normal)","--text-body-leading":"1.4286","--text-large-size":"var(--font-size-lg)","--text-large-weight":"var(--font-weight-semibold)","--text-large-leading":"1.4118","--text-label-size":"var(--font-size-base)","--text-label-weight":"var(--font-weight-medium)","--text-label-leading":"1.4286","--text-code-size":"var(--font-size-base)","--text-code-weight":"var(--font-weight-normal)","--text-code-leading":"1.4286","--text-supporting-size":"var(--font-size-sm)","--text-supporting-weight":"var(--font-weight-normal)","--text-supporting-leading":"1.6667","--text-display-1-size":"var(--font-size-5xl)","--text-display-1-weight":"var(--font-weight-normal)","--text-display-1-leading":"1.2381","--text-display-2-size":"var(--font-size-4xl)","--text-display-2-weight":"var(--font-weight-normal)","--text-display-2-leading":"1.2571","--text-display-3-size":"var(--font-size-3xl)","--text-display-3-weight":"var(--font-weight-normal)","--text-display-3-leading":"1.2414"};var ae=S(W(),1),ne={base:{keoZOQ:"xdj266r",k1K539:"xat24cr",keTefX:"x1lziwak",k71WvV:"x14z9mp",kLKAdn:"xexx8yu",kGO01o:"x18d9i69",kZCmMZ:"x1c1uobl",kwRFfy:"xyri2b",kMzoRj:"xc342km",ksu8eU:"xng3xce",kVQacm:"x1rea2x4",kMv6JI:"x9ynric",kWkggS:"xjbqb8w",$$css:!0},fixed:{kVAEAm:"xixxii4",$$css:!0}};function lr(e="above",r="center"){if(e==="above"||e==="below"){let o=e==="above"?"self-block-start":"self-block-end";return r==="start"?`${o} span-self-inline-end`:r==="end"?`${o} span-self-inline-start`:o}let t=e==="start"?"self-inline-start":"self-inline-end";return r==="start"?`${t} span-self-block-end`:r==="end"?`${t} span-self-block-start`:t}function Re(e){let{mode:r,onShow:t,onHide:o,lightDismiss:n=!1}=e,a=(0,w.useId)(),i=`--astryx-layer-${a.replace(/:/g,"")}`,[d,v]=(0,w.useState)(!1),y=(0,w.useRef)(null),T=(0,w.useRef)(null),b=(0,w.useRef)(!1),u=(0,w.useCallback)(()=>{let l=y.current;l&&!b.current&&(typeof l.showPopover=="function"?l.showPopover():l.style.display="block",b.current=!0,v(!0),t?.())},[t]),F=(0,w.useCallback)(()=>{if(b.current){let l=y.current;l&&(typeof l.hidePopover=="function"?l.hidePopover():l.style.display="none"),b.current=!1,v(!1),o?.()}},[o]),A=r==="context"?l=>{T.current&&T.current!==l&&Ee(T.current,i),l&&_e(l,i),T.current=l}:void 0,_=(0,w.useCallback)(l=>{l.newState==="closed"&&b.current&&(b.current=!1,v(!1),o?.())},[o]),x=(0,w.useRef)(null),g=(0,w.useRef)(null),c=(0,w.useCallback)((l,E)=>{x.current&&g.current&&(x.current!==l||g.current!==E)&&(x.current.removeEventListener("toggle",g.current),x.current=null,g.current=null),l&&x.current!==l&&(l.addEventListener("toggle",E),x.current=l,g.current=E)},[]),f=(0,w.useCallback)(l=>{y.current=l,c(l,_)},[_,c]);(0,w.useEffect)(()=>(y.current&&c(y.current,_),()=>{x.current&&g.current&&(x.current.removeEventListener("toggle",g.current),x.current=null,g.current=null)}),[_,c]);let k=(0,w.useCallback)((l,E)=>{let{placement:R="above",alignment:N="center",positioning:j="anchor",role:B,xstyle:p,className:z,style:$,as:L="div",onMouseEnter:Me,onMouseLeave:He}=E||{},Le=j==="custom"?{positionAnchor:i}:{positionAnchor:i,positionArea:lr(R,N),positionTryFallbacks:"flip-block, flip-inline, flip-block flip-inline"},U=oe(ne.base,p),Oe=z?`${z} ${U.className??""}`:U.className;return(0,ae.jsx)(L,{ref:f,id:a,role:B,popover:n?"auto":"manual",className:Oe,style:{...U.style,...Le,...$},onMouseEnter:Me,onMouseLeave:He,children:l})},[i,a,n,f]),C=(0,w.useCallback)((l,E)=>{let{x:R,y:N,xstyle:j,className:B,style:p}=E,z={top:N,left:R},$=oe(ne.base,ne.fixed,j),L=B?`${B} ${$.className??""}`:$.className;return(0,ae.jsx)("div",{ref:f,id:a,popover:n?"auto":"manual",className:L,style:{...$.style,...z,...p},children:l})},[f,a,n]);return r==="context"?{ref:A,anchorId:i,show:u,hide:F,isOpen:d,id:a,render:k}:{ref:void 0,show:u,hide:F,isOpen:d,id:a,render:C}}var Zr={animationDuration:Fe["--duration-fast-max"],animationTimingFunction:Ae["--ease-standard"],animationFillMode:"backwards"},je={below:{kKVMdj:"xl1vlw0 x1aquc0h",k44tkh:"x9uej1z",kyAemX:"x128ha8g",kWV6AL:"xskzprw",$$css:!0},above:{kKVMdj:"x3psbcj x1aquc0h",k44tkh:"x9uej1z",kyAemX:"x128ha8g",kWV6AL:"xskzprw",$$css:!0},end:{kKVMdj:"x1i331go x1aquc0h",k44tkh:"x9uej1z",kyAemX:"x128ha8g",kWV6AL:"xskzprw",$$css:!0},start:{kKVMdj:"xck01x9 x1aquc0h",k44tkh:"x9uej1z",kyAemX:"x128ha8g",kWV6AL:"xskzprw",$$css:!0}};var se="astryx",cr=se,ur=se,dr=se;function Be(e){return`${cr}-${e}`}function Qr(e){return`data-${ur}-${e}`}function Jr(e){return`--${dr}-${e}`}function fr(e){return`data-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`}function gr(e,r){return/^\d/.test(r)?`${e}-${r}`:r}function pr(e,r){let t=[Be(e)];if(r)for(let[o,n]of Object.entries(r))n!=null&&t.push(gr(o,String(n)));return t.join(" ")}function xr(e){let r={};if(e)for(let[t,o]of Object.entries(e))o!=null&&(r[fr(t)]=String(o));return r}function De(e,r){return{className:pr(e,r),...xr(r)}}var Ne=S(W(),1),hr=100,ie={container:{kWkggS:"x19aspcf",kMwMTN:"xrkvqaz",kaIpWk:"x1hviunn",kMv6JI:"x9ynric",kGuDYH:"xjm74w1",kLWn49:"xw6l6zx",$$css:!0},marginBlock:{keoZOQ:"xcsaf9d",k1K539:"x14cgwvg",keTefX:"x1lziwak",k71WvV:"x14z9mp",$$css:!0},marginInline:{keoZOQ:"xdj266r",k1K539:"xat24cr",keTefX:"x11g1kdw",k71WvV:"xnur1sd",$$css:!0}};function vr(e){return e.hasAttribute("tabindex")?e.tabIndex>=0:["A","BUTTON","INPUT","SELECT","TEXTAREA"].includes(e.tagName)?!e.disabled:!!e.isContentEditable}function $e(e={}){let{placement:r="above",alignment:t="center",delay:o=200,hideDelay:n=0,focusTrigger:a="auto",isEnabled:i=!0,isOpen:d,isDefaultOpen:v=!1,onShow:y,onHide:T}=e,b=r==="above"||r==="below"?ie.marginBlock:ie.marginInline,u=Re({mode:"context",onShow:y,onHide:T}),F=(0,m.useMemo)(()=>[ie.container,b],[b]),A=(0,m.useRef)(null),_=(0,m.useRef)(null),x=(0,m.useRef)(null),g=(0,m.useCallback)(()=>{A.current&&(clearTimeout(A.current),A.current=null),_.current&&(clearTimeout(_.current),_.current=null)},[]),c=(0,m.useCallback)(()=>{!i||d===!1||(g(),A.current=setTimeout(()=>{u.show()},o))},[i,d,g,u,o]),f=(0,m.useCallback)(()=>{if(d===!0)return;g();let p=n>0?n:hr;_.current=setTimeout(()=>{u.hide()},p)},[d,g,u,n]),k=(0,m.useCallback)(()=>{_.current&&(clearTimeout(_.current),_.current=null)},[]),C=(0,m.useCallback)(()=>{typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(hover: none)").matches||c()},[c]),l=(0,m.useCallback)(()=>{f()},[f]),E=(0,m.useCallback)(p=>{!i||!p.target.matches(":focus-visible")||(g(),u.show())},[i,g,u]),R=(0,m.useCallback)(()=>{f()},[f]),N=(0,m.useCallback)(p=>{x.current&&(x.current.removeEventListener("mouseenter",C),x.current.removeEventListener("mouseleave",l),x.current.removeEventListener("focusin",E),x.current.removeEventListener("focusout",R)),p&&(p.addEventListener("mouseenter",C),p.addEventListener("mouseleave",l),(a==="always"||a==="auto"&&vr(p))&&(p.addEventListener("focusin",E),p.addEventListener("focusout",R))),x.current=p},[a,C,l,E,R]),j=(0,m.useCallback)(p=>{u.ref(p),N(p)},[u,N]);(0,m.useEffect)(()=>()=>{g()},[g]),(0,m.useEffect)(()=>{v&&u.show()},[]),(0,m.useEffect)(()=>{d!==void 0&&(d?(g(),u.show()):(g(),u.hide()))},[d,g,u]),(0,m.useEffect)(()=>{if(d!==void 0)return;let p=z=>{z.key==="Escape"&&(z.isComposing||z.keyCode===229||(g(),u.hide()))};return document.addEventListener("keydown",p),()=>{document.removeEventListener("keydown",p)}},[d,u,g]);let B=(0,m.useCallback)((p,z)=>{let $=z?.placement??r,L={placement:$,alignment:z?.alignment??t,role:"tooltip",xstyle:[F,je[$]],className:De("tooltip").className,onMouseEnter:k,onMouseLeave:f};return u.render((0,Ne.jsx)("div",{className:"xfsso4q xy143xn x12gdq22 x1djylfy xw5ewwj x13faqbe",children:p}),L)},[u,r,t,F,k,f]);return{ref:j,positionRef:u.ref,interactionRef:N,anchorId:u.anchorId,describedBy:u.id,renderTooltip:B}}var D=S(W(),1);function mr(e){return typeof e=="string"||typeof e=="number"}function Se(...e){let r=e.filter(Boolean);return r.length>0?r.join(" "):void 0}function yr({children:e,anchorRef:r,content:t,placement:o="above",alignment:n="center",delay:a=200,hideDelay:i=0,focusTrigger:d="auto",isEnabled:v=!0,onOpenChange:y,hasHoverIndication:T="auto",isOpen:b,isDefaultOpen:u}){let F=(0,P.useRef)(null),A=e!=null?mr(e):!1,_=T===!0||T==="auto"&&A,x=(0,P.useCallback)(()=>{y?.(!0)},[y]),g=(0,P.useCallback)(()=>{y?.(!1)},[y]),c=$e({placement:o,alignment:n,delay:a,hideDelay:i,focusTrigger:d,isEnabled:v,isOpen:b,isDefaultOpen:u,onShow:x,onHide:g});return te(()=>{if(!r)return;let f=r.current;if(!f)return;c.ref(f);let k=f.getAttribute("aria-describedby");return f.setAttribute("aria-describedby",Se(k,c.describedBy)??""),()=>{c.ref(null),k?f.setAttribute("aria-describedby",k):f.removeAttribute("aria-describedby")}},[r,c.ref,c.describedBy]),te(()=>{if(r||A)return;let f=F.current;if(!f)return;let k=f.firstElementChild;if(!k)return;c.ref(k);let C=k.getAttribute("aria-describedby");return k.setAttribute("aria-describedby",Se(C,c.describedBy)??""),()=>{c.ref(null),C?k.setAttribute("aria-describedby",C):k.removeAttribute("aria-describedby")}},[r,A,c.ref,c.describedBy]),r&&e==null?(0,D.jsx)(D.Fragment,{children:c.renderTooltip(t)}):A?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)("span",{ref:c.ref,tabIndex:0,"aria-describedby":c.describedBy,...{0:{className:"xt0psk2"},1:{className:"xt0psk2 xujl8zx xev0dqp xycaml9 xrys4gj"}}[!!_<<0],children:e}),c.renderTooltip(t)]}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)("div",{ref:F,className:"xjp7ctv",children:e}),c.renderTooltip(t)]})}yr.displayName="Tooltip";export{O as a,oe as b,Fr as c,Ar as d,zr as e,Tr as f,Cr as g,Rr as h,jr as i,Fe as j,Br as k,Dr as l,Nr as m,$r as n,Sr as o,Mr as p,cr as q,ur as r,Qr as s,Jr as t,De as u,W as v,$e as w,te as x,yr as y}; diff --git a/docs/assets/launch-control-chunks/hero-mesh-6FYDFJN6.js b/docs/assets/launch-control-chunks/hero-mesh-6FYDFJN6.js new file mode 100644 index 0000000..4978377 --- /dev/null +++ b/docs/assets/launch-control-chunks/hero-mesh-6FYDFJN6.js @@ -0,0 +1,2832 @@ +import"./chunk-FJBRNDM2.js";/** + * @license + * Copyright 2010-2021 Three.js Authors + * SPDX-License-Identifier: MIT + */var wc=0,Ea=1,bc=2;var Vl=1,Mc=2,xi=3,es=0,je=1,ts=2,Wl=1;var vi=0,_i=1,Ta=2,Aa=3,La=4,Sc=5,On=100,Ec=101,Tc=102,Ra=103,Ca=104,Ac=200,Lc=201,Rc=202,Cc=203,ql=204,Xl=205,Pc=206,Ic=207,Dc=208,Fc=209,Nc=210,Bc=0,zc=1,Oc=2,ks=3,Uc=4,Hc=5,Gc=6,kc=7,ns=0,Vc=1,Wc=2,wi=0,qc=1,Xc=2,Yc=3,Zc=4,Jc=5,Yl=300,aa=301,la=302,Pa=303,Ia=304,ca=306,ha=307,Vs=1e3,St=1001,Ws=1002,ot=1003,Da=1004;var Fa=1005;var gt=1006,jc=1007;var ua=1008;var da=1009,$c=1010,Qc=1011,Mr=1012,Kc=1013,wr=1014,$t=1015,Sr=1016,eh=1017,th=1018,nh=1019,bi=1020,ih=1021,mn=1022,Et=1023,rh=1024,sh=1025;var kn=1026,Ai=1027,oh=1028,ah=1029,lh=1030,ch=1031,hh=1032,uh=1033,Na=33776,Ba=33777,za=33778,Oa=33779,Ua=35840,Ha=35841,Ga=35842,ka=35843,dh=36196,Va=37492,Wa=37496,fh=37808,ph=37809,mh=37810,gh=37811,xh=37812,yh=37813,vh=37814,_h=37815,wh=37816,bh=37817,Mh=37818,Sh=37819,Eh=37820,Th=37821,Ah=36492,Lh=37840,Rh=37841,Ch=37842,Ph=37843,Ih=37844,Dh=37845,Fh=37846,Nh=37847,Bh=37848,zh=37849,Oh=37850,Uh=37851,Hh=37852,Gh=37853,kh=2200,Vh=2201,Wh=2202,Er=2300,Tr=2301,as=2302,Un=2400,Hn=2401,Ar=2402,fa=2500,Zl=2501,qh=0;var ri=3e3,pa=3001,Jl=3007,jl=3002,Xh=3003,$l=3004,Ql=3005,Kl=3006,Yh=3200,Zh=3201,si=0,Jh=1;var ls=7680;var jh=519,Li=35044,Lr=35048;var qa="300 es",Gt=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;let n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let i=this._listeners[e];if(i!==void 0){let r=i.indexOf(t);r!==-1&&i.splice(r,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let n=this._listeners[e.type];if(n!==void 0){e.target=this;let i=n.slice(0);for(let r=0,o=i.length;r>8&255]+Qe[s>>16&255]+Qe[s>>24&255]+"-"+Qe[e&255]+Qe[e>>8&255]+"-"+Qe[e>>16&15|64]+Qe[e>>24&255]+"-"+Qe[t&63|128]+Qe[t>>8&255]+"-"+Qe[t>>16&255]+Qe[t>>24&255]+Qe[n&255]+Qe[n>>8&255]+Qe[n>>16&255]+Qe[n>>24&255]).toUpperCase()}function ht(s,e,t){return Math.max(e,Math.min(t,s))}function $h(s,e){return(s%e+e)%e}function hs(s,e,t){return(1-t)*s+t*e}function Xa(s){return(s&s-1)===0&&s!==0}function Qh(s){return Math.pow(2,Math.ceil(Math.log(s)/Math.LN2))}function Kh(s){return Math.pow(2,Math.floor(Math.log(s)/Math.LN2))}var X=class{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,o=this.y-e.y;return this.x=r*n-o*i+e.x,this.y=r*i+o*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}};X.prototype.isVector2=!0;var Ze=class{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(e,t,n,i,r,o,a,l,c){let h=this.elements;return h[0]=e,h[1]=i,h[2]=a,h[3]=t,h[4]=r,h[5]=l,h[6]=n,h[7]=o,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[3],l=n[6],c=n[1],h=n[4],d=n[7],u=n[2],p=n[5],m=n[8],x=i[0],y=i[3],g=i[6],f=i[1],M=i[4],S=i[7],T=i[2],v=i[5],R=i[8];return r[0]=o*x+a*f+l*T,r[3]=o*y+a*M+l*v,r[6]=o*g+a*S+l*R,r[1]=c*x+h*f+d*T,r[4]=c*y+h*M+d*v,r[7]=c*g+h*S+d*R,r[2]=u*x+p*f+m*T,r[5]=u*y+p*M+m*v,r[8]=u*g+p*S+m*R,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8];return t*o*h-t*a*c-n*r*h+n*a*l+i*r*c-i*o*l}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8],d=h*o-a*c,u=a*l-h*r,p=c*r-o*l,m=t*d+n*u+i*p;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let x=1/m;return e[0]=d*x,e[1]=(i*c-h*n)*x,e[2]=(a*n-i*o)*x,e[3]=u*x,e[4]=(h*t-i*l)*x,e[5]=(i*r-a*t)*x,e[6]=p*x,e[7]=(n*l-c*t)*x,e[8]=(o*t-n*r)*x,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,o,a){let l=Math.cos(r),c=Math.sin(r);return this.set(n*l,n*c,-n*(l*o+c*a)+o+e,-i*c,i*l,-i*(-c*o+l*a)+a+t,0,0,1),this}scale(e,t){let n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this}rotate(e){let t=Math.cos(e),n=Math.sin(e),i=this.elements,r=i[0],o=i[3],a=i[6],l=i[1],c=i[4],h=i[7];return i[0]=t*r+n*l,i[3]=t*o+n*c,i[6]=t*a+n*h,i[1]=-n*r+t*l,i[4]=-n*o+t*c,i[7]=-n*a+t*h,this}translate(e,t){let n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}};Ze.prototype.isMatrix3=!0;var _n,en=class{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{_n===void 0&&(_n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),_n.width=e.width,_n.height=e.height;let n=_n.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=_n}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}},eu=0,nt=class s extends Gt{constructor(e=s.DEFAULT_IMAGE,t=s.DEFAULT_MAPPING,n=St,i=St,r=gt,o=ua,a=Et,l=da,c=1,h=ri){super(),Object.defineProperty(this,"id",{value:eu++}),this.uuid=Tt(),this.name="",this.image=e,this.mipmaps=[],this.mapping=t,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=o,this.anisotropy=c,this.format=a,this.internalFormat=null,this.type=l,this.offset=new X(0,0),this.repeat=new X(1,1),this.center=new X(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Ze,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=h,this.version=0,this.onUpdate=null}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.image=e.image,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this}toJSON(e){let t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(this.image!==void 0){let i=this.image;if(i.uuid===void 0&&(i.uuid=Tt()),!t&&e.images[i.uuid]===void 0){let r;if(Array.isArray(i)){r=[];for(let o=0,a=i.length;o1)switch(this.wrapS){case Vs:e.x=e.x-Math.floor(e.x);break;case St:e.x=e.x<0?0:1;break;case Ws:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Vs:e.y=e.y-Math.floor(e.y);break;case St:e.y=e.y<0?0:1;break;case Ws:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&this.version++}};nt.DEFAULT_IMAGE=void 0;nt.DEFAULT_MAPPING=Yl;nt.prototype.isTexture=!0;function us(s){return typeof HTMLImageElement<"u"&&s instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&s instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&s instanceof ImageBitmap?en.getDataURL(s):s.data?{data:Array.prototype.slice.call(s.data),width:s.width,height:s.height,type:s.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var Re=class{constructor(e=0,t=0,n=0,i=1){this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*r,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*r,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*r,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r,l=e.elements,c=l[0],h=l[4],d=l[8],u=l[1],p=l[5],m=l[9],x=l[2],y=l[6],g=l[10];if(Math.abs(h-u)<.01&&Math.abs(d-x)<.01&&Math.abs(m-y)<.01){if(Math.abs(h+u)<.1&&Math.abs(d+x)<.1&&Math.abs(m+y)<.1&&Math.abs(c+p+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let M=(c+1)/2,S=(p+1)/2,T=(g+1)/2,v=(h+u)/4,R=(d+x)/4,I=(m+y)/4;return M>S&&M>T?M<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(M),i=v/n,r=R/n):S>T?S<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(S),n=v/i,r=I/i):T<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(T),n=R/r,i=I/r),this.set(n,i,r,t),this}let f=Math.sqrt((y-m)*(y-m)+(d-x)*(d-x)+(u-h)*(u-h));return Math.abs(f)<.001&&(f=1),this.x=(y-m)/f,this.y=(d-x)/f,this.z=(u-h)/f,this.w=Math.acos((c+p+g-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}};Re.prototype.isVector4=!0;var Ut=class extends Gt{constructor(e,t,n){super(),this.width=e,this.height=t,this.depth=1,this.scissor=new Re(0,0,e,t),this.scissorTest=!1,this.viewport=new Re(0,0,e,t),n=n||{},this.texture=new nt(void 0,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:gt,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null}setTexture(e){e.image={width:this.width,height:this.height,depth:this.depth},this.texture=e}setSize(e,t,n=1){(this.width!==e||this.height!==t||this.depth!==n)&&(this.width=e,this.height=t,this.depth=n,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this}dispose(){this.dispatchEvent({type:"dispose"})}};Ut.prototype.isWebGLRenderTarget=!0;var Xs=class extends Ut{constructor(e,t,n){super(e,t,n),this.samples=4}copy(e){return super.copy.call(this,e),this.samples=e.samples,this}};Xs.prototype.isWebGLMultisampleRenderTarget=!0;var Ke=class{constructor(e=0,t=0,n=0,i=1){this._x=e,this._y=t,this._z=n,this._w=i}static slerp(e,t,n,i){return console.warn("THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead."),n.slerpQuaternions(e,t,i)}static slerpFlat(e,t,n,i,r,o,a){let l=n[i+0],c=n[i+1],h=n[i+2],d=n[i+3],u=r[o+0],p=r[o+1],m=r[o+2],x=r[o+3];if(a===0){e[t+0]=l,e[t+1]=c,e[t+2]=h,e[t+3]=d;return}if(a===1){e[t+0]=u,e[t+1]=p,e[t+2]=m,e[t+3]=x;return}if(d!==x||l!==u||c!==p||h!==m){let y=1-a,g=l*u+c*p+h*m+d*x,f=g>=0?1:-1,M=1-g*g;if(M>Number.EPSILON){let T=Math.sqrt(M),v=Math.atan2(T,g*f);y=Math.sin(y*v)/T,a=Math.sin(a*v)/T}let S=a*f;if(l=l*y+u*S,c=c*y+p*S,h=h*y+m*S,d=d*y+x*S,y===1-a){let T=1/Math.sqrt(l*l+c*c+h*h+d*d);l*=T,c*=T,h*=T,d*=T}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=d}static multiplyQuaternionsFlat(e,t,n,i,r,o){let a=n[i],l=n[i+1],c=n[i+2],h=n[i+3],d=r[o],u=r[o+1],p=r[o+2],m=r[o+3];return e[t]=a*m+h*d+l*p-c*u,e[t+1]=l*m+h*u+c*d-a*p,e[t+2]=c*m+h*p+a*u-l*d,e[t+3]=h*m-a*d-l*u-c*p,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");let n=e._x,i=e._y,r=e._z,o=e._order,a=Math.cos,l=Math.sin,c=a(n/2),h=a(i/2),d=a(r/2),u=l(n/2),p=l(i/2),m=l(r/2);switch(o){case"XYZ":this._x=u*h*d+c*p*m,this._y=c*p*d-u*h*m,this._z=c*h*m+u*p*d,this._w=c*h*d-u*p*m;break;case"YXZ":this._x=u*h*d+c*p*m,this._y=c*p*d-u*h*m,this._z=c*h*m-u*p*d,this._w=c*h*d+u*p*m;break;case"ZXY":this._x=u*h*d-c*p*m,this._y=c*p*d+u*h*m,this._z=c*h*m+u*p*d,this._w=c*h*d-u*p*m;break;case"ZYX":this._x=u*h*d-c*p*m,this._y=c*p*d+u*h*m,this._z=c*h*m-u*p*d,this._w=c*h*d+u*p*m;break;case"YZX":this._x=u*h*d+c*p*m,this._y=c*p*d+u*h*m,this._z=c*h*m-u*p*d,this._w=c*h*d-u*p*m;break;case"XZY":this._x=u*h*d-c*p*m,this._y=c*p*d-u*h*m,this._z=c*h*m+u*p*d,this._w=c*h*d+u*p*m;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],r=t[8],o=t[1],a=t[5],l=t[9],c=t[2],h=t[6],d=t[10],u=n+a+d;if(u>0){let p=.5/Math.sqrt(u+1);this._w=.25/p,this._x=(h-l)*p,this._y=(r-c)*p,this._z=(o-i)*p}else if(n>a&&n>d){let p=2*Math.sqrt(1+n-a-d);this._w=(h-l)/p,this._x=.25*p,this._y=(i+o)/p,this._z=(r+c)/p}else if(a>d){let p=2*Math.sqrt(1+a-n-d);this._w=(r-c)/p,this._x=(i+o)/p,this._y=.25*p,this._z=(l+h)/p}else{let p=2*Math.sqrt(1+d-n-a);this._w=(o-i)/p,this._x=(r+c)/p,this._y=(l+h)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(ht(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(n===0)return this;let i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e,t){return t!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let n=e._x,i=e._y,r=e._z,o=e._w,a=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+o*a+i*c-r*l,this._y=i*h+o*l+r*a-n*c,this._z=r*h+o*c+n*l-i*a,this._w=o*h-n*a-i*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let n=this._x,i=this._y,r=this._z,o=this._w,a=o*e._w+n*e._x+i*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=n,this._y=i,this._z=r,this;let l=1-a*a;if(l<=Number.EPSILON){let p=1-t;return this._w=p*o+t*this._w,this._x=p*n+t*this._x,this._y=p*i+t*this._y,this._z=p*r+t*this._z,this.normalize(),this._onChangeCallback(),this}let c=Math.sqrt(l),h=Math.atan2(c,a),d=Math.sin((1-t)*h)/c,u=Math.sin(t*h)/c;return this._w=o*d+this._w*u,this._x=n*d+this._x*u,this._y=i*d+this._y*u,this._z=r*d+this._z*u,this._onChangeCallback(),this}slerpQuaternions(e,t,n){this.copy(e).slerp(t,n)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};Ke.prototype.isQuaternion=!0;var b=class{constructor(e=0,t=0,n=0){this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Ya.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Ya.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=e.elements,o=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*o,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*o,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*o,this}applyQuaternion(e){let t=this.x,n=this.y,i=this.z,r=e.x,o=e.y,a=e.z,l=e.w,c=l*t+o*i-a*n,h=l*n+a*t-r*i,d=l*i+r*n-o*t,u=-r*t-o*n-a*i;return this.x=c*l+u*-r+h*-a-d*-o,this.y=h*l+u*-o+d*-r-c*-a,this.z=d*l+u*-a+c*-o-h*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e,t){return t!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,r=e.z,o=t.x,a=t.y,l=t.z;return this.x=i*l-r*a,this.y=r*o-n*l,this.z=n*a-i*o,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return ds.copy(this).projectOnVector(e),this.sub(ds)}reflect(e){return this.sub(ds.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let n=this.dot(e)/t;return Math.acos(ht(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}};b.prototype.isVector3=!0;var ds=new b,Ya=new Ke,ut=class{constructor(e=new b(1/0,1/0,1/0),t=new b(-1/0,-1/0,-1/0)){this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0;for(let l=0,c=e.length;lr&&(r=h),d>o&&(o=d),u>a&&(a=u)}return this.min.set(t,n,i),this.max.set(r,o,a),this}setFromBufferAttribute(e){let t=1/0,n=1/0,i=1/0,r=-1/0,o=-1/0,a=-1/0;for(let l=0,c=e.count;lr&&(r=h),d>o&&(o=d),u>a&&(a=u)}return this.min.set(t,n,i),this.max.set(r,o,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t===void 0&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new b),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,ai),ai.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(li),qi.subVectors(this.max,li),wn.subVectors(e.a,li),bn.subVectors(e.b,li),Mn.subVectors(e.c,li),Vt.subVectors(bn,wn),Wt.subVectors(Mn,bn),un.subVectors(wn,Mn);let t=[0,-Vt.z,Vt.y,0,-Wt.z,Wt.y,0,-un.z,un.y,Vt.z,0,-Vt.x,Wt.z,0,-Wt.x,un.z,0,-un.x,-Vt.y,Vt.x,0,-Wt.y,Wt.x,0,-un.y,un.x,0];return!ps(t,wn,bn,Mn,qi)||(t=[1,0,0,0,1,0,0,0,1],!ps(t,wn,bn,Mn,qi))?!1:(Xi.crossVectors(Vt,Wt),t=[Xi.x,Xi.y,Xi.z],ps(t,wn,bn,Mn,qi))}clampPoint(e,t){return t===void 0&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new b),t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return ai.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return e===void 0&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(e.center),e.radius=this.getSize(ai).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Ft[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Ft[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Ft[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Ft[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Ft[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Ft[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Ft[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Ft[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Ft),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};ut.prototype.isBox3=!0;var Ft=[new b,new b,new b,new b,new b,new b,new b,new b],ai=new b,fs=new ut,wn=new b,bn=new b,Mn=new b,Vt=new b,Wt=new b,un=new b,li=new b,qi=new b,Xi=new b,dn=new b;function ps(s,e,t,n,i){for(let r=0,o=s.length-3;r<=o;r+=3){dn.fromArray(s,r);let a=i.x*Math.abs(dn.x)+i.y*Math.abs(dn.y)+i.z*Math.abs(dn.z),l=e.dot(dn),c=t.dot(dn),h=n.dot(dn);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>a)return!1}return!0}var tu=new ut,Za=new b,ms=new b,gs=new b,tn=class{constructor(e=new b,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;t!==void 0?n.copy(t):tu.setFromPoints(e).getCenter(n);let i=0;for(let r=0,o=e.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return e===void 0&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new ut),this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){gs.subVectors(e,this.center);let t=gs.lengthSq();if(t>this.radius*this.radius){let n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.add(gs.multiplyScalar(i/n)),this.radius+=i}return this}union(e){return ms.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(Za.copy(e.center).add(ms)),this.expandByPoint(Za.copy(e.center).sub(ms)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},Nt=new b,xs=new b,Yi=new b,qt=new b,ys=new b,Zi=new b,vs=new b,nn=class{constructor(e=new b,t=new b(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t===void 0&&(console.warn("THREE.Ray: .at() target is now required"),t=new b),t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Nt)),this}closestPointToPoint(e,t){t===void 0&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new b),t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Nt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Nt.copy(this.direction).multiplyScalar(t).add(this.origin),Nt.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){xs.copy(e).add(t).multiplyScalar(.5),Yi.copy(t).sub(e).normalize(),qt.copy(this.origin).sub(xs);let r=e.distanceTo(t)*.5,o=-this.direction.dot(Yi),a=qt.dot(this.direction),l=-qt.dot(Yi),c=qt.lengthSq(),h=Math.abs(1-o*o),d,u,p,m;if(h>0)if(d=o*l-a,u=o*a-l,m=r*h,d>=0)if(u>=-m)if(u<=m){let x=1/h;d*=x,u*=x,p=d*(d+o*u+2*a)+u*(o*d+u+2*l)+c}else u=r,d=Math.max(0,-(o*u+a)),p=-d*d+u*(u+2*l)+c;else u=-r,d=Math.max(0,-(o*u+a)),p=-d*d+u*(u+2*l)+c;else u<=-m?(d=Math.max(0,-(-o*r+a)),u=d>0?-r:Math.min(Math.max(-r,-l),r),p=-d*d+u*(u+2*l)+c):u<=m?(d=0,u=Math.min(Math.max(-r,-l),r),p=u*(u+2*l)+c):(d=Math.max(0,-(o*r+a)),u=d>0?r:Math.min(Math.max(-r,-l),r),p=-d*d+u*(u+2*l)+c);else u=o>0?-r:r,d=Math.max(0,-(o*u+a)),p=-d*d+u*(u+2*l)+c;return n&&n.copy(this.direction).multiplyScalar(d).add(this.origin),i&&i.copy(Yi).multiplyScalar(u).add(xs),p}intersectSphere(e,t){Nt.subVectors(e.center,this.origin);let n=Nt.dot(this.direction),i=Nt.dot(Nt)-n*n,r=e.radius*e.radius;if(i>r)return null;let o=Math.sqrt(r-i),a=n-o,l=n+o;return a<0&&l<0?null:a<0?this.at(l,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,r,o,a,l,c=1/this.direction.x,h=1/this.direction.y,d=1/this.direction.z,u=this.origin;return c>=0?(n=(e.min.x-u.x)*c,i=(e.max.x-u.x)*c):(n=(e.max.x-u.x)*c,i=(e.min.x-u.x)*c),h>=0?(r=(e.min.y-u.y)*h,o=(e.max.y-u.y)*h):(r=(e.max.y-u.y)*h,o=(e.min.y-u.y)*h),n>o||r>i||((r>n||n!==n)&&(n=r),(o=0?(a=(e.min.z-u.z)*d,l=(e.max.z-u.z)*d):(a=(e.max.z-u.z)*d,l=(e.min.z-u.z)*d),n>l||a>i)||((a>n||n!==n)&&(n=a),(l=0?n:i,t)}intersectsBox(e){return this.intersectBox(e,Nt)!==null}intersectTriangle(e,t,n,i,r){ys.subVectors(t,e),Zi.subVectors(n,e),vs.crossVectors(ys,Zi);let o=this.direction.dot(vs),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;qt.subVectors(this.origin,e);let l=a*this.direction.dot(Zi.crossVectors(qt,Zi));if(l<0)return null;let c=a*this.direction.dot(ys.cross(qt));if(c<0||l+c>o)return null;let h=-a*qt.dot(vs);return h<0?null:this.at(h/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},he=class s{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(e,t,n,i,r,o,a,l,c,h,d,u,p,m,x,y){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=o,g[9]=a,g[13]=l,g[2]=c,g[6]=h,g[10]=d,g[14]=u,g[3]=p,g[7]=m,g[11]=x,g[15]=y,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new s().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,i=1/Sn.setFromMatrixColumn(e,0).length(),r=1/Sn.setFromMatrixColumn(e,1).length(),o=1/Sn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");let t=this.elements,n=e.x,i=e.y,r=e.z,o=Math.cos(n),a=Math.sin(n),l=Math.cos(i),c=Math.sin(i),h=Math.cos(r),d=Math.sin(r);if(e.order==="XYZ"){let u=o*h,p=o*d,m=a*h,x=a*d;t[0]=l*h,t[4]=-l*d,t[8]=c,t[1]=p+m*c,t[5]=u-x*c,t[9]=-a*l,t[2]=x-u*c,t[6]=m+p*c,t[10]=o*l}else if(e.order==="YXZ"){let u=l*h,p=l*d,m=c*h,x=c*d;t[0]=u+x*a,t[4]=m*a-p,t[8]=o*c,t[1]=o*d,t[5]=o*h,t[9]=-a,t[2]=p*a-m,t[6]=x+u*a,t[10]=o*l}else if(e.order==="ZXY"){let u=l*h,p=l*d,m=c*h,x=c*d;t[0]=u-x*a,t[4]=-o*d,t[8]=m+p*a,t[1]=p+m*a,t[5]=o*h,t[9]=x-u*a,t[2]=-o*c,t[6]=a,t[10]=o*l}else if(e.order==="ZYX"){let u=o*h,p=o*d,m=a*h,x=a*d;t[0]=l*h,t[4]=m*c-p,t[8]=u*c+x,t[1]=l*d,t[5]=x*c+u,t[9]=p*c-m,t[2]=-c,t[6]=a*l,t[10]=o*l}else if(e.order==="YZX"){let u=o*l,p=o*c,m=a*l,x=a*c;t[0]=l*h,t[4]=x-u*d,t[8]=m*d+p,t[1]=d,t[5]=o*h,t[9]=-a*h,t[2]=-c*h,t[6]=p*d+m,t[10]=u-x*d}else if(e.order==="XZY"){let u=o*l,p=o*c,m=a*l,x=a*c;t[0]=l*h,t[4]=-d,t[8]=c*h,t[1]=u*d+x,t[5]=o*h,t[9]=p*d-m,t[2]=m*d-p,t[6]=a*h,t[10]=x*d+u}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(nu,e,iu)}lookAt(e,t,n){let i=this.elements;return ft.subVectors(e,t),ft.lengthSq()===0&&(ft.z=1),ft.normalize(),Xt.crossVectors(n,ft),Xt.lengthSq()===0&&(Math.abs(n.z)===1?ft.x+=1e-4:ft.z+=1e-4,ft.normalize(),Xt.crossVectors(n,ft)),Xt.normalize(),Ji.crossVectors(ft,Xt),i[0]=Xt.x,i[4]=Ji.x,i[8]=ft.x,i[1]=Xt.y,i[5]=Ji.y,i[9]=ft.y,i[2]=Xt.z,i[6]=Ji.z,i[10]=ft.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,o=n[0],a=n[4],l=n[8],c=n[12],h=n[1],d=n[5],u=n[9],p=n[13],m=n[2],x=n[6],y=n[10],g=n[14],f=n[3],M=n[7],S=n[11],T=n[15],v=i[0],R=i[4],I=i[8],F=i[12],B=i[1],G=i[5],O=i[9],A=i[13],P=i[2],D=i[6],C=i[10],q=i[14],$=i[3],Z=i[7],se=i[11],re=i[15];return r[0]=o*v+a*B+l*P+c*$,r[4]=o*R+a*G+l*D+c*Z,r[8]=o*I+a*O+l*C+c*se,r[12]=o*F+a*A+l*q+c*re,r[1]=h*v+d*B+u*P+p*$,r[5]=h*R+d*G+u*D+p*Z,r[9]=h*I+d*O+u*C+p*se,r[13]=h*F+d*A+u*q+p*re,r[2]=m*v+x*B+y*P+g*$,r[6]=m*R+x*G+y*D+g*Z,r[10]=m*I+x*O+y*C+g*se,r[14]=m*F+x*A+y*q+g*re,r[3]=f*v+M*B+S*P+T*$,r[7]=f*R+M*G+S*D+T*Z,r[11]=f*I+M*O+S*C+T*se,r[15]=f*F+M*A+S*q+T*re,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],o=e[1],a=e[5],l=e[9],c=e[13],h=e[2],d=e[6],u=e[10],p=e[14],m=e[3],x=e[7],y=e[11],g=e[15];return m*(+r*l*d-i*c*d-r*a*u+n*c*u+i*a*p-n*l*p)+x*(+t*l*p-t*c*u+r*o*u-i*o*p+i*c*h-r*l*h)+y*(+t*c*d-t*a*p-r*o*d+n*o*p+r*a*h-n*c*h)+g*(-i*a*h-t*l*d+t*a*u+i*o*d-n*o*u+n*l*h)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8],d=e[9],u=e[10],p=e[11],m=e[12],x=e[13],y=e[14],g=e[15],f=d*y*c-x*u*c+x*l*p-a*y*p-d*l*g+a*u*g,M=m*u*c-h*y*c-m*l*p+o*y*p+h*l*g-o*u*g,S=h*x*c-m*d*c+m*a*p-o*x*p-h*a*g+o*d*g,T=m*d*l-h*x*l-m*a*u+o*x*u+h*a*y-o*d*y,v=t*f+n*M+i*S+r*T;if(v===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let R=1/v;return e[0]=f*R,e[1]=(x*u*r-d*y*r-x*i*p+n*y*p+d*i*g-n*u*g)*R,e[2]=(a*y*r-x*l*r+x*i*c-n*y*c-a*i*g+n*l*g)*R,e[3]=(d*l*r-a*u*r-d*i*c+n*u*c+a*i*p-n*l*p)*R,e[4]=M*R,e[5]=(h*y*r-m*u*r+m*i*p-t*y*p-h*i*g+t*u*g)*R,e[6]=(m*l*r-o*y*r-m*i*c+t*y*c+o*i*g-t*l*g)*R,e[7]=(o*u*r-h*l*r+h*i*c-t*u*c-o*i*p+t*l*p)*R,e[8]=S*R,e[9]=(m*d*r-h*x*r-m*n*p+t*x*p+h*n*g-t*d*g)*R,e[10]=(o*x*r-m*a*r+m*n*c-t*x*c-o*n*g+t*a*g)*R,e[11]=(h*a*r-o*d*r-h*n*c+t*d*c+o*n*p-t*a*p)*R,e[12]=T*R,e[13]=(h*x*i-m*d*i+m*n*u-t*x*u-h*n*y+t*d*y)*R,e[14]=(m*a*i-o*x*i-m*n*l+t*x*l+o*n*y-t*a*y)*R,e[15]=(o*d*i-h*a*i+h*n*l-t*d*l-o*n*u+t*a*u)*R,this}scale(e){let t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),r=1-n,o=e.x,a=e.y,l=e.z,c=r*o,h=r*a;return this.set(c*o+n,c*a-i*l,c*l+i*a,0,c*a+i*l,h*a+n,h*l-i*o,0,c*l-i*a,h*l+i*o,r*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n){return this.set(1,t,n,0,e,1,n,0,e,t,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,r=t._x,o=t._y,a=t._z,l=t._w,c=r+r,h=o+o,d=a+a,u=r*c,p=r*h,m=r*d,x=o*h,y=o*d,g=a*d,f=l*c,M=l*h,S=l*d,T=n.x,v=n.y,R=n.z;return i[0]=(1-(x+g))*T,i[1]=(p+S)*T,i[2]=(m-M)*T,i[3]=0,i[4]=(p-S)*v,i[5]=(1-(u+g))*v,i[6]=(y+f)*v,i[7]=0,i[8]=(m+M)*R,i[9]=(y-f)*R,i[10]=(1-(u+x))*R,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements,r=Sn.set(i[0],i[1],i[2]).length(),o=Sn.set(i[4],i[5],i[6]).length(),a=Sn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],_t.copy(this);let c=1/r,h=1/o,d=1/a;return _t.elements[0]*=c,_t.elements[1]*=c,_t.elements[2]*=c,_t.elements[4]*=h,_t.elements[5]*=h,_t.elements[6]*=h,_t.elements[8]*=d,_t.elements[9]*=d,_t.elements[10]*=d,t.setFromRotationMatrix(_t),n.x=r,n.y=o,n.z=a,this}makePerspective(e,t,n,i,r,o){o===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");let a=this.elements,l=2*r/(t-e),c=2*r/(n-i),h=(t+e)/(t-e),d=(n+i)/(n-i),u=-(o+r)/(o-r),p=-2*o*r/(o-r);return a[0]=l,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=c,a[9]=d,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,n,i,r,o){let a=this.elements,l=1/(t-e),c=1/(n-i),h=1/(o-r),d=(t+e)*l,u=(n+i)*c,p=(o+r)*h;return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-d,a[1]=0,a[5]=2*c,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}};he.prototype.isMatrix4=!0;var Sn=new b,_t=new he,nu=new b(0,0,0),iu=new b(1,1,1),Xt=new b,Ji=new b,ft=new b,Ja=new he,ja=new Ke,Vn=class s{constructor(e=0,t=0,n=0,i=s.DefaultOrder){this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._order=i||this._order,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t,n){let i=e.elements,r=i[0],o=i[4],a=i[8],l=i[1],c=i[5],h=i[9],d=i[2],u=i[6],p=i[10];switch(t=t||this._order,t){case"XYZ":this._y=Math.asin(ht(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,p),this._z=Math.atan2(-o,r)):(this._x=Math.atan2(u,c),this._z=0);break;case"YXZ":this._x=Math.asin(-ht(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-d,r),this._z=0);break;case"ZXY":this._x=Math.asin(ht(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-d,p),this._z=Math.atan2(-o,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-ht(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(u,p),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-o,c));break;case"YZX":this._z=Math.asin(ht(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-d,r)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-ht(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(u,c),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-h,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n!==!1&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Ja.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Ja,t,n)}setFromVector3(e,t){return this.set(e.x,e.y,e.z,t||this._order)}reorder(e){return ja.setFromEuler(this),this.setFromQuaternion(ja,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}toVector3(e){return e?e.set(this._x,this._y,this._z):new b(this._x,this._y,this._z)}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};Vn.prototype.isEuler=!0;Vn.DefaultOrder="XYZ";Vn.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];var Ys=class{constructor(){this.mask=1}set(e){this.mask=1<1){for(let t=0;t1){for(let n=0;n0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(n.geometries=a),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),d.length>0&&(n.shapes=d),u.length>0&&(n.skeletons=u),p.length>0&&(n.animations=p)}return n.object=i,n;function o(a){let l=[];for(let c in a){let h=a[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n1?null:t.copy(n).multiplyScalar(r).add(e.start)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e===void 0&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),e=new b),e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||cu.getNormalMatrix(e),i=this.coplanarPoint(_s).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}};mt.prototype.isPlane=!0;var wt=new b,zt=new b,ws=new b,Ot=new b,Tn=new b,An=new b,nl=new b,bs=new b,Ms=new b,Ss=new b,tt=class s{constructor(e=new b,t=new b,n=new b){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i===void 0&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new b),i.subVectors(n,t),wt.subVectors(e,t),i.cross(wt);let r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){wt.subVectors(i,t),zt.subVectors(n,t),ws.subVectors(e,t);let o=wt.dot(wt),a=wt.dot(zt),l=wt.dot(ws),c=zt.dot(zt),h=zt.dot(ws),d=o*c-a*a;if(r===void 0&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new b),d===0)return r.set(-2,-1,-1);let u=1/d,p=(c*l-a*h)*u,m=(o*h-a*l)*u;return r.set(1-p-m,m,p)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,Ot),Ot.x>=0&&Ot.y>=0&&Ot.x+Ot.y<=1}static getUV(e,t,n,i,r,o,a,l){return this.getBarycoord(e,t,n,i,Ot),l.set(0,0),l.addScaledVector(r,Ot.x),l.addScaledVector(o,Ot.y),l.addScaledVector(a,Ot.z),l}static isFrontFacing(e,t,n,i){return wt.subVectors(n,t),zt.subVectors(e,t),wt.cross(zt).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return wt.subVectors(this.c,this.b),zt.subVectors(this.a,this.b),wt.cross(zt).length()*.5}getMidpoint(e){return e===void 0&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new b),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return s.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e===void 0&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new mt),e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return s.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,n,i,r){return s.getUV(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return s.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return s.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){t===void 0&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new b);let n=this.a,i=this.b,r=this.c,o,a;Tn.subVectors(i,n),An.subVectors(r,n),bs.subVectors(e,n);let l=Tn.dot(bs),c=An.dot(bs);if(l<=0&&c<=0)return t.copy(n);Ms.subVectors(e,i);let h=Tn.dot(Ms),d=An.dot(Ms);if(h>=0&&d<=h)return t.copy(i);let u=l*d-h*c;if(u<=0&&l>=0&&h<=0)return o=l/(l-h),t.copy(n).addScaledVector(Tn,o);Ss.subVectors(e,r);let p=Tn.dot(Ss),m=An.dot(Ss);if(m>=0&&p<=m)return t.copy(r);let x=p*c-l*m;if(x<=0&&c>=0&&m<=0)return a=c/(c-m),t.copy(n).addScaledVector(An,a);let y=h*m-p*d;if(y<=0&&d-h>=0&&p-m>=0)return nl.subVectors(r,i),a=(d-h)/(d-h+(p-m)),t.copy(i).addScaledVector(nl,a);let g=1/(y+x+u);return o=x*g,a=u*g,t.copy(n).addScaledVector(Tn,o).addScaledVector(An,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},hu=0;function $e(){Object.defineProperty(this,"id",{value:hu++}),this.uuid=Tt(),this.name="",this.type="Material",this.fog=!0,this.blending=_i,this.side=es,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=ql,this.blendDst=Xl,this.blendEquation=On,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=ks,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=jh,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=ls,this.stencilZFail=ls,this.stencilZPass=ls,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaTest=0,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0}$e.prototype=Object.assign(Object.create(Gt.prototype),{constructor:$e,isMaterial:!0,onBuild:function(){},onBeforeCompile:function(){},customProgramCacheKey:function(){return this.onBeforeCompile.toString()},setValues:function(s){if(s!==void 0)for(let e in s){let t=s[e];if(t===void 0){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}if(e==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=t===Wl;continue}let n=this[e];if(n===void 0){console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.");continue}n&&n.isColor?n.set(t):n&&n.isVector3&&t&&t.isVector3?n.copy(t):this[e]=t}},toJSON:function(s){let e=s===void 0||typeof s=="string";e&&(s={textures:{},images:{}});let t={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.color&&this.color.isColor&&(t.color=this.color.getHex()),this.roughness!==void 0&&(t.roughness=this.roughness),this.metalness!==void 0&&(t.metalness=this.metalness),this.sheen&&this.sheen.isColor&&(t.sheen=this.sheen.getHex()),this.emissive&&this.emissive.isColor&&(t.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(t.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(t.specular=this.specular.getHex()),this.shininess!==void 0&&(t.shininess=this.shininess),this.clearcoat!==void 0&&(t.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(t.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(t.clearcoatMap=this.clearcoatMap.toJSON(s).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(t.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(s).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(t.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(s).uuid,t.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(t.map=this.map.toJSON(s).uuid),this.matcap&&this.matcap.isTexture&&(t.matcap=this.matcap.toJSON(s).uuid),this.alphaMap&&this.alphaMap.isTexture&&(t.alphaMap=this.alphaMap.toJSON(s).uuid),this.lightMap&&this.lightMap.isTexture&&(t.lightMap=this.lightMap.toJSON(s).uuid,t.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(t.aoMap=this.aoMap.toJSON(s).uuid,t.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(t.bumpMap=this.bumpMap.toJSON(s).uuid,t.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(t.normalMap=this.normalMap.toJSON(s).uuid,t.normalMapType=this.normalMapType,t.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(t.displacementMap=this.displacementMap.toJSON(s).uuid,t.displacementScale=this.displacementScale,t.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(t.roughnessMap=this.roughnessMap.toJSON(s).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(t.metalnessMap=this.metalnessMap.toJSON(s).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(t.emissiveMap=this.emissiveMap.toJSON(s).uuid),this.specularMap&&this.specularMap.isTexture&&(t.specularMap=this.specularMap.toJSON(s).uuid),this.envMap&&this.envMap.isTexture&&(t.envMap=this.envMap.toJSON(s).uuid,this.combine!==void 0&&(t.combine=this.combine)),this.envMapIntensity!==void 0&&(t.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(t.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(t.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(t.gradientMap=this.gradientMap.toJSON(s).uuid),this.size!==void 0&&(t.size=this.size),this.shadowSide!==null&&(t.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(t.sizeAttenuation=this.sizeAttenuation),this.blending!==_i&&(t.blending=this.blending),this.side!==es&&(t.side=this.side),this.vertexColors&&(t.vertexColors=!0),this.opacity<1&&(t.opacity=this.opacity),this.transparent===!0&&(t.transparent=this.transparent),t.depthFunc=this.depthFunc,t.depthTest=this.depthTest,t.depthWrite=this.depthWrite,t.colorWrite=this.colorWrite,t.stencilWrite=this.stencilWrite,t.stencilWriteMask=this.stencilWriteMask,t.stencilFunc=this.stencilFunc,t.stencilRef=this.stencilRef,t.stencilFuncMask=this.stencilFuncMask,t.stencilFail=this.stencilFail,t.stencilZFail=this.stencilZFail,t.stencilZPass=this.stencilZPass,this.rotation&&this.rotation!==0&&(t.rotation=this.rotation),this.polygonOffset===!0&&(t.polygonOffset=!0),this.polygonOffsetFactor!==0&&(t.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(t.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&this.linewidth!==1&&(t.linewidth=this.linewidth),this.dashSize!==void 0&&(t.dashSize=this.dashSize),this.gapSize!==void 0&&(t.gapSize=this.gapSize),this.scale!==void 0&&(t.scale=this.scale),this.dithering===!0&&(t.dithering=!0),this.alphaTest>0&&(t.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(t.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(t.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(t.wireframe=this.wireframe),this.wireframeLinewidth>1&&(t.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(t.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(t.wireframeLinejoin=this.wireframeLinejoin),this.morphTargets===!0&&(t.morphTargets=!0),this.morphNormals===!0&&(t.morphNormals=!0),this.skinning===!0&&(t.skinning=!0),this.flatShading===!0&&(t.flatShading=this.flatShading),this.visible===!1&&(t.visible=!1),this.toneMapped===!1&&(t.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(t.userData=this.userData);function n(i){let r=[];for(let o in i){let a=i[o];delete a.metadata,r.push(a)}return r}if(e){let i=n(s.textures),r=n(s.images);i.length>0&&(t.textures=i),r.length>0&&(t.images=r)}return t},clone:function(){return new this.constructor().copy(this)},copy:function(s){this.name=s.name,this.fog=s.fog,this.blending=s.blending,this.side=s.side,this.vertexColors=s.vertexColors,this.opacity=s.opacity,this.transparent=s.transparent,this.blendSrc=s.blendSrc,this.blendDst=s.blendDst,this.blendEquation=s.blendEquation,this.blendSrcAlpha=s.blendSrcAlpha,this.blendDstAlpha=s.blendDstAlpha,this.blendEquationAlpha=s.blendEquationAlpha,this.depthFunc=s.depthFunc,this.depthTest=s.depthTest,this.depthWrite=s.depthWrite,this.stencilWriteMask=s.stencilWriteMask,this.stencilFunc=s.stencilFunc,this.stencilRef=s.stencilRef,this.stencilFuncMask=s.stencilFuncMask,this.stencilFail=s.stencilFail,this.stencilZFail=s.stencilZFail,this.stencilZPass=s.stencilZPass,this.stencilWrite=s.stencilWrite;let e=s.clippingPlanes,t=null;if(e!==null){let n=e.length;t=new Array(n);for(let i=0;i!==n;++i)t[i]=e[i].clone()}return this.clippingPlanes=t,this.clipIntersection=s.clipIntersection,this.clipShadows=s.clipShadows,this.shadowSide=s.shadowSide,this.colorWrite=s.colorWrite,this.precision=s.precision,this.polygonOffset=s.polygonOffset,this.polygonOffsetFactor=s.polygonOffsetFactor,this.polygonOffsetUnits=s.polygonOffsetUnits,this.dithering=s.dithering,this.alphaTest=s.alphaTest,this.alphaToCoverage=s.alphaToCoverage,this.premultipliedAlpha=s.premultipliedAlpha,this.visible=s.visible,this.toneMapped=s.toneMapped,this.userData=JSON.parse(JSON.stringify(s.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Object.defineProperty($e.prototype,"needsUpdate",{set:function(s){s===!0&&this.version++}});var ec={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},bt={h:0,s:0,l:0},$i={h:0,s:0,l:0};function Es(s,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?s+(e-s)*6*t:t<1/2?e:t<2/3?s+(e-s)*6*(2/3-t):s}function Ts(s){return s<.04045?s*.0773993808:Math.pow(s*.9478672986+.0521327014,2.4)}function As(s){return s<.0031308?s*12.92:1.055*Math.pow(s,.41666)-.055}var ae=class{constructor(e,t,n){return t===void 0&&n===void 0?this.set(e):this.setRGB(e,t,n)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,this}setRGB(e,t,n){return this.r=e,this.g=t,this.b=n,this}setHSL(e,t,n){if(e=$h(e,1),t=ht(t,0,1),n=ht(n,0,1),t===0)this.r=this.g=this.b=n;else{let i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=Es(r,i,e+1/3),this.g=Es(r,i,e),this.b=Es(r,i,e-1/3)}return this}setStyle(e){function t(i){i!==void 0&&parseFloat(i)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let n;if(n=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let i,r=n[1],o=n[2];switch(r){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(i[1],10))/255,this.g=Math.min(255,parseInt(i[2],10))/255,this.b=Math.min(255,parseInt(i[3],10))/255,t(i[4]),this;if(i=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(i[1],10))/100,this.g=Math.min(100,parseInt(i[2],10))/100,this.b=Math.min(100,parseInt(i[3],10))/100,t(i[4]),this;break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){let a=parseFloat(i[1])/360,l=parseInt(i[2],10)/100,c=parseInt(i[3],10)/100;return t(i[4]),this.setHSL(a,l,c)}break}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(e)){let i=n[1],r=i.length;if(r===3)return this.r=parseInt(i.charAt(0)+i.charAt(0),16)/255,this.g=parseInt(i.charAt(1)+i.charAt(1),16)/255,this.b=parseInt(i.charAt(2)+i.charAt(2),16)/255,this;if(r===6)return this.r=parseInt(i.charAt(0)+i.charAt(1),16)/255,this.g=parseInt(i.charAt(2)+i.charAt(3),16)/255,this.b=parseInt(i.charAt(4)+i.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this}setColorName(e){let t=ec[e.toLowerCase()];return t!==void 0?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copyGammaToLinear(e,t=2){return this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this}copyLinearToGamma(e,t=2){let n=t>0?1/t:1;return this.r=Math.pow(e.r,n),this.g=Math.pow(e.g,n),this.b=Math.pow(e.b,n),this}convertGammaToLinear(e){return this.copyGammaToLinear(this,e),this}convertLinearToGamma(e){return this.copyLinearToGamma(this,e),this}copySRGBToLinear(e){return this.r=Ts(e.r),this.g=Ts(e.g),this.b=Ts(e.b),this}copyLinearToSRGB(e){return this.r=As(e.r),this.g=As(e.g),this.b=As(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return this.r*255<<16^this.g*255<<8^this.b*255<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(e){e===void 0&&(console.warn("THREE.Color: .getHSL() target is now required"),e={h:0,s:0,l:0});let t=this.r,n=this.g,i=this.b,r=Math.max(t,n,i),o=Math.min(t,n,i),a,l,c=(o+r)/2;if(o===r)a=0,l=0;else{let h=r-o;switch(l=c<=.5?h/(r+o):h/(2-r-o),r){case t:a=(n-i)/h+(ne&&(e=s[t]);return e}var uu=0,Lt=new he,Ls=new Ie,Ln=new b,pt=new ut,hi=new ut,Je=new b,ze=class s extends Gt{constructor(){super(),Object.defineProperty(this,"id",{value:uu++}),this.uuid=Tt(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(tc(e)>65535?Cr:Rr)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let n=this.attributes.normal;if(n!==void 0){let r=new Ze().getNormalMatrix(e);n.applyNormalMatrix(r),n.needsUpdate=!0}let i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(e),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}rotateX(e){return Lt.makeRotationX(e),this.applyMatrix4(Lt),this}rotateY(e){return Lt.makeRotationY(e),this.applyMatrix4(Lt),this}rotateZ(e){return Lt.makeRotationZ(e),this.applyMatrix4(Lt),this}translate(e,t,n){return Lt.makeTranslation(e,t,n),this.applyMatrix4(Lt),this}scale(e,t,n){return Lt.makeScale(e,t,n),this.applyMatrix4(Lt),this}lookAt(e){return Ls.lookAt(e),Ls.updateMatrix(),this.applyMatrix4(Ls.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ln).negate(),this.translate(Ln.x,Ln.y,Ln.z),this}setFromPoints(e){let t=[];for(let n=0,i=e.length;n0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let l in n){let c=n[l];e.data.attributes[l]=c.toJSON(e.data)}let i={},r=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],h=[];for(let d=0,u=c.length;d0&&(i[l]=h,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new s().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;n!==null&&this.setIndex(n.clone(t));let i=e.attributes;for(let c in i){let h=i[c];this.setAttribute(c,h.clone(t))}let r=e.morphAttributes;for(let c in r){let h=[],d=r[c];for(let u=0,p=d.length;u0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(e,t){let n=this.geometry,i=this.material,r=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),Rs.copy(n.boundingSphere),Rs.applyMatrix4(r),e.ray.intersectsSphere(Rs)===!1)||(il.copy(r).invert(),Rn.copy(e.ray).applyMatrix4(il),n.boundingBox!==null&&Rn.intersectsBox(n.boundingBox)===!1))return;let o;if(n.isBufferGeometry){let a=n.index,l=n.attributes.position,c=n.morphAttributes.position,h=n.morphTargetsRelative,d=n.attributes.uv,u=n.attributes.uv2,p=n.groups,m=n.drawRange;if(a!==null)if(Array.isArray(i))for(let x=0,y=p.length;xt.far?null:{distance:c,point:sr.clone(),object:s}}function or(s,e,t,n,i,r,o,a,l,c,h,d){Yt.fromBufferAttribute(i,c),Zt.fromBufferAttribute(i,h),Jt.fromBufferAttribute(i,d);let u=s.morphTargetInfluences;if(e.morphTargets&&r&&u){Ki.set(0,0,0),er.set(0,0,0),tr.set(0,0,0);for(let m=0,x=r.length;m0?1:-1,h.push(Z.x,Z.y,Z.z),d.push(ue/R),d.push(1-se/I),q+=1}}for(let se=0;se0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}};kt.prototype.isShaderMaterial=!0;var Pi=class extends Ie{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new he,this.projectionMatrix=new he,this.projectionMatrixInverse=new he}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){e===void 0&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),e=new b),this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}};Pi.prototype.isCamera=!0;var st=class extends Pi{constructor(e=50,t=1,n=.1,i=2e3){super(),this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=qs*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(cs*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return qs*2*Math.atan(Math.tan(cs*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,n,i,r,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(cs*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let l=o.fullWidth,c=o.fullHeight;r+=o.offsetX*i/l,t-=o.offsetY*n/c,i*=o.width/l,n*=o.height/c}let a=this.filmOffset;a!==0&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}};st.prototype.isPerspectiveCamera=!0;var Cn=90,Pn=1,Ii=class extends Ie{constructor(e,t,n){if(super(),this.type="CubeCamera",n.isWebGLCubeRenderTarget!==!0){console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");return}this.renderTarget=n;let i=new st(Cn,Pn,e,t);i.layers=this.layers,i.up.set(0,-1,0),i.lookAt(new b(1,0,0)),this.add(i);let r=new st(Cn,Pn,e,t);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new b(-1,0,0)),this.add(r);let o=new st(Cn,Pn,e,t);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(new b(0,1,0)),this.add(o);let a=new st(Cn,Pn,e,t);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new b(0,-1,0)),this.add(a);let l=new st(Cn,Pn,e,t);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new b(0,0,1)),this.add(l);let c=new st(Cn,Pn,e,t);c.layers=this.layers,c.up.set(0,-1,0),c.lookAt(new b(0,0,-1)),this.add(c)}update(e,t){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,r,o,a,l,c]=this.children,h=e.xr.enabled,d=e.getRenderTarget();e.xr.enabled=!1;let u=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0),e.render(t,i),e.setRenderTarget(n,1),e.render(t,r),e.setRenderTarget(n,2),e.render(t,o),e.setRenderTarget(n,3),e.render(t,a),e.setRenderTarget(n,4),e.render(t,l),n.texture.generateMipmaps=u,e.setRenderTarget(n,5),e.render(t,c),e.setRenderTarget(d),e.xr.enabled=h}},qn=class extends nt{constructor(e,t,n,i,r,o,a,l,c,h){e=e!==void 0?e:[],t=t!==void 0?t:aa,a=a!==void 0?a:mn,super(e,t,n,i,r,o,a,l,c,h),this._needsFlipEnvMap=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}};qn.prototype.isCubeTexture=!0;var Pr=class extends Ut{constructor(e,t,n){Number.isInteger(t)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),t=n),super(e,e,t),t=t||{},this.texture=new qn(void 0,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:gt,this.texture._needsFlipEnvMap=!1}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.format=Et,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},i=new Ci(5,5,5),r=new kt({name:"CubemapFromEquirect",uniforms:Wn(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:je,blending:vi});r.uniforms.tEquirect.value=t;let o=new at(i,r),a=t.minFilter;return t.minFilter===ua&&(t.minFilter=gt),new Ii(1,10,this).update(e,o),t.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,n,i){let r=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,n,i);e.setRenderTarget(r)}};Pr.prototype.isWebGLCubeRenderTarget=!0;var Ir=class extends nt{constructor(e,t,n,i,r,o,a,l,c,h,d,u){super(null,o,a,l,c,h,i,r,d,u),this.image={data:e||null,width:t||1,height:n||1},this.magFilter=c!==void 0?c:ot,this.minFilter=h!==void 0?h:ot,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}};Ir.prototype.isDataTexture=!0;var In=new tn,ar=new b,Xn=class{constructor(e=new mt,t=new mt,n=new mt,i=new mt,r=new mt,o=new mt){this.planes=[e,t,n,i,r,o]}set(e,t,n,i,r,o){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(n),a[3].copy(i),a[4].copy(r),a[5].copy(o),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e){let t=this.planes,n=e.elements,i=n[0],r=n[1],o=n[2],a=n[3],l=n[4],c=n[5],h=n[6],d=n[7],u=n[8],p=n[9],m=n[10],x=n[11],y=n[12],g=n[13],f=n[14],M=n[15];return t[0].setComponents(a-i,d-l,x-u,M-y).normalize(),t[1].setComponents(a+i,d+l,x+u,M+y).normalize(),t[2].setComponents(a+r,d+c,x+p,M+g).normalize(),t[3].setComponents(a-r,d-c,x-p,M-g).normalize(),t[4].setComponents(a-o,d-h,x-m,M-f).normalize(),t[5].setComponents(a+o,d+h,x+m,M+f).normalize(),this}intersectsObject(e){let t=e.geometry;return t.boundingSphere===null&&t.computeBoundingSphere(),In.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(In)}intersectsSprite(e){return In.center.set(0,0,0),In.radius=.7071067811865476,In.applyMatrix4(e.matrixWorld),this.intersectsSphere(In)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(n)0?e.max.x:e.min.x,ar.y=i.normal.y>0?e.max.y:e.min.y,ar.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(ar)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function nc(){let s=null,e=!1,t=null,n=null;function i(r,o){t(r,o),n=s.requestAnimationFrame(i)}return{start:function(){e!==!0&&t!==null&&(n=s.requestAnimationFrame(i),e=!0)},stop:function(){s.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(r){t=r},setContext:function(r){s=r}}}function gu(s,e){let t=e.isWebGL2,n=new WeakMap;function i(c,h){let d=c.array,u=c.usage,p=s.createBuffer();s.bindBuffer(h,p),s.bufferData(h,d,u),c.onUploadCallback();let m=5126;return d instanceof Float32Array?m=5126:d instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):d instanceof Uint16Array?c.isFloat16BufferAttribute?t?m=5131:console.warn("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."):m=5123:d instanceof Int16Array?m=5122:d instanceof Uint32Array?m=5125:d instanceof Int32Array?m=5124:d instanceof Int8Array?m=5120:d instanceof Uint8Array&&(m=5121),{buffer:p,type:m,bytesPerElement:d.BYTES_PER_ELEMENT,version:c.version}}function r(c,h,d){let u=h.array,p=h.updateRange;s.bindBuffer(d,c),p.count===-1?s.bufferSubData(d,0,u):(t?s.bufferSubData(d,p.offset*u.BYTES_PER_ELEMENT,u,p.offset,p.count):s.bufferSubData(d,p.offset*u.BYTES_PER_ELEMENT,u.subarray(p.offset,p.offset+p.count)),p.count=-1)}function o(c){return c.isInterleavedBufferAttribute&&(c=c.data),n.get(c)}function a(c){c.isInterleavedBufferAttribute&&(c=c.data);let h=n.get(c);h&&(s.deleteBuffer(h.buffer),n.delete(c))}function l(c,h){if(c.isGLBufferAttribute){let u=n.get(c);(!u||u.version 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +#else + if( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; +#endif +} +vec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) { + float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH ); + return ( 1.0 - specularColor ) * fresnel + specularColor; +} +vec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) { + float fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV ); + vec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0; + return Fr * fresnel + F0; +} +float G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + return 1.0 / ( gl * gv ); +} +float G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +vec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) { + float alpha = pow2( roughness ); + vec3 halfDir = normalize( incidentLight.direction + viewDir ); + float dotNL = saturate( dot( normal, incidentLight.direction ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotLH = saturate( dot( incidentLight.direction, halfDir ) ); + vec3 F = F_Schlick( specularColor, dotLH ); + float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( G * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +vec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + vec2 brdf = integrateSpecularBRDF( dotNV, roughness ); + return specularColor * brdf.x + brdf.y; +} +void BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { + float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) ); + vec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness ); + vec2 brdf = integrateSpecularBRDF( dotNV, roughness ); + vec3 FssEss = F * brdf.x + brdf.y; + float Ess = brdf.x + brdf.y; + float Ems = 1.0 - Ess; + vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +float G_BlinnPhong_Implicit( ) { + return 0.25; +} +float D_BlinnPhong( const in float shininess, const in float dotNH ) { + return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); +} +vec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) { + vec3 halfDir = normalize( incidentLight.direction + geometry.viewDir ); + float dotNH = saturate( dot( geometry.normal, halfDir ) ); + float dotLH = saturate( dot( incidentLight.direction, halfDir ) ); + vec3 F = F_Schlick( specularColor, dotLH ); + float G = G_BlinnPhong_Implicit( ); + float D = D_BlinnPhong( shininess, dotNH ); + return F * ( G * D ); +} +float GGXRoughnessToBlinnExponent( const in float ggxRoughness ) { + return ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 ); +} +float BlinnExponentToGGXRoughness( const in float blinnExponent ) { + return sqrt( 2.0 / ( blinnExponent + 2.0 ) ); +} +#if defined( USE_SHEEN ) +float D_Charlie(float roughness, float NoH) { + float invAlpha = 1.0 / roughness; + float cos2h = NoH * NoH; + float sin2h = max(1.0 - cos2h, 0.0078125); return (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI); +} +float V_Neubelt(float NoV, float NoL) { + return saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV))); +} +vec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) { + vec3 N = geometry.normal; + vec3 V = geometry.viewDir; + vec3 H = normalize( V + L ); + float dotNH = saturate( dot( N, H ) ); + return specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) ); +} +#endif`,Eu=`#ifdef USE_BUMPMAP + uniform sampler2D bumpMap; + uniform float bumpScale; + vec2 dHdxy_fwd() { + vec2 dSTdx = dFdx( vUv ); + vec2 dSTdy = dFdy( vUv ); + float Hll = bumpScale * texture2D( bumpMap, vUv ).x; + float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll; + float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll; + return vec2( dBx, dBy ); + } + vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { + vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) ); + vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) ); + vec3 vN = surf_norm; + vec3 R1 = cross( vSigmaY, vN ); + vec3 R2 = cross( vN, vSigmaX ); + float fDet = dot( vSigmaX, R1 ) * faceDirection; + vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); + return normalize( abs( fDet ) * surf_norm - vGrad ); + } +#endif`,Tu=`#if NUM_CLIPPING_PLANES > 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`,Au=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,Lu=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,Ru=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,Cu=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,Pu=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,Iu=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`,Du=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`,Fu=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate(a) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement(a) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract(sin(sn) * c); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); } + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +struct GeometricContext { + vec3 position; + vec3 normal; + vec3 viewDir; +#ifdef CLEARCOAT + vec3 clearcoatNormal; +#endif +}; +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +vec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) { + float distance = dot( planeNormal, point - pointOnPlane ); + return - distance * planeNormal + point; +} +float sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) { + return sign( dot( point - pointOnPlane, planeNormal ) ); +} +vec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) { + return lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine; +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float linearToRelativeLuminance( const in vec3 color ) { + vec3 weights = vec3( 0.2126, 0.7152, 0.0722 ); + return dot( weights, color.rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +}`,Nu=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_maxMipLevel 8.0 + #define cubeUV_minMipLevel 4.0 + #define cubeUV_maxTileSize 256.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize ); + vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ); + vec2 f = fract( uv ); + uv += 0.5 - f; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + if ( mipInt < cubeUV_maxMipLevel ) { + uv.y += 2.0 * cubeUV_maxTileSize; + } + uv.y += filterInt * 2.0 * cubeUV_minTileSize; + uv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize ); + uv *= texelSize; + vec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb; + uv.x += texelSize; + vec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb; + uv.y += texelSize; + vec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb; + uv.x -= texelSize; + vec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb; + vec3 tm = mix( tl, tr, f.x ); + vec3 bm = mix( bl, br, f.x ); + return mix( tm, bm, f.y ); + } + #define r0 1.0 + #define v0 0.339 + #define m0 - 2.0 + #define r1 0.8 + #define v1 0.276 + #define m1 - 1.0 + #define r4 0.4 + #define v4 0.046 + #define m4 2.0 + #define r5 0.305 + #define v5 0.016 + #define m5 3.0 + #define r6 0.21 + #define v6 0.0038 + #define m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= r1 ) { + mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0; + } else if ( roughness >= r4 ) { + mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1; + } else if ( roughness >= r5 ) { + mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4; + } else if ( roughness >= r6 ) { + mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,Bu=`vec3 transformedNormal = objectNormal; +#ifdef USE_INSTANCING + mat3 m = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); + transformedNormal = m * transformedNormal; +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,zu=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,Ou=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias ); +#endif`,Uu=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vUv ); + emissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb; + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,Hu=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,Gu="gl_FragColor = linearToOutputTexel( gl_FragColor );",ku=` +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 GammaToLinear( in vec4 value, in float gammaFactor ) { + return vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a ); +} +vec4 LinearToGamma( in vec4 value, in float gammaFactor ) { + return vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a ); +} +vec4 sRGBToLinear( in vec4 value ) { + return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); +} +vec4 LinearTosRGB( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +} +vec4 RGBEToLinear( in vec4 value ) { + return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 ); +} +vec4 LinearToRGBE( in vec4 value ) { + float maxComponent = max( max( value.r, value.g ), value.b ); + float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 ); + return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 ); +} +vec4 RGBMToLinear( in vec4 value, in float maxRange ) { + return vec4( value.rgb * value.a * maxRange, 1.0 ); +} +vec4 LinearToRGBM( in vec4 value, in float maxRange ) { + float maxRGB = max( value.r, max( value.g, value.b ) ); + float M = clamp( maxRGB / maxRange, 0.0, 1.0 ); + M = ceil( M * 255.0 ) / 255.0; + return vec4( value.rgb / ( M * maxRange ), M ); +} +vec4 RGBDToLinear( in vec4 value, in float maxRange ) { + return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 ); +} +vec4 LinearToRGBD( in vec4 value, in float maxRange ) { + float maxRGB = max( value.r, max( value.g, value.b ) ); + float D = max( maxRange / maxRGB, 1.0 ); + D = clamp( floor( D ) / 255.0, 0.0, 1.0 ); + return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D ); +} +const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 ); +vec4 LinearToLogLuv( in vec4 value ) { + vec3 Xp_Y_XYZp = cLogLuvM * value.rgb; + Xp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) ); + vec4 vResult; + vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z; + float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0; + vResult.w = fract( Le ); + vResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0; + return vResult; +} +const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 ); +vec4 LogLuvToLinear( in vec4 value ) { + float Le = value.z * 255.0 + value.w; + vec3 Xp_Y_XYZp; + Xp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 ); + Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y; + Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z; + vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb; + return vec4( max( vRGB, 0.0 ), 1.0 ); +}`,Vu=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifndef ENVMAP_TYPE_CUBE_UV + envColor = envMapTexelToLinear( envColor ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,Wu=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform int maxMipLevel; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,qu=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,Xu=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,Yu=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,Zu=`#ifdef USE_FOG + fogDepth = - mvPosition.z; +#endif`,Ju=`#ifdef USE_FOG + varying float fogDepth; +#endif`,ju=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, fogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,$u=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float fogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,Qu=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return texture2D( gradientMap, coord ).rgb; + #else + return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 ); + #endif +}`,Ku=`#ifdef USE_LIGHTMAP + vec4 lightMapTexel= texture2D( lightMap, vUv2 ); + reflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity; +#endif`,ed=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,td=`vec3 diffuse = vec3( 1.0 ); +GeometricContext geometry; +geometry.position = mvPosition.xyz; +geometry.normal = normalize( transformedNormal ); +geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz ); +GeometricContext backGeometry; +backGeometry.position = geometry.position; +backGeometry.normal = -geometry.normal; +backGeometry.viewDir = geometry.viewDir; +vLightFront = vec3( 0.0 ); +vIndirectFront = vec3( 0.0 ); +#ifdef DOUBLE_SIDED + vLightBack = vec3( 0.0 ); + vIndirectBack = vec3( 0.0 ); +#endif +IncidentLight directLight; +float dotNL; +vec3 directLightColor_Diffuse; +vIndirectFront += getAmbientLightIrradiance( ambientLightColor ); +vIndirectFront += getLightProbeIrradiance( lightProbe, geometry ); +#ifdef DOUBLE_SIDED + vIndirectBack += getAmbientLightIrradiance( ambientLightColor ); + vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry ); +#endif +#if NUM_POINT_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + getPointDirectLightIrradiance( pointLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = PI * directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( -dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_SPOT_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + getSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = PI * directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( -dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_DIR_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + getDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight ); + dotNL = dot( geometry.normal, directLight.direction ); + directLightColor_Diffuse = PI * directLight.color; + vLightFront += saturate( dotNL ) * directLightColor_Diffuse; + #ifdef DOUBLE_SIDED + vLightBack += saturate( -dotNL ) * directLightColor_Diffuse; + #endif + } + #pragma unroll_loop_end +#endif +#if NUM_HEMI_LIGHTS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry ); + #ifdef DOUBLE_SIDED + vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry ); + #endif + } + #pragma unroll_loop_end +#endif`,nd=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +uniform vec3 lightProbe[ 9 ]; +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) { + vec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + #ifndef PHYSICALLY_CORRECT_LIGHTS + irradiance *= PI; + #endif + return irradiance; +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) { + directLight.color = directionalLight.color; + directLight.direction = directionalLight.direction; + directLight.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) { + vec3 lVector = pointLight.position - geometry.position; + directLight.direction = normalize( lVector ); + float lightDistance = length( lVector ); + directLight.color = pointLight.color; + directLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay ); + directLight.visible = ( directLight.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) { + vec3 lVector = spotLight.position - geometry.position; + directLight.direction = normalize( lVector ); + float lightDistance = length( lVector ); + float angleCos = dot( directLight.direction, spotLight.direction ); + if ( angleCos > spotLight.coneCos ) { + float spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + directLight.color = spotLight.color; + directLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay ); + directLight.visible = true; + } else { + directLight.color = vec3( 0.0 ); + directLight.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) { + float dotNL = dot( geometry.normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + #ifndef PHYSICALLY_CORRECT_LIGHTS + irradiance *= PI; + #endif + return irradiance; + } +#endif`,id=`#if defined( USE_ENVMAP ) + #ifdef ENVMAP_MODE_REFRACTION + uniform float refractionRatio; + #endif + vec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) { + vec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix ); + #ifdef ENVMAP_TYPE_CUBE + vec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz ); + #ifdef TEXTURE_LOD_EXT + vec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) ); + #else + vec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) ); + #endif + envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb; + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + #else + vec4 envMapColor = vec4( 0.0 ); + #endif + return PI * envMapColor.rgb * envMapIntensity; + } + float getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) { + float maxMIPLevelScalar = float( maxMIPLevel ); + float sigma = PI * roughness * roughness / ( 1.0 + roughness ); + float desiredMIPLevel = maxMIPLevelScalar + log2( sigma ); + return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar ); + } + vec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) { + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( -viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + #else + vec3 reflectVec = refract( -viewDir, normal, refractionRatio ); + #endif + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + float specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel ); + #ifdef ENVMAP_TYPE_CUBE + vec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz ); + #ifdef TEXTURE_LOD_EXT + vec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel ); + #else + vec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel ); + #endif + envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb; + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + #endif + return envMapColor.rgb * envMapIntensity; + } +#endif`,rd=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,sd=`varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color; + #ifndef PHYSICALLY_CORRECT_LIGHTS + irradiance *= PI; + #endif + reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon +#define Material_LightProbeLOD( material ) (0)`,od=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,ad=`varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifndef PHYSICALLY_CORRECT_LIGHTS + irradiance *= PI; + #endif + reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong +#define Material_LightProbeLOD( material ) (0)`,ld=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness; +material.specularRoughness = min( material.specularRoughness, 1.0 ); +#ifdef REFLECTIVITY + material.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor ); +#endif +#ifdef CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_SHEEN + material.sheenColor = sheen; +#endif`,cd=`struct PhysicalMaterial { + vec3 diffuseColor; + float specularRoughness; + vec3 specularColor; +#ifdef CLEARCOAT + float clearcoat; + float clearcoatRoughness; +#endif +#ifdef USE_SHEEN + vec3 sheenColor; +#endif +}; +#define MAXIMUM_SPECULAR_COEFFICIENT 0.16 +#define DEFAULT_SPECULAR_COEFFICIENT 0.04 +float clearcoatDHRApprox( const in float roughness, const in float dotNL ) { + return DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) ); +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometry.normal; + vec3 viewDir = geometry.viewDir; + vec3 position = geometry.position; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.specularRoughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifndef PHYSICALLY_CORRECT_LIGHTS + irradiance *= PI; + #endif + #ifdef CLEARCOAT + float ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = ccDotNL * directLight.color; + #ifndef PHYSICALLY_CORRECT_LIGHTS + ccIrradiance *= PI; + #endif + float clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL ); + reflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness ); + #else + float clearcoatDHR = 0.0; + #endif + #ifdef USE_SHEEN + reflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen( + material.specularRoughness, + directLight.direction, + geometry, + material.sheenColor + ); + #else + reflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness); + #endif + reflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef CLEARCOAT + float ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) ); + reflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness ); + float ccDotNL = ccDotNV; + float clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL ); + #else + float clearcoatDHR = 0.0; + #endif + float clearcoatInv = 1.0 - clearcoatDHR; + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + BRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering ); + vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) ); + reflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,hd=` +GeometricContext geometry; +geometry.position = - vViewPosition; +geometry.normal = normal; +geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +#ifdef CLEARCOAT + geometry.clearcoatNormal = clearcoatNormal; +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointDirectLightIrradiance( pointLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotDirectLightIrradiance( spotLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + irradiance += getLightProbeIrradiance( lightProbe, geometry ); + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,ud=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel= texture2D( lightMap, vUv2 ); + vec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity; + #ifndef PHYSICALLY_CORRECT_LIGHTS + lightMapIrradiance *= PI; + #endif + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + radiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel ); + #ifdef CLEARCOAT + clearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel ); + #endif +#endif`,dd=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight ); +#endif`,fd=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,pd=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,md=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`,gd=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`,xd=`#ifdef USE_MAP + vec4 texelColor = texture2D( map, vUv ); + texelColor = mapTexelToLinear( texelColor ); + diffuseColor *= texelColor; +#endif`,yd=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,vd=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; +#endif +#ifdef USE_MAP + vec4 mapTexel = texture2D( map, uv ); + diffuseColor *= mapTexelToLinear( mapTexel ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,_d=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,wd=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vUv ); + metalnessFactor *= texelMetalness.b; +#endif`,bd=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,Md=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; +#endif`,Sd=`#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif +#endif`,Ed=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif +#endif`,Td=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) ); + vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + #ifdef USE_TANGENT + vec3 tangent = normalize( vTangent ); + vec3 bitangent = normalize( vBitangent ); + #ifdef DOUBLE_SIDED + tangent = tangent * faceDirection; + bitangent = bitangent * faceDirection; + #endif + #if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP ) + mat3 vTBN = mat3( tangent, bitangent, normal ); + #endif + #endif +#endif +vec3 geometryNormal = normal;`,Ad=`#ifdef OBJECTSPACE_NORMALMAP + normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( TANGENTSPACE_NORMALMAP ) + vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + #ifdef USE_TANGENT + normal = normalize( vTBN * mapN ); + #else + normal = perturbNormal2Arb( -vViewPosition, normal, mapN, faceDirection ); + #endif +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,Ld=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef OBJECTSPACE_NORMALMAP + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) ) + vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) { + vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) ); + vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) ); + vec2 st0 = dFdx( vUv.st ); + vec2 st1 = dFdy( vUv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det ); + return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z ); + } +#endif`,Rd=`#ifdef CLEARCOAT + vec3 clearcoatNormal = geometryNormal; +#endif`,Cd=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + #ifdef USE_TANGENT + clearcoatNormal = normalize( vTBN * clearcoatMapN ); + #else + clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection ); + #endif +#endif`,Pd=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif`,Id=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 )); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) { + return linearClipZ * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return (( near + viewZ ) * far ) / (( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * invClipZ - far ); +}`,Dd=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,Fd=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,Nd=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,Bd=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,zd=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vUv ); + roughnessFactor *= texelRoughness.g; +#endif`,Od=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,Ud=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 ); + bool inFrustum = all( inFrustumVec ); + bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 ); + bool frustumTest = all( frustumTestVec ); + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`,Hd=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ]; + varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,Gd=`#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; + #endif + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 ); + vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif`,kd=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,Vd=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,Wd=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + #ifdef BONE_TEXTURE + uniform highp sampler2D boneTexture; + uniform int boneTextureSize; + mat4 getBoneMatrix( const in float i ) { + float j = i * 4.0; + float x = mod( j, float( boneTextureSize ) ); + float y = floor( j / float( boneTextureSize ) ); + float dx = 1.0 / float( boneTextureSize ); + float dy = 1.0 / float( boneTextureSize ); + y = dy * ( y + 0.5 ); + vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); + vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); + vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); + vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); + mat4 bone = mat4( v1, v2, v3, v4 ); + return bone; + } + #else + uniform mat4 boneMatrices[ MAX_BONES ]; + mat4 getBoneMatrix( const in float i ) { + mat4 bone = boneMatrices[ int(i) ]; + return bone; + } + #endif +#endif`,qd=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,Xd=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,Yd=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,Zd=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,Jd=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,jd=`#ifndef saturate +#define saturate(a) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return toneMappingExposure * color; +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,$d=`#ifdef USE_TRANSMISSIONMAP + totalTransmission *= texture2D( transmissionMap, vUv ).r; +#endif`,Qd=`#ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; +#endif`,Kd=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) ) + varying vec2 vUv; +#endif`,ef=`#ifdef USE_UV + #ifdef UVS_VERTEX_ONLY + vec2 vUv; + #else + varying vec2 vUv; + #endif + uniform mat3 uvTransform; +#endif`,tf=`#ifdef USE_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; +#endif`,nf=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + varying vec2 vUv2; +#endif`,rf=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + attribute vec2 uv2; + varying vec2 vUv2; + uniform mat3 uv2Transform; +#endif`,sf=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) + vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy; +#endif`,of=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`,af=`uniform sampler2D t2D; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + gl_FragColor = mapTexelToLinear( texColor ); + #include + #include +}`,lf=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,cf=`#include +uniform float opacity; +varying vec3 vWorldDirection; +#include +void main() { + vec3 vReflect = vWorldDirection; + #include + gl_FragColor = envColor; + gl_FragColor.a *= opacity; + #include + #include +}`,hf=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,uf=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`,df=`#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,ff=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,pf=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,mf=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + vec4 texColor = texture2D( tEquirect, sampleUV ); + gl_FragColor = mapTexelToLinear( texColor ); + #include + #include +}`,gf=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,xf=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + outgoingLight = diffuseColor.rgb; + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include +}`,yf=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include +}`,vf=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + + vec4 lightMapTexel= texture2D( lightMap, vUv2 ); + reflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include + #include +}`,_f=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_ENVMAP + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,wf=`uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +varying vec3 vLightFront; +varying vec3 vIndirectFront; +#ifdef DOUBLE_SIDED + varying vec3 vLightBack; + varying vec3 vIndirectBack; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #ifdef DOUBLE_SIDED + reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack; + #else + reflectedLight.indirectDiffuse += vIndirectFront; + #endif + #include + reflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ); + #ifdef DOUBLE_SIDED + reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack; + #else + reflectedLight.directDiffuse = vLightFront; + #endif + reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask(); + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include + #include +}`,bf=`#define LAMBERT +varying vec3 vLightFront; +varying vec3 vIndirectFront; +#ifdef DOUBLE_SIDED + varying vec3 vLightBack; + varying vec3 vIndirectBack; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,Mf=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + matcapColor = matcapTexelToLinear( matcapColor ); + #else + vec4 matcapColor = vec4( 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include + #include +}`,Sf=`#define MATCAP +varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #endif + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,Ef=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include + #include +}`,Tf=`#define TOON +varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include +#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); +#endif + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,Af=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include + #include +}`,Lf=`#define PHONG +varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include +#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); +#endif + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,Rf=`#define STANDARD +#ifdef PHYSICAL + #define REFLECTIVITY + #define CLEARCOAT + #define TRANSMISSION +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef TRANSMISSION + uniform float transmission; +#endif +#ifdef REFLECTIVITY + uniform float reflectivity; +#endif +#ifdef CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_SHEEN + uniform vec3 sheen; +#endif +varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #ifdef TRANSMISSION + float totalTransmission = transmission; + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #ifdef TRANSMISSION + diffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness ); + #endif + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include + #include +}`,Cf=`#define STANDARD +varying vec3 vViewPosition; +#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include +#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,Pf=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + varying vec3 vViewPosition; +#endif +#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); +}`,If=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + varying vec3 vViewPosition; +#endif +#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include +#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) + vViewPosition = - mvPosition.xyz; +#endif +}`,Df=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include + #include +}`,Ff=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,Nf=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,Bf=`#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,zf=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + gl_FragColor = vec4( outgoingLight, diffuseColor.a ); + #include + #include + #include +}`,Of=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,be={alphamap_fragment:xu,alphamap_pars_fragment:yu,alphatest_fragment:vu,aomap_fragment:_u,aomap_pars_fragment:wu,begin_vertex:bu,beginnormal_vertex:Mu,bsdfs:Su,bumpmap_pars_fragment:Eu,clipping_planes_fragment:Tu,clipping_planes_pars_fragment:Au,clipping_planes_pars_vertex:Lu,clipping_planes_vertex:Ru,color_fragment:Cu,color_pars_fragment:Pu,color_pars_vertex:Iu,color_vertex:Du,common:Fu,cube_uv_reflection_fragment:Nu,defaultnormal_vertex:Bu,displacementmap_pars_vertex:zu,displacementmap_vertex:Ou,emissivemap_fragment:Uu,emissivemap_pars_fragment:Hu,encodings_fragment:Gu,encodings_pars_fragment:ku,envmap_fragment:Vu,envmap_common_pars_fragment:Wu,envmap_pars_fragment:qu,envmap_pars_vertex:Xu,envmap_physical_pars_fragment:id,envmap_vertex:Yu,fog_vertex:Zu,fog_pars_vertex:Ju,fog_fragment:ju,fog_pars_fragment:$u,gradientmap_pars_fragment:Qu,lightmap_fragment:Ku,lightmap_pars_fragment:ed,lights_lambert_vertex:td,lights_pars_begin:nd,lights_toon_fragment:rd,lights_toon_pars_fragment:sd,lights_phong_fragment:od,lights_phong_pars_fragment:ad,lights_physical_fragment:ld,lights_physical_pars_fragment:cd,lights_fragment_begin:hd,lights_fragment_maps:ud,lights_fragment_end:dd,logdepthbuf_fragment:fd,logdepthbuf_pars_fragment:pd,logdepthbuf_pars_vertex:md,logdepthbuf_vertex:gd,map_fragment:xd,map_pars_fragment:yd,map_particle_fragment:vd,map_particle_pars_fragment:_d,metalnessmap_fragment:wd,metalnessmap_pars_fragment:bd,morphnormal_vertex:Md,morphtarget_pars_vertex:Sd,morphtarget_vertex:Ed,normal_fragment_begin:Td,normal_fragment_maps:Ad,normalmap_pars_fragment:Ld,clearcoat_normal_fragment_begin:Rd,clearcoat_normal_fragment_maps:Cd,clearcoat_pars_fragment:Pd,packing:Id,premultiplied_alpha_fragment:Dd,project_vertex:Fd,dithering_fragment:Nd,dithering_pars_fragment:Bd,roughnessmap_fragment:zd,roughnessmap_pars_fragment:Od,shadowmap_pars_fragment:Ud,shadowmap_pars_vertex:Hd,shadowmap_vertex:Gd,shadowmask_pars_fragment:kd,skinbase_vertex:Vd,skinning_pars_vertex:Wd,skinning_vertex:qd,skinnormal_vertex:Xd,specularmap_fragment:Yd,specularmap_pars_fragment:Zd,tonemapping_fragment:Jd,tonemapping_pars_fragment:jd,transmissionmap_fragment:$d,transmissionmap_pars_fragment:Qd,uv_pars_fragment:Kd,uv_pars_vertex:ef,uv_vertex:tf,uv2_pars_fragment:nf,uv2_pars_vertex:rf,uv2_vertex:sf,worldpos_vertex:of,background_frag:af,background_vert:lf,cube_frag:cf,cube_vert:hf,depth_frag:uf,depth_vert:df,distanceRGBA_frag:ff,distanceRGBA_vert:pf,equirect_frag:mf,equirect_vert:gf,linedashed_frag:xf,linedashed_vert:yf,meshbasic_frag:vf,meshbasic_vert:_f,meshlambert_frag:wf,meshlambert_vert:bf,meshmatcap_frag:Mf,meshmatcap_vert:Sf,meshtoon_frag:Ef,meshtoon_vert:Tf,meshphong_frag:Af,meshphong_vert:Lf,meshphysical_frag:Rf,meshphysical_vert:Cf,normal_frag:Pf,normal_vert:If,points_frag:Df,points_vert:Ff,shadow_frag:Nf,shadow_vert:Bf,sprite_frag:zf,sprite_vert:Of},K={common:{diffuse:{value:new ae(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Ze},uv2Transform:{value:new Ze},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new X(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ae(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new ae(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Ze}},sprite:{diffuse:{value:new ae(15658734)},opacity:{value:1},center:{value:new X(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Ze}}},Rt={basic:{uniforms:et([K.common,K.specularmap,K.envmap,K.aomap,K.lightmap,K.fog]),vertexShader:be.meshbasic_vert,fragmentShader:be.meshbasic_frag},lambert:{uniforms:et([K.common,K.specularmap,K.envmap,K.aomap,K.lightmap,K.emissivemap,K.fog,K.lights,{emissive:{value:new ae(0)}}]),vertexShader:be.meshlambert_vert,fragmentShader:be.meshlambert_frag},phong:{uniforms:et([K.common,K.specularmap,K.envmap,K.aomap,K.lightmap,K.emissivemap,K.bumpmap,K.normalmap,K.displacementmap,K.fog,K.lights,{emissive:{value:new ae(0)},specular:{value:new ae(1118481)},shininess:{value:30}}]),vertexShader:be.meshphong_vert,fragmentShader:be.meshphong_frag},standard:{uniforms:et([K.common,K.envmap,K.aomap,K.lightmap,K.emissivemap,K.bumpmap,K.normalmap,K.displacementmap,K.roughnessmap,K.metalnessmap,K.fog,K.lights,{emissive:{value:new ae(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:be.meshphysical_vert,fragmentShader:be.meshphysical_frag},toon:{uniforms:et([K.common,K.aomap,K.lightmap,K.emissivemap,K.bumpmap,K.normalmap,K.displacementmap,K.gradientmap,K.fog,K.lights,{emissive:{value:new ae(0)}}]),vertexShader:be.meshtoon_vert,fragmentShader:be.meshtoon_frag},matcap:{uniforms:et([K.common,K.bumpmap,K.normalmap,K.displacementmap,K.fog,{matcap:{value:null}}]),vertexShader:be.meshmatcap_vert,fragmentShader:be.meshmatcap_frag},points:{uniforms:et([K.points,K.fog]),vertexShader:be.points_vert,fragmentShader:be.points_frag},dashed:{uniforms:et([K.common,K.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:be.linedashed_vert,fragmentShader:be.linedashed_frag},depth:{uniforms:et([K.common,K.displacementmap]),vertexShader:be.depth_vert,fragmentShader:be.depth_frag},normal:{uniforms:et([K.common,K.bumpmap,K.normalmap,K.displacementmap,{opacity:{value:1}}]),vertexShader:be.normal_vert,fragmentShader:be.normal_frag},sprite:{uniforms:et([K.sprite,K.fog]),vertexShader:be.sprite_vert,fragmentShader:be.sprite_frag},background:{uniforms:{uvTransform:{value:new Ze},t2D:{value:null}},vertexShader:be.background_vert,fragmentShader:be.background_frag},cube:{uniforms:et([K.envmap,{opacity:{value:1}}]),vertexShader:be.cube_vert,fragmentShader:be.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:be.equirect_vert,fragmentShader:be.equirect_frag},distanceRGBA:{uniforms:et([K.common,K.displacementmap,{referencePosition:{value:new b},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:be.distanceRGBA_vert,fragmentShader:be.distanceRGBA_frag},shadow:{uniforms:et([K.lights,K.fog,{color:{value:new ae(0)},opacity:{value:1}}]),vertexShader:be.shadow_vert,fragmentShader:be.shadow_frag}};Rt.physical={uniforms:et([Rt.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new X(1,1)},clearcoatNormalMap:{value:null},sheen:{value:new ae(0)},transmission:{value:0},transmissionMap:{value:null}}]),vertexShader:be.meshphysical_vert,fragmentShader:be.meshphysical_frag};function Uf(s,e,t,n,i){let r=new ae(0),o=0,a,l,c=null,h=0,d=null;function u(m,x,y,g){let f=x.isScene===!0?x.background:null;f&&f.isTexture&&(f=e.get(f));let M=s.xr,S=M.getSession&&M.getSession();S&&S.environmentBlendMode==="additive"&&(f=null),f===null?p(r,o):f&&f.isColor&&(p(f,1),g=!0),(s.autoClear||g)&&s.clear(s.autoClearColor,s.autoClearDepth,s.autoClearStencil),f&&(f.isCubeTexture||f.mapping===ca)?(l===void 0&&(l=new at(new Ci(1,1,1),new kt({name:"BackgroundCubeMaterial",uniforms:Wn(Rt.cube.uniforms),vertexShader:Rt.cube.vertexShader,fragmentShader:Rt.cube.fragmentShader,side:je,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(T,v,R){this.matrixWorld.copyPosition(R.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(l)),l.material.uniforms.envMap.value=f,l.material.uniforms.flipEnvMap.value=f.isCubeTexture&&f._needsFlipEnvMap?-1:1,(c!==f||h!==f.version||d!==s.toneMapping)&&(l.material.needsUpdate=!0,c=f,h=f.version,d=s.toneMapping),m.unshift(l,l.geometry,l.material,0,0,null)):f&&f.isTexture&&(a===void 0&&(a=new at(new Js(2,2),new kt({name:"BackgroundMaterial",uniforms:Wn(Rt.background.uniforms),vertexShader:Rt.background.vertexShader,fragmentShader:Rt.background.fragmentShader,side:es,depthTest:!1,depthWrite:!1,fog:!1})),a.geometry.deleteAttribute("normal"),Object.defineProperty(a.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(a)),a.material.uniforms.t2D.value=f,f.matrixAutoUpdate===!0&&f.updateMatrix(),a.material.uniforms.uvTransform.value.copy(f.matrix),(c!==f||h!==f.version||d!==s.toneMapping)&&(a.material.needsUpdate=!0,c=f,h=f.version,d=s.toneMapping),m.unshift(a,a.geometry,a.material,0,0,null))}function p(m,x){t.buffers.color.setClear(m.r,m.g,m.b,x,i)}return{getClearColor:function(){return r},setClearColor:function(m,x=1){r.set(m),o=x,p(r,o)},getClearAlpha:function(){return o},setClearAlpha:function(m){o=m,p(r,o)},render:u}}function Hf(s,e,t,n){let i=s.getParameter(34921),r=n.isWebGL2?null:e.get("OES_vertex_array_object"),o=n.isWebGL2||r!==null,a={},l=x(null),c=l;function h(A,P,D,C,q){let $=!1;if(o){let Z=m(C,D,P);c!==Z&&(c=Z,u(c.object)),$=y(C,q),$&&g(C,q)}else{let Z=P.wireframe===!0;(c.geometry!==C.id||c.program!==D.id||c.wireframe!==Z)&&(c.geometry=C.id,c.program=D.id,c.wireframe=Z,$=!0)}A.isInstancedMesh===!0&&($=!0),q!==null&&t.update(q,34963),$&&(R(A,P,D,C),q!==null&&s.bindBuffer(34963,t.get(q).buffer))}function d(){return n.isWebGL2?s.createVertexArray():r.createVertexArrayOES()}function u(A){return n.isWebGL2?s.bindVertexArray(A):r.bindVertexArrayOES(A)}function p(A){return n.isWebGL2?s.deleteVertexArray(A):r.deleteVertexArrayOES(A)}function m(A,P,D){let C=D.wireframe===!0,q=a[A.id];q===void 0&&(q={},a[A.id]=q);let $=q[P.id];$===void 0&&($={},q[P.id]=$);let Z=$[C];return Z===void 0&&(Z=x(d()),$[C]=Z),Z}function x(A){let P=[],D=[],C=[];for(let q=0;q=0){let ue=q[se];if(ue!==void 0){let xe=ue.normalized,H=ue.itemSize,Ne=t.get(ue);if(Ne===void 0)continue;let Se=Ne.buffer,ye=Ne.type,de=Ne.bytesPerElement;if(ue.isInterleavedBufferAttribute){let Te=ue.data,we=Te.stride,Me=ue.offset;Te&&Te.isInstancedInterleavedBuffer?(S(re,Te.meshPerAttribute),C._maxInstanceCount===void 0&&(C._maxInstanceCount=Te.meshPerAttribute*Te.count)):M(re),s.bindBuffer(34962,Se),v(re,H,ye,xe,we*de,Me*de)}else ue.isInstancedBufferAttribute?(S(re,ue.meshPerAttribute),C._maxInstanceCount===void 0&&(C._maxInstanceCount=ue.meshPerAttribute*ue.count)):M(re),s.bindBuffer(34962,Se),v(re,H,ye,xe,0,0)}else if(se==="instanceMatrix"){let xe=t.get(A.instanceMatrix);if(xe===void 0)continue;let H=xe.buffer,Ne=xe.type;S(re+0,1),S(re+1,1),S(re+2,1),S(re+3,1),s.bindBuffer(34962,H),s.vertexAttribPointer(re+0,4,Ne,!1,64,0),s.vertexAttribPointer(re+1,4,Ne,!1,64,16),s.vertexAttribPointer(re+2,4,Ne,!1,64,32),s.vertexAttribPointer(re+3,4,Ne,!1,64,48)}else if(se==="instanceColor"){let xe=t.get(A.instanceColor);if(xe===void 0)continue;let H=xe.buffer,Ne=xe.type;S(re,1),s.bindBuffer(34962,H),s.vertexAttribPointer(re,3,Ne,!1,12,0)}else if(Z!==void 0){let xe=Z[se];if(xe!==void 0)switch(xe.length){case 2:s.vertexAttrib2fv(re,xe);break;case 3:s.vertexAttrib3fv(re,xe);break;case 4:s.vertexAttrib4fv(re,xe);break;default:s.vertexAttrib1fv(re,xe)}}}}T()}function I(){G();for(let A in a){let P=a[A];for(let D in P){let C=P[D];for(let q in C)p(C[q].object),delete C[q];delete P[D]}delete a[A]}}function F(A){if(a[A.id]===void 0)return;let P=a[A.id];for(let D in P){let C=P[D];for(let q in C)p(C[q].object),delete C[q];delete P[D]}delete a[A.id]}function B(A){for(let P in a){let D=a[P];if(D[A.id]===void 0)continue;let C=D[A.id];for(let q in C)p(C[q].object),delete C[q];delete D[A.id]}}function G(){O(),c!==l&&(c=l,u(c.object))}function O(){l.geometry=null,l.program=null,l.wireframe=!1}return{setup:h,reset:G,resetDefaultState:O,dispose:I,releaseStatesOfGeometry:F,releaseStatesOfProgram:B,initAttributes:f,enableAttribute:M,disableUnusedAttributes:T}}function Gf(s,e,t,n){let i=n.isWebGL2,r;function o(c){r=c}function a(c,h){s.drawArrays(r,c,h),t.update(h,r,1)}function l(c,h,d){if(d===0)return;let u,p;if(i)u=s,p="drawArraysInstanced";else if(u=e.get("ANGLE_instanced_arrays"),p="drawArraysInstancedANGLE",u===null){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}u[p](r,c,h,d),t.update(h,r,d)}this.setMode=o,this.render=a,this.renderInstances=l}function kf(s,e,t){let n;function i(){if(n!==void 0)return n;if(e.has("EXT_texture_filter_anisotropic")===!0){let v=e.get("EXT_texture_filter_anisotropic");n=s.getParameter(v.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n}function r(v){if(v==="highp"){if(s.getShaderPrecisionFormat(35633,36338).precision>0&&s.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";v="mediump"}return v==="mediump"&&s.getShaderPrecisionFormat(35633,36337).precision>0&&s.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let o=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext<"u"&&s instanceof WebGL2ComputeRenderingContext,a=t.precision!==void 0?t.precision:"highp",l=r(a);l!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",l,"instead."),a=l);let c=t.logarithmicDepthBuffer===!0,h=s.getParameter(34930),d=s.getParameter(35660),u=s.getParameter(3379),p=s.getParameter(34076),m=s.getParameter(34921),x=s.getParameter(36347),y=s.getParameter(36348),g=s.getParameter(36349),f=d>0,M=o||e.has("OES_texture_float"),S=f&&M,T=o?s.getParameter(36183):0;return{isWebGL2:o,getMaxAnisotropy:i,getMaxPrecision:r,precision:a,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:d,maxTextureSize:u,maxCubemapSize:p,maxAttributes:m,maxVertexUniforms:x,maxVaryings:y,maxFragmentUniforms:g,vertexTextures:f,floatFragmentTextures:M,floatVertexTextures:S,maxSamples:T}}function Vf(s){let e=this,t=null,n=0,i=!1,r=!1,o=new mt,a=new Ze,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,u,p){let m=d.length!==0||u||n!==0||i;return i=u,t=h(d,p,0),n=d.length,m},this.beginShadows=function(){r=!0,h(null)},this.endShadows=function(){r=!1,c()},this.setState=function(d,u,p){let m=d.clippingPlanes,x=d.clipIntersection,y=d.clipShadows,g=s.get(d);if(!i||m===null||m.length===0||r&&!y)r?h(null):c();else{let f=r?0:n,M=f*4,S=g.clippingState||null;l.value=S,S=h(m,u,M,p);for(let T=0;T!==M;++T)S[T]=t[T];g.clippingState=S,this.numIntersection=x?this.numPlanes:0,this.numPlanes+=f}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(d,u,p,m){let x=d!==null?d.length:0,y=null;if(x!==0){if(y=l.value,m!==!0||y===null){let g=p+x*4,f=u.matrixWorldInverse;a.getNormalMatrix(f),(y===null||y.length0){let c=s.getRenderTarget(),h=new Pr(l.height/2);return h.fromEquirectangularTexture(s,o),e.set(o,h),s.setRenderTarget(c),o.addEventListener("dispose",i),t(h.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener("dispose",i);let l=e.get(a);l!==void 0&&(e.delete(a),l.dispose())}function r(){e=new WeakMap}return{get:n,dispose:r}}function qf(s){let e={};function t(n){if(e[n]!==void 0)return e[n];let i;switch(n){case"WEBGL_depth_texture":i=s.getExtension("WEBGL_depth_texture")||s.getExtension("MOZ_WEBGL_depth_texture")||s.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=s.getExtension("EXT_texture_filter_anisotropic")||s.getExtension("MOZ_EXT_texture_filter_anisotropic")||s.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=s.getExtension("WEBGL_compressed_texture_s3tc")||s.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=s.getExtension("WEBGL_compressed_texture_pvrtc")||s.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=s.getExtension(n)}return e[n]=i,i}return{has:function(n){return t(n)!==null},init:function(n){n.isWebGL2?t("EXT_color_buffer_float"):(t("WEBGL_depth_texture"),t("OES_texture_float"),t("OES_texture_half_float"),t("OES_texture_half_float_linear"),t("OES_standard_derivatives"),t("OES_element_index_uint"),t("OES_vertex_array_object"),t("ANGLE_instanced_arrays")),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float")},get:function(n){let i=t(n);return i===null&&console.warn("THREE.WebGLRenderer: "+n+" extension not supported."),i}}}function Xf(s,e,t,n){let i={},r=new WeakMap;function o(d){let u=d.target;u.index!==null&&e.remove(u.index);for(let m in u.attributes)e.remove(u.attributes[m]);u.removeEventListener("dispose",o),delete i[u.id];let p=r.get(u);p&&(e.remove(p),r.delete(u)),n.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,t.memory.geometries--}function a(d,u){return i[u.id]===!0||(u.addEventListener("dispose",o),i[u.id]=!0,t.memory.geometries++),u}function l(d){let u=d.attributes;for(let m in u)e.update(u[m],34962);let p=d.morphAttributes;for(let m in p){let x=p[m];for(let y=0,g=x.length;y65535?Cr:Rr)(u,1);y.version=x;let g=r.get(d);g&&e.remove(g),r.set(d,y)}function h(d){let u=r.get(d);if(u){let p=d.index;p!==null&&u.version0)return s;let i=e*t,r=rl[i];if(r===void 0&&(r=new Float32Array(i),rl[i]=r),e!==0){n.toArray(r,0);for(let o=1,a=0;o!==e;++o)a+=t,s[o].toArray(r,a)}return r}function lt(s,e){if(s.length!==e.length)return!1;for(let t=0,n=s.length;t/gm;function js(s){return s.replace(Zp,Jp)}function Jp(s,e){let t=be[e];if(t===void 0)throw new Error("Can not resolve #include <"+e+">");return js(t)}var jp=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,$p=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function pl(s){return s.replace($p,cc).replace(jp,Qp)}function Qp(s,e,t,n){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),cc(s,e,t,n)}function cc(s,e,t,n){let i="";for(let r=parseInt(e);r0?s.gammaFactor:1,p=t.isWebGL2?"":qp(t),m=Xp(r),x=i.createProgram(),y,g,f=t.glslVersion?"#version "+t.glslVersion+` +`:"";t.isRawShaderMaterial?(y=[m].filter(yi).join(` +`),y.length>0&&(y+=` +`),g=[p,m].filter(yi).join(` +`),g.length>0&&(g+=` +`)):(y=[ml(t),"#define SHADER_NAME "+t.shaderName,m,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+u,"#define MAX_BONES "+t.maxBones,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+h:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.displacementMap&&t.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.useVertexTexture?"#define BONE_TEXTURE":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(yi).join(` +`),g=[p,ml(t),"#define SHADER_NAME "+t.shaderName,m,t.alphaTest?"#define ALPHATEST "+t.alphaTest+(t.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+u,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+h:"",t.envMap?"#define "+d:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.sheen?"#define USE_SHEEN":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(t.extensionShaderTextureLOD||t.envMap)&&t.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==wi?"#define TONE_MAPPING":"",t.toneMapping!==wi?be.tonemapping_pars_fragment:"",t.toneMapping!==wi?Wp("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",be.encodings_pars_fragment,t.map?ui("mapTexelToLinear",t.mapEncoding):"",t.matcap?ui("matcapTexelToLinear",t.matcapEncoding):"",t.envMap?ui("envMapTexelToLinear",t.envMapEncoding):"",t.emissiveMap?ui("emissiveMapTexelToLinear",t.emissiveMapEncoding):"",t.lightMap?ui("lightMapTexelToLinear",t.lightMapEncoding):"",Vp("linearToOutputTexel",t.outputEncoding),t.depthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(yi).join(` +`)),o=js(o),o=dl(o,t),o=fl(o,t),a=js(a),a=dl(a,t),a=fl(a,t),o=pl(o),a=pl(a),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(f=`#version 300 es +`,y=["#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+y,g=["#define varying in",t.glslVersion===qa?"":"out highp vec4 pc_fragColor;",t.glslVersion===qa?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+g);let M=f+y+o,S=f+g+a,T=hl(i,35633,M),v=hl(i,35632,S);if(i.attachShader(x,T),i.attachShader(x,v),t.index0AttributeName!==void 0?i.bindAttribLocation(x,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(x,0,"position"),i.linkProgram(x),s.debug.checkShaderErrors){let F=i.getProgramInfoLog(x).trim(),B=i.getShaderInfoLog(T).trim(),G=i.getShaderInfoLog(v).trim(),O=!0,A=!0;if(i.getProgramParameter(x,35714)===!1){O=!1;let P=ul(i,T,"vertex"),D=ul(i,v,"fragment");console.error("THREE.WebGLProgram: shader error: ",i.getError(),"35715",i.getProgramParameter(x,35715),"gl.getProgramInfoLog",F,P,D)}else F!==""?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",F):(B===""||G==="")&&(A=!1);A&&(this.diagnostics={runnable:O,programLog:F,vertexShader:{log:B,prefix:y},fragmentShader:{log:G,prefix:g}})}i.deleteShader(T),i.deleteShader(v);let R;this.getUniforms=function(){return R===void 0&&(R=new Qt(i,x)),R};let I;return this.getAttributes=function(){return I===void 0&&(I=Yp(i,x)),I},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(x),this.program=void 0},this.name=t.shaderName,this.id=Gp++,this.cacheKey=e,this.usedTimes=1,this.program=x,this.vertexShader=T,this.fragmentShader=v,this}function rm(s,e,t,n,i,r){let o=[],a=n.isWebGL2,l=n.logarithmicDepthBuffer,c=n.floatVertexTextures,h=n.maxVertexUniforms,d=n.vertexTextures,u=n.precision,p={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},m=["precision","isWebGL2","supportsVertexTextures","outputEncoding","instancing","instancingColor","map","mapEncoding","matcap","matcapEncoding","envMap","envMapMode","envMapEncoding","envMapCubeUV","lightMap","lightMapEncoding","aoMap","emissiveMap","emissiveMapEncoding","bumpMap","normalMap","objectSpaceNormalMap","tangentSpaceNormalMap","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","displacementMap","specularMap","roughnessMap","metalnessMap","gradientMap","alphaMap","combine","vertexColors","vertexAlphas","vertexTangents","vertexUvs","uvsVertexOnly","fog","useFog","fogExp2","flatShading","sizeAttenuation","logarithmicDepthBuffer","skinning","maxBones","useVertexTexture","morphTargets","morphNormals","premultipliedAlpha","numDirLights","numPointLights","numSpotLights","numHemiLights","numRectAreaLights","numDirLightShadows","numPointLightShadows","numSpotLightShadows","shadowMapEnabled","shadowMapType","toneMapping","physicallyCorrectLights","alphaTest","doubleSided","flipSided","numClippingPlanes","numClipIntersection","depthPacking","dithering","sheen","transmissionMap"];function x(v){let I=v.skeleton.bones;if(c)return 1024;{let B=Math.floor((h-20)/4),G=Math.min(B,I.length);return G0,maxBones:D,useVertexTexture:c,morphTargets:v.morphTargets,morphNormals:v.morphNormals,numDirLights:R.directional.length,numPointLights:R.point.length,numSpotLights:R.spot.length,numRectAreaLights:R.rectArea.length,numHemiLights:R.hemi.length,numDirLightShadows:R.directionalShadowMap.length,numPointLightShadows:R.pointShadowMap.length,numSpotLightShadows:R.spotShadowMap.length,numClippingPlanes:r.numPlanes,numClipIntersection:r.numIntersection,dithering:v.dithering,shadowMapEnabled:s.shadowMap.enabled&&I.length>0,shadowMapType:s.shadowMap.type,toneMapping:v.toneMapped?s.toneMapping:wi,physicallyCorrectLights:s.physicallyCorrectLights,premultipliedAlpha:v.premultipliedAlpha,alphaTest:v.alphaTest,doubleSided:v.side===ts,flipSided:v.side===je,depthPacking:v.depthPacking!==void 0?v.depthPacking:!1,index0AttributeName:v.index0AttributeName,extensionDerivatives:v.extensions&&v.extensions.derivatives,extensionFragDepth:v.extensions&&v.extensions.fragDepth,extensionDrawBuffers:v.extensions&&v.extensions.drawBuffers,extensionShaderTextureLOD:v.extensions&&v.extensions.shaderTextureLOD,rendererExtensionFragDepth:a||t.has("EXT_frag_depth"),rendererExtensionDrawBuffers:a||t.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:a||t.has("EXT_shader_texture_lod"),customProgramCacheKey:v.customProgramCacheKey()}}function f(v){let R=[];if(v.shaderID?R.push(v.shaderID):(R.push(v.fragmentShader),R.push(v.vertexShader)),v.defines!==void 0)for(let I in v.defines)R.push(I),R.push(v.defines[I]);if(v.isRawShaderMaterial===!1){for(let I=0;I1&&n.sort(u||om),i.length>1&&i.sort(p||am)}function d(){for(let u=t,p=e.length;u=e.get(i).length?(o=new gl(s),e.get(i).push(o)):o=e.get(i)[r],o}function n(){e=new WeakMap}return{get:t,dispose:n}}function cm(){let s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new b,color:new ae};break;case"SpotLight":t={position:new b,direction:new b,color:new ae,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new b,color:new ae,distance:0,decay:0};break;case"HemisphereLight":t={direction:new b,skyColor:new ae,groundColor:new ae};break;case"RectAreaLight":t={color:new ae,position:new b,halfWidth:new b,halfHeight:new b};break}return s[e.id]=t,t}}}function hm(){let s={};return{get:function(e){if(s[e.id]!==void 0)return s[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new X};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new X};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new X,shadowCameraNear:1,shadowCameraFar:1e3};break}return s[e.id]=t,t}}}var um=0;function dm(s,e){return(e.castShadow?1:0)-(s.castShadow?1:0)}function fm(s,e){let t=new cm,n=hm(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let h=0;h<9;h++)i.probe.push(new b);let r=new b,o=new he,a=new he;function l(h){let d=0,u=0,p=0;for(let R=0;R<9;R++)i.probe[R].set(0,0,0);let m=0,x=0,y=0,g=0,f=0,M=0,S=0,T=0;h.sort(dm);for(let R=0,I=h.length;R0&&(e.isWebGL2||s.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=K.LTC_FLOAT_1,i.rectAreaLTC2=K.LTC_FLOAT_2):s.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=K.LTC_HALF_1,i.rectAreaLTC2=K.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=d,i.ambient[1]=u,i.ambient[2]=p;let v=i.hash;(v.directionalLength!==m||v.pointLength!==x||v.spotLength!==y||v.rectAreaLength!==g||v.hemiLength!==f||v.numDirectionalShadows!==M||v.numPointShadows!==S||v.numSpotShadows!==T)&&(i.directional.length=m,i.spot.length=y,i.rectArea.length=g,i.point.length=x,i.hemi.length=f,i.directionalShadow.length=M,i.directionalShadowMap.length=M,i.pointShadow.length=S,i.pointShadowMap.length=S,i.spotShadow.length=T,i.spotShadowMap.length=T,i.directionalShadowMatrix.length=M,i.pointShadowMatrix.length=S,i.spotShadowMatrix.length=T,v.directionalLength=m,v.pointLength=x,v.spotLength=y,v.rectAreaLength=g,v.hemiLength=f,v.numDirectionalShadows=M,v.numPointShadows=S,v.numSpotShadows=T,i.version=um++)}function c(h,d){let u=0,p=0,m=0,x=0,y=0,g=d.matrixWorldInverse;for(let f=0,M=h.length;f=t.get(r).length?(a=new xl(s,e),t.get(r).push(a)):a=t.get(r)[o],a}function i(){t=new WeakMap}return{get:n,dispose:i}}var Nr=class extends $e{constructor(e){super(),this.type="MeshDepthMaterial",this.depthPacking=Yh,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}};Nr.prototype.isMeshDepthMaterial=!0;var Br=class extends $e{constructor(e){super(),this.type="MeshDistanceMaterial",this.referencePosition=new b,this.nearDistance=1,this.farDistance=1e3,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Br.prototype.isMeshDistanceMaterial=!0;var mm=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + float mean = 0.0; + float squared_mean = 0.0; + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) ); + for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) { + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean * HALF_SAMPLE_RATE; + squared_mean = squared_mean * HALF_SAMPLE_RATE; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`,gm=`void main() { + gl_Position = vec4( position, 1.0 ); +}`;function hc(s,e,t){let n=new Xn,i=new X,r=new X,o=new Re,a=[],l=[],c={},h=t.maxTextureSize,d={0:je,1:es,2:ts},u=new kt({defines:{SAMPLE_RATE:2/8,HALF_SAMPLE_RATE:1/8},uniforms:{shadow_pass:{value:null},resolution:{value:new X},radius:{value:4}},vertexShader:gm,fragmentShader:mm}),p=u.clone();p.defines.HORIZONTAL_PASS=1;let m=new ze;m.setAttribute("position",new Ge(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let x=new at(m,u),y=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Vl,this.render=function(v,R,I){if(y.enabled===!1||y.autoUpdate===!1&&y.needsUpdate===!1||v.length===0)return;let F=s.getRenderTarget(),B=s.getActiveCubeFace(),G=s.getActiveMipmapLevel(),O=s.state;O.setBlending(vi),O.buffers.color.setClear(1,1,1,1),O.buffers.depth.setTest(!0),O.setScissorTest(!1);for(let A=0,P=v.length;Ah||i.y>h)&&(i.x>h&&(r.x=Math.floor(h/q.x),i.x=r.x*q.x,C.mapSize.x=r.x),i.y>h&&(r.y=Math.floor(h/q.y),i.y=r.y*q.y,C.mapSize.y=r.y)),C.map===null&&!C.isPointLightShadow&&this.type===xi){let Z={minFilter:gt,magFilter:gt,format:Et};C.map=new Ut(i.x,i.y,Z),C.map.texture.name=D.name+".shadowMap",C.mapPass=new Ut(i.x,i.y,Z),C.camera.updateProjectionMatrix()}if(C.map===null){let Z={minFilter:ot,magFilter:ot,format:Et};C.map=new Ut(i.x,i.y,Z),C.map.texture.name=D.name+".shadowMap",C.camera.updateProjectionMatrix()}s.setRenderTarget(C.map),s.clear();let $=C.getViewportCount();for(let Z=0;Z<$;Z++){let se=C.getViewport(Z);o.set(r.x*se.x,r.y*se.y,r.x*se.z,r.y*se.w),O.viewport(o),C.updateMatrices(D,Z),n=C.getFrustum(),T(R,I,C.camera,D,this.type)}!C.isPointLightShadow&&this.type===xi&&g(C,I),C.needsUpdate=!1}y.needsUpdate=!1,s.setRenderTarget(F,B,G)};function g(v,R){let I=e.update(x);u.uniforms.shadow_pass.value=v.map.texture,u.uniforms.resolution.value=v.mapSize,u.uniforms.radius.value=v.radius,s.setRenderTarget(v.mapPass),s.clear(),s.renderBufferDirect(R,null,I,u,x,null),p.uniforms.shadow_pass.value=v.mapPass.texture,p.uniforms.resolution.value=v.mapSize,p.uniforms.radius.value=v.radius,s.setRenderTarget(v.map),s.clear(),s.renderBufferDirect(R,null,I,p,x,null)}function f(v,R,I){let F=v<<0|R<<1|I<<2,B=a[F];return B===void 0&&(B=new Nr({depthPacking:Zh,morphTargets:v,skinning:R}),a[F]=B),B}function M(v,R,I){let F=v<<0|R<<1|I<<2,B=l[F];return B===void 0&&(B=new Br({morphTargets:v,skinning:R}),l[F]=B),B}function S(v,R,I,F,B,G,O){let A=null,P=f,D=v.customDepthMaterial;if(F.isPointLight===!0&&(P=M,D=v.customDistanceMaterial),D===void 0){let C=!1;I.morphTargets===!0&&(C=R.morphAttributes&&R.morphAttributes.position&&R.morphAttributes.position.length>0);let q=!1;v.isSkinnedMesh===!0&&(I.skinning===!0?q=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",v));let $=v.isInstancedMesh===!0;A=P(C,q,$)}else A=D;if(s.localClippingEnabled&&I.clipShadows===!0&&I.clippingPlanes.length!==0){let C=A.uuid,q=I.uuid,$=c[C];$===void 0&&($={},c[C]=$);let Z=$[q];Z===void 0&&(Z=A.clone(),$[q]=Z),A=Z}return A.visible=I.visible,A.wireframe=I.wireframe,O===xi?A.side=I.shadowSide!==null?I.shadowSide:I.side:A.side=I.shadowSide!==null?I.shadowSide:d[I.side],A.clipShadows=I.clipShadows,A.clippingPlanes=I.clippingPlanes,A.clipIntersection=I.clipIntersection,A.wireframeLinewidth=I.wireframeLinewidth,A.linewidth=I.linewidth,F.isPointLight===!0&&A.isMeshDistanceMaterial===!0&&(A.referencePosition.setFromMatrixPosition(F.matrixWorld),A.nearDistance=B,A.farDistance=G),A}function T(v,R,I,F,B){if(v.visible===!1)return;if(v.layers.test(R.layers)&&(v.isMesh||v.isLine||v.isPoints)&&(v.castShadow||v.receiveShadow&&B===xi)&&(!v.frustumCulled||n.intersectsObject(v))){v.modelViewMatrix.multiplyMatrices(I.matrixWorldInverse,v.matrixWorld);let A=e.update(v),P=v.material;if(Array.isArray(P)){let D=A.groups;for(let C=0,q=D.length;C=1):D.indexOf("OpenGL ES")!==-1&&(P=parseFloat(/^OpenGL ES (\d)/.exec(D)[1]),A=P>=2);let C=null,q={},$=new Re(0,0,s.canvas.width,s.canvas.height),Z=new Re(0,0,s.canvas.width,s.canvas.height);function se(L,J,Q){let ce=new Uint8Array(4),W=s.createTexture();s.bindTexture(L,W),s.texParameteri(L,10241,9728),s.texParameteri(L,10240,9728);for(let fe=0;feV||E.height>V)&&(ie=V/Math.max(E.width,E.height)),ie<1||w===!0)if(typeof HTMLImageElement<"u"&&E instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&E instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&E instanceof ImageBitmap){let oe=w?Kh:Math.floor,Ae=oe(ie*E.width),pe=oe(ie*E.height);p===void 0&&(p=x(Ae,pe));let L=k?x(Ae,pe):p;return L.width=Ae,L.height=pe,L.getContext("2d").drawImage(E,0,0,Ae,pe),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+E.width+"x"+E.height+") to ("+Ae+"x"+pe+")."),L}else return"data"in E&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+E.width+"x"+E.height+")."),E;return E}function g(E){return Xa(E.width)&&Xa(E.height)}function f(E){return a?!1:E.wrapS!==St||E.wrapT!==St||E.minFilter!==ot&&E.minFilter!==gt}function M(E,w){return E.generateMipmaps&&w&&E.minFilter!==ot&&E.minFilter!==gt}function S(E,w,k,V){s.generateMipmap(E);let ie=n.get(w);ie.__maxMipLevel=Math.log2(Math.max(k,V))}function T(E,w,k){if(a===!1)return w;if(E!==null){if(s[E]!==void 0)return s[E];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+E+"'")}let V=w;return w===6403&&(k===5126&&(V=33326),k===5131&&(V=33325),k===5121&&(V=33321)),w===6407&&(k===5126&&(V=34837),k===5131&&(V=34843),k===5121&&(V=32849)),w===6408&&(k===5126&&(V=34836),k===5131&&(V=34842),k===5121&&(V=32856)),(V===33325||V===33326||V===34842||V===34836)&&e.get("EXT_color_buffer_float"),V}function v(E){return E===ot||E===Da||E===Fa?9728:9729}function R(E){let w=E.target;w.removeEventListener("dispose",R),F(w),w.isVideoTexture&&u.delete(w),o.memory.textures--}function I(E){let w=E.target;w.removeEventListener("dispose",I),B(w),o.memory.textures--}function F(E){let w=n.get(E);w.__webglInit!==void 0&&(s.deleteTexture(w.__webglTexture),n.remove(E))}function B(E){let w=E.texture,k=n.get(E),V=n.get(w);if(E){if(V.__webglTexture!==void 0&&s.deleteTexture(V.__webglTexture),E.depthTexture&&E.depthTexture.dispose(),E.isWebGLCubeRenderTarget)for(let ie=0;ie<6;ie++)s.deleteFramebuffer(k.__webglFramebuffer[ie]),k.__webglDepthbuffer&&s.deleteRenderbuffer(k.__webglDepthbuffer[ie]);else s.deleteFramebuffer(k.__webglFramebuffer),k.__webglDepthbuffer&&s.deleteRenderbuffer(k.__webglDepthbuffer),k.__webglMultisampledFramebuffer&&s.deleteFramebuffer(k.__webglMultisampledFramebuffer),k.__webglColorRenderbuffer&&s.deleteRenderbuffer(k.__webglColorRenderbuffer),k.__webglDepthRenderbuffer&&s.deleteRenderbuffer(k.__webglDepthRenderbuffer);n.remove(w),n.remove(E)}}let G=0;function O(){G=0}function A(){let E=G;return E>=l&&console.warn("THREE.WebGLTextures: Trying to use "+E+" texture units while this GPU supports only "+l),G+=1,E}function P(E,w){let k=n.get(E);if(E.isVideoTexture&&Y(E),E.version>0&&k.__version!==E.version){let V=E.image;if(V===void 0)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(V.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ue(k,E,w);return}}t.activeTexture(33984+w),t.bindTexture(3553,k.__webglTexture)}function D(E,w){let k=n.get(E);if(E.version>0&&k.__version!==E.version){ue(k,E,w);return}t.activeTexture(33984+w),t.bindTexture(35866,k.__webglTexture)}function C(E,w){let k=n.get(E);if(E.version>0&&k.__version!==E.version){ue(k,E,w);return}t.activeTexture(33984+w),t.bindTexture(32879,k.__webglTexture)}function q(E,w){let k=n.get(E);if(E.version>0&&k.__version!==E.version){xe(k,E,w);return}t.activeTexture(33984+w),t.bindTexture(34067,k.__webglTexture)}let $={[Vs]:10497,[St]:33071,[Ws]:33648},Z={[ot]:9728,[Da]:9984,[Fa]:9986,[gt]:9729,[jc]:9985,[ua]:9987};function se(E,w,k){if(k?(s.texParameteri(E,10242,$[w.wrapS]),s.texParameteri(E,10243,$[w.wrapT]),(E===32879||E===35866)&&s.texParameteri(E,32882,$[w.wrapR]),s.texParameteri(E,10240,Z[w.magFilter]),s.texParameteri(E,10241,Z[w.minFilter])):(s.texParameteri(E,10242,33071),s.texParameteri(E,10243,33071),(E===32879||E===35866)&&s.texParameteri(E,32882,33071),(w.wrapS!==St||w.wrapT!==St)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),s.texParameteri(E,10240,v(w.magFilter)),s.texParameteri(E,10241,v(w.minFilter)),w.minFilter!==ot&&w.minFilter!==gt&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){let V=e.get("EXT_texture_filter_anisotropic");if(w.type===$t&&e.has("OES_texture_float_linear")===!1||a===!1&&w.type===Sr&&e.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||n.get(w).__currentAnisotropy)&&(s.texParameterf(E,V.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,i.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy)}}function re(E,w){E.__webglInit===void 0&&(E.__webglInit=!0,w.addEventListener("dispose",R),E.__webglTexture=s.createTexture(),o.memory.textures++)}function ue(E,w,k){let V=3553;w.isDataTexture2DArray&&(V=35866),w.isDataTexture3D&&(V=32879),re(E,w),t.activeTexture(33984+k),t.bindTexture(V,E.__webglTexture),s.pixelStorei(37440,w.flipY),s.pixelStorei(37441,w.premultiplyAlpha),s.pixelStorei(3317,w.unpackAlignment),s.pixelStorei(37443,0);let ie=f(w)&&g(w.image)===!1,oe=y(w.image,ie,!1,h),Ae=g(oe)||a,pe=r.convert(w.format),L=r.convert(w.type),J=T(w.internalFormat,pe,L);se(V,w,Ae);let Q,ce=w.mipmaps;if(w.isDepthTexture)J=6402,a?w.type===$t?J=36012:w.type===wr?J=33190:w.type===bi?J=35056:J=33189:w.type===$t&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===kn&&J===6402&&w.type!==Mr&&w.type!==wr&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=Mr,L=r.convert(w.type)),w.format===Ai&&J===6402&&(J=34041,w.type!==bi&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=bi,L=r.convert(w.type))),t.texImage2D(3553,0,J,oe.width,oe.height,0,pe,L,null);else if(w.isDataTexture)if(ce.length>0&&Ae){for(let W=0,fe=ce.length;W0&&Ae){for(let W=0,fe=ce.length;Wp+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&u<=p-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));return a!==null&&(a.visible=i!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=o!==null),this}},$s=class extends Gt{constructor(e,t){super();let n=this,i=e.state,r=null,o=1,a=null,l="local-floor",c=null,h=[],d=new Map,u=new st;u.layers.enable(1),u.viewport=new Re;let p=new st;p.layers.enable(2),p.viewport=new Re;let m=[u,p],x=new zr;x.layers.enable(1),x.layers.enable(2);let y=null,g=null;this.enabled=!1,this.isPresenting=!1,this.getController=function(O){let A=h[O];return A===void 0&&(A=new Mi,h[O]=A),A.getTargetRaySpace()},this.getControllerGrip=function(O){let A=h[O];return A===void 0&&(A=new Mi,h[O]=A),A.getGripSpace()},this.getHand=function(O){let A=h[O];return A===void 0&&(A=new Mi,h[O]=A),A.getHandSpace()};function f(O){let A=d.get(O.inputSource);A&&A.dispatchEvent({type:O.type,data:O.inputSource})}function M(){d.forEach(function(O,A){O.disconnect(A)}),d.clear(),y=null,g=null,i.bindXRFramebuffer(null),e.setRenderTarget(e.getRenderTarget()),G.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(O){o=O,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(O){l=O,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return a},this.getSession=function(){return r},this.setSession=async function(O){if(r=O,r!==null){r.addEventListener("select",f),r.addEventListener("selectstart",f),r.addEventListener("selectend",f),r.addEventListener("squeeze",f),r.addEventListener("squeezestart",f),r.addEventListener("squeezeend",f),r.addEventListener("end",M),r.addEventListener("inputsourceschange",S);let A=t.getContextAttributes();A.xrCompatible!==!0&&await t.makeXRCompatible();let P={antialias:A.antialias,alpha:A.alpha,depth:A.depth,stencil:A.stencil,framebufferScaleFactor:o},D=new XRWebGLLayer(r,t,P);r.updateRenderState({baseLayer:D}),a=await r.requestReferenceSpace(l),G.setContext(r),G.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}};function S(O){let A=r.inputSources;for(let P=0;P0&&wa(Ee,_,z),me.length>0&&wa(me,_,z),M!==null&&(Me.updateRenderTargetMipmap(M),Me.updateMultisampleRenderTarget(M)),_.isScene===!0&&_.onAfterRender(x,_,z),de.buffers.depth.setTest(!0),de.buffers.depth.setMask(!0),de.buffers.color.setMask(!0),de.setPolygonOffset(!1),Q.resetDefaultState(),S=-1,T=null,m.pop(),m.length>0?u=m[m.length-1]:u=null,p.pop(),p.length>0?d=p[p.length-1]:d=null};function _a(_,z,N,U){if(_.visible===!1)return;if(_.layers.test(z.layers)){if(_.isGroup)N=_.renderOrder;else if(_.isLOD)_.autoUpdate===!0&&_.update(z);else if(_.isLight)u.pushLight(_),_.castShadow&&u.pushShadow(_);else if(_.isSprite){if(!_.frustumCulled||q.intersectsSprite(_)){U&&re.setFromMatrixPosition(_.matrixWorld).applyMatrix4(se);let me=le.update(_),_e=_.material;_e.visible&&d.push(_,me,_e,N,re.z,null)}}else if(_.isImmediateRenderObject)U&&re.setFromMatrixPosition(_.matrixWorld).applyMatrix4(se),d.push(_,null,_.material,N,re.z,null);else if((_.isMesh||_.isLine||_.isPoints)&&(_.isSkinnedMesh&&_.skeleton.frame!==Te.render.frame&&(_.skeleton.update(),_.skeleton.frame=Te.render.frame),!_.frustumCulled||q.intersectsObject(_))){U&&re.setFromMatrixPosition(_.matrixWorld).applyMatrix4(se);let me=le.update(_),_e=_.material;if(Array.isArray(_e)){let Be=me.groups;for(let ve=0,Le=Be.length;ve=0&&z<=_.width-U&&N>=0&&N<=_.height-te&&H.readPixels(z,N,U,te,J.convert(ve),J.convert(Le),Ee):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{let Be=M!==null?we.get(M).__webglFramebuffer:null;de.bindFramebuffer(36160,Be)}}},this.copyFramebufferToTexture=function(_,z,N=0){let U=Math.pow(2,-N),te=Math.floor(z.image.width*U),Ee=Math.floor(z.image.height*U),me=J.convert(z.format);Me.setTexture2D(z,0),H.copyTexImage2D(3553,N,me,_.x,_.y,te,Ee,0),de.unbindTexture()},this.copyTextureToTexture=function(_,z,N,U=0){let te=z.image.width,Ee=z.image.height,me=J.convert(N.format),_e=J.convert(N.type);Me.setTexture2D(N,0),H.pixelStorei(37440,N.flipY),H.pixelStorei(37441,N.premultiplyAlpha),H.pixelStorei(3317,N.unpackAlignment),z.isDataTexture?H.texSubImage2D(3553,U,_.x,_.y,te,Ee,me,_e,z.image.data):z.isCompressedTexture?H.compressedTexSubImage2D(3553,U,_.x,_.y,z.mipmaps[0].width,z.mipmaps[0].height,me,z.mipmaps[0].data):H.texSubImage2D(3553,U,_.x,_.y,me,_e,z.image),U===0&&N.generateMipmaps&&H.generateMipmap(3553),de.unbindTexture()},this.copyTextureToTexture3D=function(_,z,N,U,te=0){if(x.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let{width:Ee,height:me,data:_e}=N.image,Be=J.convert(U.format),ve=J.convert(U.type),Le;if(U.isDataTexture3D)Me.setTexture3D(U,0),Le=32879;else if(U.isDataTexture2DArray)Me.setTexture2DArray(U,0),Le=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}H.pixelStorei(37440,U.flipY),H.pixelStorei(37441,U.premultiplyAlpha),H.pixelStorei(3317,U.unpackAlignment);let ge=H.getParameter(3314),Pe=H.getParameter(32878),At=H.getParameter(3316),rt=H.getParameter(3315),cn=H.getParameter(32877);H.pixelStorei(3314,Ee),H.pixelStorei(32878,me),H.pixelStorei(3316,_.min.x),H.pixelStorei(3315,_.min.y),H.pixelStorei(32877,_.min.z),H.texSubImage3D(Le,te,z.x,z.y,z.z,_.max.x-_.min.x+1,_.max.y-_.min.y+1,_.max.z-_.min.z+1,Be,ve,_e),H.pixelStorei(3314,ge),H.pixelStorei(32878,Pe),H.pixelStorei(3316,At),H.pixelStorei(3315,rt),H.pixelStorei(32877,cn),te===0&&U.generateMipmaps&&H.generateMipmap(Le),de.unbindTexture()},this.initTexture=function(_){Me.setTexture2D(_,0),de.unbindTexture()},this.resetState=function(){g=0,f=0,M=null,de.reset(),Q.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var Qs=class extends De{};Qs.prototype.isWebGL1Renderer=!0;var Ks=class s{constructor(e,t=25e-5){this.name="",this.color=new ae(e),this.density=t}clone(){return new s(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}};Ks.prototype.isFogExp2=!0;var eo=class s{constructor(e,t=1,n=1e3){this.name="",this.color=new ae(e),this.near=t,this.far=n}clone(){return new s(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}};eo.prototype.isFog=!0;var Yn=class extends Ie{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.background!==null&&(t.object.background=this.background.toJSON(e)),this.environment!==null&&(t.object.environment=this.environment.toJSON(e)),this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}};Yn.prototype.isScene=!0;var gn=class s{constructor(e,t){this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Li,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Tt(),this.onUploadCallback=function(){}}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;ie.far||t.push({distance:l,point:di.clone(),uv:tt.getUV(di,lr,pi,cr,yl,Ns,vl,new X),face:null,object:this})}copy(e){return super.copy(e),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};to.prototype.isSprite=!0;function hr(s,e,t,n,i,r){Bn.subVectors(s,t).addScalar(.5).multiply(n),i!==void 0?(fi.x=r*Bn.x-i*Bn.y,fi.y=i*Bn.x+r*Bn.y):fi.copy(Bn),s.copy(e),s.x+=fi.x,s.y+=fi.y,s.applyMatrix4(uc)}var _l=new b,wl=new Re,bl=new Re,Mm=new b,Ml=new he,Ur=class extends at{constructor(e,t){super(e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new he,this.bindMatrixInverse=new he}copy(e){return super.copy(e),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let e=new Re,t=this.geometry.attributes.skinWeight;for(let n=0,i=t.count;nl)continue;u.applyMatrix4(this.matrixWorld);let I=e.ray.origin.distanceTo(u);Ie.far||t.push({distance:I,point:d.clone().applyMatrix4(this.matrixWorld),index:M,face:null,faceIndex:null,object:this})}}else{let g=Math.max(0,o.start),f=Math.min(y.count,o.start+o.count);for(let M=g,S=f-1;Ml)continue;u.applyMatrix4(this.matrixWorld);let v=e.ray.origin.distanceTo(u);ve.far||t.push({distance:v,point:d.clone().applyMatrix4(this.matrixWorld),index:M,face:null,faceIndex:null,object:this})}}}else n.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){let e=this.geometry;if(e.isBufferGeometry){let t=e.morphAttributes,n=Object.keys(t);if(n.length>0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}};Fi.prototype.isLine=!0;var Rl=new b,Cl=new b,Ni=class extends Fi{constructor(e,t){super(e,t),this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(e.isBufferGeometry)if(e.index===null){let t=e.attributes.position,n=[];for(let i=0,r=t.count;i0){let i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}};oo.prototype.isPoints=!0;function Il(s,e,t,n,i,r,o){let a=so.distanceSqToPoint(s);if(ai.far)return;r.push({distance:c,distanceToRay:Math.sqrt(a),point:l,index:e,face:null,object:o})}}var ao=class extends nt{constructor(e,t,n,i,r,o,a,l,c){super(e,t,n,i,r,o,a,l,c),this.format=a!==void 0?a:mn,this.minFilter=o!==void 0?o:gt,this.magFilter=r!==void 0?r:gt,this.generateMipmaps=!1;let h=this;function d(){h.needsUpdate=!0,e.requestVideoFrameCallback(d)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(d)}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}};ao.prototype.isVideoTexture=!0;var lo=class extends nt{constructor(e,t,n,i,r,o,a,l,c,h,d,u){super(null,o,a,l,c,h,i,r,d,u),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}};lo.prototype.isCompressedTexture=!0;var co=class extends nt{constructor(e,t,n,i,r,o,a,l,c){super(e,t,n,i,r,o,a,l,c),this.needsUpdate=!0}};co.prototype.isCanvasTexture=!0;var ho=class extends nt{constructor(e,t,n,i,r,o,a,l,c,h){if(h=h!==void 0?h:kn,h!==kn&&h!==Ai)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===kn&&(n=Mr),n===void 0&&h===Ai&&(n=bi),super(null,i,r,o,a,l,h,n,c),this.image={width:e,height:t},this.magFilter=a!==void 0?a:ot,this.minFilter=l!==void 0?l:ot,this.flipY=!1,this.generateMipmaps=!1}};ho.prototype.isDepthTexture=!0;var uo=class extends ze{constructor(e,t,n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};let r=[],o=[];a(i),c(n),h(),this.setAttribute("position",new ke(r,3)),this.setAttribute("normal",new ke(r.slice(),3)),this.setAttribute("uv",new ke(o,2)),i===0?this.computeVertexNormals():this.normalizeNormals();function a(f){let M=new b,S=new b,T=new b;for(let v=0;v.9&&R<.1&&(M<.2&&(o[f+0]+=1),S<.2&&(o[f+2]+=1),T<.2&&(o[f+4]+=1))}}function u(f){r.push(f.x,f.y,f.z)}function p(f,M){let S=f*3;M.x=e[S+0],M.y=e[S+1],M.z=e[S+2]}function m(){let f=new b,M=new b,S=new b,T=new b,v=new X,R=new X,I=new X;for(let F=0,B=0;F80*t){a=c=s[0],l=h=s[1];for(let m=t;mc&&(c=d),u>h&&(h=u);p=Math.max(c-a,h-l),p=p!==0?1/p:0}return Bi(r,o,t,a,l,p),o}};function dc(s,e,t,n,i){let r,o;if(i===Hm(s,e,t,n)>0)for(r=e;r=e;r-=n)o=Dl(r,s[r],s[r+1],o);return o&&is(o,o.next)&&(Oi(o),o=o.next),o}function rn(s,e){if(!s)return s;e||(e=s);let t=s,n;do if(n=!1,!t.steiner&&(is(t,t.next)||He(t.prev,t,t.next)===0)){if(Oi(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function Bi(s,e,t,n,i,r,o){if(!s)return;!o&&r&&Fm(s,n,i,r);let a=s,l,c;for(;s.prev!==s.next;){if(l=s.prev,c=s.next,r?Tm(s,n,i,r):Em(s)){e.push(l.i/t),e.push(s.i/t),e.push(c.i/t),Oi(s),s=c.next,a=c.next;continue}if(s=c,s===a){o?o===1?(s=Am(rn(s),e,t),Bi(s,e,t,n,i,r,2)):o===2&&Lm(s,e,t,n,i,r):Bi(rn(s),e,t,n,i,r,1);break}}}function Em(s){let e=s.prev,t=s,n=s.next;if(He(e,t,n)>=0)return!1;let i=s.next.next;for(;i!==s.prev;){if(Gn(e.x,e.y,t.x,t.y,n.x,n.y,i.x,i.y)&&He(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Tm(s,e,t,n){let i=s.prev,r=s,o=s.next;if(He(i,r,o)>=0)return!1;let a=i.xr.x?i.x>o.x?i.x:o.x:r.x>o.x?r.x:o.x,h=i.y>r.y?i.y>o.y?i.y:o.y:r.y>o.y?r.y:o.y,d=fo(a,l,e,t,n),u=fo(c,h,e,t,n),p=s.prevZ,m=s.nextZ;for(;p&&p.z>=d&&m&&m.z<=u;){if(p!==s.prev&&p!==s.next&&Gn(i.x,i.y,r.x,r.y,o.x,o.y,p.x,p.y)&&He(p.prev,p,p.next)>=0||(p=p.prevZ,m!==s.prev&&m!==s.next&&Gn(i.x,i.y,r.x,r.y,o.x,o.y,m.x,m.y)&&He(m.prev,m,m.next)>=0))return!1;m=m.nextZ}for(;p&&p.z>=d;){if(p!==s.prev&&p!==s.next&&Gn(i.x,i.y,r.x,r.y,o.x,o.y,p.x,p.y)&&He(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;m&&m.z<=u;){if(m!==s.prev&&m!==s.next&&Gn(i.x,i.y,r.x,r.y,o.x,o.y,m.x,m.y)&&He(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function Am(s,e,t){let n=s;do{let i=n.prev,r=n.next.next;!is(i,r)&&fc(i,n,n.next,r)&&zi(i,r)&&zi(r,i)&&(e.push(i.i/t),e.push(n.i/t),e.push(r.i/t),Oi(n),Oi(n.next),n=s=r),n=n.next}while(n!==s);return rn(n)}function Lm(s,e,t,n,i,r){let o=s;do{let a=o.next.next;for(;a!==o.prev;){if(o.i!==a.i&&zm(o,a)){let l=pc(o,a);o=rn(o,o.next),l=rn(l,l.next),Bi(o,e,t,n,i,r),Bi(l,e,t,n,i,r);return}a=a.next}o=o.next}while(o!==s)}function Rm(s,e,t,n){let i=[],r,o,a,l,c;for(r=0,o=e.length;r=t.next.y&&t.next.y!==t.y){let u=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(u<=n&&u>r){if(r=u,u===n){if(i===t.y)return t;if(i===t.next.y)return t.next}o=t.x=t.x&&t.x>=l&&n!==t.x&&Gn(io.x||t.x===o.x&&Dm(o,t)))&&(o=t,h=d)),t=t.next;while(t!==a);return o}function Dm(s,e){return He(s.prev,s,e.prev)<0&&He(e.next,s,s.next)<0}function Fm(s,e,t,n){let i=s;do i.z===null&&(i.z=fo(i.x,i.y,e,t,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==s);i.prevZ.nextZ=null,i.prevZ=null,Nm(i)}function Nm(s){let e,t,n,i,r,o,a,l,c=1;do{for(t=s,s=null,r=null,o=0;t;){for(o++,n=t,a=0,e=0;e0||l>0&&n;)a!==0&&(l===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,a--):(i=n,n=n.nextZ,l--),r?r.nextZ=i:s=i,i.prevZ=r,r=i;t=n}r.nextZ=null,c*=2}while(o>1);return s}function fo(s,e,t,n,i){return s=32767*(s-t)*i,e=32767*(e-n)*i,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,s|e<<1}function Bm(s){let e=s,t=s;do(e.x=0&&(s-o)*(n-a)-(t-o)*(e-a)>=0&&(t-o)*(r-a)-(i-o)*(n-a)>=0}function zm(s,e){return s.next.i!==e.i&&s.prev.i!==e.i&&!Om(s,e)&&(zi(s,e)&&zi(e,s)&&Um(s,e)&&(He(s.prev,s,e.prev)||He(s,e.prev,e))||is(s,e)&&He(s.prev,s,s.next)>0&&He(e.prev,e,e.next)>0)}function He(s,e,t){return(e.y-s.y)*(t.x-e.x)-(e.x-s.x)*(t.y-e.y)}function is(s,e){return s.x===e.x&&s.y===e.y}function fc(s,e,t,n){let i=gr(He(s,e,t)),r=gr(He(s,e,n)),o=gr(He(t,n,s)),a=gr(He(t,n,e));return!!(i!==r&&o!==a||i===0&&mr(s,t,e)||r===0&&mr(s,n,e)||o===0&&mr(t,s,n)||a===0&&mr(t,e,n))}function mr(s,e,t){return e.x<=Math.max(s.x,t.x)&&e.x>=Math.min(s.x,t.x)&&e.y<=Math.max(s.y,t.y)&&e.y>=Math.min(s.y,t.y)}function gr(s){return s>0?1:s<0?-1:0}function Om(s,e){let t=s;do{if(t.i!==s.i&&t.next.i!==s.i&&t.i!==e.i&&t.next.i!==e.i&&fc(t,t.next,s,e))return!0;t=t.next}while(t!==s);return!1}function zi(s,e){return He(s.prev,s,s.next)<0?He(s,e,s.next)>=0&&He(s,s.prev,e)>=0:He(s,e,s.prev)<0||He(s,s.next,e)<0}function Um(s,e){let t=s,n=!1,i=(s.x+e.x)/2,r=(s.y+e.y)/2;do t.y>r!=t.next.y>r&&t.next.y!==t.y&&i<(t.next.x-t.x)*(r-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==s);return n}function pc(s,e){let t=new po(s.i,s.x,s.y),n=new po(e.i,e.x,e.y),i=s.next,r=e.prev;return s.next=e,e.prev=s,t.next=i,i.prev=t,n.next=t,t.prev=n,r.next=n,n.prev=r,n}function Dl(s,e,t,n){let i=new po(s,e,t);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Oi(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function po(s,e,t){this.i=s,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Hm(s,e,t,n){let i=0;for(let r=e,o=t-n;r2&&s[e-1].equals(s[0])&&s.pop()}function Nl(s,e){for(let t=0;tNumber.EPSILON){let pe=Math.sqrt(oe),L=Math.sqrt(V*V+ie*ie),J=j.x-k/pe,Q=j.y+w/pe,ce=ee.x-ie/L,W=ee.y+V/L,fe=((ce-J)*ie-(W-Q)*V)/(w*ie-k*V);le=J+w*fe-Y.x,ne=Q+k*fe-Y.y;let Ce=le*le+ne*ne;if(Ce<=2)return new X(le,ne);E=Math.sqrt(Ce/2)}else{let pe=!1;w>Number.EPSILON?V>Number.EPSILON&&(pe=!0):w<-Number.EPSILON?V<-Number.EPSILON&&(pe=!0):Math.sign(k)===Math.sign(ie)&&(pe=!0),pe?(le=-k,ne=w,E=Math.sqrt(oe)):(le=w,ne=k,E=Math.sqrt(oe/2))}return new X(le/E,ne/E)}let Z=[];for(let Y=0,j=P.length,ee=j-1,le=Y+1;Y=0;Y--){let j=Y/y,ee=p*Math.cos(j*Math.PI/2),le=m*Math.sin(j*Math.PI/2)+x;for(let ne=0,E=P.length;ne=0;){let le=ee,ne=ee-1;ne<0&&(ne=Y.length-1);for(let E=0,w=h+y*2;E=n)){d.push(c.times[p]);for(let x=0;xr.tracks[l].times[0]&&(a=r.tracks[l].times[0]);for(let l=0;l=a.times[m]){let g=m*d+h,f=g+d-h;x=Ue.arraySlice(a.values,g,f)}else{let g=a.createInterpolant(),f=h,M=d-h;g.evaluate(r),x=Ue.arraySlice(g.resultBuffer,f,M)}l==="quaternion"&&new Ke().fromArray(x).normalize().conjugate().toArray(x);let y=c.times.length;for(let g=0;g=r)){let a=t[1];e=r)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,r!==0||o!==i){r>=o&&(o=Math.max(o,1),r=o-1);let a=this.getValueSize();this.times=Ue.arraySlice(n,r,o),this.values=Ue.arraySlice(this.values,r*a,o*a)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,r=n.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let a=0;a!==r;a++){let l=n[a];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,l),e=!1;break}if(o!==null&&o>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,l,o),e=!1;break}o=l}if(i!==void 0&&Ue.isTypedArray(i))for(let a=0,l=i.length;a!==l;++a){let c=i[a];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,c),e=!1;break}}return e}optimize(){let e=Ue.arraySlice(this.times),t=Ue.arraySlice(this.values),n=this.getValueSize(),i=this.getInterpolation()===as,r=e.length-1,o=1;for(let a=1;a0){e[o]=e[r];for(let a=r*n,l=o*n,c=0;c!==n;++c)t[l+c]=t[a+c];++o}return o!==e.length?(this.times=Ue.arraySlice(e,0,o),this.values=Ue.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){let e=Ue.arraySlice(this.times,0),t=Ue.arraySlice(this.values,0),n=this.constructor,i=new n(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};xt.prototype.TimeBufferType=Float32Array;xt.prototype.ValueBufferType=Float32Array;xt.prototype.DefaultInterpolation=Tr;var sn=class extends xt{};sn.prototype.ValueTypeName="bool";sn.prototype.ValueBufferType=Array;sn.prototype.DefaultInterpolation=Er;sn.prototype.InterpolantFactoryMethodLinear=void 0;sn.prototype.InterpolantFactoryMethodSmooth=void 0;var Vr=class extends xt{};Vr.prototype.ValueTypeName="color";var jn=class extends xt{};jn.prototype.ValueTypeName="number";var Ao=class extends Ct{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let r=this.resultBuffer,o=this.sampleValues,a=this.valueSize,l=(n-t)/(i-t),c=e*a;for(let h=c+a;c!==h;c+=4)Ke.slerpFlat(r,0,o,c-a,o,c,l);return r}},yn=class extends xt{InterpolantFactoryMethodLinear(e){return new Ao(this.times,this.values,this.getValueSize(),e)}};yn.prototype.ValueTypeName="quaternion";yn.prototype.DefaultInterpolation=Tr;yn.prototype.InterpolantFactoryMethodSmooth=void 0;var on=class extends xt{};on.prototype.ValueTypeName="string";on.prototype.ValueBufferType=Array;on.prototype.DefaultInterpolation=Er;on.prototype.InterpolantFactoryMethodLinear=void 0;on.prototype.InterpolantFactoryMethodSmooth=void 0;var $n=class extends xt{};$n.prototype.ValueTypeName="vector";var Wr=class{constructor(e,t=-1,n,i=fa){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Tt(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let o=0,a=n.length;o!==a;++o)t.push(qm(n[o]).scale(i));let r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let r=0,o=n.length;r!==o;++r)t.push(xt.toJSON(n[r]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let r=t.length,o=[];for(let a=0;a1){let d=h[1],u=i[d];u||(i[d]=u=[]),u.push(c)}}let o=[];for(let a in i)o.push(this.CreateFromMorphTargetSequence(a,i[a],t,n));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let n=function(d,u,p,m,x){if(p.length!==0){let y=[],g=[];Ue.flattenJSON(p,y,g,m),y.length!==0&&x.push(new d(u,y,g))}},i=[],r=e.name||"default",o=e.fps||30,a=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let d=0;d0||e.search(/^data\:image\/jpeg/)===0;r.format=l?mn:Et,r.needsUpdate=!0,t!==void 0&&t(r)},n,i),r}},dt=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,i=this.getPoint(0),r=0;t.push(0);for(let o=1;o<=e;o++)n=this.getPoint(o/e),r+=n.distanceTo(i),t.push(r),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let n=this.getLengths(),i=0,r=n.length,o;t?o=t:o=e*n[r-1];let a=0,l=r-1,c;for(;a<=l;)if(i=Math.floor(a+(l-a)/2),c=n[i]-o,c<0)a=i+1;else if(c>0)l=i-1;else{l=i;break}if(i=l,n[i]===o)return i/(r-1);let h=n[i],u=n[i+1]-h,p=(o-h)/u;return(i+p)/(r-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let o=this.getPoint(i),a=this.getPoint(r),l=t||(o.isVector2?new X:new b);return l.copy(a).sub(o).normalize(),l}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new b,i=[],r=[],o=[],a=new b,l=new he;for(let p=0;p<=e;p++){let m=p/e;i[p]=this.getTangentAt(m,new b),i[p].normalize()}r[0]=new b,o[0]=new b;let c=Number.MAX_VALUE,h=Math.abs(i[0].x),d=Math.abs(i[0].y),u=Math.abs(i[0].z);h<=c&&(c=h,n.set(1,0,0)),d<=c&&(c=d,n.set(0,1,0)),u<=c&&n.set(0,0,1),a.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],a),o[0].crossVectors(i[0],r[0]);for(let p=1;p<=e;p++){if(r[p]=r[p-1].clone(),o[p]=o[p-1].clone(),a.crossVectors(i[p-1],i[p]),a.length()>Number.EPSILON){a.normalize();let m=Math.acos(ht(i[p-1].dot(i[p]),-1,1));r[p].applyMatrix4(l.makeRotationAxis(a,m))}o[p].crossVectors(i[p],r[p])}if(t===!0){let p=Math.acos(ht(r[0].dot(r[e]),-1,1));p/=e,i[0].dot(a.crossVectors(r[0],r[e]))>0&&(p=-p);for(let m=1;m<=e;m++)r[m].applyMatrix4(l.makeRotationAxis(i[m],p*m)),o[m].crossVectors(i[m],r[m])}return{tangents:i,normals:r,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},Kn=class extends dt{constructor(e=0,t=0,n=1,i=1,r=0,o=Math.PI*2,a=!1,l=0){super(),this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=o,this.aClockwise=a,this.aRotation=l}getPoint(e,t){let n=t||new X,i=Math.PI*2,r=this.aEndAngle-this.aStartAngle,o=Math.abs(r)i;)r-=i;r0?0:(Math.floor(Math.abs(a)/r)+1)*r:l===0&&a===r-1&&(a=r-2,l=1);let c,h;this.closed||a>0?c=i[(a-1)%r]:(xr.subVectors(i[0],i[1]).add(i[0]),c=xr);let d=i[a%r],u=i[(a+1)%r];if(this.closed||a+2i.length-2?i.length-1:o+1],d=i[o>i.length-3?i.length-1:o+2];return n.set(Bl(a,l.x,c.x,h.x,d.x),Bl(a,l.y,c.y,h.y,d.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=t){let r=n[i]-t,o=this.curves[i],a=o.getLength(),l=a===0?0:1-r/a;return o.getPointAt(l)}i++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let d=c.getPoint(0);d.equals(this.currentPoint)||this.lineTo(d.x,d.y)}this.curves.push(c);let h=c.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},Kt=class extends ti{constructor(e){super(e),this.uuid=Tt(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let n=0,i=this.holes.length;n"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,n,i){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let r=this,o=Qn.get(e);if(o!==void 0)return r.manager.itemStart(e),setTimeout(function(){t&&t(o),r.manager.itemEnd(e)},0),o;let a={};a.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(l){Qn.add(e,l),t&&t(l),r.manager.itemEnd(e)}).catch(function(l){i&&i(l),r.manager.itemError(e),r.manager.itemEnd(e)}),r.manager.itemStart(e)}};Go.prototype.isImageBitmapLoader=!0;var ko=class{constructor(){this.type="ShapePath",this.color=new ae,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new ti,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,o){return this.currentPath.bezierCurveTo(e,t,n,i,r,o),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e,t){function n(f){let M=[];for(let S=0,T=f.length;SNumber.EPSILON){if(G<0&&(I=M[R],B=-B,F=M[v],G=-G),f.yF.y)continue;if(f.y===I.y){if(f.x===I.x)return!0}else{let O=G*(f.x-I.x)-B*(f.y-I.y);if(O===0)return!0;if(O<0)continue;T=!T}}else{if(f.y!==I.y)continue;if(F.x<=f.x&&f.x<=I.x||I.x<=f.x&&f.x<=F.x)return!0}}return T}let r=Ht.isClockWise,o=this.subPaths;if(o.length===0)return[];if(t===!0)return n(o);let a,l,c,h=[];if(o.length===1)return l=o[0],c=new Kt,c.curves=l.curves,h.push(c),h;let d=!r(o[0].getPoints());d=e?!d:d;let u=[],p=[],m=[],x=0,y;p[x]=void 0,m[x]=[];for(let f=0,M=o.length;f1){let f=!1,M=[];for(let S=0,T=p.length;S0&&(f||(m=u))}let g;for(let f=0,M=p.length;f0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(n[l]!==n[l+t]){a.setValue(n,i);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let r=n,o=i;r!==o;++r)t[r]=t[i+r%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let o=0;o!==r;++o)e[t+o]=e[n+o]}_slerp(e,t,n,i){Ke.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){let o=this._workIndex*r;Ke.multiplyQuaternionsFlat(e,o,e,t,e,n),Ke.slerpFlat(e,t,e,t,e,o,i)}_lerp(e,t,n,i,r){let o=1-i;for(let a=0;a!==r;++a){let l=t+a;e[l]=e[l]*o+e[n+a]*i}}_lerpAdditive(e,t,n,i,r){for(let o=0;o!==r;++o){let a=t+o;e[a]=e[a]+e[n+o]*i}}},ga="\\[\\]\\.:\\/",rg=new RegExp("["+ga+"]","g"),xa="[^"+ga+"]",sg="[^"+ga.replace("\\.","")+"]",og=/((?:WC+[\/:])*)/.source.replace("WC",xa),ag=/(WCOD+)?/.source.replace("WCOD",sg),lg=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",xa),cg=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",xa),hg=new RegExp("^"+og+ag+lg+cg+"$"),ug=["material","materials","bones"],jo=class{constructor(e,t,n){let i=n||Fe.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(e,t)}setValue(e,t){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},Fe=class s{constructor(e,t,n){this.path=t,this.parsedPath=n||s.parseTrackName(t),this.node=s.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new s.Composite(e,t,n):new s(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(rg,"")}static parseTrackName(e){let t=hg.exec(e);if(!t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let r=n.nodeName.substring(i+1);ug.indexOf(r)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=r)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(!t||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){let n=function(r){for(let o=0;o=r){let d=r++,u=e[d];t[u.uuid]=h,e[h]=u,t[c]=d,e[d]=l;for(let p=0,m=i;p!==m;++p){let x=n[p],y=x[d],g=x[h];x[h]=y,x[d]=g}}}this.nCachedObjects_=r}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,o=e.length;for(let a=0,l=arguments.length;a!==l;++a){let c=arguments[a],h=c.uuid,d=t[h];if(d!==void 0)if(delete t[h],d0&&(t[p.uuid]=d),e[d]=p,e.pop();for(let m=0,x=i;m!==x;++m){let y=n[m];y[d]=y[u],y.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){let n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(i!==void 0)return r[i];let o=this._paths,a=this._parsedPaths,l=this._objects,c=l.length,h=this.nCachedObjects_,d=new Array(c);i=r.length,n[e]=i,o.push(e),a.push(t),r.push(d);for(let u=h,p=l.length;u!==p;++u){let m=l[u];d[u]=new Fe(m,e,t)}return d}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(n!==void 0){let i=this._paths,r=this._parsedPaths,o=this._bindings,a=o.length-1,l=o[a],c=e[a];t[c]=n,o[n]=l,o.pop(),r[n]=r[a],r.pop(),i[n]=i[a],i.pop()}}};$o.prototype.isAnimationObjectGroup=!0;var Qo=class{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;let r=t.tracks,o=r.length,a=new Array(o),l={endingStart:Un,endingEnd:Un};for(let c=0;c!==o;++c){let h=r[c].createInterpolant(null);a[c]=h,h.settings=l}this._interpolantSettings=l,this._interpolants=a,this._propertyBindings=new Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Vh,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){let i=this._clip.duration,r=e._clip.duration,o=r/i,a=i/r;e.warp(1,o,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){let i=this._mixer,r=i.time,o=this.timeScale,a=this._timeScaleInterpolant;a===null&&(a=i._lendControlInterpolant(),this._timeScaleInterpolant=a);let l=a.parameterPositions,c=a.sampleValues;return l[0]=r,l[1]=r+n,c[0]=e/o,c[1]=t/o,this}stopWarping(){let e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled){this._updateWeight(e);return}let r=this._startTime;if(r!==null){let l=(e-r)*n;if(l<0||n===0)return;this._startTime=null,t=n*l}t*=this._updateTimeScale(e);let o=this._updateTime(t),a=this._updateWeight(e);if(a>0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case Zl:for(let h=0,d=l.length;h!==d;++h)l[h].evaluate(o),c[h].accumulateAdditive(a);break;case fa:default:for(let h=0,d=l.length;h!==d;++h)l[h].evaluate(o),c[h].accumulate(i,a)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(n!==null){let i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),i===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;if(n!==null){let i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,i=this.time+e,r=this._loopCount,o=n===Wh;if(e===0)return r===-1?i:o&&(r&1)===1?t-i:i;if(n===kh){r===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(i>=t)i=t;else if(i<0)i=0;else{this.time=i;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(r===-1&&(e>=0?(r=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),i>=t||i<0){let a=Math.floor(i/t);i-=t*a,r+=Math.abs(a);let l=this.repetitions-r;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}else this.time=i;if(o&&(r&1)===1)return t-i}return i}_setEndings(e,t,n){let i=this._interpolantSettings;n?(i.endingStart=Hn,i.endingEnd=Hn):(e?i.endingStart=this.zeroSlopeAtStart?Hn:Un:i.endingStart=Ar,t?i.endingEnd=this.zeroSlopeAtEnd?Hn:Un:i.endingEnd=Ar)}_scheduleFading(e,t,n){let i=this._mixer,r=i.time,o=this._weightInterpolant;o===null&&(o=i._lendControlInterpolant(),this._weightInterpolant=o);let a=o.parameterPositions,l=o.sampleValues;return a[0]=r,l[0]=t,a[1]=r+e,l[1]=n,this}},Ko=class extends Gt{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,o=e._propertyBindings,a=e._interpolants,l=n.uuid,c=this._bindingsByRootAndName,h=c[l];h===void 0&&(h={},c[l]=h);for(let d=0;d!==r;++d){let u=i[d],p=u.name,m=h[p];if(m!==void 0)o[d]=m;else{if(m=o[d],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,p));continue}let x=t&&t._propertyBindings[d].binding.parsedPath;m=new Jo(Fe.create(n,p,x),u.ValueTypeName,u.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,p),o[d]=m}a[d].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let n=(e._localRoot||this._root).uuid,i=e._clip.uuid,r=this._actionsByClip[i];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,i,n)}let t=e._propertyBindings;for(let n=0,i=t.length;n!==i;++n){let r=t[n];r.useCount++===0&&(this._lendBinding(r),r.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let n=0,i=t.length;n!==i;++n){let r=t[n];--r.useCount===0&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),o=this._accuIndex^=1;for(let c=0;c!==n;++c)t[c]._update(i,e,r,o);let a=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)a[c].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t===void 0&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new X),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t===void 0&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new X),t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return Gl.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};vn.prototype.isBox2=!0;var kl=new b,vr=new b,ia=class{constructor(e=new b,t=new b){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e===void 0&&(console.warn("THREE.Line3: .getCenter() target is now required"),e=new b),e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e===void 0&&(console.warn("THREE.Line3: .delta() target is now required"),e=new b),e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return t===void 0&&(console.warn("THREE.Line3: .at() target is now required"),t=new b),this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){kl.subVectors(e,this.start),vr.subVectors(this.end,this.start);let n=vr.dot(vr),r=vr.dot(kl)/n;return t&&(r=ht(r,0,1)),r}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return n===void 0&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new b),this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},ra=class extends Ie{constructor(e){super(),this.material=e,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}};ra.prototype.isImmediateRenderObject=!0;var jt=new b,_r=new he,Gs=new he,sa=class extends Ni{constructor(e){let t=mc(e),n=new ze,i=[],r=[],o=new ae(0,0,1),a=new ae(0,1,0);for(let c=0;cTi-br?o=gc[i-Ti+br-1]:i==0&&(o=0),t.push(o);let a=1/(r-1),l=-a/2,c=1+a/2,h=[l,l,c,l,c,c,l,l,c,c,l,c],d=6,u=6,p=3,m=2,x=1,y=new Float32Array(p*u*d),g=new Float32Array(m*u*d),f=new Float32Array(x*u*d);for(let S=0;S2?0:-1,R=[T,v,0,T+2/3,v,0,T+2/3,v+1,0,T,v,0,T+2/3,v+1,0,T,v+1,0];y.set(R,p*u*S),g.set(h,m*u*S);let I=[S,S,S,S,S,S];f.set(I,x*u*S)}let M=new ze;M.setAttribute("position",new Ge(y,p)),M.setAttribute("uv",new Ge(g,m)),M.setAttribute("faceIndex",new Ge(f,x)),s.push(M),n>br&&n--}return{_lodPlanes:s,_sizeLods:e,_sigmas:t}}dt.create=function(s,e){return console.log("THREE.Curve.create() has been deprecated"),s.prototype=Object.create(dt.prototype),s.prototype.constructor=s,s.prototype.getPoint=e,s};ti.prototype.fromPoints=function(s){return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(s)};oa.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")};sa.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")};Pt.prototype.extractUrlBase=function(s){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),Oo.extractUrlBase(s)};Pt.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}};vn.prototype.center=function(s){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(s)};vn.prototype.empty=function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()};vn.prototype.isIntersectionBox=function(s){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(s)};vn.prototype.size=function(s){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(s)};ut.prototype.center=function(s){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(s)};ut.prototype.empty=function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()};ut.prototype.isIntersectionBox=function(s){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(s)};ut.prototype.isIntersectionSphere=function(s){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(s)};ut.prototype.size=function(s){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(s)};tn.prototype.empty=function(){return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."),this.isEmpty()};Xn.prototype.setFromMatrix=function(s){return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),this.setFromProjectionMatrix(s)};ia.prototype.center=function(s){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(s)};Ze.prototype.flattenToArrayOffset=function(s,e){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(s,e)};Ze.prototype.multiplyVector3=function(s){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),s.applyMatrix3(this)};Ze.prototype.multiplyVector3Array=function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")};Ze.prototype.applyToBufferAttribute=function(s){return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),s.applyMatrix3(this)};Ze.prototype.applyToVector3Array=function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")};Ze.prototype.getInverse=function(s){return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(s).invert()};he.prototype.extractPosition=function(s){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(s)};he.prototype.flattenToArrayOffset=function(s,e){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(s,e)};he.prototype.getPosition=function(){return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),new b().setFromMatrixColumn(this,3)};he.prototype.setRotationFromQuaternion=function(s){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(s)};he.prototype.multiplyToArray=function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")};he.prototype.multiplyVector3=function(s){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),s.applyMatrix4(this)};he.prototype.multiplyVector4=function(s){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),s.applyMatrix4(this)};he.prototype.multiplyVector3Array=function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")};he.prototype.rotateAxis=function(s){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),s.transformDirection(this)};he.prototype.crossVector=function(s){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),s.applyMatrix4(this)};he.prototype.translate=function(){console.error("THREE.Matrix4: .translate() has been removed.")};he.prototype.rotateX=function(){console.error("THREE.Matrix4: .rotateX() has been removed.")};he.prototype.rotateY=function(){console.error("THREE.Matrix4: .rotateY() has been removed.")};he.prototype.rotateZ=function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")};he.prototype.rotateByAxis=function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")};he.prototype.applyToBufferAttribute=function(s){return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),s.applyMatrix4(this)};he.prototype.applyToVector3Array=function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")};he.prototype.makeFrustum=function(s,e,t,n,i,r){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(s,e,n,t,i,r)};he.prototype.getInverse=function(s){return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(s).invert()};mt.prototype.isIntersectionLine=function(s){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(s)};Ke.prototype.multiplyVector3=function(s){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),s.applyQuaternion(this)};Ke.prototype.inverse=function(){return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."),this.invert()};nn.prototype.isIntersectionBox=function(s){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(s)};nn.prototype.isIntersectionPlane=function(s){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(s)};nn.prototype.isIntersectionSphere=function(s){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(s)};tt.prototype.area=function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()};tt.prototype.barycoordFromPoint=function(s,e){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(s,e)};tt.prototype.midpoint=function(s){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(s)};tt.prototypenormal=function(s){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(s)};tt.prototype.plane=function(s){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(s)};tt.barycoordFromPoint=function(s,e,t,n,i){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),tt.getBarycoord(s,e,t,n,i)};tt.normal=function(s,e,t,n){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),tt.getNormal(s,e,t,n)};Kt.prototype.extractAllPoints=function(s){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(s)};Kt.prototype.extrude=function(s){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new Zn(this,s)};Kt.prototype.makeGeometry=function(s){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new mo(this,s)};X.prototype.fromAttribute=function(s,e,t){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(s,e,t)};X.prototype.distanceToManhattan=function(s){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(s)};X.prototype.lengthManhattan=function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()};b.prototype.setEulerFromRotationMatrix=function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")};b.prototype.setEulerFromQuaternion=function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")};b.prototype.getPositionFromMatrix=function(s){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(s)};b.prototype.getScaleFromMatrix=function(s){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(s)};b.prototype.getColumnFromMatrix=function(s,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,s)};b.prototype.applyProjection=function(s){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(s)};b.prototype.fromAttribute=function(s,e,t){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(s,e,t)};b.prototype.distanceToManhattan=function(s){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(s)};b.prototype.lengthManhattan=function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()};Re.prototype.fromAttribute=function(s,e,t){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(s,e,t)};Re.prototype.lengthManhattan=function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()};Ie.prototype.getChildByName=function(s){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(s)};Ie.prototype.renderDepth=function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")};Ie.prototype.translate=function(s,e){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(e,s)};Ie.prototype.getWorldRotation=function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")};Ie.prototype.applyMatrix=function(s){return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(s)};Object.defineProperties(Ie.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(s){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=s}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}});at.prototype.setDrawMode=function(){console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")};Object.defineProperties(at.prototype,{drawMode:{get:function(){return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),qh},set:function(){console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}});Ur.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")};st.prototype.setLens=function(s,e){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),e!==void 0&&(this.filmGauge=e),this.setFocalLength(s)};Object.defineProperties(yt.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(s){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=s}},shadowCameraLeft:{set:function(s){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=s}},shadowCameraRight:{set:function(s){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=s}},shadowCameraTop:{set:function(s){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=s}},shadowCameraBottom:{set:function(s){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=s}},shadowCameraNear:{set:function(s){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=s}},shadowCameraFar:{set:function(s){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=s}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(s){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=s}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(s){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=s}},shadowMapHeight:{set:function(s){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=s}}});Object.defineProperties(Ge.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},dynamic:{get:function(){return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.usage===Lr},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.setUsage(Lr)}}});Ge.prototype.setDynamic=function(s){return console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(s===!0?Lr:Li),this};Ge.prototype.copyIndicesArray=function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},Ge.prototype.setArray=function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")};ze.prototype.addIndex=function(s){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(s)};ze.prototype.addAttribute=function(s,e){return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),!(e&&e.isBufferAttribute)&&!(e&&e.isInterleavedBufferAttribute)?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(s,new Ge(arguments[1],arguments[2]))):s==="index"?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(e),this):this.setAttribute(s,e)};ze.prototype.addDrawCall=function(s,e,t){t!==void 0&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(s,e)};ze.prototype.clearDrawCalls=function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()};ze.prototype.computeOffsets=function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")};ze.prototype.removeAttribute=function(s){return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),this.deleteAttribute(s)};ze.prototype.applyMatrix=function(s){return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(s)};Object.defineProperties(ze.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}});gn.prototype.setDynamic=function(s){return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(s===!0?Lr:Li),this};gn.prototype.setArray=function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")};Zn.prototype.getArrays=function(){console.error("THREE.ExtrudeGeometry: .getArrays() has been removed.")};Zn.prototype.addShapeList=function(){console.error("THREE.ExtrudeGeometry: .addShapeList() has been removed.")};Zn.prototype.addShape=function(){console.error("THREE.ExtrudeGeometry: .addShape() has been removed.")};Yn.prototype.dispose=function(){console.error("THREE.Scene: .dispose() has been removed.")};ea.prototype.onUpdate=function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this};Object.defineProperties($e.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new ae}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(s){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=s===Wl}},stencilMask:{get:function(){return console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask},set:function(s){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask=s}}});Object.defineProperties(kt.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(s){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=s}}});De.prototype.clearTarget=function(s,e,t,n){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),this.setRenderTarget(s),this.clear(e,t,n)};De.prototype.animate=function(s){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(s)};De.prototype.getCurrentRenderTarget=function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()};De.prototype.getMaxAnisotropy=function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()};De.prototype.getPrecision=function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision};De.prototype.resetGLState=function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()};De.prototype.supportsFloatTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")};De.prototype.supportsHalfFloatTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")};De.prototype.supportsStandardDerivatives=function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")};De.prototype.supportsCompressedTextureS3TC=function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")};De.prototype.supportsCompressedTexturePVRTC=function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")};De.prototype.supportsBlendMinMax=function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")};De.prototype.supportsVertexTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures};De.prototype.supportsInstancedArrays=function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")};De.prototype.enableScissorTest=function(s){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(s)};De.prototype.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};De.prototype.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};De.prototype.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};De.prototype.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};De.prototype.setFaceCulling=function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")};De.prototype.allocTextureUnit=function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")};De.prototype.setTexture=function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")};De.prototype.setTexture2D=function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")};De.prototype.setTextureCube=function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")};De.prototype.getActiveMipMapLevel=function(){return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),this.getActiveMipmapLevel()};Object.defineProperties(De.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(s){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=s}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(s){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=s}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),this.getContext()}},vr:{get:function(){return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),this.xr}},gammaInput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),!1},set:function(){console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")}},gammaOutput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),!1},set:function(s){console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),this.outputEncoding=s===!0?pa:ri}},toneMappingWhitePoint:{get:function(){return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."),1},set:function(){console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.")}}});Object.defineProperties(hc.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}});Object.defineProperties(Ut.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(s){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=s}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(s){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=s}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(s){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=s}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(s){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=s}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(s){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=s}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(s){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=s}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(s){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=s}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(s){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=s}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(s){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=s}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(s){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=s}}});Yo.prototype.load=function(s){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");let e=this;return new Wo().load(s,function(n){e.setBuffer(n)}),this};Zo.prototype.getData=function(){return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),this.getFrequencyData()};Ii.prototype.updateCubeMap=function(s,e){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(s,e)};Ii.prototype.clear=function(s,e,t,n){return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."),this.renderTarget.clear(s,e,t,n)};en.crossOrigin=void 0;en.loadTexture=function(s,e,t,n){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");let i=new Po;i.setCrossOrigin(this.crossOrigin);let r=i.load(s,t,void 0,n);return e&&(r.mapping=e),r};en.loadTextureCube=function(s,e,t,n){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");let i=new Co;i.setCrossOrigin(this.crossOrigin);let r=i.load(s,t,void 0,n);return e&&(r.mapping=e),r};en.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")};en.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"128"}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="128");var rs=6600;function Rg(s,{reducedMotion:e=!1,onStateChange:t}={}){let n=new De({canvas:s,alpha:!0,antialias:!0,powerPreference:"low-power",premultipliedAlpha:!1,preserveDrawingBuffer:!0});n.setClearColor(0,0),n.setPixelRatio(Math.min(window.devicePixelRatio||1,1.5));let i=new Yn,r=new ni(-5,5,3,-3,.1,100);r.position.z=12;let o=new Gr(3,0),a=new Jn({color:14895666,roughness:.3,metalness:.6,flatShading:!0}),l=new at(o,a);l.scale.setScalar(.145),i.add(l);let c=new ii(16777215,2.3);c.position.set(-2,5,8),i.add(c);let h=new ii(16762811,1.5);h.position.set(6,-2,5),i.add(h),i.add(new Vi(16777215,1.2));let d=0,u=0,p=0,m=0,x=0,y=0,g=!1,f=!0,M={geometry:"IcosahedronGeometry",radius:3,detail:0,color:"#E34A32",roughness:.3,metalness:.6,flatShading:!0,desktopAnchorX:4.5,mobileAnchorX:0,dpr:n.getPixelRatio(),frameCount:0,rafActive:!1,reducedMotion:e};function S(){let A=s.parentElement,P=Math.max(1,A?.clientWidth||s.clientWidth||1),D=Math.max(1,A?.clientHeight||s.clientHeight||1);n.setSize(P,D,!1),d=window.innerWidth>=768?4.5:0,M.anchorX=d;let C=10,q=C/(P/D);r.left=d-C/2,r.right=d+C/2,r.top=q/2,r.bottom=-q/2,r.position.x=d,r.updateProjectionMatrix()}function T(A,P,D){l.position.x=d,l.position.y=-1.86+(D?Math.sin(P*1.2)*.3:0),l.rotation.x=P*.55,l.rotation.y=P*.8,n.render(i,r),p+=1,M.frameCount=p,M.positionX=l.position.x,M.positionY=l.position.y}function v(){u&&cancelAnimationFrame(u),u=0,M.rafActive=!1}function R(A){if(!f||document.hidden){v(),x=A;return}let P=Math.max(0,A-m-y),D=Math.min(1,P/rs);T(D,P/1e3,D<1),D<1?(M.rafActive=!0,u=requestAnimationFrame(R)):(g=!0,v(),t?.("complete",M))}function I(){if(v(),g=!1,y=0,x=0,m=performance.now(),e){T(1,rs/1e3,!1),g=!0,t?.("static",M);return}M.rafActive=!0,u=requestAnimationFrame(R)}function F(A){v();let D=[.29,.61,1][Math.max(0,Math.min(2,A))];T(D,D*rs/1e3,!1),g=!0,t?.("seek",M)}let B=new ResizeObserver(()=>{S(),(g||e)&&T(1,rs/1e3,!1)});B.observe(s.parentElement||s);let G=new IntersectionObserver(([A])=>{if(f=A.isIntersecting,f&&!g&&!e&&!u){let P=performance.now();x&&(y+=P-x),x=0,M.rafActive=!0,u=requestAnimationFrame(R)}},{threshold:.05});G.observe(s);function O(){if(document.hidden)g||(x=performance.now()),v();else if(!g&&f&&!e){let A=performance.now();x&&(y+=A-x),x=0,M.rafActive=!0,u=requestAnimationFrame(R)}}return document.addEventListener("visibilitychange",O),S(),I(),t?.("ready",M),{debug:M,replay:I,seek:F,destroy(){v(),B.disconnect(),G.disconnect(),document.removeEventListener("visibilitychange",O),o.dispose(),a.dispose(),n.dispose()}}}export{Rg as mountDecisionMesh}; diff --git a/docs/assets/launch-control-core-v3.avif b/docs/assets/launch-control-core-v3.avif deleted file mode 100644 index b04b587..0000000 Binary files a/docs/assets/launch-control-core-v3.avif and /dev/null differ diff --git a/docs/assets/launch-control-core-v3.png b/docs/assets/launch-control-core-v3.png deleted file mode 100644 index 990b62e..0000000 Binary files a/docs/assets/launch-control-core-v3.png and /dev/null differ diff --git a/docs/assets/launch-control-core-v3.webp b/docs/assets/launch-control-core-v3.webp deleted file mode 100644 index a58b0fc..0000000 Binary files a/docs/assets/launch-control-core-v3.webp and /dev/null differ diff --git a/docs/assets/launch-control-motion.css b/docs/assets/launch-control-motion.css new file mode 100644 index 0000000..2b7c80f --- /dev/null +++ b/docs/assets/launch-control-motion.css @@ -0,0 +1 @@ +@layer reset{:where(*,*:before,*:after){box-sizing:border-box}:where(*,*:before,*:after){border-width:0;border-style:solid;border-color:currentColor}:where(html){line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;color-scheme:light dark}:where(body){margin:0;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(h1,h2,h3,h4,h5,h6,p,blockquote,figure,pre,dl,dd){margin:0}:where(a){color:inherit;text-decoration:inherit}:where(b,strong){font-weight:bolder}:where(code,kbd,samp,pre){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}:where(small){font-size:80%}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(ol,ul,menu){list-style:none;margin:0;padding:0}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block;vertical-align:middle}:where(img,video){max-width:100%;height:auto}:where([data-astryx-aspect-ratio-override=cover],[data-astryx-aspect-ratio-override=contain])>:where(*){width:100%;height:100%}:where([data-astryx-aspect-ratio-override=cover])>:where(img,video){object-fit:cover}:where([data-astryx-aspect-ratio-override=contain])>:where(img,video){object-fit:contain}:where(button,input,optgroup,select,textarea){font:inherit;color:inherit;margin:0;padding:0}:where(button,[type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button;background-color:transparent;background-image:none}:where(button,[role=button]){cursor:pointer}:where(:disabled){cursor:default}:where(textarea){resize:vertical}:where(input::placeholder,textarea::placeholder){opacity:1;color:var(--color-text-secondary, #9ca3af)}:where([type=search]::-webkit-search-decoration,[type=search]::-webkit-search-cancel-button){-webkit-appearance:none}:where(fieldset){margin:0;padding:0}:where(legend){padding:0}:where(table){text-indent:0;border-color:inherit;border-collapse:collapse}:where(hr){height:0;color:inherit;border-top-width:1px}:where(summary){display:list-item}:where(dialog){padding:0;outline:none}:where([hidden]){display:none}:where(html){-webkit-tap-highlight-color:transparent}@media(hover:none)and (pointer:coarse){:where(:focus-visible){outline:none}}:where(html[data-theme=light]){color-scheme:light}:where(html[data-theme=dark]){color-scheme:dark}:where(html:not([data-theme])){color-scheme:light dark}:where([data-astryx-media=dark]){color-scheme:dark}:where([data-astryx-media=light]){color-scheme:light}}@layer astryx-base{@property --x---_avatar-group-overlap{syntax: "*"; inherits: false;}@property --x---_tab-indicator-bottom{syntax: "*"; inherits: false;}@property --x---container-max-height{syntax: "*"; inherits: false;}@property --x---layout-content-width{syntax: "*"; inherits: false;}@property --x-126w13d{syntax: "*"; inherits: false;}@property --x-4drmnv{syntax: "*"; inherits: false;}@property --x-animationDelay{syntax: "*"; inherits: false;}@property --x-borderWidth{syntax: "*"; inherits: false;}@property --x-bottom{syntax: "*"; inherits: false;}@property --x-counterReset{syntax: "*"; inherits: false;}@property --x-fontSize{syntax: "*"; inherits: false;}@property --x-gap{syntax: "*"; inherits: false;}@property --x-gridAutoRows{syntax: "*"; inherits: false;}@property --x-gridTemplateColumns{syntax: "*"; inherits: false;}@property --x-height{syntax: "*"; inherits: false;}@property --x-left{syntax: "*"; inherits: false;}@property --x-marginInline{syntax: "*"; inherits: false;}@property --x-maxHeight{syntax: "*"; inherits: false;}@property --x-maxWidth{syntax: "*"; inherits: false;}@property --x-minHeight{syntax: "*"; inherits: false;}@property --x-minWidth{syntax: "*"; inherits: false;}@property --x-paddingInlineStart{syntax: "*"; inherits: false;}@property --x-right{syntax: "*"; inherits: false;}@property --x-top{syntax: "*"; inherits: false;}@property --x-transform{syntax: "*"; inherits: false;}@property --x-WebkitLineClamp{syntax: "*"; inherits: false;}@property --x-width{syntax: "*"; inherits: false;}@keyframes x188b6p3-B{0%{color:inherit}to{color:transparent}}@keyframes x13kz0yu-B{0%,to{opacity:1}50%{opacity:.5}}@keyframes x18re5ia-B{0%{opacity:0}to{opacity:1}}@keyframes xgnty7z-B{0%{opacity:.25}to{opacity:1}}@keyframes xtut5q7-B{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes x1k48ry3-B{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes x11lauxq-B{0%{opacity:0;transform:translate(var(--dialog-dir-x,0px),var(--dialog-dir-y,16px)) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes xu7jd1z-B{0%{opacity:0;transform:translate(var(--spacing-2)) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes xwmkjkf-B{0%{opacity:0;transform:translate(calc(-1 * var(--spacing-2))) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes x1ahk7ht-B{0%{opacity:0;transform:translateY(var(--spacing-2)) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes xv1hr86-B{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-2))) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes x1b6yrix-B{0%{opacity:0;transform:translateY(var(--spacing-2))}to{opacity:1;transform:translateY(0)}}@keyframes xiylxmw-B{0%{opacity:0;transform:translateY(calc(-1 * var(--spacing-2)))}to{opacity:1;transform:translateY(0)}}@keyframes xqng64z-B{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes xr3m334-B{0%{transform:translate(-100%)}to{transform:translate(250%)}}:root,.xafi2nm{--border-width:1px}:root,.xj0fimd{--color-accent:light-dark(#0064E0, #2694FE);--color-accent-muted:light-dark(#0082FB33, #0082FB3F);--color-on-accent:light-dark(#FFFFFF, #FFFFFF);--color-neutral:light-dark(rgba(5, 54, 89, .1), rgba(223, 226, 229, .2));--color-background-surface:light-dark(#FFFFFF, #1F1F22);--color-background-body:light-dark(#F1F4F7, #111112);--color-overlay:light-dark(#01122866, #11111299);--color-overlay-hover:light-dark(#0536590C, #FFFFFF0C);--color-overlay-pressed:light-dark(#05365919, #FFFFFF19);--color-background-muted:light-dark(#0536590C, #1111127F);--color-text-primary:light-dark(#0A1317, #DFE2E5);--color-text-secondary:light-dark(#4E606F, #AAAFB5);--color-text-disabled:light-dark(#A4B0BC, #6F747C);--color-text-accent:light-dark(#0064E0, #3E9EFB);--color-on-dark:light-dark(#FFFFFF, #FFFFFF);--color-on-light:light-dark(#000000, #000000);--color-icon-accent:light-dark(#0064E0, #2694FE);--color-icon-primary:light-dark(#0A1317, #DFE2E5);--color-icon-secondary:light-dark(#4E606F, #AAAFB5);--color-icon-disabled:light-dark(#A4B0BC, #6F747C);--color-background-card:light-dark(#FFFFFF, #1F1F22);--color-background-popover:light-dark(#FFFFFF, #28292C);--color-background-inverted:light-dark(#0A1317, #FFFFFF);--color-background-error-inverted:light-dark(#AA071E, #E3193B);--color-success:light-dark(#0D8626, #0D8626);--color-success-muted:light-dark(#0B991F33, #0B991F3F);--color-on-success:light-dark(#FFFFFF, #FFFFFF);--color-error:light-dark(#E3193B, #F5394F);--color-error-muted:light-dark(#E3193B33, #F5394F3F);--color-on-error:light-dark(#FFFFFF, #FFFFFF);--color-warning:light-dark(#E9AF08, #F2C00B);--color-warning-muted:light-dark(#E2A40033, #E2A4003F);--color-on-warning:light-dark(#0A1317, #0A1317);--color-border:light-dark(#05365919, #F2F4F619);--color-border-emphasized:light-dark(#CCD3DB, #494D53);--color-skeleton:light-dark(#CCD3DB, #5A5E66);--color-track:light-dark(#CCD3DB, #5A5E66);--color-shadow:light-dark(rgba(5, 54, 89, .1), rgba(0, 0, 0, .3));--color-tint-hover:light-dark(black, white);--color-background-blue:light-dark(#0171E333, #0171E333);--color-border-blue:light-dark(#0064E0, #2694FE);--color-icon-blue:light-dark(#0064E0, #2694FE);--color-text-blue:light-dark(#042F97, #AFD7FF);--color-background-cyan:light-dark(#03A7D733, #03A7D733);--color-border-cyan:light-dark(#089DD0, #0171A4);--color-icon-cyan:light-dark(#00ACC1, #26C6DA);--color-text-cyan:light-dark(#014975, #A1EEF9);--color-background-gray:light-dark(#0A131733, #666A724C);--color-border-gray:light-dark(#647685, #748695);--color-icon-gray:light-dark(#4E606F, #AAAFB5);--color-text-gray:light-dark(#0A1317, #E7EAED);--color-background-green:light-dark(#24BB5E33, #24BB5E33);--color-border-green:light-dark(#0D8626, #0B991F);--color-icon-green:light-dark(#0D8626, #26A756);--color-text-green:light-dark(#09441F, #A5F690);--color-background-orange:light-dark(#F2790233, #F2790233);--color-border-orange:light-dark(#EB6E00, #B34A01);--color-icon-orange:light-dark(#E9690B, #FB8C00);--color-text-orange:light-dark(#6B2203, #FDB876);--color-background-pink:light-dark(#E638B333, #E638B333);--color-border-pink:light-dark(#F351C0, #C02294);--color-icon-pink:light-dark(#C2185B, #EC407A);--color-text-pink:light-dark(#650053, #FEADE3);--color-background-purple:light-dark(#7952FF33, #7952FF33);--color-border-purple:light-dark(#9081FF, #7340FE);--color-icon-purple:light-dark(#5B08D8, #7952FF);--color-text-purple:light-dark(#3E0697, #B3B0FE);--color-background-red:light-dark(#E3193B33, #E3193B33);--color-border-red:light-dark(#E3193B, #F5394F);--color-icon-red:light-dark(#D31130, #E3193B);--color-text-red:light-dark(#7B0210, #FFB2B8);--color-background-teal:light-dark(#0DB7AF33, #0DB7AF33);--color-border-teal:light-dark(#08A3A3, #08767D);--color-icon-teal:light-dark(#009688, #26A69A);--color-text-teal:light-dark(#083943, #40DCCD);--color-background-yellow:light-dark(#E2A40033, #E2A40033);--color-border-yellow:light-dark(#C58600, #B47700);--color-icon-yellow:light-dark(#FBC02D, #FFEE58);--color-text-yellow:light-dark(#753F07, #FBCE03)}:root,.x14lkjui{--duration-fast-min:.13s;--duration-fast:175ms;--duration-fast-max:.23s;--duration-medium-min:.31s;--duration-medium:.41s;--duration-medium-max:.55s;--duration-slow-min:.73s;--duration-slow:975ms;--duration-slow-max:1.3s}:root,.xf09i69{--ease-standard:cubic-bezier(.24, 1, .4, 1)}:root,.x5tdzeq{--font-family-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-family-code:"SF Mono", Monaco, Consolas, monospace;--font-family-heading:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}:root,.x1q1ms06{--font-size-4xs:.375rem;--font-size-3xs:.4375rem;--font-size-2xs:.5rem;--font-size-xs:.625rem;--font-size-sm:.75rem;--font-size-base:.875rem;--font-size-lg:1.0625rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.8125rem;--font-size-4xl:2.1875rem;--font-size-5xl:2.625rem}:root,.x1ccmotb{--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700}:root,.xrw1vgx{--radius-none:0px;--radius-inner:4px;--radius-element:8px;--radius-container:12px;--radius-page:28px;--radius-chat:28px;--radius-full:9999px}:root,.xua8qm3{--shadow-low:0px 1px 1px light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .2)), 0px 2px 8px light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .2));--shadow-med:0px 1px 2px light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .2)), 0px 2px 12px light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .2));--shadow-high:0px 2px 2px light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .2)), 0px 8px 24px light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .3));--shadow-inset-hover:inset 0px 0px 0px 2px light-dark(rgba(5, 54, 89, .15), rgba(223, 226, 229, .2));--shadow-inset-selected:inset 0px 0px 0px 2px rgba(1, 113, 227, .5);--shadow-inset-success:inset 0px 0px 0px 2px rgba(38, 167, 86, .3);--shadow-inset-warning:inset 0px 0px 0px 2px rgba(226, 164, 0, .3);--shadow-inset-error:inset 0px 0px 0px 2px rgba(227, 25, 59, .3)}:root,.xkgjyic{--size-element-sm:28px;--size-element-md:32px;--size-element-lg:36px}:root,.x1kvdh9l{--spacing-0:0px;--spacing-0-5:2px;--spacing-1:4px;--spacing-1-5:6px;--spacing-2:8px;--spacing-3:12px;--spacing-4:16px;--spacing-5:20px;--spacing-6:24px;--spacing-7:28px;--spacing-8:32px;--spacing-9:36px;--spacing-10:40px;--spacing-11:44px;--spacing-12:48px}:root,.x1etlgq0{--text-heading-1-size:var(--font-size-2xl);--text-heading-1-weight:var(--font-weight-semibold);--text-heading-1-leading:1.3333;--text-heading-2-size:var(--font-size-xl);--text-heading-2-weight:var(--font-weight-semibold);--text-heading-2-leading:1.4;--text-heading-3-size:var(--font-size-lg);--text-heading-3-weight:var(--font-weight-semibold);--text-heading-3-leading:1.4118;--text-heading-4-size:var(--font-size-base);--text-heading-4-weight:var(--font-weight-semibold);--text-heading-4-leading:1.4286;--text-heading-5-size:var(--font-size-sm);--text-heading-5-weight:var(--font-weight-semibold);--text-heading-5-leading:1.6667;--text-heading-6-size:var(--font-size-xs);--text-heading-6-weight:var(--font-weight-semibold);--text-heading-6-leading:1.6;--text-body-size:var(--font-size-base);--text-body-weight:var(--font-weight-normal);--text-body-leading:1.4286;--text-large-size:var(--font-size-lg);--text-large-weight:var(--font-weight-semibold);--text-large-leading:1.4118;--text-label-size:var(--font-size-base);--text-label-weight:var(--font-weight-medium);--text-label-leading:1.4286;--text-code-size:var(--font-size-base);--text-code-weight:var(--font-weight-normal);--text-code-leading:1.4286;--text-supporting-size:var(--font-size-sm);--text-supporting-weight:var(--font-weight-normal);--text-supporting-leading:1.6667;--text-display-1-size:var(--font-size-5xl);--text-display-1-weight:var(--font-weight-normal);--text-display-1-leading:1.2381;--text-display-2-size:var(--font-size-4xl);--text-display-2-weight:var(--font-weight-normal);--text-display-2-leading:1.2571;--text-display-3-size:var(--font-size-3xl);--text-display-3-weight:var(--font-weight-normal);--text-display-3-leading:1.2414}:root,.xsilmbq{--transition-fast:.15s ease;--transition-normal:.2s ease}.xlz5hwt{--_avatar-group-overlap:var(--x---_avatar-group-overlap)}.xh8ntw8{--_button-radius:calc(var(--radius-element) - var(--spacing-1))}.xcw7vlg{--_button-radius:max(var(--radius-element),calc(var(--_chat-composer-radius) - var(--_chat-composer-padding)))}.x1rjw8qi{--_button-radius:var(--radius-full)}.x2kkz0m{--_card-radius:var(--radius-container)}.xk0ittl{--_chat-composer-padding:var(--spacing-3)}.xx161y6{--_chat-composer-radius:var(--radius-chat)}.xvuvksw{--_dialog-radius:var(--radius-container)}.xgory14{--_dropdown-menu-padding:var(--spacing-1)}.x1fcsqxe{--_dropdown-menu-radius:var(--radius-container)}.x1832zxr{--_field-radius:var(--radius-element)}.xqwz7mz{--_hovercard-radius:var(--radius-container)}.x18jk3ff{--_segmented-control-padding:var(--spacing-0-5)}.x9icjy1{--_segmented-control-radius:var(--radius-element)}.xbrl7fg{--_tab-indicator-bottom:var(--x---_tab-indicator-bottom)}.xnvcwyz{--astryx-section-padding:var(--spacing-0-5)}.xvdw317{--astryx-section-padding:var(--spacing-0)}.x1rj2uvf{--astryx-section-padding:var(--spacing-1-5)}.x49wo0b{--astryx-section-padding:var(--spacing-1)}.xf1jhqy{--astryx-section-padding:var(--spacing-10)}.x1bzoqqa{--astryx-section-padding:var(--spacing-2)}.x1nvso86{--astryx-section-padding:var(--spacing-3)}.x1as1t6l{--astryx-section-padding:var(--spacing-4)}.xfb5lyl{--astryx-section-padding:var(--spacing-5)}.x1tig3w6{--astryx-section-padding:var(--spacing-6)}.x1szikzq{--astryx-section-padding:var(--spacing-8)}.xkzo27j{--button-focus-offset:3px}.x1v15ycx{--button-icon-only-aspect:1 / 1}.x1mtvhk1{--color-syntax-background:transparent}.x18nyedi{--container-max-height:var(--x---container-max-height)}.xax9j7h{--container-padding-block-end:0px}.x1omyuck{--container-padding-block-end:var(--astryx-card-padding-block-end,var(--astryx-card-padding,var(--spacing-4)))}.x1gvthzm{--container-padding-block-end:var(--astryx-dialog-padding-block-end,var(--astryx-dialog-padding,var(--spacing-4)))}.x1u89lk7{--container-padding-block-end:var(--astryx-section-padding-block-end,var(--astryx-section-padding,var(--spacing-4)))}.xi9ns85{--container-padding-block-end:var(--layout-padding-inner-y,var(--spacing-4))}.x1xjq73n{--container-padding-block-end:var(--layout-padding-outer-y,var(--spacing-4))}.x1cao3zv{--container-padding-block-end:var(--spacing-0-5)}.xkunwnr{--container-padding-block-end:var(--spacing-0)}.xv53x8y{--container-padding-block-end:var(--spacing-1-5)}.x57a7ii{--container-padding-block-end:var(--spacing-1)}.x15vxphk{--container-padding-block-end:var(--spacing-10)}.x4bg2x9{--container-padding-block-end:var(--spacing-11)}.x186mjxr{--container-padding-block-end:var(--spacing-12)}.x1lsgcmx{--container-padding-block-end:var(--spacing-2)}.x1q3ppug{--container-padding-block-end:var(--spacing-3)}.x4hfsld{--container-padding-block-end:var(--spacing-4)}.xbib2ws{--container-padding-block-end:var(--spacing-5)}.x1q8d17g{--container-padding-block-end:var(--spacing-6)}.x1yqogew{--container-padding-block-end:var(--spacing-7)}.x8lgq76{--container-padding-block-end:var(--spacing-8)}.x1f7f9rt{--container-padding-block-end:var(--spacing-9)}.x1047aw6{--container-padding-block-start:0px}.x1rqz8me{--container-padding-block-start:var(--astryx-card-padding-block-start,var(--astryx-card-padding,var(--spacing-4)))}.x1g2kccc{--container-padding-block-start:var(--astryx-dialog-padding-block-start,var(--astryx-dialog-padding,var(--spacing-4)))}.x876hks{--container-padding-block-start:var(--astryx-section-padding-block-start,var(--astryx-section-padding,var(--spacing-4)))}.xjmgx01{--container-padding-block-start:var(--layout-padding-inner-y,var(--spacing-4))}.xzz8v79{--container-padding-block-start:var(--layout-padding-outer-y,var(--spacing-4))}.xvdf9ev{--container-padding-block-start:var(--spacing-0-5)}.x1i3qcxz{--container-padding-block-start:var(--spacing-0)}.x1kbx601{--container-padding-block-start:var(--spacing-1-5)}.xnsckjb{--container-padding-block-start:var(--spacing-1)}.x17h9kl7{--container-padding-block-start:var(--spacing-10)}.x1rdjxae{--container-padding-block-start:var(--spacing-11)}.xecwdl6{--container-padding-block-start:var(--spacing-12)}.xa8b4fq{--container-padding-block-start:var(--spacing-2)}.x11k4f5r{--container-padding-block-start:var(--spacing-3)}.xm01sq8{--container-padding-block-start:var(--spacing-4)}.xp8wdkl{--container-padding-block-start:var(--spacing-5)}.x1hmud4d{--container-padding-block-start:var(--spacing-6)}.x1c00sag{--container-padding-block-start:var(--spacing-7)}.xfv60at{--container-padding-block-start:var(--spacing-8)}.x14fzdu7{--container-padding-block-start:var(--spacing-9)}.xjsfl84{--container-padding-inline-end:0px}.x1ihxwbr{--container-padding-inline-end:var(--astryx-card-padding-inline-end,var(--astryx-card-padding-inline,var(--astryx-card-padding,var(--spacing-4))))}.x11h1f2o{--container-padding-inline-end:var(--astryx-dialog-padding-inline-end,var(--astryx-dialog-padding-inline,var(--astryx-dialog-padding,var(--spacing-4))))}.xyk0j9o{--container-padding-inline-end:var(--astryx-section-padding-inline-end,var(--astryx-section-padding-inline,var(--astryx-section-padding,var(--spacing-4))))}.xikqloz{--container-padding-inline-end:var(--layout-padding-inner-x,var(--spacing-4))}.xqpvj4r{--container-padding-inline-end:var(--layout-padding-outer-x,var(--spacing-4))}.x1wz3t3y{--container-padding-inline-end:var(--spacing-0-5)}.x91ghl5{--container-padding-inline-end:var(--spacing-0)}.xntetml{--container-padding-inline-end:var(--spacing-1-5)}.x2oyxnl{--container-padding-inline-end:var(--spacing-1)}.xx5lg5w{--container-padding-inline-end:var(--spacing-10)}.x1nmgbqg{--container-padding-inline-end:var(--spacing-11)}.x1wsfsk2{--container-padding-inline-end:var(--spacing-12)}.xcas3b9{--container-padding-inline-end:var(--spacing-2)}.xu0ipoa{--container-padding-inline-end:var(--spacing-3)}.xs0pscg{--container-padding-inline-end:var(--spacing-4)}.xgkj7vj{--container-padding-inline-end:var(--spacing-5)}.x94cj42{--container-padding-inline-end:var(--spacing-6)}.x11tj35w{--container-padding-inline-end:var(--spacing-7)}.x1b9k1pi{--container-padding-inline-end:var(--spacing-8)}.x19w02kr{--container-padding-inline-end:var(--spacing-9)}.xrhngw9{--container-padding-inline-start:0px}.xjmlhfd{--container-padding-inline-start:var(--astryx-card-padding-inline-start,var(--astryx-card-padding-inline,var(--astryx-card-padding,var(--spacing-4))))}.x1tewnwq{--container-padding-inline-start:var(--astryx-dialog-padding-inline-start,var(--astryx-dialog-padding-inline,var(--astryx-dialog-padding,var(--spacing-4))))}.xrgx2ny{--container-padding-inline-start:var(--astryx-section-padding-inline-start,var(--astryx-section-padding-inline,var(--astryx-section-padding,var(--spacing-4))))}.x408pgh{--container-padding-inline-start:var(--layout-padding-inner-x,var(--spacing-4))}.xdvaxxn{--container-padding-inline-start:var(--layout-padding-outer-x,var(--spacing-4))}.x14ws0sr{--container-padding-inline-start:var(--spacing-0-5)}.x1gu2k80{--container-padding-inline-start:var(--spacing-0)}.x176g23i{--container-padding-inline-start:var(--spacing-1-5)}.x1cvlban{--container-padding-inline-start:var(--spacing-1)}.xserb3f{--container-padding-inline-start:var(--spacing-10)}.xziclwo{--container-padding-inline-start:var(--spacing-11)}.x1iiwihq{--container-padding-inline-start:var(--spacing-12)}.x1xlrr2o{--container-padding-inline-start:var(--spacing-2)}.xfdwxua{--container-padding-inline-start:var(--spacing-3)}.x1dlhslv{--container-padding-inline-start:var(--spacing-4)}.x1s81nki{--container-padding-inline-start:var(--spacing-5)}.x1ep0dkj{--container-padding-inline-start:var(--spacing-6)}.x157xojc{--container-padding-inline-start:var(--spacing-7)}.xw1diwv{--container-padding-inline-start:var(--spacing-8)}.xraca2a{--container-padding-inline-start:var(--spacing-9)}.x1qfzo5y{--indicator-color:transparent}.x4906uf{--layout-content-width:var(--x---layout-content-width)}.x4poyjn{--layout-padding-inner-x:var(--astryx-card-padding-inline-start,var(--astryx-card-padding-inline,var(--astryx-card-padding,var(--spacing-4))))}.x2so38{--layout-padding-inner-x:var(--astryx-dialog-padding-inline-start,var(--astryx-dialog-padding-inline,var(--astryx-dialog-padding,var(--spacing-4))))}.x1we69p7{--layout-padding-inner-x:var(--astryx-section-padding-inline-start,var(--astryx-section-padding-inline,var(--astryx-section-padding,var(--spacing-4))))}.xlriy2h{--layout-padding-inner-x:var(--spacing-0-5)}.xj1bl4l{--layout-padding-inner-x:var(--spacing-0)}.xd38f90{--layout-padding-inner-x:var(--spacing-1-5)}.x6uuyak{--layout-padding-inner-x:var(--spacing-1)}.x1vf4qco{--layout-padding-inner-x:var(--spacing-10)}.xsmamsf{--layout-padding-inner-x:var(--spacing-11)}.x2xk2xj{--layout-padding-inner-x:var(--spacing-12)}.xxqksqd{--layout-padding-inner-x:var(--spacing-2)}.x1fyui2f{--layout-padding-inner-x:var(--spacing-3)}.x1i2ajwi{--layout-padding-inner-x:var(--spacing-4)}.x1tac27u{--layout-padding-inner-x:var(--spacing-5)}.x1ntgf3t{--layout-padding-inner-x:var(--spacing-6)}.xhjd9tl{--layout-padding-inner-x:var(--spacing-7)}.xn7c84u{--layout-padding-inner-x:var(--spacing-8)}.xeqkbsz{--layout-padding-inner-x:var(--spacing-9)}.x1u1kw4e{--layout-padding-inner-y:var(--astryx-card-padding-block-start,var(--astryx-card-padding,var(--spacing-4)))}.xinu7xd{--layout-padding-inner-y:var(--astryx-dialog-padding-block-start,var(--astryx-dialog-padding,var(--spacing-4)))}.xsdnkbz{--layout-padding-inner-y:var(--astryx-section-padding-block-start,var(--astryx-section-padding,var(--spacing-4)))}.x180h0y5{--layout-padding-inner-y:var(--spacing-0-5)}.xwuefyo{--layout-padding-inner-y:var(--spacing-0)}.x1g8jpzm{--layout-padding-inner-y:var(--spacing-1-5)}.xmpug6m{--layout-padding-inner-y:var(--spacing-1)}.x18gbwmk{--layout-padding-inner-y:var(--spacing-10)}.x14zymzj{--layout-padding-inner-y:var(--spacing-11)}.xzfpkx9{--layout-padding-inner-y:var(--spacing-12)}.x1lksgje{--layout-padding-inner-y:var(--spacing-2)}.x4j7gld{--layout-padding-inner-y:var(--spacing-3)}.x1s3ehtl{--layout-padding-inner-y:var(--spacing-4)}.x1rj5eim{--layout-padding-inner-y:var(--spacing-5)}.x1ftgg6u{--layout-padding-inner-y:var(--spacing-6)}.x1ho74vh{--layout-padding-inner-y:var(--spacing-7)}.xm2cs6f{--layout-padding-inner-y:var(--spacing-8)}.x1vsq92b{--layout-padding-inner-y:var(--spacing-9)}.x1wbjvqu{--layout-padding-outer-x:0px}.x14rzhog{--layout-padding-outer-x:var(--astryx-card-padding-inline-start,var(--astryx-card-padding-inline,var(--astryx-card-padding,var(--spacing-4))))}.x1hsjncj{--layout-padding-outer-x:var(--astryx-dialog-padding-inline-start,var(--astryx-dialog-padding-inline,var(--astryx-dialog-padding,var(--spacing-4))))}.x12sptzx{--layout-padding-outer-x:var(--astryx-section-padding-inline-start,var(--astryx-section-padding-inline,var(--astryx-section-padding,var(--spacing-4))))}.xihiwg7{--layout-padding-outer-x:var(--spacing-0-5)}.xswhm3q{--layout-padding-outer-x:var(--spacing-0)}.x1u93lgd{--layout-padding-outer-x:var(--spacing-1-5)}.xc96xmq{--layout-padding-outer-x:var(--spacing-1)}.x1jdf5a4{--layout-padding-outer-x:var(--spacing-10)}.x1hct0t0{--layout-padding-outer-x:var(--spacing-11)}.x11cyqoe{--layout-padding-outer-x:var(--spacing-12)}.x15dxnc0{--layout-padding-outer-x:var(--spacing-2)}.xadgj3j{--layout-padding-outer-x:var(--spacing-3)}.x1v56qcf{--layout-padding-outer-x:var(--spacing-4)}.x1nzs0gl{--layout-padding-outer-x:var(--spacing-5)}.x1c3n52a{--layout-padding-outer-x:var(--spacing-6)}.x1gfiokx{--layout-padding-outer-x:var(--spacing-7)}.x1t3kfz{--layout-padding-outer-x:var(--spacing-8)}.xzr4qsh{--layout-padding-outer-x:var(--spacing-9)}.xzxxx64{--layout-padding-outer-y:0px}.xjej9fs{--layout-padding-outer-y:var(--astryx-card-padding-block-start,var(--astryx-card-padding,var(--spacing-4)))}.x1pui4bz{--layout-padding-outer-y:var(--astryx-dialog-padding-block-start,var(--astryx-dialog-padding,var(--spacing-4)))}.xo78phr{--layout-padding-outer-y:var(--astryx-section-padding-block-start,var(--astryx-section-padding,var(--spacing-4)))}.x1vj96e0{--layout-padding-outer-y:var(--spacing-0-5)}.x1mzf5mb{--layout-padding-outer-y:var(--spacing-0)}.xd3dqby{--layout-padding-outer-y:var(--spacing-1-5)}.x1gpfxoh{--layout-padding-outer-y:var(--spacing-1)}.x26l4wa{--layout-padding-outer-y:var(--spacing-10)}.x10zktp0{--layout-padding-outer-y:var(--spacing-11)}.x1yz3n6a{--layout-padding-outer-y:var(--spacing-12)}.x10pz7y9{--layout-padding-outer-y:var(--spacing-2)}.x1p6yq3h{--layout-padding-outer-y:var(--spacing-3)}.xx738ci{--layout-padding-outer-y:var(--spacing-4)}.x6yxws5{--layout-padding-outer-y:var(--spacing-5)}.x180vrwl{--layout-padding-outer-y:var(--spacing-6)}.x1q6rme1{--layout-padding-outer-y:var(--spacing-7)}.xid7e43{--layout-padding-outer-y:var(--spacing-8)}.x1t5kicu{--layout-padding-outer-y:var(--spacing-9)}.xnpej1e{--radius-element:var(--radius-full)}.xkce8z9{--separator-display:flex}.x11woleg:focus-visible{--indicator-color:var(--color-accent)}.x1ibt0lz:first-child{--separator-display:none}.x1rht92:nth-child(2n){--table-row-overlay:var(--color-background-muted)}.x1m3wso9:hover{--indicator-color:var(--color-accent)}@media(hover:hover){.x1pkcbo2.x1pkcbo2:hover{--table-row-overlay:var(--color-overlay-hover)}}.xln7xf2:not(#\#){font:inherit}.x10a8y8t:not(#\#){inset:0}.x1anvkwx:not(#\#){inset:auto}.xh3736h:not(#\#){inset:unset}.xkdpibf:not(#\#){margin:-1px}.x1ghz6dp:not(#\#){margin:0}.xkib98w:not(#\#){margin:8px}.x1bpp3o7:not(#\#){margin:auto}.x1n5sqmh:not(#\#){margin:calc(-1 * (var(--spacing-2) - var(--spacing-1) + 1px))}.x1717udv:not(#\#){padding:0}.x1tamke2:not(#\#){padding:16px}.xfawy5m:not(#\#){padding:4px}.x18oj4ui:not(#\#){padding:var(--_chat-composer-padding)}.xpoxszi:not(#\#){padding:var(--_segmented-control-padding)}.xtozwh:not(#\#){padding:var(--spacing-1) var(--spacing-2)}.x9epnlk:not(#\#){padding:var(--spacing-1)}.x15nmkw0:not(#\#){padding:var(--spacing-2) 0}.xlsj2fj:not(#\#){padding:var(--spacing-2)}.x1b2ylru:not(#\#){padding:var(--spacing-3)}.x1shk3sm:not(#\#){padding:var(--spacing-4)}.x1y5lnwp:focus:not(#\#){margin:0}.x9r1u3d:not(#\#):not(#\#){border-color:transparent}.xad5do:not(#\#):not(#\#){border-color:var(--color-accent)}.x1touxvs:not(#\#):not(#\#){border-color:var(--color-background-surface)}.xlee4gx:not(#\#):not(#\#){border-color:var(--color-border-blue)}.xb1xfl:not(#\#):not(#\#){border-color:var(--color-border-cyan)}.xvy26l8:not(#\#):not(#\#){border-color:var(--color-border-emphasized)}.x1w9ec3u:not(#\#):not(#\#){border-color:var(--color-border-gray)}.xy90a9n:not(#\#):not(#\#){border-color:var(--color-border-green)}.xloqurj:not(#\#):not(#\#){border-color:var(--color-border-orange)}.x1czkbn8:not(#\#):not(#\#){border-color:var(--color-border-pink)}.xq98wne:not(#\#):not(#\#){border-color:var(--color-border-purple)}.xjqgoec:not(#\#):not(#\#){border-color:var(--color-border-red)}.x1r9gxr1:not(#\#):not(#\#){border-color:var(--color-border-teal)}.x1kpnwn1:not(#\#):not(#\#){border-color:var(--color-border-yellow)}.x14i3s5s:not(#\#):not(#\#){border-color:var(--color-border)}.x1ofxpqo:not(#\#):not(#\#){border-color:var(--color-error)}.x16m2moy:not(#\#):not(#\#){border-color:var(--color-success)}.xqcx1ss:not(#\#):not(#\#){border-color:var(--color-text-primary)}.x8wg1ba:not(#\#):not(#\#){border-color:var(--color-warning)}.x2u8bby:not(#\#):not(#\#){border-radius:0}.x1nj7uno:not(#\#):not(#\#){border-radius:1px}.x16rqkct:not(#\#):not(#\#){border-radius:50%}.xur7f20:not(#\#):not(#\#){border-radius:8px}.x1pjcqnp:not(#\#):not(#\#){border-radius:inherit}.x1ws5lxm:not(#\#):not(#\#){border-radius:max(0px,calc(var(--_dropdown-menu-radius,var(--spacing-2)) - var(--_dropdown-menu-padding,var(--spacing-1))))}.xc910v0:not(#\#):not(#\#){border-radius:max(0px,calc(var(--_segmented-control-radius) - var(--_segmented-control-padding)))}.x1jxw6zd:not(#\#):not(#\#){border-radius:var(--_button-radius,var(--radius-element))}.xy0xnkn:not(#\#):not(#\#){border-radius:var(--_button-radius,var(--radius-full))}.x153u1i6:not(#\#):not(#\#){border-radius:var(--_card-radius)}.x1xunbrq:not(#\#):not(#\#){border-radius:var(--_chat-composer-radius)}.xuacgfc:not(#\#):not(#\#){border-radius:var(--_dialog-radius)}.x1n97fys:not(#\#):not(#\#){border-radius:var(--_dropdown-menu-radius)}.xvdfih8:not(#\#):not(#\#){border-radius:var(--_field-radius)}.x7a53xk:not(#\#):not(#\#){border-radius:var(--_hovercard-radius)}.x1hapoqb:not(#\#):not(#\#){border-radius:var(--_segmented-control-radius)}.xashgol:not(#\#):not(#\#){border-radius:var(--radius-chat)}.x1hviunn:not(#\#):not(#\#){border-radius:var(--radius-container)}.xh6dtrn:not(#\#):not(#\#){border-radius:var(--radius-element)}.xjspbzw:not(#\#):not(#\#){border-radius:var(--radius-full)}.xx3sua9:not(#\#):not(#\#){border-radius:var(--radius-inner)}.xwksslw:not(#\#):not(#\#){border-radius:var(--radius-none)}.xbsl7fq:not(#\#):not(#\#){border-style:dashed}.xng3xce:not(#\#):not(#\#){border-style:none}.x1y0btm7:not(#\#):not(#\#){border-style:solid}.xc342km:not(#\#):not(#\#){border-width:0}.xmkeg23:not(#\#):not(#\#){border-width:1px}.xdh2fpr:not(#\#):not(#\#){border-width:2px}.x1litavf:not(#\#):not(#\#){border-width:var(--border-width)}.x1mw0n95:not(#\#):not(#\#){border-width:var(--x-borderWidth)}.x1somy94:not(#\#):not(#\#){flex:0 0 0}.x3psx0u:not(#\#):not(#\#){flex:0 0 auto}.x1cqoux5:not(#\#):not(#\#){flex:1 1 0}.x845mor:not(#\#):not(#\#){flex:1 1 0%}.xfoc8du:not(#\#):not(#\#){flex:1 1 40px}.x12lumcd:not(#\#):not(#\#){flex:1 1 auto}.x98rzlu:not(#\#):not(#\#){flex:1}.xxhr3t:not(#\#):not(#\#){gap:0}.x1jnr06f:not(#\#):not(#\#){gap:4px}.x1lsbc85:not(#\#):not(#\#){gap:var(--spacing-0-5)}.xsn7fz1:not(#\#):not(#\#){gap:var(--spacing-0)}.x1s4dlld:not(#\#):not(#\#){gap:var(--spacing-1-5)}.xzye2dw:not(#\#):not(#\#){gap:var(--spacing-1)}.x3hoi3v:not(#\#):not(#\#){gap:var(--spacing-10)}.xpec5dj:not(#\#):not(#\#){gap:var(--spacing-2) var(--spacing-4)}.x1txdalj:not(#\#):not(#\#){gap:var(--spacing-2)}.xlaq8a2:not(#\#):not(#\#){gap:var(--spacing-3) var(--spacing-4)}.xjcht0a:not(#\#):not(#\#){gap:var(--spacing-3)}.x18g69wz:not(#\#):not(#\#){gap:var(--spacing-4)}.x9mgr7n:not(#\#):not(#\#){gap:var(--spacing-5)}.x1qh66ti:not(#\#):not(#\#){gap:var(--spacing-6)}.x4t41sb:not(#\#):not(#\#){gap:var(--spacing-8)}.x1pidvrl:not(#\#):not(#\#){gap:var(--x-gap)}.xgkxs2y:not(#\#):not(#\#){grid-column:1}.x1ms6mhf:not(#\#):not(#\#){grid-row:1}.x17y0mx6:not(#\#):not(#\#){inset-inline:0}.xe8uvvx:not(#\#):not(#\#){list-style:none}.x81ka23:not(#\#):not(#\#){margin-block:calc(-1 * (var(--spacing-3) - var(--spacing-2)))}.xhzvc8f:not(#\#):not(#\#){margin-block:calc(-1 * var(--spacing-2))}.xqixskq:not(#\#):not(#\#){margin-block:calc(var(--size-element-md) / 2 - var(--spacing-2) - var(--text-heading-2-size) * var(--text-heading-2-leading) / 2)}.xacfrgf:not(#\#):not(#\#){margin-block:calc(var(--spacing-1) * -1)}.xsq74q5:not(#\#):not(#\#){margin-block:var(--spacing-1)}.x1g06x3t:not(#\#):not(#\#){margin-block:var(--spacing-2)}.xvueqy4:not(#\#):not(#\#){margin-inline:auto}.xtedp8i:not(#\#):not(#\#){margin-inline:calc(-1 * var(--spacing-1))}.x1ho7dyk:not(#\#):not(#\#){margin-inline:calc(-1 * var(--spacing-2))}.x1ng9b9t:not(#\#):not(#\#){margin-inline:calc(-1 * var(--spacing-4))}.xhrcg97:not(#\#):not(#\#){margin-inline:var(--spacing-1)}.xvlecxo:not(#\#):not(#\#){margin-inline:var(--x-marginInline)}.x1a2a7pz:not(#\#):not(#\#){outline:none}.xysyzu8:not(#\#):not(#\#){overflow:auto}.x7giv3:not(#\#):not(#\#){overflow:clip}.xb3r6kr:not(#\#):not(#\#){overflow:hidden}.x1rea2x4:not(#\#):not(#\#){overflow:visible}.xish69e:not(#\#):not(#\#){overscroll-behavior:contain}.xt970qd:not(#\#):not(#\#){padding-block:0}.x1x7cmac:not(#\#):not(#\#){padding-block:calc(var(--spacing-1) - 1px)}.x13f7esw:not(#\#):not(#\#){padding-block:var(--spacing-0-5)}.x1hp7d8q:not(#\#):not(#\#){padding-block:var(--spacing-0)}.x1vofgu7:not(#\#):not(#\#){padding-block:var(--spacing-1-5)}.xu0wf1k:not(#\#):not(#\#){padding-block:var(--spacing-1)}.xce4md1:not(#\#):not(#\#){padding-block:var(--spacing-2)}.x8o8v82:not(#\#):not(#\#){padding-block:var(--spacing-3)}.x1na6nto:not(#\#):not(#\#){padding-block:var(--spacing-4)}.xq6koh6:not(#\#):not(#\#){padding-block:var(--spacing-6)}.xmfvnks:not(#\#):not(#\#){padding-block:var(--spacing-8)}.xnjsko4:not(#\#):not(#\#){padding-inline:0}.xx2oswg:not(#\#):not(#\#){padding-inline:calc(var(--spacing-1) - 1px)}.xkjnx3w:not(#\#):not(#\#){padding-inline:var(--spacing-0-5)}.x17a0aqu:not(#\#):not(#\#){padding-inline:var(--spacing-0)}.x4ezzuc:not(#\#):not(#\#){padding-inline:var(--spacing-1-5)}.x7a5moj:not(#\#):not(#\#){padding-inline:var(--spacing-1)}.xixulwi:not(#\#):not(#\#){padding-inline:var(--spacing-10)}.xf314gf:not(#\#):not(#\#){padding-inline:var(--spacing-2)}.xrrkdod:not(#\#):not(#\#){padding-inline:var(--spacing-3)}.x1pzlopt:not(#\#):not(#\#){padding-inline:var(--spacing-4)}.xzz68wx:not(#\#):not(#\#){padding-inline:var(--spacing-5)}.xm7rs69:not(#\#):not(#\#){padding-inline:var(--spacing-6)}.x6xnjw4:not(#\#):not(#\#){padding-inline:var(--spacing-8)}.x1ku5rj1:not(#\#):not(#\#){place-items:center}.xdf8p4l:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-0-5)}.x9lgdif:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-0)}.x1w8vatw:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-1-5)}.x1u2972t:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-1)}.xw959t8:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-10)}.x1mfb6cv:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-2)}.xpnzzb2:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-3)}.x3m3szd:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-4)}.x1vx7sv0:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-5)}.x1mvw9yj:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-6)}.x1xn2tv3:not(#\#):not(#\#){scroll-padding-inline:var(--spacing-8)}.xhfbhpw:not(#\#):not(#\#){scroll-snap-type:x mandatory}.xmqliwb:not(#\#):not(#\#){text-decoration:line-through}.x1hl2dhg:not(#\#):not(#\#){text-decoration:none}.x1bvjpef:not(#\#):not(#\#){text-decoration:underline}.xiw5bxp:not(#\#):not(#\#){transition:box-shadow var(--duration-fast) var(--ease-standard)}.xb0j27v:not(#\#):not(#\#){transition:grid-template-rows var(--duration-medium) var(--ease-standard)}.xq2gx43:not(#\#):not(#\#){transition:none}.x1ey1afo:not(#\#):not(#\#){transition:opacity var(--duration-fast)}.x1ob6yzd:not(#\#):not(#\#){transition:transform var(--duration-fast) var(--ease-standard)}.xr21g96.xr21g96:where(.x1g2q90y:focus-visible *):not(#\#):not(#\#){outline:2px solid var(--color-accent)}.x6q1khz:focus-within:not(#\#):not(#\#){border-color:var(--color-accent)}.xk2sxw7:focus-within:not(#\#):not(#\#){border-color:var(--color-error)}.xyq33ac:focus-within:not(#\#):not(#\#){border-color:var(--color-success)}.xa1yw2k:focus-within:not(#\#):not(#\#){border-color:var(--color-warning)}.x17nn4n9:focus-visible:not(#\#):not(#\#){outline:2px solid var(--color-accent)}.x1gj1ihy.x1gj1ihy:where(.x1iwu4tg:has(:focus-visible) *):not(#\#):not(#\#){outline:2px solid var(--color-accent)}.xkri23q.xkri23q:where(.x1tspnpo:has(:focus-visible) *):not(#\#):not(#\#){outline:2px solid var(--color-accent)}.x1p73he7:focus-visible:not(#\#):not(#\#){outline:2px solid var(--color-error)}.x1p25gnr:focus-visible:not(#\#):not(#\#){outline:var(--border-width) solid var(--color-accent)}.x1dordxg:focus-within:not(#\#):not(#\#){overflow:visible}.x1irc7jg:has(:focus-visible):not(#\#):not(#\#){outline:2px solid var(--color-accent)}.x64lkcz:focus:not(#\#):not(#\#){border-color:var(--color-error)}.x1lglk5v:focus:not(#\#):not(#\#){border-color:var(--color-success)}.x12sck4v:focus:not(#\#):not(#\#){border-color:var(--color-warning)}.xzeu18z:focus:not(#\#):not(#\#){outline:var(--border-width) solid var(--color-accent)}.xomzh7y:focus:not(#\#):not(#\#){overflow:visible}.xh2mrf5:focus:not(#\#):not(#\#){padding-block:var(--spacing-2)}.x1cf3d6k:focus:not(#\#):not(#\#){padding-inline:var(--spacing-4)}@media(max-width:480px){.x1a1jff.x1a1jff:not(#\#):not(#\#){gap:var(--spacing-4)}}@media(hover:hover){.x1od6ugu.x1od6ugu.x1od6ugu:where(.x1tspnpo:hover *):not(#\#):not(#\#){border-color:color-mix(in srgb,var(--color-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.xaq2ahg.xaq2ahg.xaq2ahg:where(.xklqth5:hover *):not(#\#):not(#\#){border-color:color-mix(in srgb,var(--color-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.x1jtjlen.x1jtjlen.x1jtjlen:where(.x1tspnpo:hover *):not(#\#):not(#\#){border-color:color-mix(in srgb,var(--color-border-emphasized),var(--color-tint-hover) 20%)}}@media(hover:hover){.x70talc.x70talc.x70talc:where(.xklqth5:hover *):not(#\#):not(#\#){border-color:color-mix(in srgb,var(--color-border-emphasized),var(--color-tint-hover) 20%)}}@media(hover:hover){.xmt8yqp.xmt8yqp.xmt8yqp:where(.x1tspnpo:hover *):not(#\#):not(#\#){border-color:var(--color-border)}}@media(hover:hover){.x1ww4t2b.x1ww4t2b:hover:not(#\#):not(#\#){border-color:var(--color-border-emphasized)}}@media(hover:hover){.x4ohgrr.x4ohgrr:hover:not(#\#):not(#\#){text-decoration:underline}}.x67t5t6:not(#\#):not(#\#):not(#\#){-webkit-backdrop-filter:blur(12px)}.x1ua5tub:not(#\#):not(#\#):not(#\#){-webkit-box-orient:vertical}.x1yhjpo9:not(#\#):not(#\#):not(#\#){-webkit-line-clamp:var(--x-WebkitLineClamp)}.xiy8rlo:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 24px)}.x1bv1mxo:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 36px)}.xo9xo30:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 48px)}.x5lxg6s:not(#\#):not(#\#):not(#\#){-webkit-overflow-scrolling:touch}.xpdipgo:not(#\#):not(#\#):not(#\#){-webkit-touch-callout:none}.x1pha0wt:not(#\#):not(#\#):not(#\#){align-items:baseline}.x6s0dn4:not(#\#):not(#\#):not(#\#){align-items:center}.xpqajaz:not(#\#):not(#\#):not(#\#){align-items:end}.xuk3077:not(#\#):not(#\#):not(#\#){align-items:flex-end}.x1cy8zhl:not(#\#):not(#\#):not(#\#){align-items:flex-start}.x7a106z:not(#\#):not(#\#):not(#\#){align-items:start}.x1qjc9v5:not(#\#):not(#\#):not(#\#){align-items:stretch}.xoi2r2e:not(#\#):not(#\#):not(#\#){align-self:baseline}.xamitd3:not(#\#):not(#\#):not(#\#){align-self:center}.xpvyfi4:not(#\#):not(#\#):not(#\#){align-self:flex-end}.xqcrz7y:not(#\#):not(#\#):not(#\#){align-self:flex-start}.x1y8v6su:not(#\#):not(#\#):not(#\#){align-self:start}.xkh2ocl:not(#\#):not(#\#):not(#\#){align-self:stretch}.x7dpabl:not(#\#):not(#\#):not(#\#){anchor-name:--outline-active}.x17yabm6:not(#\#):not(#\#):not(#\#){animation-delay:var(--duration-medium-min)}.xvo38ju:not(#\#):not(#\#):not(#\#){animation-delay:var(--x-animationDelay)}.xpz12be:not(#\#):not(#\#):not(#\#){animation-direction:alternate}.xmg6eyc:not(#\#):not(#\#):not(#\#){animation-duration:1.5s}.xjlvqhv:not(#\#):not(#\#):not(#\#){animation-duration:1ms}.x1c74tu6:not(#\#):not(#\#):not(#\#){animation-duration:2s}.x9uej1z:not(#\#):not(#\#):not(#\#){animation-duration:var(--duration-fast-max)}.xb2rp9n:not(#\#):not(#\#):not(#\#){animation-duration:var(--duration-fast)}.xqgcaz:not(#\#):not(#\#):not(#\#){animation-duration:var(--duration-medium-max)}.x14qxm4i:not(#\#):not(#\#):not(#\#){animation-duration:var(--duration-slow-min)}.xskzprw:not(#\#):not(#\#):not(#\#){animation-fill-mode:backwards}.x10e4vud:not(#\#):not(#\#):not(#\#){animation-fill-mode:forwards}.xa4qsjk:not(#\#):not(#\#):not(#\#){animation-iteration-count:infinite}.x1ewfqum:not(#\#):not(#\#):not(#\#){animation-name:x11lauxq-B}.xcx56e2:not(#\#):not(#\#):not(#\#){animation-name:x13kz0yu-B}.x1ffowhz:not(#\#):not(#\#):not(#\#){animation-name:x188b6p3-B}.xqcmdr3:not(#\#):not(#\#):not(#\#){animation-name:x18re5ia-B}.x3psbcj:not(#\#):not(#\#):not(#\#){animation-name:x1ahk7ht-B}.x1dvww92:not(#\#):not(#\#):not(#\#){animation-name:x1b6yrix-B}.x97zbip:not(#\#):not(#\#):not(#\#){animation-name:x1k48ry3-B}.xeuoslp:not(#\#):not(#\#):not(#\#){animation-name:xgnty7z-B}.x1srr2gu:not(#\#):not(#\#):not(#\#){animation-name:xiylxmw-B}.x1ka1v4i:not(#\#):not(#\#):not(#\#){animation-name:xqng64z-B}.xozk8ic:not(#\#):not(#\#):not(#\#){animation-name:xr3m334-B}.x1mta51n:not(#\#):not(#\#):not(#\#){animation-name:xtut5q7-B}.xck01x9:not(#\#):not(#\#):not(#\#){animation-name:xu7jd1z-B}.xl1vlw0:not(#\#):not(#\#):not(#\#){animation-name:xv1hr86-B}.x1i331go:not(#\#):not(#\#):not(#\#){animation-name:xwmkjkf-B}.x4hg4is:not(#\#):not(#\#):not(#\#){animation-timing-function:ease-in-out}.x1esw782:not(#\#):not(#\#):not(#\#){animation-timing-function:linear}.x193epu2:not(#\#):not(#\#):not(#\#){animation-timing-function:steps(10,end)}.x128ha8g:not(#\#):not(#\#):not(#\#){animation-timing-function:var(--ease-standard)}.xjyslct:not(#\#):not(#\#):not(#\#){appearance:none}.x1plog1:not(#\#):not(#\#):not(#\#){aspect-ratio:1}.xioom0i:not(#\#):not(#\#):not(#\#){aspect-ratio:var(--button-icon-only-aspect)}.xvn2z4z:not(#\#):not(#\#):not(#\#){backdrop-filter:blur(12px)}.xlp1x4z:not(#\#):not(#\#):not(#\#){backface-visibility:hidden}.xx83zyx:not(#\#):not(#\#):not(#\#){background-clip:padding-box}.x1rkw3yq:not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,white 60%,transparent)}.xtwfq29:not(#\#):not(#\#):not(#\#){background-color:currentColor}.xgcd1z6:not(#\#):not(#\#):not(#\#){background-color:inherit}.xcpsgoo:not(#\#):not(#\#):not(#\#){background-color:#00000080}.xjbqb8w:not(#\#):not(#\#):not(#\#){background-color:transparent}.xgcxg3y:not(#\#):not(#\#):not(#\#){background-color:var(--color-accent-muted)}.x1ewilqj:not(#\#):not(#\#):not(#\#){background-color:var(--color-accent)}.x1o0wnni:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-blue)}.x1eiddq6:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-body)}.x1de1mus:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-card)}.x1rgj867:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-cyan)}.x1l5t2a3:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-error-inverted)}.xspzpui:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-gray)}.x1sqjeoo:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-green)}.xenstv7:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-inverted)}.xwmxj5m:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-muted)}.x1e9xt6e:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-orange)}.xnpoty2:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-pink)}.x1prclbq:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-popover)}.x16i6n6f:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-purple)}.x1cibrc5:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-red)}.x10xzikg:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-surface)}.x1jtji5o:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-teal)}.x1bo7t0x:not(#\#):not(#\#):not(#\#){background-color:var(--color-background-yellow)}.x7njt3n:not(#\#):not(#\#):not(#\#){background-color:var(--color-border-emphasized)}.x1m4xfpy:not(#\#):not(#\#):not(#\#){background-color:var(--color-border)}.x1pritpl:not(#\#):not(#\#):not(#\#){background-color:var(--color-error-muted)}.x1pjz0fi:not(#\#):not(#\#):not(#\#){background-color:var(--color-error)}.xowkcby:not(#\#):not(#\#):not(#\#){background-color:var(--color-icon-primary)}.x1q5y3ey:not(#\#):not(#\#):not(#\#){background-color:var(--color-icon-secondary)}.x17x4s8c:not(#\#):not(#\#):not(#\#){background-color:var(--color-neutral)}.x1azo05:not(#\#):not(#\#):not(#\#){background-color:var(--color-on-accent)}.x1lmrjuc:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}.xi89dp7:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-pressed)}.x1u4601x:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay)}.xprdx6m:not(#\#):not(#\#):not(#\#){background-color:var(--color-skeleton)}.xu13z74:not(#\#):not(#\#):not(#\#){background-color:var(--color-success-muted)}.xdsz4j9:not(#\#):not(#\#):not(#\#){background-color:var(--color-success)}.xzyc27v:not(#\#):not(#\#):not(#\#){background-color:var(--color-syntax-background)}.x16fr6go:not(#\#):not(#\#):not(#\#){background-color:var(--color-text-disabled)}.x19aspcf:not(#\#):not(#\#):not(#\#){background-color:var(--color-text-primary)}.xdomwnj:not(#\#):not(#\#):not(#\#){background-color:var(--color-text-secondary)}.xdsb6cv:not(#\#):not(#\#):not(#\#){background-color:var(--color-track)}.x24i8r5:not(#\#):not(#\#):not(#\#){background-color:var(--color-warning-muted)}.x1q8g9m5:not(#\#):not(#\#):not(#\#){background-color:var(--color-warning)}.x1fd97le:not(#\#):not(#\#):not(#\#){background-color:var(--table-sticky-background,var(--color-background-card))}.x1vrk509:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(var(--color-background-muted),var(--color-background-muted))}.x14bno8m:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(var(--color-neutral),var(--color-neutral))}.x18o3ruo:not(#\#):not(#\#):not(#\#){background-image:none}.x1mwwwfo:not(#\#):not(#\#):not(#\#){border-collapse:collapse}.x16uus16:not(#\#):not(#\#):not(#\#){border-end-end-radius:0}.xbiv7yw:not(#\#):not(#\#):not(#\#){border-end-start-radius:0}.x1gejf6u:not(#\#):not(#\#):not(#\#){border-inline-end-color:var(--color-border)}.x18b5jzi:not(#\#):not(#\#):not(#\#){border-inline-end-style:solid}.x1lun4ml:not(#\#):not(#\#):not(#\#){border-inline-end-width:1px}.xw8tdv1:not(#\#):not(#\#):not(#\#){border-inline-end-width:var(--border-width)}.x14ydlgx:not(#\#):not(#\#):not(#\#){border-inline-start-color:var(--color-border-emphasized)}.x1j92z86:not(#\#):not(#\#):not(#\#){border-inline-start-color:var(--color-border)}.xrvmtm5:not(#\#):not(#\#):not(#\#){border-inline-start-color:var(--color-on-accent)}.x1t7ytsu:not(#\#):not(#\#):not(#\#){border-inline-start-style:solid}.xpilrb4:not(#\#):not(#\#):not(#\#){border-inline-start-width:1px}.xgbv0en:not(#\#):not(#\#):not(#\#){border-inline-start-width:var(--border-width)}.xtpqe59:not(#\#):not(#\#):not(#\#){border-inline-start-width:var(--spacing-0-5)}.x1gukg7c:not(#\#):not(#\#):not(#\#){border-spacing:0}.x1ga7v0g:not(#\#):not(#\#):not(#\#){border-start-end-radius:0}.x15mokao:not(#\#):not(#\#):not(#\#){border-start-start-radius:0}.x183tx6i:not(#\#):not(#\#):not(#\#){border-start-start-radius:var(--radius-page)}.x1lp15jv:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 1px var(--color-border-emphasized)}.x1er153n:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 1px var(--color-border)}.x1iobdd1:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 1px var(--color-text-primary)}.xwaz83g:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-accent)}.xcfwc96:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-blue)}.x1focwmt:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-cyan)}.x1q443o4:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-gray)}.x1wnp1w4:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-green)}.x1kbthdo:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-orange)}.x1916zju:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-pink)}.x1egy5tt:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-purple)}.xi00ukz:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-red)}.x1dpgkq:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-teal)}.x1qdfmgt:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-border-yellow)}.x1gnnqk1:not(#\#):not(#\#):not(#\#){box-shadow:none}.x1kcpxr7:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-high)}.x1i5ehqx:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-low)}.x14hfi27:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-med)}.x9f619:not(#\#):not(#\#):not(#\#){box-sizing:border-box}.x1afcbsf:not(#\#):not(#\#):not(#\#){box-sizing:content-box}.xxugrtn:not(#\#):not(#\#):not(#\#){caret-color:var(--color-accent)}.x1hyvwdk:not(#\#):not(#\#):not(#\#){clip-path:inset(50%)}.xzpqnlu:not(#\#):not(#\#):not(#\#){clip:rect(0,0,0,0)}.xntwwlm:not(#\#):not(#\#):not(#\#){color-scheme:dark}.x108lcm5:not(#\#):not(#\#):not(#\#){color-scheme:light dark}.x19aimcq:not(#\#):not(#\#):not(#\#){color-scheme:light}.xj8ax7g:not(#\#):not(#\#):not(#\#){color:red}.x1heor9g:not(#\#):not(#\#):not(#\#){color:inherit}.x19co3pv:not(#\#):not(#\#):not(#\#){color:transparent}.xqwr325:not(#\#):not(#\#):not(#\#){color:var(--color-accent)}.xrkvqaz:not(#\#):not(#\#):not(#\#){color:var(--color-background-surface)}.xjt36v0:not(#\#):not(#\#):not(#\#){color:var(--color-error)}.x1fns2mt:not(#\#):not(#\#):not(#\#){color:var(--color-icon-blue)}.x157w0xa:not(#\#):not(#\#):not(#\#){color:var(--color-icon-cyan)}.xqa6c3m:not(#\#):not(#\#):not(#\#){color:var(--color-icon-disabled)}.x1eyinzz:not(#\#):not(#\#):not(#\#){color:var(--color-icon-gray)}.xmxeech:not(#\#):not(#\#):not(#\#){color:var(--color-icon-green)}.xxu74a4:not(#\#):not(#\#):not(#\#){color:var(--color-icon-orange)}.x1kxxfg5:not(#\#):not(#\#):not(#\#){color:var(--color-icon-pink)}.xtbr613:not(#\#):not(#\#):not(#\#){color:var(--color-icon-primary)}.xzdw94u:not(#\#):not(#\#):not(#\#){color:var(--color-icon-purple)}.xeffzf7:not(#\#):not(#\#):not(#\#){color:var(--color-icon-red)}.xv9yike:not(#\#):not(#\#):not(#\#){color:var(--color-icon-secondary)}.x1f3zxcb:not(#\#):not(#\#):not(#\#){color:var(--color-icon-teal)}.x1g6zdft:not(#\#):not(#\#):not(#\#){color:var(--color-icon-yellow)}.x17wrial:not(#\#):not(#\#):not(#\#){color:var(--color-on-accent)}.x9e3rv5:not(#\#):not(#\#):not(#\#){color:var(--color-on-dark)}.x1m024r3:not(#\#):not(#\#):not(#\#){color:var(--color-on-error)}.xri61p4:not(#\#):not(#\#):not(#\#){color:var(--color-on-success)}.xrebv38:not(#\#):not(#\#):not(#\#){color:var(--color-on-warning)}.xtjic6:not(#\#):not(#\#):not(#\#){color:var(--color-success)}.x1mjzq1q:not(#\#):not(#\#):not(#\#){color:var(--color-syntax-comment)}.xt5rlkq:not(#\#):not(#\#):not(#\#){color:var(--color-syntax-punctuation)}.xdfisg:not(#\#):not(#\#):not(#\#){color:var(--color-syntax-variable)}.xjse4m1:not(#\#):not(#\#):not(#\#){color:var(--color-text-accent)}.x1vvqiwl:not(#\#):not(#\#):not(#\#){color:var(--color-text-blue)}.x1txnczv:not(#\#):not(#\#):not(#\#){color:var(--color-text-cyan)}.xnbbluu:not(#\#):not(#\#):not(#\#){color:var(--color-text-disabled)}.xru1t7f:not(#\#):not(#\#):not(#\#){color:var(--color-text-gray)}.xltfdvo:not(#\#):not(#\#):not(#\#){color:var(--color-text-green)}.xm47u9q:not(#\#):not(#\#):not(#\#){color:var(--color-text-orange)}.xiuofww:not(#\#):not(#\#):not(#\#){color:var(--color-text-pink)}.x1tgivj0:not(#\#):not(#\#):not(#\#){color:var(--color-text-primary)}.x1m9wyeb:not(#\#):not(#\#):not(#\#){color:var(--color-text-purple)}.x1joocv1:not(#\#):not(#\#):not(#\#){color:var(--color-text-red)}.xv1l7n4:not(#\#):not(#\#):not(#\#){color:var(--color-text-secondary)}.x9x0lbs:not(#\#):not(#\#):not(#\#){color:var(--color-text-teal)}.xdhq94a:not(#\#):not(#\#):not(#\#){color:var(--color-text-yellow)}.xs3pv69:not(#\#):not(#\#):not(#\#){color:var(--color-warning)}.x1kihgfc:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-0-5)}.x1o57wo1:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-0)}.x1thn6ci:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-1-5)}.x1lfs0n9:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-1)}.x1p37tyl:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-10)}.xak3so:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-2)}.xewh9hi:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-3)}.xty4p9g:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-4)}.x1eqhezk:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-5)}.x3qlgwd:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-6)}.xicv188:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-8)}.xawy1a7:not(#\#):not(#\#):not(#\#){contain:layout style}.x12h1iku:not(#\#):not(#\#):not(#\#){container-type:inline-size}.xb5mbof:not(#\#):not(#\#):not(#\#){content-visibility:auto}.xfrknyr:not(#\#):not(#\#):not(#\#){counter-increment:astryx-list}.xif0320:not(#\#):not(#\#):not(#\#){counter-reset:astryx-list}.x1khind5:not(#\#):not(#\#):not(#\#){counter-reset:var(--x-counterReset)}.xicojor:not(#\#):not(#\#):not(#\#){cursor:col-resize}.xt0e3qv:not(#\#):not(#\#):not(#\#){cursor:default}.x7eptgl:not(#\#):not(#\#):not(#\#){cursor:ew-resize}.x1jm3nie:not(#\#):not(#\#):not(#\#){cursor:grab}.xi9pz9s:not(#\#):not(#\#):not(#\#){cursor:grabbing}.xmper1u:not(#\#):not(#\#):not(#\#){cursor:inherit}.x1h6gzvc:not(#\#):not(#\#):not(#\#){cursor:not-allowed}.x1ypdohk:not(#\#):not(#\#):not(#\#){cursor:pointer}.xyozgr7:not(#\#):not(#\#):not(#\#){cursor:row-resize}.x1ed109x:not(#\#):not(#\#):not(#\#){cursor:text}.x1huxd7x:not(#\#):not(#\#):not(#\#){cursor:zoom-in}.x104kibb:not(#\#):not(#\#):not(#\#){display:-webkit-box}.x1lliihq:not(#\#):not(#\#):not(#\#){display:block}.xjp7ctv:not(#\#):not(#\#):not(#\#){display:contents}.x78zum5:not(#\#):not(#\#):not(#\#){display:flex}.xrvj5dj:not(#\#):not(#\#):not(#\#){display:grid}.x1rg5ohu:not(#\#):not(#\#):not(#\#){display:inline-block}.x3nfvp2:not(#\#):not(#\#):not(#\#){display:inline-flex}.xwz0xwf:not(#\#):not(#\#):not(#\#){display:inline-grid}.xt0psk2:not(#\#):not(#\#):not(#\#){display:inline}.x1s85apg:not(#\#):not(#\#):not(#\#){display:none}.x11ke7fs:not(#\#):not(#\#):not(#\#){display:var(--separator-display)}.x1r8uery:not(#\#):not(#\#):not(#\#){flex-basis:0}.xjpgo6f:not(#\#):not(#\#):not(#\#){flex-basis:200px}.xchdapg:not(#\#):not(#\#):not(#\#){flex-basis:300px}.x3ieub6:not(#\#):not(#\#):not(#\#){flex-direction:column-reverse}.xdt5ytf:not(#\#):not(#\#):not(#\#){flex-direction:column}.x15zctf7:not(#\#):not(#\#):not(#\#){flex-direction:row-reverse}.x1q0g3np:not(#\#):not(#\#):not(#\#){flex-direction:row}.x1c4vz4f:not(#\#):not(#\#):not(#\#){flex-grow:0}.x1iyjqo2:not(#\#):not(#\#):not(#\#){flex-grow:1}.xgyuaek:not(#\#):not(#\#):not(#\#){flex-grow:2}.x2lah0s:not(#\#):not(#\#):not(#\#){flex-shrink:0}.xs83m0k:not(#\#):not(#\#):not(#\#){flex-shrink:1}.x1g3ib7:not(#\#):not(#\#):not(#\#){flex-shrink:10}.xozqiw3:not(#\#):not(#\#):not(#\#){flex-wrap:nowrap}.x8hhl5t:not(#\#):not(#\#):not(#\#){flex-wrap:wrap-reverse}.x1a02dak:not(#\#):not(#\#):not(#\#){flex-wrap:wrap}.xjb2p0i:not(#\#):not(#\#):not(#\#){font-family:inherit}.x9ynric:not(#\#):not(#\#):not(#\#){font-family:var(--font-family-body)}.x9m5x89:not(#\#):not(#\#):not(#\#){font-family:var(--font-family-code)}.x1g81bgm:not(#\#):not(#\#):not(#\#){font-family:var(--font-family-heading)}.x1k6wstc:not(#\#):not(#\#):not(#\#){font-size:10px}.xfifm61:not(#\#):not(#\#):not(#\#){font-size:12px}.xif65rj:not(#\#):not(#\#):not(#\#){font-size:14px}.x1j61zf2:not(#\#):not(#\#):not(#\#){font-size:16px}.xwsyq91:not(#\#):not(#\#):not(#\#){font-size:20px}.x1pvqxga:not(#\#):not(#\#):not(#\#){font-size:24px}.x1qlqyl8:not(#\#):not(#\#):not(#\#){font-size:inherit}.xhs0kqb:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-2xl)}.x16a80zy:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-2xs)}.x10srzze:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-3xl)}.x10p7juq:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-3xs)}.xqcvi3d:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-4xl)}.xxc45ev:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-4xs)}.x1j29vfg:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-base)}.xc7cgfe:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-lg)}.x1eqnyfr:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-sm)}.x1wqms48:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-xl)}.x51wmvv:not(#\#):not(#\#):not(#\#){font-size:var(--font-size-xs)}.xho7bvi:not(#\#):not(#\#):not(#\#){font-size:var(--spacing-4)}.xjm74w1:not(#\#):not(#\#):not(#\#){font-size:var(--text-body-size)}.xp03k98:not(#\#):not(#\#):not(#\#){font-size:var(--text-code-size)}.xsub3ws:not(#\#):not(#\#):not(#\#){font-size:var(--text-display-1-size)}.x1yego12:not(#\#):not(#\#):not(#\#){font-size:var(--text-display-2-size)}.xlgnzhf:not(#\#):not(#\#):not(#\#){font-size:var(--text-display-3-size)}.xcg7oai:not(#\#):not(#\#):not(#\#){font-size:var(--text-heading-1-size)}.x1xvnhcw:not(#\#):not(#\#):not(#\#){font-size:var(--text-heading-2-size)}.xii13ha:not(#\#):not(#\#):not(#\#){font-size:var(--text-heading-3-size)}.x8tkxat:not(#\#):not(#\#):not(#\#){font-size:var(--text-heading-4-size)}.xsgqta0:not(#\#):not(#\#):not(#\#){font-size:var(--text-heading-5-size)}.xw5ohdf:not(#\#):not(#\#):not(#\#){font-size:var(--text-heading-6-size)}.xcr08ib:not(#\#):not(#\#):not(#\#){font-size:var(--text-label-size)}.x18juvz8:not(#\#):not(#\#):not(#\#){font-size:var(--text-large-size)}.x141an7d:not(#\#):not(#\#):not(#\#){font-size:var(--text-supporting-size)}.xdmh292:not(#\#):not(#\#):not(#\#){font-size:var(--x-fontSize)}.x1j61x8r:not(#\#):not(#\#):not(#\#){font-style:normal}.xss6m8b:not(#\#):not(#\#):not(#\#){font-variant-numeric:tabular-nums}.xk50ysn:not(#\#):not(#\#):not(#\#){font-weight:500}.x1s688f:not(#\#):not(#\#):not(#\#){font-weight:600}.x1pd3egz:not(#\#):not(#\#):not(#\#){font-weight:inherit}.x1lvx875:not(#\#):not(#\#):not(#\#){font-weight:var(--font-weight-bold)}.x1e4wzip:not(#\#):not(#\#):not(#\#){font-weight:var(--font-weight-medium)}.x1sodnla:not(#\#):not(#\#):not(#\#){font-weight:var(--font-weight-normal)}.x2mo6ok:not(#\#):not(#\#):not(#\#){font-weight:var(--font-weight-semibold)}.xxovm9e:not(#\#):not(#\#):not(#\#){font-weight:var(--text-body-weight)}.xx3eeay:not(#\#):not(#\#):not(#\#){font-weight:var(--text-code-weight)}.x1txul5o:not(#\#):not(#\#):not(#\#){font-weight:var(--text-display-1-weight)}.x1y36c3f:not(#\#):not(#\#):not(#\#){font-weight:var(--text-display-2-weight)}.x1on40hk:not(#\#):not(#\#):not(#\#){font-weight:var(--text-display-3-weight)}.x1v68xuy:not(#\#):not(#\#):not(#\#){font-weight:var(--text-heading-1-weight)}.x12yy4cs:not(#\#):not(#\#):not(#\#){font-weight:var(--text-heading-2-weight)}.x1jcxfy8:not(#\#):not(#\#):not(#\#){font-weight:var(--text-heading-3-weight)}.x2hcmsi:not(#\#):not(#\#):not(#\#){font-weight:var(--text-heading-4-weight)}.xno150v:not(#\#):not(#\#):not(#\#){font-weight:var(--text-heading-5-weight)}.x1pw4frv:not(#\#):not(#\#):not(#\#){font-weight:var(--text-heading-6-weight)}.xmhvcl5:not(#\#):not(#\#):not(#\#){font-weight:var(--text-label-weight)}.x149oux8:not(#\#):not(#\#):not(#\#){font-weight:var(--text-large-weight)}.xv8on6e:not(#\#):not(#\#):not(#\#){font-weight:var(--text-supporting-weight)}.xu6a5m6:not(#\#):not(#\#):not(#\#){grid-auto-columns:1fr}.x1mt1orb:not(#\#):not(#\#):not(#\#){grid-auto-flow:column}.xhij9v2:not(#\#):not(#\#):not(#\#){grid-auto-rows:var(--x-gridAutoRows)}.xcrlgei:not(#\#):not(#\#):not(#\#){grid-column-start:1}.x1agbcgv:not(#\#):not(#\#):not(#\#){grid-row-start:1}.x134kloy:not(#\#):not(#\#):not(#\#){grid-template-columns:1fr auto 1fr}.x1y6fwsi:not(#\#):not(#\#):not(#\#){grid-template-columns:1fr}.x1pmbctz:not(#\#):not(#\#):not(#\#){grid-template-columns:auto 1fr}.x1wthsqz:not(#\#):not(#\#):not(#\#){grid-template-columns:auto repeat(7,1fr)}.x1mzazjb:not(#\#):not(#\#):not(#\#){grid-template-columns:repeat(7,1fr)}.x189bvgu:not(#\#):not(#\#):not(#\#){grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.xqketvx:not(#\#):not(#\#):not(#\#){grid-template-columns:var(--x-gridTemplateColumns)}.xihq33y:not(#\#):not(#\#):not(#\#){grid-template-rows:0fr}.x1tu4anv:not(#\#):not(#\#):not(#\#){grid-template-rows:1fr}.xtijo5x:not(#\#):not(#\#):not(#\#){inset-inline-end:0}.x1oinnt5:not(#\#):not(#\#):not(#\#){inset-inline-end:calc((var(--size-element-md) - 20px) / 2 - 1px)}.x8qlsd8:not(#\#):not(#\#):not(#\#){inset-inline-end:calc((var(--size-element-sm) - 20px) / 2 - 1px)}.x72tfeb:not(#\#):not(#\#):not(#\#){inset-inline-end:var(--spacing-2)}.x1o0tod:not(#\#):not(#\#):not(#\#){inset-inline-start:0}.xc8icb0:not(#\#):not(#\#):not(#\#){isolation:isolate}.xl56j7k:not(#\#):not(#\#):not(#\#){justify-content:center}.x13a6bvl:not(#\#):not(#\#):not(#\#){justify-content:flex-end}.x1nhvcw1:not(#\#):not(#\#):not(#\#){justify-content:flex-start}.x1l1ennw:not(#\#):not(#\#):not(#\#){justify-content:space-around}.x1qughib:not(#\#):not(#\#):not(#\#){justify-content:space-between}.xaw8158:not(#\#):not(#\#):not(#\#){justify-content:space-evenly}.x1o2pa38:not(#\#):not(#\#):not(#\#){justify-items:center}.x4xo5sw:not(#\#):not(#\#):not(#\#){justify-items:end}.x619ttb:not(#\#):not(#\#):not(#\#){justify-items:start}.xl4xnwh:not(#\#):not(#\#):not(#\#){justify-items:stretch}.x7v7x1q:not(#\#):not(#\#):not(#\#){justify-self:center}.x1lqcxt8:not(#\#):not(#\#):not(#\#){justify-self:start}.x14ju556:not(#\#):not(#\#):not(#\#){line-height:0}.xo5v014:not(#\#):not(#\#):not(#\#){line-height:1}.x19v9tvf:not(#\#):not(#\#):not(#\#){line-height:22px}.x15bjb6t:not(#\#):not(#\#):not(#\#){line-height:inherit}.x7acx1w:not(#\#):not(#\#):not(#\#){line-height:var(--spacing-5)}.xw6l6zx:not(#\#):not(#\#):not(#\#){line-height:var(--text-body-leading)}.x17iicif:not(#\#):not(#\#):not(#\#){line-height:var(--text-code-leading)}.x112ttwr:not(#\#):not(#\#):not(#\#){line-height:var(--text-display-1-leading)}.xh0iwvy:not(#\#):not(#\#):not(#\#){line-height:var(--text-display-2-leading)}.x1ujwuaq:not(#\#):not(#\#):not(#\#){line-height:var(--text-display-3-leading)}.xfmsba7:not(#\#):not(#\#):not(#\#){line-height:var(--text-heading-1-leading)}.x1cpk1wn:not(#\#):not(#\#):not(#\#){line-height:var(--text-heading-2-leading)}.xwjzt0u:not(#\#):not(#\#):not(#\#){line-height:var(--text-heading-3-leading)}.xqerer:not(#\#):not(#\#):not(#\#){line-height:var(--text-heading-4-leading)}.xo3gurs:not(#\#):not(#\#):not(#\#){line-height:var(--text-heading-5-leading)}.xeixjfn:not(#\#):not(#\#):not(#\#){line-height:var(--text-heading-6-leading)}.x1kq96og:not(#\#):not(#\#):not(#\#){line-height:var(--text-label-leading)}.xf74fhv:not(#\#):not(#\#):not(#\#){line-height:var(--text-large-leading)}.x1ltkj2j:not(#\#):not(#\#):not(#\#){line-height:var(--text-supporting-leading)}.x3ct3a4:not(#\#):not(#\#):not(#\#){list-style-type:none}.x14z9mp:not(#\#):not(#\#):not(#\#){margin-inline-end:0}.x1fcf3bl:not(#\#):not(#\#):not(#\#){margin-inline-end:calc(-1 * var(--container-padding-inline-end,0px))}.x1kpg4um:not(#\#):not(#\#):not(#\#){margin-inline-end:calc(-1 * var(--layout-padding-inner-x,var(--spacing-4)))}.xkd40ry:not(#\#):not(#\#):not(#\#){margin-inline-end:calc(-1 * var(--spacing-1))}.x3kzqx6:not(#\#):not(#\#):not(#\#){margin-inline-end:calc(-1 * var(--spacing-2))}.xmequkd:not(#\#):not(#\#):not(#\#){margin-inline-end:calc(var(--spacing-1) * -1)}.xnur1sd:not(#\#):not(#\#):not(#\#){margin-inline-end:var(--spacing-1)}.x1qfufaz:not(#\#):not(#\#):not(#\#){margin-inline-start:-8px}.x1lziwak:not(#\#):not(#\#):not(#\#){margin-inline-start:0}.xvc5jky:not(#\#):not(#\#):not(#\#){margin-inline-start:auto}.xd10s4z:not(#\#):not(#\#):not(#\#){margin-inline-start:calc(-1 * var(--border-width))}.xojxgvx:not(#\#):not(#\#):not(#\#){margin-inline-start:calc(-1 * var(--container-padding-inline-start,0px))}.x1wim8z0:not(#\#):not(#\#):not(#\#){margin-inline-start:calc(-1 * var(--layout-padding-inner-x,var(--spacing-4)))}.x1xrm450:not(#\#):not(#\#):not(#\#){margin-inline-start:calc(var(--spacing-2) - var(--spacing-1) + 1px)}.x13hpdyo:not(#\#):not(#\#):not(#\#){margin-inline-start:var(--_avatar-group-overlap)}.xladpz9:not(#\#):not(#\#):not(#\#){margin-inline-start:var(--spacing-0-5)}.x11g1kdw:not(#\#):not(#\#):not(#\#){margin-inline-start:var(--spacing-1)}.x1l10yog:not(#\#):not(#\#):not(#\#){margin-inline-start:var(--spacing-6)}.xkm2don:not(#\#):not(#\#):not(#\#){mask-image:linear-gradient(to bottom,transparent,black 24px)}.xw26lqc:not(#\#):not(#\#):not(#\#){mask-image:linear-gradient(to bottom,transparent,black 36px)}.xr5yg4x:not(#\#):not(#\#):not(#\#){mask-image:linear-gradient(to bottom,transparent,black 48px)}.xtdd0ob:not(#\#):not(#\#):not(#\#){mask-image:linear-gradient(to left,transparent 0%,rgba(0,0,0,.3) 2px,black var(--spacing-1))}.x1b5cd1y:not(#\#):not(#\#):not(#\#){mask-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.3) 2px,black var(--spacing-1),black calc(100% - var(--spacing-1)),rgba(0,0,0,.3) calc(100% - 2px),transparent 100%)}.x1ujl4f5:not(#\#):not(#\#):not(#\#){mask-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.3) 2px,black var(--spacing-1))}.xw4ya9i:not(#\#):not(#\#):not(#\#){mask-image:none}.x19kjcj4:not(#\#):not(#\#):not(#\#){object-fit:contain}.xl1xv1r:not(#\#):not(#\#):not(#\#){object-fit:cover}.x1xyvc85:not(#\#):not(#\#):not(#\#){opacity:.15}.xvpkmg4:not(#\#):not(#\#):not(#\#){opacity:.25}.xuzhngd:not(#\#):not(#\#):not(#\#){opacity:.3}.x3onkmb:not(#\#):not(#\#):not(#\#){opacity:.35}.xbyyjgo:not(#\#):not(#\#):not(#\#){opacity:.5}.x197sbye:not(#\#):not(#\#):not(#\#){opacity:.6}.xg01cxk:not(#\#):not(#\#):not(#\#){opacity:0}.x1hc1fzr:not(#\#):not(#\#):not(#\#){opacity:1}.x1clqncf:not(#\#):not(#\#):not(#\#){order:-1}.x1wfwxd8:not(#\#):not(#\#):not(#\#){outline-offset:0}.x1y3gkto:not(#\#):not(#\#):not(#\#){outline-offset:1px}.x1hl8ikr:not(#\#):not(#\#):not(#\#){outline-offset:2px}.x9y5y3v:not(#\#):not(#\#):not(#\#){overflow-clip-margin:1px}.x1mzt3pk:not(#\#):not(#\#):not(#\#){overflow-wrap:break-word}.x1h4wwuj:not(#\#):not(#\#):not(#\#){overflow-wrap:normal}.xyri2b:not(#\#):not(#\#):not(#\#){padding-inline-end:0}.x12frdag:not(#\#):not(#\#):not(#\#){padding-inline-end:calc(var(--container-padding-inline-end) - var(--border-width))}.x64h4k7:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--container-padding-inline-end)}.x1peupej:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--layout-padding-inner-x,var(--spacing-4))}.xpc6k2p:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--layout-padding-outer-x,var(--spacing-4))}.x1le3yxw:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-0-5)}.x1s0aq8i:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-0)}.x17hk9do:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-1-5)}.x1nryj5t:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-1)}.x160ivqr:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-10)}.x1djylfy:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-2)}.x1t818jl:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-3)}.xnjyzlh:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-4)}.xdbrk9v:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-5)}.x1we12cn:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-6)}.x1q91b2g:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-8)}.x1c1uobl:not(#\#):not(#\#):not(#\#){padding-inline-start:0}.x1f43n9v:not(#\#):not(#\#):not(#\#){padding-inline-start:calc(16px + var(--spacing-1-5))}.xs19ii7:not(#\#):not(#\#):not(#\#){padding-inline-start:calc(var(--container-padding-inline-start) - var(--border-width))}.x2a0j69:not(#\#):not(#\#):not(#\#){padding-inline-start:calc(var(--spacing-2) - var(--spacing-1) + 1px)}.x1c35znw:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--container-padding-inline-start)}.xwjyata:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--layout-padding-inner-x,var(--spacing-4))}.x139j0dd:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--layout-padding-outer-x,var(--spacing-4))}.x138rykx:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-0-5)}.x18gyask:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-0)}.xfti1ec:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-1-5)}.x1vsv5vr:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-1)}.xqp078j:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-10)}.xc8afjc:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-11)}.x19b7t93:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-12)}.x12gdq22:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-2)}.x126nfab:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-3)}.x1rey3nv:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-4)}.x1blguxw:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-5)}.x31w388:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-6)}.xchaq28:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-7)}.x1j3hnjz:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-8)}.xnvo3vl:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--x-paddingInlineStart)}.x67bb7w:not(#\#):not(#\#):not(#\#){pointer-events:auto}.x47corl:not(#\#):not(#\#):not(#\#){pointer-events:none}.x1tsffl5:not(#\#):not(#\#):not(#\#){position-anchor:--outline-active}.x10l6tqk:not(#\#):not(#\#):not(#\#){position:absolute}.xixxii4:not(#\#):not(#\#):not(#\#){position:fixed}.x1n2onr6:not(#\#):not(#\#):not(#\#){position:relative}.x7wzq59:not(#\#):not(#\#):not(#\#){position:sticky}.xtt52l0:not(#\#):not(#\#):not(#\#){resize:none}.x288g5:not(#\#):not(#\#):not(#\#){resize:vertical}.xajebq8:not(#\#):not(#\#):not(#\#){row-gap:calc(var(--spacing-1) - 1px)}.x1tw44j4:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-0-5)}.x6yxi7o:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-0)}.xhq53yo:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-1-5)}.x1ngg2t4:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-1)}.x1xpicb7:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-10)}.x1x7z4sm:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-2)}.x4olc9o:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-3)}.xtx9w7w:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-4)}.x1iu6piu:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-5)}.xczp1bk:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-6)}.xgx0vcf:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-8)}.xkcv6ua:not(#\#):not(#\#):not(#\#){scroll-behavior:smooth}.x1bhewko:not(#\#):not(#\#):not(#\#){scroll-snap-align:start}.x1rohswg:not(#\#):not(#\#):not(#\#){scrollbar-width:none}.xeq4nuv:not(#\#):not(#\#):not(#\#){tab-size:2}.x1drmoe9:not(#\#):not(#\#):not(#\#){table-layout:auto}.x140o2bo:not(#\#):not(#\#):not(#\#){table-layout:fixed}.x2b8uid:not(#\#):not(#\#):not(#\#){text-align:center}.xp4054r:not(#\#):not(#\#):not(#\#){text-align:end}.x16tdsg8:not(#\#):not(#\#):not(#\#){text-align:inherit}.xdpxx8g:not(#\#):not(#\#):not(#\#){text-align:left}.x1hr2gdg:not(#\#):not(#\#):not(#\#){text-align:right}.x1yc453h:not(#\#):not(#\#):not(#\#){text-align:start}.x1b2iylo:not(#\#):not(#\#):not(#\#){text-box-edge:cap alphabetic}.xwgcxoh:not(#\#):not(#\#):not(#\#){text-box-trim:trim-both}.xycaml9:not(#\#):not(#\#):not(#\#){text-decoration-color:var(--color-border-emphasized)}.xujl8zx:not(#\#):not(#\#):not(#\#){text-decoration-line:underline}.xev0dqp:not(#\#):not(#\#):not(#\#){text-decoration-style:dashed}.xlyipyv:not(#\#):not(#\#):not(#\#){text-overflow:ellipsis}.xtvhhri:not(#\#):not(#\#):not(#\#){text-transform:uppercase}.xrys4gj:not(#\#):not(#\#):not(#\#){text-underline-offset:2px}.x11b3rvo:not(#\#):not(#\#):not(#\#){text-underline-offset:var(--spacing-0-5)}.x1w2vvpw:not(#\#):not(#\#):not(#\#){text-wrap:balance}.xebhuq6:not(#\#):not(#\#):not(#\#){text-wrap:nowrap}.x1fzhlzt:not(#\#):not(#\#):not(#\#){text-wrap:pretty}.xk4td0m:not(#\#):not(#\#):not(#\#){text-wrap:wrap}.x5ve5x3:not(#\#):not(#\#):not(#\#){touch-action:none}.xx69xxh:not(#\#):not(#\#):not(#\#){touch-action:pan-y}.x1g0ag68:not(#\#):not(#\#):not(#\#){transform-origin:center}.x1c071of:not(#\#):not(#\#):not(#\#){transform:none}.x7p49u4:not(#\#):not(#\#):not(#\#){transform:rotate(0)}.x19jd1h0:not(#\#):not(#\#):not(#\#){transform:rotate(180deg)}.x1iffjtl:not(#\#):not(#\#):not(#\#){transform:rotate(90deg)}.x3oybdh:not(#\#):not(#\#):not(#\#){transform:scale(1)}.x11lhmoz:not(#\#):not(#\#):not(#\#){transform:translate(-50%,-50%)}.x31h1t8:not(#\#):not(#\#):not(#\#){transform:translate(-50%,100%)}.x1m9mm8y:not(#\#):not(#\#):not(#\#){transform:translate(-50%,50%)}.x4v1no5:not(#\#):not(#\#):not(#\#){transform:translate(50%,50%)}.x5i6ehr:not(#\#):not(#\#):not(#\#){transform:translate(-100%)}.xuuh30:not(#\#):not(#\#):not(#\#){transform:translate(-50%)}.xbryuvx:not(#\#):not(#\#):not(#\#){transform:translate(0)}.xumwmo6:not(#\#):not(#\#):not(#\#){transform:translate(100%)}.x15481yp:not(#\#):not(#\#):not(#\#){transform:translate(14px)}.xitnhlw:not(#\#):not(#\#):not(#\#){transform:translate(50%)}.x105ttfm:not(#\#):not(#\#):not(#\#){transform:translateY(-100%)}.x19xzu86:not(#\#):not(#\#):not(#\#){transform:translateY(-3px) scale(.985)}.x1bvilyr:not(#\#):not(#\#):not(#\#){transform:translateY(-4px)}.x1cb1t30:not(#\#):not(#\#):not(#\#){transform:translateY(-50%)}.xp0htlv:not(#\#):not(#\#):not(#\#){transform:translateY(-6px) scale(.97)}.x1lm5u:not(#\#):not(#\#):not(#\#){transform:translateY(-8px)}.xnn1q72:not(#\#):not(#\#):not(#\#){transform:translateY(0)}.x1weeur4:not(#\#):not(#\#):not(#\#){transform:translateY(100%)}.x131p8rn:not(#\#):not(#\#):not(#\#){transform:translateY(50%)}.xsqj5wx:not(#\#):not(#\#):not(#\#){transform:var(--x-transform)}.xd00j3c:not(#\#):not(#\#):not(#\#){transition-behavior:allow-discrete}.x5h36tt:not(#\#):not(#\#):not(#\#){transition-delay:.15s}.x1ahifba:not(#\#):not(#\#):not(#\#){transition-delay:0s}.x10b1n17:not(#\#):not(#\#):not(#\#){transition-delay:var(--duration-fast)}.x11bq7d0:not(#\#):not(#\#):not(#\#){transition-duration:.06s}.xx6bhzk:not(#\#):not(#\#):not(#\#){transition-duration:.15s}.x13dflua:not(#\#):not(#\#):not(#\#){transition-duration:.2s}.xjd9b36:not(#\#):not(#\#):not(#\#){transition-duration:1ms}.x2rcmwa:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-fast-max)}.xkvfbh3:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-fast-min)}.xuedmi6:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-fast)}.xgneliz:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-medium-min)}.x80gvsz:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-medium)}.x1eaenvl:not(#\#):not(#\#):not(#\#){transition-property:background-color,border-color,color}.xts7igz:not(#\#):not(#\#):not(#\#){transition-property:background-color,border-color}.x106061f:not(#\#):not(#\#):not(#\#){transition-property:background-color,box-shadow}.xs2xxs2:not(#\#):not(#\#):not(#\#){transition-property:background-color,color}.x1e8aii2:not(#\#):not(#\#):not(#\#){transition-property:background-color,opacity}.x15406qy:not(#\#):not(#\#):not(#\#){transition-property:background-color}.xrafxwg:not(#\#):not(#\#):not(#\#){transition-property:background-image,background-color,color,opacity,transform}.x12qzo2w:not(#\#):not(#\#):not(#\#){transition-property:background-image}.x1tv3a4w:not(#\#):not(#\#):not(#\#){transition-property:border-color,box-shadow,background-color}.x12zzom9:not(#\#):not(#\#):not(#\#){transition-property:border-color,box-shadow}.xshfolx:not(#\#):not(#\#):not(#\#){transition-property:border-color}.x16mfhj0:not(#\#):not(#\#):not(#\#){transition-property:box-shadow,border-color}.x1vix5yk:not(#\#):not(#\#):not(#\#){transition-property:color,background-color,box-shadow}.x1mpt4pi:not(#\#):not(#\#):not(#\#){transition-property:color,text-decoration}.xt3l3uh:not(#\#):not(#\#):not(#\#){transition-property:color}.xjshnde:not(#\#):not(#\#):not(#\#){transition-property:grid-template-rows,padding}.x1qn9uv2:not(#\#):not(#\#):not(#\#){transition-property:grid-template-rows}.x157bb6t:not(#\#):not(#\#):not(#\#){transition-property:mask-image}.x13b0p5u:not(#\#):not(#\#):not(#\#){transition-property:none}.x1wbls7o:not(#\#):not(#\#):not(#\#){transition-property:opacity,background-color,transform}.xnpjden:not(#\#):not(#\#):not(#\#){transition-property:opacity,background-color}.x1kx2cm7:not(#\#):not(#\#):not(#\#){transition-property:opacity,box-shadow}.xsm4mo9:not(#\#):not(#\#):not(#\#){transition-property:opacity,display,overlay}.x1apppo2:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform,max-width}.x4bbghf:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform,overlay,display}.x6o7n8i:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform}.xxup5nn:not(#\#):not(#\#):not(#\#){transition-property:opacity,visibility,transform}.x19991ni:not(#\#):not(#\#):not(#\#){transition-property:opacity}.x1xuz8iz:not(#\#):not(#\#):not(#\#){transition-property:top,height}.x18dpk69:not(#\#):not(#\#):not(#\#){transition-property:transform,background-color}.xefglzl:not(#\#):not(#\#):not(#\#){transition-property:transform,color,background-color}.xh3q6i0:not(#\#):not(#\#):not(#\#){transition-property:transform,width,height}.x11xpdln:not(#\#):not(#\#):not(#\#){transition-property:transform}.xxrbq2n:not(#\#):not(#\#):not(#\#){transition-property:width}.x9lcvmn:not(#\#):not(#\#):not(#\#){transition-timing-function:ease-out}.xlr8y92:not(#\#):not(#\#):not(#\#){transition-timing-function:var(--ease-standard)}.x87ps6o:not(#\#):not(#\#):not(#\#){user-select:none}.x11njtxf:not(#\#):not(#\#):not(#\#){vertical-align:baseline}.x3ajldb:not(#\#):not(#\#):not(#\#){vertical-align:bottom}.xxymvpz:not(#\#):not(#\#):not(#\#){vertical-align:middle}.x1v0h343:not(#\#):not(#\#):not(#\#){vertical-align:super}.x16dsc37:not(#\#):not(#\#):not(#\#){vertical-align:top}.xlshs6z:not(#\#):not(#\#):not(#\#){visibility:hidden}.xnpuxes:not(#\#):not(#\#):not(#\#){visibility:visible}.xeaf4i8:not(#\#):not(#\#):not(#\#){white-space:normal}.xuxw1ft:not(#\#):not(#\#):not(#\#){white-space:nowrap}.x126k92a:not(#\#):not(#\#):not(#\#){white-space:pre-wrap}.x1sdyfia:not(#\#):not(#\#):not(#\#){white-space:pre}.x1so62im:not(#\#):not(#\#):not(#\#){will-change:transform}.x1yn0g08:not(#\#):not(#\#):not(#\#){word-break:break-all}.x13faqbe:not(#\#):not(#\#):not(#\#){word-break:break-word}.x1lldw8n:not(#\#):not(#\#):not(#\#){word-break:normal}.x1ja2u2z:not(#\#):not(#\#):not(#\#){z-index:0}.x1vjfegm:not(#\#):not(#\#):not(#\#){z-index:1}.xhtitgo:not(#\#):not(#\#):not(#\#){z-index:2}.xzkaem6:not(#\#):not(#\#):not(#\#){z-index:3}.x6cuj84:not(#\#):not(#\#):not(#\#){z-index:500}.x1q2oy4v:not(#\#):not(#\#):not(#\#){z-index:9999}.x1v2claj.x1v2claj:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){opacity:1}.xs4y3kv.xs4y3kv:where(.x1g2q90y:focus-visible *):not(#\#):not(#\#):not(#\#){outline-offset:2px}.x3730vf.x3730vf:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){pointer-events:auto}.xuqivmr.xuqivmr:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){transform:translateY(0)}.x7v6acp.x7v6acp:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){visibility:visible}.xuihb5h:focus-within:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px var(--color-accent-muted)}.xyavpck:focus-within:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-med)}.x10wafsz:focus-within:not(#\#):not(#\#):not(#\#){clip-path:none}.x1sik18w:not(:first-child):not(#\#):not(#\#):not(#\#){margin-inline-start:var(--_avatar-group-overlap)}.x25t5g8:focus-visible:not(#\#):not(#\#):not(#\#){opacity:1}.xof6bs:is(th:hover *):not(#\#):not(#\#):not(#\#){opacity:1}.xofkqq2:popover-open:not(#\#):not(#\#):not(#\#){opacity:1}.x1edzap1.x1edzap1:where(.x1iwu4tg:has(:focus-visible) *):not(#\#):not(#\#):not(#\#){outline-offset:2px}.x7s97pk:focus-visible:not(#\#):not(#\#):not(#\#){outline-offset:2px}.x81n7kt.x81n7kt:where(.x1tspnpo:has(:focus-visible) *):not(#\#):not(#\#):not(#\#){outline-offset:2px}.x13aywxo:focus-visible:not(#\#):not(#\#):not(#\#){outline-offset:var(--button-focus-offset)}.xh2nty3:focus-visible:not(#\#):not(#\#):not(#\#){outline-offset:var(--spacing-0-5)}.xbt4iw:focus-within:not(#\#):not(#\#):not(#\#){pointer-events:auto}.x1mqgsch:is([data-astryx-scrolling]):not(#\#):not(#\#):not(#\#){scrollbar-width:none}.xgtlewx:is([dir=rtl] *):not(#\#):not(#\#):not(#\#){transform:scaleX(-1)}.x1df3fe5:is([dir=rtl] *):not(#\#):not(#\#):not(#\#){transform:translate(-100%)}.xttggg:is([dir=rtl] *):not(#\#):not(#\#):not(#\#){transform:translate(100%)}.x9cjr8z:popover-open:not(#\#):not(#\#):not(#\#){transform:translateY(0)}.x1rm9qnc:focus-within:not(#\#):not(#\#):not(#\#){z-index:1}.x1vej5at:has(+[popover]+[popover]:last-child):not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}.xxd14kb:has(+[popover]:last-child):not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}.x1ir7nn6:has(+[popover]+[popover]:last-child):not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}.xpufgd0:has(+[popover]:last-child):not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}.x92e2el:has(>[data-astryx-edge-comp]:last-child):not(#\#):not(#\#):not(#\#){margin-inline-end:var(--x-4drmnv)}.x1kftj4p:has(>[data-astryx-edge-comp]:first-child):not(#\#):not(#\#):not(#\#){margin-inline-start:var(--x-126w13d)}.xdjuwb3:has(:focus-visible):not(#\#):not(#\#):not(#\#){outline-offset:2px}.x1betex2:has(.astryx-navicon):not(#\#):not(#\#):not(#\#){padding-inline-start:0}.x1xrp5p4:first-child:not(#\#):not(#\#):not(#\#){border-end-start-radius:var(--radius-element)}.xyf0ibl:first-child:not(#\#):not(#\#):not(#\#){border-inline-start-style:none}.x1pjv70x:first-child:not(#\#):not(#\#):not(#\#){border-inline-start-width:0}.x2qxyot:first-child:not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}.x8eehn2:first-child:not(#\#):not(#\#):not(#\#){border-start-start-radius:var(--radius-element)}.x1pwwqoy:first-child:not(#\#):not(#\#):not(#\#){margin-inline-start:0}.x5uh4xs:first-child:not(#\#):not(#\#):not(#\#){padding-inline-start:max(var(--container-padding-inline-start,var(--spacing-2)),var(--spacing-2))}.x9bi00s:first-child:not(#\#):not(#\#):not(#\#){padding-inline-start:max(var(--container-padding-inline-start,var(--spacing-3)),var(--spacing-2))}.x18c6q21:first-child:not(#\#):not(#\#):not(#\#){padding-inline-start:max(var(--container-padding-inline-start,var(--spacing-4)),var(--spacing-2))}.x747jw7:last-child:not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}.x1yp72r9:last-child:not(#\#):not(#\#):not(#\#){border-end-start-radius:var(--radius-element)}.x11xp8u1:last-child:not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}.xbg7gas:last-child:not(#\#):not(#\#):not(#\#){padding-inline-end:max(var(--container-padding-inline-end,var(--spacing-2)),var(--spacing-2))}.xpilulx:last-child:not(#\#):not(#\#):not(#\#){padding-inline-end:max(var(--container-padding-inline-end,var(--spacing-3)),var(--spacing-2))}.x1wzlfcn:last-child:not(#\#):not(#\#):not(#\#){padding-inline-end:max(var(--container-padding-inline-end,var(--spacing-4)),var(--spacing-2))}.x1dnou9g:nth-child(2n):not(#\#):not(#\#):not(#\#){background-color:var(--color-background-muted)}.x1uwx2nv:hover:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}.x1cqbx0l:hover:not(#\#):not(#\#):not(#\#){color:var(--color-icon-primary)}.x1c52tdz:focus:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}.x1rsz1da:focus:not(#\#):not(#\#):not(#\#){clip-path:none}.xodanix:focus:not(#\#):not(#\#):not(#\#){inset-inline-start:var(--spacing-2)}.x1xrnuwo:focus:not(#\#):not(#\#):not(#\#){position:fixed}.x1hbpcn8:focus:not(#\#):not(#\#):not(#\#){white-space:normal}.xjtnuge:active:not(#\#):not(#\#):not(#\#){background-color:var(--color-neutral)}.xyxi2l3:active:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-pressed)}.x1nocapi:active:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(var(--color-overlay-pressed),var(--color-overlay-pressed)),linear-gradient(var(--color-neutral),var(--color-neutral))}.xq8i9tn:active:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(var(--color-overlay-pressed),var(--color-overlay-pressed))}.xuqm82a:active:not(#\#):not(#\#):not(#\#){background-image:none}.x1tmayz8:active:not(#\#):not(#\#):not(#\#){opacity:.75}.x1pdlv7q:active:not(#\#):not(#\#):not(#\#){transform:none}.xk4oym4:active:not(#\#):not(#\#):not(#\#){transform:scale(.98)}@media(prefers-reduced-motion:reduce){.x14q22ui.x14q22ui:not(#\#):not(#\#):not(#\#){animation-delay:0s}}@media(prefers-reduced-motion:reduce){.xnh0sag.xnh0sag:not(#\#):not(#\#):not(#\#){animation-duration:3s}}@media(prefers-reduced-motion:reduce){.x1aquc0h.x1aquc0h:not(#\#):not(#\#):not(#\#){animation-name:none}}@media(prefers-contrast:more){.x1r1p5j5.x1r1p5j5:not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-skeleton),var(--color-text-primary) 30%)}}@media(hover:hover){.x2dt3px.x2dt3px:not(#\#):not(#\#):not(#\#){cursor:zoom-in}}@media(max-width:480px){.xedohl4.xedohl4:not(#\#):not(#\#):not(#\#){display:flex}}@media(pointer:coarse){.xhj50sb.xhj50sb:not(#\#):not(#\#):not(#\#){display:none}}@media(max-width:480px){.x1rpgqan.x1rpgqan:not(#\#):not(#\#):not(#\#){flex-direction:column}}@media(pointer:coarse){.x6pjikd.x6pjikd:not(#\#):not(#\#):not(#\#){font-size:max(1rem,var(--text-body-size))}}@media(pointer:coarse){.xdk3u5w.xdk3u5w:not(#\#):not(#\#):not(#\#){font-size:max(1rem,var(--text-label-size))}}@media(prefers-reduced-motion:reduce){.xg83hb1.xg83hb1:not(#\#):not(#\#):not(#\#){scroll-behavior:auto}}@media(prefers-reduced-motion:reduce){.xsagj69.xsagj69:not(#\#):not(#\#):not(#\#){transition-duration:.01ms}}@media(prefers-reduced-motion:reduce){.xzg1mie.xzg1mie:not(#\#):not(#\#):not(#\#){transition-duration:.01s}}@media(prefers-reduced-motion:reduce){.x12w9bfk.x12w9bfk:not(#\#):not(#\#):not(#\#){transition-duration:0s}}@media(prefers-reduced-motion:reduce){.x4wkmsb.x4wkmsb:not(#\#):not(#\#):not(#\#){transition-property:none}}@media(hover:hover){.x11ppjs.x11ppjs.x11ppjs:where(.x1iwu4tg:hover *):not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.x6aeo4j.x6aeo4j.x6aeo4j:where(.x1tspnpo:hover *):not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.xwnx32n.xwnx32n.xwnx32n:where(.xklqth5:hover *):not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.x13wei8l.x13wei8l.x13wei8l:where(.x1iwu4tg:hover *):not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-background-gray),var(--color-tint-hover) 5%)}}@media(hover:hover){.xrsv7h.xrsv7h.xrsv7h:where(.x1tspnpo:hover *):not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-background-surface),var(--color-tint-hover) 5%)}}@media(hover:hover){.xy1ay1n.xy1ay1n.xy1ay1n:where(.xklqth5:hover *):not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-background-surface),var(--color-tint-hover) 5%)}}@media(hover:hover){.x1cjfj8k.x1cjfj8k.x1cjfj8k:where(.x1tspnpo:hover *):not(#\#):not(#\#):not(#\#){background-color:var(--color-background-muted)}}@media(hover:hover){.x1pe4z86.x1pe4z86.x1pe4z86:where(.x-default-marker:hover *):not(#\#):not(#\#):not(#\#){background-color:var(--color-icon-primary)}}@media(hover:hover){.x1a1zr74.x1a1zr74.x1a1zr74:where(.x1u3b27q:hover *):not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}}@media(hover:hover){.x1t9gxa6.x1t9gxa6.x1t9gxa6:where(.x-default-marker:hover *):not(#\#):not(#\#):not(#\#){color:var(--color-text-primary)}}@media(hover:hover){.xcwhr9z.xcwhr9z.xcwhr9z:where(.x84s7jz:hover *):not(#\#):not(#\#):not(#\#){opacity:1}}@media(hover:hover){.x8ydxbz.x8ydxbz.x8ydxbz:where(.x84s7jz:hover *):not(#\#):not(#\#):not(#\#){pointer-events:auto}}@media(hover:hover){.x17hxqr7.x17hxqr7.x17hxqr7:where(.x84s7jz:hover *):not(#\#):not(#\#):not(#\#){transform:translateY(0)}}@media(hover:hover){.xneequu.xneequu.xneequu:where(.x84s7jz:hover *):not(#\#):not(#\#):not(#\#){visibility:visible}}@media(hover:hover){.x70dsy8.x70dsy8:hover:not(:focus-within):not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--color-accent) 20%,transparent)}}@media(hover:hover){.x12y27fx.x12y27fx:hover:not(:focus-within):not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--color-border-emphasized) 30%,transparent)}}@media(hover:hover){.xl68szm.xl68szm:hover:not(:focus-within):not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-inset-error)}}@media(hover:hover){.xig9bu2.xig9bu2:hover:not(:focus-within):not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-inset-success)}}@media(hover:hover){.xnoa3fc.xnoa3fc:hover:not(:focus-within):not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-inset-warning)}}@media(hover:hover){.xyxu9wt.xyxu9wt:hover:not(#\#):not(#\#):not(#\#){background-color:color-mix(in srgb,var(--color-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.x1h6wuyy.x1h6wuyy:hover:not(#\#):not(#\#):not(#\#){background-color:transparent}}@media(hover:hover){.x1sua13m.x1sua13m:hover:not(#\#):not(#\#):not(#\#){background-color:var(--color-neutral)}}@media(hover:hover){.xe9uy6x.xe9uy6x:hover:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}}@media(hover:hover){.xbfmc0r.xbfmc0r:hover:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(var(--color-overlay-hover),var(--color-overlay-hover)),linear-gradient(var(--color-neutral),var(--color-neutral))}}@media(hover:hover){.x1ilzqfv.x1ilzqfv:hover:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(var(--color-overlay-hover),var(--color-overlay-hover))}}@media(hover:hover){.x8o3jvd.x8o3jvd:hover:not(#\#):not(#\#):not(#\#){background-image:none}}@media(hover:hover){.xw6ruzt.xw6ruzt:hover:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--color-accent) 20%,transparent)}}@media(hover:hover){.xhouywz.xhouywz:hover:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-med)}}@media(hover:hover){.x17qfo7y.x17qfo7y:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-accent),var(--color-tint-hover) 15%)}}@media(hover:hover){.x4z56r7.x4z56r7:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-primary),var(--color-tint-hover) 15%)}}@media(hover:hover){.x7ruf5d.x7ruf5d:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-secondary),var(--color-tint-hover) 15%)}}@media(hover:hover){.x140uwzg.x140uwzg:hover:not(#\#):not(#\#):not(#\#){color:var(--color-text-primary)}}@media(hover:hover){.xzomjkg.xzomjkg:hover:not(#\#):not(#\#):not(#\#){opacity:.85}}.xib2hle:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-color:var(--color-border-emphasized)}.xw8gpjh:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-color:var(--color-border)}.xfrllxf:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-left-radius:0}.x6bqyzk:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-left-radius:var(--_chat-composer-radius)}.xv76oww:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-left-radius:var(--radius-container)}.x14lggfu:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-left-radius:var(--radius-element)}.xi9l6n1:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-left-radius:var(--radius-full)}.xgc49yv:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-left-radius:var(--radius-inner)}.xjppbhk:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-right-radius:0}.x2gnncy:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-right-radius:var(--_chat-composer-radius)}.x1padx2d:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-right-radius:var(--radius-container)}.xtufxuj:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-right-radius:var(--radius-element)}.x1gu3054:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-right-radius:var(--radius-full)}.x16vxp44:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-right-radius:var(--radius-inner)}.x1q0q8m5:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-style:solid}.xso031l:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-width:1px}.xlxy82:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-width:2px}.x92x3c3:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-width:var(--border-width)}.x1utcnwd:not(#\#):not(#\#):not(#\#):not(#\#){border-left-color:var(--color-border)}.x19ypqd9:not(#\#):not(#\#):not(#\#):not(#\#){border-left-style:solid}.x1i535u5:not(#\#):not(#\#):not(#\#):not(#\#){border-left-width:var(--border-width)}.xdz7fjg:not(#\#):not(#\#):not(#\#):not(#\#){border-right-color:var(--color-border-emphasized)}.xtgwc6q:not(#\#):not(#\#):not(#\#):not(#\#){border-right-color:var(--color-border)}.x32b0ac:not(#\#):not(#\#):not(#\#):not(#\#){border-right-style:solid}.x1pcaw5z:not(#\#):not(#\#):not(#\#):not(#\#){border-right-width:var(--border-width)}.x1pc3f07:not(#\#):not(#\#):not(#\#):not(#\#){border-top-color:var(--color-border)}.x11npmm7:not(#\#):not(#\#):not(#\#):not(#\#){border-top-color:var(--color-on-accent)}.xtqab0c:not(#\#):not(#\#):not(#\#):not(#\#){border-top-left-radius:var(--_chat-composer-radius)}.x1d6do9d:not(#\#):not(#\#):not(#\#):not(#\#){border-top-left-radius:var(--radius-chat)}.x14k9mlb:not(#\#):not(#\#):not(#\#):not(#\#){border-top-left-radius:var(--radius-container)}.x99wiku:not(#\#):not(#\#):not(#\#):not(#\#){border-top-left-radius:var(--radius-full)}.x1bcgpep:not(#\#):not(#\#):not(#\#):not(#\#){border-top-left-radius:var(--radius-inner)}.x122jk3o:not(#\#):not(#\#):not(#\#):not(#\#){border-top-right-radius:var(--_chat-composer-radius)}.x1b9br5y:not(#\#):not(#\#):not(#\#):not(#\#){border-top-right-radius:var(--radius-chat)}.xn9rnvb:not(#\#):not(#\#):not(#\#):not(#\#){border-top-right-radius:var(--radius-container)}.x11ly021:not(#\#):not(#\#):not(#\#):not(#\#){border-top-right-radius:var(--radius-full)}.xxkfnbn:not(#\#):not(#\#):not(#\#):not(#\#){border-top-right-radius:var(--radius-inner)}.x13fuv20:not(#\#):not(#\#):not(#\#):not(#\#){border-top-style:solid}.x178xt8z:not(#\#):not(#\#):not(#\#):not(#\#){border-top-width:1px}.x11xkdxz:not(#\#):not(#\#):not(#\#):not(#\#){border-top-width:var(--border-width)}.xqmqy1e:not(#\#):not(#\#):not(#\#):not(#\#){bottom:-1px}.x1ey2m1c:not(#\#):not(#\#):not(#\#):not(#\#){bottom:0}.x1c7jfne:not(#\#):not(#\#):not(#\#):not(#\#){bottom:2px}.x1nqzi6q:not(#\#):not(#\#):not(#\#):not(#\#){bottom:var(--x-bottom)}.xqtp20y:not(#\#):not(#\#):not(#\#):not(#\#){height:0}.x5yr21d:not(#\#):not(#\#):not(#\#):not(#\#){height:100%}.xtdtrs8:not(#\#):not(#\#):not(#\#):not(#\#){height:100dvh}.xpyat2d:not(#\#):not(#\#):not(#\#):not(#\#){height:100px}.x1dr59a3:not(#\#):not(#\#):not(#\#):not(#\#){height:100vh}.x170jfvy:not(#\#):not(#\#):not(#\#):not(#\#){height:10px}.x1wkxgih:not(#\#):not(#\#):not(#\#):not(#\#){height:120px}.x1kpxq89:not(#\#):not(#\#):not(#\#):not(#\#){height:12px}.xhjk10j:not(#\#):not(#\#):not(#\#):not(#\#){height:140px}.x1v9usgg:not(#\#):not(#\#):not(#\#):not(#\#){height:14px}.x1ymw6g:not(#\#):not(#\#):not(#\#):not(#\#){height:160px}.xlup9mm:not(#\#):not(#\#):not(#\#):not(#\#){height:16px}.xmix8c7:not(#\#):not(#\#):not(#\#):not(#\#){height:18px}.xjm9jq1:not(#\#):not(#\#):not(#\#):not(#\#){height:1px}.x1qx5ct2:not(#\#):not(#\#):not(#\#):not(#\#){height:20px}.x17rw0jw:not(#\#):not(#\#):not(#\#):not(#\#){height:22px}.xxk0z11:not(#\#):not(#\#):not(#\#):not(#\#){height:24px}.x1fgtraw:not(#\#):not(#\#):not(#\#):not(#\#){height:28px}.x36qwtl:not(#\#):not(#\#):not(#\#):not(#\#){height:2px}.x10w6t97:not(#\#):not(#\#):not(#\#):not(#\#){height:32px}.xuoj239:not(#\#):not(#\#):not(#\#):not(#\#){height:3px}.x1vqgdyp:not(#\#):not(#\#):not(#\#):not(#\#){height:40px}.xsdox4t:not(#\#):not(#\#):not(#\#):not(#\#){height:48px}.xqu0tyb:not(#\#):not(#\#):not(#\#):not(#\#){height:4px}.xols6we:not(#\#):not(#\#):not(#\#):not(#\#){height:6px}.xwzfr38:not(#\#):not(#\#):not(#\#):not(#\#){height:80px}.xdk7pt:not(#\#):not(#\#):not(#\#):not(#\#){height:8px}.x1qjb5ga:not(#\#):not(#\#):not(#\#):not(#\#){height:anchor-size(--outline-active height,0px)}.xt7dq6l:not(#\#):not(#\#):not(#\#):not(#\#){height:auto}.xs02d24:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(100% + 1px)}.x12qplqi:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(100% + var(--container-padding-block-start,0px) + var(--container-padding-block-end,0px))}.x16zugyo:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(100dvh - var(--appshell-header-height,0px))}.x1uiybsj:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-lg) - 4px)}.x102lyln:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-lg) - 8px)}.x184gfjb:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) - 4px)}.xrmxcn7:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) - 8px)}.x1u5rhrp:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) + var(--spacing-1))}.xzj98nu:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-sm) - 4px)}.xzydfjl:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-sm) - 8px)}.xg7h5cd:not(#\#):not(#\#):not(#\#):not(#\#){height:fit-content}.xsyqizj:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--border-width)}.x5kfih4:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--resize-handle-hit-area,16px)}.xssyfek:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--size-element-lg)}.x1ueg155:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--size-element-md)}.x6k0iem:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--size-element-sm)}.xcenk2v:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-1-5)}.x1k15mir:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-12)}.xoqw5ej:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-2)}.x9gl9lo:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-3)}.x6b6gus:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-4)}.x1grt7ep:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-5)}.xvpftlf:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-6)}.x18to7ep:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-8)}.x1w0ack5:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--table-resize-height,100%)}.x16ye13r:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--x-height)}.xu96u03:not(#\#):not(#\#):not(#\#):not(#\#){left:0}.x1trqr8e:not(#\#):not(#\#):not(#\#):not(#\#){left:14px}.x54rlcq:not(#\#):not(#\#):not(#\#):not(#\#){left:2px}.x1nrll8i:not(#\#):not(#\#):not(#\#):not(#\#){left:50%}.xnp31yv:not(#\#):not(#\#):not(#\#):not(#\#){left:var(--spacing-3)}.xgq9j65:not(#\#):not(#\#):not(#\#):not(#\#){left:var(--x-left)}.x1jyxor1:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:-1px}.xat24cr:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:0}.x1z0f2p2:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:calc(-1 * var(--_chat-composer-radius))}.x6h7pi7:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:calc(-1 * var(--container-padding-block-end,0px))}.x1cdrix3:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:calc(-1 * var(--radius-chat))}.xdrfirk:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:calc(-1 * var(--spacing-1-5))}.x14cgwvg:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:var(--spacing-1)}.x1p37lm5:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:var(--spacing-2)}.xep27e5:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:var(--spacing-3)}.xwh1t77:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:var(--spacing-4)}.x4d5cxa:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:var(--spacing-6)}.xdj266r:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:0}.xr1yuqi:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:auto}.xvyqdj1:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc(-1*anchor-size(height) - 8px)}.xckg3cf:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc(-1 * var(--_chat-composer-radius))}.x1sa9bsh:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc(-1 * var(--container-padding-block-start,0px))}.x1c40v9y:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc(-1 * var(--spacing-1-5))}.x1ajqlyv:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc(-1 * var(--spacing-2))}.x1233pnv:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc((1em * var(--text-body-leading) - 6px) / 2)}.xjc2qm6:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-0-5)}.xcsaf9d:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-1)}.xtbrsbv:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-2)}.xj6sv8s:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-3)}.x1s1qpeq:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-4)}.x13rv44w:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-6)}.xmz0i5r:not(#\#):not(#\#):not(#\#):not(#\#){max-height:100%}.x1wj9ous:not(#\#):not(#\#):not(#\#):not(#\#){max-height:100dvh}.x18s7i0i:not(#\#):not(#\#):not(#\#):not(#\#){max-height:176px}.x1xiyphd:not(#\#):not(#\#):not(#\#):not(#\#){max-height:240px}.xuyqlj2:not(#\#):not(#\#):not(#\#):not(#\#){max-height:300px}.x7ab17h:not(#\#):not(#\#):not(#\#):not(#\#){max-height:none}.xenllk4:not(#\#):not(#\#):not(#\#):not(#\#){max-height:var(--container-max-height,none)}.x1jols5v:not(#\#):not(#\#):not(#\#):not(#\#){max-height:var(--x-maxHeight)}.x1m189uc:not(#\#):not(#\#):not(#\#):not(#\#){max-width:0}.x193iq5w:not(#\#):not(#\#):not(#\#):not(#\#){max-width:100%}.xlbgzzq:not(#\#):not(#\#):not(#\#):not(#\#){max-width:100dvw}.x55n99s:not(#\#):not(#\#):not(#\#):not(#\#){max-width:15em}.x1ncir08:not(#\#):not(#\#):not(#\#):not(#\#){max-width:200px}.xw5ewwj:not(#\#):not(#\#):not(#\#):not(#\#){max-width:300px}.x1x67gh:not(#\#):not(#\#):not(#\#):not(#\#){max-width:32px}.xxc7z9f:not(#\#):not(#\#):not(#\#):not(#\#){max-width:360px}.x17fpy1y:not(#\#):not(#\#):not(#\#):not(#\#){max-width:480px}.xrlsmeg:not(#\#):not(#\#):not(#\#):not(#\#){max-width:600px}.x1ap80js:not(#\#):not(#\#):not(#\#):not(#\#){max-width:800px}.xq8v1hd:not(#\#):not(#\#):not(#\#):not(#\#){max-width:90%}.x95b5qq:not(#\#):not(#\#):not(#\#):not(#\#){max-width:90vw}.xyzno7u:not(#\#):not(#\#):not(#\#):not(#\#){max-width:960px}.xl6temz:not(#\#):not(#\#):not(#\#):not(#\#){max-width:max(80%,280px)}.xxtfdz8:not(#\#):not(#\#):not(#\#):not(#\#){max-width:min(100%,calc(100vw - 32px))}.x1x1rfll:not(#\#):not(#\#):not(#\#):not(#\#){max-width:none}.xjl2t3p:not(#\#):not(#\#):not(#\#):not(#\#){max-width:var(--layout-content-width,none)}.xf68679:not(#\#):not(#\#):not(#\#):not(#\#){max-width:var(--x-maxWidth)}.x2lwn1j:not(#\#):not(#\#):not(#\#):not(#\#){min-height:0}.x1us19tq:not(#\#):not(#\#):not(#\#):not(#\#){min-height:100%}.x1ov3xa9:not(#\#):not(#\#):not(#\#):not(#\#){min-height:100dvh}.xz65tgg:not(#\#):not(#\#):not(#\#):not(#\#){min-height:200px}.xe0957l:not(#\#):not(#\#):not(#\#):not(#\#){min-height:22px}.xjwf9q1:not(#\#):not(#\#):not(#\#):not(#\#){min-height:24px}.xe0p6wg:not(#\#):not(#\#):not(#\#):not(#\#){min-height:28px}.x21xpn4:not(#\#):not(#\#):not(#\#):not(#\#){min-height:32px}.x1xf4nls:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--size-element-lg)}.x1uogy3y:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--size-element-md)}.x1gdqauq:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--size-element-sm)}.ximsjs8:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--spacing-7)}.xkoleio:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--spacing-8)}.x82snj4:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--x-minHeight)}.xeuugli:not(#\#):not(#\#):not(#\#):not(#\#){min-width:0}.x1i9suas:not(#\#):not(#\#):not(#\#):not(#\#){min-width:120px}.x1d77m7x:not(#\#):not(#\#):not(#\#):not(#\#){min-width:140px}.x5w4yej:not(#\#):not(#\#):not(#\#):not(#\#){min-width:160px}.xfb3i0g:not(#\#):not(#\#):not(#\#):not(#\#){min-width:180px}.x1jzhcrs:not(#\#):not(#\#):not(#\#):not(#\#){min-width:200px}.xt4ypqs:not(#\#):not(#\#):not(#\#):not(#\#){min-width:20px}.x12rczxh:not(#\#):not(#\#):not(#\#):not(#\#){min-width:220px}.xlm99nl:not(#\#):not(#\#):not(#\#):not(#\#){min-width:240px}.x1u2d2a2:not(#\#):not(#\#):not(#\#):not(#\#){min-width:280px}.x13o0s5z:not(#\#):not(#\#):not(#\#):not(#\#){min-width:400px}.x1fns5xo:not(#\#):not(#\#):not(#\#):not(#\#){min-width:40px}.x900493:not(#\#):not(#\#):not(#\#):not(#\#){min-width:48px}.x13n9wmd:not(#\#):not(#\#):not(#\#):not(#\#){min-width:4ch}.xfvyar9:not(#\#):not(#\#):not(#\#):not(#\#){min-width:60px}.xrzjruh:not(#\#):not(#\#):not(#\#):not(#\#){min-width:anchor-size(width)}.x8wyhu6:not(#\#):not(#\#):not(#\#):not(#\#){min-width:calc(anchor-size(width) + 16px)}.x1pshirs:not(#\#):not(#\#):not(#\#):not(#\#){min-width:fit-content}.x17ydmr0:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--size-element-md)}.x1nkkqge:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--size-element-sm)}.x16asifk:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--spacing-5)}.xy8csz5:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--spacing-7)}.xkj4a21:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--x-minWidth)}.xw2csxc:not(#\#):not(#\#):not(#\#):not(#\#){overflow-x:auto}.x6ikm8r:not(#\#):not(#\#):not(#\#):not(#\#){overflow-x:hidden}.x1odjw0f:not(#\#):not(#\#):not(#\#):not(#\#){overflow-y:auto}.x10wlt62:not(#\#):not(#\#):not(#\#):not(#\#){overflow-y:hidden}.x7p5m3t:not(#\#):not(#\#):not(#\#):not(#\#){overscroll-behavior-x:contain}.x18d9i69:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:0}.x1j85h84:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:1px}.x9jihrk:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:calc(var(--_chat-composer-padding) + var(--_chat-composer-radius))}.xbv1mwh:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:calc(var(--container-padding-block-end) - var(--border-width))}.xxbfulo:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:calc(var(--spacing-3) + var(--radius-chat))}.xvpcij2:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--_chat-composer-padding)}.xc1wllq:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--container-padding-block-end)}.xg476vw:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--layout-padding-inner-y,var(--spacing-4))}.xon7vh3:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--layout-padding-outer-y,var(--spacing-4))}.xij103a:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-0-5)}.x1l20ajd:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-0)}.x1opdxmq:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-1-5)}.xy143xn:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-1)}.x2izi54:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-10)}.x1wesfrj:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-2)}.xvmdzux:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-3)}.x1awphl8:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-4)}.x1hk98q:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-5)}.xjpqqx5:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-6)}.x2oz4g1:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-8)}.xexx8yu:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:0}.x1htvmrp:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:calc(var(--_chat-composer-padding) + var(--_chat-composer-radius))}.x1enrzb7:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:calc(var(--border-width) + var(--spacing-1))}.x1nex4ik:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:calc(var(--container-padding-block-start) - var(--border-width))}.x1ak3mig:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:calc(var(--spacing-1-5) + var(--spacing-2))}.x2gtn7z:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--_chat-composer-padding)}.x14m0hsi:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--container-padding-block-start)}.xqty4a:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--layout-padding-inner-y,var(--spacing-4))}.x81pis9:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--layout-padding-outer-y,var(--spacing-4))}.xbx876j:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-0-5)}.x1ydh6w3:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-0)}.x1kwdpsa:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-1-5)}.xfsso4q:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-1)}.xk6660b:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-10)}.x1xye8es:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-2)}.x1vlblms:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-3)}.x1oa1p4a:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-4)}.xx7rijo:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-5)}.x1adxfkp:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-6)}.xoxd1wu:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-8)}.x3m8u43:not(#\#):not(#\#):not(#\#):not(#\#){right:0}.x3lmqil:not(#\#):not(#\#):not(#\#):not(#\#){right:2px}.xs7l08f:not(#\#):not(#\#):not(#\#):not(#\#){right:var(--spacing-1)}.x1n93rvh:not(#\#):not(#\#):not(#\#):not(#\#){right:var(--spacing-2)}.xmz3bnw:not(#\#):not(#\#):not(#\#):not(#\#){right:var(--spacing-3)}.x7ok3n0:not(#\#):not(#\#):not(#\#):not(#\#){right:var(--x-right)}.x13vifvy:not(#\#):not(#\#):not(#\#):not(#\#){top:0}.xuivejd:not(#\#):not(#\#):not(#\#):not(#\#){top:14px}.xs7f9wi:not(#\#):not(#\#):not(#\#):not(#\#){top:2px}.xwa60dl:not(#\#):not(#\#):not(#\#):not(#\#){top:50%}.x1ltwjim:not(#\#):not(#\#):not(#\#):not(#\#){top:anchor(--outline-active top,0px)}.x1nzz77m:not(#\#):not(#\#):not(#\#):not(#\#){top:calc((var(--size-element-md) - 20px) / 2 - 1px)}.xeqxqpg:not(#\#):not(#\#):not(#\#):not(#\#){top:calc((var(--size-element-sm) - 20px) / 2 - 1px)}.x1oysc8t:not(#\#):not(#\#):not(#\#):not(#\#){top:calc(var(--size-element-lg) / 2 - 1px)}.xkmsrut:not(#\#):not(#\#):not(#\#):not(#\#){top:calc(var(--size-element-md) / 2 - 1px)}.x1968x6z:not(#\#):not(#\#):not(#\#):not(#\#){top:calc(var(--size-element-sm) / 2 - 1px)}.xepuwc7:not(#\#):not(#\#):not(#\#):not(#\#){top:var(--appshell-header-height,0px)}.x8d4r5l:not(#\#):not(#\#):not(#\#):not(#\#){top:var(--spacing-1)}.xctzyg:not(#\#):not(#\#):not(#\#):not(#\#){top:var(--spacing-2)}.xyx6v2t:not(#\#):not(#\#):not(#\#):not(#\#){top:var(--spacing-3)}.xjbys53:not(#\#):not(#\#):not(#\#):not(#\#){top:var(--x-top)}.xnalus7:not(#\#):not(#\#):not(#\#):not(#\#){width:0}.xh8yej3:not(#\#):not(#\#):not(#\#):not(#\#){width:100%}.x1o6l61p:not(#\#):not(#\#):not(#\#):not(#\#){width:100dvw}.xn9wirt:not(#\#):not(#\#):not(#\#):not(#\#){width:100vw}.x1fsd2vl:not(#\#):not(#\#):not(#\#):not(#\#){width:10px}.xsmyaan:not(#\#):not(#\#):not(#\#):not(#\#){width:12px}.x6jxa94:not(#\#):not(#\#):not(#\#):not(#\#){width:14px}.x1kky2od:not(#\#):not(#\#):not(#\#):not(#\#){width:16px}.xzjbwwf:not(#\#):not(#\#):not(#\#):not(#\#){width:180px}.x1xp8n7a:not(#\#):not(#\#):not(#\#):not(#\#){width:18px}.x1i1rx1s:not(#\#):not(#\#):not(#\#):not(#\#){width:1px}.x1oysuqx:not(#\#):not(#\#):not(#\#):not(#\#){width:200px}.xw4jnvo:not(#\#):not(#\#):not(#\#):not(#\#){width:20px}.x17z2i9w:not(#\#):not(#\#):not(#\#):not(#\#){width:22px}.xafpxmx:not(#\#):not(#\#):not(#\#):not(#\#){width:240px}.xvy4d1p:not(#\#):not(#\#):not(#\#):not(#\#){width:24px}.x1hfn5x7:not(#\#):not(#\#):not(#\#):not(#\#){width:260px}.xfo62xy:not(#\#):not(#\#):not(#\#):not(#\#){width:2px}.x1td3qas:not(#\#):not(#\#):not(#\#):not(#\#){width:32px}.x1g8rjiy:not(#\#):not(#\#):not(#\#):not(#\#){width:3px}.xz84dc7:not(#\#):not(#\#):not(#\#):not(#\#){width:40%}.x1l2rt3b:not(#\#):not(#\#):not(#\#):not(#\#){width:400px}.x100vrsf:not(#\#):not(#\#):not(#\#):not(#\#){width:40px}.x51ohtg:not(#\#):not(#\#):not(#\#):not(#\#){width:4px}.x1fu8urw:not(#\#):not(#\#):not(#\#):not(#\#){width:64px}.x1v4s8kt:not(#\#):not(#\#):not(#\#):not(#\#){width:6px}.x1dmp6jm:not(#\#):not(#\#):not(#\#):not(#\#){width:80px}.x1xc55vz:not(#\#):not(#\#):not(#\#):not(#\#){width:8px}.x1xgy17j:not(#\#):not(#\#):not(#\#):not(#\#){width:anchor-size(width)}.x14atkfc:not(#\#):not(#\#):not(#\#):not(#\#){width:auto}.xx6qvi6:not(#\#):not(#\#):not(#\#):not(#\#){width:calc(100% + var(--container-padding-inline-start,0px) + var(--container-padding-inline-end,0px))}.xjk4fl7:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--border-width)}.xkhob8h:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--resize-handle-hit-area,16px)}.x1m747yf:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--size-element-lg)}.x805d0l:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--size-element-md)}.x1fvqzum:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--size-element-sm)}.x1wu31ai:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-1-5)}.xhgvbfk:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-12)}.x1f0dxl5:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-2)}.x1ad1g3v:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-3)}.x12xnipv:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-4)}.xfyiiit:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-5)}.x1mtvzj0:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-6)}.xgc8j7m:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-8)}.x5lhr3w:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--x-width)}.x1wp2rvj.x1wp2rvj:where(.x139im0d:last-child *):not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-width:0}.x132qfvm:focus-within:not(#\#):not(#\#):not(#\#):not(#\#){height:auto}.xsg11nj.xsg11nj:where(.x-default-marker:has(>.astryx-layout-footer:not([data-divider])) *):not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:0}.x1ioh5az.x1ioh5az:where(.x-default-marker:has(>.astryx-layout-header:not([data-divider])) *):not(#\#):not(#\#):not(#\#):not(#\#){padding-top:0}.x1kw28su:focus-within:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--spacing-1)}.x10okhzq:focus-within:not(#\#):not(#\#):not(#\#):not(#\#){width:auto}.x5du68j:has(~* [data-chat-name]):not(#\#):not(#\#):not(#\#):not(#\#){margin-top:var(--spacing-5)}.x1d9v4yf:first-child:not(#\#):not(#\#):not(#\#):not(#\#){border-top-style:none}.x1g31smg:first-child:not(#\#):not(#\#):not(#\#):not(#\#){border-top-width:0}.xkibk3:first-child:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:calc(-1 * var(--container-padding-block-start,0px))}.x1lpyac:last-child:not(#\#):not(#\#):not(#\#):not(#\#){border-right-width:0}.xlayyun:last-child:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:calc(-1 * var(--container-padding-block-end,0px))}.x15cytp8:focus:not(#\#):not(#\#):not(#\#):not(#\#){height:auto}.x1rw3289:focus:not(#\#):not(#\#):not(#\#):not(#\#){top:var(--spacing-2)}.x1jqxupm:focus:not(#\#):not(#\#):not(#\#):not(#\#){width:auto}@media(pointer:coarse){.x17aqpur.x17aqpur:not(#\#):not(#\#):not(#\#):not(#\#){min-height:44px}}@media(pointer:coarse){.x1xrq5m.x1xrq5m:not(#\#):not(#\#):not(#\#):not(#\#){min-width:44px}}@starting-style{.x1sopeo2.x1sopeo2:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){grid-template-rows:0fr}}.x1xsm0q9:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{inset:-14px}.xarstr8:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{inset:0}.xxx281p:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{inset:0}@starting-style{.x4itv7f.x4itv7f:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){opacity:0}}@starting-style{.xub2912.xub2912:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){transform:translateY(-100%)}}@starting-style{.x12p7p72.x12p7p72:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){transform:translateY(-4px)}}@starting-style{.xhbqy3z.xhbqy3z:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){transform:translateY(100%)}}@starting-style{.x1tswlu5.x1tswlu5:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){transform:translateY(8px)}}.x1k48kgn:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{border-radius:inherit}@starting-style{.x5rzir7.x5rzir7:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:0}}.xvtkv6q:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transition:background-color .15s ease,width .15s ease}.x17s1k9h:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transition:opacity .15s ease}.x1abwkk1:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{backdrop-filter:blur(2px)}.xyhc2n1:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{background-color:transparent}.xnixb3f:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{background-color:var(--color-overlay)}.x1i3206j:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{background-color:var(--indicator-color,transparent)}.x1uvfo0n:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{background-color:var(--table-row-overlay,transparent)}.x14ofgck:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{background-image:linear-gradient(to left,light-dark(rgba(0,0,0,.12),rgba(0,0,0,.32)),transparent)}.x156sm4c:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{background-image:linear-gradient(to right,light-dark(rgba(0,0,0,.12),rgba(0,0,0,.32)),transparent)}.xnf3u0:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::placeholder{color:var(--color-text-disabled)}.xeyghm5:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::placeholder{color:var(--color-text-secondary)}.x1cpjm7i:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{content:""}.x1s928wv:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{content:""}.xc2ndz5:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{content:counter(astryx-list) "."}.x1unh1gc:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{inset-inline-end:0}.x1iygr5g:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{inset-inline-start:0}.xph5o2a:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{opacity:0}.xb3n6bw:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{opacity:1}.x1c2idit:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{opacity:var(--table-sticky-shadow-end,0)}.x1sggmfs:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{opacity:var(--table-sticky-shadow-start,0)}.x2q1x1w:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{pointer-events:none}.xkk1bqk:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{pointer-events:none}.x1hmns74:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{position:absolute}.x1j6awrg:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{position:absolute}.xvs0bi2:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transform:translate(-100%)}.x1qyefdi:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transform:translate(100%)}.x1y1nw7a:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{transition-duration:var(--duration-fast)}.x97pup0:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transition-duration:var(--duration-fast)}.xft5bk6:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{transition-duration:var(--duration-medium)}.x1ywzrc5:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transition-property:background-color}.xxcwgru:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{transition-property:background-color}.x167zut7:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{transition-property:opacity}.x15h3t91:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{transition-timing-function:var(--ease-standard)}.x1dlmc9c:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{transition-timing-function:var(--ease-standard)}.xa5v58t:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{transition-timing-function:var(--ease-standard)}.xy5mcqj:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{z-index:-1}.xotisz4:active:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{background-color:color-mix(in srgb,currentColor 10%,transparent)}@media(prefers-reduced-motion:reduce){.x1viac0w.x1viac0w:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)::backdrop{transition-duration:.01s}}@media(hover:hover){.x1vwwndy.x1vwwndy:hover:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{background-color:color-mix(in srgb,currentColor 5%,transparent)}}.xe80sof:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{bottom:-2px}.x1xrz1ek:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{bottom:0}.xabwq6t:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{left:-2px}.x1ydowbf:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{right:-2px}.x51xajf:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):before{top:-2px}.x1m1drc7:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{top:0}.xzkji8o:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{width:6px}.xi8c0p9:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):after{width:var(--indicator-width,1px)}}@layer reset{@scope([data-astryx-theme=launch-control])to ([data-astryx-theme]){:where(h1,h2,h3,h4,h5,h6){font-family:var(--font-family-heading);color:var(--color-text-primary)}:where(h1){font-size:var(--text-heading-1-size);font-weight:var(--text-heading-1-weight);line-height:var(--text-heading-1-leading)}:where(h2){font-size:var(--text-heading-2-size);font-weight:var(--text-heading-2-weight);line-height:var(--text-heading-2-leading)}:where(h3){font-size:var(--text-heading-3-size);font-weight:var(--text-heading-3-weight);line-height:var(--text-heading-3-leading)}:where(h4){font-size:var(--text-heading-4-size);font-weight:var(--text-heading-4-weight);line-height:var(--text-heading-4-leading)}:where(h5){font-size:var(--text-heading-5-size);font-weight:var(--text-heading-5-weight);line-height:var(--text-heading-5-leading)}:where(h6){font-size:var(--text-heading-6-size);font-weight:var(--text-heading-6-weight);line-height:var(--text-heading-6-leading)}:where(p){font-family:var(--font-family-body);font-size:var(--text-body-size);font-weight:var(--text-body-weight);line-height:var(--text-body-leading);color:var(--color-text-primary)}:where(small){font-size:var(--text-supporting-size);font-weight:var(--text-supporting-weight);line-height:var(--text-supporting-leading);color:var(--color-text-secondary)}:where(code,pre){font-family:var(--font-family-code);font-size:var(--text-code-size);line-height:var(--text-code-leading)}:where(hr){border:none;border-top:1px solid var(--color-border)}}}@layer astryx-theme{:root{color-scheme:light dark}html[data-theme=light]{color-scheme:light}html[data-theme=dark]{color-scheme:dark}@scope([data-astryx-theme=launch-control])to ([data-astryx-theme]){:scope{--color-accent: light-dark(#E34A32, #F05A3C);--color-accent-muted: light-dark(#FFF0EC, #40231E);--color-on-accent: #FFFFFF;--color-background-body: light-dark(#F4F5F5, #171719);--color-background-surface: light-dark(#FFFFFF, #202024);--color-background-card: light-dark(#FFFFFF, #202024);--color-background-muted: light-dark(#F7F7F5, #28282C);--color-border: light-dark(rgba(23,23,25,.09), rgba(255,255,255,.12));--color-border-emphasized: light-dark(rgba(23,23,25,.16), rgba(255,255,255,.22));--color-text-primary: light-dark(#232427, #F4F5F5);--color-text-secondary: light-dark(#55575C, #B7B8BA);--color-text-accent: light-dark(#B93624, #FF806A);--color-icon-accent: light-dark(#E34A32, #F05A3C);--color-track: light-dark(#DEDEDB, #45454A);--color-warning: light-dark(#B93624, #FF806A);--color-warning-muted: light-dark(#FFF0EC, #40231E);--color-on-warning: light-dark(#232427, #FFFFFF);--font-family-body: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-heading: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius-container: 16px;--radius-element: 10px;--duration-fast: 125ms;--duration-medium: .3s;--duration-slow: .7s;--ease-standard: cubic-bezier(.24,1,.4,1)}}}@layer astryx-theme{@scope([data-astryx-theme=launch-control])to ([data-astryx-theme]){[data-astryx-media=dark]{color-scheme:dark;--color-text-primary: var(--color-on-dark);--color-icon-primary: var(--color-on-dark);--color-accent: var(--color-on-dark)}[data-astryx-media=light]{color-scheme:light;--color-text-primary: var(--color-on-light);--color-icon-primary: var(--color-on-light);--color-accent: var(--color-on-light)}}}.lc-motion{width:100%;min-width:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:-.012em}.lc-motion [data-astryx-theme=launch-control]{width:100%;display:block}.trace-card{width:100%!important;position:relative;overflow:hidden!important;border-color:#1717191a!important;border-radius:24px!important;background:#fff!important;box-shadow:0 1px #fffffff2 inset,0 28px 68px -42px #2324278c!important}.trace-topbar{min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border-bottom:1px solid rgba(23,23,25,.08);font-size:11px}.trace-run-state{display:flex;align-items:center;gap:8px;color:#232427;font-weight:650}.trace-boundary{color:#6b6d72}.trace-progress{height:3px;overflow:hidden}.trace-progress>div{gap:0!important}.trace-progress [role=progressbar]{height:3px!important;border-radius:0!important}.trace-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;padding:0 10px;border-bottom:1px solid rgba(23,23,25,.08);list-style:none}.trace-steps li{min-width:0;position:relative}.trace-steps li:not(:last-child):after{content:"";position:absolute;right:-1px;top:16px;width:1px;height:28px;background:#17171914}.trace-steps button{width:100%;min-height:60px;display:flex;align-items:center;gap:9px;padding:8px 10px;border:0;color:#6b6d72;background:transparent;text-align:left;cursor:pointer;transition:color 125ms ease,background-color 125ms ease}.trace-steps button:hover{background:#f7f7f5}.trace-steps button[aria-current=step]{color:#232427;background:#fff8f6}.trace-steps button b{width:24px;height:24px;flex:none;display:grid;place-items:center;border:1px solid rgba(23,23,25,.12);border-radius:50%;font-size:9px;font-weight:720}.trace-steps button[aria-current=step] b{border-color:#e34a323d;color:#b93624;background:#fff0ec}.trace-steps li[data-complete=true] b{color:#287a4d;background:#eef7f1;border-color:#287a4d33}.trace-steps button span{min-width:0;display:grid;line-height:1.05}.trace-steps button strong{font-size:11px}.trace-steps button small{margin-top:4px;color:#8a8c91;font-size:9px;white-space:nowrap}.trace-workspace{height:248px;position:relative;isolation:isolate;contain:paint;overflow:hidden;padding:16px 16px 68px;background:linear-gradient(180deg,#fcfcfb,#f8f8f6)}.trace-panel{min-height:154px;position:relative;z-index:5;animation:trace-panel-in .55s cubic-bezier(.24,1,.4,1) both}.trace-panel-head{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:11px}.trace-panel-head>div{min-width:0;display:grid;line-height:1.1}.trace-panel-head small,.trace-route-grid small,.trace-receipt-copy small{color:#8a8c91;font-size:9px;font-weight:680;letter-spacing:.055em;text-transform:uppercase}.trace-panel-head strong{margin-top:5px;color:#232427;font-size:14px;letter-spacing:-.025em}.trace-panel-head>span{color:#8a8c91;font:550 9px/1.2 ui-monospace,SFMono-Regular,monospace}.trace-rows{overflow:hidden;border:1px solid rgba(23,23,25,.08);border-radius:11px;background:#fff}.trace-row{min-height:31px;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:10px;padding:5px 10px;border-bottom:1px solid rgba(23,23,25,.07);color:#55575c;font-size:9px;opacity:0;transform:translateY(8px);animation:trace-row-in .4s cubic-bezier(.24,1,.4,1) forwards}.trace-row:nth-child(2){animation-delay:90ms}.trace-row:nth-child(3){animation-delay:.18s}.trace-row:last-child{border-bottom:0}.trace-row code{color:#232427;font:650 9px/1 ui-monospace,SFMono-Regular,monospace}.trace-row em{color:#6b6d72;font-style:normal}.trace-row.is-exception{box-shadow:3px 0 #e34a32 inset;background:#fff9f7}.trace-row [class*=x]{font-size:8px!important}.trace-reason{margin:8px 0 0!important;color:#b93624!important;font-size:9px!important;font-weight:620}.trace-reason span{margin-right:5px}.trace-route-grid{min-height:108px;display:grid;grid-template-columns:1fr 28px 1fr;align-items:stretch;gap:8px}.trace-route-grid>div:not(.trace-arrow){display:flex;flex-direction:column;justify-content:center;padding:12px;border:1px solid rgba(23,23,25,.08);border-radius:11px;background:#fff}.trace-route-grid strong{margin-top:5px;color:#232427;font-size:11px;line-height:1.15}.trace-route-grid span{margin-top:5px;color:#6b6d72;font-size:8px;line-height:1.35}.trace-arrow{display:grid;place-items:center;color:#e34a32;font-size:18px;animation:trace-arrow .7s cubic-bezier(.24,1,.4,1) both}.trace-prove{min-height:138px;display:grid;grid-template-columns:44px minmax(0,1fr) 142px;align-items:center;gap:12px;padding:16px;border:1px solid rgba(23,23,25,.08);border-radius:13px;background:#fff;box-shadow:0 16px 30px -26px #23242773}.trace-receipt-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:#b93624;background:#fff0ec;font-size:18px;font-weight:760}.trace-receipt-copy{min-width:0;display:grid}.trace-receipt-copy strong{margin-top:5px;color:#232427;font-size:12px;line-height:1.15}.trace-receipt-copy span{margin-top:6px;color:#6b6d72;font-size:8px;line-height:1.35}.trace-receipt-data{margin:0;padding-left:12px;border-left:1px solid rgba(23,23,25,.08)}.trace-receipt-data div{display:grid;grid-template-columns:54px minmax(0,1fr);gap:5px;padding:3px 0;font:500 8px/1.3 ui-monospace,SFMono-Regular,monospace}.trace-receipt-data dt{color:#8a8c91}.trace-receipt-data dd{min-width:0;margin:0;color:#232427;overflow:hidden;text-overflow:ellipsis}.trace-rail{position:absolute;z-index:1;left:13%;right:13%;bottom:37px;height:1px;background:linear-gradient(90deg,#e34a322e,#e34a32b8,#e34a322e)}.trace-rail span{position:absolute;top:-5px;width:11px;height:11px;border:2px solid #E34A32;border-radius:50%;background:#fcfcfb}.trace-rail span:nth-child(1){left:0}.trace-rail span:nth-child(2){left:50%;transform:translate(-50%)}.trace-rail span:nth-child(3){right:0}.trace-mesh{width:100%;height:100%;position:absolute;z-index:4;inset:0;display:block;pointer-events:none}.trace-token-fallback{width:18px;height:18px;position:absolute;z-index:3;right:12%;bottom:28px;background:linear-gradient(135deg,#f05a3c,#c93a24);clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);box-shadow:0 8px 15px #e34a324d}.lc-motion[data-webgl=ready] .trace-token-fallback{display:none}.trace-footer{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-top:1px solid rgba(23,23,25,.08);background:#fff}.trace-footer>span{color:#6b6d72;font-size:9px}.trace-replay{min-height:44px!important;border-radius:999px!important}.trace-static-summary,.trace-live{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}@keyframes trace-panel-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes trace-row-in{to{opacity:1;transform:translateY(0)}}@keyframes trace-arrow{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@media(max-width:1080px){.trace-card{min-height:408px!important}.trace-workspace{height:230px}.trace-route-grid span{display:none}.trace-prove{grid-template-columns:40px 1fr}.trace-receipt-data{display:none}}@media(max-width:640px){.trace-topbar{align-items:flex-start}.trace-boundary{max-width:116px;text-align:right}.trace-steps{padding:0 4px}.trace-steps button{min-height:62px;gap:6px;padding:7px 5px}.trace-steps button b{width:21px;height:21px}.trace-steps button small{display:none}.trace-workspace{height:246px;padding:14px 12px 70px}.trace-route-grid{grid-template-columns:1fr 20px 1fr;gap:4px}.trace-route-grid>div:not(.trace-arrow){padding:9px}.trace-route-grid span{display:none}.trace-prove{grid-template-columns:38px 1fr;padding:12px}.trace-receipt-mark{width:36px;height:36px}.trace-footer{min-height:64px}.trace-footer>span{display:none}.trace-replay{width:100%!important}}@media(prefers-reduced-motion:reduce){.trace-panel,.trace-row,.trace-arrow{animation:none!important;opacity:1!important;transform:none!important}.trace-steps button,.trace-replay{transition-duration:0s!important}} diff --git a/docs/assets/launch-control-motion.js b/docs/assets/launch-control-motion.js new file mode 100644 index 0000000..e632205 --- /dev/null +++ b/docs/assets/launch-control-motion.js @@ -0,0 +1,99 @@ +import{a as mt,b as J,c as Fl,d as Gl,e as Xl,f as Rl,g as Vl,h as Zl,i as Ll,j as Ql,k as Kl,l as Jl,m as Wl,n as Il,o as Pl,p as tr,q as ds,r as Ge,s as Wt,t as fs,u as ct,v as _n,w as xs,x as gs,y as ps}from"./launch-control-chunks/chunk-Z74MQLWI.js";import{a as Ca,b as Q}from"./launch-control-chunks/chunk-FJBRNDM2.js";var $s=Ca(Z=>{"use strict";/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */function er(t,n){var a=t.length;t.push(n);t:for(;0>>1,e=t[o];if(0>>1;oXe(r,a))cXe(s,r)?(t[o]=s,t[c]=a,o=c):(t[o]=r,t[l]=a,o=l);else if(cXe(s,a))t[o]=s,t[c]=a,o=c;else break t}}return n}function Xe(t,n){var a=t.sortIndex-n.sortIndex;return a!==0?a:t.id-n.id}Z.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(hs=performance,Z.unstable_now=function(){return hs.now()}):(nr=Date,ms=nr.now(),Z.unstable_now=function(){return nr.now()-ms});var hs,nr,ms,xn=[],Cn=[],l1=1,Yt=null,vt=3,ir=!1,Oo=!1,Bo=!1,lr=!1,bs=typeof setTimeout=="function"?setTimeout:null,ks=typeof clearTimeout=="function"?clearTimeout:null,vs=typeof setImmediate<"u"?setImmediate:null;function Re(t){for(var n=an(Cn);n!==null;){if(n.callback===null)Ve(Cn);else if(n.startTime<=t)Ve(Cn),n.sortIndex=n.expirationTime,er(xn,n);else break;n=an(Cn)}}function rr(t){if(Bo=!1,Re(t),!Oo)if(an(xn)!==null)Oo=!0,Ua||(Ua=!0,Na());else{var n=an(Cn);n!==null&&cr(rr,n.startTime-t)}}var Ua=!1,_o=-1,ws=5,zs=-1;function Ss(){return lr?!0:!(Z.unstable_now()-zst&&Ss());){var o=Yt.callback;if(typeof o=="function"){Yt.callback=null,vt=Yt.priorityLevel;var e=o(Yt.expirationTime<=t);if(t=Z.unstable_now(),typeof e=="function"){Yt.callback=e,Re(t),n=!0;break n}Yt===an(xn)&&Ve(xn),Re(t)}else Ve(xn);Yt=an(xn)}if(Yt!==null)n=!0;else{var i=an(Cn);i!==null&&cr(rr,i.startTime-t),n=!1}}break t}finally{Yt=null,vt=a,ir=!1}n=void 0}}finally{n?Na():Ua=!1}}}var Na;typeof vs=="function"?Na=function(){vs(ar)}:typeof MessageChannel<"u"?(or=new MessageChannel,ys=or.port2,or.port1.onmessage=ar,Na=function(){ys.postMessage(null)}):Na=function(){bs(ar,0)};var or,ys;function cr(t,n){_o=bs(function(){t(Z.unstable_now())},n)}Z.unstable_IdlePriority=5;Z.unstable_ImmediatePriority=1;Z.unstable_LowPriority=4;Z.unstable_NormalPriority=3;Z.unstable_Profiling=null;Z.unstable_UserBlockingPriority=2;Z.unstable_cancelCallback=function(t){t.callback=null};Z.unstable_forceFrameRate=function(t){0>t||125o?(t.sortIndex=a,er(Cn,t),an(xn)===null&&t===an(Cn)&&(Bo?(ks(_o),_o=-1):Bo=!0,cr(rr,a-o))):(t.sortIndex=e,er(xn,t),Oo||ir||(Oo=!0,Ua||(Ua=!0,Na()))),t};Z.unstable_shouldYield=Ss;Z.unstable_wrapCallback=function(t){var n=vt;return function(){var a=vt;vt=n;try{return t.apply(this,arguments)}finally{vt=a}}}});var qs=Ca((Xv,js)=>{"use strict";js.exports=$s()});var Ts=Ca(kt=>{"use strict";/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var r1=mt();function Es(t){var n="https://react.dev/errors/"+t;if(1{"use strict";function As(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(As)}catch(t){console.error(t)}}As(),Ds.exports=Ts()});var Vg=Ca(ml=>{"use strict";/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var lt=qs(),ef=mt(),s1=Ms();function v(t){var n="https://react.dev/errors/"+t;if(1Va||(t.current=Lr[Va],Lr[Va]=null,Va--)}function G(t,n){Va++,Lr[Va]=t.current,t.current=n}var rn=cn(null),ce=cn(null),Kn=cn(null),ji=cn(null);function qi(t,n){switch(G(Kn,n),G(ce,t),G(rn,null),n.nodeType){case 9:case 11:t=(t=n.documentElement)&&(t=t.namespaceURI)?Fd(t):0;break;default:if(t=n.tagName,n=n.namespaceURI)n=Fd(n),t=Dg(n,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}dt(rn),G(rn,t)}function uo(){dt(rn),dt(ce),dt(Kn)}function Qr(t){t.memoizedState!==null&&G(ji,t);var n=rn.current,a=Dg(n,t.type);n!==a&&(G(ce,t),G(rn,a))}function Ei(t){ce.current===t&&(dt(rn),dt(ce)),ji.current===t&&(dt(ji),ye._currentValue=ya)}var ur,_s;function pa(t){if(ur===void 0)try{throw Error()}catch(a){var n=a.stack.trim().match(/\n( *(at )?)/);ur=n&&n[1]||"",_s=-1)":-1e||c[o]!==s[e]){var g=` +`+c[o].replace(" at new "," at ");return t.displayName&&g.includes("")&&(g=g.replace("",t.displayName)),g}while(1<=o&&0<=e);break}}}finally{sr=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?pa(a):""}function p1(t,n){switch(t.tag){case 26:case 27:case 5:return pa(t.type);case 16:return pa("Lazy");case 13:return t.child!==n&&n!==null?pa("Suspense Fallback"):pa("Suspense");case 19:return pa("SuspenseList");case 0:case 15:return dr(t.type,!1);case 11:return dr(t.type.render,!1);case 1:return dr(t.type,!0);case 31:return pa("Activity");default:return""}}function Cs(t){try{var n="",a=null;do n+=p1(t,a),a=t,t=t.return;while(t);return n}catch(o){return` +Error generating stack: `+o.message+` +`+o.stack}}var Kr=Object.prototype.hasOwnProperty,Hc=lt.unstable_scheduleCallback,fr=lt.unstable_cancelCallback,h1=lt.unstable_shouldYield,m1=lt.unstable_requestPaint,Bt=lt.unstable_now,v1=lt.unstable_getCurrentPriorityLevel,ff=lt.unstable_ImmediatePriority,xf=lt.unstable_UserBlockingPriority,Ti=lt.unstable_NormalPriority,y1=lt.unstable_LowPriority,gf=lt.unstable_IdlePriority,b1=lt.log,k1=lt.unstable_setDisableYieldValue,ze=null,_t=null;function Rn(t){if(typeof b1=="function"&&k1(t),_t&&typeof _t.setStrictMode=="function")try{_t.setStrictMode(ze,t)}catch{}}var Ct=Math.clz32?Math.clz32:S1,w1=Math.log,z1=Math.LN2;function S1(t){return t>>>=0,t===0?32:31-(w1(t)/z1|0)|0}var Qe=256,Ke=262144,Je=4194304;function ha(t){var n=t&42;if(n!==0)return n;switch(t&-t){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function nl(t,n,a){var o=t.pendingLanes;if(o===0)return 0;var e=0,i=t.suspendedLanes,l=t.pingedLanes;t=t.warmLanes;var r=o&134217727;return r!==0?(o=r&~i,o!==0?e=ha(o):(l&=r,l!==0?e=ha(l):a||(a=r&~t,a!==0&&(e=ha(a))))):(r=o&~i,r!==0?e=ha(r):l!==0?e=ha(l):a||(a=o&~t,a!==0&&(e=ha(a)))),e===0?0:n!==0&&n!==e&&(n&i)===0&&(i=e&-e,a=n&-n,i>=a||i===32&&(a&4194048)!==0)?n:e}function Se(t,n){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&n)===0}function $1(t,n){switch(t){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32: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 n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function pf(){var t=Je;return Je<<=1,(Je&62914560)===0&&(Je=4194304),t}function xr(t){for(var n=[],a=0;31>a;a++)n.push(t);return n}function $e(t,n){t.pendingLanes|=n,n!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function j1(t,n,a,o,e,i){var l=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var r=t.entanglements,c=t.expirationTimes,s=t.hiddenUpdates;for(a=l&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var M1=/[\n"\\]/g;function Vt(t){return t.replace(M1,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function Ir(t,n,a,o,e,i,l,r){t.name="",l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"?t.type=l:t.removeAttribute("type"),n!=null?l==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+Gt(n)):t.value!==""+Gt(n)&&(t.value=""+Gt(n)):l!=="submit"&&l!=="reset"||t.removeAttribute("value"),n!=null?Pr(t,l,Gt(n)):a!=null?Pr(t,l,Gt(a)):o!=null&&t.removeAttribute("value"),e==null&&i!=null&&(t.defaultChecked=!!i),e!=null&&(t.checked=e&&typeof e!="function"&&typeof e!="symbol"),r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?t.name=""+Gt(r):t.removeAttribute("name")}function Sf(t,n,a,o,e,i,l,r){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.type=i),n!=null||a!=null){if(!(i!=="submit"&&i!=="reset"||n!=null)){Wr(t);return}a=a!=null?""+Gt(a):"",n=n!=null?""+Gt(n):a,r||n===t.value||(t.value=n),t.defaultValue=n}o=o??e,o=typeof o!="function"&&typeof o!="symbol"&&!!o,t.checked=r?t.checked:!!o,t.defaultChecked=!!o,l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"&&(t.name=l),Wr(t)}function Pr(t,n,a){n==="number"&&Ai(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function oo(t,n,a,o){if(t=t.options,n){n={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),nc=!1;if(qn)try{Ha={},Object.defineProperty(Ha,"passive",{get:function(){nc=!0}}),window.addEventListener("test",Ha,Ha),window.removeEventListener("test",Ha,Ha)}catch{nc=!1}var Ha,Vn=null,Vc=null,xi=null;function Tf(){if(xi)return xi;var t,n=Vc,a=n.length,o,e="value"in Vn?Vn.value:Vn.textContent,i=e.length;for(t=0;t=Ko),Ls=" ",Qs=!1;function Df(t,n){switch(t){case"keyup":return lh.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Mf(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Qa=!1;function ch(t,n){switch(t){case"compositionend":return Mf(n);case"keypress":return n.which!==32?null:(Qs=!0,Ls);case"textInput":return t=n.data,t===Ls&&Qs?null:t;default:return null}}function uh(t,n){if(Qa)return t==="compositionend"||!Lc&&Df(t,n)?(t=Tf(),xi=Vc=Vn=null,Qa=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:a,offset:n-t};t=o}t:{for(;a;){if(a.nextSibling){a=a.nextSibling;break t}a=a.parentNode}a=void 0}a=Is(a)}}function Cf(t,n){return t&&n?t===n?!0:t&&t.nodeType===3?!1:n&&n.nodeType===3?Cf(t,n.parentNode):"contains"in t?t.contains(n):t.compareDocumentPosition?!!(t.compareDocumentPosition(n)&16):!1:!1}function Nf(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var n=Ai(t.document);n instanceof t.HTMLIFrameElement;){try{var a=typeof n.contentWindow.location.href=="string"}catch{a=!1}if(a)t=n.contentWindow;else break;n=Ai(t.document)}return n}function Qc(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return n&&(n==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||n==="textarea"||t.contentEditable==="true")}var mh=qn&&"documentMode"in document&&11>=document.documentMode,Ka=null,ac=null,Wo=null,oc=!1;function td(t,n,a){var o=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;oc||Ka==null||Ka!==Ai(o)||(o=Ka,"selectionStart"in o&&Qc(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Wo&&de(Wo,o)||(Wo=o,o=Qi(ac,"onSelect"),0>=l,e-=l,on=1<<32-Ct(n)+e|a<$?(T=z,z=null):T=z.sibling;var E=f(d,z,x[$],m);if(E===null){z===null&&(z=T);break}t&&z&&E.alternate===null&&n(d,z),u=i(E,u,$),q===null?w=E:q.sibling=E,q=E,z=T}if($===x.length)return a(d,z),B&&yn(d,$),w;if(z===null){for(;$$?(T=z,z=null):T=z.sibling;var K=f(d,z,E.value,m);if(K===null){z===null&&(z=T);break}t&&z&&K.alternate===null&&n(d,z),u=i(K,u,$),q===null?w=K:q.sibling=K,q=K,z=T}if(E.done)return a(d,z),B&&yn(d,$),w;if(z===null){for(;!E.done;$++,E=x.next())E=h(d,E.value,m),E!==null&&(u=i(E,u,$),q===null?w=E:q.sibling=E,q=E);return B&&yn(d,$),w}for(z=o(z);!E.done;$++,E=x.next())E=p(z,d,$,E.value,m),E!==null&&(t&&E.alternate!==null&&z.delete(E.key===null?$:E.key),u=i(E,u,$),q===null?w=E:q.sibling=E,q=E);return t&&z.forEach(function(nn){return n(d,nn)}),B&&yn(d,$),w}function S(d,u,x,m){if(typeof x=="object"&&x!==null&&x.type===Ra&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Le:t:{for(var w=x.key;u!==null;){if(u.key===w){if(w=x.type,w===Ra){if(u.tag===7){a(d,u.sibling),m=e(u,x.props.children),m.return=d,d=m;break t}}else if(u.elementType===w||typeof w=="object"&&w!==null&&w.$$typeof===Un&&ma(w)===u.type){a(d,u.sibling),m=e(u,x.props),Ho(m,x),m.return=d,d=m;break t}a(d,u);break}else n(d,u);u=u.sibling}x.type===Ra?(m=ba(x.props.children,d.mode,m,x.key),m.return=d,d=m):(m=pi(x.type,x.key,x.props,null,d.mode,m),Ho(m,x),m.return=d,d=m)}return l(d);case Ro:t:{for(w=x.key;u!==null;){if(u.key===w)if(u.tag===4&&u.stateNode.containerInfo===x.containerInfo&&u.stateNode.implementation===x.implementation){a(d,u.sibling),m=e(u,x.children||[]),m.return=d,d=m;break t}else{a(d,u);break}else n(d,u);u=u.sibling}m=kr(x,d.mode,m),m.return=d,d=m}return l(d);case Un:return x=ma(x),S(d,u,x,m)}if(Vo(x))return y(d,u,x,m);if(No(x)){if(w=No(x),typeof w!="function")throw Error(v(150));return x=w.call(x),k(d,u,x,m)}if(typeof x.then=="function")return S(d,u,ai(x),m);if(x.$$typeof===kn)return S(d,u,ni(d,x),m);oi(d,x)}return typeof x=="string"&&x!==""||typeof x=="number"||typeof x=="bigint"?(x=""+x,u!==null&&u.tag===6?(a(d,u.sibling),m=e(u,x),m.return=d,d=m):(a(d,u),m=br(x,d.mode,m),m.return=d,d=m),l(d)):a(d,u)}return function(d,u,x,m){try{ge=0;var w=S(d,u,x,m);return lo=null,w}catch(z){if(z===So||z===rl)throw z;var q=Mt(29,z,null,d.mode);return q.lanes=m,q.return=d,q}}}var ja=If(!0),Pf=If(!1),Hn=!1;function ou(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function sc(t,n){t=t.updateQueue,n.updateQueue===t&&(n.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Wn(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function In(t,n,a){var o=t.updateQueue;if(o===null)return null;if(o=o.shared,(_&2)!==0){var e=o.pending;return e===null?n.next=n:(n.next=e.next,e.next=n),o.pending=n,n=Mi(t),Rf(t,null,a),n}return ll(t,o,n,a),Mi(t)}function Po(t,n,a){if(n=n.updateQueue,n!==null&&(n=n.shared,(a&4194048)!==0)){var o=n.lanes;o&=t.pendingLanes,a|=o,n.lanes=a,mf(t,a)}}function zr(t,n){var a=t.updateQueue,o=t.alternate;if(o!==null&&(o=o.updateQueue,a===o)){var e=null,i=null;if(a=a.firstBaseUpdate,a!==null){do{var l={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};i===null?e=i=l:i=i.next=l,a=a.next}while(a!==null);i===null?e=i=n:i=i.next=n}else e=i=n;a={baseState:o.baseState,firstBaseUpdate:e,lastBaseUpdate:i,shared:o.shared,callbacks:o.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=n:t.next=n,a.lastBaseUpdate=n}var dc=!1;function te(){if(dc){var t=io;if(t!==null)throw t}}function ne(t,n,a,o){dc=!1;var e=t.updateQueue;Hn=!1;var i=e.firstBaseUpdate,l=e.lastBaseUpdate,r=e.shared.pending;if(r!==null){e.shared.pending=null;var c=r,s=c.next;c.next=null,l===null?i=s:l.next=s,l=c;var g=t.alternate;g!==null&&(g=g.updateQueue,r=g.lastBaseUpdate,r!==l&&(r===null?g.firstBaseUpdate=s:r.next=s,g.lastBaseUpdate=c))}if(i!==null){var h=e.baseState;l=0,g=s=c=null,r=i;do{var f=r.lane&-536870913,p=f!==r.lane;if(p?(O&f)===f:(o&f)===f){f!==0&&f===xo&&(dc=!0),g!==null&&(g=g.next={lane:0,tag:r.tag,payload:r.payload,callback:null,next:null});t:{var y=t,k=r;f=n;var S=a;switch(k.tag){case 1:if(y=k.payload,typeof y=="function"){h=y.call(S,h,f);break t}h=y;break t;case 3:y.flags=y.flags&-65537|128;case 0:if(y=k.payload,f=typeof y=="function"?y.call(S,h,f):y,f==null)break t;h=V({},h,f);break t;case 2:Hn=!0}}f=r.callback,f!==null&&(t.flags|=64,p&&(t.flags|=8192),p=e.callbacks,p===null?e.callbacks=[f]:p.push(f))}else p={lane:f,tag:r.tag,payload:r.payload,callback:r.callback,next:null},g===null?(s=g=p,c=h):g=g.next=p,l|=f;if(r=r.next,r===null){if(r=e.shared.pending,r===null)break;p=r,r=p.next,p.next=null,e.lastBaseUpdate=p,e.shared.pending=null}}while(!0);g===null&&(c=h),e.baseState=c,e.firstBaseUpdate=s,e.lastBaseUpdate=g,i===null&&(e.shared.lanes=0),ra|=l,t.lanes=l,t.memoizedState=h}}function tx(t,n){if(typeof t!="function")throw Error(v(191,t));t.call(n)}function nx(t,n){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;ti?i:8;var l=j.T,r={};j.T=r,hu(t,!1,n,a);try{var c=e(),s=j.S;if(s!==null&&s(r,c),c!==null&&typeof c=="object"&&typeof c.then=="function"){var g=jh(c,o);ae(t,n,g,Nt(t))}else ae(t,n,o,Nt(t))}catch(h){ae(t,n,{then:function(){},status:"rejected",reason:h},Nt())}finally{C.p=i,l!==null&&r.types!==null&&(l.types=r.types),j.T=l}}function Mh(){}function hc(t,n,a,o){if(t.tag!==5)throw Error(v(476));var e=jx(t).queue;$x(t,e,n,ya,a===null?Mh:function(){return qx(t),a(o)})}function jx(t){var n=t.memoizedState;if(n!==null)return n;n={memoizedState:ya,baseState:ya,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Tn,lastRenderedState:ya},next:null};var a={};return n.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Tn,lastRenderedState:a},next:null},t.memoizedState=n,t=t.alternate,t!==null&&(t.memoizedState=n),n}function qx(t){var n=jx(t);n.next===null&&(n=t.alternate.memoizedState),ae(t,n.next.queue,{},Nt())}function pu(){return pt(ye)}function Ex(){return tt().memoizedState}function Tx(){return tt().memoizedState}function Oh(t){for(var n=t.return;n!==null;){switch(n.tag){case 24:case 3:var a=Nt();t=Wn(a);var o=In(n,t,a);o!==null&&(qt(o,n,a),Po(o,n,a)),n={cache:tu()},t.payload=n;return}n=n.return}}function Bh(t,n,a){var o=Nt();a={lane:o,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},dl(t)?Dx(n,a):(a=Jc(t,n,a,o),a!==null&&(qt(a,t,o),Mx(a,n,o)))}function Ax(t,n,a){var o=Nt();ae(t,n,a,o)}function ae(t,n,a,o){var e={lane:o,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(dl(t))Dx(n,e);else{var i=t.alternate;if(t.lanes===0&&(i===null||i.lanes===0)&&(i=n.lastRenderedReducer,i!==null))try{var l=n.lastRenderedState,r=i(l,a);if(e.hasEagerState=!0,e.eagerState=r,Ut(r,l))return ll(t,n,e,0),F===null&&il(),!1}catch{}if(a=Jc(t,n,e,o),a!==null)return qt(a,t,o),Mx(a,n,o),!0}return!1}function hu(t,n,a,o){if(o={lane:2,revertLane:$u(),gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},dl(t)){if(n)throw Error(v(479))}else n=Jc(t,a,o,2),n!==null&&qt(n,t,2)}function dl(t){var n=t.alternate;return t===A||n!==null&&n===A}function Dx(t,n){ro=Ui=!0;var a=t.pending;a===null?n.next=n:(n.next=a.next,a.next=n),t.pending=n}function Mx(t,n,a){if((a&4194048)!==0){var o=n.lanes;o&=t.pendingLanes,a|=o,n.lanes=a,mf(t,a)}}var he={readContext:pt,use:ul,useCallback:W,useContext:W,useEffect:W,useImperativeHandle:W,useLayoutEffect:W,useInsertionEffect:W,useMemo:W,useReducer:W,useRef:W,useState:W,useDebugValue:W,useDeferredValue:W,useTransition:W,useSyncExternalStore:W,useId:W,useHostTransitionStatus:W,useFormState:W,useActionState:W,useOptimistic:W,useMemoCache:W,useCacheRefresh:W};he.useEffectEvent=W;var Ox={readContext:pt,use:ul,useCallback:function(t,n){return wt().memoizedState=[t,n===void 0?null:n],t},useContext:pt,useEffect:pd,useImperativeHandle:function(t,n,a){a=a!=null?a.concat([t]):null,vi(4194308,4,bx.bind(null,n,t),a)},useLayoutEffect:function(t,n){return vi(4194308,4,t,n)},useInsertionEffect:function(t,n){vi(4,2,t,n)},useMemo:function(t,n){var a=wt();n=n===void 0?null:n;var o=t();if(qa){Rn(!0);try{t()}finally{Rn(!1)}}return a.memoizedState=[o,n],o},useReducer:function(t,n,a){var o=wt();if(a!==void 0){var e=a(n);if(qa){Rn(!0);try{a(n)}finally{Rn(!1)}}}else e=n;return o.memoizedState=o.baseState=e,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},o.queue=t,t=t.dispatch=Bh.bind(null,A,t),[o.memoizedState,t]},useRef:function(t){var n=wt();return t={current:t},n.memoizedState=t},useState:function(t){t=gc(t);var n=t.queue,a=Ax.bind(null,A,n);return n.dispatch=a,[t.memoizedState,a]},useDebugValue:xu,useDeferredValue:function(t,n){var a=wt();return gu(a,t,n)},useTransition:function(){var t=gc(!1);return t=$x.bind(null,A,t.queue,!0,!1),wt().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,n,a){var o=A,e=wt();if(B){if(a===void 0)throw Error(v(407));a=a()}else{if(a=n(),F===null)throw Error(v(349));(O&127)!==0||lx(o,n,a)}e.memoizedState=a;var i={value:a,getSnapshot:n};return e.queue=i,pd(cx.bind(null,o,i,t),[t]),o.flags|=2048,po(9,{destroy:void 0},rx.bind(null,o,i,a,n),null),a},useId:function(){var t=wt(),n=F.identifierPrefix;if(B){var a=en,o=on;a=(o&~(1<<32-Ct(o)-1)).toString(32)+a,n="_"+n+"R_"+a,a=Hi++,0<\/script>",i=i.removeChild(i.firstChild);break;case"select":i=typeof o.is=="string"?l.createElement("select",{is:o.is}):l.createElement("select"),o.multiple?i.multiple=!0:o.size&&(i.size=o.size);break;default:i=typeof o.is=="string"?l.createElement(e,{is:o.is}):l.createElement(e)}}i[xt]=n,i[Et]=o;t:for(l=n.child;l!==null;){if(l.tag===5||l.tag===6)i.appendChild(l.stateNode);else if(l.tag!==4&&l.tag!==27&&l.child!==null){l.child.return=l,l=l.child;continue}if(l===n)break t;for(;l.sibling===null;){if(l.return===null||l.return===n)break t;l=l.return}l.sibling.return=l.return,l=l.sibling}n.stateNode=i;t:switch(ht(i,e,o),e){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break t;case"img":o=!0;break t;default:o=!1}o&&pn(n)}}return X(n),Dr(n,n.type,t===null?null:t.memoizedProps,n.pendingProps,a),null;case 6:if(t&&n.stateNode!=null)t.memoizedProps!==o&&pn(n);else{if(typeof o!="string"&&n.stateNode===null)throw Error(v(166));if(t=Kn.current,Ya(n)){if(t=n.stateNode,a=n.memoizedProps,o=null,e=gt,e!==null)switch(e.tag){case 27:case 5:o=e.memoizedProps}t[xt]=n,t=!!(t.nodeValue===a||o!==null&&o.suppressHydrationWarning===!0||Ag(t.nodeValue,a)),t||ia(n,!0)}else t=Ki(t).createTextNode(o),t[xt]=n,n.stateNode=t}return X(n),null;case 31:if(a=n.memoizedState,t===null||t.memoizedState!==null){if(o=Ya(n),a!==null){if(t===null){if(!o)throw Error(v(318));if(t=n.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(v(557));t[xt]=n}else Sa(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;X(n),t=!1}else a=wr(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return n.flags&256?(Dt(n),n):(Dt(n),null);if((n.flags&128)!==0)throw Error(v(558))}return X(n),null;case 13:if(o=n.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(e=Ya(n),o!==null&&o.dehydrated!==null){if(t===null){if(!e)throw Error(v(318));if(e=n.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(v(317));e[xt]=n}else Sa(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;X(n),e=!1}else e=wr(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=e),e=!0;if(!e)return n.flags&256?(Dt(n),n):(Dt(n),null)}return Dt(n),(n.flags&128)!==0?(n.lanes=a,n):(a=o!==null,t=t!==null&&t.memoizedState!==null,a&&(o=n.child,e=null,o.alternate!==null&&o.alternate.memoizedState!==null&&o.alternate.memoizedState.cachePool!==null&&(e=o.alternate.memoizedState.cachePool.pool),i=null,o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(i=o.memoizedState.cachePool.pool),i!==e&&(o.flags|=2048)),a!==t&&a&&(n.child.flags|=8192),ei(n,n.updateQueue),X(n),null);case 4:return uo(),t===null&&ju(n.stateNode.containerInfo),X(n),null;case 10:return $n(n.type),X(n),null;case 19:if(dt(P),o=n.memoizedState,o===null)return X(n),null;if(e=(n.flags&128)!==0,i=o.rendering,i===null)if(e)Yo(o,!1);else{if(I!==0||t!==null&&(t.flags&128)!==0)for(t=n.child;t!==null;){if(i=Ni(t),i!==null){for(n.flags|=128,Yo(o,!1),t=i.updateQueue,n.updateQueue=t,ei(n,t),n.subtreeFlags=0,t=a,a=n.child;a!==null;)Vf(a,t),a=a.sibling;return G(P,P.current&1|2),B&&yn(n,o.treeForkCount),n.child}t=t.sibling}o.tail!==null&&Bt()>Xi&&(n.flags|=128,e=!0,Yo(o,!1),n.lanes=4194304)}else{if(!e)if(t=Ni(i),t!==null){if(n.flags|=128,e=!0,t=t.updateQueue,n.updateQueue=t,ei(n,t),Yo(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!B)return X(n),null}else 2*Bt()-o.renderingStartTime>Xi&&a!==536870912&&(n.flags|=128,e=!0,Yo(o,!1),n.lanes=4194304);o.isBackwards?(i.sibling=n.child,n.child=i):(t=o.last,t!==null?t.sibling=i:n.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Bt(),t.sibling=null,a=P.current,G(P,e?a&1|2:a&1),B&&yn(n,o.treeForkCount),t):(X(n),null);case 22:case 23:return Dt(n),eu(),o=n.memoizedState!==null,t!==null?t.memoizedState!==null!==o&&(n.flags|=8192):o&&(n.flags|=8192),o?(a&536870912)!==0&&(n.flags&128)===0&&(X(n),n.subtreeFlags&6&&(n.flags|=8192)):X(n),a=n.updateQueue,a!==null&&ei(n,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),o=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(o=n.memoizedState.cachePool.pool),o!==a&&(n.flags|=2048),t!==null&&dt(ka),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),n.memoizedState.cache!==a&&(n.flags|=2048),$n(ot),X(n),null;case 25:return null;case 30:return null}throw Error(v(156,n.tag))}function Hh(t,n){switch(Pc(n),n.tag){case 1:return t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 3:return $n(ot),uo(),t=n.flags,(t&65536)!==0&&(t&128)===0?(n.flags=t&-65537|128,n):null;case 26:case 27:case 5:return Ei(n),null;case 31:if(n.memoizedState!==null){if(Dt(n),n.alternate===null)throw Error(v(340));Sa()}return t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 13:if(Dt(n),t=n.memoizedState,t!==null&&t.dehydrated!==null){if(n.alternate===null)throw Error(v(340));Sa()}return t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 19:return dt(P),null;case 4:return uo(),null;case 10:return $n(n.type),null;case 22:case 23:return Dt(n),eu(),t!==null&&dt(ka),t=n.flags,t&65536?(n.flags=t&-65537|128,n):null;case 24:return $n(ot),null;case 25:return null;default:return null}}function Vx(t,n){switch(Pc(n),n.tag){case 3:$n(ot),uo();break;case 26:case 27:case 5:Ei(n);break;case 4:uo();break;case 31:n.memoizedState!==null&&Dt(n);break;case 13:Dt(n);break;case 19:dt(P);break;case 10:$n(n.type);break;case 22:case 23:Dt(n),eu(),t!==null&&dt(ka);break;case 24:$n(ot)}}function Ae(t,n){try{var a=n.updateQueue,o=a!==null?a.lastEffect:null;if(o!==null){var e=o.next;a=e;do{if((a.tag&t)===t){o=void 0;var i=a.create,l=a.inst;o=i(),l.destroy=o}a=a.next}while(a!==e)}}catch(r){U(n,n.return,r)}}function la(t,n,a){try{var o=n.updateQueue,e=o!==null?o.lastEffect:null;if(e!==null){var i=e.next;o=i;do{if((o.tag&t)===t){var l=o.inst,r=l.destroy;if(r!==void 0){l.destroy=void 0,e=n;var c=a,s=r;try{s()}catch(g){U(e,c,g)}}}o=o.next}while(o!==i)}}catch(g){U(n,n.return,g)}}function Zx(t){var n=t.updateQueue;if(n!==null){var a=t.stateNode;try{nx(n,a)}catch(o){U(t,t.return,o)}}}function Lx(t,n,a){a.props=Ea(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(o){U(t,n,o)}}function oe(t,n){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var o=t.stateNode;break;case 30:o=t.stateNode;break;default:o=t.stateNode}typeof a=="function"?t.refCleanup=a(o):a.current=o}}catch(e){U(t,n,e)}}function ln(t,n){var a=t.ref,o=t.refCleanup;if(a!==null)if(typeof o=="function")try{o()}catch(e){U(t,n,e)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(e){U(t,n,e)}else a.current=null}function Qx(t){var n=t.type,a=t.memoizedProps,o=t.stateNode;try{t:switch(n){case"button":case"input":case"select":case"textarea":a.autoFocus&&o.focus();break t;case"img":a.src?o.src=a.src:a.srcSet&&(o.srcset=a.srcSet)}}catch(e){U(t,t.return,e)}}function Mr(t,n,a){try{var o=t.stateNode;im(o,t.type,a,n),o[Et]=n}catch(e){U(t,t.return,e)}}function Kx(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ua(t.type)||t.tag===4}function Or(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Kx(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ua(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function kc(t,n,a){var o=t.tag;if(o===5||o===6)t=t.stateNode,n?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,n):(n=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,n.appendChild(t),a=a._reactRootContainer,a!=null||n.onclick!==null||(n.onclick=wn));else if(o!==4&&(o===27&&ua(t.type)&&(a=t.stateNode,n=null),t=t.child,t!==null))for(kc(t,n,a),t=t.sibling;t!==null;)kc(t,n,a),t=t.sibling}function Gi(t,n,a){var o=t.tag;if(o===5||o===6)t=t.stateNode,n?a.insertBefore(t,n):a.appendChild(t);else if(o!==4&&(o===27&&ua(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(Gi(t,n,a),t=t.sibling;t!==null;)Gi(t,n,a),t=t.sibling}function Jx(t){var n=t.stateNode,a=t.memoizedProps;try{for(var o=t.type,e=n.attributes;e.length;)n.removeAttributeNode(e[0]);ht(n,o,a),n[xt]=t,n[Et]=a}catch(i){U(t,t.return,i)}}var bn=!1,at=!1,Br=!1,Ed=typeof WeakSet=="function"?WeakSet:Set,ut=null;function Yh(t,n){if(t=t.containerInfo,Ec=Pi,t=Nf(t),Qc(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else t:{a=(a=t.ownerDocument)&&a.defaultView||window;var o=a.getSelection&&a.getSelection();if(o&&o.rangeCount!==0){a=o.anchorNode;var e=o.anchorOffset,i=o.focusNode;o=o.focusOffset;try{a.nodeType,i.nodeType}catch{a=null;break t}var l=0,r=-1,c=-1,s=0,g=0,h=t,f=null;n:for(;;){for(var p;h!==a||e!==0&&h.nodeType!==3||(r=l+e),h!==i||o!==0&&h.nodeType!==3||(c=l+o),h.nodeType===3&&(l+=h.nodeValue.length),(p=h.firstChild)!==null;)f=h,h=p;for(;;){if(h===t)break n;if(f===a&&++s===e&&(r=l),f===i&&++g===o&&(c=l),(p=h.nextSibling)!==null)break;h=f,f=h.parentNode}h=p}a=r===-1||c===-1?null:{start:r,end:c}}else a=null}a=a||{start:0,end:0}}else a=null;for(Tc={focusedElem:t,selectionRange:a},Pi=!1,ut=n;ut!==null;)if(n=ut,t=n.child,(n.subtreeFlags&1028)!==0&&t!==null)t.return=n,ut=t;else for(;ut!==null;){switch(n=ut,i=n.alternate,t=n.flags,n.tag){case 0:if((t&4)!==0&&(t=n.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),ht(i,o,a),i[xt]=t,st(i),o=i;break t;case"link":var l=Jd("link","href",e).get(o+(a.href||""));if(l){for(var r=0;rS&&(l=S,S=k,k=l);var d=Ps(r,k),u=Ps(r,S);if(d&&u&&(p.rangeCount!==1||p.anchorNode!==d.node||p.anchorOffset!==d.offset||p.focusNode!==u.node||p.focusOffset!==u.offset)){var x=h.createRange();x.setStart(d.node,d.offset),p.removeAllRanges(),k>S?(p.addRange(x),p.extend(u.node,u.offset)):(x.setEnd(u.node,u.offset),p.addRange(x))}}}}for(h=[],p=r;p=p.parentNode;)p.nodeType===1&&h.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;ra?32:a,j.T=null,a=Sc,Sc=null;var i=ta,l=jn;if(it=0,mo=ta=null,jn=0,(_&6)!==0)throw Error(v(331));var r=_;if(_|=4,rg(i.current),eg(i,i.current,l,a),_=r,De(0,!1),_t&&typeof _t.onPostCommitFiberRoot=="function")try{_t.onPostCommitFiberRoot(ze,i)}catch{}return!0}finally{C.p=e,j.T=o,wg(t,n)}}function Md(t,n,a){n=Zt(a,n),n=vc(t.stateNode,n,2),t=In(t,n,2),t!==null&&($e(t,2),un(t))}function U(t,n,a){if(t.tag===3)Md(t,t,a);else for(;n!==null;){if(n.tag===3){Md(n,t,a);break}else if(n.tag===1){var o=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof o.componentDidCatch=="function"&&(Pn===null||!Pn.has(o))){t=Zt(a,t),a=Ux(2),o=In(n,a,2),o!==null&&(Hx(a,o,n,t),$e(o,2),un(o));break}}n=n.return}}function Cr(t,n,a){var o=t.pingCache;if(o===null){o=t.pingCache=new Xh;var e=new Set;o.set(n,e)}else e=o.get(n),e===void 0&&(e=new Set,o.set(n,e));e.has(a)||(wu=!0,e.add(a),t=Qh.bind(null,t,n,a),n.then(t,t))}function Qh(t,n,a){var o=t.pingCache;o!==null&&o.delete(n),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,F===t&&(O&a)===a&&(I===4||I===3&&(O&62914560)===O&&300>Bt()-fl?(_&2)===0&&vo(t,0):zu|=a,ho===O&&(ho=0)),un(t)}function Sg(t,n){n===0&&(n=pf()),t=Ma(t,n),t!==null&&($e(t,n),un(t))}function Kh(t){var n=t.memoizedState,a=0;n!==null&&(a=n.retryLane),Sg(t,a)}function Jh(t,n){var a=0;switch(t.tag){case 31:case 13:var o=t.stateNode,e=t.memoizedState;e!==null&&(a=e.retryLane);break;case 19:o=t.stateNode;break;case 22:o=t.stateNode._retryCache;break;default:throw Error(v(314))}o!==null&&o.delete(n),Sg(t,a)}function Wh(t,n){return Hc(t,n)}var Zi=null,Xa=null,jc=!1,Li=!1,Nr=!1,Qn=0;function un(t){t!==Xa&&t.next===null&&(Xa===null?Zi=Xa=t:Xa=Xa.next=t),Li=!0,jc||(jc=!0,Ph())}function De(t,n){if(!Nr&&Li){Nr=!0;do for(var a=!1,o=Zi;o!==null;){if(!n)if(t!==0){var e=o.pendingLanes;if(e===0)var i=0;else{var l=o.suspendedLanes,r=o.pingedLanes;i=(1<<31-Ct(42|t)+1)-1,i&=e&~(l&~r),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(a=!0,Od(o,i))}else i=O,i=nl(o,o===F?i:0,o.cancelPendingCommit!==null||o.timeoutHandle!==-1),(i&3)===0||Se(o,i)||(a=!0,Od(o,i));o=o.next}while(a);Nr=!1}}function Ih(){$g()}function $g(){Li=jc=!1;var t=0;Qn!==0&&rm()&&(t=Qn);for(var n=Bt(),a=null,o=Zi;o!==null;){var e=o.next,i=jg(o,n);i===0?(o.next=null,a===null?Zi=e:a.next=e,e===null&&(Xa=a)):(a=o,(t!==0||(i&3)!==0)&&(Li=!0)),o=e}it!==0&&it!==5||De(t,!1),Qn!==0&&(Qn=0)}function jg(t,n){for(var a=t.suspendedLanes,o=t.pingedLanes,e=t.expirationTimes,i=t.pendingLanes&-62914561;0r)break;var g=c.transferSize,h=c.initiatorType;g&&Yd(h)&&(c=c.responseEnd,l+=g*(c"u"?null:document;function _g(t,n,a){var o=jo;if(o&&typeof n=="string"&&n){var e=Vt(n);e='link[rel="'+t+'"][href="'+e+'"]',typeof a=="string"&&(e+='[crossorigin="'+a+'"]'),Ld.has(e)||(Ld.add(e),t={rel:t,crossOrigin:a,href:n},o.querySelector(e)===null&&(n=o.createElement("link"),ht(n,"link",t),st(n),o.head.appendChild(n)))}}function hm(t){Mn.D(t),_g("dns-prefetch",t,null)}function mm(t,n){Mn.C(t,n),_g("preconnect",t,n)}function vm(t,n,a){Mn.L(t,n,a);var o=jo;if(o&&t&&n){var e='link[rel="preload"][as="'+Vt(n)+'"]';n==="image"&&a&&a.imageSrcSet?(e+='[imagesrcset="'+Vt(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(e+='[imagesizes="'+Vt(a.imageSizes)+'"]')):e+='[href="'+Vt(t)+'"]';var i=e;switch(n){case"style":i=yo(t);break;case"script":i=qo(t)}Jt.has(i)||(t=V({rel:"preload",href:n==="image"&&a&&a.imageSrcSet?void 0:t,as:n},a),Jt.set(i,t),o.querySelector(e)!==null||n==="style"&&o.querySelector(Me(i))||n==="script"&&o.querySelector(Oe(i))||(n=o.createElement("link"),ht(n,"link",t),st(n),o.head.appendChild(n)))}}function ym(t,n){Mn.m(t,n);var a=jo;if(a&&t){var o=n&&typeof n.as=="string"?n.as:"script",e='link[rel="modulepreload"][as="'+Vt(o)+'"][href="'+Vt(t)+'"]',i=e;switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=qo(t)}if(!Jt.has(i)&&(t=V({rel:"modulepreload",href:t},n),Jt.set(i,t),a.querySelector(e)===null)){switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Oe(i)))return}o=a.createElement("link"),ht(o,"link",t),st(o),a.head.appendChild(o)}}}function bm(t,n,a){Mn.S(t,n,a);var o=jo;if(o&&t){var e=ao(o).hoistableStyles,i=yo(t);n=n||"default";var l=e.get(i);if(!l){var r={loading:0,preload:null};if(l=o.querySelector(Me(i)))r.loading=5;else{t=V({rel:"stylesheet",href:t,"data-precedence":n},a),(a=Jt.get(i))&&qu(t,a);var c=l=o.createElement("link");st(c),ht(c,"link",t),c._p=new Promise(function(s,g){c.onload=s,c.onerror=g}),c.addEventListener("load",function(){r.loading|=1}),c.addEventListener("error",function(){r.loading|=2}),r.loading|=4,wi(l,n,o)}l={type:"stylesheet",instance:l,count:1,state:r},e.set(i,l)}}}function km(t,n){Mn.X(t,n);var a=jo;if(a&&t){var o=ao(a).hoistableScripts,e=qo(t),i=o.get(e);i||(i=a.querySelector(Oe(e)),i||(t=V({src:t,async:!0},n),(n=Jt.get(e))&&Eu(t,n),i=a.createElement("script"),st(i),ht(i,"link",t),a.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},o.set(e,i))}}function wm(t,n){Mn.M(t,n);var a=jo;if(a&&t){var o=ao(a).hoistableScripts,e=qo(t),i=o.get(e);i||(i=a.querySelector(Oe(e)),i||(t=V({src:t,async:!0,type:"module"},n),(n=Jt.get(e))&&Eu(t,n),i=a.createElement("script"),st(i),ht(i,"link",t),a.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},o.set(e,i))}}function Qd(t,n,a,o){var e=(e=Kn.current)?Ji(e):null;if(!e)throw Error(v(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(n=yo(a.href),a=ao(e).hoistableStyles,o=a.get(n),o||(o={type:"style",instance:null,count:0,state:null},a.set(n,o)),o):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=yo(a.href);var i=ao(e).hoistableStyles,l=i.get(t);if(l||(e=e.ownerDocument||e,l={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(t,l),(i=e.querySelector(Me(t)))&&!i._p&&(l.instance=i,l.state.loading=5),Jt.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},Jt.set(t,a),i||zm(e,t,a,l.state))),n&&o===null)throw Error(v(528,""));return l}if(n&&o!==null)throw Error(v(529,""));return null;case"script":return n=a.async,a=a.src,typeof a=="string"&&n&&typeof n!="function"&&typeof n!="symbol"?(n=qo(a),a=ao(e).hoistableScripts,o=a.get(n),o||(o={type:"script",instance:null,count:0,state:null},a.set(n,o)),o):{type:"void",instance:null,count:0,state:null};default:throw Error(v(444,t))}}function yo(t){return'href="'+Vt(t)+'"'}function Me(t){return'link[rel="stylesheet"]['+t+"]"}function Cg(t){return V({},t,{"data-precedence":t.precedence,precedence:null})}function zm(t,n,a,o){t.querySelector('link[rel="preload"][as="style"]['+n+"]")?o.loading=1:(n=t.createElement("link"),o.preload=n,n.addEventListener("load",function(){return o.loading|=1}),n.addEventListener("error",function(){return o.loading|=2}),ht(n,"link",a),st(n),t.head.appendChild(n))}function qo(t){return'[src="'+Vt(t)+'"]'}function Oe(t){return"script[async]"+t}function Kd(t,n,a){if(n.count++,n.instance===null)switch(n.type){case"style":var o=t.querySelector('style[data-href~="'+Vt(a.href)+'"]');if(o)return n.instance=o,st(o),o;var e=V({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return o=(t.ownerDocument||t).createElement("style"),st(o),ht(o,"style",e),wi(o,a.precedence,t),n.instance=o;case"stylesheet":e=yo(a.href);var i=t.querySelector(Me(e));if(i)return n.state.loading|=4,n.instance=i,st(i),i;o=Cg(a),(e=Jt.get(e))&&qu(o,e),i=(t.ownerDocument||t).createElement("link"),st(i);var l=i;return l._p=new Promise(function(r,c){l.onload=r,l.onerror=c}),ht(i,"link",o),n.state.loading|=4,wi(i,a.precedence,t),n.instance=i;case"script":return i=qo(a.src),(e=t.querySelector(Oe(i)))?(n.instance=e,st(e),e):(o=a,(e=Jt.get(i))&&(o=V({},a),Eu(o,e)),t=t.ownerDocument||t,e=t.createElement("script"),st(e),ht(e,"link",o),t.head.appendChild(e),n.instance=e);case"void":return null;default:throw Error(v(443,n.type))}else n.type==="stylesheet"&&(n.state.loading&4)===0&&(o=n.instance,n.state.loading|=4,wi(o,a.precedence,t));return n.instance}function wi(t,n,a){for(var o=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=o.length?o[o.length-1]:null,i=e,l=0;l title"):null)}function Sm(t,n,a){if(a===1||n.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof n.precedence!="string"||typeof n.href!="string"||n.href==="")break;return!0;case"link":if(typeof n.rel!="string"||typeof n.href!="string"||n.href===""||n.onLoad||n.onError)break;return n.rel==="stylesheet"?(t=n.disabled,typeof n.precedence=="string"&&t==null):!0;case"script":if(n.async&&typeof n.async!="function"&&typeof n.async!="symbol"&&!n.onLoad&&!n.onError&&n.src&&typeof n.src=="string")return!0}return!1}function Ng(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function $m(t,n,a,o){if(a.type==="stylesheet"&&(typeof o.media!="string"||matchMedia(o.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var e=yo(o.href),i=n.querySelector(Me(e));if(i){n=i._p,n!==null&&typeof n=="object"&&typeof n.then=="function"&&(t.count++,t=Wi.bind(t),n.then(t,t)),a.state.loading|=4,a.instance=i,st(i);return}i=n.ownerDocument||n,o=Cg(o),(e=Jt.get(e))&&qu(o,e),i=i.createElement("link"),st(i);var l=i;l._p=new Promise(function(r,c){l.onload=r,l.onerror=c}),ht(i,"link",o),a.instance=i}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,n),(n=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=Wi.bind(t),n.addEventListener("load",a),n.addEventListener("error",a))}}var Fr=0;function jm(t,n){return t.stylesheets&&t.count===0&&Si(t,t.stylesheets),0Fr?50:800)+n);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(o),clearTimeout(e)}}:null}function Wi(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Si(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var Ii=null;function Si(t,n){t.stylesheets=null,t.unsuspend!==null&&(t.count++,Ii=new Map,n.forEach(qm,t),Ii=null,Wi.call(t))}function qm(t,n){if(!(n.state.loading&4)){var a=Ii.get(t);if(a)var o=a.get(null);else{a=new Map,Ii.set(t,a);for(var e=t.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i{"use strict";function Zg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Zg)}catch(t){console.error(t)}}Zg(),Lg.exports=Vg()});var b=Q(mt()),e1=Q(Qg());function Ou(t){return t==="base"?"":t.split("+").map(n=>{let[a,o]=n.split(":");return o===void 0?`.${a}`:/^\d/.test(o)?`.${a}-${o}`:`.${o}`}).join("")}function vl(t,n){let a={...t,...n},o=[t.className,n.className].filter(Boolean).join(" ");o?a.className=o:delete a.className;let e=n.style&&t.style?{...t.style,...n.style}:n.style||t.style;return e?a.style=e:delete a.style,a}function rt(t,n,a,o){if(typeof t=="string"){let r=t,c=n??{className:""},s=a,g=c.className?`${r} ${c.className}`:r;s&&(g=`${g} ${s}`);let h=o&&c.style?{...c.style,...o}:o||c.style;return{...c,className:g,style:h}}let l=vl(t,typeof n=="string"?{className:n}:n??{});return typeof a=="string"?l=vl(l,{className:a}):a!=null&&(l=vl(l,{style:a})),o!=null&&(l=vl(l,{style:o})),l}function Be(...t){return n=>{let a=[];for(let o of t)if(typeof o=="function"){let e=o(n);typeof e=="function"&&a.push(e)}else o!=null&&(o.current=n);if(a.length>0)return()=>{for(let o of a)o()}}}var Ba=null,yl=new Map;function _m(){return Ba||(Ba=new ResizeObserver(t=>{for(let n of t){let a=yl.get(n.target);a&&a(n)}})),Ba}function Kg(t,n){yl.set(t,n),_m().observe(t),n({target:t})}function Jg(t){yl.delete(t),Ba&&(Ba.unobserve(t),yl.size===0&&(Ba.disconnect(),Ba=null))}var Cm={transparent:{r:0,g:0,b:0,a:0},black:{r:0,g:0,b:0,a:1},white:{r:255,g:255,b:255,a:1}},bl=(t,n,a)=>Math.max(n,Math.min(a,t));function Nm(t){return t.split("").map(n=>n+n).join("")}function Um(t){if(typeof t!="string")return null;let n=t.trim().replace(/^#/,""),a=n.length===3||n.length===4?Nm(n):n;return a.length!==6&&a.length!==8||!/^[0-9a-fA-F]+$/.test(a)?null:{r:parseInt(a.slice(0,2),16),g:parseInt(a.slice(2,4),16),b:parseInt(a.slice(4,6),16),a:a.length===8?parseInt(a.slice(6,8),16)/255:1}}function Hm(t){let n=t.indexOf("(");if(n===-1||!t.trim().endsWith(")"))return null;let o=t.slice(n+1,t.lastIndexOf(")")).replace(/\//g," ").split(/[\s,]+/).map(s=>s.trim()).filter(Boolean);if(o.length<3)return null;let e=s=>{let g=s.endsWith("%")?parseFloat(s)/100*255:parseFloat(s);return bl(g,0,255)},i=e(o[0]),l=e(o[1]),r=e(o[2]);if([i,l,r].some(Number.isNaN))return null;let c=1;if(o.length>=4){let s=o[3];if(c=s.endsWith("%")?parseFloat(s)/100:parseFloat(s),Number.isNaN(c))return null;c=bl(c,0,1)}return{r:i,g:l,b:r,a:c}}function Bu(t){let n=t.trim(),a=Cm[n.toLowerCase()];return a?{...a}:n.startsWith("#")?Um(n):/^rgba?\(/i.test(n)?Hm(n):null}function Ym(t,n,a){let o=e=>bl(Math.round(e),0,255).toString(16).padStart(2,"0").toUpperCase();return`#${o(t)}${o(n)}${o(a)}`}function Wg({r:t,g:n,b:a,a:o}){if(o>=1)return Ym(t,n,a);let e=i=>bl(Math.round(i),0,255);return`rgba(${e(t)}, ${e(n)}, ${e(a)}, ${parseFloat(o.toFixed(4))})`}var Ig=Q(_n(),1),Fm={base:{k1xSpc:"x3nfvp2",kGNEyG:"x6s0dn4",kjj79g:"xl56j7k",kOIVth:"xzye2dw",kZKoxP:"x1grt7ep",k8WAf4:"xt970qd",kg3NbH:"xf314gf",kaIpWk:"xjspbzw",kMv6JI:"xjb2p0i",kGuDYH:"x141an7d",kLWn49:"x1ltkj2j",k63SB2:"x1e4wzip",khDVqt:"xuxw1ft",$$css:!0}},Gm={neutral:{kWkggS:"x17x4s8c",kMwMTN:"x1tgivj0",$$css:!0},info:{kWkggS:"x1ewilqj",kMwMTN:"x17wrial",$$css:!0},success:{kWkggS:"xdsz4j9",kMwMTN:"xri61p4",$$css:!0},warning:{kWkggS:"x1q8g9m5",kMwMTN:"xrebv38",$$css:!0},error:{kWkggS:"x1pjz0fi",kMwMTN:"x1m024r3",$$css:!0},blue:{kWkggS:"x1o0wnni",kMwMTN:"x1vvqiwl",$$css:!0},cyan:{kWkggS:"x1rgj867",kMwMTN:"x1txnczv",$$css:!0},green:{kWkggS:"x1sqjeoo",kMwMTN:"xltfdvo",$$css:!0},orange:{kWkggS:"x1e9xt6e",kMwMTN:"xm47u9q",$$css:!0},pink:{kWkggS:"xnpoty2",kMwMTN:"xiuofww",$$css:!0},purple:{kWkggS:"x16i6n6f",kMwMTN:"x1m9wyeb",$$css:!0},red:{kWkggS:"x1cibrc5",kMwMTN:"x1joocv1",$$css:!0},teal:{kWkggS:"x1jtji5o",kMwMTN:"x9x0lbs",$$css:!0},yellow:{kWkggS:"x1bo7t0x",kMwMTN:"xdhq94a",$$css:!0}};function _e({variant:t="neutral",label:n,icon:a,xstyle:o,className:e,style:i,ref:l,...r}){return(0,Ig.jsxs)("span",{ref:l,...rt(ct("badge",{variant:t}),J(Fm.base,Gm[t],o),e,i),...r,children:[a,n]})}_e.displayName="Badge";var Tl=Q(mt(),1);var Sl=Q(mt(),1);var sa=Q(mt(),1);var Pg={"--color-syntax-keyword":"var(--color-text-accent)","--color-syntax-string":"var(--color-text-green)","--color-syntax-comment":"var(--color-text-secondary)","--color-syntax-number":"var(--color-text-orange)","--color-syntax-function":"var(--color-text-blue)","--color-syntax-type":"var(--color-text-purple)","--color-syntax-variable":"var(--color-text-primary)","--color-syntax-operator":"var(--color-text-cyan)","--color-syntax-constant":"var(--color-text-orange)","--color-syntax-tag":"var(--color-text-red)","--color-syntax-attribute":"var(--color-text-teal)","--color-syntax-property":"var(--color-text-cyan)","--color-syntax-punctuation":"var(--color-text-disabled)","--color-syntax-background":"var(--color-background-muted)"};var tp={"--color-data-categorical-blue":"light-dark(#0171E3, #0171E3)","--color-data-categorical-orange":"light-dark(#EB6E00, #EB6E00)","--color-data-categorical-purple":"light-dark(#6B1EFD, #6B1EFD)","--color-data-categorical-green":"light-dark(#0B991F, #0B991F)","--color-data-categorical-pink":"light-dark(#F351C0, #F351C0)","--color-data-categorical-cyan":"light-dark(#0171A4, #0171A4)","--color-data-categorical-red":"light-dark(#F5394F, #F5394F)","--color-data-categorical-teal":"light-dark(#08A3A3, #08A3A3)","--color-data-categorical-brown":"light-dark(#965E03, #965E03)","--color-data-categorical-indigo":"light-dark(#6F8AFF, #6F8AFF)","--color-data-neutral":"light-dark(#8494A3, #8C939B)","--color-data-blue-5":"light-dark(#02165E, #02165E)","--color-data-blue-4":"light-dark(#004CBC, #004CBC)","--color-data-blue-3":"light-dark(#2694FE, #2694FE)","--color-data-blue-2":"light-dark(#78BEFF, #78BEFF)","--color-data-blue-1":"light-dark(#DBECFF, #DBECFF)","--color-data-shamrock-5":"light-dark(#0B603D, #0B603D)","--color-data-shamrock-4":"light-dark(#138546, #138546)","--color-data-shamrock-3":"light-dark(#24BB5E, #24BB5E)","--color-data-shamrock-2":"light-dark(#8EF7AA, #8EF7AA)","--color-data-shamrock-1":"light-dark(#D6FEE4, #D6FEE4)","--color-data-orange-5":"light-dark(#A13F04, #A13F04)","--color-data-orange-4":"light-dark(#D66100, #D66100)","--color-data-orange-3":"light-dark(#FD9537, #FD9537)","--color-data-orange-2":"light-dark(#FDB876, #FDB876)","--color-data-orange-1":"light-dark(#FFE6CF, #FFE6CF)","--color-data-pink-5":"light-dark(#8E1073, #8E1073)","--color-data-pink-4":"light-dark(#D123A1, #D123A1)","--color-data-pink-3":"light-dark(#F989D3, #F989D3)","--color-data-pink-2":"light-dark(#FEADE3, #FEADE3)","--color-data-pink-1":"light-dark(#FCE3F4, #FCE3F4)","--color-data-purple-5":"light-dark(#3E0697, #3E0697)","--color-data-purple-4":"light-dark(#6B1EFD, #6B1EFD)","--color-data-purple-3":"light-dark(#9081FF, #9081FF)","--color-data-purple-2":"light-dark(#B3B0FE, #B3B0FE)","--color-data-purple-1":"light-dark(#E8E8FB, #E8E8FB)","--color-data-red-5":"light-dark(#9D0519, #9D0519)","--color-data-red-4":"light-dark(#D31130, #D31130)","--color-data-red-3":"light-dark(#FB7D87, #FB7D87)","--color-data-red-2":"light-dark(#FFB2B8, #FFB2B8)","--color-data-red-1":"light-dark(#FEE4E6, #FEE4E6)","--color-data-teal-5":"light-dark(#08767D, #08767D)","--color-data-teal-4":"light-dark(#0C9293, #0C9293)","--color-data-teal-3":"light-dark(#0DB7AF, #0DB7AF)","--color-data-teal-2":"light-dark(#6CE6D8, #6CE6D8)","--color-data-teal-1":"light-dark(#D7FCF8, #D7FCF8)","--color-data-yellow-5":"light-dark(#8A5001, #8A5001)","--color-data-yellow-4":"light-dark(#D69804, #D69804)","--color-data-yellow-3":"light-dark(#FBCE03, #FBCE03)","--color-data-yellow-2":"light-dark(#FCEC85, #FCEC85)","--color-data-yellow-1":"light-dark(#FDF6BA, #FDF6BA)","--color-data-gray-5":"light-dark(#25363F, #333338)","--color-data-gray-4":"light-dark(#5D6C7B, #666A72)","--color-data-gray-3":"light-dark(#AFB9C4, #B2B8BE)","--color-data-gray-2":"light-dark(#CCD3DB, #D0D3D6)","--color-data-gray-1":"light-dark(#F1F4F7, #F2F4F6)"};var np={...Pg,...tp};var Xm={banner:[{property:"borderRadius",vars:["--_banner-radius"]}],button:[{property:"borderRadius",vars:["--_button-radius"]}],card:[{property:"borderRadius",vars:["--_card-radius"]},{property:"padding",expand:"container"}],chat:[{property:"borderRadius",vars:["--_chat-composer-radius"]},{property:"padding",vars:["--_chat-composer-padding"]}],dialog:[{property:"borderRadius",vars:["--_dialog-radius"]},{property:"padding",expand:"container"}],"dropdown-menu":[{property:"borderRadius",vars:["--_dropdown-menu-radius"]},{property:"padding",vars:["--_dropdown-menu-padding"]}],field:[{property:"borderRadius",vars:["--_field-radius"]}],hovercard:[{property:"borderRadius",vars:["--_hovercard-radius"]}],popover:[{property:"borderRadius",vars:["--_popover-radius"]}],section:[{property:"padding",expand:"container"}],"segmented-control":[{property:"borderRadius",vars:["--_segmented-control-radius"]},{property:"padding",vars:["--_segmented-control-padding"]}]};function _u(t,n){let a=Xm[t];return a?a.filter(o=>o.property===n):[]}function op(t){return`[data-${Ge}-theme="${t}"]`}var ep=`[data-${Ge}-theme]`;function ap(t){return`[data-${Ge}-media="${t}"]`}function Ce(t,n){return`.${ds}-${t}${n}`}function ip(t,n){let a=[],o=0,e=0;for(let i=0;i`${i}${n}`).join(", ")}function wl(t){return t.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`)}var kl=new Set(["padding","paddingBlock","paddingInline","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd"]);function Rm(t){let n={};for(let[a,o]of t)switch(a){case"padding":{let e=o.trim().split(/\s+/);e.length===1?(n.blockStart=e[0],n.blockEnd=e[0],n.inline=e[0]):e.length===2?(n.blockStart=e[0],n.blockEnd=e[0],n.inline=e[1]):e.length>=3&&(n.blockStart=e[0],n.inline=e[1],n.blockEnd=e[2]);break}case"paddingBlock":{let e=o.trim().split(/\s+/);n.blockStart=e[0],n.blockEnd=e[1]??e[0];break}case"paddingInline":{let e=o.trim().split(/\s+/);e.length===1?n.inline=e[0]:(n.inlineStart=e[0],n.inlineEnd=e[1]);break}case"paddingBlockStart":n.blockStart=o;break;case"paddingBlockEnd":n.blockEnd=o;break;case"paddingInlineStart":n.inlineStart=o;break;case"paddingInlineEnd":n.inlineEnd=o;break}return n}function Vm(t,n){let a=fs(`${t}-padding`),o=[],e=n.inlineStart??n.inline,i=n.inlineEnd??n.inline;return e!=null&&i!=null&&e===i&&n.blockStart!=null&&n.blockEnd!=null&&e===n.blockStart&&n.blockStart===n.blockEnd?(o.push([a,e??""]),o):(n.inlineStart!=null||n.inlineEnd!=null?(e!=null&&o.push([`${a}-inline-start`,e]),i!=null&&o.push([`${a}-inline-end`,i])):n.inline!=null&&o.push([`${a}-inline`,n.inline]),n.blockStart!=null&&o.push([`${a}-block-start`,n.blockStart]),n.blockEnd!=null&&o.push([`${a}-block-end`,n.blockEnd]),o)}function lp(t){let n=[],a=t.tokens,o=i=>a[i]||`var(${i})`,e=Object.entries(a);if(e.length>0){let i=e.map(([l,r])=>` ${l}: ${r};`).join(` +`);n.push(` :scope { +${i} + }`)}return t.components&&Zm(t.components,n),Lm(o,n),Qm(t.components||{},n),n}function Zm(t,n){for(let[a,o]of Object.entries(t))for(let[e,i]of Object.entries(o)){let l=Object.entries(i);if(l.length===0)continue;let r=Ou(e),c=Ce(a,r),s=[],g=[];for(let[y,k]of l)y.startsWith(":")&&typeof k=="object"?g.push([y,k]):s.push([y,k]);let h=s,f=[],p=!1;for(let[y,k]of s){let S=_u(a,y),d=kl.has(y)&&y!=="padding"?_u(a,"padding"):[];for(let u of[...S,...d])if(u.expand==="container"&&kl.has(y)&&(p=!0),u.vars)for(let x of u.vars)f.push([x,k])}if(p){let y=s.filter(([u])=>kl.has(u)),k=s.filter(([u])=>!kl.has(u)),S=Rm(y),d=Vm(a,S);h=[...k,...d]}if(f.length>0&&(h=[...h,...f]),h.length>0){let y=h.map(([k,S])=>` ${wl(k)}: ${S};`).join(` +`);n.push(` ${c} { +${y} + }`)}for(let[y,k]of g){let S=Object.entries(k);if(S.length>0){let d=S.map(([u,x])=>` ${wl(u)}: ${x};`).join(` +`);n.push(` ${ip(c,y)} { +${d} + }`)}}}}function Lm(t,n){n.push(` :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-family-heading); + color: var(--color-text-primary); + }`);for(let a=1;a<=6;a++)n.push(` :where(h${a}) { + font-size: ${t(`--text-heading-${a}-size`)}; + font-weight: ${t(`--text-heading-${a}-weight`)}; + line-height: ${t(`--text-heading-${a}-leading`)}; + }`);n.push(` :where(p) { + font-family: var(--font-family-body); + font-size: ${t("--text-body-size")}; + font-weight: ${t("--text-body-weight")}; + line-height: ${t("--text-body-leading")}; + color: var(--color-text-primary); + }`),n.push(` :where(small) { + font-size: ${t("--text-supporting-size")}; + font-weight: ${t("--text-supporting-weight")}; + line-height: ${t("--text-supporting-leading")}; + color: var(--color-text-secondary); + }`),n.push(` :where(code, pre) { + font-family: var(--font-family-code); + font-size: ${t("--text-code-size")}; + line-height: ${t("--text-code-leading")}; + }`),n.push(` :where(hr) { + border: none; + border-top: 1px solid var(--color-border); + }`)}function Qm(t,n){let a={primary:"var(--color-text-primary)",secondary:"var(--color-text-secondary)",disabled:"var(--color-text-disabled)",placeholder:"var(--color-text-secondary)",accent:"var(--color-text-accent)"},o="text"in t,e="heading"in t,i="link"in t;if(o||e||i)for(let[l,r]of Object.entries(a))o&&n.push(` ${Ce("text",`.${l}`)} { color: ${r}; }`),e&&n.push(` ${Ce("heading",`.${l}`)} { color: ${r}; }`),i&&n.push(` ${Ce("link",`.${l}`)} { color: ${r}; }`)}function rp(t){let n=lp(t),a=[],o=[];for(let e of n)e.trimStart().startsWith(":where(")?a.push(e):o.push(e);return{component:o,prose:a}}function cp(t){let n=[],a=op(t.name);for(let e of["dark","light"]){let i=e==="dark"?t.__onDark:t.__onLight;if(!i)continue;let l=Object.entries(i.tokens);if(l.length>0){let r=l.map(([c,s])=>` ${c}: ${s};`).join(` +`);n.push(` ${ap(e)} { +${r} + }`)}if(i.components)for(let[r,c]of Object.entries(i.components))for(let[s,g]of Object.entries(c)){let h=Object.entries(g);if(h.length===0)continue;let f=Ou(s),p=`:is(${ap(e)}) :is(${Ce(r,f)})`,y=[],k=[];for(let[S,d]of h)S.startsWith(":")&&typeof d=="object"?k.push([S,d]):y.push([S,d]);if(y.length>0){let S=y.map(([d,u])=>` ${wl(d)}: ${u};`).join(` +`);n.push(` ${p} { +${S} + }`)}for(let[S,d]of k){let u=Object.entries(d);if(u.length>0){let x=u.map(([m,w])=>` ${wl(m)}: ${w};`).join(` +`);n.push(` ${ip(p,S)} { +${x} + }`)}}}}if(n.length===0)return"";let o=n.join(` + +`);return`@scope (${a}) to (${ep}) { +${o} +}`}function Cu(t){let{component:n,prose:a}=rp(t),o=op(t.name),e=ep,i="";if(a.length>0){let c=a.join(` + +`);i=`@scope (${o}) to (${e}) { +${c} +}`}let l="";if(n.length>0){let c=n.join(` + +`);l=`@scope (${o}) to (${e}) { +${c} +}`}let r=cp(t);return r&&(l=l?`${l} + +${r}`:r),{prose:i,component:l}}var Nu={...Fl,...Gl,...Rl,...Vl,...Zl,...Ll,...Kl,...Jl,...Wl,...Il,...Pl,...tr,...np};function Km(t){return`var(${t})`}var Dy=Object.fromEntries(Object.keys(Nu).map(t=>[t,Km(t)]));function Fu(t){let n=0,a=null,o=!1;for(let e=0;ef*w*r.a+p*q*c.a,d=S(r.r,c.r),u=S(r.g,c.g),x=S(r.b,c.b),m=k===0?{r:0,g:0,b:0}:{r:d/k,g:u/k,b:x/k};return Wg({...m,a:k*y})}function Hu(t){let n=t.indexOf("color-mix(");if(n===-1)return t;let a=n+9,o=dp(t,a);if(o===-1)return t;let e=Hu(t.slice(a+1,o)),l=Wm(e)??`color-mix(${e})`;return t.slice(0,n)+l+Hu(t.slice(o+1))}function Yu(t,n,a,o){let e=t.indexOf("var(");if(e===-1)return t;let i=e+3,l=dp(t,i);if(l===-1)return t;let r=t.slice(i+1,l),c=Fu(r),s=(c?c[0]:r).trim(),g=c?c[1]:null,h;o.has(s)?h=t.slice(e,l+1):s in n?(o.add(s),h=fp(s,n,a,o),o.delete(s)):g!==null?h=Yu(g.trim(),n,a,o):h=t.slice(e,l+1);let f=Yu(t.slice(l+1),n,a,o);return t.slice(0,e)+h+f}function Im(t,n,a,o){if(!t.includes("var(")&&!t.includes("color-mix("))return t;let e=Yu(t,n,a,o);return Hu(e)}function fp(t,n,a,o){if(t in a)return a[t];let e=n[t];if(e===void 0)return"";let i=Im(e,n,a,o);return a[t]=i,i}function sp(t){let n={};for(let a of Object.keys(t))fp(a,t,n,new Set);return n}function xp(t,n){let{mode:a}=n,o={};for(let[e,i]of Object.entries(Nu))o[e]=Uu(i,a);if(t==null)return sp(o);for(let[e,i]of Object.entries(t.tokens))o[e]=Uu(i,a);if(t.__inputTokens)for(let[e,i]of Object.entries(t.__inputTokens))i!==void 0&&(o[e]=Uu(i,a));return sp(o)}var Eo=Q(mt(),1);function gp(t,n=!1){let a=(0,Eo.useCallback)(i=>{let l=window.matchMedia(t);return l.addEventListener("change",i),()=>l.removeEventListener("change",i)},[t]),o=(0,Eo.useCallback)(()=>window.matchMedia(t).matches,[t]),e=(0,Eo.useCallback)(()=>n,[n]);return(0,Eo.useSyncExternalStore)(a,o,e)}var zl=(0,sa.createContext)(null);zl.displayName="ThemeContext";function Pm(){if(typeof document>"u")return null;let t=document.documentElement.getAttribute("data-theme");return t==="light"||t==="dark"?t:null}function tv(){return null}function nv(){return null}var Ue=new Set,Ne=null;function av(){for(let t of Ue)t()}function ov(t){return Ue.add(t),Ue.size===1&&typeof MutationObserver<"u"&&(Ne=new MutationObserver(av),Ne.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]})),()=>{Ue.delete(t),Ue.size===0&&Ne&&(Ne.disconnect(),Ne=null)}}function ev(){return()=>{}}function iv(t){return(0,sa.useSyncExternalStore)(t?ev:ov,t?nv:Pm,tv)}function pp(){let t=(0,sa.use)(zl),n=iv(t!=null),a=gp("(prefers-color-scheme: dark)"),o=t?.mode??n??"system",e=t?.theme??null,i=o==="system"?a?"dark":"light":o,l=(0,sa.useMemo)(()=>xp(e,{mode:i}),[e,i]),r=c=>l[c]??"";return{name:e?.name??"default",mode:i,token:r,tokens:l}}var To=Q(mt(),1);var hp={primary:{kMwMTN:"x1tgivj0",$$css:!0},secondary:{kMwMTN:"xv1l7n4",$$css:!0},disabled:{kMwMTN:"xnbbluu",$$css:!0},placeholder:{kMwMTN:"xv1l7n4",$$css:!0},accent:{kMwMTN:"xjse4m1",$$css:!0},inherit:{kMwMTN:"x1heor9g",$$css:!0}},mp={normal:{k63SB2:"x1sodnla",$$css:!0},medium:{k63SB2:"x1e4wzip",$$css:!0},semibold:{k63SB2:"x2mo6ok",$$css:!0},bold:{k63SB2:"x1lvx875",$$css:!0}},vp={body:{k63SB2:"xxovm9e",$$css:!0},large:{k63SB2:"x149oux8",$$css:!0},label:{k63SB2:"xmhvcl5",$$css:!0},code:{k63SB2:"xx3eeay",$$css:!0},supporting:{k63SB2:"xv8on6e",$$css:!0},"display-1":{k63SB2:"x1txul5o",$$css:!0},"display-2":{k63SB2:"x1y36c3f",$$css:!0},"display-3":{k63SB2:"x1on40hk",$$css:!0},inherit:{k63SB2:"x1pd3egz",$$css:!0}},Gu={body:{kGuDYH:"xjm74w1",kLWn49:"xw6l6zx",$$css:!0},large:{kGuDYH:"x18juvz8",kLWn49:"xf74fhv",$$css:!0},label:{kGuDYH:"xcr08ib",kLWn49:"x1kq96og",$$css:!0},code:{kGuDYH:"xp03k98",kLWn49:"x17iicif",kMv6JI:"x9m5x89",$$css:!0},supporting:{kGuDYH:"x141an7d",kLWn49:"x1ltkj2j",$$css:!0},"display-1":{kGuDYH:"xsub3ws",kLWn49:"x112ttwr",$$css:!0},"display-2":{kGuDYH:"x1yego12",kLWn49:"xh0iwvy",$$css:!0},"display-3":{kGuDYH:"xlgnzhf",kLWn49:"x1ujwuaq",$$css:!0},inherit:{kGuDYH:"x1qlqyl8",kLWn49:"x15bjb6t",$$css:!0}},yp={"4xs":{kGuDYH:"xxc45ev",$$css:!0},"3xs":{kGuDYH:"x10p7juq",$$css:!0},"2xs":{kGuDYH:"x16a80zy",$$css:!0},xsm:{kGuDYH:"x51wmvv",$$css:!0},sm:{kGuDYH:"x1eqnyfr",$$css:!0},base:{kGuDYH:"x1j29vfg",$$css:!0},lg:{kGuDYH:"xc7cgfe",$$css:!0},xl:{kGuDYH:"x1wqms48",$$css:!0},"2xl":{kGuDYH:"xhs0kqb",$$css:!0},"3xl":{kGuDYH:"x10srzze",$$css:!0},"4xl":{kGuDYH:"xqcvi3d",$$css:!0}};var bp={inline:{k1xSpc:"xt0psk2",$$css:!0},block:{k1xSpc:"x1lliihq",$$css:!0}},Xu={singleLine:{kVQacm:"xb3r6kr",kg5iWk:"xlyipyv",khDVqt:"xuxw1ft",k1xSpc:"x1lliihq",$$css:!0},multiLine:{kVQacm:"xb3r6kr",k1xSpc:"x104kibb",kgKLqz:"x1ua5tub",$$css:!0}},kp={"break-word":{kTgw9:"x1lldw8n",kHjlTd:"x1mzt3pk",$$css:!0},"break-all":{kTgw9:"x1yn0g08",$$css:!0}},wp={wrap:{kN2L0X:"xk4td0m",$$css:!0},nowrap:{kN2L0X:"xebhuq6",$$css:!0},balance:{kN2L0X:"x1w2vvpw",$$css:!0},pretty:{kN2L0X:"x1fzhlzt",$$css:!0}},zp={enabled:{kxwWH2:"x1b2iylo",kzeHkT:"xwgcxoh",k1xSpc:"x1lliihq",$$css:!0}},Sp={strikethrough:{kybGjl:"xmqliwb",$$css:!0}},$p={enabled:{kcqcaj:"xss6m8b",$$css:!0}},jp={start:{k9WMMc:"x1yc453h",$$css:!0},center:{k9WMMc:"x2b8uid",$$css:!0},end:{k9WMMc:"xp4054r",$$css:!0}},qp={content:{ks0D6T:"xw5ewwj",kTgw9:"x13faqbe",$$css:!0}};var da=Q(mt(),1);function Ep(t){let{maxLines:n}=t,[a,o]=(0,da.useState)(!1),[e,i]=(0,da.useState)(""),l=(0,da.useRef)(null),r=(0,da.useCallback)(s=>{if(n===0){o(!1);return}if(i(s.textContent??""),n===1)o(s.scrollWidth>s.offsetWidth);else{let g=s.scrollHeight;try{let h=document.createRange();h.selectNodeContents(s),g=h.getBoundingClientRect().height,h.detach()}catch{}o(g>s.offsetHeight)}},[n]);return{ref:(0,da.useCallback)(s=>{l.current&&Jg(l.current),l.current=s,s&&n>0?typeof ResizeObserver<"u"?Kg(s,()=>{r(s)}):r(s):(o(!1),i(""))},[n,r]),isTruncated:a,fullText:e}}var On=Q(_n(),1),lv=(0,To.lazy)(async()=>import("./launch-control-chunks/Tooltip-2W65UMVO.js").then(t=>({default:t.Tooltip}))),rv={body:"primary",large:"primary",label:"primary",supporting:"secondary",code:"primary","display-1":"primary","display-2":"primary","display-3":"primary",inherit:"inherit"};function cv(t){return t in Gu?t:"body"}function Ru({type:t="body",size:n,color:a,weight:o,display:e="inline",maxLines:i=0,hasTruncateTooltip:l=!0,wordBreak:r,textWrap:c,justify:s="start",hasCapsize:g=!1,hasStrikethrough:h=!1,hasTabularNumbers:f=!1,xstyle:p,className:y,style:k,as:S="span",children:d,ref:u,...x}){let m=a??rv[t]??"primary",w=cv(t),q=r??(i===1?"break-all":"break-word"),z=i>0||g?"block":e,$=Ep({maxLines:i}),T=typeof l=="string"?l:"above",E=i>0&&l!==!1&&$.isTruncated,K=(0,To.useRef)(null),nn=i>1?{WebkitLineClamp:i}:void 0;return(0,On.jsxs)(On.Fragment,{children:[(0,On.jsx)(S,{ref:Be(u,$.ref,K),...rt(ct("text",{type:t,size:n,color:m}),J(hp[m],Gu[w],n&&yp[n],vp[w],o&&mp[o],i===1?Xu.singleLine:i>1?Xu.multiLine:bp[z],i>0&&kp[q],c&&wp[c],s!=="start"&&jp[s],g&&zp.enabled,h&&Sp.strikethrough,f&&$p.enabled,p),y,{...k,...nn}),title:E?$.fullText:void 0,...x,children:d}),E&&(0,On.jsx)(To.Suspense,{fallback:null,children:(0,On.jsx)(lv,{anchorRef:K,content:(0,On.jsx)("span",{...J(qp.content),children:$.fullText}),placement:T})})]})}Ru.displayName="Text";var Ao=Q(_n(),1),uv=.75,Tp=1.5,Ap={sm:{diameter:10,border:2},md:{diameter:14,border:3},lg:{diameter:18,border:3},xl:{diameter:28,border:4}};var Dp={wrapper:{k1xSpc:"x3nfvp2",kXwgrk:"xdt5ytf",kGNEyG:"x6s0dn4",kOIVth:"x1txdalj",$$css:!0},spinner:{k1xSpc:"xwz0xwf",kgQiWS:"x1ku5rj1",kVQacm:"xb3r6kr",kXLuUW:"xxymvpz",$$css:!0}};function $l({size:t="md",shade:n="default",label:a,xstyle:o,className:e,style:i,"aria-label":l,"data-testid":r,ref:c,...s}){let g=(0,Sl.useRef)(null),{tokens:h}=pp();(0,Sl.useEffect)(()=>{let u=g.current;if(u==null)return;let x=u.getContext("2d");if(!x)return;let{border:m,diameter:w}=Ap[t],q=window.devicePixelRatio||1,z=n==="inherit"?getComputedStyle(u).color:null,$=n==="inherit"?z:n==="onMedia"?h["--color-on-dark"]:n==="subtle"?h["--color-text-secondary"]:h["--color-accent"],T=n==="inherit"?z:n==="onMedia"?`${h["--color-on-dark"]}4D`:h["--color-track"],E=w+m*2,K=Math.round(E*q),nn=K+K%2,He=nn/E,Bn=w/2*He,Hl=m*He;u.height=u.width=nn,u.style.width=u.style.height=E+"px",x.lineCap="round",x.lineWidth=Hl;let xa=nn/2;x.beginPath(),x.arc(xa,xa,Bn,0,2*Math.PI),x.strokeStyle=T,n==="inherit"&&(x.globalAlpha=.3),x.stroke(),x.globalAlpha=1,x.beginPath(),x.arc(xa,xa,Bn,Tp*Math.PI,(Tp+uv)%2*Math.PI),x.strokeStyle=$,x.stroke()},[n,t,h]);let{border:f,diameter:p}=Ap[t],y=p+f*2,k=a!=null,d=(0,Ao.jsx)("span",{ref:k?void 0:c,role:"status","aria-label":l??(typeof a=="string"?a:void 0)??"Loading","data-testid":k?void 0:r,...k?{}:s,...rt(k?"":ct("spinner",{size:t,shade:n}),J(Dp.spinner,!k&&o),k?void 0:e,{...k?{}:i,width:y,height:y}),children:(0,Ao.jsx)("canvas",{ref:g,className:"xlp1x4z x1lliihq x1so62im x14qxm4i xnh0sag xa4qsjk x1ka1v4i x1esw782"})});return k?(0,Ao.jsxs)("div",{ref:c,"data-testid":r,...s,...rt(ct("spinner",{size:t,shade:n}),J(Dp.wrapper,o),e,i),children:[d,typeof a=="string"?(0,Ao.jsx)(Ru,{type:"body",weight:"bold",children:a}):a]}):d}$l.displayName="Spinner";var Mp=Q(mt(),1);function Do({children:t,as:n="span",ref:a,...o}){return(0,Mp.createElement)(n,{ref:a,...o,className:"x10l6tqk x1i1rx1s xjm9jq1 xkdpibf x1717udv xb3r6kr xzpqnlu xuxw1ft xng3xce x13vifvy x1o0tod x47corl x87ps6o"},t)}Do.displayName="VisuallyHidden";var Op="data-astryx-edge-comp";var jl=Q(mt(),1),Vu=(0,jl.createContext)(null);Vu.displayName="SizeContext";function Bp(t,n="md"){let a=(0,jl.use)(Vu);return t??a??n}var x0=Vu.Provider;var ql=Q(mt(),1),_p=(0,ql.createContext)(null);_p.displayName="ButtonGroupContext";function Cp(){return(0,ql.use)(_p)}var Mo=Q(mt(),1);var Np=Q(mt(),1),Zu=(0,Np.createContext)(null);Zu.displayName="LinkContext";function sv(t){function n({href:a,ref:o,...e}){return(0,Mo.createElement)(t,{ref:o,href:a,to:a,...e})}return n.displayName=`LinkWithTo(${typeof t=="string"?t:t.displayName||t.name||"Component"})`,n}function Up(t){let n=(0,Mo.use)(Zu),a=t??n?.component??"a";return(0,Mo.useMemo)(()=>a==="a"?"a":sv(a),[a])}var yt=Q(_n(),1),fa={base:{kVAEAm:"x1n2onr6",k1xSpc:"x3nfvp2",kGNEyG:"x6s0dn4",kjj79g:"xl56j7k",kOIVth:"x1txdalj",k8WAf4:"xce4md1",kg3NbH:"xrrkdod",kMzoRj:"xc342km",ksu8eU:"xng3xce",kaIpWk:"x1jxw6zd",kMv6JI:"xjb2p0i",kGuDYH:"xcr08ib",kLWn49:"x1kq96og",k63SB2:"x1e4wzip",khDVqt:"xuxw1ft",kkrTdU:"x1ypdohk",k1ekBW:"xrafxwg",kIyJzY:"xuedmi6 x12w9bfk",kAMwcw:"xlr8y92",$$css:!0},pressable:{k3aq6I:"x3oybdh xk4oym4",$$css:!0},disabled:{kkrTdU:"x1h6gzvc",kSiTet:"xbyyjgo",kKwaWg:"x18o3ruo",k3aq6I:"x1c071of x1pdlv7q",$$css:!0},ariaDisabled:{kKwaWg:"x18o3ruo x8o3jvd xuqm82a",$$css:!0},iconOnly:{"--button-icon-only-aspect":"x1v15ycx",kOBAk4:"xioom0i",kg3NbH:"xnjsko4",k8WAf4:"xt970qd",$$css:!0},iconWrapper:{k1xSpc:"x3nfvp2",kGNEyG:"x6s0dn4",kjj79g:"xl56j7k",kmuXW:"x2lah0s",$$css:!0},contentWrapper:{k1xSpc:"xjp7ctv",$$css:!0},link:{kybGjl:"x1hl2dhg",$$css:!0}},dv={sm:{kZKoxP:"x6k0iem",$$css:!0},md:{kZKoxP:"x1ueg155",$$css:!0},lg:{kZKoxP:"xssyfek",$$css:!0}},fv={sm:{kzqmXN:"x1kky2od",kZKoxP:"xlup9mm",kGuDYH:"x1j61zf2",$$css:!0},md:{kzqmXN:"x1kky2od",kZKoxP:"xlup9mm",kGuDYH:"x1j61zf2",$$css:!0},lg:{kzqmXN:"xw4jnvo",kZKoxP:"x1qx5ct2",kGuDYH:"xwsyq91",$$css:!0}},xv={primary:{kWkggS:"x1ewilqj",kMwMTN:"x17wrial",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x17nn4n9","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0},secondary:{kWkggS:"x17x4s8c",kMwMTN:"x1tgivj0",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x17nn4n9","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0},ghost:{kWkggS:"xjbqb8w",kMwMTN:"x1tgivj0",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x17nn4n9","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0},destructive:{kWkggS:"x1pjz0fi",kMwMTN:"x1m024r3",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x1p73he7","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0}};var U0=Ql["--duration-medium-min"],Hp={hiddenContent:{kMwMTN:"x19co3pv",$$css:!0},hiddenContentDelayed:{kKVMdj:"x1ffowhz",k44tkh:"xjlvqhv",kWV6AL:"x10e4vud",kKxzle:"x17yabm6 x14q22ui",$$css:!0}},El={horizontal:{krdFHd:"x15mokao x8eehn2",kVL7Gh:"xbiv7yw x1xrp5p4",kfmiAY:"x1ga7v0g x11xp8u1",kT0f0o:"x16uus16 x747jw7",k2ei4v:"xgbv0en x1pjv70x",kVhnKS:"x1t7ytsu xyf0ibl",kGJrpR:"x1j92z86",$$css:!0},vertical:{krdFHd:"x15mokao x8eehn2",kfmiAY:"x1ga7v0g x2qxyot",kVL7Gh:"xbiv7yw x1yp72r9",kT0f0o:"x16uus16 x747jw7",kEafiO:"x11xkdxz x1g31smg",kPef9Z:"x13fuv20 x1d9v4yf",kLZC3w:"x1pc3f07",$$css:!0},onSolidHorizontal:{kGJrpR:"xrvmtm5",$$css:!0},onSolidVertical:{kLZC3w:"x11npmm7",$$css:!0}};function Al({label:t,variant:n="secondary",size:a,type:o="button",isDisabled:e=!1,isLoading:i=!1,isInterruptible:l=!1,clickAction:r,icon:c,isIconOnly:s=!1,children:g,endContent:h,tooltip:f,href:p,as:y,target:k,rel:S,xstyle:d,className:u,style:x,ref:m,...w}){let q=Bp(a,"md"),z=Cp(),[$,T]=(0,Tl.useTransition)(),E=(0,Tl.useRef)(!1),K=i||$,nn=$||l,He=z?.isDisabled??!1,Bn=e||He||K&&!l,Hl=Up(y),xa=p!=null&&!Bn,Ye=f!=null&&Bn,Yl=xs({placement:"above",isEnabled:f!=null}),os=fn=>{if(Bn||E.current&&!l){fn.preventDefault();return}w.onClick?.(fn),r&&!fn.defaultPrevented&&(E.current=!0,T(async()=>{try{await r(fn)}finally{E.current=!1}}))},es=Ye?fn=>{fn.key==="Enter"||fn.key===" "?fn.preventDefault():w.onKeyDown?.(fn)}:void 0,is=n==="ghost"?{[Op]:""}:null,i1=J(fa.base,dv[q],xv[n],s&&fa.iconOnly,Bn&&fa.disabled,Ye&&fa.ariaDisabled,xa&&fa.link,!z&&fa.pressable,z&&(z.orientation==="horizontal"?El.horizontal:El.vertical),z&&(n==="primary"||n==="destructive")&&(z.orientation==="horizontal"?El.onSolidHorizontal:El.onSolidVertical),d),ls=rt(ct("button",{variant:n,size:q}),i1,u,x),rs=(0,yt.jsxs)(yt.Fragment,{children:[K&&(0,yt.jsx)("span",{...{0:{className:"x10l6tqk x13vifvy xu96u03 x3m8u43 x1ey2m1c xrvj5dj x1ku5rj1"},1:{className:"x10l6tqk x13vifvy xu96u03 x3m8u43 x1ey2m1c xrvj5dj x1ku5rj1 xqcmdr3 xb2rp9n xskzprw x17yabm6 x14q22ui"}}[!!nn<<0],"aria-hidden":"true",children:(0,yt.jsx)($l,{size:"sm",shade:"inherit"})}),(0,yt.jsxs)("span",{...J(fa.contentWrapper,K&&(nn?Hp.hiddenContentDelayed:Hp.hiddenContent)),"aria-hidden":K||void 0,children:[c&&(0,yt.jsx)("span",{...J(fa.iconWrapper,fv[q]),children:c}),s?null:(0,yt.jsx)("span",{className:"xb3r6kr xlyipyv xeuugli",children:g??t}),!s&&h&&(0,yt.jsx)("span",{className:"x3nfvp2 x6s0dn4 x1heor9g",children:h})]}),(0,yt.jsx)(Do,{role:"status","aria-live":"polite",children:K?"Loading":""})]}),cs=s&&t!==""||K&&!s||g!=null&&g!==t?{"aria-label":t}:null,us=f!=null?{"aria-describedby":[w["aria-describedby"],Yl.describedBy].filter(Boolean).join(" ")||void 0}:null,ss=Be(m,f!=null?Yl.ref:void 0),Fe;return xa?Fe=(0,yt.jsx)(Hl,{ref:ss,href:p,target:k,rel:S,...ls,...w,...cs,...us,...is,onClick:os,children:rs}):Fe=(0,yt.jsx)("button",{ref:ss,type:o,disabled:Ye?void 0:Bn,...ls,...w,...cs,...us,...is,"aria-busy":K||void 0,"aria-disabled":Ye||void 0,onClick:os,...es?{onKeyDown:es}:null,children:rs}),f?(0,yt.jsxs)(yt.Fragment,{children:[Fe,Yl.renderTooltip(f)]}):Fe}Al.displayName="Button";var Yp={container:{kB7OPa:"x9f619",kZCmMZ:"x1c35znw",kwRFfy:"x64h4k7",kLKAdn:"x14m0hsi",kGO01o:"xc1wllq",$$css:!0}},Lu=Xl["--spacing-4"],Qu=`var(--astryx-card-padding, ${Lu})`,Fp=`var(--astryx-card-padding-inline, ${Qu})`,R0=`var(--astryx-card-padding-inline-start, ${Fp})`,V0=`var(--astryx-card-padding-inline-end, ${Fp})`,Z0=`var(--astryx-card-padding-block-start, ${Qu})`,L0=`var(--astryx-card-padding-block-end, ${Qu})`,Ku=`var(--astryx-section-padding, ${Lu})`,Gp=`var(--astryx-section-padding-inline, ${Ku})`,Q0=`var(--astryx-section-padding-inline-start, ${Gp})`,K0=`var(--astryx-section-padding-inline-end, ${Gp})`,J0=`var(--astryx-section-padding-block-start, ${Ku})`,W0=`var(--astryx-section-padding-block-end, ${Ku})`,Ju=`var(--astryx-dialog-padding, ${Lu})`,Xp=`var(--astryx-dialog-padding-inline, ${Ju})`,I0=`var(--astryx-dialog-padding-inline-start, ${Xp})`,P0=`var(--astryx-dialog-padding-inline-end, ${Xp})`,tb=`var(--astryx-dialog-padding-block-start, ${Ju})`,nb=`var(--astryx-dialog-padding-block-end, ${Ju})`,gv={containerPaddingInlineStart:{"--container-padding-inline-start":"xjmlhfd",$$css:!0},containerPaddingInlineEnd:{"--container-padding-inline-end":"x1ihxwbr",$$css:!0},containerPaddingBlockStart:{"--container-padding-block-start":"x1rqz8me",$$css:!0},containerPaddingBlockEnd:{"--container-padding-block-end":"x1omyuck",$$css:!0},layoutPaddingOuterX:{"--layout-padding-outer-x":"x14rzhog",$$css:!0},layoutPaddingOuterY:{"--layout-padding-outer-y":"xjej9fs",$$css:!0},layoutPaddingInnerX:{"--layout-padding-inner-x":"x4poyjn",$$css:!0},layoutPaddingInnerY:{"--layout-padding-inner-y":"x1u1kw4e",$$css:!0}},pv={containerPaddingInlineStart:{"--container-padding-inline-start":"xrgx2ny",$$css:!0},containerPaddingInlineEnd:{"--container-padding-inline-end":"xyk0j9o",$$css:!0},containerPaddingBlockStart:{"--container-padding-block-start":"x876hks",$$css:!0},containerPaddingBlockEnd:{"--container-padding-block-end":"x1u89lk7",$$css:!0},layoutPaddingOuterX:{"--layout-padding-outer-x":"x12sptzx",$$css:!0},layoutPaddingOuterY:{"--layout-padding-outer-y":"xo78phr",$$css:!0},layoutPaddingInnerX:{"--layout-padding-inner-x":"x1we69p7",$$css:!0},layoutPaddingInnerY:{"--layout-padding-inner-y":"xsdnkbz",$$css:!0}},hv={containerPaddingInlineStart:{"--container-padding-inline-start":"x1tewnwq",$$css:!0},containerPaddingInlineEnd:{"--container-padding-inline-end":"x11h1f2o",$$css:!0},containerPaddingBlockStart:{"--container-padding-block-start":"x1g2kccc",$$css:!0},containerPaddingBlockEnd:{"--container-padding-block-end":"x1gvthzm",$$css:!0},layoutPaddingOuterX:{"--layout-padding-outer-x":"x1hsjncj",$$css:!0},layoutPaddingOuterY:{"--layout-padding-outer-y":"x1pui4bz",$$css:!0},layoutPaddingInnerX:{"--layout-padding-inner-x":"x2so38",$$css:!0},layoutPaddingInnerY:{"--layout-padding-inner-y":"xinu7xd",$$css:!0}},mv={card:gv,section:pv,dialog:hv},vv={spacing0:{"--container-padding-inline-start":"x1gu2k80",$$css:!0},spacing0_5:{"--container-padding-inline-start":"x14ws0sr",$$css:!0},spacing1:{"--container-padding-inline-start":"x1cvlban",$$css:!0},spacing1_5:{"--container-padding-inline-start":"x176g23i",$$css:!0},spacing2:{"--container-padding-inline-start":"x1xlrr2o",$$css:!0},spacing3:{"--container-padding-inline-start":"xfdwxua",$$css:!0},spacing4:{"--container-padding-inline-start":"x1dlhslv",$$css:!0},spacing5:{"--container-padding-inline-start":"x1s81nki",$$css:!0},spacing6:{"--container-padding-inline-start":"x1ep0dkj",$$css:!0},spacing7:{"--container-padding-inline-start":"x157xojc",$$css:!0},spacing8:{"--container-padding-inline-start":"xw1diwv",$$css:!0},spacing9:{"--container-padding-inline-start":"xraca2a",$$css:!0},spacing10:{"--container-padding-inline-start":"xserb3f",$$css:!0},spacing11:{"--container-padding-inline-start":"xziclwo",$$css:!0},spacing12:{"--container-padding-inline-start":"x1iiwihq",$$css:!0}},yv={spacing0:{"--container-padding-inline-end":"x91ghl5",$$css:!0},spacing0_5:{"--container-padding-inline-end":"x1wz3t3y",$$css:!0},spacing1:{"--container-padding-inline-end":"x2oyxnl",$$css:!0},spacing1_5:{"--container-padding-inline-end":"xntetml",$$css:!0},spacing2:{"--container-padding-inline-end":"xcas3b9",$$css:!0},spacing3:{"--container-padding-inline-end":"xu0ipoa",$$css:!0},spacing4:{"--container-padding-inline-end":"xs0pscg",$$css:!0},spacing5:{"--container-padding-inline-end":"xgkj7vj",$$css:!0},spacing6:{"--container-padding-inline-end":"x94cj42",$$css:!0},spacing7:{"--container-padding-inline-end":"x11tj35w",$$css:!0},spacing8:{"--container-padding-inline-end":"x1b9k1pi",$$css:!0},spacing9:{"--container-padding-inline-end":"x19w02kr",$$css:!0},spacing10:{"--container-padding-inline-end":"xx5lg5w",$$css:!0},spacing11:{"--container-padding-inline-end":"x1nmgbqg",$$css:!0},spacing12:{"--container-padding-inline-end":"x1wsfsk2",$$css:!0}},bv={spacing0:{"--container-padding-block-start":"x1i3qcxz",$$css:!0},spacing0_5:{"--container-padding-block-start":"xvdf9ev",$$css:!0},spacing1:{"--container-padding-block-start":"xnsckjb",$$css:!0},spacing1_5:{"--container-padding-block-start":"x1kbx601",$$css:!0},spacing2:{"--container-padding-block-start":"xa8b4fq",$$css:!0},spacing3:{"--container-padding-block-start":"x11k4f5r",$$css:!0},spacing4:{"--container-padding-block-start":"xm01sq8",$$css:!0},spacing5:{"--container-padding-block-start":"xp8wdkl",$$css:!0},spacing6:{"--container-padding-block-start":"x1hmud4d",$$css:!0},spacing7:{"--container-padding-block-start":"x1c00sag",$$css:!0},spacing8:{"--container-padding-block-start":"xfv60at",$$css:!0},spacing9:{"--container-padding-block-start":"x14fzdu7",$$css:!0},spacing10:{"--container-padding-block-start":"x17h9kl7",$$css:!0},spacing11:{"--container-padding-block-start":"x1rdjxae",$$css:!0},spacing12:{"--container-padding-block-start":"xecwdl6",$$css:!0}},kv={spacing0:{"--container-padding-block-end":"xkunwnr",$$css:!0},spacing0_5:{"--container-padding-block-end":"x1cao3zv",$$css:!0},spacing1:{"--container-padding-block-end":"x57a7ii",$$css:!0},spacing1_5:{"--container-padding-block-end":"xv53x8y",$$css:!0},spacing2:{"--container-padding-block-end":"x1lsgcmx",$$css:!0},spacing3:{"--container-padding-block-end":"x1q3ppug",$$css:!0},spacing4:{"--container-padding-block-end":"x4hfsld",$$css:!0},spacing5:{"--container-padding-block-end":"xbib2ws",$$css:!0},spacing6:{"--container-padding-block-end":"x1q8d17g",$$css:!0},spacing7:{"--container-padding-block-end":"x1yqogew",$$css:!0},spacing8:{"--container-padding-block-end":"x8lgq76",$$css:!0},spacing9:{"--container-padding-block-end":"x1f7f9rt",$$css:!0},spacing10:{"--container-padding-block-end":"x15vxphk",$$css:!0},spacing11:{"--container-padding-block-end":"x4bg2x9",$$css:!0},spacing12:{"--container-padding-block-end":"x186mjxr",$$css:!0}},wv={spacing0:{"--layout-padding-outer-x":"xswhm3q",$$css:!0},spacing0_5:{"--layout-padding-outer-x":"xihiwg7",$$css:!0},spacing1:{"--layout-padding-outer-x":"xc96xmq",$$css:!0},spacing1_5:{"--layout-padding-outer-x":"x1u93lgd",$$css:!0},spacing2:{"--layout-padding-outer-x":"x15dxnc0",$$css:!0},spacing3:{"--layout-padding-outer-x":"xadgj3j",$$css:!0},spacing4:{"--layout-padding-outer-x":"x1v56qcf",$$css:!0},spacing5:{"--layout-padding-outer-x":"x1nzs0gl",$$css:!0},spacing6:{"--layout-padding-outer-x":"x1c3n52a",$$css:!0},spacing7:{"--layout-padding-outer-x":"x1gfiokx",$$css:!0},spacing8:{"--layout-padding-outer-x":"x1t3kfz",$$css:!0},spacing9:{"--layout-padding-outer-x":"xzr4qsh",$$css:!0},spacing10:{"--layout-padding-outer-x":"x1jdf5a4",$$css:!0},spacing11:{"--layout-padding-outer-x":"x1hct0t0",$$css:!0},spacing12:{"--layout-padding-outer-x":"x11cyqoe",$$css:!0}},zv={spacing0:{"--layout-padding-outer-y":"x1mzf5mb",$$css:!0},spacing0_5:{"--layout-padding-outer-y":"x1vj96e0",$$css:!0},spacing1:{"--layout-padding-outer-y":"x1gpfxoh",$$css:!0},spacing1_5:{"--layout-padding-outer-y":"xd3dqby",$$css:!0},spacing2:{"--layout-padding-outer-y":"x10pz7y9",$$css:!0},spacing3:{"--layout-padding-outer-y":"x1p6yq3h",$$css:!0},spacing4:{"--layout-padding-outer-y":"xx738ci",$$css:!0},spacing5:{"--layout-padding-outer-y":"x6yxws5",$$css:!0},spacing6:{"--layout-padding-outer-y":"x180vrwl",$$css:!0},spacing7:{"--layout-padding-outer-y":"x1q6rme1",$$css:!0},spacing8:{"--layout-padding-outer-y":"xid7e43",$$css:!0},spacing9:{"--layout-padding-outer-y":"x1t5kicu",$$css:!0},spacing10:{"--layout-padding-outer-y":"x26l4wa",$$css:!0},spacing11:{"--layout-padding-outer-y":"x10zktp0",$$css:!0},spacing12:{"--layout-padding-outer-y":"x1yz3n6a",$$css:!0}},Sv={spacing0:{"--layout-padding-inner-x":"xj1bl4l",$$css:!0},spacing0_5:{"--layout-padding-inner-x":"xlriy2h",$$css:!0},spacing1:{"--layout-padding-inner-x":"x6uuyak",$$css:!0},spacing1_5:{"--layout-padding-inner-x":"xd38f90",$$css:!0},spacing2:{"--layout-padding-inner-x":"xxqksqd",$$css:!0},spacing3:{"--layout-padding-inner-x":"x1fyui2f",$$css:!0},spacing4:{"--layout-padding-inner-x":"x1i2ajwi",$$css:!0},spacing5:{"--layout-padding-inner-x":"x1tac27u",$$css:!0},spacing6:{"--layout-padding-inner-x":"x1ntgf3t",$$css:!0},spacing7:{"--layout-padding-inner-x":"xhjd9tl",$$css:!0},spacing8:{"--layout-padding-inner-x":"xn7c84u",$$css:!0},spacing9:{"--layout-padding-inner-x":"xeqkbsz",$$css:!0},spacing10:{"--layout-padding-inner-x":"x1vf4qco",$$css:!0},spacing11:{"--layout-padding-inner-x":"xsmamsf",$$css:!0},spacing12:{"--layout-padding-inner-x":"x2xk2xj",$$css:!0}},$v={spacing0:{"--layout-padding-inner-y":"xwuefyo",$$css:!0},spacing0_5:{"--layout-padding-inner-y":"x180h0y5",$$css:!0},spacing1:{"--layout-padding-inner-y":"xmpug6m",$$css:!0},spacing1_5:{"--layout-padding-inner-y":"x1g8jpzm",$$css:!0},spacing2:{"--layout-padding-inner-y":"x1lksgje",$$css:!0},spacing3:{"--layout-padding-inner-y":"x4j7gld",$$css:!0},spacing4:{"--layout-padding-inner-y":"x1s3ehtl",$$css:!0},spacing5:{"--layout-padding-inner-y":"x1rj5eim",$$css:!0},spacing6:{"--layout-padding-inner-y":"x1ftgg6u",$$css:!0},spacing7:{"--layout-padding-inner-y":"x1ho74vh",$$css:!0},spacing8:{"--layout-padding-inner-y":"xm2cs6f",$$css:!0},spacing9:{"--layout-padding-inner-y":"x1vsq92b",$$css:!0},spacing10:{"--layout-padding-inner-y":"x18gbwmk",$$css:!0},spacing11:{"--layout-padding-inner-y":"x14zymzj",$$css:!0},spacing12:{"--layout-padding-inner-y":"xzfpkx9",$$css:!0}},jv={containerMaxHeight:t=>[{"--container-max-height":t!=null?"x18nyedi":t,$$css:!0},{"--x---container-max-height":t??void 0}]};function Rp({padding:t="spacing4",paddingOuterX:n,paddingOuterY:a,paddingInnerX:o,paddingInnerY:e,useThemeDefault:i,maxHeight:l}){let r=n??t,c=a??t,s=o??t,g=e??t,h=l?jv.containerMaxHeight(l):null;if(i){let f=mv[i];return[Yp.container,f.containerPaddingInlineStart,f.containerPaddingInlineEnd,f.containerPaddingBlockStart,f.containerPaddingBlockEnd,f.layoutPaddingOuterX,f.layoutPaddingOuterY,f.layoutPaddingInnerX,f.layoutPaddingInnerY,h]}return[Yp.container,vv[r],yv[r],bv[c],kv[c],wv[r],zv[c],Sv[s],$v[g],h]}var Vp={0:"spacing0",.5:"spacing0_5",1:"spacing1",1.5:"spacing1_5",2:"spacing2",3:"spacing3",4:"spacing4",5:"spacing5",6:"spacing6",8:"spacing8",10:"spacing10"},Zp={0:{kZCmMZ:"x18gyask",kwRFfy:"x1s0aq8i",kLKAdn:"x1ydh6w3",kGO01o:"x1l20ajd",$$css:!0},1:{kZCmMZ:"x1vsv5vr",kwRFfy:"x1nryj5t",kLKAdn:"xfsso4q",kGO01o:"xy143xn",$$css:!0},2:{kZCmMZ:"x12gdq22",kwRFfy:"x1djylfy",kLKAdn:"x1xye8es",kGO01o:"x1wesfrj",$$css:!0},3:{kZCmMZ:"x126nfab",kwRFfy:"x1t818jl",kLKAdn:"x1vlblms",kGO01o:"xvmdzux",$$css:!0},4:{kZCmMZ:"x1rey3nv",kwRFfy:"xnjyzlh",kLKAdn:"x1oa1p4a",kGO01o:"x1awphl8",$$css:!0},5:{kZCmMZ:"x1blguxw",kwRFfy:"xdbrk9v",kLKAdn:"xx7rijo",kGO01o:"x1hk98q",$$css:!0},6:{kZCmMZ:"x31w388",kwRFfy:"x1we12cn",kLKAdn:"x1adxfkp",kGO01o:"xjpqqx5",$$css:!0},8:{kZCmMZ:"x1j3hnjz",kwRFfy:"x1q91b2g",kLKAdn:"xoxd1wu",kGO01o:"x2oz4g1",$$css:!0},10:{kZCmMZ:"xqp078j",kwRFfy:"x160ivqr",kLKAdn:"xk6660b",kGO01o:"x2izi54",$$css:!0},"0.5":{kZCmMZ:"x138rykx",kwRFfy:"x1le3yxw",kLKAdn:"xbx876j",kGO01o:"xij103a",$$css:!0},"1.5":{kZCmMZ:"xfti1ec",kwRFfy:"x17hk9do",kLKAdn:"x1kwdpsa",kGO01o:"x1opdxmq",$$css:!0}},Lp={0:{"--container-padding-inline-start":"x1gu2k80","--container-padding-inline-end":"x91ghl5",$$css:!0},1:{"--container-padding-inline-start":"x1cvlban","--container-padding-inline-end":"x2oyxnl",$$css:!0},2:{"--container-padding-inline-start":"x1xlrr2o","--container-padding-inline-end":"xcas3b9",$$css:!0},3:{"--container-padding-inline-start":"xfdwxua","--container-padding-inline-end":"xu0ipoa",$$css:!0},4:{"--container-padding-inline-start":"x1dlhslv","--container-padding-inline-end":"xs0pscg",$$css:!0},5:{"--container-padding-inline-start":"x1s81nki","--container-padding-inline-end":"xgkj7vj",$$css:!0},6:{"--container-padding-inline-start":"x1ep0dkj","--container-padding-inline-end":"x94cj42",$$css:!0},8:{"--container-padding-inline-start":"xw1diwv","--container-padding-inline-end":"x1b9k1pi",$$css:!0},10:{"--container-padding-inline-start":"xserb3f","--container-padding-inline-end":"xx5lg5w",$$css:!0},"0.5":{"--container-padding-inline-start":"x14ws0sr","--container-padding-inline-end":"x1wz3t3y",$$css:!0},"1.5":{"--container-padding-inline-start":"x176g23i","--container-padding-inline-end":"xntetml",$$css:!0}},Qp={0:{"--container-padding-block-start":"x1i3qcxz",$$css:!0},1:{"--container-padding-block-start":"xnsckjb",$$css:!0},2:{"--container-padding-block-start":"xa8b4fq",$$css:!0},3:{"--container-padding-block-start":"x11k4f5r",$$css:!0},4:{"--container-padding-block-start":"xm01sq8",$$css:!0},5:{"--container-padding-block-start":"xp8wdkl",$$css:!0},6:{"--container-padding-block-start":"x1hmud4d",$$css:!0},8:{"--container-padding-block-start":"xfv60at",$$css:!0},10:{"--container-padding-block-start":"x17h9kl7",$$css:!0},"0.5":{"--container-padding-block-start":"xvdf9ev",$$css:!0},"1.5":{"--container-padding-block-start":"x1kbx601",$$css:!0}},Kp={0:{"--container-padding-block-end":"xkunwnr",$$css:!0},1:{"--container-padding-block-end":"x57a7ii",$$css:!0},2:{"--container-padding-block-end":"x1lsgcmx",$$css:!0},3:{"--container-padding-block-end":"x1q3ppug",$$css:!0},4:{"--container-padding-block-end":"x4hfsld",$$css:!0},5:{"--container-padding-block-end":"xbib2ws",$$css:!0},6:{"--container-padding-block-end":"x1q8d17g",$$css:!0},8:{"--container-padding-block-end":"x8lgq76",$$css:!0},10:{"--container-padding-block-end":"x15vxphk",$$css:!0},"0.5":{"--container-padding-block-end":"x1cao3zv",$$css:!0},"1.5":{"--container-padding-block-end":"xv53x8y",$$css:!0}};var Jp=Q(_n(),1),Wu={card:{"--_card-radius":"x2kkz0m",kaIpWk:"x153u1i6",kVQacm:"x7giv3",$$css:!0},withBorder:{kMzoRj:"x1litavf",ksu8eU:"x1y0btm7",kVAM5u:"xvy26l8",kZCmMZ:"xs19ii7",kwRFfy:"x12frdag",kLKAdn:"x1nex4ik",kGO01o:"xbv1mwh",$$css:!0},scrollable:{kVQacm:"xysyzu8",$$css:!0}},qv={default:{kWkggS:"x1de1mus",$$css:!0},transparent:{kWkggS:"xjbqb8w",$$css:!0},muted:{kWkggS:"xwmxj5m",$$css:!0},blue:{kWkggS:"x1o0wnni",$$css:!0},cyan:{kWkggS:"x1rgj867",$$css:!0},gray:{kWkggS:"xspzpui",$$css:!0},green:{kWkggS:"x1sqjeoo",$$css:!0},orange:{kWkggS:"x1e9xt6e",$$css:!0},pink:{kWkggS:"xnpoty2",$$css:!0},purple:{kWkggS:"x16i6n6f",$$css:!0},red:{kWkggS:"x1cibrc5",$$css:!0},teal:{kWkggS:"x1jtji5o",$$css:!0},yellow:{kWkggS:"x1bo7t0x",$$css:!0}},Ev={sizing:(t,n,a,o)=>[{kzqmXN:t!=null?"x5lhr3w":t,kZKoxP:n!=null?"x16ye13r":n,ks0D6T:a!=null?"xf68679":a,kAzted:o!=null?"x82snj4":o,$$css:!0},{"--x-width":(e=>typeof e=="number"?e+"px":e??void 0)(t),"--x-height":(e=>typeof e=="number"?e+"px":e??void 0)(n),"--x-maxWidth":(e=>typeof e=="number"?e+"px":e??void 0)(a),"--x-minHeight":(e=>typeof e=="number"?e+"px":e??void 0)(o)}]};function Dl({width:t,height:n,maxWidth:a,minHeight:o,children:e,padding:i,variant:l="default",xstyle:r,className:c,style:s,ref:g,...h}){let f=n!=null&&n!=="auto",p=i==null,y=i??4,k=Vp[y];return(0,Jp.jsx)("div",{ref:g,...rt(ct("card",{variant:l}),J(Wu.card,qv[l],f&&Wu.scrollable,Ev.sizing(t??null,n??null,a??null,o??null),...Rp(p?{useThemeDefault:"card"}:{paddingInnerX:k,paddingInnerY:k,paddingOuterX:k,paddingOuterY:k}),!p&&y!==4&&Zp[y],!p&&y!==4&&Lp[y],!p&&y!==4&&Qp[y],!p&&y!==4&&Kp[y],l==="default"&&Wu.withBorder,r),c,s),...h,children:e})}Dl.displayName="Card";var Ip=Q(mt(),1);var sn=Q(_n(),1);var Iu={container:{k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",kOIVth:"xzye2dw",kzqmXN:"xh8yej3",k7Eaqz:"x900493",$$css:!0},fill:{kZKoxP:"x5yr21d",kaIpWk:"xjspbzw",k1ekBW:"xxrbq2n",kIyJzY:"x80gvsz",kAMwcw:"xlr8y92",$$css:!0},indeterminateFill:{kZKoxP:"x5yr21d",kzqmXN:"xz84dc7",kaIpWk:"xjspbzw",kKVMdj:"xozk8ic",k44tkh:"xmg6eyc xnh0sag",kyAemX:"x4hg4is",ko0y90:"xa4qsjk",$$css:!0}},Wp={accent:{kWkggS:"x1ewilqj",$$css:!0},success:{kWkggS:"xdsz4j9",$$css:!0},warning:{kWkggS:"x1q8g9m5",$$css:!0},error:{kWkggS:"x1pjz0fi",$$css:!0},neutral:{kWkggS:"x16fr6go",$$css:!0},disabled:{kWkggS:"x16fr6go",$$css:!0}};function Tv(t,n){return`${n>0?Math.round(t/n*100):0}%`}function Ml({value:t=0,max:n=100,label:a,isLabelHidden:o=!1,hasValueLabel:e=!1,formatValueLabel:i=Tv,variant:l="accent",isIndeterminate:r=!1,isDisabled:c=!1,xstyle:s,className:g,style:h,"data-testid":f,ref:p,...y}){let k=(0,Ip.useId)(),S=Number.isFinite(t)?t:0,d=Number.isFinite(n)?n:0,u=Math.min(Math.max(0,S),d),x=d>0?u/d*100:0,m=i(u,d),w=e&&!r,q=c?"disabled":l;return(0,sn.jsxs)("div",{ref:p,...rt(ct("progressbar",{variant:l}),J(Iu.container,s),g,h),"data-testid":f,...y,children:[!o||w?(0,sn.jsxs)("div",{className:"x78zum5 x1qughib x1pha0wt",children:[(0,sn.jsx)("span",{id:k,...{0:{className:"xjm74w1 xw6l6zx x1e4wzip x1tgivj0"},2:{className:"xjm74w1 xw6l6zx x1e4wzip x1tgivj0 x10l6tqk x1i1rx1s xjm9jq1 x1717udv xkdpibf xb3r6kr xzpqnlu xuxw1ft xc342km"},1:{className:"xjm74w1 xw6l6zx x1e4wzip xnbbluu"},3:{className:"xjm74w1 xw6l6zx x1e4wzip x10l6tqk x1i1rx1s xjm9jq1 x1717udv xkdpibf xb3r6kr xzpqnlu xuxw1ft xc342km xnbbluu"}}[!!o<<1|!!c<<0],children:a}),w&&(0,sn.jsx)("span",{...{0:{className:"xjm74w1 xw6l6zx x1sodnla xv1l7n4"},1:{className:"xjm74w1 xw6l6zx x1sodnla xnbbluu"}}[!!c<<0],children:m})]}):(0,sn.jsx)(Do,{id:k,children:a}),(0,sn.jsx)("div",{role:"progressbar","aria-valuenow":r?void 0:u,"aria-valuemin":r?void 0:0,"aria-valuemax":r?void 0:d,"aria-labelledby":k,"aria-valuetext":r?void 0:m,...rt(ct("progressbar-track"),{className:"xh8yej3 xdk7pt xwmxj5m xjspbzw xb3r6kr"}),children:r?(0,sn.jsx)("div",{...rt(ct("progressbar-fill",{variant:q}),J(Iu.indeterminateFill,Wp[q]))}):(0,sn.jsx)("div",{...rt(ct("progressbar-fill",{variant:q}),J(Iu.fill,Wp[q])),style:{width:`${x}%`}})})]})}Ml.displayName="ProgressBar";var ts=Q(_n(),1);var Pu={base:{k1xSpc:"x1rg5ohu",kaIpWk:"x16rqkct",kmuXW:"x2lah0s",kzqmXN:"x1xc55vz",kZKoxP:"xdk7pt",$$css:!0},pulsing:{kKVMdj:"x1mta51n",k44tkh:"x1c74tu6",kyAemX:"x4hg4is",ko0y90:"xa4qsjk",$$css:!0},reducedMotion:{kjO2d4:"x1aquc0h",$$css:!0}},Av={success:{kWkggS:"xdsz4j9",$$css:!0},warning:{kWkggS:"x1q8g9m5",$$css:!0},error:{kWkggS:"x1pjz0fi",$$css:!0},accent:{kWkggS:"x1ewilqj",$$css:!0},neutral:{kWkggS:"x1q5y3ey",$$css:!0}};function Ol({variant:t,label:n,isPulsing:a=!1,tooltip:o,xstyle:e,className:i,style:l,ref:r,...c}){let s=(0,ts.jsx)("span",{ref:r,role:"img","aria-label":n,...rt(ct("statusdot",{variant:t}),J(Pu.base,Av[t],a&&Pu.pulsing,a&&Pu.reducedMotion,e),i,l),...c});return o?(0,ts.jsx)(ps,{content:o,children:s}):s}Ol.displayName="StatusDot";var dn=Q(mt(),1);var Pp={};function t1(t){Pp={...Pp,...t}}var _l=Q(_n(),1),Bl={base:{k1xSpc:"xjp7ctv",kMwMTN:"x1tgivj0",kMv6JI:"x9ynric",$$css:!0},light:{kQNsl9:"x19aimcq",$$css:!0},dark:{kQNsl9:"xntwwlm",$$css:!0},system:{kQNsl9:"x108lcm5",$$css:!0}},as=dn.default.createContext(!1);as.displayName="ThemeNestingContext";var ns=new Set,n1=new Set;function Dv(t){let n=(0,dn.useId)();(0,dn.useInsertionEffect)(()=>{if(t.__built)return;let a=`astryx-theme-${t.name}`;if(ns.has(a))return;n1.has(t.name)||(n1.add(t.name),console.warn(`[Astryx] Theme "${t.name}" is using runtime style injection. For better performance, use the pre-built theme: + + import {${t.name}Theme} from '@astryxdesign/theme-${t.name}/built'; + import '@astryxdesign/theme-${t.name}/theme.css'; + +For custom themes, run \`npx astryx theme build \` to generate the built artifacts.`));let{prose:o,component:e}=Cu(t);if(!(!o&&!e)){if(o){let i=document.createElement("style");i.setAttribute(Wt("theme-prose"),t.name),i.setAttribute(Wt("id"),n),i.textContent=`@layer reset { +${o} +}`,document.head.appendChild(i)}if(e){let i=document.createElement("style");i.setAttribute(Wt("theme"),t.name),i.setAttribute(Wt("id"),n),i.textContent=`@layer astryx-theme { +${e} +}`,document.head.appendChild(i)}return ns.add(a),()=>{let i=document.querySelector(`style[${Wt("theme-prose")}="${t.name}"][${Wt("id")}="${n}"]`),l=document.querySelector(`style[${Wt("theme")}="${t.name}"][${Wt("id")}="${n}"]`);i?.remove(),l?.remove(),ns.delete(a)}}},[t,n])}function Mv(t,n,a){gs(()=>{if(!t&&!(typeof document>"u"))return n==="light"||n==="dark"?document.documentElement.setAttribute("data-theme",n):document.documentElement.removeAttribute("data-theme"),document.documentElement.setAttribute(Wt("theme"),a),()=>{document.documentElement.removeAttribute("data-theme"),document.documentElement.removeAttribute(Wt("theme"))}},[t,n,a])}function Cl({theme:t,mode:n="system",children:a}){let o=(0,dn.use)(as);Dv(t),Mv(o,n,t.name);let e=n==="dark"?Bl.dark:n==="light"?Bl.light:Bl.system,i=t.icons;i!=null&&t1(i);let l=(0,dn.useMemo)(()=>({theme:t,mode:n}),[t,n]);return(0,_l.jsx)(zl,{value:l,children:(0,_l.jsx)(as,{value:!0,children:(0,_l.jsx)("div",{...J(Bl.base,e),"data-astryx-theme":t.name,"data-theme":n==="system"?void 0:n,children:a})})})}Cl.displayName="Theme";var a1={name:"launch-control",__built:!0,tokens:{"--color-accent":"light-dark(#E34A32, #F05A3C)","--color-accent-muted":"light-dark(#FFF0EC, #40231E)","--color-on-accent":"#FFFFFF","--color-background-body":"light-dark(#F4F5F5, #171719)","--color-background-surface":"light-dark(#FFFFFF, #202024)","--color-background-card":"light-dark(#FFFFFF, #202024)","--color-background-muted":"light-dark(#F7F7F5, #28282C)","--color-border":"light-dark(rgba(23,23,25,0.09), rgba(255,255,255,0.12))","--color-border-emphasized":"light-dark(rgba(23,23,25,0.16), rgba(255,255,255,0.22))","--color-text-primary":"light-dark(#232427, #F4F5F5)","--color-text-secondary":"light-dark(#55575C, #B7B8BA)","--color-text-accent":"light-dark(#B93624, #FF806A)","--color-icon-accent":"light-dark(#E34A32, #F05A3C)","--color-track":"light-dark(#DEDEDB, #45454A)","--color-warning":"light-dark(#B93624, #FF806A)","--color-warning-muted":"light-dark(#FFF0EC, #40231E)","--color-on-warning":"light-dark(#232427, #FFFFFF)","--font-family-body":'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"--font-family-heading":'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"--radius-container":"16px","--radius-element":"10px","--duration-fast":"125ms","--duration-medium":"300ms","--duration-slow":"700ms","--ease-standard":"cubic-bezier(.24,1,.4,1)"}};var Nl=[{label:"Detect",detail:"Exception found"},{label:"Route",detail:"Owner assigned"},{label:"Prove",detail:"Receipt saved"}],Ul=null;function Ov(){let[t,n]=(0,b.useState)(()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches);return(0,b.useEffect)(()=>{let a=window.matchMedia("(prefers-reduced-motion: reduce)"),o=()=>n(a.matches);return a.addEventListener("change",o),()=>a.removeEventListener("change",o)},[]),t}function Bv(){return b.default.createElement("div",{className:"trace-panel trace-detect","data-panel":"detect"},b.default.createElement("div",{className:"trace-panel-head"},b.default.createElement("div",null,b.default.createElement("small",null,"Validator pass"),b.default.createElement("strong",null,"100 creative rows checked")),b.default.createElement("span",null,"0.8 s")),b.default.createElement("div",{className:"trace-rows",role:"presentation"},b.default.createElement("div",{className:"trace-row"},b.default.createElement("code",null,"cr_004"),b.default.createElement("span",null,"Summer feed 04"),b.default.createElement("em",null,"Ready")),b.default.createElement("div",{className:"trace-row is-exception"},b.default.createElement("code",null,"cr_007"),b.default.createElement("span",null,"Launch offer 07"),b.default.createElement(_e,{label:"Needs decision",variant:"warning"})),b.default.createElement("div",{className:"trace-row"},b.default.createElement("code",null,"cr_010"),b.default.createElement("span",null,"Stories cut 10"),b.default.createElement("em",null,"Ready"))),b.default.createElement("p",{className:"trace-reason"},b.default.createElement("span",{"aria-hidden":"true"},"\u21B3")," Possible duplicate found before launch."))}function _v(){return b.default.createElement("div",{className:"trace-panel trace-route","data-panel":"route"},b.default.createElement("div",{className:"trace-panel-head"},b.default.createElement("div",null,b.default.createElement("small",null,"Exception route"),b.default.createElement("strong",null,"cr_007 needs a named owner")),b.default.createElement(_e,{label:"Review",variant:"warning"})),b.default.createElement("div",{className:"trace-route-grid"},b.default.createElement("div",null,b.default.createElement("small",null,"Why it stopped"),b.default.createElement("strong",null,"Possible duplicate"),b.default.createElement("span",null,"Same destination and offer, different asset.")),b.default.createElement("div",{className:"trace-arrow","aria-hidden":"true"},"\u2192"),b.default.createElement("div",null,b.default.createElement("small",null,"Decision owner"),b.default.createElement("strong",null,"Creative Ops Manager"),b.default.createElement("span",null,"Ambiguous intent stays human."))))}function Cv(){return b.default.createElement("div",{className:"trace-panel trace-prove","data-panel":"prove"},b.default.createElement("div",{className:"trace-receipt-mark","aria-hidden":"true"},"\u2713"),b.default.createElement("div",{className:"trace-receipt-copy"},b.default.createElement("small",null,"Recorded decision"),b.default.createElement("strong",null,"Human confirmed \xB7 Keep both"),b.default.createElement("span",null,"Saved locally with an inspectable receipt.")),b.default.createElement("dl",{className:"trace-receipt-data"},b.default.createElement("div",null,b.default.createElement("dt",null,"creative"),b.default.createElement("dd",null,"cr_007")),b.default.createElement("div",null,b.default.createElement("dt",null,"remaining"),b.default.createElement("dd",null,"9")),b.default.createElement("div",null,b.default.createElement("dt",null,"batch"),b.default.createElement("dd",null,"78f20843aea8a367"))))}function Nv({phase:t}){return t===0?b.default.createElement(Bv,null):t===1?b.default.createElement(_v,null):b.default.createElement(Cv,null)}function Uv({active:t,reducedMotion:n,runId:a,onWebGL:o}){let e=(0,b.useRef)(null);return(0,b.useEffect)(()=>{if(!t||!e.current)return;if(navigator.connection?.saveData){window.__launchControlMotion.fallback="save-data";return}let i=!1,l=null;return import("./launch-control-chunks/hero-mesh-6FYDFJN6.js").then(({mountDecisionMesh:r})=>{if(!(i||!e.current))try{l=r(e.current,{reducedMotion:n,onStateChange(c,s){window.__launchControlMotion.mesh=s,window.__launchControlMotion.state=c}}),Ul=l,window.__launchControlMotion.mesh=l.debug,window.__launchControlMotion.ready=!0,window.dispatchEvent(new CustomEvent("launch-control-motion-ready")),o(!0)}catch(c){window.__launchControlMotion.fallback="webgl-unavailable",window.__launchControlMotion.error=String(c),window.__launchControlMotion.ready=!0}}).catch(r=>{window.__launchControlMotion.fallback="chunk-unavailable",window.__launchControlMotion.error=String(r),window.__launchControlMotion.ready=!0}),()=>{i=!0,l?.destroy(),Ul===l&&(Ul=null)}},[t,n,a,o]),b.default.createElement("canvas",{ref:e,className:"trace-mesh",id:"meshGL","aria-hidden":"true"})}function Hv(){let t=(0,b.useRef)(null),n=Ov(),[a,o]=(0,b.useState)(n),[e,i]=(0,b.useState)(n?2:0),[l,r]=(0,b.useState)(0),[c,s]=(0,b.useState)(!1),[g,h]=(0,b.useState)(!1),[f,p]=(0,b.useState)("");(0,b.useEffect)(()=>{if(n){o(!0),i(2);return}let d=new IntersectionObserver(([u])=>{u.intersectionRatio>=.6&&(o(!0),d.disconnect())},{threshold:[.6]});return d.observe(t.current),()=>d.disconnect()},[n]),(0,b.useEffect)(()=>{if(!a||n||c)return;i(0);let d=window.setTimeout(()=>i(1),2350),u=window.setTimeout(()=>i(2),4750);return()=>{clearTimeout(d),clearTimeout(u)}},[a,c,n,l]);function y(d){s(!0),i(d),Ul?.seek(d),p(`${Nl[d].label}: ${Nl[d].detail}`)}function k(){s(!1),i(0),r(d=>d+1),p("Recorded trace replayed from Detect.")}let S=[34,68,100][e];return b.default.createElement("div",{ref:t,className:"lc-motion","data-phase":Nl[e].label.toLowerCase(),"data-webgl":g?"ready":"fallback"},b.default.createElement(Cl,{theme:a1,mode:"light"},b.default.createElement(Dl,{className:"trace-card",padding:0,minHeight:430},b.default.createElement("div",{className:"trace-topbar"},b.default.createElement("div",{className:"trace-run-state"},b.default.createElement(Ol,{variant:"accent",label:"Recorded synthetic run"}),b.default.createElement("span",null,"Recorded synthetic run")),b.default.createElement("span",{className:"trace-boundary"},"Read-only replay \xB7 local data")),b.default.createElement("div",{className:"trace-progress"},b.default.createElement(Ml,{value:S,label:"Recorded decision trace progress",isLabelHidden:!0})),b.default.createElement("ol",{className:"trace-steps","aria-label":"Recorded decision trace"},Nl.map((d,u)=>b.default.createElement("li",{key:d.label,"data-complete":uy(u)},b.default.createElement("b",null,u{t||(t=!0,(0,e1.createRoot)(o1).render(b.default.createElement(Hv,null)))},a=document.createElement("link");a.rel="stylesheet",a.href="assets/launch-control-motion.css",a.dataset.launchControlMotion="true",a.addEventListener("load",n,{once:!0}),a.addEventListener("error",()=>{window.__launchControlMotion.ready=!0,window.__launchControlMotion.fallback="stylesheet-unavailable",window.dispatchEvent(new CustomEvent("launch-control-motion-ready"))},{once:!0}),document.head.append(a)} diff --git a/docs/assets/product-desktop.png b/docs/assets/product-desktop.png index baeed94..df822b7 100644 Binary files a/docs/assets/product-desktop.png and b/docs/assets/product-desktop.png differ diff --git a/docs/assets/product-mobile.png b/docs/assets/product-mobile.png index bd127dd..fec77a4 100644 Binary files a/docs/assets/product-mobile.png and b/docs/assets/product-mobile.png differ diff --git a/docs/assets/product-motion-prove.png b/docs/assets/product-motion-prove.png new file mode 100644 index 0000000..6b0caad Binary files /dev/null and b/docs/assets/product-motion-prove.png differ diff --git a/docs/assets/product-motion-reduced.png b/docs/assets/product-motion-reduced.png new file mode 100644 index 0000000..b0599b8 Binary files /dev/null and b/docs/assets/product-motion-reduced.png differ diff --git a/docs/assets/product-motion-route.png b/docs/assets/product-motion-route.png new file mode 100644 index 0000000..cf084bc Binary files /dev/null and b/docs/assets/product-motion-route.png differ diff --git a/docs/assets/social-card-v3.png b/docs/assets/social-card-v3.png deleted file mode 100644 index df846c2..0000000 Binary files a/docs/assets/social-card-v3.png and /dev/null differ diff --git a/docs/assets/social-card-v4.png b/docs/assets/social-card-v4.png new file mode 100644 index 0000000..4d97eed Binary files /dev/null and b/docs/assets/social-card-v4.png differ diff --git a/docs/assets/social-card.png b/docs/assets/social-card.png index df846c2..4d97eed 100644 Binary files a/docs/assets/social-card.png and b/docs/assets/social-card.png differ diff --git a/docs/brief-evidence.html b/docs/brief-evidence.html index b6ce8f7..85cfacc 100644 --- a/docs/brief-evidence.html +++ b/docs/brief-evidence.html @@ -12,7 +12,7 @@ - + diff --git a/docs/evidence/interactive-rule-pack.json b/docs/evidence/interactive-rule-pack.json index e70a7dd..8820fc3 100644 --- a/docs/evidence/interactive-rule-pack.json +++ b/docs/evidence/interactive-rule-pack.json @@ -26,7 +26,7 @@ "placement": "feed", "utm_campaign": "camp_launch" }, - "rule_pack_sha256": "8381d1123a523f46506bc7bb0ee007d23be86bf4552c7a9ea1092d452f384ce6", + "rule_pack_sha256": "4f5f24a0d12fcc34eeec5d62ab324d3d5f58e945c01c0a2bab217f571af80eb0", "scenarios": { "feed|approved|camp_launch": { "idempotency_key": "c6be1883736bd3d6", @@ -205,5 +205,5 @@ "placement": "story", "utm_campaign": "camp_sale" }, - "validator_source_sha256": "bcdc71593d6a2fc6a6975d1c385f2fdbd3c8f2aa4726aa597f6f9b5a852e8428" + "validator_source_sha256": "e7a304b056eaa33d612160b6f37e467607d8f01d7bb6d1547da0ff1b0fc7f52c" } diff --git a/docs/evidence/product-lighthouse-accessibility-desktop.json b/docs/evidence/product-lighthouse-accessibility-desktop.json index 6cdb994..847a9da 100644 --- a/docs/evidence/product-lighthouse-accessibility-desktop.json +++ b/docs/evidence/product-lighthouse-accessibility-desktop.json @@ -1,17 +1,17 @@ { "lighthouseVersion": "12.6.1", - "requestedUrl": "http://127.0.0.1:55103/docs/index.html", - "mainDocumentUrl": "http://127.0.0.1:55103/docs/index.html", - "finalDisplayedUrl": "http://127.0.0.1:55103/docs/index.html", - "finalUrl": "http://127.0.0.1:55103/docs/index.html", - "fetchTime": "2026-07-15T15:28:27.469Z", + "requestedUrl": "http://127.0.0.1:60754/docs/index.html", + "mainDocumentUrl": "http://127.0.0.1:60754/docs/index.html", + "finalDisplayedUrl": "http://127.0.0.1:60754/docs/index.html", + "finalUrl": "http://127.0.0.1:60754/docs/index.html", + "fetchTime": "2026-07-15T16:46:27.230Z", "gatherMode": "navigation", "runWarnings": [], "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.7928.2 Safari/537.36", "environment": { - "networkUserAgent": "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36", + "networkUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36", "hostUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/152.0.7928.2 Safari/537.36", - "benchmarkIndex": 3016.5, + "benchmarkIndex": 4685.5, "credits": { "axe-core": "4.12.1" } @@ -128,8 +128,13 @@ "id": "aria-progressbar-name", "title": "ARIA `progressbar` elements have accessible names", "description": "When a `progressbar` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to label `progressbar` elements](https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name).", - "score": null, - "scoreDisplayMode": "notApplicable" + "score": 1, + "scoreDisplayMode": "binary", + "details": { + "type": "table", + "headings": [], + "items": [] + } }, "aria-prohibited-attr": { "id": "aria-prohibited-attr", @@ -375,8 +380,75 @@ "id": "identical-links-same-purpose", "title": "Identical links have the same purpose.", "description": "Links with the same destination should have the same description, to help users understand the link's purpose and decide whether to follow it. [Learn more about identical links](https://dequeuniversity.com/rules/axe/4.10/identical-links-same-purpose).", - "score": null, - "scoreDisplayMode": "notApplicable" + "score": 1, + "scoreDisplayMode": "informative", + "details": { + "type": "table", + "headings": [ + { + "key": "node", + "valueType": "node", + "subItemsHeading": { + "key": "relatedNode", + "valueType": "node" + }, + "label": "Failing Elements" + } + ], + "items": [ + { + "node": { + "type": "node", + "lhId": "1-3-A", + "path": "1,HTML,1,BODY,2,HEADER,0,NAV,1,DIV,3,A", + "selector": "header.site-header > nav.site-nav > div.nav-links > a", + "boundingRect": { + "top": 23, + "bottom": 67, + "left": 924, + "right": 996, + "width": 72, + "height": 44 + }, + "snippet": "", + "nodeLabel": "Evidence", + "explanation": "Fix all of the following:\n Check that links have the same purpose, or are intentionally ambiguous." + }, + "subItems": { + "type": "subitems", + "items": [ + { + "relatedNode": { + "type": "node", + "lhId": "1-4-A", + "path": "1,HTML,1,BODY,3,DIV,1,FOOTER,0,DIV,1,SPAN,1,A", + "selector": "footer > div.container > span.footer-links > a", + "boundingRect": { + "top": 4424, + "bottom": 4442, + "left": 1198, + "right": 1245, + "width": 46, + "height": 18 + }, + "snippet": "", + "nodeLabel": "Evidence" + } + } + ] + } + } + ], + "debugData": { + "type": "debugdata", + "impact": "minor", + "tags": [ + "cat.semantics", + "wcag2aaa", + "wcag249" + ] + } + } }, "image-alt": { "id": "image-alt", @@ -465,15 +537,25 @@ "id": "list", "title": "Lists contain only `
  • ` elements and script supporting elements (` + + @@ -444,7 +451,7 @@
    Pre-launch QA for Meta Ads

    Catch creative launch mistakes before Ads Manager.

    Validate approvals, placements, destinations, naming and UTMs across every creative row. Route exceptions to the right owner. Keep ambiguous decisions human.

    -
    Abstract orange control object representing a routed checkpoint
    +
    Recorded synthetic runRead-only replay
    1. 01Detect
    2. 02Route
    3. 03Prove
    Recorded decisioncr_007 · Possible duplicateRouted to Creative Ops Manager, then saved locally after human review.
    One exception. One owner. One receipt.
    @@ -579,5 +586,9 @@

    Possible duplicate

    if(title&&!reduced.matches&&!window.matchMedia('(max-width: 360px)').matches){title.addEventListener('pointerenter',()=>{const label=title.textContent;title.setAttribute('aria-label',label);const fragment=document.createDocumentFragment();label.split(' ').forEach((word,index)=>{if(index)fragment.append(document.createTextNode(' '));const wordNode=document.createElement('span');wordNode.className='wchar-word';wordNode.setAttribute('aria-hidden','true');[...word].forEach((letter)=>{const charNode=document.createElement('span');charNode.className='wchar';charNode.textContent=letter;wordNode.append(charNode)});fragment.append(wordNode)});title.replaceChildren(fragment);const chars=[...title.querySelectorAll('.wchar')];let point=null;let raf=0;title.addEventListener('pointermove',(event)=>{point={x:event.clientX,y:event.clientY};if(raf)return;raf=requestAnimationFrame(()=>{chars.forEach((char)=>{const rect=char.getBoundingClientRect();const d=Math.hypot(point.x-(rect.left+rect.width/2),point.y-(rect.top+rect.height/2));const weight=d<200?600+(1-d/200)*300:600;char.style.fontVariationSettings=`'wght' ${Math.round(weight)}`});raf=0})});title.addEventListener('pointerleave',()=>chars.forEach((char)=>char.style.fontVariationSettings="'wght' 600"))},{once:true})} })(); + diff --git a/docs/social-card.html b/docs/social-card.html index a424b2a..60fd0b6 100644 --- a/docs/social-card.html +++ b/docs/social-card.html @@ -1,4 +1,4 @@
    Launch ControlPre-launch QA for Meta Ads
    Detect / Route / Prove

    Catch creative launch mistakes before Ads Manager.

    Validate every creative row. Route exceptions to the right owner. Keep ambiguous decisions human.

    Interactive productMathieu Petroni
    CURRENT SYNTHETIC RUN
    Launch ControlDemo data / local only
    QueueReviewReceipt

    10 creatives need a decision

    cr_007Possible duplicateCreative Ops Manager
    cr_017Possible duplicateCreative Ops Manager
    cr_027Possible duplicateCreative Ops Manager
    \ No newline at end of file +@font-face{font-family:"Inter";src:url("assets/inter-latin-variable.woff2") format("woff2-variations");font-weight:100 900;font-display:swap}@font-face{font-family:"Instrument Serif";src:url("assets/instrument-serif-latin-italic.woff2") format("woff2");font-style:italic;font-weight:400;font-display:swap}*{box-sizing:border-box}html,body{width:1200px;height:630px;margin:0;overflow:hidden}body{padding:18px;color:#232427;background:#ECEDEE;font-family:"Inter",sans-serif}main{width:1164px;height:594px;position:relative;overflow:hidden;display:grid;grid-template-columns:535px 629px;border:1px solid rgba(255,255,255,.75);border-radius:40px;background:#F4F5F5;box-shadow:0 1px 0 rgba(255,255,255,.9) inset}.copy{z-index:2;display:flex;flex-direction:column;padding:43px 18px 40px 48px}.brand{display:flex;align-items:center;gap:11px}.mark{width:31px;height:31px;position:relative}.mark:before,.mark:after{content:"";position:absolute;top:6px;width:19px;height:19px;border-radius:50%}.mark:before{left:0;background:#171719}.mark:after{left:12px;background:#E34A32}.brand-copy{display:grid;line-height:1}.brand-copy strong{font-size:15px}.brand-copy span{margin-top:6px;color:#7B7D82;font-size:10px}.hero{margin-top:65px}.eyebrow{color:#E34A32;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.hero h1{max-width:500px;margin:15px 0 0;font-size:56px;font-weight:620;line-height:.94;letter-spacing:-.05em}.hero p{max-width:455px;margin:20px 0 0;color:#55575C;font-size:15px;line-height:1.5}.copy footer{display:flex;justify-content:space-between;margin-top:auto;color:#7B7D82;font-size:10px}.visual{position:relative}.trace{position:absolute;left:18px;right:50px;top:92px;height:112px;padding:18px 22px;border:1px solid rgba(23,23,25,.08);border-radius:18px;background:rgba(255,255,255,.82);box-shadow:0 22px 50px -36px rgba(35,36,39,.65)}.trace-line{height:2px;position:absolute;left:54px;right:54px;top:54px;background:linear-gradient(90deg,rgba(227,74,50,.2),#E34A32,rgba(227,74,50,.2))}.trace-node{width:34px;height:34px;position:absolute;top:38px;display:grid;place-items:center;border:2px solid #E34A32;border-radius:50%;color:#E34A32;background:#FFF9F7;font-size:9px;font-weight:760}.trace-node:nth-child(2){left:38px}.trace-node:nth-child(3){left:50%;transform:translateX(-50%)}.trace-node:nth-child(4){right:38px}.trace-labels{display:flex;justify-content:space-between;margin-top:52px;color:#55575C;font-size:8px;font-weight:650;text-transform:uppercase}.app{position:absolute;left:-12px;right:30px;bottom:34px;height:245px;overflow:hidden;border:8px solid rgba(255,255,255,.68);border-radius:22px;background:#FCFCFB;box-shadow:0 26px 60px -36px rgba(35,36,39,.7)}.bar{height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 13px;border-bottom:1px solid rgba(23,23,25,.09);font-size:8px;font-weight:650}.bar span:last-child{padding:3px 7px;border-radius:999px;color:#B93624;background:#FFF0EC}.tabs{display:flex;gap:5px;padding:7px 11px;border-bottom:1px solid rgba(23,23,25,.09)}.tabs b{padding:5px 12px;border-radius:7px;color:#777;font-size:8px}.tabs b:first-child{color:#232427;background:#F0F0EE}.window{display:grid;grid-template-columns:100px 1fr;height:176px}.side{padding:12px 10px;border-right:1px solid rgba(23,23,25,.09);background:#F8F8F6}.side span{display:block;height:8px;margin-bottom:8px;border-radius:5px;background:#E4E4E1}.side span:nth-child(2){background:#FFF0EC}.rows{padding:13px}.rows h2{margin:0 0 12px;font-size:15px}.row{height:32px;display:grid;grid-template-columns:55px 1fr 110px;align-items:center;border-top:1px solid rgba(23,23,25,.08);font-size:7px}.row:first-of-type{box-shadow:3px 0 0 #E34A32 inset;background:#FFF9F7}.row b{font-family:monospace}.route{position:absolute;right:50px;top:45px;color:#E34A32;font-size:9px;font-weight:720;letter-spacing:.06em} +
    Launch ControlPre-launch QA for Meta Ads
    Detect / Route / Prove

    Catch creative launch mistakes before Ads Manager.

    Validate every creative row. Route exceptions to the right owner. Keep ambiguous decisions human.

    Interactive productMathieu Petroni
    RECORDED DECISION TRACE
    0102
    DetectRouteProve
    Launch ControlDemo data / local only
    QueueReviewReceipt

    10 creatives need a decision

    cr_007Possible duplicateCreative Ops Manager
    cr_017Possible duplicateCreative Ops Manager
    cr_027Possible duplicateCreative Ops Manager
    \ No newline at end of file diff --git a/docs/workspace.html b/docs/workspace.html index 797dd33..437ceb6 100644 --- a/docs/workspace.html +++ b/docs/workspace.html @@ -9,7 +9,7 @@ - + Creative Launch Workspace for Meta Ads diff --git a/frontend/generated/launch-control-theme.css b/frontend/generated/launch-control-theme.css new file mode 100644 index 0000000..6364948 --- /dev/null +++ b/frontend/generated/launch-control-theme.css @@ -0,0 +1,130 @@ +/* + * @generated by `astryx theme build` — do not edit manually. + * Source: frontend/launch-control-theme.mjs + * Command: astryx theme build frontend/launch-control-theme.mjs + */ + +@layer reset { +@scope ([data-astryx-theme="launch-control"]) to ([data-astryx-theme]) { + :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-family-heading); + color: var(--color-text-primary); + } + + :where(h1) { + font-size: var(--text-heading-1-size); + font-weight: var(--text-heading-1-weight); + line-height: var(--text-heading-1-leading); + } + + :where(h2) { + font-size: var(--text-heading-2-size); + font-weight: var(--text-heading-2-weight); + line-height: var(--text-heading-2-leading); + } + + :where(h3) { + font-size: var(--text-heading-3-size); + font-weight: var(--text-heading-3-weight); + line-height: var(--text-heading-3-leading); + } + + :where(h4) { + font-size: var(--text-heading-4-size); + font-weight: var(--text-heading-4-weight); + line-height: var(--text-heading-4-leading); + } + + :where(h5) { + font-size: var(--text-heading-5-size); + font-weight: var(--text-heading-5-weight); + line-height: var(--text-heading-5-leading); + } + + :where(h6) { + font-size: var(--text-heading-6-size); + font-weight: var(--text-heading-6-weight); + line-height: var(--text-heading-6-leading); + } + + :where(p) { + font-family: var(--font-family-body); + font-size: var(--text-body-size); + font-weight: var(--text-body-weight); + line-height: var(--text-body-leading); + color: var(--color-text-primary); + } + + :where(small) { + font-size: var(--text-supporting-size); + font-weight: var(--text-supporting-weight); + line-height: var(--text-supporting-leading); + color: var(--color-text-secondary); + } + + :where(code, pre) { + font-family: var(--font-family-code); + font-size: var(--text-code-size); + line-height: var(--text-code-leading); + } + + :where(hr) { + border: none; + border-top: 1px solid var(--color-border); + } +} +} + +@layer astryx-theme { + :root { color-scheme: light dark; } + html[data-theme="light"] { color-scheme: light; } + html[data-theme="dark"] { color-scheme: dark; } + +@scope ([data-astryx-theme="launch-control"]) to ([data-astryx-theme]) { + :scope { + --color-accent: light-dark(#E34A32, #F05A3C); + --color-accent-muted: light-dark(#FFF0EC, #40231E); + --color-on-accent: #FFFFFF; + --color-background-body: light-dark(#F4F5F5, #171719); + --color-background-surface: light-dark(#FFFFFF, #202024); + --color-background-card: light-dark(#FFFFFF, #202024); + --color-background-muted: light-dark(#F7F7F5, #28282C); + --color-border: light-dark(rgba(23,23,25,0.09), rgba(255,255,255,0.12)); + --color-border-emphasized: light-dark(rgba(23,23,25,0.16), rgba(255,255,255,0.22)); + --color-text-primary: light-dark(#232427, #F4F5F5); + --color-text-secondary: light-dark(#55575C, #B7B8BA); + --color-text-accent: light-dark(#B93624, #FF806A); + --color-icon-accent: light-dark(#E34A32, #F05A3C); + --color-track: light-dark(#DEDEDB, #45454A); + --color-warning: light-dark(#B93624, #FF806A); + --color-warning-muted: light-dark(#FFF0EC, #40231E); + --color-on-warning: light-dark(#232427, #FFFFFF); + --font-family-body: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + --font-family-heading: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + --radius-container: 16px; + --radius-element: 10px; + --duration-fast: 125ms; + --duration-medium: 300ms; + --duration-slow: 700ms; + --ease-standard: cubic-bezier(.24,1,.4,1); + } +} +} + +@layer astryx-theme { +@scope ([data-astryx-theme="launch-control"]) to ([data-astryx-theme]) { + [data-astryx-media="dark"] { + color-scheme: dark; + --color-text-primary: var(--color-on-dark); + --color-icon-primary: var(--color-on-dark); + --color-accent: var(--color-on-dark); + } + + [data-astryx-media="light"] { + color-scheme: light; + --color-text-primary: var(--color-on-light); + --color-icon-primary: var(--color-on-light); + --color-accent: var(--color-on-light); + } +} +} diff --git a/frontend/generated/launch-control.d.ts b/frontend/generated/launch-control.d.ts new file mode 100644 index 0000000..cb58e4e --- /dev/null +++ b/frontend/generated/launch-control.d.ts @@ -0,0 +1,8 @@ +/** + * @generated by `astryx theme build` — do not edit manually. + * Source: frontend/launch-control-theme.mjs + * Command: astryx theme build frontend/launch-control-theme.mjs + */ + +import type { DefinedTheme } from '@astryxdesign/core/theme'; +export declare const launchControlTheme: DefinedTheme; diff --git a/frontend/generated/launch-control.js b/frontend/generated/launch-control.js new file mode 100644 index 0000000..5afd25a --- /dev/null +++ b/frontend/generated/launch-control.js @@ -0,0 +1,45 @@ +/** + * @generated by `astryx theme build` — do not edit manually. + * Source: frontend/launch-control-theme.mjs + * Command: astryx theme build frontend/launch-control-theme.mjs + */ + +/** + * launch-control theme — built by `npx astryx theme build` + * Import the CSS file alongside this module: + * + * import { launchControlTheme } from './launch-control'; + * import './launch-control.css'; + */ +export const launchControlTheme = { + name: 'launch-control', + __built: true, + tokens: { + "--color-accent": "light-dark(#E34A32, #F05A3C)", + "--color-accent-muted": "light-dark(#FFF0EC, #40231E)", + "--color-on-accent": "#FFFFFF", + "--color-background-body": "light-dark(#F4F5F5, #171719)", + "--color-background-surface": "light-dark(#FFFFFF, #202024)", + "--color-background-card": "light-dark(#FFFFFF, #202024)", + "--color-background-muted": "light-dark(#F7F7F5, #28282C)", + "--color-border": "light-dark(rgba(23,23,25,0.09), rgba(255,255,255,0.12))", + "--color-border-emphasized": "light-dark(rgba(23,23,25,0.16), rgba(255,255,255,0.22))", + "--color-text-primary": "light-dark(#232427, #F4F5F5)", + "--color-text-secondary": "light-dark(#55575C, #B7B8BA)", + "--color-text-accent": "light-dark(#B93624, #FF806A)", + "--color-icon-accent": "light-dark(#E34A32, #F05A3C)", + "--color-track": "light-dark(#DEDEDB, #45454A)", + "--color-warning": "light-dark(#B93624, #FF806A)", + "--color-warning-muted": "light-dark(#FFF0EC, #40231E)", + "--color-on-warning": "light-dark(#232427, #FFFFFF)", + "--font-family-body": "Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif", + "--font-family-heading": "Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif", + "--radius-container": "16px", + "--radius-element": "10px", + "--duration-fast": "125ms", + "--duration-medium": "300ms", + "--duration-slow": "700ms", + "--ease-standard": "cubic-bezier(.24,1,.4,1)" + }, + +}; diff --git a/frontend/hero-mesh.js b/frontend/hero-mesh.js new file mode 100644 index 0000000..9746f85 --- /dev/null +++ b/frontend/hero-mesh.js @@ -0,0 +1,194 @@ +import * as THREE from 'three'; + +const DURATION_MS = 6600; + +export function mountDecisionMesh(canvas, {reducedMotion = false, onStateChange} = {}) { + const renderer = new THREE.WebGLRenderer({ + canvas, + alpha: true, + antialias: true, + powerPreference: 'low-power', + premultipliedAlpha: false, + preserveDrawingBuffer: true, + }); + renderer.setClearColor(0x000000, 0); + renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 1.5)); + + const scene = new THREE.Scene(); + const camera = new THREE.OrthographicCamera(-5, 5, 3, -3, 0.1, 100); + camera.position.z = 12; + + const geometry = new THREE.IcosahedronGeometry(3, 0); + const material = new THREE.MeshStandardMaterial({ + color: 0xE34A32, + roughness: 0.3, + metalness: 0.6, + flatShading: true, + }); + const mesh = new THREE.Mesh(geometry, material); + mesh.scale.setScalar(0.145); + scene.add(mesh); + + const keyLight = new THREE.DirectionalLight(0xffffff, 2.3); + keyLight.position.set(-2, 5, 8); + scene.add(keyLight); + const rimLight = new THREE.DirectionalLight(0xffc7bb, 1.5); + rimLight.position.set(6, -2, 5); + scene.add(rimLight); + scene.add(new THREE.AmbientLight(0xffffff, 1.2)); + + let anchor = 0; + let frameId = 0; + let frameCount = 0; + let startedAt = 0; + let pausedAt = 0; + let pausedDuration = 0; + let finished = false; + let inView = true; + + const debug = { + geometry: 'IcosahedronGeometry', + radius: 3, + detail: 0, + color: '#E34A32', + roughness: 0.3, + metalness: 0.6, + flatShading: true, + desktopAnchorX: 4.5, + mobileAnchorX: 0, + dpr: renderer.getPixelRatio(), + frameCount: 0, + rafActive: false, + reducedMotion, + }; + + function resize() { + const parent = canvas.parentElement; + const width = Math.max(1, parent?.clientWidth || canvas.clientWidth || 1); + const height = Math.max(1, parent?.clientHeight || canvas.clientHeight || 1); + renderer.setSize(width, height, false); + anchor = window.innerWidth >= 768 ? 4.5 : 0; + debug.anchorX = anchor; + const worldWidth = 10; + const worldHeight = worldWidth / (width / height); + camera.left = anchor - worldWidth / 2; + camera.right = anchor + worldWidth / 2; + camera.top = worldHeight / 2; + camera.bottom = -worldHeight / 2; + camera.position.x = anchor; + camera.updateProjectionMatrix(); + } + + function renderFrame(progress, seconds, shouldFloat) { + mesh.position.x = anchor; + mesh.position.y = -1.86 + (shouldFloat ? Math.sin(seconds * 1.2) * 0.3 : 0); + mesh.rotation.x = seconds * 0.55; + mesh.rotation.y = seconds * 0.8; + renderer.render(scene, camera); + frameCount += 1; + debug.frameCount = frameCount; + debug.positionX = mesh.position.x; + debug.positionY = mesh.position.y; + } + + function stop() { + if (frameId) cancelAnimationFrame(frameId); + frameId = 0; + debug.rafActive = false; + } + + function tick(now) { + if (!inView || document.hidden) { + stop(); + pausedAt = now; + return; + } + const elapsed = Math.max(0, now - startedAt - pausedDuration); + const progress = Math.min(1, elapsed / DURATION_MS); + renderFrame(progress, elapsed / 1000, progress < 1); + if (progress < 1) { + debug.rafActive = true; + frameId = requestAnimationFrame(tick); + } else { + finished = true; + stop(); + onStateChange?.('complete', debug); + } + } + + function replay() { + stop(); + finished = false; + pausedDuration = 0; + pausedAt = 0; + startedAt = performance.now(); + if (reducedMotion) { + renderFrame(1, DURATION_MS / 1000, false); + finished = true; + onStateChange?.('static', debug); + return; + } + debug.rafActive = true; + frameId = requestAnimationFrame(tick); + } + + function seek(phase) { + stop(); + const positions = [0.29, 0.61, 1]; + const progress = positions[Math.max(0, Math.min(2, phase))]; + renderFrame(progress, progress * DURATION_MS / 1000, false); + finished = true; + onStateChange?.('seek', debug); + } + + const resizeObserver = new ResizeObserver(() => { + resize(); + if (finished || reducedMotion) renderFrame(1, DURATION_MS / 1000, false); + }); + resizeObserver.observe(canvas.parentElement || canvas); + + const intersectionObserver = new IntersectionObserver(([entry]) => { + inView = entry.isIntersecting; + if (inView && !finished && !reducedMotion && !frameId) { + const now = performance.now(); + if (pausedAt) pausedDuration += now - pausedAt; + pausedAt = 0; + debug.rafActive = true; + frameId = requestAnimationFrame(tick); + } + }, {threshold: 0.05}); + intersectionObserver.observe(canvas); + + function handleVisibility() { + if (document.hidden) { + if (!finished) pausedAt = performance.now(); + stop(); + } else if (!finished && inView && !reducedMotion) { + const now = performance.now(); + if (pausedAt) pausedDuration += now - pausedAt; + pausedAt = 0; + debug.rafActive = true; + frameId = requestAnimationFrame(tick); + } + } + document.addEventListener('visibilitychange', handleVisibility); + + resize(); + replay(); + onStateChange?.('ready', debug); + + return { + debug, + replay, + seek, + destroy() { + stop(); + resizeObserver.disconnect(); + intersectionObserver.disconnect(); + document.removeEventListener('visibilitychange', handleVisibility); + geometry.dispose(); + material.dispose(); + renderer.dispose(); + }, + }; +} diff --git a/frontend/launch-control-motion.css b/frontend/launch-control-motion.css new file mode 100644 index 0000000..6ae9ac5 --- /dev/null +++ b/frontend/launch-control-motion.css @@ -0,0 +1,65 @@ +.lc-motion{width:100%;min-width:0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:-.012em} +.lc-motion [data-astryx-theme="launch-control"]{width:100%;display:block} +.trace-card{width:100%!important;position:relative;overflow:hidden!important;border-color:rgba(23,23,25,.1)!important;border-radius:24px!important;background:#FFFFFF!important;box-shadow:0 1px 0 rgba(255,255,255,.95) inset,0 28px 68px -42px rgba(35,36,39,.55)!important} +.trace-topbar{min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border-bottom:1px solid rgba(23,23,25,.08);font-size:11px} +.trace-run-state{display:flex;align-items:center;gap:8px;color:#232427;font-weight:650} +.trace-boundary{color:#6B6D72} +.trace-progress{height:3px;overflow:hidden} +.trace-progress>div{gap:0!important} +.trace-progress [role="progressbar"]{height:3px!important;border-radius:0!important} +.trace-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;padding:0 10px;border-bottom:1px solid rgba(23,23,25,.08);list-style:none} +.trace-steps li{min-width:0;position:relative} +.trace-steps li:not(:last-child):after{content:"";position:absolute;right:-1px;top:16px;width:1px;height:28px;background:rgba(23,23,25,.08)} +.trace-steps button{width:100%;min-height:60px;display:flex;align-items:center;gap:9px;padding:8px 10px;border:0;color:#6B6D72;background:transparent;text-align:left;cursor:pointer;transition:color 125ms ease,background-color 125ms ease} +.trace-steps button:hover{background:#F7F7F5} +.trace-steps button[aria-current="step"]{color:#232427;background:#FFF8F6} +.trace-steps button b{width:24px;height:24px;flex:none;display:grid;place-items:center;border:1px solid rgba(23,23,25,.12);border-radius:50%;font-size:9px;font-weight:720} +.trace-steps button[aria-current="step"] b{border-color:rgba(227,74,50,.24);color:#B93624;background:#FFF0EC} +.trace-steps li[data-complete="true"] b{color:#287A4D;background:#EEF7F1;border-color:rgba(40,122,77,.2)} +.trace-steps button span{min-width:0;display:grid;line-height:1.05} +.trace-steps button strong{font-size:11px} +.trace-steps button small{margin-top:4px;color:#8A8C91;font-size:9px;white-space:nowrap} +.trace-workspace{height:248px;position:relative;isolation:isolate;contain:paint;overflow:hidden;padding:16px 16px 68px;background:linear-gradient(180deg,#FCFCFB,#F8F8F6)} +.trace-panel{min-height:154px;position:relative;z-index:5;animation:trace-panel-in 550ms cubic-bezier(.24,1,.4,1) both} +.trace-panel-head{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:11px} +.trace-panel-head>div{min-width:0;display:grid;line-height:1.1} +.trace-panel-head small,.trace-route-grid small,.trace-receipt-copy small{color:#8A8C91;font-size:9px;font-weight:680;letter-spacing:.055em;text-transform:uppercase} +.trace-panel-head strong{margin-top:5px;color:#232427;font-size:14px;letter-spacing:-.025em} +.trace-panel-head>span{color:#8A8C91;font:550 9px/1.2 ui-monospace,"SFMono-Regular",monospace} +.trace-rows{overflow:hidden;border:1px solid rgba(23,23,25,.08);border-radius:11px;background:#fff} +.trace-row{min-height:31px;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:10px;padding:5px 10px;border-bottom:1px solid rgba(23,23,25,.07);color:#55575C;font-size:9px;opacity:0;transform:translateY(8px);animation:trace-row-in 400ms cubic-bezier(.24,1,.4,1) forwards} +.trace-row:nth-child(2){animation-delay:90ms}.trace-row:nth-child(3){animation-delay:180ms}.trace-row:last-child{border-bottom:0} +.trace-row code{color:#232427;font:650 9px/1 ui-monospace,"SFMono-Regular",monospace} +.trace-row em{color:#6B6D72;font-style:normal} +.trace-row.is-exception{box-shadow:3px 0 0 #E34A32 inset;background:#FFF9F7} +.trace-row [class*="x"]{font-size:8px!important} +.trace-reason{margin:8px 0 0!important;color:#B93624!important;font-size:9px!important;font-weight:620} +.trace-reason span{margin-right:5px} +.trace-route-grid{min-height:108px;display:grid;grid-template-columns:1fr 28px 1fr;align-items:stretch;gap:8px} +.trace-route-grid>div:not(.trace-arrow){display:flex;flex-direction:column;justify-content:center;padding:12px;border:1px solid rgba(23,23,25,.08);border-radius:11px;background:#fff} +.trace-route-grid strong{margin-top:5px;color:#232427;font-size:11px;line-height:1.15} +.trace-route-grid span{margin-top:5px;color:#6B6D72;font-size:8px;line-height:1.35} +.trace-arrow{display:grid;place-items:center;color:#E34A32;font-size:18px;animation:trace-arrow 700ms cubic-bezier(.24,1,.4,1) both} +.trace-prove{min-height:138px;display:grid;grid-template-columns:44px minmax(0,1fr) 142px;align-items:center;gap:12px;padding:16px;border:1px solid rgba(23,23,25,.08);border-radius:13px;background:#fff;box-shadow:0 16px 30px -26px rgba(35,36,39,.45)} +.trace-receipt-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:#B93624;background:#FFF0EC;font-size:18px;font-weight:760} +.trace-receipt-copy{min-width:0;display:grid} +.trace-receipt-copy strong{margin-top:5px;color:#232427;font-size:12px;line-height:1.15} +.trace-receipt-copy span{margin-top:6px;color:#6B6D72;font-size:8px;line-height:1.35} +.trace-receipt-data{margin:0;padding-left:12px;border-left:1px solid rgba(23,23,25,.08)} +.trace-receipt-data div{display:grid;grid-template-columns:54px minmax(0,1fr);gap:5px;padding:3px 0;font:500 8px/1.3 ui-monospace,"SFMono-Regular",monospace} +.trace-receipt-data dt{color:#8A8C91}.trace-receipt-data dd{min-width:0;margin:0;color:#232427;overflow:hidden;text-overflow:ellipsis} +.trace-rail{position:absolute;z-index:1;left:13%;right:13%;bottom:37px;height:1px;background:linear-gradient(90deg,rgba(227,74,50,.18),rgba(227,74,50,.72),rgba(227,74,50,.18))} +.trace-rail span{position:absolute;top:-5px;width:11px;height:11px;border:2px solid #E34A32;border-radius:50%;background:#FCFCFB}.trace-rail span:nth-child(1){left:0}.trace-rail span:nth-child(2){left:50%;transform:translateX(-50%)}.trace-rail span:nth-child(3){right:0} +.trace-mesh{width:100%;height:100%;position:absolute;z-index:4;inset:0;display:block;pointer-events:none} +.trace-token-fallback{width:18px;height:18px;position:absolute;z-index:3;right:12%;bottom:28px;background:linear-gradient(135deg,#F05A3C,#C93A24);clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);box-shadow:0 8px 15px rgba(227,74,50,.3)} +.lc-motion[data-webgl="ready"] .trace-token-fallback{display:none} +.trace-footer{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-top:1px solid rgba(23,23,25,.08);background:#fff} +.trace-footer>span{color:#6B6D72;font-size:9px} +.trace-replay{min-height:44px!important;border-radius:999px!important} +.trace-static-summary,.trace-live{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important} +@keyframes trace-panel-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}} +@keyframes trace-row-in{to{opacity:1;transform:translateY(0)}} +@keyframes trace-arrow{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}} +@media(max-width:1080px){.trace-card{min-height:408px!important}.trace-workspace{height:230px}.trace-route-grid span{display:none}.trace-prove{grid-template-columns:40px 1fr}.trace-receipt-data{display:none}} +@media(max-width:640px){.trace-topbar{align-items:flex-start}.trace-boundary{max-width:116px;text-align:right}.trace-steps{padding:0 4px}.trace-steps button{min-height:62px;gap:6px;padding:7px 5px}.trace-steps button b{width:21px;height:21px}.trace-steps button small{display:none}.trace-workspace{height:246px;padding:14px 12px 70px}.trace-route-grid{grid-template-columns:1fr 20px 1fr;gap:4px}.trace-route-grid>div:not(.trace-arrow){padding:9px}.trace-route-grid span{display:none}.trace-prove{grid-template-columns:38px 1fr;padding:12px}.trace-receipt-mark{width:36px;height:36px}.trace-footer{min-height:64px}.trace-footer>span{display:none}.trace-replay{width:100%!important}} +@media(prefers-reduced-motion:reduce){.trace-panel,.trace-row,.trace-arrow{animation:none!important;opacity:1!important;transform:none!important}.trace-steps button,.trace-replay{transition-duration:0s!important}} diff --git a/frontend/launch-control-motion.jsx b/frontend/launch-control-motion.jsx new file mode 100644 index 0000000..c3e0d7c --- /dev/null +++ b/frontend/launch-control-motion.jsx @@ -0,0 +1,226 @@ +import React, {useEffect, useRef, useState} from 'react'; +import {createRoot} from 'react-dom/client'; +import {Badge} from '@astryxdesign/core/Badge'; +import {Button} from '@astryxdesign/core/Button'; +import {Card} from '@astryxdesign/core/Card'; +import {ProgressBar} from '@astryxdesign/core/ProgressBar'; +import {StatusDot} from '@astryxdesign/core/StatusDot'; +import {Theme} from '@astryxdesign/core/theme'; +import {launchControlTheme} from './generated/launch-control.js'; +import '@astryxdesign/core/reset.css'; +import '@astryxdesign/core/astryx.css'; +import './generated/launch-control-theme.css'; +import './launch-control-motion.css'; + +const PHASES = [ + {label: 'Detect', detail: 'Exception found'}, + {label: 'Route', detail: 'Owner assigned'}, + {label: 'Prove', detail: 'Receipt saved'}, +]; + +let meshController = null; + +function useReducedMotion() { + const [reduced, setReduced] = useState(() => window.matchMedia('(prefers-reduced-motion: reduce)').matches); + useEffect(() => { + const query = window.matchMedia('(prefers-reduced-motion: reduce)'); + const update = () => setReduced(query.matches); + query.addEventListener('change', update); + return () => query.removeEventListener('change', update); + }, []); + return reduced; +} + +function DetectPanel() { + return
    +
    Validator pass100 creative rows checked
    0.8 s
    +
    +
    cr_004Summer feed 04Ready
    +
    cr_007Launch offer 07
    +
    cr_010Stories cut 10Ready
    +
    +

    Possible duplicate found before launch.

    +
    ; +} + +function RoutePanel() { + return
    +
    Exception routecr_007 needs a named owner
    +
    +
    Why it stoppedPossible duplicateSame destination and offer, different asset.
    + +
    Decision ownerCreative Ops ManagerAmbiguous intent stays human.
    +
    +
    ; +} + +function ProvePanel() { + return
    + +
    Recorded decisionHuman confirmed · Keep bothSaved locally with an inspectable receipt.
    +
    creative
    cr_007
    remaining
    9
    batch
    78f20843aea8a367
    +
    ; +} + +function PhasePanel({phase}) { + if (phase === 0) return ; + if (phase === 1) return ; + return ; +} + +function MeshCanvas({active, reducedMotion, runId, onWebGL}) { + const canvasRef = useRef(null); + useEffect(() => { + if (!active || !canvasRef.current) return undefined; + if (navigator.connection?.saveData) { + window.__launchControlMotion.fallback = 'save-data'; + return undefined; + } + let cancelled = false; + let localController = null; + import('./hero-mesh.js').then(({mountDecisionMesh}) => { + if (cancelled || !canvasRef.current) return; + try { + localController = mountDecisionMesh(canvasRef.current, { + reducedMotion, + onStateChange(state, debug) { + window.__launchControlMotion.mesh = debug; + window.__launchControlMotion.state = state; + }, + }); + meshController = localController; + window.__launchControlMotion.mesh = localController.debug; + window.__launchControlMotion.ready = true; + window.dispatchEvent(new CustomEvent('launch-control-motion-ready')); + onWebGL(true); + } catch (error) { + window.__launchControlMotion.fallback = 'webgl-unavailable'; + window.__launchControlMotion.error = String(error); + window.__launchControlMotion.ready = true; + } + }).catch((error) => { + window.__launchControlMotion.fallback = 'chunk-unavailable'; + window.__launchControlMotion.error = String(error); + window.__launchControlMotion.ready = true; + }); + return () => { + cancelled = true; + localController?.destroy(); + if (meshController === localController) meshController = null; + }; + }, [active, reducedMotion, runId, onWebGL]); + return