Cn&&n.push([o[1],i[1]])}return n}function bY(e,t){const n=[];for(const r of e)for(const o of t){const i=Math.max(r[0],o[0]),s=Math.min(r[1],o[1]);s-i>Cn&&n.push([i,s])}return k1(n)}function yY(e,t){const n=[],r=[];for(const s of e)al(s.rightX,t.leftX,sc)&&!s.isRightExterior&&n.push(...$N(s.outerLoop,t.leftX)),al(s.leftX,t.rightX,sc)&&!s.isLeftExterior&&r.push(...$N(s.outerLoop,t.rightX));const o=k1(n),i=k1(r);return o.length&&i.length?bY(o,i):o.length?o:i.length?i:[[t.bendLine.yMin,t.bendLine.yMax]].filter(([s,a])=>a-s>Cn)}function xY(e,t){return Na(LO(Math.max(e,Cn),t),XX,YX)}function Es(e,t,n,r){const o=(e.angleRadians<0?-1:1)*e.neutralRadius,i=t-o;return[e.leftX-i*Math.sin(r),o+i*Math.cos(r),n]}function GN(e,t,n,r,o,i,s,a,l,u){GO(e,t,n,Es(r,o,i,a),Es(r,o,i,l),Es(r,o,s,l),Es(r,o,s,a),u)}function UN(e,t,n,r,o,i,s,a,l){GO(e,t,n,Es(r,o,i,s),Es(r,o,i,a),Es(r,-o,i,a),Es(r,-o,i,s),l)}function WN(e,t,n,r,o,i,s,a){Sp(e,t,n,Es(r,o,i,s),Es(r,o,i,a))}function HN(e,t,n,r,o,i,s){Sp(e,t,n,Es(r,o,i,s),Es(r,-o,i,s))}function SY(e,t,n,r,o,i,s){const{bendProfile:a}=o,l=a.angleRadians;if(Math.abs(l)<=1e-6)return;const[u,d]=i;if(d-u<=Cn)return;const m=o.matrix,p=xY(a.neutralRadius+s,l),g=l<0,x=l>0,y=l<0;for(let S=0;SMath.abs(O1(l))-Math.abs(O1(a))),o=Zd(r[0]||[],{clockwise:!0});if(!o.length)throw new Error("DXF preview requires one outer contour");const i=r.slice(1).map(a=>Zd(a,{clockwise:!1})),s=BO(n);return eY(s),{loops:r,outerLoop:o,holeLoops:i,bendLines:s}}function CY(e,t,n=null){const{loops:r,outerLoop:o,holeLoops:i,bendLines:s}=vY(e),a=py(t,Ji(e?.defaultThicknessMm,$p)),l=Rb(e,n),u=a/2;let d,m,p,g;if(s.length){const R=e0(o),v=lY(R,s,l,u);({strips:d}=uY(o,i,v)),{transforms:g,bendTransforms:m,guideLineSegments:p}=gY(v,u)}else d=aY(r),g=[new qi().identity()],m=[],p=[];const x=[],y=[],S=[],b=[];for(const R of d){const v=g[R.transformIndex]||g[g.length-1]||new qi().identity(),C=R.outerLoop.map(([K,J])=>new FS(K,J)),T=R.holeLoops.map(K=>K.map(([J,G])=>new FS(J,G))),k=fR.triangulateShape(C,T),z=C.concat(...T);for(const K of k){const J=z[K[0]],G=z[K[1]],Q=z[K[2]];hy(x,y,v,[J.x,u,J.y],[G.x,u,G.y],[Q.x,u,Q.y],!0),hy(x,y,v,[J.x,-u,J.y],[G.x,-u,G.y],[Q.x,-u,Q.y],!1)}const Y=(K,J)=>fY(K,J,R);BN(x,y,v,R.outerLoop,u,-u,Y),VN(S,b,v,R.outerLoop,u,-u,Y);for(const K of R.holeLoops)BN(x,y,v,K,u,-u),VN(S,b,v,K,u,-u)}EY(x,y,S,b,d,m,u);const I=x.length/3,A=new Float32Array(x.length+S.length);A.set(x,0),A.set(S,x.length);const N=new Uint32Array(b.length);for(let R=0;Rsvg]:rotate-180",e),...n,children:[t,c.jsx(jy,{className:"size-4 shrink-0 text-[var(--ui-text-faint)]"})]})})}function AY({className:e,children:t,...n}){return c.jsx(Iz,{"data-slot":"accordion-content",className:"overflow-hidden text-sm",...n,children:c.jsx("div",{className:H("pb-0",e),children:t})})}function ch({className:e,viewportClassName:t,scrollbars:n="vertical",type:r,scrollHideDelay:o,children:i,...s}){const a=Array.isArray(n)?n:[n].filter(Boolean),l=a.includes("horizontal"),u=a.includes("vertical"),d=l?"overflow-x-auto":"overflow-x-hidden",m=u?"overflow-y-auto":"overflow-y-hidden";return c.jsx("div",{"data-slot":"scroll-area",className:H("relative",e),...s,children:c.jsx("div",{"data-slot":"scroll-area-viewport",className:H("size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",d,m,t),children:c.jsx("div",{className:H("min-w-full",l?"w-max":"w-full"),children:i})})})}function NY({className:e,thumbClassName:t,...n}){return c.jsx(Az,{"data-slot":"switch",className:H("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input shadow-xs transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80",e),...n,children:c.jsx(Nz,{"data-slot":"switch-thumb",className:H("pointer-events-none block size-4 rounded-full bg-background ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0",t)})})}const _Y=365,UO=240,Kg="min(28rem, calc(100vw - 0.75rem))",TY="min(24rem, calc(100vw - 0.75rem))",RY=["[&_[data-slot=input]]:!text-[11px]","[&_[data-slot=select-trigger]]:!text-[11px]","[&_[data-slot=color-picker-trigger]]:!text-[11px]"].join(" "),PY="px-3 py-2 text-sm font-normal text-sidebar-foreground/90",OY="py-1",kY="space-y-1 px-3 py-0.5",t0="space-y-2",DY=`${t0} py-3`,jY="space-y-1 px-3 py-0.5",LY="px-3 py-0.5",Nu="block min-w-0 truncate text-[11px] font-medium leading-4 text-muted-foreground",FY="px-3 py-1 text-[11px] font-normal leading-4 text-sidebar-foreground",zY="shrink-0 rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium leading-none tabular-nums text-muted-foreground",BY=["h-7 w-20 shrink-0 rounded-md border border-input bg-transparent px-1.5 py-1 text-right text-[11px] font-medium leading-none tabular-nums text-foreground shadow-xs outline-none","m-0 box-border min-w-0 appearance-none transition-[color,box-shadow,border-color] placeholder:text-muted-foreground","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:opacity-50 dark:bg-input/30"].join(" "),uh="h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground",VY="size-7 text-muted-foreground hover:text-foreground",n0="!h-7 px-2 text-[11px] !text-foreground",$Y="h-7 px-2 !text-[11px] font-medium leading-none tabular-nums text-foreground",GY=["h-4 w-7 border shadow-none","data-[state=checked]:border-primary/75 data-[state=checked]:bg-primary","data-[state=unchecked]:!border-[rgb(115_125_140_/_0.52)] data-[state=unchecked]:!bg-[rgb(115_125_140_/_0.22)]","dark:data-[state=unchecked]:!border-[rgb(148_163_184_/_0.44)] dark:data-[state=unchecked]:!bg-[rgb(148_163_184_/_0.18)]"].join(" "),UY=["!size-3 shadow-sm","data-[state=checked]:!translate-x-3 data-[state=checked]:!bg-background","data-[state=unchecked]:!translate-x-0 data-[state=unchecked]:!bg-[rgb(115_125_140)]","dark:data-[state=unchecked]:!bg-[rgb(148_163_184)]"].join(" "),D1=["text-muted-foreground hover:text-foreground","data-[state=on]:!bg-accent data-[state=on]:!text-foreground data-[state=on]:font-semibold","data-[state=on]:ring-1 data-[state=on]:ring-inset data-[state=on]:ring-border/80","data-[state=on]:hover:!bg-accent data-[state=on]:hover:!text-foreground"].join(" "),Us=["h-4","[&_[data-slot=slider-track]]:h-px","[&_[data-slot=slider-track]]:rounded-none","[&_[data-slot=slider-track]]:bg-border","[&_[data-slot=slider-range]]:bg-primary","[&_[data-slot=slider-thumb]]:h-2.5","[&_[data-slot=slider-thumb]]:w-1.5","[&_[data-slot=slider-thumb]]:rounded-[1px]","[&_[data-slot=slider-thumb]]:border-primary","[&_[data-slot=slider-thumb]]:bg-background","[&_[data-slot=slider-thumb]]:shadow-none","[&_[data-slot=slider-thumb]]:ring-0","[&_[data-slot=slider-thumb]]:hover:border-primary/85","[&_[data-slot=slider-thumb]]:hover:ring-1","[&_[data-slot=slider-thumb]]:hover:ring-ring/25","[&_[data-slot=slider-thumb]]:focus-visible:ring-2","[&_[data-slot=slider-thumb]]:focus-visible:ring-ring/30"].join(" ");function ci({value:e,title:t,children:n,className:r,contentClassName:o,triggerClassName:i,triggerProps:s,...a}){return c.jsxs(MY,{value:e,className:H("border-border",r),...a,children:[c.jsx(IY,{className:H(PY,i),...s,children:t}),c.jsx(AY,{className:H(OY,o),children:n})]})}function bo({title:e,trailing:t=null,children:n,className:r,contentClassName:o,hideFirstSeparator:i=!0}){return c.jsxs("div",{className:H("py-2.5",i&&"first:pt-2 first:[&_.cad-sheet-subsection-separator]:hidden",r),children:[c.jsx("div",{className:"cad-sheet-subsection-separator mx-3 mb-2 h-px bg-border/60"}),c.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-2 px-3 pb-1 text-[12px] font-normal leading-5 text-sidebar-foreground/80",children:[c.jsx("span",{className:"min-w-0 truncate",children:e}),t?c.jsx("span",{className:"shrink-0",children:t}):null]}),c.jsx("div",{className:H(t0,o),"data-file-sheet-row-stack":"",children:n})]})}function WY({title:e,children:t,className:n,contentClassName:r}){return c.jsxs("div",{className:H("py-1",n),"data-file-sheet-subsubsection":"",children:[c.jsx("div",{className:FY,children:e}),c.jsx("div",{className:H(t0,r),"data-file-sheet-row-stack":"",children:t})]})}function r0({children:e,className:t}){return c.jsx("div",{className:H(DY,t),"data-file-sheet-section-body":"","data-file-sheet-row-stack":"",children:e})}function cn({label:e,value:t,trailing:n,children:r,className:o,contentClassName:i,labelClassName:s,rowKind:a="control"}){return c.jsxs("div",{className:H(kY,o),"data-file-sheet-control-row":"","data-file-sheet-row-kind":a,children:[e!=null||t!=null||n!=null?c.jsxs("div",{className:"flex min-h-4 items-center justify-between gap-2",children:[e!=null?c.jsx("span",{className:H(Nu,s),children:e}):c.jsx("span",{}),n??(t!=null?c.jsx("span",{className:zY,children:t}):null)]}):null,c.jsx("div",{className:H("min-w-0",i),children:r})]})}function ui(e,{fallback:t=0,min:n=-1/0,max:r=1/0,integer:o=!1}={}){const s=String(e??"").trim().match(/[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i),a=Number.isFinite(Number(t))?Number(t):0,l=s?Number(s[0]):NaN,u=Number.isFinite(Number(n))?Number(n):-1/0,d=Number.isFinite(Number(r))?Number(r):1/0,m=Number.isFinite(l)?l:a,p=Math.min(Math.max(m,u),Math.max(u,d));return o?Math.round(p):p}function Zw({value:e,onValueCommit:t,disabled:n=!1,ariaLabel:r,inputMode:o="decimal",className:i,style:s}){const a=f.useRef(null),l=String(e??""),[u,d]=f.useState(l),[m,p]=f.useState(!1),g=f.useRef(!1),x=f.useRef(!1),y=m?u:l;f.useEffect(()=>{m||d(l)},[l,m]),f.useEffect(()=>{!m||!x.current||(x.current=!1,a.current?.select?.())},[m,y]);const S=b=>{b?.select?.(),typeof window<"u"&&window.requestAnimationFrame?.(()=>b?.select?.())};return c.jsx("input",{ref:a,type:"text",inputMode:o,value:y,disabled:n,"data-editing":m?"true":"false",onChange:b=>{d(b.target.value)},onFocus:b=>{x.current=!0,p(!0),S(b.currentTarget)},onClick:b=>{x.current=!0,p(!0),S(b.currentTarget)},onMouseUp:b=>{b.preventDefault()},onBlur:()=>{if(p(!1),g.current){g.current=!1;return}t?.(u)},onKeyDown:b=>{b.key==="Enter"&&b.currentTarget.blur(),b.key==="Escape"&&(g.current=!0,d(l),b.currentTarget.blur())},className:H(BY,i),style:{borderColor:m?"var(--ring)":void 0,...s},"aria-label":r})}function Ni({label:e,value:t,trailing:n,onValueCommit:r,valueInputProps:o,children:i,className:s,contentClassName:a,labelClassName:l}){const u=n??(r?c.jsx(Zw,{value:t,onValueCommit:r,...o}):null);return c.jsx(cn,{label:u?null:e,value:null,className:H(jY,s),contentClassName:H(u?"space-y-0":"space-y-1",a),labelClassName:l,rowKind:"slider",children:u?c.jsxs("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-x-2","data-file-sheet-slider-input-row":"",children:[c.jsxs("div",{className:"min-w-0 pr-3",children:[e!=null?c.jsx("span",{className:H(Nu,"block h-3 leading-3",l),children:e}):null,c.jsx("div",{className:H("min-w-0",e!=null&&"-mt-0.5"),children:i})]}),u]}):i})}function HY({label:e,description:t,children:n,className:r,labelClassName:o}){return c.jsxs("div",{className:H(LY,r),"data-file-sheet-control-row":"","data-file-sheet-row-kind":"inline",children:[c.jsxs("div",{className:"flex min-h-7 max-w-full items-center justify-between gap-3",children:[c.jsx("span",{className:H(Nu,o),children:e}),c.jsx("span",{className:"shrink-0",children:n})]}),t?c.jsx("p",{className:"mt-0.5 max-w-[28rem] text-[11px] leading-4 text-muted-foreground",children:t}):null]})}function j1({checked:e,onCheckedChange:t,disabled:n=!1,ariaLabel:r,className:o}){return c.jsx(NY,{checked:e,disabled:n,onCheckedChange:t,className:H(GY,o),thumbClassName:UY,"aria-label":r})}function Mi({label:e,checked:t,onCheckedChange:n,disabled:r=!1,description:o,className:i,labelClassName:s,ariaLabel:a}){return c.jsx(HY,{label:e,description:o,className:i,labelClassName:s,children:c.jsx(j1,{checked:t,onCheckedChange:n,disabled:r,ariaLabel:a||e})})}function KY(e){const t=Number(e);return!Number.isFinite(t)||t<=0?_Y:Math.max(UO,t)}function xf({open:e,title:t,isDesktop:n,width:r,onOpenChange:o,onStartResize:i,bodyClassName:s,children:a}){const l=`min(${KY(r)}px, ${Kg})`,u=n?{width:l,flexBasis:l,minWidth:`min(${UO}px, ${Kg})`,maxWidth:Kg}:{width:TY,maxWidth:Kg},d=c.jsx(ch,{className:H("min-h-0 flex-1",RY,s),type:"auto",viewportClassName:"h-full",children:a});return n?e?c.jsxs("aside",{className:H("cad-glass-surface pointer-events-auto z-30 flex h-full max-w-[calc(100vw_-_0.75rem)] flex-col border-l border-sidebar-border text-sidebar-foreground",n?"relative shrink-0":"absolute inset-y-0 right-0 shadow-xl"),style:u,"aria-label":t,children:[n&&typeof i=="function"?c.jsx("button",{type:"button","aria-label":`Resize ${t} sidebar`,title:"Resize sidebar",onPointerDown:i,className:"group/file-sheet-resize absolute inset-y-0 -left-1.5 z-30 flex h-auto w-3 cursor-col-resize touch-none items-stretch justify-center rounded-none px-0 py-0 hover:bg-transparent",children:c.jsx("span",{className:"my-2 w-px rounded-full bg-transparent transition-colors group-hover/file-sheet-resize:bg-sidebar-border group-focus-visible/file-sheet-resize:bg-ring"})}):null,d]}):null:c.jsx(_R,{open:e,onOpenChange:o,children:c.jsxs(TR,{side:"right",showCloseButton:!1,className:"cad-glass-surface gap-0 p-0 text-sidebar-foreground",style:u,"aria-label":t,children:[c.jsxs(RR,{className:"sr-only",children:[c.jsx(PR,{children:t}),c.jsx(OR,{children:"Inspect and adjust the selected file."})]}),d]})})}const bt=Object.freeze({FILE_STATUS:"status",DXF:"dxf",GCODE_TOOLPATH:"toolpath",GCODE_FEATURES:"features",GCODE_STATS:"stats",GCODE_BOUNDS:"bounds",STEP_TREE:"tree",STEP_PARAMETERS:"parameters",ROBOT_SDF:"sdf",ROBOT_MOTION:"motion",ROBOT_JOINTS:"joints",IMPLICIT_GRAPHICS:"graphics",THEME_DISPLAY:"display",THEME_APPEARANCE:"appearance",FILE_METADATA:"metadata"}),ld=Object.freeze([bt.THEME_DISPLAY,bt.THEME_APPEARANCE]);function dh(e){return String(e||"").trim()}function L1(e){return Array.isArray(e)?[...new Set(e.map(dh).filter(Boolean))]:[]}function XY(e){return e==="plate"||e==="bends"?bt.DXF:e}function YY(e,t={}){const n=dh(e),r=t.isSdf===!0||n==="sdf",o=t.showJoints!==!1;switch(n){case"dxf":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],bt.DXF,...ld,bt.FILE_METADATA];case"gcode":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],bt.GCODE_TOOLPATH,bt.GCODE_FEATURES,bt.GCODE_STATS,bt.GCODE_BOUNDS,...ld,bt.FILE_METADATA];case"step":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],bt.STEP_TREE,...t.hasStepModulePanel?[bt.STEP_PARAMETERS]:[],...ld,bt.FILE_METADATA];case"urdf":case"srdf":case"sdf":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],...r?[bt.ROBOT_SDF]:[],...t.motionEnabled?[bt.ROBOT_MOTION]:[],...o?[bt.ROBOT_JOINTS]:[],...ld,bt.FILE_METADATA];case"mesh":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],...ld,bt.FILE_METADATA];case"implicit":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],...t.hasImplicitParameterPanel?[bt.STEP_PARAMETERS]:[],bt.IMPLICIT_GRAPHICS,...ld,bt.FILE_METADATA];default:return[]}}function qY(e,t={}){const n=dh(e),r=t.isSdf===!0||n==="sdf",o=t.showJoints!==!1;switch(n){case"dxf":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],bt.DXF];case"gcode":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],bt.GCODE_TOOLPATH];case"step":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],bt.STEP_TREE,...t.hasStepModulePanel?[bt.STEP_PARAMETERS]:[]];case"urdf":case"srdf":case"sdf":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],...r?[bt.ROBOT_SDF]:[],...t.motionEnabled?[bt.ROBOT_MOTION]:[],...o?[bt.ROBOT_JOINTS]:[]];case"mesh":return[...t.hasFileStatus?[bt.FILE_STATUS]:[]];case"implicit":return[...t.hasFileStatus?[bt.FILE_STATUS]:[],...t.hasImplicitParameterPanel?[bt.STEP_PARAMETERS]:[]];default:return[]}}function ma(e,t){const n=new Set(L1(t));return n.size?[...new Set(L1(e).map(XY).filter(r=>n.has(r)))]:[]}function ZY(e,t,n){const r=dh(n),o=ma(e,t);return!r||!L1(t).includes(r)||o.includes(r)?o:[...o,r]}function JY({isDesktop:e=!0,source:t="viewer"}={}){return e||dh(t)!=="viewer"}function Ks(e){return String(e||"").trim()}function QY(e){return Ks(e?.kind).toLowerCase()}function eq(e){if(!e||typeof e!="object")return null;const t=Ks(e.url);return t?{url:t,hash:Ks(e.hash),bytes:Number.isFinite(Number(e.bytes))&&Number(e.bytes)>=0?Number(e.bytes):0}:null}function tq(e,t){const n=e?.relations?.[t];if(!n||typeof n!="object")return null;const r=Ks(n.url);return r?{url:r,hash:Ks(n.hash),bytes:Number.isFinite(Number(n.bytes))&&Number(n.bytes)>=0?Number(n.bytes):0}:null}function Jw(e,t){const n=Ks(t).toLowerCase(),r=QY(e),o=or(e);return n==="urdf"&&r==="srdf"?tq(e,"urdf"):n===r||n===o||o===B.STEP&&["glb","topology","selectortopology","displayedgetopology"].includes(n)||r==="srdf"&&n==="srdf"?eq(e):null}function vn(e,t){return Ks(Jw(e,t)?.url)}function zt(e,t){return Ks(Jw(e,t)?.hash)}function WO(e,t){const n=Number(Jw(e,t)?.bytes);return Number.isFinite(n)&&n>=0?n:0}function Qw(e){return vn(e,Iu(e))}function F1(e){return zt(e,Iu(e))}function nq(e){return WO(e,Iu(e))}function gy(e){return vn(e,"topology")||vn(e,"glb")}function KN(e){return vn(e,"selectorTopology")||gy(e)}function XN(e){return vn(e,"displayEdgeTopology")||gy(e)}function Wp(e){return[zt(e,"urdf"),zt(e,"srdf"),zt(e,"sdf")].filter(Boolean).join(":")}function HO(e){return String(e?.kind==="assembly"?zt(e,"glb"):F1(e))}function rq(e){return zt(e,"selectorTopology")||Ks(e?.hash)}function qc(e){if(or(e)===B.STEP)return!!(vn(e,"glb")&&zt(e,"glb"));const t=Iu(e);return!!(vn(e,t)&&zt(e,t))}function Xg(e){return Ks(e?.kind).toLowerCase()===B.SDF?!!(vn(e,"sdf")&&zt(e,"sdf")):!!(vn(e,"urdf")&&zt(e,"urdf"))}function Qx(e){return!!(or(e)===B.STEP&&vn(e,"glb")&&zt(e,"selectorTopology"))}function YN(e){return!!(or(e)===B.STEP&&vn(e,"glb")&&zt(e,"displayEdgeTopology"))}function vm(e){return!!(vn(e,"dxf")&&zt(e,"dxf"))}function Yg(e){return!!(vn(e,"gcode")&&zt(e,"gcode"))}function oq(e){return or(e)===B.STEP?Ks(e?.moduleUrl):""}const ev=3,iq=Object.freeze(["missing_glb","missing_step_topology","missing_edge_topology","missing_surface_edge_attributes","missing_selector_topology","missing_source_path","missing_step_hash","stale_step_artifact","unsupported_step_topology"]),sq=new Set(iq),KO=/\.(step|stp)$/i;function Jd(e){return String(e||"").trim().replace(/\\/g,"/").replace(/\/+$/,"")}function aq(e){return e?Array.isArray(e)?e:typeof e!="string"&&typeof e[Symbol.iterator]=="function"?Array.from(e):[e]:[]}function XO(e,t){const n=Jd(t);return n&&e.add(n),n}function qg(e,t){const n=XO(e,t);if(!KO.test(n))return;const r=n.lastIndexOf("/"),o=r>=0?`${n.slice(0,r)}/`:"",i=r>=0?n.slice(r+1):n;e.add(`${o}.${i}.glb`)}function lq(e,t){const n=Jd(e),r=Jd(t);return!!(n&&r&&n===r)}function qN(e,t){return t.some(n=>lq(e,n))}function tv(e){const t=Number(e?.failureCount||0);return Number.isFinite(t)&&t>0?Math.trunc(t):0}function cq(e=null,t=e?.artifact){const n=new Set;return qg(n,e?.file),qg(n,e?.rootRelativeFile),qg(n,t?.stepPath),KO.test(Jd(t?.sourcePath))&&qg(n,t?.sourcePath),XO(n,t?.glbPath),[...n]}function by({entry:e=null,artifact:t=e?.artifact,generationState:n=null,activeGenerationFiles:r=[]}={}){const o=cq(e,t);if(String(n?.status||"").trim().toLowerCase()==="loading"){const i=Jd(n?.file);if(!i||o.length===0||qN(i,o))return!0}return aq(r).map(Jd).filter(Boolean).some(i=>qN(i,o))}function uq({entry:e=null,artifact:t=e?.artifact,sourceFormat:n=B.STEP,generationAvailable:r=!0,generationState:o=null,activeGenerationFiles:i=[]}={}){const s={...e||{},artifact:t},a=by({entry:s,artifact:t,generationState:o,activeGenerationFiles:i});return fh(s,n,{generationAvailable:r||a})?a?!0:tv(o)!0,onState:i=()=>{},onFinalError:s=()=>{},threshold:a=ev,validatePayload:l=null}={}){if(typeof r!="function")throw new TypeError("STEP artifact generation requires a generate function.");const u=Math.max(1,Math.trunc(Number(a)||0));let d=Math.min(tv({failureCount:n}),u);for(;d=u?"error":"loading",failureCount:d,attempt:Math.min(d+1,u),error:x};if(i(y),y.status==="error")return s(x,y,g),{status:"error",state:y,error:g}}}return{status:"error",state:{key:e,file:t,status:"error",failureCount:d,attempt:u,error:""}}}function mq(e,t){return t===B.STEP&&e?.artifact?.ok===!1&&(e.artifact.stale===!0||String(e.artifact.error||"")==="stale_step_artifact")}function fh(e,t,{generationAvailable:n=!0}={}){return!n||t!==B.STEP||e?.artifact?.ok?!1:sq.has(String(e?.artifact?.error||""))}function pq(e,t,n={}){return t===B.STEP&&e?.artifact?.ok===!1&&!fh(e,t,n)}function YO(e,{sourceFormat:t="",entryKey:n="",hasMesh:r=!0,hasDxf:o=!0,hasGcode:i=!0,hasImplicit:s=!0,hasUrdf:a=!0,activeGenerationFiles:l=[],activeStepArtifactGenerationFile:u="",activeStepArtifactGenerationFiles:d=[],stepArtifactGenerationAvailable:m=!0}={}){const p=String(t||"").trim().toLowerCase(),g=new Set([...Array.isArray(l)?l:l?[l]:[]].map(Y=>String(Y||"").trim()).filter(Boolean)),x=new Set([...Array.isArray(d)?d:d?[d]:[],...Array.isArray(u)?u:u?[u]:[]].map(Y=>String(Y||"").trim()).filter(Boolean)),y=p===B.DXF?!o:p===B.GCODE?!i:p===B.IMPLICIT?!s:Hi(p)?!a:!r,S=[...x,...g],b=by({entry:e,activeGenerationFiles:S}),N=fh(e,p,{generationAvailable:m||b}),P=mq(e,p),R=String(e?.artifact?.error||"").trim(),v=!!(n&&g.has(n)),C=!v&&!b&&pq(e,p,{generationAvailable:m}),T=!!(N&&!v&&b);return{artifactBuildable:N,artifactGenerating:T,artifactStale:P,artifactWarning:C,loading:v||T||y&&!C&&!N,pending:y,sourceFormat:p,statusLabel:v?"generating":T?"generating artifact":C?P?"artifact stale":R==="missing_glb"?"artifacts missing":"artifact warning":N?"artifact generates on open":y?"pending":"ready"}}function nv(e){const t=String(e?.artifact?.sourceKind||"").trim().toLowerCase();if(t==="python")return t;const n=String(e?.sourceKind||e?.stepSourceKind||"").trim().toLowerCase();return n==="python"?n:""}function mh(e){return String(e??"").trim()}function Po(e){return mh(e).replace(/\\/g,"/").replace(/^\/+/,"").replace(/\/+$/,"")}function ZN(e){return mh(e).replace(/\\/g,"/").replace(/\/+$/,"")}function z1(e){return mh(e).replace(/[?#].*$/,"")}function hq(e){const t=mh(e);if(!t)return"";try{return new URL(t,"http://cad.local").pathname}catch{return z1(t)}}function JN(e,t){const n=ZN(e),r=ZN(t);return!n||!r||n===r?"":n.startsWith(`${r}/`)?n.slice(r.length+1):""}function B1(e,t=""){const n=Po(e),r=Po(t);return!n||!r?n:n===r?"":n.startsWith(`${r}/`)?n.slice(r.length+1):n}function QN(e,t=""){const n=Po(e),r=Po(t);if(!n||!r)return n;const o=r.split("/").filter(Boolean);if(o.pop(),!o.length)return n;const s=`/${o.join("/")}/`,a=`/${n}`,l=a.lastIndexOf(s);return l>=0?a.slice(l+1):n}function Xs(e,t={},{anchorFile:n=""}={}){const r=mh(e);if(!r)return"";const o=JN(z1(r),t?.rootPath);if(o)return Po(o);const i=JN(z1(r),t?.directoryRoot);if(i)return QN(B1(i,t?.rootDir),n);const s=Po(hq(r));return QN(B1(s,t?.rootDir),n)}const V1="cad-viewer:active-dir:v1";function qO(){if(typeof window>"u")return null;try{return window.sessionStorage||null}catch{return null}}function ZO(){const e=qO();if(!e)return"";try{return String(e.getItem(V1)||"").trim()}catch{return""}}function gq(e){const t=qO();if(!t)return;const n=String(e||"").trim();try{n?t.setItem(V1,n):t.removeItem(V1)}catch{}}function rv(e){const t=String(e||"").trim();return gq(t),t}const ph="https://github.com/earthtojake/text-to-cad",bq="https://discord.gg/5FGB9DwJYU",bc="npx skills install earthtojake/text-to-cad";function yq(e=""){return String(e??"").trim().replace(/\\/g,"/").replace(/^\/+/,"").replace(/\/+$/,"")}function JO(e="",t=ph){return yy(e)||yy(t)}function xq(e="",t=bq){return yy(e)||yy(t)}function ov(e="",t=ph){const n=JO(e,t);if(!n)return"";try{const r=new URL(n);if(r.hostname.toLowerCase()!=="github.com")return n.replace(/\/+$/,"");const[,o="",i=""]=r.pathname.split("/");return!o||!i?n.replace(/\/+$/,""):new URL(`/${o}/${i}`,r.origin).href.replace(/\/+$/,"")}catch{return""}}function Sq(e="",t="",n=ph){const r=String(e||"").trim(),o=ov(t,n);return!r||!o?"":`${o}/releases/tag/${encodeURIComponent(r)}`}function Eq(e="",t=ph){const n=ov(e,t);return n?`${n}/releases/latest`:""}function wq(e="",t=ph){const n=ov(e,t);if(!n)return"";try{const r=new URL(n);if(r.hostname.toLowerCase()!=="github.com")return"";const[,o="",i=""]=r.pathname.split("/"),s=decodeURIComponent(o),a=decodeURIComponent(i);return!s||!a?"":`https://api.github.com/repos/${encodeURIComponent(s)}/${encodeURIComponent(a)}/releases/latest`}catch{return""}}function vq(e="",t=""){const n=xy(e),r=xy(t);return!!(n&&r&&QO(r,n)>0)}function Cq(e="",t=""){const n=xy(e),r=xy(t);return!n||!r||QO(r,n)<=0?!1:r.parts[0]>n.parts[0]||r.parts[1]>n.parts[1]}function Mq(e="",t=bc){const n=Aq(e);return/^npx\s+skills\s+install(?:\s+\S+)+$/iu.test(n)?n:String(t||"").trim()}function Iq(e="",t=bc){const n=String(e||""),r=[...Array.from(n.matchAll(/`([^`\r\n]*\bnpx\s+skills\s+install\b[^`\r\n]*)`/giu),o=>o[1]),...Array.from(n.matchAll(/(?:^|\n)\s*([^\r\n]*\bnpx\s+skills\s+install\b[^\r\n]*)/giu),o=>o[1])];for(const o of r){const i=Mq(o,"");if(i)return i}return String(t||"").trim()}function yy(e=""){const t=String(e??"").trim();if(!t)return"";const n=/^[a-z][a-z\d+.-]*:\/\//i.test(t)?t:`https://${t.replace(/^\/+/,"")}`;try{const r=new URL(n);return["http:","https:"].includes(r.protocol)?r.href:""}catch{return""}}function Aq(e=""){return String(e||"").trim().replace(/^`+|`+$/g,"").replace(/^\s*(?:\$|>)\s*/u,"").replace(/\s+/gu," ")}function xy(e=""){const t=String(e??"").trim().replace(/^refs\/tags\//i,"").replace(/^v/i,"");if(!t)return null;const n=t.split("+")[0],[r="",...o]=n.split("-"),i=r.match(/^(\d+)(?:\.(\d+))?(?:\.(\d+))?$/u);return i?{parts:[Number(i[1]),Number(i[2]||0),Number(i[3]||0)],prerelease:o.join("-").split(".").filter(Boolean)}:null}function QO(e,t){for(let n=0;n<3;n+=1){const r=e.parts[n]-t.parts[n];if(r!==0)return r}return Nq(e.prerelease,t.prerelease)}function Nq(e,t){if(!e.length&&!t.length)return 0;if(!e.length)return 1;if(!t.length)return-1;const n=Math.max(e.length,t.length);for(let r=0;r{const a=sv(s);a&&t.add(a)},r=Ep(e);n(r);const o=iv(e),i=Tq(r);return n(Rq(o,i)),t}function Oq(){return yq(_q?.VIEWER_DEFAULT_FILE)||null}function Pb(){if(typeof window>"u")return null;const t=new URLSearchParams(window.location.search).get(Sy);return(typeof t=="string"?Sf(t):"")||null}function kq(){if(typeof window>"u")return null;const t=new URLSearchParams(window.location.search).get(jd);return(typeof t=="string"?String(t).trim():"")||null}function G1(e,t){const n=Sf(t);return n&&e.find(r=>Pq(r).has(n))||null}function Dq({explicitFileParam:e="",matchingEntry:t=null,selectedEntry:n=null,catalogHydrated:r=!1,catalogRefreshing:o=!1}={}){return!Sf(e)||n?!1:t?!0:!r||o}function jq({explicitFileParam:e="",matchingEntry:t=null,selectedEntry:n=null,catalogHydrated:r=!1,catalogRefreshing:o=!1}={}){const i=Sf(e);return!i||n||t||!r||o?"":i}function Lq(e,{defaultFile:t=Oq()}={}){const n=Pb();if(n){const o=G1(e,n);return o?at(o):""}const r=G1(e,Sf(t));return r?at(r):""}function Cm(e,{history:t="replace"}={}){if(typeof window>"u")return;const n=Sf(e),r=new URL(window.location.href);if(r.searchParams.delete("refs"),n){if(r.searchParams.set(Sy,n),r.searchParams.has(jd)){const o=rv(r.searchParams.get(jd));if(o&&ZO()!==o){$1(r,{history:t});return}r.searchParams.delete(jd)}}else r.searchParams.delete(Sy);$1(r,{history:t})}function e_(e,{history:t="replace",preserveFile:n=!1}={}){if(typeof window>"u")return!1;const r=String(e||"").trim(),o=new URL(window.location.href);return o.searchParams.delete("refs"),n||o.searchParams.delete(Sy),r?(o.searchParams.set(jd,r),rv(r)):o.searchParams.delete(jd),$1(o,{history:t})}function ek(e,t){return String(e||"").localeCompare(String(t||""),void 0,{numeric:!0,sensitivity:"base"})}function av(e){const t=at(e);if(!t)return"";const n=t.split("/");return n[n.length-1]||t}function Fq(e){return av(e).replace(/\.step\.json$/i,"").replace(/\.urdf\.json$/i,"").replace(/\.(step|stp|stl|3mf|glb|gcode|dxf|urdf|srdf|sdf|py)$/i,"")}function lv(e){const n=String(e?.rootRelativeFile||at(e)||"").trim().split("/").filter(Boolean);return n.pop(),n.join("/")}function zq(e){const t=av(e),n=/\.([^.]+)$/.exec(t);return String(n?.[1]||"").trim().toLowerCase()}function tk(e){const t=Fq(e);if(!t)return"";const n=String(e?.kind||"").trim().toLowerCase(),o=new Set(["dxf","urdf","srdf","sdf","stl","3mf","glb","gcode","implicit"]).has(n)?n:String(zq(e)||"step").trim().toLowerCase();return o==="dxf"?`${t}.dxf`:o==="urdf"||e?.kind==="urdf"?`${t}.urdf`:o==="srdf"||e?.kind==="srdf"?`${t}.srdf`:o==="sdf"||e?.kind==="sdf"?`${t}.sdf`:o==="stl"||e?.kind==="stl"?`${t}.stl`:o==="3mf"||e?.kind==="3mf"?`${t}.3mf`:o==="glb"||e?.kind==="glb"?`${t}.glb`:o==="gcode"||e?.kind==="gcode"?`${t}.gcode`:o==="implicit"||e?.kind==="implicit"?av(e):`${t}.${o==="stp"?"stp":"step"}`}function dl(e){return tk(e)}function Bq(e,t){const n=dl(e).localeCompare(dl(t),void 0,{numeric:!0,sensitivity:"base"});return n!==0?n:at(e).localeCompare(at(t),void 0,{numeric:!0,sensitivity:"base"})}function t_(e,t){return{id:e,name:t,entries:[],children:new Map}}function nk(e){return{id:e.id,name:e.name,entries:[...e.entries].sort(Bq),directories:[...e.children.values()].map(nk).sort((t,n)=>ek(t.name,n.name))}}function n_(e,{rootName:t="Directory"}={}){const n=t_("",String(t||"Directory"));for(const r of e){const o=lv(r),i=o?o.split("/"):[];let s=n,a="";for(const l of i){a=a?`${a}/${l}`:l;const u=s.children.get(l)||t_(a,l);s.children.set(l,u),s=u}s.entries.push(r)}return nk(n)}function rk(e,t=[]){for(const n of e.directories||[])t.push(n.id),rk(n,t);return t}function Vq(e,t){const n=String(t||"").trim();if(!e)return[];if(!n)return[e];const r=[],o=i=>{if(r.push(i),String(i.id||"")===n)return!0;for(const s of i.directories||[])if(o(s))return!0;return r.pop(),!1};return o(e)?r:[]}function o0(e){return[...(e.directories||[]).map(t=>({type:"directory",key:`directory:${t.id}`,label:t.name,value:t})),...(e.entries||[]).map(t=>({type:"entry",key:`entry:${at(t)}`,label:dl(t),value:t}))].sort((t,n)=>{const r=ek(t.label,n.label);return r!==0?r:t.key.localeCompare(n.key,void 0,{numeric:!0,sensitivity:"base"})})}function $q(e){if(!e)return[];const t=String(e).split("/").filter(Boolean),n=[];let r="";for(const o of t)r=r?`${r}/${o}`:o,n.push(r);return n}function wp(e){return Po(e).split("/").filter(Boolean).pop()||""}function uu(e){const t=String(e||"").trim().replace(/\\/g,"/").replace(/\/+$/,"");return t.startsWith("/")?t:t.replace(/^\/+/,"")}function Gq(e){const t=Po(e).split("/").filter(Boolean);return t.pop(),t.join("/")}function Uq(...e){return e.map(t=>Po(t)).filter(Boolean).join("/")}function ok(e){return wp(e).replace(/\.(step|stp)$/i,".py")}function Wq(e){const t=Gq(e),n=ok(e);return Uq(t,n)}function ik(e){return/\.(step|stp)$/i.test(Po(e))}function Hq(e){try{return wp(new URL(String(e||"")).pathname)}catch{return""}}function i0(e){const t=String(e||"").trim();if(!t)return"";try{const n=new URL(t);return n.protocol==="http:"||n.protocol==="https:"?n.toString():""}catch{return""}}function Kq(e={}){return String(e?.backend||"").trim().toLowerCase()==="vercel-blob"}function Xq(e){return uu(e?.sourceFile)||uu(e?.source?.file)||uu(e?.source?.path)||Hq(e?.sourceUrl||e?.source?.url)}function Yq(e){return uu(e?.sourceDirectoryFile)||uu(e?.source?.directoryFile)||uu(e?.source?.sourcePath)}function qq(e,t={}){return Xs(e?.assetFile||e?.artifactFile||e?.artifact?.file,t,{anchorFile:e?.file})||Xs(e?.url,t,{anchorFile:e?.file})}function Zq(e){return i0(e?.sourceUrl||e?.source?.url)}function Jq(e){const t=i0(e?.stepUrl||e?.step?.url);return t||(String(e?.sourceKind||e?.stepSourceKind||"").trim().toLowerCase()==="python"?"":Zq(e))}function Qq(e,t){return ik(t)?Jq(e):i0(e?.outputUrl||e?.output?.url||e?.url)}function eZ(e){return String(e||"").includes("\\")?"\\":"/"}function r_(e,t){const n=String(e||"").trim(),r=Po(t);if(!n||!r)return n||r;const o=eZ(n),i=n.replace(/[\\/]+$/,""),s=r.replace(/\//g,o);return`${i}${o}${s}`}function tZ(e,t){const n=Po(e),r=Po(t);return n?r?n===r||n.startsWith(`${r}/`):!0:!1}function nZ(e,t){return tZ(e,t)?B1(e,t):""}function cv(e,{stepSourceStatus:t=null,viewerServerInfo:n={}}={}){const r=at(e);if(!r)return{artifact:null,output:null,source:null};const o=Xs(e?.file||r,n)||Po(e?.file||r),i=wp(o),s=qq(e,n),a=wp(s),l=Kq(n),u=l?Qq(e,o):"",d=l?i0(e?.url):"",m=String(t?.sourceKind||nv(e)).trim().toLowerCase(),p=uu(t?.sourcePath),g=Xq(e),x=Yq(e),y=m==="python"&&ik(o)?Wq(o):"",S=g||p||y,b=p||x,I=!!(n?.rootDir||n?.rootPath||n?.directoryRoot),A=S?I?Xs(S,n,{anchorFile:o})||S:b?"":g||y:"",N=A||S?wp(A||S)||ok(o):"";return{artifact:a?{asset:"artifact",fileRef:r,filename:a,label:a,rootRelativePath:s,...d?{downloadUrl:d}:{}}:null,output:{asset:"output",fileRef:r,filename:i||"download",label:i||"download",rootRelativePath:o,...u?{downloadUrl:u}:{}},source:N?{asset:"source",fileRef:r,filename:N,label:N,rootRelativePath:A,directoryRelativePath:b}:null}}function U1(e,t="output",n=""){const r=`/__cad/download?file=${encodeURIComponent(e)}&asset=${encodeURIComponent(t||"output")}`;if(!n)return r;try{return new URL(r,n).toString()}catch{return r}}function sk(e,t="output",n=""){const r=`/__cad/reveal?file=${encodeURIComponent(e)}&asset=${encodeURIComponent(t||"output")}`;if(!n)return r;try{return new URL(r,n).toString()}catch{return r}}function rZ(e,t={}){const n=Po(t?.rootDir),r=Po(e?.directoryRelativePath),i=nZ(r,n)||Po(e?.rootRelativePath),s=i?Xs(i,t,{anchorFile:e?.fileRef}):"",a=s||r;return{path:s&&t?.rootPath?r_(t.rootPath,s):r&&t?.directoryRoot?r_(t.directoryRoot,r):"",relativePath:a}}function Ko(e){return String(e??"").trim()}function Ey(e){return Ko(e).toLowerCase()}function uv(e){const t=Ko(e);return t?`${t[0].toUpperCase()}${t.slice(1)}`:""}function oZ(e){const t=Ko(e);return t.length>24?`${t.slice(0,12)}...${t.slice(-8)}`:t}function Hr(e,t,n={}){const r=Ko(t);return r?{label:e,value:r,displayValue:n.short?oZ(r):r,href:Ko(n.href),openUrl:Ko(n.openUrl),action:Ko(n.action),asset:n.asset||null,copyValue:n.copy===!0?r:Ko(n.copyValue),mono:n.mono===!0,title:Ko(n.title)||r}:null}function Qd(e){return e.filter(Boolean)}function Mm(e,t){const n=Qd(t);return n.length?{title:e,rows:n}:null}function ak(e){const t=Number(e);if(!Number.isFinite(t)||t<0)return"";const n=Math.round(t);if(n<1024)return`${n} B`;const r=["KB","MB","GB","TB"];let o=n/1024,i=0;for(;o>=1024&&i=10?1:2;return`${o.toFixed(s).replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")} ${r[i]} (${n.toLocaleString("en-US")} B)`}function iZ(e){const t=Ey(e?.kind),n=Ey(or(e));return[t?uv(t):"",n&&n!==t?n.toUpperCase():""].filter(Boolean).join(" / ")}function sZ(e){const t=Ey(e?.sourceKind||e?.sourceStatus?.sourceKind||e?.artifact?.sourceKind);return t}function aZ(e){const t=Ey(e);return t==="python"?"Python-generated":t==="step"?"STEP-backed":uv(t)}function lZ(e,t,n={}){const r=Ko(e?.source?.sourcePath||e?.source?.file||e?.sourceDirectoryFile||t?.directoryRelativePath||e?.sourceFile||t?.rootRelativePath);return Xs(r,n,{anchorFile:e?.file})||r}function lk(e){return e?{openUrl:sk(e.fileRef,e.asset),action:"open",asset:e}:{}}function cZ(e){return e?{href:Ko(e.downloadUrl)||U1(e.fileRef,e.asset),action:"download",asset:e}:{}}function o_(e,{includeFileOpenActions:t=!1,includeFileDownloadActions:n=!1}={}){return t?lk(e):n?cZ(e):{}}function uZ(e,{includePythonSource:t=!1,suppressDynamicStatus:n=!1,viewerServerInfo:r={}}={}){const o=sZ(e);if(o==="python"&&!t)return[];const i=e?.source&&typeof e.source=="object"?e.source:{},s=e?.sourceStatus&&typeof e.sourceStatus=="object"?e.sourceStatus:{},a=cv(e,{viewerServerInfo:r}),l=o==="python"?a.source:null,u=lZ(e,l,r);return Qd([Hr("Kind",aZ(o)),o==="python"?Hr("Python source",u||l?.label,{...lk(l),mono:!0,title:u||l?.label||"Python source"}):null,n?null:Hr("Status",s.status),Hr("Source hash",i.sourceHash||s.sourceHash,{mono:!0,short:!0,copy:!0}),n?null:Hr("Current",s.currentHash,{mono:!0,short:!0,copy:!0})])}function dZ(e,{suppressDynamicStatus:t=!1,viewerServerInfo:n={}}={}){const r=e?.artifact&&typeof e.artifact=="object"?e.artifact:{},o=Ko(e?.moduleUrl),i=Xs(e?.moduleFile||o,n,{anchorFile:e?.file})||o;return Qd(t?[Hr("Module",i,{href:o,mono:!0,title:i})]:[Hr("Module",i,{href:o,mono:!0,title:i}),Hr("Artifact",r.error?uv(String(r.error).replace(/_/g," ")):""),Hr("Artifact hash",r.artifactHash,{mono:!0,short:!0,copy:!0}),Hr("Current hash",r.currentHash,{mono:!0,short:!0,copy:!0}),Hr("Message",r.message)])}function fZ(e){const t=e?.headers&&typeof e.headers=="object"?e.headers:{};return Object.entries(t).flatMap(([n,r])=>{const o=Ko(n);if(!o)return[];const i=Array.isArray(r)?r.map(Ko).filter(Boolean).join(", "):r&&typeof r=="object"?JSON.stringify(r):Ko(r);return Hr(o,i)})}function mZ(e,t={}){const n=e?.relations&&typeof e.relations=="object"?e.relations:{};return Object.entries(n).flatMap(([r,o])=>{const i=Ko(r).toUpperCase();return!i||!o||typeof o!="object"?[]:Qd([Hr(`${i} file`,Xs(o.file,t,{anchorFile:e?.file})||o.file,{mono:!0}),Hr(`${i} size`,ak(o.bytes)),Hr(`${i} hash`,o.hash,{mono:!0,short:!0,copy:!0})])})}function pZ(e,t={}){if(!e||typeof e!="object")return[];const n=t.includeFileOpenActions===!0,r=t.includeFileDownloadActions===!0,o=t.suppressDynamicStatus===!0,i=t.viewerServerInfo||{},s=cv(e,{viewerServerInfo:i}),a=Xs(e.file,i)||e.file,l=s.artifact?.rootRelativePath||Xs(e.assetFile||e.url,i,{anchorFile:e.file})||e.url,u=Qd([Hr("Path",a,{...o_(s.output,{includeFileOpenActions:n,includeFileDownloadActions:r}),mono:!0}),Hr("Kind",iZ(e)),Hr("Size",ak(e.bytes)),Hr("Hash",e.hash,{mono:!0,short:!0,copy:!0}),Hr("Asset",l,{...o_(s.artifact,{includeFileOpenActions:n,includeFileDownloadActions:r}),mono:!0,title:l})]);return[Mm("File",u),Mm("Headers",fZ(e)),Mm("Source",uZ(e,{...t,viewerServerInfo:i,suppressDynamicStatus:o})),Mm("Generated",dZ(e,{viewerServerInfo:i,suppressDynamicStatus:o})),Mm("Relations",mZ(e,i))].filter(Boolean)}function hZ({value:e,label:t}){const[n,r]=f.useState(!1),o=n?mu:vu,i=String(e||"").trim();return i?c.jsx("button",{type:"button",className:H("mt-[-0.125rem] inline-flex size-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground transition-colors","hover:bg-sidebar-accent hover:text-sidebar-accent-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/45"),title:`Copy ${t}`,"aria-label":`Copy ${t}`,onClick:async()=>{try{await ps(i),r(!0),window.setTimeout?.(()=>r(!1),1200)}catch{r(!1)}},children:c.jsx(o,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})}):null}function gZ({entry:e,row:t,fileAccessBusyKey:n="",onOpenFileAsset:r}){const o=t.displayValue||t.value,i=String(t.copyValue||"").trim(),s=H("block min-w-0 break-words text-[11px] leading-4",t.mono&&"break-all font-mono text-[10px]"),a=u=>i?c.jsxs("div",{className:"inline-flex max-w-full items-center gap-1.5 align-top",children:[c.jsx("div",{className:"min-w-0 max-w-full",children:u}),c.jsx(hZ,{value:i,label:t.label})]}):u;if(t.action==="open"&&t.asset){const u=`${t.asset.fileRef}:${t.asset.asset}`,d=n===u,m=typeof r=="function";return a(c.jsx("a",{href:t.openUrl||"#",className:H(s,"text-primary underline-offset-4 hover:underline focus-visible:rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/45",(!m||d)&&"pointer-events-none text-muted-foreground"),title:t.title,"aria-disabled":!m||d,"data-open-url":t.openUrl||void 0,onClick:p=>{p.preventDefault(),!(!m||d)&&r(e,t.asset.asset,t.asset)},children:d?"Opening...":o}))}const l=c.jsx("span",{className:s,title:t.title,children:o});return t.href?a(c.jsx("a",{href:t.href,download:t.action==="download"?t.asset?.filename||!0:void 0,className:H(s,"text-primary underline-offset-4 hover:underline focus-visible:rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/45"),title:t.title,children:o})):a(l)}function Ef({entry:e,fileDownloadAvailable:t=!1,viewerServerInfo:n=null,localFileOpenAvailable:r=!1,fileAccessBusyKey:o="",onOpenFileAsset:i,suppressDynamicStatus:s=!1}){const a=pZ(e,{includeFileDownloadActions:t&&!r,includeFileOpenActions:r,includePythonSource:r,viewerServerInfo:n,suppressDynamicStatus:s});return a.length?c.jsx(ci,{value:bt.FILE_METADATA,title:"Metadata","aria-label":"File metadata",children:c.jsx("div",{children:a.map(l=>c.jsx(bo,{title:l.title,contentClassName:"px-3",children:c.jsx("dl",{className:"space-y-1.5",children:l.rows.map(u=>c.jsxs("div",{className:"min-w-0 space-y-0.5 py-0.5",children:[c.jsx("dt",{className:H(Nu,"leading-4"),title:u.label,children:u.label}),c.jsx("dd",{className:"min-w-0 flex-1 text-sidebar-foreground",children:c.jsx(gZ,{entry:e,row:u,fileAccessBusyKey:o,onOpenFileAsset:i})})]},`${l.title}:${u.label}`))})},l.title))})}):null}const bZ=th("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors [&>svg]:size-3",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white dark:bg-destructive/60","destructive-outline":"border-destructive/45 bg-destructive/10 text-destructive dark:border-red-400/40 dark:text-red-300",outline:"text-foreground",warning:"border-amber-500/45 bg-amber-500/10 text-amber-800 dark:text-amber-300","warning-outline":"border-amber-500/45 bg-amber-500/10 text-amber-800 dark:text-amber-300"}},defaultVariants:{variant:"default"}});function Ls({className:e,variant:t,...n}){return c.jsx("span",{"data-slot":"badge",className:H(bZ({variant:t}),e),...n})}const Xn=Object.freeze({ERROR:"error",WARNING:"warning",INFO:"info"}),yZ=Object.freeze({[Xn.ERROR]:3,[Xn.WARNING]:2,[Xn.INFO]:1}),xZ=/(?:^|\n)\s*Regenerate STEP artifacts[^\n]*(?=\n|$)/gi;function Nr(e){return String(e||"").replace(xZ,"").trim()}function Xi(e,t,{mono:n=!1}={}){const r=Nr(t);return r?{label:e,value:r,mono:n}:null}function SZ(e,t={},n=""){const r=Nr(e);return Xs(r,t,{anchorFile:n})||r}function Zc(e,t,n={},r="",o={}){return Xi(e,SZ(t,n,r),o)}function EZ(e){return Nr(e).toLowerCase()==="python"?"python":"step"}function wZ(e,t){return Object.prototype.hasOwnProperty.call(e||{},t)}function s0(e,t=Xn.INFO){const n=Nr(e).toLowerCase();return n===Xn.ERROR?Xn.ERROR:n===Xn.WARNING||n==="warn"?Xn.WARNING:n===Xn.INFO||n==="information"?Xn.INFO:t}function wy(e){return yZ[s0(e,"")]||0}function dv(e){const t=s0(e,"");return t===Xn.ERROR?"Error":t===Xn.WARNING?"Warning":t===Xn.INFO?"Info":""}function fv(e,t=0){if(!e||typeof e!="object")return null;const n=s0(e.level,Xn.INFO),r=Nr(e.title)||dv(n)||"Status",o=Nr(e.message),i=Nr(e.code),s=Nr(e.source),a=Array.isArray(e.details)?e.details.map(l=>!l||typeof l!="object"?null:Xi(l.label,l.value,{mono:l.mono===!0})).filter(Boolean):[];return{id:Nr(e.id)||`${s||"status"}:${i||r}:${t}`,level:n,source:s,code:i,title:r,message:o,details:a}}function yc(e){if(!Array.isArray(e))return[];const t=new Set;return e.map(fv).filter(n=>{if(!n)return!1;const r=[n.level,n.title,n.message,n.details.map(o=>`${o.label}:${o.value}`).join("|")].join(`
+`);return t.has(r)?!1:(t.add(r),!0)})}function ck(e){return yc(e).filter(t=>t.level===Xn.ERROR||t.level===Xn.WARNING).sort((t,n)=>wy(n.level)-wy(t.level))}function vZ(e){return ck(e).length>0}function uk(e){return yc(e).reduce((t,n)=>wy(n.level)>wy(t)?n.level:t,"")}function mv(e){return qc(e)}function CZ(e,t){const n=Nr(e?.error);return e?.stale===!0||n==="stale_step_artifact"?"STEP artifact stale":n==="missing_glb"?"STEP artifact missing":mv(t)?"STEP artifact metadata warning":"STEP artifact unavailable"}function MZ(e,t){return mv(t)?Xn.WARNING:Xn.ERROR}function dk(e){const t=Nr(e?.error);return e?.stale===!0||t==="stale_step_artifact"?"Generated GLB doesn't match the hash of the STEP file.":t==="missing_glb"?"Generated GLB is missing.":t==="missing_step_topology"?"Generated GLB is missing STEP topology metadata.":t==="missing_selector_topology"?"Generated GLB is missing selector topology metadata.":t==="missing_edge_topology"?"Generated GLB is missing surface edge topology metadata.":t==="missing_surface_edge_attributes"?"Generated GLB is missing surface edge render attributes.":t==="unsupported_step_topology"?"Generated GLB topology metadata is unsupported.":t==="missing_source_path"?"Generated GLB metadata is missing its source path.":t==="missing_step_hash"?"Generated GLB is missing the hash of the STEP file.":"Generated STEP artifact is unavailable."}function IZ(e){return"STEP file missing"}function AZ(e){return Xn.WARNING}function NZ(e,t){return e?.missing?EZ(t?.sourceKind)==="python"?"STEP file was not generated for this Python script; only a GLB artifact is available.":"STEP file is missing from the directory.":Nr(e?.message)||"STEP file is missing from the directory."}function _Z(e){return e?.status==="missing"?"Generator source missing":"Generated source warning"}function TZ(e){return e?.status==="missing"?"This file records a Python generator path, but that source file is not available.":Nr(e?.message)||"Generated source metadata is incomplete."}function RZ(e=null,{viewerServerInfo:t={}}={}){const n=e?.sourceStatus;return!n||n.ok!==!1?[]:yc([{id:"generated-source",level:Xn.WARNING,source:"source-metadata",code:Nr(n.status)||"source_identity",title:_Z(n),message:TZ(n),details:[Zc("File",e?.file,t,e?.file),Xi("Source kind",n.sourceKind||e?.sourceKind),Zc("Python source",n.sourcePath||e?.source?.file,t,e?.file),Xi("Raw message",n.message)].filter(Boolean)}])}function PZ({entry:e=null,stepSourceStatus:t=null,stepArtifactGenerationAvailable:n=!0,stepArtifactGenerationState:r=null,activeGenerationFiles:o=[],viewerServerInfo:i={}}={}){const s=[],a=wZ(t,"artifact")?t?.artifact:e?.artifact;a?.ok===!1&&!uq({entry:e,artifact:a,generationAvailable:n,generationState:r,activeGenerationFiles:o})&&s.push({id:"step-artifact",level:MZ(a,e),source:"catalog",code:Nr(a.error)||"step_artifact_unavailable",title:CZ(a,e),message:dk(a),details:[Xi("Code",a.error),Zc("STEP file",a.stepPath||a.sourcePath||e?.file,i,e?.file),Zc("GLB artifact",a.glbPath,i,e?.file),Zc("CAD path",a.cadPath,i,e?.file),Xi("Source kind",a.sourceKind),Xi("Artifact hash",a.artifactHash,{mono:!0}),Xi("Current hash",a.currentHash,{mono:!0}),Xi("Raw message",a.message)].filter(Boolean)});const l=t?.step;return l?.missing&&s.push({id:"step-source",level:AZ(),source:"step-source-status",code:Nr(l.status)||"missing",title:IZ(),message:NZ(l,t),details:[Zc("STEP file",t?.stepPath||t?.file,i,e?.file),Xi("Source kind",t?.sourceKind),Zc("Python source",t?.sourcePath,i,e?.file)].filter(Boolean)}),yc(s)}function OZ(e){const t=fv(e);if(!t)return"";const n=["CAD Viewer issue",`Level: ${dv(t.level)||t.level}`,`Title: ${t.title}`];if(t.message&&n.push(`Description: ${t.message}`),t.source&&n.push(`Source: ${t.source}`),t.code&&n.push(`Code: ${t.code}`),t.details.length){n.push("","Details:");for(const r of t.details)n.push(`- ${r.label}: ${r.value}`)}return n.join(`
+`)}function kZ(e=null){const t=Array.isArray(e?.warnings)?e.warnings:[];return yc(t.map((n,r)=>({id:`gcode-warning:${r}`,level:Xn.WARNING,source:"gcode-parser",code:"gcode_warning",title:"G-code warning",message:n})))}function DZ(e=null){const t=e?.staticMetadata&&typeof e.staticMetadata=="object"?e.staticMetadata:{},n=Array.isArray(t.warnings)?t.warnings:[];return yc(n.map((r,o)=>({id:`sdf-warning:${o}`,level:Xn.WARNING,source:"sdf-parser",code:"sdf_warning",title:"SDF warning",message:r})))}function jZ(e=null){if(!e||typeof e!="object")return null;const t=s0(e.severity,Xn.ERROR);return fv({id:`viewer-alert:${Nr(e.summary)||Nr(e.title)||t}`,level:t,source:"viewer",code:"viewer_alert",title:Nr(e.title)||Nr(e.summary)||"Viewer issue",message:Nr(e.message)||Nr(e.summary),details:[Xi("Summary",e.summary),Xi("Resolution",e.resolution),Xi("Command",e.command,{mono:!0})].filter(Boolean)})}function LZ({entry:e=null,fileSheetKind:t="",stepSourceStatus:n=null,stepArtifactGenerationAvailable:r=!0,stepArtifactGenerationState:o=null,activeGenerationFiles:i=[],gcodeData:s=null,urdfData:a=null,viewerAlert:l=null,viewerServerInfo:u=null}={}){if(!e)return[];const d=Nr(t).toLowerCase(),m=[];m.push(...RZ(e,{viewerServerInfo:u})),d==="step"&&m.push(...PZ({entry:e,stepSourceStatus:n,stepArtifactGenerationAvailable:r,stepArtifactGenerationState:o,activeGenerationFiles:i,viewerServerInfo:u})),d==="gcode"&&m.push(...kZ(s)),d==="sdf"&&m.push(...DZ(a?.sdf||a));const p=jZ(l),g=p&&yc(m).some(x=>x.level===p.level&&x.title===p.title&&x.message===p.message);return p&&!g&&m.push(p),yc(m)}const i_=Object.freeze({[Xn.ERROR]:{badgeVariant:"destructive-outline",borderClassName:"border-destructive/70"},[Xn.WARNING]:{badgeVariant:"warning-outline",borderClassName:"border-amber-500/70"},[Xn.INFO]:{badgeVariant:"outline",borderClassName:"border-border"}}),FZ="h-4 min-w-4 self-center rounded-sm px-1 text-[10px] font-medium leading-none",zZ="h-4 self-center rounded-sm px-1.5 py-0 text-[10px] font-medium leading-none";function s_(e){return i_[e]||i_[Xn.INFO]}function wf({items:e=[],value:t="status"}){const[n,r]=f.useState(()=>new Set),[o,i]=f.useState(""),s=ck(e);if(f.useEffect(()=>{if(!o)return;const g=globalThis.setTimeout(()=>i(""),1400);return()=>globalThis.clearTimeout(g)},[o]),!s.length)return null;const a=g=>{r(x=>{const y=new Set(x);return y.has(g)?y.delete(g):y.add(g),y})},l=g=>{r(x=>{if(!x.has(g))return x;const y=new Set(x);return y.delete(g),y})},u=(g,x,y)=>{!y||g.key!=="Enter"&&g.key!==" "||(g.preventDefault(),a(x))},d=async(g,x)=>{g.preventDefault(),g.stopPropagation();try{await ps(OZ(x)),i(x.id)}catch{i("")}},m=uk(s),p=s_(m);return c.jsx(ci,{value:t,title:c.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[c.jsx("span",{children:"Issues"}),c.jsx(Ls,{variant:p.badgeVariant,className:FZ,children:s.length})]}),children:c.jsx("ul",{className:"space-y-3 px-3 py-3 text-xs leading-5",children:s.map(g=>{const x=s_(g.level),y=Array.isArray(g.details)?g.details:[],S=y.length>0,b=n.has(g.id);return c.jsxs("li",{className:H("min-w-0 border-l-2",x.borderClassName),children:[c.jsxs("div",{role:S?"button":void 0,tabIndex:S?0:void 0,className:H("block min-w-0 rounded-md py-1 pl-2.5 pr-1 text-left",S&&"w-full cursor-pointer hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground",!S&&"w-full"),onClick:()=>{S&&a(g.id)},onKeyDown:I=>u(I,g.id,S),"aria-expanded":S?b:void 0,children:[c.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[c.jsx(Ls,{variant:x.badgeVariant,className:H("shrink-0",zZ),children:dv(g.level)}),c.jsx("div",{className:"min-w-0 flex-1 truncate font-medium leading-4 text-sidebar-foreground",title:g.title,children:g.title}),c.jsx("span",{className:"ml-auto inline-flex h-5 shrink-0 items-center",children:c.jsx(Qe,{type:"button",variant:"ghost",size:"icon-xs",className:"size-5 rounded-sm text-muted-foreground hover:text-sidebar-foreground",onClick:I=>d(I,g),"aria-label":o===g.id?"Copied issue":"Copy issue for agent",title:o===g.id?"Copied":"Copy issue for agent",children:o===g.id?c.jsx(mu,{className:"size-3",strokeWidth:2.25,"aria-hidden":"true"}):c.jsx(vu,{className:"size-3",strokeWidth:2.1,"aria-hidden":"true"})})})]}),g.message?c.jsx("div",{className:"mt-1 line-clamp-2 min-w-0 break-words text-[11px] font-normal leading-4 text-muted-foreground",children:g.message}):null]}),S&&b?c.jsxs("div",{className:"mt-2 space-y-2 pl-2.5",children:[c.jsx("dl",{className:"space-y-1 text-[11px] leading-4",children:y.map((I,A)=>c.jsxs("div",{className:"min-w-0",children:[c.jsx("dt",{className:"text-muted-foreground",children:I.label}),c.jsx("dd",{className:H("min-w-0 break-words text-sidebar-foreground",I.mono&&"break-all font-mono text-[10px] leading-4"),children:I.value})]},`${g.id}:${I.label}:${A}`))}),c.jsx(Qe,{type:"button",variant:"ghost",size:"xs",className:"h-auto rounded-sm px-0 py-0 text-[11px] font-medium text-muted-foreground hover:bg-transparent hover:text-sidebar-foreground",onClick:I=>{I.preventDefault(),I.stopPropagation(),l(g.id)},children:"Collapse"})]}):null]},g.id)})})})}const fk=$Y,a_=VY;function eS(e){const t=Number(e);return Number.isFinite(t)?t.toFixed(4).replace(/\.?0+$/,""):""}function tS(e){const t=Math.round(Number(e)*10)/10;return Number.isFinite(t)?String(t):""}function BZ({index:e,setting:t,onChange:n}){const[r,o]=f.useState(()=>tS(t?.angleDeg));f.useEffect(()=>{o(tS(t?.angleDeg))},[t?.angleDeg]);const i=a=>{const l=Up(a,t?.angleDeg);n(e,{angleDeg:l}),o(tS(l))},s=Gp(t?.direction);return c.jsx(cn,{label:`B${e+1}`,children:c.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_5.75rem] gap-2",children:[c.jsxs("div",{className:"min-w-0",children:[c.jsx("span",{className:"sr-only",children:"Direction"}),c.jsxs(Kw,{type:"single",variant:"outline",size:"sm",value:s,onValueChange:a=>{a&&n(e,{direction:a})},className:"grid h-7 w-full min-w-0 grid-cols-2","aria-label":`Bend ${e+1} direction`,children:[c.jsx(Vp,{value:cu.UP,className:`!h-7 text-[11px] ${D1}`,children:"Up"}),c.jsx(Vp,{value:cu.DOWN,className:`!h-7 text-[11px] ${D1}`,children:"Down"})]})]}),c.jsxs("label",{className:"block",children:[c.jsx("span",{className:"sr-only",children:"Angle"}),c.jsxs("div",{className:"relative",children:[c.jsx(go,{type:"number",min:"0",max:"180",step:"1",inputMode:"decimal",value:r,onChange:a=>{o(a.target.value)},onFocus:a=>{a.currentTarget.select()},onMouseUp:a=>{a.preventDefault()},onBlur:()=>{i(r)},onKeyDown:a=>{a.key==="Enter"&&a.currentTarget.blur()},className:`${fk} w-full pr-9 text-right`,"aria-label":`Bend ${e+1} angle in degrees`}),c.jsx("span",{className:"pointer-events-none absolute inset-y-0 right-2 flex items-center text-xs text-muted-foreground",children:"deg"})]})]})]})})}function VZ({open:e,isDesktop:t,width:n,selectedEntry:r=null,onOpenChange:o,valueMm:i,bendSettings:s,hasDxfData:a,viewerLoading:l,onStartResize:u,onThicknessChange:d,onBendChange:m,fileDownloadAvailable:p=!1,viewerServerInfo:g=null,localFileOpenAvailable:x=!1,fileAccessBusyKey:y="",onOpenFileAsset:S,suppressDynamicMetadataStatus:b=!1,statusItems:I=[],themeSections:A=null,openSectionIds:N=[],onOpenSectionIdsChange:P}){const[R,v]=f.useState(()=>eS(i)),C=Array.isArray(s)?s:[];f.useEffect(()=>{v(eS(i))},[i]);const T=k=>{const z=py(k,i);d(z),v(eS(z))};return c.jsx(xf,{open:e,title:"DXF",isDesktop:t,width:n,onOpenChange:o,onStartResize:u,children:c.jsxs(yf,{type:"multiple",value:N,onValueChange:P,className:"text-sm",children:[c.jsx(wf,{items:I}),c.jsx(ci,{value:"dxf",title:"DXF",children:c.jsxs(r0,{className:"py-0",children:[c.jsx(bo,{title:"Thickness",children:c.jsx(cn,{label:"Material",children:c.jsxs("div",{className:"grid grid-cols-[2rem_minmax(0,1fr)_2rem] items-center gap-1.5",children:[c.jsx(Qe,{type:"button",variant:"ghost",size:"icon-sm",className:a_,onClick:()=>{T(i-.25)},disabled:!a,"aria-label":"Reduce DXF material thickness",title:"Reduce thickness",children:c.jsx(PE,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"})}),c.jsxs("div",{className:"relative block",children:[c.jsx(go,{type:"number",min:"0.2",max:"25",step:"any",inputMode:"decimal",value:R,disabled:!a,onChange:k=>{v(k.target.value)},onBlur:()=>{T(R)},onKeyDown:k=>{k.key==="Enter"&&k.currentTarget.blur()},className:`${fk} w-full pr-9 text-right`,"aria-label":"DXF material thickness in millimeters"}),c.jsx("span",{className:"pointer-events-none absolute inset-y-0 right-2 flex items-center text-xs text-muted-foreground",children:"mm"})]}),c.jsx(Qe,{type:"button",variant:"ghost",size:"icon-sm",className:a_,onClick:()=>{T(i+.25)},disabled:!a,"aria-label":"Increase DXF material thickness",title:"Increase thickness",children:c.jsx(OE,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"})})]})})}),c.jsx(bo,{title:"Bends",children:C.length?C.map((k,z)=>c.jsx(BZ,{index:z,setting:k,onChange:m},k.id||`bend-${z+1}`)):c.jsx("p",{className:"px-3 py-1 text-xs text-muted-foreground",children:l?"Loading bends...":"No bends are available."})})]})}),A,c.jsx(Ef,{entry:r,fileDownloadAvailable:p,viewerServerInfo:g,localFileOpenAvailable:x,fileAccessBusyKey:y,onOpenFileAsset:S,suppressDynamicStatus:b})]})})}function _i({className:e,defaultValue:t,value:n,min:r=0,max:o=100,...i}){const s=f.useMemo(()=>Array.isArray(n)?n:Array.isArray(t)?t:[r],[t,r,n]);return c.jsxs(_z,{"data-slot":"slider",defaultValue:t,value:n,min:r,max:o,className:H("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...i,children:[c.jsx(Tz,{"data-slot":"slider-track",className:H("relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1"),children:c.jsx(Rz,{"data-slot":"slider-range",className:H("absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),s.map((a,l)=>c.jsx(Pz,{"data-slot":"slider-thumb",className:"relative z-10 block size-3.5 shrink-0 rounded-full border border-background bg-primary shadow-sm ring-1 ring-foreground/15 transition-[color,box-shadow] outline-none hover:ring-2 hover:ring-ring/25 focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50"},l))]})}const $Z=.42,GZ=.08,UZ=.18,WZ=.04,mk=6e4,Ob=1,Jm=7,du=3,HZ=Object.freeze({1:25e3,2:4e4,3:mk,4:9e4,5:14e4,6:22e4,7:32e4}),KZ=1,vy=1e-5,l_=.035,c_=Object.freeze(["#2563eb","#16a34a","#0891b2","#ca8a04","#7c3aed","#0f766e","#4f46e5","#65a30d"]),XZ="#94a3b8",YZ="#64748b",u_=Object.freeze({support:.001,adhesion:.002,infill:.003,calibration:.004,other:.004,surface:.005,wall:.006}),qZ=.008,kb=4,pk=6,nS=Object.freeze([0,0,1]);function To(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function W1(e,t,n){return Math.min(Math.max(e,t),n)}function ZZ(e,t=!1){return typeof e=="boolean"?e:t}function JZ(e){return String(e||"").trim().toLowerCase()==="full"?"full":"adaptive"}function hk(e){return W1(Math.round(To(e,du)),Ob,Jm)}function QZ(e){const t=hk(e);return HZ[t]||mk}function wo(e,t){return To(e?.[t])}function d_(){return{min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]}}function f_(e){return!e.min.every(Number.isFinite)||!e.max.every(Number.isFinite)?{min:[0,0,0],max:[1,1,1]}:{min:e.min,max:e.max}}function gk(e){const t=e?.start,n=e?.end;return Math.hypot(wo(n,0)-wo(t,0),wo(n,1)-wo(t,1),wo(n,2)-wo(t,2))}function eJ(e,t){const n=Math.max(0,Math.trunc(To(t,0))-1);if(!Array.isArray(e)||e.length<2)return[0,n];const r=W1(Math.trunc(To(e[0],0)),0,n),o=W1(Math.trunc(To(e[1],n)),0,n);return r<=o?[r,o]:[o,r]}function bk(e={},t=0){const n=e&&typeof e=="object"?e:{},r=JZ(n.detailMode),o=hk(n.detailLevel),i=QZ(o),s=Array.isArray(n.layerRange)?n.layerRange:Number.isFinite(Number(n.maxLayer))?[0,Number(n.maxLayer)]:null;return{showTravel:ZZ(n.showTravel,!1),layerRange:eJ(s,t),detailMode:r,detailLevel:o,maxVisibleSegments:r==="full"?0:Math.max(Math.trunc(To(n.maxVisibleSegments,i)),KZ),extrusionWidthMm:Math.max(To(n.extrusionWidthMm,$Z),.01),travelWidthMm:Math.max(To(n.travelWidthMm,GZ),.01),extrusionHeightMm:Math.max(To(n.extrusionHeightMm,UZ),.01),travelHeightMm:Math.max(To(n.travelHeightMm,WZ),.01)}}function tJ(e){const t=Math.max(0,Math.trunc(To(e,0)));return c_[t%c_.length]}function nJ(e){return e.kind==="travel"?"travel":`layer:${Math.max(0,Math.trunc(To(e.layerIndex,0)))}`}function rJ(e,t){return e==="travel"?"Travel":`Layer ${Math.max(0,Math.trunc(To(t,0)))+1}`}function oJ(e){const t=String(e||"").trim(),n=/^#[0-9a-fA-F]{3}$/.test(t)?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t;return/^#[0-9a-fA-F]{6}$/.test(n)?[parseInt(n.slice(1,3),16)/255,parseInt(n.slice(3,5),16)/255,parseInt(n.slice(5,7),16)/255]:[1,1,1]}function yk(e,t){const n=Math.max(0,Math.trunc(To(e?.layerIndex,0))),[r,o]=t.layerRange;return no?!1:e?.kind==="travel"?t.showTravel:e?.kind==="extrusion"}function iJ(e,t){const n=Array.isArray(e?.segments)?e.segments:[],r=new Map;let o=0;for(const i of n){if(!yk(i,t)||gk(i)<=vy)continue;const s=Math.max(0,Math.trunc(To(i?.layerIndex,0)));r.set(s,(r.get(s)||0)+1),o+=1}return{visibleSegmentCount:o,segmentsByLayer:r}}function pv(e,t,n,r){return r<=1?!0:e===t||e===n||(e-t)%r===0}function xk(e,t,n,r){let o=0;for(const[i,s]of e.entries())i>=t&&i<=n&&pv(i,t,n,r)&&(o+=s);return o}function sJ(e,t,n){const r=Math.trunc(To(n?.maxVisibleSegments,0));if(n?.detailMode==="full"||r<=0||t<=r)return 1;const[o,i]=n.layerRange,s=Math.max(1,i-o+1);for(let a=2;a<=s;a+=1)if(xk(e,o,i,a)<=r)return a;return s}function aJ(e,t,n,r){let o=0;for(const i of e.keys())i>=t&&i<=n&&pv(i,t,n,r)&&(o+=1);return o}function H1(e,t,n,r){e.min[0]=Math.min(e.min[0],t),e.min[1]=Math.min(e.min[1],n),e.min[2]=Math.min(e.min[2],r),e.max[0]=Math.max(e.max[0],t),e.max[1]=Math.max(e.max[1],n),e.max[2]=Math.max(e.max[2],r)}function lJ(e,t){H1(e,wo(t?.start,0),wo(t?.start,1),wo(t?.start,2)),H1(e,wo(t?.end,0),wo(t?.end,1),wo(t?.end,2))}function cJ(e,t,n){return t==="travel"?YZ:e?.featureCategory==="support"?XZ:tJ(n)}function uJ(e){if(e?.kind==="travel")return l_+qZ;const t=String(e?.featureCategory||"other").trim().toLowerCase();return l_+(u_[t]??u_.other)}function Zg({vertices:e,colors:t,normals:n,bounds:r,offset:o,x:i,y:s,z:a,zOffset:l=0,color:u}){e[o]=i,e[o+1]=s,e[o+2]=a+l,t[o]=u[0],t[o+1]=u[1],t[o+2]=u[2],n[o]=nS[0],n[o+1]=nS[1],n[o+2]=nS[2],H1(r,i,s,a+l)}function dJ({vertices:e,indices:t,colors:n,normals:r,bounds:o,segment:i,segmentIndex:s,width:a,color:l,zOffset:u}){const d=i?.start,m=i?.end,p=wo(d,0),g=wo(d,1),x=wo(d,2),y=wo(m,0),S=wo(m,1),b=wo(m,2),I=y-p,A=S-g,N=b-x;if(!(Math.hypot(I,A,N)>vy))return null;let R=-A,v=I,C=Math.hypot(R,v);C>vy||(R=1,v=0,C=1);const T=a/2,k=R/C*T,z=v/C*T,Y=s*kb,K=Y*3;Zg({vertices:e,colors:n,normals:r,bounds:o,offset:K,x:p+k,y:g+z,z:x,zOffset:u,color:l}),Zg({vertices:e,colors:n,normals:r,bounds:o,offset:K+3,x:p-k,y:g-z,z:x,zOffset:u,color:l}),Zg({vertices:e,colors:n,normals:r,bounds:o,offset:K+6,x:y-k,y:S-z,z:b,zOffset:u,color:l}),Zg({vertices:e,colors:n,normals:r,bounds:o,offset:K+9,x:y+k,y:S+z,z:b,zOffset:u,color:l});const J=s*pk;return t[J]=Y,t[J+1]=Y+1,t[J+2]=Y+2,t[J+3]=Y,t[J+4]=Y+2,t[J+5]=Y+3,!0}function fJ(e,t={}){const n=Array.isArray(e?.layers)?e.layers:[],r=bk(t,n.length),o=Array.isArray(e?.segments)?e.segments:[],{visibleSegmentCount:i,segmentsByLayer:s}=iJ(e,r),a=sJ(s,i,r),[l,u]=r.layerRange,d=xk(s,l,u,a),m=aJ(s,l,u,a),p=new Float32Array(d*kb*3),g=new Uint32Array(d*pk),x=new Float32Array(p.length),y=new Float32Array(p.length),S=[],b=d_(),I=d_();let A=null,N=0;for(const v of o){if(!yk(v,r)||gk(v)<=vy)continue;const C=nJ(v),T=Math.max(0,Math.trunc(To(v?.layerIndex,0)));if(!pv(T,l,u,a))continue;lJ(I,v),(!A||A.key!==C)&&(A={key:C,layerIndex:T,vertexOffset:N*kb,triangleOffset:N*2,segmentCount:0},S.push(A)),dJ({vertices:p,indices:g,colors:x,normals:y,bounds:b,segment:v,segmentIndex:N,width:v.kind==="travel"?r.travelWidthMm:r.extrusionWidthMm,color:oJ(cJ(v,C,T)),zOffset:uJ(v)})&&(A.segmentCount+=1,N+=1)}const P=S.map((v,C)=>{const T=S[C+1]?.vertexOffset??N*kb,k=S[C+1]?.triangleOffset??N*2;return{id:v.key==="travel"?`gcode:travel:${C}`:`gcode:layer:${v.layerIndex}:${C}`,label:rJ(v.key,v.layerIndex),vertexOffset:v.vertexOffset,vertexCount:Math.max(0,T-v.vertexOffset),triangleOffset:v.triangleOffset,triangleCount:Math.max(0,k-v.triangleOffset),bounds:f_(I),segmentCount:v.segmentCount}}).filter(v=>v.vertexCount>0&&v.triangleCount>0),R=f_(I);return{vertices:p,indices:g,normals:y,colors:x,bounds:R,parts:P,has_source_colors:!0,sourceFormat:"gcode",sourceColor:"#2563eb",metadata:{kind:"gcode",previewGeometry:"ribbon",options:r,visibleSegments:i,renderedSegments:N,visibleLayers:Math.max(0,u-l+1),renderedLayers:m,layerStride:a,segmentStride:1,decimationMode:a>1?"layers":"none",decimated:a>1,stats:e?.stats||{},features:Array.isArray(e?.features)?e.features:[],warnings:Array.isArray(e?.warnings)?e.warnings:[]}}}const mJ=Nu,m_="h-4 rounded-sm px-1.5 py-0 text-[10px] font-medium leading-none";function K1(e,t=2){const n=Number(e);return Number.isFinite(n)?n.toFixed(t):0 .toFixed(t)}function ii(e){const t=Number(e);return Number.isFinite(t)?String(Math.round(t)):"0"}function pJ(e){const t=Math.round(Number(e)||0),n=Math.abs(t),r=n%100;if(r>=11&&r<=13)return`${t}th`;switch(n%10){case 1:return`${t}st`;case 2:return`${t}nd`;case 3:return`${t}rd`;default:return`${t}th`}}function rS(e,t=1){return`${K1(e,t)} mm`}function p_(e){const t=ii(e);return`${t} cmd${t==="1"?"":"s"}`}function hJ(e){const t=String(e||"").trim();return t?`${t[0].toUpperCase()}${t.slice(1)}`:"Other"}function gJ(e){switch(Math.round(Number(e)||du)){case 1:return"Light";case 2:return"Lean";case 4:return"Dense";case 5:return"High";case 6:return"Very high";case 7:return"Max adaptive";default:return"Standard"}}function bJ(e){const t=Array.isArray(e?.min)?e.min:[0,0,0],n=Array.isArray(e?.max)?e.max:[0,0,0];return{min:t,max:n}}function oS(e,t,n=1){const{min:r,max:o}=bJ(e);return`${K1(r[t],n)} to ${K1(o[t],n)} mm`}function yJ(e,t){if(e<1)return"0 / 0";const n=t+1;return n>1?`1-${n} / ${e}`:`1 / ${e}`}function xJ(e,t,n){if(n<1)return 0;const i=String(e??"").trim().match(/\b\d+\s*-\s*(\d+)\b/)?.[1]??e;return ui(i,{fallback:t,min:1,max:Math.max(n,0),integer:!0})-1}function Ga({label:e,value:t,mono:n=!1}){const r=String(t??"");return c.jsxs("div",{className:"block min-w-0",children:[c.jsx("span",{className:mJ,children:e}),c.jsx("div",{className:`mt-1 min-h-7 truncate rounded-md border border-border/70 bg-muted/25 px-2 py-1.5 text-[11px] font-medium leading-4 text-foreground ${n?"font-mono":""}`,title:r,children:r})]})}function SJ({open:e,isDesktop:t,width:n,selectedEntry:r=null,onOpenChange:o,onStartResize:i,gcodeData:s=null,previewMetadata:a=null,maxLayer:l=0,showTravel:u=!1,fullDetail:d=!1,previewDetailLevel:m=du,onMaxLayerChange:p,onShowTravelChange:g,onFullDetailChange:x,onPreviewDetailLevelChange:y,fileDownloadAvailable:S=!1,viewerServerInfo:b=null,localFileOpenAvailable:I=!1,fileAccessBusyKey:A="",onOpenFileAsset:N,suppressDynamicMetadataStatus:P=!1,statusItems:R=[],themeSections:v=null,openSectionIds:C=[],onOpenSectionIdsChange:T}){const k=Array.isArray(s?.layers)?s.layers:[],z=s?.stats||{},Y=Array.isArray(s?.features)?s.features:[],J=Y.filter(se=>se?.category==="support").some(se=>Number(se?.extrusionMoves)>0||Number(se?.markerCount)>0),G=Y.reduce((se,Ae)=>se+(Number(Ae?.markerCount)||0),0),Q=Number(a?.renderedSegments),D=Number(a?.visibleSegments),$=Number(a?.layerStride),ie=Number(a?.renderedLayers),W=Number(a?.visibleLayers),Z=!!a?.decimated,Ee=Number.isFinite(Q)&&Number.isFinite(D)?`${ii(Q)} / ${ii(D)}`:"",re=Number.isFinite(ie)&&Number.isFinite(W)?`${ii(ie)} / ${ii(W)}`:"",be=k.length,_e=Math.min(Math.max(Math.round(Number(m)||du),Ob),Jm),Ie=be>0?Math.min(Math.max(Math.trunc(Number(l)||0),0),be-1):0,oe=!!s,me=yJ(be,Ie);return c.jsx(xf,{open:e,title:"G-code",isDesktop:t,width:n,onOpenChange:o,onStartResize:i,children:c.jsxs(yf,{type:"multiple",value:C,onValueChange:T,className:"text-sm",children:[c.jsx(wf,{items:R}),c.jsx(ci,{value:"toolpath",title:"Toolpath",children:c.jsxs("div",{children:[oe?null:c.jsx("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"Loading G-code..."}),c.jsx(bo,{title:"Summary",contentClassName:"px-3",children:c.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[c.jsxs(Ls,{variant:"secondary",className:"font-normal",children:[ii(be)," layer",be===1?"":"s"]}),c.jsxs(Ls,{variant:"outline",className:"font-normal",children:[ii(z.extrusionMoves)," path",ii(z.extrusionMoves)==="1"?"":"s"]}),c.jsxs(Ls,{variant:J?"secondary":"outline",className:"font-normal",children:["Supports ",J?"yes":"no"]}),Z?c.jsx(Ls,{variant:"outline",className:"font-normal",children:"Layer preview"}):null]})}),c.jsx(bo,{title:"Layers",children:c.jsx(Ni,{label:"Visible layers",value:me,onValueCommit:se=>{p?.(xJ(se,Ie+1,be))},valueInputProps:{disabled:be<=1,ariaLabel:"Visible G-code layers value",inputMode:"numeric"},children:c.jsx(_i,{value:[Ie],min:0,max:Math.max(be-1,0),step:1,disabled:be<=1,onValueChange:se=>{p?.(Number(se?.[0]??0))},className:Us,"aria-label":"Visible G-code layers"})})}),c.jsx(bo,{title:"Preview",children:c.jsx(Ni,{label:"Adaptive detail",value:`${gJ(_e)} (${_e}/${Jm})`,onValueCommit:se=>{y?.(ui(se,{fallback:_e,min:Ob,max:Jm,integer:!0}))},valueInputProps:{disabled:d,ariaLabel:"G-code preview detail value",inputMode:"numeric"},children:c.jsx(_i,{value:[_e],min:Ob,max:Jm,step:1,disabled:d,onValueChange:se=>{y?.(Number(se?.[0]??du))},className:Us,"aria-label":"G-code preview detail"})})}),c.jsxs(bo,{title:"Rendering",children:[c.jsx(Mi,{label:"Travel moves",description:`${ii(z.travelMoves)} move${ii(z.travelMoves)==="1"?"":"s"}`,checked:u,onCheckedChange:se=>g?.(se),ariaLabel:"Show G-code travel moves"}),c.jsx(Mi,{label:"Full detail",description:d?"Exact: render every visible path.":Ee?`${Ee} rendered path${Q===1?"":"s"}${Z&&Number.isFinite($)?` across ${re||"sampled"} layer${ie===1?"":"s"}, every ${pJ($)}`:""}`:"Use adaptive layer sampling.",checked:d,onCheckedChange:se=>x?.(se),ariaLabel:"Render full G-code detail"})]})]})}),c.jsx(ci,{value:"features",title:c.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[c.jsx("span",{children:"Features"}),Y.length?c.jsx(Ls,{variant:"outline",className:m_,children:Y.length}):null,J?c.jsx(Ls,{variant:"outline",className:"font-normal",children:"Supports"}):null]}),children:c.jsx("div",{className:"space-y-2 px-3 py-2.5",children:Y.length?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"flex flex-wrap gap-1.5 text-[11px]",children:[c.jsxs(Ls,{variant:J?"secondary":"outline",className:"font-normal",children:["Supports ",J?"included":"not detected"]}),c.jsxs(Ls,{variant:"outline",className:m_,children:[ii(G)," markers"]})]}),c.jsx("ul",{className:"divide-y divide-border/60 overflow-hidden rounded-md border border-border/60 bg-muted/15",children:Y.map(se=>{const Ae=ii(se?.extrusionMoves),we=ii(se?.markerCount),ct=[`${Ae} path${Ae==="1"?"":"s"}`,rS(se?.pathMm,1),se?.layerRangeText||"",we!=="0"?`${we} marker${we==="1"?"":"s"}`:""].filter(Boolean),ut=Array.isArray(se?.rawLabels)&&se.rawLabels.length?se.rawLabels.join(", "):"";return c.jsxs("li",{className:"min-w-0 px-2.5 py-1.5",title:ut,children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:"min-w-0 flex-1 truncate text-xs font-medium text-foreground",children:se?.label||"Other"}),c.jsx("span",{className:"shrink-0 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:hJ(se?.category)})]}),c.jsx("p",{className:"truncate text-[11px] leading-5 text-muted-foreground",children:ct.join(" | ")})]},se?.id||se?.label)})})]}):c.jsx("p",{className:"text-xs leading-5 text-muted-foreground",children:"No slicer feature annotations found. The preview can still show layers, extrusion paths, and travel moves."})})}),c.jsx(ci,{value:"stats",title:"Stats",children:c.jsxs("div",{className:"grid grid-cols-2 gap-2 px-3 py-3",children:[c.jsx(Ga,{label:"Extrusion",value:rS(z.extrusionMm,1)}),c.jsx(Ga,{label:"Path length",value:rS(z.pathMm,1)}),c.jsx(Ga,{label:"Retracts",value:ii(z.retractMoves)}),c.jsx(Ga,{label:"Temperature",value:p_(z.temperatureCommands)}),c.jsx(Ga,{label:"Move commands",value:p_(z.movementCommands)}),c.jsx(Ga,{label:"Prime moves",value:ii(z.primeMoves)})]})}),c.jsx(ci,{value:"bounds",title:"Bounds",children:c.jsxs("div",{className:"grid grid-cols-1 gap-2 px-3 py-3",children:[c.jsx(Ga,{label:"X",value:oS(s?.bounds,0,1),mono:!0}),c.jsx(Ga,{label:"Y",value:oS(s?.bounds,1,1),mono:!0}),c.jsx(Ga,{label:"Z",value:oS(s?.bounds,2,2),mono:!0})]})}),v,c.jsx(Ef,{entry:r,fileDownloadAvailable:S,viewerServerInfo:b,localFileOpenAvailable:I,fileAccessBusyKey:A,onOpenFileAsset:N,suppressDynamicStatus:P})]})})}function EJ({...e}){return c.jsx(Dz,{"data-slot":"collapsible",...e})}const wJ=f.forwardRef(function({...t},n){return c.jsx(Oz,{ref:n,"data-slot":"collapsible-trigger",...t})}),vJ=f.forwardRef(function({...t},n){return c.jsx(kz,{ref:n,"data-slot":"collapsible-content",...t})}),Wt=Object.freeze({LOADING:"loading",ASSEMBLY:"assembly",DXF:"dxf",GCODE:"gcode",IMPLICIT:"implicit",ROBOT:"robot",STEP_PART:"step-part",STL_MESH:"stl-mesh",THREE_MF_MESH:"3mf-mesh",GLB_MESH:"glb-mesh"});function hv(e,{sourceFormat:t="",status:n={}}={}){const r=pc(t||e?.kind),o=pc(e?.kind),i=n||{};return i.artifactGenerating||i.loading?Wt.LOADING:o==="assembly"?Wt.ASSEMBLY:r===B.DXF||o===B.DXF?Wt.DXF:r===B.GCODE||o===B.GCODE?Wt.GCODE:r===B.IMPLICIT||o===B.IMPLICIT?Wt.IMPLICIT:Hi(r)||o==="srdf"?Wt.ROBOT:r===B.STL||o===B.STL?Wt.STL_MESH:r===B.THREE_MF||o===B.THREE_MF?Wt.THREE_MF_MESH:r===B.GLB||r==="gltf"||o===B.GLB||o==="gltf"?Wt.GLB_MESH:Wt.STEP_PART}function X1({...e}){return c.jsx(zz,{"data-slot":"context-menu",...e})}const Y1=f.forwardRef(function({...t},n){return c.jsx(jz,{ref:n,"data-slot":"context-menu-trigger",...t})}),q1=f.forwardRef(function({className:t,...n},r){return c.jsx(Lz,{children:c.jsx(Fz,{ref:r,"data-slot":"context-menu-content",className:H("cad-glass-popover z-50 min-w-44 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",t),...n})})});function el({className:e,inset:t,variant:n="default",...r}){return c.jsx(Vz,{"data-slot":"context-menu-item","data-inset":t,"data-variant":n,className:H("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive",e),...r})}function Z1({className:e,...t}){return c.jsx(Bz,{"data-slot":"context-menu-separator",className:H("-mx-1 my-1 h-px bg-border",e),...t})}const CJ={},MJ=2e3,IJ=6e4,h_=1e4,AJ=750,J1="dir",g_="file",NJ=new Set(["vercel-blob"]);function gv(){return String(CJ?.VIEWER_ASSET_BACKEND||"").trim().toLowerCase()}function Hp(e=gv()){return NJ.has(String(e||"").trim().toLowerCase())}function _J(e=gv()){return Hp(e)?IJ:MJ}function Sk(e){return!e||typeof e!="object"?{schemaVersion:4,entries:[]}:{schemaVersion:4,entries:Array.isArray(e.entries)?e.entries:[]}}function Ek(e){return!e||typeof e!="object"?{schemaVersion:1,runs:[],files:{}}:{schemaVersion:1,runs:Array.isArray(e.runs)?e.runs:[],files:e.files&&typeof e.files=="object"?e.files:{}}}const Kp=new Set;let Q1="",dr={manifest:Sk(),generationStatus:Ek(),revision:0,catalogHydrated:!1,catalogRefreshing:typeof window<"u",catalogError:"",activeDir:""},Jg=0,Im=null,Am=null,b_=Hp(),y_=!1;Q1=JSON.stringify(dr.manifest);function eE(e,{hydrated:t=!0,refreshing:n=!1,error:r="",activeDir:o=dr.activeDir}={}){const i=Sk(e),s=JSON.stringify(i),a=s!==Q1,l={manifest:a?i:dr.manifest,generationStatus:dr.generationStatus,revision:dr.revision+1,catalogHydrated:t,catalogRefreshing:n,catalogError:r,activeDir:o};if(!(!a&&l.catalogHydrated===dr.catalogHydrated&&l.catalogRefreshing===dr.catalogRefreshing&&l.catalogError===dr.catalogError&&l.activeDir===dr.activeDir)){a&&(Q1=s),dr={...l};for(const u of Kp)u()}}function x_(e){const t=Ek(e),n=JSON.stringify(dr.generationStatus),r=JSON.stringify(t);if(n!==r){dr={...dr,generationStatus:t,revision:dr.revision+1};for(const o of Kp)o()}}function TJ({refreshing:e=dr.catalogRefreshing,error:t=dr.catalogError,activeDir:n=dr.activeDir}={}){if(!(e===dr.catalogRefreshing&&t===dr.catalogError&&n===dr.activeDir)){dr={...dr,revision:dr.revision+1,catalogRefreshing:e,catalogError:t,activeDir:n};for(const r of Kp)r()}}function RJ(e){if(typeof window>"u")return"";try{return String(new URL(window.location.href).searchParams.get(e)||"").trim()}catch{return""}}function Xp({assetBackend:e=gv()}={}){if(typeof window>"u"||Hp(e))return"";let t=null;try{t=new URL(window.location.href)}catch{return""}if(t.searchParams.has(J1)){const n=String(t.searchParams.get(J1)||"").trim();return rv(n)}return ZO()}function a0(e,{activeDir:t=Xp(),includeFile:n=!1,params:r={}}={}){const o=new URL(e,"http://cad.local");if(t&&o.searchParams.set(J1,t),n){const i=RJ(g_);i&&o.searchParams.set(g_,i)}for(const[i,s]of Object.entries(r)){const a=String(s??"").trim();a&&o.searchParams.set(i,a)}return`${o.pathname}${o.search}`}async function bv(e,t){try{const n=await e.json();return String(n?.error||n?.result?.error||n?.result?.validation?.error?.message||t).trim()||t}catch{return t}}async function PJ(e,t,n,r){if(typeof AbortController!="function")return fetch(e,t);const o=new AbortController,i=setTimeout(()=>{o.abort()},n);try{return await fetch(e,{...t,signal:o.signal})}catch(s){throw s?.name==="AbortError"?new Error(r):s}finally{clearTimeout(i)}}async function Yp({markRefreshing:e=!dr.catalogHydrated}={}){if(typeof window>"u")return;if(Im)return Im;const t=++Jg,n=Xp();return e&&TJ({refreshing:!0,error:"",activeDir:n}),Im=(async()=>{try{const r=await PJ(a0("/__cad/catalog",{activeDir:n,includeFile:!0}),{cache:"no-store"},h_,`Timed out loading CAD catalog after ${h_/1e3}s`);if(!r.ok)throw new Error(await bv(r,`Failed to read CAD catalog: ${r.status} ${r.statusText}`));const o=await r.json();t===Jg&&eE(o,{hydrated:!0,refreshing:!1,error:"",activeDir:n})}catch(r){throw t===Jg&&eE(dr.manifest,{hydrated:!0,refreshing:!1,error:r instanceof Error?r.message:String(r),activeDir:n}),r}finally{t===Jg&&(Im=null)}})(),Im}async function vp(){if(typeof window>"u"||b_)return;const e=Xp();return Am||(Am=(async()=>{try{const t=await fetch(a0("/__cad/generation-status",{activeDir:e}),{cache:"no-store"}),n=String(t.headers?.get?.("content-type")||"");if(!t.ok||!n.includes("application/json")){if(t.status===404||t.status===501||!n.includes("application/json")){b_=!0,x_(null);return}throw new Error(`Failed to read CAD generation status: ${t.status} ${t.statusText}`)}x_(await t.json())}catch{}finally{Am=null}})(),Am)}async function OJ(e,{signal:t}={}){if(typeof window>"u")return null;const n=String(e||"").trim();if(!n)throw new Error("Missing STEP file");const r=await fetch(a0("/__cad/step-artifact",{params:{file:n}}),{method:"POST",cache:"no-store",signal:t});if(!r.ok)throw new Error(await bv(r,`Failed to generate STEP artifact: ${r.status} ${r.statusText}`));const o=await r.json();return o?.catalog&&eE(o.catalog),o}async function kJ(e,{signal:t}={}){if(typeof window>"u")return null;const n=String(e||"").trim();if(!n)throw new Error("Missing STEP file");const r=await fetch(a0("/__cad/step-source-status",{params:{file:n}}),{method:"GET",cache:"no-store",signal:t});if(!r.ok)throw new Error(await bv(r,`Failed to check STEP source status: ${r.status} ${r.statusText}`));return r.json()}function S_(){return dr}function DJ(e){return Kp.add(e),()=>{Kp.delete(e)}}if(typeof window<"u"){const e=()=>{Yp({markRefreshing:!1}).catch(t=>{}),vp()};Yp().catch(t=>{}),vp(),y_||(y_=!0,window.setInterval(()=>{document.visibilityState!=="hidden"&&e()},_J()),window.setInterval(()=>{document.visibilityState!=="hidden"&&vp()},AJ),window.addEventListener("focus",e),document.addEventListener("visibilitychange",()=>{document.visibilityState!=="hidden"&&e()}))}const wk=Object.freeze(["stl","glb","3mf"]),vk=96;function jJ(e){return String(e||"").trim().replace(/\\/g,"/").replace(/^\/+/,"")}function LJ(e){const t=String(e||"").trim().toLowerCase().replace(/^\./,"");return wk.includes(t)?t:""}function E_(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}async function FJ({file:e,format:t,parameterValues:n=null,animationState:r=null,resolution:o=vk}={}){const i=jJ(e),s=LJ(t);if(!i)throw new Error("Missing implicit CAD file");if(!s)throw new Error(`Unsupported implicit CAD export format: ${t||"(missing)"}`);const a=await fetch(`/__cad/implicit-export?file=${encodeURIComponent(i)}&format=${encodeURIComponent(s)}`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({format:s,resolution:o,...E_(n)?{parameterValues:n}:{},...E_(r)?{animationState:r}:{}})});let l=null;try{l=await a.json()}catch{l=null}if(!a.ok||!l?.ok)throw new Error(String(l?.error||`Implicit CAD export failed with HTTP ${a.status}`));return l.catalog&&Yp({markRefreshing:!1}).catch(()=>{}),l}function Ck({entry:e,onRevealInExplorerView:t}){return typeof t!="function"?null:c.jsx(el,{className:"text-xs",onSelect:()=>{t(e)},children:c.jsx("span",{className:"min-w-0 truncate",children:"Reveal in Explorer View"})})}function zJ({entry:e,asset:t,canRevealFileAssets:n,canCopyFileAssetLinks:r,canCopyFileAssetPaths:o,busyKey:i="",onDownloadFileAsset:s,onRevealFileAsset:a,onRevealInExplorerView:l,onCopyFileAssetReference:u}){if(!t)return null;const d=`${t.fileRef}:${t.asset}`,m=i===d,p=typeof u=="function";return c.jsxs(c.Fragment,{children:[n?c.jsx(el,{className:"text-xs",disabled:m,onSelect:()=>{a(e,t.asset,t)},children:c.jsx("span",{className:"min-w-0 truncate",children:"Reveal in Folder"})}):null,c.jsx(Ck,{entry:e,onRevealInExplorerView:l}),o&&p?c.jsxs(c.Fragment,{children:[c.jsx(el,{className:"text-xs",onSelect:()=>{u(e,t.asset,t,"path")},children:c.jsx("span",{className:"min-w-0 truncate",children:"Copy Path"})}),c.jsx(el,{className:"text-xs",onSelect:()=>{u(e,t.asset,t,"relativePath")},children:c.jsx("span",{className:"min-w-0 truncate",children:"Copy Relative Path"})})]}):null,r&&p?c.jsx(el,{className:"text-xs",onSelect:()=>{u(e,t.asset,t,"link")},children:c.jsx("span",{className:"min-w-0 truncate",children:"Copy Link"})}):null,c.jsx(el,{className:"text-xs",onSelect:()=>{s(e,t.asset,t)},children:c.jsx("span",{className:"min-w-0 truncate",children:"Download"})})]})}function BJ({entry:e,busyKey:t="",onExportImplicitFile:n}){if(String(e?.kind||"").trim().toLowerCase()!=="implicit"||typeof n!="function")return null;const r=String(e?.file||e?.id||"").trim();return c.jsxs(c.Fragment,{children:[c.jsx(Z1,{}),wk.map(o=>{const i=o.toUpperCase(),s=`${r}:export:${o}`;return c.jsx(el,{className:"text-xs",disabled:t===s,onSelect:()=>{n(e,o)},children:c.jsxs("span",{className:"min-w-0 truncate",children:["Export to ",i]})},o)})]})}function tE({entry:e,canRevealFileAssets:t=!1,canCopyFileAssetLinks:n=!1,canCopyFileAssetPaths:r=!1,busyKey:o="",onDownloadFileAsset:i,onExportImplicitFile:s,onRevealFileAsset:a,onRevealInExplorerView:l,onCopyFileAssetReference:u,children:d}){const m=e&&typeof l=="function",p=e&&typeof i=="function",g=e&&typeof s=="function"&&String(e?.kind||"").trim().toLowerCase()==="implicit";if(!m&&!p&&!g)return d;const x=cv(e);return!m&&!x.output&&!g?d:c.jsxs(X1,{modal:!1,children:[c.jsx(Y1,{asChild:!0,children:d}),c.jsxs(q1,{className:"w-64",children:[!x.output||!p?c.jsx(Ck,{entry:e,onRevealInExplorerView:l}):null,x.output&&p?c.jsx(zJ,{entry:e,asset:x.output,canRevealFileAssets:t&&typeof a=="function",canCopyFileAssetLinks:n,canCopyFileAssetPaths:r,busyKey:o,onDownloadFileAsset:i,onRevealFileAsset:a,onRevealInExplorerView:l,onCopyFileAssetReference:u}):null,c.jsx(BJ,{entry:e,busyKey:o,onExportImplicitFile:s})]})]})}const VJ=150,Nm="calc(100vw - 0.75rem)",w_="min(18rem, calc(100vw - 0.75rem))",$J={[Wt.LOADING]:BE,[Wt.ASSEMBLY]:zE,[Wt.DXF]:FE,[Wt.GCODE]:LE,[Wt.IMPLICIT]:Fy,[Wt.ROBOT]:jE,[Wt.STEP_PART]:sf,[Wt.STL_MESH]:DE,[Wt.THREE_MF_MESH]:Ly,[Wt.GLB_MESH]:kE};function GJ(e,t,n){return $J[hv(e,{sourceFormat:t,status:n})]||sf}function Mk({entry:e,depth:t,selectedKey:n,onSelectEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u=[],activeStepArtifactGenerationFile:d="",stepArtifactGenerationAvailable:m=!0,canRevealFileAssets:p=!1,canCopyFileAssetLinks:g=!1,canCopyFileAssetPaths:x=!1,fileAccessBusyKey:y="",onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onRevealInExplorerView:A,onCopyFileAssetReference:N,nested:P=!1}){const{isMobile:R,setOpenMobile:v}=nh(),C=at(e),T=C===n,k=dl(e),z=o(e),Y=YO(e,{sourceFormat:z,entryKey:C,hasMesh:i(e),hasDxf:s(e),hasGcode:a(e),hasUrdf:l(e),activeGenerationFiles:u,activeStepArtifactGenerationFile:d,stepArtifactGenerationAvailable:m}),K=GJ(e,z,Y),J=nv(e),G=J==="python"?Fy:J==="step"?C3:null,Q=!!G,D=[k,J==="python"?"Python-backed":"",J==="step"?"STEP-backed":"",Y.statusLabel,e?.kind,String(e?.file||"")].filter(Boolean).join(" | "),$=c.jsxs(jR,{type:"button",isActive:T,size:"sm",title:D,className:H("min-w-0 w-full justify-start"),onClick:()=>{r(C),R&&v(!1)},tooltip:k,children:[c.jsxs("span",{className:"relative flex size-4 shrink-0 items-center justify-center","aria-hidden":"true",children:[c.jsx(K,{className:H("size-4",Y.loading&&"animate-spin")}),Q?c.jsx("span",{className:"absolute -bottom-1 -right-1 flex size-2.5 items-center justify-center rounded-[3px] border border-sidebar bg-sidebar text-sidebar-foreground shadow-sm",children:c.jsx(G,{className:"size-2",strokeWidth:2.5})}):null]}),c.jsx("span",{className:"block min-w-0 flex-1 max-w-full overflow-hidden text-ellipsis whitespace-nowrap",children:k})]});return c.jsx(tE,{entry:e,canRevealFileAssets:p,canCopyFileAssetLinks:g,canCopyFileAssetPaths:x,busyKey:y,onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onRevealInExplorerView:A,onCopyFileAssetReference:N,children:$})}function Ik({directory:e,depth:t,queryActive:n,expandedDirectoryIds:r,onToggleDirectory:o,selectedKey:i,onSelectEntry:s,entrySourceFormat:a,entryHasMesh:l,entryHasDxf:u,entryHasGcode:d,entryHasUrdf:m,activeGenerationFiles:p=[],activeStepArtifactGenerationFile:g="",stepArtifactGenerationAvailable:x=!0,canRevealFileAssets:y=!1,canCopyFileAssetLinks:S=!1,canCopyFileAssetPaths:b=!1,fileAccessBusyKey:I="",onDownloadFileAsset:A,onExportImplicitFile:N,onRevealFileAsset:P,onRevealInExplorerView:R,onCopyFileAssetReference:v,nested:C=!1}){const T=n||r.has(e.id),k=C?JM:DR;return c.jsx(EJ,{asChild:!0,open:T,children:c.jsxs(k,{className:"min-w-0 w-full max-w-full",children:[c.jsx(wJ,{asChild:!0,children:c.jsxs(jR,{type:"button",size:"sm",title:e.name,"aria-disabled":n,className:H("group/directory min-w-0 w-full justify-start",n&&"cursor-default"),onClick:z=>{if(n){z.preventDefault();return}o(e.id)},children:[c.jsx(Vd,{className:H("transition-transform",T&&"rotate-90"),"aria-hidden":"true"}),c.jsx("span",{className:"block min-w-0 flex-1 max-w-full overflow-hidden text-ellipsis whitespace-nowrap",children:e.name})]})}),c.jsx(vJ,{className:"min-w-0 w-full max-w-full",children:c.jsx(c5,{className:"min-w-0 w-full max-w-full",children:o0(e).map(z=>z.type==="directory"?c.jsx(Ik,{directory:z.value,depth:t+1,queryActive:n,expandedDirectoryIds:r,onToggleDirectory:o,selectedKey:i,onSelectEntry:s,entrySourceFormat:a,entryHasMesh:l,entryHasDxf:u,entryHasGcode:d,entryHasUrdf:m,activeGenerationFiles:p,activeStepArtifactGenerationFile:g,stepArtifactGenerationAvailable:x,canRevealFileAssets:y,canCopyFileAssetLinks:S,canCopyFileAssetPaths:b,fileAccessBusyKey:I,onDownloadFileAsset:A,onExportImplicitFile:N,onRevealFileAsset:P,onRevealInExplorerView:R,onCopyFileAssetReference:v,nested:!0},z.key):c.jsx(JM,{className:"min-w-0 w-full max-w-full",children:c.jsx(Mk,{entry:z.value,depth:t+1,selectedKey:i,onSelectEntry:s,entrySourceFormat:a,entryHasMesh:l,entryHasDxf:u,entryHasGcode:d,entryHasUrdf:m,activeGenerationFiles:p,activeStepArtifactGenerationFile:g,stepArtifactGenerationAvailable:x,canRevealFileAssets:y,canCopyFileAssetLinks:S,canCopyFileAssetPaths:b,fileAccessBusyKey:I,onDownloadFileAsset:A,onExportImplicitFile:N,onRevealFileAsset:P,onRevealInExplorerView:R,onCopyFileAssetReference:v,nested:!0})},z.key))})})]})})}function UJ({onStartResize:e}){const{isMobile:t,state:n}=nh();return t||n!=="expanded"||typeof e!="function"?null:c.jsx(Qe,{type:"button",variant:"ghost",size:"sm","aria-label":"Resize file viewer sidebar",title:"Resize sidebar",onPointerDown:e,className:"group/sidebar-resize absolute inset-y-0 -right-1.5 z-30 flex h-auto w-3 cursor-col-resize touch-none items-stretch justify-center rounded-none px-0 py-0 hover:bg-transparent",children:c.jsx("span",{className:"my-2 w-px rounded-full bg-transparent transition-colors group-hover/sidebar-resize:bg-sidebar-border group-focus-visible/sidebar-resize:bg-ring"})})}function v_(e){const t=String(e?.rootName||"").trim();if(t)return t;const n=String(e?.rootPath||e?.dir||"").trim().replace(/\\/g,"/").replace(/\/+$/g,"");return n.split("/").filter(Boolean).pop()||n||"Directory"}function C_(e){return String(e?.rootPath||e?.dir||"").trim()}function WJ(e){const t=new Set,n=[];for(const r of Array.isArray(e)?e:[]){const o=String(r?.dir||"").trim(),i=String(r?.rootPath||"").trim(),s=i||o;!o||!s||t.has(s)||(t.add(s),n.push({dir:o,rootPath:i,rootName:String(r?.rootName||"").trim()}))}return n}function HJ({directoryOptions:e=[],activeDirectory:t="",onSelectDirectory:n}){const r=WJ(e);if(r.length<=1)return null;const o=String(t||"").trim(),i=r.find(l=>l.dir===o||l.rootPath===o)||r[0],s=v_(i),a=C_(i);return c.jsxs(hf,{children:[c.jsx(gf,{asChild:!0,children:c.jsxs(Qe,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-full justify-between gap-2 rounded-md p-2 text-xs font-medium text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",title:a||s,children:[c.jsxs("span",{className:"flex min-w-0 flex-1 items-center gap-2",children:[c.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center","aria-hidden":"true",children:c.jsx(LS,{className:"size-4 text-muted-foreground"})}),c.jsx("span",{className:"min-w-0 truncate",children:s})]}),c.jsx(jy,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":"true"})]})}),c.jsx(bf,{align:"start",className:"w-[--radix-dropdown-menu-trigger-width] max-w-[min(28rem,calc(100vw-1rem))]",children:r.map(l=>{const u=v_(l),d=C_(l),m=l.dir===i.dir||l.rootPath===i.rootPath;return c.jsxs(Yo,{className:H("min-w-0 items-start gap-2 text-xs",m&&"bg-accent text-accent-foreground"),onSelect:()=>{typeof n=="function"&&l.dir!==i.dir&&n(l.dir)},title:d||u,children:[c.jsx(LS,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground","aria-hidden":"true"}),c.jsxs("span",{className:"min-w-0 flex-1",children:[c.jsx("span",{className:"block truncate font-medium",children:u}),d?c.jsx("span",{className:"mt-0.5 block truncate text-[11px] text-muted-foreground",children:d}):null]})]},l.rootPath||l.dir)})})]})}function KJ({query:e,onQueryChange:t,filteredEntries:n,catalogEntries:r,filteredEntriesTree:o,selectedKey:i,expandedDirectoryIds:s,onToggleDirectory:a,onSelectEntry:l,entrySourceFormat:u,entryHasMesh:d,entryHasDxf:m,entryHasGcode:p,entryHasUrdf:g,activeGenerationFiles:x=[],activeStepArtifactGenerationFile:y="",stepArtifactGenerationAvailable:S=!0,canRevealFileAssets:b=!1,canCopyFileAssetLinks:I=!1,canCopyFileAssetPaths:A=!1,fileAccessBusyKey:N="",onDownloadFileAsset:P,onExportImplicitFile:R,onRevealFileAsset:v,onRevealInExplorerView:C,onCopyFileAssetReference:T,catalogHydrated:k=!1,catalogRefreshing:z=!1,catalogError:Y="",directoryOptions:K=[],activeDirectory:J="",onSelectDirectory:G,resizable:Q=!0,onStartResize:D}){const $=e.trim().length>0,ie=n.length>0,W=r.length>0,Z=String(Y||"").trim(),Ee=!k||z&&!W;return c.jsxs(c.Fragment,{children:[c.jsxs(r5,{className:"gap-2",children:[c.jsx(HJ,{directoryOptions:K,activeDirectory:J,onSelectDirectory:G}),c.jsx(n5,{type:"search",placeholder:"Search files, ids, or paths...",value:e,onChange:re=>t(re.target.value),"aria-label":"Search CAD files",className:"h-7 text-xs md:text-xs"})]}),c.jsx(o5,{children:c.jsx(ch,{className:"cad-file-viewer-scroll min-h-0 min-w-0 flex-1 overflow-x-hidden",type:"auto",children:c.jsx(i5,{children:c.jsx(s5,{children:ie?c.jsx(a5,{children:o0(o).map(re=>re.type==="directory"?c.jsx(Ik,{directory:re.value,depth:0,queryActive:$,expandedDirectoryIds:s,onToggleDirectory:a,selectedKey:i,onSelectEntry:l,entrySourceFormat:u,entryHasMesh:d,entryHasDxf:m,entryHasGcode:p,entryHasUrdf:g,activeGenerationFiles:x,activeStepArtifactGenerationFile:y,stepArtifactGenerationAvailable:S,canRevealFileAssets:b,canCopyFileAssetLinks:I,canCopyFileAssetPaths:A,fileAccessBusyKey:N,onDownloadFileAsset:P,onExportImplicitFile:R,onRevealFileAsset:v,onRevealInExplorerView:C,onCopyFileAssetReference:T},re.key):c.jsx(DR,{className:"min-w-0 w-full max-w-full",children:c.jsx(Mk,{entry:re.value,depth:0,selectedKey:i,onSelectEntry:l,entrySourceFormat:u,entryHasMesh:d,entryHasDxf:m,entryHasGcode:p,entryHasUrdf:g,activeGenerationFiles:x,activeStepArtifactGenerationFile:y,stepArtifactGenerationAvailable:S,canRevealFileAssets:b,canCopyFileAssetLinks:I,canCopyFileAssetPaths:A,fileAccessBusyKey:N,onDownloadFileAsset:P,onExportImplicitFile:R,onRevealFileAsset:v,onRevealInExplorerView:C,onCopyFileAssetReference:T})},re.key))}):Z&&!W?c.jsxs("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:["CAD catalog unavailable: ",Z]}):Ee?c.jsx("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"Loading CAD catalog..."}):W?c.jsx("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"No CAD entries match this filter."}):c.jsx("p",{className:"px-2 py-3 text-xs text-muted-foreground",children:"No CAD entries found."})})})})}),c.jsx(UJ,{onStartResize:Q?D:null})]})}function XJ({previewMode:e,query:t,onQueryChange:n,filteredEntries:r,catalogEntries:o,filteredEntriesTree:i,selectedKey:s,expandedDirectoryIds:a,onToggleDirectory:l,onSelectEntry:u,entrySourceFormat:d,entryHasMesh:m,entryHasDxf:p,entryHasGcode:g,entryHasUrdf:x,activeGenerationFiles:y=[],activeStepArtifactGenerationFile:S="",stepArtifactGenerationAvailable:b=!0,canRevealFileAssets:I=!1,canCopyFileAssetLinks:A=!1,canCopyFileAssetPaths:N=!1,fileAccessBusyKey:P="",onDownloadFileAsset:R,onExportImplicitFile:v,onRevealFileAsset:C,onRevealInExplorerView:T,onCopyFileAssetReference:k,catalogHydrated:z=!1,catalogRefreshing:Y=!1,catalogError:K="",directoryOptions:J=[],activeDirectory:G="",onSelectDirectory:Q,resizable:D=!0,onStartResize:$}){const{isMobile:ie,state:W,openMobile:Z,setOpenMobile:Ee}=nh();if(e)return null;const re=c.jsx(KJ,{query:t,onQueryChange:n,filteredEntries:r,catalogEntries:o,filteredEntriesTree:i,selectedKey:s,expandedDirectoryIds:a,onToggleDirectory:l,onSelectEntry:u,entrySourceFormat:d,entryHasMesh:m,entryHasDxf:p,entryHasGcode:g,entryHasUrdf:x,activeGenerationFiles:y,activeStepArtifactGenerationFile:S,stepArtifactGenerationAvailable:b,canRevealFileAssets:I,canCopyFileAssetLinks:A,canCopyFileAssetPaths:N,fileAccessBusyKey:P,onDownloadFileAsset:R,onExportImplicitFile:v,onRevealFileAsset:C,onRevealInExplorerView:T,onCopyFileAssetReference:k,catalogHydrated:z,catalogRefreshing:Y,catalogError:K,directoryOptions:J,activeDirectory:G,onSelectDirectory:Q,resizable:D,onStartResize:$});if(ie)return c.jsx(_R,{open:Z,onOpenChange:Ee,children:c.jsxs(TR,{side:"left",showCloseButton:!1,className:"cad-glass-surface gap-0 p-0 text-sidebar-foreground",style:{width:w_,maxWidth:Nm},children:[c.jsxs(RR,{className:"sr-only",children:[c.jsx(PR,{children:"CAD Viewer"}),c.jsx(OR,{children:"Browse files in the CAD catalog."})]}),c.jsx("div",{className:"flex h-full min-h-0 w-full flex-col","aria-label":"CAD Viewer",children:re})]})});if(W!=="expanded")return null;const be=`min(var(--sidebar-width), ${Nm})`,_e=ie?{width:w_,maxWidth:Nm}:{width:be,flexBasis:be,minWidth:`min(${VJ}px, ${Nm})`,maxWidth:Nm};return c.jsx("aside",{className:H("cad-glass-surface pointer-events-auto z-30 flex h-full max-w-[calc(100vw_-_0.75rem)] flex-col border-r border-sidebar-border text-sidebar-foreground",ie?"absolute inset-y-0 left-0 shadow-xl":"relative shrink-0"),style:_e,"aria-label":"CAD Viewer",children:re})}function Ak({...e}){return c.jsx(qz,{"data-slot":"alert-dialog",...e})}f.forwardRef(function({...t},n){return c.jsx($z,{ref:n,"data-slot":"alert-dialog-trigger",...t})});function YJ({...e}){return c.jsx(Yz,{"data-slot":"alert-dialog-portal",...e})}const qJ=f.forwardRef(function({className:t,...n},r){return c.jsx(Gz,{ref:r,"data-slot":"alert-dialog-overlay",className:H("fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",t),...n})}),Nk=f.forwardRef(function({className:t,...n},r){return c.jsxs(YJ,{children:[c.jsx(qJ,{}),c.jsx(Uz,{ref:r,"data-slot":"alert-dialog-content",className:H("cad-glass-popover fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-md border p-6 text-foreground shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",t),...n})]})});function _k({className:e,...t}){return c.jsx("div",{"data-slot":"alert-dialog-header",className:H("flex flex-col gap-2 text-center sm:text-left",e),...t})}function Tk({className:e,...t}){return c.jsx("div",{"data-slot":"alert-dialog-footer",className:H("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}const Rk=f.forwardRef(function({className:t,...n},r){return c.jsx(Wz,{ref:r,"data-slot":"alert-dialog-title",className:H("text-lg font-semibold",t),...n})}),Pk=f.forwardRef(function({className:t,...n},r){return c.jsx(Hz,{ref:r,"data-slot":"alert-dialog-description",className:H("text-sm text-muted-foreground",t),...n})}),ZJ=f.forwardRef(function({className:t,...n},r){return c.jsx(Kz,{ref:r,className:H(HE(),t),...n})}),Ok=f.forwardRef(function({className:t,...n},r){return c.jsx(Xz,{ref:r,className:H(HE({variant:"outline"}),t),...n})});function JJ({...e}){return c.jsx(e3,{"data-slot":"popover",...e})}const QJ=f.forwardRef(function({...t},n){return c.jsx(Zz,{ref:n,"data-slot":"popover-trigger",...t})}),eQ=f.forwardRef(function({className:t,align:n="center",sideOffset:r=4,...o},i){return c.jsx(Jz,{children:c.jsx(Qz,{ref:i,"data-slot":"popover-content",align:n,sideOffset:r,className:H("cad-glass-popover z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...o})})}),kk=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,tQ=["hex","rgb","hsl"];function Ro(e,t,n){const r=Number(e);return Number.isFinite(r)?Math.min(Math.max(r,t),n):t}function nE(e,t="#ffffff"){const n=String(e||"").trim();return kk.test(n)?n.length===4?`#${n[1]}${n[1]}${n[2]}${n[2]}${n[3]}${n[3]}`.toLowerCase():n.toLowerCase():t}function iS(e){return Math.round(Ro(e,0,255)).toString(16).padStart(2,"0")}function Qg({r:e,g:t,b:n}){return`#${iS(e)}${iS(t)}${iS(n)}`.toLowerCase()}function nQ(e){const t=nE(e);return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16)}}function rQ({r:e,g:t,b:n}){const r=Ro(e,0,255)/255,o=Ro(t,0,255)/255,i=Ro(n,0,255)/255,s=Math.max(r,o,i),a=Math.min(r,o,i),l=s-a;let u=0;return l!==0&&(s===r?u=(o-i)/l%6:s===o?u=(i-r)/l+2:u=(r-o)/l+4,u*=60,u<0&&(u+=360)),{h:u,s:s===0?0:l/s*100,v:s*100}}function M_({h:e,s:t,v:n}){const r=(Number(e)%360+360)%360,o=Ro(t,0,100)/100,i=Ro(n,0,100)/100,s=i*o,a=s*(1-Math.abs(r/60%2-1)),l=i-s;let u=0,d=0,m=0;return r<60?(u=s,d=a):r<120?(u=a,d=s):r<180?(d=s,m=a):r<240?(d=a,m=s):r<300?(u=a,m=s):(u=s,m=a),{r:(u+l)*255,g:(d+l)*255,b:(m+l)*255}}function oQ({r:e,g:t,b:n}){const r=Ro(e,0,255)/255,o=Ro(t,0,255)/255,i=Ro(n,0,255)/255,s=Math.max(r,o,i),a=Math.min(r,o,i),l=s-a;let u=0,d=0;const m=(s+a)/2;return l!==0&&(d=l/(1-Math.abs(2*m-1)),s===r?u=(o-i)/l%6:s===o?u=(i-r)/l+2:u=(r-o)/l+4,u*=60,u<0&&(u+=360)),{h:u,s:d*100,l:m*100}}function iQ({h:e,s:t,l:n}){const r=(Number(e)%360+360)%360,o=Ro(t,0,100)/100,i=Ro(n,0,100)/100,s=(1-Math.abs(2*i-1))*o,a=s*(1-Math.abs(r/60%2-1)),l=i-s/2;let u=0,d=0,m=0;return r<60?(u=s,d=a):r<120?(u=a,d=s):r<180?(d=s,m=a):r<240?(d=a,m=s):r<300?(u=a,m=s):(u=s,m=a),{r:(u+l)*255,g:(d+l)*255,b:(m+l)*255}}function sQ(e){const t=nQ(e),n=oQ(t);return{rgb:t,hsl:{h:Math.round(n.h),s:Math.round(n.s),l:Math.round(n.l)},hsv:rQ(t)}}function cd({label:e,value:t,min:n,max:r,onChange:o}){return c.jsxs("label",{className:"min-w-0 space-y-1",children:[c.jsx("span",{className:"block text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:e}),c.jsx(go,{type:"number",min:n,max:r,value:t,onChange:i=>o(Ro(i.currentTarget.value,n,r)),className:"h-7 px-1.5 text-[11px]"})]})}function yv({value:e="#ffffff",onChange:t,opacity:n=1,onOpacityChange:r,className:o,swatchClassName:i,valueClassName:s,popoverAlign:a="start",showValue:l=!0,showOpacity:u=!1,disabled:d=!1,...m}){const p=nE(e),g=Number.isFinite(Number(n))?Ro(Number(n),0,1):1,[x,y]=f.useState("hex"),[S,b]=f.useState(p),[I,A]=f.useState(!1),N=f.useRef(null),P=f.useRef(null);f.useEffect(()=>{b(p)},[p]),f.useEffect(()=>{A(typeof window<"u"&&typeof window.EyeDropper=="function")},[]);const R=f.useMemo(()=>sQ(p),[p]),v=R.hsv.h,C=`hsl(${v} 100% 50%)`,T=f.useCallback($=>{const ie=nE($,p);b(ie),ie!==p&&t?.(ie)},[p,t]),k=f.useCallback($=>{const ie=N.current?.getBoundingClientRect();if(!ie||ie.width<=0||ie.height<=0)return;const W=Ro(($.clientX-ie.left)/ie.width*100,0,100),Z=Ro((1-($.clientY-ie.top)/ie.height)*100,0,100);T(Qg(M_({h:v,s:W,v:Z})))},[T,v]),z=f.useCallback($=>{const ie=P.current?.getBoundingClientRect();if(!ie||ie.width<=0)return;const W=Ro(($.clientX-ie.left)/ie.width*360,0,360);T(Qg(M_({h:W,s:R.hsv.s,v:R.hsv.v})))},[R.hsv.s,R.hsv.v,T]),Y=$=>{N.current?.setPointerCapture($.pointerId),k($)},K=$=>{P.current?.setPointerCapture($.pointerId),z($)},J=$=>{if(!kk.test(String($||"").trim())){b(p);return}T($)},G=($,ie)=>{T(Qg({...R.rgb,[$]:ie}))},Q=($,ie)=>{T(Qg(iQ({...R.hsl,[$]:ie})))},D=async()=>{if(I)try{const $=await new window.EyeDropper().open();$?.sRGBHex&&T($.sRGBHex)}catch{}};return c.jsxs(JJ,{children:[c.jsx(QJ,{asChild:!0,children:c.jsxs(Qe,{type:"button","data-slot":"color-picker-trigger",variant:"outline",size:"sm",disabled:d,className:H("h-7 w-auto max-w-full justify-start gap-1.5 px-1.5 text-[11px] font-medium",o),...m,children:[c.jsx("span",{className:H("size-4 shrink-0 rounded bg-clip-border shadow-[0_0_0_1px_rgba(15,23,42,0.24)] dark:shadow-[0_0_0_1px_rgba(255,255,255,0.24)]",i),style:{backgroundColor:p,opacity:u?g:void 0},"aria-hidden":"true"}),l?c.jsx("span",{className:H("truncate font-mono uppercase leading-none",s),children:p}):null]})}),c.jsxs(eQ,{align:a,className:"w-64 space-y-3 p-3",children:[c.jsx("div",{ref:N,role:"slider",tabIndex:0,"aria-label":"Saturation and brightness","aria-valuetext":`${Math.round(R.hsv.s)}% saturation, ${Math.round(R.hsv.v)}% brightness`,className:"relative h-32 touch-none overflow-hidden rounded-md border shadow-inner outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50",style:{backgroundColor:C,backgroundImage:"linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, transparent)"},onPointerDown:Y,onPointerMove:$=>{N.current?.hasPointerCapture($.pointerId)&&k($)},children:c.jsx("span",{className:"absolute size-3 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.45)]",style:{left:`${R.hsv.s}%`,top:`${100-R.hsv.v}%`},"aria-hidden":"true"})}),c.jsx("div",{ref:P,role:"slider",tabIndex:0,"aria-label":"Hue","aria-valuemin":0,"aria-valuemax":360,"aria-valuenow":Math.round(v),className:"relative h-3 touch-none rounded-full border outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50",style:{background:"linear-gradient(90deg, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)"},onPointerDown:K,onPointerMove:$=>{P.current?.hasPointerCapture($.pointerId)&&z($)},children:c.jsx("span",{className:"absolute top-1/2 size-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-[0_0_0_1px_rgba(0,0,0,0.45)]",style:{left:`${v/360*100}%`,backgroundColor:C},"aria-hidden":"true"})}),u?c.jsxs("div",{className:"space-y-1",children:[c.jsxs("div",{className:"flex items-center justify-between gap-2 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:[c.jsx("span",{children:"Opacity"}),c.jsxs("span",{children:[Math.round(g*100),"%"]})]}),c.jsxs("div",{className:"flex items-center gap-1.5",children:[c.jsx(go,{type:"number",min:0,max:100,step:1,value:Math.round(g*100),onChange:$=>{r?.(Ro($.currentTarget.value,0,100)/100)},className:"h-7 px-1.5 text-[11px]","aria-label":"Color opacity"}),c.jsx("span",{className:"text-[10px] font-medium text-muted-foreground",children:"%"})]})]}):null,c.jsx("div",{className:"flex items-center gap-1 rounded-md bg-muted p-1",children:tQ.map($=>c.jsx(Qe,{type:"button",variant:x===$?"secondary":"ghost",size:"xs",className:"h-6 flex-1 px-2 text-[10px] uppercase",onClick:()=>y($),children:$},$))}),x==="hex"?c.jsxs("div",{className:"flex gap-2",children:[c.jsx(go,{value:S,onChange:$=>b($.currentTarget.value),onBlur:$=>J($.currentTarget.value),onKeyDown:$=>{$.key==="Enter"&&J($.currentTarget.value)},className:"h-7 px-1.5 text-[11px] font-mono uppercase","aria-label":"Hex color"}),I?c.jsx(Qe,{type:"button",variant:"outline",size:"icon-sm",onClick:D,"aria-label":"Pick color from screen",title:"Pick color from screen",children:c.jsx(M3,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"})}):null]}):null,x==="rgb"?c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsx(cd,{label:"R",value:R.rgb.r,min:0,max:255,onChange:$=>G("r",$)}),c.jsx(cd,{label:"G",value:R.rgb.g,min:0,max:255,onChange:$=>G("g",$)}),c.jsx(cd,{label:"B",value:R.rgb.b,min:0,max:255,onChange:$=>G("b",$)})]}):null,x==="hsl"?c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsx(cd,{label:"H",value:R.hsl.h,min:0,max:360,onChange:$=>Q("h",$)}),c.jsx(cd,{label:"S",value:R.hsl.s,min:0,max:100,onChange:$=>Q("s",$)}),c.jsx(cd,{label:"L",value:R.hsl.l,min:0,max:100,onChange:$=>Q("l",$)})]}):null]})]})}function aQ({...e}){return c.jsx(QT,{"data-slot":"dialog",...e})}f.forwardRef(function({...t},n){return c.jsx(YT,{ref:n,"data-slot":"dialog-trigger",...t})});function lQ({...e}){return c.jsx(JT,{"data-slot":"dialog-portal",...e})}const cQ=f.forwardRef(function({...t},n){return c.jsx(Dy,{ref:n,"data-slot":"dialog-close",...t})}),uQ=f.forwardRef(function({className:t,...n},r){return c.jsx(qT,{ref:r,"data-slot":"dialog-overlay",className:H("fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",t),...n})}),dQ=f.forwardRef(function({className:t,children:n,showCloseButton:r=!0,...o},i){return c.jsxs(lQ,{children:[c.jsx(uQ,{}),c.jsxs(ZT,{ref:i,"data-slot":"dialog-content",className:H("cad-glass-popover fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-md border p-6 text-foreground shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",t),...o,children:[n,r?c.jsxs(Dy,{"data-slot":"dialog-close",className:"absolute right-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[c.jsx(eh,{className:"size-4"}),c.jsx("span",{className:"sr-only",children:"Close"})]}):null]})]})});function fQ({className:e,...t}){return c.jsx("div",{"data-slot":"dialog-header",className:H("flex flex-col gap-2 text-center sm:text-left",e),...t})}function mQ({className:e,...t}){return c.jsx("div",{"data-slot":"dialog-footer",className:H("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}const pQ=f.forwardRef(function({className:t,...n},r){return c.jsx(eR,{ref:r,"data-slot":"dialog-title",className:H("text-lg font-semibold",t),...n})}),hQ=f.forwardRef(function({className:t,...n},r){return c.jsx(tR,{ref:r,"data-slot":"dialog-description",className:H("text-sm text-muted-foreground",t),...n})});function wa({...e}){return c.jsx(r3,{"data-slot":"select",...e})}function ac({...e}){return c.jsx(o3,{"data-slot":"select-value",...e})}const va=f.forwardRef(function({className:t,size:n="default",showIcon:r=!0,children:o,...i},s){return c.jsxs(t3,{ref:s,"data-slot":"select-trigger","data-size":n,className:H("flex w-full items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 dark:bg-input/30 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...i,children:[o,r?c.jsx(n3,{asChild:!0,children:c.jsx(jy,{className:"size-4 opacity-50"})}):null]})});function Ca({className:e,children:t,position:n="popper",...r}){return c.jsx(i3,{children:c.jsxs(s3,{"data-slot":"select-content",className:H("cad-glass-popover relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...r,children:[c.jsx(gQ,{}),c.jsx(a3,{className:H("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),c.jsx(bQ,{})]})})}function Ma({className:e,children:t,icon:n=null,...r}){return c.jsxs(l3,{"data-slot":"select-item",className:H("relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...r,children:[c.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:c.jsx(c3,{children:c.jsx(mu,{className:"size-4"})})}),n?c.jsx("span",{className:"flex size-3.5 shrink-0 items-center justify-center text-muted-foreground","aria-hidden":"true",children:n}):null,c.jsx(u3,{children:t})]})}function gQ({className:e,...t}){return c.jsx(d3,{"data-slot":"select-scroll-up-button",className:H("flex cursor-default items-center justify-center py-1",e),...t,children:c.jsx(I3,{className:"size-4"})})}function bQ({className:e,...t}){return c.jsx(f3,{"data-slot":"select-scroll-down-button",className:H("flex cursor-default items-center justify-center py-1",e),...t,children:c.jsx(jy,{className:"size-4"})})}function yQ({className:e,...t}){return c.jsx(m3,{"data-slot":"tabs",className:H("flex flex-col gap-2",e),...t})}function xQ({className:e,...t}){return c.jsx(p3,{"data-slot":"tabs-list",className:H("inline-flex h-9 w-fit items-center justify-center rounded-lg bg-muted p-[3px] text-muted-foreground",e),...t})}function SQ({className:e,...t}){return c.jsx(h3,{"data-slot":"tabs-trigger",className:H("inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-xs dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30",e),...t})}function EQ({className:e,...t}){return c.jsx(g3,{"data-slot":"tabs-content",className:H("flex-1 outline-none",e),...t})}const Cy=Object.freeze([Object.freeze({value:Dt.SOLID,label:"Solid",title:"Shaded with CAD edges",Icon:Ly}),Object.freeze({value:Dt.RENDERED,label:"Rendered",title:"Shaded material appearance without edge overlay",Icon:A3}),Object.freeze({value:Dt.TRANSPARENT,label:"X-Ray",title:"Transparent solids with visible CAD edges",Icon:rR}),Object.freeze({value:Dt.HIDDEN_EDGES,label:"Hidden",title:"Shaded with hidden edges visible",Icon:oR}),Object.freeze({value:Dt.HIDDEN_LINES_REMOVED,label:"Lines",title:"Visible lines with hidden lines removed",Icon:N3}),Object.freeze({value:Dt.UNSHADED,label:"Flat",title:"Unshaded flat color",Icon:iR}),Object.freeze({value:Dt.WIREFRAME,label:"Wire",title:"Full wireframe",Icon:_3})]);function Dk(e){return Cy.find(t=>t.value===e)||Cy[0]}function jk({className:e,strokeWidth:t=1.45}){return c.jsxs("svg",{className:e,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",focusable:"false",children:[c.jsx("path",{d:"M12 3.5 20 8v8l-8 4.5L4 16V8l8-4.5Z",stroke:"currentColor",strokeWidth:t,strokeLinejoin:"round"}),c.jsx("path",{d:"M4 8l8 4.5L20 8M12 12.5v8",stroke:"currentColor",strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"})]})}function xv({className:e,strokeWidth:t=1.45}){return c.jsxs("svg",{className:e,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",focusable:"false",children:[c.jsx("path",{d:"M12 4.6 19.6 6.1l-2 10.1-5.6 4.2-5.6-4.2-2-10.1L12 4.6Z",stroke:"currentColor",strokeWidth:t,strokeLinejoin:"round"}),c.jsx("path",{d:"M4.4 6.1 12 9.2l7.6-3.1M12 9.2v11.2",stroke:"currentColor",strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"})]})}const wQ=[{value:"solid",label:"Solid"},{value:"linear",label:"Linear"},{value:"radial",label:"Radial"},{value:"transparent",label:"Transparent"}],vQ=[{value:yo.ORTHOGRAPHIC,label:"Orthographic",title:"Parallel projection for CAD inspection",Icon:jk},{value:yo.PERSPECTIVE,label:"Perspective",title:"Depth projection with vanishing lines",Icon:xv}],CQ=[{value:Ht.SYSTEM,label:"System"},{value:Ht.LIGHT,label:"Light"},{value:Ht.DARK,label:"Dark"}],MQ=[{value:"x",label:"X"},{value:"y",label:"Y"},{value:"z",label:"Z"},{value:"radial",label:"Radial"}],I_=[{value:"directional",label:"Directional"},{value:"spot",label:"Spot"},{value:"point",label:"Point"}],IQ=Nu,ru=uh,Lk=n0,Db=Us,Fk=120,AQ=Object.freeze(["x","y","z"]),NQ=Object.freeze([Object.freeze({id:"feature",label:"Feature",defaultColor:Vs,defaultOpacity:1,defaultThickness:1.15}),Object.freeze({id:"tangent",label:"Tangent",defaultColor:Vs,defaultOpacity:.5,defaultThickness:1.15}),Object.freeze({id:"seam",label:"Seam",defaultColor:Vs,defaultOpacity:.85,defaultThickness:1.15}),Object.freeze({id:"degenerate",label:"Degenerate",defaultColor:Vs,defaultOpacity:1,defaultThickness:0})]);function rE(e,t,n){return Math.min(Math.max(e,t),n)}function no(e,t=2){const n=Number(e);return Number.isFinite(n)?n.toFixed(t):"0"}function sS(e){const t=Number(e);return Number.isFinite(t)?Math.abs(t)>=100?t.toFixed(0):Math.abs(t)>=10?t.toFixed(1):t.toFixed(2):"0"}function lc({label:e,value:t,trailing:n,children:r,className:o,contentClassName:i}){return c.jsx(cn,{label:e,value:t,trailing:n,className:o,contentClassName:i,children:r})}function zk({title:e,value:t,children:n,...r}){return c.jsx(ci,{value:t,title:e,...r,children:n})}function ya({title:e,trailing:t=null,children:n,className:r,hideFirstSeparator:o=!0}){return c.jsx(bo,{title:e,trailing:t,className:r,hideFirstSeparator:o,children:n})}function aS({title:e,children:t,className:n,contentClassName:r}){return c.jsx(WY,{title:e,className:n,contentClassName:r,children:t})}function _Q(e){try{const t=f.Children.only(e);return f.isValidElement(t)&&t.type===ro?t.props:null}catch{return null}}function ho({label:e,value:t,children:n,onValueCommit:r,valueInputProps:o}){const i=_Q(n),s=r||(i?.onChange?a=>{i.onChange(ui(a,{fallback:i.value,min:i.min,max:i.max}))}:null);return c.jsx(Ni,{label:e,value:t,onValueCommit:s,valueInputProps:s?{ariaLabel:`${e} value`,...o}:o,children:n})}function ud({label:e,checked:t,onChange:n,disabled:r=!1,description:o}){return c.jsx(Mi,{label:e,checked:t,onCheckedChange:n,disabled:r,description:o})}function ro({value:e,min:t,max:n,step:r=.01,onChange:o}){const i=Number.isFinite(Number(e))?Number(e):t,[s,a]=f.useState(i),l=f.useRef(null);f.useEffect(()=>{a(i)},[i]),f.useEffect(()=>()=>{l.current&&clearTimeout(l.current)},[]);const u=p=>{const g=Number(p);return Number.isFinite(g)?rE(g,t,n):i},d=p=>{const g=u(p);l.current&&clearTimeout(l.current),Math.abs(g-i)>1e-9&&o(g)},m=p=>{const g=u(p);a(g),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{d(g)},Fk)};return c.jsx(_i,{value:[s],min:t,max:n,step:r,onValueChange:p=>m(p[0]??s),onValueCommit:p=>d(p[0]??s),className:Db})}function TQ({value:e,min:t=0,max:n=6,digits:r=2,disabled:o=!1,ariaLabel:i,onChange:s}){const a=Number.isFinite(Number(e))?Number(e):t,l=no(a,r),u=d=>{const m=ui(d,{fallback:a,min:t,max:n});Math.abs(m-a)>1e-9&&s?.(m)};return c.jsx(Zw,{value:l,onValueCommit:u,disabled:o,ariaLabel:i,inputMode:"decimal",className:"h-full w-16 shrink-0 rounded-none border-0 bg-transparent px-1.5 py-0 text-right !text-[11px] font-medium tabular-nums shadow-none focus-visible:ring-0 dark:bg-transparent"})}function Bk({label:e,color:t,opacity:n,thickness:r,min:o=0,max:i=6,digits:s=2,disabled:a=!1,onColorChange:l,onOpacityChange:u,onThicknessChange:d}){return c.jsxs("div",{className:H("inline-flex h-7 shrink-0 items-center overflow-hidden rounded-md border border-input bg-transparent shadow-xs dark:bg-input/30",a&&"opacity-50"),children:[c.jsx(Sv,{value:t,opacity:n,showOpacity:!0,showValue:!1,disabled:a,onChange:l,onOpacityChange:u,className:"h-7 w-7 rounded-none border-0 border-r border-input bg-transparent px-1.5 shadow-none",swatchClassName:"size-3.5",title:`${e} edge color`,"aria-label":`${e} edge color`}),c.jsx(TQ,{value:r,min:o,max:i,digits:s,disabled:a,ariaLabel:`${e} edge thickness`,onChange:d}),c.jsx("span",{className:"pr-1.5 text-[10px] font-medium text-muted-foreground",children:"px"})]})}function RQ({label:e,color:t,thickness:n,opacity:r,onColorChange:o,onThicknessChange:i,onOpacityChange:s}){return c.jsx(cn,{label:e,trailing:c.jsx(Bk,{label:e,color:t,opacity:r,thickness:n,onColorChange:o,onOpacityChange:s,onThicknessChange:i}),contentClassName:"hidden"})}function Sv({value:e,onChange:t,className:n,swatchClassName:r,valueClassName:o,showValue:i=!0,disabled:s=!1,...a}){return c.jsx(yv,{value:e,onChange:t,className:H(Lk,"w-fit justify-start gap-1.5 px-1.5",n),swatchClassName:H("size-3.5",r),valueClassName:o,popoverAlign:"end",showValue:i,disabled:s,...a})}function A_({label:e,value:t,onChange:n,className:r,labelClassName:o}){return c.jsx(cn,{label:e,trailing:c.jsx(Sv,{value:t,onChange:n}),className:r,labelClassName:o})}function N_(e,t){return t.reduce((n,r)=>n&&typeof n=="object"?n[r]:void 0,e)}function lS(e,t,n){let r=e;for(let o=0;or(t,a,s)}):c.jsx(A_,{label:e,value:__(n,t,s),onChange:a=>r(t,a)})}function T_(e={}){return(Array.isArray(e.fillColors)&&e.fillColors.length?e.fillColors:[e.defaultColor||"#ffffff"]).slice(0,Tp)}function xc(e){return JSON.stringify(fr(e))}function kQ({colors:e,onChange:t,cycleColors:n=!1}){const r=e.length?e:["#ffffff"],o=i=>{const s=i.filter(Boolean).slice(0,Tp);t(s.length?s:[r[0]||"#ffffff"])};return c.jsxs("div",{className:"flex flex-wrap justify-start gap-1.5","data-cad-fill-color-grid":"true",children:[r.map((i,s)=>c.jsxs("div",{className:H("group relative transition-opacity",!n&&s>0&&"opacity-45 grayscale"),children:[c.jsx(Sv,{value:i,swatchClassName:"size-3.5",onChange:a=>{const l=[...r];l[s]=a,o(l)},"aria-label":`Fill color ${s+1}`,title:`Fill color ${s+1}: ${i}`}),r.length>1?c.jsx(Qe,{type:"button",variant:"outline",size:"icon-xs",className:"absolute -right-1.5 -top-1.5 z-10 size-4 rounded-full border-border !bg-[rgb(245_247_250)] p-0 text-muted-foreground shadow-xs hover:!bg-[rgb(245_247_250)] hover:text-foreground dark:!bg-[rgb(12_15_22)] dark:hover:!bg-[rgb(12_15_22)]",onClick:()=>o(r.filter((a,l)=>l!==s)),"aria-label":`Remove color ${s+1}`,title:`Remove color ${s+1}`,children:c.jsx(eh,{className:"h-2.5 w-2.5",strokeWidth:2.25,"aria-hidden":"true"})}):null]},s)),r.lengtho([...r,r[r.length-1]||"#ffffff"]),"aria-label":"Add fill color",title:"Add fill color",children:c.jsx(OE,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"})}):null]})}function My({value:e,onChange:t,options:n}){const o=`repeat(${Math.max(1,Math.min(n.length,n.length>4?3:4))}, minmax(0, 1fr))`;return c.jsx(Kw,{type:"single",variant:"outline",size:"sm",value:e,onValueChange:i=>{i&&t(i)},className:"grid min-h-7 w-full min-w-0 auto-rows-[1.75rem]",style:{gridTemplateColumns:o},children:n.map(i=>{const s=i.Icon,a=i.disabled===!0;return c.jsxs(Vp,{value:i.value,disabled:a,className:H("min-w-0 gap-1.5 !h-7 px-1.5 text-[11px]",D1),title:i.title||i.label,"aria-label":i.label,children:[s?c.jsx(s,{className:"size-3",strokeWidth:2,"aria-hidden":"true"}):null,c.jsx("span",{className:"truncate",children:i.label})]},i.value)})})}function oE({preset:e=null}){return e?c.jsx("span",{className:"relative h-4 w-8 shrink-0 overflow-hidden rounded-md border shadow-[inset_0_0_0_1px_rgba(255,255,255,0.12)]",style:{background:e.preview.background},"aria-hidden":"true",children:c.jsx("span",{className:"absolute inset-y-0 right-0 w-3",style:{backgroundColor:e.preview.accentColor,opacity:.9}})}):c.jsx("span",{className:"h-4 w-8 shrink-0 rounded-md border border-dashed bg-muted","aria-hidden":"true"})}function DQ(){const[e,t]=f.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?Hd:NI({prefersDark:window.matchMedia("(prefers-color-scheme: dark)").matches===!0}));return f.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const n=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{t(NI({prefersDark:n.matches===!0}))};return r(),n.addEventListener?.("change",r),()=>{n.removeEventListener?.("change",r)}},[]),e}function jQ(e,t){const n=e.findIndex(r=>r.id===t);return n<=0?e:[e[n],...e.slice(0,n),...e.slice(n+1)]}function Ev(e,t,n){const r=e.find(i=>i.id===t)||null;if(r)return r;const o=xc(n);return e.find(i=>xc(i.settings)===o)||null}function $k(e,t){return!e||xc(e.settings)!==xc(t)}function wv(e){return String(e?.id||"").startsWith("custom:")}function LQ(e){const t=ol(e?.presetId||e?.id);return!!(wv(e)&&t&&xc(e.settings)!==xc(N2(t)))}function FQ(e){return wv(e)}function R_(e){return wv(e)}function zQ(e=[]){if(!Array.isArray(e)||!e.length)return!1;if(e.length!==ic.length)return!0;for(let t=0;t{r?.(S)},p=S=>{l(S),m(S)},g=S=>{S.stopPropagation()},x=(S,b)=>{S.preventDefault(),S.stopPropagation(),m(!1),b?.()},y=S=>{!a&&!S.currentTarget.contains(S.relatedTarget)&&m(!1)};return c.jsxs(TO,{open:a,onOpenChange:p,children:[c.jsx(RO,{showChevron:!1,"data-theme-menu-action":"","aria-label":d,title:d,className:H("theme-preset-overflow-trigger flex size-7 shrink-0 items-center justify-center rounded-md p-0","text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground","focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"),onPointerEnter:()=>m(!0),onPointerLeave:()=>{a||m(!1)},onFocus:()=>m(!0),onBlur:y,onMouseDown:g,onPointerDown:g,onKeyDown:g,children:c.jsx(R3,{className:"h-4 w-4",strokeWidth:2,"aria-hidden":"true"})}),c.jsxs(PO,{sideOffset:6,className:"w-40",children:[c.jsxs(Yo,{className:"gap-2 text-xs",onSelect:S=>x(S,i),children:[c.jsx(P3,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Edit"})]}),n?c.jsxs(Yo,{className:"gap-2 text-xs",onSelect:S=>x(S,s),children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset to preset"})]}):null,c.jsx(nu,{}),c.jsxs(Yo,{variant:"destructive",disabled:!t,className:"gap-2 text-xs",onSelect:S=>x(S,t?o:null),children:[c.jsx(sR,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Delete"})]})]})]})}function cS({open:e,onOpenChange:t,title:n,description:r,actionLabel:o,onConfirm:i}){return c.jsx(Ak,{open:e,onOpenChange:t,children:c.jsxs(Nk,{className:"sm:max-w-sm",children:[c.jsxs(_k,{children:[c.jsx(Rk,{children:n}),c.jsx(Pk,{children:r})]}),c.jsxs(Tk,{children:[c.jsx(Ok,{children:"Cancel"}),c.jsx(ZJ,{className:"bg-destructive text-white hover:bg-destructive/90",onClick:i,children:o})]})]})})}function VQ({defaultName:e,onOpenChange:t,onSave:n,open:r}){const o=f.useId(),[i,s]=f.useState(e),a=i.trim();f.useEffect(()=>{r&&s(e)},[e,r]);const l=u=>{if(u.preventDefault(),!a||typeof n!="function")return;n(a)&&t?.(!1)};return c.jsx(aQ,{open:r,onOpenChange:t,children:c.jsx(dQ,{className:"p-5 sm:max-w-sm",children:c.jsxs("form",{className:"grid gap-4",onSubmit:l,children:[c.jsxs(fQ,{className:"gap-1.5",children:[c.jsx(pQ,{className:"text-base",children:"Save Theme"}),c.jsx(hQ,{className:"sr-only",children:"Enter a name for this theme."})]}),c.jsxs("div",{className:"grid gap-1.5",children:[c.jsx("label",{className:IQ,htmlFor:o,children:"Theme name"}),c.jsx(go,{id:o,value:i,autoFocus:!0,onChange:u=>s(u.target.value)})]}),c.jsxs(mQ,{children:[c.jsx(cQ,{asChild:!0,children:c.jsx(Qe,{type:"button",variant:"outline",size:"sm",children:"Cancel"})}),c.jsx(Qe,{type:"submit",size:"sm",disabled:!a,children:"Save theme"})]})]})})})}function $Q({themePresets:e=[],themeSettings:t,themePresetId:n="",updateThemeSettings:r,handleDeleteCustomThemePreset:o,handleEditThemePreset:i,handleResetThemePresetToDefault:s,handleRestoreDefaultThemePresets:a,triggerClassName:l,iconClassName:u}){const[d,m]=f.useState(!1),[p,g]=f.useState(""),[x,y]=f.useState(""),[S,b]=f.useState(!1),[I,A]=f.useState(""),N=DQ(),P=f.useMemo(()=>jQ(e,N),[e,N]),R=f.useMemo(()=>Ev(e,n,t),[e,n,t]),v=R?.id||"",C=R?.label||"Theme",T=e.find(Z=>Z.id===p)||null,k=e.find(Z=>Z.id===x)||null,z=f.useMemo(()=>zQ(e),[e]),Y=Z=>{m(Z),Z||A("")},K=Z=>{A(Ee=>Ee===Z?"":Ee)},J=Z=>{const Ee=e.find(re=>re.id===Z);Ee&&r?.(Ee.settings,{persistGlobal:!0,presetId:Ee.id})},G=Z=>{const Ee=e.find(re=>re.id===Z);R_(Ee)&&typeof o=="function"&&(g(Z),m(!1))},Q=()=>{T&&typeof o=="function"&&o(T.id),g("")},D=Z=>{typeof i=="function"&&i(Z)||J(Z),m(!1)},$=Z=>{y(Z),m(!1)},ie=()=>{k&&typeof s=="function"&&s(k.id),y("")},W=()=>{typeof a=="function"&&a(),b(!1)};return c.jsxs(c.Fragment,{children:[c.jsxs(hf,{open:d,onOpenChange:Y,children:[c.jsx(gf,{asChild:!0,children:c.jsxs(Qe,{type:"button",variant:"ghost",size:"icon-sm","aria-label":`Theme: ${C}`,title:`Theme: ${C}`,className:l,children:[c.jsx(iR,{className:u,strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:"Theme"})]})}),c.jsxs(bf,{align:"end",sideOffset:6,className:"w-64",children:[c.jsx(T1,{className:"px-2 py-1.5 text-xs text-muted-foreground",children:"Theme"}),P.map(Z=>{const Ee=Z.id===v,re=LQ(Z),be=R_(Z),_e=I===Z.id;return c.jsxs("div",{"data-active":Ee?"true":void 0,"data-action-hover":_e?"true":void 0,"aria-current":Ee?"true":void 0,className:H("theme-preset-menu-item flex min-w-0 items-center gap-1 rounded-sm text-xs"),children:[c.jsxs(Yo,{className:H("theme-preset-menu-row min-w-0 flex-1 gap-2 px-2 py-1.5 text-xs",Ee&&"font-semibold"),"data-theme-menu-row-surface":"",onSelect:()=>J(Z.id),children:[c.jsx(oE,{preset:Z}),c.jsx("span",{className:"min-w-0 flex-1 truncate",children:Z.label}),Z.id===N?c.jsx("span",{className:"rounded-full border px-1.5 py-0.5 text-[9px] uppercase text-muted-foreground","data-theme-menu-default-badge":"",children:"Default"}):null]}),c.jsx("span",{className:"theme-preset-menu-actions ml-auto flex shrink-0 items-center gap-0.5 rounded-sm px-0.5 py-0.5",children:c.jsx(BQ,{preset:Z,canDeleteTheme:be,canResetToDefault:re,onActionActiveChange:Ie=>{Ie?A(Z.id):K(Z.id)},onEdit:()=>D(Z.id),onReset:()=>$(Z.id),onDelete:()=>G(Z.id)})})]},Z.id)}),z?c.jsxs(c.Fragment,{children:[c.jsx(nu,{}),c.jsxs(Yo,{className:"text-xs",onSelect:Z=>{Z.preventDefault(),b(!0),m(!1)},children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Restore defaults"})]})]}):null]})]}),c.jsx(cS,{open:!!T,onOpenChange:Z=>{Z||g("")},title:"Delete Theme",description:`Delete ${T?.label||"this theme"}? This removes it from your theme list.`,actionLabel:"Delete theme",onConfirm:Q}),c.jsx(cS,{open:!!k,onOpenChange:Z=>{Z||y("")},title:"Reset Theme",description:`Reset ${k?.label||"this theme"} to its built-in preset settings?`,actionLabel:"Reset theme",onConfirm:ie}),c.jsx(cS,{open:S,onOpenChange:b,title:"Restore Defaults",description:"This clears saved theme changes, removes saved themes, and restores deleted presets.",actionLabel:"Restore defaults",onConfirm:W})]})}function GQ({themePresets:e=[],themeSettings:t,themePresetId:n="",updateThemeSettings:r,handleResetThemeSettings:o,handleSaveCustomThemePreset:i,handleUpdateThemePresetSettings:s}){const[a,l]=f.useState(!1),u=f.useMemo(()=>Ev(e,n,t),[e,n,t]),d=u?.id||"",m=FQ(u),p=$k(u,t),g=u?.label?`${u.label} copy`:"Theme copy",x=t.colorMode||Ht.SYSTEM,y=A=>{const N=e.find(P=>P.id===A);N&&r?.(N.settings,{persistGlobal:!0,presetId:N.id})},S=A=>!p||typeof i!="function"?null:i(A),b=()=>{!p||!d||!m||typeof s!="function"||s(d)},I=A=>{r?.(N=>({...fr(N),colorMode:A}))};return c.jsxs(c.Fragment,{children:[c.jsxs(ya,{title:"Theme",children:[c.jsx(lc,{label:"Current",value:p?"Changed":"Saved",children:c.jsxs(wa,{value:d,onValueChange:y,children:[c.jsx(va,{size:"sm",className:H(Lk,"w-full justify-between"),"aria-label":"Theme",children:c.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[c.jsx(oE,{preset:u}),c.jsx("span",{className:"min-w-0 truncate",children:u?.label||"Theme"})]})}),c.jsx(Ca,{children:e.map(A=>c.jsxs(Ma,{value:A.id,className:"text-xs",children:[c.jsx(oE,{preset:A}),c.jsx("span",{className:"min-w-0 truncate",children:A.label})]},A.id))})]})}),c.jsx(lc,{label:"Color mode",children:c.jsx(My,{value:x,options:CQ,onChange:I})}),c.jsx(cn,{children:c.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(ru,"relative",p?"pr-5":null),disabled:!p||typeof i!="function",onClick:()=>l(!0),children:[c.jsx("span",{children:"Save as"}),p?c.jsx(Gk,{className:"absolute right-1.5 top-1.5 h-1.5 w-1.5"}):null]}),c.jsx(Qe,{type:"button",variant:"outline",size:"sm",className:ru,disabled:!p||!d||!m||typeof s!="function",onClick:b,children:c.jsx("span",{children:"Update"})}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:ru,disabled:!p||!d||typeof o!="function",onClick:()=>o?.(),children:[c.jsx(ws,{className:"h-3 w-3",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Restore to default"})]})]})})]}),c.jsx(VQ,{defaultName:g,onOpenChange:l,onSave:S,open:a})]})}function UQ({value:e,onChange:t}){const n=Number.isFinite(Number(e?.x))?Number(e.x):0,r=Number.isFinite(Number(e?.z))?Number(e.z):0,[o,i]=f.useState({x:n,z:r}),s=f.useRef(o),a=f.useRef(null),l=o.x,u=o.z;f.useEffect(()=>{const S={x:n,z:r};s.current=S,i(S)},[n,r]),f.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const d=f.useMemo(()=>{const S=Math.max(Math.abs(l),Math.abs(u),220);return Math.min(5e3,Math.ceil(S*1.2/20)*20)},[l,u]),m=(l+d)/(d*2)*100,p=(d-u)/(d*2)*100,g=(S,b)=>{a.current&&clearTimeout(a.current),S!==n&&t("x",S),b!==r&&t("z",b)},x=(S,b)=>{const I={x:S,z:b};s.current=I,i(I),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{g(S,b)},Fk)},y=S=>{const b=S.currentTarget.getBoundingClientRect();if(b.width<=0||b.height<=0)return;const I=rE((S.clientX-b.left)/b.width,0,1),A=rE((S.clientY-b.top)/b.height,0,1),N=Math.round((I*2-1)*d),P=Math.round((1-A*2)*d);x(N,P)};return c.jsxs("div",{className:"space-y-2",children:[c.jsxs("div",{className:"relative h-28 w-full touch-none overflow-hidden rounded-md border bg-background",onPointerDown:S=>{S.currentTarget.setPointerCapture(S.pointerId),y(S)},onPointerMove:S=>{S.currentTarget.hasPointerCapture(S.pointerId)&&y(S)},onPointerUp:S=>{S.currentTarget.hasPointerCapture(S.pointerId)&&S.currentTarget.releasePointerCapture(S.pointerId),g(s.current.x,s.current.z)},children:[c.jsx("div",{className:"absolute inset-0 opacity-45",style:{backgroundImage:"radial-gradient(circle, rgba(154, 169, 188, 0.65) 1.5px, transparent 1.5px)",backgroundSize:"22px 22px"},"aria-hidden":"true"}),c.jsx("div",{className:"absolute inset-x-0 top-1/2 h-px bg-border","aria-hidden":"true"}),c.jsx("div",{className:"absolute inset-y-0 left-1/2 w-px bg-border","aria-hidden":"true"}),c.jsx("div",{className:"absolute size-4 -translate-x-1/2 -translate-y-1/2 rounded-full border border-primary bg-foreground shadow-xs",style:{left:`${m}%`,top:`${p}%`},"aria-hidden":"true"})]}),c.jsxs("div",{className:"flex items-center justify-between text-[10px] text-muted-foreground",children:[c.jsxs("span",{children:["X ",Math.round(l)]}),c.jsxs("span",{children:["Z ",Math.round(u)]}),c.jsxs("span",{children:["range +/-",d]})]})]})}function WQ({displaySettings:e,updateDisplaySettings:t,clipBounds:n=null,showClip:r=!1}){const o=f.useMemo(()=>So(e),[e]),i=f.useMemo(()=>Ws(o.clip),[o.clip]),s=f.useMemo(()=>Wb(o.exploded),[o.exploded]),a=f.useMemo(()=>Ql(o.edges),[o.edges]),l=b=>{t?.(I=>({...So(I),...b}))},u=b=>{t?.(I=>{const A=So(I);return{...A,clip:nV(A.clip,b)}})},d=b=>{t?.(I=>{const A=So(I);return{...A,exploded:Wb({...A.exploded,...b})}})},m=b=>{t?.(I=>{const A=So(I);return{...A,edges:Ql({...A.edges,...b})}})},p=(b,I)=>{t?.(A=>{const N=So(A);return{...N,edges:Ql({...N.edges,classes:{...N.edges?.classes||{},[b]:{...N.edges?.classes?.[b]||{},...I}}})}})},g=()=>{l({edges:Ql()})},y=Dk(o.mode)?.Icon||null,S=(b,I)=>{const A=Number(I),N=Number.isFinite(A)?A:0;u({axis:b,offset:N,offsets:{[b]:N},enabled:N>0})};return c.jsxs(zk,{title:"Display",value:"display",children:[c.jsxs(ya,{title:"Mode",children:[c.jsx(lc,{label:"Projection",children:c.jsx(My,{value:o.projection,onChange:b=>l({projection:b}),options:vQ})}),c.jsx(lc,{label:"Style",children:c.jsxs(wa,{value:o.mode,onValueChange:b=>l({mode:b}),children:[c.jsx(va,{size:"sm",className:"h-7 !text-[11px]","aria-label":"Display mode",children:c.jsxs("span",{className:"flex min-w-0 items-center gap-1.5 overflow-hidden",children:[y?c.jsx(y,{className:"size-3.5 shrink-0 text-muted-foreground",strokeWidth:2,"aria-hidden":"true"}):null,c.jsx(ac,{})]})}),c.jsx(Ca,{children:Cy.map(b=>{const I=b.Icon;return c.jsx(Ma,{value:b.value,className:"text-xs",title:b.title,icon:I?c.jsx(I,{className:"size-3.5",strokeWidth:2}):null,children:b.label},b.value)})})]})})]}),c.jsxs(ya,{title:"Edges",children:[NQ.map(b=>{const I=a.classes?.[b.id]||{},A=I.color||b.defaultColor,N=I.thickness??b.defaultThickness,P=I.opacity??b.defaultOpacity;return c.jsx(RQ,{label:b.label,color:A,thickness:N,opacity:P,onColorChange:R=>p(b.id,{color:R}),onThicknessChange:R=>p(b.id,{thickness:R}),onOpacityChange:R=>p(b.id,{opacity:R})},b.id)}),c.jsx(cn,{label:"Highlight",trailing:c.jsx(Bk,{label:"Highlight",color:a.highlightColor||aw,opacity:a.highlightOpacity??1,thickness:a.highlightThickness??3,min:.5,max:6,digits:1,onColorChange:b=>m({highlightColor:b}),onOpacityChange:b=>m({highlightOpacity:b}),onThicknessChange:b=>m({highlightThickness:b})}),contentClassName:"hidden"}),c.jsx(cn,{children:c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:ru,onClick:g,title:"Reset edge display",children:[c.jsx(ws,{className:"h-3 w-3",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset"})]})})]}),c.jsxs(ya,{title:"Exploded View",children:[c.jsx(Mi,{label:"Enabled",checked:s.enabled,onCheckedChange:b=>d({enabled:b})}),s.enabled?c.jsxs(c.Fragment,{children:[c.jsx(lc,{label:"Axis",children:c.jsx(My,{value:s.axis,options:MQ,onChange:b=>d({axis:b})})}),c.jsx(Ni,{label:"Spacing",value:`${s.spacing.toFixed(2)}x`,onValueCommit:b=>{d({spacing:ui(b,{fallback:s.spacing,min:.25,max:4})})},children:c.jsx(_i,{className:Db,value:[s.spacing],min:.25,max:4,step:.05,onValueChange:b=>{d({spacing:Array.isArray(b)?b[0]:b})},"aria-label":"Exploded spacing"})}),c.jsx(Ni,{label:"Depth",value:`${s.depth}`,onValueCommit:b=>{d({depth:ui(b,{fallback:s.depth,min:1,max:8,integer:!0})})},children:c.jsx(_i,{className:Db,value:[s.depth],min:1,max:8,step:1,onValueChange:b=>{d({depth:Array.isArray(b)?b[0]:b})},"aria-label":"Exploded depth"})}),c.jsx(Mi,{label:"Merge levels",checked:s.mergeCoplanar,onCheckedChange:b=>d({mergeCoplanar:b})}),c.jsx(Mi,{label:"Ground base",checked:s.keepBaseGrounded,onCheckedChange:b=>d({keepBaseGrounded:b})}),c.jsx(cn,{children:c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:ru,onClick:()=>d(ba),title:"Reset exploded view",children:[c.jsx(ws,{className:"h-3 w-3",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset"})]})})]}):null]}),r?c.jsxs(ya,{title:"Clip",hideFirstSeparator:!1,children:[AQ.map(b=>{const I=i.offsets?.[b]??_p.offsets[b],A={...i,axis:b,offset:I,offsets:{...i.offsets,[b]:I}},N=qR(n,b),P=Math.max(N.max-N.min,0),R=eV(n,A);return c.jsxs(Ni,{label:b,value:`${sS(R)} mm`,onValueCommit:v=>{const C=ui(v,{fallback:R,min:N.min,max:N.max});S(b,P>0?(C-N.min)/P:I)},valueInputProps:{disabled:!P,ariaLabel:`Clip ${b.toUpperCase()} position`},children:[c.jsx(_i,{className:Db,value:[I],min:0,max:1,step:.001,disabled:!P,onValueChange:v=>{const C=Array.isArray(v)?v[0]:v;S(b,C)},"aria-label":`Clip ${b.toUpperCase()} axis`}),c.jsxs("div",{className:"mt-1 flex justify-between text-[10px] text-[var(--ui-text-muted)]",children:[c.jsx("span",{children:sS(N.min)}),c.jsx("span",{children:sS(N.max)})]})]},b)}),c.jsx(cn,{children:c.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:ru,onClick:()=>u({invert:!i.invert}),"aria-pressed":i.invert,title:"Flip clip side",children:[c.jsx(T3,{className:"h-3 w-3",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Flip"})]}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:ru,onClick:()=>l({clip:Ws(_p)}),title:"Reset clip plane",children:[c.jsx(ws,{className:"h-3 w-3",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset"})]})]})})]}):null]})}function HQ({themePresets:e=[],themeSettings:t,themePresetId:n="",resolvedColorSchemeMode:r=Ht.LIGHT,updateThemeSettings:o,handleResetThemeSettings:i,handleSaveCustomThemePreset:s,handleUpdateThemePresetSettings:a}){const[l,u]=f.useState("directional"),d=f.useMemo(()=>Ev(e,n,t),[e,n,t]),m=$k(d,t),p=c.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[c.jsx("span",{children:"Appearance"}),m?c.jsx(Gk,{className:"h-1.5 w-1.5"}):null]}),g=v=>{o(C=>({...C,materials:{...C.materials,...v}}))},x=v=>{o(C=>({...C,background:{...C.background,...v}}))},y=v=>{o(C=>({...C,floor:{...C.floor,...v}}))},S=v=>{o(C=>{const T=C.floor||{};return{...C,floor:{...T,grid:{...T.grid||{},...v}}}})},b=v=>{o(C=>({...C,environment:{...C.environment,...v}}))},I=v=>{o(C=>({...C,lighting:{...C.lighting,...v}}))},N={themeSettings:t,resolvedColorSchemeMode:r,onChange:(v,C,T="")=>{o(k=>{const z=fr(k),Y=PQ(z.modeColors),K={...z,modeColors:Y};if(T===Ht.LIGHT||T===Ht.DARK)return lS(Y[T],v,C),K;const J=Vk(z,r);return lS(K,v,C),lS(Y[J],v,C),K})}},P=(v,C)=>{o(T=>({...T,lighting:{...T.lighting,[v]:{...T.lighting[v],...C}}}))},R=(v,C,T)=>{o(k=>({...k,lighting:{...k.lighting,[v]:{...k.lighting[v],position:{...k.lighting[v].position,[C]:T}}}}))};return c.jsxs(zk,{title:p,value:"appearance","data-cad-theme-appearance-section":"true",children:[c.jsx(GQ,{themePresets:e,themeSettings:t,themePresetId:n,updateThemeSettings:o,handleResetThemeSettings:i,handleSaveCustomThemePreset:s,handleUpdateThemePresetSettings:a}),c.jsxs(ya,{title:"Surface",children:[c.jsx(lc,{label:"Colors",value:`${T_(t.materials).length}/${Tp}`,children:c.jsx(kQ,{colors:T_(t.materials),cycleColors:t.materials.cycleColors===!0,onChange:v=>g({defaultColor:v[0],fillColors:v})})}),c.jsx(ud,{label:"Cycle colors",checked:t.materials.cycleColors===!0,onChange:v=>g({cycleColors:v})}),c.jsx(ud,{label:"Override colors",checked:t.materials.overrideSourceColors===!0,onChange:v=>g({overrideSourceColors:v})}),c.jsx(ho,{label:"Saturation",value:no(t.materials.saturation),children:c.jsx(ro,{value:t.materials.saturation,min:0,max:2.5,step:.01,onChange:v=>g({saturation:v})})}),c.jsx(ho,{label:"Contrast",value:no(t.materials.contrast),children:c.jsx(ro,{value:t.materials.contrast,min:0,max:2.5,step:.01,onChange:v=>g({contrast:v})})}),c.jsx(ho,{label:"Brightness",value:no(t.materials.brightness),children:c.jsx(ro,{value:t.materials.brightness,min:0,max:2,step:.01,onChange:v=>g({brightness:v})})})]}),c.jsxs(ya,{title:"Backdrop",children:[c.jsx(lc,{label:"Style",children:c.jsx(My,{value:t.background.type,onChange:v=>x({type:v}),options:wQ})}),t.background.type==="solid"?c.jsx(Vi,{label:"Color",path:["background","solidColor"],...N}):null,t.background.type==="linear"?c.jsxs(c.Fragment,{children:[c.jsx(Vi,{label:"Start color",path:["background","linearStart"],...N}),c.jsx(Vi,{label:"End color",path:["background","linearEnd"],...N}),c.jsx(ho,{label:"Angle",value:`${no(t.background.linearAngle,0)} deg`,children:c.jsx(ro,{value:t.background.linearAngle,min:-360,max:360,step:1,onChange:v=>x({linearAngle:v})})})]}):null,t.background.type==="radial"?c.jsxs(c.Fragment,{children:[c.jsx(Vi,{label:"Inner color",path:["background","radialInner"],...N}),c.jsx(Vi,{label:"Outer color",path:["background","radialOuter"],...N})]}):null]}),c.jsx(ya,{title:"Floor",trailing:c.jsx(j1,{checked:t.floor?.enabled===!0,onCheckedChange:v=>y({enabled:v}),ariaLabel:"Enable floor"}),children:t.floor?.enabled===!0?c.jsxs(c.Fragment,{children:[c.jsx(Vi,{label:"Color",path:["floor","color"],...N}),c.jsx(ho,{label:"Roughness",value:no(t.floor?.roughness??.72),children:c.jsx(ro,{value:t.floor?.roughness??.72,min:0,max:1,step:.01,onChange:v=>y({roughness:v})})}),c.jsx(ho,{label:"Reflectivity",value:no(t.floor?.reflectivity??.12),children:c.jsx(ro,{value:t.floor?.reflectivity??.12,min:0,max:1,step:.01,onChange:v=>y({reflectivity:v})})}),c.jsx(ho,{label:"Shadow",value:no(t.floor?.shadowOpacity??.45),children:c.jsx(ro,{value:t.floor?.shadowOpacity??.45,min:0,max:1,step:.01,onChange:v=>y({shadowOpacity:v})})}),c.jsx(ho,{label:"Backdrop blend",value:no(t.floor?.horizonBlend??0),children:c.jsx(ro,{value:t.floor?.horizonBlend??0,min:0,max:1,step:.01,onChange:v=>y({horizonBlend:v})})})]}):null}),c.jsx(ya,{title:"Grid",trailing:c.jsx(j1,{checked:t.floor?.grid?.enabled===!0,onCheckedChange:v=>S({enabled:v}),ariaLabel:"Enable grid"}),children:t.floor?.grid?.enabled===!0?c.jsxs(c.Fragment,{children:[c.jsx(Vi,{label:"Floor color",path:["floor","color"],...N}),c.jsx(Vi,{label:"Center line",path:["floor","grid","centerColor"],...N}),c.jsx(Vi,{label:"Cell line",path:["floor","grid","cellColor"],...N}),c.jsx(ho,{label:"Line opacity",value:no(t.floor?.grid?.opacity??.18),children:c.jsx(ro,{value:t.floor?.grid?.opacity??.18,min:0,max:1,step:.01,onChange:v=>S({opacity:v})})}),c.jsx(ho,{label:"Density",value:no(t.floor?.grid?.density??1),children:c.jsx(ro,{value:t.floor?.grid?.density??1,min:.25,max:4,step:.05,onChange:v=>S({density:v})})})]}):null}),c.jsxs(ya,{title:"Lighting",children:[c.jsx(ud,{label:"Environment light",checked:t.environment.enabled,onChange:v=>b({enabled:v})}),c.jsx(ho,{label:"Environment intensity",value:no(t.environment.intensity),children:c.jsx(ro,{value:t.environment.intensity,min:0,max:4,step:.01,onChange:v=>b({intensity:v})})}),c.jsx(ho,{label:"Tone mapping",value:no(t.lighting.toneMappingExposure),children:c.jsx(ro,{value:t.lighting.toneMappingExposure,min:.05,max:6,step:.01,onChange:v=>I({toneMappingExposure:v})})}),c.jsx(aS,{title:"Primary",children:c.jsxs(yQ,{value:l,onValueChange:u,className:"gap-0",children:[c.jsx("div",{className:"px-3 py-1",children:c.jsx(xQ,{className:"grid h-7 w-full grid-cols-3 rounded-md p-0.5",children:I_.map(v=>c.jsx(SQ,{value:v.value,className:"text-[11px]",children:v.label},v.value))})}),I_.map(v=>{const C=t.lighting[v.value],T=v.value!=="directional";return c.jsxs(EQ,{value:v.value,className:H("mt-2",t0),"data-file-sheet-row-stack":"",children:[c.jsx(ud,{label:`${v.label} light`,checked:C.enabled,onChange:k=>P(v.value,{enabled:k})}),c.jsx(Vi,{label:"Color",path:["lighting",v.value,"color"],...N}),c.jsx(ho,{label:"Intensity",value:no(C.intensity),children:c.jsx(ro,{value:C.intensity,min:0,max:20,step:.01,onChange:k=>P(v.value,{intensity:k})})}),v.value==="spot"?c.jsx(ho,{label:"Angle",value:no(C.angle),children:c.jsx(ro,{value:C.angle,min:.01,max:1.57,step:.01,onChange:k=>P(v.value,{angle:k})})}):null,T?c.jsx(ho,{label:"Distance",value:no(C.distance,0),children:c.jsx(ro,{value:C.distance,min:0,max:5e3,step:1,onChange:k=>P(v.value,{distance:k})})}):null,c.jsx(lc,{label:"Position (X/Z)",children:c.jsx(UQ,{value:C.position,onChange:(k,z)=>R(v.value,k,z)})}),c.jsx(ho,{label:"Height (Y)",value:no(C.position.y,0),children:c.jsx(ro,{value:C.position.y,min:-5e3,max:5e3,step:1,onChange:k=>R(v.value,"y",k)})})]},v.value)})]})}),c.jsxs(aS,{title:"Ambient",children:[c.jsx(ud,{label:"Ambient light",checked:t.lighting.ambient.enabled,onChange:v=>P("ambient",{enabled:v})}),c.jsx(Vi,{label:"Ambient color",path:["lighting","ambient","color"],...N}),c.jsx(ho,{label:"Ambient intensity",value:no(t.lighting.ambient.intensity),children:c.jsx(ro,{value:t.lighting.ambient.intensity,min:0,max:20,step:.01,onChange:v=>P("ambient",{intensity:v})})})]}),c.jsxs(aS,{title:"Hemisphere",children:[c.jsx(ud,{label:"Hemisphere light",checked:t.lighting.hemisphere.enabled,onChange:v=>P("hemisphere",{enabled:v})}),c.jsx(Vi,{label:"Sky color",path:["lighting","hemisphere","skyColor"],...N}),c.jsx(Vi,{label:"Ground color",path:["lighting","hemisphere","groundColor"],...N}),c.jsx(ho,{label:"Hemisphere intensity",value:no(t.lighting.hemisphere.intensity),children:c.jsx(ro,{value:t.lighting.hemisphere.intensity,min:0,max:20,step:.01,onChange:v=>P("hemisphere",{intensity:v})})})]})]})]})}function KQ({open:e,title:t="Mesh",isDesktop:n,width:r,selectedEntry:o=null,onOpenChange:i,onStartResize:s,fileDownloadAvailable:a=!1,viewerServerInfo:l=null,localFileOpenAvailable:u=!1,fileAccessBusyKey:d="",onOpenFileAsset:m,suppressDynamicMetadataStatus:p=!1,statusItems:g=[],themeSections:x=null,openSectionIds:y=[],onOpenSectionIdsChange:S}){return c.jsx(xf,{open:e,title:t,isDesktop:n,width:r,onOpenChange:i,onStartResize:s,children:c.jsxs(yf,{type:"multiple",value:y,onValueChange:S,className:"text-sm",children:[c.jsx(wf,{items:g}),x,c.jsx(Ef,{entry:o,fileDownloadAvailable:a,viewerServerInfo:l,localFileOpenAvailable:u,fileAccessBusyKey:d,onOpenFileAsset:m,suppressDynamicStatus:p})]})})}function XQ(e){const t=Number(e);return Number.isFinite(t)?`${t.toFixed(2)}x`:"1.00x"}function _d(e,t,n){e?.onSettingsChange?.(r=>({...Ms(r),[t]:n}))}function eb({label:e,settingKey:t,settings:n,runtime:r}){const o=Xm[t],i=n[t];return c.jsx(Ni,{label:e,value:XQ(i),onValueCommit:s=>{_d(r,t,ui(s,{fallback:i,min:o.min,max:o.max}))},valueInputProps:{ariaLabel:`${e} value`},children:c.jsx(_i,{className:Us,value:[i],min:o.min,max:o.max,step:o.step,onValueChange:s=>_d(r,t,s?.[0]??i),"aria-label":e})})}function YQ({runtime:e=null,value:t="graphics",title:n="Graphics"}){const r=Ms(e?.settings),o=!!e?.model?.colorSource,i=MK(r,Ds);return c.jsx(ci,{value:t,title:n,children:c.jsxs(r0,{children:[eb({label:"Resolution",settingKey:"resolutionScale",settings:r,runtime:e}),eb({label:"Motion resolution",settingKey:"interactionResolutionScale",settings:r,runtime:e}),eb({label:"Ray detail",settingKey:"detail",settings:r,runtime:e}),eb({label:"Normal smoothing",settingKey:"normalSmoothing",settings:r,runtime:e}),c.jsx(Mi,{label:"Model colors",checked:r.modelColors&&o,disabled:!o,onCheckedChange:s=>_d(e,"modelColors",s),ariaLabel:"Model colors"}),c.jsx(Mi,{label:"Soft shadows",checked:r.shadows,onCheckedChange:s=>_d(e,"shadows",s),ariaLabel:"Soft shadows"}),c.jsx(Mi,{label:"Ambient occlusion",checked:r.ambientOcclusion,onCheckedChange:s=>_d(e,"ambientOcclusion",s),ariaLabel:"Ambient occlusion"}),c.jsx(Mi,{label:"Rim light",checked:r.rimLight,onCheckedChange:s=>_d(e,"rimLight",s),ariaLabel:"Rim light"}),c.jsx(cn,{className:"pt-2",children:c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(uh,"w-full justify-center"),disabled:i,onClick:()=>e?.onSettingsChange?.(Ds),title:"Reset graphics",children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset graphics"})]})})]})})}const Uk=.01,qQ=1e-6,ZQ=1e3;function uS(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function P_(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function JQ(e){const t=Number(e);return Number.isFinite(t)&&t>0?t:0}function QQ(e){const t=Number(e);return Number.isFinite(t)?Number(t.toPrecision(12)):Uk}function eee(e,t="parameters"){const n=String(e??"").trim();if(!n)throw new Error(`Clipboard does not contain ${t}`);try{return JSON.parse(n)}catch{const r=n.indexOf("{"),o=n.lastIndexOf("}");if(r>=0&&o>r)return JSON.parse(n.slice(r,o+1));throw new Error(`${t} paste must be JSON`)}}function Wk(e){const t=JQ(e?.step),n=P_(e?.min,0),r=P_(e?.max,n),o=Math.abs(r-n),i=o>0?Math.max(10**Math.floor(Math.log10(o/ZQ)),qQ):Uk;return QQ(t>0?Math.min(t,i):i)}function Hk(e,t={}){const n=Array.isArray(e?.parameters)?e.parameters:[];if(!n.length)return"{}";const r=qd(e,t),o=Object.fromEntries(n.map(i=>[i.id,r[i.id]]));return JSON.stringify(o,null,2)}function Kk(e,t,{label:n="parameters",unknownLabel:r="parameter"}={}){const o=uS(e?.parameterMap)?e.parameterMap:{},i=eee(t,n),s=uS(i?.values)?i.values:i;if(!uS(s))throw new Error(`${n} paste must be a JSON object`);const a=[],l={};for(const[d,m]of Object.entries(s)){const p=String(d||"").trim();if(!p)continue;const g=o[p];if(!g){a.push(p);continue}l[p]=bu(g,m)}if(a.length)throw new Error(`Unknown ${r}${a.length===1?"":"s"}: ${a.join(", ")}`);const u=Object.keys(l).length;if(!u)throw new Error(`No known ${r}s found`);return{values:l,count:u}}const dd=uh,tee=n0,Xk=.1,Yk=3;function O_(e){const t=Number(e);return Number.isFinite(t)?Math.abs(t)>=100?t.toFixed(0):Math.abs(t)>=10?t.toFixed(1):t.toFixed(2):"0"}function nee(e){const t=Math.max(Number(e)||0,0);return`${t.toFixed(t>=10?1:2)}s`}function ree(e,t=1){return ui(e,{fallback:t,min:Xk,max:Yk})}function oee({value:e="parameters",title:t="Parameters",runtime:n=null,label:r="parameter",loadingLabel:o="Loading parameters...",noParametersLabel:i="No parameters.",hideWhenEmpty:s=!1,showEnableToggle:a=!1,enableLabel:l="Enable",animationAriaLabel:u="Animation",copyTitle:d="Copy parameter JSON",pasteTitle:m="Paste parameter JSON",resetTitle:p="Reset parameters"}){const g=n?.definition||null,x=Array.isArray(g?.parameters)?g.parameters:[],y=Array.isArray(g?.animations)?g.animations:[],S=String(n?.status||"").trim(),b=String(n?.error||"").trim(),I=n?.parameterValues||{},A=n?.animationState||{},N=Math.max(Number(A.duration)||1,.001),P=n?.enabled!==!1,R=x.length>0||y.length>0;return s&&g&&!R&&S!=="loading"&&!b||!(g||S==="loading"||b)?null:c.jsx(ci,{value:e,title:t,children:c.jsxs(r0,{children:[g&&a?c.jsx(Mi,{label:l,checked:P,onCheckedChange:C=>n?.onEnabledChange?.(C),ariaLabel:l}):null,S==="loading"?c.jsx("p",{className:"px-3 py-2 text-xs text-[var(--ui-text-muted)]",children:o}):null,b?c.jsx("p",{className:"whitespace-pre-line px-3 py-2 text-xs text-destructive",children:b}):null,g&&y.length?c.jsxs(c.Fragment,{children:[y.length>1?c.jsx(cn,{label:"Animation",children:c.jsxs(wa,{value:String(A.activeId||y[0]?.id||""),onValueChange:C=>n?.onAnimationSelect?.(C),disabled:!P,children:[c.jsx(va,{size:"sm",className:"h-7 !text-[11px]","aria-label":u,children:c.jsx(ac,{})}),c.jsx(Ca,{children:y.map(C=>c.jsx(Ma,{value:C.id,children:C.label},C.id))})]})}):null,c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(dd,"justify-center"),onClick:()=>n?.onAnimationPlayToggle?.(),disabled:!P,"aria-label":`${A.playing?"Pause":"Play"} ${r} animation`,title:`${A.playing?"Pause":"Play"} ${r} animation`,children:[A.playing?c.jsx(VE,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}):c.jsx($E,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:A.playing?"Pause":"Play"})]}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(dd,"justify-center"),onClick:()=>n?.onAnimationReset?.(),disabled:!P,"aria-label":`Restart ${r} animation`,title:"Restart",children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset"})]})]})}),c.jsx(Ni,{label:"Time",value:nee(A.elapsedSec),onValueCommit:C=>{n?.onAnimationScrub?.(ui(C,{fallback:A.elapsedSec,min:0,max:N}))},valueInputProps:{disabled:!P,ariaLabel:`${r} animation time value`},children:c.jsx(_i,{className:Us,value:[Number(A.elapsedSec)||0],min:0,max:N,step:.01,onValueChange:C=>n?.onAnimationScrub?.(C?.[0]??0),disabled:!P,"aria-label":`${r} animation time`})}),c.jsx(Ni,{label:"Speed",value:`${O_(A.speed||1)}x`,onValueCommit:C=>{n?.onAnimationSpeedChange?.(ree(C,A.speed||1))},valueInputProps:{disabled:!P,ariaLabel:`${r} animation speed value`},children:c.jsx(_i,{className:Us,value:[Number(A.speed)||1],min:Xk,max:Yk,step:.1,onValueChange:C=>n?.onAnimationSpeedChange?.(C?.[0]??1),disabled:!P,"aria-label":`${r} animation speed`})})]}):null,g&&!x.length?c.jsx("p",{className:"px-3 py-2 text-xs text-[var(--ui-text-muted)]",children:i}):null,x.map(C=>{const T=I?.[C.id]??C.defaultValue,k=Wk(C);return C.type==="boolean"?c.jsx(Mi,{label:C.label,checked:T===!0,onCheckedChange:z=>n?.onParameterChange?.(C.id,z),disabled:!P,ariaLabel:C.label},C.id):C.type==="enum"?c.jsx(cn,{label:C.label,children:c.jsxs(wa,{value:String(T??""),onValueChange:z=>n?.onParameterChange?.(C.id,z),disabled:!P,children:[c.jsx(va,{size:"sm",className:"h-7 !text-[11px]","aria-label":C.label,children:c.jsx(ac,{})}),c.jsx(Ca,{children:C.options.map(z=>c.jsx(Ma,{value:z.value,children:z.label},z.value))})]})},C.id):C.type==="color"?c.jsx(cn,{label:C.label,trailing:c.jsx(yv,{value:String(T||"#ffffff"),onChange:z=>n?.onParameterChange?.(C.id,z),disabled:!P,className:H(tee,"w-fit justify-start gap-1.5 px-1.5"),swatchClassName:"size-3.5",popoverAlign:"end","aria-label":C.label})},C.id):C.type==="button"?c.jsx(cn,{children:c.jsx(Qe,{type:"button",variant:"outline",size:"sm",className:H(dd,"w-full justify-center"),onClick:()=>n?.onParameterChange?.(C.id,Number(T||0)+1),disabled:!P,children:C.label})},C.id):C.type==="string"?c.jsx(cn,{label:C.label,trailing:c.jsx(Zw,{value:String(T??""),onValueCommit:z=>n?.onParameterChange?.(C.id,z),disabled:!P,inputMode:"text",ariaLabel:`${C.label} value`,className:"w-40 max-w-[min(12rem,55vw)] text-left font-medium tabular-nums"})},C.id):c.jsx(Ni,{label:C.label,value:`${O_(T)}${C.unit?` ${C.unit}`:""}`,onValueCommit:z=>{n?.onParameterChange?.(C.id,ui(z,{fallback:T,min:C.min,max:C.max}))},valueInputProps:{disabled:!P,ariaLabel:`${C.label} slider value`},children:c.jsx(_i,{className:Us,value:[Number(T)||0],min:C.min,max:C.max,step:k,onValueChange:z=>n?.onParameterChange?.(C.id,z?.[0]??T),disabled:!P,"aria-label":C.label})},C.id)}),g&&x.length?c.jsxs(c.Fragment,{children:[c.jsx(cn,{className:"pt-2",children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(dd,"justify-center"),onClick:()=>{n?.onCopyParams?.()},title:d,children:[c.jsx(vu,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Copy parameters"})]}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(dd,"justify-center"),onClick:()=>{n?.onPasteParams?.()},title:m,children:[c.jsx(cR,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Paste parameters"})]})]})}),n?.onResetParameters?c.jsx(cn,{children:c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(dd,"w-full justify-center"),onClick:()=>n.onResetParameters(),title:p,children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset parameters"})]})}):null]}):null]})})}function iee({open:e,title:t="Implicit CAD",isDesktop:n,width:r,selectedEntry:o=null,onOpenChange:i,onStartResize:s,parameterRuntime:a=null,graphicsRuntime:l=null,fileDownloadAvailable:u=!1,viewerServerInfo:d=null,localFileOpenAvailable:m=!1,fileAccessBusyKey:p="",onOpenFileAsset:g,suppressDynamicMetadataStatus:x=!1,statusItems:y=[],themeSections:S=null,openSectionIds:b=[],onOpenSectionIdsChange:I}){return c.jsx(xf,{open:e,title:t,isDesktop:n,width:r,onOpenChange:i,onStartResize:s,children:c.jsxs(yf,{type:"multiple",value:b,onValueChange:I,className:"text-sm",children:[c.jsx(wf,{items:y}),c.jsx(oee,{runtime:a,label:"implicit parameter",loadingLabel:"Loading implicit parameters...",noParametersLabel:"No implicit parameters.",hideWhenEmpty:!0,animationAriaLabel:"Implicit animation",copyTitle:"Copy implicit parameter JSON",pasteTitle:"Paste implicit parameter JSON"}),c.jsx(YQ,{runtime:l}),S,c.jsx(Ef,{entry:o,fileDownloadAvailable:u,viewerServerInfo:d,localFileOpenAvailable:m,fileAccessBusyKey:p,onOpenFileAsset:g,suppressDynamicStatus:x})]})})}function see(e){return Wk(e)}function aee(e,t={}){return Hk(e,t)}function lee(e,t){return Kk(e,t,{label:"STEP parameter",unknownLabel:"STEP parameter"})}const _m=uh,cee=n0,uee="grid h-5 w-5 shrink-0 place-items-center rounded-sm px-0 text-current/60 hover:bg-sidebar-accent/45 hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent/45",dee="h-5 w-5 rounded-sm px-0 text-current/60 shadow-none hover:bg-sidebar-accent/45 hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent/45 focus-visible:text-sidebar-accent-foreground",fee="h-7 min-w-0 text-xs font-normal",k_="px-1.5 pb-1 pt-2 text-[10px] font-medium text-sidebar-foreground/45",qk="size-3.5 shrink-0 text-current/60",mee="grid h-5 w-5 shrink-0 place-items-center text-current/60",iE=22,pee=14,Zk=128,D_="tree",hee=120,tb=10,gee="h-5 w-full justify-start rounded-sm px-1.5 text-[10px] font-medium text-sidebar-foreground/60 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent focus-visible:text-sidebar-accent-foreground",Jk=.1,Qk=3;function j_(e){const t=Number(e);return Number.isFinite(t)?Math.abs(t)>=100?t.toFixed(0):Math.abs(t)>=10?t.toFixed(1):t.toFixed(2):"0"}function bee(e){const t=Math.max(Number(e)||0,0);return`${t.toFixed(t>=10?1:2)}s`}function yee(e,t=1){return ui(e,{fallback:t,min:Jk,max:Qk})}function xee(e,t){const n=Array.isArray(e)?e.map(o=>String(o||"").trim()).filter(Boolean):[];if(!n.length)return!1;const r=new Set(Array.isArray(t)?t:[]);return n.every(o=>r.has(o))}function See(e,t){const n=new Set,r=[];for(const o of Array.isArray(e)?e:[]){const i=Math.max(Number(o?.depth)||0,0);r.length=i;const a=i>0&&r[i-1]===!0||xee(o?.leafPartIds,t);r[i]=a,a&&n.add(String(o?.id||"").trim())}return n}function Eee(e){return String(e?.id||e?.occurrenceId||"").trim()}function wee(e,t){const n=new Set((Array.isArray(t)?t:[]).map(i=>String(i||"").trim()).filter(Boolean));if(!n.size)return null;const r=new Set,o=[];for(const i of Array.isArray(e)?e:[]){const s=String(i?.id||"").trim(),a=Math.max(Number(i?.depth)||0,0);o.length=a;const u=a>0&&o[a-1]===!0||n.has(s);o[a]=u,u&&s&&r.add(s)}return r}function L_(e,{block:t="nearest"}={}){if(!e)return;const n=e.closest("[data-slot='scroll-area-viewport']");if(!n){e.scrollIntoView?.({block:t,behavior:"instant"});return}const r=e.getBoundingClientRect(),o=n.getBoundingClientRect();if(t==="center"){const s=r.top+r.height/2,a=o.top+o.height/2;n.scrollTop+=s-a;return}const i=o.top+hee;if(r.topo.bottom&&(n.scrollTop+=r.bottom-o.bottom)}function sE(e){const t=String(e?.topologyType||"").trim();if(t)return t;const n=String(e?.nodeType||e?.node?.nodeType||"").trim();return n.startsWith("topology-")?n.slice(9):""}function vee(e){return String(e?.detail||e?.node?.detail||e?.summary||e?.node?.summary||"").trim()}function Cee(e,t){const n=vee(e).toLowerCase(),r=String(e?.label||e?.node?.displayName||"").trim().toLowerCase(),o=`${n} ${r}`;if(t==="face")return/\bplane\b/.test(o)?"plane":/\bcylinder\b/.test(o)?"cylinder":/\bcone\b/.test(o)?"cone":/\bsphere\b/.test(o)?"sphere":/\btorus\b/.test(o)?"torus":/\bbspline\b|\bspline\b|\bbezier\b/.test(o)?"spline":"face";if(t==="edge")return/\bcircle\b/.test(o)?"circle":/\bellipse\b/.test(o)?"ellipse":/\bline\b/.test(o)?"line":/\bbspline\b|\bspline\b|\bbezier\b/.test(o)?"spline":"edge";if(t==="shape"){if(/\bsolid\b/.test(o))return"solid";if(/\bshell\b/.test(o))return"shell"}return t}function eD(e){const t=String(e||"").trim();return t?`${t.slice(0,1).toUpperCase()}${t.slice(1)}`:""}function Mee(e,t,n=""){const r=String(e?.label||e?.node?.displayName||"").trim(),o=String(t||"").trim(),i=String(n||"").trim();if(o){const l=eD(o),u=r.toLowerCase();return[l&&!u.startsWith(o.toLowerCase())?l:"",r,i].filter(Boolean).join(" ")}return[String(e?.nodeType||e?.node?.nodeType||"").trim()==="assembly"?"Assembly":"Component",r,i].filter(Boolean).join(" ")}function rc(e,t){const n=String(t||"").trim();return n?`${e}: ${n}`:""}function tD(e){const t=String(e||"").trim().replace(/^#/,"");return t?`#${t}`:""}function Iee(e,{topologyType:t="",topologyReferenceId:n="",detail:r="",disabledReason:o=""}={}){const i=String(e?.label||e?.node?.displayName||"").trim(),s=String(e?.nodeType||e?.node?.nodeType||"").trim(),a=t?eD(t):s==="assembly"?"Assembly":"Component",l=t?String(e?.node?.displaySelector||e?.displaySelector||n||"").trim():String(e?.node?.occurrenceId||e?.node?.id||e?.id||"").trim();return[rc(a||"Item",i),rc("Ref",tD(l)),rc("Info",r),rc("Status",o)].filter(Boolean).join(`
+`)}function Aee(e,t=""){return[rc("Mate",e?.label),rc("Ref",tD(e?.id)),rc("Info",e?.detail),rc("Status",t)].filter(Boolean).join(`
+`)}function Nee({depth:e}){const t=Math.min(Math.max(Math.trunc(Number(e)||0),0),Math.floor(Zk/iE));return t<1?null:c.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-0","aria-hidden":"true",children:Array.from({length:t}).map((n,r)=>c.jsx("span",{className:"absolute inset-y-0 border-l border-sidebar-border/65",style:{left:`${r*iE+pee}px`}},r))})}function Ua({children:e}){return c.jsx("svg",{className:qk,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.45",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision","aria-hidden":"true",children:e})}function _ee({row:e,type:t}){const n=String(t||"").trim(),r=Cee(e,n),o=`relative ${qk}`;return n==="occurrence"?null:n==="shape"?r==="shell"?c.jsxs(Ua,{children:[c.jsx("path",{d:"M4.5 4.5h7v7h-7z"}),c.jsx("path",{d:"M6.25 6.25h3.5v3.5h-3.5z"})]}):c.jsx("span",{className:o,"aria-hidden":"true",children:c.jsx("span",{className:"absolute left-[3px] top-[3px] size-2.5 rotate-45 rounded-[1px] border border-current"})}):n==="face"?r==="cylinder"?c.jsxs(Ua,{children:[c.jsx("ellipse",{cx:"8",cy:"4",rx:"4",ry:"2"}),c.jsx("path",{d:"M4 4v8"}),c.jsx("path",{d:"M12 4v8"}),c.jsx("ellipse",{cx:"8",cy:"12",rx:"4",ry:"2"})]}):r==="cone"?c.jsxs(Ua,{children:[c.jsx("path",{d:"M8 3 4 12"}),c.jsx("path",{d:"M8 3l4 9"}),c.jsx("path",{d:"M4 12c1.25 1.25 6.75 1.25 8 0"})]}):r==="sphere"?c.jsxs(Ua,{children:[c.jsx("circle",{cx:"8",cy:"8",r:"5"}),c.jsx("path",{d:"M8 3c1.3 1.35 2 3.05 2 5s-.7 3.65-2 5"}),c.jsx("path",{d:"M3 8h10"})]}):r==="torus"?c.jsxs(Ua,{children:[c.jsx("ellipse",{cx:"8",cy:"8",rx:"5.2",ry:"3.4"}),c.jsx("ellipse",{cx:"8",cy:"8",rx:"2.2",ry:"1.25"})]}):r==="spline"?c.jsxs(Ua,{children:[c.jsx("path",{d:"M3 11.5c2.1-6.6 7.6 1 10-5.8"}),c.jsx("path",{d:"M3.5 12.7h8.8",opacity:"0.45"})]}):c.jsx("span",{className:o,"aria-hidden":"true",children:c.jsx("span",{className:"absolute inset-[3px] rounded-[1px] border border-current bg-current/15"})}):n==="edge"?r==="circle"?c.jsxs(Ua,{children:[c.jsx("circle",{cx:"8",cy:"8",r:"4.6"}),c.jsx("circle",{cx:"8",cy:"8",r:"1.2",fill:"currentColor",stroke:"none",opacity:"0.25"})]}):r==="ellipse"?c.jsx(Ua,{children:c.jsx("ellipse",{cx:"8",cy:"8",rx:"5.4",ry:"3.2"})}):r==="spline"?c.jsxs(Ua,{children:[c.jsx("path",{d:"M2.8 10.6c2.1-5.8 5.2 2.8 10.4-4.8"}),c.jsx("circle",{cx:"2.8",cy:"10.6",r:"0.9",fill:"currentColor",stroke:"none"}),c.jsx("circle",{cx:"13.2",cy:"5.8",r:"0.9",fill:"currentColor",stroke:"none"})]}):c.jsxs("span",{className:o,"aria-hidden":"true",children:[c.jsx("span",{className:"absolute left-[2px] top-[7px] h-px w-3 rotate-[-28deg] rounded-full bg-current"}),c.jsx("span",{className:"absolute left-[1px] top-[8px] size-1 rounded-full bg-current"}),c.jsx("span",{className:"absolute right-[1px] top-[3px] size-1 rounded-full bg-current"})]}):null}function Tee({row:e}){const t=sE(e);return t?c.jsx(_ee,{row:e,type:t}):null}function Ree(e){return Array.isArray(e)?e.filter(t=>t&&typeof t=="object").map((t,n)=>{const r=`m${n+1}`,o=String(t.id||r).trim()||r,i=String(t.sourceLabel||t.name||"").trim(),s=String(t.label||"").trim(),a=i||(s&&s!==o?s:"")||o,l=String(t.type||t.relation||"mate").trim()||"mate",u=String(t.fixed||"").trim(),d=String(t.moving||"").trim(),m=u&&d?`${u} -> ${d}`:u||d,p=[o,l,m].filter(Boolean).join(" ");return{id:o,label:a,detail:p}}):[]}function Pee({animationState:e,duration:t,enabled:n,onScrub:r}){const o=FX(),i=e?.playing?o:Number(e?.elapsedSec)||0,s=Math.min(Math.max(i,0),t);return c.jsx(Ni,{label:"Time",value:bee(s),onValueCommit:a=>{r?.(ui(a,{fallback:s,min:0,max:t}))},valueInputProps:{disabled:!n,ariaLabel:"STEP animation time value"},children:c.jsx(_i,{className:Us,value:[s],min:0,max:t,step:.01,onValueChange:a=>r?.(a?.[0]??0),disabled:!n,"aria-label":"STEP animation time"})})}function Oee({open:e,isDesktop:t,width:n,onOpenChange:r,onStartResize:o,selectedEntry:i,viewerLoading:s,isAssemblyView:a=!1,stepTreeRoot:l,assemblyMates:u=[],expandedTreeNodeIds:d,stepTreeRootShowMore:m=!1,onStepTreeRootShowMoreChange:p,loadableTreeNodeIds:g=[],selectedPartIds:x,selectedReferenceIds:y=[],selectedMateIds:S=[],selectableNodeIds:b=null,activeTreeNodeId:I="",activeTreeNodeScrollKey:A="",hoveredPartId:N,hoveredReferenceId:P="",hoveredMateId:R="",hiddenPartIds:v,focusedNodeIds:C=[],onSelectTreeNode:T,onSelectReferenceNode:k,onSelectMateNode:z,onCopyTreeNodeReference:Y,onCopyMateNodeReference:K,onFocusTreeNode:J,onUnfocusTreeNode:G,onExitAllIsolate:Q,onHideOtherTreeNode:D,onToggleTreeNode:$,onClearSelection:ie,onHoverTreeNode:W,onHoverReferenceNode:Z,onHoverMateNode:Ee,treeSelectionDisabled:re=!1,treeSelectionDisabledReason:be="",onTogglePartVisibility:_e,hideAllParts:Ie,showAllHiddenParts:oe,stepModule:me=null,fileDownloadAvailable:se=!1,viewerServerInfo:Ae=null,localFileOpenAvailable:we=!1,fileAccessBusyKey:ct="",onOpenFileAsset:ut,suppressDynamicMetadataStatus:Tt=!1,statusItems:Ve=[],themeSections:St=null,openSectionIds:wt=[],onOpenSectionIdsChange:Vn}){const De=f.useRef(new Map),xe=f.useRef(""),yt=Array.isArray(x)?x:[],Te=f.useMemo(()=>new Set((Array.isArray(y)?y:[]).map(X=>String(X||"").trim()).filter(Boolean)),[y]),rt=String(Array.isArray(y)&&y[y.length-1]||"").trim(),Re=f.useMemo(()=>new Set((Array.isArray(S)?S:[]).map(X=>String(X||"").trim()).filter(Boolean)),[S]),Fe=Array.isArray(v)?v:[],on=f.useMemo(()=>new Set((Array.isArray(C)?C:[]).map(X=>String(X||"").trim()).filter(Boolean)),[C]),ht=String(P||"").trim(),jt=String(R||"").trim(),qt=f.useMemo(()=>Array.isArray(b)?new Set(b.map(X=>String(X||"").trim()).filter(Boolean)):null,[b]),sn=l,Mn=hr(sn),fn=Mn.length>0&&(a||Eee(sn)===hs),Bt=f.useMemo(()=>Ree(u),[u]),qe=Mn.length+Bt.length>tb,Vt=qe?Math.min(Mn.length,tb):Mn.length,We=qe?Math.max(tb-Vt,0):Bt.length,ze=f.useMemo(()=>Bb(sn,d,{omitRoot:fn,showAllRootChildren:!0}),[fn,d,sn]),Ze=f.useMemo(()=>rt&&ze.find(X=>String(X?.topologyReferenceId||"").trim()===rt)||null,[rt,ze]),vt=f.useMemo(()=>qe?[...yt,I,Ze?.id].map(At=>String(At||"").trim()).filter(Boolean).some(At=>L5(sn,At)>=Vt):!1,[Ze,I,Vt,qe,yt,sn]),Tn=f.useMemo(()=>!qe||Re.size<1||We>=Bt.length?!1:Bt.some((X,At)=>At>=We&&Re.has(String(X?.id||"").trim())),[Bt,We,qe,Re]),pe=qe&&(vt||Tn),Xe=qe&&(m||pe),He=f.useMemo(()=>Bb(sn,d,{omitRoot:fn,rootChildLimit:tb,showAllRootChildren:!qe||Xe}),[fn,d,qe,Xe,sn]),Rn=qe?Math.max(Mn.length-Vt,0):0,xn=f.useMemo(()=>He.map(X=>String(X?.id||"")).join(`
+`),[He]),ue=f.useMemo(()=>See(He,Fe),[Fe,He]),Rt=f.useMemo(()=>wee(He,C),[C,He]),Zt=a||fn?He.length>0:He.some(X=>X?.hasChildren),qn=qe&&!Xe?Bt.slice(0,We):Bt,Ct=Bt.length>0,wr=qn.length>0,vr=qe&&!Xe?Math.max(Bt.length-qn.length,0):0,Qt=Rn+vr,In=qe&&(!pe||m),gr=Xe?"Show less":`Show ${Qt} more`,lo=Xe?"Show less":"Show more",Mt=In?c.jsx("div",{className:"py-0.5",role:"presentation",children:c.jsx(Qe,{type:"button",variant:"ghost",size:"xs",className:gee,title:lo,onClick:X=>{X.stopPropagation(),p?.(!Xe)},children:gr})}):null,gt=f.useMemo(()=>rt&&He.find(X=>String(X?.topologyReferenceId||"").trim()===rt)||null,[rt,He]),Sn=String(I||yt[yt.length-1]||"").trim(),On=String(gt?.id||Sn||"").trim(),Kr=f.useMemo(()=>On&&He.find(X=>String(X?.id||"").trim()===On||String(X?.node?.selectionPartId||"").trim()===On)||null,[On,He]),Xr=Kr?.node?.visualOnly===!0?!1:!!sE(Kr),Co=on.size>0,br=a===!0,j=Array.isArray(wt)&&wt.includes(D_),de=re?String(be||"Tree selection is disabled in the current parameter state.").trim():"",L=f.useMemo(()=>new Set((Array.isArray(d)?d:[]).map(X=>String(X||"").trim()).filter(Boolean)),[d]),te=f.useMemo(()=>new Set((Array.isArray(g)?g:[]).map(X=>String(X||"").trim()).filter(Boolean)),[g]),fe=X=>{const At=String(X?.id||"").trim();return!!(X?.hasChildren||At&&te.has(At))},ae=f.useMemo(()=>{const X=[],At=new Set;for(const ne of He){const ye=String(ne?.id||"").trim();!ye||At.has(ye)||fe(ne)&&(At.add(ye),X.push(ye))}return X},[te,He]),he=f.useMemo(()=>ae.filter(X=>!L.has(X)),[ae,L]),ot=f.useMemo(()=>ae.filter(X=>L.has(X)),[ae,L]),It=f.useMemo(()=>{const X=new Map;for(const At of He){const ne=String(At?.id||"").trim();ne&&X.set(ne,At);const ye=String(At?.node?.selectionPartId||"").trim();ye&&!X.has(ye)&&X.set(ye,At)}return X},[He]),Pt=(X,At=1)=>{if(!He.length)return;const ne=At<0?-1:1;let ye=Math.min(Math.max(Number(X)||0,0),He.length-1);for(;ye>=0&&ye{const X=String(A||"").trim();if(!X||X===xe.current||!On||!j)return;const At=()=>{const ye=De.current.get(On);ye&&(xe.current=X,L_(ye,{block:Xr?"center":"nearest"}))};if(typeof window>"u"){At();return}const ne=window.requestAnimationFrame(At);return()=>{window.cancelAnimationFrame(ne)}},[On,Xr,A,j,xn]),i?c.jsx(xf,{open:e,title:"STEP",isDesktop:t,width:n,onOpenChange:r,onStartResize:o,children:c.jsxs(yf,{type:"multiple",value:wt,onValueChange:Vn,children:[c.jsx(wf,{items:Ve}),c.jsx(ci,{value:D_,title:"Tree",triggerProps:{title:de||void 0},children:c.jsx("div",{className:"max-w-full overflow-hidden px-1.5 pb-2",children:c.jsxs("div",{className:"select-none space-y-px",role:"tree","aria-multiselectable":"true","aria-disabled":re,title:de||void 0,onClick:X=>{re||X.target===X.currentTarget&&ie?.()},children:[Ct?c.jsx("div",{className:k_,role:"presentation",children:"Instances"}):null,s&&!He.length?c.jsx("p",{className:"px-1.5 py-2 text-xs text-[var(--ui-text-muted)]",children:"Loading STEP tree..."}):null,Zt?He.map((X,At)=>{const ye=X?.node?.visualOnly===!0?"":sE(X),it=!!ye,ft=String(X.id||"").trim(),xt=String(X.node?.selectionPartId||X.id||"").trim(),_r=String(X.topologyReferenceId||"").trim(),Ti=it?String(X.node?.partId||"").trim():"",Ra=!!ye&&_r&&typeof k=="function",Pa=String(X.detail||"").trim(),Cr=ye?"":Pa,Xt=Mee(X,ye,Pa),os=fe(X),kn=!!X.expanded,Tr=it?Te.has(_r):yt.includes(xt),Ri=it&&Ti&&(Rt?.has(Ti)||on.has(Ti)||qt?.has(Ti)),_u=!Rt||Rt.has(ft)||Ri,Zn=!it&&on.has(ft),qr=(ye==="shape"||ye==="occurrence")&&on.has(String(X.node?.partId||"").trim()),mi=it?Ra&&_u&&!qr:!Zn&&(!qt||qt.has(xt)||Tr),Jn=ue.has(String(X.id||"").trim()),ar=Co&&!_u,Mr=re||Jn||!mi,pi=Tr&&!Jn&&!Zn&&!qr,co=!Jn&&!Mr&&(it?_r&&ht===_r:N===xt),Qs=de||(mi?"":qr?"Select a face or edge of this isolated component":it?"":Co?"Exit isolate to select this node":"Select a parent assembly to inspect this node"),ko=Mr&&!(!it&&br&&!re&&(Zn?typeof G=="function":typeof _e=="function")),is=Iee(X,{topologyType:ye,topologyReferenceId:_r,detail:Pa,disabledReason:Qs}),Mo=Math.min(Math.max(X.depth,0)*iE,Zk),uo=$e=>{const ki=$e.shiftKey;it?k?.(_r,{multiSelect:ki}):T?.(xt,{multiSelect:ki})},wc=()=>{if(!Mr){if(it){_r&&Z?.(_r);return}W?.(xt)}},hl=()=>{if(it){_r&&Z?.("");return}Mr||W?.("")},Pi=$e=>{if(Mr){$e.preventDefault();return}uo($e)},Do=$e=>{if(!($e.target!==$e.currentTarget||Mr)){if($e.key==="ArrowDown"){$e.preventDefault(),Pt(At+1,1);return}if($e.key==="ArrowUp"){$e.preventDefault(),Pt(At-1,-1);return}if($e.key==="Home"){$e.preventDefault(),Pt(0,1);return}if($e.key==="End"){$e.preventDefault(),Pt(He.length-1,-1);return}if($e.key==="Enter"||$e.key===" "){$e.preventDefault(),uo($e);return}if(os&&$e.key==="ArrowRight"&&!kn){$e.preventDefault(),$?.(X.id);return}os&&$e.key==="ArrowLeft"&&kn&&($e.preventDefault(),$?.(X.id))}},Ns=Zn?typeof G=="function":typeof J=="function",_s=re||!mi&&!Tr||Jn&&!Tr,Qo=it||re||!Ns||!Zn&&!mi&&!Tr,Dn=!it&&Co&&on.size>1&&typeof Q=="function",$r=it||re||Jn||typeof D!="function",ea=it||re||(Jn?typeof oe!="function":typeof Ie!="function"),tn=it||Zn||!br||typeof _e!="function",Zr=it?[]:yt.map($e=>String($e||"").trim()).filter(Boolean),Rr=it?[]:Array.from(new Set([...Zr,xt].filter(Boolean))),Qn=Rr.map($e=>It.get($e)||null).filter(Boolean),ei=Qn.filter($e=>fe($e)&&!L.has(String($e.id||"").trim())).map($e=>String($e.id||"").trim()).filter(Boolean),Oi=Qn.filter($e=>fe($e)&&L.has(String($e.id||"").trim())).map($e=>String($e.id||"").trim()).filter(Boolean),Pr=Rr.length||1,ti=ei.length<1||typeof $!="function",jo=Oi.length<1||typeof $!="function",Tu=he.length<1||typeof $!="function",Nf=ot.length<1||typeof $!="function",Ru=it?_r:xt;return c.jsxs("div",{className:"relative min-w-0 max-w-full",children:[c.jsx(Nee,{depth:X.depth}),c.jsx("div",{className:"relative flex h-7 min-w-0 max-w-full items-center",style:Mo>0?{marginLeft:`${Mo}px`}:void 0,children:c.jsxs(X1,{modal:!1,children:[c.jsx(Y1,{asChild:!0,children:c.jsxs("div",{ref:$e=>{if($e){De.current.set(X.id,$e),xt&&xt!==X.id&&De.current.set(xt,$e);return}De.current.delete(X.id),xt&&xt!==X.id&&De.current.delete(xt)},role:"treeitem","aria-expanded":os?kn:void 0,"aria-selected":Tr,"aria-label":Xt,"data-step-tree-node-id":X.id||void 0,"data-step-tree-node-type":X.nodeType||void 0,"data-step-tree-topology-reference-id":_r||void 0,"data-selection-disabled":Mr?"true":void 0,"aria-disabled":ko,tabIndex:Mr?-1:0,className:H("group/tree-row flex h-7 min-w-0 w-full max-w-full items-center gap-1 rounded-md px-1 outline-none transition-colors",Mr?"cursor-default text-sidebar-foreground/55":"cursor-pointer text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent focus-visible:text-sidebar-accent-foreground",pi?"bg-sidebar-accent font-medium text-sidebar-accent-foreground":co&&"bg-sidebar-accent text-sidebar-accent-foreground",(Jn||ar)&&"opacity-45"),title:is,onClick:Pi,onKeyDown:Do,onMouseEnter:wc,onMouseLeave:hl,children:[c.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden",children:[os?c.jsx(Qe,{type:"button",variant:"ghost",size:"icon-sm",className:uee,onClick:$e=>{$e.stopPropagation(),$?.(X.id)},"aria-label":kn?`Collapse ${X.label}`:`Expand ${X.label}`,title:kn?"Collapse":"Expand",children:c.jsx(Vd,{className:H("size-3.5 transition-transform",kn&&"rotate-90"),strokeWidth:2,"aria-hidden":"true"})}):null,c.jsxs("div",{className:H(fee,"flex min-w-0 flex-1 shrink touch-manipulation items-center justify-start gap-1.5 overflow-hidden px-0 text-left",Mr&&"text-sidebar-foreground/55"),children:[c.jsx(Tee,{row:X}),c.jsx("span",{className:"min-w-0 flex-1 overflow-hidden",children:c.jsxs("span",{className:"flex min-w-0 items-baseline gap-1.5 overflow-hidden text-xs font-medium leading-4",children:[c.jsx("span",{className:"min-w-0 truncate",children:X.label}),Cr?c.jsx("span",{className:"min-w-0 truncate text-[10px] font-normal text-current/50",children:Cr}):null]})})]})]}),!it&&br?c.jsx(Qe,{type:"button",variant:"ghost",size:"icon-sm",className:H(dee,"ml-1 shrink-0",!Jn&&!pi&&!co&&!Zn&&"opacity-0 group-hover/tree-row:opacity-100 focus-visible:opacity-100",Jn&&"text-current/75",re&&"cursor-default text-current/35 hover:!bg-transparent hover:!text-current/35"),disabled:re||(Zn?typeof G!="function":typeof _e!="function"),"aria-label":Zn?`Exit isolate for ${X.label}`:Jn?`Show ${X.label}`:`Hide ${X.label}`,title:Zn?"Exit isolate":Jn?"Show":"Hide",onClick:$e=>{if($e.stopPropagation(),Zn){G?.(X.id);return}_e?.(X.id)},children:Zn?c.jsx(eh,{className:"size-3",strokeWidth:2,"aria-hidden":"true"}):Jn?c.jsx(rR,{className:"size-3",strokeWidth:1.8,"aria-hidden":"true"}):c.jsx(oR,{className:"size-3",strokeWidth:1.8,"aria-hidden":"true"})}):null]})}),c.jsx(q1,{className:"w-44",children:c.jsx(R1,{Item:el,Separator:Z1,selected:Tr,isolated:Zn,hidden:Jn,actionCount:Pr,copyReferenceDisabled:!Ru||typeof Y!="function",selectDisabled:_s,showIsolate:!it,isolateDisabled:Qo,showExitAllIsolate:Dn,exitAllIsolateDisabled:re||!Dn,showHideOther:!it,hideOtherDisabled:$r,hideAllDisabled:ea,hideAllLabel:"Show all",showVisibility:!it&&!Zn,visibilityDisabled:tn,showHideAll:!1,showExpandCollapse:os||Qn.some($e=>fe($e))||ae.length>0,expandSelectedDisabled:ti,collapseSelectedDisabled:jo,expandAllDisabled:Tu,collapseAllDisabled:Nf,onCopyReference:()=>{Y?.(Ru,{topology:it})},onSelect:$e=>{if(!it&&Tr&&Zr.length>1){ie?.();return}uo($e)},onIsolate:()=>{if(Zn){G?.(X.id);return}J?.(Rr)},onExitAllIsolate:()=>{Q?.()},onHideOther:()=>{D?.(Rr)},onHideAll:()=>{if(Jn){oe?.();return}Ie?.()},onToggleVisibility:()=>{for(const $e of Rr)_e?.($e)},onExpandSelected:()=>{for(const $e of ei)$?.($e)},onCollapseSelected:()=>{for(const $e of Oi)$?.($e)},onExpandAll:()=>{for(const $e of he)$?.($e)},onCollapseAll:()=>{for(const $e of ot)$?.($e)}})})]})})]},X.id)}):null,wr?null:Mt,!Zt&&!s?c.jsx("p",{className:"px-1.5 py-2 text-xs text-[var(--ui-text-muted)]",children:"No assembly tree"}):null,wr?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:k_,role:"presentation",children:"Mates"}),qn.map(X=>{const At=Re.has(X.id),ne=jt===X.id,ye=re||typeof z!="function",it=Aee(X,de),ft=xt=>{z?.(X.id,{multiSelect:xt?.shiftKey===!0})};return c.jsxs(X1,{modal:!1,children:[c.jsx(Y1,{asChild:!0,children:c.jsxs("div",{role:"treeitem","aria-label":[X.label,X.detail].filter(Boolean).join(" "),"aria-selected":At,"aria-disabled":ye,tabIndex:ye?-1:0,className:H("flex h-7 min-w-0 max-w-full items-center gap-1.5 rounded-md px-1 text-xs outline-none transition-colors",ye?"cursor-default text-sidebar-foreground/55":"cursor-pointer text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent focus-visible:text-sidebar-accent-foreground",At?"bg-sidebar-accent font-medium text-sidebar-accent-foreground":ne&&"bg-sidebar-accent text-sidebar-accent-foreground"),title:it,onClick:xt=>{if(ye){xt.preventDefault();return}ft(xt)},onKeyDown:xt=>{xt.target!==xt.currentTarget||ye||(xt.key==="Enter"||xt.key===" ")&&(xt.preventDefault(),ft(xt))},onMouseEnter:()=>{ye||Ee?.(X.id)},onMouseLeave:()=>{ye||Ee?.("")},children:[c.jsx("span",{className:mee,"aria-hidden":"true",children:c.jsx(O3,{className:"size-3.5",strokeWidth:1.8})}),c.jsx("span",{className:"min-w-0 flex-1 truncate font-medium leading-4",children:X.label})]})}),c.jsx(q1,{className:"w-44",children:c.jsx(R1,{Item:el,Separator:Z1,selected:At,copyReferenceDisabled:!X.id||typeof K!="function",selectDisabled:ye,showIsolate:!1,showHideOther:!1,showVisibility:!1,showHideAll:!1,showExpandCollapse:!1,onCopyReference:()=>{K?.(X.id)},onSelect:ft})})]},X.id)}),Mt]}):null]})})}),Ke||Et==="loading"||Pe?c.jsx(ci,{value:"parameters",title:"Parameters",children:c.jsxs(r0,{children:[Ke?c.jsx(Mi,{label:"Enable",checked:Kt,onCheckedChange:X=>me?.onEnabledChange?.(X),ariaLabel:"Enable STEP module"}):null,Et==="loading"?c.jsx("p",{className:"px-3 py-2 text-xs text-[var(--ui-text-muted)]",children:"Loading STEP module..."}):null,Pe?c.jsx("p",{className:"whitespace-pre-line px-3 py-2 text-xs text-destructive",children:Pe}):null,Ke&&Ne.length?c.jsxs(c.Fragment,{children:[Ne.length>1?c.jsx(cn,{label:"Animation",children:c.jsxs(wa,{value:String(Se.activeId||Ne[0]?.id||""),onValueChange:X=>me?.onAnimationSelect?.(X),disabled:!Kt,children:[c.jsx(va,{size:"sm",className:"h-7 !text-[11px]","aria-label":"STEP animation",children:c.jsx(ac,{})}),c.jsx(Ca,{children:Ne.map(X=>c.jsx(Ma,{value:X.id,children:X.label},X.id))})]})}):null,c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(_m,"justify-center"),onClick:()=>me?.onAnimationPlayToggle?.(),disabled:!Kt,children:[Se.playing?c.jsx(VE,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}):c.jsx($E,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:Se.playing?"Pause":"Play"})]}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(_m,"justify-center"),onClick:()=>me?.onAnimationReset?.(),disabled:!Kt,"aria-label":"Restart STEP animation",title:"Restart",children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset"})]})]})}),c.jsx(Pee,{animationState:Se,duration:Yr,enabled:Kt,onScrub:me?.onAnimationScrub}),c.jsx(Ni,{label:"Speed",value:`${j_(Se.speed||1)}x`,onValueCommit:X=>{me?.onAnimationSpeedChange?.(yee(X,Se.speed||1))},valueInputProps:{disabled:!Kt,ariaLabel:"STEP animation speed value"},children:c.jsx(_i,{className:Us,value:[Number(Se.speed)||1],min:Jk,max:Qk,step:.1,onValueChange:X=>me?.onAnimationSpeedChange?.(X?.[0]??1),disabled:!Kt,"aria-label":"STEP animation speed"})})]}):null,Ke&&!en.length?c.jsx("p",{className:"px-3 py-2 text-xs text-[var(--ui-text-muted)]",children:"No module parameters."}):null,en.map(X=>{const At=En?.[X.id]??X.defaultValue,ne=see(X);return X.type==="boolean"?c.jsx(Mi,{label:X.label,checked:At===!0,onCheckedChange:ye=>me?.onParameterChange?.(X.id,ye),disabled:!Kt,ariaLabel:X.label},X.id):X.type==="enum"?c.jsx(cn,{label:X.label,children:c.jsxs(wa,{value:String(At??""),onValueChange:ye=>me?.onParameterChange?.(X.id,ye),disabled:!Kt,children:[c.jsx(va,{size:"sm",className:"h-7 !text-[11px]","aria-label":X.label,children:c.jsx(ac,{})}),c.jsx(Ca,{children:X.options.map(ye=>c.jsx(Ma,{value:ye.value,children:ye.label},ye.value))})]})},X.id):X.type==="color"?c.jsx(cn,{label:X.label,trailing:c.jsx(yv,{value:String(At||"#ffffff"),onChange:ye=>me?.onParameterChange?.(X.id,ye),disabled:!Kt,className:H(cee,"w-fit justify-start gap-1.5 px-1.5"),swatchClassName:"size-3.5",popoverAlign:"end","aria-label":X.label})},X.id):X.type==="button"?c.jsx(cn,{children:c.jsx(Qe,{type:"button",variant:"outline",size:"sm",className:H(_m,"w-full justify-center"),onClick:()=>me?.onParameterChange?.(X.id,Number(At||0)+1),disabled:!Kt,children:X.label})},X.id):c.jsx(Ni,{label:X.label,value:`${j_(At)}${X.unit?` ${X.unit}`:""}`,onValueCommit:ye=>{me?.onParameterChange?.(X.id,ui(ye,{fallback:At,min:X.min,max:X.max}))},valueInputProps:{disabled:!Kt,ariaLabel:`${X.label} slider value`},children:c.jsx(_i,{className:Us,value:[Number(At)||0],min:X.min,max:X.max,step:ne,onValueChange:ye=>me?.onParameterChange?.(X.id,ye?.[0]??At),disabled:!Kt,"aria-label":X.label})},X.id)}),Ke&&en.length?c.jsx(cn,{className:"pt-2",children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(_m,"justify-center"),onClick:()=>{me?.onCopyParams?.()},title:"Copy STEP parameter JSON",children:[c.jsx(vu,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Copy parameters"})]}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:H(_m,"justify-center"),onClick:()=>{me?.onPasteParams?.()},title:"Paste STEP parameter JSON",children:[c.jsx(cR,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Paste parameters"})]})]})}):null]})}):null,St,c.jsx(Ef,{entry:i,fileDownloadAvailable:se,viewerServerInfo:Ae,localFileOpenAvailable:we,fileAccessBusyKey:ct,onOpenFileAsset:ut,suppressDynamicStatus:Tt})]})}):null}function kee({...e}){return c.jsx(b3,{"data-slot":"toast-provider",...e})}function Dee({className:e,...t}){return c.jsx(y3,{"data-slot":"toast",className:H("cad-glass-popover pointer-events-auto rounded-md border border-border px-4 py-2.5 text-xs font-medium text-popover-foreground shadow-lg shadow-black/10 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-right-2 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-top-2",e),...t})}function jee({...e}){return c.jsx(x3,{"data-slot":"toast-title",...e})}function Lee({className:e,...t}){return c.jsx(S3,{"data-slot":"toast-viewport",className:H("fixed right-4 top-4 z-50 flex max-h-screen w-[min(calc(100vw-2rem),22rem)] flex-col gap-2 outline-none",e),...t})}function Fee({copyStatus:e,screenshotStatus:t,persistenceStatus:n,motionErrorStatus:r,previewMode:o,onClear:i}){const s=r||e||t||n,a=!!r;return!s||o?null:c.jsxs(kee,{duration:2200,swipeDirection:"right",children:[c.jsx(Dee,{open:!0,className:a?"border-destructive/40 text-destructive":void 0,onOpenChange:l=>{l||i?.()},children:c.jsx(jee,{children:s})}),c.jsx(Lee,{})]})}const Ho=Nu,ks=n0,fd=uh,zee=.001,Bee=3500;function F_(e,t){return Math.abs(Number(e)-Number(t))<=zee}function Iy(e){const t=String(e?.type||"").trim().toLowerCase();return t==="continuous"||t==="revolute"}function Vee(e){return Iy(e)?"deg":"m"}function dS(e,t){const n=Iy(t)?10:1e4,r=Math.round(Number(e)*n)/n,o=Number.isFinite(r)?r:0;return Iy(t)?`${o}°`:`${o} m`}function fS(e,t="0"){const n=Number(e);if(!Number.isFinite(n))return t;const r=Math.round(n*1e3)/1e3;return String(Object.is(r,-0)?0:r)}function mS(e){const t=Number(e);if(!Number.isFinite(t))return"";const n=Math.round(t*1e4)/1e4;return String(Object.is(n,-0)?0:n)}function $ee(e,t){return!Array.isArray(e)||!Array.isArray(t)||e.length<3||t.length<3?!1:[0,1,2].every(n=>Math.abs(Number(e[n])-Number(t[n]))<=5e-4)}function nb(e,t,n,r){const o=Number.isFinite(Number(e))?Number(e):r;return Math.min(Math.max(o,t),Math.max(t,n))}const Gee=f.memo(function({joint:t,valueDeg:n,onValueChange:r}){const o=String(t?.name||"").trim(),i=Number.isFinite(Number(t?.minValueDeg))?Number(t.minValueDeg):-180,s=Number.isFinite(Number(t?.maxValueDeg))?Number(t.maxValueDeg):180,a=nb(n,i,s,0),l=Vee(t),u=Iy(t)?1:.001,d=f.useRef(0),m=f.useRef(a),p=f.useRef(a),g=f.useRef(!1),x=f.useRef(0),[y,S]=f.useState(a),b=()=>{x.current&&typeof window<"u"&&window.clearTimeout(x.current),x.current=0},I=(R=p.current)=>{b(),g.current=!1;const v=nb(R,i,s,p.current);m.current=v,S(v)},A=R=>{m.current=R,g.current=!0,b(),typeof window<"u"&&(x.current=window.setTimeout(()=>{I()},Bee))};f.useEffect(()=>{if(p.current=a,g.current){F_(a,m.current)&&I(a);return}m.current=a,S(a)},[a]),f.useEffect(()=>()=>{d.current&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(d.current),b()},[]);const N=(R,v={})=>{if(m.current=R,typeof requestAnimationFrame!="function"){r(t,R,v);return}d.current||(d.current=requestAnimationFrame(()=>{d.current=0,r(t,m.current,v)}))},P=(R,v={})=>{const C=nb(R,i,s,y);m.current=C,d.current&&typeof cancelAnimationFrame=="function"&&(cancelAnimationFrame(d.current),d.current=0),S(C),A(C),r(t,C,v)};return c.jsx(Ni,{label:o||"Joint",value:dS(y,t),onValueCommit:R=>{P(ui(R,{fallback:y,min:i,max:s}))},valueInputProps:{ariaLabel:`${o||"Joint"} value in ${l}`},children:c.jsx(_i,{className:H(Us,"min-w-0"),min:i,max:s,step:u,value:[y],onValueChange:R=>{const v=nb(R?.[0],i,s,y);F_(v,m.current)||(S(v),A(v),N(v,{scrub:!0}))},onValueCommit:R=>{P(R?.[0],{scrub:!0})},"aria-label":o||"Joint value",title:`${dS(i,t)} to ${dS(s,t)}`})})}),Uee=f.memo(function({axis:t,value:n,disabled:r,onValueChange:o}){const i=Number.isFinite(Number(n))?Number(n):0,[s,a]=f.useState(()=>mS(i));f.useEffect(()=>{a(mS(i))},[i]);const l=u=>{const d=Number(u),m=Number.isFinite(d)?d:i;a(mS(m)),o?.(m)};return c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:t}),c.jsx(go,{type:"number",step:"0.001",inputMode:"decimal",disabled:r,value:s,onChange:u=>{a(u.target.value)},onFocus:u=>{u.currentTarget.select()},onMouseUp:u=>{u.preventDefault()},onBlur:()=>{l(s)},onKeyDown:u=>{u.key==="Enter"&&u.currentTarget.blur()},className:`${ks} mt-1 text-right`,"aria-label":`Target ${t} coordinate`})]})});function Wo({label:e,value:t}){const n=String(t??"");return c.jsxs("div",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:e}),c.jsx("div",{className:"mt-1 min-h-7 truncate rounded-md border border-border/70 bg-muted/25 px-2 py-1.5 text-[11px] font-medium leading-4 text-foreground",title:n,children:n})]})}function Wee(e,t){return!e||typeof e!="object"?"":t.map(n=>String(e?.[n]||"").trim()).filter(Boolean).join(" / ")}function Tm({title:e,items:t,fields:n}){const r=Array.isArray(t)?t.map(o=>Wee(o,n)).filter(Boolean):[];return r.length?c.jsxs("div",{className:"space-y-1.5 rounded-md border border-border/80 bg-background/40 p-3",children:[c.jsx("span",{className:Ho,children:e}),c.jsxs("div",{className:"space-y-1",children:[r.slice(0,5).map((o,i)=>c.jsx("div",{className:"truncate text-[11px] font-medium leading-4 text-foreground",title:o,children:o},`${e}:${i}`)),r.length>5?c.jsxs("div",{className:"text-xs text-muted-foreground",children:[r.length-5," more"]}):null]})]}):null}function Hee({open:e,title:t="URDF",sourceFormat:n="urdf",showJoints:r=!0,showMotion:o=!0,isDesktop:i,width:s,selectedEntry:a=null,onOpenChange:l,onStartResize:u,joints:d,groupStates:m,activeGroupStateId:p,jointValues:g,onJointValueChange:x,onGroupStateSelect:y,onCopyJointAngles:S,onResetPose:b,motion:I=null,sdf:A=null,fileDownloadAvailable:N=!1,viewerServerInfo:P=null,localFileOpenAvailable:R=!1,fileAccessBusyKey:v="",onOpenFileAsset:C,suppressDynamicMetadataStatus:T=!1,statusItems:k=[],themeSections:z=null,openSectionIds:Y=[],onOpenSectionIdsChange:K}){const J=String(n||"").trim().toLowerCase()==="sdf",G=Array.isArray(d)?d:[],Q=Array.isArray(m)?m:[],D=A?.info&&typeof A.info=="object"?A.info:{},$=D.staticMetadata&&typeof D.staticMetadata=="object"?D.staticMetadata:{},ie=Array.isArray($.includes)?$.includes:[],W=Array.isArray($.plugins)?$.plugins:[],Z=Array.isArray($.sensors)?$.sensors:[],Ee=Array.isArray($.lights)?$.lights:[],re=Array.isArray($.physics)?$.physics:[],be=Number.isFinite(Number($.nestedModelCount))?Number($.nestedModelCount):0,_e=!!(ie.length||W.length||Z.length||Ee.length||re.length),Ie=Array.isArray(I?.endEffectors)?I.endEffectors:[],oe=Array.isArray(I?.planningGroups)?I.planningGroups:[],me=Array.isArray(I?.targetFrames)?I.targetFrames:[],se=o&&I?.serverLive===!0&&Ie.length>0,Ae=String(I?.activeEndEffectorName||Ie[0]?.name||"").trim(),we=String(I?.activePlanningGroupName||oe[0]?.name||"").trim(),ct=String(I?.activeTargetFrameName||me[0]||"").trim(),ut=Array.isArray(I?.targetPosition)?I.targetPosition:[0,0,0],Tt=Array.isArray(I?.currentPosition)?I.currentPosition:null,Ve=I?.moveit2&&typeof I.moveit2=="object"?I.moveit2:{},St=!!I?.solving,wt=I?.actionsEnabled!==!1,Vn=I?.serverLive?"connected":"offline",De=!!I?.selectPoseActive,xe=Tt?$ee(ut,Tt):!0,yt=Q.some(Re=>String(Re?.id||"").trim()===p)?p:"__custom__",Te=Q.find(Re=>String(Re?.id||"").trim()===yt),rt=yt==="__custom__"?"custom":String(Te?.label||Te?.name||yt);return c.jsx(xf,{open:e,title:t,isDesktop:i,width:s,onOpenChange:l,onStartResize:u,children:c.jsxs(yf,{type:"multiple",value:Y,onValueChange:K,children:[c.jsx(wf,{items:k}),J?c.jsx(ci,{value:"sdf",title:"SDF",children:c.jsxs("div",{children:[c.jsx(bo,{title:"Document",contentClassName:"px-3",children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsx(Wo,{label:"Version",value:String(D.version||"unknown")}),c.jsx(Wo,{label:"Document",value:String(D.documentKind||"model")}),D.worldName?c.jsx(Wo,{label:"World",value:String(D.worldName)}):null,c.jsx(Wo,{label:"Frame mode",value:D.nativeFrameSemantics?"native":"compat"}),c.jsx(Wo,{label:"Root link",value:String(D.rootLink||"")}),c.jsx(Wo,{label:"Model",value:String(D.modelName||t||"model")})]})}),c.jsx(bo,{title:"Counts",contentClassName:"px-3",children:c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsx(Wo,{label:"Links",value:String(D.linkCount??G.length)}),c.jsx(Wo,{label:"Joints",value:String(D.jointCount??d?.length??0)}),c.jsx(Wo,{label:"Frames",value:String(D.frameCount??0)}),c.jsx(Wo,{label:"Includes",value:String(ie.length)}),c.jsx(Wo,{label:"Plugins",value:String(W.length)}),c.jsx(Wo,{label:"Sensors",value:String(Z.length)}),c.jsx(Wo,{label:"Lights",value:String(Ee.length)}),c.jsx(Wo,{label:"Physics",value:String(re.length)}),c.jsx(Wo,{label:"Nested models",value:fS(be)}),c.jsx(Wo,{label:"Unsupported geom.",value:`${fS(D.unsupportedVisualCount)} / ${fS(D.unsupportedCollisionCount)}`})]})}),_e?c.jsxs(bo,{title:"Metadata",contentClassName:"px-3",children:[c.jsx(Tm,{title:"Includes",items:ie,fields:["name","uri"]}),c.jsx(Tm,{title:"Plugins",items:W,fields:["name","filename"]}),c.jsx(Tm,{title:"Sensors",items:Z,fields:["name","type"]}),c.jsx(Tm,{title:"Lights",items:Ee,fields:["name","type"]}),c.jsx(Tm,{title:"Physics",items:re,fields:["name","type","default"]})]}):null]})}):null,se?c.jsx(ci,{value:"motion",title:"MoveIt2",children:c.jsxs("div",{children:[c.jsx(bo,{title:"Status",children:c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"SRDF"}),c.jsx(go,{value:I?.srdf?.srdf||I?.srdf?.srdfHash||"linked",readOnly:!0,disabled:!0,className:`${ks} mt-1`,"aria-label":"SRDF status"})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"MoveIt2 server"}),c.jsx(go,{value:Vn,readOnly:!0,disabled:!0,className:`${ks} mt-1`,"aria-label":"MoveIt2 server status"})]})]})})}),c.jsxs(bo,{title:"Target",children:[c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Planning group"}),c.jsxs(wa,{value:we,disabled:St||oe.length<=1,onValueChange:Re=>{I?.onMoveIt2SettingChange?.("activePlanningGroupName",Re)},children:[c.jsx(va,{size:"sm",className:"mt-1 h-7 !text-[11px]",children:c.jsx(ac,{placeholder:"Select group"})}),c.jsx(Ca,{children:oe.map(Re=>{const Fe=String(Re?.name||"").trim();return Fe?c.jsx(Ma,{value:Fe,children:Fe},Fe):null})})]})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"End effector"}),c.jsxs(wa,{value:Ae,disabled:St||Ie.length<=1,onValueChange:Re=>{I?.onEndEffectorChange?.(Re)},children:[c.jsx(va,{size:"sm",className:"mt-1 h-7 !text-[11px]",children:c.jsx(ac,{placeholder:"Select end effector"})}),c.jsx(Ca,{children:Ie.map(Re=>{const Fe=String(Re?.name||"").trim();return Fe?c.jsx(Ma,{value:Fe,children:Fe},Fe):null})})]})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Target frame"}),c.jsxs(wa,{value:ct,disabled:St||me.length<=1,onValueChange:Re=>{I?.onMoveIt2SettingChange?.("targetFrame",Re)},children:[c.jsx(va,{size:"sm",className:"mt-1 h-7 !text-[11px]",children:c.jsx(ac,{placeholder:"Select frame"})}),c.jsx(Ca,{children:me.map(Re=>{const Fe=String(Re||"").trim();return Fe?c.jsx(Ma,{value:Fe,children:Fe},Fe):null})})]})]})]})}),c.jsx(cn,{children:c.jsx("div",{className:"grid grid-cols-3 gap-2",children:["X","Y","Z"].map((Re,Fe)=>c.jsx(Uee,{axis:Re,value:ut[Fe],disabled:St,onValueChange:on=>{I?.onTargetPositionChange?.(Fe,on)}},Re))})})]}),c.jsx(bo,{title:"Solver",children:c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"IK timeout"}),c.jsx(go,{type:"number",step:"0.01",min:"0.001",value:Ve.ikTimeout??.05,disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("ikTimeout",Re.target.value),className:`${ks} mt-1 text-right`})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"IK attempts"}),c.jsx(go,{type:"number",step:"1",min:"1",value:Ve.ikAttempts??1,disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("ikAttempts",Re.target.value),className:`${ks} mt-1 text-right`})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Tolerance"}),c.jsx(go,{type:"number",step:"0.001",min:"0.0001",value:Ve.ikTolerance??.002,disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("ikTolerance",Re.target.value),className:`${ks} mt-1 text-right`})]})]})})}),c.jsxs(bo,{title:"Planning",children:[c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Planning pipeline"}),c.jsx(go,{value:Ve.planningPipeline??"ompl",disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("planningPipeline",Re.target.value),className:`${ks} mt-1`})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Planner ID"}),c.jsx(go,{value:Ve.plannerId??"RRTConnectkConfigDefault",disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("plannerId",Re.target.value),className:`${ks} mt-1`})]})]})}),c.jsx(cn,{children:c.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Plan time"}),c.jsx(go,{type:"number",step:"0.1",min:"0.1",value:Ve.planningTime??1,disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("planningTime",Re.target.value),className:`${ks} mt-1 text-right`})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Velocity"}),c.jsx(go,{type:"number",step:"0.05",min:"0.01",max:"1",value:Ve.maxVelocityScalingFactor??1,disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("maxVelocityScalingFactor",Re.target.value),className:`${ks} mt-1 text-right`})]}),c.jsxs("label",{className:"block min-w-0",children:[c.jsx("span",{className:Ho,children:"Acceleration"}),c.jsx(go,{type:"number",step:"0.05",min:"0.01",max:"1",value:Ve.maxAccelerationScalingFactor??1,disabled:St,onChange:Re=>I?.onMoveIt2SettingChange?.("maxAccelerationScalingFactor",Re.target.value),className:`${ks} mt-1 text-right`})]})]})})]}),c.jsx(bo,{title:"Actions",children:c.jsx(cn,{children:c.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[c.jsx(Qe,{type:"button",variant:De?"secondary":"outline",size:"sm",className:fd,disabled:St||!wt,onClick:()=>{if(De){I?.onCancelSelectPose?.();return}I?.onSelectPose?.()},"aria-pressed":De,children:c.jsx("span",{children:"Select Pose"})}),xe?null:c.jsx(Qe,{type:"button",variant:"outline",size:"sm",className:fd,disabled:St,onClick:()=>{I?.onUseCurrentPosition?.()},children:c.jsx("span",{children:"Reset"})}),c.jsx(Qe,{type:"button",variant:"default",size:"sm",className:fd,disabled:St||!wt||xe,onClick:()=>{I?.onSolve?.()},children:c.jsx("span",{children:St?"Solving...":"Solve pose"})}),c.jsx(Qe,{type:"button",variant:"default",size:"sm",className:fd,disabled:St||!wt||xe,onClick:()=>{I?.onPlan?.()},children:c.jsx("span",{children:St?"Planning...":"Plan to pose"})})]})})})]})}):null,r?c.jsx(ci,{value:"joints",title:"Joints",children:G.length?c.jsxs(c.Fragment,{children:[c.jsxs(bo,{title:"Controls",children:[Q.length?c.jsx(cn,{label:"Group state",children:c.jsxs(wa,{value:yt,onValueChange:Re=>{if(Re==="__custom__")return;const Fe=Q.find(on=>String(on?.id||"").trim()===Re);Fe&&y?.(Fe)},children:[c.jsx(va,{size:"sm",className:"h-7 !text-[11px]",children:c.jsx("span",{className:"truncate",children:rt})}),c.jsx(Ca,{children:Q.map(Re=>{const Fe=String(Re?.id||"").trim(),on=String(Re?.label||Re?.name||"").trim()||"State";return c.jsx(Ma,{value:Fe,children:on},Fe)})})]})}):null,c.jsx(cn,{children:c.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:fd,onClick:b,children:[c.jsx(ws,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:"Reset pose"})]}),c.jsxs(Qe,{type:"button",variant:"outline",size:"sm",className:fd,onClick:()=>{S?.()},children:[c.jsx(vu,{className:"h-3.5 w-3.5",strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{children:J?"Copy values":"Copy angles"})]})]})})]}),c.jsx(bo,{title:"Values",children:G.map(Re=>c.jsx(Gee,{joint:Re,valueDeg:g?.[Re.name]??Re?.defaultValueDeg??0,onValueChange:x},Re.name))})]}):c.jsx("p",{className:"px-3 py-2 text-xs text-muted-foreground",children:"No movable joints are available."})}):null,z,c.jsx(Ef,{entry:a,fileDownloadAvailable:N,viewerServerInfo:P,localFileOpenAvailable:R,fileAccessBusyKey:v,onOpenFileAsset:C,suppressDynamicStatus:T})]})})}function Kee({command:e}){const t=String(e||"").trim(),[n,r]=f.useState(!1),[o,i]=f.useState("");if(f.useEffect(()=>{r(!1),i("")},[t]),f.useEffect(()=>{if(!n)return;const a=globalThis.setTimeout(()=>r(!1),1600);return()=>globalThis.clearTimeout(a)},[n]),!t)return null;async function s(){try{await ps(t),r(!0),i("")}catch(a){r(!1),i(a instanceof Error?a.message:"Copy failed")}}return c.jsxs("div",{className:"mt-3 min-w-0 max-w-full",children:[c.jsxs("div",{className:"flex w-full min-w-0 max-w-full items-center gap-2 rounded-md bg-muted px-2.5 py-2",children:[c.jsx("code",{className:"block min-w-0 flex-1 truncate text-xs leading-5 text-foreground",title:t,children:t}),c.jsx(Qe,{type:"button",variant:"ghost",size:"icon-xs",className:"shrink-0 text-muted-foreground hover:text-foreground",onClick:s,"aria-label":n?"Copied rebuild command":"Copy rebuild command",title:n?"Copied":"Copy rebuild command",children:n?c.jsx(mu,{className:"size-3.5","aria-hidden":"true"}):c.jsx(vu,{className:"size-3.5","aria-hidden":"true"})})]}),o?c.jsx("p",{className:"mt-1 text-xs text-destructive",children:o}):null]})}function Xee({viewerAlertOpen:e,viewerAlert:t,previewMode:n,setViewerAlertOpen:r}){if(!t||n)return null;const o=t.severity==="warning",i=!!t.compact;return c.jsx(Ak,{open:e,onOpenChange:r,children:c.jsxs(Nk,{className:i?"max-w-sm":"max-w-md",children:[c.jsxs(_k,{children:[c.jsx(Ls,{variant:o?"warning":"destructive",className:"mb-1",children:o?"Warning":"Error"}),c.jsx(Rk,{children:t.title}),c.jsxs(Pk,{className:i?"leading-5 whitespace-pre-line":"space-y-3 leading-6",children:[c.jsx("span",{className:"block",children:t.message}),!i&&t.resolution?c.jsx("span",{className:"block text-muted-foreground/80",children:t.resolution}):null]})]}),c.jsx(Kee,{command:t.command}),c.jsx(Tk,{children:c.jsx(Ok,{"aria-label":"Close alert dialog",children:"Close"})})]})})}const nD=Object.freeze(["Accomplishing","Actioning","Actualizing","Architecting","Baking","Beaming","Beboppin'","Befuddling","Billowing","Blanching","Bloviating","Boogieing","Boondoggling","Booping","Bootstrapping","Brewing","Bunning","Burrowing","Calculating","Canoodling","Caramelizing","Cascading","Catapulting","Cerebrating","Channeling","Channelling","Choreographing","Churning","Coalescing","Cogitating","Combobulating","Composing","Computing","Concocting","Considering","Contemplating","Cooking","Crafting","Creating","Crunching","Crystallizing","Cultivating","Deciphering","Deliberating","Determining","Dilly-dallying","Discombobulating","Doing","Doodling","Drizzling","Ebbing","Effecting","Elucidating","Embellishing","Enchanting","Envisioning","Evaporating","Fermenting","Fiddle-faddling","Finagling","Flambéing","Flibbertigibbeting","Flowing","Flummoxing","Fluttering","Forging","Forming","Frolicking","Frosting","Gallivanting","Galloping","Garnishing","Generating","Gesticulating","Germinating","Gitifying","Grooving","Gusting","Harmonizing","Hashing","Hatching","Herding","Honking","Hullaballooing","Hyperspacing","Ideating","Imagining","Improvising","Incubating","Inferring","Infusing","Ionizing","Jitterbugging","Julienning","Kneading","Leavening","Levitating","Lollygagging","Manifesting","Marinating","Meandering","Metamorphosing","Misting","Moonwalking","Moseying","Mulling","Mustering","Musing","Nebulizing","Nesting","Newspapering","Noodling","Nucleating","Orbiting","Orchestrating","Osmosing","Perambulating","Percolating","Perusing","Philosophising","Photosynthesizing","Pollinating","Pondering","Pontificating","Pouncing","Precipitating","Prestidigitating","Processing","Proofing","Propagating","Puttering","Puzzling","Quantumizing","Razzle-dazzling","Razzmatazzing","Recombobulating","Reticulating","Roosting","Ruminating","Sautéing","Scampering","Schlepping","Scurrying","Seasoning","Shenaniganing","Shimmying","Simmering","Skedaddling","Sketching","Slithering","Smooshing","Sock-hopping","Spelunking","Spinning","Sprouting","Stewing","Sublimating","Swirling","Swooping","Symbioting","Synthesizing","Tempering","Thinking","Thundering","Tinkering","Tomfoolering","Topsy-turvying","Transfiguring","Transmuting","Twisting","Undulating","Unfurling","Unravelling","Vibing","Waddling","Wandering","Warping","Whatchamacalliting","Whirlpooling","Whirring","Whisking","Wibbling","Working","Wrangling","Zesting","Zigzagging"]);function z_(){const e=[...nD];for(let t=e.length-1;t>0;t-=1){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e}function Yee({viewerLoading:e,previewMode:t}){const[n,r]=f.useState(()=>z_()),[o,i]=f.useState(0),[s,a]=f.useState(0),[l,u]=f.useState(0),d=["|","/","-","\\"],m=["",".","..","..."];if(f.useEffect(()=>{if(!e||t)return;const y=z_();r(y),i(0),a(0),u(0);const S=window.setInterval(()=>{i(A=>(A+1)%y.length)},900),b=window.setInterval(()=>{a(A=>(A+1)%d.length)},90),I=window.setInterval(()=>{u(A=>(A+1)%m.length)},360);return()=>{window.clearInterval(S),window.clearInterval(b),window.clearInterval(I)}},[t,e]),!e||t)return null;const p=n[o]||nD[0],g=d[s],x=m[l];return c.jsxs("div",{className:"pointer-events-none absolute inset-0 z-20 overflow-hidden",children:[c.jsx("div",{className:"cad-loading-overlay absolute inset-0"}),c.jsx("div",{className:"absolute inset-0 flex items-center justify-center px-4",children:c.jsxs("div",{role:"status","aria-live":"polite",className:"cad-loading-ascii relative z-10 max-w-[min(90vw,38rem)] text-center font-mono text-sm text-popover-foreground",children:[c.jsx("span",{className:"sr-only",children:p}),c.jsxs("span",{className:"inline-flex w-[24ch] items-start justify-start text-left sm:w-[26ch]",children:[c.jsx("span",{className:"inline-block w-[2ch]",children:g}),c.jsx("span",{className:"inline-block w-[1ch]",children:" "}),c.jsx("span",{children:p}),c.jsx("span",{className:"inline-block w-[3ch]",children:x})]})]})})]})}const qee="w-[min(15rem,calc(100vw-2rem))]";function Zee({className:e,children:t}){return c.jsx("div",{className:H("cad-glass-surface pointer-events-auto flex min-h-0 flex-col overflow-hidden rounded-md border border-sidebar-border text-sidebar-foreground shadow-sm",e),children:t})}function ga({label:e,active:t=!1,tooltipSide:n="bottom",className:r,children:o,...i}){return c.jsxs(KE,{children:[c.jsx(XE,{asChild:!0,children:c.jsx(Qe,{type:"button",variant:t?"secondary":"ghost",size:"icon-xs",className:H("size-6 rounded-sm text-sidebar-foreground/70 shadow-none transition hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 focus-visible:ring-ring/45 data-[variant=secondary]:bg-sidebar-accent data-[variant=secondary]:text-sidebar-accent-foreground data-[variant=secondary]:hover:bg-sidebar-accent",r),"aria-label":e,...i,children:o})}),c.jsx(YE,{side:n,sideOffset:6,children:e})]})}function Jee({className:e,layout:t="wrap",drawingToolOptions:n,drawingTool:r,handleSelectDrawingTool:o,handleUndoDrawing:i,handleRedoDrawing:s,handleClearDrawings:a,canUndoDrawing:l,canRedoDrawing:u,drawingStrokes:d}){const m=i,p=s,g=a,x=l,y=u,S=d.length,b=t==="scroll",I=c.jsxs("div",{className:H("flex gap-1",b?"w-max min-w-full flex-nowrap":"flex-wrap"),children:[n.map(({id:A,label:N,Icon:P})=>{const R=r===A;return c.jsx(ga,{label:N,active:R,"aria-pressed":R,onClick:()=>o(A),children:c.jsx(P,{className:"size-3.5",strokeWidth:2,"aria-hidden":"true"})},A)}),c.jsx(ga,{label:"Undo",onClick:m,disabled:!x,children:c.jsx(k3,{className:"size-3.5",strokeWidth:2,"aria-hidden":"true"})}),c.jsx(ga,{label:"Redo",onClick:p,disabled:!y,children:c.jsx(D3,{className:"size-3.5",strokeWidth:2,"aria-hidden":"true"})}),c.jsx(ga,{label:"Clear all",onClick:g,disabled:!S,children:c.jsx(sR,{className:"size-3.5",strokeWidth:2,"aria-hidden":"true"})})]});return c.jsx(Zee,{className:H("p-1.5",e),children:c.jsx(By,{delayDuration:250,children:b?c.jsx(ch,{className:"min-w-0 max-w-full",type:"auto",scrollbars:"horizontal",children:I}):I})})}const aE=Object.freeze([Object.freeze({value:yo.ORTHOGRAPHIC,label:"Orthographic projection",title:"Switch to orthographic projection",Icon:jk}),Object.freeze({value:yo.PERSPECTIVE,label:"Perspective projection",title:"Switch to perspective projection",Icon:xv})]);function Qee(e){const t=ul(e);return aE.find(n=>n.value===t)||aE[0]}function B_(e){return String(e?.label||"").replace(/\s+projection$/i,"")||"Perspective"}function ete({displayMode:e,onDisplayModeChange:t,projection:n,onProjectionChange:r,open:o=!1,onOpenChange:i,triggerClassName:s,iconClassName:a="size-3",contentAlign:l="start",contentSide:u="bottom",contentSideOffset:d=6}){const m=typeof t=="function",p=typeof r=="function",g=Dk(e),x=Qee(n),y=x.Icon||xv,S=`Display and projection: ${g?.label||"Solid"}, ${B_(x)}`;return c.jsxs(hf,{open:o,onOpenChange:i,children:[c.jsx(gf,{asChild:!0,children:c.jsxs("button",{type:"button","aria-label":S,className:s,onPointerDown:b=>{b.stopPropagation()},children:[c.jsx(y,{className:a,strokeWidth:2,"aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:S})]})}),c.jsxs(bf,{align:l,side:u,sideOffset:d,className:"w-44",children:[p?c.jsxs(c.Fragment,{children:[c.jsx(T1,{className:"px-2 py-1.5 text-xs text-muted-foreground",children:"Projection"}),aE.map(b=>{const I=b.Icon,A=x.value===b.value;return c.jsxs(Yo,{className:"text-xs",onSelect:()=>{r?.(b.value)},children:[c.jsx(I,{className:"size-3 text-muted-foreground",strokeWidth:2,"aria-hidden":"true"}),B_(b),A?c.jsx(mu,{className:"ml-auto size-3.5 text-popover-foreground",strokeWidth:2,"aria-hidden":"true"}):c.jsx("span",{className:"ml-auto size-3.5","aria-hidden":"true"})]},b.value)})]}):null,m&&p?c.jsx(nu,{}):null,m?c.jsxs(c.Fragment,{children:[c.jsx(T1,{className:"px-2 py-1.5 text-xs text-muted-foreground",children:"Display"}),Cy.map(b=>{const I=g.value===b.value;return c.jsxs(Yo,{className:"text-xs",onSelect:()=>{t?.(b.value)},children:[b.label,I?c.jsx(mu,{className:"ml-auto size-3.5 text-popover-foreground",strokeWidth:2,"aria-hidden":"true"}):c.jsx("span",{className:"ml-auto size-3.5","aria-hidden":"true"})]},b.value)})]}):null]})]})}const tte="cad-glass-surface border border-sidebar-border text-sidebar-foreground shadow-sm",nte="grid size-6 shrink-0 place-items-center rounded-sm text-sidebar-foreground/70 shadow-none transition hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/45 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground";function rte({renderFormat:e,floatingCadToolbarPosition:t,selectionToolActive:n,referenceSelectionPending:r=!1,referenceSelectionUnavailable:o=!1,referenceSelectionDeferred:i=!1,urdfPosePickerAvailable:s=!1,urdfPosePickerActive:a=!1,handleToggleUrdfPosePicker:l,stepAnimationAvailable:u=!1,stepAnimationPlaying:d=!1,stepAnimationDisabled:m=!1,handleStepAnimationPlayToggle:p,drawToolActive:g,handleSelectTabToolMode:x,displayMode:y,onDisplayModeChange:S,projection:b,onProjectionChange:I,viewerLoading:A,selectedMeshData:N,selectedDxfData:P,selectedImplicitModel:R,drawingToolOptions:v,drawingTool:C,handleSelectDrawingTool:T,handleUndoDrawing:k,handleRedoDrawing:z,handleClearDrawings:Y,canUndoDrawing:K,canRedoDrawing:J,drawingStrokes:G,handleEnterPreviewMode:Q,handleScreenshotCopy:D}){const[$,ie]=f.useState(!1),W=e===B.DXF,Z=e===B.IMPLICIT,Ee=e===B.URDF,re=Hi(e),be=df(e),_e=Z?!!R:W?!!P:!!N,Ie=A||!_e,oe=A||!N||r||o||i,me=A||!N||!s,se=r?"Preparing selection":"Select",Ae=e===B.STEP&&u,we=A||!N||m,ct=d?"Pause":"Play",ut=e===B.STEP&&typeof S=="function"&&typeof I=="function";return c.jsxs("div",{className:"absolute z-20 flex flex-col items-end gap-1",style:t,children:[c.jsx(By,{delayDuration:250,children:c.jsxs("div",{className:`pointer-events-auto inline-flex h-8 w-fit items-center gap-0.5 self-end rounded-md p-1 ${tte}`,children:[!W&&!Z&&!re&&!be?c.jsxs(c.Fragment,{children:[c.jsx(ga,{label:se,active:i?!1:n,onClick:()=>x("references"),disabled:oe,"aria-pressed":i?!1:n,children:c.jsx(j3,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})}),c.jsx(ga,{label:"Draw",active:g,onClick:()=>x("draw"),disabled:A||!N,"aria-pressed":g,children:c.jsx(uR,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})}),ut?c.jsx(ete,{displayMode:y,onDisplayModeChange:S,projection:b,onProjectionChange:I,open:$,onOpenChange:ie,triggerClassName:nte,contentAlign:"end",contentSide:"bottom",contentSideOffset:6}):null,Ae?c.jsx(ga,{label:ct,active:d,onClick:p,disabled:we,"aria-pressed":d,children:d?c.jsx(VE,{className:"size-3",strokeWidth:2,"aria-hidden":"true"}):c.jsx($E,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})}):null]}):null,!W&&Ee?c.jsx(ga,{label:"Select Pose",active:a,onClick:l,disabled:me,"aria-pressed":a,children:c.jsx(L3,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})}):null,W?null:c.jsx(ga,{label:"Orbit",onClick:Q,disabled:A||!_e,children:c.jsx(F3,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})}),c.jsx(ga,{label:"Copy screenshot",onClick:()=>{D()},disabled:Ie,children:c.jsx(z3,{className:"size-3",strokeWidth:2,"aria-hidden":"true"})})]})}),!W&&!be&&g?c.jsx(Jee,{className:qee,drawingToolOptions:v,drawingTool:C,handleSelectDrawingTool:T,handleUndoDrawing:k,handleRedoDrawing:z,handleClearDrawings:Y,canUndoDrawing:K,canRedoDrawing:J,drawingStrokes:G}):null]})}function ote({previewMode:e,selectedEntry:t,...n}){return e||!t?null:c.jsx(rte,{...n})}function ite({...e}){return c.jsx("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...e})}function V_({className:e,...t}){return c.jsx("ol",{"data-slot":"breadcrumb-list",className:H("flex flex-wrap items-center gap-1.5 text-sm break-words text-muted-foreground sm:gap-2.5",e),...t})}function $_({className:e,...t}){return c.jsx("li",{"data-slot":"breadcrumb-item",className:H("inline-flex items-center gap-1.5",e),...t})}function ste({children:e,className:t,...n}){return c.jsx("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:H("[&>svg]:size-3.5",t),...n,children:e??c.jsx(Vd,{})})}const vv="system",yu="light",qo="dark",Ay=vv,xu="cad-viewer:theme",Cp="cad-viewer:color-scheme",ate=Object.freeze({"studio-light":yu,ivory:yu,graphite:qo,blueprint:qo,solarized:qo,terminal:qo,"candy-core":qo}),lte=Object.freeze([{id:vv,label:"System"},{id:yu,label:"Light"},{id:qo,label:"Dark"}]),cte=Object.freeze(Object.fromEntries(lte.map(e=>[e.id,e])));function hh(e){const t=String(e||"").trim().toLowerCase(),n=ate[t]||t;return cte[n]?n:Ay}function rD(e,{prefersDark:t=!1}={}){const n=hh(e);return n===vv?t?qo:yu:n}function oD(){if(typeof window>"u")return null;try{return window.localStorage||null}catch{return null}}function G_(e=oD()){if(!e)return Ay;try{return hh(e.getItem(Cp))}catch{return Ay}}function ute(e,t={}){const n=t.storage||oD();if(!n)return!0;const r=hh(e);try{return r===Ay?n.removeItem(Cp):n.setItem(Cp,r),!0}catch(o){return typeof t.onWriteError=="function"&&t.onWriteError({key:Cp,error:o}),!1}}function dte(e,t=document.documentElement,{prefersDark:n=!1}={}){if(!t)return;const r=hh(e),o=rD(r,{prefersDark:n});t.dataset.themePreference=r,t.dataset.theme=o,t.classList.toggle("dark",o===qo),t.style.colorScheme=o}function fte(e){return!Array.isArray(e)||e.length<=4?(Array.isArray(e)?e:[]).map(t=>({type:"node",node:t})):[{type:"node",node:e[0]},{type:"ellipsis",label:"...",nodes:e.slice(1,-2)},...e.slice(-2).map(t=>({type:"node",node:t}))]}function mte(e){return e?.type==="directory"?e?.directory||e?.menuDirectory||null:e?.menuDirectory||null}function iD(e){return String(e?.id||e?.name||"Directory")}function pte(e,t){return!Array.isArray(e)||t<0||t>=e.length?null:t>0?e[t-1]:e[t]||null}function hte({directoryTree:e,selectedEntry:t,selectedFileLabel:n,selectedFileTitle:r}){if(!e)return t?[{type:"entry",label:n,title:r,entry:t,menuDirectory:null}]:[{type:"placeholder",label:n,title:r,menuDirectory:null}];if(!t)return[{type:"placeholder",label:n,title:r,menuDirectory:e}];const o=lv(t),i=Vq(e,o),s=i.map((l,u)=>{const d=String(l?.id||"").trim();return d?{type:"directory",id:d,label:String(l?.name||"Folder"),title:iD(l),directory:l,menuDirectory:pte(i,u)}:null}).filter(Boolean),a=i[i.length-1]||e;return[...s,{type:"entry",label:n,title:r,entry:t,menuDirectory:a}]}const gte="0.3.8",bte={version:gte},U_={};function W_(e){return e==="dxf"?"DXF sheet":e==="urdf"?"URDF sheet":e==="srdf"?"SRDF sheet":e==="sdf"?"SDF sheet":e==="step"?"STEP sheet":e==="implicit"?"Implicit CAD sheet":"file sheet"}function yte(e,t){const n=typeof t=="function"?t(e):e?.kind||"";return String(n||"").trim().toLowerCase()}function xte(e,{entrySourceFormat:t,entryHasMesh:n,entryHasDxf:r,entryHasGcode:o,entryHasUrdf:i,activeGenerationFiles:s=[],activeStepArtifactGenerationFile:a="",stepArtifactGenerationAvailable:l=!0}){const u=yte(e,t),d=typeof r=="function"?r(e):!0,m=typeof o=="function"?o(e):!0,p=typeof i=="function"?i(e):!0,g=typeof n=="function"?n(e):!0;return YO(e,{sourceFormat:u,entryKey:at(e),hasMesh:g,hasDxf:d,hasGcode:m,hasUrdf:p,activeGenerationFiles:s,activeStepArtifactGenerationFile:a,stepArtifactGenerationAvailable:l})}const Ste={[Wt.LOADING]:BE,[Wt.ASSEMBLY]:zE,[Wt.DXF]:FE,[Wt.GCODE]:LE,[Wt.IMPLICIT]:Fy,[Wt.ROBOT]:jE,[Wt.STEP_PART]:sf,[Wt.STL_MESH]:DE,[Wt.THREE_MF_MESH]:Ly,[Wt.GLB_MESH]:kE};function Ete(e,t,n){return Ste[hv(e,{sourceFormat:t,status:n})]||sf}function sD({entry:e,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u=[],activeStepArtifactGenerationFile:d="",stepArtifactGenerationAvailable:m=!0}){const p=at(e),g=p===t,x=typeof r=="function"?r(e):p,y=xte(e,{entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u,activeStepArtifactGenerationFile:d,stepArtifactGenerationAvailable:m}),{sourceFormat:S}=y,b=Ete(e,S,y),I=[x,y.statusLabel,e?.kind,String(e?.file||p)].filter(Boolean).join(" | ");return c.jsxs(Yo,{"data-active":g,className:H("min-w-0 max-w-80 text-xs focus:bg-sidebar-accent focus:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground"),title:I,disabled:!p||typeof n!="function","aria-current":g?"page":void 0,onSelect:()=>{p&&typeof n=="function"&&n(p)},children:[c.jsx(b,{className:H("size-3.5 shrink-0",y.loading&&"animate-spin"),"aria-hidden":"true"}),c.jsx("span",{className:"block min-w-0 flex-1 truncate",children:x})]})}function aD({directory:e,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u=[],activeStepArtifactGenerationFile:d="",stepArtifactGenerationAvailable:m=!0,canRevealFileAssets:p=!1,canCopyFileAssetLinks:g=!1,canCopyFileAssetPaths:x=!1,fileAccessBusyKey:y="",onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onCopyFileAssetReference:A}){const N=o0(e);return N.length?N.map(P=>P.type==="directory"?c.jsx(lD,{directory:P.value,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u,activeStepArtifactGenerationFile:d,stepArtifactGenerationAvailable:m,canRevealFileAssets:p,canCopyFileAssetLinks:g,canCopyFileAssetPaths:x,fileAccessBusyKey:y,onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onCopyFileAssetReference:A},P.key):c.jsx(sD,{entry:P.value,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u,activeStepArtifactGenerationFile:d,stepArtifactGenerationAvailable:m,canRevealFileAssets:p,canCopyFileAssetLinks:g,canCopyFileAssetPaths:x,fileAccessBusyKey:y,onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onCopyFileAssetReference:A},P.key)):c.jsxs(Yo,{disabled:!0,className:"max-w-80 text-xs",children:[c.jsx(dR,{className:"size-3.5 shrink-0","aria-hidden":"true"}),c.jsx("span",{className:"block min-w-0 truncate",children:String(e?.name||"Empty")})]})}function Cv({children:e}){return c.jsx(ch,{className:"max-h-96 w-full",type:"auto",viewportClassName:"max-h-96",children:e})}function lD({directory:e,label:t="",title:n="",selectedKey:r,onSelectEntry:o,sidebarLabelForEntry:i,entrySourceFormat:s,entryHasMesh:a,entryHasDxf:l,entryHasGcode:u,entryHasUrdf:d,activeGenerationFiles:m=[],activeStepArtifactGenerationFile:p="",stepArtifactGenerationAvailable:g=!0,canRevealFileAssets:x=!1,canCopyFileAssetLinks:y=!1,canCopyFileAssetPaths:S=!1,fileAccessBusyKey:b="",onDownloadFileAsset:I,onExportImplicitFile:A,onRevealFileAsset:N,onCopyFileAssetReference:P}){const R=String(t||e?.name||"Folder"),v=String(n||iD(e));return c.jsxs(TO,{children:[c.jsxs(RO,{className:"min-w-0 max-w-80 text-xs",title:v,children:[c.jsx(dR,{className:"size-3.5 shrink-0","aria-hidden":"true"}),c.jsx("span",{className:"block min-w-0 flex-1 truncate",children:R})]}),c.jsx(PO,{className:"w-max max-w-80",children:c.jsx(Cv,{children:c.jsx(aD,{directory:e,selectedKey:r,onSelectEntry:o,sidebarLabelForEntry:i,entrySourceFormat:s,entryHasMesh:a,entryHasDxf:l,entryHasGcode:u,entryHasUrdf:d,activeGenerationFiles:m,activeStepArtifactGenerationFile:p,stepArtifactGenerationAvailable:g,canRevealFileAssets:x,canCopyFileAssetLinks:y,canCopyFileAssetPaths:S,fileAccessBusyKey:b,onDownloadFileAsset:I,onExportImplicitFile:A,onRevealFileAsset:N,onCopyFileAssetReference:P})})})]})}function H_({node:e,current:t,selectedKey:n,onSelectEntry:r,sidebarLabelForEntry:o,entrySourceFormat:i,entryHasMesh:s,entryHasDxf:a,entryHasGcode:l,entryHasUrdf:u,activeGenerationFiles:d=[],activeStepArtifactGenerationFile:m="",stepArtifactGenerationAvailable:p=!0,selectedStepSourceStatus:g=null,canRevealFileAssets:x=!1,canCopyFileAssetLinks:y=!1,canCopyFileAssetPaths:S=!1,fileAccessBusyKey:b="",onDownloadFileAsset:I,onExportImplicitFile:A,onRevealFileAsset:N,onRevealInExplorerView:P,onCopyFileAssetReference:R,filenameLoadActivity:v}){const C=String(e?.label||""),T=String(e?.title||C),k=(e?.type==="directory"||e?.type==="placeholder"||e?.type==="entry")&&e?.menuDirectory||null;if(!(!!k&&o0(k).length>0)){const G=c.jsxs("span",{className:H("inline-flex min-w-0 items-center gap-2 text-xs font-medium",t?"max-w-[min(36rem,55vw)] text-foreground":"max-w-32"),title:T,children:[c.jsx("span",{className:"block min-w-0 truncate",children:C}),t&&e?.type==="entry"?c.jsx(K_,{activity:v}):null]});return e?.type!=="entry"||!e?.entry?G:c.jsx(tE,{entry:e.entry,stepSourceStatus:g,canRevealFileAssets:x,canCopyFileAssetLinks:y,canCopyFileAssetPaths:S,busyKey:b,onDownloadFileAsset:I,onExportImplicitFile:A,onRevealFileAsset:N,onRevealInExplorerView:P,onCopyFileAssetReference:R,children:G})}const Y=c.jsxs("button",{type:"button",className:H("inline-flex min-w-0 items-center gap-2 rounded-sm text-xs font-medium transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",t?"max-w-[min(36rem,55vw)] text-foreground":"max-w-32 text-muted-foreground"),"aria-label":`Browse ${C}`,"aria-current":t?"page":void 0,title:T,onPointerDown:G=>{G.button===1&&G.preventDefault()},children:[c.jsx("span",{className:"block min-w-0 truncate",children:C}),t&&e?.type==="entry"?c.jsx(K_,{activity:v}):null]}),K=c.jsx(gf,{asChild:!0,children:Y}),J=e?.type==="entry"&&e?.entry?c.jsx(tE,{entry:e.entry,stepSourceStatus:g,canRevealFileAssets:x,canCopyFileAssetLinks:y,canCopyFileAssetPaths:S,busyKey:b,onDownloadFileAsset:I,onExportImplicitFile:A,onRevealFileAsset:N,onRevealInExplorerView:P,onCopyFileAssetReference:R,children:K}):K;return c.jsxs(hf,{children:[J,c.jsx(bf,{align:"start",sideOffset:6,className:"w-max max-w-80",children:c.jsx(Cv,{children:c.jsx(aD,{directory:k,selectedKey:n,onSelectEntry:r,sidebarLabelForEntry:o,entrySourceFormat:i,entryHasMesh:s,entryHasDxf:a,entryHasGcode:l,entryHasUrdf:u,activeGenerationFiles:d,activeStepArtifactGenerationFile:m,stepArtifactGenerationAvailable:p,canRevealFileAssets:x,canCopyFileAssetLinks:y,canCopyFileAssetPaths:S,fileAccessBusyKey:b,onDownloadFileAsset:I,onExportImplicitFile:A,onRevealFileAsset:N,onCopyFileAssetReference:R})})})]})}function wte({nodes:e,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u=[],activeStepArtifactGenerationFile:d="",stepArtifactGenerationAvailable:m=!0,canRevealFileAssets:p=!1,canCopyFileAssetLinks:g=!1,canCopyFileAssetPaths:x=!1,fileAccessBusyKey:y="",onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onCopyFileAssetReference:A,title:N}){const P=Array.isArray(e)?e.filter(Boolean):[],R=P.map(v=>v.label).join(" / ")||N;return c.jsxs(hf,{children:[c.jsx(gf,{asChild:!0,children:c.jsx("button",{type:"button",className:"inline-flex h-6 min-w-7 items-center justify-center rounded-md px-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":"Show collapsed path folders",title:R,children:c.jsx("span",{"aria-hidden":"true",children:"..."})})}),c.jsx(bf,{align:"start",sideOffset:6,className:"w-max max-w-80",children:c.jsx(Cv,{children:P.map((v,C)=>{const T=mte(v);return v.type==="directory"&&T?c.jsx(lD,{directory:T,label:v.label,title:v.title,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u,activeStepArtifactGenerationFile:d,stepArtifactGenerationAvailable:m,canRevealFileAssets:p,canCopyFileAssetLinks:g,canCopyFileAssetPaths:x,fileAccessBusyKey:y,onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onCopyFileAssetReference:A},`${v.type}:${v.id}:${C}`):v.type==="entry"&&v.entry?c.jsx(sD,{entry:v.entry,selectedKey:t,onSelectEntry:n,sidebarLabelForEntry:r,entrySourceFormat:o,entryHasMesh:i,entryHasDxf:s,entryHasGcode:a,entryHasUrdf:l,activeGenerationFiles:u,activeStepArtifactGenerationFile:d,stepArtifactGenerationAvailable:m,canRevealFileAssets:p,canCopyFileAssetLinks:g,canCopyFileAssetPaths:x,fileAccessBusyKey:y,onDownloadFileAsset:S,onExportImplicitFile:b,onRevealFileAsset:I,onCopyFileAssetReference:A},`${v.type}:${at(v.entry)}:${C}`):c.jsx(Yo,{disabled:!0,className:"max-w-80 text-xs",children:c.jsx("span",{className:"block min-w-0 truncate",children:v.label})},`${v.type}:${v.label}:${C}`)})})})]})}function K_({activity:e}){const t=String(e?.label||"").trim();if(!e?.loading||!t)return null;const n=String(e?.title||t).trim();return c.jsxs("span",{role:"status","aria-live":"polite",title:n,className:"inline-flex min-w-0 max-w-36 shrink items-center gap-1 rounded-md border border-border/70 bg-sidebar-accent px-1.5 py-0.5 text-[10px] font-medium leading-none text-sidebar-accent-foreground",children:[c.jsx(BE,{className:"size-3 shrink-0 animate-spin","aria-hidden":"true"}),c.jsx("span",{className:"min-w-0 truncate",children:t})]})}function vte(e){return c.jsx("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...e,children:c.jsx("path",{d:"M12 .5C5.65.5.5 5.65.5 12c0 5.09 3.29 9.4 7.86 10.92.58.1.79-.25.79-.56v-2.02c-3.2.7-3.87-1.37-3.87-1.37-.53-1.34-1.29-1.7-1.29-1.7-1.06-.73.08-.71.08-.71 1.17.08 1.79 1.2 1.79 1.2 1.04 1.78 2.73 1.27 3.4.97.1-.75.41-1.27.74-1.56-2.55-.29-5.24-1.28-5.24-5.68 0-1.25.45-2.28 1.2-3.08-.12-.29-.52-1.46.11-3.04 0 0 .98-.31 3.2 1.18A11.13 11.13 0 0 1 12 6.16c.99 0 1.98.13 2.91.39 2.22-1.49 3.2-1.18 3.2-1.18.63 1.58.23 2.75.11 3.04.75.8 1.2 1.83 1.2 3.08 0 4.41-2.69 5.39-5.25 5.67.42.36.79 1.08.79 2.17v3.03c0 .31.21.67.8.56A11.52 11.52 0 0 0 23.5 12C23.5 5.65 18.35.5 12 .5Z"})})}function Cte(e){return c.jsx("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...e,children:c.jsx("path",{d:"M20.32 4.37a19.8 19.8 0 0 0-4.89-1.51.07.07 0 0 0-.07.03c-.21.38-.44.86-.61 1.25a18.27 18.27 0 0 0-5.49 0 12.64 12.64 0 0 0-.62-1.25.08.08 0 0 0-.07-.03 19.74 19.74 0 0 0-4.89 1.51.07.07 0 0 0-.03.03C.53 9.05-.32 13.58.1 18.06a.08.08 0 0 0 .03.06 19.9 19.9 0 0 0 5.99 3.03.08.08 0 0 0 .08-.03c.46-.63.87-1.3 1.23-1.99a.08.08 0 0 0-.04-.11 13.1 13.1 0 0 1-1.87-.89.08.08 0 0 1-.01-.13c.13-.09.25-.19.37-.29a.07.07 0 0 1 .08-.01c3.93 1.79 8.18 1.79 12.06 0a.07.07 0 0 1 .08.01c.12.1.25.2.37.29a.08.08 0 0 1-.01.13 12.3 12.3 0 0 1-1.87.89.08.08 0 0 0-.04.11c.36.7.77 1.36 1.23 1.99a.08.08 0 0 0 .08.03 19.84 19.84 0 0 0 6-3.03.08.08 0 0 0 .03-.05c.5-5.18-.84-9.67-3.55-13.66a.06.06 0 0 0-.02-.04ZM8.02 15.33c-1.18 0-2.16-1.09-2.16-2.42s.96-2.42 2.16-2.42c1.21 0 2.18 1.1 2.16 2.42 0 1.33-.96 2.42-2.16 2.42Zm7.98 0c-1.18 0-2.16-1.09-2.16-2.42s.96-2.42 2.16-2.42c1.21 0 2.18 1.1 2.16 2.42 0 1.33-.95 2.42-2.16 2.42Z"})})}const Rm="size-7",Pm="size-4",Mte="cad-viewer:latest-release:v1:",Ite=360*60*1e3,Ate=250,Nte=700,Xl=Object.freeze({updateAvailable:!1,latestVersion:"",releaseUrl:"",installCommand:bc,latestReleaseNewer:!1});function _te(e){return e===qo?yu:qo}function cD(e){return`${Mte}${e}`}function Tte(e,t=Date.now()){if(!e||typeof window>"u"||!window.localStorage)return null;try{const n=window.localStorage.getItem(cD(e)),r=n?JSON.parse(n):null,o=Number(r?.expiresAt||0),i=String(r?.latestVersion||"").trim(),s=String(r?.releaseUrl||"").trim(),a=String(r?.installCommand||"").trim();return!i||o<=t?null:{latestVersion:i,releaseUrl:s,installCommand:a}}catch{return null}}function Rte(e,t,n=Date.now()){if(!e||typeof window>"u"||!window.localStorage)return;const r=String(t?.latestVersion||"").trim();if(r)try{window.localStorage.setItem(cD(e),JSON.stringify({latestVersion:r,releaseUrl:String(t?.releaseUrl||"").trim(),installCommand:String(t?.installCommand||"").trim(),expiresAt:n+Ite}))}catch{}}function Pte(e,t=""){const n=String(e?.tag_name||"").trim();return n?{latestVersion:n,releaseUrl:String(e?.html_url||t||"").trim(),installCommand:Iq(e?.body,bc)}:null}function pS(e,t){const n=String(t?.latestVersion||"").trim(),r=String(t?.releaseUrl||"").trim(),o=String(t?.installCommand||bc).trim();if(!n)return Xl;const i=vq(e,n);return{updateAvailable:Cq(e,n),latestVersion:n,releaseUrl:r,installCommand:o,latestReleaseNewer:i}}function Ote({currentVersion:e,latestReleaseApiUrl:t,latestReleaseUrl:n,mockLatestVersion:r="",mockLatestReleaseUrl:o=""}){const[i,s]=f.useState(Xl);return f.useEffect(()=>{const a=String(e||"").trim(),l=String(t||"").trim(),u=String(r||"").trim();if(!a){s(Xl);return}if(u){s(pS(a,{latestVersion:u,releaseUrl:String(o||n||"").trim(),installCommand:bc}));return}if(!l||typeof fetch!="function"){s(Xl);return}const d=Tte(l);if(d){s(pS(a,d));return}s(Xl);const m=new AbortController;return fetch(l,{signal:m.signal,headers:{Accept:"application/vnd.github+json"}}).then(p=>{if(!p.ok)throw new Error(`GitHub latest release check failed with ${p.status}`);return p.json()}).then(p=>{if(m.signal.aborted)return;const g=Pte(p,n);if(!g){d||s(Xl);return}Rte(l,g),s(pS(a,g))}).catch(p=>{p?.name!=="AbortError"&&(d||s(Xl))}),()=>{m.abort()}},[e,t,n,o,r]),i}function hS({label:e,version:t,action:n=null}){const r=String(t||"").trim();return r?c.jsxs("div",{className:"flex min-w-0 flex-col items-start gap-1.5 px-0.5 text-left",children:[c.jsx("span",{className:"text-[11px] font-medium leading-none text-muted-foreground",children:e}),c.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[c.jsx("span",{className:"min-w-0 text-left font-mono text-[12px] leading-5 text-foreground tabular-nums",children:r}),n]})]}):null}function kte({version:e,releaseUrl:t,releaseCheck:n=Xl}){const r=String(e||"").trim(),[o,i]=f.useState(""),s=f.useRef(!1);if(!r)return null;const a=!!n?.updateAvailable,l=a?String(n?.releaseUrl||t||"").trim():String(t||"").trim(),u=String(n?.latestVersion||"").trim(),d=!!n?.latestReleaseNewer,m=u&&d,p=m?String(n?.releaseUrl||"").trim():"",g=String(n?.installCommand||bc).trim()||bc,x=!!u&&!d,y=a?"Update CAD Viewer":l?`Open release ${r}`:`Version ${r}`,S=async I=>{if(I.preventDefault(),I.stopPropagation(),!s.current){s.current=!0,globalThis.setTimeout(()=>{s.current=!1},250);try{await ps(g),i("copied"),globalThis.setTimeout(()=>{i("")},1600)}catch{i("failed")}}},b=c.jsx(Qe,{asChild:!!l,variant:a?"default":"ghost",size:"xs",className:H("inline-flex rounded-sm px-2 text-xs font-medium leading-none",a?"h-6 px-2 text-[11px]":"h-7 text-muted-foreground tabular-nums hover:text-sidebar-foreground"),"aria-label":y,children:l?c.jsx("a",{href:l,target:"_blank",rel:"noreferrer",children:c.jsx("span",{className:"inline-flex items-center gap-1",children:a?c.jsx("span",{children:"Update"}):c.jsx("span",{children:r})})}):c.jsx("span",{className:"inline-flex items-center gap-1",children:a?c.jsx("span",{children:"Update"}):c.jsx("span",{children:r})})});return c.jsxs(KE,{delayDuration:a?Ate:Nte,children:[c.jsx(XE,{asChild:!0,children:b}),c.jsx(YE,{side:"bottom",sideOffset:6,className:"cad-glass-popover w-fit max-w-[calc(100vw-1rem)] border border-border bg-popover p-2 text-left text-popover-foreground shadow-lg shadow-black/10",arrowClassName:"bg-popover fill-popover",children:c.jsxs("div",{className:"inline-flex max-w-full flex-col gap-3",children:[m?c.jsxs("div",{className:"grid w-full min-w-0 grid-cols-2 gap-3",children:[c.jsx(hS,{label:"Current Version",version:r}),c.jsx(hS,{label:"Latest Version",version:u,action:p?c.jsx(Qe,{asChild:!0,variant:"default",size:"xs",className:"h-4 !min-h-0 rounded-sm !px-1.5 !py-0 text-[10px] font-medium leading-none","aria-label":`Update CAD Viewer to ${u}`,children:c.jsx("a",{href:p,target:"_blank",rel:"noreferrer",children:"Update"})}):null})]}):c.jsx(hS,{label:"Current Version",version:r}),c.jsxs("div",{className:"flex min-w-0 flex-col gap-1.5",children:[c.jsx("div",{className:"px-0.5 text-[11px] font-medium leading-none text-muted-foreground",children:"Update Command"}),c.jsxs("div",{className:"flex h-8 min-w-0 items-center gap-2 rounded-sm border border-border/60 bg-muted/35 p-1 pl-2",children:[c.jsx("code",{className:"min-w-0 flex-1 whitespace-nowrap font-mono text-[11px] leading-5 text-foreground",children:g}),c.jsx(Qe,{type:"button",variant:"ghost",size:"icon",className:"inline-flex size-6 shrink-0 items-center justify-center rounded-sm border border-border text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50","aria-label":o==="copied"?"Install command copied":"Copy install command",onPointerDown:S,onClick:S,children:o==="copied"?c.jsx(mu,{className:"size-3","aria-hidden":"true"}):c.jsx(vu,{className:"size-3","aria-hidden":"true"})})]})]}),o==="failed"?c.jsx("div",{className:"text-[11px] text-muted-foreground",children:"Copy failed"}):null,x?c.jsxs("div",{className:"flex items-center gap-1.5 px-0.5 text-[11px] font-medium text-muted-foreground",children:[c.jsx(V3,{className:"size-3 text-primary","aria-hidden":"true"}),c.jsx("span",{children:"You are up to date"})]}):null]})})]})}function Dte({previewMode:e,sidebarLabelForEntry:t,directoryTree:n=null,selectedKey:r="",selectedEntry:o,onSelectEntry:i,entrySourceFormat:s,entryHasMesh:a,entryHasDxf:l,entryHasGcode:u,entryHasUrdf:d,activeGenerationFiles:m=[],activeStepArtifactGenerationFile:p="",stepArtifactGenerationAvailable:g=!0,themePresets:x=[],themeSettings:y,themePresetId:S="",resolvedColorSchemeMode:b=yu,onColorSchemePreferenceChange:I,updateThemeSettings:A,handleResetThemeSettings:N,handleSaveCustomThemePreset:P,handleUpdateThemePresetSettings:R,handleDeleteCustomThemePreset:v,handleEditThemePreset:C,handleResetThemePresetToDefault:T,handleRestoreDefaultThemePresets:k,filenameLoadActivity:z=null,selectedStepSourceStatus:Y=null,canRevealFileAssets:K=!1,canCopyFileAssetLinks:J=!1,canCopyFileAssetPaths:G=!1,fileAccessBusyKey:Q="",onDownloadFileAsset:D,onExportImplicitFile:$,onRevealFileAsset:ie,onRevealInExplorerView:W,onCopyFileAssetReference:Z,fileSheetKind:Ee="",fileSheetOpen:re=!1,onToggleFileSheet:be,navigationAvailable:_e=!0}){const Ie=String(bte.version).trim(),oe=xq(U_?.VIEWER_DISCORD_URL),me=JO(U_?.VIEWER_GITHUB_URL),se=Sq(Ie,me),Ae=Eq(me),we=e?"":wq(me),Tt=Ote({currentVersion:Ie,latestReleaseApiUrl:we,latestReleaseUrl:Ae,mockLatestVersion:"",mockLatestReleaseUrl:""});if(e)return null;const Ve=o&&typeof t=="function"?t(o):"Select a file",St=o?String(o.file||o.id||Ve):Ve,wt=_e||!!o,Vn=hte({directoryTree:_e?n:null,selectedEntry:o,selectedFileLabel:Ve,selectedFileTitle:St}),De=fte(Vn),xe=Vn[Vn.length-1]||null,yt="bg-accent text-accent-foreground",Te=!!Ee&&typeof be=="function",rt=re?`Collapse ${W_(Ee)}`:`Expand ${W_(Ee)}`,Re=BG(y),Fe=b===qo?qo:yu,on=_te(Fe),qt=`Browser color mode: ${Fe===qo?"dark":"light"}. Switch to ${on===qo?"dark":"light"} mode.`,sn=Fe===qo?aR:lR,Mn=()=>{typeof I=="function"&&I(on)};return c.jsxs("header",{className:"cad-glass-surface pointer-events-auto flex h-11 shrink-0 items-center gap-2 border-b border-sidebar-border px-2 text-sidebar-foreground",children:[_e?c.jsx(e5,{title:"Toggle CAD Viewer","aria-label":"Toggle CAD Viewer",className:"shrink-0"}):null,wt?c.jsx(ite,{className:"min-w-0 flex-1 overflow-hidden",children:c.jsxs(ch,{className:"h-8 min-w-0 whitespace-nowrap",type:"auto",viewportClassName:"overflow-y-hidden",scrollbars:"horizontal",children:[xe?c.jsx(V_,{className:"flex h-8 min-w-full flex-nowrap gap-1.5 pr-2 text-xs sm:hidden",children:c.jsx($_,{className:"min-w-0",children:c.jsx(H_,{node:xe,current:!0,selectedKey:r,onSelectEntry:i,sidebarLabelForEntry:t,entrySourceFormat:s,entryHasMesh:a,entryHasDxf:l,entryHasGcode:u,entryHasUrdf:d,activeGenerationFiles:m,activeStepArtifactGenerationFile:p,stepArtifactGenerationAvailable:g,selectedStepSourceStatus:Y,canRevealFileAssets:K,canCopyFileAssetLinks:J,canCopyFileAssetPaths:G,fileAccessBusyKey:Q,onDownloadFileAsset:D,onExportImplicitFile:$,onRevealFileAsset:ie,onRevealInExplorerView:W,onCopyFileAssetReference:Z,filenameLoadActivity:z})})}):null,c.jsx(V_,{className:"hidden h-8 min-w-full w-max flex-nowrap gap-1.5 pr-2 text-xs sm:flex sm:gap-1.5",children:De.map((fn,Bt)=>c.jsxs(f.Fragment,{children:[c.jsx($_,{className:"min-w-0",children:fn.type==="ellipsis"?c.jsx(wte,{nodes:fn.nodes,selectedKey:r,onSelectEntry:i,sidebarLabelForEntry:t,entrySourceFormat:s,entryHasMesh:a,entryHasDxf:l,entryHasGcode:u,entryHasUrdf:d,activeGenerationFiles:m,activeStepArtifactGenerationFile:p,stepArtifactGenerationAvailable:g,canRevealFileAssets:K,canCopyFileAssetLinks:J,canCopyFileAssetPaths:G,fileAccessBusyKey:Q,onDownloadFileAsset:D,onExportImplicitFile:$,onRevealFileAsset:ie,onCopyFileAssetReference:Z,title:St}):c.jsx(H_,{node:fn.node,current:Bt===De.length-1,selectedKey:r,onSelectEntry:i,sidebarLabelForEntry:t,entrySourceFormat:s,entryHasMesh:a,entryHasDxf:l,entryHasGcode:u,entryHasUrdf:d,activeGenerationFiles:m,activeStepArtifactGenerationFile:p,stepArtifactGenerationAvailable:g,selectedStepSourceStatus:Y,canRevealFileAssets:K,canCopyFileAssetLinks:J,canCopyFileAssetPaths:G,fileAccessBusyKey:Q,onDownloadFileAsset:D,onExportImplicitFile:$,onRevealFileAsset:ie,onRevealInExplorerView:W,onCopyFileAssetReference:Z,filenameLoadActivity:z})}),Bti?.kind==="assembly",i=>or(i)===B.STEP&&i?.kind!=="assembly",i=>or(i)===B.DXF,i=>or(i)===B.GCODE,i=>or(i)===B.IMPLICIT,i=>Hi(or(i))||i?.kind==="srdf",i=>df(or(i))];for(const i of o){const s=t.find(a=>i(a));Y_(n,r,s)}for(const i of t){if(n.length>=X_)break;Y_(n,r,i)}return n.slice(0,X_)}function Wte({entries:e,onSelectEntry:t,catalogHydrated:n=!1,catalogRefreshing:r=!1,catalogError:o="",directorySelectionActive:i=!1,directoryOptions:s=[],onSelectDirectory:a}){const l=Ute(e),u=$te(s),d=l.length>0,m=u.length>0,p=String(o||"").trim(),g=!n||r&&!d,x=i?"Select a directory":"Select a file";return c.jsx("div",{className:"pointer-events-none absolute inset-0 z-20 flex min-w-0 items-center justify-center px-4 py-6",children:c.jsxs("section",{className:"cad-glass-popover pointer-events-auto w-full max-w-2xl overflow-hidden rounded-md border border-sidebar-border text-popover-foreground shadow-xl shadow-black/10","aria-label":"CAD Viewer home",children:[c.jsx("div",{className:"border-b border-sidebar-border px-5 py-4 sm:px-6",children:c.jsx("h1",{className:"text-lg font-medium leading-6 text-foreground sm:text-xl",children:x})}),c.jsx("div",{className:"divide-y divide-sidebar-border/70",children:i?m?u.map(y=>{const S=Bte(y),b=Vte(y);return c.jsxs(Qe,{type:"button",variant:"ghost",className:"group h-auto w-full justify-start rounded-none px-5 py-3 text-left hover:bg-sidebar-accent/80 focus-visible:ring-inset has-[>svg]:px-5 sm:px-6 sm:has-[>svg]:px-6",onClick:()=>{typeof a=="function"&&a(y.dir)},title:b||S,children:[c.jsx(LS,{className:"size-4 shrink-0 text-muted-foreground group-hover:text-foreground","aria-hidden":"true"}),c.jsxs("span",{className:"min-w-0 flex-1",children:[c.jsx("span",{className:"block min-w-0 truncate text-sm font-medium text-foreground",children:S}),b?c.jsx("span",{className:"mt-0.5 block min-w-0 truncate text-[11px] font-normal text-muted-foreground",children:b}):null]}),c.jsx("span",{className:H("shrink-0 rounded-md border border-sidebar-border px-1.5 py-0.5 text-[10px] font-semibold uppercase leading-none text-muted-foreground","max-sm:hidden"),children:"Directory"}),c.jsx(Vd,{className:"size-4 shrink-0 text-muted-foreground transition-transform group-hover:translate-x-0.5 group-hover:text-foreground","aria-hidden":"true"})]},y.rootPath||y.dir)}):c.jsx("p",{className:"px-5 py-5 text-sm text-muted-foreground sm:px-6",children:"No active directories found."}):d?l.map(y=>{const S=at(y),b=or(y),I=Lte(y,b),A=dl(y)||S,N=zte(y),P=Fte(y,b);return c.jsxs(Qe,{type:"button",variant:"ghost",className:"group h-auto w-full justify-start rounded-none px-5 py-3 text-left hover:bg-sidebar-accent/80 focus-visible:ring-inset has-[>svg]:px-5 sm:px-6 sm:has-[>svg]:px-6",onClick:()=>{S&&typeof t=="function"&&t(S)},title:N||A,children:[c.jsx(I,{className:"size-4 shrink-0 text-muted-foreground group-hover:text-foreground","aria-hidden":"true"}),c.jsxs("span",{className:"min-w-0 flex-1",children:[c.jsx("span",{className:"block min-w-0 truncate text-sm font-medium text-foreground",children:A}),N?c.jsx("span",{className:"mt-0.5 block min-w-0 truncate text-[11px] font-normal text-muted-foreground",children:N}):null]}),c.jsx("span",{className:H("shrink-0 rounded-md border border-sidebar-border px-1.5 py-0.5 text-[10px] font-semibold uppercase leading-none text-muted-foreground","max-sm:hidden"),children:P}),c.jsx(Vd,{className:"size-4 shrink-0 text-muted-foreground transition-transform group-hover:translate-x-0.5 group-hover:text-foreground","aria-hidden":"true"})]},S)}):p?c.jsxs("p",{className:"break-words px-5 py-5 text-sm text-muted-foreground sm:px-6",role:"status",children:["CAD catalog unavailable: ",p]}):g?c.jsx("p",{className:"px-5 py-5 text-sm text-muted-foreground sm:px-6",role:"status",children:"Loading CAD catalog..."}):c.jsx("p",{className:"px-5 py-5 text-sm text-muted-foreground sm:px-6",children:"No CAD entries found."})})]})})}const Hte=1,Kte=new Set(["LINE","ARC","CIRCLE","LWPOLYLINE"]),ll=1e-9;function vo(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function Wc(e){return String(e||"").trim().toLowerCase().includes("bend")?"bend":"cut"}function l0(e){return String(e||"").trim()||"0"}function ou(e){const t=e%360;return t<0?t+360:t}function Xte(e,t,n){const r=Math.abs(n);return r>=360-ll?!0:n>=0?(ou(e)-ou(t)+360)%360<=r+ll:(ou(t)-ou(e)+360)%360<=r+ll}function Mp(e,t,n){const r=n*Math.PI/180;return[e[0]+t*Math.cos(r),e[1]+t*Math.sin(r)]}function Yte(e){const t=e.startAngleDeg+e.sweepAngleDeg,n=[Mp(e.center,e.radius,e.startAngleDeg),Mp(e.center,e.radius,t)];for(const r of[0,90,180,270])Xte(r,e.startAngleDeg,e.sweepAngleDeg)&&n.push(Mp(e.center,e.radius,r));return n}function gS(e,t){return e?{minX:Math.min(e.minX,t.minX),minY:Math.min(e.minY,t.minY),maxX:Math.max(e.maxX,t.maxX),maxY:Math.max(e.maxY,t.maxY)}:t}function qte(e){return{minX:Math.min(e.start[0],e.end[0]),minY:Math.min(e.start[1],e.end[1]),maxX:Math.max(e.start[0],e.end[0]),maxY:Math.max(e.start[1],e.end[1])}}function Zte(e){return{minX:e.center[0]-e.radius,minY:e.center[1]-e.radius,maxX:e.center[0]+e.radius,maxY:e.center[1]+e.radius}}function Jte(e){const t=Yte(e),n=t.map(o=>o[0]),r=t.map(o=>o[1]);return{minX:Math.min(...n),minY:Math.min(...r),maxX:Math.max(...n),maxY:Math.max(...r)}}function Om(e,{minX:t,maxY:n}){return[e[0]-t,n-e[1]]}function Pn(e){const t=Math.round(vo(e)*1e6)/1e6;return Math.abs(t)s.code===8)?.value),n=vo(e.find(s=>s.code===10)?.value),r=vo(e.find(s=>s.code===20)?.value),o=vo(e.find(s=>s.code===11)?.value),i=vo(e.find(s=>s.code===21)?.value);return{layer:t,start:[n,r],end:[o,i]}}function nne(e){const t=l0(e.find(s=>s.code===8)?.value),n=vo(e.find(s=>s.code===40)?.value,-1);if(n<=0)throw new Error("Invalid DXF arc radius");const r=ou(vo(e.find(s=>s.code===50)?.value));let i=(ou(vo(e.find(s=>s.code===51)?.value))-r+360)%360;return i<=ll&&(i=360),{layer:t,center:[vo(e.find(s=>s.code===10)?.value),vo(e.find(s=>s.code===20)?.value)],radius:n,startAngleDeg:r,sweepAngleDeg:i,endAngleDeg:r+i}}function rne(e){const t=l0(e.find(r=>r.code===8)?.value),n=vo(e.find(r=>r.code===40)?.value,-1);if(n<=0)throw new Error("Invalid DXF circle radius");return{layer:t,center:[vo(e.find(r=>r.code===10)?.value),vo(e.find(r=>r.code===20)?.value)],radius:n}}function one(e,t,n,r){const o=n[0]-t[0],i=n[1]-t[1],s=Math.hypot(o,i);if(s<=ll||Math.abs(r)<=ll)return null;const a=4*Math.atan(r),l=s*(1+r*r)/(4*Math.abs(r)),u=[(t[0]+n[0])/2,(t[1]+n[1])/2],d=[-i/s,o/s],m=s*(1-r*r)/(4*r),p=[u[0]+d[0]*m,u[1]+d[1]*m];return{layer:e,center:p,radius:l,startAngleDeg:ou(Math.atan2(t[1]-p[1],t[0]-p[0])*180/Math.PI),sweepAngleDeg:a*180/Math.PI}}function ine(e){const t=l0(e.find(l=>l.code===8)?.value),n=Math.trunc(vo(e.find(l=>l.code===70)?.value,0)),r=[];let o=null;for(const l of e){if(l.code===10){o&&Number.isFinite(o.point[0])&&Number.isFinite(o.point[1])&&r.push(o),o={point:[vo(l.value),Number.NaN],bulge:0};continue}if(l.code===20&&o){o.point[1]=vo(l.value);continue}l.code===42&&o&&(o.bulge=vo(l.value))}if(o&&Number.isFinite(o.point[0])&&Number.isFinite(o.point[1])&&r.push(o),r.length<2)throw new Error("Invalid DXF LWPOLYLINE; expected at least 2 vertices");const i=[],s=[],a=(l,u)=>{const d=l.point,m=u.point;if(!(d[0]===m[0]&&d[1]===m[1])){if(Math.abs(l.bulge)>ll){const p=one(t,d,m,l.bulge);p&&s.push(p);return}i.push({layer:t,start:d,end:m})}};for(let l=0;l180+ll?1:0,b=g.sweepAngleDeg>=0?0:1;d.push(q_(g.layer,Wc(g.layer),`M ${Pn(x[0])} ${Pn(x[1])} A ${Pn(g.radius)} ${Pn(g.radius)} 0 ${S} ${b} ${Pn(y[0])} ${Pn(y[1])}`)),bS(p,g.layer).pathCount+=1}for(const g of s.circles){const x=Om(g.center,{minX:a.minX,maxY:a.maxY});m.push({layer:g.layer,kind:Wc(g.layer),cx:Pn(x[0]),cy:Pn(x[1]),r:Pn(g.radius)}),bS(p,g.layer).circleCount+=1}return{schemaVersion:Hte,fileRef:t,sourceUrl:n,sourceUnits:i.sourceUnits,defaultThicknessMm:Pn(i.defaultThicknessMm),bounds:{minX:0,minY:0,maxX:Pn(l),maxY:Pn(u),width:Pn(l),height:Pn(u)},counts:{paths:d.length,circles:m.length,entities:d.length+m.length},layers:[...p.keys()].sort().map(g=>p.get(g)),geometry:{lines:s.lines.map(g=>({layer:g.layer,kind:Wc(g.layer),start:[Pn(g.start[0]),Pn(g.start[1])],end:[Pn(g.end[0]),Pn(g.end[1])]})),arcs:s.arcs.map(g=>({layer:g.layer,kind:Wc(g.layer),center:[Pn(g.center[0]),Pn(g.center[1])],radius:Pn(g.radius),startAngleDeg:Pn(g.startAngleDeg),sweepAngleDeg:Pn(g.sweepAngleDeg)})),circles:s.circles.map(g=>({layer:g.layer,kind:Wc(g.layer),center:[Pn(g.center[0]),Pn(g.center[1])],radius:Pn(g.radius)}))},paths:d,circles:m}}const cne=1,uD=1e-7,yS=1e-7,une=.8,dne=6,fne=160,cc=Object.freeze({id:"unclassified",label:"Unclassified",category:"other",rawLabel:""}),Z_=Object.freeze({support:0,wall:1,surface:2,infill:3,adhesion:4,calibration:5,other:6}),mne=Object.freeze([{id:"support-interface",label:"Support interface",category:"support",patterns:[/\bsupport\b.*\b(interface|roof|floor)\b/,/\binterface\b.*\bsupport\b/]},{id:"support",label:"Support",category:"support",patterns:[/\bsupport(?:s| material)?\b/]},{id:"overhang-wall",label:"Overhang wall",category:"wall",patterns:[/\boverhang\b.*\b(wall|perimeter)\b/]},{id:"outer-wall",label:"Outer wall",category:"wall",patterns:[/\bouter\b.*\b(wall|perimeter|shell)\b/,/\bexternal\b.*\b(perimeter|wall|shell)\b/,/\bwall outer\b/]},{id:"inner-wall",label:"Inner wall",category:"wall",patterns:[/\binner\b.*\b(wall|perimeter|shell)\b/,/\binternal\b.*\bperimeter\b/,/\bwall inner\b/]},{id:"wall",label:"Wall",category:"wall",patterns:[/\b(wall|perimeter|shell)\b/]},{id:"bridge",label:"Bridge",category:"surface",patterns:[/\bbridge\b/]},{id:"top-surface",label:"Top surface",category:"surface",patterns:[/\btop\b.*\b(surface|skin|shell|solid infill|infill)\b/]},{id:"bottom-surface",label:"Bottom surface",category:"surface",patterns:[/\bbottom\b.*\b(surface|skin|shell|solid infill|infill)\b/]},{id:"surface",label:"Surface",category:"surface",patterns:[/\b(skin|surface)\b/]},{id:"gap-fill",label:"Gap fill",category:"infill",patterns:[/\bgap\b.*\bfill\b/]},{id:"internal-solid-infill",label:"Internal solid infill",category:"infill",patterns:[/\binternal\b.*\bsolid\b.*\binfill\b/,/\bsolid\b.*\binfill\b/]},{id:"sparse-infill",label:"Sparse infill",category:"infill",patterns:[/\bsparse\b.*\binfill\b/,/\binternal\b.*\binfill\b/,/\bfill\b/]},{id:"infill",label:"Infill",category:"infill",patterns:[/\binfill\b/]},{id:"skirt",label:"Skirt",category:"adhesion",patterns:[/\bskirt\b/]},{id:"brim",label:"Brim",category:"adhesion",patterns:[/\bbrim\b/]},{id:"raft",label:"Raft",category:"adhesion",patterns:[/\braft\b/]},{id:"prime-tower",label:"Prime tower",category:"calibration",patterns:[/\b(prime|wipe)\b.*\btower\b/]},{id:"ironing",label:"Ironing",category:"surface",patterns:[/\bironing\b/]},{id:"flush",label:"Flush",category:"calibration",patterns:[/\bflush\b/]},{id:"wipe",label:"Wipe",category:"calibration",patterns:[/\bwipe\b/]},{id:"custom",label:"Custom",category:"other",patterns:[/\bcustom\b/]}]),pne=new Set(["G0","G1","G2","G3","G20","G21","G28","G90","G91","G92","M82","M83","M84","M104","M106","M107","M109","M140","M190"]);function Yi(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function Ny(e){return[Yi(e?.[0]),Yi(e?.[1]),Yi(e?.[2])]}function dD(e){return String(e||"").split(";",1)[0].trim()}function hne(e){const t=dD(e).toUpperCase();if(!t)return"";const n=t.split(/\s+/,1)[0];return/^[GMT]\d+(?:\.\d+)?$/.test(n)?n.split(".",1)[0]:n}function gne(e){const t=dD(e).toUpperCase(),n={};for(const r of t.matchAll(/([A-Z])([-+]?(?:\d+(?:\.\d*)?|\.\d+))/g))n[r[1]]=Number(r[2]);return n}function bne(e){const t=String(e||""),n=t.indexOf(";");return n>=0?t.slice(n+1).trim():""}function Mv(e){return String(e||"").replace(/^["']+|["']+$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function yne(e){return Mv(e).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)}function xne(e){const t=Mv(e);return t?t.toLowerCase().split(" ").map(n=>n?`${n[0].toUpperCase()}${n.slice(1)}`:"").join(" "):"Other"}function Sne(e){const t=Mv(e),n=t.toLowerCase();for(const o of mne)if(o.patterns.some(i=>i.test(n)))return{id:o.id,label:o.label,category:o.category,rawLabel:t};const r=yne(t);return{id:r?`other:${r}`:cc.id,label:r?xne(t):cc.label,category:"other",rawLabel:t}}function Ene(e){const t=bne(e);if(!t)return null;const n=t.match(/^(?:FEATURE|TYPE|PRINT_FEATURE|TOOLPATH(?:_TYPE)?|PATH_TYPE)\s*[:=]\s*(.+)$/i);return n?.[1]?Sne(n[1]):null}function wne(e,t){const n=Yi(t?.[0])-Yi(e?.[0]),r=Yi(t?.[1])-Yi(e?.[1]),o=Yi(t?.[2])-Yi(e?.[2]);return Math.hypot(n,r,o)}function fl(e){return Math.round(Yi(e)*1e6)/1e6}function J_(e,t){const n=Ny(t);for(let r=0;r<3;r+=1)e.min[r]=Math.min(e.min[r],n[r]),e.max[r]=Math.max(e.max[r],n[r])}function Q_(e){return fl(e).toFixed(6)}function vne(e,t){if(!e.length)return 0;const n=fl(t);let r=0,o=1/0;for(let i=0;iyS&&(n.primeMoves+=1);return}const p=a>yS?"extrusion":"travel";p==="extrusion"?(n.extrusionMoves+=1,n.extrusionMm+=a):n.travelMoves+=1,n.movementCommands+=1,n.pathMm+=m,J_(t,i),J_(t,s),e.push({lineNumber:r,command:o,kind:p,start:Ny(i),end:Ny(s),z:fl(s[2]),extrusionDelta:a,feedRate:Number.isFinite(l)?l:null,lengthMm:m,arc:!!u,featureId:d?.id||cc.id,featureLabel:d?.label||cc.label,featureCategory:d?.category||cc.category,featureRaw:d?.rawLabel||""})}function Ine({start:e,end:t,tokens:n,clockwise:r}){if(!Object.hasOwn(n,"I")||!Object.hasOwn(n,"J"))return null;const o=e[0]+n.I,i=e[1]+n.J,s=Math.hypot(e[0]-o,e[1]-i);if(!(s>uD))return null;const a=Math.atan2(e[1]-i,e[0]-o);let u=Math.atan2(t[1]-i,t[0]-o)-a;r&&u>=0?u-=Math.PI*2:!r&&u<=0&&(u+=Math.PI*2);const d=Math.ceil(Math.abs(u*s)/une),m=Math.max(dne,Math.min(fne,d)),p=[Ny(e)];for(let g=1;g<=m;g+=1){const x=g/m,y=a+u*x;p.push([o+s*Math.cos(y),i+s*Math.sin(y),e[2]+(t[2]-e[2])*x])}return p}function Ane(e){return!e.min.every(Number.isFinite)||!e.max.every(Number.isFinite)?{min:[0,0,0],max:[1,1,1]}:{min:e.min.map(t=>fl(t)),max:e.max.map(t=>fl(t))}}function Nne(e){const t=new Map;for(const r of e){if(r.kind!=="extrusion")continue;const o=Q_(r.z);t.has(o)||t.set(o,fl(r.z))}if(!t.size)for(const r of e){const o=Q_(r.z);t.has(o)||t.set(o,fl(r.z))}const n=[...t.values()].sort((r,o)=>r-o).map((r,o)=>({index:o,z:r,segmentCount:0,extrusionMoves:0,travelMoves:0}));for(const r of e){const o=vne(n,r.z);r.layerIndex=o,n[o]&&(n[o].segmentCount+=1,r.kind==="extrusion"?n[o].extrusionMoves+=1:n[o].travelMoves+=1)}return n}function eT(e,t){const n=t?.id?t:cc;e.has(n.id)||e.set(n.id,{id:n.id,label:n.label||cc.label,category:n.category||cc.category,rawLabels:new Set,markerCount:0,firstLine:null,lastLine:null,firstLayerIndex:null,lastLayerIndex:null,segmentCount:0,extrusionMoves:0,travelMoves:0,extrusionMm:0,pathMm:0});const r=e.get(n.id);return n.rawLabel&&r.rawLabels.add(n.rawLabel),r}function _ne(e){return!Number.isInteger(e.firstLayerIndex)||!Number.isInteger(e.lastLayerIndex)?"":e.firstLayerIndex===e.lastLayerIndex?`Layer ${e.firstLayerIndex+1}`:`Layers ${e.firstLayerIndex+1}-${e.lastLayerIndex+1}`}function Tne(e,t){const n=new Map;for(const r of t){const o=eT(n,r.feature);o.markerCount+=1,o.firstLine=o.firstLine==null?r.lineNumber:Math.min(o.firstLine,r.lineNumber),o.lastLine=o.lastLine==null?r.lineNumber:Math.max(o.lastLine,r.lineNumber)}for(const r of e){const o=eT(n,{id:r.featureId,label:r.featureLabel,category:r.featureCategory,rawLabel:r.featureRaw});o.segmentCount+=1,o.pathMm+=Yi(r.lengthMm),Number.isInteger(r.layerIndex)&&(o.firstLayerIndex=o.firstLayerIndex==null?r.layerIndex:Math.min(o.firstLayerIndex,r.layerIndex),o.lastLayerIndex=o.lastLayerIndex==null?r.layerIndex:Math.max(o.lastLayerIndex,r.layerIndex)),r.kind==="extrusion"?(o.extrusionMoves+=1,o.extrusionMm+=Yi(r.extrusionDelta)):r.kind==="travel"&&(o.travelMoves+=1)}return[...n.values()].map(r=>({...r,rawLabels:[...r.rawLabels].sort((o,i)=>o.localeCompare(i)),layerRangeText:_ne(r),pathMm:fl(r.pathMm),extrusionMm:fl(r.extrusionMm)})).sort((r,o)=>{const i=(Z_[r.category]??99)-(Z_[o.category]??99);if(i!==0)return i;const s=o.extrusionMoves-r.extrusionMoves;return s!==0?s:r.label.localeCompare(o.label)})}function Rne(e,t){const n=[...e],r=[...t.entries()].sort((o,i)=>o[0].localeCompare(i[0])).slice(0,12).map(([o,i])=>`${o} line ${i}`);return r.length&&n.push(`Unsupported or ignored commands were left out of the preview: ${r.join(", ")}.`),n}function Pne(e,{sourceUrl:t="",fileRef:n=""}={}){const r=String(e||"").split(/\r?\n/),o=[],i=new Map,s=[],a={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]},l={lines:r.length,nonCommentLines:0,movementCommands:0,extrusionMoves:0,travelMoves:0,retractMoves:0,primeMoves:0,temperatureCommands:0,extrusionMm:0,pathMm:0},u={x:0,y:0,z:0,e:0};let d=!0,m=!0,p="mm",g=!1,x=!1,y=null;const S=[];for(let A=0;AMath.abs(Number(e[r]??(r===3?1:0))-n)<=jne)}function Fne(e){const t=e?.extras?.cadSourceColor;return t===!0||t===!1?t:null}function zne(e){const t=e?.userData?.cadSourceColor;return t===!0||t===!1?t:null}function Bne(e,t){return Lne(gD(e),Dne)&&t?.color?.getHexString?.()==="dddddd"}function Vne(e,t,{rawMaterial:n=null,stepTopology:r=!1}={}){if(!t||!e?.color)return null;const o=zne(e)??Fne(n);return o===!1||r&&o!==!0&&Bne(n,e)?null:{rgb:[e.color.r,e.color.g,e.color.b],hex:`#${e.color.getHexString()}`,opacity:$ne(e,n)}}function $ne(e,t=null){const n=Number(e?.opacity);if(Number.isFinite(n))return Math.min(Math.max(n,0),1);const r=gD(t)?.[3],o=Number(r);return Number.isFinite(o)?Math.min(Math.max(o,0),1):1}function Gne(e,t){if(Array.isArray(e)){const n=Number.isInteger(t?.materialIndex)?t.materialIndex:0;return e[n]||e[0]||null}return e||null}function Une(e){return Number.isInteger(e?.materialIndex)?e.materialIndex:0}function Wne(e,t){return!Array.isArray(e)||e.length<=0?null:e[Une(t)]||e[0]||null}function Hne(e){const t=e?.elements;return!Array.isArray(t)&&!(t instanceof Float32Array)?!1:[1,0,0,0,0,0,-1,0,0,1,0,0,0,0,0,1].every((r,o)=>Math.abs(Number(t[o])-r)<1e-6)}function Kne(e,t){t?.updateWorldMatrix?.(!0,!0);const n=Array.isArray(t?.children)?t.children:[];return n.length!==1||!Hne(n[0]?.matrixWorld)?null:new e.Matrix4().copy(n[0].matrixWorld).invert()}function bD(e){let t=e||null;for(;t;){const r=String(t.userData?.cadOccurrenceId||"").trim();if(r)return r;t=t.parent||null}const n=String(e?.name||"").trim();return/^o\d+(?:\.\d+)*$/.test(n)?n:""}function Xne(e){let t=!1;return e?.traverse?.(n=>{t||(t=!!String(n?.userData?.cadOccurrenceId||"").trim())}),t}function Yne(e,t){const n=e.x*SS,r=e.y*SS,o=e.z*SS;return t?{x:n,y:-o,z:r}:{x:n,y:r,z:o}}function yD(e,t){return e?e.getX(t):t}function nT(e,t){for(const n of t){const r=e?.getAttribute?.(n);if(r)return r}return null}function xD(e,t,n){for(let r=0;r<3;r+=1){const o=yD(t,n+r);if(o<0||o>=e.count)return!1}return!0}function qne(e,t,n,r){let o=0;for(let i=0;i0,r=Array.isArray(t?.parser?.json?.materials)?t.parser.json.materials:[],o=Kne(e,t?.scene),i=!!t?.parser?.json?.extensions?.STEP_topology,s=!i&&!Xne(t?.scene)&&!o,a=[],l=new Set;let u=0,d=0,m=!1;const p=new Map;t?.scene?.traverse?.(R=>{if(!R?.isMesh||!R.geometry)return;const v=bD(R)||String(R?.name||`glb:${a.length}`).trim(),C=p.get(v)||0,T=Array.isArray(R.geometry.groups)&&R.geometry.groups.length?R.geometry.groups:[null];T.forEach((k,z)=>{const Y=Zne(e,R,k,Gne(R.material,k),n,o,s,C+z,a.length,{rawMaterial:Wne(r,k),stepTopology:i});Y&&(a.push(Y),u+=Y.vertexCount,d+=Y.triangleCount*3,m||=!!(Y.surfaceEdgeBarycentric&&Y.surfaceEdgeClass),Y.color&&l.add(Y.color.toLowerCase()))}),p.set(v,C+T.length)});const g=new Float32Array(u*3),x=new Uint32Array(d),y=new Float32Array(u*3),S=m?new Float32Array(u*3):null,b=m?new Uint8Array(u*3):null,I=[],A={vertices:g,indices:x,normals:y,surfaceEdgeBarycentric:S,surfaceEdgeClass:b,bounds:pD()},N={vertexOffset:0,indexOffset:0};for(const R of a)I.push(Jne(e,R,A,N));const P=new Float32Array(0);return{vertices:g,indices:x,normals:y,surfaceEdgeBarycentric:S||new Float32Array(0),surfaceEdgeClass:b||new Uint8Array(0),colors:P,edge_indices:new Uint32Array(0),bounds:hD(A.bounds),parts:I,has_source_colors:l.size>0,sourceColor:l.size===1?[...l][0]:""}}function ere(e,t){const n=new e;return new Promise((r,o)=>{n.parse(t,"",r,o)})}async function tre(e){const[t,{GLTFLoader:n}]=await Promise.all([_o(()=>import("./vendor-three-SYzIooV9.js").then(o=>o.T),[]),_o(()=>import("./vendor-three-SYzIooV9.js").then(o=>o.G),[])]),r=await ere(n,e);return Qne(t,r)}function nre(e){e.computeBoundingBox();const t=e.boundingBox?.min,n=e.boundingBox?.max;return!t||!n?{min:[0,0,0],max:[0,0,0]}:{min:[t.x,t.y,t.z],max:[n.x,n.y,n.z]}}const rre=Math.PI/4;function ore(e,t){const n=e.clone();n.deleteAttribute?.("normal");const r=typeof t=="function"?t(n,rre):n;return r!==n&&n.dispose?.(),r.getAttribute("normal")||r.computeVertexNormals?.(),r}function ire(e,t){const n=e.getIndex?.();if(n?.count>0)return new Uint32Array(n.array);const r=new Uint32Array(t);for(let o=0;oimport("./vendor-three-SYzIooV9.js").then(i=>i.h),[]),_o(()=>import("./vendor-three-SYzIooV9.js").then(i=>i.B),[])]),o=new t().parse(e);try{return sre(o,{toCreasedNormals:n})}finally{o.dispose?.()}}const lre=new Set(["default"]),cre=new Set(["#fafafb","#b6c4ce"]),rT=Object.freeze({rgb:[.4677837961,.5520114015,.6172065624],hex:"#b6c4ce"});function u0(e){if(!e?.length)return{min:[0,0,0],max:[0,0,0]};const t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let r=0;r+2n.localName===t)}function Td(e,t){return Ld(e,t)[0]||null}function ure(e,t){if(!e?.attributes)return"";const n=e.getAttribute?.(t);if(n)return n;for(const r of Array.from(e.attributes))if(r.localName===t||String(r.name||"").split(":").pop()===t)return r.value||"";return""}function ES(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function wS(e){const t=Number(e);return Number.isInteger(t)&&t>=0?t:-1}function SD(e,t){if(typeof DOMParser!="function")throw new Error("3MF XML parsing is unavailable in this environment");const n=new DOMParser().parseFromString(e,"application/xml");if(n.querySelector?.("parsererror"))throw new Error(`Invalid 3MF XML: ${t}`);return n}function oT(e,t){const n=String(t||"").trim().split(/\s+/).map(o=>Number(o));if(n.length!==12||n.some(o=>!Number.isFinite(o)))return null;const r=new e.Matrix4;return r.set(n[0],n[3],n[6],n[9],n[1],n[4],n[7],n[10],n[2],n[5],n[8],n[11],0,0,0,1),r}function dre(e){const t=[],n=Td(e,"vertices");for(const i of Ld(n,"vertex"))t.push([ES(i.getAttribute("x")),ES(i.getAttribute("y")),ES(i.getAttribute("z"))]);const r=[],o=Td(e,"triangles");for(const i of Ld(o,"triangle")){const s=[wS(i.getAttribute("v1")),wS(i.getAttribute("v2")),wS(i.getAttribute("v3"))];s.every(a=>a>=0)&&r.push(s)}return{vertices:t,triangles:r}}function fre(e,t,n){const r=SD(t,n),o=r.documentElement?.localName==="model"?r.documentElement:r.querySelector?.("model");if(!o)throw new Error(`3MF model part is missing a model node: ${n}`);const i=Td(o,"resources"),s=new Map;for(const u of Ld(i,"object")){const d=String(u.getAttribute("id")||"").trim();if(!d)continue;const m=String(u.getAttribute("name")||u.getAttribute("partnumber")||"").trim(),p=Td(u,"mesh"),g=Td(u,"components"),x=[];for(const y of Ld(g,"component")){const S=String(y.getAttribute("objectid")||"").trim();S&&x.push({objectId:S,path:Iv(ure(y,"path"),n),transform:oT(e,y.getAttribute("transform"))})}s.set(d,{id:d,name:m,mesh:p?dre(p):null,components:x})}const a=[],l=Td(o,"build");for(const u of Ld(l,"item")){const d=String(u.getAttribute("objectid")||"").trim();d&&a.push({objectId:d,transform:oT(e,u.getAttribute("transform"))})}return{path:n,objects:s,build:a}}function mre(e,t){const n=SD(e,t);return Array.from(n.querySelectorAll?.("Relationship")||[]).map(r=>({target:Iv(r.getAttribute("Target")),type:String(r.getAttribute("Type")||"").trim()})).filter(r=>r.target)}function pre(e){if(!e?.color)return null;const t=`#${e.color.getHexString()}`.toLowerCase(),n=String(e.name||"").trim().toLowerCase();return lre.has(n)&&cre.has(t)?{rgb:rT.rgb,hex:rT.hex,generatedDefault:!0}:{rgb:[e.color.r,e.color.g,e.color.b],hex:t,generatedDefault:!1}}function hre(e,t){if(Array.isArray(e)){const n=Number.isInteger(t?.materialIndex)?t.materialIndex:0;return e[n]||e[0]||null}return e||null}function gre(e,t,n,r,o){const i=n?.geometry,s=i?.getAttribute?.("position");if(!s||s.itemSize!==3||s.count<=0)return;i.getAttribute("normal")||i.computeVertexNormals?.(),n.updateWorldMatrix?.(!0,!1);const a=n.matrixWorld||null,l=a?new e.Matrix3().getNormalMatrix(a):null,u=i.getAttribute("normal"),d=i.getIndex?.(),m=Math.max(0,Math.floor(Number(r?.start||0))),p=d?.count||s.count,g=Math.floor(Number(r?.count||p-m)),x=Math.max(0,Math.min(g,p-m)),y=x-x%3;if(y<=0)return;const S=pre(o),b=new e.Vector3,I=new e.Vector3,A=Math.floor(t.vertices.length/3),N=Math.floor(t.indices.length/3),P=[];for(let k=0;k=s.count)continue;const K=Math.floor(P.length/3);b.set(s.getX(Y),s.getY(Y),s.getZ(Y)),a&&b.applyMatrix4(a),t.vertices.push(b.x,b.y,b.z),P.push(b.x,b.y,b.z),u?.itemSize===3&&Y{if(s?.isMesh&&s.geometry){const a=Array.isArray(s.geometry.groups)&&s.geometry.groups.length?s.geometry.groups:[null];for(const l of a)gre(e,n,s,l,hre(s.material,l))}});const r=new Float32Array(n.vertices),o=n.colors.length===n.vertices.length?new Float32Array(n.colors):new Float32Array(0),i=o.length===r.length&&o.length>0&&n.colorSet.size>0;return{vertices:r,indices:new Uint32Array(n.indices),normals:new Float32Array(n.normals),colors:i?o:new Float32Array(0),edge_indices:new Uint32Array(0),bounds:u0(r),parts:n.parts,has_source_colors:i,sourceColor:n.colorSet.size===1?[...n.colorSet][0]:""}}function yre(e,t,n,r,o){if(!n?.vertices?.length||!n?.triangles?.length)return;const i=Math.floor(t.vertices.length/3),s=Math.floor(t.indices.length/3),a=new e.Vector3,l=[new e.Vector3,new e.Vector3,new e.Vector3],u=new e.Vector3,d=new e.Vector3,m=new e.Vector3,p=[];for(const b of n.triangles){const I=b.map(A=>n.vertices[A]);if(!I.some(A=>!A)){for(let A=0;A<3;A+=1){const N=I[A];l[A].set(N[0],N[1],N[2]).applyMatrix4(r)}u.subVectors(l[1],l[0]),d.subVectors(l[2],l[0]),m.crossVectors(u,d).normalize(),(!Number.isFinite(m.x)||!Number.isFinite(m.y)||!Number.isFinite(m.z))&&m.set(0,0,0);for(const A of l){a.copy(A);const N=Math.floor(p.length/3);t.vertices.push(a.x,a.y,a.z),p.push(a.x,a.y,a.z),t.normals.push(m.x,m.y,m.z),t.indices.push(i+N)}}}const g=Math.floor(p.length/3),x=Math.floor(g/3);if(g<=0||x<=0)return;const y=`3mf:${t.parts.length}`,S=String(o||y).trim()||y;t.parts.push({id:y,occurrenceId:y,name:S,label:S,nodeType:"part",color:"",bounds:u0(p),vertexOffset:i,vertexCount:g,triangleOffset:s,triangleCount:x,edgeIndexOffset:0,edgeIndexCount:0})}function xre(e,t){for(const[n,r]of e)if(r.objects.has(t))return{modelPath:n,objectData:r.objects.get(t)};return null}function ED(e,t,n,r,o,i,s=[]){const a=`${r}#${o}`;if(s.includes(a))throw new Error(`3MF component cycle detected at ${a}`);let u=n.get(r)?.objects?.get(o)||null,d=r;if(!u){const m=xre(n,o);u=m?.objectData||null,d=m?.modelPath||r}if(!u)throw new Error(`3MF object ${o} is missing from ${r}`);if(u.mesh){yre(e,t,u.mesh,i,u.name||`${d}#${u.id}`);return}for(const m of u.components||[]){const p=m.path||d,g=i.clone();m.transform&&g.multiply(m.transform),ED(e,t,n,p,m.objectId,g,[...s,a])}}function Sre(e){const t=new Float32Array(e.vertices);return{vertices:t,indices:new Uint32Array(e.indices),normals:new Float32Array(e.normals),colors:new Float32Array(0),edge_indices:new Uint32Array(0),bounds:u0(t),parts:e.parts,has_source_colors:!1,sourceColor:""}}async function Ere(e,t){const n=await _o(()=>import("./vendor-three-SYzIooV9.js").then(S=>S.i),[]),r=new TextDecoder,o=n.unzipSync(new Uint8Array(t)),i=S=>{const b=Iv(S),I=o[b];return I?r.decode(I):""},s=Object.keys(o).filter(S=>/^3D\/.*\.model$/i.test(S)).sort((S,b)=>{const I=/\/3dmodel\.model$/i.test(S)?1:0,A=/\/3dmodel\.model$/i.test(b)?1:0;return I-A||S.localeCompare(b)});if(!s.length)throw new Error("3MF package does not contain any 3D model parts");const a=new Map;for(const S of s){const b=i(S);b&&a.set(S,fre(e,b,S))}const l=i("_rels/.rels"),u=l?mre(l,"_rels/.rels").find(S=>/\.model$/i.test(S.target))?.target:"",d=a.has(u)?u:s.find(S=>a.get(S)?.build?.length)||s[0],m=a.get(d);if(!m)throw new Error("3MF package does not contain a readable build model");const p=new e.Matrix4,g={vertices:[],indices:[],normals:[],parts:[]},x=m.build.length?m.build:Array.from(m.objects.keys()).map(S=>({objectId:S,transform:null}));for(const S of x){const b=S.transform?S.transform.clone():p.clone();ED(e,g,a,d,S.objectId,b)}const y=Sre(g);if(!y.indices.length)throw new Error("3MF package did not produce any triangles");return y}async function wre(e){const[t,{ThreeMFLoader:n}]=await Promise.all([_o(()=>import("./vendor-three-SYzIooV9.js").then(o=>o.T),[]),_o(()=>import("./vendor-three-SYzIooV9.js").then(o=>o._),[])]),r=new n;try{return bre(t,r.parse(e))}catch(o){try{return await Ere(t,e)}catch{throw o}}}let Wa=null,iT=1;const ef=new Map;function sT(){if(typeof DOMException=="function")return new DOMException("The operation was aborted.","AbortError");const e=new Error("The operation was aborted.");return e.name="AbortError",e}function vre(){return typeof Worker=="function"&&typeof URL=="function"}function Cre(e){for(const t of ef.values())t.cleanup(),t.reject(e);ef.clear()}function Mre(){if(!vre())return null;if(Wa)return Wa;try{Wa=new Worker(new URL("/assets/glbMeshWorker-MCreI3ZZ.js",import.meta.url),{type:"module"})}catch{return Wa=null,null}return Wa.addEventListener("message",e=>{const t=e.data||{},n=ef.get(t.id);if(!n)return;if(ef.delete(t.id),n.cleanup(),t.ok){n.resolve(t.meshData);return}const r=new Error(t.error?.message||"Failed to load GLB mesh in worker.");r.name=t.error?.name||"Error",n.reject(r)}),Wa.addEventListener("error",e=>{const t=new Error(e?.message||"GLB mesh worker failed.");Cre(t),Wa?.terminate?.(),Wa=null}),Wa}function Ire(e,{signal:t}={}){const n=Mre();if(!n)return null;if(t?.aborted)return Promise.reject(sT());const r=iT;return iT+=1,new Promise((o,i)=>{const s=()=>{t?.removeEventListener?.("abort",a)},a=()=>{ef.delete(r),s(),n.postMessage({type:"cancel",id:r}),i(sT())};ef.set(r,{resolve:o,reject:i,cleanup:s}),t?.addEventListener?.("abort",a,{once:!0}),n.postMessage({type:"loadGlb",id:r,url:e})})}let Ha=null,aT=1;const tf=new Map;function lT(){if(typeof DOMException=="function")return new DOMException("The operation was aborted.","AbortError");const e=new Error("The operation was aborted.");return e.name="AbortError",e}function Are(){return typeof Worker=="function"&&typeof URL=="function"}function Nre(e){for(const t of tf.values())t.cleanup(),t.reject(e);tf.clear()}function _re(){if(!Are())return null;if(Ha)return Ha;try{Ha=new Worker(new URL("/assets/stlMeshWorker-0yVf-FuZ.js",import.meta.url),{type:"module"})}catch{return Ha=null,null}return Ha.addEventListener("message",e=>{const t=e.data||{},n=tf.get(t.id);if(!n)return;if(tf.delete(t.id),n.cleanup(),t.ok){n.resolve(t.meshData);return}const r=new Error(t.error?.message||"Failed to load STL mesh in worker.");r.name=t.error?.name||"Error",n.reject(r)}),Ha.addEventListener("error",e=>{const t=new Error(e?.message||"STL mesh worker failed.");Nre(t),Ha?.terminate?.(),Ha=null}),Ha}function Tre(e,{signal:t}={}){const n=_re();if(!n)return null;if(t?.aborted)return Promise.reject(lT());const r=aT;return aT+=1,new Promise((o,i)=>{const s=()=>{t?.removeEventListener?.("abort",a)},a=()=>{tf.delete(r),s(),n.postMessage({type:"cancel",id:r}),i(lT())};tf.set(r,{resolve:o,reject:i,cleanup:s}),t?.addEventListener?.("abort",a,{once:!0}),n.postMessage({type:"loadStl",id:r,url:e})})}function vf(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function wD(e,t){return new Error(`Failed to fetch ${e}: ${t.status} ${t.statusText}`)}const cT=new Map,uT=new Map,ob=new Map,lE=new Map,cE=new Map,uE=new Map,dE=new Map,fE=new Map,mE=new Map,pE=new Map,hE=new Map,gE=new Map,bE=new Map,yE=new Map,Rre="version https://git-lfs.github.com/spec/v1",Pre=512;async function Ore(e,{signal:t}={}){const n=await fetch(e,{signal:t});if(!n.ok)throw wD(e,n);return n.text()}async function kre(e,{signal:t}={}){const n=await fetch(e,{signal:t});if(!n.ok)throw wD(e,n);return n.arrayBuffer()}async function Is(e,t,n,{cachePending:r=!0}={}){if(!t)throw new Error("Missing asset cache key");if(e.has(t)){const i=e.get(t);if(r||typeof i?.then!="function")return i}if(!r){const i=await n();return e.set(t,i),i}let o;return o=n().catch(i=>{throw e.get(t)===o&&e.delete(t),i}),e.set(t,o),o}function As(e,t){const n=e.get(t);return n&&typeof n.then!="function"?n:null}function ns(e,t,n){return e.set(t,n),n}function Za(e){return e instanceof DOMException&&e.name==="AbortError"}function Dre(e){const t=Number(e?.byteLength||0);if(!Number.isFinite(t)||t<=0)return null;const n=new TextDecoder("utf-8").decode(new Uint8Array(e,0,Math.min(t,Pre)));if(!n.startsWith(Rre))return null;const r=n.match(/^oid sha256:([0-9a-f]{64})\r?$/m)?.[1]||"",o=n.match(/^size ([0-9]+)\r?$/m)?.[1]||"",i=o?Number(o):null;return{oid:r,size:Number.isSafeInteger(i)?i:null}}function jre(e){const t=String(e||"").trim();if(!t)return"(unknown)";try{const n=typeof window<"u"&&window.location?.href?window.location.href:"http://localhost/",r=new URL(t,n);return decodeURIComponent(r.pathname||t)}catch{return t.split(/[?#]/)[0]||t}}function Cf(e,t,n="Render asset"){const r=Dre(e);if(!r)return;const o=r.size!==null?` Expected LFS object size: ${r.size} bytes.`:"",i=r.oid?` sha256:${r.oid}.`:"";throw new Error(`${n} is a Git LFS pointer, not downloaded mesh data: ${jre(t)}.${i}${o} Fetch the LFS object for this file and reload the viewer.`)}function xE(){if(typeof DOMException=="function")return new DOMException("The operation was aborted.","AbortError");const e=new Error("The operation was aborted.");return e.name="AbortError",e}function Lre(e,t){return t?t.aborted?Promise.reject(xE()):new Promise((n,r)=>{const o=()=>{t.removeEventListener?.("abort",i)},i=()=>{o(),r(xE())};t.addEventListener?.("abort",i,{once:!0}),e.then(s=>{o(),n(s)},s=>{o(),r(s)})}):e}async function bh(e,{signal:t}={}){const n=await Is(cT,e,()=>Ore(e,{signal:t}),{cachePending:!t});return ns(cT,e,n)}async function Mf(e,{signal:t}={}){if(!e)throw new Error("Missing asset cache key");if(t?.aborted)throw xE();const n=As(uT,e);if(n)return n;let r=ob.get(e);return r||(r=kre(e).then(o=>ns(uT,e,o)).finally(()=>{ob.get(e)===r&&ob.delete(e)}),ob.set(e,r)),Lre(r,t)}async function vD(e,{signal:t,preferWorker:n=!1}={}){const r=await Is(lE,e,async()=>{if(n){const i=Ire(e,{signal:t});if(i)try{return await i}catch(s){if(t?.aborted||Za(s))throw s}}const o=await Mf(e,{signal:t});return Cf(o,e,"GLB render asset"),tre(o)},{cachePending:!t});return ns(lE,e,r)}function CD(e){return As(lE,e)}async function Fre(e,{signal:t}={}){const n=await Is(cE,e,async()=>{const r=Tre(e,{signal:t});if(r)try{return await r}catch(i){if(t?.aborted||Za(i))throw i}const o=await Mf(e,{signal:t});return Cf(o,e,"STL render asset"),are(o)},{cachePending:!t});return ns(cE,e,n)}function zre(e){return As(cE,e)}async function Bre(e,{signal:t}={}){const n=await Is(uE,e,async()=>{const r=await Mf(e,{signal:t});return Cf(r,e,"3MF render asset"),wre(r)},{cachePending:!t});return ns(uE,e,n)}function Vre(e){return As(uE,e)}function Av(e){const t=new DataView(e);if(t.byteLength<20||t.getUint32(0,!0)!==1179937895||t.getUint32(4,!0)!==2)throw new Error("Invalid GLB topology container");const n=Math.min(t.getUint32(8,!0),t.byteLength);let r=12,o=null,i=null;for(;r+8<=n;){const s=t.getUint32(r,!0),a=t.getUint32(r+4,!0);if(r+=8,r+s>n)throw new Error("Invalid GLB chunk length");a===1313821514?o=JSON.parse(new TextDecoder("utf-8").decode(e.slice(r,r+s)).trim()):a===5130562&&(i={buffer:e,byteOffset:r,byteLength:s}),r+=s}if(!o||!i)throw new Error("GLB topology requires JSON and BIN chunks");return{json:o,bin:i}}function MD(e,t,n){const r=Number(n),o=Array.isArray(e?.bufferViews)?e.bufferViews[r]:null;if(!Number.isInteger(r)||!o||Number(o.buffer||0)!==0)return null;const i=t.byteOffset+Number(o.byteOffset||0),s=Number(o.byteLength||0);return!Number.isFinite(i)||!Number.isFinite(s)||s<0||it.byteOffset+t.byteLength?null:{byteOffset:i,byteLength:s}}function $re(e,t){if(!vf(t))return null;const n=MD(e.json,e.bin,t.bufferView);if(!n)return null;const r=Number(t.count||0),o=Number(t.byteOffset||0);if(!Number.isFinite(r)||r<0||!Number.isFinite(o)||o<0)return null;const i=n.byteOffset+o;return t.dtype==="float32"?new Float32Array(e.bin.buffer,i,r):t.dtype==="uint32"?new Uint32Array(e.bin.buffer,i,r):null}function ID(e,t){const n=e?.buffers?.views;if(!vf(n))return{};const r={};for(const[o,i]of Object.entries(n)){const s=$re(t,i);s&&(r[o]=s)}return r}function Gre(e){const t=Array.isArray(e?.json?.meshes)?e.json.meshes:[];let n=0;for(const r of t)for(const o of Array.isArray(r?.primitives)?r.primitives:[]){n+=1;const i=o?.attributes||{};if(i[fD]===void 0||i[mD]===void 0)return!1}return n>0}function Nv(e){const t=e.json?.extensions?.[xs];if(!vf(t))throw new Error(`GLB is missing ${xs}`);if(!c0(t.schemaVersion))throw new Error(`Unsupported ${xs} schemaVersion ${t.schemaVersion||"unknown"}; expected ${gh}`);if(t.edgeView===void 0||t.edgeView===null)throw new Error(`${xs} edgeView is not available`);if(!Gre(e))throw new Error(`${xs} requires ${fD} and ${mD} on every STEP mesh primitive`);return t}function _v(e,t,n="utf-8"){const r=MD(e.json,e.bin,t);if(!r)return null;const o=new Uint8Array(e.bin.buffer,r.byteOffset,r.byteLength);return JSON.parse(new TextDecoder(String(n||"utf-8")).decode(o))}function Ure(e){const t=Av(e),n=Nv(t),r=_v(t,n.indexView,n.encoding);if(!vf(r))throw new Error(`${xs} indexView is invalid`);if(!c0(r.schemaVersion))throw new Error(`Unsupported ${xs} index schemaVersion ${r.schemaVersion||"unknown"}; expected ${gh}`);return r}function Wre(e){const t=Av(e),n=Nv(t),r=_v(t,n.selectorView,n.encoding);if(!vf(r))throw new Error(`${xs} selectorView is not available`);if(!c0(r.schemaVersion))throw new Error(`Unsupported ${xs} selector schemaVersion ${r.schemaVersion||"unknown"}; expected ${gh}`);if(r?.buffers?.littleEndian===!1)throw new Error("Big-endian selector buffers are not supported");return{manifest:r,buffers:ID(r,t)}}function Hre(e){const t=Av(e),n=Nv(t),r=_v(t,n.edgeView,n.encoding);if(!vf(r))throw new Error(`${xs} edgeView is not available`);if(!c0(r.schemaVersion))throw new Error(`Unsupported ${xs} edgeView schemaVersion ${r.schemaVersion||"unknown"}; expected ${gh}`);if(String(r.profile||"")!=="surface-edges")throw new Error(`${xs} edgeView has unsupported profile ${r.profile||"unknown"}`);if(r?.buffers?.littleEndian===!1)throw new Error("Big-endian edgeView buffers are not supported");return{manifest:r,buffers:ID(r,t)}}async function Kre(e,{signal:t}={}){const n=await Is(mE,e,async()=>{const r=await Mf(e,{signal:t});return Cf(r,e,"GLB topology asset"),Ure(r)},{cachePending:!t});return ns(mE,e,n)}function Xre(e){return As(mE,e)}async function Yre(e,{signal:t}={}){const n=e,r=await Is(dE,n,async()=>{const o=await Mf(e,{signal:t});return Cf(o,e,"GLB selector topology asset"),Wre(o)},{cachePending:!t});return ns(dE,n,r)}function qre(e){return As(dE,e)}async function Zre(e,{signal:t}={}){const n=e,r=await Is(fE,n,async()=>{const o=await Mf(e,{signal:t});return Cf(o,e,"GLB display edge topology asset"),Hre(o)},{cachePending:!t});return ns(fE,n,r)}function Jre(e){return As(fE,e)}async function Qre(e,{signal:t}={}){const n=await Is(pE,e,async()=>{const r=await bh(e,{signal:t});return lne(r,{fileRef:"",sourceUrl:e})},{cachePending:!t});return ns(pE,e,n)}function eoe(e){return As(pE,e)}async function toe(e,{signal:t}={}){const n=await Is(hE,e,async()=>{const r=await bh(e,{signal:t});return Pne(r,{fileRef:"",sourceUrl:e})},{cachePending:!t});return ns(hE,e,n)}function noe(e){return As(hE,e)}function AD(e){return String(e||"")}async function ND(e,{signal:t}={}){const n=AD(e),r=await Is(gE,n,async()=>{const[o,{parseUrdf:i}]=await Promise.all([bh(e,{signal:t}),_o(()=>import("./parseUrdf-DG2FpxUV.js"),__vite__mapDeps([0,1,2,3,4]))]);return i(o,{sourceUrl:e})},{cachePending:!t});return ns(gE,n,r)}function roe(e){return As(gE,AD(e))}function _D(e,t=""){return[e,t].filter(Boolean).join("::")}async function ooe(e,{signal:t,urdfUrl:n=""}={}){const r=_D(e,n),o=await Is(bE,r,async()=>{const[i,s,{parseSrdf:a,motionFromSrdf:l}]=await Promise.all([bh(e,{signal:t}),ND(n,{signal:t}),_o(()=>import("./parseSrdf-5nF_MoHR.js"),[])]),u=a(i,{sourceUrl:e,urdfData:s});return{srdfData:u,urdfData:{...s,motion:l(u),srdf:u}}},{cachePending:!t});return ns(bE,r,o)}function ioe(e,{urdfUrl:t=""}={}){return As(bE,_D(e,t))}function TD(e){return String(e||"")}async function soe(e,{signal:t}={}){const n=TD(e),r=await Is(yE,n,async()=>{const[o,{parseSdf:i}]=await Promise.all([bh(e,{signal:t}),_o(()=>import("./parseSdf-D6QEkqBW.js"),__vite__mapDeps([5,1,2,3,4]))]);return i(o,{sourceUrl:e})},{cachePending:!t});return ns(yE,n,r)}function aoe(e){return As(yE,TD(e))}const Hc=new Map;function RD(e){return String(e||"").trim()}function loe(e){const t=String(e||"").trim();if(!t)throw new Error("Missing implicit CAD module URL");return t}async function coe(e,{signal:t}={}){const n=RD(e);if(!n)throw new Error("Missing implicit CAD module URL");if(t?.aborted)throw new DOMException("The operation was aborted.","AbortError");if(!Hc.has(n)){let o;o=import(loe(n)).then(i=>{const s=pf(i,{sourceUrl:n});return Hc.get(n)===o&&Hc.set(n,s),s}).catch(i=>{throw Hc.delete(n),i}),Hc.set(n,o)}const r=Hc.get(n);return!r||typeof r.then!="function"||!t?r:new Promise((o,i)=>{const s=()=>{t.removeEventListener?.("abort",s),i(new DOMException("The operation was aborted.","AbortError"))};if(t.aborted){s();return}t.addEventListener?.("abort",s,{once:!0}),r.then(a=>{t.removeEventListener?.("abort",s),o(a)},a=>{t.removeEventListener?.("abort",s),i(a)})})}function uoe(e){const t=Hc.get(RD(e));return t&&typeof t.then!="function"?t:null}const _y=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),doe=/^#(?:[0-9a-fA-F]{3}){1,2}$/,ib=32,sb=24,vS=12;function CS(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function SE(e){const t=String(e||"").trim();if(!doe.test(t))return null;const n=t.length===4?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t;return[CS(Number.parseInt(n.slice(1,3),16)/255),CS(Number.parseInt(n.slice(3,5),16)/255),CS(Number.parseInt(n.slice(5,7),16)/255)]}function es(e,t=_y){return!Array.isArray(e)||e.length!==16?[...t]:e.map((n,r)=>Number.isFinite(Number(n))?Number(n):t[r])}function d0(e,t=[0,0,1]){return!Array.isArray(e)||e.length<3?[...t]:[Number.isFinite(Number(e[0]))?Number(e[0]):t[0],Number.isFinite(Number(e[1]))?Number(e[1]):t[1],Number.isFinite(Number(e[2]))?Number(e[2]):t[2]]}function PD(e){const[t,n,r]=d0(e,[0,0,1]),o=Math.hypot(t,n,r);return o<=1e-9?[0,0,1]:[t/o,n/o,r/o]}function Fd(e,t){const n=es(e),r=es(t),o=new Array(16).fill(0);for(let i=0;i<4;i+=1)for(let s=0;s<4;s+=1){let a=0;for(let l=0;l<4;l+=1)a+=n[i*4+l]*r[l*4+s];o[i*4+s]=a}return o}function foe(e,t,n){return[1,0,0,Number.isFinite(Number(e))?Number(e):0,0,1,0,Number.isFinite(Number(t))?Number(t):0,0,0,1,Number.isFinite(Number(n))?Number(n):0,0,0,0,1]}function moe(e,t,n){const r=Number.isFinite(Number(e))?Number(e):0,o=Number.isFinite(Number(t))?Number(t):0,i=Number.isFinite(Number(n))?Number(n):0,s=Math.sin(r),a=Math.cos(r),l=Math.sin(o),u=Math.cos(o),d=Math.sin(i),m=Math.cos(i);return[m*u,m*l*s-d*a,m*l*a+d*s,0,d*u,d*l*s+m*a,d*l*a-m*s,0,-l,u*s,u*a,0,0,0,0,1]}function Hae(e){const t=Array.isArray(e)?e:[];return Fd(foe(t[0],t[1],t[2]),moe(t[3],t[4],t[5]))}function poe(e,t){const[n,r,o]=PD(e),i=Math.cos(t),s=Math.sin(t),a=1-i;return[i+n*n*a,n*r*a-o*s,n*o*a+r*s,0,r*n*a+o*s,i+r*r*a,r*o*a-n*s,0,o*n*a-r*s,o*r*a+n*s,i+o*o*a,0,0,0,0,1]}function Ty(e,t){const n=es(e),[r,o,i]=d0(t,[0,0,0]);return[n[0]*r+n[1]*o+n[2]*i+n[3],n[4]*r+n[5]*o+n[6]*i+n[7],n[8]*r+n[9]*o+n[10]*i+n[11]]}function OD(e){const t=es(e);return[t[0],t[4],t[8],-(t[0]*t[3]+t[4]*t[7]+t[8]*t[11]),t[1],t[5],t[9],-(t[1]*t[3]+t[5]*t[7]+t[9]*t[11]),t[2],t[6],t[10],-(t[2]*t[3]+t[6]*t[7]+t[10]*t[11]),0,0,0,1]}function hoe(e,t){const n=Array.isArray(e?.min)?e.min:[0,0,0],r=Array.isArray(e?.max)?e.max:[0,0,0],i=[[n[0],n[1],n[2]],[n[0],n[1],r[2]],[n[0],r[1],n[2]],[n[0],r[1],r[2]],[r[0],n[1],n[2]],[r[0],n[1],r[2]],[r[0],r[1],n[2]],[r[0],r[1],r[2]]].map(u=>Ty(t,u)),s=i.map(u=>u[0]),a=i.map(u=>u[1]),l=i.map(u=>u[2]);return{min:[Math.min(...s),Math.min(...a),Math.min(...l)],max:[Math.max(...s),Math.max(...a),Math.max(...l)]}}function qp(e){const t=(Array.isArray(e)?e:[]).filter(Boolean);if(!t.length)return{min:[0,0,0],max:[0,0,0]};const n=t.flatMap(i=>[i.min[0],i.max[0]]),r=t.flatMap(i=>[i.min[1],i.max[1]]),o=t.flatMap(i=>[i.min[2],i.max[2]]);return{min:[Math.min(...n),Math.min(...r),Math.min(...o)],max:[Math.max(...n),Math.max(...r),Math.max(...o)]}}function goe(e){const t=Array.isArray(e?.joints)?e.joints:[];return Object.fromEntries(t.filter(n=>String(n?.type||"")!=="fixed"&&!n?.mimic).map(n=>[String(n?.name||""),Number(n?.defaultValueDeg)||0]).filter(([n])=>n))}function uc(e,t){const n=Number(e?.defaultValueDeg)||0,r=String(e?.type||"");if(r==="fixed")return n;const o=Number.isFinite(Number(t))?Number(t):n;if(r==="continuous")return o;const i=Number.isFinite(Number(e?.minValueDeg))?Number(e.minValueDeg):o,s=Number.isFinite(Number(e?.maxValueDeg))?Number(e.maxValueDeg):o;return Math.min(Math.max(o,i),Math.max(i,s))}function kD(e){const t=String(e?.type||"fixed");return t==="continuous"||t==="revolute"}function boe(e,t){const n=uc(e,t);return kD(e)?n*Math.PI/180:n}function yoe(e,t){const n=Number.isFinite(Number(t))?Number(t):0;return kD(e)?n*180/Math.PI:n}function xoe(e,t){const[n,r,o]=PD(e),i=Number.isFinite(Number(t))?Number(t):0;return[1,0,0,n*i,0,1,0,r*i,0,0,1,o*i,0,0,0,1]}function Soe(e,t){const n=String(e?.type||"fixed"),r=es(e?.originTransform),o=es(e?.preMotionTransform,r),i=es(e?.postMotionTransform);if(n==="fixed")return Fd(o,i);const s=d0(e?.axis??e?.axisInJointFrame??e?.axisInParentFrame,[0,0,1]);let a;if(n==="prismatic")a=xoe(s,uc(e,t));else{const l=uc(e,t)*Math.PI/180;a=poe(s,l)}return Fd(Fd(o,a),i)}function DD(e,t,n,r=new Set){const o=String(e?.name||"");if(!e?.mimic)return uc(e,n?.[o]);if(r.has(o))return uc(e,e?.defaultValueDeg);r.add(o);const i=e.mimic,s=t.get(String(i.joint||"")),a=s?DD(s,t,n,r):Number(n?.[i.joint])||0;r.delete(o);const l=s?boe(s,a):a,u=Number.isFinite(Number(i.multiplier))?Number(i.multiplier):1,d=Number.isFinite(Number(i.offset))?Number(i.offset):0;return uc(e,yoe(e,u*l+d))}function Tv(e,t={}){const n=String(e?.rootLink||""),r=es(e?.rootWorldTransform),o=Array.isArray(e?.joints)?e.joints:[],i=new Map(o.map(u=>[String(u?.name||""),u]).filter(([u])=>u)),s=new Map;if(!n)return s;const a=new Map;for(const u of o){const d=String(u?.parentLink||"");if(!d)continue;const m=a.get(d)||[];m.push(u),a.set(d,m)}const l=(u,d)=>{s.set(u,d);const m=a.get(u)||[];for(const p of m){const g=String(p?.childLink||"");if(!g)continue;const x=DD(p,i,t),y=Fd(d,Soe(p,x));l(g,y)}};return l(n,r),s}function EE(e,t,n,r){const o=String(n||"").trim(),i=String(r||"").trim();if(!o||!i)return null;const s=Tv(e,t),a=s.get(o),l=s.get(i);return!a||!l?null:Ty(OD(l),Ty(a,[0,0,0]))}function Eoe(e,t,n,r){const o=String(r||"").trim();if(!o)return null;const s=Tv(e,t).get(o);return s?Ty(OD(s),n):null}function woe(e,t,n){const r=t||n;return r?e instanceof Map?e.get(r)||null:e&&typeof e=="object"&&e[r]||null:null}function Rv(e,t){return{min:e,max:t}}function Pv(e,t,n,r){return{vertices:new Float32Array(e),normals:new Float32Array(t),indices:new Uint32Array(n),colors:new Float32Array(0),edge_indices:new Uint32Array(0),bounds:r,has_source_colors:!1}}function voe(e){const[t,n,r]=d0(e,[1,1,1]),o=t/2,i=n/2,s=r/2,a=[],l=[],u=[],d=[[[1,0,0],[[o,-i,-s],[o,i,-s],[o,i,s],[o,-i,s]]],[[-1,0,0],[[-o,i,-s],[-o,-i,-s],[-o,-i,s],[-o,i,s]]],[[0,1,0],[[-o,i,-s],[o,i,-s],[o,i,s],[-o,i,s]]],[[0,-1,0],[[o,-i,-s],[-o,-i,-s],[-o,-i,s],[o,-i,s]]],[[0,0,1],[[-o,-i,s],[o,-i,s],[o,i,s],[-o,i,s]]],[[0,0,-1],[[-o,i,-s],[o,i,-s],[o,-i,-s],[-o,-i,-s]]]];for(const[m,p]of d){const g=a.length/3;for(const x of p)a.push(...x),l.push(...m);u.push(g,g+1,g+2,g,g+2,g+3)}return Pv(a,l,u,Rv([-o,-i,-s],[o,i,s]))}function Coe(e,t){const n=Number.isFinite(Number(e))?Number(e):.5,r=(Number.isFinite(Number(t))?Number(t):1)/2,o=[],i=[],s=[];for(let a=0;aI.bounds)),parts:S,has_source_colors:b,lightweightGeometry:!0,geometrySource:{type:"urdf-source-parts",urdfData:e,meshesByUrl:t}}}let i=0,s=0,a=!1;for(const S of r){const b=S.partMesh;i+=Math.floor((b.vertices?.length||0)/3),s+=b.indices?.length||0;const I=String(S.visual?.color||"").trim();a||=dT(I,b)}const l=a,u=new Float32Array(i*3),d=new Float32Array(i*3),m=new Uint32Array(s),p=l?new Float32Array(i*3).fill(1):new Float32Array(0),g=[];let x=0,y=0;for(let S=0;SS.bounds)),parts:g,has_source_colors:l}}function wE(e){return!!e?.has_source_colors&&e.colors?.length>0&&e.colors.length===e.vertices?.length}function dT(e,t){return!!SE(e)||!e&&wE(t)}function _oe(e,t,n={},r=null){const o=Tv(e,n);if(r instanceof Map)for(const[l,u]of r.entries())o.set(String(l||""),es(u));else if(r&&typeof r=="object")for(const[l,u]of Object.entries(r))o.set(String(l||""),es(u));const i=Array.isArray(t?.parts)?t.parts:[],s=t?.geometrySource&&typeof t.geometrySource=="object"?t.geometrySource:t,a=i.map(l=>{const u=o.get(String(l?.linkName||""))||[..._y],d=es(l?.localTransform),m=Fd(u,d),p=l?.sourceBounds||l?.bounds;return{...l,transform:m,bounds:hoe(p,m)}});return{meshData:{...t,geometrySource:s,bounds:qp(a.map(l=>l.bounds)),parts:a},linkWorldTransforms:o}}function Toe(e,t,n={},r=null){const o=_oe(e,t,n,r);return!t||typeof t!="object"?o:(t.geometrySource=o.meshData.geometrySource||t.geometrySource||t,t.bounds=o.meshData.bounds,t.parts=o.meshData.parts,{...o,meshData:t})}const fT=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);function Roe(e){return!Array.isArray(e)||e.length!==16?[...fT]:e.map((t,n)=>Number.isFinite(Number(t))?Number(t):fT[n])}function Poe(e){const t=e?.assembly?.mesh;return t&&typeof t=="object"?t:null}function mT(e){return String(Poe(e)?.addressing||"").trim()==="gltf-node-extras"}function jD(e){const t=e?.assembly?.root;return t&&typeof t=="object"?t:null}function MS(e){if(!Array.isArray(e)||e.length<3)return null;const t=e.slice(0,3).map(n=>Number(n));return t.every(n=>Number.isFinite(n))?t:null}function pT(e){if(!e||typeof e!="object")return null;const t={part:String(e.part||"").trim(),frame:String(e.frame||"").trim()},n=MS(e.position),r=MS(e.orientation);n&&(t.position=n),r&&(t.orientation=r);const o=e.axes&&typeof e.axes=="object"?e.axes:null;if(o){const i={};for(const s of["x","y","z"]){const a=MS(o[s]);a&&(i[s]=a)}Object.keys(i).length&&(t.axes=i)}return t.position||t.orientation||t.part||t.frame?t:null}function Ooe(e){const t=e?.assemblyMates;return Array.isArray(t)?t.filter(n=>n&&typeof n=="object").map((n,r)=>{const o=String(n.id||`m${r+1}`).trim()||`m${r+1}`;return{id:o,label:String(n.label||o).trim()||o,sourceLabel:String(n.sourceLabel||n.name||"").trim(),type:String(n.type||n.relation||"mate").trim(),relation:String(n.relation||n.type||"mate").trim(),fixed:String(n.fixed||"").trim(),moving:String(n.moving||"").trim(),parameters:n.parameters&&typeof n.parameters=="object"?n.parameters:{},fixedEndpoint:pT(n.fixedEndpoint),movingEndpoint:pT(n.movingEndpoint)}}):[]}function Ov(e){const t=[],n=e?[e]:[];for(;n.length;){const r=n.pop(),o=Array.isArray(r?.children)?r.children:[];if(o.length){for(let i=o.length-1;i>=0;i-=1)n.push(o[i]);continue}String(r?.nodeType||"").trim()==="part"&&t.push(r)}return t}function hT(e){const t=[],n=e?[e]:[];for(;n.length;){const r=n.pop();t.push(r);const o=Array.isArray(r?.children)?r.children:[];for(let i=o.length-1;i>=0;i-=1)n.push(o[i])}return t}function oc(e,t){const n=String(t||"").trim();if(!e||!n||n==="root")return e||null;const r=[e];for(;r.length;){const o=r.pop();if(String(o?.id||"").trim()===n)return o;const i=Array.isArray(o?.children)?o.children:[];for(let s=i.length-1;s>=0;s-=1)r.push(i[s])}return null}function koe(e){return String(e?.id||"").trim()||"root"}function Zp(e){return Ov(e).map(t=>String(t?.id||"").trim()).filter(Boolean)}function Doe(e){const t=new Map;for(const n of Array.isArray(e)?e:[]){const r=String(n?.id||"").trim();if(!r)continue;const o=Array.isArray(n?.leafPartIds)&&n.leafPartIds.length?n.leafPartIds:Zp(n);for(const i of o){const s=String(i||"").trim();s&&t.set(s,r)}}return t}function joe(e,{pickPartIdMap:t,validLeafPartIds:n=[]}={}){const r=String(e||"").trim();if(!r)return"";const o=n instanceof Set?n:new Set((Array.isArray(n)?n:[]).map(s=>String(s||"").trim()).filter(Boolean)),i=t instanceof Map?String(t.get(r)||"").trim():"";return i||(o.size&&o.has(r)?r:i||r)}function Loe(e,{assemblyPartMap:t,fallbackPartId:n="",validLeafPartIds:r=[]}={}){const o=String(e||"").trim(),i=r instanceof Set?r:new Set((Array.isArray(r)?r:[]).map(u=>String(u||"").trim()).filter(Boolean)),s=u=>!i.size||i.has(u),a=u=>{const d=new Set,m=[];for(const p of Array.isArray(u)?u:[]){const g=String(p||"").trim();!g||d.has(g)||!s(g)||(d.add(g),m.push(g))}return m};if(o){const u=t instanceof Map&&t.get(o)||null,d=a(u?Zp(u):[o]);if(d.length)return d}const l=String(n||"").trim();return a([l])}function ab(e){return String(e?.occurrenceId||e?.id||"").trim()}function Gc(e,t){return Math.max(0,Math.floor(Number(e?.[t])||0))}function Foe(e,t){return[String(e?.occurrenceId||"").trim(),String(e?.id||"").trim()].filter(Boolean).some(r=>t.has(r))}function zoe(e,t){return[String(e?.occurrenceId||"").trim(),String(e?.id||"").trim()].filter(Boolean).some(r=>t.some(o=>r.startsWith(o)))}function Boe(e,t){const n=Array.isArray(e?.parts)?e.parts:[],r=new Set([t?.occurrenceId,t?.id].map(s=>String(s||"").trim()).filter(Boolean)),o=n.filter(s=>Foe(s,r));if(o.length)return o;const i=[...r].map(s=>`${s}.`);return i.length?n.filter(s=>zoe(s,i)):[]}function Voe(e,t){const n=jD(e);if(!n)throw new Error("Assembly topology is missing assembly.root");const r=Ov(n),o=[],i=[];for(const T of r){const k=String(T?.id||T?.occurrenceId||"").trim(),z=String(T?.occurrenceId||T?.id||"").trim(),Y=Boe(t,T);if(!Y.length){const K=z||k;K&&i.push(K);continue}o.push({manifestPart:T,sourceParts:Y})}if(!o.length)throw new Error("Assembly topology did not match any renderable GLB nodes");let s=0,a=0;for(const{sourceParts:T}of o)for(const k of T)s+=Gc(k,"vertexCount"),a+=Gc(k,"triangleCount")*3;const l=t?.vertices||new Float32Array(0),u=t?.normals||new Float32Array(0),d=t?.colors||new Float32Array(0),m=t?.surfaceEdgeBarycentric||new Float32Array(0),p=t?.surfaceEdgeClass||new Uint8Array(0),g=t?.indices||new Uint32Array(0),x=d.length===l.length&&d.length>0,y=m.length===l.length&&p.length===l.length&&l.length>0,S=new Float32Array(s*3),b=new Float32Array(s*3),I=x?new Float32Array(s*3):new Float32Array(0),A=y?new Float32Array(s*3):new Float32Array(0),N=y?new Uint8Array(s*3):new Uint8Array(0),P=new Uint32Array(a),R=[];let v=0,C=0;for(const{manifestPart:T,sourceParts:k}of o){const z=String(T?.id||T?.occurrenceId||"").trim(),Y=String(T?.occurrenceId||T?.id||"").trim(),K=k[0],J=v,G=Math.floor(C/3),Q=[];for(const W of k){const Z=Gc(W,"vertexOffset"),Ee=Gc(W,"vertexCount"),re=Gc(W,"triangleOffset"),be=Gc(W,"triangleCount"),_e=Math.floor(C/3)-G;Q.push({occurrenceId:ab(W),primitiveIndex:Gc(W,"primitiveIndex"),triangleOffset:_e,triangleCount:be});const Ie=Z*3,oe=Ie+Ee*3;S.set(l.subarray(Ie,oe),v*3),u.length>=oe&&b.set(u.subarray(Ie,oe),v*3),x&&d.length>=oe&&I.set(d.subarray(Ie,oe),v*3),y&&m.length>=oe&&A.set(m.subarray(Ie,oe),v*3),y&&p.length>=oe&&N.set(p.subarray(Ie,oe),v*3);const me=re*3,se=me+be*3;for(let Ae=me;AeW.bounds));R.push({...K,...T,id:z||Y||ab(K),occurrenceId:Y||z||ab(K),name:$,label:$,nodeType:"part",sourceKind:String(T?.sourceKind||"").trim(),sourcePath:D,partSourcePath:D,sourceBounds:ie,bounds:T?.bbox||ie,transform:Roe(T?.worldTransform||T?.transform),hasSourceColors:$oe(T)&&(x||k.some(W=>!!W.hasSourceColors||!!W.color)),vertexOffset:J,vertexCount:v-J,triangleOffset:G,triangleCount:Math.floor(C/3)-G,sourcePartRanges:Q,edgeIndexOffset:0,edgeIndexCount:0})}return{...t,vertices:S,indices:P,normals:b,colors:I,surfaceEdgeBarycentric:A,surfaceEdgeClass:N,edge_indices:new Uint32Array(0),parts:R,bounds:qp(R.map(T=>T.bounds))||t?.bounds,assemblyRoot:n,assemblyMates:Ooe(e),meshlessLeafPartIds:i,partTransformsBaked:!0,has_source_colors:x}}function $oe(e){return e?.useSourceColors!==!1}async function Goe(e,t,n){const r=Array.isArray(e)?e:[],o=Math.min(r.length,Math.max(1,Math.floor(Number(t)||1))),i=new Array(r.length);let s=0;async function a(){for(;sa())),i}function gT(e){return e===B.STL||e===B.THREE_MF||e===B.GLB?e:""}function Uoe(e){const t=gT(gA(e,{baseUrl:typeof window<"u"?window.location.href:""}));if(t)return t;try{const n=new URL(e,typeof window<"u"?window.location.href:"http://localhost/");for(const r of["file","path"]){const o=n.searchParams.get(r),i=gT(gA(o||"",{baseUrl:n.href}));if(i)return i}}catch{}return""}function Woe(e){return e===B.STL||e===B.THREE_MF||e===B.GLB?e:B.GLB}function LD(e,{fallback:t=B.GLB}={}){return Uoe(e)||Woe(t)}function FD(e,t={}){const n=LD(e,t);return n===B.STL?zre(e):n===B.THREE_MF?Vre(e):CD(e)}async function zD(e,t={}){const n=LD(e,t);return n===B.STL?Fre(e,t):n===B.THREE_MF?Bre(e,t):vD(e,t)}const BD=32*1024*1024,Hoe=1e6,Koe=160*1024*1024;function Xoe(e){return ArrayBuffer.isView(e)&&Number(e.byteLength)||0}function VD(e){return or(e)===B.STEP?WO(e,"glb"):0}function Yoe(e){return VD(e)>0}function $D(e){return VD(e)>=BD}function qoe(e){return or(e)===B.GLB&&nq(e)>=BD}function GD(e){return $D(e)||qoe(e)}function Zoe(e){const t=Math.floor((Number(e?.indices?.length)||0)/3),n=Array.isArray(e?.parts)?e.parts.reduce((r,o)=>{const i=Number(o?.triangleCount);return r+(Number.isFinite(i)&&i>0?i:0)},0):0;return{triangleCount:Math.max(t,n),typedArrayBytes:[e?.vertices,e?.indices,e?.normals,e?.colors,e?.edge_indices,e?.surfaceEdgeBarycentric,e?.surfaceEdgeClass,e?.guide_line_segments].reduce((r,o)=>r+Xoe(o),0)}}function Joe(e){const t=Zoe(e);return t.triangleCount>=Hoe||t.typedArrayBytes>=Koe}const bT=3;function IS(e){if(!Array.isArray(e)||e.length<3)return null;const t=e.slice(0,3).map(n=>Number(n));return t.every(n=>Number.isFinite(n))?t:null}function yT(e){if(!e||typeof e!="object")return null;const t={part:String(e.part||"").trim(),frame:String(e.frame||"").trim()},n=IS(e.position),r=IS(e.orientation);n&&(t.position=n),r&&(t.orientation=r);const o=e.axes&&typeof e.axes=="object"?e.axes:null;if(o){const i={};for(const s of["x","y","z"]){const a=IS(o[s]);a&&(i[s]=a)}Object.keys(i).length&&(t.axes=i)}return t.position||t.orientation||t.part||t.frame?t:null}function UD(e){const t=e?.assemblyMates;return Array.isArray(t)?t.filter(n=>n&&typeof n=="object").map((n,r)=>{const o=String(n.id||`m${r+1}`).trim()||`m${r+1}`;return{id:o,label:String(n.label||o).trim()||o,sourceLabel:String(n.sourceLabel||n.name||"").trim(),type:String(n.type||n.relation||"mate").trim(),relation:String(n.relation||n.type||"mate").trim(),fixed:String(n.fixed||"").trim(),moving:String(n.moving||"").trim(),parameters:n.parameters&&typeof n.parameters=="object"?n.parameters:{},fixedEndpoint:yT(n.fixedEndpoint),movingEndpoint:yT(n.movingEndpoint)}}):[]}function Si(e){e.current?.abort(),e.current=null}function xT(){return typeof window>"u"||typeof window.setTimeout!="function"?Promise.resolve():new Promise(e=>{window.setTimeout(e,0)})}function Qoe(){if(typeof DOMException=="function")return new DOMException("The operation was aborted.","AbortError");const e=new Error("The operation was aborted.");return e.name="AbortError",e}function eie(){const e=typeof navigator<"u"?Number(navigator.hardwareConcurrency):0;return!Number.isFinite(e)||e<=0?bT:Math.max(2,Math.min(bT,Math.floor(e/2)))}function ST(e){return[...new Set((Array.isArray(e?.links)?e.links:[]).flatMap(t=>Array.isArray(t?.visuals)?t.visuals:[]).map(t=>String(t?.meshUrl||"").trim()).filter(Boolean))]}async function tie(e,{signal:t,onProgress:n}={}){const r=e.length;let o=0;return n?.(o,r),Goe(e,eie(),async i=>{if(t?.aborted)throw Qoe();await xT();const s=await zD(i,{signal:t,fallback:B.STL});return o+=1,n?.(o,r),await xT(),s})}function nie(e){return FD(Qw(e),{fallback:Iu(e)})}function rie(e,t){return zD(Qw(e),{...t,fallback:Iu(e),preferWorker:GD(e)})}function oie(e,t=null){return{...e,parts:null,assemblyRoot:jD(t),assemblyMates:UD(t)}}function iie({entryHasMesh:e,entryHasReferences:t,entryHasDisplayEdges:n=()=>!1,entryHasDxf:r,entryHasGcode:o,buildNormalizedReferenceState:i}){const[s,a]=f.useState(null),[l,u]=f.useState(!1),[d,m]=f.useState(""),[p,g]=f.useState(""),[x,y]=f.useState(ke.READY),[S,b]=f.useState(""),[I,A]=f.useState(null),[N,P]=f.useState(ke.PENDING),[R,v]=f.useState(""),[C,T]=f.useState(""),[k,z]=f.useState(null),[Y,K]=f.useState(ke.PENDING),[J,G]=f.useState(""),[Q,D]=f.useState(""),[$,ie]=f.useState(null),[W,Z]=f.useState(ke.PENDING),[Ee,re]=f.useState(""),[be,_e]=f.useState(""),[Ie,oe]=f.useState(null),[me,se]=f.useState(ke.PENDING),[Ae,we]=f.useState(""),[ct,ut]=f.useState(""),[Tt,Ve]=f.useState(null),[St,wt]=f.useState(Wn.IDLE),[Vn,De]=f.useState(""),[xe,yt]=f.useState(""),[Te,rt]=f.useState(null),[Re,Fe]=f.useState(Wn.IDLE),[on,ht]=f.useState(""),[jt,qt]=f.useState(""),sn=f.useRef(0),Mn=f.useRef(0),fn=f.useRef(0),Bt=f.useRef(0),dt=f.useRef(0),qe=f.useRef(0),Vt=f.useRef(0),We=f.useRef(null),ze=f.useRef(null),Ze=f.useRef(null),vt=f.useRef(null),Tn=f.useRef(null),pe=f.useRef(null),Xe=f.useRef(null),He=f.useCallback(L=>HO(L),[]),Rn=f.useCallback((L,te,fe)=>{const ae=Voe(te,fe);return{file:L.file,kind:L.kind,meshHash:He(L),meshData:{...ae,assemblyMates:UD(te)},assemblyStructureReady:!0,assemblyInteractionReady:!0,assemblyBackgroundError:""}},[He]),xn=f.useCallback((L,te,fe=null)=>{const ae=oie(te,fe);return{file:L.file,kind:L.kind,meshHash:He(L),meshData:ae,assemblyStructureReady:!!ae.assemblyRoot,assemblyInteractionReady:!1,assemblyBackgroundError:""}},[He]),ue=f.useCallback(L=>{if(!e(L))return null;if(L?.kind==="assembly"){const fe=vn(L,"glb"),ae=gy(L),he=CD(fe);if(!he)return null;const ot=Xre(ae);return ot?mT(ot)?Rn(L,ot,he):null:xn(L,he)}const te=nie(L);return te?{file:L.file,kind:L.kind,meshHash:F1(L),meshData:te}:null},[xn,Rn,e]),Rt=f.useCallback(L=>{if(!t(L))return null;const te=qre(KN(L));return te?i(L,te):null},[i,t]),Zt=f.useCallback((L,te)=>({file:L.file,fileRef:String(L?.file||"").trim(),kind:L.kind,displayEdgeHash:zt(L,"displayEdgeTopology"),displayEdgeRuntime:ZU(te)}),[]),qn=f.useCallback(L=>{if(!n(L))return null;const te=Jre(XN(L));return te?Zt(L,te):null},[Zt,n]),fi=f.useCallback(L=>{if(!r(L))return null;const te=eoe(vn(L,"dxf"));return te?{file:L.file,kind:L.kind,dxfHash:zt(L,"dxf"),dxfData:te}:null},[r]),Ct=f.useCallback(L=>{if(!o(L))return null;const te=noe(vn(L,"gcode"));return te?{file:L.file,kind:L.kind,gcodeHash:zt(L,"gcode"),gcodeData:te}:null},[o]),wr=f.useCallback(L=>{if(String(L?.kind||"").trim().toLowerCase()!==B.IMPLICIT)return null;const te=uoe(vn(L,"implicit"));return te?{file:L.file,kind:L.kind,implicitHash:zt(L,"implicit"),model:te}:null},[]),vr=f.useCallback(L=>{const te=String(L?.kind||"").trim().toLowerCase();if(!["urdf","srdf","sdf"].includes(te)||!vn(L,te==="sdf"?"sdf":"urdf"))return null;const ae=te==="srdf"?ioe(vn(L,"srdf"),{urdfUrl:vn(L,"urdf")}):null,he=te==="srdf"?ae?.urdfData:te==="sdf"?aoe(vn(L,"sdf")):roe(vn(L,"urdf"));if(!he)return null;const ot=ST(he),It=ot.map(Ke=>FD(Ke,{fallback:B.STL})).filter(Boolean);if(It.length!==ot.length)return null;const Pt=new Map(ot.map((Ke,en)=>[Ke,It[en]]));return{file:L.file,kind:L.kind,urdfHash:Wp(L),urdfData:he,meshesByUrl:Pt}},[]),Qt=f.useCallback(()=>{sn.current+=1,Si(We),u(!1),m(""),g("")},[]),In=f.useCallback(()=>{Mn.current+=1,Si(ze),T("")},[]),gr=f.useCallback(()=>{fn.current+=1,Si(Ze),D("")},[]),lo=f.useCallback(()=>{Bt.current+=1,Si(vt),_e("")},[]),Mt=f.useCallback(()=>{dt.current+=1,Si(Tn),ut("")},[]),gt=f.useCallback(()=>{qe.current+=1,Si(pe),yt("")},[]),Sn=f.useCallback(()=>{Vt.current+=1,Si(Xe),qt("")},[]),On=f.useCallback(async L=>{Qt();const te=sn.current;if(!e(L)){a(null),y(ke.PENDING),b("");return}const fe=ue(L);if(fe&&(a(fe),y(ke.READY),b(""),L?.kind!=="assembly"||fe.assemblyInteractionReady||fe.assemblyBackgroundError))return;const ae=new AbortController;We.current=ae,u(!0),m(String(L?.file||"").trim()),g(L?.kind==="assembly"?"loading assembly mesh":"loading mesh");const he=L?.kind==="assembly"&&!!fe;let ot=he;he||(y(ke.LOADING),b(""));try{if(L?.kind==="assembly"){const en=vn(L,"glb"),Ne=gy(L);if(!en)throw new Error(`STEP assembly is missing GLB asset: ${L.file||"(unknown)"}`);const Et=fe?.meshData||await vD(en,{signal:ae.signal,preferWorker:GD(L)});if(te!==sn.current)return;fe||(a(xn(L,Et)),y(ke.READY),b(""),ot=!0),g("loading topology");const Pe=await Kre(Ne,{signal:ae.signal});if(te!==sn.current)return;if(fe?.assemblyStructureReady||a(xn(L,Et,Pe)),mT(Pe)){g("building assembly"),a(Rn(L,Pe,Et)),y(ke.READY),b("");return}throw new Error("STEP assembly topology is not self-contained.")}if(!Qw(L)){const en=Iu(L).toUpperCase();throw new Error(`${en} entry is missing ${en} asset: ${L.file||"(unknown)"}`)}const Pt=await rie(L,{signal:ae.signal}),Ke=F1(L);if(te!==sn.current)return;g("building"),a({file:L.file,kind:L.kind,meshHash:Ke,meshData:Pt}),y(ke.READY)}catch(It){if(te!==sn.current||Za(It)||ae.signal.aborted)return;if(L?.kind==="assembly"&&ot){a(Pt=>!Pt||Pt.file!==L.file||Pt.meshHash!==He(L)?Pt:{...Pt,assemblyBackgroundError:It instanceof Error?It.message:String(It)});return}y(ke.ERROR),b(It instanceof Error?It.message:String(It))}finally{te===sn.current&&(u(!1),m(""),g("")),We.current===ae&&(We.current=null)}},[xn,Rn,Qt,e,He,ue]),Kr=f.useCallback(async L=>{gt();const te=qe.current;if(!t(L)){Ve(null),wt(Wn.DISABLED),De("");return}const fe=Rt(L);if(fe){Ve(fe),wt(fe.disabledReason?Wn.DISABLED:Wn.READY),De(fe.disabledReason||"");return}const ae=new AbortController;pe.current=ae,wt(Wn.LOADING),De(""),yt("loading topology");try{const he=await Yre(KN(L),{signal:ae.signal});if(te!==qe.current)return;const ot=i(L,he);Ve(ot),wt(ot.disabledReason?Wn.DISABLED:Wn.READY),De(ot.disabledReason||"")}catch(he){if(te!==qe.current||Za(he)||ae.signal.aborted)return;wt(Wn.ERROR),De(he instanceof Error?he.message:String(he))}finally{pe.current===ae&&(pe.current=null),te===qe.current&&yt("")}},[i,gt,t,Rt]),Xr=f.useCallback(async L=>{Sn();const te=Vt.current;if(!n(L)){rt(null),Fe(Wn.DISABLED),ht("");return}const fe=qn(L);if(fe){rt(fe),Fe(Wn.READY),ht("");return}const ae=new AbortController;Xe.current=ae,Fe(Wn.LOADING),ht(""),qt("loading edges");try{const he=await Zre(XN(L),{signal:ae.signal});if(te!==Vt.current)return;rt(Zt(L,he)),Fe(Wn.READY),ht("")}catch(he){if(te!==Vt.current||Za(he)||ae.signal.aborted)return;rt(null),Fe(Wn.ERROR),ht(he instanceof Error?he.message:String(he))}finally{Xe.current===ae&&(Xe.current=null),te===Vt.current&&qt("")}},[Zt,Sn,n,qn]),Co=f.useCallback(async L=>{In();const te=Mn.current;if(!r(L)){A(null),P(ke.PENDING),v("");return}const fe=fi(L);if(fe){A(fe),P(ke.READY),v("");return}const ae=new AbortController;ze.current=ae,P(ke.LOADING),v(""),T("loading DXF");try{const he=await Qre(vn(L,"dxf"),{signal:ae.signal});if(te!==Mn.current)return;T("building preview"),A({file:L.file,kind:L.kind,dxfHash:zt(L,"dxf"),dxfData:he}),P(ke.READY)}catch(he){if(te!==Mn.current||Za(he)||ae.signal.aborted)return;P(ke.ERROR),v(he instanceof Error?he.message:String(he))}finally{ze.current===ae&&(ze.current=null),te===Mn.current&&T("")}},[In,r,fi]),br=f.useCallback(async L=>{gr();const te=fn.current;if(!o(L)){z(null),K(ke.PENDING),G("");return}const fe=Ct(L);if(fe){z(fe),K(ke.READY),G("");return}const ae=new AbortController;Ze.current=ae,K(ke.LOADING),G(""),D("loading G-code");try{const he=await toe(vn(L,"gcode"),{signal:ae.signal});if(te!==fn.current)return;D("building preview"),z({file:L.file,kind:L.kind,gcodeHash:zt(L,"gcode"),gcodeData:he}),K(ke.READY)}catch(he){if(te!==fn.current||Za(he)||ae.signal.aborted)return;K(ke.ERROR),G(he instanceof Error?he.message:String(he))}finally{Ze.current===ae&&(Ze.current=null),te===fn.current&&D("")}},[gr,o,Ct]),j=f.useCallback(async L=>{lo();const te=Bt.current;if(String(L?.kind||"").trim().toLowerCase()!==B.IMPLICIT){ie(null),Z(ke.PENDING),re("");return}const fe=wr(L);if(fe){ie(fe),Z(ke.READY),re("");return}const ae=new AbortController;vt.current=ae,Z(ke.LOADING),re(""),_e("loading implicit CAD");try{const he=await coe(vn(L,"implicit"),{signal:ae.signal});if(te!==Bt.current)return;ie({file:L.file,kind:L.kind,implicitHash:zt(L,"implicit"),model:he}),Z(ke.READY)}catch(he){if(te!==Bt.current||Za(he)||ae.signal.aborted)return;Z(ke.ERROR),re(he instanceof Error?he.message:String(he))}finally{vt.current===ae&&(vt.current=null),te===Bt.current&&_e("")}},[lo,wr]),de=f.useCallback(async L=>{Mt();const te=dt.current,fe=String(L?.kind||"").trim().toLowerCase();if(!["urdf","srdf","sdf"].includes(fe)){oe(null),se(ke.PENDING),we("");return}if(!vn(L,fe==="sdf"?"sdf":"urdf")){oe(null),se(ke.PENDING),we("");return}const he=vr(L);if(he){oe(he),se(ke.READY),we("");return}const ot=new AbortController;Tn.current=ot,se(ke.LOADING),we(""),ut(fe==="sdf"?"loading SDF":fe==="srdf"?"loading SRDF":"loading URDF");try{const Pt=(fe==="srdf"?await ooe(vn(L,"srdf"),{signal:ot.signal,urdfUrl:vn(L,"urdf")}):fe==="sdf"?{urdfData:await soe(vn(L,"sdf"),{signal:ot.signal})}:{urdfData:await ND(vn(L,"urdf"),{signal:ot.signal})}).urdfData,Ke=ST(Pt);ut(Ke.length?"loading meshes":"building robot");const en=await tie(Ke,{signal:ot.signal,onProgress:(Et,Pe)=>{te===dt.current&&Pe>0&&ut(`loading meshes ${Et}/${Pe}`)}});if(te!==dt.current)return;ut("building robot");const Ne=new Map(Ke.map((Et,Pe)=>[Et,en[Pe]]));oe({file:L.file,kind:L.kind,urdfHash:Wp(L),urdfData:Pt,meshesByUrl:Ne}),se(ke.READY)}catch(It){if(te!==dt.current||Za(It)||ot.signal.aborted)return;se(ke.ERROR),we(It instanceof Error?It.message:String(It))}finally{Tn.current===ot&&(Tn.current=null),te===dt.current&&ut("")}},[Mt,vr]);return f.useEffect(()=>()=>{Si(We),Si(ze),Si(Ze),Si(vt),Si(Tn),Si(pe),Si(Xe)},[]),{meshState:s,setMeshState:a,meshLoadInProgress:l,meshLoadTargetFile:d,meshLoadStage:p,status:x,setStatus:y,error:S,setError:b,dxfState:I,setDxfState:A,dxfStatus:N,setDxfStatus:P,dxfError:R,setDxfError:v,dxfLoadStage:C,gcodeState:k,setGcodeState:z,gcodeStatus:Y,setGcodeStatus:K,gcodeError:J,setGcodeError:G,gcodeLoadStage:Q,implicitState:$,setImplicitState:ie,implicitStatus:W,setImplicitStatus:Z,implicitError:Ee,setImplicitError:re,implicitLoadStage:be,urdfState:Ie,setUrdfState:oe,urdfStatus:me,setUrdfStatus:se,urdfError:Ae,setUrdfError:we,urdfLoadStage:ct,referenceState:Tt,setReferenceState:Ve,referenceStatus:St,setReferenceStatus:wt,referenceError:Vn,setReferenceError:De,referenceLoadStage:xe,displayEdgeState:Te,setDisplayEdgeState:rt,displayEdgeStatus:Re,setDisplayEdgeStatus:Fe,displayEdgeError:on,setDisplayEdgeError:ht,displayEdgeLoadStage:jt,getCachedMeshState:ue,getCachedReferenceState:Rt,getCachedDisplayEdgeState:qn,getCachedDxfState:fi,getCachedGcodeState:Ct,getCachedImplicitState:wr,getCachedUrdfState:vr,cancelMeshLoad:Qt,cancelDxfLoad:In,cancelGcodeLoad:gr,cancelImplicitLoad:lo,cancelUrdfLoad:Mt,cancelReferenceLoad:gt,cancelDisplayEdgeLoad:Sn,loadMeshForEntry:On,loadDxfForEntry:Co,loadGcodeForEntry:br,loadImplicitForEntry:j,loadUrdfForEntry:de,loadReferencesForEntry:Kr,loadDisplayEdgesForEntry:Xr}}const sie="[data-slot='sidebar-wrapper']";function aie(){return document.querySelector(sie)}function AS(e){aie()?.style.setProperty("--sidebar-width",`${e}px`)}function ET(e=1600){const t=Number(window.innerWidth);return Number.isFinite(t)&&t>0?t:e}function wT(e,t=0){const n=Number(e);return Number.isFinite(n)?Math.max(t,n):t}function lb(e,t,n){const r=Number(e),o=Number(t),i=Number(n),s=Number.isFinite(o)&&o>0?o:0,a=Number.isFinite(i)&&i>0?Math.max(s,i):s,l=Number.isFinite(r)?r:s;return Math.min(Math.max(l,s),a)}function md({viewportWidth:e,sidebarOpen:t=!1,sheetOpen:n=!1,sidebarWidth:r=0,sheetWidth:o=0,sidebarMinWidth:i=0,sheetMinWidth:s=0,sidebarMaxWidth:a=0,sheetMaxWidth:l=0}={}){if(!t&&!n)return{sidebarWidth:0,sheetWidth:0};const u=Number(a),d=Number(l);if(t&&!n)return{sidebarWidth:lb(r,i,u),sheetWidth:0};if(!t&&n)return{sidebarWidth:0,sheetWidth:lb(o,s,d)};const m=Math.max(0,Number(i)||0),p=Math.max(0,Number(s)||0);let g=lb(r,m,u),x=lb(o,p,d);return{sidebarWidth:g,sheetWidth:x}}function lie({isDesktop:e,setLayoutMode:t,setSidebarOpen:n,setTabToolsOpen:r,setLayoutViewportWidth:o,clampSidebarWidth:i,clampTabToolsWidth:s,setSidebarWidth:a,setTabToolsWidth:l,panelResizeStateRef:u,tabToolsResizeStateRef:d,defaultSidebarWidth:m,sidebarMinWidth:p,tabToolsMinWidth:g,endPanelResize:x,endTabToolsResize:y}){f.useEffect(()=>{const S=()=>{const b=ET();t(zy(b))};return S(),window.addEventListener("resize",S),()=>{window.removeEventListener("resize",S)}},[t]),f.useEffect(()=>{if(!e)return;const S=()=>{o(b=>ET(b)),a(b=>wT(b,p)),l(b=>wT(b,g))};return S(),window.addEventListener("resize",S),()=>{window.removeEventListener("resize",S)}},[e,o,a,l,p,g]),f.useEffect(()=>{const S=I=>{const A=u.current;if(!A)return;const N=A.startWidth+(I.clientX-A.startX);if(N{const I=u.current;if(!I)return;const A=Math.max(p,i(I.latestWidth??I.startWidth));AS(A),a(A),x()};return window.addEventListener("pointermove",S),window.addEventListener("pointerup",b),window.addEventListener("pointercancel",b),()=>{window.removeEventListener("pointermove",S),window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),d.current||(document.body.style.cursor="",document.body.style.userSelect="")}},[i,x,u,m,n,a,p,d]),f.useEffect(()=>{const S=I=>{const A=d.current;if(!A)return;const N=A.startWidth-(I.clientX-A.startX);if(N{d.current&&y()};return window.addEventListener("pointermove",S),window.addEventListener("pointerup",b),window.addEventListener("pointercancel",b),()=>{window.removeEventListener("pointermove",S),window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",b),u.current||(document.body.style.cursor="",document.body.style.userSelect="")}},[s,y,u,r,l,g,d])}function cie({isAssemblyView:e,supportsPartSelection:t,assemblyPartsLoaded:n,selectedEntryHasReferences:r,setSelectedReferenceIds:o,selectedReferenceIdsRef:i,setHoveredListReferenceId:s,setHoveredModelReferenceId:a,assemblyParts:l,validAssemblyPartIds:u,validHiddenPartIds:d,selectedPartIdsRef:m,setSelectedPartIds:p,parseAssemblyPartReferenceSelectionId:g,setHiddenPartIds:x,setHoveredListPartId:y,setHoveredModelPartId:S}){f.useEffect(()=>{e||r||(i.current=[],o([]),s(""),a(""))},[e,r,i,s,a,o]),f.useEffect(()=>{if(!n)return;if(!t){m.current=[],p([]),x([]),y(""),S("");return}const b=new Set((Array.isArray(u)?u:l.map(A=>A.id)).map(A=>String(A||"").trim()).filter(Boolean)),I=new Set((Array.isArray(d)?d:[...b]).map(A=>String(A||"").trim()).filter(Boolean));m.current=m.current.filter(A=>b.has(A)),p(A=>A.filter(N=>b.has(N))),i.current=i.current.filter(A=>{const N=g(A);return!N||b.has(N.partId)}),o(A=>A.filter(N=>{const P=g(N);return!P||b.has(P.partId)})),x(A=>A.filter(N=>I.has(N))),y(A=>A&&!b.has(A)?"":A),S(A=>A&&!b.has(A)?"":A),s(A=>{const N=g(A);return N&&!b.has(N.partId)?"":A}),a(A=>{const N=g(A);return N&&!b.has(N.partId)?"":A})},[l,n,t,u,d,g,i,m,x,y,s,S,a,p,o])}function uie({selectedKey:e="",selectedKeyExists:t=!1,urlSelectionRequested:n=!1,nextSelectedKey:r=""}={}){return!(!n||!r||r===e)}function die({key:e="",createTabRecord:t,initialSelectedTabSnapshot:n=null,fileSessionState:r=null}={}){const o=r?.slices?.tab||null;return t(e,o||n||{})}function fie({manifestEntries:e,cadFileParamForEntry:t=()=>"",cadDirectorySessionBootstrappedRef:n,setOpenTabs:r,applyTabRecord:o,selectedEntryKeyFromUrl:i,createTabRecord:s,initialSelectedTabSnapshot:a=null,upsertTabRecord:l,selectedEntry:u,defaultDocumentTitle:d,selectedKey:m,entryMap:p,buildActiveTabSnapshot:g,catalogEntries:x,manifestRevision:y=0,readCadParam:S=()=>null,activateEntryTab:b,resetActiveDirectory:I,writeCadParam:A,readEntrySessionState:N=()=>null,applyEntrySessionState:P=()=>{}}){const R=f.useRef(y),v=f.useRef(!1);f.useLayoutEffect(()=>{if(n.current)return;n.current=!0;const C=i(e);if(v.current=!!S()&&!C,C){const T=N(C),k=die({key:C,createTabRecord:s,initialSelectedTabSnapshot:a,fileSessionState:T});r(z=>l(z,C,k)),o(k),P(C,T)}},[P,o,s,e,S,N,i,r,l,a,n]),f.useEffect(()=>{const C=tk(u);document.title=C?`${d} | ${C}`:d},[d,u]),f.useLayoutEffect(()=>{const C=!!S(),T=i(x),k=!!(m&&p.has(m));if(uie({selectedKey:m,selectedKeyExists:k,urlSelectionRequested:C,nextSelectedKey:T})){v.current=!1,b(T);return}if(k){r(z=>l(z,m,g()));return}if(!T){if(m){if(y===R.current&&!p.size)return;I()}return}T!==m&&b(T)},[b,g,x,p,y,S,I,i,m,r,l]),f.useEffect(()=>{const C=()=>{const T=i(x);if(T){b(T);return}I()};return window.addEventListener("popstate",C),()=>{window.removeEventListener("popstate",C)}},[b,x,I,i]),f.useEffect(()=>{if(u){A(t(u));return}if(!m){if(!!S()&&(i(x)||S()||v.current&&(y===R.current||!p.size)))return;A("")}},[x,t,y,S,u,i,m,A]),f.useEffect(()=>{m&&r(C=>l(C,m,g()))},[g,m,r,l])}function WD(){return new Map}function mie(e){const t=WD();for(const n of Array.isArray(e)?e:[])t.set(n.id,n);return t}function vT(e){const t=WD();for(const n of Array.isArray(e)?e:[])t.set(n.id,n);return t}function pie({selectedReferencesMatch:e,referenceState:t,isAssemblyView:n,supportsPartSelection:r,assemblyParts:o,assemblyPartMap:i,inspectedAssemblyNodeId:s,inspectedAssemblyPartTopologyReferences:a,selectedReferenceIds:l,selectedPartIds:u,hoveredListReferenceId:d,hoveredModelReferenceId:m,hoveredListPartId:p,hoveredModelPartId:g}){const x=e?Array.isArray(t?.references)?t.references:[]:[],y=f.useMemo(()=>r&&Array.isArray(o)?o:[],[o,r]),S=f.useMemo(()=>i instanceof Map?i:mie(y),[i,y]),b="".trim(),I=f.useMemo(()=>b?[b]:[],[b]),A=f.useMemo(()=>b&&S.get(b)||null,[b,S]),N=f.useMemo(()=>vT(x),[x]),P=n&&!!b&&String(A?.nodeType||"").trim()==="part"&&!(Array.isArray(A?.children)&&A.children.length>0),R=f.useMemo(()=>Array.isArray(a)?a:[],[a]),v=f.useMemo(()=>vT(P?R:x),[x,R,P]),C=String(A?.name||A?.displayName||"the selected part").trim(),T=f.useMemo(()=>l.map(J=>v.get(J)).filter(Boolean),[v,l]),k=f.useMemo(()=>u.map(J=>S.get(J)).filter(Boolean),[S,u]),z=d||m,Y=z&&v.get(z)||null;return{currentReferences:x,assemblyParts:y,assemblyPartMap:S,inspectedAssemblyPartIds:I,inspectedAssemblyPartId:b,inspectedAssemblyPart:A,allReferences:x,mixedReferenceList:x,referenceMap:N,isInspectingAssemblyPart:P,activeReferenceMap:v,inspectedAssemblyPartReferences:R,inspectedAssemblyPartSourceLabel:C,selectedReferences:T,selectedParts:k,hoveredReferenceId:z,hoveredReference:Y,hoveredPartId:p||g||"",visibleReferences:P?R:x,filteredReferences:P?R:x,filteredAssemblyParts:y}}function hie({copyStatus:e,screenshotStatus:t,setCopyStatus:n,setScreenshotStatus:r,previewMode:o,viewerAlertOpen:i,themeSheetOpen:s,tabToolsOpen:a,isDesktop:l,sidebarOpen:u,previewUiStateRef:d,tabToolMode:m,drawingUndoStackRef:p,drawingRedoStackRef:g,handleUndoDrawing:x,handleRedoDrawing:y,setPreviewMode:S,setViewerAlertOpen:b,setThemeMenuOpen:I,setTabToolsOpen:A,setSidebarOpen:N,setTabToolMode:P}){f.useEffect(()=>{if(!(e||t))return;const R=window.setTimeout(()=>{n(""),r("")},2200);return()=>window.clearTimeout(R)},[e,t,n,r]),f.useEffect(()=>{if(!(o||i||s||a||!l&&u))return;const R=v=>{if(!v.defaultPrevented&&!_w(v.target)&&!v.altKey&&(v.metaKey||v.ctrlKey)){const C=String(v.key||"").toLowerCase(),T=C==="y"||C==="z"&&v.shiftKey;if(C==="z"&&!v.shiftKey&&p.current.length){v.preventDefault(),x();return}if(T&&g.current.length){v.preventDefault(),y();return}}if(v.key==="Escape"){if(o){const C=d.current;d.current=null,S(!1),C&&(b(C.viewerAlertOpen),I(C.themeMenuOpen),N(C.sidebarOpen),A(C.tabToolsOpen),P(C.tabToolMode));return}b(!1),I(!1),A(!1),l||N(!1)}};return window.addEventListener("keydown",R),()=>{window.removeEventListener("keydown",R)}},[g,p,y,x,l,s,o,d,I,S,N,P,A,b,u,a,i])}const Qm=Object.freeze({dxf:"",step:"python -m cadpy.step_artifact --repo-root . --step",urdf:"",sdf:""});function ep(e,t){const n=String(e||"").trim();return n?`${n} ${t}`:""}function gie(e,t=null){const n=or(t);return n===B.STEP&&nv(t)==="python"?"":n===B.DXF?ep(Qm.dxf,e):n===B.URDF||n===B.SRDF?String(t?.kind||"").trim().toLowerCase()==="srdf"?"":ep(Qm.urdf,e):n===B.SDF?ep(Qm.sdf,e):n===B.STL||n===B.THREE_MF||n===B.GLB||n===B.GCODE?"":ep(Qm.step,e)}function NS(e,t,n){const r=at(e);if(!r)return null;const o=or(e),i=gie(r,e),s=o===B.STL||o===B.THREE_MF||o===B.GLB||o===B.GCODE,a=o===B.THREE_MF?"3MF":o===B.GLB?"GLB":o===B.GCODE?"G-code":"STL",l=s?`Confirm the ${a} exists in the repo and reload the page.`:"Try reloading the page. If the problem persists, rebuild the render assets for this entry.",u=s?`Confirm the ${a} exists in the repo and reload the page.`:"Rebuild the CAD assets for this entry, then reload the page.",d=o===B.STEP&&e?.artifact?.ok===!1?e?.artifact:null;if(d&&!t){const m=String(d.error||"").trim(),x=d.stale===!0||m==="stale_step_artifact"?"STEP artifact stale":m==="missing_glb"?"STEP artifact missing":"STEP artifact unavailable",y=mv(e);if(!y||!n)return{severity:y?"warning":"error",...y?{blocking:!1}:{},compact:!0,summary:x,title:x,message:dk(d),command:i}}return n?{severity:"error",summary:"Mesh load failed",title:"Failed to load render mesh",message:n,resolution:l,command:i}:t?null:{severity:"error",summary:"Mesh unavailable",title:"No mesh data is available",message:"The selected entry is listed in the CAD catalog but no renderable mesh data could be loaded for it.",resolution:u,command:i}}function bie(e,t,n,r){if(!e)return null;const o=ep(Qm.dxf,e),i=String(r||"").trim();return n?{severity:"error",summary:"DXF load failed",title:"Failed to load DXF flat pattern",message:n,resolution:"Try reloading the page. If the problem persists, rebuild the CAD assets for this entry.",command:o}:/DXF 3D bend preview currently requires vertical bend lines/i.test(i)?null:i?{severity:"warning",summary:"DXF 3D preview unavailable",title:"Failed to build the DXF 3D preview",message:i,resolution:"The flat pattern can still be shown, but the 3D extrusion preview could not be built from the current DXF geometry.",command:o}:t?null:{severity:"error",summary:"DXF unavailable",title:"No DXF flat pattern is available",message:"The selected entry does not have a ready DXF companion asset for the flat-pattern viewer.",resolution:"Rebuild the CAD assets for this entry, then reload the page.",command:o}}function yie(e,t,n){return e?n?{severity:"error",summary:"Implicit CAD load failed",title:"Failed to load implicit CAD module",message:n,resolution:"Check the exported GLSL distance function and reload the page."}:t?null:{severity:"error",summary:"Implicit CAD unavailable",title:"No implicit CAD model is available",message:"The selected entry is listed in the CAD catalog but the implicit CAD module did not load.",resolution:"Confirm the .implicit.js or .implicit.mjs file exists and exports an implicit.js/0.1.0 model."}:null}function HD(e){const t=at(e),n=rq(e);return t&&n?`${t}:${n}`:""}function xie(e){return Array.isArray(e)?e.filter(t=>t&&typeof t=="object").map(t=>({...t,id:String(t.id||"").trim(),label:String(t.label||t.id||"Reference").trim()||"Reference",summary:String(t.summary||t.shortSummary||"").trim(),shortSummary:String(t.shortSummary||t.summary||"").trim(),copyText:String(t.copyText||"").trim(),partId:String(t.partId||"").trim(),entityType:String(t.entityType||"").trim(),selectorType:String(t.selectorType||"").trim(),normalizedSelector:String(t.normalizedSelector||"").trim(),displaySelector:String(t.displaySelector||"").trim()})).filter(t=>t.id):[]}function Sie(e,t=null,{copyCadPath:n,partId:r="",transform:o=null,remapOccurrenceId:i="",remapOccurrencePrefix:s=null}={}){const a=qU(t,{copyCadPath:n||iv(e),partId:r,transform:o,remapOccurrenceId:i,remapOccurrencePrefix:s}),l=xie(a.references);return{fileRef:at(e),kind:e.kind,referenceHash:HD(e),stepRelPath:at(e),stepHash:String(a.stepHash||e?.hash||""),counts:{faces:Number(a.faces?.length||0),edges:Number(a.edges?.length||0)},parts:[],selectorRuntime:a,references:l,disabledReason:""}}function CT(e){const t=String(e||"").trim(),n="assembly-part:";if(t.startsWith(n)){const r=t.slice(n.length).trim();return r?{partId:r}:null}if(t.startsWith("topology|")){const r=t.split("|"),o=String(r[1]||"").trim();return o?{partId:o}:null}return null}function MT(e,t=""){return`selector-ref::${String(t||"").trim()||"root"}`}function IT(e,t,n,r){if(!n)return null;let o=e.get(n);return o||(o={cadPath:r,selectors:[],seenSelectors:new Set},e.set(n,o),t.push({kind:"group",key:n}),o)}function Eie(e,t,n,r=""){const o=String(n||"").trim(),i=String(r||"").trim()||o;return!o||!i||e.has(i)?!1:(e.set(i,o),t.push({kind:"plain",key:i}),!0)}function wie(e,t,n,r,o=""){const i=String(r||"").trim();if(!i)return 0;const s=rh(i);if(!s)return Eie(t,n,i,o),0;const{cadPath:a,selectors:l}=s;if(!l.length){const m=IT(e,n,MT(a,"root"),a);return!m||m.seenSelectors.has("")?0:(m.seenSelectors.add(""),1)}const u=IT(e,n,MT(a,"selectors"),a);if(!u)return 0;let d=0;for(const m of l)u.seenSelectors.has(m)||(u.seenSelectors.add(m),u.selectors.push(m),d+=1);return d}function Gs(e,{allowPlain:t=!1}={}){const n=String(e||"").trim();return n?n.startsWith("#")?n.split(/\s+/)[0]||"":t?n:"":""}function vie(e){const t=new Map,n=new Map,r=[];for(const i of e)wie(t,n,r,String(i?.copyText||"").trim(),String(i?.id||"").trim());return{text:r.map(i=>{if(i.kind==="plain")return n.get(i.key)||"";const s=t.get(i.key);return s?dc({cadPath:s.cadPath,selectors:i.key.endsWith("::selectors")?BS(s.selectors):[]}):""}).map(i=>Gs(i,{allowPlain:!0})).filter(Boolean).join(`
+`)}}function Cie(e,t){const n=[e?.displaySelector,e?.occurrenceId,e?.sourceOccurrenceId,e?.sourceRootTargetOccurrenceId,e?.id].map(r=>{const o=String(r||"").trim();return/^(?:o\d+(?:\.\d+)*(?:\.[sfev]\d+)?|[sfev]\d+|m\d+)$/i.test(o)?o:""}).find(Boolean)||"";return n?dc({selector:n}):""}function _S(e){return e?{id:"step-entry:whole",copyText:dc()}:null}function Mie(e){return String(e?.id||"").trim()}function KD(e,t){const n=Mie(e);return n?dc({selector:n}):""}function km({references:e=[],parts:t=[],mates:n=[],entry:r=null}={}){const o=Array.isArray(e)?[...e]:[],i=[];for(const l of t){const u=Cie(l);if(!u){i.push(String(l?.name||l?.id||"part"));continue}const d=String(l?.id||l?.occurrenceId||"").trim();o.push({id:`assembly-part:${d}`,copyText:u})}for(const l of Array.isArray(n)?n:[]){const u=KD(l);u&&o.push({id:`assembly-mate:${String(l?.id||"").trim()}`,copyText:u})}const{text:s}=vie(o);return{lines:String(s||"").split(`
+`).map(l=>Gs(l,{allowPlain:!0})).filter(Boolean),copiedCount:o.length,missingPartNames:i}}function Iie(e,{limit:t=1}={}){const n=Array.isArray(e)?e:[],r=Math.max(1,Number(t)||1),o=n.map(s=>Gs(s,{allowPlain:!0})).filter(Boolean);return o.length?`Copy ${o.slice(0,r).join(", ")}`:"Copy refs"}function pd(e,t){if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;ni!==r):[...o,r]:o.length===1&&o[0]===r?[]:[r]}const XD=11,YD="custom:",Aie="appearance",kv=1,vE=`cad-viewer:directory-session:v${kv}`,CE=280,ME=365,Nie=280;T2(Rp.settings);function qD(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Jp(e,t=""){return String(e??t)}function tp(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):[]}function ZD(e){return[...new Set(tp(e))]}function JD(e){return Array.isArray(e)?ZD(e):null}function _ie(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function zd(e){const t=Number(e);return!Number.isFinite(t)||t<=0?null:Math.round(t)}function QD(e,t=!1){return typeof e=="boolean"?e:t}function Tie(e){return typeof e=="boolean"?e:null}function Rie(e,t=ME){const n=zd(e),r=zd(t)||zd(ME);return!n||n===r?null:n}function Pie(e,t=CE){const n=zd(e),r=zd(t)||zd(CE);return!n||n===r?null:n}function Dv(e){return nB(e)?Nie:ME}function hd(e){return Array.isArray(e)?[...e]:[]}function gd(e,t){if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n0?n:1}}function ej(e){const t=Jp(e||Jt.FREEHAND);switch(t){case Jt.LINE:case Jt.ARROW:case Jt.DOUBLE_ARROW:case Jt.RECTANGLE:case Jt.CIRCLE:case Jt.FILL:case Jt.ERASE:case Jt.FREEHAND:return t;default:return Jt.FREEHAND}}function Oie(e){return Jp(e||oo.REFERENCES)===oo.DRAW?oo.DRAW:oo.REFERENCES}function cb(e,t,n){if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t)||e.lengthzH(e)},{key:"dxfThicknessMm",defaultValue:0,normalize:e=>{const t=_ie(e,0);return t>0?t:0}},{key:"referenceQuery",defaultValue:"",normalize:Jp},{key:"selectedReferenceIds",defaultValue:[],normalize:tp,clone:hd,equals:gd},{key:"selectedPartIds",defaultValue:[],normalize:tp,clone:hd,equals:gd},{key:"inspectedAssemblyNodeId",defaultValue:"",normalize:e=>Jp(e).trim()},{key:"expandedAssemblyPartIds",defaultValue:[],normalize:tp,clone:hd,equals:gd},{key:"expandedStepTreeNodeIds",defaultValue:[],normalize:ZD,clone:hd,equals:gd},{key:"stepTreeRootShowMore",defaultValue:!1,normalize:QD},{key:"fileSheetOpenSectionIds",defaultValue:null,normalize:JD,clone:e=>Array.isArray(e)?hd(e):null,equals:(e,t)=>Array.isArray(e)||Array.isArray(t)?gd(e||[],t||[]):e===t},{key:"hiddenPartIds",defaultValue:[],normalize:tp,clone:hd,equals:gd},{key:"camera",defaultValue:null,normalize:TT,clone:TT,equals:HR},{key:"drawingTool",defaultValue:Jt.FREEHAND,normalize:ej},{key:"tabToolMode",defaultValue:oo.REFERENCES,normalize:Oie},{key:"drawingStrokes",defaultValue:[],normalize:pa,clone:pa,equals:jv},{key:"drawingUndoStack",defaultValue:[],normalize:ub,clone:ub,equals:PT},{key:"drawingRedoStack",defaultValue:[],normalize:ub,clone:ub,equals:PT}];function IE(e,t={}){const n={};for(const r of e){let o=qD(t||{},r.key)?t[r.key]:void 0;typeof o>"u"&&(o=r.defaultValue),n[r.key]=r.normalize?r.normalize(o,r.defaultValue):o}return n}function Lie(e,t={}){const n=IE(e,t),r={};for(const o of e){const i=n[o.key];r[o.key]=o.clone?o.clone(i):i}return r}function Fie(e,t={},n={}){for(const r of e){const o=IE([r],t)[r.key],i=IE([r],n)[r.key];if(!(r.equals||Object.is)(o,i))return!1}return!0}function zie(e){return String(e||"").trim()}function nj(e,t){try{const n=e.getItem(t);return n?JSON.parse(n):null}catch{return null}}function rj(e,t,n={}){typeof n.onWriteError=="function"&&n.onWriteError({key:e,error:t})}function Lv(e,t,n,r={}){try{return e.setItem(t,JSON.stringify(n)),!0}catch(o){return rj(t,o,r),!1}}function f0(e,t,n={}){try{return e.removeItem(t),!0}catch(r){return rj(t,r,n),!1}}function oj(){return typeof window<"u"?window.sessionStorage:null}function jb(e={},t={}){return{fileViewerOpen:QD(e?.fileViewerOpen,!1),fileViewerExpandedDirectoryIds:JD(e?.fileViewerExpandedDirectoryIds),fileViewerWidthPx:Pie(e?.fileViewerWidthPx,t.defaultFileViewerWidthPx),fileSheetOpen:Tie(e?.fileSheetOpen),fileSheetWidthPx:Rie(e?.fileSheetWidthPx,t.defaultFileSheetWidthPx),theme:dj(e?.theme)}}function Bie(e={},t={}){const n=jb(e,t),r={version:kv};return(n.fileViewerOpen||qD(e||{},"fileViewerOpen"))&&(r.fileViewerOpen=n.fileViewerOpen),Array.isArray(n.fileViewerExpandedDirectoryIds)&&(r.fileViewerExpandedDirectoryIds=n.fileViewerExpandedDirectoryIds),n.fileViewerWidthPx&&(r.fileViewerWidthPx=n.fileViewerWidthPx),typeof n.fileSheetOpen=="boolean"&&(r.fileSheetOpen=n.fileSheetOpen),n.fileSheetWidthPx&&(r.fileSheetWidthPx=n.fileSheetWidthPx),n.theme&&(r.theme=n.theme),Object.keys(r).length>1?r:null}function ij(e={}){const t=e.storage||oj();if(!t)return jb({},e);const n=nj(t,vE);return!n||n.version!==kv?jb({},e):jb(n,e)}function Vie(e={},t={}){const n=t.storage||oj();if(!n)return!0;const r=Bie(e,t);return r?Lv(n,vE,r,t):f0(n,vE,t)}function Sc(e){return String(e||"").trim()}function Ta(e,t=[]){const n=Sc(e);return n&&t.some(r=>r.id===n)?n:""}function $ie(e){return String(e||"").trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"theme"}function Fv(e){return String(e||"").trim().replace(/\s+/g," ")}function sj(e){return`${YD}${$ie(e)}`}function Gie(e,t=[]){const n=sj(e),r=new Set(t.map(o=>o.id));if(!r.has(n))return n;for(let o=2;o<1e3;o+=1){const i=`${n}-${o}`;if(!r.has(i))return i}return`${n}-${Date.now().toString(36)}`}function Uie(e){const t=e?.background||{},n=String(t.type||"").trim().toLowerCase();if(n==="radial")return`radial-gradient(circle at 32% 24%, ${t.radialInner||t.solidColor||"#111827"} 0%, ${t.radialOuter||t.solidColor||"#030712"} 100%)`;if(n==="linear")return`linear-gradient(135deg, ${t.linearStart||t.solidColor||"#111827"} 0%, ${t.solidColor||t.linearStart||"#111827"} 52%, ${t.linearEnd||t.solidColor||"#030712"} 100%)`;const r=t.solidColor||e?.floor?.color||"#111827";return`linear-gradient(135deg, ${r} 0%, ${r} 100%)`}function m0(e){const t=e?.materials?.fillColors?.[0]||e?.materials?.defaultColor||Rp.settings.materials.defaultColor;return{background:Uie(e),modelColor:t,accentColor:e?.floor?.color||t||Rp.settings.floor.color}}function aj(e){const t=fr(e?.settings);return{id:Sc(e?.id),label:Fv(e?.label)||Sc(e?.id),description:String(e?.description||"Built-in theme"),presetId:ol(e?.id),preview:e?.preview||m0(t),settings:t}}function zv(){return ic.map(aj).filter(e=>e.id&&e.label)}function Wie(e){return Sc(e).startsWith(YD)}function Bv(e,t=[]){const n=Sc(e);return Wie(n)&&t.some(r=>r.id===n)?n:""}function lj(e){const t=Sc(e?.id),n=ol(t);if(t&&n)return null;const r=Sc(e?.presetId||e?.sourcePresetId),o=ol(r);if(r&&!o)return null;const i=o?gw(o):null,s=t||sj(e?.label||e?.name),a=Fv(e?.label||e?.name||i?.label||s),l=e?.theme&&typeof e.theme=="object"?e.theme:e?.settings,u=fr(l&&typeof l=="object"?l:i?.settings);if(!s||!a||!u||ol(s))return null;const d=o||"";return{id:s,label:a,description:String(e?.description||"Saved theme"),presetId:d,preview:m0(u),settings:u}}function yh(e){const t=Array.isArray(e)?e:e?.themes;if(!Array.isArray(t))return[];const n=new Set,r=[];for(const o of t){const i=lj(o);!i||n.has(i.id)||(n.add(i.id),r.push(i))}return r}function rs(e,t={}){return[...t.fallbackToDefault!==!1?zv():[],...yh(e)]}function Hie(e){return{id:e.id,label:e.label,description:e.description,presetId:e.presetId||"",theme:e.settings}}function OT(e){return JSON.stringify(fr(e))}function fu(e=zv()){return Ta(Hd,e)||e[0]?.id||Hd}function cj({activeThemeId:e="",themeId:t="",customPresets:n=[],themes:r=null}={}){const o=rs(r||n),i=yh(o),s=Ta(e||t,o),a=fu(o);return!i.length&&(!s||s===a)?null:{version:XD,activeThemeId:s===a?"":s,themes:i.map(Hie)}}function If(){const e=zv();if(typeof window>"u")return{customPresets:e,themeId:fu(e)};const t=nj(window.localStorage,xu);if(!t||t.version!==XD)return{customPresets:e,themeId:fu(e)};const n=rs(t);return{customPresets:n,themeId:Ta(t.activeThemeId,n)||fu(n)}}function xh(e={},t={}){if(typeof window>"u")return!0;const n=cj(e);return n?Lv(window.localStorage,xu,n,t):f0(window.localStorage,xu,t)}function so(){return If().customPresets}function Kie(e,t={}){const n=If(),r=rs(e);return xh({themeId:n.themeId,customPresets:r},t)}function Xie(e,t,n,r={}){const o=Fv(e);if(!o)return null;const i=fr(t),s=Vv(r.sourceThemeId||r.presetId,n);return lj({id:Gie(o,n),label:o,presetId:ol(r.sourcePresetId||s?.presetId||s?.id),settings:i})}function Yie(e,t,n={}){const r=rs(n.customPresets||so()),o=Xie(e,t,r,n);if(!o)return null;const i=[...r,o];return xh({activeThemeId:o.id,customPresets:i},n)?{preset:o,customPresets:i}:null}function qie(e,t={}){const n=If(),r=yh(n.customPresets),o=Bv(e,r);if(!o)return!1;const i=r.filter(a=>a.id!==o);if(i.length===r.length)return!0;const s=n.themeId===o?"":n.themeId;return xh({themeId:s,customPresets:i},t)}function Zie(e,t,n={}){const r=If(),o=yh(r.customPresets),i=Bv(e,o);if(!i)return!1;const s=fr(t),a=o.map(l=>l.id===i?{...l,preview:m0(s),settings:s}:l);return xh({themeId:i,customPresets:a},n)}function Jie(e,t={}){const n=If(),r=yh(n.customPresets),o=Bv(e,r),i=r.find(d=>d.id===o),s=ol(i?.presetId||i?.id);if(!i||!s)return!1;const a=aj(gw(s)),l={...i,presetId:s,preview:m0(a.settings),settings:a.settings},u=r.map(d=>d.id===o?l:d);return xh({themeId:n.themeId,customPresets:u},t)}function Qie(e={}){return typeof window>"u"?!0:f0(window.localStorage,xu,e)}function uj(e=so()){return rs(e)}function Vv(e,t=so()){const n=rs(t),r=Ta(e,n);return uj(t).find(o=>o.id===r)||null}function ese(e,t=so()){const n=Vv(e,t);return fr(n?.settings||N2(e))}function Ry(e,t=so()){const n=fr(e),r=JSON.stringify(n);for(const o of rs(t))if(JSON.stringify(fr(o.settings))===r)return o.id;return null}function AE(e="",t=null,n=so()){const r=rs(n),o=Ta(e||fu(r),r)||r[0]?.id||Hd;return{presetId:o,settings:fr(t||ese(o,n))}}function $v(e=so()){if(typeof window>"u")return null;const t=String(window.location?.search||"").trim();if(!t)return null;let n;try{n=new URLSearchParams(t)}catch{return null}const r=String(n.get(Aie)||"").trim();if(!r)return null;const o=rs(e),i=Ta(r,o);return i?AE(i,null,o):null}function Py(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function dj(e){if(!Py(e)||!Py(e.settings))return null;const t=fr(e.settings);return t?{presetId:Sc(e.presetId),settings:t}:null}function tse(e={},t=so()){if(!Py(e)||!Py(e.settings))return null;const n=rs(t),r=fr(e.settings),o=Ta(e.presetId,n)||Ry(r,n)||fu(n),i=Vv(o,n);return i&&OT(r)===OT(i.settings)?null:{presetId:o,settings:r}}function nse(e){return dj(e)!==null}function rse(e=so()){const t=$v(e);if(t)return t;const n=Kc(e),r=ij({}).theme;if(!nse(r))return n;const o=rs(e);return{presetId:Ta(r.presetId,o)||n.presetId,settings:fr(r.settings)}}function ose(e,t={}){const n=rs(t.themes||t.customPresets||so()),r=Ta(t.presetId||Ry(e,n),n)||fu(n);return cj({themeId:r,customPresets:n})}function Kc(e=so()){const t=$v(e);if(t)return t;if(typeof window>"u")return AE("",null,e);const n=If(),r=e?rs(e):n.customPresets,o=Ta(n.themeId,r);return AE(o,null,r)}function ise(e,t={}){if(typeof window>"u")return!0;const n=ose(e,t);return n?Lv(window.localStorage,xu,n,t):f0(window.localStorage,xu,t)}function Oy(e){return Lie(tj,e||{})}function fj(e,t){return Fie(tj,e||{},t||{})}function Dm(e,t={}){const n=Oy(t);return!n.inspectedAssemblyNodeId&&Array.isArray(t?.expandedAssemblyPartIds)&&(n.inspectedAssemblyNodeId=String(t.expandedAssemblyPartIds[t.expandedAssemblyPartIds.length-1]||"").trim()),{key:zie(e),...n}}const Su=1,mj="cad-viewer:file-session",sse="cad-viewer:file-session:index",ase="__root__";function pj(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function sr(e,t=""){return String(e??t).trim()}function cl(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function lse(e,t=0){const n=cl(e,t);return n>0?n:t}function hj(e,t=!1){return typeof e=="boolean"?e:t}function Oo(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function jm(e,t){return JSON.stringify(e)===JSON.stringify(t)}function ky(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:0;if(Array.isArray(e))return e.map(ky);if(!Oo(e))return null;const t={};for(const[n,r]of Object.entries(e))t[String(n)]=ky(r);return t}function gj(e,t){try{const n=e.getItem(t);return n?JSON.parse(n):null}catch{return null}}function bj(e,t,n={}){typeof n.onWriteError=="function"&&n.onWriteError({key:e,error:t})}function yj(e,t,n,r={}){try{return e.setItem(t,JSON.stringify(n)),!0}catch(o){return bj(t,o,r),!1}}function Gv(e,t,n={}){try{return e.removeItem(t),!0}catch(r){return bj(t,r,n),!1}}function Uv(){return typeof window<"u"?window.sessionStorage:null}function Wv(e){return sr(e)||ase}function NE(e){return encodeURIComponent(sr(e))}function Hv(e,t){return[mj,`v${Su}`,NE(Wv(e)),NE(t)].join(":")}function xj(e){return[sse,`v${Su}`,NE(Wv(e))].join(":")}function Sj(e,t){const n=gj(e,xj(t));return!n||n.version!==Su||!Array.isArray(n.files)?[]:[...new Set(n.files.map(r=>sr(r)).filter(Boolean))]}function Ej(e,t,n,r={}){const o=[...new Set((Array.isArray(n)?n:[]).map(s=>sr(s)).filter(Boolean))].sort(),i=xj(t);return o.length?yj(e,i,{version:Su,files:o},r):Gv(e,i,r)}function cse(e,t,n,r={}){const o=sr(n);if(!o)return!0;const i=Sj(e,t);return i.includes(o)?!0:Ej(e,t,[...i,o],r)}function wj(e){return Wp(e)}function use(e){return zt(e,"dxf")}function dse(e){return[zt(e,"stepModule"),sr(e?.hash)].filter(Boolean).join(":")}function fse(e){return[zt(e,"implicit"),sr(e?.hash)].filter(Boolean).join(":")}function mse(e){return[sr(e?.kind).toLowerCase(),sr(e?.hash),zt(e,"selectorTopology"),zt(e,"topology"),zt(e,"glb")].filter(Boolean).join(":")||sr(e?.file)}function pse(e){return[sr(e?.kind).toLowerCase(),sr(e?.hash),zt(e,"selectorTopology"),zt(e,"topology"),zt(e,"glb"),zt(e,"stl"),zt(e,"3mf"),zt(e,"dxf"),wj(e)].filter(Boolean).join(":")||sr(e?.file)}function vj(e){return{tab:pse(e),dxf:use(e),stepModule:dse(e),implicit:fse(e),urdf:wj(e),largeFile:mse(e)}}function hse(e){return Oo(e)?So(e):null}function gse(e){return Array.isArray(e)?e.map(t=>{if(!Oo(t))return null;const n=sr(t.direction).toLowerCase()==="down"?"down":"up";return{id:sr(t.id),direction:n,angleDeg:Math.min(Math.max(cl(t.angleDeg,0),0),180)}}).filter(Boolean):[]}function bse(e){return Oo(e)?{thicknessMm:lse(e.thicknessMm,0),bendSettings:gse(e.bendSettings)}:null}function Cj(e){return Oo(e)?{activeId:sr(e.activeId),playing:!1,elapsedSec:Math.max(cl(e.elapsedSec,0),0),speed:Math.min(Math.max(cl(e.speed,1),.1),5)}:{activeId:"",playing:!1,elapsedSec:0,speed:1}}function yse(e){return Oo(e)?{enabled:hj(e.enabled,!0),parameterValues:Oo(e.parameterValues)?ky(e.parameterValues):{},animationState:Cj(e.animationState)}:null}function xse(e){return Oo(e)?{parameterValues:Oo(e.parameterValues)?ky(e.parameterValues):{},animationState:Cj(e.animationState)}:null}function Sse(e){return Oo(e)?Object.fromEntries(Object.entries(e).map(([t,n])=>[sr(t),cl(n,0)]).filter(([t])=>t)):{}}function Ese(e){if(!Oo(e))return{};const t={};for(const[n,r]of Object.entries(e)){const o=sr(n);!o||!Array.isArray(r)||(t[o]=[cl(r[0],0),cl(r[1],0),cl(r[2],0)])}return t}function wse(e){if(!Oo(e))return{};const t={};for(const r of["activePlanningGroupName","activeEndEffectorName","targetFrame","planningPipeline","plannerId"]){const o=sr(e[r]);o&&(t[r]=o)}for(const r of["ikTimeout","ikAttempts","ikTolerance","planningTime","maxVelocityScalingFactor","maxAccelerationScalingFactor"])pj(e,r)&&(t[r]=cl(e[r],0));const n=Ese(e.targetsByEndEffector);return Object.keys(n).length&&(t.targetsByEndEffector=n),t}function vse(e){return Oo(e)?{jointValues:Sse(e.jointValues),motionState:wse(e.motionState)}:null}function Cse(e){return Oo(e)?{selectableTopologyEnabled:hj(e.selectableTopologyEnabled,!1)}:null}const Mj=Object.freeze({display:{normalize:hse,equals:XV,signatureKey:"tab"},tab:{normalize:Oy,equals:fj,signatureKey:"tab"},dxf:{normalize:bse,equals:jm,signatureKey:"dxf"},stepModule:{normalize:yse,equals:jm,signatureKey:"stepModule"},implicit:{normalize:xse,equals:jm,signatureKey:"implicit"},urdf:{normalize:vse,equals:jm,signatureKey:"urdf"},largeFile:{normalize:Cse,equals:jm,signatureKey:"largeFile"}});function Mse(e,t,n,r={}){const o=Mj[e]?.signatureKey;if(!o||r.skipSignatureCheck===!0)return!0;const i=sr(t?.[o]),s=sr(n?.[o]);return!!(i&&s&&i===s)}function Ise(e,t={}){if(!Oo(e))return{};const n=t.currentSignatures||{},r=t.signatures||{},o={};for(const[i,s]of Object.entries(Mj)){if(!pj(e,i)||!Mse(i,r,n,t))continue;const a=s.normalize(e[i]);a!==null&&(o[i]=a)}return o}function Ase({fileKey:e="",entry:t=null,slices:n={}}={}){const r=sr(e||t?.file);return Kv({version:Su,fileKey:r,signatures:vj(t),slices:n},{fileKey:r,entry:t,skipSignatureCheck:!0})}function Kv(e,t={}){if(!Oo(e)||e.version!==Su)return null;const n=sr(e.fileKey||t.fileKey);if(!n||t.fileKey&&n!==sr(t.fileKey))return null;const r=Oo(e.signatures)?e.signatures:{},o=t.entry?vj(t.entry):t.currentSignatures||r,i=Ise(e.slices,{currentSignatures:o,signatures:r,skipSignatureCheck:t.skipSignatureCheck});return{version:Su,fileKey:n,signatures:{...r},slices:i}}function RS(e,t,n=null,r={}){const o=r.storage||Uv(),i=sr(t||n?.file);return!o||!i?null:Kv(gj(o,Hv(e,i)),{fileKey:i,entry:n})}function Nse(e,t,n,r={}){const o=r.storage||Uv(),i=sr(t||n?.fileKey);if(!o||!i)return!0;const s=Kv(n,{fileKey:i,skipSignatureCheck:!0}),a=Hv(e,i);if(!s||!Object.keys(s.slices).length)return Gv(o,a,r);const l=yj(o,a,s,r),u=cse(o,e,i,r);return l&&u}function _se(e,t,n={}){const r=n.storage||Uv();if(!r)return!0;const o=new Set((Array.isArray(t)?t:[]).map(l=>sr(l)).filter(Boolean)),i=Sj(r,e);let s=!0;const a=[];for(const l of i){if(o.has(l)){a.push(l);continue}s=Gv(r,Hv(e,l),n)&&s}return Ej(r,e,a,n)&&s}const Rd=Object.freeze({COLOR_SCHEME:"colorScheme",THEME:"theme",IGNORE:"ignore"});function Tse(e){const t=String(e||"");return!t||t.startsWith(mj)?Rd.IGNORE:t===Cp?Rd.COLOR_SCHEME:t===xu?Rd.THEME:Rd.IGNORE}function Dr(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function Ao(e,t,n){return Math.min(Math.max(Dr(e,t),t),n)}function bd(e,t){const n=Object.keys(e||{}),r=Object.keys(t||{});return n.length!==r.length?!1:n.every(o=>Object.hasOwn(t||{},o)&&e?.[o]===t?.[o])}function np(e,t){const n=Array.isArray(e?.animations)?e.animations:[];if(!n.length)return null;const r=String(t||"").trim();return n.find(o=>o.id===r)||n[0]||null}function Lm(e){return{activeId:np(e,"")?.id||"",playing:!1,elapsedSec:0,speed:1}}function Ka(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function Lb(e,t){const n=Array.isArray(e?.animations)?e.animations:[];if(!n.length)return null;const r=String(t||"").trim();return n.find(o=>o.id===r)||n[0]||null}function PS(e){return{activeId:Lb(e,"")?.id||"",playing:!1,elapsedSec:0,speed:1}}const Rse=840,Pd=240,p0=.001;function Eu(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function Ij(e){return Math.min(Math.max(Eu(e,1),0),1)}function nf(e){return!e||typeof e!="object"?[]:Object.entries(e).map(([t,n])=>[String(t||"").trim(),Eu(n,0)]).filter(([t])=>t).sort(([t],[n])=>t.localeCompare(n))}function Pse(e,t){return!t||!e?!1:e instanceof Set||e instanceof Map?e.has(t):!!e?.[t]}function Ose(e){const t=Eu(e,0),n=((t+180)%360+360)%360-180;return n===-180&&t>0?180:n}function Aj(e,t,n,r){const o=Eu(t,0),i=Eu(n,o);return Pse(r,e)?Ose(i-o):i-o}function kse(e){const t=Ij(e);return t*t*t*(t*(6*t-15)+10)}function Ip(e,t,n=p0){const r=nf(e),o=nf(t);if(r.length!==o.length)return!1;for(let i=0;in)return!1}return!0}function Dse(e,t,n,r=p0,o=null){const i=nf(t),s=new Map(nf(e)),a=kse(n),l={};let u=!0;for(const[d,m]of i){const p=s.has(d)?s.get(d):m,g=Aj(d,p,m,o),x=p+g*a;Math.abs(g*(1-a))<=r||a>=1?l[d]=m:(l[d]=x,u=!1)}return{values:l,done:u}}function jse(e,t,n,r=Pd,o=p0,i=null){const s=nf(t),a=new Map(nf(e)),l=Math.max(Eu(n,0),0),u=Math.max(Eu(r,Pd),1),d=Ij(1-Math.exp(-l/u)),m={};let p=!0;for(const[g,x]of s){const y=a.has(g)?a.get(g):x,S=Aj(g,y,x,i),b=y+S*d;Math.abs(S*(1-d))<=o||d>=1?m[g]=x:(m[g]=b,p=!1)}return{values:m,done:p}}const Lse=1e-6;function _E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Xv(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function Nj(e){const t=String(e?.type||"fixed");return t==="continuous"||t==="revolute"}function Yv(e,t){const n=Xv(t,0);return Nj(e)?n*180/Math.PI:n}function Fse(e,t){const n=Xv(t,0);return Nj(e)?n*Math.PI/180:n}function zse(e,t){const n=Array.isArray(e?.joints)?e.joints:[],r=new Map(n.map(i=>[String(i?.name||""),i]).filter(([i])=>i)),o={};for(const[i,s]of Object.entries(t||{})){const a=String(i||"").trim(),l=r.get(a);a&&l&&(o[a]=Fse(l,s))}return o}function Yl(e,t=[0,0,0]){const n=Array.isArray(e)?e:t;return[0,1,2].map(r=>Xv(n[r],t[r]??0))}function Bse(e,t){const n=Yl(e),r=Yl(t);return Math.hypot(n[0]-r[0],n[1]-r[1],n[2]-r[2])}function TE(e,t,{native:n=!1}={}){if(!_E(t))throw new Error("MoveIt2 server response jointValuesByName must be an object");const r=Array.isArray(e?.joints)?e.joints:[],o=new Map(r.map(s=>[String(s?.name||""),s]).filter(([s])=>s)),i={};for(const[s,a]of Object.entries(t)){const l=String(s||"").trim();if(!l)throw new Error("MoveIt2 server response includes an empty joint name");const u=o.get(l);if(!u)throw new Error(`MoveIt2 server response references unknown joint ${l}`);const d=String(u?.type||"fixed");if(d==="fixed")throw new Error(`MoveIt2 server response cannot set fixed joint ${l}`);if(u?.mimic)throw new Error(`MoveIt2 server response cannot set mimic joint ${l}`);const m=Number(a);if(!Number.isFinite(m))throw new Error(`MoveIt2 server response joint ${l} must be a finite number`);const p=n?Yv(u,m):m,g=uc(u,p);if(d!=="continuous"&&Math.abs(g-p)>Lse)throw new Error(`MoveIt2 server response joint ${l} must stay within joint limits`);i[l]=p}return i}function Vse(e,t){if(!_E(t))throw new Error("MoveIt2 server response trajectory must be an object");const r=(Array.isArray(t.jointNames)?t.jointNames:[]).map(a=>String(a||"").trim()).filter(Boolean);if(!r.length)throw new Error("MoveIt2 server response trajectory.jointNames must be a non-empty array");const o=Array.isArray(t.points)?t.points:[];if(!o.length)throw new Error("MoveIt2 server response trajectory.points must be a non-empty array");let i=-Number.EPSILON;const s=o.map((a,l)=>{if(!_E(a))throw new Error(`MoveIt2 server response trajectory point ${l+1} must be an object`);const u=Number(a.timeFromStartSec);if(!Number.isFinite(u)||u<0||uNumber(x)):[];if(d&&(m.length!==r.length||m.some(x=>!Number.isFinite(x))))throw new Error("MoveIt2 server response trajectory positions must match trajectory.jointNames");const p=d?m.map((x,y)=>{const S=(Array.isArray(e?.joints)?e.joints:[]).find(b=>String(b?.name||"")===r[y]);return Yv(S,x)}):Array.isArray(a.positionsDeg)?a.positionsDeg.map(x=>Number(x)):[];if(p.length!==r.length||p.some(x=>!Number.isFinite(x)))throw new Error("MoveIt2 server response trajectory positions must match trajectory.jointNames");const g=Object.fromEntries(r.map((x,y)=>[x,p[y]]));return TE(e,g),{timeFromStartSec:u,positions:d?m:null,positionsDeg:p,positionsByName:d?Object.fromEntries(r.map((x,y)=>[x,m[y]])):null,positionsByNameDeg:g}});return{jointNames:r,points:s}}function $se(e,t,n,r){const o=EE(e,t,n?.link,n?.frame);return o?{actualPosition:o,positionError:Bse(o,r)}:{actualPosition:null,positionError:Number.POSITIVE_INFINITY}}function jr(e){return!e||typeof e!="object"?{}:Object.fromEntries(Object.entries(e).map(([t,n])=>[String(t||"").trim(),Dr(n,0)]).filter(([t])=>t))}function _j(e,t){if(!t||typeof t!="object")return{};const n=Array.isArray(e?.joints)?e.joints:[],r=new Map(n.map(o=>[String(o?.name||""),o]).filter(([o])=>o));return Object.fromEntries(Object.entries(t).map(([o,i])=>{const s=String(o||"").trim(),a=r.get(s);return s&&a?[s,Yv(a,i)]:null}).filter(Boolean))}function Gse(e){return(Array.isArray(e?.srdf?.groupStates)?e.srdf.groupStates:Array.isArray(e?.motion?.groupStates)?e.motion.groupStates:[]).reduce((n,r)=>{if(String(r?.name||"").trim().toLowerCase()!=="home")return n;const o=_j(e,r?.jointValuesByName||r?.jointValuesByNameRad);return{...n,...o}},{})}function Use(e,t){const n=jr(t),r=Object.keys(n);if(!r.length)return!1;const o=Object.fromEntries(r.map(i=>[i,e?.[i]]));return Ip(o,n)}function Wse(e,t,n={}){const r=Array.isArray(e)?e:[],o=jr(t),i=jr(n),s=new Set([...Object.keys(o),...Object.keys(i)]);let a=null,l=0;for(const u of r){const d=jr(u?.jointValuesByName),m=Object.keys(d);if(!m.length||!Use(o,d))continue;const p=[...s].filter(y=>!Object.hasOwn(d,y)),g=Object.fromEntries(p.map(y=>[y,o[y]??0])),x=Object.fromEntries(p.map(y=>[y,i[y]??0]));Ip(g,x)&&m.length>l&&(a=u,l=m.length)}return a}function Hse(e,t,n={}){const r=Array.isArray(e?.points)?e.points:[];if(!r.length)return jr(n);const o=r[0];if(t<=Dr(o.timeFromStartSec,0))return{...jr(n),...jr(o.positionsByNameDeg)};for(let i=1;iu)continue;const d=Math.max(u-l,1e-6),m=Math.min(Math.max((t-l)/d,0),1),p=jr(s.positionsByNameDeg),g=jr(a.positionsByNameDeg),x={};for(const[y,S]of Object.entries(g)){const b=Object.hasOwn(p,y)?p[y]:S;x[y]=b+(S-b)*m}return{...jr(n),...x}}return{...jr(n),...jr(r[r.length-1].positionsByNameDeg)}}function Kse(e){const t=Dr(e,0),n=Math.round(t*1e3)/1e3;return Object.is(n,-0)?0:n}function db(){return{fileRef:"",originalPerspective:null}}function Xse(e){if(!Array.isArray(e)||e.length<3)return null;const t=[Number(e[0]),Number(e[1]),Number(e[2])];return t.every(Number.isFinite)?t:null}function Yse(e,t){const n=Array.isArray(e)?e:[];return JSON.stringify(Object.fromEntries(n.map(r=>{const o=String(r?.name||"").trim(),i=Kse(t?.[o]??r?.defaultValueDeg??0);return[o,i]}).filter(([r])=>r)),null,2)}const qv={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},kT=6e4,qse="ws://127.0.0.1:8765/ws",Zse=1,rf=new Map;let ms=null,RE="";function Jse(){if(Tj())return!0;const e=typeof import.meta<"u"?qv:null;return e&&typeof e=="object"&&Object.hasOwn(e,"DEV")?!!e.DEV:!0}function wu({enabled:e=Jse()}={}){return!!e}function Qse(e){const t=String(e||"").trim();return t||(typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`moveit2-server-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`)}function DT({enabled:e=wu()}={}){if(!wu({enabled:e}))return"";const t=typeof import.meta<"u"?String(qv?.VIEWER_MOVEIT2_WS_URL||"").trim():"";return t||qse}function Tj(){const e=typeof import.meta<"u"?String(qv?.VIEWER_MOVEIT2_WS_URL||"").trim():"";if(e)return e;if(typeof window>"u")return"";try{return String(new URL(window.location.href).searchParams.get("moveit2Ws")||"").trim()}catch{return""}}function Rj({enabled:e=wu()}={}){if(!wu({enabled:e}))return"";if(typeof window>"u")return DT({enabled:e});const t=Tj();return String(t||"").trim()||DT({enabled:e})}function eae(e){for(const[t,n]of rf.entries())clearTimeout(n.timer),n.reject(new Error(e)),rf.delete(t)}function OS(e="MoveIt2 server connection closed."){eae(e),ms=null,RE=""}function tae(e,t){if(!t)throw new Error("MoveIt2 server requires browser WebSocket support.");return ms&&RE===e&&ms.readyState<=t.OPEN||(ms&&(ms.close(),OS("MoveIt2 server connection changed.")),ms=new t(e),RE=e,ms.addEventListener("message",n=>{let r;try{r=JSON.parse(String(n.data||""))}catch{return}const o=String(r?.id||"").trim(),i=rf.get(o);if(i){if(rf.delete(o),clearTimeout(i.timer),r?.ok===!1){i.reject(new Error(String(r?.error?.message||"MoveIt2 server request failed.")));return}i.resolve(r?.result??{})}}),ms.addEventListener("close",()=>OS("MoveIt2 server connection closed.")),ms.addEventListener("error",()=>{ms?.readyState!==t.OPEN&&OS(`Could not connect to MoveIt2 server at ${e}.`)})),ms}function nae(e,t,n,r){const o=e.constructor?.OPEN??1;if(e.readyState===o){e.send(t);return}const i=()=>{e.removeEventListener("open",i),e.send(t)};e.addEventListener("open",i)}function rae({timeoutMs:e=1e3,url:t=Rj(),WebSocketImpl:n=globalThis.WebSocket,enabled:r=wu()}={}){const o=Math.max(Number(e)||1e3,1);return new Promise(i=>{if(!r||!t||!n){i(!1);return}let s=!1,a=null,l=0;const u=d=>{s||(s=!0,clearTimeout(l),a&&d&&a.close(),i(!!d))};l=setTimeout(()=>u(!1),o);try{a=new n(t)}catch{u(!1);return}a.addEventListener("open",()=>u(!0)),a.addEventListener("error",()=>u(!1)),a.addEventListener("close",()=>u(!1))})}function oae(e,t,{timeoutMs:n=kT,url:r=Rj(),WebSocketImpl:o=globalThis.WebSocket,enabled:i=wu()}={}){const s=Qse(t?.id),a=Math.max(Number(n)||kT,1);return new Promise((l,u)=>{if(!i||!r){u(new Error("MoveIt2 server connections are not enabled for this viewer session."));return}let d;try{d=tae(r,o)}catch(g){u(g);return}const m=setTimeout(()=>{rf.delete(s),u(new Error(`MoveIt2 server request ${s} timed out.`))},a);rf.set(s,{resolve:l,reject:u,timer:m});const p=JSON.stringify({id:s,type:e,protocolVersion:Zse,payload:t});nae(d,p)})}function iae(e,t){const n=String(t||"").trim();if(!e||!n)return[];const r=String(e?.id||"").trim();if(n===r||n==="root")return[e];const o=[{node:e,path:[e]}];for(;o.length;){const{node:i,path:s}=o.pop();if(String(i?.id||"").trim()===n)return s;const a=Array.isArray(i?.children)?i.children:[];for(let l=a.length-1;l>=0;l-=1){const u=a[l];o.push({node:u,path:[...s,u]})}}return[]}function Jc(e,t,n){const r=String(t||"").trim(),o=String(n||"").trim();return!e||!r||!o?!1:iae(e,o).some(i=>String(i?.id||"").trim()===r)}function Fb(e,t,{rootId:n=""}={}){if(!e)return[];const r=String(n||e?.id||"").trim(),o=[],i=new Set;for(const a of Array.isArray(t)?t:[t]){const l=String(a||"").trim();!l||l===r||i.has(l)||!oc(e,l)||(i.add(l),o.push(l))}const s=[];for(const a of o)if(!s.some(l=>Jc(e,l,a))){for(let l=s.length-1;l>=0;l-=1)Jc(e,a,s[l])&&s.splice(l,1);s.push(a)}return s}function sae(e,t,n,{referencePartId:r=null}={}){const o=new Set((Array.isArray(n)?n:[n]).map(s=>String(s||"").trim()).filter(Boolean));if(!o.size)return Array.isArray(e)?e:[];const i=typeof r=="function"?r:s=>String(s?.partId||"").trim();return(Array.isArray(e)?e:[]).map(s=>String(s||"").trim()).filter(s=>{if(!s)return!1;const a=t?.get?.(s)||null,l=String(a?.selectorType||"").trim();if(l!=="shape"&&l!=="occurrence")return!0;const u=String(i(a)||"").trim();return!u||!o.has(u)})}function aae(e,t,{rootId:n="",isolatedNodeIds:r=[]}={}){if(!e)return[];const o=String(n||e?.id||"").trim(),i=new Set((Array.isArray(t)?t:[t]).map(p=>String(p||"").trim()).filter(Boolean)),s=Fb(e,r,{rootId:o}),a=s.length?s.map(p=>oc(e,p)).filter(Boolean):[e],l=[],u=new Set,d=p=>{const g=String(p||"").trim();!g||g===o||u.has(g)||(u.add(g),l.push(g))},m=(p,{forceChildren:g=!1}={})=>{if(!p)return;const x=String(p?.id||"").trim(),y=Array.isArray(p?.children)?p.children:[],S=x&&i.has(x);if(y.length&&(g||S||x===o)){for(const b of y)m(b);return}d(x)};for(const p of a)m(p,{forceChildren:!s.length||i.has(String(p?.id||"").trim())});return l}const lae={},cae="CAD Viewer",Pj="local-fs",fb=Object.freeze([]),uae=wu(),dae=Object.freeze([0,0,0]),Vl=150,yd=520,mb=CE,Uc=240,xd=448,fae=44,jT=36,LT=80,mae=220,FT=Object.freeze({selectableTopologyEnabled:!1});function pae(){return String(lae?.VIEWER_ASSET_BACKEND||Pj).trim().toLowerCase()}function pb(e={}){return{selectableTopologyEnabled:e?.selectableTopologyEnabled===!0}}function Af(){if(typeof window>"u")return 1600;const e=Number(window.innerWidth);return Number.isFinite(e)&&e>0?e:1600}function hae(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches===!0}function gae(){return zy(Af())}function Bd(e=Af()){return ij({defaultFileSheetWidthPx:Dv(e)})}function bae(){const e=Bd().fileSheetOpen;return typeof e=="boolean"?e:rB(Af())}function yae(){const e=Af();return Bd(e).fileSheetWidthPx||Dv(e)}function xae(){const e=Af();return Bd(e).fileSheetWidthPx!=null}function vi(e){return String(e?.id||e?.occurrenceId||"").trim()}const Sae=/^(?:o\d+(?:\.\d+)*(?:\.[sfev]\d+)?|[sfev]\d+|m\d+)$/i;function Qp(e){const t=String(e||"").trim();return Sae.test(t)?t:""}function Oj(e){const t=String(e||"").trim();return t.startsWith(Ap)?Qp(t.split(":").pop()):""}function Zv(e,{allowOpaque:t=!1}={}){const n=String(e||"").trim();if(!n)return"";if(n.startsWith("#"))return Gs(n);const r=Oj(n)||n;return!t&&!Qp(r)?"":`#${r}`}function Eae(e){for(const t of Array.isArray(e)?e:[]){const n=Zv(t?.value,{allowOpaque:t?.allowOpaque===!0});if(n)return n}return""}function wae(e){return[e?.displaySelector,e?.occurrenceId,e?.sourceOccurrenceId,e?.sourceRootTargetOccurrenceId,e?.id].map(Qp).find(Boolean)||""}function of(e,t){const n=String(t||"").trim();if(!e||!n)return null;const r=[e];for(;r.length;){const o=r.pop();if(vi(o)===n||wae(o)===n||String(o?.name||"").trim()===n||String(o?.label||"").trim()===n||String(o?.displayName||"").trim()===n)return o;const i=hr(o);for(let s=i.length-1;s>=0;s-=1)r.push(i[s])}return null}function vae(e){const t=[],n=e?[e]:[];for(;n.length;){const r=n.pop(),o=hr(r);for(let s=o.length-1;s>=0;s-=1)n.push(o[s]);const i=vi(r);i&&String(r?.nodeType||"").trim()==="part"&&o.length===0&&t.push(i)}return _n(t)}function hb({assemblyPartMap:e,displayStepTreeRoot:t,stepTreeRoot:n,nodeId:r}){const o=String(r||"").trim();return o&&(e.get(o)||of(t,o)||of(n,o)||oc(t,o)||oc(n,o))||null}function Cae(e,t){const r=[Qp(t),e?.displaySelector,e?.occurrenceId,e?.sourceOccurrenceId,e?.sourceRootTargetOccurrenceId,e?.id].map(Qp).find(Boolean)||"";return r?{...e||{},id:String(e?.id||r).trim(),displaySelector:r,occurrenceId:r,name:String(e?.name||e?.label||e?.displayName||r).trim()}:null}function zT(e,t){const n=Cae(e,t),r=String(n?.occurrenceId||n?.id||t||"").trim();return r?{id:`assembly-part:${String(n?.id||r).trim()}`,copyText:dc({selector:r})}:null}function $l(e,t="selector-ref"){const n=Zv(e);if(!n)return null;const r=n.slice(1);return{id:`${t}:${r}`,copyText:n}}function rp(e,t,n="step-tree"){const o=String(e?.nodeType||"").trim().startsWith("topology-"),i=Eae(o?[{value:e?.displaySelector,allowOpaque:!0},{value:e?.topologyReferenceId,allowOpaque:!0},{value:t,allowOpaque:!1},{value:e?.id,allowOpaque:!1}]:[{value:e?.displaySelector,allowOpaque:!0},{value:e?.occurrenceId,allowOpaque:!0},{value:e?.sourceOccurrenceId,allowOpaque:!0},{value:e?.sourceRootTargetOccurrenceId,allowOpaque:!0},{value:t,allowOpaque:!1},{value:e?.id,allowOpaque:!1}]);if(!i)return null;const s=i.slice(1);return{id:`${n}:${s}`,copyText:i}}function Os(e,t,n){const r=String(t||"").trim();!r||!n||e.has(r)||e.set(r,n)}function Mae(e){const t=new Map;if(!e)return t;const n=[e];for(;n.length;){const r=n.pop(),o=vi(r),i=rp(r,o);i&&(Os(t,o,i),Os(t,r?.id,i),Os(t,r?.topologyReferenceId,i),Os(t,r?.displaySelector,i),Os(t,r?.occurrenceId,i),Os(t,r?.name,i),Os(t,r?.label,i),Os(t,r?.displayName,i),Os(t,Oj(r?.id),i),Os(t,i.copyText,i),Os(t,i.copyText.slice(1),i));const s=hr(r);for(let a=s.length-1;a>=0;a-=1)n.push(s[a])}return t}function kS(e,t){const n=[],r=new Set;for(const o of Array.isArray(e)?e:[]){const i=String(o||"").trim(),s=Gs(t?.get(i)?.copyText)||Zv(i);!s||r.has(s)||(r.add(s),n.push(s))}return n}function Fm(e,{selectedReferenceIds:t=[],selectedPartIds:n=[],selectedMateIds:r=[],copyReferenceMap:o=null}={}){const i=Array.isArray(e?.lines)?e.lines.map(a=>Gs(a)).filter(Boolean):[];if(i.length)return{...e||{},lines:_n(i),copiedCount:e?.copiedCount||i.length};const s=_n([...kS(t,o),...kS(n,o),...kS(r,o)]);return{...e||{},lines:s,copiedCount:s.length||e?.copiedCount||0}}function BT(e,t){if(!(e instanceof Map)||!t)return;const n=[t?.id,t?.normalizedSelector,t?.displaySelector].map(o=>String(o||"").trim()).filter(Boolean),r=Gs(t?.copyText);if(r.startsWith("#")){n.push(r);for(const o of r.slice(1).split(",")){const i=String(o||"").trim();i&&n.push(i)}}for(const o of n)e.has(o)||e.set(o,t)}function kj(e,t){return hr(e).length>0&&(t||vi(e)===hs)}function Iae(e,{omitRoot:t=!1,expandedTreeNodeIds:n=[],loadableTreeNodeIds:r=[]}={}){if(!e)return[];const o=[],i=new Set,s=new Set((Array.isArray(r)?r:[]).map(l=>String(l||"").trim()).filter(Boolean)),a=Bb(e,n,{omitRoot:t,showAllRootChildren:!0});for(const l of a){const u=l?.node||l,d=String(l?.id||"").trim()||vi(u);!d||i.has(d)||(l?.hasChildren||hr(u).length||s.has(d))&&(i.add(d),o.push(d))}return o}function VT({root:e,isAssemblyView:t=!1,expandedTreeNodeIds:n=[],loadableTreeNodeIds:r=[],actionNodeIds:o=[]}={}){const i=new Set((Array.isArray(n)?n:[]).map(g=>String(g||"").trim()).filter(Boolean)),a=_n((Array.isArray(o)?o:[]).map(g=>String(g||"").trim()).filter(Boolean)).map(g=>of(e,g)).filter(Boolean),l=a.filter(g=>(hr(g).length||r.includes(vi(g)))&&!i.has(vi(g))).map(g=>vi(g)).filter(Boolean),u=a.filter(g=>(hr(g).length||r.includes(vi(g)))&&i.has(vi(g))).map(g=>vi(g)).filter(Boolean),d=Iae(e,{omitRoot:kj(e,t),expandedTreeNodeIds:n,loadableTreeNodeIds:r}),m=d.filter(g=>!i.has(g)),p=d.filter(g=>i.has(g));return{collapsedActionNodeIds:l,expandedActionNodeIds:u,collapsedExpandableTreeNodeIds:m,expandedExpandableTreeNodeIds:p,showExpandCollapse:!!(a.some(g=>hr(g).length)||d.length)}}function Aae(e,t,{isAssemblyView:n=!1}={}){return e?_n(Bb(e,t,{omitRoot:kj(e,n),showAllRootChildren:!0}).map(r=>String(r?.topologyReferenceId||"").trim()).filter(Boolean)):[]}function $T(e,t){const n=String(t||"").trim();if(!e||!n)return"";const r=[e];for(;r.length;){const o=r.pop();if(String(o?.topologyReferenceId||"").trim()===n)return vi(o);const i=hr(o);for(let s=i.length-1;s>=0;s-=1)r.push(i[s])}return""}function Nae(e,t){const n=String(t||"").trim(),r=Array.isArray(e?.children)?e.children:[];if(!n||!r.length)return"";for(const o of r){const i=String(o?.id||"").trim();if(i&&(i===n||Zp(o).includes(n)))return i}return""}function _ae(e){const t=[],n=[...hr(e)].reverse();for(;n.length;){const r=n.pop(),o=vi(r),i=String(r?.nodeType||"").trim(),s=hr(r);i.startsWith("topology-")&&o&&s.length&&r?.visualOnly!==!0&&t.push(o);for(let a=s.length-1;a>=0;a-=1)n.push(s[a])}return t}function Tae(e,t,{expandSelf:n=!1,includeVisualOnlyAncestors:r=!0}={}){const o=String(t||"").trim();if(!e||!o)return[];const i=of(e,o),s=F5(e,o).filter(a=>r?!0:of(e,a)?.visualOnly!==!0);return n&&i&&hr(i).length&&s.push(o,..._ae(i)),[...new Set(s.filter(Boolean))]}function DS(e,t){const n=String(t||"").trim(),r=of(e,n);if(!r)return n?[n]:[];const o=[],i=[r];for(;i.length;){const s=i.pop(),a=vi(s);a&&o.push(a);const l=hr(s);for(let u=l.length-1;u>=0;u-=1)i.push(l[u])}return o}function jS({definition:e,animation:t,elapsedSec:n,speed:r,parameterValues:o}){if(!e)return{};const i=wb(e,o);if(typeof t?.update!="function")return i;const s=Math.max(Number(t.duration)||1,.001),a=Ao(n,0,s),l=s>0?Ao(a/s,0,1):0,u={...i},d=(m,p)=>{const g=String(m||"").trim(),x=e.parameterMap?.[g];x&&(u[g]=bu(x,p))};try{t.update({elapsed:a,elapsedSec:a,duration:s,progress:l,cycle:s>0?a/s:0,loop:t.loop!==!1,params:i,set:d,speed:Ao(r,.1,5)})}catch(m){console.error("STEP animation update failed",m)}return u}function GT(e,t,n=""){const[r,o]=f.useState(e),i=f.useRef(e),s=f.useRef(n),a=f.useRef(0),l=f.useRef(0);return f.useEffect(()=>()=>{l.current&&(window.clearTimeout(l.current),l.current=0)},[]),f.useEffect(()=>{i.current=e;const u=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),d=Math.max(Number(t)||0,0);if(s.current!==n){s.current=n,l.current&&(window.clearTimeout(l.current),l.current=0),a.current=u,o(e);return}if(d<=0||typeof window>"u"){a.current=u,o(e);return}const m=u-a.current;if(m>=d){l.current&&(window.clearTimeout(l.current),l.current=0),a.current=u,o(e);return}l.current||(l.current=window.setTimeout(()=>{l.current=0,a.current=typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),o(i.current)},d-m))},[t,n,e]),r}function UT(e,t,n,r){if(!e||typeof t?.update!="function")return n;const o=Math.max(Number(t.duration)||1,.001),i=Ao(r,0,o),s=o>0?Ao(i/o,0,1):0,a=qd(e,n),l={...a},u=(d,m)=>{const p=String(d||"").trim(),g=e.parameterMap?.[p];g&&(l[p]=bu(g,m))};return t.update({...a,elapsed:i,elapsedSec:i,duration:o,progress:s,cycle:o>0?i/o:0,t:i,loop:t.loop!==!1,params:a,set:u}),l}async function Rae(e,t){try{const n=await e.json();return String(n?.error||n?.message||t).trim()||t}catch{return t}}function Pae(e){const t=at(e),n=zt(e,"dxf");return t&&n?`${t}:${n}`:""}function WT(e,t){return Object.prototype.hasOwnProperty.call(e||{},t)}function Oae(e){return!!(vn(e,"implicit")&&zt(e,"implicit"))}function kae(e,t){if(!e||!t||typeof t!="object")return e;const n={...e};WT(t,"artifact")&&(t.artifact&&typeof t.artifact=="object"?n.artifact=t.artifact:delete n.artifact);const r=String(t.sourceKind||"").trim().toLowerCase();r&&(n.sourceKind=r);const o=String(t.sourcePath||"").trim();return r==="python"&&o?n.source={...e.source&&typeof e.source=="object"?e.source:{},file:o,sourcePath:o}:r==="step"&&WT(n,"source")&&delete n.source,n}function Dae(e){const t=new Set,n=[];for(const r of Array.isArray(e?.activeDirectories)?e.activeDirectories:[]){const o=String(r?.dir||"").trim(),i=String(r?.rootPath||"").trim(),s=i||o;!o||!s||t.has(s)||(t.add(s),n.push({dir:o,rootPath:i,rootName:String(r?.rootName||"").trim()}))}return n}function jae({manifestEntries:e=[],generationStatus:t=null,manifestRevision:n=0,catalogHydrated:r=!1,catalogRefreshing:o=!1,catalogError:i="",activeDir:s=""}){const a=Array.isArray(e)?e:[],l=a,u=kq(),d=Pb(),m=pae(),p=f.useMemo(()=>Object.entries(t?.files||{}).filter(([,h])=>h?.running===!0).map(([h])=>String(h||"").trim()).filter(Boolean),[t]),g=String(s||"").trim(),[x,y]=f.useState(""),S=f.useRef(null);if(!S.current){const h=Bd().fileViewerExpandedDirectoryIds;S.current={hasStoredState:Array.isArray(h),expandedDirectoryIds:Array.isArray(h)?h:[]}}const[b,I]=f.useState(()=>new Set(S.current.expandedDirectoryIds)),[A,N]=f.useState(()=>S.current.hasStoredState),[P,R]=f.useState([]),[v,C]=f.useState(null),T=String(v?.backend||"").trim().toLowerCase();g||Hp(m)||Hp(T);const[k,z]=f.useState(""),[Y,K]=f.useState(null),[J,G]=f.useState(0),[Q,D]=f.useState([]),[$,ie]=f.useState("2d"),[W,Z]=f.useState(!1),[Ee,re]=f.useState(null),[be,_e]=f.useState(!1),[Ie,oe]=f.useState(du),[me,se]=f.useState(""),[Ae,we]=f.useState([]),[ct,ut]=f.useState([]),[Tt,Ve]=f.useState(()=>pb(FT)),[St,wt]=f.useState(""),[Vn,De]=f.useState(""),[xe,yt]=f.useState(""),[Te,rt]=f.useState([]),[Re,Fe]=f.useState({}),[on,ht]=f.useState(""),[jt,qt]=f.useState([]),[sn,Mn]=f.useState(!1),[fn,Bt]=f.useState(""),[dt,qe]=f.useState([]),[Vt,We]=f.useState([]),[ze,Ze]=f.useState(null),[vt,Tn]=f.useState(()=>So()),[pe,Xe]=f.useState(""),[He,Rn]=f.useState(""),[xn,ue]=f.useState(""),[Rt,Zt]=f.useState(!1),[qn,fi]=f.useState({}),[Ct,wr]=f.useState({key:"",file:"",status:null,loading:!1,error:""}),[vr,Qt]=f.useState(""),[In,gr]=f.useState(""),[lo,Mt]=f.useState(""),[gt,Sn]=f.useState(""),[On,Kr]=f.useState(!1),[Xr,Co]=f.useState(gae),[br,j]=f.useState(()=>Bd().fileViewerOpen),[de,L]=f.useState(()=>Bd().fileViewerWidthPx||mb),[te,fe]=f.useState(Af),ae=Xr===Od.DESKTOP,[he,ot]=f.useState(bae),[It,Pt]=f.useState(!1),[Ke,en]=f.useState(null),[Ne,Et]=f.useState(so),[Pe,En]=f.useState(()=>rse(so())),Se=Pe.settings,Yr=Pe.presetId,Kt=f.useMemo(()=>uj(Ne),[Ne]),[X,At]=f.useState(hae),[ne,ye]=f.useState(G_),it=f.useMemo(()=>rD(ne,{prefersDark:X}),[ne,X]),ft=f.useMemo(()=>_2(Se,{prefersDark:it===qo}),[it,Se]),xt=f.useMemo(()=>a2(vt),[vt]),_r=f.useMemo(()=>T2(ft),[ft]),Ti=f.useCallback(h=>{Tn(E=>So(typeof h=="function"?h(E):h))},[]),Ra=f.useCallback(h=>{Ti(E=>({...So(E),mode:h}))},[Ti]),Pa=f.useCallback(h=>{Ti(E=>({...So(E),projection:h}))},[Ti]),Cr=f.useCallback(h=>{Nf(E=>Ms(typeof h=="function"?h(E):h))},[]),[Xt,os]=f.useState(!1),[kn,Tr]=f.useState(yae),[Ri,_u]=f.useState(xae),[Zn,qr]=f.useState(Jt.FREEHAND),[mi,Jn]=f.useState(null),[ar,Mr]=f.useState(oo.REFERENCES),[pi,co]=f.useState([]),[Qs,Lr]=f.useState([]),[ko,is]=f.useState([]),[Mo,uo]=f.useState({}),[wc,hl]=f.useState({}),[Pi,Do]=f.useState({}),[Ns,_s]=f.useState({url:"",status:"idle",error:"",definition:null}),[Qo,Dn]=f.useState({}),[$r,ea]=f.useState(!0),[tn,Zr]=f.useState({activeId:"",playing:!1,elapsedSec:0,speed:1}),Rr=f.useRef(Qo),Qn=f.useRef(tn),[ei,Oi]=f.useState({}),[Pr,ti]=f.useState({activeId:"",playing:!1,elapsedSec:0,speed:1}),jo=f.useRef(Pr),[Tu,Nf]=f.useState(()=>Ms()),[Ru,$e]=f.useState(!1),ki=f.useRef(0),[hi,Pu]=f.useState(db),_f=f.useRef(""),gl=f.useRef({frameId:0,token:0}),Di=f.useRef({frameId:0,token:0,mode:"",fileRef:"",currentValues:null,targetValues:null,smoothingMs:Pd,lastTimestampMs:0}),bl=f.useRef(new Map),w=f.useRef(""),V=f.useCallback(({key:h})=>{const E=String(h||"browser-storage");_f.current!==E&&(_f.current=E,Mt("Browser storage could not save the CAD Viewer session."))},[]),q=f.useMemo(()=>{const h=new Map;for(const E of l)h.set(at(E),E);return h},[l]),ce=f.useMemo(()=>Wv(g),[g]),{meshState:ge,setMeshState:et,meshLoadInProgress:Nt,meshLoadTargetFile:je,meshLoadStage:Je,status:Lt,setStatus:gn,error:lr,setError:cr,dxfState:wn,setDxfState:$n,dxfStatus:er,setDxfStatus:ur,dxfError:bn,setDxfError:nn,dxfLoadStage:Jr,gcodeState:Or,setGcodeState:kr,gcodeStatus:Gn,setGcodeStatus:Qr,gcodeError:Lo,setGcodeError:ta,gcodeLoadStage:Ou,implicitState:yl,setImplicitState:fo,implicitStatus:ni,setImplicitStatus:Oa,implicitError:ji,setImplicitError:na,implicitLoadStage:ss,urdfState:vc,setUrdfState:xl,urdfStatus:ka,setUrdfStatus:Sl,urdfError:Sh,setUrdfError:ku,urdfLoadStage:Jv,referenceState:Tf,setReferenceState:Eh,referenceStatus:Dj,setReferenceStatus:Rf,setReferenceError:Pf,referenceLoadStage:Qv,displayEdgeState:wh,setDisplayEdgeState:eC,setDisplayEdgeStatus:h0,setDisplayEdgeError:g0,getCachedMeshState:tC,getCachedReferenceState:nC,getCachedDxfState:rC,getCachedImplicitState:oC,getCachedUrdfState:iC,cancelMeshLoad:b0,cancelDxfLoad:vh,cancelGcodeLoad:Ch,cancelImplicitLoad:Mh,cancelUrdfLoad:Ih,cancelReferenceLoad:Ah,cancelDisplayEdgeLoad:y0,loadMeshForEntry:sC,loadDxfForEntry:aC,loadGcodeForEntry:lC,loadImplicitForEntry:cC,loadUrdfForEntry:uC,loadReferencesForEntry:dC,loadDisplayEdgesForEntry:fC}=iie({entryHasMesh:qc,entryHasReferences:Qx,entryHasDisplayEdges:YN,entryHasDxf:vm,entryHasGcode:Yg,buildNormalizedReferenceState:Sie}),x0=f.useMemo(()=>{const h=x.trim().toLowerCase();return h?l.filter(E=>dl(E).toLowerCase().includes(h)||String(E.kind||"").toLowerCase().includes(h)||at(E).toLowerCase().includes(h)):l},[l,x]),S0=f.useMemo(()=>n_(l),[l]),jj=f.useMemo(()=>n_(x0),[x0]),mC=f.useMemo(()=>rk(S0),[S0]),ra=q.get(k)??null,pC=d?G1(l,d):null,hC=Dq({explicitFileParam:d,matchingEntry:pC,selectedEntry:ra,catalogHydrated:r,catalogRefreshing:o}),gC=i?"":jq({explicitFileParam:d,matchingEntry:pC,selectedEntry:ra,catalogHydrated:r,catalogRefreshing:o}),Lj=or(ra),bC=f.useMemo(()=>{const h=Object.values(qn).filter(E=>E?.status==="loading"&&E?.file).map(E=>String(E.file).trim()).filter(Boolean);return[...new Set(h)]},[qn]),ri=!!(ra&&p.includes(at(ra))),El=Lj===B.STEP&&ra?at(ra):"",wl=El?[El,ra?.hash||"",n].join(":"):"",Of=!ri&&wl&&Ct.key===wl?Ct.status:null,ee=f.useMemo(()=>kae(ra,Of),[ra,Of]),mo=or(ee),_t=hA(ee),kf=f.useMemo(()=>Dae(v),[v]),Fj=Xp({assetBackend:m}),yC=g||Fj,xC=!u&&!yC,Cc=xC&&kf.length>1,E0=xC&&!String(d||"").trim()&&kf.length===1?kf[0].dir:"",w0=!Cc,Df=v?v.stepArtifactGenerationAvailable!==!1:m===Pj,v0=v?T||"local-fs":"",oa=v0==="local-fs",SC=v0==="local-fs"&&!!(v?.rootPath||v?.directoryRoot),vl=v0==="vercel-blob",mr=mo===B.STEP,Me=ee?.kind==="assembly",C0=Hi(mo),zj=!!(C0&&(Di.current?.frameId||gl.current?.frameId)),Bj=mo===B.GCODE,gi=mr?oq(ee):"",Nh=gi?iv(ee):"",$t=Ns.url===gi?Ns.definition:null,Vj=Array.isArray($t?.animations)&&$t.animations.length>0,_h=gi?Ns.url===gi?Ns.status:"loading":"idle",M0=Ns.url===gi?Ns.error:"",Th=!!(gi&&_h==="loading"),jf=qc(ee),Rh=Xg(ee),Fo=Qx(ee),EC=YN(ee),Lf=vm(ee),Ph=Yg(ee),Oh=Oae(ee),I0=by({entry:ee,activeGenerationFiles:p}),Mc=!jf&&fh(ee,mo,{generationAvailable:Df||I0})?at(ee):"",zo=Mc?[Mc,ee?.hash||"",ee?.artifact?.error||""].join(":"):"",Ff=zo?qn[zo]:null,Ic=Ff?.status||"idle",A0=tv(Ff),$j=by({entry:ee,generationState:Ff,activeGenerationFiles:p}),zf=!!(zo&&($j||Ic!=="error"&&Ic!=="ready")),Gj=HO(ee),bi=!!ge&&!!ee&&ge.file===at(ee)&&ge.meshHash===Gj,kh=ee?.kind==="assembly"&&bi&&!!ge?.assemblyStructureReady,Bf=ee?.kind==="assembly"&&bi&&!!ge?.assemblyInteractionReady,Dh=ee?.kind==="assembly"&&bi&&!!ge?.assemblyBackgroundError,jh=!!wn&&!!ee&&wn.file===at(ee)&&wn.dxfHash===zt(ee,"dxf"),Lh=!!Or&&!!ee&&Or.file===at(ee)&&Or.gcodeHash===zt(ee,"gcode"),Fh=!!yl&&!!ee&&yl.file===at(ee)&&yl.implicitHash===zt(ee,"implicit"),Vf=!!vc&&!!ee&&vc.file===at(ee)&&vc.urdfHash===Wp(ee),mt=Vf?vc.urdfData:null,N0=Vf?vc.meshesByUrl:null,tr=jh?wn.dxfData:null,ia=Lh?Or.gcodeData:null,$f=Fh?yl.model:null,Yt=$f?.definition||null,wC=mo===B.DXF?at(ee):"",Du=mo===B.GCODE?at(ee):"",ve=Hi(mo)?at(ee):"",Ac=f.useMemo(()=>({...goe(mt),...Gse(mt)}),[mt]),vC=f.useMemo(()=>{if(!ve)return{};const h=Mo?.[ve];return h&&typeof h=="object"?h:{}},[Mo,ve]),nr=f.useMemo(()=>({...Ac,...vC}),[Ac,vC]),_0=f.useMemo(()=>{const h=mt?.motion,E=Array.isArray(h?.endEffectors)?h.endEffectors:[];return E.length?{...h,endEffectors:E}:null},[mt]),Gf=f.useMemo(()=>{const h=Array.isArray(mt?.srdf?.groupStates)?mt.srdf.groupStates:Array.isArray(mt?.motion?.groupStates)?mt.motion.groupStates:[],M=h.map(_=>String(_?.name||"").trim()).filter(Boolean).reduce((_,O)=>_.set(O,(_.get(O)||0)+1),new Map);return h.map(_=>{const O=String(_?.name||"").trim(),F=String(_?.group||"").trim();if(!O||!F)return null;const U=_j(mt,_?.jointValuesByName||_?.jointValuesByNameRad);return{..._,id:`${F}/${O}`,label:M.get(O)>1?`${O} (${F})`:O,jointValuesByName:U}}).filter(Boolean)},[mt]),zh=f.useMemo(()=>new Set((Array.isArray(mt?.joints)?mt.joints:[]).filter(h=>String(h?.type||"").trim()==="continuous").map(h=>String(h?.name||"").trim()).filter(Boolean)),[mt]),CC=f.useMemo(()=>Wse(Gf,nr,Ac)?.id||"",[Ac,nr,Gf]),Bh=ve?String(wc?.[ve]||"").trim():"",Uj=f.useMemo(()=>Bh&&Gf.some(h=>String(h?.id||"").trim()===Bh)?Bh:CC,[CC,Gf,Bh]),MC=f.useMemo(()=>!uae||!ve||!_0?.srdf?"":`${ve}:${Wp(ee)||""}`,[ee,ve,_0]);f.useEffect(()=>{if(typeof window>"u")return;const h=new AbortController;let E=!0;const M=new URL("/__cad/server",window.location.href),_=Xp(),O=Pb();return _&&M.searchParams.set("dir",_),O&&M.searchParams.set("file",O),fetch(`${M.pathname}${M.search}`,{cache:"no-store",signal:h.signal}).then(async F=>{if(!F.ok)throw new Error(`Failed to read CAD Viewer server info: ${F.status} ${F.statusText}`);return F.json()}).then(F=>{E&&C(F&&typeof F=="object"?F:{})}).catch(F=>{E&&F?.name!=="AbortError"&&C({})}),()=>{E=!1,h.abort()}},[g,d]),f.useEffect(()=>{E0&&(e_(E0),Yp({markRefreshing:!0}).catch(h=>{}),vp())},[E0]),f.useEffect(()=>{let h=!0,E=0;const M=()=>{E&&(clearTimeout(E),E=0)};if(!MC)return Kr(!1),()=>{h=!1,M()};Kr(!1);const _=async()=>{const O=await rae({timeoutMs:750});h&&(Kr(O),E=setTimeout(_,O?5e3:2e3))};return _(),()=>{h=!1,M()}},[MC]),f.useEffect(()=>{let h=!1;return gi?(_s({url:gi,status:"loading",error:"",definition:null}),Dn({}),ea(!0),Zr(Lm(null)),Bl(),_4(gi,{cadPath:Nh}).then(E=>{if(h)return;const _=RS(ce,at(ee),ee)?.slices?.stepModule||null,O=Lm(E);_s({url:gi,status:"ready",error:"",definition:E});const F=wb(E,_?.parameterValues||E.defaultParameterValues),U=_?.animationState?{...O,..._.animationState,activeId:_.animationState.activeId||O.activeId,playing:!1}:O;Rr.current=F,Qn.current=U,Dn(F),ea(_?_.enabled!==!1:!0),Zr(U),Bl({elapsedSec:U.elapsedSec,parameterValues:F})}).catch(E=>{h||(_s({url:gi,status:"error",error:E instanceof Error?E.message:String(E),definition:null}),Dn({}),ea(!0),Zr(Lm(null)),Bl())}),()=>{h=!0}):(_s({url:"",status:"idle",error:"",definition:null}),Dn({}),ea(!0),Zr(Lm(null)),Bl(),()=>{h=!0})},[ce,ee,Nh,gi]),f.useEffect(()=>{if(!Yt||!ee||mo!==B.IMPLICIT){Oi({});const O=PS(null);jo.current=O,ti(O);return}const E=RS(ce,at(ee),ee)?.slices?.implicit||null,M=PS(Yt);Oi(qd(Yt,E?.parameterValues||Yt.defaultParameterValues));const _=E?.animationState?{...M,...E.animationState,activeId:E.animationState.activeId||M.activeId,playing:!1}:M;jo.current=_,ti(_)},[ce,ee,mo,Yt]);const Nc=_0,ju=!!(On&&Nc),Gr=f.useMemo(()=>{if(!ve)return{};const h=Pi?.[ve];return h&&typeof h=="object"?h:{}},[ve,Pi]),Vh=Nc?.planningGroups||fb,IC=f.useMemo(()=>{const h=String(Gr.activePlanningGroupName||"").trim();return h&&Vh.some(E=>String(E?.name||"").trim()===h)?h:String(Vh[0]?.name||"").trim()},[Vh,Gr.activePlanningGroupName]),Cl=Nc?.endEffectors||fb,mn=f.useMemo(()=>{const h=String(Gr.activeEndEffectorName||"").trim();return h&&Cl.some(E=>String(E?.name||"").trim()===h)?h:String(Cl[0]?.name||"").trim()},[Cl,Gr.activeEndEffectorName]),Li=f.useMemo(()=>Cl.find(h=>String(h?.name||"").trim()===mn)||null,[mn,Cl]),Uf=f.useMemo(()=>Array.isArray(mt?.links)?mt.links.map(h=>String(h?.name||"").trim()).filter(Boolean):[],[mt]),yi=f.useMemo(()=>{const h=String(Gr.targetFrame||"").trim();return h&&Uf.includes(h)?h:mt?.rootLink&&Uf.includes(mt.rootLink)?mt.rootLink:Uf[0]||""},[mt,Gr.targetFrame,Uf]),Bo=f.useMemo(()=>({planningGroup:IC,endEffector:mn,targetFrame:yi,ikTimeout:Math.max(Dr(Gr.ikTimeout,.05),.001),ikAttempts:Math.max(Math.round(Dr(Gr.ikAttempts,1)),1),ikTolerance:Math.max(Dr(Gr.ikTolerance,.002),1e-4),planningPipeline:String(Gr.planningPipeline||"ompl").trim()||"ompl",plannerId:String(Gr.plannerId||"RRTConnectkConfigDefault").trim()||"RRTConnectkConfigDefault",planningTime:Math.max(Dr(Gr.planningTime,1),.1),maxVelocityScalingFactor:Math.min(Math.max(Dr(Gr.maxVelocityScalingFactor,1),.01),1),maxAccelerationScalingFactor:Math.min(Math.max(Dr(Gr.maxAccelerationScalingFactor,1),.01),1)}),[mn,IC,Gr,yi]),Lu=f.useMemo(()=>!mt||!Li||!yi?null:EE(mt,nr,Li.link,yi),[mt,Li,nr,yi]),sa=f.useMemo(()=>{const h=Gr.targetsByEndEffector&&typeof Gr.targetsByEndEffector=="object"?Gr.targetsByEndEffector:{},E=mn?h[mn]:null;return Yl(E,Lu||[0,0,0])},[Lu,mn,Gr.targetsByEndEffector]),Wj=!!(mn&&Gr.solvingEndEffectorName===mn),$h=ve&&hi.fileRef===ve?hi:null,_c=!!(ve&&ju&&$h),Gh=f.useMemo(()=>{if(!mt||!N0)return{meshData:null,error:""};try{return{meshData:Noe(mt,N0,{lightweight:!0}),error:""}}catch(h){return{meshData:null,error:h instanceof Error?h.message:String(h)}}},[mt,N0]),Uh=f.useMemo(()=>Array.isArray(mt?.joints)?mt.joints.filter(h=>String(h?.type||"")!=="fixed"&&!h?.mimic):[],[mt]),AC=f.useMemo(()=>{if(!mt||!Gh.meshData)return{meshData:null,error:Gh.error,linkWorldTransforms:new Map};try{return{...Toe(mt,Gh.meshData,nr),error:""}}catch(h){return{meshData:null,error:h instanceof Error?h.message:String(h),linkWorldTransforms:new Map}}},[mt,nr,Gh]),Ml=Array.isArray(ia?.layers)?ia.layers.length:0,Wf=Ml>0?Math.min(Math.max(Number.isFinite(Number(Ee))?Math.trunc(Number(Ee)):Ml-1,0),Ml-1):0,NC=f.useMemo(()=>bk({showTravel:W,layerRange:[0,Wf],detailMode:be?"full":"adaptive",detailLevel:Ie},Ml),[be,Ie,W,Ml,Wf]),_C=f.useMemo(()=>{if(!ia)return{meshData:null,error:""};try{return{meshData:fJ(ia,NC),error:""}}catch(h){return{meshData:null,error:h instanceof Error?h.message:String(h)}}},[ia,NC]),TC=_C.meshData,RC=_C.error;f.useMemo(()=>!Du||!ia?Du:`${Du}:travel=${W?"1":"0"}:layer=${Wf}:detail=${be?"full":`adaptive-${Ie}`}`,[be,Ie,W,ia,Du,Wf]),f.useEffect(()=>{if(!Du||Ml<=0){re(null);return}re(Ml-1),_e(!1),oe(du)},[Du,Ml]);const Fr=Hi(mo)?AC.meshData:Bj?TC:bi?ge.meshData:null,Ts=f.useMemo(()=>np($t,tn.activeId),[$t,tn.activeId]),Wh=f.useMemo(()=>({...tn,activeId:Ts?.id||tn.activeId||"",duration:Ts?.duration||0,loop:Ts?.loop!==!1}),[Ts,tn]),PC=f.useMemo(()=>!$t||!$r?null:{definition:$t,parameterValues:wb($t,Qo),animationState:Wh,cadPath:$t.cadPath||Nh,sourceUrl:gi},[Wh,Nh,$t,gi,$r,Qo]),Hj=f.useCallback(()=>{},[]),Vo=!1,Kj="";f.useEffect(()=>{Rr.current=Qo},[Qo]),f.useEffect(()=>{Qn.current=tn},[tn]);const Xj=f.useCallback((h,E)=>{const M=String(h||"").trim(),_=$t?.parameterMap?.[M];_&&Dn(O=>({...O,[M]:bu(_,E)}))},[$t]),Yj=f.useCallback(async()=>{if(Qt(""),!$t?.parameters?.length){ue("No STEP parameters to copy");return}try{await ps(aee($t,Qo)),ue("Copied STEP parameters")}catch(h){ue(h instanceof Error?h.message:"Clipboard write failed")}},[$t,Qo]),qj=f.useCallback(async()=>{if(Qt(""),!$t?.parameters?.length){ue("No STEP parameters to paste");return}try{const h=await tI(),{values:E,count:M}=lee($t,h);Dn(_=>({..._,...E})),ue(`Pasted ${M} STEP param${M===1?"":"s"}`)}catch(h){ue(h instanceof Error?h.message:"Clipboard paste failed")}},[$t]),Zj=f.useCallback(()=>{if(!$t)return;const h=wb($t,$t.defaultParameterValues),E=Lm($t);Rr.current=h,Qn.current=E,Dn(h),Zr(E),Bl({elapsedSec:E.elapsedSec,parameterValues:h})},[$t]),Jj=f.useCallback(h=>{const E=np($t,h),M={...Qn.current,activeId:E?.id||"",playing:!1,elapsedSec:0};Qn.current=M,Bl({elapsedSec:0,parameterValues:Rr.current}),Zr(M)},[$t]),OC=f.useCallback(()=>{const h=Qn.current,E=np($t,h.activeId);if(!E)return;const M=Math.max(Number(E.duration)||0,.001);if(h.playing){const F=Ao(Zx(),0,M),U=_N(),le=U&&typeof U=="object"&&Object.keys(U).length?U:Rr.current;Rr.current=le,Dn(le),Yx({elapsedSec:F,parameterValues:le});const Ce={...h,activeId:E.id,elapsedSec:F,playing:!1};Qn.current=Ce,Zr(Ce);return}const _=h.elapsedSec>=M?0:Ao(h.elapsedSec,0,M);qx(_);const O={...h,activeId:E.id,elapsedSec:_,playing:!0};Qn.current=O,Zr(O)},[$t]),Qj=f.useCallback(()=>{const h=Qn.current,E=np($t,h.activeId),M=$t&&E?jS({definition:$t,animation:E,elapsedSec:0,speed:h.speed,parameterValues:Rr.current}):Rr.current;Rr.current=M,Dn(O=>bd(O,M)?O:M),Bl({elapsedSec:0,parameterValues:M});const _={...h,elapsedSec:0,playing:!1};Qn.current=_,Zr(_)},[$t]),eL=f.useCallback(h=>{const E=Math.max(Number(Ts?.duration)||1,.001),M=Ao(h,0,E);qx(M);const _={...Qn.current,elapsedSec:M};Qn.current=_,Zr(_)},[Ts]),tL=f.useCallback(h=>{const E={...Qn.current,speed:Ao(h,.1,5)};Qn.current=E,Zr(E)},[]),nL=f.useCallback(h=>{const E=h!==!1;if(ea(E),!E){const M={...Qn.current,playing:!1};Qn.current=M,Zr(M)}},[]);f.useEffect(()=>{if(!$t||!$r||!Ts||!tn.playing||typeof window>"u"||typeof window.requestAnimationFrame!="function")return;const h=$t,E=Ts,M=Math.max(Number(E.duration)||1,.001);let _=0,O=Ka();qx(Ao(Qn.current.elapsedSec,0,M));const F=U=>{const le=Qn.current;if(!le.playing||le.activeId!==E.id)return;const Ce=Math.max((U-O)/1e3,0);O=U;const st=Ao(le.speed,.1,5);let tt=Zx()+Ce*st,Ot=le.playing;E.loop!==!1?tt%=M:tt>=M&&(tt=M,Ot=!1);const Gt=jS({definition:h,animation:E,elapsedSec:tt,speed:st,parameterValues:Rr.current});if(Yx({elapsedSec:tt,parameterValues:Gt}),!Ot){Rr.current=Gt,Dn(Go=>bd(Go,Gt)?Go:Gt);const pn={...le,elapsedSec:tt,speed:st,playing:!1};Qn.current=pn,Zr(pn);return}_=window.requestAnimationFrame(F)};return _=window.requestAnimationFrame(F),()=>{window.cancelAnimationFrame(_)}},[Ts,$t,$r,tn.playing]),f.useEffect(()=>{const h=Ts;if(!$t||!$r||typeof h?.update!="function"){Bl({elapsedSec:0,parameterValues:Rr.current});return}if(tn.playing)return;const E=Math.max(Number(h.duration)||1,.001),M=Ao(tn.elapsedSec,0,E),_=jS({definition:$t,animation:h,elapsedSec:M,speed:tn.speed,parameterValues:Rr.current});Rr.current=_,Dn(O=>bd(O,_)?O:_),Yx({elapsedSec:M,parameterValues:_})},[Ts,$t,$r,tn.elapsedSec,tn.playing,tn.speed]);const xi=f.useMemo(()=>Lb(Yt,Pr.activeId),[Pr.activeId,Yt]),Hf=f.useMemo(()=>({...Pr,activeId:xi?.id||Pr.activeId||"",duration:xi?.duration||0,loop:xi?.loop!==!1}),[Pr,xi]),T0=GT(ei,jT,k),R0=GT(Hf,jT,k),kC=f.useMemo(()=>{if(!$f)return{model:null,error:""};if(!Yt?.buildModel)return{model:$f,error:""};try{return{model:Yt.buildModel(T0,R0),error:""}}catch(h){return{model:null,error:h instanceof Error?h.message:String(h)}}},[R0,T0,Yt,$f]),Tc=kC.model,Fu=kC.error;f.useEffect(()=>{jo.current=Pr},[Pr]);const Il=f.useCallback(()=>{typeof window>"u"||typeof window.setTimeout!="function"||(ki.current&&window.clearTimeout(ki.current),$e(!0),ki.current=window.setTimeout(()=>{ki.current=0,$e(!1)},mae))},[]);f.useEffect(()=>()=>{ki.current&&typeof window<"u"&&(window.clearTimeout(ki.current),ki.current=0)},[]);const rL=!bd(ei,T0)||Hf.elapsedSec!==R0.elapsedSec,oL=!!($f&&(Pr.playing||Ru||rL)),iL=f.useCallback((h,E)=>{const M=String(h||"").trim(),_=Yt?.parameterMap?.[M];if(!_)return;const O=bu(_,E);Il(),Oi(F=>F?.[M]===O?F:{...F,[M]:O})},[Il,Yt]),sL=f.useCallback(async()=>{if(Qt(""),!Yt?.parameters?.length){ue("No implicit parameters to copy");return}try{await ps(Hk(Yt,ei)),ue("Copied implicit parameters")}catch(h){ue(h instanceof Error?h.message:"Clipboard write failed")}},[ei,Yt]),aL=f.useCallback(async()=>{if(Qt(""),!Yt?.parameters?.length){ue("No implicit parameters to paste");return}try{const h=await tI(),{values:E,count:M}=Kk(Yt,h,{label:"implicit parameter",unknownLabel:"implicit parameter"});Il(),Oi(_=>({..._,...E})),ue(`Pasted ${M} implicit param${M===1?"":"s"}`)}catch(h){ue(h instanceof Error?h.message:"Clipboard paste failed")}},[Il,Yt]),lL=f.useCallback(()=>{if(!Yt)return;Il(),Oi(qd(Yt,Yt.defaultParameterValues));const h=PS(Yt);jo.current=h,ti(h)},[Il,Yt]),cL=f.useCallback(h=>{const E=Lb(Yt,h);ti(M=>{const _={...M,activeId:E?.id||"",playing:!1,elapsedSec:0};return jo.current=_,_})},[Yt]),uL=f.useCallback(()=>{ti(h=>{const E=Lb(Yt,h.activeId);if(!E)return h;const M=Math.max(Number(E.duration)||0,.001),_=h.elapsedSec>=M?0:h.elapsedSec,O={...h,activeId:E.id,elapsedSec:_,playing:!h.playing};return jo.current=O,O})},[Yt]),dL=f.useCallback(()=>{ti(h=>{const E={...h,elapsedSec:0,playing:!1};return jo.current=E,E})},[]),fL=f.useCallback(h=>{const E=Math.max(Number(xi?.duration)||1,.001);Il(),ti(M=>{const _={...M,elapsedSec:Ao(h,0,E)};return jo.current=_,_})},[Il,xi]),mL=f.useCallback(h=>{ti(E=>{const M={...E,speed:Ao(h,.1,5)};return jo.current=M,M})},[]);f.useEffect(()=>{if(!Yt||!xi||!Pr.playing||typeof window>"u"||typeof window.setTimeout!="function")return;let h=Ka(),E=0;const M=()=>{const _=Ka(),O=Math.min(Math.max((_-h)/1e3,0),.25);h=_;const F=jo.current;if(F.playing&&F.activeId===xi.id){const U=Math.max(Number(xi.duration)||1,.001),le=Ao(F.speed,.1,5);let Ce=F.elapsedSec+O*le,st=F.playing;xi.loop!==!1?Ce%=U:Ce>=U&&(Ce=U,st=!1);const tt={...F,elapsedSec:Ce,speed:le,playing:st};jo.current=tt,ti(tt),Oi(Ot=>{try{const Gt=UT(Yt,xi,Ot,Ce);return bd(Ot,Gt)?Ot:Gt}catch(Gt){return console.error("Implicit parameter animation update failed",Gt),Ot}})}E=window.setTimeout(M,LT)};return E=window.setTimeout(M,LT),()=>{window.clearTimeout(E)}},[Pr.playing,xi,Yt]),f.useEffect(()=>{const h=xi;!Yt||typeof h?.update!="function"||Oi(E=>{try{const M=UT(Yt,h,E,Pr.elapsedSec);return bd(E,M)?E:M}catch(M){return console.error("Implicit parameter animation update failed",M),E}})},[Pr.elapsedSec,xi,Yt]);const rn=kh&&Fr?.assemblyRoot||null,Hh=kh&&Array.isArray(Fr?.assemblyMates)?Fr.assemblyMates:[],Al=f.useMemo(()=>{const h=new Map;for(const E of Hh){const M=String(E?.id||"").trim();M&&h.set(M,E)}return h},[Hh]),An=f.useMemo(()=>mr?S5({selectedEntry:ee,assemblyRoot:rn,meshData:Fr}):null,[rn,mr,ee,Fr]),Kh=f.useMemo(()=>Array.isArray(Fr?.parts)?Fr.parts:Ov(rn),[rn,Fr?.parts]),Kf=f.useMemo(()=>Me?Kh:An?[{id:op,label:An.displayName||An.name||"STEP part",name:An.displayName||An.name||"STEP part",nodeType:"part",bounds:Fr?.bounds||null}]:[],[Kh,Me,Fr?.bounds,An]);f.useMemo(()=>hT(rn),[rn]);const Xh=f.useMemo(()=>hT(An),[An]),Xf=f.useMemo(()=>Xh.map(h=>String(h?.id||"").trim()).filter(Boolean),[Xh]),DC=f.useMemo(()=>new Set(Xf),[Xf]),Nl=f.useMemo(()=>koe(rn),[rn]),Nn=f.useMemo(()=>!Me||!rn||!Vt.length?[]:Fb(rn,Vt,{rootId:Nl}),[rn,Nl,Vt,Me]),Rc=f.useMemo(()=>mr&&Me&&Fo?vae(An):[],[Me,mr,Fo,An]),jC=f.useMemo(()=>new Set(Rc),[Rc]),_l=f.useMemo(()=>!mr||!Me||!Fo?[]:_n(jt.map(h=>String(h||"").trim()).filter(h=>h&&jC.has(h))),[jt,Me,mr,jC,Fo]),Pc=f.useMemo(()=>Me?aae(rn,jt,{rootId:Nl,isolatedNodeIds:Nn}):[],[rn,Nl,jt,Nn,Me,_l]),LC=f.useMemo(()=>new Set(Pc),[Pc]),Yh=f.useMemo(()=>Pc.length?Pc.map(h=>oc(rn,h)).filter(Boolean).map(h=>({...h,leafPartIds:Zp(h)})):[],[rn,Pc]),FC=f.useMemo(()=>Doe(Yh),[Yh]),P0=Me?kh:mr&&bi&&!!Fr,zC=mr&&P0&&Kf.length>0,as=f.useMemo(()=>{const h=new Map;for(const E of Xh)h.set(E.id,E);for(const E of Kf)h.set(E.id,E);return h},[Kf,Xh]);f.useEffect(()=>{if(!Me||!rn){We(h=>h.length?[]:h);return}We(h=>{const E=Fb(rn,h,{rootId:Nl});return pd(E,h)?h:E})},[rn,Nl,Me]);const aa=f.useMemo(()=>Kf.map(h=>String(h?.id||"").trim()).filter(Boolean),[Kf]),qh=f.useMemo(()=>new Set(aa),[aa]),la=f.useCallback(h=>joe(h,{pickPartIdMap:FC,validLeafPartIds:qh}),[FC,qh]),yn=f.useCallback((h,E="")=>String(h||"").trim()===hs?[op]:Loe(h,{assemblyPartMap:as,fallbackPartId:E,validLeafPartIds:qh}),[as,qh]),O0=f.useCallback((h,E="")=>yn(h,E)[0]||"",[yn]);f.useLayoutEffect(()=>{const h=new Set((Array.isArray(dt)?dt:[]).map(E=>String(E||"").trim()).filter(Boolean));h.size&&qt(E=>{let M=!1;const _=E.filter(O=>{const F=yn(O).map(le=>String(le||"").trim()).filter(Boolean);return F.length>0&&F.every(le=>h.has(le))?(M=!0,!1):!0});return M?_:E})},[dt,yn]);const BC=AC.error,pL=f.useMemo(()=>{if(!tr)return[];try{return VO(tr)}catch{return[]}},[tr]),Yf=f.useMemo(()=>{if(!tr)return[];try{return Rb(tr,Q)}catch{return[]}},[Q,tr]),qf=f.useMemo(()=>py(J,Dr(tr?.defaultThicknessMm,$p)),[J,tr]),VC=f.useMemo(()=>{if(!tr)return{meshData:null,error:""};try{return{meshData:CY(tr,qf,Yf),error:""}}catch(h){return{meshData:null,error:h instanceof Error?h.message:String(h)}}},[qf,Yf,tr]),hL=VC.meshData,$C=VC.error,gL=f.useMemo(()=>{const h=Pae(ee);if(!h||!tr)return h;const E=Yf.map(M=>`${Gp(M?.direction)}:${Up(M?.angleDeg).toFixed(1)}`).join("|");return`${h}:t=${qf.toFixed(2)}:b=${E}`},[qf,Yf,tr,ee]),Ye=mo,k0=!!ee&&er!==ke.ERROR&&(!jh||er===ke.LOADING),D0=!!ee&&Gn!==ke.ERROR&&(!Lh||Gn===ke.LOADING),j0=!!ee&&ni!==ke.ERROR&&(!Fh||ni===ke.LOADING),L0=!!ee&&ka!==ke.ERROR&&(!Vf||ka===ke.LOADING),bL=Ye===B.STEP&&ee?.artifact&&!ee.artifact.ok&&!jf&&!zf,F0=!!ee&&(zf||!bL)&&Lt!==ke.ERROR&&(!bi||Lt===ke.LOADING||Th),Da=Ye===B.DXF?k0:Ye===B.GCODE?D0:Ye===B.IMPLICIT?j0:Hi(Ye)?L0:F0,yL=Da||ri||hC,z0=Me&&bi&&!P0&&!Dh,GC=Me&&bi&&kh&&!Bf&&!Dh,ja=ri?"Generating file...":Ye===B.DXF?ee&&!Lf?"Generating DXF preview...":"Loading DXF preview...":Ye===B.GCODE?"Loading G-code preview...":Ye===B.IMPLICIT?"Loading implicit CAD...":Hi(Ye)?`Loading ${Ye===B.SDF?"SDF":"URDF"} robot...`:Ye===B.STL?"Loading STL...":Ye===B.THREE_MF?"Loading 3MF...":Ye===B.GLB?"Loading GLB...":Rt?"STEP changed. Updating/regenerating CAD...":zf?"Generating STEP GLB artifact...":Th?"Loading STEP module...":ee&&!jf?"Generating CAD assets...":"Loading CAD...",Tl=f.useMemo(()=>Ke?.blocking?Ke:!ee||Da||ri?null:Ye===B.DXF?bie(at(ee),!!tr,er===ke.ERROR?bn:"",$C):Ye===B.GCODE?NS(ee,!!Fr,Gn===ke.ERROR?Lo:RC)||Ke:Ye===B.IMPLICIT?yie(at(ee),!!Tc,ni===ke.ERROR?ji:Fu)||Ke:Hi(Ye)?NS(ee,!!Fr,ka===ke.ERROR?Sh:BC)||Ke:NS(ee,!!Fr,Lt===ke.ERROR?lr:"")||Ke,[bn,$C,er,Ye,lr,Lo,Gn,ji,ni,tr,ee,ri,RC,Fu,Tc,Fr,BC,Lt,Sh,ka,Da,Ke]),xL=Tl?[at(ee),Tl.severity,Tl.summary,Tl.title].join(":"):"";f.useEffect(()=>{mo!==B.DXF||!tr||J>0||G(py(tr.defaultThicknessMm,$p))},[J,tr,mo]),f.useEffect(()=>{if(!wC||!tr){D([]);return}D(h=>Rb(tr,h))},[tr,wC]);const UC=!!(Me&&_l.length>0&&Pc.length<1),ls=Me&&Pc.length>0,SL=ls?"assembly":"part",EL=mo===B.STEP&&ar===oo.DRAW,wL=Te.length+Ae.length+ct.length,jn=f.useRef(Ae),$o=f.useRef(ct),an=f.useRef(Te),B0=f.useRef({fileRef:"",stepHash:""}),La=f.useRef(pi),Zf=f.useRef(Qs),Jf=f.useRef(ko),Oc=f.useRef(null),V0=f.useRef(null),Zh=f.useRef(null),zu=f.useRef(0),WC=f.useRef(P),kc=f.useRef(null),Jh=f.useRef(null),Qh=f.useRef(""),vL=f.useRef(!1);f.useEffect(()=>{WC.current=P},[P]);const Fa=he,HC=f.useMemo(()=>[...b].sort((h,E)=>h.localeCompare(E,void 0,{numeric:!0,sensitivity:"base"})),[b]),Qf=f.useMemo(()=>Dv(te),[te]),po=f.useCallback(h=>{ot(E=>typeof h=="function"?h(E):h)},[]),KC=f.useMemo(()=>tse(Pe,Ne),[Ne,Pe]);f.useEffect(()=>{Vie({fileViewerOpen:br,fileViewerExpandedDirectoryIds:A?HC:null,fileViewerWidthPx:de,fileSheetOpen:Fa,fileSheetWidthPx:Ri?kn:Qf,theme:KC},{defaultFileSheetWidthPx:Qf,onWriteError:V})},[Qf,A,HC,Ri,V,br,de,Fa,kn,KC]),f.useEffect(()=>{Ri||Tr(Qf)},[Qf,Ri]);const Rs=ae&&Fa&&!!_t&&!Xt,em=w0&&br&&!Xt,cs=ae&&em&&!Xt,tm=f.useCallback(()=>{},[]),XC=f.useCallback(()=>Kc(so()),[]),CL=f.useCallback(h=>{const E=hh(h);ute(E,{onWriteError:V})&&ye(E)},[V]),eg=f.useCallback((h,E={})=>{const M=E.persistGlobal===!0,_=String(E.presetId||"").trim();if(M&&typeof h!="function"){const O=fr(h),F=_||Ry(O,Ne)||Yr||"";En({presetId:F,settings:O}),F&&ise(O,{presetId:F,customPresets:Ne,onWriteError:V});return}En(O=>{const F=typeof h=="function"?h(O.settings):h,U=fr(F);return{presetId:O.presetId||Ry(U,Ne)||"",settings:U}})},[Ne,V,Yr]),YC=f.useCallback(()=>{const h=Kt.find(E=>E.id===Yr);if(!h){En(XC());return}En({presetId:h.id,settings:fr(h.settings)})},[Kt,XC,Yr]),qC=f.useCallback(h=>{const E=Yie(h,Se,{customPresets:Ne,sourceThemeId:Yr,onWriteError:V});if(!E)return null;const M=E.preset;return Et(E.customPresets),En({presetId:M.id,settings:fr(M.settings)}),M},[Ne,V,Yr,Se]),ML=f.useCallback(h=>{const E=String(h||"").trim();if(!qie(E,{onWriteError:V}))return!1;const M=so();return Et(M),En(_=>_.presetId!==E?_:Kc(M)),!0},[V]),ZC=f.useCallback((h=Yr)=>{const E=String(h||"").trim();if(!E||!Zie(E,Se,{onWriteError:V}))return!1;const M=so();return Et(M),En(Kc(M)),!0},[V,Yr,Se]),IL=f.useCallback(h=>{const E=String(h||"").trim();if(!E||!Jie(E,{onWriteError:V}))return!1;const M=so();return Et(M),En(_=>_.presetId===E?Kc(M):_),!0},[V]),AL=f.useCallback(()=>{if(!Qie({onWriteError:V}))return!1;const h=so();return Et(h),En(Kc(h)),!0},[V]),NL=f.useCallback(h=>{en(h||null)},[]),_L=f.useCallback(()=>{document.querySelector("[data-slot='sidebar-wrapper']")?.removeAttribute("data-sidebar-resizing"),Zh.current=null,Jh.current||(document.body.style.cursor="",document.body.style.userSelect="")},[]),TL=f.useCallback(()=>{Jh.current=null,Zh.current||(document.body.style.cursor="",document.body.style.userSelect="")},[]),RL=f.useCallback(h=>{if(h.button!==0||!ae||!em)return;h.preventDefault();const E=md({viewportWidth:te,sidebarOpen:cs,sheetOpen:Rs,sidebarWidth:de,sheetWidth:kn,sidebarMinWidth:Vl,sheetMinWidth:Uc,sidebarMaxWidth:yd,sheetMaxWidth:xd}).sidebarWidth;document.querySelector("[data-slot='sidebar-wrapper']")?.setAttribute("data-sidebar-resizing","true"),Zh.current={startX:h.clientX,startWidth:E,latestWidth:E},document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[Rs,cs,em,ae,te,de,kn]),tg=f.useCallback(h=>{j(E=>{const M=typeof h=="function"?h(E):h;return M&&!ae&&po(!1),!E&&M&&L(_=>{const O=Number(_);return Number.isFinite(O)&&O>=Vl?_:mb}),M})},[ae,po]),Bu=f.useCallback(h=>{if(h.button!==0||!ae||!(!Xt&&Fa&&!!_t))return;h.preventDefault(),_u(!0);const M=md({viewportWidth:te,sidebarOpen:cs,sheetOpen:Rs,sidebarWidth:de,sheetWidth:kn,sidebarMinWidth:Vl,sheetMinWidth:Uc,sidebarMaxWidth:yd,sheetMaxWidth:xd}).sheetWidth;Jh.current={startX:h.clientX,startWidth:M},document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[ae,Rs,cs,te,Xt,de,_t,_u,Fa,kn]),JC=f.useCallback(()=>{an.current=[],jn.current=[],rt([]),we([]),Fe({}),ht(""),wt(""),De(""),Xe(""),Rn(""),ue("")},[]),ng=f.useCallback((h,E,M=null)=>{if(!E)return h;const _=M?Oy(M):null,O=h.findIndex(le=>le.key===E);if(O===-1)return _?[...h,Dm(E,_)]:[...h,Dm(E)];if(!_)return h;const F=h[O];if(fj(F,_))return h;const U=[...h];return U[O]={key:E,..._},U},[]),za=f.useMemo(()=>ri?[]:LZ({entry:ee,fileSheetKind:_t,stepSourceStatus:Of,gcodeData:ia,urdfData:mt,viewerAlert:Tl,stepArtifactGenerationAvailable:Df,stepArtifactGenerationState:Ff,activeGenerationFiles:p,viewerServerInfo:v}),[p,ee,_t,ia,ri,Ff,Df,Of,mt,Tl,v]),QC=f.useMemo(()=>uk(za),[za]),eM=vZ(za),rg=f.useMemo(()=>({hasStepModulePanel:!!($t||_h==="loading"||M0),hasImplicitParameterPanel:!!(ni===ke.LOADING||Fu||Yt?.parameters?.length||Yt?.animations?.length),hasFileStatus:eM,isSdf:_t==="sdf",motionEnabled:_t==="srdf"&&On&&Cl.length>0,showJoints:_t==="urdf"||_t==="srdf"||_t==="sdf"}),[ni,Yt,Fu,_t,eM,$t,M0,_h,On,Cl]),eo=f.useMemo(()=>YY(_t,rg),[rg,_t]),Dc=f.useMemo(()=>qY(_t,rg),[rg,_t]),ca=f.useMemo(()=>ma(Array.isArray(Y)?Y:Dc,eo),[Dc,Y,eo]),Vu=f.useCallback(h=>{K(ma(h,eo))},[eo]),og=f.useCallback((h,{openSheet:E=!0}={})=>{const M=String(h||"").trim();return!M||!eo.includes(M)?!1:(E&&po(!0),K(_=>{const O=ma(Array.isArray(_)?_:ca,eo);return O.includes(M)?O:ma([...O,M],eo)}),!0)},[ca,eo,po]),PL=f.useCallback(h=>{const E=Kt.find(M=>M.id===h);return E?(eg(E.settings,{persistGlobal:!0,presetId:E.id}),og(bt.THEME_APPEARANCE)&&typeof window<"u"&&window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{document.querySelector("[data-cad-theme-appearance-section='true']")?.scrollIntoView({block:"start",behavior:"instant"})})}),!0):!1},[Kt,og,eg]);f.useEffect(()=>{if(!Array.isArray(Y))return;const h=ma(Y,eo);pd(h,Y)||K(h)},[Y,eo]),f.useEffect(()=>{QC===Xn.ERROR&&K(h=>{const E=ma(Array.isArray(h)?h:Dc,eo),M=ZY(E,eo,bt.FILE_STATUS);return pd(M,E)?h:M})},[Dc,eo,QC,k]),f.useEffect(()=>{if(_t!==B.IMPLICIT)return;const h=bt.STEP_PARAMETERS,E=bt.IMPLICIT_GRAPHICS,M=eo.includes(h),_=eo.includes(E);!M&&!_||K(O=>{const F=ma(Array.isArray(O)?O:Dc,eo).filter(le=>le!==E),U=M&&!F.includes(h)?[...F,h]:F;return pd(U,ma(Array.isArray(O)?O:Dc,eo))?O:ma(U,eo)})},[Dc,eo,_t,k]);const nm=f.useCallback(()=>Oy({dxfThicknessMm:J,referenceQuery:me,selectedReferenceIds:Ae,selectedPartIds:Te,inspectedAssemblyNodeId:"",expandedStepTreeNodeIds:jt,stepTreeRootShowMore:sn,fileSheetOpenSectionIds:ca,hiddenPartIds:dt,camera:kc.current,drawingTool:Zn,tabToolMode:ar,drawingStrokes:pi,drawingUndoStack:Qs,drawingRedoStack:ko}),[J,Zn,ko,pi,Qs,ca,jt,dt,me,Te,Ae,sn,ar]),rm=f.useCallback((h,E=null)=>{const M=String(h||"").trim();return M?RS(ce,M,E||q.get(M)):null},[q,ce]),tM=f.useCallback(h=>{const E=h||ee,M=at(E),_=M&&Mo?.[M]?Mo[M]:{},O=M&&Pi?.[M]?Pi[M]:{},F=tn.playing?{...tn,elapsedSec:Zx()}:tn,U=tn.playing?_N():Qo;return Ase({fileKey:M,entry:E,slices:{...or(E)===B.STEP?{display:vt}:{},tab:nm(),dxf:{thicknessMm:J,bendSettings:Q},stepModule:{enabled:$r,parameterValues:U,animationState:F},implicit:{parameterValues:ei,animationState:Pr},urdf:{jointValues:_,motionState:O},largeFile:{selectableTopologyEnabled:Tt.selectableTopologyEnabled}}})},[nm,vt,Q,J,Pr,ei,Mo,Tt,ee,tn,$r,Qo,Pi]),$u=f.useCallback(()=>{if(!zu.current||typeof window>"u"){zu.current=0;return}window.clearTimeout(zu.current),zu.current=0},[]),ig=f.useCallback(h=>{const E=at(h);return E?Nse(ce,E,tM(h),{onWriteError:V}):!0},[tM,ce,V]),sg=f.useCallback(()=>($u(),ee?ig(ee):!0),[$u,ee,ig]),ag=f.useCallback(()=>{!ee||typeof window>"u"||($u(),zu.current=window.setTimeout(()=>{zu.current=0,ig(ee)},180))},[$u,ee,ig]),$0=f.useCallback((h,E=null)=>{const M=String(h||"").trim();if(!M)return;const _=E||rm(M),O=$v(Kt);O&&En(O),Ve(pb(_?.slices?.largeFile));const F=q.get(M);Tn(or(F)===B.STEP?So(_?.slices?.display):So());const U=_?.slices?.dxf||null;D(U?.bendSettings||[]),U?.thicknessMm>0&&G(U.thicknessMm);const le=_?.slices?.stepModule||null;le&&(ea(le.enabled!==!1),Dn(le.parameterValues||{}),Zr({activeId:String(le.animationState?.activeId||""),playing:!1,elapsedSec:Math.max(Number(le.animationState?.elapsedSec)||0,0),speed:Ao(le.animationState?.speed,.1,5)}));const Ce=_?.slices?.implicit||null;if(Ce){Oi(Ce.parameterValues||{});const tt={activeId:String(Ce.animationState?.activeId||""),playing:!1,elapsedSec:Math.max(Number(Ce.animationState?.elapsedSec)||0,0),speed:Ao(Ce.animationState?.speed,.1,5)};jo.current=tt,ti(tt)}const st=_?.slices?.urdf||null;st?(uo(tt=>({...tt,[M]:st.jointValues||{}})),Do(tt=>({...tt,[M]:st.motionState||{}}))):(uo(tt=>{if(!tt?.[M])return tt;const Ot={...tt};return delete Ot[M],Ot}),Do(tt=>{if(!tt?.[M])return tt;const Ot={...tt};return delete Ot[M],Ot}))},[Kt,q,rm]),OL=f.useCallback((h,E)=>{D(M=>{if(!tr)return M;const _=Rb(tr,M).map(O=>({...O}));return h<0||h>=_.length||(Object.prototype.hasOwnProperty.call(E||{},"direction")&&(_[h].direction=Gp(E.direction)),Object.prototype.hasOwnProperty.call(E||{},"angleDeg")&&(_[h].angleDeg=Up(E.angleDeg))),_})},[tr]),nM=f.useCallback(h=>{const E=String(h||"").trim(),M=hA(q.get(E));return E&&M?`${E}:${M}`:""},[q]),G0=f.useCallback(h=>{const E=Dm(h?.key||"",h||{}),M=Bs(E.camera);Qh.current=nM(E.key),G(E.dxfThicknessMm),se(E.referenceQuery),jn.current=E.selectedReferenceIds,we(E.selectedReferenceIds),$o.current=[],ut([]),an.current=E.selectedPartIds,rt(E.selectedPartIds),Fe({}),ht(""),qt(E.expandedStepTreeNodeIds),Mn(E.stepTreeRootShowMore),K(E.fileSheetOpenSectionIds),qe(E.hiddenPartIds),We([]),wt(""),De(""),yt(""),Xe(""),Rn(""),ue(""),Qt(""),Mr(E.tabToolMode),qr(E.drawingTool),kc.current=M,Jn(M),co(E.drawingStrokes),Lr(E.drawingUndoStack),is(E.drawingRedoStack),z(E.key)},[nM]),om=f.useCallback(()=>{jn.current=[],$o.current=[],an.current=[],ht(""),G(0),D([]),se(""),we([]),ut([]),rt([]),Fe({}),qt([]),Mn(!1),K(null),qe([]),We([]),Tn(So()),Ve(pb(FT)),wt(""),De(""),yt(""),Xe(""),Rn(""),ue(""),Qt(""),po(!1),Mr(oo.REFERENCES),qr(Jt.FREEHAND),kc.current=null,Jn(null),co([]),Lr([]),is([]),z("")},[po]);f.useEffect(()=>{Cc&&k&&om()},[om,k,Cc]);const im=f.useCallback(h=>{if(!h||!q.has(h)||h===k)return;k&&sg();const E=WC.current,M=q.get(h),_=rm(h,M),O=_?.slices?.tab||null,F=E.find(Gt=>Gt.key===h)||Dm(h,{drawingTool:k?Zn:Jt.FREEHAND,tabToolMode:k?ar:oo.REFERENCES,...O||{}}),U=M?tC(M):null,le=M?nC(M):null,Ce=M?rC(M):null,st=M?iC(M):null,tt=M?oC(M):null,Ot=k?nm():null;R(Gt=>{let pn=Gt;return k&&(pn=ng(pn,k,Ot)),pn=ng(pn,h,F),pn}),qc(M)?U&&(et(U),gn(ke.READY),cr("")):(gn(ke.PENDING),cr("")),Qx(M)?le&&(Eh(le),Rf(le.disabledReason?Wn.DISABLED:Wn.READY),Pf(le.disabledReason||"")):(Eh(null),Rf(Wn.DISABLED),Pf("")),vm(M)?Ce&&($n(Ce),ur(ke.READY),nn("")):($n(null),ur(ke.PENDING),nn("")),or(M)!==B.IMPLICIT?(fo(null),Oa(ke.PENDING),na("")):tt?(fo(tt),Oa(ke.READY),na("")):(fo(null),Oa(ke.PENDING),na("")),Xg(M)?st&&(xl(st),Sl(ke.READY),ku("")):(xl(null),Sl(ke.PENDING),ku("")),G0(F),$0(h,_)},[$0,G0,nm,Zn,q,sg,rC,oC,tC,nC,iC,rm,k,nn,$n,ur,na,fo,Oa,ku,xl,Sl,ar,ng]),kL=f.useCallback(h=>Ep(h),[]);fie({manifestEntries:a,cadFileParamForEntry:kL,cadDirectorySessionBootstrappedRef:vL,setOpenTabs:R,applyTabRecord:G0,selectedEntryKeyFromUrl:Lq,createTabRecord:Dm,initialSelectedTabSnapshot:{drawingTool:Jt.FREEHAND,tabToolMode:oo.REFERENCES},upsertTabRecord:ng,selectedEntry:ee,defaultDocumentTitle:cae,selectedKey:k,entryMap:q,buildActiveTabSnapshot:nm,catalogEntries:l,manifestRevision:n,readCadParam:Pb,activateEntryTab:im,resetActiveDirectory:om,writeCadParam:Cm,readEntrySessionState:rm,applyEntrySessionState:$0}),f.useEffect(()=>{if(!(tn.playing||Pr.playing))return ag(),()=>{$u()}},[$u,Pr.playing,ag,tn.playing]),f.useEffect(()=>{if(typeof window>"u")return;const h=()=>{sg()};return window.addEventListener("pagehide",h),()=>{window.removeEventListener("pagehide",h)}},[sg]),f.useEffect(()=>{const h=typeof window<"u"?window.matchMedia?.("(prefers-color-scheme: dark)"):null;if(!h)return;const E=()=>{At(h.matches===!0)};return E(),h.addEventListener?.("change",E),()=>{h.removeEventListener?.("change",E)}},[]),f.useEffect(()=>{const h=Se.colorMode===Ht.SYSTEM?ne:Se.colorMode;dte(h,document.documentElement,{prefersDark:X})},[ne,X,Se.colorMode]),f.useEffect(()=>{Kie(Ne,{onWriteError:V})},[Ne,V]),f.useEffect(()=>(document.documentElement.dataset.glassTone=_r,()=>{delete document.documentElement.dataset.glassTone}),[_r]),f.useEffect(()=>{const h=E=>{const M=Tse(E.key);if(M!==Rd.IGNORE){if(M===Rd.COLOR_SCHEME){ye(G_());return}try{const _=so();Et(_),En(O=>O.presetId?Kc(_):O)}catch(_){console.warn("Failed to sync theme from another tab",_)}}};return window.addEventListener("storage",h),()=>{window.removeEventListener("storage",h)}},[]),f.useEffect(()=>{jn.current=Ae},[Ae]),f.useEffect(()=>{$o.current=ct},[ct]),f.useEffect(()=>{an.current=Te},[Te]),f.useEffect(()=>{if(!Nn.length||!Te.length)return;const h=new Set(Nn),E=Te.filter(M=>!h.has(String(M||"").trim()));E.length!==Te.length&&(an.current=E,rt(E),Fe(M=>{const _=new Set(E),O={};for(const[F,U]of Object.entries(M||{}))_.has(F)&&(O[F]=U);return O}),ue(""))},[Nn,Te]),f.useEffect(()=>{const h=k&&_t?`${k}:${_t}`:"";if(!h){Qh.current="";return}Qh.current!==h&&(Qh.current=h)},[_t,k]),f.useEffect(()=>{const h=at(ee),E=String(ee?.hash||zt(ee,"topology")||"").trim();if(!h){B0.current={fileRef:"",stepHash:""},Zt(!1);return}const M=B0.current,_=M.fileRef===h;_&&!!M.stepHash&&!!E&&M.stepHash!==E?(JC(),Zt(!0)):_||Zt(!1),B0.current={fileRef:h,stepHash:E}},[JC,ee]),f.useEffect(()=>{if(Rt){if(!ee){Zt(!1);return}bi&&Lt!==ke.LOADING&&Zt(!1)}},[ee,bi,Lt,Rt]),f.useEffect(()=>{La.current=pi},[pi]),f.useEffect(()=>{Zf.current=Qs},[Qs]),f.useEffect(()=>{Jf.current=ko},[ko]),f.useEffect(()=>{Ye!==B.STEP||!Fo||Mr(h=>h!==oo.DRAW||La.current.length?h:oo.REFERENCES)},[Ye,k,Fo]),f.useEffect(()=>{Pt(!1)},[xL]),f.useEffect(()=>{en(null)},[k]);const rM=f.useMemo(()=>md({viewportWidth:te,sidebarOpen:cs,sheetOpen:Rs,sidebarWidth:de,sheetWidth:kn,sidebarMinWidth:Vl,sheetMinWidth:Uc,sidebarMaxWidth:yd,sheetMaxWidth:xd}),[Rs,cs,te,de,kn]),DL=f.useCallback(h=>md({viewportWidth:te,sidebarOpen:cs,sheetOpen:Rs,sidebarWidth:h,sheetWidth:kn,sidebarMinWidth:Vl,sheetMinWidth:Uc,sidebarMaxWidth:yd,sheetMaxWidth:xd}).sidebarWidth,[Rs,cs,te,kn]),jL=f.useCallback(h=>md({viewportWidth:te,sidebarOpen:cs,sheetOpen:Rs,sidebarWidth:de,sheetWidth:h,sidebarMinWidth:Vl,sheetMinWidth:Uc,sidebarMaxWidth:yd,sheetMaxWidth:xd}).sheetWidth,[Rs,cs,te,de]);lie({isDesktop:ae,setLayoutMode:Co,setSidebarOpen:j,setTabToolsOpen:po,setLayoutViewportWidth:fe,clampSidebarWidth:DL,clampTabToolsWidth:jL,setSidebarWidth:L,setTabToolsWidth:Tr,panelResizeStateRef:Zh,tabToolsResizeStateRef:Jh,defaultSidebarWidth:mb,sidebarMinWidth:Vl,tabToolsMinWidth:Uc,endPanelResize:_L,endTabToolsResize:TL}),f.useEffect(()=>{!r||!l.length||_se(ce,l.map(h=>at(h)),{onWriteError:V})},[l,r,ce,V]),f.useEffect(()=>{R(h=>{const E=h.filter(M=>q.has(M.key));return E.length===h.length?h:E})},[q]);const lg=f.useCallback(h=>{const E=lv(h);if(!E)return;const M=$q(E);M.length&&I(_=>{let O=!1;const F=new Set(_);for(const U of M)F.has(U)||(F.add(U),O=!0);return O?F:_})},[]);f.useEffect(()=>{!r&&!l.length||I(h=>{const E=new Set(h),M=new Set(mC);let _=!1;for(const O of h)M.has(O)||(E.delete(O),_=!0);return _?E:h})},[mC,l.length,r]),f.useEffect(()=>{S.current.hasStoredState||S.current.initialRevealDone||!ee||(S.current.initialRevealDone=!0,N(!0),lg(ee))},[lg,ee]),f.useEffect(()=>{w.current=zo},[zo]),f.useEffect(()=>{if(!zo||!Mc||I0||Ic==="ready"||Ic==="error"&&A0>=ev||bl.current.has(zo))return;const h={key:zo,file:Mc};bl.current.set(zo,h),gn(ke.LOADING),cr(""),fq({key:zo,file:Mc,initialFailureCount:A0,generate:OJ,isCurrent:()=>bl.current.get(zo)===h,onState:M=>{fi(_=>({..._,[zo]:M}))},onFinalError:M=>{w.current===zo&&(gn(ke.ERROR),cr(M))},validatePayload:M=>dq(M,{file:Mc})}).finally(()=>{bl.current.get(zo)===h&&bl.current.delete(zo)})},[Mc,zo,I0,A0,Ic,cr,gn]),f.useEffect(()=>{if(!wl||!El){wr(F=>F.status===null&&!F.loading?F:{key:"",file:"",status:null,loading:!1,error:""});return}let h=!1,E=0,M=0;const _=new AbortController,O=()=>{wr(F=>({key:wl,file:El,status:F.key===wl?F.status:null,loading:!0,error:""})),kJ(El,{signal:_.signal}).then(F=>{if(h||_.signal.aborted)return;wr({key:wl,file:El,status:F,loading:!1,error:""});const U=String(F?.step?.status||"").trim();Ic==="ready"&&(U==="missing"||U==="stale")&&M<6&&(M+=1,E=window.setTimeout(O,1500))}).catch(F=>{h||_.signal.aborted||wr({key:wl,file:El,status:null,loading:!1,error:F instanceof Error?F.message:String(F)})})};return O(),()=>{h=!0,_.abort(),E&&window.clearTimeout(E)}},[Ic,El,wl]),f.useEffect(()=>{if(!ee){b0();return}if(![B.STEP,B.STL,B.THREE_MF,B.GLB].includes(Ye)){b0();return}Nt&&je===at(ee)||bi&&(!Me||Bf||Dh)||sC(ee).catch(h=>{gn(ke.ERROR),cr(h instanceof Error?h.message:String(h))})},[b0,Ye,Me,sC,Nt,je,Dh,Bf,ee,bi]),f.useEffect(()=>{if(!ee){vh();return}if(Ye!==B.DXF){vh();return}if(!Lf){vh(),$n(null),ur(ke.PENDING),nn("");return}jh||aC(ee).catch(h=>{ur(ke.ERROR),nn(h instanceof Error?h.message:String(h))})},[vh,Ye,aC,jh,ee,Lf,nn,$n,ur]),f.useEffect(()=>{if(!ee){Ch();return}if(Ye!==B.GCODE){Ch();return}if(!Ph){Ch(),kr(null),Qr(ke.PENDING),ta("");return}Lh||lC(ee).catch(h=>{Qr(ke.ERROR),ta(h instanceof Error?h.message:String(h))})},[Ch,Ye,lC,ee,Ph,Lh,ta,kr,Qr]),f.useEffect(()=>{if(!ee){Mh();return}if(Ye!==B.IMPLICIT){Mh();return}if(!Oh){Mh(),fo(null),Oa(ke.PENDING),na("");return}Fh||cC(ee).catch(h=>{Oa(ke.ERROR),na(h instanceof Error?h.message:String(h))})},[Mh,Ye,cC,ee,Oh,Fh,na,fo,Oa]),f.useEffect(()=>{if(!ee){Ih();return}if(!Hi(Ye)){Ih();return}if(!Rh){Ih(),xl(null),Sl(ke.PENDING),ku("");return}Vf||uC(ee).catch(h=>{Sl(ke.ERROR),ku(h instanceof Error?h.message:String(h))})},[Ih,Ye,uC,ee,Rh,Vf,ku,xl,Sl]);const Gu=!!Tf&&!!ee&&Fo&&Tf.fileRef===at(ee)&&Tf.referenceHash===HD(ee),LL=Gu&&Tf?.selectorRuntime||null,U0=!!wh&&!!ee&&EC&&wh.fileRef===at(ee)&&wh.displayEdgeHash===zt(ee,"displayEdgeTopology"),FL=U0&&wh?.displayEdgeRuntime||null,W0=!Me&&Te.includes(hs),cg=Ye===B.STEP&&Fo&&!Me,zL=Ye===B.STEP&&Fo&&Me&&_l.length>0,oM=Ye===B.STEP&&EC&&!ml(vt.mode)&&($y(vt.mode)||xt.enabled!==!1),BL=Tt.selectableTopologyEnabled===!0,VL=!!($D(ee)||bi&&Joe(Fr)),$L=!!(cg&&!Yoe(ee)&&!bi),sm=!!(cg&&VL&&!BL&&!W0),GL=W0||cg,iM=W0||zL||cg&&!sm&&!$L;f.useEffect(()=>{if(!ee){Ah();return}if(!Fo){Ah(),Eh(null),Rf(Wn.DISABLED),Pf("");return}if(!iM){Ah(),Eh(null),Rf(Wn.IDLE),Pf("");return}Gu||dC(ee).catch(h=>{Rf(Wn.ERROR),Pf(h instanceof Error?h.message:String(h))})},[Ah,Me,dC,iM,ee,Fo,Gu]),f.useEffect(()=>{if(!ee){y0();return}if(!oM){y0(),eC(null),h0(Wn.IDLE),g0("");return}U0||fC(ee).catch(h=>{h0(Wn.ERROR),g0(h instanceof Error?h.message:String(h))})},[y0,fC,U0,ee,oM,g0,eC,h0]),f.useEffect(()=>{Ye!==B.DXF||!Xt||(V0.current=null,os(!1))},[Ye,Xt]);const{currentReferences:ug,activeReferenceMap:sM,hoveredReferenceId:UL,hoveredPartId:Uu,visibleReferences:aM}=pie({selectedReferencesMatch:Gu,referenceState:Tf,isAssemblyView:Me,supportsPartSelection:zC,assemblyParts:Yh,assemblyPartMap:as,inspectedAssemblyNodeId:"",inspectedAssemblyPartTopologyReferences:[],selectedReferenceIds:Ae,selectedPartIds:Te,hoveredListReferenceId:St,hoveredModelReferenceId:Vn,hoveredListPartId:pe,hoveredModelPartId:He});cie({isAssemblyView:Me,supportsPartSelection:zC,assemblyPartsLoaded:P0,selectedEntryHasReferences:Fo,setSelectedReferenceIds:we,selectedReferenceIdsRef:jn,setHoveredListReferenceId:wt,setHoveredModelReferenceId:De,assemblyParts:Yh,validAssemblyPartIds:Xf,validHiddenPartIds:aa,selectedPartIdsRef:an,setSelectedPartIds:rt,parseAssemblyPartReferenceSelectionId:CT,setHiddenPartIds:qe,setHoveredListPartId:Xe,setHoveredModelPartId:Rn}),f.useEffect(()=>{const h=String(An?.id||"").trim();if(!h){qt(M=>M.length?[]:M);return}const E=new Set(Xf);qt(M=>{const _=M.filter(O=>E.has(O));return _.length===1&&_[0]===h&&!an.current.length&&!jn.current.length?[]:pd(_,M)?M:_})},[k,An,Xf]);const dg=f.useCallback(h=>String(h?.selectorType||"").trim()==="face",[]),fg=f.useCallback(h=>String(h?.selectorType||"").trim()==="edge",[]),lM=f.useCallback(h=>String(h?.selectorType||"").trim()==="vertex",[]),Rl=f.useCallback(h=>dg(h)||fg(h)||lM(h),[fg,dg,lM]),cM=f.useCallback(h=>{const E=String(h?.selectorType||"").trim();return E==="occurrence"||E==="shape"||E==="face"||E==="edge"||E==="vertex"},[]),Fi=f.useCallback(h=>{const E=String(h?.partId||"").trim();return E||CT(h?.id)?.partId||""},[]),Wu=f.useMemo(()=>!mr||!Me||!Gu?[]:k5(An,ug),[ug,Me,mr,Gu,An]),am=f.useMemo(()=>!Me||!Nn.length?[]:_n(Nn.flatMap(h=>[h,...yn(h)]).map(h=>String(h||"").trim()).filter(Boolean)),[Nn,Me,yn]),uM=f.useMemo(()=>{if(!Me||!am.length)return[];const h=new Set(am);return Wu.filter(E=>h.has(Fi(E))&&cM(E))},[Wu,am,Me,cM,Fi]),mg=f.useMemo(()=>Me&&UC?uM:aM,[uM,UC,Me,aM]),dM=f.useMemo(()=>mr?Me?_l.length?Wu:[]:ug:[],[Wu,ug,Me,mr,_l]),Un=f.useMemo(()=>j5({root:An,references:dM,fallbackPartId:Me?"":hs,topologyPartIds:Me?_l:null}),[Me,_l,An,dM]),WL=f.useMemo(()=>{if(!Me||!Nn.length)return null;const h=Un||An;return _n(Nn.flatMap(E=>DS(h,E)))},[Un,Nn,Me,An]),fM=f.useMemo(()=>mr&&Me?Aae(Un,jt,{isAssemblyView:Me}):[],[Un,jt,Me,mr]),H0=f.useMemo(()=>new Set(fM),[fM]),Io=f.useMemo(()=>Mae(Un),[Un]),K0=LL,rr=f.useMemo(()=>{const h=new Map(sM);for(const E of Array.from(h.values()))BT(h,E);for(const E of mg)BT(h,E);return h},[sM,mg]);f.useEffect(()=>{if(!Me||!Nn.length||!Ae.length)return;const h=sae(Ae,rr,Nn,{referencePartId:Fi});pd(h,Ae)||(jn.current=h,we(h),ue(""))},[rr,Nn,Me,Fi,Ae]);const pg=f.useCallback(h=>{const E=String(h||"").trim();if(!E)return[];const M=rr.get(E),_=String(M?.selectorType||"").trim();if(_!=="occurrence"&&_!=="shape")return[];const O=Fi(M);if(Me)return O?yn(O):[];const F=O&&O!==hs?O:op;return F?[F]:[]},[rr,Me,Fi,yn]),hg=f.useMemo(()=>Me?H0.size?Wu.filter(h=>H0.has(String(h?.id||"").trim())):[]:mg,[Wu,mg,Me,Vo,H0]),mM=f.useMemo(()=>hg.filter(h=>dg(h)),[dg,hg]),pM=f.useMemo(()=>hg.filter(h=>fg(h)),[fg,hg]),hM=fb,jc=Dj,HL=!!(mM.length||pM.length||hM.length),gM=Me&&_l.length>0||GL,X0=Ye===B.STEP&&Fo&&gM&&!ls&&!sm&&(jc===Wn.DISABLED||jc===Wn.ERROR||jc===Wn.READY&&!!K0&&!HL),gg=Ye===B.STEP&&Fo&&gM&&!ls&&!sm&&!X0&&(Rt||jc===Wn.IDLE||jc===Wn.LOADING||!K0),KL=f.useMemo(()=>{if(!ee)return null;if(ri)return{loading:!0,label:"generating",title:"Generator script is running"};if(Ye===B.DXF&&k0)return{loading:!0,label:Lf?Jr||"loading DXF":"building",title:ja};if(Ye===B.GCODE&&D0)return{loading:!0,label:Ph?Ou||"loading G-code":"building",title:ja};if(Ye===B.IMPLICIT&&j0)return{loading:!0,label:Oh?ss||"loading implicit CAD":"loading",title:ja};if(Hi(Ye)&&L0)return{loading:!0,label:Rh?Jv||(Ye===B.SDF?"loading SDF":"loading URDF"):"building",title:ja};if(Ye===B.STEP&&Rt)return{loading:!0,label:"building",title:ja};if(Ye===B.STEP&&zf)return{loading:!0,label:"generating GLB",title:ja};if(Ye===B.STEP&&Th)return{loading:!0,label:"loading STEP module",title:ja};if([B.STEP,B.STL,B.THREE_MF,B.GLB].includes(Ye)&&F0){const h=je===at(ee)?Je:"";return{loading:!0,label:jf?h||"loading mesh":"building",title:ja}}return Ye===B.STEP&&GC?{loading:!0,label:(je===at(ee)?Je:"")||"loading meshes",title:"Loading assembly meshes"}:Ye===B.STEP&&jc===Wn.LOADING?{loading:!0,label:Qv||"loading topology",title:"Loading selectable topology"}:Ye===B.STEP&&gg?{loading:!0,label:"building topology",title:"Preparing selectable topology"}:z0?{loading:!0,label:"building assembly",title:"Preparing assembly parts"}:null},[GC,z0,Jr,k0,Ye,Ou,D0,ss,j0,Je,je,Qv,gg,jc,ee,Lf,Ph,Oh,jf,Rh,ri,zf,Th,Rt,F0,Jv,L0,ja]),Y0=f.useMemo(()=>_n(Ae.flatMap(h=>pg(h))),[pg,Ae]),q0=f.useMemo(()=>_n([St,Vn].flatMap(h=>pg(h))),[St,Vn,pg]),XL=f.useMemo(()=>{if(!Me)return Y0;const h=new Set(Nn);return _n([...Te.flatMap(E=>{const M=String(E||"").trim();return h.has(M)?[]:yn(M,Re[M])}),...Y0])},[Nn,Me,yn,Te,Re,Y0]),YL=f.useMemo(()=>{const h=String(ze?.nodeId||"").trim();if(Me&&h){const F=String(ze?.renderPartId||"").trim(),U=yn(h,F);return U.length?U:h}if(q0.length)return q0;if(!Me||!Uu)return Uu;const E=String(pe||"").trim();if(E){const F=yn(E);return F.length?F:E}const M=String(He||Uu||"").trim(),_=la(M),O=yn(_,M);return O.length?O:Uu},[Uu,pe,He,q0,Me,yn,la,ze]),bM=String(ze?.referenceId||"").trim()||UL,qL=f.useMemo(()=>am,[am]),ZL=f.useMemo(()=>dt,[dt]),JL=f.useMemo(()=>!Me||!Bf?fb:Kh,[Kh,Me,Bf]),Hu=f.useCallback(h=>{h&&Do(E=>{const M=E?.[h];return M?.statusesByEndEffector?{...E,[h]:{...M,statusesByEndEffector:{}}}:E})},[]),Ku=f.useCallback(h=>{const E=String(h||"").trim();E&&hl(M=>{if(!M?.[E])return M;const _={...M};return delete _[E],_})},[]),bg=f.useCallback(()=>{const h=gl.current;h.token+=1,h.frameId&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(h.frameId),h.frameId=0},[]),lm=f.useCallback(()=>{const h=Di.current;h.token+=1,h.frameId&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(h.frameId),h.frameId=0,h.mode="",h.fileRef="",h.targetValues=null,h.currentValues=null,h.lastTimestampMs=0},[]),us=f.useCallback(()=>{bg(),lm()},[lm,bg]),Pl=f.useCallback((h,E,M,_={})=>{const O=String(h||"").trim();if(!O)return;const F=jr(E),U=jr(M);if(us(),typeof requestAnimationFrame!="function"||Ip(F,U)){uo(Gt=>({...Gt,[O]:U}));return}const le=Di.current,Ce=le.token+1;le.token=Ce;const st=Ka(),tt=Math.max(Dr(_?.durationMs,Rse),1),Ot=Gt=>{if(Di.current.token!==Ce)return;const pn=Math.max(Dr(Gt,Ka())-st,0),Go=Math.min(pn/tt,1),da=Dse(F,U,Go,void 0,zh),Uo=da.done||Go>=1?U:{...F,...da.values};if(uo(fa=>({...fa,[O]:Uo})),da.done||Go>=1){Di.current.frameId=0;return}Di.current.frameId=requestAnimationFrame(Ot)};le.frameId=requestAnimationFrame(Ot)},[us,zh]),yM=f.useCallback((h,E,M,_={})=>{const O=String(h||"").trim();if(!O)return;const F=jr(E),U=jr(M),le=Math.max(Dr(_?.durationMs,Pd),1);if(bg(),typeof requestAnimationFrame!="function"||Ip(F,U)){lm(),uo(Gt=>({...Gt,[O]:U}));return}const Ce=Di.current;if(Ce.frameId&&Ce.mode==="follow"&&Ce.fileRef===O){Ce.targetValues=U,Ce.smoothingMs=le;return}lm();const st=Di.current,tt=st.token+1;st.token=tt,st.mode="follow",st.fileRef=O,st.currentValues=F,st.targetValues=U,st.smoothingMs=le,st.lastTimestampMs=Ka();const Ot=Gt=>{const pn=Di.current;if(pn.token!==tt)return;const Go=Dr(Gt,Ka()),da=Math.max(Go-Dr(pn.lastTimestampMs,Go),0);pn.lastTimestampMs=Go;const Uo=jr(pn.currentValues),fa=jr(pn.targetValues),dm=jse(Uo,fa,da,pn.smoothingMs,void 0,zh),oi=dm.done?fa:{...Uo,...dm.values};if(pn.currentValues=oi,uo(nx=>({...nx,[O]:oi})),dm.done||Ip(oi,fa)){pn.frameId=0,pn.mode="",pn.fileRef="",pn.currentValues=null,pn.targetValues=null,pn.lastTimestampMs=0;return}pn.frameId=requestAnimationFrame(Ot)};st.frameId=requestAnimationFrame(Ot)},[lm,bg,zh]),xM=f.useCallback((h,E,M,_)=>{const O=String(h||"").trim();if(!O)return;us();const F=Array.isArray(M?.points)?M.points:[],U=F.length?Dr(F[F.length-1].timeFromStartSec,0):0;if(!F.length||U<=0||typeof requestAnimationFrame!="function"){uo(pn=>({...pn,[O]:jr(_)}));return}const le=gl.current,Ce=le.token+1;le.token=Ce;const st=jr(E),tt=jr(_),Ot=Ka(),Gt=pn=>{if(gl.current.token!==Ce)return;const Go=Math.max((Dr(pn,Ka())-Ot)/1e3,0),da=Go>=U,Uo=da?tt:Hse(M,Go,st);if(uo(fa=>({...fa,[O]:Uo})),da){gl.current.frameId=0;return}gl.current.frameId=requestAnimationFrame(Gt)};le.frameId=requestAnimationFrame(Gt)},[us]);f.useEffect(()=>()=>{us()},[us]);const Xu=f.useCallback((h,E)=>{const M=String(h||"").trim();if(!M||!mt||!Li||!mn||!yi||!E||typeof E!="object")return;const _=EE(mt,E,Li.link,yi);if(!_)return;const O=Yl(_);Do(F=>{const U=F?.[M]&&typeof F[M]=="object"?F[M]:{},le=U.targetsByEndEffector&&typeof U.targetsByEndEffector=="object"?U.targetsByEndEffector:{},Ce=U.statusesByEndEffector&&typeof U.statusesByEndEffector=="object"?{...U.statusesByEndEffector}:{};return delete Ce[mn],{...F,[M]:{...U,targetsByEndEffector:{...le,[mn]:O},statusesByEndEffector:Ce}}})},[mt,Li,mn,yi]),QL=f.useCallback((h,E,M={})=>{const _=String(h?.name||"").trim();if(!ve||!_)return;const O=uc(h,E),F=Dr(nr?.[_],h?.defaultValueDeg??0);if(Math.abs(O-F)<=p0)return;const U={...nr,[_]:O};M?.scrub?yM(ve,nr,U,{durationMs:Pd}):Pl(ve,nr,U,{durationMs:Pd}),Ku(ve),Xu(ve,U),Hu(ve)},[Pl,Hu,Ku,yM,ve,nr,Xu]),eF=f.useCallback(()=>{ve&&(us(),Ku(ve),Pl(ve,nr,Ac),Xu(ve,Ac),Hu(ve))},[Pl,us,Hu,Ku,Ac,ve,nr,Xu]),tF=f.useCallback(h=>{if(!ve||!h?.jointValuesByName||typeof h.jointValuesByName!="object")return;us();const E=jr(h.jointValuesByName);if(!Object.keys(E).length)return;const M={...nr,...E},_=String(h?.id||"").trim();_&&hl(O=>({...O,[ve]:_})),Pl(ve,nr,M),Xu(ve,M),Hu(ve)},[Pl,us,Hu,ve,nr,Xu]),nF=f.useCallback(h=>{if(!ve)return;const E=String(h||"").trim();f.startTransition(()=>{Do(M=>({...M,[ve]:{...M?.[ve]&&typeof M[ve]=="object"?M[ve]:{},activeEndEffectorName:E}}))})},[ve]),rF=f.useCallback((h,E)=>{if(!ve)return;const M=String(h||"").trim();M&&f.startTransition(()=>{Do(_=>({..._,[ve]:{..._?.[ve]&&typeof _[ve]=="object"?_[ve]:{},[M]:E}}))})},[ve]),oF=f.useCallback((h,E)=>{if(!ve||!mn)return;const M=Number(h);if(!Number.isInteger(M)||M<0||M>2)return;const _=Dr(E,sa[M]??0);f.startTransition(()=>{Do(O=>{const F=O?.[ve]&&typeof O[ve]=="object"?O[ve]:{},U=F.targetsByEndEffector&&typeof F.targetsByEndEffector=="object"?F.targetsByEndEffector:{},le=Yl(U[mn],sa);le[M]=_;const Ce=F.statusesByEndEffector&&typeof F.statusesByEndEffector=="object"?{...F.statusesByEndEffector}:{};return delete Ce[mn],{...O,[ve]:{...F,targetsByEndEffector:{...U,[mn]:le},statusesByEndEffector:Ce}}})})},[ve,mn,sa]),iF=f.useCallback(()=>{if(!ve||!mn||!Lu)return;const h=Yl(Lu);f.startTransition(()=>{Do(E=>{const M=E?.[ve]&&typeof E[ve]=="object"?E[ve]:{},_=M.targetsByEndEffector&&typeof M.targetsByEndEffector=="object"?M.targetsByEndEffector:{},O=M.statusesByEndEffector&&typeof M.statusesByEndEffector=="object"?{...M.statusesByEndEffector}:{};return delete O[mn],{...E,[ve]:{...M,targetsByEndEffector:{..._,[mn]:h},statusesByEndEffector:O}}})})},[ve,Lu,mn]),Yu=f.useCallback(async(h="srdf.solvePose",E=sa)=>{if(!ve||!mt||!Li||!mn||!yi)return;const M=h==="srdf.planToPose"?"srdf.planToPose":"srdf.solvePose",_=Yl(E),O=F=>{const U=String(F||"Motion request failed.");if(Sn(""),typeof window>"u"){Sn(U);return}window.setTimeout(()=>{Sn(U)},0)};if(Sn(""),!Nc?.srdf){O("SRDF data is not loaded for this file.");return}if(!On){O("MoveIt2 server is offline.");return}us(),Do(F=>{const U=F?.[ve]&&typeof F[ve]=="object"?F[ve]:{};return{...F,[ve]:{...U,solvingEndEffectorName:mn}}});try{const F=await oae(M,{dir:g,file:ve,startJointValuesByName:zse(mt,nr),startJointValuesByNameDeg:nr,target:{endEffector:mn,frame:yi,targetLink:Li.link,xyz:_},moveit2:{planningGroup:Bo.planningGroup,endEffector:Bo.endEffector,targetLink:Li.link,targetFrame:Bo.targetFrame,ik:{positionOnly:!0,timeout:Bo.ikTimeout,attempts:Bo.ikAttempts,tolerance:Bo.ikTolerance},planning:{pipeline:Bo.planningPipeline,plannerId:Bo.plannerId,planningTime:Bo.planningTime,maxVelocityScalingFactor:Bo.maxVelocityScalingFactor,maxAccelerationScalingFactor:Bo.maxAccelerationScalingFactor}}});if(F?.ok===!1){O(String(F.message||"MoveIt2 server request failed."));return}const U=F?.trajectory?Vse(mt,F.trajectory):null,le=U?.points?.length?U.points[U.points.length-1].positionsByName:null,Ce=U?.points?.length?U.points[U.points.length-1].positionsByNameDeg:null,st=F?.jointValuesByName||le,tt=st?TE(mt,st,{native:!0}):TE(mt,F?.jointValuesByNameDeg||Ce),Ot={...nr,...tt},Gt=$se(mt,Ot,{...Li,frame:yi},_),pn=Bo.ikTolerance;Ku(ve),U?xM(ve,nr,U,Ot):Pl(ve,nr,Ot),Gt.positionError>pn&&O("Motion applied, but FK residual is outside tolerance.")}catch(F){O(F instanceof Error?F.message:String(F))}finally{Do(F=>{const U=F?.[ve]&&typeof F[ve]=="object"?F[ve]:{};if(U.solvingEndEffectorName!==mn)return F;const le={...U};return delete le.solvingEndEffectorName,{...F,[ve]:le}})}},[Pl,us,g,Ku,On,xM,mt,ve,Nc,Li,mn,yi,sa,Bo,nr]),sF=f.useCallback(async()=>{await Yu("srdf.solvePose",sa)},[Yu,sa]),aF=f.useCallback(async()=>{await Yu("srdf.planToPose",sa)},[Yu,sa]),qu=f.useCallback(h=>{const E=Bs(h);return E?(Oc.current?.setPerspective?.(E,{animate:!0}),kc.current=E,Jn(E),!0):!1},[]),SM=f.useCallback(()=>{if(!ve||!ju)return;const h=Bs(Oc.current?.getPerspective?.()||kc.current);Pu({fileRef:ve,originalPerspective:h})},[ve,ju]),Zu=f.useCallback(()=>{const h=hi.fileRef?hi.originalPerspective:null;Pu(db()),qu(h)},[qu,hi.fileRef,hi.originalPerspective]),EM=f.useCallback(()=>{if(_c){Zu();return}SM()},[SM,Zu,_c]);f.useEffect(()=>{if(!_c||typeof window>"u")return;const h=E=>{E.defaultPrevented||E.key!=="Escape"&&E.key!=="Esc"&&E.code!=="Escape"||(E.preventDefault(),E.stopPropagation(),Zu())};return window.addEventListener("keydown",h,!0),()=>{window.removeEventListener("keydown",h,!0)}},[Zu,_c]);const wM=f.useCallback(h=>{!ve||!mn||Do(E=>{const M=E?.[ve]&&typeof E[ve]=="object"?E[ve]:{},_=M.targetsByEndEffector&&typeof M.targetsByEndEffector=="object"?M.targetsByEndEffector:{},O=M.statusesByEndEffector&&typeof M.statusesByEndEffector=="object"?{...M.statusesByEndEffector}:{};return delete O[mn],{...E,[ve]:{...M,targetsByEndEffector:{..._,[mn]:h},statusesByEndEffector:O}}})},[ve,mn]),lF=f.useCallback(async({point:h}={})=>{if(!ve||!mt||!Li||!mn)return;const E=Xse(h);if(!E||!$h)return;const M=Eoe(mt,nr,E,yi);if(!M)return;const _=Yl(M),O=$h.originalPerspective;Pu(db()),qu(O),wM(_),await Yu("srdf.solvePose",_)},[wM,Yu,qu,mt,ve,Li,mn,yi,nr,$h]),cF=f.useCallback(async()=>{if(Qt(""),!Uh.length){ue("No movable joints are available");return}try{await ps(Yse(Uh,nr)),ue(mo===B.SDF?"Copied joint values":"Copied joint angles")}catch(h){ue(h instanceof Error?h.message:"Clipboard write failed")}},[Uh,mo,nr]);f.useEffect(()=>{if(hi.fileRef&&hi.fileRef!==ve){const h=hi.originalPerspective;Pu(db()),qu(h)}},[qu,ve,hi.fileRef,hi.originalPerspective]);const yg=f.useMemo(()=>{const h=Ae.map(_=>Io.get(_)||rr.get(_)||$l(_,"topology")).filter(Boolean);if(!Me&&Te.includes(hs)){const _=_S(ee);_&&h.push(_)}const E=Te.map(_=>$l(_,"assembly-part")||Io.get(_)||rp(hb({assemblyPartMap:as,displayStepTreeRoot:Un,stepTreeRoot:An,nodeId:_}),_,"assembly-part")).filter(Boolean),M=ct.map(_=>Al.get(_)).filter(Boolean);return Fm(km({references:[...h,...E],parts:[],mates:M,entry:ee}),{selectedReferenceIds:Ae,selectedPartIds:Te,selectedMateIds:ct,copyReferenceMap:Io})},[as,Un,rr,Al,ee,ct,Te,Ae,Io,An]),vM=f.useMemo(()=>yg.lines.map(h=>Gs(h)).filter(Boolean),[yg.lines]),uF=f.useMemo(()=>Iie(vM,{count:yg.copiedCount}),[vM,yg.copiedCount]),CM=f.useCallback((h,{expandSelf:E=!1,includeVisualOnlyAncestors:M=!0}={})=>{const _=String(h||"").trim(),O=Un||An;if(!_||!O)return;const F=Tae(O,_,{expandSelf:E,includeVisualOnlyAncestors:M});F.length&&qt(U=>_n([...U,...F]))},[Un,An]),ua=f.useCallback((h,{expandSelf:E=!1,expandAncestors:M=!1,source:_="viewer"}={})=>{const O=String(h||"").trim();!O||_t!=="step"||(Bt(_==="viewer"?`${Date.now()}:${O}`:""),og(bt.STEP_TREE,{openSheet:JY({isDesktop:ae,source:_})}),(M||E)&&CM(O,{expandSelf:E}))},[CM,ae,og,_t]),Lc=f.useCallback((h,{multiSelect:E=!1,source:M="viewer"}={})=>{if(Rt||Vo)return;M!=="viewer"&&Bt("");const _=String(h||"").trim(),O=rr.get(_),F=String(O?.selectorType||"").trim(),U=Fi(O);if(Me&&(F==="shape"||F==="occurrence")&&U&&Nn.includes(U)){const Ce=jn.current.filter(st=>String(st||"").trim()!==_);Ce.length!==jn.current.length&&(jn.current=Ce,we(Ce),ue(""));return}const le=!E&&(an.current.length||$o.current.length)?_?[_]:[]:TS(jn.current,_,{multiSelect:E});if(le.length&&!ae&&j(!1),ht(""),!E&&an.current.length&&(an.current=[],rt([]),Fe({})),!E&&$o.current.length&&($o.current=[],ut([])),jn.current=le,we(le),le.includes(_)){const Ce=$T(Un,_);ua(Ce||U,{source:M})}},[Un,rr,Nn,ae,Me,Fi,ua,Vo,Rt]),MM=f.useCallback(()=>{jn.current=[],$o.current=[],ht(""),we([]),ut([]),ue("")},[]);f.useCallback(()=>{jn.current=[],$o.current=[],ht(""),we([]),ut([]),wt(""),De(""),yt(""),ue("")},[]);const dF=f.useCallback(async()=>{if(Qt(""),Rt){ue("STEP update in progress. Please wait.");return}const h=jn.current.map(U=>Io.get(U)||rr.get(U)||$l(U,"topology")).filter(Boolean);if(!Me&&an.current.includes(hs)){const U=_S(ee);U&&h.push(U)}const E=an.current.map(U=>$l(U,"assembly-part")||Io.get(U)||rp(hb({assemblyPartMap:as,displayStepTreeRoot:Un,stepTreeRoot:An,nodeId:U}),U,"assembly-part")).filter(Boolean),M=$o.current.map(U=>Al.get(U)).filter(Boolean);if(!h.length&&!E.length&&!M.length){ue("Nothing selected");return}const _=Fm(km({references:[...h,...E],parts:[],mates:M,entry:ee}),{selectedReferenceIds:jn.current,selectedPartIds:an.current,selectedMateIds:$o.current,copyReferenceMap:Io}),{lines:O,missingPartNames:F=[]}=_;if(!O.length){ue(F.length===1?`No selector ref is available for ${F[0]}`:"No selector refs are available for the selection");return}try{await ps(O.map(Ce=>Gs(Ce)).filter(Boolean).join(`
+`));const U=_.copiedCount||h.length+E.length+M.length-F.length,le=F.length?` (${F.length} unavailable)`:"";ue(`Copied ${U} ref${U===1?"":"s"}${le}`)}catch(U){ue(U instanceof Error?U.message:"Clipboard write failed")}},[as,Un,rr,Al,ee,Qt,Io,An,Rt]),Ba=f.useCallback(h=>{const E=String(h||"").trim();if(!E)return;const _=jt.includes(E)&&Me&&rn&&Nn.some(F=>Jc(rn,E,F)),O=_?new Set(DS(Un||An,E)):null;qt(F=>F.includes(E)?F.filter(U=>O?!O.has(U):U!==E):_n([...F,E])),_&&We(F=>{const U=F.filter(le=>!Jc(rn,E,le));return U.length===F.length?F:U})},[rn,Un,jt,Nn,Me,An]),cm=f.useCallback(h=>{const E=String(h||"").trim();if(!E)return an.current;const M=an.current.filter(_=>String(_||"").trim()!==E);return M.length===an.current.length?an.current:(an.current=M,rt(M),Fe(_=>{const O={..._};return delete O[E],O}),M)},[]),Ju=f.useCallback((h,{multiSelect:E=!1,renderPartId:M="",source:_="viewer"}={})=>{if(Rt||Vo)return an.current;_!=="viewer"&&Bt("");const O=String(h||"").trim();if(Me&&Nn.includes(O))return cm(O);const F=an.current.includes(O);if(Me&&!(_==="viewer"?LC:DC).has(O)&&!F)return an.current;const le=!E&&(jn.current.length||$o.current.length)?O?[O]:[]:TS(an.current,h,{multiSelect:E});return le.length&&!ae&&j(!1),ht(""),!E&&jn.current.length&&(jn.current=[],we([])),!E&&$o.current.length&&($o.current=[],ut([])),an.current=le,rt(le),le.includes(O)&&ua(O,{source:_}),Fe(Ce=>{const st={};for(const tt of le){const Ot=String(tt||"").trim();if(!Ot)continue;const Gt=Ot===O?O0(Ot,M):O0(Ot,Ce[Ot]);Gt&&(st[Ot]=Gt)}return st}),le},[ae,Me,Nn,cm,ua,O0,DC,LC,Vo,Rt]),fF=f.useCallback((h,{multiSelect:E=!1}={})=>{const M=String(h||"").trim();Ju(M,{multiSelect:E,source:"tree"})},[Ju]),mF=f.useCallback((h,{multiSelect:E=!1}={})=>{const M=String(h||"").trim();M&&Lc(M,{multiSelect:E,source:"tree"})},[Lc]),IM=f.useCallback((h,{multiSelect:E=!1}={})=>{if(Rt||Vo)return;Bt("");const M=String(h||"").trim();if(!M||!Al.has(M))return;const _=!E&&(an.current.length||jn.current.length)?[M]:TS($o.current,M,{multiSelect:E});_.length&&!ae&&j(!1),ht(""),!E&&an.current.length&&(an.current=[],rt([]),Fe({})),!E&&jn.current.length&&(jn.current=[],we([])),$o.current=_,ut(_),ue("")},[ae,Al,Vo,Rt]),pF=f.useCallback((h,{multiSelect:E=!1}={})=>{IM(h,{multiSelect:E})},[IM]),ds=f.useCallback(()=>{Bt(""),an.current=[],jn.current=[],$o.current=[],ht(""),rt([]),Fe({}),we([]),ut([]),Xe(""),Rn(""),wt(""),De(""),yt(""),Ze(null),ue("")},[]),Ol=f.useCallback(h=>{const E=String(h||"").trim(),M=Un||An,_=new Set(DS(M,E));_.size&&qt(O=>O.filter(F=>!_.has(F)))},[Un,An]),um=f.useCallback(h=>{if(!Me||!rn)return;const E=_n((Array.isArray(h)?h:[h]).map(U=>String(U||"").trim()).filter(Boolean)),M=Fb(rn,E,{rootId:Nl}),_=M.map(U=>({id:U,node:oc(rn,U)})).filter(({node:U})=>!!U);if(!_.length){We(U=>U.length?[]:U);return}const O=_.flatMap(({node:U})=>Zp(U)).map(U=>String(U||"").trim()).filter(Boolean),F=new Set(O);ds(),We(M),qt(U=>_n([...U,...M])),qe(U=>{if(!F.size)return U;const le=U.filter(Ce=>!F.has(String(Ce||"").trim()));return le.length===U.length?U:le});for(const U of M)ua(U,{expandSelf:!0,source:"tree"})},[rn,Nl,ds,Me,ua]),Fc=f.useCallback(()=>{for(const h of Nn)Ol(h);We(h=>h.length?[]:h)},[Ol,Nn]),Z0=f.useCallback(h=>{const E=String(h||"").trim();if(!E){Fc();return}Ol(E),We(M=>{const _=M.filter(O=>String(O||"").trim()!==E);return _.length===M.length?M:_})},[Ol,Fc]),Va=f.useCallback(()=>{ds()},[ds]);f.useEffect(()=>{},[Va,on,Vo]);const Qu=f.useCallback((h,E="")=>{const M=new Set((Array.isArray(h)?h:[]).map(Ce=>String(Ce||"").trim()).filter(Boolean));if(!M.size)return;const _=String(E||"").trim(),O=an.current.filter(Ce=>{const st=String(Ce||"").trim();return!st||_&&Jc(rn,_,st)?!1:!yn(st).some(Ot=>M.has(String(Ot||"").trim()))}),F=O.length!==an.current.length;F&&(an.current=O,rt(O),Fe(Ce=>{const st=new Set(O),tt={};for(const[Ot,Gt]of Object.entries(Ce||{}))st.has(Ot)&&(tt[Ot]=Gt);return tt}));const U=jn.current.filter(Ce=>{const st=rr.get(Ce),tt=Fi(st);return!yn(tt,tt).some(Gt=>M.has(String(Gt||"").trim()))}),le=U.length!==jn.current.length;le&&(jn.current=U,we(U)),(F||le)&&(ht(""),ue(""))},[rn,rr,Fi,yn]);f.useEffect(()=>{Qu(dt)},[Qu,dt]);const AM=f.useCallback(h=>{const E=String(h||"").trim(),M=yn(h);M.length&&(Ol(h),Qu(M,E),We(_=>{const O=_.filter(F=>!Jc(rn,E,F));return O.length===_.length?_:O}),qe(_=>{const O=new Set(_);let F=!1;for(const U of M)!U||O.has(U)||(O.add(U),F=!0);return F?[...O]:_}))},[rn,Ol,Qu,yn]),NM=f.useCallback(h=>{const E=yn(h);if(!E.length)return;const M=new Set(E);qe(_=>_.filter(O=>!M.has(O))),ua(h,{source:"viewer"})},[yn,ua]),hF=f.useCallback(h=>{const E=yn(h);if(!E.length)return;const M=new Set(dt);E.every(O=>M.has(O))||(Ol(h),Qu(E,h),We(O=>{const F=O.filter(U=>!Jc(rn,h,U));return F.length===O.length?O:F})),qe(O=>{const F=new Set(O);if(E.every(le=>F.has(le)))return O.filter(le=>!E.includes(le));for(const le of E)F.add(le);return[...F]})},[rn,Ol,Qu,dt,yn]),_M=f.useCallback(()=>{const h=[...new Set(an.current.map(E=>String(E||"").trim()).filter(Boolean))];h.length<1||(We(E=>E.length?[]:E),qe(E=>{const M=[...E],_=new Set(E);let O=!1;for(const F of h.flatMap(U=>yn(U)))!F||_.has(F)||(_.add(F),M.push(F),O=!0);return O?M:E}),ds())},[ds,yn]),gF=f.useCallback(()=>{const h=[...new Set(an.current.map(M=>String(M||"").trim()).filter(Boolean).flatMap(M=>yn(M)).map(M=>String(M||"").trim()).filter(Boolean))];if(!h.length)return;const E=new Set(h);We(M=>M.length?[]:M),qe(aa.filter(M=>!E.has(M))),ds()},[ds,yn,aa]),J0=f.useCallback(h=>{const E=_n((Array.isArray(h)?h:[h]).map(O=>String(O||"").trim()).filter(Boolean));if(!E.length)return;const M=[...new Set(E.flatMap(O=>yn(O)).map(O=>String(O||"").trim()).filter(Boolean))];if(!M.length)return;const _=new Set(M);We(O=>O.length?[]:O),qe(aa.filter(O=>!_.has(O))),ds();for(const O of E)ua(O,{source:"tree"})},[ds,yn,ua,aa]),Q0=f.useCallback(()=>{aa.length&&(We(h=>h.length?[]:h),qe(aa),ds())},[ds,aa]),ex=f.useCallback(()=>{qe(h=>h.length?[]:h)},[]),bF=f.useCallback(h=>{const E=String(h||"").trim(),M=rr.get(E)||null;if(M&&Rl(M)){De(E),Rn("");return}if(ls){const _=E;if(!_){De(""),Rn("");return}De(""),Rn(la(_));return}De(E)},[rr,Rl,ls,la,Vo]),yF=f.useCallback((h,{multiSelect:E=!1}={})=>{if(Rt||Vo)return;const M=String(h||"").trim();if(!M){Va();return}const _=rr.get(M)||null;if(_&&Rl(_)){Lc(M,{multiSelect:E});return}if(ls){const O=M,F=la(O);if(!F){Va();return}Ju(F,{multiSelect:E,renderPartId:O});return}rr.has(M)&&Lc(M,{multiSelect:E})},[Va,rr,Rl,la,Rt,Lc,Ju,ls,Vo]),xF=f.useCallback(h=>{if(Rt||Vo||!Me)return;const E=String(h||"").trim();if(!E){Fc(),Va();return}if(!ls)return;const M=rr.get(E)||null;if(M&&Rl(M))return;const _=la(E);if(_){um(_);const O=oc(rn,_),F=Nae(O,E);De(""),Rn(F||_)}},[rn,Va,um,Fc,rr,Rl,ls,Me,la,Vo,Rt]),SF=f.useCallback(()=>{Ze(null)},[]);f.useEffect(()=>{Ze(null)},[k]);const xg=f.useCallback(({clientX:h=0,clientY:E=0}={})=>{if(!mr){Ze(null);return}const M=VT({root:Un,isAssemblyView:Me,expandedTreeNodeIds:jt,loadableTreeNodeIds:Rc,actionNodeIds:[]});Ze({x:Number(h)||0,y:Number(E)||0,global:!0,label:"Viewer",hidden:!0,showShowAll:dt.length>0,showCameraActions:!0,showExpandCollapse:M.showExpandCollapse||jt.length>0,collapsedExpandableTreeNodeIds:M.collapsedExpandableTreeNodeIds,expandedExpandableTreeNodeIds:jt,expandAllDisabled:M.collapsedExpandableTreeNodeIds.length<1,collapseAllDisabled:jt.length<1})},[Un,jt,dt.length,Me,mr,Rc]),EF=f.useCallback((h,{clientX:E=0,clientY:M=0}={})=>{if(Rt||Vo){Ze(null);return}const _=String(h||"").trim();if(!_){xg({clientX:E,clientY:M});return}const O=rr.get(_)||null;if(O&&Rl(O)){const oi=jn.current.includes(_),nx=_n(jn.current.map(zi=>String(zi||"").trim()).filter(Boolean)),fm=_n([...nx,_]),$M=fm.map(zi=>Io.get(zi)||rr.get(zi)||$l(zi,"topology")).filter(Boolean),rx=fm,tz=_n(an.current.map(zi=>String(zi||"").trim()).filter(Boolean).flatMap(zi=>yn(zi,zi))),GM=_n([...tz,...rx.map(zi=>Fi(rr.get(zi)||(zi===_?O:null))).filter(Boolean)]),nz=rx.length>0||GM.length>0,{lines:rz}=Fm(km({references:$M.length?$M:[O],parts:[],entry:ee}),{selectedReferenceIds:fm,copyReferenceMap:Io});Ze({x:Number(E)||0,y:Number(M)||0,referenceId:_,referenceIds:fm,label:String(O?.label||O?.displayName||_).trim(),selected:oi,hidden:!1,focused:!1,actionCount:fm.length||1,copyText:rz.join(`
+`),showIsolate:!1,showHideOther:!1,showVisibility:!1,showHideAll:!1,showCameraActions:!0,zoomToFitDisabled:!nz,fitReferenceIds:rx,fitPartIds:GM});return}if(!ls){xg({clientX:E,clientY:M});return}const F=la(_);if(!F){xg({clientX:E,clientY:M});return}const U=as.get(F)||oc(rn,F)||null,le=String(U?.displayName||U?.name||U?.label||F).trim(),Ce=yn(F,_),st=Ce.length>0&&Ce.every(oi=>dt.includes(oi)),tt=Nn.includes(F),Ot=an.current.includes(F),Gt=_n([...an.current.map(oi=>String(oi||"").trim()).filter(Boolean),F]),pn=_n(jn.current.map(oi=>String(oi||"").trim()).filter(Boolean)),Go=_n([...Gt.flatMap(oi=>yn(oi,oi===F?_:oi))]),da=pn.length>0||Go.length>0,Uo=VT({root:Un,isAssemblyView:Me,expandedTreeNodeIds:jt,loadableTreeNodeIds:Rc,actionNodeIds:Gt}),fa=Io.get(F)||rp(U,F,"assembly-part")||zT(U,F)||$l(F,"assembly-part"),{lines:dm}=Fm(km({references:fa?[fa]:[],parts:[],entry:ee}),{selectedPartIds:Gt,copyReferenceMap:Io});Ze({x:Number(E)||0,y:Number(M)||0,nodeId:F,renderPartId:_,label:le,selected:Ot,hidden:st,focused:tt,actionNodeIds:Gt,actionCount:Gt.length||1,copyText:dm[0]||"",selectDisabled:tt||!Ot&&st,showIsolate:!0,isolateDisabled:!1,showExitAllIsolate:Nn.length>1,exitAllIsolateDisabled:Nn.length<2,showHideOther:!0,hideOtherDisabled:st,showVisibility:!tt,visibilityDisabled:tt,showHideAll:!1,hideAllDisabled:!1,hideAllLabel:"Show all",showCameraActions:!0,zoomToFitDisabled:!da,fitPartIds:Go,fitReferenceIds:pn,showExpandCollapse:Uo.showExpandCollapse,collapsedActionNodeIds:Uo.collapsedActionNodeIds,expandedActionNodeIds:Uo.expandedActionNodeIds,collapsedExpandableTreeNodeIds:Uo.collapsedExpandableTreeNodeIds,expandedExpandableTreeNodeIds:Uo.expandedExpandableTreeNodeIds,expandSelectedDisabled:Uo.collapsedActionNodeIds.length<1,collapseSelectedDisabled:Uo.expandedActionNodeIds.length<1,expandAllDisabled:Uo.collapsedExpandableTreeNodeIds.length<1,collapseAllDisabled:Uo.expandedExpandableTreeNodeIds.length<1})},[as,rn,Un,Nn,rr,dt,Me,Rl,Rc,yn,xg,la,ee,Io,jt,Vo,Rt,ls]),wF=f.useCallback(async h=>{const E=String(h?.copyText||"").split(`
+`).map(M=>Gs(M)).filter(Boolean).join(`
+`);if(!E){ue("No selector ref is available for this node");return}try{await ps(E),ue("Copied reference")}catch(M){ue(M instanceof Error?M.message:"Failed to copy reference")}},[]),vF=f.useCallback(async(h,{topology:E=!1}={})=>{const M=String(h||"").trim();if(!M){ue("No selector ref is available for this node");return}const _=!E&&!Me&&M===hs?_S(ee):null,O=E&&(Io.get(M)||rr.get(M)||$l(M,"topology"))||null,F=!E&&!_?Io.get(M)||rp(hb({assemblyPartMap:as,displayStepTreeRoot:Un,stepTreeRoot:An,nodeId:M}),M,"assembly-part")||zT(hb({assemblyPartMap:as,displayStepTreeRoot:Un,stepTreeRoot:An,nodeId:M}),M)||$l(M,"assembly-part"):null,{lines:U}=Fm(km({references:[..._?[_]:[],...O?[O]:[],...F?[F]:[]],parts:[],entry:ee}),{selectedReferenceIds:E?[M]:[],selectedPartIds:E?[]:[M],copyReferenceMap:Io}),le=Gs(U[0]);if(!le){ue("No selector ref is available for this node");return}try{await ps(le),ue("Copied reference")}catch(Ce){ue(Ce instanceof Error?Ce.message:"Failed to copy reference")}},[as,Un,rr,Me,ee,Io,An]),CF=f.useCallback(async h=>{const E=String(h||"").trim(),M=E&&Al.get(E)||null;if(!M){ue("No selector ref is available for this mate");return}const _=KD(M);if(!_){ue("No selector ref is available for this mate");return}try{await ps(_),ue("Copied reference")}catch(O){ue(O instanceof Error?O.message:"Failed to copy reference")}},[Al,ee]),MF=f.useCallback(h=>{const E=String(h?.referenceId||"").trim();if(E){const O=_n((Array.isArray(h?.referenceIds)?h.referenceIds:[E]).map(F=>String(F||"").trim()).filter(Boolean));if(h?.selected===!0&&O.length>1){MM();return}Lc(E,{multiSelect:!1});return}const M=String(h?.nodeId||"").trim();if(!M)return;if(Nn.includes(M)){cm(M);return}const _=_n((Array.isArray(h?.actionNodeIds)?h.actionNodeIds:[M]).map(O=>String(O||"").trim()).filter(Boolean));if(h?.selected===!0){if(_.length>1){Va();return}cm(M);return}Ju(M,{renderPartId:String(h?.renderPartId||"").trim(),source:"viewer"})},[Va,MM,cm,Nn,Ju,Lc]),IF=f.useCallback(h=>{const E=String(h?.nodeId||"").trim();if(!E)return;if(h?.focused===!0){Z0(E);return}const M=_n((Array.isArray(h?.actionNodeIds)?h.actionNodeIds:[E]).map(_=>String(_||"").trim()).filter(Boolean));um(M)},[um,Z0]),AF=f.useCallback(h=>{const E=String(h?.nodeId||"").trim();if(!E)return;const M=_n((Array.isArray(h?.actionNodeIds)?h.actionNodeIds:[E]).map(_=>String(_||"").trim()).filter(Boolean));if(h?.selected===!0&&M.length>1){_M();return}for(const _ of M)AM(_)},[_M,AM]),NF=f.useCallback(h=>{const E=String(h?.nodeId||"").trim();if(!E)return;const M=_n((Array.isArray(h?.actionNodeIds)?h.actionNodeIds:[E]).map(_=>String(_||"").trim()).filter(Boolean));for(const _ of M)NM(_)},[NM]),_F=f.useCallback(h=>{const E=String(h?.nodeId||"").trim();if(!E)return;const M=_n((Array.isArray(h?.actionNodeIds)?h.actionNodeIds:[E]).map(_=>String(_||"").trim()).filter(Boolean));J0(M)},[J0]),TF=f.useCallback(h=>{if(h?.hidden===!0){ex();return}Q0()},[Q0,ex]),RF=f.useCallback(()=>{Oc.current?.resetZoom?.()||ue("CAD Viewer camera not ready")},[]),PF=f.useCallback(h=>{const E=_n((Array.isArray(h?.fitPartIds)?h.fitPartIds:[]).map(_=>String(_||"").trim()).filter(Boolean)),M=_n((Array.isArray(h?.fitReferenceIds)?h.fitReferenceIds:[]).map(_=>String(_||"").trim()).filter(Boolean));if(!E.length&&!M.length){ue("No geometry to fit");return}Oc.current?.zoomToFitSelection?.({partIds:E,referenceIds:M,animate:!0})||ue("No geometry to fit")},[]),OF=f.useCallback(h=>{for(const E of Array.isArray(h?.collapsedActionNodeIds)?h.collapsedActionNodeIds:[])Ba(E)},[Ba]),kF=f.useCallback(h=>{for(const E of Array.isArray(h?.expandedActionNodeIds)?h.expandedActionNodeIds:[])Ba(E)},[Ba]),DF=f.useCallback(h=>{for(const E of Array.isArray(h?.collapsedExpandableTreeNodeIds)?h.collapsedExpandableTreeNodeIds:[])Ba(E)},[Ba]),jF=f.useCallback(h=>{for(const E of Array.isArray(h?.expandedExpandableTreeNodeIds)?h.expandedExpandableTreeNodeIds:[])Ba(E)},[Ba]),tx=f.useCallback(h=>{const E=h?q.get(h):null;E&&Cm(Ep(E),{history:"push"}),im(h),ae||j(!1)},[im,q,ae,Cm]),TM=f.useCallback(h=>{const E=String(h||"").trim();E&&(om(),y(""),e_(E,{history:"push",preserveFile:!!(Cc&&d)}),Yp({markRefreshing:!0}).catch(M=>{}),vp())},[d,om,Cc]),RM=f.useCallback(h=>{const E=at(h);!E||!q.has(E)||(y(""),N(!0),lg(h),E!==k&&(Cm(Ep(h),{history:"push"}),im(E)),tg(!0))},[im,q,lg,tg,k,Cm]),LF=f.useCallback(h=>{Pt(!1);const E=h===oo.DRAW?oo.DRAW:oo.REFERENCES;Mr(E),E===oo.DRAW&&Zn===Jt.SURFACE_LINE&&qr(Jt.FREEHAND)},[Zn]);f.useCallback(()=>{!ee||!Fo||(Ve(h=>{const E=pb(h);return E.selectableTopologyEnabled?E:{...E,selectableTopologyEnabled:!0}}),Pt(!1),Mr(oo.REFERENCES))},[ee,Fo]);const FF=f.useCallback(()=>{_t&&(tm(!1),Pt(!1),po(h=>{const E=!h;return E&&!ae&&j(!1),E}))},[ae,_t,tm,po]),PM=f.useCallback((h,E="output",M=null)=>{const _=h?at(h):"",O=String(E||"output").trim()||"output";if(!_||typeof window>"u")return;const U=String(M?.downloadUrl||"").trim()||U1(_,O);ue(""),Qt("");const le=String(M?.filename||"").trim();try{const Ce=$S(U,{filename:le});ue(Ce.message)}catch(Ce){ue(Ce instanceof Error?Ce.message:"Download failed")}},[]),OM=f.useCallback(async(h,E="output",M=null,_="path")=>{const O=h?at(h):"",F=String(E||"output").trim()||"output",U=String(_||"").trim();if(O){ue(""),Qt("");try{let le="",Ce="Copied file reference";if(U==="link")le=String(M?.downloadUrl||"").trim()||U1(O,F,typeof window>"u"?v?.url:window.location.href),Ce="Copied link";else{const tt=rZ(M,v);U==="relativePath"?(le=tt.relativePath,Ce="Copied relative path"):(le=tt.path,Ce="Copied path")}if(!le)throw new Error("No file reference is available to copy");await ps(le);const st=String(M?.filename||"").trim();ue(st?`${Ce} for ${st}`:Ce)}catch(le){ue(le instanceof Error?le.message:"Failed to copy file reference")}}},[v]),kl=f.useCallback(async(h,E="output",M=null)=>{const _=h?at(h):"",O=String(E||"output").trim()||"output";if(!_||!oa||typeof window>"u")return;const F=sk(_,O),U=`${_}:${O}`;ue(""),Qt(""),gr(U);try{const le=await fetch(F,{method:"POST",cache:"no-store"});if(!le.ok)throw new Error(await Rae(le,`Failed to reveal file: ${le.status} ${le.statusText}`))}catch(le){ue(le instanceof Error?le.message:"Failed to reveal file")}finally{gr(le=>le===U?"":le)}},[oa]),kM=f.useCallback(async(h,E)=>{const M=h?at(h):"",_=String(E||"").trim().toLowerCase();if(!M||!_||typeof window>"u")return;const O=`${M}:export:${_}`,F=M===k?ei:null,U=M===k?Hf:null;ue(""),Qt(""),gr(O);try{ue(`Exporting ${_.toUpperCase()}...`);const le=await FJ({file:M,format:_,parameterValues:F,animationState:U,resolution:vk}),Ce=String(le?.filename||le?.result?.filename||"").trim(),st=String(le?.downloadUrl||"").trim();if(st){const tt=$S(st,{filename:Ce});ue(tt.message)}else ue(Ce?`Exported ${Ce}`:`Exported ${_.toUpperCase()}`)}catch(le){ue(le instanceof Error?le.message:"Implicit CAD export failed")}finally{gr(le=>le===O?"":le)}},[ei,Hf,k]),zF=f.useCallback(h=>{const E=pa(h),M=La.current;jv(M,E)||(Lr(_=>[..._,pa(M)]),is([]),co(E))},[]),BF=f.useCallback(h=>{Mr(oo.DRAW),qr(h===Jt.SURFACE_LINE?Jt.FREEHAND:h)},[]),DM=f.useCallback(()=>{const h=Zf.current;if(!h.length)return;const E=pa(h[h.length-1]),M=pa(La.current);Lr(h.slice(0,-1)),is(_=>[..._,M]),co(E)},[]),jM=f.useCallback(()=>{const h=Jf.current;if(!h.length)return;const E=pa(h[h.length-1]),M=pa(La.current);is(h.slice(0,-1)),Lr(_=>[..._,M]),co(E)},[]),VF=f.useCallback(()=>{La.current.length&&(Lr(h=>[...h,pa(La.current)]),is([]),co([]))},[]),$F=f.useCallback(h=>{const E=Bs(h);E&&(kc.current=E,ag()),(La.current.length>0||Zf.current.some(_=>_.length>0)||Jf.current.some(_=>_.length>0))&&(La.current=[],Zf.current=[],Jf.current=[],co([]),Lr([]),is([]))},[ag]);hie({copyStatus:xn,screenshotStatus:vr,setCopyStatus:ue,setScreenshotStatus:Qt,previewMode:Xt,viewerAlertOpen:It,themeSheetOpen:!1,tabToolsOpen:Fa,isDesktop:ae,sidebarOpen:br,previewUiStateRef:V0,tabToolMode:ar,drawingUndoStackRef:Zf,drawingRedoStackRef:Jf,handleUndoDrawing:DM,handleRedoDrawing:jM,setPreviewMode:os,setViewerAlertOpen:Pt,setThemeMenuOpen:tm,setTabToolsOpen:po,setSidebarOpen:j,setTabToolMode:Mr});const LM=f.useCallback(async()=>{if(ee)try{const h=`${at(ee).replace(/[^a-zA-Z0-9._-]+/g,"-")}.png`;if(!Oc.current?.captureScreenshot)throw new Error("CAD Viewer not ready");await Oc.current.captureScreenshot({filename:h,mode:"clipboard"}),ue(""),Qt("Copied screenshot to clipboard")}catch(h){ue(""),Qt(h instanceof Error?h.message:"Clipboard copy failed")}},[ee]),GF=f.useCallback(()=>{const h=Ye===B.IMPLICIT?!!Tc:!!Fr;Ye===B.DXF||Da||!h||Xt||(V0.current={sidebarOpen:br,tabToolsOpen:Fa,tabToolMode:ar,themeMenuOpen:!1,viewerAlertOpen:It},ue(""),Qt(""),co([]),Lr([]),is([]),Pt(!1),tm(!1),j(!1),po(!1),os(!0))},[Ye,Xt,br,tm,po,Tc,Fr,ar,Fa,It,Da]),UF=h=>{N(!0),I(E=>{const M=new Set(E);return M.has(h)?M.delete(h):M.add(h),M})},WF=Ye===B.STEP&&ar===oo.REFERENCES,FM=EL,HF=wL,ed=String(Ae[Ae.length-1]||"").trim(),zM=f.useMemo(()=>ed?Fi(rr.get(ed)):"",[ed,rr,Fi]),KF=f.useMemo(()=>ed?$T(Un,ed)||zM:"",[ed,zM,Un]),XF=Te[Te.length-1]||KF,YF=Qs.length>0,qF=ko.length>0,zc=!!_t&&Fa&&!Xt,BM=cs?rM.sidebarWidth:0,Bc=Rs?rM.sheetWidth:0,ZF=ae&&cs?BM:ae?md({viewportWidth:te,sidebarOpen:!0,sheetOpen:!1,sidebarWidth:de,sheetWidth:0,sidebarMinWidth:Vl,sheetMinWidth:Uc,sidebarMaxWidth:yd,sheetMaxWidth:xd}).sidebarWidth:mb,VM={top:Xt?0:fae,right:Bc,bottom:0,left:BM},JF={top:"14px",right:"14px"},QF=[{id:Jt.FREEHAND,label:"Freehand",Icon:uR},{id:Jt.LINE,label:"Line",Icon:PE},{id:Jt.ARROW,label:"Arrow",Icon:$3},{id:Jt.DOUBLE_ARROW,label:"Expand",Icon:G3},{id:Jt.RECTANGLE,label:"Rectangle",Icon:U3},{id:Jt.CIRCLE,label:"Circle",Icon:W3},{id:Jt.FILL,label:"Fill",Icon:H3},{id:Jt.ERASE,label:"Erase",Icon:K3}],ez=mr?vt:null,td=c.jsxs(c.Fragment,{children:[mr?c.jsx(WQ,{displaySettings:vt,updateDisplaySettings:Ti,clipBounds:Fr?.bounds||null,showClip:!0}):null,c.jsx(HQ,{themePresets:Kt,themeSettings:Se,themePresetId:Yr,resolvedColorSchemeMode:it,updateThemeSettings:eg,handleResetThemeSettings:YC,handleSaveCustomThemePreset:qC,handleUpdateThemePresetSettings:ZC})]});return c.jsxs(QB,{open:em,onOpenChange:tg,mobileOpen:em,onMobileOpenChange:tg,"data-glass-tone":_r,style:{"--sidebar-width":`${ZF}px`},className:"relative h-svh overflow-hidden bg-transparent",children:[c.jsx("div",{className:"fixed inset-0 z-0",children:c.jsx(UX,{viewerRef:Oc,renderFormat:Ye,renderPartsIndividually:C0||!!PC,stepParameters:PC,selectedMeshData:Fr,selectedDxfData:tr,selectedDxfMeshData:hL,dxfViewMode:$,onDxfViewModeChange:ie,selectedImplicitModel:Tc,implicitDynamicRenderActive:oL,implicitGraphicsSettings:Tu,selectedKey:k,selectedDxfKey:gL,missingFileRef:gC,viewerPerspective:mi,viewerPerspectiveRef:kc,themeSettings:ft,displaySettings:ez,onProjectionChange:mr?Pa:void 0,onDisplayModeChange:mr?Ra:void 0,previewMode:Xt,viewportFrameInsets:VM,viewerLoading:Da,viewerAlert:Tl,stepUpdateInProgress:Ye===B.STEP&&Rt,referenceSelectionPending:gg,referenceSelectionUnavailable:X0,referenceSelectionDeferred:sm,viewPlaneOffsetRight:VM.right+16,viewerMode:SL,assemblyPickingActive:ls,assemblyParts:JL,hiddenPartIds:ZL,selectedPartIds:XL,hoveredPartId:YL,assemblyMates:Hh,selectedMateIds:ct,hoveredMateId:xe,hoveredReferenceId:bM,selectedReferenceIds:Ae,selectorRuntime:K0,displayEdgeRuntime:FL,pickableFaces:mM,pickableEdges:pM,pickableVertices:hM,focusedPartIds:qL,boundsAnimationActive:zj,drawToolActive:FM,drawingTool:Zn,drawingStrokes:pi,handleDrawingStrokesChange:zF,handlePerspectiveChange:$F,handleModelHoverChange:bF,handleModelReferenceActivate:yF,handleModelReferenceDoubleActivate:xF,handleModelReferenceContext:EF,viewerContextMenu:ze,onViewerContextMenuClose:SF,onViewerContextMenuCopyReference:wF,onViewerContextMenuSelect:MF,onViewerContextMenuFocus:IF,onViewerContextMenuExitAllIsolate:Fc,onViewerContextMenuHideOther:_F,onViewerContextMenuHideAll:TF,onViewerContextMenuHide:AF,onViewerContextMenuReveal:NF,onViewerContextMenuResetZoom:RF,onViewerContextMenuZoomToFit:PF,onViewerContextMenuExpandSelected:OF,onViewerContextMenuCollapseSelected:kF,onViewerContextMenuExpandAll:DF,onViewerContextMenuCollapseAll:jF,handleViewerAlertChange:NL,handleStepModuleTransformDetectedChange:Hj,selectionCount:HF,copyButtonLabel:uF,handleCopySelection:dF,handleScreenshotCopy:LM,urdfPosePicker:C0&&ju?{active:_c,center:dae,onPickPoint:lF,onCancel:Zu}:null})}),c.jsxs(t5,{className:"pointer-events-none relative z-10 h-svh min-w-0 overflow-hidden bg-transparent",children:[c.jsx(Dte,{previewMode:Xt,sidebarLabelForEntry:dl,directoryTree:S0,selectedKey:k,selectedEntry:ee,onSelectEntry:tx,entrySourceFormat:or,entryHasMesh:qc,entryHasDxf:vm,entryHasGcode:Yg,entryHasUrdf:Xg,activeGenerationFiles:p,activeStepArtifactGenerationFile:bC,stepArtifactGenerationAvailable:Df,themePresets:Kt,themeSettings:Se,themePresetId:Yr,resolvedColorSchemeMode:it,onColorSchemePreferenceChange:CL,updateThemeSettings:eg,handleResetThemeSettings:YC,handleSaveCustomThemePreset:qC,handleUpdateThemePresetSettings:ZC,handleDeleteCustomThemePreset:ML,handleEditThemePreset:PL,handleResetThemePresetToDefault:IL,handleRestoreDefaultThemePresets:AL,filenameLoadActivity:KL,selectedStepSourceStatus:Of,canRevealFileAssets:oa,canCopyFileAssetLinks:vl,canCopyFileAssetPaths:SC,fileAccessBusyKey:In,onDownloadFileAsset:PM,onExportImplicitFile:kM,onRevealFileAsset:kl,onRevealInExplorerView:RM,onCopyFileAssetReference:OM,fileSheetKind:_t,fileSheetOpen:zc,onToggleFileSheet:FF,navigationAvailable:w0}),c.jsx("div",{className:"pointer-events-none relative min-h-0 flex-1 overflow-hidden",children:c.jsxs("div",{className:"flex h-full min-w-0",children:[w0?c.jsx(XJ,{previewMode:Xt,query:x,onQueryChange:y,filteredEntries:x0,catalogEntries:l,filteredEntriesTree:jj,selectedKey:k,expandedDirectoryIds:b,onToggleDirectory:UF,onSelectEntry:tx,entrySourceFormat:or,entryHasMesh:qc,entryHasDxf:vm,entryHasGcode:Yg,entryHasUrdf:Xg,activeGenerationFiles:p,activeStepArtifactGenerationFile:bC,stepArtifactGenerationAvailable:Df,canRevealFileAssets:oa,canCopyFileAssetLinks:vl,canCopyFileAssetPaths:SC,fileAccessBusyKey:In,onDownloadFileAsset:PM,onExportImplicitFile:kM,onRevealFileAsset:kl,onRevealInExplorerView:RM,onCopyFileAssetReference:OM,catalogHydrated:r,catalogRefreshing:o,catalogError:i,directoryOptions:kf,activeDirectory:yC||u||"",onSelectDirectory:TM,resizable:ae,onStartResize:RL}):null,c.jsxs("div",{className:"pointer-events-none relative min-w-0 flex-1 overflow-hidden",children:[c.jsx(ote,{previewMode:Xt,selectedEntry:ee,renderFormat:Ye,floatingCadToolbarPosition:JF,selectionToolActive:WF,referenceSelectionPending:gg,referenceSelectionUnavailable:X0,referenceSelectionDeferred:sm,urdfPosePickerAvailable:ju,urdfPosePickerActive:_c,handleToggleUrdfPosePicker:EM,stepAnimationAvailable:Vj,stepAnimationPlaying:Wh.playing,stepAnimationDisabled:!$r,handleStepAnimationPlayToggle:OC,drawToolActive:FM,handleSelectTabToolMode:LF,displayMode:mr?vt.mode:void 0,onDisplayModeChange:mr?Ra:void 0,projection:mr?vt.projection:void 0,onProjectionChange:mr?Pa:void 0,viewerLoading:Da,selectedMeshData:Fr,selectedDxfData:tr,selectedImplicitModel:Tc,drawingToolOptions:QF,drawingTool:Zn,handleSelectDrawingTool:BF,handleUndoDrawing:DM,handleRedoDrawing:jM,handleClearDrawings:VF,canUndoDrawing:YF,canRedoDrawing:qF,drawingStrokes:pi,handleEnterPreviewMode:GF,handleScreenshotCopy:LM}),!Xt&&(Cc||!ee&&!gC&&!hC)?c.jsx(Wte,{entries:l,onSelectEntry:tx,catalogHydrated:r,catalogRefreshing:o,catalogError:i,directorySelectionActive:Cc,directoryOptions:kf,onSelectDirectory:TM}):null,c.jsx(Yee,{viewerLoading:yL,previewMode:Xt})]}),_t==="dxf"?c.jsx(VZ,{open:zc,isDesktop:ae,width:Bc||kn,onOpenChange:po,selectedEntry:ee,onStartResize:Bu,valueMm:qf,bendLines:pL,bendSettings:Yf,hasDxfData:!!tr,viewerLoading:Da,onThicknessChange:G,onBendChange:OL,fileDownloadAvailable:vl,viewerServerInfo:v,localFileOpenAvailable:oa,fileAccessBusyKey:In,onOpenFileAsset:kl,suppressDynamicMetadataStatus:ri,statusItems:za,themeSections:td,openSectionIds:ca,onOpenSectionIdsChange:Vu},`dxf:${k}`):null,_t==="gcode"?c.jsx(SJ,{open:zc,isDesktop:ae,width:Bc||kn,onOpenChange:po,selectedEntry:ee,onStartResize:Bu,gcodeData:ia,previewMetadata:TC?.metadata||null,maxLayer:Wf,showTravel:W,fullDetail:be,previewDetailLevel:Ie,onMaxLayerChange:re,onShowTravelChange:Z,onFullDetailChange:_e,onPreviewDetailLevelChange:oe,fileDownloadAvailable:vl,viewerServerInfo:v,localFileOpenAvailable:oa,fileAccessBusyKey:In,onOpenFileAsset:kl,suppressDynamicMetadataStatus:ri,statusItems:za,themeSections:td,openSectionIds:ca,onOpenSectionIdsChange:Vu},`gcode:${k}`):null,_t==="step"?c.jsx(Oee,{open:zc,isDesktop:ae,width:Bc||kn,onOpenChange:po,onStartResize:Bu,selectedEntry:ee,viewerLoading:Da||z0,isAssemblyView:Me,stepTreeRoot:Un,assemblyMates:Hh,expandedTreeNodeIds:jt,stepTreeRootShowMore:sn,onStepTreeRootShowMoreChange:Mn,loadableTreeNodeIds:Rc,selectedPartIds:Te,selectedReferenceIds:Ae,selectedMateIds:ct,selectableNodeIds:WL,activeTreeNodeId:XF,activeTreeNodeScrollKey:fn,hoveredPartId:Uu,hoveredReferenceId:bM,hoveredMateId:xe,hiddenPartIds:dt,focusedNodeIds:Nn,onSelectTreeNode:fF,onSelectReferenceNode:mF,onSelectMateNode:pF,onCopyTreeNodeReference:vF,onCopyMateNodeReference:CF,onFocusTreeNode:um,onUnfocusTreeNode:Z0,onExitAllIsolate:Fc,onHideOtherTreeNode:J0,onToggleTreeNode:Ba,onClearSelection:Va,onHoverTreeNode:Xe,onHoverReferenceNode:wt,onHoverMateNode:yt,treeSelectionDisabled:Vo,treeSelectionDisabledReason:Kj,onTogglePartVisibility:hF,hideOtherSelectedParts:gF,hideAllParts:Q0,showAllHiddenParts:ex,exitIsolate:Fc,stepModule:{status:_h,error:M0,definition:$t,enabled:$r,parameterValues:Qo,animationState:Wh,onParameterChange:Xj,onResetParameters:Zj,onAnimationSelect:Jj,onAnimationPlayToggle:OC,onAnimationReset:Qj,onAnimationScrub:eL,onAnimationSpeedChange:tL,onEnabledChange:nL,onCopyParams:Yj,onPasteParams:qj},fileDownloadAvailable:vl,viewerServerInfo:v,localFileOpenAvailable:oa,fileAccessBusyKey:In,onOpenFileAsset:kl,suppressDynamicMetadataStatus:ri,statusItems:za,themeSections:td,openSectionIds:ca,onOpenSectionIdsChange:Vu},`step:${k}`):null,_t==="urdf"||_t==="srdf"||_t==="sdf"?c.jsx(Hee,{open:zc,title:_t==="srdf"?"SRDF":_t==="sdf"?"SDF":"URDF",sourceFormat:_t,showJoints:_t==="urdf"||_t==="srdf"||_t==="sdf",showMotion:_t==="srdf",isDesktop:ae,width:Bc||kn,selectedEntry:ee,onOpenChange:po,onStartResize:Bu,joints:Uh,groupStates:Gf,activeGroupStateId:Uj,jointValues:nr,onJointValueChange:QL,onGroupStateSelect:tF,onCopyJointAngles:cF,onResetPose:eF,motion:_t==="srdf"&&Nc?{srdf:Nc.srdf,endEffectors:Cl,planningGroups:Vh,targetFrames:Uf,activeEndEffectorName:mn,activePlanningGroupName:Bo.planningGroup,activeTargetFrameName:Bo.targetFrame,targetPosition:sa,currentPosition:Lu,solving:Wj,serverLive:On,actionsEnabled:ju,moveit2:Bo,selectPoseActive:_c,onEndEffectorChange:nF,onMoveIt2SettingChange:rF,onTargetPositionChange:oF,onUseCurrentPosition:iF,onSolve:sF,onPlan:aF,onSelectPose:EM,onCancelSelectPose:Zu}:null,sdf:_t==="sdf"?{info:mt?.sdf||null}:null,fileDownloadAvailable:vl,viewerServerInfo:v,localFileOpenAvailable:oa,fileAccessBusyKey:In,onOpenFileAsset:kl,suppressDynamicMetadataStatus:ri,statusItems:za,themeSections:td,openSectionIds:ca,onOpenSectionIdsChange:Vu},`${_t}:${k}`):null,_t==="mesh"?c.jsx(KQ,{open:zc,title:mo===B.THREE_MF?"3MF":mo===B.GLB?"GLB":"STL",isDesktop:ae,width:Bc||kn,selectedEntry:ee,onOpenChange:po,onStartResize:Bu,fileDownloadAvailable:vl,viewerServerInfo:v,localFileOpenAvailable:oa,fileAccessBusyKey:In,onOpenFileAsset:kl,suppressDynamicMetadataStatus:ri,statusItems:za,themeSections:td,openSectionIds:ca,onOpenSectionIdsChange:Vu},`mesh:${k}`):null,_t==="implicit"?c.jsx(iee,{open:zc,title:"Implicit CAD",isDesktop:ae,width:Bc||kn,selectedEntry:ee,onOpenChange:po,onStartResize:Bu,parameterRuntime:{status:ni===ke.LOADING?"loading":Fu?"error":Yt?"ready":"idle",error:Fu,definition:Yt,parameterValues:ei,animationState:Hf,onParameterChange:iL,onResetParameters:lL,onAnimationSelect:cL,onAnimationPlayToggle:uL,onAnimationReset:dL,onAnimationScrub:fL,onAnimationSpeedChange:mL,onCopyParams:sL,onPasteParams:aL},graphicsRuntime:{model:Tc,settings:Tu,onSettingsChange:Cr},fileDownloadAvailable:vl,viewerServerInfo:v,localFileOpenAvailable:oa,fileAccessBusyKey:In,onOpenFileAsset:kl,suppressDynamicMetadataStatus:ri,statusItems:za,themeSections:td,openSectionIds:ca,onOpenSectionIdsChange:Vu},`implicit:${k}`):null]})}),c.jsx(Fee,{copyStatus:xn,screenshotStatus:vr,persistenceStatus:lo,motionErrorStatus:gt,previewMode:Xt,onClear:()=>{ue(""),Qt(""),Mt(""),Sn(""),_f.current=""}}),c.jsx(Xee,{viewerAlertOpen:It,viewerAlert:Tl,previewMode:Xt,setViewerAlertOpen:Pt})]})]})}const Lae="/assets/favicon-DLqji3p4.ico",HT="root",KT="__cadViewerRoot";function Fae(){if(typeof document>"u")return;let e=document.querySelector('link[rel="icon"]');e||(e=document.createElement("link"),e.rel="icon",document.head.appendChild(e)),e.type="image/x-icon",e.href=`${Lae}?v=planetary-gear-workbench`}function zae(){const e=document.getElementById(HT);if(!e)throw new Error(`Missing #${HT} mount point.`);Fae(),document.title="CAD Viewer";const t=globalThis[KT],n=t?.element===e&&t?.root?t.root:oz.createRoot(e);globalThis[KT]={element:e,root:n},n.render(c.jsx(f.StrictMode,{children:c.jsx(Bae,{})}))}function Bae(){const{manifest:e,generationStatus:t,revision:n,catalogHydrated:r,catalogRefreshing:o,catalogError:i,activeDir:s}=f.useSyncExternalStore(DJ,S_,S_);return c.jsx(jae,{manifestRevision:n,manifestEntries:e.entries,generationStatus:t,catalogHydrated:r,catalogRefreshing:o,catalogError:i,activeDir:s})}zae();export{OD as i,Fd as m,Hae as p};
+//# sourceMappingURL=index-fg5Nufh1.js.map
diff --git a/plugins/cad/skills/cad-viewer/scripts/viewer/dist/assets/index-fg5Nufh1.js.map b/plugins/cad/skills/cad-viewer/scripts/viewer/dist/assets/index-fg5Nufh1.js.map
new file mode 100644
index 00000000..44d528f1
--- /dev/null
+++ b/plugins/cad/skills/cad-viewer/scripts/viewer/dist/assets/index-fg5Nufh1.js.map
@@ -0,0 +1 @@
+{"version":3,"mappings":"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AA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAwcvCvI,CAAU;;AAAA;AAAA;AAAA;;AAAA;AAAA,IAORyI,EAAmB,wDAA0D,mBAAmB;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoQpG,CAEO,SAASC,GAA0BvL,EAAO,CAC/C,MAAMzlG,EAAayqG,GAA0BhF,CAAK,EAClD,MAAO,CACLzlG,EAAW,SACXA,EAAW,kBAAoB,GAC/BA,EAAW,YACX,KAAK;AAAA;AAAA,CAAmC,CAC5C,CAEO,SAASixG,IAA0B,CACxC,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOT,CAEO,SAASC,GAA0BloF,EAAOy8E,EAAO,CACtD,MAAMzlG,EAAayqG,GAA0BhF,CAAK,EAC5C0L,EAAiB,OAAO,YAC5B,OAAO,QAAQnxG,EAAW,UAAY,EAAE,EAAE,IAAI,CAAC,CAACiF,EAAM2gG,CAAO,IAAM,CACjE3gG,EACA,CAAE,MAAOynG,GAAkB1jF,EAAO48E,CAAO,EAAE,CAC5C,GAEGwL,EAAgB,GAChBjF,EAAcJ,GAA4B/rG,EAAYoxG,EAAe,CAAE,SAAU,GAAO,EACxFrrF,EAAW,IAAIiD,EAAM,eAAe,CACxC,KAAM,8BACN,UAAW,GACX,WAAY,GACZ,YAAa,GACb,SAAU,CACR,YAAa,CAAE,MAAO,IAAIA,EAAM,QAAQ,EAAG,CAAC,GAC5C,gBAAiB,CAAE,MAAO,IAAIA,EAAM,OAAQ,EAC5C,aAAc,CAAE,MAAO,IAAIA,EAAM,OAAQ,EACzC,mBAAoB,CAAE,MAAO,IAAIA,EAAM,OAAQ,EAC/C,WAAY,CAAE,MAAO,IAAIA,EAAM,QAAQ,GAAGhpB,EAAW,OAAO,GAAG,GAC/D,WAAY,CAAE,MAAO,IAAIgpB,EAAM,QAAQ,GAAGhpB,EAAW,OAAO,GAAG,GAC/D,cAAe,CAAE,MAAO,IAAIgpB,EAAM,QAAQ,GAAG8/E,GAAW9oG,EAAW,SAAS,MAAO,SAAS,CAAC,GAC7F,iBAAkB,CAAE,MAAO,IAAIgpB,EAAM,QAAQ,GAAG8/E,GAAW9oG,EAAW,WAAW,MAAO2qG,EAAkB,CAAC,GAC3G,kBAAmB,CAAE,MAAO,IAAI3hF,EAAM,QAAQ,GAAG8/E,GAAW9oG,EAAW,WAAW,MAAO2qG,EAAkB,CAAC,GAC5G,kBAAmB,CAAE,MAAO,IAAI3hF,EAAM,QAAQ,GAAG8/E,GAAW9oG,EAAW,WAAW,MAAO2qG,EAAkB,CAAC,GAC5G,gBAAiB,CAAE,MAAO,GAC1B,iBAAkB,CAAE,MAAO,KAAK,IAChC,iBAAkB,CAAE,MAAO3qG,EAAW,WAAW,YAAc,EAAI,GACnE,oBAAqB,CAAE,MAAOA,EAAW,YAAc,EAAI,GAC3D,YAAa,CAAE,MAAOA,EAAW,SACjC,eAAgB,CAAE,MAAOA,EAAW,eACpC,aAAc,CAAE,MAAOA,EAAW,aAClC,WAAY,CAAE,MAAOA,EAAW,WAChC,SAAU,CAAE,MAAOA,EAAW,SAC9B,YAAa,CAAE,MAAOA,EAAW,UACjC,gBAAiB,CAAE,MAAO,GAC1B,0BAA2B,CAAE,MAAO,GACpC,aAAc,CAAE,MAAO,GACvB,UAAW,CAAE,MAAOwrG,GAAqB,qBACzC,SAAU,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,WAAW,SAAUA,GAAqB,WAAW,UAAW,SAAS,CAAC,GACtJ,YAAa,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,WAAW,YAAaA,GAAqB,WAAW,UAAW,SAAS,CAAC,GAC5J,cAAe,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,QAAQ,MAAOA,GAAqB,QAAQ,UAAW,SAAS,CAAC,GAClJ,UAAW,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,YAAY,MAAOA,GAAqB,YAAY,UAAW,SAAS,CAAC,GACtJ,QAAS,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG4iF,GAA2BJ,GAAqB,YAAY,SAAUA,GAAqB,YAAY,QAAQ,CAAC,GACvJ,WAAY,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,KAAK,MAAOA,GAAqB,KAAK,UAAW,SAAS,CAAC,GACzI,SAAU,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG4iF,GAA2BJ,GAAqB,KAAK,SAAUA,GAAqB,KAAK,QAAQ,CAAC,GAC1I,aAAc,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,MAAM,MAAOA,GAAqB,MAAM,UAAW,SAAS,CAAC,GAC7I,WAAY,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG4iF,GAA2BJ,GAAqB,MAAM,SAAUA,GAAqB,MAAM,QAAQ,CAAC,GAC9I,UAAW,CAAE,MAAO,IAAIxiF,EAAM,QAAQ,GAAG0iF,GAAeF,GAAqB,SAAUA,GAAqB,aAAc,SAAS,CAAC,GACpI,cAAe,CAAE,MAAO,GACxB,oBAAqB,CAAE,MAAOA,GAAqB,oBACnD,QAAS,CAAE,MAAOW,EAAY,IAAI,CAAC,GACnC,aAAc,CAAE,MAAO,IAAInjF,EAAM,SAC9BmjF,EAAY,IAAI,CAAC,EAAIA,EAAY,IAAI,CAAC,GAAK,GAC3CA,EAAY,IAAI,CAAC,EAAIA,EAAY,IAAI,CAAC,GAAK,EAC9C,EACA,iBAAkB,CAAE,MAAOL,GAAwBK,CAAW,GAC9D,GAAGgF,CAAA,EAEL,aAAcF,GAAA,EACd,eAAgBL,GAA0B5wG,CAAU,EACrD,EACD,cAAO,OAAO+lB,EAAS,SAAUqrF,CAAa,EACvCrrF,CACT,CAEO,SAASsrF,GAA+BroF,EAAOjD,EAAU0/E,EAAO,CACrE,GAAI,CAAC1/E,GAAU,SACb,OAEF,MAAM/lB,EAAayqG,GAA0BhF,CAAK,EAC9C1/E,EAAS,SAAS,YACpBA,EAAS,SAAS,WAAW,MAAM,IAAI,GAAG/lB,EAAW,OAAO,GAAG,EAE7D+lB,EAAS,SAAS,YACpBA,EAAS,SAAS,WAAW,MAAM,IAAI,GAAG/lB,EAAW,OAAO,GAAG,EAE7D+lB,EAAS,SAAS,eACpBA,EAAS,SAAS,aAAa,MAAQ/lB,EAAW,aAEpDssG,GACEvmF,EACAgmF,GAA4B/rG,EAAY+lB,EAAS,SAAU,CAAE,SAAU,GAAO,GAEhF,SAAW,CAAC9gB,EAAM2gG,CAAO,IAAK,OAAO,QAAQ5lG,EAAW,UAAY,EAAE,EACpE2sG,GAAwB3jF,EAAOjD,EAAS,SAAS9gB,CAAI,EAAG2gG,CAAO,CAEnE,CAEO,SAAS0L,GAAqC,CACnD,WAAAtX,EAAamR,GACb,cAAAlxE,EAAgB,IAClB,EAAI,GAAI,CACN,OAAIA,GAAiB,OAAOA,GAAkB,UAAY,CAAC,MAAM,QAAQA,CAAa,EAC7ExB,GAAuBwB,CAAa,EAEtC8/D,GAA0B,CAAE,WAAYC,GAAcmR,IAAyB,CACpF,eAAgBA,EAAA,CACjB,CACH,CAEA,SAASoG,GAA8B3nE,EAAU4kB,EAAiB,CAChE,MAAM31B,EAAW21B,GAAiB,UAAY,GACxCgjD,EAAMhG,GACR5hE,EAAS,YACXA,EAAS,UAAU,MAAQ,KAAK,IAAIsxD,GAAariE,EAAS,oBAAqB24E,EAAI,mBAAmB,EAAG,GAAI,GAE/G,MAAMC,EAAa54E,EAAS,YAAc24E,EAAI,WACxCE,EAAgBD,EAAW,UAAY,GAAQ,EAAIvW,GAAauW,EAAW,UAAWD,EAAI,WAAW,SAAS,EAOpH,GANI5nE,EAAS,UACXA,EAAS,SAAS,MAAM,IAAI,GAAG8hE,GAAe+F,EAAW,SAAUC,EAAeF,EAAI,WAAW,QAAQ,CAAC,EAExG5nE,EAAS,aACXA,EAAS,YAAY,MAAM,IAAI,GAAG8hE,GAAe+F,EAAW,YAAaC,EAAeF,EAAI,WAAW,WAAW,CAAC,EAEjH5nE,EAAS,cAAe,CAC1B,MAAM+nE,EAAU94E,EAAS,SAAW24E,EAAI,QAClCI,EAAmBD,EAAQ,UAAY,GAAQ,EAAIzW,GAAayW,EAAQ,UAAWH,EAAI,QAAQ,SAAS,EACxGK,EAAanG,GAAeiG,EAAQ,MAAOC,EAAkBJ,EAAI,QAAQ,KAAK,EAG9E74E,EAAc61B,GAAiB,aAAe,GAC9CsjD,EAAqBn5E,EAAY,UAAY,GAC/C,EACA,KAAK,IAAIuiE,GAAaviE,EAAY,UAAW,CAAC,EAAG,CAAC,EAAI64E,EAAI,wBAC9D5nE,EAAS,cAAc,MAAM,IAC3BioE,EAAW,CAAC,EAAIC,EAChBD,EAAW,CAAC,EAAIC,EAChBD,EAAW,CAAC,EAAIC,CAAA,CAEpB,CACA,MAAMC,EAAcl5E,EAAS,aAAe24E,EAAI,YAChD,GAAI5nE,EAAS,UAAW,CACtB,MAAMooE,EAAeD,EAAY,UAAY,GAAQ,EAAI7W,GAAa6W,EAAY,UAAWP,EAAI,YAAY,SAAS,EACtH5nE,EAAS,UAAU,MAAM,IAAI,GAAG8hE,GAAeqG,EAAY,MAAOC,EAAcR,EAAI,YAAY,KAAK,CAAC,CACxG,CACI5nE,EAAS,SACXA,EAAS,QAAQ,MAAM,IAAI,GAAGgiE,GAA2BmG,EAAY,SAAUP,EAAI,YAAY,QAAQ,CAAC,EAE1G,MAAMS,EAAOp5E,EAAS,MAAQ24E,EAAI,KAClC,GAAI5nE,EAAS,WAAY,CACvB,MAAMhJ,EAAgBqxE,EAAK,UAAY,GAAQ,EAAI/W,GAAa+W,EAAK,UAAWT,EAAI,KAAK,SAAS,EAClG5nE,EAAS,WAAW,MAAM,IAAI,GAAG8hE,GAAeuG,EAAK,MAAOrxE,EAAe4wE,EAAI,KAAK,KAAK,CAAC,CAC5F,CACI5nE,EAAS,UACXA,EAAS,SAAS,MAAM,IAAI,GAAGgiE,GAA2BqG,EAAK,SAAUT,EAAI,KAAK,QAAQ,CAAC,EAE7F,MAAMxgG,EAAQ6nB,EAAS,OAAS24E,EAAI,MACpC,GAAI5nE,EAAS,aAAc,CACzB,MAAMsoE,EAAiBlhG,EAAM,UAAY,GAAQ,EAAIkqF,GAAalqF,EAAM,UAAWwgG,EAAI,MAAM,SAAS,EACtG5nE,EAAS,aAAa,MAAM,IAAI,GAAG8hE,GAAe16F,EAAM,MAAOkhG,EAAgBV,EAAI,MAAM,KAAK,CAAC,CACjG,CACI5nE,EAAS,YACXA,EAAS,WAAW,MAAM,IAAI,GAAGgiE,GAA2B56F,EAAM,SAAUwgG,EAAI,MAAM,QAAQ,CAAC,EAE7F5nE,EAAS,WACXA,EAAS,UAAU,MAAM,IAAI,GAAG8hE,GAAe8F,EAAI,SAAUA,EAAI,aAAcA,EAAI,QAAQ,CAAC,EAE9F,MAAM54E,EAAQ41B,GAAiB,OAAS,GACpC5kB,EAAS,gBACXA,EAAS,cAAc,MAAQhR,EAAM,OAAS,OAAS,EAAI,GAEzDgR,EAAS,sBACXA,EAAS,oBAAoB,MAAQ,KAAK,IACxC,KAAK,IAAIsxD,GAAatiE,EAAM,cAAe44E,EAAI,kBAAkB,EAAG,CAAC,EACrE,GAGN,CAEO,SAASW,GAAoCnpF,EAAOjD,EAAU0/E,EAAO,CAC1E,WAAAzL,EAAamR,GACb,cAAAlxE,EAAgB,KAChB,iBAAAm4E,EAAmB,KACnB,iBAAAlpE,EAAmB,EACrB,EAAI,GAAI,CACN,MAAMU,EAAW7jB,GAAU,SAC3B,GAAI,CAAC6jB,EACH,OAAO0nE,GAAqC,CAAE,WAAAtX,EAAY,cAAA//D,EAAe,EAE3E,MAAMu0B,EAAkB8iD,GAAqC,CAAE,WAAAtX,EAAY,cAAA//D,EAAe,EACpFo4E,EAAqB/X,GAAkC8X,CAAgB,EACvEvtE,EAAmB2pB,EAAgB,WAAa,GAChD5pB,EAAcF,GAAgB1b,EAAOy8E,GAAO,UAAU,KAAK,EACjE77D,EAAS,oBAAoB,MAAQ67D,GAAO,aAC1C4M,EAAmB,aACnBxtE,EAAiB,uBAAyB,GACxC,EACA,EACJ,MAAMytE,EAAe7sE,GAAuBzc,EAAO,CACjD,YAAa6b,EAAiB,uBAAyB,GAAO,KAAOD,EACrE,iBAAAC,EACA,cAAeA,EAAiB,cAAgBnK,GAAkB,QAClE,UAAWmK,EAAiB,uBAAyB,GACtD,EAID,GAHA+E,EAAS,cAAc,MAAM,IAAI,GAAGwhE,GAAakH,CAAY,CAAC,EAC9Df,GAA8B3nE,EAAU4kB,CAAe,EAEnDi3C,GAAO,YAAY,MAAO,CAC5B,MAAM8M,EAAgBzJ,GAAWrD,EAAM,WAAW,MAAO/qE,GAAkB,eAAe,EAC1F,OAAAkP,EAAS,iBAAiB,MAAM,IAAI,GAAG2oE,CAAa,EACpD3oE,EAAS,kBAAkB,MAAM,IAAI,GAAG2oE,CAAa,EACrD3oE,EAAS,kBAAkB,MAAM,IAAI,GAAG2oE,CAAa,EACrD3oE,EAAS,gBAAgB,MAAQ,EACjCA,EAAS,iBAAiB,MAAQ,KAAK,GACvCA,EAAS,iBAAiB,MAAQV,GAAoBu8D,EAAM,WAAW,YAAc,EAAI,EAClFj3C,CACT,CAEA,MAAMgkD,EAAqBhkD,EAAgB,YAAc,GACnDikD,EAAiBpH,GAAwBmH,EAAmB,IAAI,EAChEE,EAAaF,EAAmB,YAAch2E,GAAoBgyB,EAAiB,kBAAmB9zB,GAAkB,eAAe,EACvInH,EAASk/E,IAAmB,EAC9BD,EAAmB,YACnBC,IAAmB,EACjBD,EAAmB,YACnBE,EACAl/E,EAASi/E,IAAmB,EAC9BD,EAAmB,UACnBC,IAAmB,EACjBD,EAAmB,YACnBE,EACN,OAAA9oE,EAAS,iBAAiB,MAAM,IAAI,GAAGk/D,GAAW4J,EAAYh4E,GAAkB,eAAe,CAAC,EAChGkP,EAAS,kBAAkB,MAAM,IAAI,GAAGk/D,GAAWv1E,EAAQm/E,CAAU,CAAC,EACtE9oE,EAAS,kBAAkB,MAAM,IAAI,GAAGk/D,GAAWt1E,EAAQk/E,CAAU,CAAC,EACtE9oE,EAAS,gBAAgB,MAAQ6oE,EACjC7oE,EAAS,iBAAiB,MAAQ0hE,GAAiBkH,EAAmB,YAAa,GAAG,EACtF5oE,EAAS,iBAAiB,MAAQV,GAAoBspE,EAAmB,OAAS,cAAgB,EAAI,EAC/FhkD,CACT,CAEO,SAASmkD,GAAkC5sF,EAAU0/E,EAAO2M,EAAmB,KAAM,CAC1F,MAAMxoE,EAAW7jB,GAAU,SAC3B,GAAI,CAAC6jB,EACH,OAAO0wD,GAAkC8X,CAAgB,EAE3D,MAAMvhG,EAAWypF,GAAkC8X,CAAgB,EAC7DnjE,EAAS,KAAK,IAAIp+B,EAAS,OAAQ,IAAK,EACxC+hG,EAAa,KAAK,KAAK3jE,CAAM,EAgBnC,GAfIrF,EAAS,cACXA,EAAS,YAAY,MAAQ,KAAK,IAAIsxD,GAAauK,GAAO,QAAS,IAAK,EAAImN,EAAY,IAAI,GAE1FhpE,EAAS,iBACXA,EAAS,eAAe,MAAQ,KAAK,IACnCsxD,GAAauK,GAAO,cAAe,IAAK,EAAI50F,EAAS,gBAAkB+hG,EACvE,OAGAhpE,EAAS,aACXA,EAAS,WAAW,MAAQ,KAAK,IAAIsxD,GAAauK,GAAO,UAAW,CAAC,EAAIx2D,EAAQ,GAAI,GAEnFrF,EAAS,WACXA,EAAS,SAAS,MAAQ,KAAK,IAAIsxD,GAAauK,GAAO,QAAS,CAAC,EAAIx2D,EAAQ,IAAI,GAE/ErF,EAAS,YAAa,CACxB,MAAMinE,EAAW,KAAK,IAAI,KAAK,MAAM3V,GAAauK,GAAO,SAAU,GAAG,CAAC,EAAG,CAAC,EACrEhL,EAAsB,KAAK,MAAMS,GAAakX,GAAkB,WAAYvB,CAAQ,CAAC,EAC3FjnE,EAAS,YAAY,MAAQ,KAAK,IAAI,KAAK,IAAI6wD,EAAqBoW,CAAQ,EAAG,CAAC,CAClF,CACA,OAAIjnE,EAAS,kBACXA,EAAS,gBAAgB,MAAQ/4B,EAAS,QAAU,EAAI,GAEtD+4B,EAAS,4BACXA,EAAS,0BAA0B,MAAQ/4B,EAAS,iBAAmB,EAAI,GAEzE+4B,EAAS,eACXA,EAAS,aAAa,MAAQ/4B,EAAS,SAAW,EAAI,GAEjDA,CACT,CAEO,SAASgiG,GAAkC9sF,EAAU2c,EAAQ34C,EAAOwoB,EAAQ,CACjFmwB,EAAO,kBAAkB,EAAI,EAC7B3c,EAAS,SAAS,YAAY,MAAM,IAAI,KAAK,IAAIh8B,EAAO,CAAC,EAAG,KAAK,IAAIwoB,EAAQ,CAAC,CAAC,EAC/EwT,EAAS,SAAS,gBAAgB,MAAM,KAAK2c,EAAO,QAAQ,EAC5D3c,EAAS,SAAS,aAAa,MAAM,KAAK2c,EAAO,WAAW,EAC5D3c,EAAS,SAAS,mBAAmB,MAAM,KAAK2c,EAAO,uBAAuB,CAChF,CAEO,SAASowE,GAAiC9pF,EAAOy8E,EAAO,CAC7D,MAAMzvC,EAAQ,IAAIhtC,EAAM,MAClBhpB,EAAayqG,GAA0BhF,CAAK,EAC5C1/E,EAAWmrF,GAA0BloF,EAAOy8E,CAAK,EACjDsN,EAAO,IAAI/pF,EAAM,KAAK,IAAIA,EAAM,cAAc,EAAG,CAAC,EAAGjD,CAAQ,EACnE,OAAAgtF,EAAK,cAAgB,GACrB/8C,EAAM,IAAI+8C,CAAI,EACP,CACL,MAAA/8C,EACA,SAAAjwC,EACA,KAAAgtF,EACA,UAAW/B,GAA0BhxG,CAAU,EAC/C,SAAU,CACR+yG,EAAK,UAAU,YACfhtF,EAAS,WACX,EAEJ,CC/zDA,MAAMmnD,GAA4B,IAC5BL,GAAyB,IACzBC,GAAqB,IACrBO,GAA+B,GAC/BF,GAA4B,GAC5BG,GAA2B,KAAK,GAAK,GACrCmF,GAAmC,KAAK,GAAK,IAC7CC,GAAyB,IACzBa,GAAyB,OAAO,OAAO,CAAC,IAAK,MAAO,IAAI,CAAC,EACzDH,GAAW,OAAO,OAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EAElCT,GAAkC,KAClCC,GAA2B,IAC3Bg4B,GAAkB,GAClBoI,GAA0B,EAC1BC,GAAyB,KACzBC,GAAqB,IACrBC,GAAoC,iSACpCh/B,GAAmB,CACvB,CAAE,GAAI,IAAK,MAAO,mBAAoB,UAAW,CAAC,EAAG,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,CAAC,GACxE,CAAE,GAAI,OAAQ,MAAO,sBAAuB,UAAW,CAAC,EAAG,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAG,CAAC,GAC/E,CAAE,GAAI,OAAQ,MAAO,qBAAsB,UAAW,CAAC,EAAG,GAAI,CAAC,EAAG,GAAIf,EAAA,EACtE,CAAE,GAAI,IAAK,MAAO,oBAAqB,UAAW,CAAC,EAAG,EAAG,CAAC,EAAG,GAAIA,EAAA,EACjE,CAAE,GAAI,IAAK,MAAO,qBAAsB,UAAW,CAAC,EAAG,EAAG,CAAC,EAAG,GAAIA,EAAA,EAClE,CAAE,GAAI,OAAQ,MAAO,oBAAqB,UAAW,CAAC,GAAI,EAAG,CAAC,EAAG,GAAIA,EAAA,CACvE,EACMgB,GAAwB,OAAO,YAAYD,GAAiB,IAAK9a,GAAS,CAACA,EAAK,GAAIA,CAAI,CAAC,CAAC,EAEhG,SAASzpD,GAAMznB,EAAO0nB,EAAKC,EAAK,CAC9B,OAAO,KAAK,IAAI,KAAK,IAAI3nB,EAAO0nB,CAAG,EAAGC,CAAG,CAC3C,CAEA,SAASorF,GAAa/yG,EAAOsa,EAAW,EAAG,CACzC,MAAM8+B,EAAU,OAAOp5C,CAAK,EAC5B,OAAO,OAAO,SAASo5C,CAAO,EAAIA,EAAU9+B,CAC9C,CAEA,SAAS86E,GAAep1F,EAAO,CAC7B,MAAM,EAAIynB,GAAMznB,EAAO,EAAG,CAAC,EAC3B,OAAO,EAAI,GAAM,EAAI,EAAI,EAAI,EAAI,EAAI,KAAK,IAAI,GAAK,EAAI,EAAG,CAAC,EAAI,CACjE,CAuBA,SAASgkF,GAAyBjuE,EAAO,CACvC,OAAOA,EAAM,SAAYA,EAAM,YAAc,GAAK,KAAK,IAAIA,EAAM,MAAM,EAAI,EAC7E,CAEA,SAASkuE,GAAwBluE,EAAO,CACtC,GAAI,CAACA,EACH,OAAO,KAET,GAAIA,EAAM,MAAQ,YAChB,MAAO,CAAE,UAAW,OAAQ,MAAO,aAErC,GAAIA,EAAM,MAAQ,aAChB,MAAO,CAAE,UAAW,QAAS,MAAO,cAEtC,GAAIA,EAAM,MAAQ,UAChB,MAAO,CAAE,UAAW,KAAM,MAAO,WAEnC,GAAIA,EAAM,MAAQ,YAChB,MAAO,CAAE,UAAW,OAAQ,MAAO,aAGrC,MAAM9U,EAAM,OAAO8U,EAAM,KAAO,EAAE,EAAE,cACpC,OAAI9U,IAAQ,KAAO8U,EAAM,OAAS,OACzB,CAAE,UAAW,OAAQ,MAAOA,EAAM,MAAQ,QAE/C9U,IAAQ,KAAO8U,EAAM,OAAS,OACzB,CAAE,UAAW,QAAS,MAAOA,EAAM,MAAQ,QAEhD9U,IAAQ,KAAO8U,EAAM,OAAS,OACzB,CAAE,UAAW,KAAM,MAAOA,EAAM,MAAQ,QAE7C9U,IAAQ,KAAO8U,EAAM,OAAS,OACzB,CAAE,UAAW,OAAQ,MAAOA,EAAM,MAAQ,QAE5C,IACT,CAEA,SAASmuE,GAAqBwD,EAAoB,CAChD,MAAO,CACL,SACGA,EAAmB,gBAAgB,MAAQ,EAAI,EAAI,IACnDA,EAAmB,gBAAgB,KAAO,EAAI,EAAI,GACrD,OACGA,EAAmB,gBAAgB,KAAO,EAAI,EAAI,IAClDA,EAAmB,gBAAgB,GAAK,EAAI,EAAI,GAEvD,CAEA,SAAS3D,GAAwB2D,EAAoB,CAC9CA,IAGLA,EAAmB,YAAY,QAC/BA,EAAmB,gBAAgB,KAAO,EAC1CA,EAAmB,gBAAgB,MAAQ,EAC3CA,EAAmB,gBAAgB,GAAK,EACxCA,EAAmB,gBAAgB,KAAO,EAC1CA,EAAmB,cAAgB,EACrC,CAEA,SAASvD,GAAgB7gD,EAASqyD,EAAcC,EAAY,CAI1D,GAHI,CAACtyD,GAAS,QAAU,CAACA,GAAS,UAG9B,KAAK,IAAIqyD,CAAY,EAAI,MAAQ,KAAK,IAAIC,CAAU,EAAI,KAC1D,MAAO,GAGT,MAAMjjE,EAAS2Q,EAAQ,OAAO,SAAS,QAAQ,IAAIA,EAAQ,SAAS,MAAM,EACpEnU,EAAWwD,EAAO,SACxB,GAAI,CAAC,OAAO,SAASxD,CAAQ,GAAKA,GAAY,KAC5C,MAAO,GAGT,MAAM0mE,EAAU,IAAIo1B,GAAc,GAAGhgC,EAAQ,EAAE,YACzCv4D,EAAYC,EAAO,QAAQ,aAAaxD,CAAQ,EAChD2mE,EAAW,KAAK,IACpB,OAAO,SAASxyD,EAAQ,SAAS,aAAa,EAAIA,EAAQ,SAAS,cAAgB,EACnFinD,EAAA,EAEIwL,EAAW,KAAK,IACpB,OAAO,SAASzyD,EAAQ,SAAS,aAAa,EAAIA,EAAQ,SAAS,cAAgB,KAAK,GACxF,KAAK,GAAKinD,EAAA,EAENyL,EAAe,KAAK,KAAKvuE,GAAMiL,EAAU,IAAImjE,CAAO,EAAG,GAAI,CAAC,CAAC,EAE7DI,EADiBxuE,GAAMuuE,EAAeJ,EAAYE,EAAUC,CAAQ,EAC9BC,EAK5C,GAHI,KAAK,IAAIL,CAAY,EAAI,MAC3BhjE,EAAO,eAAekjE,EAASF,CAAY,EAEzC,KAAK,IAAIM,CAAkB,EAAI,KAAM,CACvC,IAAII,EAAa,IAAI40B,GAAM,EAAU,aAAap1B,EAASljE,CAAM,EAAE,YAC/D0jE,EAAW,YAAc,OAC3BA,EAAa,IAAI40B,GAAc,EAAG,EAAG,CAAC,GAExCt4F,EAAO,eAAe0jE,EAAYJ,CAAkB,CACtD,CACA,OAAA3yD,EAAQ,OAAO,SAAS,KAAKA,EAAQ,SAAS,MAAM,EAAE,IAAI3Q,CAAM,EAChE2Q,EAAQ,OAAO,GAAG,IAAI,GAAG2nD,EAAQ,EACjC3nD,EAAQ,OAAO,OAAOA,EAAQ,SAAS,MAAM,EACtC,EACT,CAEA,SAASsgD,GAAkBtgD,EAASw/C,EAAW,CAC7C,MAAM4E,EAAqBpkD,GAAS,mBACpC,GAAI,CAACokD,EACH,MAAO,GAGT,MAAMoC,EAAO5F,GAAqBwD,CAAkB,EACpD,GAAI,CAACoC,EAAK,SAAW,CAACA,EAAK,MACzB,OAAApC,EAAmB,cAAgB,EAC5B,GAET,GAAI,CAACA,EAAmB,cACtB,OAAAA,EAAmB,cAAgB5E,EAC5B,GAGT,MAAMG,EAAex7D,IAAOq7D,EAAY4E,EAAmB,eAAiB,IAAM,EAAG,GAAI,EACzF,OAAAA,EAAmB,cAAgB5E,EAC5BqB,GACL7gD,EACAwmD,EAAK,QAAUQ,GAAmCrH,EAClD6G,EAAK,MAAQQ,GAAmCrH,CAAA,CAEpD,CAEA,SAASmP,GAA6BpyF,EAAQ,GAAI,CAChD,MAAMqyF,EAAkBC,GAAU,CAChC,MAAMC,EAAe,OAAOD,CAAK,EACjC,OAAO,OAAO,SAASC,CAAY,EAAI,KAAK,IAAI,EAAGA,CAAY,EAAI,CACrE,EACA,MAAO,CACL,IAAKF,EAAeryF,GAAO,GAAG,EAC9B,MAAOqyF,EAAeryF,GAAO,KAAK,EAClC,OAAQqyF,EAAeryF,GAAO,MAAM,EACpC,KAAMqyF,EAAeryF,GAAO,IAAI,EAEpC,CAEA,SAASwyF,GAAwBlvD,EAASmvD,EAAc,GAAI,CAC1D,MAAMvoE,EAASoZ,GAAS,UAAU,WAC5B1hC,EAAQ,KAAK,IAAI,EAAGsoB,GAAQ,aAAeA,GAAQ,eAAe,aAAe,CAAC,EAClFE,EAAS,KAAK,IAAI,EAAGF,GAAQ,cAAgBA,GAAQ,eAAe,cAAgB,CAAC,EACrFwoE,EAAmBN,GAA6BK,CAAW,EAC3Dx5E,EAAOwO,GAAMirE,EAAiB,KAAM,EAAG,KAAK,IAAI9wF,EAAQ,EAAG,CAAC,CAAC,EAC7DsX,EAAQuO,GAAMirE,EAAiB,MAAO,EAAG,KAAK,IAAI9wF,EAAQqX,EAAO,EAAG,CAAC,CAAC,EACtE08D,EAAMluD,GAAMirE,EAAiB,IAAK,EAAG,KAAK,IAAItoE,EAAS,EAAG,CAAC,CAAC,EAC5DwrD,EAASnuD,GAAMirE,EAAiB,OAAQ,EAAG,KAAK,IAAItoE,EAASurD,EAAM,EAAG,CAAC,CAAC,EACxEgd,EAAc,KAAK,IAAI,EAAG/wF,EAAQqX,EAAOC,CAAK,EAC9C05E,EAAe,KAAK,IAAI,EAAGxoE,EAASurD,EAAMC,CAAM,EAChD9/B,EAAU78B,EAAO05E,EAAc,EAC/B58C,EAAU4/B,EAAMid,EAAe,EACrC,MAAO,CACL,MAAAhxF,EACA,OAAAwoB,EACA,IAAAurD,EACA,MAAAz8D,EACA,OAAA08D,EACA,KAAA38D,EACA,YAAA05E,EACA,aAAAC,EACA,OAAQD,EAAcC,EACtB,WAAa98C,EAAUl0C,EAAS,EAAI,EACpC,WAAY,EAAKm0C,EAAU3rB,EAAU,EAEzC,CAEA,SAAS8gG,GAAsB5nF,EAASmvD,EAAc,GAAI,CACxD,MAAMvoE,EAASoZ,GAAS,UAAU,WAC5BwvD,EAAUN,GAAwBlvD,EAASmvD,CAAW,EACtDM,EAAa,KAAK,IAAI,EAAG7oE,GAAQ,OAAS4oE,EAAQ,KAAK,EACvDE,EAAc,KAAK,IAAI,EAAG9oE,GAAQ,QAAU4oE,EAAQ,MAAM,EAC1DG,EAASF,EAAa,KAAK,IAAID,EAAQ,MAAO,CAAC,EAC/CI,EAASF,EAAc,KAAK,IAAIF,EAAQ,OAAQ,CAAC,EACjD3kE,EAAI,KAAK,MAAM2kE,EAAQ,KAAOG,CAAM,EACpC7kE,EAAI,KAAK,MAAM0kE,EAAQ,IAAMI,CAAM,EACnCh6E,EAAQ,KAAK,MAAM45E,EAAQ,MAAQG,CAAM,EACzCrd,EAAS,KAAK,MAAMkd,EAAQ,OAASI,CAAM,EACjD,MAAO,CACL,EAAA/kE,EACA,EAAAC,EACA,MAAO,KAAK,IAAI,EAAG2kE,EAAa5kE,EAAIjV,CAAK,EACzC,OAAQ,KAAK,IAAI,EAAG85E,EAAc5kE,EAAIwnD,CAAM,EAEhD,CAEA,SAASyO,GAAuB/gD,EAASmvD,EAAc,GAAI,CAAE,iBAAAU,EAAmB,IAAS,GAAI,CAC3F,MAAM54C,EAASjX,GAAS,OACxB,GAAI,CAACiX,GAAQ,kBAAkB,SAC7B,OAEE44C,GACF54C,EAAO,yBAET,KAAM,CAAE,WAAA4wE,EAAY,WAAAC,CAAA,EAAe54B,GAAwBlvD,EAASmvD,CAAW,EAC/El4C,EAAO,iBAAiB,SAAS,CAAC,GAAK4wE,EACvC5wE,EAAO,iBAAiB,SAAS,CAAC,GAAK6wE,EACvC7wE,EAAO,wBAAwB,KAAKA,EAAO,gBAAgB,EAAE,QAC/D,CAEA,SAASuyC,GAAyBxpD,EAAS,CACzC,GAAI,CAACA,GAAS,OACZ,OAAO,KAET,MAAMypD,EAAwBzpD,EAAQ,OAAO,WAAW,QAAQ,SAC1D0pD,EAAc,CAAC7+D,EAAGC,EAAGwrB,IAAM,CAC/B,MAAMhwB,EAAY,IAAIqhG,GAAc98F,EAAGC,EAAGwrB,CAAC,EAAE,gBAAgBmzC,CAAqB,EAClF,MAAO,CAACnjE,EAAU,EAAGA,EAAU,EAAGA,EAAU,CAAC,CAC/C,EACA,MAAO,CACL,EAAGojE,EAAY,EAAG,EAAG,CAAC,EACtB,EAAGA,EAAY,EAAG,EAAG,CAAC,EACtB,EAAGA,EAAY,EAAG,EAAG,CAAC,EAE1B,CAEA,SAASq+B,GAA2BjuG,EAAGC,EAAG,CACxC,GAAID,IAAMC,EACR,MAAO,GAET,GAAI,CAACD,GAAK,CAACC,EACT,MAAO,GAET,UAAWyK,IAAQ,CAAC,IAAK,IAAK,GAAG,EAAG,CAClC,MAAMwjG,EAAKluG,EAAE0K,CAAI,EACXyjG,EAAKluG,EAAEyK,CAAI,EACjB,GAAI,CAACwjG,GAAM,CAACC,EACV,MAAO,GAET,QAAS5jH,EAAQ,EAAGA,EAAQ,EAAGA,GAAS,EACtC,GAAI,KAAK,KAAK2jH,EAAG3jH,CAAK,GAAK,IAAM4jH,EAAG5jH,CAAK,GAAK,EAAE,EAAI,KAClD,MAAO,EAGb,CACA,MAAO,EACT,CAEA,SAASk8E,GAAyBvgD,EAAS,CACzC,GAAI,CAACA,GAAS,QAAU,CAACA,GAAS,SAChC,MAAO,GAET,MAAM3Q,EAAS2Q,EAAQ,OAAO,SAAS,QAAQ,IAAIA,EAAQ,SAAS,MAAM,EAC1E,GAAI3Q,EAAO,WAAa,KACtB,MAAO,GAETA,EAAO,YACP,IAAI+lE,EAAS,GACT8yB,EAAU,KACd,UAAWt6C,KAAQ8a,GAAkB,CAEnC,MAAM3hB,EADY,IAAI4gD,GAAc,GAAG/5C,EAAK,SAAS,EAAE,YACjC,IAAIv+C,CAAM,EAC5B03C,EAAMmhD,IACRA,EAAUnhD,EACVquB,EAASxnB,EAAK,GAElB,CACA,OAAOs6C,GAAWhhC,GAAkCkO,EAAS,EAC/D,CAEA,SAAS+yB,GAAoBnoF,EAAStd,EAAW,GAAI,CACnD,GAAI,CAACsd,GAAS,QAAU,CAACA,GAAS,SAChC,OAAO,KAET,MAAMiX,EAASjX,EAAQ,OACjB3jB,EAAS2jB,EAAQ,SAAS,OAChC,MAAO,CACL,SAAU,GACV,cAAeunF,GACf,SAAU,OAAO7kG,GAAY,EAAE,EAC/B,SAAU,CAACu0B,EAAO,SAAS,EAAGA,EAAO,SAAS,EAAGA,EAAO,SAAS,CAAC,EAClE,OAAQ,CAAC56B,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EACrC,GAAI,CAAC46B,EAAO,GAAG,EAAGA,EAAO,GAAG,EAAGA,EAAO,GAAG,CAAC,EAC1C,IAAKA,EAAO,IAEhB,CAEA,SAAS+7C,GAAyBhzD,EAASizD,EAAavwE,EAAW,GAAI,CAIrE,GAHI,CAACsd,GAAS,QAAU,CAACA,GAAS,UAAY,CAACizD,GAAa,UAGxDA,EAAY,gBAAkBs0B,GAChC,MAAO,GAET,MAAMa,EAAmB,OAAOn1B,EAAY,UAAY,EAAE,EAAE,OACtDzuB,EAAiB,OAAO9hD,GAAY,EAAE,EAAE,OAC9C,GAAI0lG,GAAoB5jD,GAAkB4jD,IAAqB5jD,EAC7D,MAAO,GAET,MAAMjiD,EAAW,MAAM,QAAQ0wE,EAAY,QAAQ,EAAIA,EAAY,SAAW,KACxE52E,EAAS,MAAM,QAAQ42E,EAAY,MAAM,EAAIA,EAAY,OAAS,KAClEzwE,EAAK,MAAM,QAAQywE,EAAY,EAAE,EAAIA,EAAY,GAAKtL,GAC5D,MAAI,CAACplE,GAAY,CAAClG,EACT,IAET2jB,EAAQ,OAAO,SAAS,IACtByvE,GAAaltF,EAAS,CAAC,EAAGyd,EAAQ,OAAO,SAAS,CAAC,EACnDyvE,GAAaltF,EAAS,CAAC,EAAGyd,EAAQ,OAAO,SAAS,CAAC,EACnDyvE,GAAaltF,EAAS,CAAC,EAAGyd,EAAQ,OAAO,SAAS,CAAC,GAErDA,EAAQ,SAAS,OAAO,IACtByvE,GAAapzF,EAAO,CAAC,EAAG2jB,EAAQ,SAAS,OAAO,CAAC,EACjDyvE,GAAapzF,EAAO,CAAC,EAAG2jB,EAAQ,SAAS,OAAO,CAAC,EACjDyvE,GAAapzF,EAAO,CAAC,EAAG2jB,EAAQ,SAAS,OAAO,CAAC,GAEnDA,EAAQ,OAAO,GAAG,IAChByvE,GAAajtF,EAAG,CAAC,EAAGmlE,GAAS,CAAC,CAAC,EAC/B8nB,GAAajtF,EAAG,CAAC,EAAGmlE,GAAS,CAAC,CAAC,EAC/B8nB,GAAajtF,EAAG,CAAC,EAAGmlE,GAAS,CAAC,CAAC,GAEjC3nD,EAAQ,OAAO,IAAMyvE,GAAaxc,EAAY,IAAKjzD,EAAQ,OAAO,GAAG,EACrEA,EAAQ,wBACRA,EAAQ,OAAO,OAAOA,EAAQ,SAAS,MAAM,EAC7CA,EAAQ,SAAS,SACjBA,EAAQ,kBACD,GACT,CAEA,SAAS60D,GAA6B70D,EAAS+K,EAAQ,CACrD,GAAI,CAAC/K,GAAS,QAAU,CAACA,GAAS,UAAY,CAAC+K,EAC7C,MAAO,GAET,MAAM3b,EAAY,IAAIu4F,GAAc,GAAI58E,EAAO,WAAa,EAAG,EACzDvoB,EAAK,IAAImlG,GAAc,GAAI58E,EAAO,IAAM,EAAG,EACjD,GAAI3b,EAAU,WAAa,MAAQ5M,EAAG,WAAa,KACjD,MAAO,GAET,MAAMnG,EAAS2jB,EAAQ,SAAS,OAAO,QACjCnU,EAAW1H,GACf6b,EAAQ,OAAO,SAAS,WAAW3jB,CAAM,EACzC2jB,EAAQ,SAAS,aAAe,IAChCA,EAAQ,SAAS,aAAe,KAElC,OAAAA,EAAQ,iBAAmB,CACzB,UAAW,YAAY,MACvB,WAAYmnD,GACZ,cAAennD,EAAQ,OAAO,SAAS,QACvC,YAAa3jB,EAAO,QAAQ,IAAI+S,EAAU,YAAY,eAAevD,CAAQ,CAAC,EAC9E,QAASmU,EAAQ,OAAO,GAAG,QAC3B,MAAOxd,EAAG,WAAU,EAEtBwd,EAAQ,SAAS,cAAgB,GACjCA,EAAQ,qBACRA,EAAQ,kBACD,EACT,CAEA,SAASqgD,GAAqBrgD,EAASw/C,EAAW,CAChD,MAAMkV,EAAa10D,GAAS,iBAC5B,GAAI,CAAC00D,EACH,MAAO,GAET,MAAM17B,EAAW70C,IAAOq7D,EAAYkV,EAAW,WAAaA,EAAW,WAAY,EAAG,CAAC,EACjFC,EAAQ7C,GAAe94B,CAAQ,EAOrC,OANAh5B,EAAQ,OAAO,SAAS,YAAY00D,EAAW,cAAeA,EAAW,YAAaC,CAAK,EAC3F30D,EAAQ,OAAO,GAAG,YAAY00D,EAAW,QAASA,EAAW,MAAOC,CAAK,EAAE,YACvED,EAAW,WACb10D,EAAQ,SAAS,OAAO,YAAY00D,EAAW,YAAaA,EAAW,UAAWC,CAAK,EAEzF30D,EAAQ,OAAO,OAAOA,EAAQ,SAAS,MAAM,EACzCg5B,GAAY,GACdh5B,EAAQ,iBAAmB,KAC3BA,EAAQ,SAAS,cAAgB,GACjCA,EAAQ,SAAS,cAAgBohD,GACjCphD,EAAQ,wBACRA,EAAQ,0BACD,IAEF,EACT,CAEA,SAASqoF,GAAiBroF,EAASsoF,EAAa,CAC9CtoF,EAAQ,SAAS,OAAO,IAAI,GAAGsoF,EAAY,MAAM,EACjDtoF,EAAQ,OAAO,SAAS,IAAI,GAAGsoF,EAAY,QAAQ,EACnDtoF,EAAQ,OAAO,GAAG,IAAI,GAAGsoF,EAAY,EAAE,EACvCtoF,EAAQ,OAAO,IAAMsoF,EAAY,IACjCtoF,EAAQ,OAAO,KAAOsoF,EAAY,KAClCtoF,EAAQ,wBACRA,EAAQ,OAAO,OAAOA,EAAQ,SAAS,MAAM,EAC7CA,EAAQ,SAAS,SACjBA,EAAQ,0BACRA,EAAQ,iBACV,CAEA,SAASuoF,GAAwBvoF,EAASsoF,EAAa,CACrD,QAAAh0B,EAAU,GACV,WAAAlB,EAAaq0B,EACf,EAAI,GAAI,CACN,MAAI,CAACznF,GAAS,QAAU,CAACA,GAAS,UAAY,CAACsoF,EACtC,GAEL,CAACh0B,GAAWlB,GAAc,GAC5Bi1B,GAAiBroF,EAASsoF,CAAW,EAC9B,KAETtoF,EAAQ,OAAO,IAAMsoF,EAAY,IACjCtoF,EAAQ,OAAO,KAAOsoF,EAAY,KAClCtoF,EAAQ,wBACRA,EAAQ,iBAAmB,CACzB,UAAW,YAAY,MACvB,WAAAozD,EACA,cAAepzD,EAAQ,OAAO,SAAS,QACvC,YAAa,IAAI2nF,GAAc,GAAGW,EAAY,QAAQ,EACtD,QAAStoF,EAAQ,OAAO,GAAG,QAC3B,MAAO,IAAI2nF,GAAc,GAAGW,EAAY,EAAE,EAAE,YAC5C,YAAatoF,EAAQ,SAAS,OAAO,QACrC,UAAW,IAAI2nF,GAAc,GAAGW,EAAY,MAAM,GAEpDtoF,EAAQ,SAAS,cAAgB,GACjCA,EAAQ,qBACRA,EAAQ,kBACD,GACT,CAKA,SAASwoF,GAAyBxoF,EAAS,CACzC,MAAMyoF,EAAczoF,GAAS,YACvBsqC,EAAWtqC,GAAS,SAC1B,GAAI,GAACyoF,GAAe,CAACn+C,GAGrB,IAAI,OAAOA,EAAS,cAAiB,YAAc,CAACtqC,EAAQ,aAAc,CACxEA,EAAQ,iBAAmB,GAC3B,MACF,CACAA,EAAQ,iBAAmB,GAC3BsqC,EAAS,aAAam+C,EAAY,MAAOzoF,EAAQ,YAAY,EAC1D,MAAM,IAAM,CAAC,CAAC,EACd,QAAQ,IAAM,CACTA,EAAQ,cAAgByoF,IAC1BzoF,EAAQ,iBAAmB,GAC3BA,EAAQ,kBAEZ,CAAC,EACL,CAEA,SAAS0oF,GAAkB1O,EAAO,CAChC,MAAM90F,EAAS80F,GAAO,OACtB,GAAI,CAAC,MAAM,QAAQ90F,GAAQ,GAAG,GAAK,CAAC,MAAM,QAAQA,GAAQ,GAAG,EAC3D,MAAO,GAET,MAAMmD,EAAS,KAAK,IAAIonF,GAAauK,GAAO,OAAQ,CAAC,EAAG,IAAI,EACtD2O,EAAU,KAAK,IAAItgG,EAAS,IAAM,IAAI,EAC5C,MAAO,CAAC,GAAGnD,EAAO,IAAK,GAAGA,EAAO,GAAG,EACjC,IAAKxoB,GAAU,KAAK,MAAM+yG,GAAa/yG,EAAO,CAAC,EAAIisH,CAAO,CAAC,EAC3D,KAAK,GAAG,CACb,CAEA,SAASC,GAAWhiG,EAAQuiD,EAAO,KAAM,CACvC,OAAO,IAAI,QAAQ,CAACJ,EAASC,IAAW,CACtC,MAAMzkD,EAASqC,EACTvK,EAAS8sD,EACX,SAAS,cAAc,QAAQ,EAC/B5kD,EACA4kD,IACF9sD,EAAO,MAAQ8sD,EAAK,MACpB9sD,EAAO,OAAS8sD,EAAK,OACrB9sD,EACG,WAAW,IAAI,GACd,UAAUkI,EAAQ4kD,EAAK,EAAGA,EAAK,EAAGA,EAAK,MAAOA,EAAK,OAAQ,EAAG,EAAGA,EAAK,MAAOA,EAAK,MAAM,GAE9F9sD,EAAO,OAAQmD,GAAS,CAClBA,EACFupD,EAAQvpD,CAAI,EAEZwpD,EAAO,IAAI,MAAM,2CAA2C,CAAC,CAEjE,EAAG,WAAW,CAChB,CAAC,CACH,CAEA,SAAS6/C,GAA4B7oF,EAASg6E,EAAOxrE,EAAe,CAClEk4E,GAAoCnpF,GAAOyC,GAAS,aAAa,SAAUg6E,EAAO,CAChF,cAAAxrE,EACA,iBAAkBugE,GAA+B/uE,GAAS,iBAAkB,CAC1E,YAAaA,GAAS,sBAAwB,GAC/C,EACF,CACH,CAEA,SAAS8oF,GAA+B9oF,EAASg6E,EAAO,CACtDkN,GAAkClnF,GAAS,aAAa,SAAUg6E,EAAOjL,GACvE/uE,GAAS,iBACT,CAAE,YAAaA,GAAS,sBAAwB,GAAK,CACtD,CACH,CAEA,MAAM+oF,GAAoBrxB,aAAW,SAA2B,CAC9D,MAAAsiB,EACA,SAAAt3F,EAAW,GACX,UAAAsrD,EAAY,GACZ,YAAAD,EAAc,GACd,oBAAAgqB,EAAsB,GACtB,qBAAA9pB,EAAuB,GACvB,cAAAz/B,EAAgB,KAChB,iBAAAm4E,EAAmB,KACnB,oBAAAqC,EAAsB,GACtB,YAAA/1B,EAAc,KACd,eAAA2E,EAAiB,KACjB,oBAAAU,EACA,oBAAAG,CACF,EAAGpqF,EAAK,CACN,MAAM+mE,EAAWW,SAAO,IAAI,EACtBZ,EAAaY,SAAO,IAAI,EACxBiL,EAAiBjL,SAAOgiB,CAAmB,EAC3CkxB,EAAoBlzC,SAAOrzD,CAAQ,EACnCw2E,EAAuBnjB,SAAOuiB,CAAmB,EACjDxY,EAAiB/J,SAAOhI,CAAW,EACnCm7C,EAA6BlwB,UACjC,IAAM6V,GAAkC8X,CAAgB,EACxD,CAACA,CAAgB,GAEbwC,EAAsBpzC,SAAOmzC,CAA0B,EACvDE,EAAyBrzC,SAAOizC,IAAwB,EAAI,EAC5D,CAACK,EAAaC,CAAc,EAAIz6C,WAAS,EAAE,EAC3C,CAACV,EAAqBgS,CAAsB,EAAItR,WAAS,EAAE,EAC3D,CAACR,EAAsBisB,CAAuB,EAAIzrB,WAAS,IAAI,EAErEiC,YAAU,IAAM,CACdkQ,EAAe,QAAU+W,EACzB,MAAM/3D,GAAUm1C,EAAW,QAC3Bn1C,IAAS,wBACTA,IAAS,iBACX,EAAG,CAAC+3D,CAAmB,CAAC,EAExBjnB,YAAU,IAAM,CACdooB,EAAqB,QAAUZ,CACjC,EAAG,CAACA,CAAmB,CAAC,EAExBxnB,YAAU,IAAM,CACdm4C,EAAkB,QAAUvmG,CAC9B,EAAG,CAACA,CAAQ,CAAC,EAEbouD,YAAU,IAAM,CACdgP,EAAe,QAAU/R,CAC3B,EAAG,CAACisC,EAAOjsC,EAAav/B,CAAa,CAAC,EAEtCsiC,YAAU,IAAM,CACd,MAAMjB,GAASm5C,IAAwB,GACvCI,EAAuB,QAAUv5C,GACjC,MAAM7vC,GAAUm1C,EAAW,QACtBn1C,KAGLA,GAAQ,oBAAsB6vC,GAC9Bi5C,GAA+B9oF,GAASg6E,CAAK,EAC7Ch6E,GAAQ,kBACV,EAAG,CAACgpF,EAAqBhP,CAAK,CAAC,EAE/B,MAAM95B,EAAwBkc,cAAY,IAAM,CAC9C,MAAM95E,GAAW6lG,GAAoBhzC,EAAW,QAAS8zC,EAAkB,OAAO,EAC9E3mG,IACF42E,EAAqB,UAAU52E,EAAQ,CAE3C,EAAG,EAAE,EAECinG,EAAmBxzC,SAAO,CAAE,SAAU,GAAM,WAAY,GAAI,EAC5D,CAACyzC,EAAkBC,CAAmB,EAAI56C,WAAS,EAAK,EACxD66C,EAAsBttB,cAAautB,IAAa,CACpDJ,EAAiB,QAAQ,SAAWI,GACpCF,EAAoB,CAACE,EAAQ,CAC/B,EAAG,EAAE,EACCC,GAAyB7zC,SAAO2zC,CAAmB,EACzDE,GAAuB,QAAUF,EAEjC,MAAMG,EAAcztB,cAAY,CAAC0tB,GAAS,QAAS,CACjD,QAAAx1B,GAAU,GACV,MAAAy1B,GAAQ,GACR,cAAAlyE,GAAgB,KAChB,OAAAC,GAAS,KACT,WAAAs7C,GAAaq0B,EAAA,EACX,KAAO,CACT,MAAMznF,GAAUm1C,EAAW,QAC3B,GAAI,CAACn1C,IAAS,QAAU,CAACA,IAAS,SAChC,MAAO,GAET,MAAMttB,GAAQ62G,EAAiB,QAC/B,GAAI,CAACQ,IAASr3G,GAAM,WAAa,GAC/B,MAAO,GAET,MAAMs3G,GAAchqF,GAAQ,OAASg6E,EACrC,GAAI,CAACgQ,GACH,MAAO,GAET,MAAMx6B,GAAUN,GAAwBlvD,GAASghD,EAAe,OAAO,EACjE3xD,GAAS2Q,GAAQ,OAAO,SAAS,QAAQ,IAAIA,GAAQ,SAAS,MAAM,EACpE5Q,GAAYyoB,KAAkBxoB,GAAO,WAAa,KAAOA,GAAO,UAAYy4D,IAC5EwgC,GAAczD,GAClBmF,GACA,CAAE,UAAA56F,GAAW,GAAI0oB,IAAU9X,GAAQ,OAAO,GAAG,SAAQ,EACrD,CACE,MAAOwvD,GAAQ,YACf,OAAQA,GAAQ,aAChB,KAAM,EACN,YAAag4B,GAGb,oBAAqB,GACvB,EAEF,OAAAkC,EAAoB,EAAI,EACxBh3G,GAAM,WAAag2G,GAAkBsB,EAAW,EACzCzB,GAAwBvoF,GAASsoF,GAAa,CAAE,QAAAh0B,GAAS,WAAAlB,GAAY,CAC9E,EAAG,CAAC4mB,EAAO0P,CAAmB,CAAC,EACzBO,EAAiBl0C,SAAO,IAAI,EAClCk0C,EAAe,QAAUJ,EAEzB,MAAMK,GAAwB9tB,cAAa+tB,IAAc,CACvD,GAAI,CAACA,IAAaf,EAAuB,QACvC,OAEF,MAAM12G,GAAQ62G,EAAiB,QAC/B,GAAI72G,GAAM,WAAa,GACrB,OAEF,MAAM/U,GAAM+qH,GAAkByB,EAAS,EACnC,CAACxsH,IAAO+U,GAAM,aAAe/U,IAGjCssH,EAAe,UAAU,OAAO,CAClC,EAAG,EAAE,EAOCG,GAAoBhuB,cAAY,CAAC+tB,GAAW,CAAE,MAAAJ,GAAQ,IAAU,KAAO,CAC3E,MAAM/pF,GAAUm1C,EAAW,QACrB76C,GAAW0F,IAAS,aAAa,SAIvC,GAHI,CAACA,IAAW,CAAC1F,IAAY,CAAC6vF,IAG1B,CAACJ,IAASX,EAAuB,QACnC,OAEF,MAAM5I,GAAYkI,GAAkByB,EAAS,EAC7C,GAAI,CAACJ,IAASvJ,IAAaxgF,GAAQ,kBAAoBwgF,GACrD,OAEFxgF,GAAQ,gBAAkBwgF,GAC1B,MAAM1wD,GAAS9vB,GAAQ,aAAeA,GAAQ,aAAe,GAAK,EAClE8gF,GAA8BxmF,GAAU6vF,EAAS,EAC9C,KAAK,IAAM,CACNh1C,EAAW,UAAYn1C,IAAWA,GAAQ,cAAgB8vB,IAG1D9vB,GAAQ,aAAa,WAAa1F,KAGtC0F,GAAQ,kBACJupF,EAAiB,QAAQ,WAAa,IAAS,CAACH,EAAuB,SACzEa,EAAe,UAAU,QAAQ,EAErC,CAAC,EACA,MAAM,IAAM,CACP90C,EAAW,UAAYn1C,IAAWA,GAAQ,kBAAoBwgF,KAChExgF,GAAQ,gBAAkB,KAE9B,CAAC,CACL,EAAG,EAAE,EACCqqF,GAAuBt0C,SAAO,IAAI,EACxCs0C,GAAqB,QAAUD,GAE/B,MAAM37C,GAAwB2tB,cAAayC,IAAW,CACpD,MAAMjxB,GAAO+a,GAAsBkW,EAAM,EACzC,MAAI,CAACjxB,IAAQ,CAACuH,EAAW,QAChB,IAETgL,EAAuBvS,GAAK,EAAE,EAC1B27C,EAAiB,QAAQ,WAAa,GACjCM,EAAY,WAAY,CAC7B,cAAej8C,GAAK,UACpB,OAAQA,GAAK,GACb,WAAYuZ,EAAA,CACb,EAEI0N,GAA6B1f,EAAW,QAASvH,EAAI,EAC9D,EAAG,CAACi8C,CAAW,CAAC,EAEVn7C,GAA2B0tB,cAAY,IAC3BjnB,EAAW,SAI3BgL,EAAuB,EAAE,EAClB0pC,EAAY,QAAS,CAC1B,MAAO,GACP,cAAe/hC,GACf,OAAQH,EAAA,CACT,GAPQ,GAQR,CAACkiC,CAAW,CAAC,EAEhB9qB,6BAAoB1wF,EAAK,KAAO,CAC9B,MAAM,kBAAkB,CAAE,SAAAwS,GAAW,8BAA+B,KAAAoT,GAAO,YAAe,GAAI,CAC5F,MAAM+L,GAAUm1C,EAAW,QACrBvuD,GAASoZ,IAAS,UAAU,WAClC,GAAI,CAACpZ,GACH,MAAM,IAAI,MAAM,+BAA+B,EAEjDoZ,GAAQ,gBAAgB,CAAE,UAAW,GAAM,EAC3C,MAAM5f,GAAcwoG,GAAWhiG,GAAQghG,GAAsB5nF,GAASghD,EAAe,OAAO,CAAC,EAC7F,GAAI/sD,KAAS,YACX,OAAO,MAAMlU,GAAyBK,EAAW,EAEnD,MAAMZ,GAAO,MAAMY,GACnB,OAAOiB,GAAoB7B,GAAM,CAAE,SAAAqB,GAAU,CAC/C,EACA,gBAAiB,CACf,OAAOsnG,GAAoBhzC,EAAW,QAAS8zC,EAAkB,OAAO,CAC1E,EACA,eAAe/1B,GAAiB,CAC9B,OAAOF,GAAyB7d,EAAW,QAAS+d,GAAiB+1B,EAAkB,OAAO,CAChG,EACA,gBAAgBpqB,GAAQ,CACtB,OAAOpwB,GAAsBowB,EAAM,CACrC,IACE,CAACpwB,EAAqB,CAAC,EAE3BqC,YAAU,IAAM,CACd,MAAM9wC,GAAUm1C,EAAW,QACtBn1C,IAAS,WAGdA,GAAQ,2BAA6B,EACrCA,GAAQ,oBAAsB,CAAC,CAAC+tC,EAChC/tC,GAAQ,SAAS,WAAa,CAAC,CAAC+tC,EAChC/tC,GAAQ,SAAS,gBAAkBq/C,GACnCwpC,GAA4B7oF,GAASg6E,EAAOxrE,CAAa,EACzDs6E,GAA+B9oF,GAASg6E,CAAK,EACzCjsC,EACF/tC,GAAQ,qBAERA,GAAQ,wBAEVA,GAAQ,kBACV,EAAG,CAAC+tC,CAAW,CAAC,EAEhB+C,YAAU,IAAM,CACd,MAAM9wC,GAAUm1C,EAAW,QAC3B,GAAI,CAACn1C,IAAW,CAACg6E,EACf,OAEFh6E,GAAQ,oBAAsBopF,EAAuB,QACrD,IAAIkB,GAAgB,GACpB,GAAI,CACFA,GAAgB/E,GAA0BvL,CAAK,CACjD,OAASr6F,GAAO,CACd,MAAMC,GAAUD,cAAiB,MAAQA,GAAM,QAAU,OAAOA,EAAK,EACrE2pG,EAAe1pG,EAAO,EACtB64E,IAAsB,CACpB,SAAU,QACV,QAAS,GACT,MAAO,6BACP,QAAA74E,EAAA,CACD,EACD,MACF,CACA,GAAIogB,GAAQ,aAAeA,GAAQ,YAAY,YAAcsqF,GAAe,CAC1EtqF,GAAQ,MAAQg6E,EAChB4L,GAA+BroF,GAAOyC,GAAQ,YAAY,SAAUg6E,CAAK,EACzEh6E,GAAQ,wBACR6oF,GAA4B7oF,GAASg6E,EAAOxrE,CAAa,EACzDs6E,GAA+B9oF,GAASg6E,CAAK,EAC7CkQ,GAAsBlQ,CAAK,EAC3BoQ,GAAkBpQ,CAAK,EACvBh6E,GAAQ,kBACR,MACF,CAEA,IAAIuqF,GAAkB,KACtB,GAAI,CACFA,GAAkBlD,GAAiC9pF,GAAOy8E,CAAK,CACjE,OAASr6F,GAAO,CACd,MAAMC,GAAUD,cAAiB,MAAQA,GAAM,QAAU,OAAOA,EAAK,EACrE2pG,EAAe1pG,EAAO,EACtB64E,IAAsB,CACpB,SAAU,QACV,QAAS,GACT,MAAO,6BACP,QAAA74E,EAAA,CACD,EACD,MACF,CAEA,MAAM4qG,GAAsBxqF,GAAQ,YACpCA,GAAQ,YAAcuqF,GACtBvqF,GAAQ,MAAQg6E,EAChBwO,GAAyBxoF,EAAO,EAChCspF,EAAe,EAAE,EACjB7wB,IAAsB,IAAI,EAC1BowB,GAA4B7oF,GAASg6E,EAAOxrE,CAAa,EACzDs6E,GAA+B9oF,GAASg6E,CAAK,EAC7Ch6E,GAAQ,wBACRkqF,GAAsBlQ,CAAK,EAC3BoQ,GAAkBpQ,CAAK,EACvBh6E,GAAQ,kBACRwqF,IAAqB,WACvB,EAAG,CAACN,GAAuBlQ,EAAOkP,EAA4BzwB,EAAqB2xB,GAAmB57E,CAAa,CAAC,EAEpHsiC,YAAU,IAAM,CACd+3C,GAA4B1zC,EAAW,QAAS6kC,EAAOxrE,CAAa,EACpE2mC,EAAW,SAAS,iBACtB,EAAG,CAAC6kC,EAAOxrE,CAAa,CAAC,EAEzBsiC,YAAU,IAAM,CACdq4C,EAAoB,QAAUD,EAC9B,MAAMlpF,GAAUm1C,EAAW,QACtBn1C,KAGLA,GAAQ,iBAAmBkpF,EAC3BlpF,GAAQ,oBAAsBopF,EAAuB,QACrDP,GAA4B7oF,GAASg6E,EAAOxrE,CAAa,EACzDs6E,GAA+B9oF,GAASg6E,CAAK,EAC7Ch6E,GAAQ,mBAAmB8uE,GACzBoa,EACA,CAAE,YAAappC,EAAe,QAAQ,CACvC,EACD9/C,GAAQ,kBACV,EAAG,CAACg6E,EAAOkP,EAA4B16E,CAAa,CAAC,EAErDsiC,YAAU,IAAM,CACd,GAAI,CAACsE,EAAS,SAAW,CAAC4kC,EACxB,OAGF,IAAIv2C,GAAW,GACXgnD,GAAU,EACVC,GAAc,EAClB,MAAMC,GAAQv1C,EAAS,QACjB9K,GAAW,IAAIsgD,GAAoB,CACvC,UAAW,GACX,MAAO,GACP,sBAAuB,GACxB,EACDtgD,GAAS,cAAc,KAAK,IAC1B,OAAO,kBAAoB,EAC3B6+C,EAAoB,QAAQ,gBAC7B,EACD7+C,GAAS,QAAQqgD,GAAM,aAAe,IAAKA,GAAM,cAAgB,IAAK,EAAK,EAC3ErgD,GAAS,WAAW,UAAY,2BAChCqgD,GAAM,UAAY,GAClBA,GAAM,YAAYrgD,GAAS,UAAU,EAErC,IAAIm+C,GAAc,KACdoC,GAAe,KACf5zE,GAAS,KACTQ,GAAW,KACf,MAAMkrC,GAAmC,IAAM,KAAK,KAAK,OAAO,kBAAoB,GAAK,EAAG,CAAC,EACvFC,GAA+BD,GAAA,EAC/BI,GAAqBC,IACzBA,IAAiBL,KAAqCC,IAElDwB,GAAqB,CACzB,gBAAiB,IACjB,gBAAiB,CACf,KAAM,EACN,MAAO,EACP,GAAI,EACJ,KAAM,GAER,cAAe,GAEjB,GAAI,CACFqkC,GAAcpB,GAAiC9pF,GAAOy8E,CAAK,EAC3D6Q,GAAe,IAAIC,GAAyB,GAAI,EAAG,EAAG,GAAI,EAAG,CAAC,EAC9D7zE,GAAS,IAAI8zE,GAAwB5L,GAAiB,EAAG,IAAM,GAAI,EACnEloE,GAAO,GAAG,IAAI,GAAG0wC,EAAQ,EACzBlwC,GAAW,IAAI+qC,GAAcvrC,GAAQqzB,GAAS,UAAU,EACxD7yB,GAAS,cAAgB,GACzBA,GAAS,cAAgB2pC,GACzB3pC,GAAS,YAAc,EACvBA,GAAS,SAAW,KACpBA,GAAS,UAAY4pC,GACjB,iBAAkB5pC,KACpBA,GAAS,aAAe,IAE1B6xE,EAAe,EAAE,EACjB7wB,IAAsB,IAAI,CAC5B,OAAS94E,GAAO,CACd,MAAMC,GAAUD,cAAiB,MAAQA,GAAM,QAAU,OAAOA,EAAK,EACrE2pG,EAAe1pG,EAAO,EACtB64E,IAAsB,CACpB,SAAU,QACV,QAAS,GACT,MAAO,6BACP,QAAA74E,EAAA,CACD,CACH,CAEA,MAAMogB,GAAU,CACd,SAAAsqC,GACA,YAAAm+C,GACA,aAAAoC,GACA,OAAA5zE,GACA,SAAAQ,GACA,iBAAkB,KAClB,aAAc,GACd,2BAA4B,EAC5B,mBAAA2sC,GACA,iBAAkB+kC,EAAoB,QACtC,oBAAqBC,EAAuB,QAC5C,oBAAqB,CAAC,CAACr7C,EACvB,MAAAisC,EACA,iBAAkB,GAClB,cAAAj1B,GACA,iBAAAO,GACA,oBAAAC,GACA,iBAAAylC,GACA,oBAAAC,GACA,sBAAA/qC,CAAA,EAEF/K,EAAW,QAAUn1C,GAErB,SAASgrF,GAAiBl9B,GAAK,CAC7BxjB,GAAS,cAAc,KAAK,IAAI,OAAO,kBAAoB,EAAGwjB,EAAG,CAAC,EAClExjB,GAAS,QAAQqgD,GAAM,aAAe,IAAKA,GAAM,cAAgB,IAAK,EAAK,CAC7E,CAEA,SAASM,IAAsB,CAC7B,GAAI,CAACjrF,GAAQ,QAAU,CAACA,GAAQ,SAC9B,OAEF,MAAMgqF,GAAchqF,GAAQ,OAASg6E,EAC/BxqB,GAAUN,GAAwBlvD,GAASghD,EAAe,OAAO,EACvEhhD,GAAQ,OAAO,OAASwvD,GAAQ,MAAQA,GAAQ,OAChDxvD,GAAQ,OAAO,KAAO,KAAK,IAAIgqF,GAAY,OAAS,KAAM,GAAI,EAC9DhqF,GAAQ,OAAO,IAAM,KAAK,IAAIgqF,GAAY,OAAS,IAAK,GAAI,EAC5DhqF,GAAQ,OAAO,yBACf+gD,GAAuB/gD,GAASghD,EAAe,QAAS,CAAE,iBAAkB,GAAO,EACnFhhD,GAAQ,SAAS,YAAc,KAAK,IAAIgqF,GAAY,OAAS,KAAM,GAAI,EACvEhqF,GAAQ,SAAS,YAAc,KAAK,IAAIgqF,GAAY,OAAS,IAAK,EAAE,CACtE,CAEA,SAASjlC,GAAc7vE,GAAU,GAAI,CACnC,GAAI,CAAAuuD,GAGJ,IAAIvuD,GAAQ,UAAW,CACrB8vE,GAAY,YAAY,KAAK,EAC7B,MACF,CACIhlD,GAAQ,eAGZA,GAAQ,aAAe,GACvByqF,GAAU,OAAO,sBAAsBzlC,EAAW,GACpD,CAEA,SAASM,IAAmB,CACtBolC,KACF,OAAO,aAAaA,EAAW,EAC/BA,GAAc,GAEhBM,GAAiBlc,GACfqa,EAAoB,QACpB,CAAE,YAAa,GAAK,CACrB,EACDpkC,GAAA,CACF,CAEA,SAASQ,IAAsB,CACzBmlC,IACF,OAAO,aAAaA,EAAW,EAEjCA,GAAc,OAAO,WAAW,IAAM,CACpCA,GAAc,EACdjzE,GAAS,cAAgB,GACzBA,GAAS,cAAgB2pC,GACzB3pC,GAAS,UAAY4pC,GACrB2pC,GAAiBlc,GACfqa,EAAoB,QACpB,CAAE,YAAarpC,EAAe,QAAQ,CACvC,EACDiF,GAAA,CACF,EAAGtD,EAAyB,CAC9B,CAEA,SAASuD,GAAYxF,GAAW,CAC9B,GAAI/b,GACF,OAEFzjC,GAAQ,aAAe,GACvB,MAAMkrF,GAAmB7qC,GAAqBrgD,GAASw/C,EAAS,EAC1D0F,GAAqB5E,GAAkBtgD,GAASw/C,EAAS,EACzD2rC,GAAiBzrC,GAAoBjoC,GAAU+nC,GAAWx/C,EAAO,EAIvE,GAHIklD,IACFhF,EAAA,EAEElgD,GAAQ,aAAeA,GAAQ,mBAAqB,IAASA,GAAQ,QAAUA,GAAQ,aAAc,CACvG,MAAMpZ,GAAS0jD,GAAS,WACxB88C,GACEpnF,GAAQ,YAAY,SACpBA,GAAQ,OACRpZ,GAAO,OAASA,GAAO,aAAe,EACtCA,GAAO,QAAUA,GAAO,cAAgB,GAE1C0jD,GAAS,OAAOtqC,GAAQ,YAAY,MAAOA,GAAQ,YAAY,CACjE,CACA,GAAI,CAACA,GAAQ,oBAAqB,CAChC,MAAMqlD,GAAiB9E,GAAyBvgD,EAAO,EACvDmgD,EAAwB19E,IAAYA,KAAY4iF,GAAiB5iF,GAAU4iF,EAAc,EAIzF,MAAMoY,GAAkBjU,GAAyBxpD,EAAO,EACxDs6D,EAAyB73F,IACvBslH,GAA2BtlH,GAASg7F,EAAe,EAAIh7F,GAAUg7F,EAClE,CACH,EACIytB,IAAoBhmC,IAAsBimC,IAAkB1zE,IAAU,aACxEstC,GAAA,CAEJ,CAEA,SAASS,IAAW,CACd/hB,KAGJunD,GAAiBlc,GACfqa,EAAoB,QACpB,CAAE,YAAarpC,EAAe,QAAQ,CACvC,EACDmrC,GAAA,EACI1B,EAAiB,QAAQ,WAAa,IACxCU,EAAe,UAAU,SAAU,CAAE,QAAS,GAAO,EAEvDllC,GAAA,EACF,CAEA,MAAMgB,GAAsB,IAAM,CAChC/lD,GAAQ,iBAAmB,KAC3B4pF,GAAuB,QAAQ,EAAK,EACpCtkC,GAAA,CACF,EACMU,GAAuB,IAAM,CACjC9F,EAAA,EACA6E,GAAA,CACF,EACMkB,GAAoB,IAAM,CAC9BV,GAAA,CACF,EACMa,GAAe3zE,IAAU,CAC7ButB,GAAQ,iBAAmB,KAC3B4pF,GAAuB,QAAQ,EAAK,EACpCnyE,GAAS,cAAgB,GACzBA,GAAS,UAAYsrC,GACnBrC,GAAyBjuE,EAAK,EAAIivE,GAA4BE,EAAA,EAEhE0D,GAAA,CACF,EACM9yE,GAAiBC,IAAU,CAC/B,GACEqtE,EAAe,SACfrtE,GAAM,kBACNA,GAAM,SACNA,GAAM,SACNA,GAAM,QACN0rE,GAAiB1rE,GAAM,MAAM,EAE7B,OAGF,MAAM6zE,GAAU3F,GAAwBluE,EAAK,EAC7C,GAAK6zE,GAGL,IAAIlC,GAAmB,YAAY,IAAIkC,GAAQ,KAAK,EAAG,CACrD7zE,GAAM,iBACN,MACF,CAEA2xE,GAAmB,YAAY,IAAIkC,GAAQ,KAAK,EAChDlC,GAAmB,gBAAgBkC,GAAQ,SAAS,GAAK,EACzDlC,GAAmB,cAAgB,EACnCpkD,GAAQ,iBAAmB,KAC3B4pF,GAAuB,QAAQ,EAAK,EACpCtkC,GAAA,EACAzE,GACE7gD,IACCsmD,GAAQ,YAAc,QAAU,EAAIA,GAAQ,YAAc,OAAS,GAAK,GAAKzE,IAC7EyE,GAAQ,YAAc,OAAS,EAAIA,GAAQ,YAAc,KAAO,GAAK,GAAKzE,EAAA,EAE7E3B,EAAA,EACA6E,GAAA,EACAtyE,GAAM,iBACR,EACM8zE,GAAe9zE,IAAU,CAC7B,MAAM6zE,GAAU3F,GAAwBluE,EAAK,EAI7C,GAHI,CAAC6zE,IAGD,CAAClC,GAAmB,YAAY,OAAOkC,GAAQ,KAAK,EACtD,OAGFlC,GAAmB,gBAAgBkC,GAAQ,SAAS,EAAI,KAAK,IAC3D,EACAlC,GAAmB,gBAAgBkC,GAAQ,SAAS,EAAI,GAE1D,MAAME,GAAO5F,GAAqBwD,EAAkB,EAChD,CAACoC,GAAK,SAAW,CAACA,GAAK,QACzBpC,GAAmB,cAAgB,EACnCmB,GAAA,GAEF9yE,GAAM,gBACR,EACMg0E,GAAqB,IAAM,CAC1BrC,GAAmB,YAAY,OAGpC3D,GAAwB2D,EAAkB,EAC1CmB,GAAA,EACF,EACMmB,GAAyB,IAAM,CAC/B,SAAS,kBAAoB,WAC/BD,GAAA,CAEJ,EAEMd,GAAiB,OAAO,gBAAmB,WAC7C,IAAI,eAAeH,EAAQ,EAC3B,KACJG,IAAgB,QAAQglC,EAAK,EAC7B,OAAO,iBAAiB,SAAUnlC,EAAQ,EAC1C/tC,IAAU,iBAAiB,QAASsuC,EAAmB,EACvDtuC,IAAU,iBAAiB,SAAUuuC,EAAoB,EACzDvuC,IAAU,iBAAiB,MAAOwuC,EAAiB,EACnD3b,GAAS,WAAW,iBAAiB,QAAS8b,GAAa,CAAE,QAAS,GAAM,QAAS,GAAM,EAC3F,OAAO,iBAAiB,UAAW5zE,EAAa,EAChD,OAAO,iBAAiB,QAAS+zE,EAAW,EAC5C,OAAO,iBAAiB,OAAQE,EAAkB,EAClD,SAAS,iBAAiB,mBAAoBC,EAAsB,EAEpEmiC,GAA4B7oF,GAASg6E,EAAOxrE,CAAa,EACzDs6E,GAA+B9oF,GAASg6E,CAAK,EAC7CiR,GAAA,EACAzC,GAAyBxoF,EAAO,EAChC,MAAMorF,GAAqBxzB,GAAgB,SAAW3E,EACtD,OAAID,GAAyBhzD,GAASorF,GAAoB1oG,CAAQ,GAChEknG,GAAuB,QAAQ,EAAK,EACpCL,EAAiB,QAAQ,WAAab,GAAkB1O,CAAK,GAE7DiQ,EAAe,UAAU,QAAS,CAAE,QAAS,GAAO,MAAO,GAAM,EAEnEI,GAAqB,UAAUrQ,CAAK,EAChCviE,KACFzX,GAAQ,2BAA6B,EACrCyX,GAAS,WAAa,CAAC,CAACs2B,EACxBt2B,GAAS,gBAAkB4nC,IAE7B0F,GAAA,EAEO,IAAM,CACXthB,GAAW,GACX,OAAO,qBAAqBgnD,EAAO,EAC/BC,IACF,OAAO,aAAaA,EAAW,EAEjC/kC,IAAgB,aAChB,OAAO,oBAAoB,SAAUH,EAAQ,EAC7C/tC,IAAU,oBAAoB,QAASsuC,EAAmB,EAC1DtuC,IAAU,oBAAoB,SAAUuuC,EAAoB,EAC5DvuC,IAAU,oBAAoB,MAAOwuC,EAAiB,EACtD3b,GAAS,WAAW,oBAAoB,QAAS8b,GAAa,CAAE,QAAS,GAAM,QAAS,GAAM,EAC9F,OAAO,oBAAoB,UAAW5zE,EAAa,EACnD,OAAO,oBAAoB,QAAS+zE,EAAW,EAC/C,OAAO,oBAAoB,OAAQE,EAAkB,EACrD,SAAS,oBAAoB,mBAAoBC,EAAsB,EACvEjvC,IAAU,YACVzX,GAAQ,aAAa,YACrBsqC,GAAS,UACTA,GAAS,WAAW,SAChB6K,EAAW,UAAYn1C,KACzBm1C,EAAW,QAAU,KAEzB,CACF,EAAG,CACD+K,EACAx9D,EACA+1E,EACAxF,EACA2E,EACA,EAAQoiB,CAAK,CACd,EAGCxqG,OAAC,OAAI,UAAU,sDACb,UAAAhB,MAAC,OAAI,IAAK4mE,EAAU,UAAU,mBAAmB,EAChD,CAACrH,GAAe,CAACC,GAAagsC,GAASwP,EACtCh7G,MAAC,UACC,KAAK,SACL,aAAW,aACX,MAAM,aACN,UAAW,GAAGk5G,EAAiC,iBAC/C,MAAO,CACL,MAAO,QAAQjY,GAAaxhC,EAAsB,EAAE,CAAC,aACrD,OAAQ,uBAEV,QAASS,GAET,eAAC28C,GAAA,CAAY,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,IAExE,KACJ78G,MAACq/D,GAAA,CACC,cAAa,GACb,YAAAE,EACA,UAAAC,EACA,SAAUgsC,EACV,qBAAA/rC,EACA,sBAAsB,OACtB,QAAS,GACT,oBAAAE,EACA,eAAgBua,GAChB,qBAAAra,EACA,YAAa7/B,EACb,sBAAAigC,GACA,yBAAAC,EAAA,GAEDV,EACCx/D,MAAC,OAAI,UAAU,wEACb,SAAAA,MAAC,OAAI,UAAU,0GAA0G,gCAEzH,EACF,EACE,KACH66G,EACC76G,MAAC,OAAI,UAAU,iFACb,SAAAA,MAAC,OAAI,UAAU,0GACZ,SAAA66G,CAAA,CACH,EACF,EACE,MACN,CAEJ,CAAC,ECjzCKiC,GAAgB1uH,GACpB,uLACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,+BACT,YACE,0FACF,QACE,uEACJ,EAEF,gBAAiB,CACf,QAAS,UACX,CAEJ,EAEA,SAAS2uH,GAAM,CACb,UAAAjrH,EACA,QAAAlD,EACA,GAAGL,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,QACV,KAAK,QACL,UAAWV,EAAGw9G,GAAc,CAAE,QAAAluH,CAAA,CAAS,EAAGkD,CAAS,EAClD,GAAGvD,CAAA,EAEV,CAEA,SAASyuH,GAAW,CAClB,UAAAlrH,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,cACV,UAAWV,EAAG,8DAA+DxN,CAAS,EACrF,GAAGvD,CAAA,EAEV,CAEA,SAAS0uH,GAAiB,CACxB,UAAAnrH,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,oBACV,UAAWV,EAAG,iGAAkGxN,CAAS,EACxH,GAAGvD,CAAA,EAEV,CCnDA,SAAS2uH,GAAa,CACpB,GAAG3uH,CACL,EAAG,CACD,aAAQ4uH,GAAA,CAA2B,YAAU,gBAAiB,GAAG5uH,EAAO,CAC1E,CAEA,MAAM6uH,GAAsB19G,aAAiB,SAA6B,CACxE,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAOG,MAACq9G,GAAA,CAA8B,IAAAx9G,EAAU,YAAU,wBAAyB,GAAGtR,EAAO,CAC/F,CAAC,EAEK+uH,GAAsB59G,aAAiB,SAA6B,CACxE,UAAA5N,EACA,WAAAmQ,EAAa,EACb,GAAG1T,CACL,EAAGsR,EAAK,CACN,OACEG,MAACu9G,GAAA,CACC,SAAAv9G,MAACw9G,GAAA,CACC,IAAA39G,EACA,YAAU,wBACV,WAAAoC,EACA,UAAW3C,EACT,sdACAxN,CAAA,EAED,GAAGvD,CAAA,GAER,CAEJ,CAAC,EAED,SAASkvH,GAAiB,CACxB,UAAA3rH,EACA,MAAA0uF,EACA,QAAA5xF,EAAU,UACV,GAAGL,CACL,EAAG,CACD,OACEyR,MAAC09G,GAAA,CACC,YAAU,qBACV,aAAYl9B,EACZ,eAAc5xF,EACd,UAAW0Q,EACT,6YACAxN,CAAA,EAED,GAAGvD,CAAA,EAGV,CA0DA,SAASovH,GAAkB,CACzB,UAAA7rH,EACA,MAAA0uF,EACA,GAAGjyF,CACL,EAAG,CACD,OACEyR,MAAC49G,GAAA,CACC,YAAU,sBACV,aAAYp9B,EACZ,UAAWlhF,EAAG,oDAAqDxN,CAAS,EAC3E,GAAGvD,CAAA,EAGV,CAEA,SAASsvH,GAAsB,CAC7B,UAAA/rH,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC89G,GAAA,CACC,YAAU,0BACV,UAAWx+G,EAAG,4BAA6BxN,CAAS,EACnD,GAAGvD,CAAA,EAGV,CAeA,SAASwvH,GAAgB,CACvB,GAAGxvH,CACL,EAAG,CACD,aAAQyvH,GAAA,CAA0B,YAAU,oBAAqB,GAAGzvH,EAAO,CAC7E,CAEA,SAAS0vH,GAAuB,CAC9B,UAAAnsH,EACA,MAAA0uF,EACA,SAAA3/E,EACA,YAAAq9G,EAAc,GACd,GAAG3vH,CACL,EAAG,CACD,OACEyS,OAACm9G,GAAA,CACC,YAAU,4BACV,aAAY39B,EACZ,UAAWlhF,EACT,oLACAxN,CAAA,EAED,GAAGvD,EAEH,UAAAsS,EACAq9G,EAAcl+G,MAACo+G,GAAA,CAAa,UAAU,iBAAiB,EAAK,OAGnE,CAEA,SAASC,GAAuB,CAC9B,UAAAvsH,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACu9G,GAAA,CACC,SAAAv9G,MAACs+G,GAAA,CACC,YAAU,4BACV,UAAWh/G,EACT,uXACAxN,CAAA,EAED,GAAGvD,CAAA,GAER,CAEJ,CCrMA,MAAMgwH,GAAiBnwH,GACrB,gjBACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,iBACT,QACE,qIAEJ,KAAM,CACJ,QAAS,mBACT,GAAI,qBACJ,GAAI,uBACN,EAEF,gBAAiB,CACf,QAAS,UACT,KAAM,UACR,CAEJ,ECpBMowH,GAAqB/7G,gBAAoB,CAC7C,KAAM,UACN,QAAS,SACX,CAAC,EAED,SAASg8G,GAAY,CACnB,UAAA3sH,EACA,QAAAlD,EACA,KAAA+Q,EACA,SAAAkB,EACA,GAAGtS,CACL,EAAG,CACD,OACEyR,MAAC0+G,GAAA,CACC,YAAU,eACV,eAAc9vH,EACd,YAAW+Q,EACX,UAAWL,EACT,yFACAxN,CAAA,EAED,GAAGvD,EAEJ,SAAAyR,MAACw+G,GAAmB,SAAnB,CAA4B,MAAO,CAAE,QAAA5vH,EAAS,KAAA+Q,CAAA,EAC5C,SAAAkB,CAAA,CACH,GAGN,CAEA,SAAS89G,GAAgB,CACvB,UAAA7sH,EACA,QAAAlD,EACA,KAAA+Q,EACA,GAAGpR,CACL,EAAG,CACD,MAAMoU,EAAUC,aAAiB47G,EAAkB,EAEnD,OACEx+G,MAAC4+G,GAAA,CACC,YAAU,oBACV,eAAcj8G,EAAQ,SAAW/T,EACjC,YAAW+T,EAAQ,MAAQhD,EAC3B,UAAWL,EACTi/G,GAAe,CACb,QAAS57G,EAAQ,SAAW/T,EAC5B,KAAM+T,EAAQ,MAAQhD,CAAA,CACvB,EACD,8LACA7N,CAAA,EAED,GAAGvD,CAAA,EAEV,CC3DA,SAASswH,GAA6B,CAAE,SAAAh+G,GAAY,CAClD,OAAOb,MAAC,QAAK,UAAU,mBAAoB,SAAAa,CAAA,CAAS,CACtD,CAEA,SAAwBi+G,GAAyB,CAC/C,KAAAC,EACA,UAAAC,EACA,cAAAC,EAAgB,UAChB,SAAA1uE,EAAW,GACX,SAAA2uE,EAAW,GACX,OAAA5uE,EAAS,GACT,YAAA6uE,EAAc,EACd,sBAAAC,EAAwB,GACxB,eAAAC,EAAiB,GACjB,YAAAC,EAAc,GACd,gBAAAC,EAAkB,GAClB,mBAAAC,EAAqB,GACrB,uBAAAC,EAAyB,GACzB,cAAAC,EAAgB,GAChB,kBAAAC,EAAoB,GACpB,gBAAAC,EAAkB,GAClB,aAAAC,EAAe,WACf,eAAAC,EAAiB,GACjB,mBAAAC,EAAqB,GACrB,kBAAAC,EAAoB,GACpB,kBAAAC,EAAoB,GACpB,kBAAAC,EAAoB,GACpB,YAAAC,EAAc,GACd,mBAAAC,EAAqB,GACrB,uBAAAC,EAAyB,GACzB,yBAAAC,EAA2B,GAC3B,kBAAAC,EAAoB,GACpB,oBAAAC,EAAsB,GACtB,gBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,UAAAC,EACA,mBAAAC,EACA,YAAAC,GACA,YAAAC,EACA,iBAAAC,EACA,mBAAAC,GACA,YAAAC,GACA,cAAAC,EACF,EAAG,CACD,MAAMC,GAAc/wE,EAAW,WAAa,SACtCgxE,GAAerC,EACjB,eACA,UACEsC,GAAkBlxE,EACpB,SACA,OAEJ,OACEtvC,OAAAsgE,WAAA,CACE,UAAAthE,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUG,EACV,SAAUqB,EAEV,SAAAzgH,MAAC6+G,IAA6B,0BAAc,UAE7CG,EAAA,EAAU,EACXh/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUI,EACV,SAAAqB,EAEA,SAAA1gH,MAAC6+G,IAA8B,SAAAyC,EAAA,CAAY,IAE5ChC,EACCt/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUM,EACV,SAAUoB,EAEV,SAAA3gH,MAAC6+G,IAA8B,SAAA0C,EAAA,CAAa,IAE5C,KACH/B,EACCx/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUQ,EACV,SAAUmB,EAEV,SAAA5gH,MAAC6+G,IAA6B,6BAAiB,IAE/C,KACHa,GAAiBS,GAAeL,EAAiB9/G,MAACg/G,IAAU,EAAK,KACjEU,EACC1/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUU,EACV,SAAUkB,EAEV,SAAA7gH,MAAC6+G,IAA6B,uBAAW,IAEzC,KACHsB,EACCngH,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUW,EACV,SAAUkB,EAEV,SAAA9gH,MAAC6+G,IAA8B,SAAAgB,CAAA,CAAa,IAE5C,KACHC,EACC9/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUc,EACV,SAAUgB,EAEV,SAAA/gH,MAAC6+G,IAA8B,SAAA2C,EAAA,CAAgB,IAE/C,KACHxB,EACCh/G,OAAAsgE,WAAA,CACE,UAAAthE,MAACg/G,EAAA,EAAU,EACXh/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUgB,EACV,SAAUe,GAEV,SAAAhhH,MAAC6+G,IAA6B,sBAAU,IAE1C7+G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUiB,EACV,SAAUe,EAEV,SAAAjhH,MAAC6+G,IAA6B,uBAAW,GAC3C,EACF,EACE,KACHuB,EACCp/G,OAAAsgE,WAAA,CACE,UAAAthE,MAACg/G,EAAA,EAAU,EACXh/G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUoB,EACV,SAAUa,EAEV,SAAAlhH,MAAC6+G,IAA6B,kBAAM,IAEtC7+G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUqB,EACV,SAAUa,GAEV,SAAAnhH,MAAC6+G,IAA6B,oBAAQ,IAExC7+G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUsB,EACV,SAAUa,GAEV,SAAAphH,MAAC6+G,IAA6B,sBAAU,IAE1C7+G,MAAC++G,EAAA,CACC,UAAWE,EACX,SAAUuB,EACV,SAAUa,GAEV,SAAArhH,MAAC6+G,IAA6B,wBAAY,GAC5C,EACF,EACE,MACN,CAEJ,CC1KA,MAAM4C,GAAyB,OAAO,OAAO,EAAE,EACzCC,OAAgB,IAEtB,IAAI5tG,GAAW,CACb,WAAY,EACZ,gBAAiB2tG,EACnB,EAEA,SAASE,IAAS,CAChB,UAAWC,KAAYF,GACrBE,EAAA,CAEJ,CAEA,SAASC,GAAUD,EAAU,CAC3BF,UAAU,IAAIE,CAAQ,EACf,IAAM,CACXF,GAAU,OAAOE,CAAQ,CAC3B,CACF,CAEA,SAASE,GAAqB5zH,EAAO,CACnC,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,GAAKA,EAAe,EAAIA,EAAe,CAC5E,CAEA,SAASq5G,GAA0Bp7F,EAAQ,CACzC,OAAOA,GAAU,OAAOA,GAAW,SAAWA,EAAS86F,EACzD,CAEA,SAASO,GAAgBC,EAAc,CACrC,MAAM7tH,EAAO,CACX,WAAY0tH,GAAqBG,EAAa,UAAU,EACxD,gBAAiBF,GAA0BE,EAAa,eAAe,GAGvE7tH,EAAK,aAAe0f,GAAS,YAC7B1f,EAAK,kBAAoB0f,GAAS,kBAIpCA,GAAW1f,EACXutH,GAAA,EACF,CAEA,SAASO,IAAc,CACrB,OAAOpuG,EACT,CAEA,SAASquG,IAAqB,CAC5B,OAAOruG,GAAS,UAClB,CAEO,SAASsuG,GAAsB,CAAE,WAAAt+D,EAAY,gBAAA6rD,GAAmB,CACrEqS,GAAgB,CACd,WAAAl+D,EACA,gBAAiB6rD,IAAoB,OAAY77F,GAAS,gBAAkB67F,CAAA,CAC7E,CACH,CAEO,SAAS0S,GAAwBv+D,EAAY,CAClDk+D,GAAgB,CACd,WAAAl+D,EACA,gBAAiBhwC,GAAS,gBAC3B,CACH,CAEO,SAASwuG,GAAwB,CAAE,WAAAx+D,EAAa,EAAG,gBAAA6rD,EAAkB8R,EAAA,EAA2B,GAAI,CACzGO,GAAgB,CACd,WAAAl+D,EACA,gBAAA6rD,CAAA,CACD,CACH,CAEO,SAAS4S,IAA0B,CACxC,OAAOzuG,GAAS,UAClB,CAEO,SAAS0uG,IAAkC,CAChD,OAAO1uG,GAAS,eAClB,CAEO,SAAS2uG,IAA2B,CACzC,OAAOC,uBAAqBb,GAAWK,GAAaA,EAAW,CACjE,CAEO,SAASS,IAA0B,CACxC,OAAOD,uBAAqBb,GAAWM,GAAoBA,EAAkB,CAC/E,CCxFO,SAASS,GAA4B,CAC1C,QAAAC,EAAU,GACV,gBAAAC,EAAkB,GAClB,yBAAAC,EAA2B,GAC3B,6BAAAC,EAA+B,GAC/B,0BAAAC,EAA4B,GAC5B,sBAAAC,EAAwB,GACxB,WAAAC,EAAa,GACb,sBAAAC,EAAwB,GACxB,eAAA3zF,EAAiB,EACnB,EAAI,GAAI,CAIN,OAHIszF,GAA4BC,GAAgCC,GAG5DJ,GAAWC,EACN1tG,GAAiB,KAGxB+tG,IAAe,YACf,CAACD,IAECE,GACA,CAAC,OAAO3zF,GAAkB,EAAE,EAAE,QAGzBra,GAAiB,SAEnBA,GAAiB,IAC1B,CCCA,MAAMiuG,GAAa,OAAO,OAAO,EAAE,EAC7BC,GAAsB,OAAO,OAAO,CACxC,MAAO,CACL,MAAO,QACP,gBAAiB,wBACjB,cAAe,6EACf,eAAgB,sCAElB,QAAS,CACP,MAAO,UACP,gBAAiB,sBACjB,cAAe,yEACf,eAAgB,qCAEpB,CAAC,EAED,SAASC,GAAgBr1H,EAAO,CAC9B,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,GAAKA,EAAe,EAAIA,EAAe,CAC5E,CAEA,SAAS86G,GAA0BC,EAAO,CACxC,OAAOA,GAAO,WAAa,UACvBH,GAAoB,QACpBA,GAAoB,KAC1B,CAEA,SAASI,GAA6BC,EAAMp6B,EAAqB,CAC/D,GAAI,CAACo6B,EACH,OAAO,KAET,MAAM5W,EAAS,EACTjS,EAAgB,OAAO,OAAW,IAAc,OAAO,WAAa,EACpE/Y,EAAiB,OAAO,OAAW,IAAc,OAAO,YAAc,EACtE+zB,EAAOyN,GAAgBh6B,GAAqB,IAAI,EAAIwjB,EACpDiJ,EAAOuN,GAAgBh6B,GAAqB,GAAG,EAAIwjB,EACnDgJ,EAAOjb,EAAgB,EACzB,KAAK,IAAIgb,EAAMhb,EAAgByoB,GAAgBh6B,GAAqB,KAAK,EAAIwjB,CAAM,EACnF,OAAO4W,EAAK,CAAC,GAAK7N,EAChBG,EAAOl0B,EAAiB,EAC1B,KAAK,IAAIi0B,EAAMj0B,EAAiBwhC,GAAgBh6B,GAAqB,MAAM,EAAIwjB,CAAM,EACrF,OAAO4W,EAAK,CAAC,GAAK3N,EAChB35F,EAAI,KAAK,IAAI,KAAK,IAAI,OAAOsnG,EAAK,CAAC,GAAK7N,EAAMA,CAAI,EAAGC,CAAI,EACzDz5F,EAAI,KAAK,IAAI,KAAK,IAAI,OAAOqnG,EAAK,CAAC,GAAK3N,EAAMA,CAAI,EAAGC,CAAI,EAC/D,MAAO,CACL,SAAU,QACV,KAAM,GAAG55F,CAAC,KACV,IAAK,GAAGC,CAAC,KACT,MAAO,MACP,OAAQ,MAEZ,CAEA,SAASsnG,GAAmB,CAC1B,MAAA11H,EACA,0BAAA21H,EAA4B,GAC5B,SAAAnzH,CACF,EAAG,CACD,MAAMqb,EAAkB7d,IAAU,MAAQ21H,EAA4B,KAAO,KAE7E,OACE7jH,MAAC,OAAI,UAAU,4EACb,SAAAgB,OAACy9G,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,MAAO1yG,EACP,cAAgB6mG,GAAc,CACvBA,IAGDA,IAAc,MAAQ,CAACiR,GAG3BnzH,IAAWkiH,CAAS,EACtB,EACA,UAAU,kCACV,aAAW,gBAEX,UAAA5yG,MAAC2+G,GAAA,CACC,MAAM,KACN,UAAU,8JACV,MAAM,wBACP,gBAGD3+G,MAAC2+G,GAAA,CACC,MAAM,KACN,SAAU,CAACkF,EACX,UAAU,8JACV,MAAOA,EAA4B,wBAA0B,8BAC9D,eAED,IAEJ,CAEJ,CAEA,SAASC,GAAkB,CACzB,KAAAH,EACA,cAAAI,EACA,QAAAC,EACA,gBAAAvD,EACA,SAAAC,EACA,QAAAuD,EACA,iBAAArD,EACA,YAAAC,EACA,UAAAC,EACA,OAAAoD,EACA,SAAAC,EACA,YAAAnD,EACA,YAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,YAAAC,EACA,cAAAC,CACF,EAAG,CACD,GAAI,CAACsC,GAAQ,CAACI,EACZ,OAAO,KAGT,MAAM9E,EAAgB,UAChBmF,EAAgBC,GAAW,CAC/BA,IAASV,CAAI,EACbK,IAAA,CACF,EACMzzE,EAAWozE,EAAK,WAAa,GAC7BrzE,EAASqzE,EAAK,SAAW,GACzBW,EAAUX,EAAK,UAAY,GAEjC,OACE3iH,OAACk8G,GAAA,CACC,KAAM,GACN,aAAeqH,GAAa,CACrBA,GACHP,IAAA,CAEJ,EAEA,UAAAhkH,MAACo9G,GAAA,CAAoB,QAAO,GAC1B,SAAAp9G,MAAC,UACC,KAAK,SACL,SAAU,GACV,cAAY,OACZ,UAAU,8CACV,MAAO+jH,CAAA,GAEX,EACA/jH,MAACs9G,GAAA,CACC,MAAM,QACN,KAAK,SACL,WAAY,EACZ,UAAU,OACV,cAAgBr5G,GAAU,CACxBA,EAAM,iBACNA,EAAM,iBACR,EAEC,SAAA0/G,EAAK,SAAW,GACf3iH,OAAAsgE,WAAA,CACG,UAAAqiD,EAAK,cAAgB,GACpB3jH,MAACy9G,GAAA,CACC,UAAWwB,EACX,SAAU,IAAMmF,EAAatD,CAAS,EACvC,sBAGC,KACH6C,EAAK,cAAgB,IAAQA,EAAK,oBAAsB,GACvD3jH,MAAC69G,KAAsB,EACrB,KACH8F,EAAK,oBAAsB,GAC1B3jH,MAAAshE,WAAA,CACE,SAAAthE,MAACy9G,GAAA,CACC,UAAWwB,EACX,SAAU0E,EAAK,oBAAsB,GACrC,SAAU,IAAMS,EAAapD,CAAW,EACzC,wBAGH,EACE,KACH2C,EAAK,oBAAsB,IAASA,EAAK,qBAAuB,GAC/D3jH,MAAC69G,KAAsB,EACrB,KACH8F,EAAK,cAAgB,IAAQA,EAAK,oBAAsB,IAASA,EAAK,qBAAuB,GAC5F3jH,MAAC69G,GAAA,EAAsB,EACrB,KACH8F,EAAK,qBAAuB,GAC3B3iH,OAAAsgE,WAAA,CACE,UAAAthE,MAACy9G,GAAA,CACC,UAAWwB,EACX,SAAU0E,EAAK,oBAAsB,GACrC,SAAU,IAAMS,EAAahD,CAAW,EACzC,wBAGDphH,MAACy9G,GAAA,CACC,UAAWwB,EACX,SAAU0E,EAAK,sBAAwB,GACvC,SAAU,IAAMS,EAAa/C,CAAa,EAC3C,yBAED,EACF,EACE,MACN,EAEArhH,MAAC8+G,GAAA,CACC,KAAMrB,GACN,UAAWI,GACX,cAAAoB,EACA,SAAA1uE,EACA,SAAU+zE,EACV,OAAAh0E,EACA,YAAaqzE,EAAK,YAClB,sBAAuB,CAAC,OAAOA,EAAK,UAAY,EAAE,EAAE,OACpD,eAAgBA,EAAK,iBAAmB,GACxC,YAAaA,EAAK,cAAgB,GAClC,gBAAiBA,EAAK,kBAAoB,GAC1C,mBAAoBA,EAAK,qBAAuB,GAChD,uBAAwBA,EAAK,yBAA2B,GACxD,cAAeA,EAAK,gBAAkB,GACtC,kBAAmBA,EAAK,oBAAsB,GAC9C,eAAgBA,EAAK,iBAAmB,GACxC,YAAaA,EAAK,cAAgB,GAClC,gBAAiBA,EAAK,kBAAoB,GAC1C,aAAc,OAAOA,EAAK,cAAgB,EAAE,EAAE,QAAU,WACxD,mBAAoBA,EAAK,qBAAuB,GAChD,kBAAmBA,EAAK,oBAAsB,GAC9C,kBAAmBA,EAAK,oBAAsB,GAC9C,kBAAmBA,EAAK,oBAAsB,GAC9C,mBAAoBA,EAAK,qBAAuB,GAChD,uBAAwBA,EAAK,yBAA2B,GACxD,yBAA0BA,EAAK,2BAA6B,GAC5D,kBAAmBA,EAAK,oBAAsB,GAC9C,oBAAqBA,EAAK,sBAAwB,GAClD,gBAAiB,IAAMS,EAAa3D,CAAe,EACnD,SAAU,IAAM2D,EAAa1D,CAAQ,EACrC,UAAW,IAAM0D,EAAaH,CAAO,EACrC,iBAAkB,IAAMG,EAAaxD,CAAgB,EACrD,YAAa,IAAMwD,EAAavD,CAAW,EAC3C,UAAW,IAAMuD,EAAatD,CAAS,EACvC,mBAAoB,IAAMsD,EAAa9zE,EAAS6zE,EAAWD,CAAM,EACjE,YAAa,IAAME,EAAapD,CAAW,EAC3C,YAAa,IAAMoD,EAAanD,CAAW,EAC3C,iBAAkB,IAAMmD,EAAalD,CAAgB,EACrD,mBAAoB,IAAMkD,EAAajD,CAAkB,EACzD,YAAa,IAAMiD,EAAahD,CAAW,EAC3C,cAAe,IAAMgD,EAAa/C,CAAa,GACjD,EAEJ,GAGN,CAEA,SAAwBmD,GAAc,CACpC,UAAAC,EACA,aAAAt7B,EACA,wBAAAlnC,EAA0B,GAC1B,iBAAAyiE,EACA,gBAAAC,EACA,oBAAAC,EACA,YAAAC,EAAc,KACd,oBAAAC,EACA,sBAAAC,EACA,4BAAAC,EAA8B,GAC9B,yBAAAC,EAA2B,KAC3B,YAAAC,EACA,eAAAC,EACA,eAAAC,EAAiB,GACjB,kBAAAC,EACA,qBAAAC,EACA,cAAAtlF,EACA,YAAAu/B,EACA,oBAAAgqB,EACA,cAAAg8B,EACA,YAAAC,EACA,qBAAAC,EACA,0BAAAC,EAA4B,GAC5B,8BAAAC,EAAgC,GAChC,2BAAAC,EAA6B,GAC7B,qBAAAnmD,EAAuB,GACvB,WAAA0jD,EACA,sBAAAC,EAAwB,GACxB,cAAAyC,EACA,cAAA51E,EACA,gBAAAG,EACA,cAAAF,EACA,cAAA03C,EAAgBy7B,GAChB,gBAAAx7B,EAAkBw7B,GAClB,cAAAv7B,EAAgB,GAChB,mBAAA0B,GACA,qBAAAC,EACA,gBAAAjgE,EACA,mBAAAqxB,GACA,eAAA6uC,GAAiB,KACjB,cAAA3iB,GACA,cAAAC,GACA,iBAAAC,GACA,eAAAx3C,GAAiB,GACjB,gBAAAtK,GAAkB,KAClB,mBAAA4kE,GACA,oBAAAC,GACA,sBAAA87B,GAAwB,GACxB,eAAAC,GACA,YAAAjkD,GACA,eAAA8nB,GACA,2BAAAo8B,GACA,wBAAAC,GACA,uBAAAC,GACA,6BAAAC,GACA,mCAAAC,GACA,4BAAAC,GACA,kBAAAC,GAAoB,KACpB,yBAAAC,GACA,iCAAAC,GACA,0BAAAC,GACA,yBAAAC,GACA,kCAAAC,GACA,6BAAAC,GACA,2BAAAC,GACA,wBAAAC,GACA,0BAAAC,GACA,6BAAAC,GACA,6BAAAC,GACA,kCAAAC,GACA,oCAAAC,GACA,6BAAAC,GACA,+BAAAC,GACA,wBAAAC,GACA,wCAAAC,GACA,eAAAC,GACA,gBAAAC,GACA,oBAAAC,GACA,qBAAAC,GACA,eAAAx9B,GAAiB,IACnB,EAAG,CACD,MAAMy9B,GAAoBnF,GAAA,EACpBoF,GAAyBr9B,UAAQ,IAAM,CAC3C,GAAI,CAACd,IAAgB,gBAAgB,QACnC,OAAOA,GAET,MAAMo+B,GAAsBF,IAAmB,gBAC/C,MAAI,CAACE,IAAuB,OAAOA,IAAwB,SAClDp+B,GAEF,CACL,GAAGA,GACH,gBAAiBo+B,GACjB,eAAgB,CACd,GAAGp+B,GAAe,eAClB,WAAYk+B,GAAkB,WAChC,CAEJ,EAAG,CAACl+B,GAAgBk+B,EAAiB,CAAC,EAChCG,GAAuB,oDACvBlF,GAAU15B,IAAiB5sB,EAAc,IACzCyrD,GAAY7+B,IAAiB5sB,EAAc,MAC3C0rD,GAAWhrD,GAAoBksB,CAAY,EAC3C++B,GAAe/+B,IAAiB5sB,EAAc,SAE9CumD,GADe/lD,GAAmBosB,CAAY,GACZ6+B,GAClCG,GAAiB,CAAC,CAACvD,EACnBwD,GAAoBvD,IAAgB,MAAQsD,GAAiB,KAAO,KACpEE,GAAsBxF,IAAWuF,KAAsB,MAAQD,GAC/DG,GAAiBD,GAAsBzD,EAAsBF,EAC7D6D,GAA4Bp/B,IAAiB5sB,EAAc,MAAQ,CAAC,CAACp3C,IAAmB,CAAC09F,IAAW,CAACC,GACrG0F,GAAgBD,GAClB50G,GAA0BwR,GAAgB,UAAU,EACpDzR,GAAkB,YAChBsiD,GAAiBqyD,IAAuBlD,GAAkBD,EAC1DuD,GAA4B,EAAQZ,IAAwB,gBAAgB,QAC5Ea,GAAiC,GAAQ5C,IAAyB2C,IAClEE,GAAmB,OAAOvD,GAAkB,EAAE,EAAE,OAChDrC,GAA2B,GAAQ2C,GAA6B,CAAC7C,IAAW,CAACoF,IAAY,CAACnF,IAC1FE,GAA+B,GAAQ2C,GAAiC,CAAC9C,IAAW,CAACoF,IAAY,CAACnF,IAClGG,GAA4B,GAAQ2C,GAA8B0C,IAAkB,CAACzF,IAAW,CAACoF,IAAY,CAACnF,IAC9G8F,GAAuB,EAAQz+B,IAAgB,OAC/C0+B,EAAuB,gBACvBC,GAAsB,CAC1B,KAAM,QAAQ,KAAK,IAAI,OAAOv/B,GAAqB,IAAI,GAAK,EAAG,CAAC,CAAC,gBACjE,IAAK,QAAQ,KAAK,IAAI,OAAOA,GAAqB,GAAG,GAAK,EAAG,CAAC,CAAC,iBAE3Dw/B,EAAU,CAAClG,IAAW,CAACC,IAAmBiD,GAC5C,aACA,CAAClD,IAAW,CAACC,IAAmB0E,GAAiB,EAC/C,YACA,GACAwB,GAAqBnG,GACzB7iH,MAAC4jH,GAAA,CACC,MAAOwE,GACP,0BAA2BD,GAC3B,SAAUrD,CAAA,GAEV,KACEmE,GAAqB,CACzB,OAAQ,QAEJC,GAA4B,CAChC,KAAM,GAAG3F,GAAgBh6B,GAAqB,IAAI,CAAC,KACnD,MAAO,GAAGg6B,GAAgBh6B,GAAqB,KAAK,CAAC,KACrD,IAAK,GAAGg6B,GAAgBh6B,GAAqB,GAAG,CAAC,KACjD,OAAQ,GAAGg6B,GAAgBh6B,GAAqB,MAAM,CAAC,MAEnD4/B,GAAkC,CACtC,KAAM,GAAG5F,GAAgBh6B,GAAqB,IAAI,CAAC,KACnD,MAAO,GAAGg6B,GAAgBh6B,GAAqB,KAAK,CAAC,KACrD,OAAQ,QAAQg6B,GAAgBh6B,GAAqB,MAAM,CAAC,cAExD6/B,GAAkB,CACtB,GAAGH,GACH,KAAM,QAAQ1F,GAAgBh6B,GAAqB,IAAI,CAAC,aACxD,MAAO,QAAQg6B,GAAgBh6B,GAAqB,KAAK,CAAC,cAEtD8/B,GAAWN,IAAY,aAAe,kBAAoBtB,GAC1D6B,GAAWP,IAAY,aAAe,+BAAiCtB,GACvE8B,GAAcR,IAAY,aAAexD,GAAiB,CAAC+C,GAAiB,GAC5EkB,GAA+BtB,GACjC,CAAC,CAACnD,EACFlC,IAAW,CAACwF,GACZ,CAAC,CAAC1D,EACF,CAAC,CAAC2D,GACAmB,GAAsBjE,GAAeA,EAAY,WAAa,KAClEA,EAAY,UACZA,EAAY,WAAa,WACzB,CAACgE,IAEChE,EACA,KACEkE,GAAoBlG,GAA0BiG,EAAmB,EACjEE,GAAyBn/B,UAC7B,IAAMk5B,GAA6B4C,GAAmB/8B,CAAmB,EACzE,CAAC+8B,GAAmB/8B,CAAmB,GAGzCjnB,mBAAU,IAAM,CACd,GAAI,CAACsmD,IAAwB,OAAO,OAAW,KAAe,OAAO,SAAa,IAChF,OAEF,MAAMgB,GAAgB3lH,IAAU,CAC1BA,GAAM,kBAGNA,GAAM,MAAQ,UAAYA,GAAM,MAAQ,OAASA,GAAM,OAAS,WAGpEA,GAAM,iBACNA,GAAM,kBACNkmF,IAAgB,aAClB,EACA,cAAO,iBAAiB,UAAWy/B,GAAc,EAAI,EACrD,SAAS,iBAAiB,UAAWA,GAAc,EAAI,EAChD,IAAM,CACX,OAAO,oBAAoB,UAAWA,GAAc,EAAI,EACxD,SAAS,oBAAoB,UAAWA,GAAc,EAAI,CAC5D,CACF,EAAG,CAACz/B,GAAgBy+B,EAAoB,CAAC,EAGvC5nH,OAAC,OAAI,UAAU,mBACZ,UAAAknH,GACCloH,MAACu6G,GAAA,CAEC,IAAKkK,EACL,MAAOM,EACP,SAAU/uD,GACV,UAAWuvD,EACX,YAAAhmD,EACA,oBAAAgqB,EACA,qBAAA9pB,EACA,cAAAz/B,EACA,iBAAkBilF,EAClB,oBAAqBD,EACrB,YAAaK,EACb,eAAgBC,EAChB,oBAAqBW,GACrB,oBAAqBqB,EAAA,EAdhB,YAAYtxD,EAAc,IAgB/B6sD,IAAW,CAACwF,GACdroH,MAACm8F,GAAA,CACC,IAAKsoB,EACL,QAASE,EACT,SAAUQ,EACV,cAAAnlF,EACA,qBAAAy/B,EACA,sBAAsB,OACtB,gBAAiBupD,GACjB,oBAAqB1B,EAAA,GAGvBtnH,MAACipF,GAAA,CACC,IAAKw7B,EACL,SAAU6D,GACV,SAAUtyD,GACV,aAAAmzB,EACA,YAAak8B,EACb,WAAYmD,GACZ,eAAgBlD,EAChB,mBAAoBiD,GAA4Bx+B,GAAqB,OACrE,oBAAqBw+B,GAA4Bv+B,GAAsB,OACvE,UAAW,CAACg+B,GACZ,iBAAkB,GAClB,cAAAhoF,EACA,gBAAiBuoF,GAA4BpjG,GAAkB,KAC/D,YAAa09F,GAAU,GAAQtjD,EAC/B,cAAesjD,IAAWmF,GAAY,GAAO,CAACzoD,EAC9C,MAAO0oD,GAAWlzF,GAAmB,KAAOA,GAAmB,IAC/D,qBAAA0qC,EACA,sBAAsB,OACtB,gBAAiBupD,GACjB,iBAAkB,GAClB,oBAAAz/B,EACA,UAAWg8B,EACX,SAAU0C,GACN7yG,GAAiB,KACjBwtG,GAA4B,CAC5B,QAAAC,GACA,gBAAAC,GACA,yBAAAC,GACA,6BAAAC,GACA,0BAAAC,GACA,sBAAuB,GACrBl8C,IAAe,QACfC,IAAe,QACfC,IAAkB,QAEpB,WAAAk8C,EACA,sBAAAC,EACA,eAAA3zF,EAAA,CACD,EACH,wBAAyBw4F,GAAW,GAAQhmE,GAA2B,EAAQ4lE,IAAwB,WACvG,cAAehF,IAAWoF,IAAYnF,GAAkBO,GAAawC,EACrE,cAAehD,IAAWC,GAAkB,GAAK7yE,EACjD,gBAAiB4yE,IAAWC,GAAkB,GAAK1yE,EACnD,cAAeyyE,IAAWC,GAAkB,GAAK5yE,EACjD,cAAe2yE,IAAWC,GAAkB,GAAKl7B,EACjD,gBAAiBi7B,IAAWC,GAAkB,GAAKj7B,EACnD,cAAeg7B,IAAWC,GAAkB,GAAKh7B,EACjD,mBAAoB+6B,IAAWC,GAAkB,GAAKt5B,GACtD,qBAAsBq5B,IAAWC,GAAkB,GAAKr5B,EACxD,gBAAiBo5B,IAAWC,GAAkB,KAAOt5F,EACrD,mBAAoBq5F,IAAWC,GAAkB,KAAOjoE,GACxD,eAAgBgoE,IAAWC,GAAkB,KAAO+E,GACpD,cAAehF,IAAWC,GAAkB,GAAK/7C,GACjD,cAAe87C,IAAWC,GAAkB,GAAK97C,GACjD,iBAAkB67C,IAAWC,GAAkB,GAAK77C,GACpD,cAAe47C,IAAWC,GAAkB,GAAKrzF,GACjD,sBAAuBi5F,GACvB,eAAgB,CAAC7F,IAAW,CAACC,IAAmBiD,GAChD,YAAAjkD,GACA,eAAgB+gD,IAAWC,GAAkB,GAAKl5B,GAClD,uBAAwBo8B,GACxB,oBAAqBC,GACrB,uBAAwBC,GACxB,oBAAqBC,GACrB,0BAA2BC,GAC3B,mBAAoBC,GACpB,oBAAqBiB,GACrB,oCAAqCC,GACrC,eAAAp9B,EAAA,GAGF5qB,EAoBE,KAnBFv/D,MAAC8jH,GAAA,CACC,KAAMwC,GACN,cAAeqD,GACf,QAASpD,GACT,gBAAiBC,GACjB,SAAUC,GACV,QAASC,GACT,iBAAkBC,GAClB,YAAaC,GACb,UAAWC,GACX,OAAQC,GACR,SAAUC,GACV,YAAaC,GACb,YAAaC,GACb,iBAAkBC,GAClB,mBAAoBC,GACpB,YAAaC,GACb,cAAeC,EAAA,GAGlB,CAAC9nD,GAAeopD,GACf3oH,MAAC,OACC,UAAU,uFACV,MAAOkpH,GAEP,SAAAloH,OAAC+7G,GAAA,CACC,QAAQ,cACR,UAAU,0FAEV,UAAA/8G,MAAC,KAAE,UAAU,qFAAqF,+BAElG,EACAA,MAACg9G,GAAA,CAAW,UAAU,2DAA2D,+BAAmB,EACpGh9G,MAACi9G,IAAiB,UAAU,2DAC1B,eAAC,QAAK,UAAU,wDAAyD,SAAA0L,EAAA,CAAiB,EAC5F,IACF,GAEA,KACH,CAACppD,GAAekqD,GACfzpH,MAAC,OACC,UAAU,+FACV,MAAOkpH,GAEP,SAAAloH,OAAC,OACC,KAAK,QACL,aAAY+mH,GACZ,MAAOA,GACP,UAAWzoH,EACT,mJACAoqH,GAAkB,iBAGpB,UAAA1pH,MAAC,QAAK,UAAWV,EACf,uEACAoqH,GAAkB,eAElB,eAACG,GAAA,CAAY,UAAU,SAAS,YAAa,EAAG,cAAY,OAAO,EACrE,EACA7oH,OAAC,OAAI,UAAU,qBACb,UAAAhB,MAAC,QAAK,UAAWV,EACf,sDACAoqH,GAAkB,gBAEjB,YAAkB,MACrB,EACA1pH,MAAC,OAAI,UAAU,iGACZ,WAAY,OAASwlH,EAAY,SAAW,eAC/C,EACCA,EAAY,QACXxlH,MAAC,KAAE,UAAU,2FACV,SAAAwlH,EAAY,QACf,EACE,KACHA,EAAY,WACXxlH,MAAC,KAAE,UAAU,2FACV,SAAAwlH,EAAY,WACf,EACE,MACN,IACF,GAEA,KACH,CAACjmD,GAAekmD,EACfzlH,MAAC,OAAI,UAAU,6DAA6D,MAAOmpH,GACjF,SAAAnpH,MAAC+8G,GAAA,CACC,KAAK,SACL,UAAU,iGACX,+DAGH,EACE,KACH,CAACx9C,GAAe,CAACkmD,GAAwB1C,SACvC,OAAI,UAAU,6DAA6D,MAAOoG,GACjF,SAAAnpH,MAAC+8G,GAAA,CACC,KAAK,SACL,UAAU,iGACX,8CAGH,EACE,KACH,CAACx9C,GAAeqpD,GACf5oH,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,UACL,UAAU,oIACV,MAAOqpH,GACP,QAAS,IAAM,CACb3+B,IAAgB,YAClB,EACA,aAAW,mBACX,MAAM,mBAEN,eAAC2/B,GAAA,CAAE,UAAU,WAAW,YAAa,EAAG,cAAY,OAAO,IAE3D,KACH,CAACvqD,GAAeqpD,GACf5oH,MAAC,OAAI,UAAU,6DAA6D,MAAOmpH,GACjF,SAAAnpH,MAAC+8G,GAAA,CACC,KAAK,SACL,UAAU,iGAET,SAAA8L,CAAA,GAEL,EACE,KACH,CAACtpD,GAAewpD,GAAW,CAACtD,GAAwB,CAAC1C,IAA4B,CAACC,IAAgC,CAACC,GAClHjjH,MAAC,OACC,UAAU,gEACV,MAAOopH,GAEP,SAAAppH,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAU,+QACV,SAAU8pH,GACV,QAAS,IAAM,CACb,GAAIR,IAAY,aAAc,CACvBpB,KAAA,EACL,MACF,CACKD,GAAA,CACP,EACA,MAAO4B,GAEP,SAAAtpH,MAAC,QAAK,UAAU,oCAAqC,SAAAqpH,EAAA,CAAS,GAChE,GAEA,MACN,CAEJ,CC9uBO,MAAMU,GAAmC,EACnCC,GAA+B,GAC/BC,GAA+B,GAC/BC,GAA6B,EAC7BC,GAAyB,EACzBC,GAAyB,IACzBC,GAAqB,CAChC,GAAI,KACJ,KAAM,MACR,EAEM3zB,GAAkB,IAClBG,GAAyB,IACzBC,GAAmB,GACnBC,GAAmB,IACnBuzB,GAAyB,IACzBC,GAAsB,KACtBC,GAA4B,IAC5BC,GAA2B,EAC3BC,GAA2B,GAC3BC,GAAkC,GAExC,SAASh1G,GAAMznB,EAAO0nB,EAAKC,EAAK,CAC9B,OAAO,KAAK,IAAI,KAAK,IAAI3nB,EAAO0nB,CAAG,EAAGC,CAAG,CAC3C,CAEA,SAASioC,GAAe5vD,EAAOsa,EAAW,EAAG,CAC3C,MAAME,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,EAAIA,EAAeF,CACxD,CAEA,SAASoiH,GAAYt/G,EAAGC,EAAGsJ,EAAU01G,GAAqB,CACxD,OAAO,KAAK,IAAIj/G,EAAIC,CAAC,GAAKsJ,CAC5B,CAEA,SAASsiF,GAAepgF,EAAO,CAC7B,MAAI,CAAC,MAAM,QAAQA,CAAK,GAAKA,EAAM,OAAS,EACnC,CAAC,EAAG,CAAC,EAEP,CAAC+mC,GAAe/mC,EAAM,CAAC,CAAC,EAAG+mC,GAAe/mC,EAAM,CAAC,CAAC,CAAC,CAC5D,CAEA,SAASqgF,GAAY9rF,EAAGC,EAAGsJ,EAAU01G,GAAqB,CACxD,OAAO,KAAK,IAAIj/G,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,GAAKsJ,GAAW,KAAK,IAAIvJ,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,GAAKsJ,CACtE,CAEA,SAAS8K,GAAS5I,EAAO,CACvB,MAAO,GAAG,KAAK,MAAMA,EAAM,CAAC,EAAI2/E,EAAe,CAAC,IAAI,KAAK,MAAM3/E,EAAM,CAAC,EAAI2/E,EAAe,CAAC,EAC5F,CAEA,SAASW,GAAc3+E,EAAQ,CAC7B,MAAO,CAAC,GAAGA,CAAM,EAAE,SACrB,CAEA,SAAS4+E,GAAuB5+E,EAAQ,CACtC,OAAIA,EAAO,OAAS,GAAK0+E,GAAY1+E,EAAO,CAAC,EAAGA,EAAOA,EAAO,OAAS,CAAC,CAAC,EAChEA,EAAO,MAAM,EAAG,EAAE,EAEpBA,CACT,CAEA,SAAS6+E,GAA4B7+E,EAAQ,CAC3C,MAAM8+E,EAAU,GAChB,UAAWzgF,KAAS2B,EACd8+E,EAAQ,QAAUJ,GAAYI,EAAQA,EAAQ,OAAS,CAAC,EAAGzgF,CAAK,GAGpEygF,EAAQ,KAAKzgF,CAAK,EAEpB,OAAOugF,GAAuBE,CAAO,CACvC,CAEA,SAASgB,GAAoB3+E,EAAQ4+E,EAAc,CACjD,MAAMvxD,EAAa,KAAK,IAAI,KAAK,IAAIrtB,CAAM,EAAG,GAAI,EAC5C6+E,EAAa/iF,GAAM,EAAKkhF,GAAyB3vD,EAAa,GAAI,CAAC,EACnEyxD,EAAkBD,GAAc,GAClC,KAAK,GAAK,EACV/iF,GAAM,EAAI,KAAK,KAAK+iF,CAAU,EAAG,KAAK,GAAK,GAAI,KAAK,GAAK,EAAE,EAC/D,OAAO/iF,GACL,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI8iF,CAAY,EAAG,KAAK,GAAK,EAAE,EAAIE,CAAe,EAC1E7B,GACAC,EAAA,CAEJ,CAEA,SAAS6B,GAAgBj/E,EAAQE,EAAQ+9E,EAAeC,EAAe,CACrE,MAAMgB,EAAiB/6C,GAAe85C,CAAa,EAAI,KAAK,GAAM,IAC5DkB,EAAiBh7C,GAAe+5C,CAAa,EAAI,KAAK,GAAM,IAC5Dt8E,EAAWi9E,GAAoB3+E,EAAQi/E,CAAa,EACpDpgF,EAAS,GACf,QAAS7iB,EAAQ,EAAGA,GAAS0lB,EAAU1lB,GAAS,EAAG,CACjD,MAAMgiB,EAAIhiB,EAAQ0lB,EACZC,EAAQq9E,EAAgBC,EAAgBjhF,EAC9Ca,EAAO,KAAK,CACViB,EAAO,CAAC,EAAIE,EAAS,KAAK,IAAI2B,CAAK,EACnC7B,EAAO,CAAC,EAAIE,EAAS,KAAK,IAAI2B,CAAK,EACpC,CACH,CACA,OAAO9C,CACT,CAEA,SAASqgF,GAAmBp/E,EAAQE,EAAQ,CAC1C,MAAMnB,EAASkgF,GAAgBj/E,EAAQE,EAAQ,EAAG,GAAG,EACrD,OAAOy9E,GAAuB5+E,CAAM,CACtC,CAEA,SAASmyG,GAAkBnyG,EAAQ,CACjC,GAAI,CAAC,MAAM,QAAQA,CAAM,GAAKA,EAAO,OAAS,EAC5C,MAAO,GAET,IAAImG,EAAO,EACX,QAAShpB,EAAQ,EAAGA,EAAQ6iB,EAAO,OAAQ7iB,GAAS,EAAG,CACrD,MAAM5B,EAAUykB,EAAO7iB,CAAK,EACtBzB,EAAOskB,GAAQ7iB,EAAQ,GAAK6iB,EAAO,MAAM,EAC/CmG,GAAQ5qB,EAAQ,CAAC,EAAIG,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAIH,EAAQ,CAAC,CACpD,CACA,OAAO4qB,EAAO,CAChB,CAEA,SAASisG,GAAqBpyG,EAAQ,CAAE,UAAAqyG,GAAa,CACnD,MAAMvzB,EAAUD,GAA4B7+E,CAAM,EAClD,GAAI8+E,EAAQ,OAAS,EACnB,OAAOA,EAET,MAAMwzB,EAAUxzB,EAAQ,IAAI,CAAC,CAACn7E,EAAGC,CAAC,IAAM,IAAI2uG,GAAQ5uG,EAAGC,CAAC,CAAC,EACnD4uG,EAAcC,GAAW,YAAYH,CAAO,EAClD,OAAKD,GAAa,CAACG,GAAiB,CAACH,GAAaG,EACzC7zB,GAAcG,CAAO,EAEvBA,CACT,CAEA,SAASwB,GAAoBC,EAAS,CACpC,MAAMvtE,EAAWutE,GAAS,UAAY,GAChCmyB,EAAc,MAAM,QAAQ1/F,EAAS,KAAK,EAAIA,EAAS,MAAQ,GAC/D2/F,EAAa,MAAM,QAAQ3/F,EAAS,IAAI,EAAIA,EAAS,KAAO,GAC5D4/F,EAAgB,MAAM,QAAQ5/F,EAAS,OAAO,EAAIA,EAAS,QAAU,GAErE0tE,EAAgB,GAChBC,EAAiB,GACjBkyB,EAAY,GAElB,UAAWjjF,KAAU8iF,EAAa,CAChC,MAAM3zG,EAAQ0/E,GAAe7uD,GAAQ,KAAK,EACpC5wB,EAAMy/E,GAAe7uD,GAAQ,GAAG,EAEtC,GADa,OAAOA,GAAQ,MAAQ,EAAE,EAAE,OAAO,gBAClC,OAAQ,CACnBijF,EAAU,KAAK,CAAC9zG,EAAOC,CAAG,CAAC,EAC3B,QACF,CACI0/E,GAAY3/E,EAAOC,CAAG,GAG1B0hF,EAAc,KAAK,CAAE,OAAQ,CAAC3hF,EAAOC,CAAG,EAAG,CAC7C,CAEA,UAAW4wB,KAAU+iF,EAAY,CAC/B,MAAM1xG,EAASw9E,GAAe7uD,GAAQ,MAAM,EACtCzuB,EAAS,KAAK,IAAIikC,GAAexV,GAAQ,MAAM,EAAG,CAAC,EACzD,GAAIzuB,GAAU,EACZ,SAEF,MAAMjU,EAAO,OAAO0iC,GAAQ,MAAQ,EAAE,EAAE,OAAO,cACzC5vB,EAASkgF,GACbj/E,EACAE,EACAikC,GAAexV,GAAQ,aAAa,EACpCwV,GAAexV,GAAQ,aAAa,GAEtC,GAAI1iC,IAAS,OAAQ,CACnB2lH,EAAU,KAAK,CAAC7yG,EAAO,CAAC,EAAGA,EAAOA,EAAO,OAAS,CAAC,CAAC,CAAC,EACrD,QACF,CACA0gF,EAAc,KAAK,CAAE,OAAA1gF,EAAQ,CAC/B,CAEA,UAAW4vB,KAAUgjF,EAAe,CAClC,MAAM3xG,EAASw9E,GAAe7uD,GAAQ,MAAM,EACtCzuB,EAAS,KAAK,IAAIikC,GAAexV,GAAQ,MAAM,EAAG,CAAC,EACrDzuB,GAAU,GAGD,OAAOyuB,GAAQ,MAAQ,EAAE,EAAE,OAAO,gBAClC,QAGb+wD,EAAe,KAAKN,GAAmBp/E,EAAQE,CAAM,CAAC,CACxD,CAEA,MAAO,CACL,cAAAu/E,EACA,eAAAC,EACA,UAAAkyB,CAAA,CAEJ,CAEA,SAAS/xB,GAAcP,EAAS,CAC9B,KAAM,CAAE,cAAAG,EAAe,eAAAC,EAAgB,UAAAkyB,CAAA,EAAcvyB,GAAoBC,CAAO,EAChF,GAAI,CAACG,EAAc,QAAU,CAACC,EAAe,OAC3C,MAAM,IAAI,MAAM,iDAAiD,EAGnE,MAAMx5E,MAAgB,IAChBw7C,MAAc,IACdt7C,EAAQ,GAER05E,EAAe,CAACtqG,EAAKjB,IAAU,CACnC,MAAMu5D,EAAW5nC,EAAU,IAAI1wB,CAAG,EAClC,GAAIs4D,EAAU,CACZA,EAAS,KAAKv5D,CAAK,EACnB,MACF,CACA2xB,EAAU,IAAI1wB,EAAK,CAACjB,CAAK,CAAC,CAC5B,EAEAkrG,EAAc,QAAQ,CAACM,EAAW7jG,IAAU,CAC1C,MAAMugD,EAAWz2B,GAAS+5E,EAAU,OAAO,CAAC,CAAC,EACvCC,EAASh6E,GAAS+5E,EAAU,OAAOA,EAAU,OAAO,OAAS,CAAC,CAAC,EACrED,EAAarjD,EAAU,CAAE,MAAAvgD,EAAO,QAAS,GAAO,EAChD4jG,EAAaE,EAAQ,CAAE,MAAA9jG,EAAO,QAAS,GAAM,CAC/C,CAAC,EAED,QAASkhE,EAAiB,EAAGA,EAAiBqiC,EAAc,OAAQriC,GAAkB,EAAG,CACvF,GAAIsE,EAAQ,IAAItE,CAAc,EAC5B,SAEFsE,EAAQ,IAAItE,CAAc,EAC1B,IAAI6iC,EAAa,CAAC,GAAGR,EAAcriC,CAAc,EAAE,MAAM,EACzD,MAAM3gB,EAAWz2B,GAASi6E,EAAW,CAAC,CAAC,EACvC,IAAIC,EAAal6E,GAASi6E,EAAWA,EAAW,OAAS,CAAC,CAAC,EACvD35E,EAAQ,EAEZ,KAAO45E,IAAezjD,GAAU,CAC9B,MAAM0jD,GAAej6E,EAAU,IAAIg6E,CAAU,GAAK,IAAI,OAAO,CAAC,CAAE,MAAAhkG,KAAY,CAACwlE,EAAQ,IAAIxlE,CAAK,CAAC,EAC/F,GAAI,CAACikG,EAAY,OACf,MAAM,IAAI,MAAM,0CAA0C,EAG5D,MAAMC,EAAaD,EAAY,CAAC,EAChCz+B,EAAQ,IAAI0+B,EAAW,KAAK,EAC5B,MAAMC,EAAkBZ,EAAcW,EAAW,KAAK,EAAE,OAClDE,EAAiBF,EAAW,QAAU1C,GAAc2C,CAAe,EAAIA,EAI7E,GAHAJ,EAAaA,EAAW,OAAOK,EAAe,MAAM,CAAC,CAAC,EACtDJ,EAAal6E,GAASs6E,EAAeA,EAAe,OAAS,CAAC,CAAC,EAC/Dh6E,GAAS,EACLA,EAAQm5E,EAAc,OAAS,EACjC,MAAM,IAAI,MAAM,4CAA4C,CAEhE,CAEAQ,EAAarC,GAA4BqC,CAAU,EAC/CA,EAAW,QAAU,GACvB75E,EAAM,KAAK65E,CAAU,CAEzB,CAEA,UAAWM,KAAcb,EACnBa,EAAW,QAAU,GACvBn6E,EAAM,KAAKm6E,CAAU,EAIzB,GAAI,CAACn6E,EAAM,OACT,MAAM,IAAI,MAAM,uDAAuD,EAGzE,MAAO,CACL,MAAAA,EACA,UAAAwrG,CAAA,CAEJ,CAEA,SAASC,GAAkBh9F,EAAM34B,EAAO,CACtC,MAAM4hB,EAAQ0/E,GAAe3oE,IAAO,CAAC,CAAC,EAChC9W,EAAMy/E,GAAe3oE,IAAO,CAAC,CAAC,EAC9Bi9F,EAAU/zG,EAAI,CAAC,EAAID,EAAM,CAAC,EAAI,CAACC,EAAKD,CAAK,EAAI,CAACA,EAAOC,CAAG,EAC9D,MAAO,CACL,GAAI,QAAQ7hB,EAAQ,CAAC,GACrB,MAAAA,EACA,MAAO41H,EAAQ,CAAC,EAChB,IAAKA,EAAQ,CAAC,EACd,GAAIA,EAAQ,CAAC,EAAE,CAAC,EAAIA,EAAQ,CAAC,EAAE,CAAC,GAAK,EACrC,KAAM,KAAK,IAAIA,EAAQ,CAAC,EAAE,CAAC,EAAGA,EAAQ,CAAC,EAAE,CAAC,CAAC,EAC3C,KAAM,KAAK,IAAIA,EAAQ,CAAC,EAAE,CAAC,EAAGA,EAAQ,CAAC,EAAE,CAAC,CAAC,EAE/C,CAEA,SAASC,GAAcC,EAAc,CACnC,OAAOA,EACJ,IAAI,CAACn9F,EAAM34B,IAAU21H,GAAkBh9F,EAAM34B,CAAK,CAAC,EACnD,KAAK,CAACyV,EAAGC,IAAM,CACd,MAAMqgH,EAAQtgH,EAAE,EAAIC,EAAE,EACtB,OAAI,KAAK,IAAIqgH,CAAK,EAAIrB,GACbqB,EAEFtgH,EAAE,KAAOC,EAAE,IACpB,CAAC,EACA,IAAI,CAACijB,EAAM34B,KAAW,CACrB,GAAG24B,EACH,GAAI,QAAQ34B,EAAQ,CAAC,GACrB,MAAAA,CAAA,EACA,CACN,CAEO,SAASg2H,GAA2B5yB,EAAS,CAClD,KAAM,CAAE,UAAAsyB,CAAA,EAAcvyB,GAAoBC,CAAO,EACjD,OAAOyyB,GAAcH,CAAS,CAChC,CAEA,SAASO,GAAkBP,EAAW,CACpC,UAAWQ,KAAYR,EAAW,CAChC,GAAI,KAAK,IAAIQ,EAAS,MAAM,CAAC,EAAIA,EAAS,IAAI,CAAC,CAAC,EAAIvB,GAClD,MAAM,IAAI,MAAM,4DAA4D,EAE9E,GAAI,KAAK,IAAIuB,EAAS,IAAI,CAAC,EAAIA,EAAS,MAAM,CAAC,CAAC,GAAKxB,GACnD,MAAM,IAAI,MAAM,uDAAuD,CAE3E,CACF,CAEO,SAASyB,GAA0B99H,EAAO,CAE/C,OADmB,OAAOA,GAAS,EAAE,EAAE,OAAO,gBACxBm8H,GAAmB,KAAOA,GAAmB,KAAOA,GAAmB,EAC/F,CAEO,SAAS4B,GAAyB/9H,EAAOsa,EAAW0hH,GAA4B,CACrF,MAAMgC,EAAev2G,GACnBmoC,GAAet1C,EAAU0hH,EAA0B,EACnDC,GACAC,EAAA,EAEI1hH,EAAeo1C,GAAe5vD,EAAOg+H,CAAY,EACvD,OAAOv2G,GAAMjN,EAAcyhH,GAAwBC,EAAsB,CAC3E,CAEO,SAAS+B,GAA+Bj+H,EAAOsa,EAAWuhH,GAAkC,CACjG,MAAMmC,EAAev2G,GACnBmoC,GAAet1C,EAAUuhH,EAAgC,EACzDC,GACAC,EAAA,EAEIvhH,EAAeo1C,GAAe5vD,EAAOg+H,CAAY,EACvD,OAAIxjH,GAAgB,EACXwjH,EAEFv2G,GAAMjN,EAAcshH,GAA8BC,EAA4B,CACvF,CAEO,SAASmC,GAAyBnzB,EAAS/qG,EAAO,CACvD,MAAMq9H,EAAYM,GAA2B5yB,CAAO,EAC9CljF,EAAS,MAAM,QAAQ7nB,CAAK,EAAIA,EAAQ,GAC9C,OAAOq9H,EAAU,IAAI,CAACQ,EAAUl2H,IAAU,CACxC,MAAM5B,EAAU8hB,EAAOlgB,CAAK,GAAK,OAAOkgB,EAAOlgB,CAAK,GAAM,SAAWkgB,EAAOlgB,CAAK,EAAI,GACrF,MAAO,CACL,GAAIk2H,EAAS,GACb,UAAWC,GAA0B/3H,EAAQ,SAAS,EACtD,SAAUg4H,GAAyBh4H,EAAQ,SAAUi2H,EAA0B,EAEnF,CAAC,CACH,CAEA,SAASmC,GAAoB50G,EAAOC,EAAKo+F,EAAM,CAC7C,MAAMxY,EAAS5lF,EAAI,CAAC,EAAID,EAAM,CAAC,EAC/B,GAAI,KAAK,IAAI6lF,CAAM,GAAKitB,GACtB,MAAO,CAACzU,EAAMr+F,EAAM,CAAC,CAAC,EAExB,MAAMI,GAAKi+F,EAAOr+F,EAAM,CAAC,GAAK6lF,EAC9B,MAAO,CAACwY,EAAMr+F,EAAM,CAAC,GAAKC,EAAI,CAAC,EAAID,EAAM,CAAC,GAAKI,CAAC,CAClD,CAEA,SAASy0G,GAAoB70G,EAAOC,EAAKq+F,EAAM,CAC7C,MAAMzY,EAAS5lF,EAAI,CAAC,EAAID,EAAM,CAAC,EAC/B,GAAI,KAAK,IAAI6lF,CAAM,GAAKitB,GACtB,MAAO,CAACxU,EAAMt+F,EAAM,CAAC,CAAC,EAExB,MAAMI,GAAKk+F,EAAOt+F,EAAM,CAAC,GAAK6lF,EAC9B,MAAO,CAACyY,EAAMt+F,EAAM,CAAC,GAAKC,EAAI,CAAC,EAAID,EAAM,CAAC,GAAKI,CAAC,CAClD,CAEA,SAAS00G,GAAoBntG,EAAM02F,EAAM,CACvC,GAAI,CAAC12F,EAAK,OACR,MAAO,GAET,MAAM4J,EAAS,GACf,QAASnzB,EAAQ,EAAGA,EAAQupB,EAAK,OAAQvpB,GAAS,EAAG,CACnD,MAAM5B,EAAUmrB,EAAKvpB,CAAK,EACpBqiB,EAAWkH,GAAMvpB,EAAQupB,EAAK,OAAS,GAAKA,EAAK,MAAM,EACvDotG,EAAgBv4H,EAAQ,CAAC,GAAK6hH,EAAOyU,GACrCkC,EAAiBv0G,EAAS,CAAC,GAAK49F,EAAOyU,GACzCiC,GACGC,GACHzjG,EAAO,KAAKqjG,GAAoBn0G,EAAUjkB,EAAS6hH,CAAI,CAAC,EAE1D9sF,EAAO,KAAK/0B,CAAO,GACVw4H,GACTzjG,EAAO,KAAKqjG,GAAoBn0G,EAAUjkB,EAAS6hH,CAAI,CAAC,CAE5D,CACA,OAAOve,GAA4BvuE,CAAM,CAC3C,CAEA,SAAS0jG,GAAoBttG,EAAM22F,EAAM,CACvC,GAAI,CAAC32F,EAAK,OACR,MAAO,GAET,MAAM4J,EAAS,GACf,QAASnzB,EAAQ,EAAGA,EAAQupB,EAAK,OAAQvpB,GAAS,EAAG,CACnD,MAAM5B,EAAUmrB,EAAKvpB,CAAK,EACpBqiB,EAAWkH,GAAMvpB,EAAQupB,EAAK,OAAS,GAAKA,EAAK,MAAM,EACvDotG,EAAgBv4H,EAAQ,CAAC,GAAK8hH,EAAOwU,GACrCkC,EAAiBv0G,EAAS,CAAC,GAAK69F,EAAOwU,GACzCiC,GACGC,GACHzjG,EAAO,KAAKsjG,GAAoBp0G,EAAUjkB,EAAS8hH,CAAI,CAAC,EAE1D/sF,EAAO,KAAK/0B,CAAO,GACVw4H,GACTzjG,EAAO,KAAKsjG,GAAoBp0G,EAAUjkB,EAAS8hH,CAAI,CAAC,CAE5D,CACA,OAAOxe,GAA4BvuE,CAAM,CAC3C,CAEA,SAAS2jG,GAAevtG,EAAMwtG,EAAOC,EAAQ,CAC3C,OAAOH,GAAoBH,GAAoBntG,EAAMwtG,CAAK,EAAGC,CAAM,CACrE,CAEA,SAASC,GAAW1tG,EAAM,CACxB,IAAI02F,EAAO,OAAO,kBACdE,EAAO,OAAO,kBACdD,EAAO,OAAO,kBACdE,EAAO,OAAO,kBAClB,UAAWl/F,KAASqI,EAClB02F,EAAO,KAAK,IAAIA,EAAM/+F,EAAM,CAAC,CAAC,EAC9Bi/F,EAAO,KAAK,IAAIA,EAAMj/F,EAAM,CAAC,CAAC,EAC9Bg/F,EAAO,KAAK,IAAIA,EAAMh/F,EAAM,CAAC,CAAC,EAC9Bk/F,EAAO,KAAK,IAAIA,EAAMl/F,EAAM,CAAC,CAAC,EAEhC,MAAO,CACL,KAAA++F,EACA,KAAAE,EACA,KAAAD,EACA,KAAAE,CAAA,CAEJ,CAEA,SAAS8W,GAAeh2G,EAAOU,EAAOC,EAAK,CACzC,MAAM4H,GAAUvI,EAAM,CAAC,EAAIU,EAAM,CAAC,IAAMC,EAAI,CAAC,EAAID,EAAM,CAAC,IAAQV,EAAM,CAAC,EAAIU,EAAM,CAAC,IAAMC,EAAI,CAAC,EAAID,EAAM,CAAC,GACxG,GAAI,KAAK,IAAI6H,CAAK,EAAIirG,GACpB,MAAO,GAET,MAAMhyD,GAAQxhD,EAAM,CAAC,EAAIU,EAAM,CAAC,IAAMC,EAAI,CAAC,EAAID,EAAM,CAAC,IAAQV,EAAM,CAAC,EAAIU,EAAM,CAAC,IAAMC,EAAI,CAAC,EAAID,EAAM,CAAC,GACtG,GAAI8gD,EAAM,CAACgyD,GACT,MAAO,GAET,MAAMyC,GAAkBt1G,EAAI,CAAC,EAAID,EAAM,CAAC,IAAM,GAAOC,EAAI,CAAC,EAAID,EAAM,CAAC,IAAM,EAC3E,OAAO8gD,GAAOy0D,EAAgBzC,EAChC,CAEA,SAAS0C,GAAYl2G,EAAOqI,EAAM,CAChC,IAAInH,EAAS,GACb,QAASpiB,EAAQ,EAAGq3H,EAAgB9tG,EAAK,OAAS,EAAGvpB,EAAQupB,EAAK,OAAQ8tG,EAAgBr3H,EAAOA,GAAS,EAAG,CAC3G,MAAM5B,EAAUmrB,EAAKvpB,CAAK,EACpBqiB,EAAWkH,EAAK8tG,CAAa,EACnC,GAAIH,GAAeh2G,EAAOmB,EAAUjkB,CAAO,EACzC,MAAO,GAGT,GAAI,EADgBA,EAAQ,CAAC,EAAI8iB,EAAM,CAAC,GAAQmB,EAAS,CAAC,EAAInB,EAAM,CAAC,GAEnE,SAEF,MAAMo2G,EAAgBj1G,EAAS,CAAC,GAAMnB,EAAM,CAAC,EAAImB,EAAS,CAAC,IAAMjkB,EAAQ,CAAC,EAAIikB,EAAS,CAAC,IAAOjkB,EAAQ,CAAC,EAAIikB,EAAS,CAAC,GAClHnB,EAAM,CAAC,EAAIo2G,IACbl1G,EAAS,CAACA,EAEd,CACA,OAAOA,CACT,CAEA,SAASm1G,GAAqBC,EAAa,CACzC,MAAMC,EAAQD,EAAY,IAAI,CAACjuG,EAAMvpB,KAAW,CAC9C,KAAAupB,EACA,MAAAvpB,EACA,YAAa,GACb,MAAO,GACP,KAAM,KAAK,IAAIg1H,GAAkBzrG,CAAI,CAAC,GACtC,EAEF,QAASvpB,EAAQ,EAAGA,EAAQy3H,EAAM,OAAQz3H,GAAS,EAAG,CACpD,MAAMiT,EAAOwkH,EAAMz3H,CAAK,EAClB03H,EAAsBzkH,EAAK,KAAK,CAAC,EACvC,IAAI0kH,EAAc,GACdC,EAAa,OAAO,kBACxB,QAASvtG,EAAiB,EAAGA,EAAiBotG,EAAM,OAAQptG,GAAkB,EAAG,CAC/E,GAAIA,IAAmBrqB,EACrB,SAEF,MAAMiY,EAAYw/G,EAAMptG,CAAc,EAClCpS,EAAU,MAAQhF,EAAK,KAAOyhH,IAAuBz8G,EAAU,MAAQ2/G,GAGvER,GAAYM,EAAqBz/G,EAAU,IAAI,IACjD0/G,EAActtG,EACdutG,EAAa3/G,EAAU,KAE3B,CACAhF,EAAK,YAAc0kH,CACrB,CAEA,MAAME,EAAgB73H,GAAU,CAC9B,MAAMiT,EAAOwkH,EAAMz3H,CAAK,EACxB,OAAIiT,EAAK,OAAS,IAGlBA,EAAK,MAAQA,EAAK,YAAc,EAAI,EAAI4kH,EAAa5kH,EAAK,WAAW,EAAI,GAClEA,EAAK,KACd,EACA,QAASjT,EAAQ,EAAGA,EAAQy3H,EAAM,OAAQz3H,GAAS,EACjD63H,EAAa73H,CAAK,EAEpB,OAAOy3H,CACT,CAEA,SAASK,GAA0BN,EAAa,CAC9C,MAAMC,EAAQF,GAAqBC,CAAW,EACxCO,EAAS,GACf,UAAW9kH,KAAQwkH,EAAO,CACxB,GAAIxkH,EAAK,MAAQ,IAAM,EACrB,SAEF,MAAM+kH,EAAY/C,GAAqBhiH,EAAK,KAAM,CAAE,UAAW,GAAM,EAC/D4N,EAASo2G,GAAWe,CAAS,EAC7BC,EAAYR,EACf,OAAQx/G,GAAcA,EAAU,cAAgBhF,EAAK,OAASgF,EAAU,MAAQ,IAAM,CAAC,EACvF,IAAKA,GAAcg9G,GAAqBh9G,EAAU,KAAM,CAAE,UAAW,GAAO,CAAC,EAChF8/G,EAAO,KAAK,CACV,MAAOA,EAAO,OACd,eAAgB,EAChB,MAAOl3G,EAAO,KACd,OAAQA,EAAO,KACf,UAAAm3G,EACA,UAAAC,EACA,eAAgB,GAChB,gBAAiB,GAClB,CACH,CACA,GAAI,CAACF,EAAO,OACV,MAAM,IAAI,MAAM,qDAAqD,EAEvE,OAAOA,CACT,CAEA,SAASG,GAA2B3uG,EAAMwtG,EAAOC,EAAQ,CACvD,MAAMn2G,EAASo2G,GAAW1tG,CAAI,EAC9B,OAAI1I,EAAO,MAAQk2G,EAAQrC,IAAuB7zG,EAAO,MAAQm2G,EAAStC,GACjE,UAEL7zG,EAAO,MAAQk2G,EAAQrC,IAAuB7zG,EAAO,MAAQm2G,EAAStC,GACjE,SAEF,YACT,CAEA,SAASyD,GAAkBC,EAAa1C,EAAW2C,EAAcC,EAAe,CAC9E,MAAMC,EAAW7C,EAAU,IAAI,CAACQ,EAAUl2H,IAAU,CAClD,MAAMw4H,EAAcH,EAAar4H,CAAK,GAAK,CACzC,UAAWw0H,GAAmB,GAC9B,SAAUH,EAAA,EAENoE,EAAeC,GAA2BF,CAAW,EACrDG,EAAiB,KAAK,IAAIF,CAAY,EACtCG,EAAe,KAAK,IAAIN,EAAgB,EAAIxD,GAAiCJ,EAAmB,EAChGmE,EAAgBD,EAAeN,EAC/BQ,EAAmBH,EAAiB,KAAQE,EAAgBF,EAAkB,EAAI,EACxF,MAAO,CACL,SAAAzC,EACA,aAAAuC,EACA,aAAAG,EACA,cAAAC,EACA,MAAO3C,EAAS,EAAI4C,EACpB,OAAQ5C,EAAS,EAAI4C,CAAA,CAEzB,CAAC,EAED,QAAS94H,EAAQ,EAAGA,EAAQu4H,EAAS,OAAQv4H,GAAS,EAAG,CACvD,MAAM+4H,EAAUR,EAASv4H,CAAK,EAC9B+4H,EAAQ,MAAQj5G,GAAMi5G,EAAQ,MAAOX,EAAY,KAAMW,EAAQ,SAAS,CAAC,EACzEA,EAAQ,OAASj5G,GAAMi5G,EAAQ,OAAQA,EAAQ,SAAS,EAAGX,EAAY,IAAI,CAC7E,CAEA,QAASp4H,EAAQ,EAAGA,EAAQu4H,EAAS,OAAS,EAAGv4H,GAAS,EAAG,CAC3D,MAAM5B,EAAUm6H,EAASv4H,CAAK,EACxBzB,EAAOg6H,EAASv4H,EAAQ,CAAC,EACzBg5H,GAAY56H,EAAQ,SAAS,EAAIG,EAAK,SAAS,GAAK,EAC1DH,EAAQ,OAAS,KAAK,IAAIA,EAAQ,OAAQ46H,CAAQ,EAClDz6H,EAAK,MAAQ,KAAK,IAAIA,EAAK,MAAOy6H,CAAQ,CAC5C,CAEA,OAAOT,EAAS,IAAKQ,GAAY,CAC/B,MAAME,EAAY,KAAK,IAAIF,EAAQ,OAASA,EAAQ,MAAO,CAAC,EACtDJ,EAAiB,KAAK,IAAII,EAAQ,YAAY,EAC9CF,EAAgBF,EAAiB,MAAQM,EAAYvE,GACvDuE,EAAYN,EACZI,EAAQ,cACZ,MAAO,CACL,GAAGA,EACH,UAAAE,EACA,cAAAJ,EACA,aAAc,KAAK,IAAIA,EAAgBP,EAAe5D,EAAmB,EAE7E,CAAC,CACH,CAEA,SAASwE,GAA+BjB,EAAWkB,EAAc,CAC/D,UAAWC,KAAYnB,EACrB,UAAWoB,KAAeF,EACxB,GAAI,EAAAE,EAAY,OAASA,EAAY,OAAS3E,KAG1CwD,GAA2BkB,EAAUC,EAAY,MAAOA,EAAY,MAAM,IAAM,UAClF,MAAM,IAAI,MAAM,uEAAuE,CAI/F,CAEA,SAASC,GAAsBtB,EAAWC,EAAWkB,EAAc,CACjE,MAAMf,EAAcnB,GAAWe,CAAS,EACxCkB,GAA+BjB,EAAWkB,CAAY,EAEtD,MAAMpB,EAAS,GACf,IAAIhB,EAAQqB,EAAY,KACxB,QAASp4H,EAAQ,EAAGA,GAASm5H,EAAa,OAAQn5H,GAAS,EAAG,CAC5D,MAAMq5H,EAAcF,EAAan5H,CAAK,GAAK,KACrCg3H,EAASqC,EAAcA,EAAY,MAAQjB,EAAY,KAC7D,GAAIpB,EAASD,GAASrC,GAAqB,CACrC2E,IACFtC,EAAQ,KAAK,IAAIA,EAAOsC,EAAY,MAAM,GAE5C,QACF,CACA,MAAME,EAAetE,GAAqB6B,GAAekB,EAAWjB,EAAOC,CAAM,EAAG,CAAE,UAAW,GAAM,EACvG,GAAIuC,EAAa,OAAS,EAAG,CACvBF,IACFtC,EAAQ,KAAK,IAAIA,EAAOsC,EAAY,MAAM,GAE5C,QACF,CAEA,MAAMG,EAAa,GACnB,UAAWJ,KAAYnB,EAAW,CAChC,MAAMwB,EAAiBvB,GAA2BkB,EAAUrC,EAAOC,CAAM,EACzE,GAAIyC,IAAmB,SAAU,CAC/BD,EAAW,KAAKvE,GAAqBmE,EAAU,CAAE,UAAW,GAAO,CAAC,EACpE,QACF,CACA,GAAIK,IAAmB,aACrB,MAAM,IAAI,MAAM,gEAAgE,CAEpF,CAEA1B,EAAO,KAAK,CACV,MAAOA,EAAO,OACd,eAAgB/3H,EAChB,MAAA+2H,EACA,OAAAC,EACA,UAAWuC,EACX,UAAWC,EACX,eAAgBzE,GAAYgC,EAAOqB,EAAY,IAAI,EACnD,gBAAiBrD,GAAYiC,EAAQoB,EAAY,IAAI,EACtD,EAEGiB,IACFtC,EAAQ,KAAK,IAAIA,EAAOsC,EAAY,MAAM,EAE9C,CAEA,GAAI,CAACtB,EAAO,OACV,MAAM,IAAI,MAAM,qDAAqD,EAEvE,MAAO,CACL,OAAAA,EACA,OAAQK,CAAA,CAEZ,CAEA,SAASsB,GAAe1jE,EAAU1e,EAAS7hC,EAAGC,EAAGu6F,EAAG,CAClD,MAAM0pB,EAAc3jE,EAAS,OAAS,EACtCA,EAAS,KAAK,GAAGvgD,EAAG,GAAGC,EAAG,GAAGu6F,CAAC,EAC9B34D,EAAQ,KAAKqiF,EAAaA,EAAc,EAAGA,EAAc,CAAC,CAC5D,CAEA,SAASC,GAAgBnkH,EAAGC,EAAGu6F,EAAG4pB,EAAY,GAAM,CAClD,MAAMC,EAAMpkH,EAAE,CAAC,EAAID,EAAE,CAAC,EAChBskH,EAAMrkH,EAAE,CAAC,EAAID,EAAE,CAAC,EAChBukH,EAAM/pB,EAAE,CAAC,EAAIx6F,EAAE,CAAC,EAChBwkH,EAAMhqB,EAAE,CAAC,EAAIx6F,EAAE,CAAC,EAChBykH,EAASH,EAAMC,EAAMF,EAAMG,EACjC,OAAKJ,GAAaK,EAAS,GAAO,CAACL,GAAaK,EAAS,EAChD,CAACzkH,EAAGw6F,EAAGv6F,CAAC,EAEV,CAACD,EAAGC,EAAGu6F,CAAC,CACjB,CAEA,SAASkqB,GAAmB30E,EAAQtkC,EAAO,CACzC,KAAM,CAACsF,EAAGC,EAAGwrB,CAAC,EAAI/wB,EACZykC,EAAWH,EAAO,SACxB,MAAO,CACLG,EAAS,CAAC,EAAIn/B,EAAIm/B,EAAS,CAAC,EAAIl/B,EAAIk/B,EAAS,CAAC,EAAI1T,EAAI0T,EAAS,EAAE,EACjEA,EAAS,CAAC,EAAIn/B,EAAIm/B,EAAS,CAAC,EAAIl/B,EAAIk/B,EAAS,CAAC,EAAI1T,EAAI0T,EAAS,EAAE,EACjEA,EAAS,CAAC,EAAIn/B,EAAIm/B,EAAS,CAAC,EAAIl/B,EAAIk/B,EAAS,EAAE,EAAI1T,EAAI0T,EAAS,EAAE,EAEtE,CAEA,SAASy0E,GAA0BpkE,EAAU1e,EAASkO,EAAQ/vC,EAAGC,EAAGu6F,EAAG4pB,EAAW,CAChF,MAAMQ,EAAWT,GACfO,GAAmB30E,EAAQ/vC,CAAC,EAC5B0kH,GAAmB30E,EAAQ9vC,CAAC,EAC5BykH,GAAmB30E,EAAQyqD,CAAC,EAC5B4pB,CAAA,EAEFH,GAAe1jE,EAAU1e,EAAS+iF,EAAS,CAAC,EAAGA,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,CACzE,CAEA,SAASC,GAAsBtkE,EAAU1e,EAASkO,EAAQ/vC,EAAGC,EAAGu6F,EAAGuB,EAAG+oB,EAAU,GAAO,CACrF,MAAMC,EAAeL,GAAmB30E,EAAQ/vC,CAAC,EAC3CglH,EAAeN,GAAmB30E,EAAQ9vC,CAAC,EAC3CglH,EAAeP,GAAmB30E,EAAQyqD,CAAC,EAC3C0qB,EAAeR,GAAmB30E,EAAQgsD,CAAC,EACjD,GAAI+oB,EAAS,CACXb,GAAe1jE,EAAU1e,EAASkjF,EAAcE,EAAcD,CAAY,EAC1Ef,GAAe1jE,EAAU1e,EAASkjF,EAAcG,EAAcD,CAAY,EAC1E,MACF,CACAhB,GAAe1jE,EAAU1e,EAASkjF,EAAcC,EAAcC,CAAY,EAC1EhB,GAAe1jE,EAAU1e,EAASkjF,EAAcE,EAAcC,CAAY,CAC5E,CAEA,SAASC,GAAa5kE,EAAUxvC,EAAGC,EAAGwrB,EAAG,CACvC,OAAA+jB,EAAS,KAAKxvC,EAAGC,EAAGwrB,CAAC,EACb+jB,EAAS,OAAS,EAAK,CACjC,CAEA,SAAS6kE,GAA6B7kE,EAAU/S,EAAauC,EAAQ5jC,EAAOC,EAAK,CAC/E,MAAMi5G,EAAmBX,GAAmB30E,EAAQ5jC,CAAK,EACnDm5G,EAAiBZ,GAAmB30E,EAAQ3jC,CAAG,EAC/CzlB,EAAaw+H,GAAa5kE,EAAU8kE,EAAiB,CAAC,EAAGA,EAAiB,CAAC,EAAGA,EAAiB,CAAC,CAAC,EACjGpjF,EAAWkjF,GAAa5kE,EAAU+kE,EAAe,CAAC,EAAGA,EAAe,CAAC,EAAGA,EAAe,CAAC,CAAC,EAC/F93E,EAAY,KAAK7mD,EAAYs7C,CAAQ,CACvC,CAEA,SAASsjF,GAA4Bp5G,EAAOC,EAAKo5G,EAAO,CACtD,OAAKlG,GAAYnzG,EAAM,CAAC,EAAGC,EAAI,CAAC,EAAG8yG,EAAyB,EAGxD,GAAAI,GAAYnzG,EAAM,CAAC,EAAGq5G,EAAM,MAAOtG,EAAyB,GAAK,CAACsG,EAAM,gBAGxElG,GAAYnzG,EAAM,CAAC,EAAGq5G,EAAM,OAAQtG,EAAyB,GAAK,CAACsG,EAAM,iBALpE,EASX,CAEA,SAASC,GAAoBllE,EAAU1e,EAASkO,EAAQj8B,EAAM4xG,EAAMC,EAASC,EAAiB,IAAM,GAAO,CACzG,QAASr7H,EAAQ,EAAGA,EAAQupB,EAAK,OAAQvpB,GAAS,EAAG,CACnD,MAAM4hB,EAAQ2H,EAAKvpB,CAAK,EAClB6hB,EAAM0H,GAAMvpB,EAAQ,GAAKupB,EAAK,MAAM,EACtC8xG,EAAez5G,EAAOC,CAAG,IAG7Bu4G,GACEpkE,EACA1e,EACAkO,EACA,CAAC5jC,EAAM,CAAC,EAAGu5G,EAAMv5G,EAAM,CAAC,CAAC,EACzB,CAACC,EAAI,CAAC,EAAGs5G,EAAMt5G,EAAI,CAAC,CAAC,EACrB,CAACA,EAAI,CAAC,EAAGu5G,EAASv5G,EAAI,CAAC,CAAC,EACxB,IAEFu4G,GACEpkE,EACA1e,EACAkO,EACA,CAAC5jC,EAAM,CAAC,EAAGu5G,EAAMv5G,EAAM,CAAC,CAAC,EACzB,CAACC,EAAI,CAAC,EAAGu5G,EAASv5G,EAAI,CAAC,CAAC,EACxB,CAACD,EAAM,CAAC,EAAGw5G,EAASx5G,EAAM,CAAC,CAAC,EAC5B,IAEJ,CACF,CAEA,SAAS05G,GAAuBtlE,EAAU/S,EAAauC,EAAQj8B,EAAM4xG,EAAMC,EAASC,EAAiB,IAAM,GAAO,CAChH,QAASr7H,EAAQ,EAAGA,EAAQupB,EAAK,OAAQvpB,GAAS,EAAG,CACnD,MAAM4hB,EAAQ2H,EAAKvpB,CAAK,EAClB6hB,EAAM0H,GAAMvpB,EAAQ,GAAKupB,EAAK,MAAM,EACtC8xG,EAAez5G,EAAOC,CAAG,IAG7Bg5G,GACE7kE,EACA/S,EACAuC,EACA,CAAC5jC,EAAM,CAAC,EAAGu5G,EAAMv5G,EAAM,CAAC,CAAC,EACzB,CAACC,EAAI,CAAC,EAAGs5G,EAAMt5G,EAAI,CAAC,CAAC,GAEvBg5G,GACE7kE,EACA/S,EACAuC,EACA,CAAC5jC,EAAM,CAAC,EAAGw5G,EAASx5G,EAAM,CAAC,CAAC,EAC5B,CAACC,EAAI,CAAC,EAAGu5G,EAASv5G,EAAI,CAAC,CAAC,GAE1Bg5G,GACE7kE,EACA/S,EACAuC,EACA,CAAC5jC,EAAM,CAAC,EAAGu5G,EAAMv5G,EAAM,CAAC,CAAC,EACzB,CAACA,EAAM,CAAC,EAAGw5G,EAASx5G,EAAM,CAAC,CAAC,GAEhC,CACF,CAEA,SAAS82G,GAA2B1+F,EAAS,CAC3C,OAAQm8F,GAA0Bn8F,GAAS,SAAS,IAAMw6F,GAAmB,KAAO,GAAK,IACnF4B,GAAyBp8F,GAAS,QAAQ,EAAI,KAAK,GAAM,IACjE,CAEA,SAASuhG,GAA8BC,EAAWC,EAAShD,EAAc,CACvE,GAAI,KAAK,IAAIA,CAAY,GAAK,KAC5B,OAAO,IAAIiD,GAAA,EAAU,WAEvB,MAAM95G,EAAQ,IAAI+5G,GAAQ,GAAGH,CAAS,EAEhC5nE,EADM,IAAI+nE,GAAQ,GAAGF,CAAO,EACX,QAAQ,IAAI75G,CAAK,EACxC,GAAIgyC,EAAW,YAAc,MAC3B,OAAO,IAAI8nE,GAAA,EAAU,WAEvB9nE,EAAW,YACX,MAAMgoE,EAAoB,IAAIF,GAAA,EAAU,gBAAgB,CAAC95G,EAAM,EAAG,CAACA,EAAM,EAAG,CAACA,EAAM,CAAC,EAC9Ei6G,EAAS,IAAIH,GAAA,EAAU,iBAAiB9nE,EAAY6kE,CAAY,EAEtE,OADsB,IAAIiD,GAAA,EAAU,gBAAgB95G,EAAM,EAAGA,EAAM,EAAGA,EAAM,CAAC,EACxD,SAASi6G,CAAM,EAAE,SAASD,CAAiB,CAClE,CAEA,SAASE,GAA4BzC,EAAa,CAChD,MAAMZ,EAAeY,EAAY,aAC3BV,EAAiB,KAAK,IAAIF,CAAY,EAC5C,GAAIE,GAAkB,MAAQU,EAAY,WAAa3E,GACrD,OAAO,IAAIgH,GAAA,EAAU,WAEvB,MAAMK,EAAWtD,EAAe,EAAI,GAAK,EACnCuD,EAAO3C,EAAY,MAAQA,EAAY,cAAgB,KAAK,IAAIV,CAAc,EAC9EsD,EAAOF,EAAW1C,EAAY,eAAiB,EAAI,KAAK,IAAIV,CAAc,GAC1EuD,EAAqB,IAAIR,KAAU,gBAAgB,CAACrC,EAAY,OAAQ,EAAG,CAAC,EAC5EwC,EAAS,IAAIH,KAAU,cAAcjD,CAAY,EAEvD,OADuB,IAAIiD,GAAA,EAAU,gBAAgBM,EAAMC,EAAM,CAAC,EAC5C,SAASJ,CAAM,EAAE,SAASK,CAAkB,CACpE,CAEA,SAASC,GAAuBhD,EAAcb,EAAe,CAC3D,MAAM70E,EAAa,CAAC,IAAIi4E,GAAA,EAAU,UAAU,EACtCU,EAAiB,GACjBC,EAAoB,GAC1B,IAAIC,EAAgB,IAAIZ,GAAA,EAAU,WAElC,UAAWrC,KAAeF,EAAc,CACtC,MAAMjD,EAAWmD,EAAY,SACvBvqE,EAAawtE,EAAc,QAUjC,GATAD,EAAkB,KAChB,GAAGlC,GAAmBrrE,EAAY,CAAConE,EAAS,MAAM,CAAC,EAAGoC,EAAgB7D,GAAwByB,EAAS,MAAM,CAAC,CAAC,CAAC,EAChH,GAAGiE,GAAmBrrE,EAAY,CAAConE,EAAS,IAAI,CAAC,EAAGoC,EAAgB7D,GAAwByB,EAAS,IAAI,CAAC,CAAC,CAAC,GAG9GkG,EAAe,KAAK,CAClB,YAAA/C,EACA,OAAQvqE,CAAA,CACT,EACGuqE,EAAY,UAAY3E,GAC1B4H,EAAgBxtE,EAAW,QAAQ,SAASgtE,GAA4BzC,CAAW,CAAC,MAC/E,CACL,MAAMmC,EAAYrB,GAAmBrrE,EAAY,CAAConE,EAAS,MAAM,CAAC,EAAG,EAAGA,EAAS,MAAM,CAAC,CAAC,CAAC,EACpFuF,EAAUtB,GAAmBrrE,EAAY,CAAConE,EAAS,IAAI,CAAC,EAAG,EAAGA,EAAS,IAAI,CAAC,CAAC,CAAC,EAEpFoG,EADmBf,GAA8BC,EAAWC,EAASpC,EAAY,YAAY,EAClE,QAAQ,SAASvqE,CAAU,CACxD,CACArL,EAAW,KAAK64E,EAAc,OAAO,CACvC,CAEA,MAAO,CACL,WAAA74E,EACA,eAAA24E,EACA,kBAAAC,CAAA,CAEJ,CAEA,SAASE,GAAeC,EAAW,CACjC,MAAMC,EAAkBD,EACrB,IAAI,CAAC,CAACz8G,EAAKC,CAAG,IAAM,CAAC,KAAK,IAAID,EAAKC,CAAG,EAAG,KAAK,IAAID,EAAKC,CAAG,CAAC,CAAC,EAC5D,OAAO,CAAC,CAACD,EAAKC,CAAG,IAAMA,EAAMD,EAAM20G,EAAmB,EACtD,KAAK,CAACj/G,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EACvBsZ,EAAS,GACf,UAAW0tG,KAAYD,EAAiB,CACtC,MAAMp6G,EAAW2M,EAAOA,EAAO,OAAS,CAAC,EACzC,GAAI3M,GAAYq6G,EAAS,CAAC,GAAKr6G,EAAS,CAAC,EAAIqyG,GAAqB,CAChEryG,EAAS,CAAC,EAAI,KAAK,IAAIA,EAAS,CAAC,EAAGq6G,EAAS,CAAC,CAAC,EAC/C,QACF,CACA1tG,EAAO,KAAK,CAAC,GAAG0tG,CAAQ,CAAC,CAC3B,CACA,OAAO1tG,CACT,CAEA,SAAS2tG,GAAyBpzG,EAAMqzG,EAAW,CACjD,MAAMJ,EAAY,GAClB,QAASx8H,EAAQ,EAAGA,EAAQupB,EAAK,OAAQvpB,GAAS,EAAG,CACnD,MAAM4hB,EAAQ2H,EAAKvpB,CAAK,EAClB6hB,EAAM0H,GAAMvpB,EAAQ,GAAKupB,EAAK,MAAM,EAExCwrG,GAAYnzG,EAAM,CAAC,EAAGg7G,EAAWjI,EAAyB,GAC1DI,GAAYlzG,EAAI,CAAC,EAAG+6G,EAAWjI,EAAyB,GACxD,KAAK,IAAI9yG,EAAI,CAAC,EAAID,EAAM,CAAC,CAAC,EAAI8yG,IAE9B8H,EAAU,KAAK,CAAC56G,EAAM,CAAC,EAAGC,EAAI,CAAC,CAAC,CAAC,CAErC,CACA,OAAO26G,CACT,CAEA,SAASK,GAAsBC,EAAeC,EAAgB,CAC5D,MAAM7sD,EAAgB,GACtB,UAAW5+D,KAAQwrH,EACjB,UAAWvrH,KAASwrH,EAAgB,CAClC,MAAMh9G,EAAM,KAAK,IAAIzO,EAAK,CAAC,EAAGC,EAAM,CAAC,CAAC,EAChCyO,EAAM,KAAK,IAAI1O,EAAK,CAAC,EAAGC,EAAM,CAAC,CAAC,EAClCyO,EAAMD,EAAM20G,IACdxkD,EAAc,KAAK,CAACnwD,EAAKC,CAAG,CAAC,CAEjC,CAEF,OAAOu8G,GAAersD,CAAa,CACrC,CAEA,SAAS8sD,GAAqBjF,EAAQsB,EAAa,CACjD,MAAMyD,EAAgB,GAChBC,EAAiB,GACvB,UAAW9B,KAASlD,EACdhD,GAAYkG,EAAM,OAAQ5B,EAAY,MAAO1E,EAAyB,GAAK,CAACsG,EAAM,iBACpF6B,EAAc,KAAK,GAAGH,GAAyB1B,EAAM,UAAW5B,EAAY,KAAK,CAAC,EAEhFtE,GAAYkG,EAAM,MAAO5B,EAAY,OAAQ1E,EAAyB,GAAK,CAACsG,EAAM,gBACpF8B,EAAe,KAAK,GAAGJ,GAAyB1B,EAAM,UAAW5B,EAAY,MAAM,CAAC,EAGxF,MAAM4D,EAAaV,GAAeO,CAAa,EACzCI,EAAcX,GAAeQ,CAAc,EACjD,OAAIE,EAAW,QAAUC,EAAY,OAC5BL,GAAsBI,EAAYC,CAAW,EAElDD,EAAW,OACNA,EAELC,EAAY,OACPA,EAEF,CAAC,CAAC7D,EAAY,SAAS,KAAMA,EAAY,SAAS,IAAI,CAAC,EAAE,OAAO,CAAC,CAACt5G,EAAKC,CAAG,IAAMA,EAAMD,EAAM20G,EAAmB,CACxH,CAEA,SAASyI,GAAuBn5G,EAAQy0G,EAAc,CACpD,OAAO34G,GACL6iF,GAAoB,KAAK,IAAI3+E,EAAQ0wG,EAAmB,EAAG+D,CAAY,EACvE7D,GACAC,EAAA,CAEJ,CAEA,SAASuI,GAAa/D,EAAagE,EAAUprF,EAAGwmF,EAAc,CAC5D,MAAMrqF,GAAWirF,EAAY,aAAe,EAAI,GAAK,GAAKA,EAAY,cAChEiE,EAAeD,EAAWjvF,EAChC,MAAO,CACLirF,EAAY,MAAQiE,EAAe,KAAK,IAAI7E,CAAY,EACxDrqF,EAAUkvF,EAAe,KAAK,IAAI7E,CAAY,EAC9CxmF,CAAA,CAEJ,CAEA,SAASsrF,GAAqBvnE,EAAU1e,EAASkO,EAAQ6zE,EAAagE,EAAUG,EAAMC,EAAMC,EAAYC,EAAUpD,EAAS,CACzHD,GACEtkE,EACA1e,EACAkO,EACA43E,GAAa/D,EAAagE,EAAUG,EAAME,CAAU,EACpDN,GAAa/D,EAAagE,EAAUG,EAAMG,CAAQ,EAClDP,GAAa/D,EAAagE,EAAUI,EAAME,CAAQ,EAClDP,GAAa/D,EAAagE,EAAUI,EAAMC,CAAU,EACpDnD,CAAA,CAEJ,CAEA,SAASqD,GAAqB5nE,EAAU1e,EAASkO,EAAQ6zE,EAAaf,EAAermF,EAAGyrF,EAAYC,EAAUpD,EAAS,CACrHD,GACEtkE,EACA1e,EACAkO,EACA43E,GAAa/D,EAAaf,EAAermF,EAAGyrF,CAAU,EACtDN,GAAa/D,EAAaf,EAAermF,EAAG0rF,CAAQ,EACpDP,GAAa/D,EAAa,CAACf,EAAermF,EAAG0rF,CAAQ,EACrDP,GAAa/D,EAAa,CAACf,EAAermF,EAAGyrF,CAAU,EACvDnD,CAAA,CAEJ,CAEA,SAASsD,GAA0B7nE,EAAU/S,EAAauC,EAAQ6zE,EAAagE,EAAUprF,EAAGyrF,EAAYC,EAAU,CAChH9C,GACE7kE,EACA/S,EACAuC,EACA43E,GAAa/D,EAAagE,EAAUprF,EAAGyrF,CAAU,EACjDN,GAAa/D,EAAagE,EAAUprF,EAAG0rF,CAAQ,EAEnD,CAEA,SAASG,GAA4B9nE,EAAU/S,EAAauC,EAAQ6zE,EAAaf,EAAermF,EAAGwmF,EAAc,CAC/GoC,GACE7kE,EACA/S,EACAuC,EACA43E,GAAa/D,EAAaf,EAAermF,EAAGwmF,CAAY,EACxD2E,GAAa/D,EAAa,CAACf,EAAermF,EAAGwmF,CAAY,EAE7D,CAEA,SAASsF,GAAyB/nE,EAAU1e,EAAS0mF,EAAc/6E,EAAag7E,EAAevB,EAAUpE,EAAe,CACtH,KAAM,CAAE,YAAAe,GAAgB4E,EAClBxF,EAAeY,EAAY,aACjC,GAAI,KAAK,IAAIZ,CAAY,GAAK,KAC5B,OAGF,KAAM,CAAC+E,EAAMC,CAAI,EAAIf,EACrB,GAAIe,EAAOD,GAAQ9I,GACjB,OAGF,MAAMlvE,EAASy4E,EAAc,OACvBx4G,EAAe03G,GAAuB9D,EAAY,cAAgBf,EAAeG,CAAY,EAC7FyF,EAAoBzF,EAAe,EACnC0F,EAAgB1F,EAAe,EAC/B2F,EAAgB3F,EAAe,EAErC,QAAS1mG,EAAe,EAAGA,EAAetM,EAAcsM,GAAgB,EAAG,CACzE,MAAM2rG,EAAajF,GAAgB1mG,EAAetM,GAC5Ck4G,EAAWlF,IAAiB1mG,EAAe,GAAKtM,GAEtD83G,GACEvnE,EACA1e,EACAkO,EACA6zE,EACAf,EACAkF,EACAC,EACAC,EACAC,EACAO,CAAA,EAEFX,GACEvnE,EACA1e,EACAkO,EACA6zE,EACA,CAACf,EACDkF,EACAC,EACAC,EACAC,EACAO,CAAA,EAEFN,GACE5nE,EACA1e,EACAkO,EACA6zE,EACAf,EACAkF,EACAE,EACAC,EACAQ,CAAA,EAEFP,GACE5nE,EACA1e,EACAkO,EACA6zE,EACAf,EACAmF,EACAC,EACAC,EACAS,CAAA,EAGF,UAAWf,IAAY,CAAC/E,EAAe,CAACA,CAAa,EACnDuF,GAA0BG,EAAc/6E,EAAauC,EAAQ6zE,EAAagE,EAAUG,EAAME,EAAYC,CAAQ,EAC9GE,GAA0BG,EAAc/6E,EAAauC,EAAQ6zE,EAAagE,EAAUI,EAAMC,EAAYC,CAAQ,CAElH,CAEA,UAAWh4G,IAAS,CAAC,EAAG8yG,CAAY,EAClCqF,GAA4BE,EAAc/6E,EAAauC,EAAQ6zE,EAAaf,EAAekF,EAAM73G,CAAK,EACtGm4G,GAA4BE,EAAc/6E,EAAauC,EAAQ6zE,EAAaf,EAAemF,EAAM93G,CAAK,CAE1G,CAEA,SAAS04G,GAAyBroE,EAAU1e,EAAS0mF,EAAc/6E,EAAa80E,EAAQqE,EAAgB9D,EAAe,CACrH,UAAW2F,KAAiB7B,EAAgB,CAC1C,MAAMI,EAAYQ,GAAqBjF,EAAQkG,EAAc,WAAW,EACxE,UAAWvB,KAAYF,EACrBuB,GAAyB/nE,EAAU1e,EAAS0mF,EAAc/6E,EAAag7E,EAAevB,EAAUpE,CAAa,CAEjH,CACF,CAEA,SAASgG,GAAYtoE,EAAU,CAC7B,GAAI,CAACA,EAAS,OACZ,MAAO,CACL,IAAK,CAAC,EAAG,EAAG,CAAC,EACb,IAAK,CAAC,EAAG,EAAG,CAAC,GAGjB,IAAIiqD,EAAO,OAAO,kBACdE,EAAO,OAAO,kBACdoe,EAAO,OAAO,kBACdre,EAAO,OAAO,kBACdE,EAAO,OAAO,kBACdoe,EAAO,OAAO,kBAClB,QAASx+H,EAAQ,EAAGA,EAAQg2D,EAAS,OAAQh2D,GAAS,EAAG,CACvD,MAAMwmB,EAAIwvC,EAASh2D,CAAK,EAClBymB,EAAIuvC,EAASh2D,EAAQ,CAAC,EACtBiyC,EAAI+jB,EAASh2D,EAAQ,CAAC,EAC5BigH,EAAO,KAAK,IAAIA,EAAMz5F,CAAC,EACvB25F,EAAO,KAAK,IAAIA,EAAM15F,CAAC,EACvB83G,EAAO,KAAK,IAAIA,EAAMtsF,CAAC,EACvBiuE,EAAO,KAAK,IAAIA,EAAM15F,CAAC,EACvB45F,EAAO,KAAK,IAAIA,EAAM35F,CAAC,EACvB+3G,EAAO,KAAK,IAAIA,EAAMvsF,CAAC,CACzB,CACA,MAAO,CACL,IAAK,CAACguE,EAAME,EAAMoe,CAAI,EACtB,IAAK,CAACre,EAAME,EAAMoe,CAAI,EAE1B,CAEA,SAASC,GAA6Br7B,EAAS,CAC7C,KAAM,CAAE,MAAAl5E,EAAO,UAAW4rG,CAAA,EAAiBnyB,GAAcP,CAAO,EAC1Do0B,EAAc,CAAC,GAAGttG,CAAK,EAAE,KAAK,CAAC,EAAGxU,IAAM,KAAK,IAAIs/G,GAAkBt/G,CAAC,CAAC,EAAI,KAAK,IAAIs/G,GAAkB,CAAC,CAAC,CAAC,EACvGgD,EAAY/C,GAAqBuC,EAAY,CAAC,GAAK,GAAI,CAAE,UAAW,GAAM,EAChF,GAAI,CAACQ,EAAU,OACb,MAAM,IAAI,MAAM,wCAAwC,EAE1D,MAAMC,EAAYT,EAAY,MAAM,CAAC,EAAE,IAAKjuG,GAAS0rG,GAAqB1rG,EAAM,CAAE,UAAW,GAAO,CAAC,EAC/FmsG,EAAYG,GAAcC,CAAY,EAC5C,OAAAG,GAAkBP,CAAS,EACpB,CACL,MAAO8B,EACP,UAAAQ,EACA,UAAAC,EACA,UAAAvC,CAAA,CAEJ,CAEO,SAASgJ,GAAwBt7B,EAASu7B,EAAatG,EAAe,KAAM,CACjF,KAAM,CAAE,MAAAnuG,EAAO,UAAA8tG,EAAW,UAAAC,EAAW,UAAAvC,CAAA,EAAc+I,GAA6Br7B,CAAO,EACjFw7B,EAAwBtI,GAC5BqI,EACA12E,GAAem7C,GAAS,mBAAoB8wB,EAAgC,GAExE2K,EAAyBtI,GAAyBnzB,EAASi1B,CAAY,EACvEC,EAAgBsG,EAAwB,EAC9C,IAAI7G,EACAqE,EACAC,EACA54E,EACJ,GAAIiyE,EAAU,OAAQ,CACpB,MAAM0C,EAAcnB,GAAWe,CAAS,EAClCmB,EAAehB,GAAkBC,EAAa1C,EAAWmJ,EAAwBvG,CAAa,GACnG,CAAE,OAAAP,CAAA,EAAWuB,GAAsBtB,EAAWC,EAAWkB,CAAY,GACrE,CAAE,WAAA11E,EAAY,eAAA24E,EAAgB,kBAAAC,GAAsBF,GAAuBhD,EAAcb,CAAa,CACzG,MACEP,EAASD,GAA0B5tG,CAAK,EACxCu5B,EAAa,CAAC,IAAIi4E,GAAA,EAAU,UAAU,EACtCU,EAAiB,GACjBC,EAAoB,GAGtB,MAAMyC,EAAmB,GACnBxnF,EAAU,GACV0mF,EAAe,GACf/6E,EAAc,GAEpB,UAAWg4E,KAASlD,EAAQ,CAC1B,MAAMvyE,EAAS/B,EAAWw3E,EAAM,cAAc,GAAKx3E,EAAWA,EAAW,OAAS,CAAC,GAAK,IAAIi4E,GAAA,EAAU,WAChGqD,EAAe9D,EAAM,UAAU,IAAI,CAAC,CAACz0G,EAAGC,CAAC,IAAM,IAAI2uG,GAAQ5uG,EAAGC,CAAC,CAAC,EAChEu4G,EAAc/D,EAAM,UAAU,IAAK1xG,GAASA,EAAK,IAAI,CAAC,CAAC/C,EAAGC,CAAC,IAAM,IAAI2uG,GAAQ5uG,EAAGC,CAAC,CAAC,CAAC,EACnFu7B,EAAQszE,GAAW,iBAAiByJ,EAAcC,CAAW,EAC7DC,EAAgBF,EAAa,OAAO,GAAGC,CAAW,EAExD,UAAWz1D,KAAQvnB,EAAO,CACxB,MAAMk9E,EAAKD,EAAc11D,EAAK,CAAC,CAAC,EAC1B41D,EAAKF,EAAc11D,EAAK,CAAC,CAAC,EAC1B61D,EAAKH,EAAc11D,EAAK,CAAC,CAAC,EAChC6wD,GACE0E,EACAxnF,EACAkO,EACA,CAAC05E,EAAG,EAAG5G,EAAe4G,EAAG,CAAC,EAC1B,CAACC,EAAG,EAAG7G,EAAe6G,EAAG,CAAC,EAC1B,CAACC,EAAG,EAAG9G,EAAe8G,EAAG,CAAC,EAC1B,IAEFhF,GACE0E,EACAxnF,EACAkO,EACA,CAAC05E,EAAG,EAAG,CAAC5G,EAAe4G,EAAG,CAAC,EAC3B,CAACC,EAAG,EAAG,CAAC7G,EAAe6G,EAAG,CAAC,EAC3B,CAACC,EAAG,EAAG,CAAC9G,EAAe8G,EAAG,CAAC,EAC3B,GAEJ,CAEA,MAAMC,EAAgB,CAACz9G,EAAOC,IAAQm5G,GAA4Bp5G,EAAOC,EAAKo5G,CAAK,EACnFC,GAAoB4D,EAAkBxnF,EAASkO,EAAQy1E,EAAM,UAAW3C,EAAe,CAACA,EAAe+G,CAAa,EACpH/D,GAAuB0C,EAAc/6E,EAAauC,EAAQy1E,EAAM,UAAW3C,EAAe,CAACA,EAAe+G,CAAa,EAEvH,UAAWjG,KAAY6B,EAAM,UAC3BC,GAAoB4D,EAAkBxnF,EAASkO,EAAQ4zE,EAAUd,EAAe,CAACA,CAAa,EAC9FgD,GAAuB0C,EAAc/6E,EAAauC,EAAQ4zE,EAAUd,EAAe,CAACA,CAAa,CAErG,CACA+F,GACES,EACAxnF,EACA0mF,EACA/6E,EACA80E,EACAqE,EACA9D,CAAA,EAGF,MAAMgH,EAAsBR,EAAiB,OAAS,EAChDS,EAAmB,IAAI,aAAaT,EAAiB,OAASd,EAAa,MAAM,EACvFuB,EAAiB,IAAIT,EAAkB,CAAC,EACxCS,EAAiB,IAAIvB,EAAcc,EAAiB,MAAM,EAE1D,MAAMU,EAAsB,IAAI,YAAYv8E,EAAY,MAAM,EAC9D,QAASjjD,EAAQ,EAAGA,EAAQijD,EAAY,OAAQjjD,GAAS,EACvDw/H,EAAoBx/H,CAAK,EAAIijD,EAAYjjD,CAAK,EAAIs/H,EAIpD,MAAO,CACL,eAAgB,sBAChB,kBAAmB,GACnB,OAJahB,GAAYiB,CAAgB,EAKzC,aAAcA,EAAiB,OAAS,EACxC,eAAgBjoF,EAAQ,OAAS,EACjC,iBAAkBkoF,EAAoB,OACtC,SAAUD,EACV,OAAQ,IAAI,aAAa,CAAC,EAC1B,QAAS,IAAI,aAAa,CAAC,EAC3B,QAAS,IAAI,YAAYjoF,CAAO,EAChC,aAAckoF,EACd,oBAAqB,IAAI,aAAanD,CAAiB,EACvD,MAAO,EAAC,CAEZ,CCvvCA,SAASoD,GAAU,CACjB,GAAG/mI,CACL,EAAG,CACD,aAAQgnI,GAAA,CAAwB,YAAU,YAAa,GAAGhnI,EAAO,CACnE,CAEA,SAASinI,GAAc,CACrB,UAAA1jI,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACy1H,GAAA,CACC,YAAU,iBACV,UAAWn2H,EAAG,qDAAsDxN,CAAS,EAC5E,GAAGvD,CAAA,EAEV,CAEA,SAASmnI,GAAiB,CACxB,UAAA5jI,EACA,SAAA+O,EACA,GAAGtS,CACL,EAAG,CACD,OACEyR,MAAC21H,GAAA,CAA0B,UAAU,OACnC,SAAA30H,OAAC40H,GAAA,CACC,YAAU,oBACV,UAAWt2H,EACT,2WACAxN,CAAA,EAED,GAAGvD,EAEH,UAAAsS,EACDb,MAAC61H,GAAA,CAAgB,UAAU,8CAA8C,KAE7E,CAEJ,CAEA,SAASC,GAAiB,CACxB,UAAAhkI,EACA,SAAA+O,EACA,GAAGtS,CACL,EAAG,CACD,OACEyR,MAAC+1H,GAAA,CACC,YAAU,oBACV,UAAU,0BACT,GAAGxnI,EAEJ,eAAC,OAAI,UAAW+Q,EAAG,OAAQxN,CAAS,EAAI,SAAA+O,CAAA,CAAS,GAGvD,CCxDA,SAASm1H,GAAW,CAClB,UAAAlkI,EACA,kBAAAmkI,EACA,WAAAC,EAAa,WACb,KAAMC,EACN,gBAAiBC,EACjB,SAAAv1H,EACA,GAAGtS,CACL,EAAG,CACD,MAAM8nI,EAAwB,MAAM,QAAQH,CAAU,EAClDA,EACA,CAACA,CAAU,EAAE,OAAO,OAAO,EACzBI,EAAyBD,EAAsB,SAAS,YAAY,EACpEE,EAAuBF,EAAsB,SAAS,UAAU,EAChEG,EAAYF,EAAyB,kBAAoB,oBACzDG,EAAYF,EAAuB,kBAAoB,oBAE7D,OACEv2H,MAAC,OAAI,YAAU,cAAc,UAAWV,EAAG,WAAYxN,CAAS,EAAI,GAAGvD,EACrE,SAAAyR,MAAC,OACC,YAAU,uBACV,UAAWV,EACT,qJACAk3H,EACAC,EACAR,CAAA,EAEF,SAAAj2H,MAAC,OAAI,UAAWV,EAAG,aAAcg3H,EAAyB,QAAU,QAAQ,EACzE,SAAAz1H,CAAA,CACH,IAEJ,CAEJ,CChCA,SAAS61H,GAAO,CACd,UAAA5kI,EACA,eAAA6kI,EACA,GAAGpoI,CACL,EAAG,CACD,OACEyR,MAAC42H,GAAA,CACC,YAAU,SACV,UAAWt3H,EACT,kWACAxN,CAAA,EAED,GAAGvD,EAEJ,SAAAyR,MAAC62H,GAAA,CACC,YAAU,eACV,UAAWv3H,EACT,kKACAq3H,CAAA,CACF,EACF,EAGN,CCXA,MAAMG,GAA2B,IAC3BC,GAA+B,IAC/BC,GAA+B,oCAC/BC,GAA0B,oCAC1BC,GAAkC,CACtC,qCACA,8CACA,mDACF,EAAE,KAAK,GAAG,EAEGC,GAAqC,2DACrCC,GAAqC,OACrCC,GAAiC,wBACjCC,GAA+B,YAC/BC,GAAkC,GAAGD,EAA4B,QACjEE,GAAkC,wBAClCC,GAAwC,cACxCC,GAAiC,iFACjCC,GAA0C,sEAC1CC,GAAiC,4HACjCC,GAAuC,CAClD,kLACA,sHACA,oHACF,EAAE,KAAK,GAAG,EACGC,GAAoC,mEACpCC,GAAyC,qDACzCC,GAAmC,yCACnCC,GAA2C,8EAE3CC,GAAoC,CAC/C,6BACA,yEACA,gHACA,yHACF,EAAE,KAAK,GAAG,EACGC,GAA0C,CACrD,oBACA,0EACA,sFACA,oDACF,EAAE,KAAK,GAAG,EACGC,GAAoC,CAC/C,8CACA,4FACA,mFACA,yEACF,EAAE,KAAK,GAAG,EACGC,GAAsC,CACjD,MACA,oCACA,4CACA,yCACA,0CACA,qCACA,qCACA,6CACA,8CACA,6CACA,2CACA,sCACA,uDACA,4CACA,kDACA,oDACA,yDACF,EAAE,KAAK,GAAG,EAEH,SAASC,GAAiB,CAC/B,MAAApqI,EACA,MAAAqqI,EACA,SAAA13H,EACA,UAAA/O,EACA,iBAAA0mI,EACA,iBAAAC,EACA,aAAAC,EACA,GAAGnqI,CACL,EAAG,CACD,OACEyS,OAACw0H,IAAc,MAAAtnI,EAAc,UAAWoR,EAAG,gBAAiBxN,CAAS,EAAI,GAAGvD,EAC1E,UAAAyR,MAAC01H,GAAA,CACC,UAAWp2H,EAAG63H,GAAoCsB,CAAgB,EACjE,GAAGC,EAEH,SAAAH,CAAA,SAEFzC,GAAA,CAAiB,UAAWx2H,EAAG83H,GAAoCoB,CAAgB,EACjF,SAAA33H,CAAA,CACH,GACF,CAEJ,CAEO,SAAS83H,GAAoB,CAClC,MAAAJ,EACA,SAAAK,EAAW,KACX,SAAA/3H,EACA,UAAA/O,EACA,iBAAA0mI,EACA,mBAAAK,EAAqB,EACvB,EAAG,CACD,OACE73H,OAAC,OACC,UAAW1B,EACT,SACAu5H,GAAsB,8DACtB/mI,CAAA,EAGF,UAAAkO,MAAC,OAAI,UAAU,6DAA6D,EAC5EgB,OAAC,OAAI,UAAU,yHACb,UAAAhB,MAAC,QAAK,UAAU,mBAAoB,SAAAu4H,EAAM,EACzCK,EAAW54H,MAAC,QAAK,UAAU,WAAY,WAAS,EAAU,MAC7D,EACAA,MAAC,OACC,UAAWV,EAAGg4H,GAA8BkB,CAAgB,EAC5D,4BAA0B,GAEzB,SAAA33H,CAAA,EACH,GAGN,CAGO,SAASi4H,GAAuB,CACrC,MAAAP,EACA,SAAA13H,EACA,UAAA/O,EACA,iBAAA0mI,CACF,EAAG,CACD,OACEx3H,OAAC,OACC,UAAW1B,EAAG,OAAQxN,CAAS,EAC/B,gCAA8B,GAE9B,UAAAkO,MAAC,OAAI,UAAW23H,GACb,SAAAY,EACH,EACAv4H,MAAC,OACC,UAAWV,EAAGg4H,GAA8BkB,CAAgB,EAC5D,4BAA0B,GAEzB,SAAA33H,CAAA,EACH,GAGN,CAEO,SAASk4H,GAAqB,CACnC,SAAAl4H,EACA,UAAA/O,CACF,EAAG,CACD,OACEkO,MAAC,OACC,UAAWV,EAAGi4H,GAAiCzlI,CAAS,EACxD,+BAA6B,GAC7B,4BAA0B,GAEzB,SAAA+O,CAAA,EAGP,CAEO,SAASm4H,GAAoB,CAClC,MAAAh9H,EACA,MAAA9N,EACA,SAAA0qI,EACA,SAAA/3H,EACA,UAAA/O,EACA,iBAAA0mI,EACA,eAAAS,EACA,QAAAC,EAAU,SACZ,EAAG,CACD,OACEl4H,OAAC,OACC,UAAW1B,EAAG+3H,GAAgCvlI,CAAS,EACvD,8BAA4B,GAC5B,2BAA0BonI,EAEzB,UAAAl9H,GAAS,MAAQ9N,GAAS,MAAQ0qI,GAAY,KAC7C53H,OAAC,OAAI,UAAU,kDACZ,UAAAhF,GAAS,KACRgE,MAAC,QAAK,UAAWV,EAAGo4H,GAAgCuB,CAAc,EAAI,SAAAj9H,CAAA,CAAM,EAC1EgE,MAAC,SAAK,EACT44H,IAA8B1qI,GAAS,WACrC,QAAK,UAAW0pI,GAAiC,SAAA1pI,CAAA,CAAM,EACtD,OACN,EACE,WACH,OAAI,UAAWoR,EAAG,UAAWk5H,CAAgB,EAAI,SAAA33H,CAAA,CAAS,IAGjE,CAEO,SAASs4H,GAA0BjrI,EAAO,CAC/C,SAAAsa,EAAW,EACX,IAAAoN,EAAM,KACN,IAAAC,EAAM,IACN,QAAAujH,EAAU,EACZ,EAAI,GAAI,CAEN,MAAMtxH,EADO,OAAO5Z,GAAS,EAAE,EAAE,OACd,MAAM,yCAAyC,EAC5DmrI,EAAgB,OAAO,SAAS,OAAO7wH,CAAQ,CAAC,EAAI,OAAOA,CAAQ,EAAI,EACvEE,EAAeZ,EAAQ,OAAOA,EAAM,CAAC,CAAC,EAAI,IAC1CwxH,EAAa,OAAO,SAAS,OAAO1jH,CAAG,CAAC,EAAI,OAAOA,CAAG,EAAI,KAC1D2jH,EAAa,OAAO,SAAS,OAAO1jH,CAAG,CAAC,EAAI,OAAOA,CAAG,EAAI,IAC1Dle,EAAgB,OAAO,SAAS+Q,CAAY,EAAIA,EAAe2wH,EAC/DG,EAAe,KAAK,IAAI,KAAK,IAAI7hI,EAAe2hI,CAAU,EAAG,KAAK,IAAIA,EAAYC,CAAU,CAAC,EACnG,OAAOH,EAAU,KAAK,MAAMI,CAAY,EAAIA,CAC9C,CAEO,SAASC,GAAoB,CAClC,MAAAvrI,EACA,cAAAwrI,EACA,SAAAC,EAAW,GACX,UAAAC,EACA,UAAAC,EAAY,UACZ,UAAA/nI,EACA,MAAAsR,CACF,EAAG,CACD,MAAM02H,EAAWvyD,SAAO,IAAI,EACtBwyD,EAAe,OAAO7rI,GAAS,EAAE,EACjC,CAAC8rI,EAAYC,CAAa,EAAI55D,WAAS05D,CAAY,EACnD,CAACx7C,EAASC,CAAU,EAAIne,WAAS,EAAK,EACtC65D,EAAgB3yD,SAAO,EAAK,EAC5B4yD,EAAkB5yD,SAAO,EAAK,EAC9B6yD,EAAe77C,EAAUy7C,EAAaD,EAE5Cz3D,YAAU,IAAM,CACTic,GACH07C,EAAcF,CAAY,CAE9B,EAAG,CAACA,EAAcx7C,CAAO,CAAC,EAE1Bjc,YAAU,IAAM,CACV,CAACic,GAAW,CAAC47C,EAAgB,UAGjCA,EAAgB,QAAU,GAC1BL,EAAS,SAAS,WACpB,EAAG,CAACv7C,EAAS67C,CAAY,CAAC,EAE1B,MAAMC,EAAoBr7C,GAAU,CAClCA,GAAO,WACH,OAAO,OAAW,KACpB,OAAO,wBAAwB,IAAMA,GAAO,UAAU,CAE1D,EAEA,OACEh/E,MAAC,SACC,IAAK85H,EACL,KAAK,OACL,UAAAD,EACA,MAAOO,EACP,SAAAT,EACA,eAAcp7C,EAAU,OAAS,QACjC,SAAWt6E,GAAU,CACnBg2H,EAAch2H,EAAM,OAAO,KAAK,CAClC,EACA,QAAUA,GAAU,CAClBk2H,EAAgB,QAAU,GAC1B37C,EAAW,EAAI,EACf67C,EAAiBp2H,EAAM,aAAa,CACtC,EACA,QAAUA,GAAU,CAClBk2H,EAAgB,QAAU,GAC1B37C,EAAW,EAAI,EACf67C,EAAiBp2H,EAAM,aAAa,CACtC,EACA,UAAYA,GAAU,CACpBA,EAAM,gBACR,EACA,OAAQ,IAAM,CAEZ,GADAu6E,EAAW,EAAK,EACZ07C,EAAc,QAAS,CACzBA,EAAc,QAAU,GACxB,MACF,CACAR,IAAgBM,CAAU,CAC5B,EACA,UAAY/1H,GAAU,CAChBA,EAAM,MAAQ,SAChBA,EAAM,cAAc,OAElBA,EAAM,MAAQ,WAChBi2H,EAAc,QAAU,GACxBD,EAAcF,CAAY,EAC1B91H,EAAM,cAAc,OAExB,EACA,UAAW3E,EACTu4H,GACA/lI,CAAA,EAEF,MAAO,CACL,YAAaysF,EAAU,cAAgB,OACvC,GAAGn7E,CAAA,EAEL,aAAYw2H,CAAA,EAGlB,CAEO,SAASU,GAAqB,CACnC,MAAAt+H,EACA,MAAA9N,EACA,SAAA0qI,EACA,cAAAc,EACA,gBAAAa,EACA,SAAA15H,EACA,UAAA/O,EACA,iBAAA0mI,EACA,eAAAS,CACF,EAAG,CACD,MAAMuB,EAAgB5B,IAAac,EACjC15H,MAACy5H,GAAA,CACC,MAAAvrI,EACA,cAAAwrI,EACC,GAAGa,CAAA,GAEJ,MAEJ,OACEv6H,MAACg5H,GAAA,CACC,MAAOwB,EAAgB,KAAOx+H,EAC9B,MAAO,KACP,UAAWsD,EAAGk4H,GAAiC1lI,CAAS,EACxD,iBAAkBwN,EAAGk7H,EAAgB,YAAc,YAAahC,CAAgB,EAChF,eAAAS,EACA,QAAQ,SAEP,SAAAuB,EACCx5H,OAAC,OACC,UAAU,mEACV,mCAAiC,GAEjC,UAAAA,OAAC,OAAI,UAAU,eACZ,UAAAhF,GAAS,KACRgE,MAAC,QACC,UAAWV,EACTo4H,GACA,sBACAuB,CAAA,EAGD,SAAAj9H,CAAA,GAED,KACJgE,MAAC,OAAI,UAAWV,EAAG,UAAWtD,GAAS,MAAQ,SAAS,EACrD,SAAA6E,CAAA,CACH,GACF,EACC25H,CAAA,IAED35H,CAAA,EAGV,CAEO,SAAS45H,GAA0B,CACxC,MAAAz+H,EACA,YAAA0+H,EACA,SAAA75H,EACA,UAAA/O,EACA,eAAAmnI,CACF,EAAG,CACD,OACEj4H,OAAC,OACC,UAAW1B,EAAGm4H,GAAuC3lI,CAAS,EAC9D,8BAA4B,GAC5B,2BAAyB,SAEzB,UAAAkP,OAAC,OAAI,UAAU,6DACb,UAAAhB,MAAC,QAAK,UAAWV,EAAGo4H,GAAgCuB,CAAc,EAAI,SAAAj9H,EAAM,EAC5EgE,MAAC,QAAK,UAAU,WAAY,SAAAa,CAAA,CAAS,GACvC,EACC65H,EACC16H,MAAC,KAAE,UAAU,mEAAoE,WAAY,EAC3F,OAGV,CAEO,SAAS26H,GAAuB,CACrC,QAAAC,EACA,gBAAAC,EACA,SAAAlB,EAAW,GACX,UAAAC,EACA,UAAA9nI,CACF,EAAG,CACD,OACEkO,MAAC02H,GAAA,CACC,QAAAkE,EACA,SAAAjB,EACA,gBAAAkB,EACA,UAAWv7H,EAAG44H,GAAmCpmI,CAAS,EAC1D,eAAgBqmI,GAChB,aAAYyB,CAAA,EAGlB,CAEO,SAASkB,GAAmB,CACjC,MAAA9+H,EACA,QAAA4+H,EACA,gBAAAC,EACA,SAAAlB,EAAW,GACX,YAAAe,EACA,UAAA5oI,EACA,eAAAmnI,EACA,UAAAW,CACF,EAAG,CACD,OACE55H,MAACy6H,GAAA,CACC,MAAAz+H,EACA,YAAA0+H,EACA,UAAA5oI,EACA,eAAAmnI,EAEA,SAAAj5H,MAAC26H,GAAA,CACC,QAAAC,EACA,gBAAAC,EACA,SAAAlB,EACA,UAAWC,GAAa59H,CAAA,EAC1B,EAGN,CAEA,SAAS++H,GAAwBjrI,EAAO,CACtC,MAAMC,EAAe,OAAOD,CAAK,EACjC,MAAI,CAAC,OAAO,SAASC,CAAY,GAAKA,GAAgB,EAC7C+mI,GAEF,KAAK,IAAIC,GAA8BhnI,CAAY,CAC5D,CAEA,SAAwBirI,GAAU,CAChC,KAAAv3H,EACA,MAAA80H,EACA,UAAA0C,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EACA,cAAAC,EACA,SAAAv6H,CACF,EAAG,CACD,MAAMw6H,EAAe,OAAON,GAAwBjrI,CAAK,CAAC,OAAOknI,EAA4B,IACvFsE,EAAaL,EACf,CACA,MAAOI,EACP,UAAWA,EACX,SAAU,OAAOtE,EAA4B,OAAOC,EAA4B,IAChF,SAAUA,EAAA,EAEV,CACA,MAAOC,GACP,SAAUD,EAAA,EAERuE,EACJv7H,MAACg2H,GAAA,CACC,UAAW12H,EAAG,iBAAkB43H,GAAiCkE,CAAa,EAC9E,KAAK,OACL,kBAAkB,SAEjB,SAAAv6H,CAAA,GAIL,OAAKo6H,EAoBAx3H,EAKHzC,OAAC,SACC,UAAW1B,EACT,uJACA27H,EACI,oBACA,wCAEN,MAAOK,EACP,aAAY/C,EAEX,UAAA0C,GAAa,OAAOE,GAAkB,WACrCn7H,MAAC,UACC,KAAK,SACL,aAAY,UAAUu4H,CAAK,WAC3B,MAAM,iBACN,cAAe4C,EACf,UAAU,kLAEV,SAAAn7H,MAAC,QAAK,UAAU,wJAAwJ,IAExK,KACHu7H,CAAA,IAzBI,KAnBLv7H,MAACG,GAAA,CAAM,KAAAsD,EAAY,aAAAy3H,EACjB,SAAAl6H,OAACL,GAAA,CACC,KAAK,QACL,gBAAiB,GACjB,UAAU,sDACV,MAAO26H,EACP,aAAY/C,EAEZ,UAAAv3H,OAACG,GAAA,CAAY,UAAU,UACrB,UAAAnB,MAACoB,IAAY,SAAAm3H,CAAA,CAAM,EACnBv4H,MAACsB,IAAiB,iDAAqC,GACzD,EACCi6H,CAAA,IAEL,CAiCN,CCzhBO,MAAMC,GAAyB,OAAO,OAAO,CAClD,YAAa,SACb,IAAK,MACL,eAAgB,WAChB,eAAgB,WAChB,YAAa,QACb,aAAc,SACd,UAAW,OACX,gBAAiB,aACjB,UAAW,MACX,aAAc,SACd,aAAc,SACd,kBAAmB,WACnB,cAAe,UACf,iBAAkB,aAClB,cAAe,UACjB,CAAC,EAEKC,GAAoB,OAAO,OAAO,CACtCD,GAAuB,cACvBA,GAAuB,gBACzB,CAAC,EAED,SAASjzH,GAAgBra,EAAO,CAC9B,OAAO,OAAOA,GAAS,EAAE,EAAE,MAC7B,CAEA,SAASwtI,GAAoBxtI,EAAO,CAClC,OAAK,MAAM,QAAQA,CAAK,EAGjB,CAAC,GAAG,IAAI,IAAIA,EAAM,IAAIqa,EAAe,EAAE,OAAO,OAAO,CAAC,CAAC,EAFrD,EAGX,CAEA,SAASozH,GAAuBC,EAAW,CACzC,OAAIA,IAAc,SAAWA,IAAc,QAClCJ,GAAuB,IAEzBI,CACT,CAEO,SAASC,GAA4Bj2H,EAAMc,EAAU,GAAI,CAC9D,MAAMo1H,EAAiBvzH,GAAgB3C,CAAI,EACrCm2H,EAAQr1H,EAAQ,QAAU,IAAQo1H,IAAmB,MACrDE,EAAat1H,EAAQ,aAAe,GAC1C,OAAQo1H,EAAA,CACN,IAAK,MACH,MAAO,CACL,GAAIp1H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnEA,GAAuB,IACvB,GAAGC,GACHD,GAAuB,eAE3B,IAAK,QACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnEA,GAAuB,eACvBA,GAAuB,eACvBA,GAAuB,YACvBA,GAAuB,aACvB,GAAGC,GACHD,GAAuB,eAE3B,IAAK,OACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnEA,GAAuB,UACvB,GAAI90H,EAAQ,mBAAqB,CAAC80H,GAAuB,eAAe,EAAI,GAC5E,GAAGC,GACHD,GAAuB,eAE3B,IAAK,OACL,IAAK,OACL,IAAK,MACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnE,GAAIO,EAAQ,CAACP,GAAuB,SAAS,EAAI,GACjD,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,YAAY,EAAI,GACpE,GAAIQ,EAAa,CAACR,GAAuB,YAAY,EAAI,GACzD,GAAGC,GACHD,GAAuB,eAE3B,IAAK,OACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnE,GAAGC,GACHD,GAAuB,eAE3B,IAAK,WACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnE,GAAI90H,EAAQ,0BAA4B,CAAC80H,GAAuB,eAAe,EAAI,GACnFA,GAAuB,kBACvB,GAAGC,GACHD,GAAuB,eAE3B,QACE,MAAO,EAAC,CAEd,CAEO,SAASS,GAA+Br2H,EAAMc,EAAU,GAAI,CACjE,MAAMo1H,EAAiBvzH,GAAgB3C,CAAI,EACrCm2H,EAAQr1H,EAAQ,QAAU,IAAQo1H,IAAmB,MACrDE,EAAat1H,EAAQ,aAAe,GAC1C,OAAQo1H,EAAA,CACN,IAAK,MACH,MAAO,CACL,GAAIp1H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnEA,GAAuB,KAE3B,IAAK,QACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnEA,GAAuB,gBAE3B,IAAK,OACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnEA,GAAuB,UACvB,GAAI90H,EAAQ,mBAAqB,CAAC80H,GAAuB,eAAe,EAAI,EAAC,EAEjF,IAAK,OACL,IAAK,OACL,IAAK,MACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnE,GAAIO,EAAQ,CAACP,GAAuB,SAAS,EAAI,GACjD,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,YAAY,EAAI,GACpE,GAAIQ,EAAa,CAACR,GAAuB,YAAY,EAAI,EAAC,EAE9D,IAAK,OACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,EAAC,EAExE,IAAK,WACH,MAAO,CACL,GAAI90H,EAAQ,cAAgB,CAAC80H,GAAuB,WAAW,EAAI,GACnE,GAAI90H,EAAQ,0BAA4B,CAAC80H,GAAuB,eAAe,EAAI,EAAC,EAExF,QACE,MAAO,EAAC,CAEd,CAEO,SAASU,GAAiCC,EAAYC,EAAoB,CAC/E,MAAMC,EAAW,IAAI,IAAIX,GAAoBU,CAAkB,CAAC,EAChE,OAAKC,EAAS,KAGP,CAAC,GAAG,IAAI,IAAIX,GAAoBS,CAAU,EAC9C,IAAIR,EAAsB,EAC1B,OAAQC,GAAcS,EAAS,IAAIT,CAAS,CAAC,CAAC,CAAC,EAJzC,EAKX,CAEO,SAASU,GAAmCH,EAAYC,EAAoBR,EAAW,CAC5F,MAAMW,EAAsBh0H,GAAgBqzH,CAAS,EAC/CY,EAAuBN,GAAiCC,EAAYC,CAAkB,EAI5F,MAHI,CAACG,GAAuB,CAACb,GAAoBU,CAAkB,EAAE,SAASG,CAAmB,GAG7FC,EAAqB,SAASD,CAAmB,EAC5CC,EAEF,CAAC,GAAGA,EAAsBD,CAAmB,CACtD,CAEO,SAASE,GAAsC,CAAE,UAAAxB,EAAY,GAAM,OAAAllH,EAAS,UAAa,GAAI,CAClG,OAAOklH,GAAa1yH,GAAgBwN,CAAM,IAAM,QAClD,CCjKA,SAASxN,GAAgBra,EAAO,CAC9B,OAAO,OAAOA,GAAS,EAAE,EAAE,MAC7B,CAEA,SAAS4tI,GAAexiH,EAAO,CAC7B,OAAO/Q,GAAgB+Q,GAAO,IAAI,EAAE,aACtC,CAEA,SAASojH,GAAapjH,EAAO,CAC3B,GAAI,CAACA,GAAS,OAAOA,GAAU,SAC7B,OAAO,KAET,MAAM3G,EAAMpK,GAAgB+Q,EAAM,GAAG,EACrC,OAAK3G,EAGE,CACL,IAAAA,EACA,KAAMpK,GAAgB+Q,EAAM,IAAI,EAChC,MAAO,OAAO,SAAS,OAAOA,EAAM,KAAK,CAAC,GAAK,OAAOA,EAAM,KAAK,GAAK,EAAI,OAAOA,EAAM,KAAK,EAAI,GALzF,IAOX,CAEA,SAASqjH,GAAcrjH,EAAOnqB,EAAK,CACjC,MAAMytI,EAAWtjH,GAAO,YAAYnqB,CAAG,EACvC,GAAI,CAACytI,GAAY,OAAOA,GAAa,SACnC,OAAO,KAET,MAAMjqH,EAAMpK,GAAgBq0H,EAAS,GAAG,EACxC,OAAOjqH,EACH,CACE,IAAAA,EACA,KAAMpK,GAAgBq0H,EAAS,IAAI,EACnC,MAAO,OAAO,SAAS,OAAOA,EAAS,KAAK,CAAC,GAAK,OAAOA,EAAS,KAAK,GAAK,EAAI,OAAOA,EAAS,KAAK,EAAI,GAE3G,IACN,CAEO,SAASC,GAAWvjH,EAAOnqB,EAAK,CACrC,MAAM2tI,EAAWv0H,GAAgBpZ,CAAG,EAAE,cAChCyW,EAAOk2H,GAAexiH,CAAK,EAC3ByjH,EAAejgE,GAAkBxjD,CAAK,EAC5C,OAAIwjH,IAAa,QAAUl3H,IAAS,OAC3B+2H,GAAcrjH,EAAO,MAAM,EAGlCwjH,IAAal3H,GACbk3H,IAAaC,GACZA,IAAiBxgE,EAAc,MAAQ,CAAC,MAAO,WAAY,mBAAoB,qBAAqB,EAAE,SAASugE,CAAQ,GACvHl3H,IAAS,QAAUk3H,IAAa,OAE1BJ,GAAapjH,CAAK,EAEpB,IACT,CAEO,SAAS0jH,GAAc1jH,EAAOnqB,EAAK,CACxC,OAAOoZ,GAAgBs0H,GAAWvjH,EAAOnqB,CAAG,GAAG,GAAG,CACpD,CAEO,SAAS8tI,GAAe3jH,EAAOnqB,EAAK,CACzC,OAAOoZ,GAAgBs0H,GAAWvjH,EAAOnqB,CAAG,GAAG,IAAI,CACrD,CAEO,SAAS+tI,GAAgB5jH,EAAOnqB,EAAK,CAC1C,MAAMkrE,EAAQ,OAAOwiE,GAAWvjH,EAAOnqB,CAAG,GAAG,KAAK,EAClD,OAAO,OAAO,SAASkrE,CAAK,GAAKA,GAAS,EAAIA,EAAQ,CACxD,CAEO,SAAS8iE,GAAkB7jH,EAAO,CACvC,OAAO0jH,GAAc1jH,EAAO6jD,GAAqB7jD,CAAK,CAAC,CACzD,CAEO,SAAS8jH,GAAmB9jH,EAAO,CACxC,OAAO2jH,GAAe3jH,EAAO6jD,GAAqB7jD,CAAK,CAAC,CAC1D,CAEO,SAAS+jH,GAAoB/jH,EAAO,CACzC,OAAO4jH,GAAgB5jH,EAAO6jD,GAAqB7jD,CAAK,CAAC,CAC3D,CAEO,SAASgkH,GAAsBhkH,EAAO,CAC3C,OAAO0jH,GAAc1jH,EAAO,UAAU,GAAK0jH,GAAc1jH,EAAO,KAAK,CACvE,CAEO,SAASikH,GAA8BjkH,EAAO,CACnD,OAAO0jH,GAAc1jH,EAAO,kBAAkB,GAAKgkH,GAAsBhkH,CAAK,CAChF,CAEO,SAASkkH,GAAiClkH,EAAO,CACtD,OAAO0jH,GAAc1jH,EAAO,qBAAqB,GAAKgkH,GAAsBhkH,CAAK,CACnF,CAEO,SAASmkH,GAAmBnkH,EAAO,CACxC,MAAO,CACL2jH,GAAe3jH,EAAO,MAAM,EAC5B2jH,GAAe3jH,EAAO,MAAM,EAC5B2jH,GAAe3jH,EAAO,KAAK,GAC3B,OAAO,OAAO,EAAE,KAAK,GAAG,CAC5B,CAEO,SAASokH,GAAwBpkH,EAAO,CAC7C,OAAO,OACLA,GAAO,OAAS,WACZ2jH,GAAe3jH,EAAO,KAAK,EAC3B8jH,GAAmB9jH,CAAK,EAEhC,CAEO,SAASqkH,GAA6BrkH,EAAO,CAClD,OAAO2jH,GAAe3jH,EAAO,kBAAkB,GAAK/Q,GAAgB+Q,GAAO,IAAI,CACjF,CAEO,SAASskH,GAAatkH,EAAO,CAClC,GAAIwjD,GAAkBxjD,CAAK,IAAMijD,EAAc,KAC7C,MAAO,GACLygE,GAAc1jH,EAAO,KAAK,GAC1B2jH,GAAe3jH,EAAO,KAAK,GAG/B,MAAMukH,EAAU1gE,GAAqB7jD,CAAK,EAC1C,MAAO,GAAQ0jH,GAAc1jH,EAAOukH,CAAO,GAAKZ,GAAe3jH,EAAOukH,CAAO,EAC/E,CAEO,SAASC,GAAaxkH,EAAO,CAElC,OADa/Q,GAAgB+Q,GAAO,IAAI,EAAE,gBAC7BijD,EAAc,IAClB,GAAQygE,GAAc1jH,EAAO,KAAK,GAAK2jH,GAAe3jH,EAAO,KAAK,GAEpE,GAAQ0jH,GAAc1jH,EAAO,MAAM,GAAK2jH,GAAe3jH,EAAO,MAAM,EAC7E,CAEO,SAASykH,GAAmBzkH,EAAO,CACxC,MAAO,GACLwjD,GAAkBxjD,CAAK,IAAMijD,EAAc,MAC3CygE,GAAc1jH,EAAO,KAAK,GAC1B2jH,GAAe3jH,EAAO,kBAAkB,EAE5C,CAEO,SAAS0kH,GAAqB1kH,EAAO,CAC1C,MAAO,GACLwjD,GAAkBxjD,CAAK,IAAMijD,EAAc,MAC3CygE,GAAc1jH,EAAO,KAAK,GAC1B2jH,GAAe3jH,EAAO,qBAAqB,EAE/C,CAEO,SAAS2kH,GAAY3kH,EAAO,CACjC,MAAO,GAAQ0jH,GAAc1jH,EAAO,KAAK,GAAK2jH,GAAe3jH,EAAO,KAAK,EAC3E,CAEO,SAAS4kH,GAAc5kH,EAAO,CACnC,MAAO,GAAQ0jH,GAAc1jH,EAAO,OAAO,GAAK2jH,GAAe3jH,EAAO,OAAO,EAC/E,CAMO,SAAS6kH,GAAmB7kH,EAAO,CACxC,OAAOwjD,GAAkBxjD,CAAK,IAAMijD,EAAc,KAC9Ch0D,GAAgB+Q,GAAO,SAAS,EAChC,EACN,CCzKO,MAAM8kH,GAAqD,EAErDC,GAAsC,OAAO,OAAO,CAC/D,cACA,wBACA,wBACA,kCACA,4BACA,sBACA,oBACA,sBACA,2BACF,CAAC,EAEKC,GAAyC,IAAI,IAAID,EAAmC,EACpFE,GAAyB,iBAE/B,SAASC,GAA6BtwI,EAAO,CAC3C,OAAO,OAAOA,GAAS,EAAE,EAAE,OAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,CAC1E,CAEA,SAASuwI,GAAYvwI,EAAO,CAC1B,OAAKA,EAGD,MAAM,QAAQA,CAAK,EACdA,EAEL,OAAOA,GAAU,UAAY,OAAOA,EAAM,OAAO,QAAQ,GAAM,WAC1D,MAAM,KAAKA,CAAK,EAElB,CAACA,CAAK,EARJ,EASX,CAEA,SAASwwI,GAAWC,EAAMzwI,EAAO,CAC/B,MAAM6X,EAAay4H,GAA6BtwI,CAAK,EACrD,OAAI6X,GACF44H,EAAK,IAAI54H,CAAU,EAEdA,CACT,CAEA,SAAS64H,GAAeD,EAAMzwI,EAAO,CACnC,MAAM6X,EAAa24H,GAAWC,EAAMzwI,CAAK,EACzC,GAAI,CAACqwI,GAAuB,KAAKx4H,CAAU,EACzC,OAEF,MAAM84C,EAAa94C,EAAW,YAAY,GAAG,EACvC84H,EAAMhgF,GAAc,EAAI,GAAG94C,EAAW,MAAM,EAAG84C,CAAU,CAAC,IAAM,GAChExsC,EAAWwsC,GAAc,EAAI94C,EAAW,MAAM84C,EAAa,CAAC,EAAI94C,EACtE44H,EAAK,IAAI,GAAGE,CAAG,IAAIxsH,CAAQ,MAAM,CACnC,CAEA,SAASysH,GAAc33H,EAAMC,EAAO,CAClC,MAAM23H,EAAUP,GAA6Br3H,CAAI,EAC3C63H,EAAWR,GAA6Bp3H,CAAK,EACnD,MAAO,GAAQ23H,GAAWC,GAAYD,IAAYC,EACpD,CAEA,SAASC,GAAkBC,EAAMhiH,EAAY,CAC3C,OAAOA,EAAW,KAAMpP,GAAcgxH,GAAcI,EAAMpxH,CAAS,CAAC,CACtE,CAEO,SAASqxH,GAAmCj7H,EAAO,CACxD,MAAMmmB,EAAQ,OAAOnmB,GAAO,cAAgB,CAAC,EAC7C,OAAO,OAAO,SAASmmB,CAAK,GAAKA,EAAQ,EAAI,KAAK,MAAMA,CAAK,EAAI,CACnE,CAEO,SAAS+0G,GAA+B9lH,EAAQ,KAAM+lH,EAAW/lH,GAAO,SAAU,CACvF,MAAMqlH,MAAW,IACjB,OAAAC,GAAeD,EAAMrlH,GAAO,IAAI,EAChCslH,GAAeD,EAAMrlH,GAAO,gBAAgB,EAC5CslH,GAAeD,EAAMU,GAAU,QAAQ,EACnCd,GAAuB,KAAKC,GAA6Ba,GAAU,UAAU,CAAC,GAChFT,GAAeD,EAAMU,GAAU,UAAU,EAE3CX,GAAWC,EAAMU,GAAU,OAAO,EAC3B,CAAC,GAAGV,CAAI,CACjB,CAEO,SAASW,GAAiC,CAC/C,MAAAhmH,EAAQ,KACR,SAAA+lH,EAAW/lH,GAAO,SAClB,gBAAAimH,EAAkB,KAClB,sBAAAC,EAAwB,EAC1B,EAAI,GAAI,CACN,MAAMtiH,EAAakiH,GAA+B9lH,EAAO+lH,CAAQ,EACjE,GAAI,OAAOE,GAAiB,QAAU,EAAE,EAAE,OAAO,gBAAkB,UAAW,CAC5E,MAAME,EAAYjB,GAA6Be,GAAiB,IAAI,EACpE,GAAI,CAACE,GAAaviH,EAAW,SAAW,GAAK+hH,GAAkBQ,EAAWviH,CAAU,EAClF,MAAO,EAEX,CAEA,OAAOuhH,GAAYe,CAAqB,EACrC,IAAIhB,EAA4B,EAChC,OAAO,OAAO,EACd,KAAMU,GAASD,GAAkBC,EAAMhiH,CAAU,CAAC,CACvD,CAEO,SAASwiH,GAAgC,CAC9C,MAAApmH,EAAQ,KACR,SAAA+lH,EAAW/lH,GAAO,SAClB,aAAAyjH,EAAexgE,EAAc,KAC7B,oBAAAojE,EAAsB,GACtB,gBAAAJ,EAAkB,KAClB,sBAAAC,EAAwB,EAC1B,EAAI,GAAI,CACN,MAAMI,EAAiB,CAAE,GAAItmH,GAAS,GAAK,SAAA+lH,CAAA,EACrCQ,EAAuBP,GAAiC,CAC5D,MAAOM,EACP,SAAAP,EACA,gBAAAE,EACA,sBAAAC,CAAA,CACD,EACD,OAAKM,GACHF,EACA7C,EACA,CAAE,oBAAqB4C,GAAuBE,CAAA,CAAqB,EAIjEA,EACK,GAEFV,GAAmCI,CAAe,EACvDnB,GANO,EAOX,CAEO,SAAS2B,GAAqCC,EAAS,CAAE,KAAAd,EAAO,IAAO,GAAI,CAChF,MAAMe,EAAiBD,GAAS,MAChC,GAAI,CAACC,EACH,OAEF,MAAMC,EAAY,OAAOhB,GAAQe,EAAe,MAAQ,EAAE,EAAE,OAC5D,GAAI,CAACrC,GAAaqC,CAAc,EAC9B,MAAM,IAAI,MAAM,8CAA8CC,GAAa,WAAW,EAAE,EAE1F,GAAIJ,GAAwBG,EAAgB1jE,EAAc,KAAM,CAAE,oBAAqB,GAAM,EAAG,CAC9F,MAAM4jE,EAAO,OAAOF,GAAgB,UAAU,OAAS,2BAA2B,EAAE,OACpF,MAAM,IAAI,MAAM,yCAAyCE,CAAI,KAAKD,GAAa,WAAW,EAAE,CAC9F,CACF,CAEA,eAAsBE,GAAqC,CACzD,IAAAjxI,EAAM,GACN,KAAA+vI,EAAO,GACP,oBAAAmB,EAAsB,EACtB,SAAAC,EACA,UAAAC,EAAY,IAAM,GAClB,QAAAC,EAAU,IAAM,CAAC,EACjB,aAAAC,EAAe,IAAM,CAAC,EACtB,UAAA9oD,EAAYymD,GACZ,gBAAAsC,EAAkB,IACpB,EAAI,GAAI,CACN,GAAI,OAAOJ,GAAa,WACtB,MAAM,IAAI,UAAU,wDAAwD,EAG9E,MAAMK,EAAc,KAAK,IAAI,EAAG,KAAK,MAAM,OAAOhpD,CAAS,GAAK,CAAC,CAAC,EAClE,IAAIipD,EAAe,KAAK,IACtBzB,GAAmC,CAAE,aAAckB,EAAqB,EACxEM,CAAA,EAGF,KAAOC,EAAeD,GAAa,CACjC,MAAME,EAAUD,EAAe,EAC/BJ,EAAQ,CACN,IAAArxI,EACA,KAAA+vI,EACA,OAAQ,UACR,aAAA0B,EACA,QAAAC,EACA,MAAO,GACR,EAED,GAAI,CACF,MAAMb,EAAU,MAAMM,EAASpB,EAAM,CAAE,QAAA2B,EAAS,aAAAD,EAAc,EAC9D,GAAI,CAACL,IACH,MAAO,CAAE,OAAQ,YAAa,aAAAK,CAAA,EAE5B,OAAOF,GAAoB,YAC7BA,EAAgBV,CAAO,EAEzB,MAAMc,EAAa,CACjB,IAAA3xI,EACA,KAAA+vI,EACA,OAAQ,QACR,aAAc,EACd,MAAO,IAET,OAAAsB,EAAQM,CAAU,EACX,CAAE,OAAQ,QAAS,MAAOA,EAAY,QAAAd,CAAA,CAC/C,OAASe,EAAiB,CACxB,GAAI,CAACR,IACH,MAAO,CAAE,OAAQ,YAAa,aAAAK,CAAA,EAEhCA,GAAgB,EAChB,MAAMxvH,EAAU2vH,aAA2B,MACvCA,EAAgB,QAChB,OAAOA,CAAe,EACpBC,EAAc,CAClB,IAAA7xI,EACA,KAAA+vI,EACA,OAAQ0B,GAAgBD,EAAc,QAAU,UAChD,aAAAC,EACA,QAAS,KAAK,IAAIA,EAAe,EAAGD,CAAW,EAC/C,MAAOvvH,CAAA,EAGT,GADAovH,EAAQQ,CAAW,EACfA,EAAY,SAAW,QACzB,OAAAP,EAAarvH,EAAS4vH,EAAaD,CAAe,EAC3C,CAAE,OAAQ,QAAS,MAAOC,EAAa,MAAOD,CAAA,CAEzD,CACF,CAUA,MAAO,CAAE,OAAQ,QAAS,MARH,CACrB,IAAA5xI,EACA,KAAA+vI,EACA,OAAQ,QACR,aAAA0B,EACA,QAASD,EACT,MAAO,GAEwB,CACnC,CAEO,SAASM,GAAoB3nH,EAAOyjH,EAAc,CACvD,OACEA,IAAiBxgE,EAAc,MAC/BjjD,GAAO,UAAU,KAAO,KAEtBA,EAAM,SAAS,QAAU,IACzB,OAAOA,EAAM,SAAS,OAAS,EAAE,IAAM,sBAG7C,CAEO,SAASwmH,GAAwBxmH,EAAOyjH,EAAc,CAAE,oBAAA4C,EAAsB,IAAS,GAAI,CAIhG,MAHI,CAACA,GAAuB5C,IAAiBxgE,EAAc,MAGvDjjD,GAAO,UAAU,GACZ,GAEFglH,GAAuC,IAAI,OAAOhlH,GAAO,UAAU,OAAS,EAAE,CAAC,CACxF,CAEO,SAAS4nH,GAAyB5nH,EAAOyjH,EAAcr2H,EAAU,GAAI,CAC1E,OACEq2H,IAAiBxgE,EAAc,MAC/BjjD,GAAO,UAAU,KAAO,IACxB,CAACwmH,GAAwBxmH,EAAOyjH,EAAcr2H,CAAO,CAEzD,CCvPO,SAASy6H,GAAgB7nH,EAAO,CACrC,aAAAyjH,EAAe,GACf,SAAAqE,EAAW,GACX,QAAAC,EAAU,GACV,OAAAC,EAAS,GACT,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,QAAAC,EAAU,GACV,sBAAAjC,EAAwB,GACxB,iCAAAkC,EAAmC,GACnC,kCAAAC,EAAoC,GACpC,gCAAAC,EAAkC,EACpC,EAAI,GAAI,CACN,MAAMC,EAAyB,OAAO9E,GAAgB,EAAE,EAAE,OAAO,cAC3D+E,EAAgC,IAAI,IACxC,CACE,GAAI,MAAM,QAAQtC,CAAqB,EACnCA,EACAA,EACE,CAACA,CAAqB,EACtB,EAAC,EAEN,IAAKN,GAAS,OAAOA,GAAQ,EAAE,EAAE,MAAM,EACvC,OAAO,OAAO,GAEb6C,EAAkC,IAAI,IAC1C,CACE,GAAI,MAAM,QAAQJ,CAAiC,EAC/CA,EACAA,EACE,CAACA,CAAiC,EAClC,GACN,GAAI,MAAM,QAAQD,CAAgC,EAC9CA,EACAA,EACE,CAACA,CAAgC,EACjC,EAAC,EAEN,IAAKxC,GAAS,OAAOA,GAAQ,EAAE,EAAE,MAAM,EACvC,OAAO,OAAO,GAEbjqB,EAAU4sB,IAA2BtlE,EAAc,IACrD,CAAC+kE,EACDO,IAA2BtlE,EAAc,MACzC,CAACglE,EACDM,IAA2BtlE,EAAc,SACvC,CAACilE,EACHvkE,GAAoB4kE,CAAsB,EACxC,CAACJ,EACD,CAACJ,EACDW,EAA0B,CAC9B,GAAGD,EACH,GAAGD,CAAA,EAECG,EAA+B3C,GAAiC,CACpE,MAAAhmH,EACA,sBAAuB0oH,CAAA,CACxB,EAKKE,EADsBpC,GAAwBxmH,EAAOuoH,EAH3C,CACd,oBAAqBD,GAAmCK,CAAA,CAEgC,EAEpFE,EAAgBlB,GAAoB3nH,EAAOuoH,CAAsB,EACjEO,EAAoB,OAAO9oH,GAAO,UAAU,OAAS,EAAE,EAAE,OACzD+oH,EAAmB,GAAQjB,GAAYU,EAA8B,IAAIV,CAAQ,GACjFkB,EAAkB,CAACD,GACvB,CAACJ,GACDf,GAAyB5nH,EAAOuoH,EAAwB,CACtD,oBAAqBD,CAAA,CACtB,EACGW,EAAqB,GACzBL,GACA,CAACG,GACDJ,GAeF,MAAO,CACL,kBAAAC,EACA,mBAAAK,EACA,cAAAJ,EACA,gBAAAG,EACA,QAlBcD,GAAoBE,GAAuBttB,GAAW,CAACqtB,GAAmB,CAACJ,EAmBzF,QAAAjtB,EACA,aAAc4sB,EACd,YApBkBQ,EAChB,aACAE,EACA,sBACAD,EACGH,EAAgB,iBAAmBC,IAAsB,cAAgB,oBAAsB,mBAChGF,EACE,6BACAjtB,EACE,UACA,OAUR,CAEJ,CAEO,SAASutB,GAAoBlpH,EAAO,CACzC,MAAMmpH,EAAqB,OAAOnpH,GAAO,UAAU,YAAc,EAAE,EAAE,OAAO,cAC5E,GAAImpH,IAAuB,SACzB,OAAOA,EAET,MAAMC,EAAa,OAAOppH,GAAO,YAAcA,GAAO,gBAAkB,EAAE,EAAE,OAAO,cACnF,OAAIopH,IAAe,SACVA,EAEF,EACT,CC1HA,SAASC,GAAUz0I,EAAO,CACxB,OAAO,OAAOA,GAAS,EAAE,EAAE,MAC7B,CAEO,SAAS00I,GAAsB10I,EAAO,CAC3C,OAAOy0I,GAAUz0I,CAAK,EACnB,QAAQ,MAAO,GAAG,EAClB,QAAQ,OAAQ,EAAE,EAClB,QAAQ,OAAQ,EAAE,CACvB,CAEA,SAAS20I,GAAoB30I,EAAO,CAClC,OAAOy0I,GAAUz0I,CAAK,EACnB,QAAQ,MAAO,GAAG,EAClB,QAAQ,OAAQ,EAAE,CACvB,CAEA,SAAS40I,GAAkB50I,EAAO,CAChC,OAAOy0I,GAAUz0I,CAAK,EAAE,QAAQ,UAAW,EAAE,CAC/C,CAEA,SAAS60I,GAAsB70I,EAAO,CACpC,MAAMwiB,EAAOiyH,GAAUz0I,CAAK,EAC5B,GAAI,CAACwiB,EACH,MAAO,GAET,GAAI,CACF,OAAO,IAAI,IAAIA,EAAM,kBAAkB,EAAE,QAC3C,MAAQ,CACN,OAAOoyH,GAAkBpyH,CAAI,CAC/B,CACF,CAEA,SAASsyH,GAAqBC,EAAU3tI,EAAQ,CAC9C,MAAMspD,EAAiBikF,GAAoBI,CAAQ,EAC7CC,EAAmBL,GAAoBvtI,CAAM,EAInD,MAHI,CAACspD,GAAkB,CAACskF,GAGpBtkF,IAAmBskF,EACd,GAEFtkF,EAAe,WAAW,GAAGskF,CAAgB,GAAG,EACnDtkF,EAAe,MAAMskF,EAAiB,OAAS,CAAC,EAChD,EACN,CAEO,SAASC,GAAyBF,EAAUG,EAAU,GAAI,CAC/D,MAAMxkF,EAAiBgkF,GAAsBK,CAAQ,EAC/CI,EAAoBT,GAAsBQ,CAAO,EACvD,MAAI,CAACxkF,GAAkB,CAACykF,EACfzkF,EAELA,IAAmBykF,EACd,GAEFzkF,EAAe,WAAW,GAAGykF,CAAiB,GAAG,EACpDzkF,EAAe,MAAMykF,EAAkB,OAAS,CAAC,EACjDzkF,CACN,CAEA,SAAS0kF,GAA0BL,EAAUM,EAAa,GAAI,CAC5D,MAAM3kF,EAAiBgkF,GAAsBK,CAAQ,EAC/CO,EAAmBZ,GAAsBW,CAAU,EACzD,GAAI,CAAC3kF,GAAkB,CAAC4kF,EACtB,OAAO5kF,EAET,MAAM6kF,EAAcD,EAAiB,MAAM,GAAG,EAAE,OAAO,OAAO,EAE9D,GADAC,EAAY,MACR,CAACA,EAAY,OACf,OAAO7kF,EAGT,MAAMi8B,EAAS,IADG4oD,EAAY,KAAK,GAAG,CACV,IACtBC,EAAa,IAAI9kF,CAAc,GAC/Bk8B,EAAc4oD,EAAW,YAAY7oD,CAAM,EACjD,OAAOC,GAAe,EAClB4oD,EAAW,MAAM5oD,EAAc,CAAC,EAChCl8B,CACN,CAEO,SAAS+kF,GAAuBz1I,EAAO01I,EAAmB,GAAI,CACnE,WAAAL,EAAa,EACf,EAAI,GAAI,CACN,MAAM7yH,EAAOiyH,GAAUz0I,CAAK,EAC5B,GAAI,CAACwiB,EACH,MAAO,GAGT,MAAMmzH,EAAmBb,GAAqBF,GAAkBpyH,CAAI,EAAGkzH,GAAkB,QAAQ,EACjG,GAAIC,EACF,OAAOjB,GAAsBiB,CAAgB,EAG/C,MAAMC,EAAwBd,GAAqBF,GAAkBpyH,CAAI,EAAGkzH,GAAkB,aAAa,EAC3G,GAAIE,EACF,OAAOR,GACLH,GAAyBW,EAAuBF,GAAkB,OAAO,EACzEL,CAAA,EAIJ,MAAMQ,EAAWnB,GAAsBG,GAAsBryH,CAAI,CAAC,EAClE,OAAO4yH,GACLH,GAAyBY,EAAUH,GAAkB,OAAO,EAC5DL,CAAA,CAEJ,CC3GA,MAAMS,GAA4C,2BAElD,SAASC,IAA0B,CACjC,GAAI,OAAO,OAAW,IACpB,OAAO,KAET,GAAI,CACF,OAAO,OAAO,gBAAkB,IAClC,MAAQ,CACN,OAAO,IACT,CACF,CAEO,SAASC,IAAyB,CACvC,MAAMC,EAAUF,GAAuB,EACvC,GAAI,CAACE,EACH,MAAO,GAET,GAAI,CACF,OAAO,OAAOA,EAAQ,QAAQH,EAAyC,GAAK,EAAE,EAAE,KAAI,CACtF,MAAQ,CACN,MAAO,EACT,CACF,CAEO,SAASI,GAAwBC,EAAW,CACjD,MAAMF,EAAUF,GAAuB,EACvC,GAAI,CAACE,EACH,OAEF,MAAMG,EAAgB,OAAOD,GAAa,EAAE,EAAE,KAAI,EAClD,GAAI,CACEC,EACFH,EAAQ,QAAQH,GAA2CM,CAAa,EAExEH,EAAQ,WAAWH,EAAyC,CAEhE,MAAQ,CAER,CACF,CAEO,SAASO,GAAqBC,EAAc,CACjD,MAAM98F,EAAsB,OAAO88F,GAAgB,EAAE,EAAE,KAAI,EAC3D,OAAAJ,GAAwB18F,CAAmB,EACpCA,CACT,CC9CO,MAAM+8F,GAA4B,6CAC5BC,GAA6B,gCAC7BC,GAAwC,6CAE9C,SAASC,GAA2B12I,EAAQ,GAAI,CAErD,OADiB,OAAOA,GAAS,EAAE,EAAE,KAAI,EACzB,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,OAAQ,EAAE,CAC5E,CAEO,SAAS22I,GAAyB32I,EAAQ,GAAIsa,EAAWi8H,GAA2B,CACzF,OAAOK,GAA0B52I,CAAK,GAAK42I,GAA0Bt8H,CAAQ,CAC/E,CAEO,SAASu8H,GAA0B72I,EAAQ,GAAIsa,EAAWk8H,GAA4B,CAC3F,OAAOI,GAA0B52I,CAAK,GAAK42I,GAA0Bt8H,CAAQ,CAC/E,CAEO,SAASw8H,GAA0B92I,EAAQ,GAAIsa,EAAWi8H,GAA2B,CAC1F,MAAM1+H,EAAa8+H,GAAyB32I,EAAOsa,CAAQ,EAC3D,GAAI,CAACzC,EACH,MAAO,GAET,GAAI,CACF,MAAM4M,EAAM,IAAI,IAAI5M,CAAU,EAC9B,GAAI4M,EAAI,SAAS,YAAW,IAAO,aACjC,OAAO5M,EAAW,QAAQ,OAAQ,EAAE,EAEtC,KAAM,EAAGk/H,EAAQ,GAAIC,EAAO,EAAE,EAAIvyH,EAAI,SAAS,MAAM,GAAG,EACxD,MAAI,CAACsyH,GAAS,CAACC,EACNn/H,EAAW,QAAQ,OAAQ,EAAE,EAE/B,IAAI,IAAI,IAAIk/H,CAAK,IAAIC,CAAI,GAAIvyH,EAAI,MAAM,EAAE,KAAK,QAAQ,OAAQ,EAAE,CACzE,MAAQ,CACN,MAAO,EACT,CACF,CAEO,SAASwyH,GAAuBC,EAAU,GAAIl3I,EAAQ,GAAIsa,EAAWi8H,GAA2B,CACrG,MAAMY,EAAoB,OAAOD,GAAW,EAAE,EAAE,KAAI,EAC9CE,EAAgBN,GAA0B92I,EAAOsa,CAAQ,EAC/D,MAAI,CAAC68H,GAAqB,CAACC,EAClB,GAEF,GAAGA,CAAa,iBAAiB,mBAAmBD,CAAiB,CAAC,EAC/E,CAEO,SAASE,GAA6Br3I,EAAQ,GAAIsa,EAAWi8H,GAA2B,CAC7F,MAAMa,EAAgBN,GAA0B92I,EAAOsa,CAAQ,EAC/D,OAAK88H,EAGE,GAAGA,CAAa,mBAFd,EAGX,CAEO,SAASE,GAAgCt3I,EAAQ,GAAIsa,EAAWi8H,GAA2B,CAChG,MAAMa,EAAgBN,GAA0B92I,EAAOsa,CAAQ,EAC/D,GAAI,CAAC88H,EACH,MAAO,GAGT,GAAI,CACF,MAAM3yH,EAAM,IAAI,IAAI2yH,CAAa,EACjC,GAAI3yH,EAAI,SAAS,YAAW,IAAO,aACjC,MAAO,GAET,KAAM,EAAG8yH,EAAW,GAAIC,EAAU,EAAE,EAAI/yH,EAAI,SAAS,MAAM,GAAG,EACxDsyH,EAAQ,mBAAmBQ,CAAQ,EACnCP,EAAO,mBAAmBQ,CAAO,EACvC,MAAI,CAACT,GAAS,CAACC,EACN,GAEF,gCAAgC,mBAAmBD,CAAK,CAAC,IAAI,mBAAmBC,CAAI,CAAC,kBAC9F,MAAQ,CACN,MAAO,EACT,CACF,CAEO,SAASS,GAAqBC,EAAiB,GAAIC,EAAmB,GAAI,CAC/E,MAAM5xI,EAAU6xI,GAA0BF,CAAc,EAClD93H,EAAYg4H,GAA0BD,CAAgB,EAC5D,MAAO,GAAQ5xI,GAAW6Z,GAAai4H,GAAmCj4H,EAAW7Z,CAAO,EAAI,EAClG,CAEO,SAAS+xI,GAA+BJ,EAAiB,GAAIC,EAAmB,GAAI,CACzF,MAAM5xI,EAAU6xI,GAA0BF,CAAc,EAClD93H,EAAYg4H,GAA0BD,CAAgB,EAC5D,MAAI,CAAC5xI,GAAW,CAAC6Z,GAAai4H,GAAmCj4H,EAAW7Z,CAAO,GAAK,EAC/E,GAEF6Z,EAAU,MAAM,CAAC,EAAI7Z,EAAQ,MAAM,CAAC,GAAK6Z,EAAU,MAAM,CAAC,EAAI7Z,EAAQ,MAAM,CAAC,CACtF,CAEO,SAASgyI,GACd/3I,EAAQ,GACRsa,EAAWm8H,GACX,CACA,MAAM7sD,EAAUouD,GAA6Bh4I,CAAK,EAClD,MAAI,wCAAwC,KAAK4pF,CAAO,EAC/CA,EAEF,OAAOtvE,GAAY,EAAE,EAAE,KAAI,CACpC,CAEO,SAAS29H,GACdj4I,EAAQ,GACRsa,EAAWm8H,GACX,CACA,MAAM5uH,EAAS,OAAO7nB,GAAS,EAAE,EAC3BgvB,EAAa,CACjB,GAAG,MAAM,KAAKnH,EAAO,SAAS,qDAAqD,EAAIjO,GAAUA,EAAM,CAAC,CAAC,EACzG,GAAG,MAAM,KAAKiO,EAAO,SAAS,4DAA4D,EAAIjO,GAAUA,EAAM,CAAC,CAAC,CACpH,EAEE,UAAWgG,KAAaoP,EAAY,CAClC,MAAM46D,EAAUmuD,GAAoCn4H,EAAW,EAAE,EACjE,GAAIgqE,EACF,OAAOA,CAEX,CAEA,OAAO,OAAOtvE,GAAY,EAAE,EAAE,KAAI,CACpC,CAEA,SAASs8H,GAA0B52I,EAAQ,GAAI,CAC7C,MAAMqvE,EAAW,OAAOrvE,GAAS,EAAE,EAAE,KAAI,EACzC,GAAI,CAACqvE,EACH,MAAO,GAET,MAAM6oE,EAAW,0BAA0B,KAAK7oE,CAAQ,EACpDA,EACA,WAAWA,EAAS,QAAQ,OAAQ,EAAE,CAAC,GAE3C,GAAI,CACF,MAAM5qD,EAAM,IAAI,IAAIyzH,CAAQ,EAC5B,MAAO,CAAC,QAAS,QAAQ,EAAE,SAASzzH,EAAI,QAAQ,EAAIA,EAAI,KAAO,EACjE,MAAQ,CACN,MAAO,EACT,CACF,CAEA,SAASuzH,GAA6Bh4I,EAAQ,GAAI,CAChD,OAAO,OAAOA,GAAS,EAAE,EACtB,KAAI,EACJ,QAAQ,WAAY,EAAE,EACtB,QAAQ,mBAAoB,EAAE,EAC9B,QAAQ,QAAS,GAAG,CACzB,CAEA,SAAS43I,GAA0B53I,EAAQ,GAAI,CAC7C,MAAMqvE,EAAW,OAAOrvE,GAAS,EAAE,EAChC,KAAI,EACJ,QAAQ,iBAAkB,EAAE,EAC5B,QAAQ,MAAO,EAAE,EACpB,GAAI,CAACqvE,EACH,OAAO,KAGT,MAAM8oE,EAAe9oE,EAAS,MAAM,GAAG,EAAE,CAAC,EACpC,CAAC+oE,EAAO,GAAI,GAAGC,CAAe,EAAIF,EAAa,MAAM,GAAG,EACxDv+H,EAAQw+H,EAAK,MAAM,kCAAkC,EAC3D,OAAKx+H,EAIE,CACL,MAAO,CACL,OAAOA,EAAM,CAAC,CAAC,EACf,OAAOA,EAAM,CAAC,GAAK,CAAC,EACpB,OAAOA,EAAM,CAAC,GAAK,CAAC,CAC1B,EACI,WAAYy+H,EAAgB,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO,CACnE,EAVW,IAWX,CAEA,SAASR,GAAmC5+H,EAAMC,EAAO,CACvD,QAASvR,EAAQ,EAAGA,EAAQ,EAAGA,GAAS,EAAG,CACzC,MAAM2wI,EAAar/H,EAAK,MAAMtR,CAAK,EAAIuR,EAAM,MAAMvR,CAAK,EACxD,GAAI2wI,IAAe,EACjB,OAAOA,CAEX,CAEA,OAAOC,GAAmCt/H,EAAK,WAAYC,EAAM,UAAU,CAC7E,CAEA,SAASq/H,GAAmCt/H,EAAMC,EAAO,CACvD,GAAI,CAACD,EAAK,QAAU,CAACC,EAAM,OACzB,MAAO,GAET,GAAI,CAACD,EAAK,OACR,MAAO,GAET,GAAI,CAACC,EAAM,OACT,MAAO,GAGT,MAAMixD,EAAS,KAAK,IAAIlxD,EAAK,OAAQC,EAAM,MAAM,EACjD,QAASvR,EAAQ,EAAGA,EAAQwiE,EAAQxiE,GAAS,EAAG,CAC9C,MAAM6wI,EAAYv/H,EAAKtR,CAAK,EACtB8wI,EAAav/H,EAAMvR,CAAK,EAC9B,GAAI6wI,IAAc,OAChB,MAAO,GAET,GAAIC,IAAe,OACjB,MAAO,GAET,GAAID,IAAcC,EAChB,SAGF,MAAMC,EAAc,SAAS,KAAKF,CAAS,EACrCG,EAAe,SAAS,KAAKF,CAAU,EAC7C,OAAIC,GAAeC,EACV,OAAOH,CAAS,EAAI,OAAOC,CAAU,EAE1CC,EACK,GAELC,EACK,EAEFH,EAAU,cAAcC,CAAU,CAC3C,CAEA,MAAO,EACT,aC3NMG,GAAsB,MACtBC,GAAkB,OAEjB,SAASC,GAAQ1tH,EAAO,CAC7B,OAAO,OAAOA,GAAO,MAAQ,EAAE,EAAE,MACnC,CAEO,SAAS2tH,GAAqB3tH,EAAO,CAC1C,MAAM4lH,EAAO8H,GAAQ1tH,CAAK,EAE1B,OADyB,OAAOA,GAAO,kBAAoB,EAAE,EAAE,QACpC4lH,CAC7B,CAEO,SAASgI,GAAgB5tH,EAAO,CAErC,OADa2tH,GAAqB3tH,CAAK,EAC3B,QAAQ,qDAAsD,EAAE,CAC9E,CAEA,SAAS6tH,GAASx0H,EAAK,CAAE,QAAAy0H,EAAU,WAAc,GAAI,CACnD,MAAMC,EAAa10H,EAAI,aAAa,WAC9B20H,EAAU,GAAG30H,EAAI,QAAQ,GAAG00H,EAAa,IAAIA,CAAU,GAAK,EAAE,GAAG10H,EAAI,IAAI,GACzE40H,EAAa,GAAG,OAAO,SAAS,QAAQ,GAAG,OAAO,SAAS,MAAM,GAAG,OAAO,SAAS,IAAI,GAC9F,OAAID,IAAYC,EACP,IAELH,IAAY,QAAU,OAAO,OAAO,SAAS,WAAc,WAC7D,OAAO,QAAQ,UAAU,GAAI,GAAIE,CAAO,EAExC,OAAO,QAAQ,aAAa,GAAI,GAAIA,CAAO,EAEtC,GACT,CAEA,SAASE,GAAiBt5I,EAAO,CAE/B,OADmB,OAAOA,GAAS,EAAE,EAAE,OAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,EAClE,QAAQ,OAAQ,EAAE,CACtC,CAEO,SAASu5I,GAA2Bv5I,EAAO,CAChD,OAAOs5I,GAAiBt5I,CAAK,CAC/B,CAEA,SAASw5I,GAAuBx5I,EAAO,CACrC,MAAM4Z,EAAQ,eAAe,KAAK,OAAO5Z,GAAS,EAAE,EAAE,MAAM,EAC5D,OAAO4Z,EAAQ,IAAIA,EAAM,CAAC,CAAC,GAAK,EAClC,CAEA,SAAS6/H,GAAgBz5I,EAAOwvE,EAAW,CACzC,MAAM3xD,EAAkBy7H,GAAiBt5I,CAAK,EACxC05I,EAAsB,OAAOlqE,GAAa,EAAE,EAAE,OACpD,MAAI,CAAC3xD,GAAmB,CAAC67H,GAGlB77H,EAAgB,cAAc,SAAS67H,EAAoB,aAAa,EAFtE77H,EAIL,GAAGA,CAAe,GAAG67H,CAAmB,EAC9C,CAEA,SAASC,GAAoBvuH,EAAO,CAClC,MAAMtN,MAAc,IACd87H,EAAY55I,GAAU,CAC1B,MAAM6d,EAAkBy7H,GAAiBt5I,CAAK,EAC1C6d,GACFC,EAAQ,IAAID,CAAe,CAE/B,EAEMmzH,EAAO+H,GAAqB3tH,CAAK,EACvCwuH,EAAS5I,CAAI,EAEb,MAAMj3H,EAAUi/H,GAAgB5tH,CAAK,EAC/BokD,EAAYgqE,GAAuBxI,CAAI,EAC7C,OAAA4I,EAASH,GAAgB1/H,EAASy1D,CAAS,CAAC,EAErC1xD,CACT,CAEO,SAAS+7H,IAAsB,CACpC,OAAOnD,GAA2BoD,IAAiB,mBAAmB,GAAK,IAC7E,CAEO,SAASC,IAAe,CAC7B,GAAI,OAAO,OAAW,IACpB,OAAO,KAGT,MAAM/5I,EADS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACpC,IAAI64I,EAAe,EAIxC,OAHwB,OAAO74I,GAAU,SACrCu5I,GAA2Bv5I,CAAK,EAChC,KACsB,IAC5B,CAEO,SAASg6I,IAAkB,CAChC,GAAI,OAAO,OAAW,IACpB,OAAO,KAGT,MAAMh6I,EADS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACpC,IAAI44I,EAAmB,EAI5C,OAHwB,OAAO54I,GAAU,SACrC,OAAOA,CAAK,EAAE,OACd,KACsB,IAC5B,CAEO,SAASi6I,GAAmBp0I,EAASq0I,EAAS,CACnD,MAAMC,EAAoBZ,GAA2BW,CAAO,EAC5D,OAAKC,GAGEt0I,EAAQ,KAAMulB,GAAUuuH,GAAoBvuH,CAAK,EAAE,IAAI+uH,CAAiB,CAAC,GAAK,IACvF,CAEO,SAASC,GAA8B,CAC5C,kBAAAC,EAAoB,GACpB,cAAAC,EAAgB,KAChB,cAAA1+H,EAAgB,KAChB,gBAAA2+H,EAAkB,GAClB,kBAAAC,EAAoB,EACtB,EAAI,GAAI,CAEN,MAAI,CADwBjB,GAA2Bc,CAAiB,GAC5Cz+H,EACnB,GAEL0+H,EACK,GAEF,CAACC,GAAmBC,CAC7B,CAEO,SAASC,GAAyB,CACvC,kBAAAJ,EAAoB,GACpB,cAAAC,EAAgB,KAChB,cAAA1+H,EAAgB,KAChB,gBAAA2+H,EAAkB,GAClB,kBAAAC,EAAoB,EACtB,EAAI,GAAI,CACN,MAAME,EAAsBnB,GAA2Bc,CAAiB,EACxE,MACE,CAACK,GACD9+H,GACA0+H,GACA,CAACC,GACDC,EAEO,GAEFE,CACT,CAEO,SAASC,GAAwB90I,EAAS,CAAE,YAAA+0I,EAAcf,IAAoB,EAAM,GAAI,CAC7F,MAAMgB,EAAmBd,GAAA,EACzB,GAAIc,EAAkB,CACpB,MAAMjhI,EAAQqgI,GAAmBp0I,EAASg1I,CAAgB,EAC1D,OAAOjhI,EAAQk/H,GAAQl/H,CAAK,EAAI,EAClC,CAEA,MAAMA,EAAQqgI,GAAmBp0I,EAAS0zI,GAA2BqB,CAAW,CAAC,EACjF,OAAOhhI,EAAQk/H,GAAQl/H,CAAK,EAAI,EAClC,CAEO,SAASkhI,GAAcZ,EAAS,CAAE,QAAAhB,EAAU,WAAc,GAAI,CACnE,GAAI,OAAO,OAAW,IACpB,OAEF,MAAMiB,EAAoBZ,GAA2BW,CAAO,EACtDz1H,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EAExC,GADAA,EAAI,aAAa,OAAO,MAAM,EAC1B01H,GAEF,GADA11H,EAAI,aAAa,IAAIo0H,GAAiBsB,CAAiB,EACnD11H,EAAI,aAAa,IAAIm0H,EAAmB,EAAG,CAC7C,MAAMzC,EAAYE,GAAqB5xH,EAAI,aAAa,IAAIm0H,EAAmB,CAAC,EAChF,GAAIzC,GAAaH,GAAA,IAA6BG,EAAW,CACvD8C,GAASx0H,EAAK,CAAE,QAAAy0H,EAAS,EACzB,MACF,CACAz0H,EAAI,aAAa,OAAOm0H,EAAmB,CAC7C,OAEAn0H,EAAI,aAAa,OAAOo0H,EAAe,EAEzCI,GAASx0H,EAAK,CAAE,QAAAy0H,EAAS,CAC3B,CAEO,SAAS6B,GAAiBC,EAAS,CAAE,QAAA9B,EAAU,UAAW,aAAA+B,EAAe,IAAU,GAAI,CAC5F,GAAI,OAAO,OAAW,IACpB,MAAO,GAET,MAAMC,EAAoB,OAAOF,GAAW,EAAE,EAAE,OAC1Cv2H,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EACxC,OAAAA,EAAI,aAAa,OAAO,MAAM,EACzBw2H,GACHx2H,EAAI,aAAa,OAAOo0H,EAAe,EAErCqC,GACFz2H,EAAI,aAAa,IAAIm0H,GAAqBsC,CAAiB,EAC3D7E,GAAqB6E,CAAiB,GAEtCz2H,EAAI,aAAa,OAAOm0H,EAAmB,EAEtCK,GAASx0H,EAAK,CAAE,QAAAy0H,EAAS,CAClC,CAEA,SAASiC,GAAqB/9H,EAAGC,EAAG,CAClC,OAAO,OAAOD,GAAK,EAAE,EAAE,cAAc,OAAOC,GAAK,EAAE,EAAG,OAAW,CAC/D,QAAS,GACT,YAAa,OACd,CACH,CAEA,SAAS+9H,GAAchwH,EAAO,CAC5B,MAAM4lH,EAAO8H,GAAQ1tH,CAAK,EAC1B,GAAI,CAAC4lH,EACH,MAAO,GAET,MAAMhrI,EAAQgrI,EAAK,MAAM,GAAG,EAC5B,OAAOhrI,EAAMA,EAAM,OAAS,CAAC,GAAKgrI,CACpC,CAEA,SAASqK,GAAoBjwH,EAAO,CAClC,OAAOgwH,GAAchwH,CAAK,EACvB,QAAQ,iBAAkB,EAAE,EAC5B,QAAQ,iBAAkB,EAAE,EAC5B,QAAQ,wDAAyD,EAAE,CACxE,CAEO,SAASkwH,GAA2BlwH,EAAO,CAEhD,MAAMplB,EADO,OAAOolB,GAAO,kBAAoB0tH,GAAQ1tH,CAAK,GAAK,EAAE,EAAE,OAClD,MAAM,GAAG,EAAE,OAAO,OAAO,EAC5C,OAAAplB,EAAM,MACCA,EAAM,KAAK,GAAG,CACvB,CAEA,SAASu1I,GAAwBnwH,EAAO,CACtC,MAAMowH,EAAWJ,GAAchwH,CAAK,EAC9BxR,EAAQ,aAAa,KAAK4hI,CAAQ,EACxC,OAAO,OAAO5hI,IAAQ,CAAC,GAAK,EAAE,EAAE,OAAO,aACzC,CAEO,SAAS6hI,GAAsBrwH,EAAO,CAC3C,MAAMswH,EAAOL,GAAoBjwH,CAAK,EACtC,GAAI,CAACswH,EACH,MAAO,GAET,MAAMhkI,EAAO,OAAO0T,GAAO,MAAQ,EAAE,EAAE,OAAO,cAExCyjH,EADsB,IAAI,IAAI,CAAC,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,QAAS,UAAU,CAAC,EACnE,IAAIn3H,CAAI,EAC7CA,EACA,OAAO6jI,GAAwBnwH,CAAK,GAAK,MAAM,EAAE,OAAO,cAE5D,OAAIyjH,IAAiB,MACZ,GAAG6M,CAAI,OAEZ7M,IAAiB,QAAUzjH,GAAO,OAAS,OACtC,GAAGswH,CAAI,QAEZ7M,IAAiB,QAAUzjH,GAAO,OAAS,OACtC,GAAGswH,CAAI,QAEZ7M,IAAiB,OAASzjH,GAAO,OAAS,MACrC,GAAGswH,CAAI,OAEZ7M,IAAiB,OAASzjH,GAAO,OAAS,MACrC,GAAGswH,CAAI,OAEZ7M,IAAiB,OAASzjH,GAAO,OAAS,MACrC,GAAGswH,CAAI,OAEZ7M,IAAiB,OAASzjH,GAAO,OAAS,MACrC,GAAGswH,CAAI,OAEZ7M,IAAiB,SAAWzjH,GAAO,OAAS,QACvC,GAAGswH,CAAI,SAEZ7M,IAAiB,YAAczjH,GAAO,OAAS,WAC1CgwH,GAAchwH,CAAK,EAErB,GAAGswH,CAAI,IAAI7M,IAAiB,MAAQ,MAAQ,MAAM,EAC3D,CAEO,SAAS8M,GAAqBvwH,EAAO,CAC1C,OAAOqwH,GAAsBrwH,CAAK,CACpC,CAEA,SAASwwH,GAAsBx+H,EAAGC,EAAG,CACnC,MAAMw+H,EAAWF,GAAqBv+H,CAAC,EAAE,cAAcu+H,GAAqBt+H,CAAC,EAAG,OAAW,CACzF,QAAS,GACT,YAAa,OACd,EACD,OAAIw+H,IAAa,EACRA,EAEF/C,GAAQ17H,CAAC,EAAE,cAAc07H,GAAQz7H,CAAC,EAAG,OAAW,CACrD,QAAS,GACT,YAAa,OACd,CACH,CAEA,SAASy+H,GAA2B1gI,EAAI0B,EAAM,CAC5C,MAAO,CACL,GAAA1B,EACA,KAAA0B,EACA,QAAS,GACT,aAAc,GAAI,CAEtB,CAEA,SAASi/H,GAA6BnhI,EAAM,CAC1C,MAAO,CACL,GAAIA,EAAK,GACT,KAAMA,EAAK,KACX,QAAS,CAAC,GAAGA,EAAK,OAAO,EAAE,KAAKghI,EAAqB,EACrD,YAAa,CAAC,GAAGhhI,EAAK,SAAS,QAAQ,EACpC,IAAImhI,EAA4B,EAChC,KAAK,CAAC3+H,EAAGC,IAAM89H,GAAqB/9H,EAAE,KAAMC,EAAE,IAAI,CAAC,EAE1D,CAEO,SAAS2+H,GAA0Bn2I,EAAS,CAAE,SAAAo2I,EAAW,aAAgB,GAAI,CAClF,MAAMh9H,EAAO68H,GAA2B,GAAI,OAAOG,GAAY,WAAW,CAAC,EAE3E,UAAW7wH,KAASvlB,EAAS,CAC3B,MAAMq2I,EAAcZ,GAA2BlwH,CAAK,EAC9C+wH,EAAiBD,EAAcA,EAAY,MAAM,GAAG,EAAI,GAC9D,IAAIE,EAAcn9H,EACdo9H,EAAY,GAEhB,UAAWp2I,KAAQk2I,EAAgB,CACjCE,EAAYA,EAAY,GAAGA,CAAS,IAAIp2I,CAAI,GAAKA,EACjD,MAAMq2I,EAAYF,EAAY,SAAS,IAAIn2I,CAAI,GAAK61I,GAA2BO,EAAWp2I,CAAI,EAC9Fm2I,EAAY,SAAS,IAAIn2I,EAAMq2I,CAAS,EACxCF,EAAcE,CAChB,CAEAF,EAAY,QAAQ,KAAKhxH,CAAK,CAChC,CAEA,OAAO2wH,GAA6B98H,CAAI,CAC1C,CAEO,SAASs9H,GAA2BC,EAAej4I,EAAS,GAAI,CACrE,UAAWqsD,KAAa4rF,EAAc,aAAe,GACnDj4I,EAAO,KAAKqsD,EAAU,EAAE,EACxB2rF,GAA2B3rF,EAAWrsD,CAAM,EAE9C,OAAOA,CACT,CAqBO,SAASk4I,GAAqBD,EAAeN,EAAa,CAC/D,MAAMQ,EAAW,OAAOR,GAAe,EAAE,EAAE,OAC3C,GAAI,CAACM,EACH,MAAO,GAET,GAAI,CAACE,EACH,MAAO,CAACF,CAAa,EAGvB,MAAMj4I,EAAS,GACT+c,EAAS1G,GAAS,CAEtB,GADArW,EAAO,KAAKqW,CAAI,EACZ,OAAOA,EAAK,IAAM,EAAE,IAAM8hI,EAC5B,MAAO,GAGT,UAAWC,KAAkB/hI,EAAK,aAAe,GAC/C,GAAI0G,EAAMq7H,CAAc,EACtB,MAAO,GAIX,OAAAp4I,EAAO,MACA,EACT,EAEA,OAAO+c,EAAMk7H,CAAa,EAAIj4I,EAAS,EACzC,CAEO,SAASq4I,GAAiBhsF,EAAW,CAC1C,MAAO,CACL,IAAIA,EAAU,aAAe,IAAI,IAAK+rF,IAAoB,CACxD,KAAM,YACN,IAAK,aAAaA,EAAe,EAAE,GACnC,MAAOA,EAAe,KACtB,MAAOA,CAAA,EACP,EACF,IAAI/rF,EAAU,SAAW,IAAI,IAAKxlC,IAAW,CAC3C,KAAM,QACN,IAAK,SAAS0tH,GAAQ1tH,CAAK,CAAC,GAC5B,MAAOuwH,GAAqBvwH,CAAK,EACjC,MAAOA,CAAA,EACP,GACF,KAAK,CAAChO,EAAGC,IAAM,CACf,MAAMw/H,EAAY1B,GAAqB/9H,EAAE,MAAOC,EAAE,KAAK,EACvD,OAAIw/H,IAAc,EACTA,EAEFz/H,EAAE,IAAI,cAAcC,EAAE,IAAK,OAAW,CAC3C,QAAS,GACT,YAAa,OACd,CACH,CAAC,CACH,CAEO,SAASy/H,GAA4BZ,EAAa,CACvD,GAAI,CAACA,EACH,MAAO,GAGT,MAAMl2I,EAAQ,OAAOk2I,CAAW,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO,EACrDa,EAAc,GACpB,IAAIV,EAAY,GAEhB,UAAWp2I,KAAQD,EACjBq2I,EAAYA,EAAY,GAAGA,CAAS,IAAIp2I,CAAI,GAAKA,EACjD82I,EAAY,KAAKV,CAAS,EAG5B,OAAOU,CACT,CCnbA,SAASC,GAAoBh9I,EAAO,CAElC,OADmBi9I,GAAuBj9I,CAAK,EAC7B,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,OAAS,EACxD,CAEA,SAASk9I,GAAmBl9I,EAAO,CACjC,MAAM6X,EAAa,OAAO7X,GAAS,EAAE,EAAE,OAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,EACpF,OAAO6X,EAAW,WAAW,GAAG,EAC5BA,EACAA,EAAW,QAAQ,OAAQ,EAAE,CACnC,CAEA,SAASslI,GAAmBn9I,EAAO,CACjC,MAAMgG,EAAQi3I,GAAuBj9I,CAAK,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO,EACrE,OAAAgG,EAAM,MACCA,EAAM,KAAK,GAAG,CACvB,CAEA,SAASo3I,MAAoBp3I,EAAO,CAClC,OAAOA,EACJ,IAAKC,GAASg3I,GAAuBh3I,CAAI,CAAC,EAC1C,OAAO,OAAO,EACd,KAAK,GAAG,CACb,CAEA,SAASo3I,GAAuBr9I,EAAO,CAErC,OADiBg9I,GAAoBh9I,CAAK,EAC1B,QAAQ,iBAAkB,KAAK,CACjD,CAEA,SAASs9I,GAAsBt9I,EAAO,CACpC,MAAMu9I,EAAUJ,GAAmBn9I,CAAK,EAClCmkB,EAAWk5H,GAAuBr9I,CAAK,EAC7C,OAAOo9I,GAAiBG,EAASp5H,CAAQ,CAC3C,CAEA,SAASq5H,GAAcx9I,EAAO,CAC5B,MAAO,iBAAiB,KAAKi9I,GAAuBj9I,CAAK,CAAC,CAC5D,CAEA,SAASy9I,GAAgBz9I,EAAO,CAC9B,GAAI,CACF,OAAOg9I,GAAoB,IAAI,IAAI,OAAOh9I,GAAS,EAAE,CAAC,EAAE,QAAQ,CAClE,MAAQ,CACN,MAAO,EACT,CACF,CAEA,SAAS09I,GAAS19I,EAAO,CACvB,MAAMwiB,EAAO,OAAOxiB,GAAS,EAAE,EAAE,OACjC,GAAI,CAACwiB,EACH,MAAO,GAET,GAAI,CACF,MAAMiC,EAAM,IAAI,IAAIjC,CAAI,EACxB,OAAOiC,EAAI,WAAa,SAAWA,EAAI,WAAa,SAAWA,EAAI,WAAa,EAClF,MAAQ,CACN,MAAO,EACT,CACF,CAEA,SAASk5H,GAA6BjI,EAAmB,GAAI,CAC3D,OAAO,OAAOA,GAAkB,SAAW,EAAE,EAAE,OAAO,gBAAkB,aAC1E,CAEA,SAASkI,GAAsBxyH,EAAO,CACpC,OACE8xH,GAAmB9xH,GAAO,UAAU,GACpC8xH,GAAmB9xH,GAAO,QAAQ,IAAI,GACtC8xH,GAAmB9xH,GAAO,QAAQ,IAAI,GACtCqyH,GAAgBryH,GAAO,WAAaA,GAAO,QAAQ,GAAG,CAE1D,CAEA,SAASyyH,GAA+BzyH,EAAO,CAC7C,OACE8xH,GAAmB9xH,GAAO,mBAAmB,GAC7C8xH,GAAmB9xH,GAAO,QAAQ,aAAa,GAC/C8xH,GAAmB9xH,GAAO,QAAQ,UAAU,CAEhD,CAEA,SAAS0yH,GAAgB1yH,EAAOsqH,EAAmB,GAAI,CACrD,OACED,GAAuBrqH,GAAO,WAAaA,GAAO,cAAgBA,GAAO,UAAU,KAAMsqH,EAAkB,CAAE,WAAYtqH,GAAO,KAAM,GACtIqqH,GAAuBrqH,GAAO,IAAKsqH,EAAkB,CAAE,WAAYtqH,GAAO,KAAM,CAEpF,CAEA,SAAS2yH,GAAmB3yH,EAAO,CACjC,OAAOsyH,GAAStyH,GAAO,WAAaA,GAAO,QAAQ,GAAG,CACxD,CAEA,SAAS4yH,GAAiB5yH,EAAO,CAC/B,MAAM6yH,EAAkBP,GAAStyH,GAAO,SAAWA,GAAO,MAAM,GAAG,EACnE,OAAI6yH,IAGG,OAAO7yH,GAAO,YAAcA,GAAO,gBAAkB,EAAE,EAAE,OAAO,gBAAkB,SACrF,GACA2yH,GAAmB3yH,CAAK,EAC9B,CAEA,SAAS8yH,GAAmB9yH,EAAO+yH,EAAe,CAChD,OAAIX,GAAcW,CAAa,EACtBH,GAAiB5yH,CAAK,EAExBsyH,GAAStyH,GAAO,WAAaA,GAAO,QAAQ,KAAOA,GAAO,GAAG,CACtE,CAEA,SAASgzH,GAAmBC,EAAU,CACpC,OAAO,OAAOA,GAAY,EAAE,EAAE,SAAS,IAAI,EAAI,KAAO,GACxD,CAEA,SAASC,GAAcD,EAAUE,EAAc,CAC7C,MAAMp+I,EAAO,OAAOk+I,GAAY,EAAE,EAAE,OAC9B1zE,EAAWsyE,GAAuBsB,CAAY,EACpD,GAAI,CAACp+I,GAAQ,CAACwqE,EACZ,OAAOxqE,GAAQwqE,EAEjB,MAAM6zE,EAAYJ,GAAmBj+I,CAAI,EACnCs+I,EAAiBt+I,EAAK,QAAQ,UAAW,EAAE,EAC3Cu+I,EAAqB/zE,EAAS,QAAQ,MAAO6zE,CAAS,EAC5D,MAAO,GAAGC,CAAc,GAAGD,CAAS,GAAGE,CAAkB,EAC3D,CAEA,SAASC,GAAgCC,EAAuB1J,EAAS,CACvE,MAAM2J,EAAgB5B,GAAuB2B,CAAqB,EAC5DzJ,EAAoB8H,GAAuB/H,CAAO,EACxD,OAAK2J,EAGA1J,EAGE0J,IAAkB1J,GAAqB0J,EAAc,WAAW,GAAG1J,CAAiB,GAAG,EAFrF,GAHA,EAMX,CAEA,SAAS2J,GAA0CF,EAAuB1J,EAAS,CACjF,OAAOyJ,GAAgCC,EAAuB1J,CAAO,EACjED,GAAyB2J,EAAuB1J,CAAO,EACvD,EACN,CAEO,SAAS6J,GAAyB3zH,EAAO,CAC9C,iBAAA4zH,EAAmB,KACnB,iBAAAtJ,EAAmB,EACrB,EAAI,GAAI,CACN,MAAMuJ,EAAUnG,GAAQ1tH,CAAK,EAC7B,GAAI,CAAC6zH,EACH,MAAO,CACL,SAAU,KACV,OAAQ,KACR,OAAQ,MAIZ,MAAMd,EAAgB1I,GAAuBrqH,GAAO,MAAQ6zH,EAASvJ,CAAgB,GACnFuH,GAAuB7xH,GAAO,MAAQ6zH,CAAO,EACzCC,EAAiBlC,GAAoBmB,CAAa,EAClDgB,EAAcrB,GAAgB1yH,EAAOsqH,CAAgB,EACrD0J,EAAmBpC,GAAoBmC,CAAW,EAClDE,EAAkB1B,GAA6BjI,CAAgB,EAC/D4J,EAAoBD,EAAkBnB,GAAmB9yH,EAAO+yH,CAAa,EAAI,GACjFoB,EAAsBF,EAAkB3B,GAAStyH,GAAO,GAAG,EAAI,GAC/DopH,EAAa,OAAOwK,GAAkB,YAAc1K,GAAoBlpH,CAAK,CAAC,EAAE,OAAO,cACvFo0H,EAAiBtC,GAAmB8B,GAAkB,UAAU,EAChES,EAAoB7B,GAAsBxyH,CAAK,EAC/Cs0H,EAA6B7B,GAA+BzyH,CAAK,EACjEu0H,EAAwBnL,IAAe,UAAYgJ,GAAcW,CAAa,EAChFb,GAAsBa,CAAa,EACnC,GACEyB,EAAYH,GAAqBD,GAAkBG,EACnDE,EAAqBL,GAAkBE,EACvCI,EAAuB,GAC3BpK,GAAkB,SAClBA,GAAkB,UAClBA,GAAkB,eAEdqK,EAAgBH,EAClBE,EACGrK,GAAuBmK,EAAWlK,EAAkB,CAAE,WAAYyI,CAAA,CAAe,GAAKyB,EACvFC,EAAqB,GAAMJ,GAAqBE,EAClD,GACEK,EAAiBD,GAAiBH,EACnC5C,GAAoB+C,GAAiBH,CAAS,GAAKvC,GAAuBc,CAAa,EACxF,GAEJ,MAAO,CACL,SAAUiB,EAAmB,CAC3B,MAAO,WACP,QAAAH,EACA,SAAUG,EACV,MAAOA,EACP,iBAAkBD,EAClB,GAAII,EAAsB,CAAE,YAAaA,GAAwB,EAAC,EAChE,KACJ,OAAQ,CACN,MAAO,SACP,QAAAN,EACA,SAAUC,GAAkB,WAC5B,MAAOA,GAAkB,WACzB,iBAAkBf,EAClB,GAAImB,EAAoB,CAAE,YAAaA,GAAsB,EAAC,EAEhE,OAAQU,EAAiB,CACvB,MAAO,SACP,QAAAf,EACA,SAAUe,EACV,MAAOA,EACP,iBAAkBD,EAClB,sBAAuBF,CAAA,EACrB,KAER,CAEO,SAASI,GAAwBhB,EAASiB,EAAQ,SAAU9wE,EAAU,GAAI,CAC/E,MAAMtpE,EAAO,wBAAwB,mBAAmBm5I,CAAO,CAAC,UAAU,mBAAmBiB,GAAS,QAAQ,CAAC,GAC/G,GAAI,CAAC9wE,EACH,OAAOtpE,EAET,GAAI,CACF,OAAO,IAAI,IAAIA,EAAMspE,CAAO,EAAE,UAChC,MAAQ,CACN,OAAOtpE,CACT,CACF,CAEO,SAASq6I,GAAoBlB,EAASiB,EAAQ,SAAU9wE,EAAU,GAAI,CAC3E,MAAMtpE,EAAO,sBAAsB,mBAAmBm5I,CAAO,CAAC,UAAU,mBAAmBiB,GAAS,QAAQ,CAAC,GAC7G,GAAI,CAAC9wE,EACH,OAAOtpE,EAET,GAAI,CACF,OAAO,IAAI,IAAIA,EAAMspE,CAAO,EAAE,UAChC,MAAQ,CACN,OAAOtpE,CACT,CACF,CAEO,SAASs6I,GAA8BF,EAAOxK,EAAmB,GAAI,CAC1E,MAAMR,EAAU+H,GAAuBvH,GAAkB,OAAO,EAC1DkJ,EAAwB3B,GAAuBiD,GAAO,qBAAqB,EAE3EG,EAD4BvB,GAA0CF,EAAuB1J,CAAO,GACjD+H,GAAuBiD,GAAO,gBAAgB,EACjGI,EAAmBD,EACrB5K,GAAuB4K,EAAqB3K,EAAkB,CAAE,WAAYwK,GAAO,QAAS,EAC5F,GACE3B,EAAe+B,GAAoB1B,EAOzC,MAAO,CACL,KAPmB0B,GAAoB5K,GAAkB,SACrD4I,GAAc5I,EAAiB,SAAU4K,CAAgB,EACzD1B,GAAyBlJ,GAAkB,cACzC4I,GAAc5I,EAAiB,cAAekJ,CAAqB,EACnE,GAIN,aAAAL,CAAA,CAEJ,CCnQA,SAAS9J,GAAUz0I,EAAO,CACxB,OAAO,OAAOA,GAAS,EAAE,EAAE,MAC7B,CAEA,SAASugJ,GAAcvgJ,EAAO,CAC5B,OAAOy0I,GAAUz0I,CAAK,EAAE,aAC1B,CAEA,SAASwgJ,GAAUxgJ,EAAO,CACxB,MAAM6X,EAAa48H,GAAUz0I,CAAK,EAClC,OAAO6X,EAAa,GAAGA,EAAW,CAAC,EAAE,aAAa,GAAGA,EAAW,MAAM,CAAC,CAAC,GAAK,EAC/E,CAEA,SAAS4oI,GAAUzgJ,EAAO,CACxB,MAAMwiB,EAAOiyH,GAAUz0I,CAAK,EAC5B,OAAOwiB,EAAK,OAAS,GAAK,GAAGA,EAAK,MAAM,EAAG,EAAE,CAAC,MAAMA,EAAK,MAAM,EAAE,CAAC,GAAKA,CACzE,CAEA,SAASk+H,GAAY5yI,EAAO9N,EAAOwY,EAAU,GAAI,CAC/C,MAAMgK,EAAOiyH,GAAUz0I,CAAK,EAC5B,OAAKwiB,EAGE,CACL,MAAA1U,EACA,MAAO0U,EACP,aAAchK,EAAQ,MAAQioI,GAAUj+H,CAAI,EAAIA,EAChD,KAAMiyH,GAAUj8H,EAAQ,IAAI,EAC5B,QAASi8H,GAAUj8H,EAAQ,OAAO,EAClC,OAAQi8H,GAAUj8H,EAAQ,MAAM,EAChC,MAAOA,EAAQ,OAAS,KACxB,UAAWA,EAAQ,OAAS,GAAOgK,EAAOiyH,GAAUj8H,EAAQ,SAAS,EACrE,KAAMA,EAAQ,OAAS,GACvB,MAAOi8H,GAAUj8H,EAAQ,KAAK,GAAKgK,CAAA,EAZ5B,IAcX,CAEA,SAASm+H,GAAYv/H,EAAM,CACzB,OAAOA,EAAK,OAAO,OAAO,CAC5B,CAEA,SAASw/H,GAAcvW,EAAOjpH,EAAM,CAClC,MAAMy/H,EAAgBF,GAAYv/H,CAAI,EACtC,OAAOy/H,EAAc,OAAS,CAAE,MAAAxW,EAAO,KAAMwW,GAAkB,IACjE,CAEO,SAASC,GAAwB9gJ,EAAO,CAC7C,MAAMmsE,EAAQ,OAAOnsE,CAAK,EAC1B,GAAI,CAAC,OAAO,SAASmsE,CAAK,GAAKA,EAAQ,EACrC,MAAO,GAET,MAAM40E,EAAe,KAAK,MAAM50E,CAAK,EACrC,GAAI40E,EAAe,KACjB,MAAO,GAAGA,CAAY,KAExB,MAAMC,EAAQ,CAAC,KAAM,KAAM,KAAM,IAAI,EACrC,IAAIC,EAASF,EAAe,KACxBG,EAAY,EAChB,KAAOD,GAAU,MAAQC,EAAYF,EAAM,OAAS,GAClDC,GAAU,KACVC,GAAa,EAEf,MAAMC,EAAYF,GAAU,GAAK,EAAI,EAKrC,MAAO,GAJUA,EACd,QAAQE,CAAS,EACjB,QAAQ,mBAAoB,IAAI,EAChC,QAAQ,QAAS,EAAE,CACJ,IAAIH,EAAME,CAAS,CAAC,KAAKH,EAAa,eAAe,OAAO,CAAC,KACjF,CAEA,SAASK,GAAch2H,EAAO,CAC5B,MAAM1T,EAAO6oI,GAAcn1H,GAAO,IAAI,EAChC0jD,EAASyxE,GAAc3xE,GAAkBxjD,CAAK,CAAC,EAKrD,MAJc,CACZ1T,EAAO8oI,GAAU9oI,CAAI,EAAI,GACzBo3D,GAAUA,IAAWp3D,EAAOo3D,EAAO,cAAgB,IACnD,OAAO,OAAO,EACH,KAAK,KAAK,CACzB,CAEA,SAASuyE,GAAmBj2H,EAAO,CACjC,MAAMopH,EAAa+L,GAAcn1H,GAAO,YAAcA,GAAO,cAAc,YAAcA,GAAO,UAAU,UAAU,EACpH,OACSopH,CAGX,CAEA,SAAS8M,GAAgBthJ,EAAO,CAC9B,MAAMw0I,EAAa+L,GAAcvgJ,CAAK,EACtC,OAAIw0I,IAAe,SACV,mBAELA,IAAe,OACV,cAEFgM,GAAUhM,CAAU,CAC7B,CAEA,SAAS+M,GAAmBn2H,EAAOo2H,EAAa9L,EAAmB,GAAI,CACrE,MAAM5kF,EAAU2jF,GACdrpH,GAAO,QAAQ,YACfA,GAAO,QAAQ,MACfA,GAAO,qBACPo2H,GAAa,uBACbp2H,GAAO,YACPo2H,GAAa,kBAEf,OAAO/L,GAAuB3kF,EAAS4kF,EAAkB,CAAE,WAAYtqH,GAAO,KAAM,GAAK0lC,CAC3F,CAEA,SAAS2wF,GAA0BvB,EAAO,CACxC,OAAKA,EAGE,CACL,QAASC,GAAoBD,EAAM,QAASA,EAAM,KAAK,EACvD,OAAQ,OACR,MAAAA,CAAA,EALO,EAOX,CAEA,SAASwB,GAA8BxB,EAAO,CAC5C,OAAKA,EAGE,CACL,KAAMzL,GAAUyL,EAAM,WAAW,GAAKD,GAAwBC,EAAM,QAASA,EAAM,KAAK,EACxF,OAAQ,WACR,MAAAA,CAAA,EALO,EAOX,CAEA,SAASyB,GAA0BzB,EAAO,CACxC,uBAAA0B,EAAyB,GACzB,2BAAAC,EAA6B,EAC/B,EAAI,GAAI,CACN,OAAID,EACKH,GAA0BvB,CAAK,EAEpC2B,EACKH,GAA8BxB,CAAK,EAErC,EACT,CAEA,SAAS4B,GAAmB12H,EAAO,CACjC,oBAAA22H,EAAsB,GACtB,sBAAAC,EAAwB,GACxB,iBAAAtM,EAAmB,EACrB,EAAI,GAAI,CACN,MAAMlB,EAAa6M,GAAmBj2H,CAAK,EAC3C,GAAIopH,IAAe,UAAY,CAACuN,EAC9B,MAAO,GAGT,MAAMl6H,EAASuD,GAAO,QAAU,OAAOA,EAAM,QAAW,SAAWA,EAAM,OAAS,GAC5E62H,EAAe72H,GAAO,cAAgB,OAAOA,EAAM,cAAiB,SAAWA,EAAM,aAAe,GACpG82H,EAAenD,GAAyB3zH,EAAO,CAAE,iBAAAsqH,EAAkB,EACnE8L,EAAchN,IAAe,SAAW0N,EAAa,OAAS,KAC9DC,EAAaZ,GAAmBn2H,EAAOo2H,EAAa9L,CAAgB,EAE1E,OAAOiL,GAAY,CACjBD,GAAY,OAAQY,GAAgB9M,CAAU,CAAC,EAC/CA,IAAe,SACXkM,GAAY,gBAAiByB,GAAcX,GAAa,MAAO,CAC7D,GAAGC,GAA0BD,CAAW,EACxC,KAAM,GACN,MAAOW,GAAcX,GAAa,OAAS,gBAC5C,EACD,KACJQ,EAAwB,KAAOtB,GAAY,SAAUuB,EAAa,MAAM,EACxEvB,GAAY,cAAe74H,EAAO,YAAco6H,EAAa,WAAY,CAAE,KAAM,GAAM,MAAO,GAAM,KAAM,GAAM,EAChHD,EAAwB,KAAOtB,GAAY,UAAWuB,EAAa,YAAa,CAAE,KAAM,GAAM,MAAO,GAAM,KAAM,GAAM,EACxH,CACH,CAEA,SAASG,GAAsBh3H,EAAO,CACpC,sBAAA42H,EAAwB,GACxB,iBAAAtM,EAAmB,EACrB,EAAI,GAAI,CACN,MAAMvE,EAAW/lH,GAAO,UAAY,OAAOA,EAAM,UAAa,SAAWA,EAAM,SAAW,GACpFi3H,EAAY5N,GAAUrpH,GAAO,SAAS,EACtCk3H,EAAa7M,GAAuBrqH,GAAO,YAAci3H,EAAW3M,EAAkB,CAAE,WAAYtqH,GAAO,KAAM,GAAKi3H,EAC5H,OACS1B,GADLqB,EACiB,CACjBtB,GAAY,SAAU4B,EAAY,CAAE,KAAMD,EAAW,KAAM,GAAM,MAAOC,CAAA,CAAY,GAGrE,CACjB5B,GAAY,SAAU4B,EAAY,CAAE,KAAMD,EAAW,KAAM,GAAM,MAAOC,EAAY,EACpF5B,GAAY,WAAYvP,EAAS,MAAQqP,GAAU,OAAOrP,EAAS,KAAK,EAAE,QAAQ,KAAM,GAAG,CAAC,EAAI,EAAE,EAClGuP,GAAY,gBAAiBvP,EAAS,aAAc,CAAE,KAAM,GAAM,MAAO,GAAM,KAAM,GAAM,EAC3FuP,GAAY,eAAgBvP,EAAS,YAAa,CAAE,KAAM,GAAM,MAAO,GAAM,KAAM,GAAM,EACzFuP,GAAY,UAAWvP,EAAS,OAAO,EAPtC,CASL,CAEA,SAASoR,GAAmBn3H,EAAO,CACjC,MAAMo3H,EAAUp3H,GAAO,SAAW,OAAOA,EAAM,SAAY,SAAWA,EAAM,QAAU,GACtF,OAAO,OAAO,QAAQo3H,CAAO,EAAE,QAAQ,CAAC,CAAC1lI,EAAM9c,CAAK,IAAM,CACxD,MAAM8N,EAAQ2mI,GAAU33H,CAAI,EAC5B,GAAI,CAAChP,EACH,MAAO,GAET,MAAM0U,EAAO,MAAM,QAAQxiB,CAAK,EAC5BA,EAAM,IAAIy0I,EAAS,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,EAC9Cz0I,GAAS,OAAOA,GAAU,SACxB,KAAK,UAAUA,CAAK,EACpBy0I,GAAUz0I,CAAK,EACrB,OAAO0gJ,GAAY5yI,EAAO0U,CAAI,CAChC,CAAC,CACH,CAEA,SAASigI,GAAqBr3H,EAAOsqH,EAAmB,GAAI,CAC1D,MAAMgN,EAAYt3H,GAAO,WAAa,OAAOA,EAAM,WAAc,SAAWA,EAAM,UAAY,GAC9F,OAAO,OAAO,QAAQs3H,CAAS,EAAE,QAAQ,CAAC,CAAC5lI,EAAM4xH,CAAQ,IAAM,CAC7D,MAAM5gI,EAAQ2mI,GAAU33H,CAAI,EAAE,cAC9B,MAAI,CAAChP,GAAS,CAAC4gI,GAAY,OAAOA,GAAa,SACtC,GAEFiS,GAAY,CACjBD,GAAY,GAAG5yI,CAAK,QAAS2nI,GAAuB/G,EAAS,KAAMgH,EAAkB,CAAE,WAAYtqH,GAAO,KAAM,GAAKsjH,EAAS,KAAM,CAAE,KAAM,GAAM,EAClJgS,GAAY,GAAG5yI,CAAK,QAASgzI,GAAwBpS,EAAS,KAAK,CAAC,EACpEgS,GAAY,GAAG5yI,CAAK,QAAS4gI,EAAS,KAAM,CAAE,KAAM,GAAM,MAAO,GAAM,KAAM,GAAM,EACpF,CACH,CAAC,CACH,CAEO,SAASiU,GAA2Bv3H,EAAO5S,EAAU,GAAI,CAC9D,GAAI,CAAC4S,GAAS,OAAOA,GAAU,SAC7B,MAAO,GAET,MAAMw2H,EAAyBppI,EAAQ,yBAA2B,GAC5DqpI,EAA6BrpI,EAAQ,6BAA+B,GACpEwpI,EAAwBxpI,EAAQ,wBAA0B,GAC1Dk9H,EAAmBl9H,EAAQ,kBAAoB,GAC/CoqI,EAAS7D,GAAyB3zH,EAAO,CAAE,iBAAAsqH,EAAkB,EAC7DmN,EAAYpN,GAAuBrqH,EAAM,KAAMsqH,CAAgB,GAAKtqH,EAAM,KAC1E03H,EAAYF,EAAO,UAAU,kBACjCnN,GAAuBrqH,EAAM,WAAaA,EAAM,IAAKsqH,EAAkB,CAAE,WAAYtqH,EAAM,KAAM,GACjGA,EAAM,IAEF23H,EAAWpC,GAAY,CAC3BD,GAAY,OAAQmC,EAAW,CAC7B,GAAGlB,GAA0BiB,EAAO,OAAQ,CAAE,uBAAAhB,EAAwB,2BAAAC,EAA4B,EAClG,KAAM,GACP,EACDnB,GAAY,OAAQU,GAAch2H,CAAK,CAAC,EACxCs1H,GAAY,OAAQI,GAAwB11H,EAAM,KAAK,CAAC,EACxDs1H,GAAY,OAAQt1H,EAAM,KAAM,CAAE,KAAM,GAAM,MAAO,GAAM,KAAM,GAAM,EACvEs1H,GAAY,QAASoC,EAAW,CAC9B,GAAGnB,GAA0BiB,EAAO,SAAU,CAAE,uBAAAhB,EAAwB,2BAAAC,EAA4B,EACpG,KAAM,GACN,MAAOiB,CAAA,CACR,EACF,EAED,MAAO,CACLlC,GAAc,OAAQmC,CAAQ,EAC9BnC,GAAc,UAAW2B,GAAmBn3H,CAAK,CAAC,EAClDw1H,GAAc,SAAUkB,GAAmB12H,EAAO,CAAE,GAAG5S,EAAS,iBAAAk9H,EAAkB,sBAAAsM,CAAA,CAAuB,CAAC,EAC1GpB,GAAc,YAAawB,GAAsBh3H,EAAO,CAAE,iBAAAsqH,EAAkB,sBAAAsM,CAAA,CAAuB,CAAC,EACpGpB,GAAc,YAAa6B,GAAqBr3H,EAAOsqH,CAAgB,CAAC,GACxE,OAAO,OAAO,CAClB,CCrQA,SAASsN,GAAmB,CAAE,MAAAhjJ,EAAO,MAAA8N,GAAS,CAC5C,KAAM,CAAC8U,EAAQqgI,CAAS,EAAI9wE,WAAS,EAAK,EACpC+wE,EAAOtgI,EAASugI,GAAQC,GACxB5gI,EAAO,OAAOxiB,GAAS,EAAE,EAAE,OACjC,OAAKwiB,EAKH1Q,MAAC,UACC,KAAK,SACL,UAAWV,EACT,4HACA,+DACA,8EAEF,MAAO,QAAQtD,CAAK,GACpB,aAAY,QAAQA,CAAK,GACzB,QAAS,SAAY,CACnB,GAAI,CACF,MAAM8V,GAAoBpB,CAAI,EAC9BygI,EAAU,EAAI,EACd,OAAO,aAAa,IAAMA,EAAU,EAAK,EAAG,IAAI,CAClD,MAAQ,CACNA,EAAU,EAAK,CACjB,CACF,EAEA,eAACC,EAAA,CAAK,UAAU,SAAS,YAAa,EAAG,cAAY,OAAO,IAvBvD,IA0BX,CAEA,SAASG,GAAc,CACrB,MAAAj4H,EACA,IAAAyN,EACA,kBAAAyqH,EAAoB,GACpB,gBAAAC,CACF,EAAG,CACD,MAAM/gI,EAAOqW,EAAI,cAAgBA,EAAI,MAC/B2qH,EAAY,OAAO3qH,EAAI,WAAa,EAAE,EAAE,OACxC4qH,EAAiBryI,EACrB,kDACAynB,EAAI,MAAQ,mCAGR6qH,EAAkBC,GACjBH,EAIH1wI,OAAC,OAAI,UAAU,wDACb,UAAAhB,MAAC,OAAI,UAAU,qBAAsB,SAAA6xI,EAAU,QAC9CX,GAAA,CAAmB,MAAOQ,EAAW,MAAO3qH,EAAI,MAAO,GAC1D,EANO8qH,EAUX,GAAI9qH,EAAI,SAAW,QAAUA,EAAI,MAAO,CACtC,MAAM+qH,EAAU,GAAG/qH,EAAI,MAAM,OAAO,IAAIA,EAAI,MAAM,KAAK,GACjDgrH,EAAOP,IAAsBM,EAC7BE,EAAU,OAAOP,GAAoB,WAE3C,OAAOG,EACL5xI,MAAC,KACC,KAAM+mB,EAAI,SAAW,IACrB,UAAWznB,EACTqyI,EACA,uJACC,CAACK,GAAWD,IAAS,6CAExB,MAAOhrH,EAAI,MACX,gBAAe,CAACirH,GAAWD,EAC3B,gBAAehrH,EAAI,SAAW,OAC9B,QAAU9iB,GAAU,CAClBA,EAAM,iBACF,GAAC+tI,GAAWD,IAGhBN,EAAgBn4H,EAAOyN,EAAI,MAAM,MAAOA,EAAI,KAAK,CACnD,EAEC,WAAO,aAAerW,CAAA,EACzB,CAEJ,CAEA,MAAM7d,EACJmN,MAAC,QACC,UAAW2xI,EACX,MAAO5qH,EAAI,MAEV,SAAArW,CAAA,GAIL,OAAKqW,EAAI,KAIF6qH,EACL5xI,MAAC,KACC,KAAM+mB,EAAI,KACV,SAAUA,EAAI,SAAW,WAAcA,EAAI,OAAO,UAAY,GAAQ,OACtE,UAAWznB,EACTqyI,EACA,uJAEF,MAAO5qH,EAAI,MAEV,SAAArW,CAAA,EACH,EAdOkhI,EAAe/+I,CAAO,CAgBjC,CAEA,SAAwBo/I,GAAoB,CAC1C,MAAA34H,EACA,sBAAA44H,EAAwB,GACxB,iBAAAtO,EAAmB,KACnB,uBAAAuO,EAAyB,GACzB,kBAAAX,EAAoB,GACpB,gBAAAC,EACA,sBAAAvB,EAAwB,EAC1B,EAAG,CACD,MAAMloF,EAAS6oF,GAA2Bv3H,EAAO,CAC/C,2BAA4B44H,GAAyB,CAACC,EACtD,uBAAwBA,EACxB,oBAAqBA,EACrB,iBAAAvO,EACA,sBAAAsM,CAAA,CACD,EACD,OAAKloF,EAAO,OAKVhoD,MAACs4H,GAAA,CACC,MAAOkD,GAAuB,cAC9B,MAAM,WACN,aAAW,gBAEX,SAAAx7H,MAAC,OACE,SAAAgoD,EAAO,IAAK70D,GACX6M,MAAC24H,IAAsC,MAAOxlI,EAAM,MAAO,iBAAiB,OAC1E,eAAC,MAAG,UAAU,cACX,SAAAA,EAAM,KAAK,IAAK4zB,GACf/lB,OAAC,OAEC,UAAU,6BAEV,UAAAhB,MAAC,MACC,UAAWV,EAAGo4H,GAAgC,WAAW,EACzD,MAAO3wG,EAAI,MAEV,SAAAA,EAAI,QAEP/mB,MAAC,MAAG,UAAU,yCACZ,SAAAA,MAACuxI,GAAA,CACC,MAAAj4H,EACA,IAAAyN,EACA,kBAAAyqH,EACA,gBAAAC,CAAA,EACF,CACF,IAhBK,GAAGt+I,EAAM,KAAK,IAAI4zB,EAAI,KAAK,GAkBnC,EACH,GAvBwB5zB,EAAM,KAwBhC,CACD,EACH,IArCK,IAwCX,CCnLA,MAAMi/I,GAAgBhkJ,GACpB,oLACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,wDACT,UAAW,4DACX,YACE,sEACF,sBACE,oGACF,QAAS,kBACT,QAAS,yEACT,kBACE,yEACJ,EAEF,gBAAiB,CACf,QAAS,UACX,CAEJ,EAEA,SAASikJ,GAAM,CACb,UAAAvgJ,EACA,QAAAlD,EACA,GAAGL,CACL,EAAG,CACD,OACEyR,MAAC,QACC,YAAU,QACV,UAAWV,EAAG8yI,GAAc,CAAE,QAAAxjJ,CAAA,CAAS,EAAGkD,CAAS,EAClD,GAAGvD,CAAA,EAEV,CCjCO,MAAM+jJ,GAAqB,OAAO,OAAO,CAC9C,MAAO,QACP,QAAS,UACT,KAAM,MACR,CAAC,EAEKC,GAAyB,OAAO,OAAO,CAC3C,CAACD,GAAmB,KAAK,EAAG,EAC5B,CAACA,GAAmB,OAAO,EAAG,EAC9B,CAACA,GAAmB,IAAI,EAAG,CAC7B,CAAC,EAEKE,GAA+B,uDAErC,SAAS7P,GAAUz0I,EAAO,CACxB,OAAO,OAAOA,GAAS,EAAE,EACtB,QAAQskJ,GAA8B,EAAE,EACxC,MACL,CAEA,SAASx9F,GAAOh5C,EAAO9N,EAAO,CAAE,KAAAukJ,EAAO,IAAU,GAAI,CACnD,MAAM/hI,EAAOiyH,GAAUz0I,CAAK,EAC5B,OAAKwiB,EAGE,CAAE,MAAA1U,EAAO,MAAO0U,EAAM,KAAA+hI,CAAA,EAFpB,IAGX,CAEA,SAASC,GAAYxkJ,EAAO01I,EAAmB,GAAIL,EAAa,GAAI,CAClE,MAAM7yH,EAAOiyH,GAAUz0I,CAAK,EAC5B,OAAOy1I,GAAuBjzH,EAAMkzH,EAAkB,CAAE,WAAAL,CAAA,CAAY,GAAK7yH,CAC3E,CAEA,SAASiiI,GAAW32I,EAAO9N,EAAO01I,EAAmB,GAAIL,EAAa,GAAI78H,EAAU,GAAI,CACtF,OAAOsuC,GAAOh5C,EAAO02I,GAAYxkJ,EAAO01I,EAAkBL,CAAU,EAAG78H,CAAO,CAChF,CAEA,SAAS8oI,GAAgBthJ,EAAO,CAC9B,OAAOy0I,GAAUz0I,CAAK,EAAE,gBAAkB,SAAW,SAAW,MAClE,CAEA,SAAS0kJ,GAAYn+G,EAAQtlC,EAAK,CAChC,OAAO,OAAO,UAAU,eAAe,KAAKslC,GAAU,GAAItlC,CAAG,CAC/D,CAEO,SAAS0jJ,GAAyB3kJ,EAAOsa,EAAW8pI,GAAmB,KAAM,CAClF,MAAMvsI,EAAa48H,GAAUz0I,CAAK,EAAE,cACpC,OAAI6X,IAAeusI,GAAmB,MAC7BA,GAAmB,MAExBvsI,IAAeusI,GAAmB,SAAWvsI,IAAe,OACvDusI,GAAmB,QAExBvsI,IAAeusI,GAAmB,MAAQvsI,IAAe,cACpDusI,GAAmB,KAErB9pI,CACT,CAEO,SAASsqI,GAAoBC,EAAO,CACzC,OAAOR,GAAuBM,GAAyBE,EAAO,EAAE,CAAC,GAAK,CACxE,CAEO,SAASC,GAAqBD,EAAO,CAC1C,MAAMhtI,EAAa8sI,GAAyBE,EAAO,EAAE,EACrD,OAAIhtI,IAAeusI,GAAmB,MAC7B,QAELvsI,IAAeusI,GAAmB,QAC7B,UAELvsI,IAAeusI,GAAmB,KAC7B,OAEF,EACT,CAEO,SAASW,GAAwBtrI,EAAM9R,EAAQ,EAAG,CACvD,GAAI,CAAC8R,GAAQ,OAAOA,GAAS,SAC3B,OAAO,KAET,MAAMorI,EAAQF,GAAyBlrI,EAAK,MAAO2qI,GAAmB,IAAI,EACpE/Z,EAAQoK,GAAUh7H,EAAK,KAAK,GAAKqrI,GAAqBD,CAAK,GAAK,SAChE3hI,EAAUuxH,GAAUh7H,EAAK,OAAO,EAChCw4H,EAAOwC,GAAUh7H,EAAK,IAAI,EAC1BoO,EAAS4sH,GAAUh7H,EAAK,MAAM,EAC9BurI,EAAU,MAAM,QAAQvrI,EAAK,OAAO,EACtCA,EAAK,QAAQ,IAAKmG,GACZ,CAACA,GAAa,OAAOA,GAAc,SAC9B,KAEFknC,GAAOlnC,EAAU,MAAOA,EAAU,MAAO,CAAE,KAAMA,EAAU,OAAS,GAAM,CAClF,EAAE,OAAO,OAAO,EACjB,GAEJ,MAAO,CACL,GAAI60H,GAAUh7H,EAAK,EAAE,GAAK,GAAGoO,GAAU,QAAQ,IAAIoqH,GAAQ5H,CAAK,IAAI1iI,CAAK,GACzE,MAAAk9I,EACA,OAAAh9H,EACA,KAAAoqH,EACA,MAAA5H,EACA,QAAAnnH,EACA,QAAA8hI,CAAA,CAEJ,CAEO,SAASC,GAAyBC,EAAO,CAC9C,GAAI,CAAC,MAAM,QAAQA,CAAK,EACtB,MAAO,GAET,MAAMnuF,MAAW,IACjB,OAAOmuF,EAAM,IAAIH,EAAuB,EAAE,OAAQtrI,GAAS,CACzD,GAAI,CAACA,EACH,MAAO,GAET,MAAMxY,EAAM,CACVwY,EAAK,MACLA,EAAK,MACLA,EAAK,QACLA,EAAK,QAAQ,IAAK0rI,GAAe,GAAGA,EAAW,KAAK,IAAIA,EAAW,KAAK,EAAE,EAAE,KAAK,GAAG,GACpF,KAAK;AAAA,CAAI,EACX,OAAIpuF,EAAK,IAAI91D,CAAG,EACP,IAET81D,EAAK,IAAI91D,CAAG,EACL,GACT,CAAC,CACH,CAEO,SAASmkJ,GAA8BF,EAAO,CACnD,OAAOD,GAAyBC,CAAK,EAClC,OAAQzrI,GACPA,EAAK,QAAU2qI,GAAmB,OAClC3qI,EAAK,QAAU2qI,GAAmB,OACnC,EACA,KAAK,CAACnrI,EAAMC,IAAU0rI,GAAoB1rI,EAAM,KAAK,EAAI0rI,GAAoB3rI,EAAK,KAAK,CAAC,CAC7F,CAEO,SAASosI,GAA8BH,EAAO,CACnD,OAAOE,GAA8BF,CAAK,EAAE,OAAS,CACvD,CAEO,SAASI,GAA2BJ,EAAO,CAChD,OAAOD,GAAyBC,CAAK,EAAE,OAAO,CAACK,EAAc9rI,IAC3DmrI,GAAoBnrI,EAAK,KAAK,EAAImrI,GAAoBW,CAAY,EAC9D9rI,EAAK,MACL8rI,EACH,EAAE,CACP,CAUO,SAASC,GAA6Bp6H,EAAO,CAClD,OAAOskH,GAAatkH,CAAK,CAC3B,CAEA,SAASq6H,GAAoBtU,EAAU/lH,EAAO,CAC5C,MAAM6mH,EAAOwC,GAAUtD,GAAU,KAAK,EACtC,OAAIA,GAAU,QAAU,IAAQc,IAAS,sBAChC,sBAELA,IAAS,cACJ,wBAELuT,GAA6Bp6H,CAAK,EAC7B,iCAEF,2BACT,CAEA,SAASs6H,GAAoBvU,EAAU/lH,EAAO,CAC5C,OAAOo6H,GAA6Bp6H,CAAK,EACrCg5H,GAAmB,QACnBA,GAAmB,KACzB,CAEO,SAASuB,GAA0BxU,EAAU,CAClD,MAAMc,EAAOwC,GAAUtD,GAAU,KAAK,EACtC,OAAIA,GAAU,QAAU,IAAQc,IAAS,sBAChC,yDAELA,IAAS,cACJ,4BAELA,IAAS,wBACJ,mDAELA,IAAS,4BACJ,uDAELA,IAAS,wBACJ,2DAELA,IAAS,kCACJ,2DAELA,IAAS,4BACJ,kDAELA,IAAS,sBACJ,qDAELA,IAAS,oBACJ,sDAEF,yCACT,CAEA,SAAS2T,GAAsBC,EAAY,CACzC,MAAO,mBACT,CAEA,SAASC,GAAsBD,EAAY,CACzC,OAAOzB,GAAmB,OAC5B,CAEA,SAAS2B,GAAwBF,EAAY7G,EAAkB,CAC7D,OAAI6G,GAAY,QACPvE,GAAgBtC,GAAkB,UAAU,IAAM,SACrD,wFACA,2CAECvK,GAAUoR,GAAY,OAAO,GAAK,0CAC3C,CAEA,SAASG,GAA2B/D,EAAc,CAChD,OAAIA,GAAc,SAAW,UACpB,2BAEF,0BACT,CAEA,SAASgE,GAA6BhE,EAAc,CAClD,OAAIA,GAAc,SAAW,UACpB,oFAEFxN,GAAUwN,GAAc,OAAO,GAAK,0CAC7C,CAEO,SAASiE,GAA2B96H,EAAQ,KAAM,CACvD,iBAAAsqH,EAAmB,EACrB,EAAI,GAAI,CACN,MAAMuM,EAAe72H,GAAO,aAC5B,MAAI,CAAC62H,GAAgBA,EAAa,KAAO,GAChC,GAEFgD,GAAyB,CAAC,CAC/B,GAAI,mBACJ,MAAOb,GAAmB,QAC1B,OAAQ,kBACR,KAAM3P,GAAUwN,EAAa,MAAM,GAAK,kBACxC,MAAO+D,GAA2B/D,CAAY,EAC9C,QAASgE,GAA6BhE,CAAY,EAClD,QAAS,CACPwC,GAAW,OAAQr5H,GAAO,KAAMsqH,EAAkBtqH,GAAO,IAAI,EAC7D07B,GAAO,cAAem7F,EAAa,YAAc72H,GAAO,UAAU,EAClEq5H,GAAW,gBAAiBxC,EAAa,YAAc72H,GAAO,QAAQ,KAAMsqH,EAAkBtqH,GAAO,IAAI,EACzG07B,GAAO,cAAem7F,EAAa,OAAO,GAC1C,OAAO,OAAO,EACjB,CAAC,CACJ,CAEO,SAASkE,GAAoB,CAClC,MAAA/6H,EAAQ,KACR,iBAAA4zH,EAAmB,KACnB,gCAAAtL,EAAkC,GAClC,4BAAA0S,EAA8B,KAC9B,sBAAA9U,EAAwB,GACxB,iBAAAoE,EAAmB,EACrB,EAAI,GAAI,CACN,MAAMwP,EAAQ,GACR/T,EAAWuT,GAAY1F,EAAkB,UAAU,EACrDA,GAAkB,SAClB5zH,GAAO,SAET+lH,GAAU,KAAO,IACjB,CAACK,GAAgC,CAC/B,MAAApmH,EACA,SAAA+lH,EACA,oBAAqBuC,EACrB,gBAAiB0S,EACjB,sBAAA9U,CAAA,CACD,GAED4T,EAAM,KAAK,CACT,GAAI,gBACJ,MAAOQ,GAAoBvU,EAAU/lH,CAAK,EAC1C,OAAQ,UACR,KAAMqpH,GAAUtD,EAAS,KAAK,GAAK,4BACnC,MAAOsU,GAAoBtU,EAAU/lH,CAAK,EAC1C,QAASu6H,GAA0BxU,CAAQ,EAC3C,QAAS,CACPrqF,GAAO,OAAQqqF,EAAS,KAAK,EAC7BsT,GAAW,YAAatT,EAAS,UAAYA,EAAS,YAAc/lH,GAAO,KAAMsqH,EAAkBtqH,GAAO,IAAI,EAC9Gq5H,GAAW,eAAgBtT,EAAS,QAASuE,EAAkBtqH,GAAO,IAAI,EAC1Eq5H,GAAW,WAAYtT,EAAS,QAASuE,EAAkBtqH,GAAO,IAAI,EACtE07B,GAAO,cAAeqqF,EAAS,UAAU,EACzCrqF,GAAO,gBAAiBqqF,EAAS,aAAc,CAAE,KAAM,GAAM,EAC7DrqF,GAAO,eAAgBqqF,EAAS,YAAa,CAAE,KAAM,GAAM,EAC3DrqF,GAAO,cAAeqqF,EAAS,OAAO,GACtC,OAAO,OAAO,EACjB,EAGH,MAAM0U,EAAa7G,GAAkB,KACrC,OAAI6G,GAAY,SACdX,EAAM,KAAK,CACT,GAAI,cACJ,MAAOY,GAAgC,EACvC,OAAQ,qBACR,KAAMrR,GAAUoR,EAAW,MAAM,GAAK,UACtC,MAAOD,GAAgC,EACvC,QAASG,GAAwBF,EAAY7G,CAAgB,EAC7D,QAAS,CACPyF,GAAW,YAAazF,GAAkB,UAAYA,GAAkB,KAAMtJ,EAAkBtqH,GAAO,IAAI,EAC3G07B,GAAO,cAAek4F,GAAkB,UAAU,EAClDyF,GAAW,gBAAiBzF,GAAkB,WAAYtJ,EAAkBtqH,GAAO,IAAI,GACvF,OAAO,OAAO,EACjB,EAGI65H,GAAyBC,CAAK,CACvC,CAEO,SAASmB,GAA6B5sI,EAAM,CACjD,MAAM5B,EAAaktI,GAAwBtrI,CAAI,EAC/C,GAAI,CAAC5B,EACH,MAAO,GAGT,MAAMqqB,EAAQ,CACZ,mBACA,UAAU4iH,GAAqBjtI,EAAW,KAAK,GAAKA,EAAW,KAAK,GACpE,UAAUA,EAAW,KAAK,IAW5B,GATIA,EAAW,SACbqqB,EAAM,KAAK,gBAAgBrqB,EAAW,OAAO,EAAE,EAE7CA,EAAW,QACbqqB,EAAM,KAAK,WAAWrqB,EAAW,MAAM,EAAE,EAEvCA,EAAW,MACbqqB,EAAM,KAAK,SAASrqB,EAAW,IAAI,EAAE,EAEnCA,EAAW,QAAQ,OAAQ,CAC7BqqB,EAAM,KAAK,GAAI,UAAU,EACzB,UAAWijH,KAActtI,EAAW,QAClCqqB,EAAM,KAAK,KAAKijH,EAAW,KAAK,KAAKA,EAAW,KAAK,EAAE,CAE3D,CACA,OAAOjjH,EAAM,KAAK;AAAA,CAAI,CACxB,CAEO,SAASokH,GAAqBC,EAAY,KAAM,CACrD,MAAMC,EAAW,MAAM,QAAQD,GAAW,QAAQ,EAAIA,EAAU,SAAW,GAC3E,OAAOtB,GAAyBuB,EAAS,IAAI,CAACziD,EAASp8F,KAAW,CAChE,GAAI,iBAAiBA,CAAK,GAC1B,MAAOy8I,GAAmB,QAC1B,OAAQ,eACR,KAAM,gBACN,MAAO,iBACP,QAASrgD,CAAA,EACT,CAAC,CACL,CAEO,SAAS0iD,GAAmBC,EAAU,KAAM,CACjD,MAAMC,EAAiBD,GAAS,gBAAkB,OAAOA,EAAQ,gBAAmB,SAChFA,EAAQ,eACR,GACEF,EAAW,MAAM,QAAQG,EAAe,QAAQ,EAAIA,EAAe,SAAW,GACpF,OAAO1B,GAAyBuB,EAAS,IAAI,CAACziD,EAASp8F,KAAW,CAChE,GAAI,eAAeA,CAAK,GACxB,MAAOy8I,GAAmB,QAC1B,OAAQ,aACR,KAAM,cACN,MAAO,cACP,QAASrgD,CAAA,EACT,CAAC,CACL,CAEO,SAAS6iD,GAA0BtvB,EAAc,KAAM,CAC5D,GAAI,CAACA,GAAe,OAAOA,GAAgB,SACzC,OAAO,KAET,MAAMutB,EAAQF,GAAyBrtB,EAAY,SAAU8sB,GAAmB,KAAK,EACrF,OAAOW,GAAwB,CAC7B,GAAI,gBAAgBtQ,GAAUnd,EAAY,OAAO,GAAKmd,GAAUnd,EAAY,KAAK,GAAKutB,CAAK,GAC3F,MAAAA,EACA,OAAQ,SACR,KAAM,eACN,MAAOpQ,GAAUnd,EAAY,KAAK,GAAKmd,GAAUnd,EAAY,OAAO,GAAK,eACzE,QAASmd,GAAUnd,EAAY,OAAO,GAAKmd,GAAUnd,EAAY,OAAO,EACxE,QAAS,CACPxwE,GAAO,UAAWwwE,EAAY,OAAO,EACrCxwE,GAAO,aAAcwwE,EAAY,UAAU,EAC3CxwE,GAAO,UAAWwwE,EAAY,QAAS,CAAE,KAAM,GAAM,GACrD,OAAO,OAAO,EACjB,CACH,CAEO,SAASuvB,GAAqB,CACnC,MAAAz7H,EAAQ,KACR,cAAA07H,EAAgB,GAChB,iBAAA9H,EAAmB,KACnB,gCAAAtL,EAAkC,GAClC,4BAAA0S,EAA8B,KAC9B,sBAAA9U,EAAwB,GACxB,UAAAiV,EAAY,KACZ,SAAAQ,EAAW,KACX,YAAAzvB,EAAc,KACd,iBAAAoe,EAAmB,IACrB,EAAI,GAAI,CACN,GAAI,CAACtqH,EACH,MAAO,GAGT,MAAM1T,EAAO+8H,GAAUqS,CAAa,EAAE,cAChC5B,EAAQ,GACdA,EAAM,KAAK,GAAGgB,GAA2B96H,EAAO,CAAE,iBAAAsqH,CAAA,CAAkB,CAAC,EACjEh+H,IAAS,QACXwtI,EAAM,KAAK,GAAGiB,GAAoB,CAChC,MAAA/6H,EACA,iBAAA4zH,EACA,gCAAAtL,EACA,4BAAA0S,EACA,sBAAA9U,EACA,iBAAAoE,CAAA,CACD,CAAC,EAEAh+H,IAAS,SACXwtI,EAAM,KAAK,GAAGoB,GAAqBC,CAAS,CAAC,EAE3C7uI,IAAS,OACXwtI,EAAM,KAAK,GAAGuB,GAAmBM,GAAU,KAAOA,CAAQ,CAAC,EAG7D,MAAMC,EAAkBJ,GAA0BtvB,CAAW,EACvD2vB,EAAyBD,GAAmB/B,GAAyBC,CAAK,EAAE,KAAMzrI,GACtFA,EAAK,QAAUutI,EAAgB,OAC/BvtI,EAAK,QAAUutI,EAAgB,OAC/BvtI,EAAK,UAAYutI,EAAgB,OAClC,EACD,OAAIA,GAAmB,CAACC,GACtB/B,EAAM,KAAK8B,CAAe,EAGrB/B,GAAyBC,CAAK,CACvC,CC1bA,MAAMgC,GAAoB,OAAO,OAAO,CACtC,CAAC9C,GAAmB,KAAK,EAAG,CAC1B,aAAc,sBACd,gBAAiB,yBAEnB,CAACA,GAAmB,OAAO,EAAG,CAC5B,aAAc,kBACd,gBAAiB,uBAEnB,CAACA,GAAmB,IAAI,EAAG,CACzB,aAAc,UACd,gBAAiB,gBAErB,CAAC,EAEK+C,GAA6B,+EAC7BC,GAA6B,8EAEnC,SAASC,GAAmBxC,EAAO,CACjC,OAAOqC,GAAkBrC,CAAK,GAAKqC,GAAkB9C,GAAmB,IAAI,CAC9E,CAEA,SAAwBkD,GAAkB,CACxC,MAAApC,EAAQ,GACR,MAAAllJ,EAAQ,QACV,EAAG,CACD,KAAM,CAACunJ,EAAiBC,CAAkB,EAAIr1E,WAAS,IAAM,IAAI,GAAK,EAChE,CAACs1E,EAAcC,CAAe,EAAIv1E,WAAS,EAAE,EAC7Cw1E,EAAcvC,GAA8BF,CAAK,EAUvD,GARA9wE,YAAU,IAAM,CACd,GAAI,CAACqzE,EACH,OAEF,MAAMG,EAAU,WAAW,WAAW,IAAMF,EAAgB,EAAE,EAAG,IAAI,EACrE,MAAO,IAAM,WAAW,aAAaE,CAAO,CAC9C,EAAG,CAACH,CAAY,CAAC,EAEb,CAACE,EAAY,OACf,OAAO,KAGT,MAAME,EAAkBC,GAAW,CACjCN,EAAoBzhJ,GAAY,CAC9B,MAAMG,EAAO,IAAI,IAAIH,CAAO,EAC5B,OAAIG,EAAK,IAAI4hJ,CAAM,EACjB5hJ,EAAK,OAAO4hJ,CAAM,EAElB5hJ,EAAK,IAAI4hJ,CAAM,EAEV5hJ,CACT,CAAC,CACH,EAEM6hJ,EAAwBD,GAAW,CACvCN,EAAoBzhJ,GAAY,CAC9B,GAAI,CAACA,EAAQ,IAAI+hJ,CAAM,EACrB,OAAO/hJ,EAET,MAAMG,EAAO,IAAI,IAAIH,CAAO,EAC5B,OAAAG,EAAK,OAAO4hJ,CAAM,EACX5hJ,CACT,CAAC,CACH,EAEM8hJ,EAAmB,CAACjyI,EAAO+xI,EAAQG,IAAe,CAClD,CAACA,GAAelyI,EAAM,MAAQ,SAAWA,EAAM,MAAQ,MAG3DA,EAAM,iBACN8xI,EAAeC,CAAM,EACvB,EAEMI,EAAkB,MAAOnyI,EAAO0D,IAAS,CAC7C1D,EAAM,iBACNA,EAAM,kBACN,GAAI,CACF,MAAM6N,GAAoByiI,GAA6B5sI,CAAI,CAAC,EAC5DiuI,EAAgBjuI,EAAK,EAAE,CACzB,MAAQ,CACNiuI,EAAgB,EAAE,CACpB,CACF,EAEMS,EAAe7C,GAA2BqC,CAAW,EACrDS,EAAaf,GAAmBc,CAAY,EAElD,OACEr2I,MAACs4H,GAAA,CACC,MAAApqI,EACA,MACE8S,OAAC,QAAK,UAAU,kCACd,UAAAhB,MAAC,QAAK,kBAAM,EACZA,MAACqyI,IAAM,QAASiE,EAAW,aAAc,UAAWjB,GAA6B,WAAY,OAAO,GACtG,EAGF,eAAC,MAAG,UAAU,wCACX,SAAAQ,EAAY,IAAKluI,GAAS,CACzB,MAAM4uI,EAAWhB,GAAmB5tI,EAAK,KAAK,EACxCurI,EAAU,MAAM,QAAQvrI,EAAK,OAAO,EAAIA,EAAK,QAAU,GACvDwuI,EAAajD,EAAQ,OAAS,EAC9B/jI,EAAWsmI,EAAgB,IAAI9tI,EAAK,EAAE,EAC5C,OACE3G,OAAC,MAEC,UAAW1B,EAAG,qBAAsBi3I,EAAS,eAAe,EAE5D,UAAAv1I,OAAC,OACC,KAAMm1I,EAAa,SAAW,OAC9B,SAAUA,EAAa,EAAI,OAC3B,UAAW72I,EACT,sDACA62I,GAAc,wFACd,CAACA,GAAc,UAEjB,QAAS,IAAM,CACTA,GACFJ,EAAepuI,EAAK,EAAE,CAE1B,EACA,UAAY1D,GAAUiyI,EAAiBjyI,EAAO0D,EAAK,GAAIwuI,CAAU,EACjE,gBAAeA,EAAahnI,EAAW,OAEvC,UAAAnO,OAAC,OAAI,UAAU,kCACb,UAAAhB,MAACqyI,GAAA,CAAM,QAASkE,EAAS,aAAc,UAAWj3I,EAAG,WAAYg2I,EAA0B,EACxF,SAAAtC,GAAqBrrI,EAAK,KAAK,EAClC,EACA3H,MAAC,OAAI,UAAU,wEAAwE,MAAO2H,EAAK,MAAQ,WAAK,MAAM,EACtH3H,MAAC,QAAK,UAAU,gDACd,SAAAA,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,UAAU,wEACV,QAAUwE,GAAUmyI,EAAgBnyI,EAAO0D,CAAI,EAC/C,aAAYguI,IAAiBhuI,EAAK,GAAK,eAAiB,uBACxD,MAAOguI,IAAiBhuI,EAAK,GAAK,SAAW,uBAE5C,aAAiBA,EAAK,SACpB0pI,GAAA,CAAM,UAAU,SAAS,YAAa,KAAM,cAAY,OAAO,QAE/DC,GAAA,CAAK,UAAU,SAAS,YAAa,IAAK,cAAY,OAAO,GAElE,CACF,GACF,EACC3pI,EAAK,QACJ3H,MAAC,OAAI,UAAU,gGACZ,SAAA2H,EAAK,QACR,EACE,QAELwuI,GAAchnI,EACbnO,OAAC,OAAI,UAAU,wBACb,UAAAhB,MAAC,MAAG,UAAU,kCACX,SAAAkzI,EAAQ,IAAI,CAACG,EAAYx9I,IACxBmL,OAAC,OAAoD,UAAU,UAC7D,UAAAhB,MAAC,MAAG,UAAU,wBAAyB,SAAAqzI,EAAW,MAAM,EACxDrzI,MAAC,MAAG,UAAWV,EACb,8CACA+zI,EAAW,MAAQ,6CAElB,WAAW,MACd,IAPQ,GAAG1rI,EAAK,EAAE,IAAI0rI,EAAW,KAAK,IAAIx9I,CAAK,EAQjD,CACD,EACH,EACAmK,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,KACL,UAAU,+HACV,QAAUwE,GAAU,CAClBA,EAAM,iBACNA,EAAM,kBACNgyI,EAAqBtuI,EAAK,EAAE,CAC9B,EACD,qBAED,EACF,EACE,OA7ECA,EAAK,GAgFhB,CAAC,EACH,GAGN,CCpLA,MAAM6uI,GAAsBve,GACtBwe,GAA2B1e,GAEjC,SAAS2e,GAAqBC,EAAS,CACrC,MAAMjuI,EAAe,OAAOiuI,CAAO,EACnC,OAAK,OAAO,SAASjuI,CAAY,EAG1BA,EAAa,QAAQ,CAAC,EAAE,QAAQ,SAAU,EAAE,EAF1C,EAGX,CAEA,SAASkuI,GAAiBC,EAAU,CAClC,MAAMz8C,EAAU,KAAK,MAAM,OAAOy8C,CAAQ,EAAI,EAAE,EAAI,GACpD,OAAO,OAAO,SAASz8C,CAAO,EAAI,OAAOA,CAAO,EAAI,EACtD,CAEA,SAAS08C,GAAW,CAClB,MAAAjhJ,EACA,QAAAg6B,EACA,SAAAn/B,CACF,EAAG,CACD,KAAM,CAACqmJ,EAAYC,CAAa,EAAI32E,WAAS,IAAMu2E,GAAiB/mH,GAAS,QAAQ,CAAC,EAEtFyyC,YAAU,IAAM,CACd00E,EAAcJ,GAAiB/mH,GAAS,QAAQ,CAAC,CACnD,EAAG,CAACA,GAAS,QAAQ,CAAC,EAEtB,MAAMonH,EAAerkC,GAAc,CACjC,MAAMskC,EAAkBjrB,GAAyBrZ,EAAW/iF,GAAS,QAAQ,EAC7En/B,EAASmF,EAAO,CAAE,SAAUqhJ,CAAA,CAAiB,EAC7CF,EAAcJ,GAAiBM,CAAe,CAAC,CACjD,EAEMt2H,EAAYorG,GAA0Bn8F,GAAS,SAAS,EAE9D,OACE7vB,MAACg5H,GAAA,CAAoB,MAAO,IAAInjI,EAAQ,CAAC,GACvC,SAAAmL,OAAC,OAAI,UAAU,+CACb,UAAAA,OAAC,OAAI,UAAU,UACb,UAAAhB,MAAC,QAAK,UAAU,UAAU,qBAAS,EACnCgB,OAACy9G,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,MAAO79F,EACP,cAAgB26D,GAAkB,CAC3BA,GAGL7qF,EAASmF,EAAO,CAAE,UAAW0lF,CAAA,CAAe,CAC9C,EACA,UAAU,sCACV,aAAY,QAAQ1lF,EAAQ,CAAC,aAE7B,UAAAmK,MAAC2+G,GAAA,CACC,MAAO0L,GAAmB,GAC1B,UAAW,oBAAoB+N,EAAiC,GACjE,gBAGDp4H,MAAC2+G,GAAA,CACC,MAAO0L,GAAmB,KAC1B,UAAW,oBAAoB+N,EAAiC,GACjE,iBAED,GACF,EACF,EACAp3H,OAAC,SAAM,UAAU,QACf,UAAAhB,MAAC,QAAK,UAAU,UAAU,iBAAK,EAC/BgB,OAAC,OAAI,UAAU,WACb,UAAAhB,MAACC,GAAA,CACC,KAAK,SACL,IAAI,IACJ,IAAI,MACJ,KAAK,IACL,UAAU,UACV,MAAO82I,EACP,SAAW9yI,GAAU,CACnB+yI,EAAc/yI,EAAM,OAAO,KAAK,CAClC,EACA,QAAUA,GAAU,CAClBA,EAAM,cAAc,QACtB,EACA,UAAYA,GAAU,CACpBA,EAAM,gBACR,EACA,OAAQ,IAAM,CACZgzI,EAAYF,CAAU,CACxB,EACA,UAAY9yI,GAAU,CAChBA,EAAM,MAAQ,SAChBA,EAAM,cAAc,MAExB,EACA,UAAW,GAAGuyI,EAAmB,0BACjC,aAAY,QAAQ3gJ,EAAQ,CAAC,sBAE/BmK,MAAC,QAAK,UAAU,iGAAiG,eAAG,GACtH,GACF,GACF,EACF,CAEJ,CAEA,SAAwBm3I,GAAa,CACnC,KAAA1zI,EACA,UAAAw3H,EACA,MAAAnrI,EACA,cAAAga,EAAgB,KAChB,aAAAoxH,EACA,QAAAyb,EACA,aAAAzoB,EACA,WAAAkpB,EACA,cAAA7xB,EACA,cAAA4V,EACA,kBAAAkc,EACA,aAAAC,EACA,sBAAApF,EAAwB,GACxB,iBAAAtO,EAAmB,KACnB,uBAAAuO,EAAyB,GACzB,kBAAAX,EAAoB,GACpB,gBAAAC,EACA,8BAAA8F,EAAgC,GAChC,YAAA1B,EAAc,GACd,cAAA2B,EAAgB,KAChB,eAAAC,EAAiB,GACjB,uBAAAC,CACF,EAAG,CACD,KAAM,CAAC1d,EAAYC,CAAa,EAAI55D,WAAS,IAAMq2E,GAAqBC,CAAO,CAAC,EAC1EjiB,EAAyB,MAAM,QAAQxG,CAAY,EAAIA,EAAe,GAE5E5rD,YAAU,IAAM,CACd23D,EAAcyc,GAAqBC,CAAO,CAAC,CAC7C,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAMgB,EAAe/kC,GAAc,CACjC,MAAM7mG,EAAkBogH,GAA+BvZ,EAAW+jC,CAAO,EACzEU,EAAkBtrI,CAAe,EACjCkuH,EAAcyc,GAAqB3qI,CAAe,CAAC,CACrD,EAEA,OACE/L,MAACg7H,GAAA,CACC,KAAAv3H,EACA,MAAM,MACN,UAAAw3H,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EAEA,SAAAn6H,OAACs0H,GAAA,CACC,KAAK,WACL,MAAOmiB,EACP,cAAeC,EACf,UAAU,UAEV,UAAA13I,MAACw1I,GAAA,CAAkB,MAAOK,CAAA,CAAa,EAEvC71I,MAACs4H,IAAiB,MAAM,MAAM,MAAM,MAClC,SAAAt3H,OAAC+3H,GAAA,CAAqB,UAAU,OAC9B,UAAA/4H,MAAC24H,GAAA,CAAoB,MAAM,YACzB,SAAA34H,MAACg5H,GAAA,CAAoB,MAAM,WACzB,SAAAh4H,OAAC,OAAI,UAAU,gEACb,UAAAhB,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,UAAWg3I,GACX,QAAS,IAAM,CACbkB,EAAYhB,EAAU,GAAI,CAC5B,EACA,SAAU,CAACS,EACX,aAAW,gCACX,MAAM,mBAEN,eAACr4D,GAAA,CAAM,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,IAEpE/9E,OAAC,OAAI,UAAU,iBACb,UAAAhB,MAACC,GAAA,CACC,KAAK,SACL,IAAI,MACJ,IAAI,KACJ,KAAK,MACL,UAAU,UACV,MAAO+5H,EACP,SAAU,CAACod,EACX,SAAWnzI,GAAU,CACnBg2H,EAAch2H,EAAM,OAAO,KAAK,CAClC,EACA,OAAQ,IAAM,CACZ0zI,EAAY3d,CAAU,CACxB,EACA,UAAY/1H,GAAU,CAChBA,EAAM,MAAQ,SAChBA,EAAM,cAAc,MAExB,EACA,UAAW,GAAGuyI,EAAmB,0BACjC,aAAW,0CAEbx2I,MAAC,QAAK,UAAU,iGAAiG,cAAE,GACrH,EACAA,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,UAAWg3I,GACX,QAAS,IAAM,CACbkB,EAAYhB,EAAU,GAAI,CAC5B,EACA,SAAU,CAACS,EACX,aAAW,kCACX,MAAM,qBAEN,eAACn4D,GAAA,CAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,GACnE,EACF,EACF,EACF,EACAj/E,MAAC24H,GAAA,CAAoB,MAAM,QACxB,SAAAjE,EAAuB,OAASA,EAAuB,IAAI,CAAC7kG,EAASh6B,IACpEmK,MAAC82I,GAAA,CAEC,MAAAjhJ,EACA,QAAAg6B,EACA,SAAUynH,CAAA,EAHLznH,EAAQ,IAAM,QAAQh6B,EAAQ,CAAC,GAKvC,EACCmK,MAAC,KAAE,UAAU,0CACV,SAAAulH,EAAgB,mBAAqB,0BACxC,EAEJ,GACF,EACF,EACCiyB,EACDx3I,MAACiyI,GAAA,CACC,MAAOnoI,EACP,sBAAAooI,EACA,iBAAAtO,EACA,uBAAAuO,EACA,kBAAAX,EACA,gBAAAC,EACA,sBAAuB8F,CAAA,EACzB,GACF,EAGN,CC/QA,SAASK,GAAO,CACd,UAAA9lJ,EACA,aAAA+lJ,EACA,MAAA3pJ,EACA,IAAA0nB,EAAM,EACN,IAAAC,EAAM,IACN,GAAGtnB,CACL,EAAG,CACD,MAAMo4B,EAASviB,UACb,IACE,MAAM,QAAQlW,CAAK,EACfA,EACA,MAAM,QAAQ2pJ,CAAY,EACxBA,EACA,CAACjiI,CAAG,EACZ,CAACiiI,EAAcjiI,EAAK1nB,CAAK,GAG3B,OACE8S,OAAC82I,GAAA,CACC,YAAU,SACV,aAAAD,EACA,MAAA3pJ,EACA,IAAA0nB,EACA,IAAAC,EACA,UAAWvW,EACT,sOACAxN,CAAA,EAED,GAAGvD,EAEJ,UAAAyR,MAAC+3I,GAAA,CACC,YAAU,eACV,UAAWz4I,EACT,iMAGF,SAAAU,MAACg4I,GAAA,CACC,YAAU,eACV,UAAW14I,EACT,8FACF,EACF,GAEDqnB,EAAO,IAAI,CAACwT,EAAGtkC,IACdmK,MAACi4I,GAAA,CACC,YAAU,eAEV,UAAU,8SADLpiJ,CAAA,CAGR,IAGP,CC1DA,MAAMqiJ,GAA6B,IAC7BC,GAA0B,IAC1BC,GAA8B,IAC9BC,GAA2B,IACpBC,GAAuC,IACvCC,GAA2B,EAC3BC,GAA2B,EAC3BC,GAAqC,EAC5CC,GAAuC,OAAO,OAAO,CACzD,EAAG,KACH,EAAG,IACH,EAAGJ,GACH,EAAG,IACH,EAAG,KACH,EAAG,KACH,EAAG,IACL,CAAC,EACKK,GAAmC,EACnCC,GAAwB,KACxBC,GAA0B,KAC1BC,GAAuB,OAAO,OAAO,CACzC,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,CAAC,EACKC,GAAgB,UAChBC,GAAe,UACfC,GAA6B,OAAO,OAAO,CAC/C,QAAS,KACT,SAAU,KACV,OAAQ,KACR,YAAa,KACb,MAAO,KACP,QAAS,KACT,KAAM,IACR,CAAC,EACKC,GAAmB,KACnBC,GAA8B,EAC9BC,GAA6B,EAC7BC,GAAgB,OAAO,OAAO,CAAC,EAAG,EAAG,CAAC,CAAC,EAE7C,SAASv7F,GAAe5vD,EAAOsa,EAAW,EAAG,CAC3C,MAAME,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,EAAIA,EAAeF,CACxD,CAEA,SAASmN,GAAMznB,EAAO0nB,EAAKC,EAAK,CAC9B,OAAO,KAAK,IAAI,KAAK,IAAI3nB,EAAO0nB,CAAG,EAAGC,CAAG,CAC3C,CAEA,SAASgO,GAAiB31B,EAAOsa,EAAW,GAAO,CACjD,OAAO,OAAOta,GAAU,UAAYA,EAAQsa,CAC9C,CAEA,SAAS8wI,GAAoBprJ,EAAO,CAClC,OAAO,OAAOA,GAAS,EAAE,EAAE,OAAO,gBAAkB,OAAS,OAAS,UACxE,CAEA,SAASqrJ,GAA4BrrJ,EAAO,CAC1C,OAAOynB,GACL,KAAK,MAAMmoC,GAAe5vD,EAAOuqJ,EAAkC,CAAC,EACpEF,GACAC,EAAA,CAEJ,CAEA,SAASgB,GAAmCtrJ,EAAO,CACjD,MAAMurJ,EAAcF,GAA4BrrJ,CAAK,EACrD,OAAOwqJ,GAAqCe,CAAW,GAAKnB,EAC9D,CAEA,SAASoB,GAAWxrJ,EAAO2H,EAAO,CAChC,OAAOioD,GAAe5vD,IAAQ2H,CAAK,CAAC,CACtC,CAEA,SAAS8jJ,IAAc,CACrB,MAAO,CACL,IAAK,CAAC,IAAU,IAAU,GAAQ,EAClC,IAAK,CAAC,KAAW,KAAW,IAAS,EAEzC,CAEA,SAASC,GAAeljI,EAAQ,CAC9B,MAAI,CAACA,EAAO,IAAI,MAAM,OAAO,QAAQ,GAAK,CAACA,EAAO,IAAI,MAAM,OAAO,QAAQ,EAClE,CACL,IAAK,CAAC,EAAG,EAAG,CAAC,EACb,IAAK,CAAC,EAAG,EAAG,CAAC,GAGV,CACL,IAAKA,EAAO,IACZ,IAAKA,EAAO,IAEhB,CAEA,SAASmjI,GAAc/0C,EAAS,CAC9B,MAAMrtF,EAAQqtF,GAAS,MACjBptF,EAAMotF,GAAS,IACrB,OAAO,KAAK,MACV40C,GAAWhiI,EAAK,CAAC,EAAIgiI,GAAWjiI,EAAO,CAAC,EACxCiiI,GAAWhiI,EAAK,CAAC,EAAIgiI,GAAWjiI,EAAO,CAAC,EACxCiiI,GAAWhiI,EAAK,CAAC,EAAIgiI,GAAWjiI,EAAO,CAAC,EAE5C,CAEA,SAASqiI,GAAoB5rJ,EAAO6rJ,EAAY,CAC9C,MAAMC,EAAW,KAAK,IAAI,EAAG,KAAK,MAAMl8F,GAAei8F,EAAY,CAAC,CAAC,EAAI,CAAC,EAC1E,GAAI,CAAC,MAAM,QAAQ7rJ,CAAK,GAAKA,EAAM,OAAS,EAC1C,MAAO,CAAC,EAAG8rJ,CAAQ,EAErB,MAAMviI,EAAQ9B,GAAM,KAAK,MAAMmoC,GAAe5vD,EAAM,CAAC,EAAG,CAAC,CAAC,EAAG,EAAG8rJ,CAAQ,EAClEtiI,EAAM/B,GAAM,KAAK,MAAMmoC,GAAe5vD,EAAM,CAAC,EAAG8rJ,CAAQ,CAAC,EAAG,EAAGA,CAAQ,EAC7E,OAAOviI,GAASC,EAAM,CAACD,EAAOC,CAAG,EAAI,CAACA,EAAKD,CAAK,CAClD,CAEO,SAASwiI,GAA6BvzI,EAAU,GAAIqzI,EAAa,EAAG,CACzE,MAAMhkI,EAASrP,GAAW,OAAOA,GAAY,SAAWA,EAAU,GAC5DwzI,EAAaZ,GAAoBvjI,EAAO,UAAU,EAClD0jI,EAAcF,GAA4BxjI,EAAO,WAAW,EAC5DokI,EAAuBX,GAAmCC,CAAW,EACrEW,EAAgB,MAAM,QAAQrkI,EAAO,UAAU,EACjDA,EAAO,WACP,OAAO,SAAS,OAAOA,EAAO,QAAQ,CAAC,EACrC,CAAC,EAAG,OAAOA,EAAO,QAAQ,CAAC,EAC3B,KACN,MAAO,CACL,WAAY8N,GAAiB9N,EAAO,WAAY,EAAK,EACrD,WAAY+jI,GAAoBM,EAAeL,CAAU,EACzD,WAAAG,EACA,YAAAT,EACA,mBAAoBS,IAAe,OAC/B,EACA,KAAK,IACL,KAAK,MAAMp8F,GAAe/nC,EAAO,mBAAoBokI,CAAoB,CAAC,EAC1ExB,EAAA,EAEJ,iBAAkB,KAAK,IAAI76F,GAAe/nC,EAAO,iBAAkBmiI,EAA0B,EAAG,GAAI,EACpG,cAAe,KAAK,IAAIp6F,GAAe/nC,EAAO,cAAeoiI,EAAuB,EAAG,GAAI,EAC3F,kBAAmB,KAAK,IAAIr6F,GAAe/nC,EAAO,kBAAmBqiI,EAA2B,EAAG,GAAI,EACvG,eAAgB,KAAK,IAAIt6F,GAAe/nC,EAAO,eAAgBsiI,EAAwB,EAAG,GAAI,EAElG,CAEA,SAASgC,GAAWnwF,EAAY,CAC9B,MAAMr0D,EAAQ,KAAK,IAAI,EAAG,KAAK,MAAMioD,GAAeoM,EAAY,CAAC,CAAC,CAAC,EACnE,OAAO4uF,GAAqBjjJ,EAAQijJ,GAAqB,MAAM,CACjE,CAEA,SAASwB,GAAgBx1C,EAAS,CAChC,OAAIA,EAAQ,OAAS,SACZ,SAEF,SAAS,KAAK,IAAI,EAAG,KAAK,MAAMhnD,GAAegnD,EAAQ,WAAY,CAAC,CAAC,CAAC,CAAC,EAChF,CAEA,SAASy1C,GAAWprJ,EAAK+6D,EAAY,CACnC,OAAI/6D,IAAQ,SACH,SAEF,SAAS,KAAK,IAAI,EAAG,KAAK,MAAM2uD,GAAeoM,EAAY,CAAC,CAAC,CAAC,EAAI,CAAC,EAC5E,CAEA,SAASswF,GAAW/9H,EAAO,CACzB,MAAM1W,EAAa,OAAO0W,GAAS,EAAE,EAAE,OACjCtN,EAAW,oBAAoB,KAAKpJ,CAAU,EAChD,IAAIA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GACjGA,EACJ,MAAK,oBAAoB,KAAKoJ,CAAQ,EAG/B,CACL,SAASA,EAAS,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,IACrC,SAASA,EAAS,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,IACrC,SAASA,EAAS,MAAM,EAAG,CAAC,EAAG,EAAE,EAAI,KAL9B,CAAC,EAAG,EAAG,CAAC,CAOnB,CAEA,SAASsrI,GAAsB31C,EAASp+F,EAAS,CAC/C,MAAMwjD,EAAa,KAAK,IAAI,EAAG,KAAK,MAAMpM,GAAegnD,GAAS,WAAY,CAAC,CAAC,CAAC,EAC3E,CAAC41C,EAAUV,CAAQ,EAAItzI,EAAQ,WACrC,OAAIwjD,EAAawwF,GAAYxwF,EAAa8vF,EACjC,GAELl1C,GAAS,OAAS,SACbp+F,EAAQ,WAEVo+F,GAAS,OAAS,WAC3B,CAEA,SAAS61C,GAAuBlG,EAAW/tI,EAAS,CAClD,MAAM6U,EAAW,MAAM,QAAQk5H,GAAW,QAAQ,EAAIA,EAAU,SAAW,GACrEmG,MAAsB,IAC5B,IAAIC,EAAsB,EAC1B,UAAW/1C,KAAWvpF,EAAU,CAC9B,GAAI,CAACk/H,GAAsB31C,EAASp+F,CAAO,GAAKmzI,GAAc/0C,CAAO,GAAK8zC,GACxE,SAEF,MAAM1uF,EAAa,KAAK,IAAI,EAAG,KAAK,MAAMpM,GAAegnD,GAAS,WAAY,CAAC,CAAC,CAAC,EACjF81C,EAAgB,IAAI1wF,GAAa0wF,EAAgB,IAAI1wF,CAAU,GAAK,GAAK,CAAC,EAC1E2wF,GAAuB,CACzB,CACA,MAAO,CACL,oBAAAA,EACA,gBAAAD,CAAA,CAEJ,CAEA,SAASE,GAAsB5wF,EAAYwwF,EAAUV,EAAUe,EAAa,CAC1E,OAAIA,GAAe,EACV,GAGP7wF,IAAewwF,GACfxwF,IAAe8vF,IACd9vF,EAAawwF,GAAYK,IAAgB,CAE9C,CAEA,SAASC,GAA4BJ,EAAiBF,EAAUV,EAAUe,EAAa,CACrF,IAAI1wH,EAAQ,EACZ,SAAW,CAAC6/B,EAAY5uC,CAAY,IAAKs/H,EAAgB,UACnD1wF,GAAcwwF,GAAYxwF,GAAc8vF,GAAYc,GAAsB5wF,EAAYwwF,EAAUV,EAAUe,CAAW,IACvH1wH,GAAS/O,GAGb,OAAO+O,CACT,CAEA,SAAS4wH,GAAqBL,EAAiBC,EAAqBn0I,EAAS,CAC3E,MAAMw0I,EAAS,KAAK,MAAMp9F,GAAep3C,GAAS,mBAAoB,CAAC,CAAC,EACxE,GAAIA,GAAS,aAAe,QAAUw0I,GAAU,GAAKL,GAAuBK,EAC1E,MAAO,GAET,KAAM,CAACR,EAAUV,CAAQ,EAAItzI,EAAQ,WAC/By0I,EAAoB,KAAK,IAAI,EAAGnB,EAAWU,EAAW,CAAC,EAC7D,QAASK,EAAc,EAAGA,GAAeI,EAAmBJ,GAAe,EACzE,GAAIC,GAA4BJ,EAAiBF,EAAUV,EAAUe,CAAW,GAAKG,EACnF,OAAOH,EAGX,OAAOI,CACT,CAEA,SAASC,GAAoBR,EAAiBF,EAAUV,EAAUe,EAAa,CAC7E,IAAI1wH,EAAQ,EACZ,UAAW6/B,KAAc0wF,EAAgB,OACnC1wF,GAAcwwF,GAAYxwF,GAAc8vF,GAAYc,GAAsB5wF,EAAYwwF,EAAUV,EAAUe,CAAW,IACvH1wH,GAAS,GAGb,OAAOA,CACT,CAEA,SAASgxH,GAA4B3kI,EAAQ2F,EAAGC,EAAGwrB,EAAG,CACpDpxB,EAAO,IAAI,CAAC,EAAI,KAAK,IAAIA,EAAO,IAAI,CAAC,EAAG2F,CAAC,EACzC3F,EAAO,IAAI,CAAC,EAAI,KAAK,IAAIA,EAAO,IAAI,CAAC,EAAG4F,CAAC,EACzC5F,EAAO,IAAI,CAAC,EAAI,KAAK,IAAIA,EAAO,IAAI,CAAC,EAAGoxB,CAAC,EACzCpxB,EAAO,IAAI,CAAC,EAAI,KAAK,IAAIA,EAAO,IAAI,CAAC,EAAG2F,CAAC,EACzC3F,EAAO,IAAI,CAAC,EAAI,KAAK,IAAIA,EAAO,IAAI,CAAC,EAAG4F,CAAC,EACzC5F,EAAO,IAAI,CAAC,EAAI,KAAK,IAAIA,EAAO,IAAI,CAAC,EAAGoxB,CAAC,CAC3C,CAEA,SAASwzG,GAAoB5kI,EAAQouF,EAAS,CAC5Cu2C,GACE3kI,EACAgjI,GAAW50C,GAAS,MAAO,CAAC,EAC5B40C,GAAW50C,GAAS,MAAO,CAAC,EAC5B40C,GAAW50C,GAAS,MAAO,CAAC,GAE9Bu2C,GACE3kI,EACAgjI,GAAW50C,GAAS,IAAK,CAAC,EAC1B40C,GAAW50C,GAAS,IAAK,CAAC,EAC1B40C,GAAW50C,GAAS,IAAK,CAAC,EAE9B,CAEA,SAASy2C,GAAaz2C,EAAS31G,EAAK+6D,EAAY,CAC9C,OAAI/6D,IAAQ,SACH6pJ,GAELl0C,GAAS,kBAAoB,UACxBi0C,GAEFsB,GAAWnwF,CAAU,CAC9B,CAEA,SAASsxF,GAAe12C,EAAS,CAC/B,GAAIA,GAAS,OAAS,SACpB,OAAO+zC,GAA0BK,GAEnC,MAAMuC,EAAW,OAAO32C,GAAS,iBAAmB,OAAO,EAAE,OAAO,cACpE,OAAO+zC,IAA2BI,GAA2BwC,CAAQ,GAAKxC,GAA2B,MACvG,CAEA,SAASyC,GAAkB,CAAE,SAAA7vF,EAAU,OAAA5pB,EAAQ,QAAAuqB,EAAS,OAAA91C,EAAQ,OAAAmK,EAAQ,EAAAxE,EAAG,EAAAC,EAAG,EAAAwrB,EAAG,QAAA6zG,EAAU,EAAG,MAAAl/H,GAAS,CACrGovC,EAAShrC,CAAM,EAAIxE,EACnBwvC,EAAShrC,EAAS,CAAC,EAAIvE,EACvBuvC,EAAShrC,EAAS,CAAC,EAAIinB,EAAI6zG,EAC3B15G,EAAOphB,CAAM,EAAIpE,EAAM,CAAC,EACxBwlB,EAAOphB,EAAS,CAAC,EAAIpE,EAAM,CAAC,EAC5BwlB,EAAOphB,EAAS,CAAC,EAAIpE,EAAM,CAAC,EAC5B+vC,EAAQ3rC,CAAM,EAAIw4H,GAAc,CAAC,EACjC7sF,EAAQ3rC,EAAS,CAAC,EAAIw4H,GAAc,CAAC,EACrC7sF,EAAQ3rC,EAAS,CAAC,EAAIw4H,GAAc,CAAC,EACrCgC,GAA4B3kI,EAAQ2F,EAAGC,EAAGwrB,EAAI6zG,CAAO,CACvD,CAEA,SAASC,GAAmB,CAAE,SAAA/vF,EAAU,QAAA1e,EAAS,OAAAlL,EAAQ,QAAAuqB,EAAS,OAAA91C,EAAQ,QAAAouF,EAAS,aAAAl9E,EAAc,MAAA93B,EAAO,MAAA2sB,EAAO,QAAAk/H,CAAA,EAAW,CACxH,MAAMlkI,EAAQqtF,GAAS,MACjBptF,EAAMotF,GAAS,IACf+2C,EAASnC,GAAWjiI,EAAO,CAAC,EAC5BqkI,EAASpC,GAAWjiI,EAAO,CAAC,EAC5BskI,EAASrC,GAAWjiI,EAAO,CAAC,EAC5Bo6G,EAAO6nB,GAAWhiI,EAAK,CAAC,EACxBo6G,EAAO4nB,GAAWhiI,EAAK,CAAC,EACxBskI,EAAOtC,GAAWhiI,EAAK,CAAC,EACxBC,EAAKk6G,EAAOgqB,EACZjkI,EAAKk6G,EAAOgqB,EACZ58E,EAAK88E,EAAOD,EAElB,GAAI,EADW,KAAK,MAAMpkI,EAAIC,EAAIsnD,CAAE,EACrB05E,IACb,OAAO,KAET,IAAIqD,EAAK,CAACrkI,EACNskI,EAAKvkI,EACLy0B,EAAe,KAAK,MAAM6vG,EAAIC,CAAE,EAC9B9vG,EAAewsG,KACnBqD,EAAK,EACLC,EAAK,EACL9vG,EAAe,GAEjB,MAAM+vG,EAAYrsJ,EAAQ,EACpBwxF,EAAW26D,EAAK7vG,EAAgB+vG,EAChC56D,EAAW26D,EAAK9vG,EAAgB+vG,EAChCC,EAAax0H,EAAeuxH,GAC5BvsF,EAAewvF,EAAa,EAElCV,GAAkB,CAChB,SAAA7vF,EACA,OAAA5pB,EACA,QAAAuqB,EACA,OAAA91C,EACA,OAAQk2C,EACR,EAAGivF,EAASv6D,EACZ,EAAGw6D,EAASv6D,EACZ,EAAGw6D,EACH,QAAAJ,EACA,MAAAl/H,CAAA,CACD,EACDi/H,GAAkB,CAChB,SAAA7vF,EACA,OAAA5pB,EACA,QAAAuqB,EACA,OAAA91C,EACA,OAAQk2C,EAAe,EACvB,EAAGivF,EAASv6D,EACZ,EAAGw6D,EAASv6D,EACZ,EAAGw6D,EACH,QAAAJ,EACA,MAAAl/H,CAAA,CACD,EACDi/H,GAAkB,CAChB,SAAA7vF,EACA,OAAA5pB,EACA,QAAAuqB,EACA,OAAA91C,EACA,OAAQk2C,EAAe,EACvB,EAAGilE,EAAOvwC,EACV,EAAGwwC,EAAOvwC,EACV,EAAGy6D,EACH,QAAAL,EACA,MAAAl/H,CAAA,CACD,EACDi/H,GAAkB,CAChB,SAAA7vF,EACA,OAAA5pB,EACA,QAAAuqB,EACA,OAAA91C,EACA,OAAQk2C,EAAe,EACvB,EAAGilE,EAAOvwC,EACV,EAAGwwC,EAAOvwC,EACV,EAAGy6D,EACH,QAAAL,EACA,MAAAl/H,CAAA,CACD,EAED,MAAM+yG,EAAc5nG,EAAewxH,GACnC,OAAAjsG,EAAQqiF,CAAW,EAAI4sB,EACvBjvG,EAAQqiF,EAAc,CAAC,EAAI4sB,EAAa,EACxCjvG,EAAQqiF,EAAc,CAAC,EAAI4sB,EAAa,EACxCjvG,EAAQqiF,EAAc,CAAC,EAAI4sB,EAC3BjvG,EAAQqiF,EAAc,CAAC,EAAI4sB,EAAa,EACxCjvG,EAAQqiF,EAAc,CAAC,EAAI4sB,EAAa,EACjC,EACT,CAEO,SAASC,GAA0B5H,EAAW/tI,EAAU,GAAI,CACjE,MAAMgjD,EAAS,MAAM,QAAQ+qF,GAAW,MAAM,EAAIA,EAAU,OAAS,GAC/D1uI,EAAak0I,GAA6BvzI,EAASgjD,EAAO,MAAM,EAChEnuC,EAAW,MAAM,QAAQk5H,GAAW,QAAQ,EAAIA,EAAU,SAAW,GACrE,CAAE,oBAAAoG,EAAqB,gBAAAD,CAAA,EAAoBD,GAAuBlG,EAAW1uI,CAAU,EACvFg1I,EAAcE,GAAqBL,EAAiBC,EAAqB90I,CAAU,EACnF,CAAC20I,EAAUV,CAAQ,EAAIj0I,EAAW,WAClCu2I,EAA0BtB,GAA4BJ,EAAiBF,EAAUV,EAAUe,CAAW,EACtGwB,EAAqBnB,GAAoBR,EAAiBF,EAAUV,EAAUe,CAAW,EACzFlvF,EAAW,IAAI,aAAaywF,EAA0BnD,GAA8B,CAAC,EACrFhsG,EAAU,IAAI,YAAYmvG,EAA0BlD,EAA0B,EAC9En3G,EAAS,IAAI,aAAa4pB,EAAS,MAAM,EACzCW,EAAU,IAAI,aAAaX,EAAS,MAAM,EAC1C33D,EAAQ,GACRsoJ,EAAiB7C,GAAA,EACjBrgD,EAAYqgD,GAAA,EAClB,IAAI8C,EAAe,KACfC,EAAkB,EAEtB,UAAW53C,KAAWvpF,EAAU,CAC9B,GAAI,CAACk/H,GAAsB31C,EAAS/+F,CAAU,GAAK8zI,GAAc/0C,CAAO,GAAK8zC,GAC3E,SAEF,MAAMzpJ,EAAMmrJ,GAAgBx1C,CAAO,EAC7B56C,EAAa,KAAK,IAAI,EAAG,KAAK,MAAMpM,GAAegnD,GAAS,WAAY,CAAC,CAAC,CAAC,EACjF,GAAI,CAACg2C,GAAsB5wF,EAAYwwF,EAAUV,EAAUe,CAAW,EACpE,SAEFO,GAAoBhiD,EAAWwL,CAAO,GAClC,CAAC23C,GAAgBA,EAAa,MAAQttJ,KACxCstJ,EAAe,CACb,IAAAttJ,EACA,WAAA+6D,EACA,aAAcwyF,EAAkBvD,GAChC,eAAgBuD,EAAkB,EAClC,aAAc,GAEhBxoJ,EAAM,KAAKuoJ,CAAY,GAEXb,GAAmB,CAC/B,SAAA/vF,EACA,QAAA1e,EACA,OAAAlL,EACA,QAAAuqB,EACA,OAAQgwF,EACR,QAAA13C,EACA,aAAc43C,EACd,MAAO53C,EAAQ,OAAS,SAAW/+F,EAAW,cAAgBA,EAAW,iBACzE,MAAOy0I,GAAWe,GAAaz2C,EAAS31G,EAAK+6D,CAAU,CAAC,EACxD,QAASsxF,GAAe12C,CAAO,EAChC,IAEC23C,EAAa,cAAgB,EAC7BC,GAAmB,EAEvB,CAEA,MAAMC,EAAiBzoJ,EACpB,IAAI,CAACC,EAAM0B,IAAU,CACpB,MAAM+mJ,EAAmB1oJ,EAAM2B,EAAQ,CAAC,GAAG,cAAgB6mJ,EAAkBvD,GACvE0D,EAAqB3oJ,EAAM2B,EAAQ,CAAC,GAAG,gBAAkB6mJ,EAAkB,EACjF,MAAO,CACL,GAAIvoJ,EAAK,MAAQ,SAAW,gBAAgB0B,CAAK,GAAK,eAAe1B,EAAK,UAAU,IAAI0B,CAAK,GAC7F,MAAO0kJ,GAAWpmJ,EAAK,IAAKA,EAAK,UAAU,EAC3C,aAAcA,EAAK,aACnB,YAAa,KAAK,IAAI,EAAGyoJ,EAAmBzoJ,EAAK,YAAY,EAC7D,eAAgBA,EAAK,eACrB,cAAe,KAAK,IAAI,EAAG0oJ,EAAqB1oJ,EAAK,cAAc,EACnE,OAAQylJ,GAAetgD,CAAS,EAChC,aAAcnlG,EAAK,aAEvB,CAAC,EACA,OAAQA,GAASA,EAAK,YAAc,GAAKA,EAAK,cAAgB,CAAC,EAE5D2oJ,EAAclD,GAAetgD,CAAS,EAC5C,MAAO,CACL,SAAAztC,EACA,QAAA1e,EACA,QAAAqf,EACA,OAAAvqB,EACA,OAAQ66G,EACR,MAAOH,EACP,kBAAmB,GACnB,aAAc,QACd,YAAa,UACb,SAAU,CACR,KAAM,QACN,gBAAiB,SACjB,QAAS52I,EACT,gBAAiB80I,EACjB,iBAAkB6B,EAClB,cAAe,KAAK,IAAI,EAAG1C,EAAWU,EAAW,CAAC,EAClD,eAAgB6B,EAChB,YAAAxB,EACA,cAAe,EACf,eAAgBA,EAAc,EAAI,SAAW,OAC7C,UAAWA,EAAc,EACzB,MAAOtG,GAAW,OAAS,GAC3B,SAAU,MAAM,QAAQA,GAAW,QAAQ,EAAIA,EAAU,SAAW,GACpE,SAAU,MAAM,QAAQA,GAAW,QAAQ,EAAIA,EAAU,SAAW,EAAC,CACvE,CAEJ,CCneA,MAAMsI,GAAoBrlB,GACpBslB,GAA4B,kEAElC,SAASC,GAAa/uJ,EAAOgvJ,EAAS,EAAG,CACvC,MAAMx0I,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,EAAIA,EAAa,QAAQw0I,CAAM,EAAK,GAAG,QAAQA,CAAM,CAC1F,CAEA,SAASC,GAAYjvJ,EAAO,CAC1B,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,EAAI,OAAO,KAAK,MAAMA,CAAY,CAAC,EAAI,GAC5E,CAEA,SAAS00I,GAAclvJ,EAAO,CAC5B,MAAMwa,EAAe,KAAK,MAAM,OAAOxa,CAAK,GAAK,CAAC,EAC5CmvJ,EAAgB,KAAK,IAAI30I,CAAY,EACrC40I,EAAgBD,EAAgB,IACtC,GAAIC,GAAiB,IAAMA,GAAiB,GAC1C,MAAO,GAAG50I,CAAY,KAExB,OAAQ20I,EAAgB,IACtB,IAAK,GACH,MAAO,GAAG30I,CAAY,KACxB,IAAK,GACH,MAAO,GAAGA,CAAY,KACxB,IAAK,GACH,MAAO,GAAGA,CAAY,KACxB,QACE,MAAO,GAAGA,CAAY,KAE5B,CAEA,SAAS60I,GAAervJ,EAAOgvJ,EAAS,EAAG,CACzC,MAAO,GAAGD,GAAa/uJ,EAAOgvJ,CAAM,CAAC,KACvC,CAEA,SAASM,GAAmBtvJ,EAAO,CACjC,MAAMm8B,EAAQ8yH,GAAYjvJ,CAAK,EAC/B,MAAO,GAAGm8B,CAAK,OAAOA,IAAU,IAAM,GAAK,GAAG,EAChD,CAEA,SAASozH,GAAsBvvJ,EAAO,CACpC,MAAM6X,EAAa,OAAO7X,GAAS,EAAE,EAAE,OACvC,OAAO6X,EAAa,GAAGA,EAAW,CAAC,EAAE,aAAa,GAAGA,EAAW,MAAM,CAAC,CAAC,GAAK,OAC/E,CAEA,SAAS23I,GAAmBxvJ,EAAO,CACjC,OAAQ,KAAK,MAAM,OAAOA,CAAK,GAAKuqJ,EAAkC,GACpE,IAAK,GACH,MAAO,QACT,IAAK,GACH,MAAO,OACT,IAAK,GACH,MAAO,QACT,IAAK,GACH,MAAO,OACT,IAAK,GACH,MAAO,YACT,IAAK,GACH,MAAO,eAET,QACE,MAAO,WAEb,CAEA,SAASzyD,GAAiBtvE,EAAQ,CAChC,MAAMd,EAAM,MAAM,QAAQc,GAAQ,GAAG,EAAIA,EAAO,IAAM,CAAC,EAAG,EAAG,CAAC,EACxDb,EAAM,MAAM,QAAQa,GAAQ,GAAG,EAAIA,EAAO,IAAM,CAAC,EAAG,EAAG,CAAC,EAC9D,MAAO,CAAE,IAAAd,EAAK,IAAAC,CAAA,CAChB,CAEA,SAAS8nI,GAAejnI,EAAQV,EAAMknI,EAAS,EAAG,CAChD,KAAM,CAAE,IAAAtnI,EAAK,IAAAC,GAAQmwE,GAAiBtvE,CAAM,EAC5C,MAAO,GAAGumI,GAAarnI,EAAII,CAAI,EAAGknI,CAAM,CAAC,OAAOD,GAAapnI,EAAIG,CAAI,EAAGknI,CAAM,CAAC,KACjF,CAEA,SAASU,GAAiB7D,EAAYC,EAAU,CAC9C,GAAID,EAAa,EACf,MAAO,QAET,MAAM8D,EAAe7D,EAAW,EAChC,OAAO6D,EAAe,EAClB,KAAKA,CAAY,MAAM9D,CAAU,GACjC,OAAOA,CAAU,EACvB,CAEA,SAAS+D,GAAuB5vJ,EAAO6vJ,EAAsBhE,EAAY,CACvE,GAAIA,EAAa,EACf,MAAO,GAIT,MAAMiE,EAFO,OAAO9vJ,GAAS,EAAE,EAAE,OACT,MAAM,qBAAqB,IAClB,CAAC,GAAKA,EACvC,OAAOirI,GAA0B6kB,EAAa,CAC5C,SAAUD,EACV,IAAK,EACL,IAAK,KAAK,IAAIhE,EAAY,CAAC,EAC3B,QAAS,GACV,EAAI,CACP,CAEA,SAASkE,GAAgB,CAAE,MAAAjiJ,EAAO,MAAA9N,EAAO,KAAAukJ,EAAO,IAAS,CACvD,MAAM1Y,EAAe,OAAO7rI,GAAS,EAAE,EACvC,OACE8S,OAAC,OAAI,UAAU,gBACb,UAAAhB,MAAC,QAAK,UAAW+8I,GAAoB,SAAA/gJ,EAAM,EAC3CgE,MAAC,OACC,UAAW,sIAAsIyyI,EAAO,YAAc,EAAE,GACxK,MAAO1Y,EAEN,SAAAA,CAAA,EACH,EACF,CAEJ,CAEA,SAAwBmkB,GAAe,CACrC,KAAAz6I,EACA,UAAAw3H,EACA,MAAAnrI,EACA,cAAAga,EAAgB,KAChB,aAAAoxH,EACA,cAAAC,EACA,UAAAsZ,EAAY,KACZ,gBAAA0J,EAAkB,KAClB,SAAAnE,EAAW,EACX,WAAAoE,EAAa,GACb,WAAAC,EAAa,GACb,mBAAAC,EAAqB7F,GACrB,iBAAA8F,EACA,mBAAAC,EACA,mBAAAC,EACA,2BAAAC,EACA,sBAAAxM,EAAwB,GACxB,iBAAAtO,EAAmB,KACnB,uBAAAuO,EAAyB,GACzB,kBAAAX,EAAoB,GACpB,gBAAAC,EACA,8BAAA8F,EAAgC,GAChC,YAAA1B,EAAc,GACd,cAAA2B,EAAgB,KAChB,eAAAC,EAAiB,GACjB,uBAAAC,CACF,EAAG,CACD,MAAMhuF,EAAS,MAAM,QAAQ+qF,GAAW,MAAM,EAAIA,EAAU,OAAS,GAC/DkK,EAAQlK,GAAW,OAAS,GAC5B5yF,EAAW,MAAM,QAAQ4yF,GAAW,QAAQ,EAAIA,EAAU,SAAW,GAErEmK,EADkB/8F,EAAS,OAAQR,IAAYA,IAAS,WAAa,SAAS,EAChD,KAAMA,IACxC,OAAOA,IAAS,cAAc,EAAI,GAClC,OAAOA,IAAS,WAAW,EAAI,CAChC,EACKw9F,EAAqBh9F,EAAS,OAAO,CAAClpC,GAAO0oC,KAAY1oC,IAAS,OAAO0oC,IAAS,WAAW,GAAK,GAAI,CAAC,EACvGy9F,EAAmB,OAAOX,GAAiB,gBAAgB,EAC3DY,EAAkB,OAAOZ,GAAiB,eAAe,EACzDpD,EAAc,OAAOoD,GAAiB,WAAW,EACjDa,GAAiB,OAAOb,GAAiB,cAAc,EACvDc,EAAuB,OAAOd,GAAiB,aAAa,EAC5De,EAAmB,EAAQf,GAAiB,UAC5CgB,GAAmB,OAAO,SAASL,CAAgB,GAAK,OAAO,SAASC,CAAe,EACzF,GAAG5B,GAAY2B,CAAgB,CAAC,MAAM3B,GAAY4B,CAAe,CAAC,GAClE,GACEK,GAAoB,OAAO,SAASJ,EAAc,GAAK,OAAO,SAASC,CAAoB,EAC7F,GAAG9B,GAAY6B,EAAc,CAAC,MAAM7B,GAAY8B,CAAoB,CAAC,GACrE,GACElF,GAAarwF,EAAO,OACpB21F,GAAyB,KAAK,IAClC,KAAK,IAAI,KAAK,MAAM,OAAOf,CAAkB,GAAK7F,EAAkC,EAAGF,EAAwB,EAC/GC,EAAA,EAEI8G,GAAevF,GAAa,EAC9B,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,OAAOC,CAAQ,GAAK,CAAC,EAAG,CAAC,EAAGD,GAAa,CAAC,EACvE,EACEwF,GAAe,EAAQ9K,EACvB+K,GAAgB5B,GAAiB7D,GAAYuF,EAAY,EAE/D,OACEt/I,MAACg7H,GAAA,CACC,KAAAv3H,EACA,MAAM,SACN,UAAAw3H,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EAEA,SAAAn6H,OAACs0H,GAAA,CACC,KAAK,WACL,MAAOmiB,EACP,cAAeC,EACf,UAAU,UAEV,UAAA13I,MAACw1I,GAAA,CAAkB,MAAOK,CAAA,CAAa,QAEtCvd,GAAA,CAAiB,MAAM,WAAW,MAAM,WACrC,gBAAC,OACE,UAACinB,GAEE,KADFv/I,MAAC,KAAE,UAAU,0CAA0C,6BAAiB,EAG1EA,MAAC24H,IAAoB,MAAM,UAAU,iBAAiB,OACpD,SAAA33H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACqxI,GAAA,CAAM,QAAQ,YAAY,UAAU,cAClC,UAAA8K,GAAYpD,EAAU,EAAE,SAAOA,KAAe,EAAI,GAAK,KAC1D,EACA/4I,OAACqxI,GAAA,CAAM,QAAQ,UAAU,UAAU,cAChC,UAAA8K,GAAYwB,EAAM,cAAc,EAAE,QAAMxB,GAAYwB,EAAM,cAAc,IAAM,IAAM,GAAK,KAC5F,SACCtM,GAAA,CAAM,QAASuM,EAAc,YAAc,UAAW,UAAU,cAAc,sBACnEA,EAAc,MAAQ,MAClC,EACCM,QACE7M,GAAA,CAAM,QAAQ,UAAU,UAAU,cAAc,yBAEjD,EACE,MACN,EACF,EAEAryI,MAAC24H,GAAA,CAAoB,MAAM,SACzB,SAAA34H,MAACs6H,GAAA,CACC,MAAM,iBACN,MAAOklB,GACP,cAAgB5sC,IAAc,CAC5B2rC,IAAmBT,GAAuBlrC,GAAW0sC,GAAe,EAAGvF,EAAU,CAAC,CACpF,EACA,gBAAiB,CACf,SAAUA,IAAc,EACxB,UAAW,8BACX,UAAW,WAGf,SAAA/5I,MAAC43I,GAAA,CACC,MAAO,CAAC0H,EAAY,EACpB,IAAK,EACL,IAAK,KAAK,IAAIvF,GAAa,EAAG,CAAC,EAC/B,KAAM,EACN,SAAUA,IAAc,EACxB,cAAgBnnC,IAAc,CAC5B2rC,IAAmB,OAAO3rC,KAAY,CAAC,GAAK,CAAC,CAAC,CAChD,EACA,UAAWylB,GACX,aAAW,yBACb,GAEF,EAEAr4H,MAAC24H,GAAA,CACC,MAAM,UAEN,SAAA34H,MAACs6H,GAAA,CACC,MAAM,kBACN,MAAO,GAAGojB,GAAmB2B,EAAsB,CAAC,KAAKA,EAAsB,IAAI7G,EAAwB,IAC3G,cAAgB5lC,IAAc,CAC5B8rC,IAA6BvlB,GAA0BvmB,GAAW,CAChE,SAAUysC,GACV,IAAK9G,GACL,IAAKC,GACL,QAAS,GACV,CAAC,CACJ,EACA,gBAAiB,CACf,SAAU6F,EACV,UAAW,8BACX,UAAW,WAGf,SAAAr+I,MAAC43I,GAAA,CACC,MAAO,CAACyH,EAAsB,EAC9B,IAAK9G,GACL,IAAKC,GACL,KAAM,EACN,SAAU6F,EACV,cAAgBzrC,IAAc,CAC5B8rC,IAA6B,OAAO9rC,KAAY,CAAC,GAAK6lC,EAAkC,CAAC,CAC3F,EACA,UAAWpgB,GACX,aAAW,yBACb,EACA,GAGFr3H,OAAC23H,GAAA,CAAoB,MAAM,YACzB,UAAA34H,MAAC86H,GAAA,CACC,MAAM,eACN,YAAa,GAAGqiB,GAAYwB,EAAM,WAAW,CAAC,QAAQxB,GAAYwB,EAAM,WAAW,IAAM,IAAM,GAAK,GAAG,GACvG,QAASP,EACT,gBAAkBxjB,IAAY4jB,IAAqB5jB,EAAO,EAC1D,UAAU,6BAGZ56H,MAAC86H,GAAA,CACC,MAAM,cACN,YAAaujB,EACT,oCACAc,GACE,GAAGA,EAAgB,iBAAiBL,IAAqB,EAAI,GAAK,GAAG,GAAGI,GAAoB,OAAO,SAASnE,CAAW,EAAI,WAAWqE,IAAqB,SAAS,SAASJ,KAAmB,EAAI,GAAK,GAAG,WAAW5B,GAAcrC,CAAW,CAAC,GAAK,EAAE,GACxP,+BACN,QAASsD,EACT,gBAAkBzjB,IAAY6jB,IAAqB7jB,EAAO,EAC1D,UAAU,6BACZ,EACF,GACF,EACJ,EAEA56H,MAACs4H,GAAA,CACC,MAAM,WACN,MACEt3H,OAAC,QAAK,UAAU,kCACd,UAAAhB,MAAC,QAAK,oBAAQ,EACb6hD,EAAS,OACR7hD,MAACqyI,GAAA,CAAM,QAAQ,UAAU,UAAW2K,GAA4B,SAAAn7F,EAAS,OAAO,EAC9E,KACH+8F,QACEvM,GAAA,CAAM,QAAQ,UAAU,UAAU,cAAc,oBAAQ,EACvD,MACN,EAGA,SAAAryI,MAAC,OAAI,UAAU,wBACZ,SAAC6hD,EAAS,OAKT7gD,OAAAsgE,WAAA,CACE,UAAAtgE,OAAC,OAAI,UAAU,qCACb,UAAAA,OAACqxI,IAAM,QAASuM,EAAc,YAAc,UAAW,UAAU,cAAc,sBACnEA,EAAc,WAAa,gBACvC,EACA59I,OAACqxI,GAAA,CAAM,QAAQ,UAAU,UAAW2K,GACjC,UAAAG,GAAY0B,CAAkB,EAAE,YACnC,GACF,QACC,MAAG,UAAU,2FACX,SAAAh9F,EAAS,IAAKR,IAAY,CACzB,MAAMo+F,GAAiBtC,GAAY97F,IAAS,cAAc,EACpDq+F,GAAcvC,GAAY97F,IAAS,WAAW,EAC9Cs+F,GAAc,CAClB,GAAGF,EAAc,QAAQA,KAAmB,IAAM,GAAK,GAAG,GAC1DlC,GAAel8F,IAAS,OAAQ,CAAC,EACjCA,IAAS,gBAAkB,GAC3Bq+F,KAAgB,IAAM,GAAGA,EAAW,UAAUA,KAAgB,IAAM,GAAK,GAAG,GAAK,IACjF,OAAO,OAAO,EACVE,GAAY,MAAM,QAAQv+F,IAAS,SAAS,GAAKA,GAAQ,UAAU,OACrEA,GAAQ,UAAU,KAAK,IAAI,EAC3B,GACJ,OACErgD,OAAC,MAEC,UAAU,wBACV,MAAO4+I,GAEP,UAAA5+I,OAAC,OAAI,UAAU,0BACb,UAAAhB,MAAC,QAAK,UAAU,8DACb,SAAAqhD,IAAS,OAAS,QACrB,QACC,QAAK,UAAU,qFACb,SAAAo8F,GAAsBp8F,IAAS,QAAQ,EAC1C,GACF,QACC,KAAE,UAAU,uDACV,SAAAs+F,GAAY,KAAK,KAAK,EACzB,IAdKt+F,IAAS,IAAMA,IAAS,MAiBnC,CAAC,EACH,GACF,EA/CArhD,MAAC,KAAE,UAAU,0CAA0C,sHAEvD,CA6CA,CAEJ,IAGJA,MAACs4H,IAAiB,MAAM,QAAQ,MAAM,QAClC,SAAAt3H,OAAC,OAAI,UAAU,mCACb,UAAAhB,MAACi+I,GAAA,CAAgB,MAAM,YAAY,MAAOV,GAAeoB,EAAM,YAAa,CAAC,EAAG,EAChF3+I,MAACi+I,IAAgB,MAAM,cAAc,MAAOV,GAAeoB,EAAM,OAAQ,CAAC,EAAG,EAC7E3+I,MAACi+I,IAAgB,MAAM,WAAW,MAAOd,GAAYwB,EAAM,YAAY,EAAG,EAC1E3+I,MAACi+I,IAAgB,MAAM,cAAc,MAAOT,GAAmBmB,EAAM,mBAAmB,EAAG,EAC3F3+I,MAACi+I,IAAgB,MAAM,gBAAgB,MAAOT,GAAmBmB,EAAM,gBAAgB,EAAG,EAC1F3+I,MAACi+I,IAAgB,MAAM,cAAc,MAAOd,GAAYwB,EAAM,UAAU,EAAG,GAC7E,EACJ,EAEA3+I,MAACs4H,IAAiB,MAAM,SAAS,MAAM,SACnC,SAAAt3H,OAAC,OAAI,UAAU,mCACb,UAAAhB,MAACi+I,GAAA,CAAgB,MAAM,IAAI,MAAON,GAAelJ,GAAW,OAAQ,EAAG,CAAC,EAAG,KAAI,GAAC,EAChFz0I,MAACi+I,GAAA,CAAgB,MAAM,IAAI,MAAON,GAAelJ,GAAW,OAAQ,EAAG,CAAC,EAAG,KAAI,GAAC,EAChFz0I,MAACi+I,GAAA,CAAgB,MAAM,IAAI,MAAON,GAAelJ,GAAW,OAAQ,EAAG,CAAC,EAAG,KAAI,GAAC,GAClF,EACJ,EAEC+C,EACDx3I,MAACiyI,GAAA,CACC,MAAOnoI,EACP,sBAAAooI,EACA,iBAAAtO,EACA,uBAAAuO,EACA,kBAAAX,EACA,gBAAAC,EACA,sBAAuB8F,CAAA,EACzB,GACF,EAGN,CCxaA,SAASsI,GAAY,CACnB,GAAGtxJ,CACL,EAAG,CACD,aAAQuxJ,GAAA,CAA0B,YAAU,cAAe,GAAGvxJ,EAAO,CACvE,CAEA,MAAMwxJ,GAAqBrgJ,aAAiB,SAA4B,CACtE,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAQG,MAACggJ,GAAA,CAAwC,IAAAngJ,EAAU,YAAU,sBAAuB,GAAGtR,EAAO,CACxG,CAAC,EAEK0xJ,GAAqBvgJ,aAAiB,SAA4B,CACtE,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAQG,MAACkgJ,GAAA,CAAwC,IAAArgJ,EAAU,YAAU,sBAAuB,GAAGtR,EAAO,CACxG,CAAC,ECbY4xJ,GAAkB,OAAO,OAAO,CAC3C,QAAS,UACT,SAAU,WACV,IAAK,MACL,MAAO,QACP,SAAU,WACV,MAAO,QACP,UAAW,YACX,SAAU,WACV,cAAe,WACf,SAAU,UACZ,CAAC,EAEM,SAASC,GAAc9mI,EAAO,CACnC,aAAAyjH,EAAe,GACf,OAAAsjB,EAAS,EACX,EAAI,GAAI,CACN,MAAMxe,EAAyBnlE,GAAgBqgE,GAAgBzjH,GAAO,IAAI,EACpEwiH,EAAiBp/D,GAAgBpjD,GAAO,IAAI,EAC5CgnI,EAAaD,GAAU,GAE7B,OAAIC,EAAW,oBAAsBA,EAAW,QACvCH,GAAgB,QAErBrkB,IAAmB,WACdqkB,GAAgB,SAErBte,IAA2BtlE,EAAc,KAAOu/D,IAAmBv/D,EAAc,IAC5E4jF,GAAgB,IAErBte,IAA2BtlE,EAAc,OAASu/D,IAAmBv/D,EAAc,MAC9E4jF,GAAgB,MAErBte,IAA2BtlE,EAAc,UAAYu/D,IAAmBv/D,EAAc,SACjF4jF,GAAgB,SAErBljF,GAAoB4kE,CAAsB,GAAK/F,IAAmB,OAC7DqkB,GAAgB,MAErBte,IAA2BtlE,EAAc,KAAOu/D,IAAmBv/D,EAAc,IAC5E4jF,GAAgB,SAErBte,IAA2BtlE,EAAc,UAAYu/D,IAAmBv/D,EAAc,SACjF4jF,GAAgB,cAErBte,IAA2BtlE,EAAc,KAAOslE,IAA2B,QAAU/F,IAAmBv/D,EAAc,KAAOu/D,IAAmB,OAC3IqkB,GAAgB,SAElBA,GAAgB,SACzB,CChDA,SAASI,GAAY,CACnB,GAAGhyJ,CACL,EAAG,CACD,aAAQiyJ,GAAA,CAA0B,YAAU,eAAgB,GAAGjyJ,EAAO,CACxE,CAEA,MAAMkyJ,GAAqB/gJ,aAAiB,SAA4B,CACtE,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAOG,MAAC0gJ,GAAA,CAA6B,IAAA7gJ,EAAU,YAAU,uBAAwB,GAAGtR,EAAO,CAC7F,CAAC,EAEKoyJ,GAAqBjhJ,aAAiB,SAA4B,CACtE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAAC4gJ,GAAA,CACC,SAAA5gJ,MAAC6gJ,GAAA,CACC,IAAAhhJ,EACA,YAAU,uBACV,UAAWP,EACT,qdACAxN,CAAA,EAED,GAAGvD,CAAA,GAER,CAEJ,CAAC,EAED,SAASuyJ,GAAgB,CACvB,UAAAhvJ,EACA,MAAA0uF,EACA,QAAA5xF,EAAU,UACV,GAAGL,CACL,EAAG,CACD,OACEyR,MAAC+gJ,GAAA,CACC,YAAU,oBACV,aAAYvgE,EACZ,eAAc5xF,EACd,UAAW0Q,EACT,6YACAxN,CAAA,EAED,GAAGvD,CAAA,EAGV,CAoBA,SAASyyJ,GAAqB,CAC5B,UAAAlvJ,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACihJ,GAAA,CACC,YAAU,yBACV,UAAW3hJ,EAAG,4BAA6BxN,CAAS,EACnD,GAAGvD,CAAA,EAGV,aClFM2yJ,GAAkC,IAGlCC,GAAyC,IACzCC,GAA+B,IAC/BC,GAA4C,IAC5Cva,GAAsB,MACtBwa,GAAuB,OACvBC,GAA0B,IAAI,IAAI,CAAC,aAAa,CAAC,EAEvD,SAASC,IAA4B,CACnC,OAAO,OAAOxZ,IAAiB,sBAAwB,EAAE,EAAE,OAAO,aACpE,CAEO,SAASyZ,GAA2BC,EAAeF,KAA6B,CACrF,OAAOD,GAAwB,IAAI,OAAOG,GAAgB,EAAE,EAAE,OAAO,aAAa,CACpF,CAEO,SAASC,GAA4BD,EAAeF,KAA6B,CACtF,OAAOC,GAA2BC,CAAY,EAC1CP,GACAD,EACN,CAEA,SAASU,GAAqBnvG,EAAU,CACtC,MAAI,CAACA,GAAY,OAAOA,GAAa,SAC5B,CACL,cAAe,EACf,QAAS,EAAC,EAIP,CACL,cAAe,EACf,QAAS,MAAM,QAAQA,EAAS,OAAO,EAAIA,EAAS,QAAU,EAAC,CAEnE,CAEA,SAASovG,GAA6BxB,EAAQ,CAC5C,MAAI,CAACA,GAAU,OAAOA,GAAW,SACxB,CACL,cAAe,EACf,KAAM,GACN,MAAO,EAAC,EAGL,CACL,cAAe,EACf,KAAM,MAAM,QAAQA,EAAO,IAAI,EAAIA,EAAO,KAAO,GACjD,MAAOA,EAAO,OAAS,OAAOA,EAAO,OAAU,SAAWA,EAAO,MAAQ,EAAC,CAE9E,CAEA,MAAM3+B,OAAgB,IACtB,IAAIogC,GAA2B,GAC3BC,GAAkB,CACpB,SAAUH,GAAA,EACV,iBAAkBC,GAAA,EAClB,SAAU,EACV,gBAAiB,GACjB,kBAAmB,OAAO,OAAW,IACrC,aAAc,GACd,UAAW,EACb,EACIG,GAAmB,EACnBC,GAAkB,KAClBC,GAA4B,KAG5BC,GAA8BV,GAAA,EAC9BW,GAAqB,GAEzBN,GAA2B,KAAK,UAAUC,GAAgB,QAAQ,EAElE,SAASM,GAAmBC,EAAc,CAAE,SAAAC,EAAW,GAAM,WAAAC,EAAa,GAAO,MAAArxI,EAAQ,GAAI,UAAAkzH,EAAY0d,GAAgB,WAAc,GAAI,CACzI,MAAMtvG,EAAWmvG,GAAqBU,CAAY,EAC5CG,EAAoB,KAAK,UAAUhwG,CAAQ,EAC3CiwG,EAAkBD,IAAsBX,GACxC7/B,EAAe,CACnB,SAAUygC,EAAkBjwG,EAAWsvG,GAAgB,SACvD,iBAAkBA,GAAgB,iBAClC,SAAUA,GAAgB,SAAW,EACrC,gBAAiBQ,EACjB,kBAAmBC,EACnB,aAAcrxI,EACd,UAAAkzH,CAAA,EAEF,GACE,GAACqe,GACDzgC,EAAa,kBAAoB8/B,GAAgB,iBACjD9/B,EAAa,oBAAsB8/B,GAAgB,mBACnD9/B,EAAa,eAAiB8/B,GAAgB,cAC9C9/B,EAAa,YAAc8/B,GAAgB,WAI7C,CAAIW,IACFZ,GAA2BW,GAE7BV,GAAkB,CAChB,GAAG9/B,CAAA,EAEL,UAAWL,KAAYF,GACrBE,EAAA,EAEJ,CAEA,SAAS+gC,GAA2BC,EAAsB,CACxD,MAAMC,EAAmBhB,GAA6Be,CAAoB,EACpEE,EAAoB,KAAK,UAAUf,GAAgB,gBAAgB,EACnEgB,EAAgB,KAAK,UAAUF,CAAgB,EACrD,GAAIC,IAAsBC,EAG1B,CAAAhB,GAAkB,CAChB,GAAGA,GACH,iBAAAc,EACA,SAAUd,GAAgB,SAAW,GAEvC,UAAWngC,KAAYF,GACrBE,EAAA,EAEJ,CAEA,SAASohC,GAAuB,CAAE,WAAAR,EAAaT,GAAgB,kBAAmB,MAAA5wI,EAAQ4wI,GAAgB,aAAc,UAAA1d,EAAY0d,GAAgB,WAAc,GAAI,CACpK,GACE,EAAAS,IAAeT,GAAgB,mBAC/B5wI,IAAU4wI,GAAgB,cAC1B1d,IAAc0d,GAAgB,WAIhC,CAAAA,GAAkB,CAChB,GAAGA,GACH,SAAUA,GAAgB,SAAW,EACrC,kBAAmBS,EACnB,aAAcrxI,EACd,UAAAkzH,CAAA,EAEF,UAAWziB,KAAYF,GACrBE,EAAA,EAEJ,CAEA,SAASqhC,GAAgBj4I,EAAM,CAC7B,GAAI,OAAO,OAAW,IACpB,MAAO,GAET,GAAI,CACF,OAAO,OAAO,IAAI,IAAI,OAAO,SAAS,IAAI,EAAE,aAAa,IAAIA,CAAI,GAAK,EAAE,EAAE,MAC5E,MAAQ,CACN,MAAO,EACT,CACF,CAEO,SAASk4I,GAAiB,CAAE,aAAAxB,EAAeF,IAA0B,EAAM,GAAI,CAIpF,GAHI,OAAO,OAAW,KAGlBC,GAA2BC,CAAY,EACzC,MAAO,GAET,IAAI/uI,EAAM,KACV,GAAI,CACFA,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,CACpC,MAAQ,CACN,MAAO,EACT,CACA,GAAIA,EAAI,aAAa,IAAIm0H,EAAmB,EAAG,CAC7C,MAAMqc,EAAW,OAAOxwI,EAAI,aAAa,IAAIm0H,EAAmB,GAAK,EAAE,EAAE,OACzE,OAAOvC,GAAqB4e,CAAQ,CACtC,CACA,OAAOjf,GAAA,CACT,CAEA,SAASkf,GAAUpvJ,EAAM,CACvB,UAAAqwI,EAAY6e,GAAA,EACZ,YAAAG,EAAc,GACd,OAAAlvG,EAAS,EACX,EAAI,GAAI,CACN,MAAMxhC,EAAM,IAAI,IAAI3e,EAAM,kBAAkB,EAI5C,GAHIqwI,GACF1xH,EAAI,aAAa,IAAIm0H,GAAqBzC,CAAS,EAEjDgf,EAAa,CACf,MAAMnkB,EAAO+jB,GAAgB3B,EAAoB,EAC7CpiB,GACFvsH,EAAI,aAAa,IAAI2uI,GAAsBpiB,CAAI,CAEnD,CACA,SAAW,CAAC/vI,EAAKjB,CAAK,IAAK,OAAO,QAAQimD,CAAM,EAAG,CACjD,MAAMzjC,EAAO,OAAOxiB,GAAS,EAAE,EAAE,OAC7BwiB,GACFiC,EAAI,aAAa,IAAIxjB,EAAKuhB,CAAI,CAElC,CACA,MAAO,GAAGiC,EAAI,QAAQ,GAAGA,EAAI,MAAM,EACrC,CAEA,eAAe2wI,GAAcC,EAAU/6I,EAAU,CAC/C,GAAI,CACF,MAAMw3H,EAAU,MAAMujB,EAAS,OAO/B,OANc,OACZvjB,GAAS,OACTA,GAAS,QAAQ,OACjBA,GAAS,QAAQ,YAAY,OAAO,SACpCx3H,CAAA,EACA,QACcA,CAClB,MAAQ,CACN,OAAOA,CACT,CACF,CAEA,eAAeg7I,GAAiB7wI,EAAKjM,EAAS+8I,EAAWC,EAAgB,CACvE,GAAI,OAAO,iBAAoB,WAC7B,OAAO,MAAM/wI,EAAKjM,CAAO,EAE3B,MAAMi9I,EAAa,IAAI,gBACjBC,EAAY,WAAW,IAAM,CACjCD,EAAW,OACb,EAAGF,CAAS,EACZ,GAAI,CACF,OAAO,MAAM,MAAM9wI,EAAK,CACtB,GAAGjM,EACH,OAAQi9I,EAAW,OACpB,CACH,OAASxyI,EAAO,CACd,MAAIA,GAAO,OAAS,aACZ,IAAI,MAAMuyI,CAAc,EAE1BvyI,CACR,SACE,aAAayyI,CAAS,CACxB,CACF,CAEA,eAAsBC,GAAkB,CAAE,eAAAC,EAAiB,CAAC/B,GAAgB,iBAAoB,GAAI,CAClG,GAAI,OAAO,OAAW,IACpB,OAEF,GAAIE,GACF,OAAOA,GAET,MAAM8B,EAAY,EAAE/B,GACd3d,EAAY6e,GAAA,EAClB,OAAIY,GACFd,GAAuB,CAAE,WAAY,GAAM,MAAO,GAAI,UAAA3e,EAAW,EAEnE4d,IAAmB,SAAY,CAC7B,GAAI,CACF,MAAMsB,EAAW,MAAMC,GACrBJ,GAAU,iBAAkB,CAAE,UAAA/e,EAAW,YAAa,GAAM,EAC5D,CAAE,MAAO,YACT+c,GACA,uCAAuCA,GAA+B,GAAI,KAE5E,GAAI,CAACmC,EAAS,GACZ,MAAM,IAAI,MAAM,MAAMD,GACpBC,EACA,+BAA+BA,EAAS,MAAM,IAAIA,EAAS,UAAU,GACtE,EAEH,MAAMS,EAAU,MAAMT,EAAS,OAC3BQ,IAAc/B,IAChBK,GAAmB2B,EAAS,CAAE,SAAU,GAAM,WAAY,GAAO,MAAO,GAAI,UAAA3f,EAAW,CAE3F,OAASlzH,EAAO,CACd,MAAI4yI,IAAc/B,IAChBK,GAAmBN,GAAgB,SAAU,CAC3C,SAAU,GACV,WAAY,GACZ,MAAO5wI,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EAC5D,UAAAkzH,CAAA,CACD,EAEGlzH,CACR,SACM4yI,IAAc/B,KAChBC,GAAkB,KAEtB,CACF,KACOA,EACT,CAEA,eAAsBgC,IAA6B,CACjD,GAAI,OAAO,OAAW,KAAe9B,GACnC,OAEF,MAAM9d,EAAY6e,GAAA,EAClB,OAAIhB,KAGJA,IAA6B,SAAY,CACvC,GAAI,CACF,MAAMqB,EAAW,MAAM,MAAMH,GAAU,2BAA4B,CAAE,UAAA/e,CAAA,CAAW,EAAG,CACjF,MAAO,WACR,EACK6f,EAAc,OAAOX,EAAS,SAAS,MAAM,cAAc,GAAK,EAAE,EACxE,GAAI,CAACA,EAAS,IAAM,CAACW,EAAY,SAAS,kBAAkB,EAAG,CAC7D,GAAIX,EAAS,SAAW,KAAOA,EAAS,SAAW,KAAO,CAACW,EAAY,SAAS,kBAAkB,EAAG,CACnG/B,GAA8B,GAC9BQ,GAA2B,IAAI,EAC/B,MACF,CACA,MAAM,IAAI,MAAM,yCAAyCY,EAAS,MAAM,IAAIA,EAAS,UAAU,EAAE,CACnG,CACAZ,GAA2B,MAAMY,EAAS,MAAM,CAClD,MAAgB,CAIhB,SACErB,GAA4B,IAC9B,CACF,KACOA,GACT,CAEA,eAAsBiC,GAA8BhX,EAAS,CAAE,OAAAiX,CAAA,EAAW,GAAI,CAC5E,GAAI,OAAO,OAAW,IACpB,OAAO,KAET,MAAMC,EAAoB,OAAOlX,GAAW,EAAE,EAAE,OAChD,GAAI,CAACkX,EACH,MAAM,IAAI,MAAM,mBAAmB,EAErC,MAAMd,EAAW,MAAM,MAAMH,GAAU,uBAAwB,CAC7D,OAAQ,CAAE,KAAMiB,CAAA,CAAkB,CACnC,EAAG,CACF,OAAQ,OACR,MAAO,WACP,OAAAD,CAAA,CACD,EACD,GAAI,CAACb,EAAS,GACZ,MAAM,IAAI,MAAM,MAAMD,GACpBC,EACA,qCAAqCA,EAAS,MAAM,IAAIA,EAAS,UAAU,GAC5E,EAEH,MAAMvjB,EAAU,MAAMujB,EAAS,OAC/B,OAAIvjB,GAAS,SACXqiB,GAAmBriB,EAAQ,OAAO,EAE7BA,CACT,CAEA,eAAsBskB,GAAwBnX,EAAS,CAAE,OAAAiX,CAAA,EAAW,GAAI,CACtE,GAAI,OAAO,OAAW,IACpB,OAAO,KAET,MAAMC,EAAoB,OAAOlX,GAAW,EAAE,EAAE,OAChD,GAAI,CAACkX,EACH,MAAM,IAAI,MAAM,mBAAmB,EAErC,MAAMd,EAAW,MAAM,MAAMH,GAAU,4BAA6B,CAClE,OAAQ,CAAE,KAAMiB,CAAA,CAAkB,CACnC,EAAG,CACF,OAAQ,MACR,MAAO,WACP,OAAAD,CAAA,CACD,EACD,GAAI,CAACb,EAAS,GACZ,MAAM,IAAI,MAAM,MAAMD,GACpBC,EACA,uCAAuCA,EAAS,MAAM,IAAIA,EAAS,UAAU,GAC9E,EAEH,OAAOA,EAAS,MAClB,CAEO,SAASgB,IAAyB,CACvC,OAAOxC,EACT,CAEO,SAASyC,GAAqB5iC,EAAU,CAC7C,OAAAF,GAAU,IAAIE,CAAQ,EACf,IAAM,CACXF,GAAU,OAAOE,CAAQ,CAC3B,CACF,CAyBA,GAAI,OAAO,OAAW,IAAa,CACjC,MAAM6iC,EAAkB,IAAM,CAC5BZ,GAAkB,CAAE,eAAgB,GAAO,EAAE,MAAO1yI,GAAU,CAI9D,CAAC,EACD8yI,GAAA,CACF,EAEAJ,GAAA,EAAoB,MAAO1yI,GAAU,CAIrC,CAAC,EACD8yI,GAAA,EAEK7B,KACHA,GAAqB,GACrB,OAAO,YAAY,IAAM,CACnB,SAAS,kBAAoB,UAC/BqC,EAAA,CAEJ,EAAG9C,IAA6B,EAChC,OAAO,YAAY,IAAM,CACnB,SAAS,kBAAoB,UAC/BsC,GAAA,CAEJ,EAAG5C,EAAyC,EAC5C,OAAO,iBAAiB,QAASoD,CAAe,EAChD,SAAS,iBAAiB,mBAAoB,IAAM,CAC9C,SAAS,kBAAoB,UAC/BA,EAAA,CAEJ,CAAC,EAEL,CC7bO,MAAMC,GAA0B,OAAO,OAAO,CAAC,MAAO,MAAO,KAAK,CAAC,EAC7DC,GAAqC,GAElD,SAASN,GAAkBn2J,EAAO,CAChC,OAAO,OAAOA,GAAS,EAAE,EAAE,OAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,CAC1E,CAEA,SAAS02J,GAAiB12J,EAAO,CAC/B,MAAM8uE,EAAS,OAAO9uE,GAAS,EAAE,EAAE,OAAO,cAAc,QAAQ,MAAO,EAAE,EACzE,OAAOw2J,GAAwB,SAAS1nF,CAAM,EAAIA,EAAS,EAC7D,CAEA,SAASr5C,GAASz1B,EAAO,CACvB,MAAO,EAAQA,GAAU,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,CAC5E,CAEA,eAAsB22J,GAAyB,CAC7C,KAAA3lB,EACA,OAAAliE,EACA,gBAAA2yC,EAAkB,KAClB,eAAA/rD,EAAiB,KACjB,WAAAkhG,EAAaH,EACf,EAAI,GAAI,CACN,MAAMxX,EAAUkX,GAAkBnlB,CAAI,EAChC6lB,EAAeH,GAAiB5nF,CAAM,EAC5C,GAAI,CAACmwE,EACH,MAAM,IAAI,MAAM,2BAA2B,EAE7C,GAAI,CAAC4X,EACH,MAAM,IAAI,MAAM,2CAA2C/nF,GAAU,WAAW,EAAE,EAEpF,MAAMumF,EAAW,MAAM,MACrB,+BAA+B,mBAAmBpW,CAAO,CAAC,WAAW,mBAAmB4X,CAAY,CAAC,GACrG,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,oBAElB,KAAM,KAAK,UAAU,CACnB,OAAQA,EACR,WAAAD,EACA,GAAInhI,GAASgsF,CAAe,EAAI,CAAE,gBAAAA,CAAA,EAAoB,GACtD,GAAIhsF,GAASigC,CAAc,EAAI,CAAE,eAAAA,CAAA,EAAmB,EAAC,CACtD,EACH,EAEF,IAAIo8E,EAAU,KACd,GAAI,CACFA,EAAU,MAAMujB,EAAS,MAC3B,MAAQ,CACNvjB,EAAU,IACZ,CACA,GAAI,CAACujB,EAAS,IAAM,CAACvjB,GAAS,GAC5B,MAAM,IAAI,MAAM,OAAOA,GAAS,OAAS,wCAAwCujB,EAAS,MAAM,EAAE,CAAC,EAErG,OAAIvjB,EAAQ,SACV6jB,GAAkB,CAAE,eAAgB,GAAO,EAAE,MAAM,IAAM,CAAC,CAAC,EAEtD7jB,CACT,CCnDA,SAASglB,GAAoB,CAC3B,MAAA1rI,EACA,uBAAA2rI,CACF,EAAG,CACD,OAAI,OAAOA,GAA2B,WAC7B,KAIPjlJ,MAAC8gJ,GAAA,CACC,UAAU,UACV,SAAU,IAAM,CACdmE,EAAuB3rI,CAAK,CAC9B,EAEA,SAAAtZ,MAAC,QAAK,UAAU,mBAAmB,mCAAuB,GAGhE,CAEA,SAASklJ,GAAkB,CACzB,MAAA5rI,EACA,MAAA80H,EACA,oBAAA+W,EACA,sBAAAC,EACA,sBAAAC,EACA,QAAAvT,EAAU,GACV,oBAAAwT,EACA,kBAAAC,EACA,uBAAAN,EACA,yBAAAO,CACF,EAAG,CACD,GAAI,CAACpX,EACH,OAAO,KAGT,MAAMj/I,EAAM,GAAGi/I,EAAM,OAAO,IAAIA,EAAM,KAAK,GACrCqX,EAAa3T,IAAY3iJ,EACzBu2J,EAA4B,OAAOF,GAA6B,WAEtE,OACExkJ,OAAAsgE,WAAA,CACG,UAAA6jF,EACCnlJ,MAAC8gJ,GAAA,CACC,UAAU,UACV,SAAU2E,EACV,SAAU,IAAM,CACdF,EAAkBjsI,EAAO80H,EAAM,MAAOA,CAAK,CAC7C,EAEA,SAAApuI,MAAC,QAAK,UAAU,mBAAmB,4BAAgB,IAEnD,KACJA,MAACglJ,GAAA,CACC,MAAA1rI,EACA,uBAAA2rI,CAAA,GAEDI,GAAyBK,EACxB1kJ,OAAAsgE,WAAA,CACE,UAAAthE,MAAC8gJ,GAAA,CACC,UAAU,UACV,SAAU,IAAM,CACd0E,EAAyBlsI,EAAO80H,EAAM,MAAOA,EAAO,MAAM,CAC5D,EAEA,SAAApuI,MAAC,QAAK,UAAU,mBAAmB,qBAAS,IAE9CA,MAAC8gJ,GAAA,CACC,UAAU,UACV,SAAU,IAAM,CACd0E,EAAyBlsI,EAAO80H,EAAM,MAAOA,EAAO,cAAc,CACpE,EAEA,SAAApuI,MAAC,QAAK,UAAU,mBAAmB,8BAAkB,GACvD,EACF,EACE,KACHolJ,GAAyBM,EACxB1lJ,MAAC8gJ,GAAA,CACC,UAAU,UACV,SAAU,IAAM,CACd0E,EAAyBlsI,EAAO80H,EAAM,MAAOA,EAAO,MAAM,CAC5D,EAEA,SAAApuI,MAAC,QAAK,UAAU,mBAAmB,qBAAS,IAE5C,KACJA,MAAC8gJ,GAAA,CACC,UAAU,UACV,SAAU,IAAM,CACdwE,EAAoBhsI,EAAO80H,EAAM,MAAOA,CAAK,CAC/C,EAEA,SAAApuI,MAAC,QAAK,UAAU,mBAAmB,oBAAQ,GAC7C,EACF,CAEJ,CAEA,SAAS2lJ,GAAsB,CAC7B,MAAArsI,EACA,QAAAw4H,EAAU,GACV,qBAAA8T,CACF,EAAG,CACD,GACE,OAAOtsI,GAAO,MAAQ,EAAE,EAAE,OAAO,gBAAkB,YACnD,OAAOssI,GAAyB,WAEhC,OAAO,KAET,MAAMzY,EAAU,OAAO7zH,GAAO,MAAQA,GAAO,IAAM,EAAE,EAAE,OACvD,OACEtY,OAAAsgE,WAAA,CACE,UAAAthE,MAACghJ,GAAA,EAAqB,EACrB0D,GAAwB,IAAK1nF,GAAW,CACvC,MAAM6oF,EAAc7oF,EAAO,cACrB7tE,EAAM,GAAGg+I,CAAO,WAAWnwE,CAAM,GACvC,OACEh9D,MAAC8gJ,GAAA,CAEC,UAAU,UACV,SAAUhP,IAAY3iJ,EACtB,SAAU,IAAM,CACdy2J,EAAqBtsI,EAAO0jD,CAAM,CACpC,EAEA,SAAAh8D,OAAC,QAAK,UAAU,mBAAmB,uBAAW6kJ,CAAA,EAAY,GAPrD7oF,CAAA,CAUX,CAAC,GACH,CAEJ,CAEA,SAAwB8oF,GAAsB,CAC5C,MAAAxsI,EACA,oBAAA6rI,EAAsB,GACtB,sBAAAC,EAAwB,GACxB,sBAAAC,EAAwB,GACxB,QAAAvT,EAAU,GACV,oBAAAwT,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,SAAA3kJ,CACF,EAAG,CACD,MAAMklJ,EAAgCzsI,GAAS,OAAO2rI,GAA2B,WAC3Ee,EAAwB1sI,GAAS,OAAOgsI,GAAwB,WAChEW,EAA0B3sI,GAAS,OAAOssI,GAAyB,YACvE,OAAOtsI,GAAO,MAAQ,EAAE,EAAE,OAAO,gBAAkB,WACrD,GAAI,CAACysI,GAAiC,CAACC,GAAyB,CAACC,EAC/D,OAAOplJ,EAGT,MAAMiwI,EAAS7D,GAAyB3zH,CAAK,EAC7C,MAAI,CAACysI,GAAiC,CAACjV,EAAO,QAAU,CAACmV,EAChDplJ,EAIPG,OAACu/I,GAAA,CAAY,MAAO,GAClB,UAAAvgJ,MAACygJ,GAAA,CAAmB,QAAO,GACxB,SAAA5/I,CAAA,CACH,EACAG,OAAC2/I,GAAA,CAAmB,UAAU,OAC3B,WAAC7P,EAAO,QAAU,CAACkV,EAClBhmJ,MAACglJ,GAAA,CACC,MAAA1rI,EACA,uBAAA2rI,CAAA,GAEA,KACHnU,EAAO,QAAUkV,EAChBhmJ,MAACklJ,GAAA,CACC,MAAA5rI,EACA,MAAOw3H,EAAO,OACd,oBAAqBqU,GAAuB,OAAOI,GAAsB,WACzE,sBAAAH,EACA,sBAAAC,EACA,QAAAvT,EACA,oBAAAwT,EACA,kBAAAC,EACA,uBAAAN,EACA,yBAAAO,CAAA,GAEA,KACJxlJ,MAAC2lJ,GAAA,CACC,MAAArsI,EACA,QAAAw4H,EACA,qBAAA8T,CAAA,EACF,EACF,GACF,CAEJ,CC3IA,MAAMM,GAAgC,IAChCC,GAAgC,wBAChCC,GAA2B,oCAE3BC,GAAwB,CAC5B,CAAClG,GAAgB,OAAO,EAAGmG,GAC3B,CAACnG,GAAgB,QAAQ,EAAGoG,GAC5B,CAACpG,GAAgB,GAAG,EAAGqG,GACvB,CAACrG,GAAgB,KAAK,EAAGsG,GACzB,CAACtG,GAAgB,QAAQ,EAAGuG,GAC5B,CAACvG,GAAgB,KAAK,EAAGwG,GACzB,CAACxG,GAAgB,SAAS,EAAGyG,GAC7B,CAACzG,GAAgB,QAAQ,EAAG0G,GAC5B,CAAC1G,GAAgB,aAAa,EAAG2G,GACjC,CAAC3G,GAAgB,QAAQ,EAAG4G,EAC9B,EAEA,SAASC,GAAa1tI,EAAOyjH,EAAcsjB,EAAQ,CACjD,OAAOgG,GAAsBjG,GAAc9mI,EAAO,CAAE,aAAAyjH,EAAc,OAAAsjB,CAAA,CAAQ,CAAC,GAAKuG,EAClF,CAEA,SAASK,GAAgB,CACvB,MAAA3tI,EACA,MAAA7J,EACA,YAAAy1G,EACA,cAAAgiC,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EAAwB,GACxB,iCAAAkC,EAAmC,GACnC,gCAAAE,EAAkC,GAClC,oBAAAujB,EAAsB,GACtB,sBAAAC,EAAwB,GACxB,sBAAAC,EAAwB,GACxB,kBAAA7T,EAAoB,GACpB,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,OAAAp+D,EAAS,EACX,EAAG,CACD,KAAM,CAAE,SAAA/2F,EAAU,cAAAyT,CAAA,EAAkBpB,GAAA,EAC9BvT,EAAM63I,GAAQ1tH,CAAK,EACnB+nD,EAASlyE,IAAQ+1H,EACjBlpH,EAAQ6tI,GAAqBvwH,CAAK,EAClCyjH,EAAejgE,EAAkBxjD,CAAK,EACtC+mI,EAASlf,GAAgB7nH,EAAO,CACpC,aAAAyjH,EACA,SAAU5tI,EACV,QAASyuI,EAAatkH,CAAK,EAC3B,OAAQ2kH,EAAY3kH,CAAK,EACzB,SAAU4kH,EAAc5kH,CAAK,EAC7B,QAASwkH,EAAaxkH,CAAK,EAC3B,sBAAAkmH,EACA,iCAAAkC,EACA,gCAAAE,CAAA,CACD,EACKulB,EAAYH,GAAa1tI,EAAOyjH,EAAcsjB,CAAM,EACpD+G,EAAiB5kB,GAAoBlpH,CAAK,EAC1C+tI,EAAkBD,IAAmB,SACvCV,GACAU,IAAmB,OACjBE,GACA,KACAC,EAAkB,EAAQF,EAC1B9uB,EAAQ,CACZv8H,EACAorJ,IAAmB,SAAW,gBAAkB,GAChDA,IAAmB,OAAS,cAAgB,GAC5C/G,EAAO,YACP/mI,GAAO,KACP,OAAOA,GAAO,MAAQ,EAAE,GACxB,OAAO,OAAO,EAAE,KAAK,KAAK,EAEtBlU,EACJpE,OAACiE,GAAA,CACC,KAAK,SACL,SAAUo8D,EACV,KAAK,KACL,MAAAk3D,EACA,UAAWj5H,EACT,gCAEF,QAAS,IAAM,CACb4nJ,EAAc/3J,CAAG,EACbkB,GACFyT,EAAc,EAAK,CAEvB,EACA,QAAS9H,EAET,UAAAgF,OAAC,QAAK,UAAU,4DAA4D,cAAY,OACtF,UAAAhB,MAACmnJ,EAAA,CACC,UAAW7nJ,EACT,SACA+gJ,EAAO,SAAW,eACpB,GAEDkH,EACCvnJ,MAAC,QAAK,UAAU,yJACd,SAAAA,MAACqnJ,EAAA,CAAgB,UAAU,SAAS,YAAa,IAAK,EACxD,EACE,MACN,EACArnJ,MAAC,QAAK,UAAU,kFAAmF,SAAAhE,CAAA,CAAM,KAI7G,OACEgE,MAAC8lJ,GAAA,CACC,MAAAxsI,EACA,oBAAA6rI,EACA,sBAAAC,EACA,sBAAAC,EACA,QAAS7T,EACT,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EAEC,SAAApgJ,CAAA,EAGP,CAEA,SAASoiJ,GAAc,CACrB,UAAA1oG,EACA,MAAArvC,EACA,YAAAg4I,EACA,qBAAAC,EACA,kBAAAC,EACA,YAAAziC,EACA,cAAAgiC,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EAAwB,GACxB,iCAAAkC,EAAmC,GACnC,gCAAAE,EAAkC,GAClC,oBAAAujB,EAAsB,GACtB,sBAAAC,EAAwB,GACxB,sBAAAC,EAAwB,GACxB,kBAAA7T,EAAoB,GACpB,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,OAAAp+D,EAAS,EACX,EAAG,CACD,MAAMj4E,EAAWs4I,GAAeC,EAAqB,IAAI5oG,EAAU,EAAE,EAC/D8oG,EAAgBxgE,EAAS9hF,GAAqBP,GAEpD,OACE/E,MAAC6/I,IAAY,QAAO,GAAC,KAAM1wI,EACzB,SAAAnO,OAAC4mJ,EAAA,CAAc,UAAU,4BACvB,UAAA5nJ,MAAC+/I,GAAA,CAAmB,QAAO,GACzB,SAAA/+I,OAACiE,GAAA,CACC,KAAK,SACL,KAAK,KACL,MAAO65C,EAAU,KACjB,gBAAe2oG,EACf,UAAWnoJ,EACT,+CACAmoJ,GAAe,kBAEjB,QAAUxjJ,GAAU,CAClB,GAAIwjJ,EAAa,CACfxjJ,EAAM,iBACN,MACF,CACA0jJ,EAAkB7oG,EAAU,EAAE,CAChC,EAEA,UAAA9+C,MAACo+G,GAAA,CACC,UAAW9+G,EACT,uBACA6P,GAAY,aAEd,cAAY,SAEdnP,MAAC,QAAK,UAAU,kFAAmF,WAAU,KAAK,KAEtH,EAEAA,MAACigJ,GAAA,CAAmB,UAAU,4BAC5B,SAAAjgJ,MAACqF,GAAA,CAAe,UAAU,4BACvB,SAAAylI,GAAiBhsF,CAAS,EAAE,IAAKn3C,GAC5BA,EAAK,OAAS,YAEd3H,MAACwnJ,GAAA,CAEC,UAAW7/I,EAAK,MAChB,MAAO8H,EAAQ,EACf,YAAAg4I,EACA,qBAAAC,EACA,kBAAAC,EACA,YAAAziC,EACA,cAAAgiC,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EACA,iCAAAkC,EACA,gCAAAE,EACA,oBAAAujB,EACA,sBAAAC,EACA,sBAAAC,EACA,kBAAA7T,EACA,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,OAAQ,IAzBH79I,EAAK,KA8Bd3H,MAACsF,GAAA,CAAkC,UAAU,4BAC3C,SAAAtF,MAACinJ,GAAA,CACC,MAAOt/I,EAAK,MACZ,MAAO8H,EAAQ,EACf,YAAAy1G,EACA,cAAAgiC,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EACA,iCAAAkC,EACA,gCAAAE,EACA,oBAAAujB,EACA,sBAAAC,EACA,sBAAAC,EACA,kBAAA7T,EACA,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,OAAQ,IACV,EAxBuB79I,EAAK,GAyB9B,CAEH,EACH,EACF,GACF,EACF,CAEJ,CAEA,SAASkgJ,GAAoB,CAAE,cAAA1sB,GAAiB,CAC9C,KAAM,CAAE,SAAA9qI,EAAU,MAAA6T,CAAA,EAAUxB,GAAA,EAE5B,OAAIrS,GAAY6T,IAAU,YAAc,OAAOi3H,GAAkB,WACxD,KAIPn7H,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,KACL,aAAW,6BACX,MAAM,iBACN,cAAe07H,EACf,UAAU,gLAEV,SAAAn7H,MAAC,QAAK,UAAU,kJAAkJ,GAGxK,CAEA,SAAS8nJ,GAAwB7pG,EAAQ,CACvC,MAAMksF,EAAW,OAAOlsF,GAAQ,UAAY,EAAE,EAAE,OAChD,GAAIksF,EACF,OAAOA,EAET,MAAM4d,EAAY,OAAO9pG,GAAQ,UAAYA,GAAQ,KAAO,EAAE,EAAE,OAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,QAAS,EAAE,EAC9G,OAAO8pG,EAAU,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,OAASA,GAAa,WACpE,CAEA,SAASC,GAA4B/pG,EAAQ,CAC3C,OAAO,OAAOA,GAAQ,UAAYA,GAAQ,KAAO,EAAE,EAAE,MACvD,CAEA,SAASgqG,GAA0BvhJ,EAAS,CAC1C,MAAMu+C,MAAW,IACXxyD,EAAS,GACf,UAAWwrD,KAAU,MAAM,QAAQv3C,CAAO,EAAIA,EAAU,GAAI,CAC1D,MAAMm4H,EAAM,OAAO5gF,GAAQ,KAAO,EAAE,EAAE,OAChCiqG,EAAW,OAAOjqG,GAAQ,UAAY,EAAE,EAAE,OAC1C9uD,EAAM+4J,GAAYrpB,EACpB,CAACA,GAAO,CAAC1vI,GAAO81D,EAAK,IAAI91D,CAAG,IAGhC81D,EAAK,IAAI91D,CAAG,EACZsD,EAAO,KAAK,CACV,IAAAosI,EACA,SAAAqpB,EACA,SAAU,OAAOjqG,GAAQ,UAAY,EAAE,EAAE,MAAK,CAC/C,EACH,CACA,OAAOxrD,CACT,CAEA,SAAS01J,GAAkB,CACzB,iBAAAC,EAAmB,GACnB,gBAAAC,EAAkB,GAClB,kBAAAC,CACF,EAAG,CACD,MAAM5hJ,EAAUuhJ,GAA0BG,CAAgB,EAC1D,GAAI1hJ,EAAQ,QAAU,EACpB,OAAO,KAGT,MAAM29H,EAAY,OAAOgkB,GAAmB,EAAE,EAAE,OAC1CE,EAAe7hJ,EAAQ,KAAMu3C,GAAWA,EAAO,MAAQomF,GAAapmF,EAAO,WAAaomF,CAAS,GAAK39H,EAAQ,CAAC,EAC/G8hJ,EAAcV,GAAwBS,CAAY,EAClDE,EAAkBT,GAA4BO,CAAY,EAEhE,cACGrrC,GAAA,CACC,UAAAl9G,MAACo9G,GAAA,CAAoB,QAAO,GAC1B,SAAAp8G,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,KACL,UAAU,2JACV,MAAOgpJ,GAAmBD,EAE1B,UAAAxnJ,OAAC,QAAK,UAAU,yCACd,UAAAhB,MAAC,QAAK,UAAU,mDAAmD,cAAY,OAC7E,SAAAA,MAAC0oJ,GAAA,CAAW,UAAU,+BAA+B,EACvD,EACA1oJ,MAAC,QAAK,UAAU,mBAAoB,SAAAwoJ,CAAA,CAAY,GAClD,EACAxoJ,MAAC2oJ,GAAA,CAAY,UAAU,0CAA0C,cAAY,OAAO,KAExF,EACA3oJ,MAACs9G,IAAoB,MAAM,QAAQ,UAAU,8EAC1C,SAAA52G,EAAQ,IAAKu3C,GAAW,CACvB,MAAMjiD,EAAQ8rJ,GAAwB7pG,CAAM,EACtC8pG,EAAYC,GAA4B/pG,CAAM,EAC9CojB,EAASpjB,EAAO,MAAQsqG,EAAa,KAAOtqG,EAAO,WAAasqG,EAAa,SACnF,OACEvnJ,OAACy8G,GAAA,CAEC,UAAWn+G,EACT,oCACA+hE,GAAU,oCAEZ,SAAU,IAAM,CACV,OAAOinF,GAAsB,YAAcrqG,EAAO,MAAQsqG,EAAa,KACzED,EAAkBrqG,EAAO,GAAG,CAEhC,EACA,MAAO8pG,GAAa/rJ,EAEpB,UAAAgE,MAAC0oJ,GAAA,CAAW,UAAU,+CAA+C,cAAY,OAAO,EACxF1nJ,OAAC,QAAK,UAAU,iBACd,UAAAhB,MAAC,QAAK,UAAU,6BAA8B,SAAAhE,EAAM,EACnD+rJ,EACC/nJ,MAAC,QAAK,UAAU,0DAA2D,WAAU,EACnF,MACN,IAlBKi+C,EAAO,UAAYA,EAAO,IAqBrC,CAAC,EACH,GACF,CAEJ,CAEA,SAAS2qG,GAAmB,CAC1B,MAAAz+I,EACA,cAAA0+I,EACA,gBAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,YAAA9jC,EACA,qBAAAwiC,EACA,kBAAAC,EACA,cAAAT,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EAAwB,GACxB,iCAAAkC,EAAmC,GACnC,gCAAAE,EAAkC,GAClC,oBAAAujB,EAAsB,GACtB,sBAAAC,EAAwB,GACxB,sBAAAC,EAAwB,GACxB,kBAAA7T,EAAoB,GACpB,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,gBAAA/c,EAAkB,GAClB,kBAAAC,EAAoB,GACpB,aAAAugB,EAAe,GACf,iBAAAb,EAAmB,GACnB,gBAAAC,EAAkB,GAClB,kBAAAC,EACA,UAAAY,EAAY,GACZ,cAAA/tB,CACF,EAAG,CACD,MAAMssB,EAAct9I,EAAM,OAAO,OAAS,EACpCg/I,GAAaL,EAAgB,OAAS,EACtCM,EAAaL,EAAe,OAAS,EACrCM,EAAsB,OAAOJ,GAAgB,EAAE,EAAE,OACjDK,GAAiB,CAAC7gB,GAAoBC,GAAqB,CAAC0gB,EAElE,OACEpoJ,OAAAsgE,WAAA,CACE,UAAAtgE,OAAC0D,GAAA,CAAc,UAAU,QACvB,UAAA1E,MAACmoJ,GAAA,CACC,iBAAAC,EACA,gBAAAC,EACA,kBAAAC,CAAA,GAEFtoJ,MAACyE,GAAA,CACC,KAAK,SACL,YAAY,iCACZ,MAAO0F,EACP,SAAWlG,IAAU4kJ,EAAc5kJ,GAAM,OAAO,KAAK,EACrD,aAAW,mBACX,UAAU,0BACZ,EACF,EAEAjE,MAAC2E,IACC,SAAA3E,MAACg2H,GAAA,CAAW,UAAU,kEAAkE,KAAK,OAC3F,SAAAh2H,MAAC4E,GAAA,CACC,eAACC,GAAA,CACE,SAAAskJ,SACErkJ,GAAA,CACE,SAAAgmI,GAAiBke,CAAmB,EAAE,IAAKrhJ,IACtCA,GAAK,OAAS,YAEd3H,MAACwnJ,GAAA,CAEC,UAAW7/I,GAAK,MAChB,MAAO,EACP,YAAA8/I,EACA,qBAAAC,EACA,kBAAAC,EACA,YAAAziC,EACA,cAAAgiC,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EACA,iCAAAkC,EACA,gCAAAE,EACA,oBAAAujB,EACA,sBAAAC,EACA,sBAAAC,EACA,kBAAA7T,EACA,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,CAAA,EAxBK79I,GAAK,KA6Bd3H,MAAC+E,GAAA,CAA+B,UAAU,4BACxC,SAAA/E,MAACinJ,GAAA,CACC,MAAOt/I,GAAK,MACZ,MAAO,EACP,YAAAu9G,EACA,cAAAgiC,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EACA,iCAAAkC,EACA,gCAAAE,EACA,oBAAAujB,EACA,sBAAAC,EACA,sBAAAC,EACA,kBAAA7T,EACA,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,CAAA,EACF,EAvBoB79I,GAAK,GAwB3B,CAEH,EACH,EACE0hJ,GAAuB,CAACD,EAC1BpoJ,OAAC,KAAE,UAAU,0CAA0C,sCAA0BqoJ,CAAA,EAAoB,EACnGC,GACFtpJ,MAAC,KAAE,UAAU,0CAA0C,kCAAsB,EAC3EopJ,EACFppJ,MAAC,KAAE,UAAU,0CAA0C,6CAAiC,EAExFA,MAAC,KAAE,UAAU,0CAA0C,iCAAqB,EAEhF,EACF,EACF,EACF,EACAA,MAAC6nJ,GAAA,CAAoB,cAAeqB,EAAY/tB,EAAgB,KAAM,GACxE,CAEJ,CAEA,SAAwBouB,GAAkB,CACxC,YAAAhqF,EACA,MAAAp1D,EACA,cAAA0+I,EACA,gBAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,YAAA9jC,EACA,qBAAAwiC,EACA,kBAAAC,EACA,cAAAT,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EAAwB,GACxB,iCAAAkC,EAAmC,GACnC,gCAAAE,EAAkC,GAClC,oBAAAujB,EAAsB,GACtB,sBAAAC,EAAwB,GACxB,sBAAAC,EAAwB,GACxB,kBAAA7T,EAAoB,GACpB,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,gBAAA/c,EAAkB,GAClB,kBAAAC,EAAoB,GACpB,aAAAugB,EAAe,GACf,iBAAAb,EAAmB,GACnB,gBAAAC,EAAkB,GAClB,kBAAAC,EACA,UAAAY,EAAY,GACZ,cAAA/tB,CACF,EAAG,CACD,KAAM,CAAE,SAAA9qI,GAAU,MAAA6T,EAAO,WAAAR,EAAY,cAAAI,EAAA,EAAkBpB,GAAA,EAEvD,GAAI68D,EACF,OAAO,KAGT,MAAM1sE,GACJmN,MAAC4oJ,GAAA,CACC,MAAAz+I,EACA,cAAA0+I,EACA,gBAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,YAAA9jC,EACA,qBAAAwiC,EACA,kBAAAC,EACA,cAAAT,EACA,kBAAApqF,EACA,aAAA8gE,EACA,YAAAK,EACA,cAAAC,EACA,aAAAJ,EACA,sBAAA0B,EACA,iCAAAkC,EACA,gCAAAE,EACA,oBAAAujB,EACA,sBAAAC,EACA,sBAAAC,EACA,kBAAA7T,EACA,oBAAA8T,EACA,qBAAAM,EACA,kBAAAL,EACA,uBAAAN,EACA,yBAAAO,EACA,gBAAA/c,EACA,kBAAAC,EACA,aAAAugB,EACA,iBAAAb,EACA,gBAAAC,EACA,kBAAAC,EACA,UAAAY,EACA,cAAA/tB,CAAA,GAIJ,GAAI9qI,GACF,OACE2P,MAACG,GAAA,CAAM,KAAMuD,EAAY,aAAcI,GACrC,SAAA9C,OAACL,GAAA,CACC,KAAK,OACL,gBAAiB,GACjB,UAAU,sDACV,MAAO,CACL,MAAOylJ,GACP,SAAUD,EAAA,EAGZ,UAAAnlJ,OAACwoJ,GAAA,CAAqB,UAAU,UAC9B,UAAAxpJ,MAACoB,IAAW,sBAAU,EACtBpB,MAACsB,IAAiB,4CAAgC,GACpD,QACC,OAAI,UAAU,sCAAsC,aAAW,aAC7D,SAAAzO,EAAA,CACH,KAEJ,EAIJ,GAAIqR,IAAU,WACZ,OAAO,KAGT,MAAMm3H,GAAe,6BAA6B8qB,EAA6B,IACzEsD,GAAep5J,GACjB,CACA,MAAO+1J,GACP,SAAUD,EAAA,EAEV,CACA,MAAO9qB,GACP,UAAWA,GACX,SAAU,OAAO6qB,EAA6B,OAAOC,EAA6B,IAClF,SAAUA,EAAA,EAGd,OACEnmJ,MAAC,SACC,UAAWV,EACT,uJACAjP,GACI,sCACA,qBAEN,MAAOo5J,GACP,aAAW,aAEV,SAAA52J,EAAA,EAGP,CCrtBA,SAAS62J,GAAY,CACnB,GAAGn7J,CACL,EAAG,CACD,aAAQo7J,GAAA,CAA0B,YAAU,eAAgB,GAAGp7J,EAAO,CACxE,CAE2BmR,aAAiB,SAA4B,CACtE,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAOG,MAAC4pJ,GAAA,CAA6B,IAAA/pJ,EAAU,YAAU,uBAAwB,GAAGtR,EAAO,CAC7F,CAAC,EAED,SAASs7J,GAAkB,CACzB,GAAGt7J,CACL,EAAG,CACD,aAAQu7J,GAAA,CAA4B,YAAU,sBAAuB,GAAGv7J,EAAO,CACjF,CAEA,MAAMw7J,GAAqBrqJ,aAAiB,SAA4B,CACtE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAACgqJ,GAAA,CACC,IAAAnqJ,EACA,YAAU,uBACV,UAAWP,EACT,yJACAxN,CAAA,EAED,GAAGvD,CAAA,EAEV,CAAC,EAEK07J,GAAqBvqJ,aAAiB,SAA4B,CACtE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,cACGgqJ,GAAA,CACC,UAAA7pJ,MAAC+pJ,GAAA,EAAmB,EACpB/pJ,MAACkqJ,GAAA,CACC,IAAArqJ,EACA,YAAU,uBACV,UAAWP,EACT,kYACAxN,CAAA,EAED,GAAGvD,CAAA,EAAO,EACf,CAEJ,CAAC,EAED,SAAS47J,GAAkB,CACzB,UAAAr4J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,sBACV,UAAWV,EAAG,+CAAgDxN,CAAS,EACtE,GAAGvD,CAAA,EAEV,CAEA,SAAS67J,GAAkB,CACzB,UAAAt4J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,sBACV,UAAWV,EAAG,yDAA0DxN,CAAS,EAChF,GAAGvD,CAAA,EAEV,CAEA,MAAM87J,GAAmB3qJ,aAAiB,SAA0B,CAClE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAACsqJ,GAAA,CACC,IAAAzqJ,EACA,YAAU,qBACV,UAAWP,EAAG,wBAAyBxN,CAAS,EAC/C,GAAGvD,CAAA,EAEV,CAAC,EAEKg8J,GAAyB7qJ,aAAiB,SAAgC,CAC9E,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAACwqJ,GAAA,CACC,IAAA3qJ,EACA,YAAU,2BACV,UAAWP,EAAG,gCAAiCxN,CAAS,EACvD,GAAGvD,CAAA,EAEV,CAAC,EAEKk8J,GAAoB/qJ,aAAiB,SAA2B,CACpE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAAC0qJ,GAAA,CACC,IAAA7qJ,EACA,UAAWP,EAAGE,GAAA,EAAkB1N,CAAS,EACxC,GAAGvD,CAAA,EAEV,CAAC,EAEKo8J,GAAoBjrJ,aAAiB,SAA2B,CACpE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAAC4qJ,GAAA,CACC,IAAA/qJ,EACA,UAAWP,EAAGE,GAAe,CAAE,QAAS,UAAW,EAAG1N,CAAS,EAC9D,GAAGvD,CAAA,EAEV,CAAC,EChID,SAASs8J,GAAQ,CACf,GAAGt8J,CACL,EAAG,CACD,aAAQu8J,GAAA,CAAsB,YAAU,UAAW,GAAGv8J,EAAO,CAC/D,CAEA,MAAMw8J,GAAiBrrJ,aAAiB,SAAwB,CAC9D,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAOG,MAACgrJ,GAAA,CAAyB,IAAAnrJ,EAAU,YAAU,kBAAmB,GAAGtR,EAAO,CACpF,CAAC,EAEK08J,GAAiBvrJ,aAAiB,SAAwB,CAC9D,UAAA5N,EACA,MAAAo5J,EAAQ,SACR,WAAAjpJ,EAAa,EACb,GAAG1T,CACL,EAAGsR,EAAK,CACN,OACEG,MAACmrJ,GAAA,CACC,SAAAnrJ,MAACorJ,GAAA,CACC,IAAAvrJ,EACA,YAAU,kBACV,MAAAqrJ,EACA,WAAAjpJ,EACA,UAAW3C,EACT,seACAxN,CAAA,EAED,GAAGvD,CAAA,GAER,CAEJ,CAAC,EC1BK20B,GAAoB,uCACpBmoI,GAAiB,CAAC,MAAO,MAAO,KAAK,EAE3C,SAAS11I,GAAMznB,EAAO0nB,EAAKC,EAAK,CAC9B,MAAMnN,EAAe,OAAOxa,CAAK,EACjC,OAAK,OAAO,SAASwa,CAAY,EAG1B,KAAK,IAAI,KAAK,IAAIA,EAAckN,CAAG,EAAGC,CAAG,EAFvCD,CAGX,CAEA,SAASorB,GAAkB9yC,EAAOsa,EAAW,UAAW,CACtD,MAAM+0D,EAAW,OAAOrvE,GAAS,EAAE,EAAE,OACrC,OAAKg1B,GAAkB,KAAKq6C,CAAQ,EAGhCA,EAAS,SAAW,EACf,IAAIA,EAAS,CAAC,CAAC,GAAGA,EAAS,CAAC,CAAC,GAAGA,EAAS,CAAC,CAAC,GAAGA,EAAS,CAAC,CAAC,GAAGA,EAAS,CAAC,CAAC,GAAGA,EAAS,CAAC,CAAC,GAAG,cAE1FA,EAAS,cALP/0D,CAMX,CAEA,SAAS8iJ,GAAep9J,EAAO,CAC7B,OAAO,KAAK,MAAMynB,GAAMznB,EAAO,EAAG,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CACtE,CAEA,SAASq9J,GAAS,CAAE,EAAA19J,EAAG,EAAAuwE,EAAG,EAAA7yD,GAAK,CAC7B,MAAO,IAAI+/I,GAAez9J,CAAC,CAAC,GAAGy9J,GAAeltF,CAAC,CAAC,GAAGktF,GAAe//I,CAAC,CAAC,GAAG,aACzE,CAEA,SAASigJ,GAASt9J,EAAO,CACvB,MAAMyoC,EAAMqK,GAAkB9yC,CAAK,EACnC,MAAO,CACL,EAAG,SAASyoC,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC/B,EAAG,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAEnC,CAEA,SAAS80H,GAAS,CAAE,EAAA59J,EAAG,EAAAuwE,EAAG,EAAA7yD,GAAK,CAC7B,MAAM21B,EAAMvrB,GAAM9nB,EAAG,EAAG,GAAG,EAAI,IACzBszC,EAAQxrB,GAAMyoD,EAAG,EAAG,GAAG,EAAI,IAC3Bh9B,EAAOzrB,GAAMpK,EAAG,EAAG,GAAG,EAAI,IAC1BsK,EAAM,KAAK,IAAIqrB,EAAKC,EAAOC,CAAI,EAC/BxrB,EAAM,KAAK,IAAIsrB,EAAKC,EAAOC,CAAI,EAC/B09C,EAAQjpE,EAAMD,EACpB,IAAIshE,EAAI,EAER,OAAI4H,IAAU,IACRjpE,IAAQqrB,EACVg2C,GAAM/1C,EAAQC,GAAQ09C,EAAS,EACtBjpE,IAAQsrB,EACjB+1C,GAAK91C,EAAOF,GAAO49C,EAAQ,EAE3B5H,GAAKh2C,EAAMC,GAAS29C,EAAQ,EAE9B5H,GAAK,GACDA,EAAI,IACNA,GAAK,MAIF,CACL,EAAAA,EACA,EAAGrhE,IAAQ,EAAI,EAAKipE,EAAQjpE,EAAO,IACnC,EAAGA,EAAM,IAEb,CAEA,SAAS61I,GAAS,CAAE,EAAAx0E,EAAG,EAAA0tB,EAAG,EAAA3xE,GAAK,CAC7B,MAAM04H,GAAQ,OAAOz0E,CAAC,EAAI,IAAO,KAAO,IAClCjsC,EAAat1B,GAAMivF,EAAG,EAAG,GAAG,EAAI,IAChC12G,EAAQynB,GAAMsd,EAAG,EAAG,GAAG,EAAI,IAC3B24H,EAAS19J,EAAQ+8C,EACjBhR,EAAY2xH,GAAU,EAAI,KAAK,IAAMD,EAAM,GAAM,EAAK,CAAC,GACvD7jJ,EAAQ5Z,EAAQ09J,EACtB,IAAI1qH,EAAM,EACNC,EAAQ,EACRC,EAAO,EAEX,OAAIuqH,EAAM,IACRzqH,EAAM0qH,EACNzqH,EAAQlH,GACC0xH,EAAM,KACfzqH,EAAMjH,EACNkH,EAAQyqH,GACCD,EAAM,KACfxqH,EAAQyqH,EACRxqH,EAAOnH,GACE0xH,EAAM,KACfxqH,EAAQlH,EACRmH,EAAOwqH,GACED,EAAM,KACfzqH,EAAMjH,EACNmH,EAAOwqH,IAEP1qH,EAAM0qH,EACNxqH,EAAOnH,GAGF,CACL,GAAIiH,EAAMp5B,GAAS,IACnB,GAAIq5B,EAAQr5B,GAAS,IACrB,GAAIs5B,EAAOt5B,GAAS,IAExB,CAEA,SAAS+jJ,GAAS,CAAE,EAAAh+J,EAAG,EAAAuwE,EAAG,EAAA7yD,GAAK,CAC7B,MAAM21B,EAAMvrB,GAAM9nB,EAAG,EAAG,GAAG,EAAI,IACzBszC,EAAQxrB,GAAMyoD,EAAG,EAAG,GAAG,EAAI,IAC3Bh9B,EAAOzrB,GAAMpK,EAAG,EAAG,GAAG,EAAI,IAC1BsK,EAAM,KAAK,IAAIqrB,EAAKC,EAAOC,CAAI,EAC/BxrB,EAAM,KAAK,IAAIsrB,EAAKC,EAAOC,CAAI,EAC/B09C,EAAQjpE,EAAMD,EACpB,IAAIshE,EAAI,EACJ0tB,EAAI,EACR,MAAMknD,GAAKj2I,EAAMD,GAAO,EAExB,OAAIkpE,IAAU,IACZ8lB,EAAI9lB,GAAS,EAAI,KAAK,IAAK,EAAIgtE,EAAK,CAAC,GACjCj2I,IAAQqrB,EACVg2C,GAAM/1C,EAAQC,GAAQ09C,EAAS,EACtBjpE,IAAQsrB,EACjB+1C,GAAK91C,EAAOF,GAAO49C,EAAQ,EAE3B5H,GAAKh2C,EAAMC,GAAS29C,EAAQ,EAE9B5H,GAAK,GACDA,EAAI,IACNA,GAAK,MAIF,CACL,EAAAA,EACA,EAAG0tB,EAAI,IACP,EAAGknD,EAAI,IAEX,CAEA,SAASC,GAAS,CAAE,EAAA70E,EAAG,EAAA0tB,EAAG,EAAAknD,GAAK,CAC7B,MAAMH,GAAQ,OAAOz0E,CAAC,EAAI,IAAO,KAAO,IAClCjsC,EAAat1B,GAAMivF,EAAG,EAAG,GAAG,EAAI,IAChCz/D,EAAYxvB,GAAMm2I,EAAG,EAAG,GAAG,EAAI,IAC/BF,GAAU,EAAI,KAAK,IAAK,EAAIzmH,EAAa,CAAC,GAAK8F,EAC/ChR,EAAY2xH,GAAU,EAAI,KAAK,IAAMD,EAAM,GAAM,EAAK,CAAC,GACvD7jJ,EAAQq9B,EAAaymH,EAAS,EACpC,IAAI1qH,EAAM,EACNC,EAAQ,EACRC,EAAO,EAEX,OAAIuqH,EAAM,IACRzqH,EAAM0qH,EACNzqH,EAAQlH,GACC0xH,EAAM,KACfzqH,EAAMjH,EACNkH,EAAQyqH,GACCD,EAAM,KACfxqH,EAAQyqH,EACRxqH,EAAOnH,GACE0xH,EAAM,KACfxqH,EAAQlH,EACRmH,EAAOwqH,GACED,EAAM,KACfzqH,EAAMjH,EACNmH,EAAOwqH,IAEP1qH,EAAM0qH,EACNxqH,EAAOnH,GAGF,CACL,GAAIiH,EAAMp5B,GAAS,IACnB,GAAIq5B,EAAQr5B,GAAS,IACrB,GAAIs5B,EAAOt5B,GAAS,IAExB,CAEA,SAASkkJ,GAAoBr1H,EAAK,CAChC,MAAMI,EAAMy0H,GAAS70H,CAAG,EAClBuU,EAAM2gH,GAAS90H,CAAG,EACxB,MAAO,CACL,IAAAA,EACA,IAAK,CACH,EAAG,KAAK,MAAMmU,EAAI,CAAC,EACnB,EAAG,KAAK,MAAMA,EAAI,CAAC,EACnB,EAAG,KAAK,MAAMA,EAAI,CAAC,GAErB,IAAKugH,GAAS10H,CAAG,EAErB,CAEA,SAASk1H,GAAiB,CAAE,MAAAjwJ,EAAO,MAAA9N,EAAO,IAAA0nB,EAAK,IAAAC,EAAK,SAAAnlB,GAAY,CAC9D,OACEsQ,OAAC,SAAM,UAAU,oBACf,UAAAhB,MAAC,QAAK,UAAU,kFACb,SAAAhE,EACH,EACAgE,MAACC,GAAA,CACC,KAAK,SACL,IAAA2V,EACA,IAAAC,EACA,MAAA3nB,EACA,SAAW+V,GAAUvT,EAASilB,GAAM1R,EAAM,cAAc,MAAO2R,EAAKC,CAAG,CAAC,EACxE,UAAU,0BACZ,EACF,CAEJ,CAEA,SAASq2I,GAAY,CACnB,MAAAh+J,EAAQ,UACR,SAAAwC,EACA,QAAAq7B,EAAU,EACV,gBAAAogI,EACA,UAAAr6J,EACA,gBAAAs6J,EACA,eAAAza,EACA,aAAA0a,EAAe,QACf,UAAAC,EAAY,GACZ,YAAAC,EAAc,GACd,SAAA5yB,EAAW,GACX,GAAGprI,CACL,EAAG,CACD,MAAMwd,EAAkBi1B,GAAkB9yC,CAAK,EACzCs+J,EAAoB,OAAO,SAAS,OAAOzgI,CAAO,CAAC,EAAIpW,GAAM,OAAOoW,CAAO,EAAG,EAAG,CAAC,EAAI,EACtF,CAACixC,EAAQyvF,CAAS,EAAIl8J,WAAe,KAAK,EAC1C,CAACm8J,EAAUC,CAAW,EAAIp8J,WAAewb,CAAe,EACxD,CAAC6gJ,EAAkBC,CAAmB,EAAIt8J,WAAe,EAAK,EAC9Du8J,EAAaC,SAAa,IAAI,EAC9BC,EAAcD,SAAa,IAAI,EAErCv8J,YAAgB,IAAM,CACpBm8J,EAAY5gJ,CAAe,CAC7B,EAAG,CAACA,CAAe,CAAC,EAEpBvb,YAAgB,IAAM,CACpBq8J,EAAoB,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,UAAU,CAC9F,EAAG,EAAE,EAEL,MAAMI,EAAe7oJ,UAAc,IAAM4nJ,GAAoBjgJ,CAAe,EAAG,CAACA,CAAe,CAAC,EAC1F4/I,EAAMsB,EAAa,IAAI,EACvBC,EAAU,OAAOvB,CAAG,aAEpBwB,EAAYvpJ,cAAmBwpJ,GAAY,CAC/C,MAAMC,GAAoBrsH,GAAkBosH,EAASrhJ,CAAe,EACpE4gJ,EAAYU,EAAiB,EACzBA,KAAsBthJ,GACxBrb,IAAW28J,EAAiB,CAEhC,EAAG,CAACthJ,EAAiBrb,CAAQ,CAAC,EAExB48J,EAAsB1pJ,cAAmBK,GAAU,CACvD,MAAMoU,GAAOy0I,EAAW,SAAS,wBACjC,GAAI,CAACz0I,IAAQA,GAAK,OAAS,GAAKA,GAAK,QAAU,EAC7C,OAEF,MAAMk1I,EAAQ53I,IAAQ1R,EAAM,QAAUoU,GAAK,MAAQA,GAAK,MAAS,IAAK,EAAG,GAAG,EACtEm1I,EAAQ73I,IAAO,GAAM1R,EAAM,QAAUoU,GAAK,KAAOA,GAAK,QAAW,IAAK,EAAG,GAAG,EAClF80I,EAAU5B,GAASG,GAAS,CAAE,EAAGC,EAAK,EAAG4B,EAAO,EAAGC,CAAA,CAAO,CAAC,CAAC,CAC9D,EAAG,CAACL,EAAWxB,CAAG,CAAC,EAEb8B,EAAuB7pJ,cAAmBK,GAAU,CACxD,MAAMoU,GAAO20I,EAAY,SAAS,wBAClC,GAAI,CAAC30I,IAAQA,GAAK,OAAS,EACzB,OAEF,MAAMq1I,EAAU/3I,IAAQ1R,EAAM,QAAUoU,GAAK,MAAQA,GAAK,MAAS,IAAK,EAAG,GAAG,EAC9E80I,EAAU5B,GAASG,GAAS,CAC1B,EAAGgC,EACH,EAAGT,EAAa,IAAI,EACpB,EAAGA,EAAa,IAAI,EACrB,CAAC,CAAC,CACL,EAAG,CAACA,EAAa,IAAI,EAAGA,EAAa,IAAI,EAAGE,CAAS,CAAC,EAEhDQ,EAAuB1pJ,GAAU,CACrC6oJ,EAAW,SAAS,kBAAkB7oJ,EAAM,SAAS,EACrDqpJ,EAAoBrpJ,CAAK,CAC3B,EAEM2pJ,EAAwB3pJ,GAAU,CACtC+oJ,EAAY,SAAS,kBAAkB/oJ,EAAM,SAAS,EACtDwpJ,EAAqBxpJ,CAAK,CAC5B,EAEM4pJ,EAAmBj7C,GAAc,CACrC,GAAI,CAAC1vF,GAAkB,KAAK,OAAO0vF,GAAa,EAAE,EAAE,MAAM,EAAG,CAC3D+5C,EAAY5gJ,CAAe,EAC3B,MACF,CACAohJ,EAAUv6C,CAAS,CACrB,EAEMk7C,EAAgB,CAACl3H,EAASg8E,KAAc,CAC5Cu6C,EAAU5B,GAAS,CACjB,GAAG0B,EAAa,IAChB,CAACr2H,CAAO,EAAGg8E,EAAA,CACZ,CAAC,CACJ,EAEMm7C,EAAgB,CAACn3H,EAASg8E,KAAc,CAC5Cu6C,EAAU5B,GAASQ,GAAS,CAC1B,GAAGkB,EAAa,IAChB,CAACr2H,CAAO,EAAGg8E,EAAA,CACZ,CAAC,CAAC,CACL,EAEMo7C,EAAiB,SAAY,CACjC,GAAKpB,EAGL,GAAI,CACF,MAAMn6J,EAAS,MAAM,IAAI,OAAO,aAAa,OACzCA,GAAQ,SACV06J,EAAU16J,EAAO,OAAO,CAE5B,MAAQ,CAER,CACF,EAEA,cACGo4J,GAAA,CACC,UAAA7qJ,MAAC+qJ,GAAA,CAAe,QAAO,GACrB,SAAA/pJ,OAACvB,GAAA,CACC,KAAK,SACL,YAAU,uBACV,QAAQ,UACR,KAAK,KACL,SAAAk6H,EACA,UAAWr6H,EAAG,6EAA8ExN,CAAS,EACpG,GAAGvD,EAEJ,UAAAyR,MAAC,QACC,UAAWV,EACT,+HACA8sJ,CAAA,EAEF,MAAO,CACL,gBAAiBrgJ,EACjB,QAASwgJ,EAAcC,EAAoB,QAE7C,cAAY,SAEbF,QACE,QAAK,UAAWhtJ,EAAG,4CAA6CqyI,CAAc,EAAI,SAAA5lI,CAAA,CAAgB,EACjG,QAER,EACA/K,OAACiqJ,GAAA,CAAe,MAAOoB,EAAc,UAAU,qBAC7C,UAAArsJ,MAAC,OACC,IAAK8sJ,EACL,KAAK,SACL,SAAU,EACV,aAAW,4BACX,iBAAgB,GAAG,KAAK,MAAMG,EAAa,IAAI,CAAC,CAAC,iBAAiB,KAAK,MAAMA,EAAa,IAAI,CAAC,CAAC,eAChG,UAAU,2IACV,MAAO,CACL,gBAAiBC,EACjB,gBAAiB,4FAEnB,cAAeS,EACf,cAAgB1pJ,GAAU,CACpB6oJ,EAAW,SAAS,kBAAkB7oJ,EAAM,SAAS,GACvDqpJ,EAAoBrpJ,CAAK,CAE7B,EAEA,SAAAjE,MAAC,QACC,UAAU,2HACV,MAAO,CACL,KAAM,GAAGitJ,EAAa,IAAI,CAAC,IAC3B,IAAK,GAAG,IAAMA,EAAa,IAAI,CAAC,KAElC,cAAY,QACd,GAGFjtJ,MAAC,OACC,IAAKgtJ,EACL,KAAK,SACL,SAAU,EACV,aAAW,MACX,gBAAe,EACf,gBAAe,IACf,gBAAe,KAAK,MAAMrB,CAAG,EAC7B,UAAU,+GACV,MAAO,CACL,WAAY,oEAEd,cAAeiC,EACf,cAAgB3pJ,GAAU,CACpB+oJ,EAAY,SAAS,kBAAkB/oJ,EAAM,SAAS,GACxDwpJ,EAAqBxpJ,CAAK,CAE9B,EAEA,SAAAjE,MAAC,QACC,UAAU,mIACV,MAAO,CAAE,KAAM,GAAI2rJ,EAAM,IAAO,GAAG,IAAK,gBAAiBuB,CAAA,EACzD,cAAY,QACd,GAGDX,EACCvrJ,OAAC,OAAI,UAAU,YACb,UAAAA,OAAC,OAAI,UAAU,oHACb,UAAAhB,MAAC,QAAK,mBAAO,SACZ,QAAM,eAAK,MAAMwsJ,EAAoB,GAAG,EAAE,KAAC,GAC9C,EACAxrJ,OAAC,OAAI,UAAU,4BACb,UAAAhB,MAACC,GAAA,CACC,KAAK,SACL,IAAK,EACL,IAAK,IACL,KAAM,EACN,MAAO,KAAK,MAAMusJ,EAAoB,GAAG,EACzC,SAAWvoJ,GAAU,CACnBkoJ,IAAkBx2I,GAAM1R,EAAM,cAAc,MAAO,EAAG,GAAG,EAAI,GAAG,CAClE,EACA,UAAU,yBACV,aAAW,kBAEbjE,MAAC,QAAK,UAAU,gDAAgD,aAAC,GACnE,GACF,EACE,WAEH,OAAI,UAAU,kDACZ,SAAAqrJ,GAAe,IAAKptG,GACnBj+C,MAACP,GAAA,CAEC,KAAK,SACL,QAASu9D,IAAW/e,EAAS,YAAc,QAC3C,KAAK,KACL,UAAU,wCACV,QAAS,IAAMwuG,EAAUxuG,CAAM,EAE9B,SAAAA,CAAA,EAPIA,CAAA,CASR,EACH,EAEC+e,IAAW,MACVh8D,OAAC,OAAI,UAAU,aACb,UAAAhB,MAACC,GAAA,CACC,MAAOysJ,EACP,SAAWzoJ,GAAU0oJ,EAAY1oJ,EAAM,cAAc,KAAK,EAC1D,OAASA,GAAU4pJ,EAAgB5pJ,EAAM,cAAc,KAAK,EAC5D,UAAYA,GAAU,CAChBA,EAAM,MAAQ,SAChB4pJ,EAAgB5pJ,EAAM,cAAc,KAAK,CAE7C,EACA,UAAU,6CACV,aAAW,cAEZ2oJ,EACC5sJ,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,UACL,QAASuuJ,EACT,aAAW,yBACX,MAAM,yBAEN,eAACC,GAAA,CAAQ,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,IAEpE,MACN,EACE,KAEHjxF,IAAW,MACVh8D,OAAC,OAAI,UAAU,yBACb,UAAAhB,MAACisJ,IAAiB,MAAM,IAAI,MAAOgB,EAAa,IAAI,EAAG,IAAK,EAAG,IAAK,IAAK,SAAWr6C,GAAck7C,EAAc,IAAKl7C,CAAS,EAAG,QAChIq5C,GAAA,CAAiB,MAAM,IAAI,MAAOgB,EAAa,IAAI,EAAG,IAAK,EAAG,IAAK,IAAK,SAAWr6C,GAAck7C,EAAc,IAAKl7C,CAAS,EAAG,QAChIq5C,GAAA,CAAiB,MAAM,IAAI,MAAOgB,EAAa,IAAI,EAAG,IAAK,EAAG,IAAK,IAAK,SAAWr6C,GAAck7C,EAAc,IAAKl7C,CAAS,EAAG,GACnI,EACE,KAEH51C,IAAW,MACVh8D,OAAC,OAAI,UAAU,yBACb,UAAAhB,MAACisJ,IAAiB,MAAM,IAAI,MAAOgB,EAAa,IAAI,EAAG,IAAK,EAAG,IAAK,IAAK,SAAWr6C,GAAcm7C,EAAc,IAAKn7C,CAAS,EAAG,QAChIq5C,GAAA,CAAiB,MAAM,IAAI,MAAOgB,EAAa,IAAI,EAAG,IAAK,EAAG,IAAK,IAAK,SAAWr6C,GAAcm7C,EAAc,IAAKn7C,CAAS,EAAG,QAChIq5C,GAAA,CAAiB,MAAM,IAAI,MAAOgB,EAAa,IAAI,EAAG,IAAK,EAAG,IAAK,IAAK,SAAWr6C,GAAcm7C,EAAc,IAAKn7C,CAAS,EAAG,GACnI,EACE,MACN,GACF,CAEJ,CC9eA,SAASs7C,GAAO,CACd,GAAG3/J,CACL,EAAG,CACD,aAAQ4/J,GAAA,CAAqB,YAAU,SAAU,GAAG5/J,EAAO,CAC7D,CAEsBmR,aAAiB,SAAuB,CAC5D,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAOG,MAACouJ,GAAA,CAAwB,IAAAvuJ,EAAU,YAAU,iBAAkB,GAAGtR,EAAO,CAClF,CAAC,EAED,SAAS8/J,GAAa,CACpB,GAAG9/J,CACL,EAAG,CACD,aAAQ+/J,GAAA,CAAuB,YAAU,gBAAiB,GAAG//J,EAAO,CACtE,CAEA,MAAMggK,GAAc7uJ,aAAiB,SAAqB,CACxD,GAAGnR,CACL,EAAGsR,EAAK,CACN,OAAOG,MAACwuJ,GAAA,CAAsB,IAAA3uJ,EAAU,YAAU,eAAgB,GAAGtR,EAAO,CAC9E,CAAC,EAEKkgK,GAAgB/uJ,aAAiB,SAAuB,CAC5D,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAAC0uJ,GAAA,CACC,IAAA7uJ,EACA,YAAU,iBACV,UAAWP,EACT,yJACAxN,CAAA,EAED,GAAGvD,CAAA,EAEV,CAAC,EAEKogK,GAAgBjvJ,aAAiB,SAAuB,CAC5D,UAAA5N,EACA,SAAA+O,EACA,gBAAAE,EAAkB,GAClB,GAAGxS,CACL,EAAGsR,EAAK,CACN,cACGwuJ,GAAA,CACC,UAAAruJ,MAACyuJ,GAAA,EAAc,EACfztJ,OAAC4tJ,GAAA,CACC,IAAA/uJ,EACA,YAAU,iBACV,UAAWP,EACT,kYACAxN,CAAA,EAED,GAAGvD,EAEH,UAAAsS,EACAE,EACCC,OAACwtJ,GAAA,CACC,YAAU,eACV,UAAU,qLAEV,UAAAxuJ,MAACkB,GAAA,CAAM,UAAU,SAAS,EAC1BlB,MAAC,QAAK,UAAU,UAAU,iBAAK,KAE/B,OACN,EACF,CAEJ,CAAC,EAED,SAAS6uJ,GAAa,CACpB,UAAA/8J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,gBACV,UAAWV,EAAG,+CAAgDxN,CAAS,EACtE,GAAGvD,CAAA,EAEV,CAEA,SAASugK,GAAa,CACpB,UAAAh9J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC,OACC,YAAU,gBACV,UAAWV,EAAG,yDAA0DxN,CAAS,EAChF,GAAGvD,CAAA,EAEV,CAEA,MAAMwgK,GAAcrvJ,aAAiB,SAAqB,CACxD,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAACgvJ,GAAA,CACC,IAAAnvJ,EACA,YAAU,eACV,UAAWP,EAAG,wBAAyBxN,CAAS,EAC/C,GAAGvD,CAAA,EAEV,CAAC,EAEK0gK,GAAoBvvJ,aAAiB,SAA2B,CACpE,UAAA5N,EACA,GAAGvD,CACL,EAAGsR,EAAK,CACN,OACEG,MAACkvJ,GAAA,CACC,IAAArvJ,EACA,YAAU,qBACV,UAAWP,EAAG,gCAAiCxN,CAAS,EACvD,GAAGvD,CAAA,EAEV,CAAC,EC3HD,SAAS4gK,GAAO,CACd,GAAG5gK,CACL,EAAG,CACD,aAAQ6gK,GAAA,CAAqB,YAAU,SAAU,GAAG7gK,EAAO,CAC7D,CAQA,SAAS8gK,GAAY,CACnB,GAAG9gK,CACL,EAAG,CACD,aAAQ+gK,GAAA,CAAsB,YAAU,eAAgB,GAAG/gK,EAAO,CACpE,CAEA,MAAMghK,GAAgB7vJ,aAAiB,SAAuB,CAC5D,UAAA5N,EACA,KAAA6N,EAAO,UACP,SAAA6vJ,EAAW,GACX,SAAA3uJ,EACA,GAAGtS,CACL,EAAGsR,EAAK,CACN,OACEmB,OAACyuJ,GAAA,CACC,IAAA5vJ,EACA,YAAU,iBACV,YAAWF,EACX,UAAWL,EACT,0eACAxN,CAAA,EAED,GAAGvD,EAEH,UAAAsS,EACA2uJ,EACCxvJ,MAAC0vJ,GAAA,CAAqB,QAAO,GAC3B,SAAA1vJ,MAAC61H,GAAA,CAAgB,UAAU,oBAAoB,EACjD,EACE,OAGV,CAAC,EAED,SAAS85B,GAAc,CACrB,UAAA79J,EACA,SAAA+O,EACA,SAAAkT,EAAW,SACX,GAAGxlB,CACL,EAAG,CACD,OACEyR,MAAC4vJ,GAAA,CACC,SAAA5uJ,OAAC6uJ,GAAA,CACC,YAAU,iBACV,UAAWvwJ,EACT,8jBACAyU,IAAa,UACX,kIACFjiB,CAAA,EAEF,SAAAiiB,EACC,GAAGxlB,EAEJ,UAAAyR,MAAC8vJ,GAAA,EAAqB,EACtB9vJ,MAAC+vJ,GAAA,CACC,UAAWzwJ,EACT,MACAyU,IAAa,UACX,uGAGH,SAAAlT,CAAA,SAEFmvJ,GAAA,EAAuB,KAE5B,CAEJ,CAeA,SAASC,GAAW,CAClB,UAAAn+J,EACA,SAAA+O,EACA,KAAAqvJ,EAAO,KACP,GAAG3hK,CACL,EAAG,CACD,OACEyS,OAACmvJ,GAAA,CACC,YAAU,cACV,UAAW7wJ,EACT,oTACAxN,CAAA,EAED,GAAGvD,EAEJ,UAAAyR,MAAC,QAAK,UAAU,6DACd,SAAAA,MAACowJ,GAAA,CACC,SAAApwJ,MAACqwJ,GAAA,CAAU,UAAU,SAAS,EAChC,EACF,EACCH,QACE,QAAK,UAAU,2EAA2E,cAAY,OACpG,WACH,EACE,KACJlwJ,MAACswJ,GAAA,CAA0B,SAAAzvJ,CAAA,CAAS,IAG1C,CAeA,SAASivJ,GAAqB,CAC5B,UAAAh+J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACuwJ,GAAA,CACC,YAAU,0BACV,UAAWjxJ,EAAG,uDAAwDxN,CAAS,EAC9E,GAAGvD,EAEJ,SAAAyR,MAACwwJ,GAAA,CAAc,UAAU,SAAS,GAGxC,CAEA,SAASR,GAAuB,CAC9B,UAAAl+J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACywJ,GAAA,CACC,YAAU,4BACV,UAAWnxJ,EAAG,uDAAwDxN,CAAS,EAC9E,GAAGvD,EAEJ,SAAAyR,MAAC61H,GAAA,CAAgB,UAAU,SAAS,GAG1C,CCtKA,SAAS66B,GAAK,CACZ,UAAA5+J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC2wJ,GAAA,CACC,YAAU,OACV,UAAWrxJ,EAAG,sBAAuBxN,CAAS,EAC7C,GAAGvD,CAAA,EAGV,CAEA,SAASqiK,GAAS,CAChB,UAAA9+J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC6wJ,GAAA,CACC,YAAU,YACV,UAAWvxJ,EACT,sGACAxN,CAAA,EAED,GAAGvD,CAAA,EAGV,CAEA,SAASuiK,GAAY,CACnB,UAAAh/J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC+wJ,GAAA,CACC,YAAU,eACV,UAAWzxJ,EACT,8eACAxN,CAAA,EAED,GAAGvD,CAAA,EAGV,CAEA,SAASyiK,GAAY,CACnB,UAAAl/J,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACixJ,GAAA,CACC,YAAU,eACV,UAAW3xJ,EAAG,sBAAuBxN,CAAS,EAC7C,GAAGvD,CAAA,EAGV,CClDO,MAAM2iK,GAAuB,OAAO,OAAO,CAChD,OAAO,OAAO,CAAE,MAAOpuI,GAAiB,MAAO,MAAO,QAAS,MAAO,wBAAyB,KAAMquI,EAAA,CAAQ,EAC7G,OAAO,OAAO,CAAE,MAAOruI,GAAiB,SAAU,MAAO,WAAY,MAAO,kDAAmD,KAAMsuI,EAAA,CAAY,EACjJ,OAAO,OAAO,CAAE,MAAOtuI,GAAiB,YAAa,MAAO,QAAS,MAAO,4CAA6C,KAAMuuI,EAAA,CAAK,EACpI,OAAO,OAAO,CAAE,MAAOvuI,GAAiB,aAAc,MAAO,SAAU,MAAO,mCAAoC,KAAMwuI,EAAA,CAAQ,EAChI,OAAO,OAAO,CAAE,MAAOxuI,GAAiB,qBAAsB,MAAO,QAAS,MAAO,0CAA2C,KAAMyuI,EAAA,CAAc,EACpJ,OAAO,OAAO,CAAE,MAAOzuI,GAAiB,SAAU,MAAO,OAAQ,MAAO,sBAAuB,KAAM0uI,EAAA,CAAU,EAC/G,OAAO,OAAO,CAAE,MAAO1uI,GAAiB,UAAW,MAAO,OAAQ,MAAO,iBAAkB,KAAM2uI,EAAA,CAAQ,CAC3G,CAAC,EAEM,SAASC,GAA0BxjK,EAAO,CAC/C,OAAOgjK,GAAqB,KAAMjzG,GAAWA,EAAO,QAAU/vD,CAAK,GAAKgjK,GAAqB,CAAC,CAChG,CCvBO,SAASS,GAA2B,CAAE,UAAA7/J,EAAW,YAAA8/J,EAAc,MAAQ,CAC5E,OACE5wJ,OAAC,OAAI,UAAAlP,EAAsB,QAAQ,YAAY,KAAK,OAAO,cAAY,OAAO,UAAU,QACtF,UAAAkO,MAAC,QACC,EAAE,sCACF,OAAO,eACP,YAAA4xJ,EACA,eAAe,UAEjB5xJ,MAAC,QACC,EAAE,4BACF,OAAO,eACP,YAAA4xJ,EACA,cAAc,QACd,eAAe,SACjB,EACF,CAEJ,CAEO,SAASC,GAA0B,CAAE,UAAA//J,EAAW,YAAA8/J,EAAc,MAAQ,CAC3E,OACE5wJ,OAAC,OAAI,UAAAlP,EAAsB,QAAQ,YAAY,KAAK,OAAO,cAAY,OAAO,UAAU,QACtF,UAAAkO,MAAC,QACC,EAAE,0DACF,OAAO,eACP,YAAA4xJ,EACA,eAAe,UAEjB5xJ,MAAC,QACC,EAAE,sCACF,OAAO,eACP,YAAA4xJ,EACA,cAAc,QACd,eAAe,SACjB,EACF,CAEJ,CCoEA,MAAME,GAA0B,CAC9B,CAAE,MAAO,QAAS,MAAO,SACzB,CAAE,MAAO,SAAU,MAAO,UAC1B,CAAE,MAAO,SAAU,MAAO,UAC1B,CAAE,MAAO,cAAe,MAAO,cACjC,EAEMC,GAA0B,CAC9B,CAAE,MAAOr+I,GAAkB,aAAc,MAAO,eAAgB,MAAO,yCAA0C,KAAMi+I,EAAA,EACvH,CAAE,MAAOj+I,GAAkB,YAAa,MAAO,cAAe,MAAO,wCAAyC,KAAMm+I,EAAA,CACtH,EAEMG,GAAqB,CACzB,CAAE,MAAO76H,GAAkB,OAAQ,MAAO,UAC1C,CAAE,MAAOA,GAAkB,MAAO,MAAO,SACzC,CAAE,MAAOA,GAAkB,KAAM,MAAO,OAC1C,EAEM86H,GAAwB,CAC5B,CAAE,MAAO,IAAK,MAAO,KACrB,CAAE,MAAO,IAAK,MAAO,KACrB,CAAE,MAAO,IAAK,MAAO,KACrB,CAAE,MAAO,SAAU,MAAO,SAC5B,EAEMC,GAAwB,CAC5B,CAAE,MAAO,cAAe,MAAO,eAC/B,CAAE,MAAO,OAAQ,MAAO,QACxB,CAAE,MAAO,QAAS,MAAO,QAC3B,EAEMnV,GAAoBrlB,GACpBy6B,GAAuBr6B,GACvB0e,GAAsBxe,GACtBo6B,GAAyB/5B,GACzBg6B,GAAyB,IACzBC,GAAe,OAAO,OAAO,CAAC,IAAK,IAAK,GAAG,CAAC,EAC5CC,GAAsB,OAAO,OAAO,CACxC,OAAO,OAAO,CAAE,GAAI,UAAW,MAAO,UAAW,aAAcpvI,GAAgB,eAAgB,EAAG,iBAAkB,KAAM,EAC1H,OAAO,OAAO,CAAE,GAAI,UAAW,MAAO,UAAW,aAAcA,GAAgB,eAAgB,GAAK,iBAAkB,KAAM,EAC5H,OAAO,OAAO,CAAE,GAAI,OAAQ,MAAO,OAAQ,aAAcA,GAAgB,eAAgB,IAAM,iBAAkB,KAAM,EACvH,OAAO,OAAO,CAAE,GAAI,aAAc,MAAO,aAAc,aAAcA,GAAgB,eAAgB,EAAG,iBAAkB,EAAG,CAC/H,CAAC,EAED,SAASxN,GAAMznB,EAAO0nB,EAAKC,EAAK,CAC9B,OAAO,KAAK,IAAI,KAAK,IAAI3nB,EAAO0nB,CAAG,EAAGC,CAAG,CAC3C,CAEA,SAASonI,GAAa/uJ,EAAOgvJ,EAAS,EAAG,CACvC,MAAMx0I,EAAe,OAAOxa,CAAK,EACjC,OAAK,OAAO,SAASwa,CAAY,EAG1BA,EAAa,QAAQw0I,CAAM,EAFzB,GAGX,CAEA,SAASsV,GAAStkK,EAAO,CACvB,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAK,OAAO,SAASwa,CAAY,EAG7B,KAAK,IAAIA,CAAY,GAAK,IACrBA,EAAa,QAAQ,CAAC,EAE3B,KAAK,IAAIA,CAAY,GAAK,GACrBA,EAAa,QAAQ,CAAC,EAExBA,EAAa,QAAQ,CAAC,EARpB,GASX,CAEA,SAAS+pJ,GAAM,CAAE,MAAAz2J,EAAO,MAAA9N,EAAO,SAAA0qI,EAAU,SAAA/3H,EAAU,UAAA/O,EAAW,iBAAA0mI,GAAoB,CAChF,OACEx4H,MAACg5H,GAAA,CACC,MAAAh9H,EACA,MAAA9N,EACA,SAAA0qI,EACA,UAAA9mI,EACA,iBAAA0mI,EAEC,SAAA33H,CAAA,EAGP,CAEA,SAAS6xJ,GAAQ,CAAE,MAAAn6B,EAAO,MAAArqI,EAAO,SAAA2S,EAAU,GAAGtS,GAAS,CACrD,aACG+pI,GAAA,CAAiB,MAAApqI,EAAc,MAAAqqI,EAAe,GAAGhqI,EAC/C,SAAAsS,EACH,CAEJ,CAEA,SAAS8xJ,GAAkB,CAAE,MAAAp6B,EAAO,SAAAK,EAAW,KAAM,SAAA/3H,EAAU,UAAA/O,EAAW,mBAAA+mI,EAAqB,IAAQ,CACrG,OACE74H,MAAC24H,GAAA,CACC,MAAAJ,EACA,SAAAK,EACA,UAAA9mI,EACA,mBAAA+mI,EAEC,SAAAh4H,CAAA,EAGP,CAEA,SAAS+xJ,GAAmB,CAAE,MAAAr6B,EAAO,SAAA13H,EAAU,UAAA/O,EAAW,iBAAA0mI,GAAoB,CAC5E,OACEx4H,MAAC84H,GAAA,CACC,MAAAP,EACA,UAAAzmI,EACA,iBAAA0mI,EAEC,SAAA33H,CAAA,EAGP,CAEA,SAASgyJ,GAAoBhyJ,EAAU,CACrC,GAAI,CACF,MAAM6I,EAAQopJ,WAAS,KAAKjyJ,CAAQ,EACpC,OAAOkyJ,iBAAerpJ,CAAK,GAAKA,EAAM,OAASspJ,GAActpJ,EAAM,MAAQ,IAC7E,MAAQ,CACN,OAAO,IACT,CACF,CAEA,SAASupJ,GAAY,CAAE,MAAAj3J,EAAO,MAAA9N,EAAO,SAAA2S,EAAU,cAAA64H,EAAe,gBAAAa,GAAmB,CAC/E,MAAM24B,EAAmBL,GAAoBhyJ,CAAQ,EAC/C82I,EAAcje,IAClBw5B,GAAkB,SAAYtgD,GAAc,CAC1CsgD,EAAiB,SAAS/5B,GAA0BvmB,EAAW,CAC7D,SAAUsgD,EAAiB,MAC3B,IAAKA,EAAiB,IACtB,IAAKA,EAAiB,IACvB,CAAC,CACJ,EAAI,MAGN,OACElzJ,MAACs6H,GAAA,CACC,MAAAt+H,EACA,MAAA9N,EACA,cAAeypJ,EACf,gBAAiBA,EAAc,CAC7B,UAAW,GAAG37I,CAAK,SACnB,GAAGu+H,CAAA,EACDA,EAEH,SAAA15H,CAAA,EAGP,CAEA,SAASsyJ,GAAe,CAAE,MAAAn3J,EAAO,QAAA4+H,EAAS,SAAAlqI,EAAU,SAAAipI,EAAW,GAAO,YAAAe,GAAe,CACnF,OACE16H,MAAC86H,GAAA,CACC,MAAA9+H,EACA,QAAA4+H,EACA,gBAAiBlqI,EACjB,SAAAipI,EACA,YAAAe,CAAA,EAGN,CAEA,SAASs4B,GAAY,CAAE,MAAA9kK,EAAO,IAAA0nB,EAAK,IAAAC,EAAK,KAAA4J,EAAO,IAAM,SAAA/uB,GAAY,CAC/D,MAAMgY,EAAe,OAAO,SAAS,OAAOxa,CAAK,CAAC,EAAI,OAAOA,CAAK,EAAI0nB,EAChE,CAACokH,EAAYC,CAAa,EAAI55D,WAAS33D,CAAY,EACnD0qJ,EAAiB7rF,SAAO,IAAI,EAElCjF,YAAU,IAAM,CACd23D,EAAcvxH,CAAY,CAC5B,EAAG,CAACA,CAAY,CAAC,EAEjB45D,YAAU,IAAM,IAAM,CAChB8wF,EAAe,SACjB,aAAaA,EAAe,OAAO,CAEvC,EAAG,EAAE,EAEL,MAAMC,EAAoBzgD,GAAc,CACtC,MAAM0gD,EAAmB,OAAO1gD,CAAS,EACzC,OAAO,OAAO,SAAS0gD,CAAgB,EAAI39I,GAAM29I,EAAkB19I,EAAKC,CAAG,EAAInN,CACjF,EAEMivI,EAAe/kC,GAAc,CACjC,MAAM2gD,EAAoBF,EAAiBzgD,CAAS,EAChDwgD,EAAe,SACjB,aAAaA,EAAe,OAAO,EAEjC,KAAK,IAAIG,EAAoB7qJ,CAAY,EAAI,MAC/ChY,EAAS6iK,CAAiB,CAE9B,EAEMC,EAAuB5gD,GAAc,CACzC,MAAM2gD,EAAoBF,EAAiBzgD,CAAS,EACpDqnB,EAAcs5B,CAAiB,EAC3BH,EAAe,SACjB,aAAaA,EAAe,OAAO,EAErCA,EAAe,QAAU,WAAW,IAAM,CACxCzb,EAAY4b,CAAiB,CAC/B,EAAGlB,EAAsB,CAC3B,EAEA,OACEryJ,MAAC43I,GAAA,CACC,MAAO,CAAC5d,CAAU,EAClB,IAAApkH,EACA,IAAAC,EACA,KAAA4J,EACA,cAAgBmzF,GAAc4gD,EAAoB5gD,EAAU,CAAC,GAAKonB,CAAU,EAC5E,cAAgBpnB,GAAc+kC,EAAY/kC,EAAU,CAAC,GAAKonB,CAAU,EACpE,UAAWo4B,EAAA,EAGjB,CAEA,SAASqB,GAAmB,CAC1B,MAAAvlK,EACA,IAAA0nB,EAAM,EACN,IAAAC,EAAM,EACN,OAAAqnI,EAAS,EACT,SAAAvjB,EAAW,GACX,UAAAC,EACA,SAAAlpI,CACF,EAAG,CACD,MAAMgY,EAAe,OAAO,SAAS,OAAOxa,CAAK,CAAC,EAAI,OAAOA,CAAK,EAAI0nB,EAChE89I,EAAiBzW,GAAav0I,EAAcw0I,CAAM,EAClDvF,EAAe/kC,GAAc,CACjC,MAAMj7G,EAAgBwhI,GAA0BvmB,EAAW,CACzD,SAAUlqG,EACV,IAAAkN,EACA,IAAAC,CAAA,CACD,EACG,KAAK,IAAIle,EAAgB+Q,CAAY,EAAI,MAC3ChY,IAAWiH,CAAa,CAE5B,EAEA,OACEqI,MAACy5H,GAAA,CACC,MAAOi6B,EACP,cAAe/b,EACf,SAAAhe,EACA,UAAAC,EACA,UAAU,UACV,UAAU,+KAGhB,CAEA,SAAS+5B,GAAgB,CACvB,MAAA33J,EACA,MAAAygB,EACA,QAAAsP,EACA,UAAAsD,EACA,IAAAzZ,EAAM,EACN,IAAAC,EAAM,EACN,OAAAqnI,EAAS,EACT,SAAAvjB,EAAW,GACX,cAAAi6B,EACA,gBAAAzH,EACA,kBAAA9U,CACF,EAAG,CACD,OACEr2I,OAAC,OACC,UAAW1B,EACT,iIACAq6H,GAAY,cAGd,UAAA35H,MAAC6zJ,GAAA,CACC,MAAOp3I,EACP,QAAAsP,EACA,YAAW,GACX,UAAW,GACX,SAAA4tG,EACA,SAAUi6B,EACV,gBAAAzH,EACA,UAAU,wFACV,gBAAgB,WAChB,MAAO,GAAGnwJ,CAAK,cACf,aAAY,GAAGA,CAAK,gBAEtBgE,MAACyzJ,GAAA,CACC,MAAOpkI,EACP,IAAAzZ,EACA,IAAAC,EACA,OAAAqnI,EACA,SAAAvjB,EACA,UAAW,GAAG39H,CAAK,kBACnB,SAAUq7I,CAAA,GAEZr3I,MAAC,QAAK,UAAU,uDAAuD,cAAE,IAG/E,CAEA,SAAS8zJ,GAAoB,CAC3B,MAAA93J,EACA,MAAAygB,EACA,UAAA4S,EACA,QAAAtD,EACA,cAAA6nI,EACA,kBAAAvc,EACA,gBAAA8U,CACF,EAAG,CACD,OACEnsJ,MAACg5H,GAAA,CACC,MAAAh9H,EACA,SACEgE,MAAC2zJ,GAAA,CACC,MAAA33J,EACA,MAAAygB,EACA,QAAAsP,EACA,UAAAsD,EACA,cAAAukI,EACA,gBAAAzH,EACA,kBAAA9U,CAAA,GAGJ,iBAAiB,UAGvB,CAEA,SAASwc,GAAW,CAClB,MAAA3lK,EACA,SAAAwC,EACA,UAAAoB,EACA,gBAAAs6J,EACA,eAAAza,EACA,UAAA2a,EAAY,GACZ,SAAA3yB,EAAW,GACX,GAAGprI,CACL,EAAG,CACD,OACEyR,MAACksJ,GAAA,CACC,MAAAh+J,EACA,SAAAwC,EACA,UAAW4O,EACTk3I,GACA,qCACA1kJ,CAAA,EAEF,gBAAiBwN,EAAG,WAAY8sJ,CAAe,EAC/C,eAAAza,EACA,aAAa,MACb,UAAA2a,EACA,SAAA3yB,EACC,GAAGprI,CAAA,EAGV,CAEA,SAASwlK,GAAW,CAAE,MAAA/3J,EAAO,MAAA9N,EAAO,SAAAwC,EAAU,UAAAoB,EAAW,eAAAmnI,GAAkB,CACzE,OACEj5H,MAACg5H,GAAA,CACC,MAAAh9H,EACA,SACEgE,MAAC6zJ,GAAA,CACC,MAAA3lK,EACA,SAAAwC,CAAA,GAGJ,UAAAoB,EACA,eAAAmnI,CAAA,EAGN,CAEA,SAAS1hG,GAAaxhB,EAAQ/hB,EAAM,CAClC,OAAOA,EAAK,OAAO,CAAC9F,EAAOiB,IACzBjB,GAAS,OAAOA,GAAU,SAAWA,EAAMiB,CAAG,EAAI,OACjD4mB,CAAM,CACX,CAEA,SAASyhB,GAAa3pB,EAAQ7Z,EAAM9F,EAAO,CACzC,IAAIwxB,EAAS7R,EACb,QAAShY,EAAQ,EAAGA,EAAQ7B,EAAK,OAAS,EAAG6B,GAAS,EAAG,CACvD,MAAM1G,EAAM6E,EAAK6B,CAAK,GAClB,CAAC6pB,EAAOvwB,CAAG,GAAK,OAAOuwB,EAAOvwB,CAAG,GAAM,UAAY,MAAM,QAAQuwB,EAAOvwB,CAAG,CAAC,KAC9EuwB,EAAOvwB,CAAG,EAAI,IAEhBuwB,EAASA,EAAOvwB,CAAG,CACrB,CACAuwB,EAAO1rB,EAAKA,EAAK,OAAS,CAAC,CAAC,EAAI9F,CAClC,CAEA,SAAS8lK,GAAgB/7H,EAAa,GAAI,CACxC,MAAO,CACL,MAAO,KAAK,MAAM,KAAK,UAAUA,EAAW,OAAS,EAAE,CAAC,EACxD,KAAM,KAAK,MAAM,KAAK,UAAUA,EAAW,MAAQ,EAAE,CAAC,EAE1D,CAEA,SAASg8H,GAAqBj0H,EAAgB,GAAIk0H,EAA0B/8H,GAAkB,MAAO,CACnG,OAAI6I,EAAc,YAAc7I,GAAkB,KACzCA,GAAkB,KAEvB6I,EAAc,YAAc7I,GAAkB,MACzCA,GAAkB,MAEpB+8H,IAA4B/8H,GAAkB,KACjDA,GAAkB,KAClBA,GAAkB,KACxB,CAEA,SAASg9H,GAAoBn0H,EAAgB,GAAIhsC,EAAO,GAAIyxB,EAAO0R,GAAkB,MAAO,CAC1F,OAAOI,GAAayI,EAAc,aAAava,CAAI,EAAGzxB,CAAI,GACxDujC,GAAayI,EAAehsC,CAAI,GAChC,SACJ,CAEA,SAASogK,GAAwB,CAAE,MAAAp4J,EAAO,KAAAypB,GAAQ,CAChD,MAAM4uI,EAAa5uI,IAAS0R,GAAkB,KACxCm9H,EAAWD,EAAaE,GAAOC,GAC/BC,EAAYJ,EAAa,OAAS,QACxC,cACG,QAAK,UAAU,yDAAyD,MAAO,YAAYI,CAAS,cACnG,UAAAz0J,MAAC,QAAK,UAAU,mBAAoB,SAAAhE,EAAM,QACzCs4J,EAAA,CAAS,UAAU,6CAA6C,YAAa,KAAM,cAAY,OAAO,QACtG,QAAK,UAAU,UAAW,qBAAYG,CAAS,cAAc,GAChE,CAEJ,CAEA,SAASC,GAAe,CACtB,MAAA14J,EACA,KAAAhI,EACA,cAAAgsC,EACA,SAAAtvC,EACA,wBAAAwjK,EAA0B/8H,GAAkB,KAC9C,EAAG,CACD,MAAMa,EAAYgI,EAAc,WAAa7I,GAAkB,OACzD1R,EAAOwuI,GAAqBj0H,EAAek0H,CAAuB,EACxE,OAAIl8H,IAAcb,GAAkB,OAEhCn3B,MAAC+zJ,GAAA,CACC,MAAO/zJ,MAACo0J,GAAA,CAAwB,MAAAp4J,EAAc,KAAAypB,CAAA,CAAY,EAC1D,MAAO0uI,GAAoBn0H,EAAehsC,EAAMyxB,CAAI,EACpD,SAAWmtF,GAAcliH,EAASsD,EAAM4+G,EAAWntF,CAAI,IAM3DzlB,MAAC+zJ,GAAA,CACC,MAAA/3J,EACA,MAAOm4J,GAAoBn0H,EAAehsC,EAAMyxB,CAAI,EACpD,SAAWmtF,GAAcliH,EAASsD,EAAM4+G,CAAS,GAGvD,CAEA,SAAS+hD,GAAkBxoI,EAAY,GAAI,CAIzC,OAHe,MAAM,QAAQA,EAAU,UAAU,GAAKA,EAAU,WAAW,OACvEA,EAAU,WACV,CAACA,EAAU,cAAgB,SAAS,GAC1B,MAAM,EAAG+J,EAAqB,CAC9C,CAEA,SAASk+B,GAAkBx9C,EAAU,CACnC,OAAO,KAAK,UAAU4nB,GAAuB5nB,CAAQ,CAAC,CACxD,CAEA,SAASg+I,GAAgB,CAAE,OAAA3yH,EAAQ,SAAAvxC,EAAU,YAAAmkK,EAAc,IAAS,CAClE,MAAMC,EAAiB7yH,EAAO,OAASA,EAAS,CAAC,SAAS,EACpD8yH,EAAgBC,GAAe,CACnC,MAAMC,EAAgBD,EAAW,OAAO,OAAO,EAAE,MAAM,EAAG9+H,EAAqB,EAC/ExlC,EAASukK,EAAc,OAASA,EAAgB,CAACH,EAAe,CAAC,GAAK,SAAS,CAAC,CAClF,EAEA,OACE9zJ,OAAC,OACC,UAAU,uCACV,2BAAyB,OAExB,UAAA8zJ,EAAe,IAAI,CAACr4I,EAAO5mB,IAC1BmL,OAAC,OAEC,UAAW1B,EACT,oCACA,CAACu1J,GAAeh/J,EAAQ,GAAK,wBAG/B,UAAAmK,MAAC6zJ,GAAA,CACC,MAAOp3I,EACP,gBAAgB,WAChB,SAAW8yB,GAAc,CACvB,MAAMylH,EAAa,CAAC,GAAGF,CAAc,EACrCE,EAAWn/J,CAAK,EAAI05C,EACpBwlH,EAAaC,CAAU,CACzB,EACA,aAAY,cAAcn/J,EAAQ,CAAC,GACnC,MAAO,cAAcA,EAAQ,CAAC,KAAK4mB,CAAK,KAEzCq4I,EAAe,OAAS,EACvB90J,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,UACL,UAAU,4OACV,QAAS,IAAMs1J,EAAaD,EAAe,OAAO,CAAC36H,EAAG1D,IAAeA,IAAe5gC,CAAK,CAAC,EAC1F,aAAY,gBAAgBA,EAAQ,CAAC,GACrC,MAAO,gBAAgBA,EAAQ,CAAC,GAEhC,eAACi0H,GAAA,CAAE,UAAU,cAAc,YAAa,KAAM,cAAY,OAAO,IAEjE,OA7BCj0H,CAAA,CA+BR,EACAi/J,EAAe,OAAS5+H,GACvBl2B,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,UACL,UAAU,oEACV,QAAS,IAAMs1J,EAAa,CAAC,GAAGD,EAAgBA,EAAeA,EAAe,OAAS,CAAC,GAAK,SAAS,CAAC,EACvG,aAAW,iBACX,MAAM,iBAEN,eAAC71E,GAAA,CAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,IAEjE,OAGV,CAEA,SAASi2E,GAAiB,CAAE,MAAAhnK,EAAO,SAAAwC,EAAU,QAAAgW,GAAW,CAEtD,MAAMyuJ,EAAkB,UADJ,KAAK,IAAI,EAAG,KAAK,IAAIzuJ,EAAQ,OAAQA,EAAQ,OAAS,EAAI,EAAI,CAAC,CAAC,CACvC,oBAC7C,OACE1G,MAACy+G,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,MAAAvwH,EACA,cAAgB0kH,GAAc,CACvBA,GAGLliH,EAASkiH,CAAS,CACpB,EACA,UAAU,kDACV,MAAO,CAAE,oBAAqBuiD,CAAA,EAE7B,SAAAzuJ,EAAQ,IAAKu3C,GAAW,CACvB,MAAMmzF,EAAOnzF,EAAO,KACd07E,EAAW17E,EAAO,WAAa,GACrC,OACEj9C,OAAC29G,GAAA,CAEC,MAAO1gE,EAAO,MACd,SAAA07E,EACA,UAAWr6H,EAAG,0CAA2C84H,EAAiC,EAC1F,MAAOn6E,EAAO,OAASA,EAAO,MAC9B,aAAYA,EAAO,MAElB,UAAAmzF,EAAOpxI,MAACoxI,GAAK,UAAU,SAAS,YAAa,EAAG,cAAY,OAAO,EAAK,KACzEpxI,MAAC,QAAK,UAAU,WAAY,WAAO,MAAM,IARpCi+C,EAAO,MAWlB,CAAC,GAGP,CAEO,SAASm3G,GAAa,CAAE,OAAA74H,EAAS,MAAQ,CAC9C,OAAKA,EAUHv8B,MAAC,QACC,UAAU,8GACV,MAAO,CAAE,WAAYu8B,EAAO,QAAQ,YACpC,cAAY,OAEZ,SAAAv8B,MAAC,QACC,UAAU,iCACV,MAAO,CAAE,gBAAiBu8B,EAAO,QAAQ,YAAa,QAAS,GAAI,EACrE,GAhBAv8B,MAAC,QACC,UAAU,4DACV,cAAY,QAiBpB,CAEO,SAASq1J,IAAgC,CAC9C,KAAM,CAACC,EAAuBC,CAAwB,EAAIl1F,WAAS,IAC7D,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WACzDhkC,GAEFG,GAA2B,CAChC,YAAa,OAAO,WAAW,8BAA8B,EAAE,UAAY,GAC5E,CACF,EAED8lC,mBAAU,IAAM,CACd,GAAI,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WAChE,OAGF,MAAMkzF,EAAmB,OAAO,WAAW,8BAA8B,EACnEC,EAA4B,IAAM,CACtCF,EAAyB/4H,GAA2B,CAClD,YAAag5H,EAAiB,UAAY,GAC3C,CAAC,CACJ,EAEA,OAAAC,EAAA,EACAD,EAAiB,mBAAmB,SAAUC,CAAyB,EAChE,IAAM,CACXD,EAAiB,sBAAsB,SAAUC,CAAyB,CAC5E,CACF,EAAG,EAAE,EAEEH,CACT,CAEA,SAASI,GAAoBr3D,EAASi3D,EAAuB,CAC3D,MAAMK,EAAqBt3D,EAAQ,UAAW9hE,GAAWA,EAAO,KAAO+4H,CAAqB,EAC5F,OAAIK,GAAsB,EACjBt3D,EAEF,CACLA,EAAQs3D,CAAkB,EAC1B,GAAGt3D,EAAQ,MAAM,EAAGs3D,CAAkB,EACtC,GAAGt3D,EAAQ,MAAMs3D,EAAqB,CAAC,EAE3C,CAEA,SAASC,GAAyBC,EAAcC,EAAe91H,EAAe,CAC5E,MAAM+1H,EAAeF,EAAa,KAAMt5H,GAAWA,EAAO,KAAOu5H,CAAa,GAAK,KACnF,GAAIC,EACF,OAAOA,EAET,MAAMC,EAAgC5hG,GAAkBp0B,CAAa,EACrE,OAAO61H,EAAa,KAAMt5H,GAAW63B,GAAkB73B,EAAO,QAAQ,IAAMy5H,CAA6B,GAAK,IAChH,CAEA,SAASC,GAA+B15H,EAAQyD,EAAe,CAC7D,MAAO,CAACzD,GAAU63B,GAAkB73B,EAAO,QAAQ,IAAM63B,GAAkBp0B,CAAa,CAC1F,CAEA,SAASk2H,GAAoB35H,EAAQ,CACnC,OAAO,OAAOA,GAAQ,IAAM,EAAE,EAAE,WAAW,SAAS,CACtD,CAEA,SAAS45H,GAA6B55H,EAAQ,CAC5C,MAAMmD,EAAWD,GAAuBlD,GAAQ,UAAYA,GAAQ,EAAE,EACtE,MAAO,GACL25H,GAAoB35H,CAAM,GAC1BmD,GACA00B,GAAkB73B,EAAO,QAAQ,IAAM63B,GAAkBt0B,GAAyBJ,CAAQ,CAAC,EAE/F,CAEA,SAAS02H,GAAqB75H,EAAQ,CACpC,OAAO25H,GAAoB35H,CAAM,CACnC,CAEA,SAAS85H,GAAqB95H,EAAQ,CACpC,OAAO25H,GAAoB35H,CAAM,CACnC,CAEA,SAAS+5H,GAAgCT,EAAe,GAAI,CAC1D,GAAI,CAAC,MAAM,QAAQA,CAAY,GAAK,CAACA,EAAa,OAChD,MAAO,GAET,GAAIA,EAAa,SAAW15H,GAAc,OACxC,MAAO,GAET,QAAStmC,EAAQ,EAAGA,EAAQsmC,GAAc,OAAQtmC,GAAS,EAAG,CAC5D,MAAM0gK,EAAgBp6H,GAActmC,CAAK,EACnC7C,EAAQ6iK,EAAahgK,CAAK,EAOhC,GANI,CAAC7C,GAASA,EAAM,KAAOujK,EAAc,IAAMvjK,EAAM,QAAUujK,EAAc,OAGzE92H,GAAuBzsC,EAAM,UAAYA,EAAM,EAAE,IAAMujK,EAAc,IAGrEniG,GAAkBphE,EAAM,QAAQ,IAAMohE,GAAkBmiG,EAAc,QAAQ,EAChF,MAAO,EAEX,CACA,MAAO,EACT,CAEA,SAASC,GAAoB,CAAE,UAAA1kK,GAAa,CAC1C,OACEkO,MAAC,QACC,cAAY,OACZ,UAAWV,EAAG,4CAA6CxN,CAAS,GAG1E,CAEA,SAAS2kK,GAAwB,CAC/B,OAAAl6H,EACA,eAAAm6H,EACA,kBAAAC,EACA,qBAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,CACF,EAAG,CACD,KAAM,CAACtzJ,EAAME,CAAO,EAAI08D,WAAS,EAAK,EAEhC22F,EAAe,qBADP,OAAOz6H,GAAQ,OAAS,OAAO,EAAE,QAAU,OACV,GAEzC06H,EAAmBC,GAAe,CACtCN,IAAuBM,CAAU,CACnC,EAEMC,EAAoB5yC,GAAa,CACrC5gH,EAAQ4gH,CAAQ,EAChB0yC,EAAgB1yC,CAAQ,CAC1B,EAEM6yC,EAAuBnzJ,GAAU,CACrCA,EAAM,iBACR,EACMozJ,EAAqB,CAACpzJ,EAAOogH,IAAW,CAC5CpgH,EAAM,iBACNA,EAAM,kBACNgzJ,EAAgB,EAAK,EACrB5yC,IAAA,CACF,EAEMizC,EAAqBrzJ,GAAU,CAC/B,CAACR,GAAQ,CAACQ,EAAM,cAAc,SAASA,EAAM,aAAa,GAC5DgzJ,EAAgB,EAAK,CAEzB,EAEA,OACEj2J,OAAC+8G,GAAA,CAAgB,KAAAt6G,EAAY,aAAc0zJ,EACzC,UAAAn3J,MAACi+G,GAAA,CACC,YAAa,GACb,yBAAuB,GACvB,aAAY+4C,EACZ,MAAOA,EACP,UAAW13J,EACT,gGACA,uFACA,wHAEF,eAAgB,IAAM23J,EAAgB,EAAI,EAC1C,eAAgB,IAAM,CACfxzJ,GACHwzJ,EAAgB,EAAK,CAEzB,EACA,QAAS,IAAMA,EAAgB,EAAI,EACnC,OAAQK,EACR,YAAaF,EACb,cAAeA,EACf,UAAWA,EAEX,eAACG,GAAA,CAAe,UAAU,UAAU,YAAa,EAAG,cAAY,OAAO,IAEzEv2J,OAACq9G,GAAA,CAAuB,WAAY,EAAG,UAAU,OAC/C,UAAAr9G,OAACy8G,GAAA,CACC,UAAU,gBACV,SAAWx5G,GAAUozJ,EAAmBpzJ,EAAO6yJ,CAAM,EAErD,UAAA92J,MAACw3J,IAAO,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACnEx3J,MAAC,QAAK,gBAAI,KAEX22J,EACC31J,OAACy8G,GAAA,CACC,UAAU,gBACV,SAAWx5G,GAAUozJ,EAAmBpzJ,EAAO8yJ,CAAO,EAEtD,UAAA/2J,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,2BAAe,KAErB,WACH69G,GAAA,EAAsB,EACvB78G,OAACy8G,GAAA,CACC,QAAQ,cACR,SAAU,CAACi5C,EACX,UAAU,gBACV,SAAWzyJ,GAAUozJ,EAAmBpzJ,EAAOyyJ,EAAiBG,EAAW,IAAI,EAE/E,UAAA72J,MAACy3J,IAAO,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACnEz3J,MAAC,QAAK,kBAAM,IACd,EACF,GACF,CAEJ,CAEA,SAAS03J,GAAmB,CAC1B,KAAAj0J,EACA,aAAAy3H,EACA,MAAA3C,EACA,YAAAmC,EACA,YAAAi9B,EACA,UAAAC,CACF,EAAG,CACD,aACGlO,GAAA,CAAY,KAAAjmJ,EAAY,aAAAy3H,EACvB,SAAAl6H,OAACipJ,GAAA,CAAmB,UAAU,cAC5B,UAAAjpJ,OAACmpJ,GAAA,CACC,UAAAnqJ,MAACqqJ,IAAkB,SAAA9xB,CAAA,CAAM,EACzBv4H,MAACuqJ,IAAwB,SAAA7vB,CAAA,CAAY,GACvC,SACC0vB,GAAA,CACC,UAAApqJ,MAAC2qJ,IAAkB,kBAAM,EACzB3qJ,MAACyqJ,GAAA,CACC,UAAU,oDACV,QAASmN,EAER,SAAAD,CAAA,EACH,EACF,GACF,EACF,CAEJ,CAEA,SAASE,GAAgB,CACvB,YAAAC,EACA,aAAA58B,EACA,OAAA68B,EACA,KAAAt0J,CACF,EAAG,CACD,MAAMu0J,EAAUC,QAAA,EACV,CAACC,EAAWC,CAAY,EAAI93F,WAASy3F,CAAW,EAChDM,EAAsBF,EAAU,OAEtC51F,YAAU,IAAM,CACV7+D,GACF00J,EAAaL,CAAW,CAE5B,EAAG,CAACA,EAAar0J,CAAI,CAAC,EAEtB,MAAM40J,EAAgBp0J,GAAU,CAE9B,GADAA,EAAM,iBACF,CAACm0J,GAAuB,OAAOL,GAAW,WAC5C,OAEkBA,EAAOK,CAAmB,GAE5Cl9B,IAAe,EAAK,CAExB,EAEA,OACEl7H,MAACkuJ,GAAA,CAAO,KAAAzqJ,EAAY,aAAAy3H,EAClB,SAAAl7H,MAAC2uJ,GAAA,CAAc,UAAU,kBACvB,SAAA3tJ,OAAC,QAAK,UAAU,aAAa,SAAUq3J,EACrC,UAAAr3J,OAAC6tJ,GAAA,CAAa,UAAU,UACtB,UAAA7uJ,MAAC+uJ,GAAA,CAAY,UAAU,YAAY,sBAAU,EAC7C/uJ,MAACivJ,GAAA,CAAkB,UAAU,UAAU,wCAEvC,GACF,EACAjuJ,OAAC,OAAI,UAAU,eACb,UAAAhB,MAAC,SAAM,UAAW+8I,GAAmB,QAASib,EAAS,sBAEvD,EACAh4J,MAACC,GAAA,CACC,GAAI+3J,EACJ,MAAOE,EACP,UAAS,GACT,SAAWj0J,GAAUk0J,EAAal0J,EAAM,OAAO,KAAK,GACtD,EACF,SACC6qJ,GAAA,CACC,UAAA9uJ,MAACuuJ,GAAA,CAAY,QAAO,GAClB,SAAAvuJ,MAACP,GAAA,CAAO,KAAK,SAAS,QAAQ,UAAU,KAAK,KAAK,kBAElD,EACF,EACAO,MAACP,IAAO,KAAK,SAAS,KAAK,KAAK,SAAU,CAAC24J,EAAqB,sBAEhE,GACF,GACF,EACF,EACF,CAEJ,CAEO,SAASE,GAAoB,CAClC,aAAAzC,EAAe,GACf,cAAA71H,EACA,cAAA81H,EAAgB,GAChB,oBAAAyC,EACA,8BAAAC,EACA,sBAAAC,EACA,gCAAAC,EACA,iCAAAC,EACA,iBAAAlgC,EACA,cAAAmgC,CACF,EAAG,CACD,KAAM,CAACC,EAAUC,CAAW,EAAIz4F,WAAS,EAAK,EACxC,CAAC04F,EAAeC,CAAgB,EAAI34F,WAAS,EAAE,EAC/C,CAAC44F,EAAcC,CAAe,EAAI74F,WAAS,EAAE,EAC7C,CAAC84F,EAAyBC,CAA0B,EAAI/4F,WAAS,EAAK,EACtE,CAACg5F,EAAqBC,CAAsB,EAAIj5F,WAAS,EAAE,EAC3Di1F,EAAwBD,GAAA,EACxBkE,EAAiB/uE,UACrB,IAAMkrE,GAAoBG,EAAcP,CAAqB,EAC7D,CAACO,EAAcP,CAAqB,GAEhCkE,EAAoBhvE,UACxB,IAAMorE,GAAyBC,EAAcC,EAAe91H,CAAa,EACzE,CAAC61H,EAAcC,EAAe91H,CAAa,GAEvCy5H,EAAsBD,GAAmB,IAAM,GAC/CE,EAAmBF,GAAmB,OAAS,QAC/CG,EAAoB9D,EAAa,KAAMt5H,GAAWA,EAAO,KAAOw8H,CAAa,GAAK,KAClFa,EAAmB/D,EAAa,KAAMt5H,GAAWA,EAAO,KAAO08H,CAAY,GAAK,KAChFY,EAAyBrvE,UAC7B,IAAM8rE,GAAgCT,CAAY,EAClD,CAACA,CAAY,GAGTiE,EAAwBv1C,GAAa,CACzCu0C,EAAYv0C,CAAQ,EACfA,GACH+0C,EAAuB,EAAE,CAE7B,EAEMS,EAA6Br6H,GAAa,CAC9C45H,EAAwBU,IACtBA,KAAmBt6H,EAAW,GAAKs6H,EACpC,CACH,EAEMC,EAAoBv6H,GAAa,CACrC,MAAMnD,GAASs5H,EAAa,KAAM/nJ,IAAcA,GAAU,KAAO4xB,CAAQ,EACpEnD,IAGLg8H,IAAsBh8H,GAAO,SAAU,CACrC,cAAe,GACf,SAAUA,GAAO,GAClB,CACH,EAEM29H,EAA2Bx6H,GAAa,CAC5C,MAAMnD,GAASs5H,EAAa,KAAM/nJ,IAAcA,GAAU,KAAO4xB,CAAQ,EACrE22H,GAAqB95H,EAAM,GAAK,OAAOi8H,GAAkC,aAC3EQ,EAAiBt5H,CAAQ,EACzBo5H,EAAY,EAAK,EAErB,EAEMqB,EAA2B,IAAM,CACjCR,GAAqB,OAAOnB,GAAkC,YAChEA,EAA8BmB,EAAkB,EAAE,EAEpDX,EAAiB,EAAE,CACrB,EAEMoB,EAAmB16H,GAAa,CACpB,OAAO+4H,GAA0B,YAC7CA,EAAsB/4H,CAAQ,GAGhCu6H,EAAiBv6H,CAAQ,EAE3Bo5H,EAAY,EAAK,CACnB,EAEMuB,EAA0B36H,GAAa,CAC3Cw5H,EAAgBx5H,CAAQ,EACxBo5H,EAAY,EAAK,CACnB,EAEMwB,GAA0B,IAAM,CAChCV,GAAoB,OAAOlB,GAAoC,YACjEA,EAAgCkB,EAAiB,EAAE,EAErDV,EAAgB,EAAE,CACpB,EAEMqB,EAA6B,IAAM,CACnC,OAAO5B,GAAqC,YAC9CA,EAAA,EAEFS,EAA2B,EAAK,CAClC,EAEA,OACEp4J,OAAAsgE,WAAA,CACE,UAAAtgE,OAACk8G,GAAA,CAAa,KAAM27C,EAAU,aAAciB,EAC1C,UAAA95J,MAACo9G,GAAA,CAAoB,QAAO,GAC1B,SAAAp8G,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,aAAY,UAAUi6J,CAAgB,GACtC,MAAO,UAAUA,CAAgB,GACjC,UAAWjhC,EAEX,UAAAz4H,MAACwxJ,IAAS,UAAWoH,EAAe,YAAa,EAAG,cAAY,OAAO,EACvE54J,MAAC,QAAK,UAAU,UAAU,iBAAK,KAEnC,SACCs9G,GAAA,CAAoB,MAAM,MAAM,WAAY,EAAG,UAAU,OACxD,UAAAt9G,MAAC29G,GAAA,CAAkB,UAAU,4CAA4C,iBAEzE,EACC47C,EAAe,IAAKh9H,GAAW,CAC9B,MAAM8kC,GAAS9kC,EAAO,KAAOk9H,EACvB9C,GAAoBR,GAA6B55H,CAAM,EACvDm6H,GAAiBL,GAAqB95H,CAAM,EAC5Ci+H,GAAenB,IAAwB98H,EAAO,GACpD,OACEv7B,OAAC,OAEC,cAAaqgE,GAAS,OAAS,OAC/B,oBAAmBm5F,GAAe,OAAS,OAC3C,eAAcn5F,GAAS,OAAS,OAChC,UAAW/hE,EACT,6EAGF,UAAA0B,OAACy8G,GAAA,CACC,UAAWn+G,EACT,iEACA+hE,IAAU,iBAEZ,8BAA4B,GAC5B,SAAU,IAAM44F,EAAiB19H,EAAO,EAAE,EAE1C,UAAAv8B,MAACo1J,IAAa,OAAA74H,EAAgB,EAC9Bv8B,MAAC,QAAK,UAAU,0BAA2B,WAAO,MAAM,EACvDu8B,EAAO,KAAO+4H,EACbt1J,MAAC,QACC,UAAU,+EACV,gCAA8B,GAC/B,qBAGC,QAENA,MAAC,QACC,UAAU,gGAEV,SAAAA,MAACy2J,GAAA,CACC,OAAAl6H,EACA,eAAAm6H,GACA,kBAAAC,GACA,qBAAuBO,IAAe,CAChCA,GACFoC,EAAuB/8H,EAAO,EAAE,EAEhCw9H,EAA0Bx9H,EAAO,EAAE,CAEvC,EACA,OAAQ,IAAM69H,EAAgB79H,EAAO,EAAE,EACvC,QAAS,IAAM89H,EAAuB99H,EAAO,EAAE,EAC/C,SAAU,IAAM29H,EAAwB39H,EAAO,EAAE,GACnD,EACF,GA7CKA,EAAO,GAgDlB,CAAC,EACAs9H,EACC74J,OAAAsgE,WAAA,CACE,UAAAthE,MAAC69G,GAAA,EAAsB,EACvB78G,OAACy8G,GAAA,CACC,UAAU,UACV,SAAWx5G,GAAU,CACnBA,EAAM,iBACNm1J,EAA2B,EAAI,EAC/BN,EAAY,EAAK,CACnB,EAEA,UAAA94J,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,4BAAgB,IACxB,EACF,EACE,MACN,GACF,EACAA,MAAC03J,GAAA,CACC,KAAM,EAAQiC,EACd,aAAep1C,GAAa,CACrBA,GACHy0C,EAAiB,EAAE,CAEvB,EACA,MAAM,eACN,YAAa,UAAUW,GAAmB,OAAS,YAAY,0CAC/D,YAAY,eACZ,UAAWQ,CAAA,GAEbn6J,MAAC03J,GAAA,CACC,KAAM,EAAQkC,EACd,aAAer1C,GAAa,CACrBA,GACH20C,EAAgB,EAAE,CAEtB,EACA,MAAM,cACN,YAAa,SAASU,GAAkB,OAAS,YAAY,oCAC7D,YAAY,cACZ,UAAWU,EAAA,GAEbt6J,MAAC03J,GAAA,CACC,KAAMyB,EACN,aAAcC,EACd,MAAM,mBACN,YAAY,uFACZ,YAAY,mBACZ,UAAWmB,CAAA,EACb,EACF,CAEJ,CAEA,SAASE,GAAuB,CAC9B,aAAA5E,EAAe,GACf,cAAA71H,EACA,cAAA81H,EAAgB,GAChB,oBAAAyC,EACA,yBAAAmC,EACA,4BAAAC,EACA,gCAAAC,CACF,EAAG,CACD,KAAM,CAACC,EAAqBC,CAAsB,EAAIz6F,WAAS,EAAK,EAC9Dm5F,EAAoBhvE,UACxB,IAAMorE,GAAyBC,EAAcC,EAAe91H,CAAa,EACzE,CAAC61H,EAAcC,EAAe91H,CAAa,GAEvC+6H,EAAgBvB,GAAmB,IAAM,GACzCwB,EAAuB5E,GAAqBoD,CAAiB,EAC7DyB,EAAkBhF,GAA+BuD,EAAmBx5H,CAAa,EACjFk7H,EAAoB1B,GAAmB,MACzC,GAAGA,EAAkB,KAAK,QAC1B,aACExhI,EAAYgI,EAAc,WAAa7I,GAAkB,OAEzD8iI,EAAoBv6H,GAAa,CACrC,MAAMnD,EAASs5H,EAAa,KAAM/nJ,GAAcA,EAAU,KAAO4xB,CAAQ,EACpEnD,GAGLg8H,IAAsBh8H,EAAO,SAAU,CACrC,cAAe,GACf,SAAUA,EAAO,GAClB,CACH,EAEM4+H,EAAmBC,GACnB,CAACH,GAAmB,OAAON,GAAgC,WACtD,KAEFA,EAA4BS,CAAS,EAGxCC,EAAoB,IAAM,CAC1B,CAACJ,GAAmB,CAACF,GAAiB,CAACC,GAAwB,OAAOJ,GAAoC,YAG9GA,EAAgCG,CAAa,CAC/C,EAEMO,EAAyBC,GAAkB,CAC/ChD,IAAuBtkK,IAAa,CAClC,GAAGuqC,GAAuBvqC,CAAO,EACjC,UAAWsnK,CAAA,EACX,CACJ,EAEA,OACEv6J,OAAAsgE,WAAA,CACE,UAAAtgE,OAAC2xJ,GAAA,CAAkB,MAAM,QACvB,UAAA3yJ,MAACyyJ,GAAA,CACC,MAAM,UACN,MAAOwI,EAAkB,UAAY,QAErC,SAAAj6J,OAACmuJ,GAAA,CAAO,MAAO4L,EAAe,cAAed,EAC3C,UAAAj6J,MAACuvJ,GAAA,CACC,KAAK,KACL,UAAWjwJ,EAAGk3I,GAAqB,wBAAwB,EAC3D,aAAW,QAEX,SAAAx1I,OAAC,QAAK,UAAU,kCACd,UAAAhB,MAACo1J,GAAA,CAAa,OAAQoE,CAAA,CAAmB,QACxC,QAAK,UAAU,mBAAoB,SAAAA,GAAmB,OAAS,QAAQ,GAC1E,IAEFx5J,MAAC2vJ,GAAA,CACE,SAAAkG,EAAa,IAAKt5H,GACjBv7B,OAACivJ,GAAA,CAA2B,MAAO1zH,EAAO,GAAI,UAAU,UACtD,UAAAv8B,MAACo1J,IAAa,OAAA74H,EAAgB,EAC9Bv8B,MAAC,QAAK,UAAU,mBAAoB,WAAO,MAAM,IAFlCu8B,EAAO,EAGxB,CACD,EACH,GACF,IAGFv8B,MAACyyJ,GAAA,CAAM,MAAM,aACX,SAAAzyJ,MAACk1J,GAAA,CACC,MAAOl9H,EACP,QAASg6H,GACT,SAAUsJ,CAAA,GAEd,EAEAt7J,MAACg5H,GAAA,CACC,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,WAAY8I,EAAkB,OAAS,IAAI,EAC/E,SAAU,CAACA,GAAmB,OAAON,GAAgC,WACrE,QAAS,IAAMG,EAAuB,EAAI,EAE1C,UAAA96J,MAAC,QAAK,mBAAO,EACZi7J,EACCj7J,MAACw2J,GAAA,CAAoB,UAAU,yCAAyC,EACtE,QAENx2J,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,SAAU,CAAC8I,GAAmB,CAACF,GAAiB,CAACC,GAAwB,OAAOJ,GAAoC,WACpH,QAASS,EAET,SAAAr7J,MAAC,QAAK,kBAAM,IAEdgB,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,SAAU,CAAC8I,GAAmB,CAACF,GAAiB,OAAOL,GAA6B,WACpF,QAAS,IAAMA,IAAA,EAEf,UAAA16J,MAACk/E,IAAU,UAAU,UAAU,YAAa,EAAG,cAAY,OAAO,EAClEl/E,MAAC,QAAK,8BAAkB,IAC1B,EACF,EACF,GACF,EACAA,MAAC63J,GAAA,CACC,YAAaqD,EACb,aAAcJ,EACd,OAAQK,EACR,KAAMN,CAAA,EACR,EACF,CAEJ,CAEA,SAASW,GAAY,CAAE,MAAAttK,EAAO,SAAAwC,GAAY,CACxC,MAAMozC,EAAY,OAAO,SAAS,OAAO51C,GAAO,CAAC,CAAC,EAAI,OAAOA,EAAM,CAAC,EAAI,EAClEutK,EAAY,OAAO,SAAS,OAAOvtK,GAAO,CAAC,CAAC,EAAI,OAAOA,EAAM,CAAC,EAAI,EAClE,CAACwtK,EAAeC,CAAgB,EAAIt7F,WAAS,CAAE,EAAGv8B,EAAW,EAAG23H,EAAW,EAC3EG,EAAmBr0F,SAAOm0F,CAAa,EACvCtI,EAAiB7rF,SAAO,IAAI,EAC5BlrD,EAAIq/I,EAAc,EAClB5zH,EAAI4zH,EAAc,EAExBp5F,YAAU,IAAM,CACd,MAAMu5F,EAAe,CAAE,EAAG/3H,EAAW,EAAG23H,CAAA,EACxCG,EAAiB,QAAUC,EAC3BF,EAAiBE,CAAY,CAC/B,EAAG,CAAC/3H,EAAW23H,CAAS,CAAC,EAEzBn5F,YAAU,IAAM,IAAM,CAChB8wF,EAAe,SACjB,aAAaA,EAAe,OAAO,CAEvC,EAAG,EAAE,EAEL,MAAM0I,EAAStxE,UAAQ,IAAM,CAC3B,MAAM/9C,EAAY,KAAK,IAAI,KAAK,IAAIpwB,CAAC,EAAG,KAAK,IAAIyrB,CAAC,EAAG,GAAG,EACxD,OAAO,KAAK,IAAI,IAAM,KAAK,KAAM2E,EAAY,IAAO,EAAE,EAAI,EAAE,CAC9D,EAAG,CAACpwB,EAAGyrB,CAAC,CAAC,EAEHi0H,GAAe1/I,EAAIy/I,IAAWA,EAAS,GAAM,IAC7CE,GAAcF,EAASh0H,IAAMg0H,EAAS,GAAM,IAE5CG,EAAiB,CAACC,EAAOC,IAAU,CACnC/I,EAAe,SACjB,aAAaA,EAAe,OAAO,EAEjC8I,IAAUp4H,GACZpzC,EAAS,IAAKwrK,CAAK,EAEjBC,IAAUV,GACZ/qK,EAAS,IAAKyrK,CAAK,CAEvB,EAEMC,EAAyB,CAACF,EAAOC,IAAU,CAC/C,MAAMN,EAAe,CAAE,EAAGK,EAAO,EAAGC,CAAA,EACpCP,EAAiB,QAAUC,EAC3BF,EAAiBE,CAAY,EACzBzI,EAAe,SACjB,aAAaA,EAAe,OAAO,EAErCA,EAAe,QAAU,WAAW,IAAM,CACxC6I,EAAeC,EAAOC,CAAK,CAC7B,EAAG9J,EAAsB,CAC3B,EAEMgK,EAAqBp4J,GAAU,CACnC,MAAMoU,EAAOpU,EAAM,cAAc,wBACjC,GAAIoU,EAAK,OAAS,GAAKA,EAAK,QAAU,EACpC,OAEF,MAAMikJ,EAAS3mJ,IAAO1R,EAAM,QAAUoU,EAAK,MAAQA,EAAK,MAAO,EAAG,CAAC,EAC7DkkJ,EAAS5mJ,IAAO1R,EAAM,QAAUoU,EAAK,KAAOA,EAAK,OAAQ,EAAG,CAAC,EAC7D6jJ,EAAQ,KAAK,OAAOI,EAAS,EAAI,GAAKR,CAAM,EAC5CK,EAAQ,KAAK,OAAO,EAAII,EAAS,GAAKT,CAAM,EAClDM,EAAuBF,EAAOC,CAAK,CACrC,EAEA,OACEn7J,OAAC,OAAI,UAAU,YACb,UAAAA,OAAC,OACC,UAAU,kFACV,cAAgBiD,GAAU,CACxBA,EAAM,cAAc,kBAAkBA,EAAM,SAAS,EACrDo4J,EAAkBp4J,CAAK,CACzB,EACA,cAAgBA,GAAU,CACnBA,EAAM,cAAc,kBAAkBA,EAAM,SAAS,GAG1Do4J,EAAkBp4J,CAAK,CACzB,EACA,YAAcA,GAAU,CAClBA,EAAM,cAAc,kBAAkBA,EAAM,SAAS,GACvDA,EAAM,cAAc,sBAAsBA,EAAM,SAAS,EAE3Dg4J,EAAeL,EAAiB,QAAQ,EAAGA,EAAiB,QAAQ,CAAC,CACvE,EAEA,UAAA57J,MAAC,OACC,UAAU,8BACV,MAAO,CACL,gBAAiB,8EACjB,eAAgB,aAElB,cAAY,SAEdA,MAAC,OAAI,UAAU,4CAA4C,cAAY,OAAO,EAC9EA,MAAC,OAAI,UAAU,6CAA6C,cAAY,OAAO,EAC/EA,MAAC,OACC,UAAU,+GACV,MAAO,CAAE,KAAM,GAAG+7J,CAAU,IAAK,IAAK,GAAGC,CAAS,KAClD,cAAY,QACd,IAEFh7J,OAAC,OAAI,UAAU,sEACb,UAAAA,OAAC,QAAK,eAAG,KAAK,MAAMqb,CAAC,GAAE,SACtB,QAAK,eAAG,KAAK,MAAMyrB,CAAC,GAAE,SACtB,QAAK,sBAAUg0H,CAAA,EAAO,GACzB,GACF,CAEJ,CAEO,SAASU,GAAuB,CACrC,gBAAAr3I,EACA,sBAAAs3I,EACA,WAAAC,EAAa,KACb,SAAAC,EAAW,EACb,EAAG,CACD,MAAMrkF,EAA4BkS,UAChC,IAAMzlE,GAAyBI,CAAe,EAC9C,CAACA,CAAe,GAEZqoE,EAAyBhD,UAC7B,IAAM10E,GAA0BwiE,EAA0B,IAAI,EAC9D,CAACA,EAA0B,IAAI,GAE3BqU,EAA6BnC,UACjC,IAAM7lE,GAA8B2zD,EAA0B,QAAQ,EACtE,CAACA,EAA0B,QAAQ,GAE/BskF,EAAyBpyE,UAC7B,IAAMnmE,GAA6Bi0D,EAA0B,KAAK,EAClE,CAACA,EAA0B,KAAK,GAE5BukF,EAAc3lJ,GAAU,CAC5BulJ,IAAyBxoK,IAAa,CACpC,GAAG8wB,GAAyB9wB,CAAO,EACnC,GAAGijB,CAAA,EACH,CACJ,EACM4lJ,EAAW5lJ,GAAU,CACzBulJ,IAAyBxoK,GAAY,CACnC,MAAMihE,EAAkBnwC,GAAyB9wB,CAAO,EACxD,MAAO,CACL,GAAGihE,EACH,KAAMj+C,GAAmBi+C,EAAgB,KAAMh+C,CAAK,EAExD,CAAC,CACH,EACM6lJ,EAAe7lJ,GAAU,CAC7BulJ,IAAyBxoK,GAAY,CACnC,MAAMihE,EAAkBnwC,GAAyB9wB,CAAO,EACxD,MAAO,CACL,GAAGihE,EACH,SAAUvwC,GAA8B,CAAE,GAAGuwC,EAAgB,SAAU,GAAGh+C,EAAO,EAErF,CAAC,CACH,EACM8lJ,EAAY9lJ,GAAU,CAC1BulJ,IAAyBxoK,GAAY,CACnC,MAAMihE,EAAkBnwC,GAAyB9wB,CAAO,EACxD,MAAO,CACL,GAAGihE,EACH,MAAO7wC,GAA6B,CAClC,GAAG6wC,EAAgB,MACnB,GAAGh+C,CAAA,CACJ,EAEL,CAAC,CACH,EACM+lJ,EAAe,CAAC3lK,EAAS4f,IAAU,CACvCulJ,IAAyBxoK,GAAY,CACnC,MAAMihE,EAAkBnwC,GAAyB9wB,CAAO,EACxD,MAAO,CACL,GAAGihE,EACH,MAAO7wC,GAA6B,CAClC,GAAG6wC,EAAgB,MACnB,QAAS,CACP,GAAIA,EAAgB,OAAO,SAAW,GACtC,CAAC59D,CAAO,EAAG,CACT,GAAI49D,EAAgB,OAAO,UAAU59D,CAAO,GAAK,GACjD,GAAG4f,CAAA,CACL,CACF,CACD,EAEL,CAAC,CACH,EACMgmJ,EAAa,IAAM,CACvBL,EAAW,CAAE,MAAOx4I,GAAA,EAAgC,CACtD,EAEM84I,EAD4BzL,GAA0Bp5E,EAA0B,IAAI,GAC/B,MAAQ,KAC7D8kF,EAAuB,CAACpnJ,EAAMkkC,IAAe,CACjD,MAAMmjH,EAAgB,OAAOnjH,CAAU,EACjCojH,EAAiB,OAAO,SAASD,CAAa,EAAIA,EAAgB,EACxEP,EAAQ,CACN,KAAA9mJ,EACA,OAAQsnJ,EACR,QAAS,CAAE,CAACtnJ,CAAI,EAAGsnJ,CAAA,EACnB,QAASA,EAAiB,EAC3B,CACH,EAEA,OACEt8J,OAAC0xJ,GAAA,CAAQ,MAAM,UAAU,MAAM,UAC7B,UAAA1xJ,OAAC2xJ,GAAA,CAAkB,MAAM,OACvB,UAAA3yJ,MAACyyJ,GAAA,CAAM,MAAM,aACX,SAAAzyJ,MAACk1J,GAAA,CACC,MAAO58E,EAA0B,WACjC,SAAWs6B,GAAciqD,EAAW,CAAE,WAAYjqD,EAAW,EAC7D,QAASm/C,EAAA,GAEb,EAEA/xJ,MAACyyJ,GAAA,CAAM,MAAM,QACX,SAAAzxJ,OAACmuJ,GAAA,CACC,MAAO72E,EAA0B,KACjC,cAAgBs6B,GAAciqD,EAAW,CAAE,KAAMjqD,EAAW,EAE5D,UAAA5yG,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,mBAAmB,aAAW,eAC/D,SAAAvuJ,OAAC,QAAK,UAAU,oDACb,UAAAm8J,EACCn9J,MAACm9J,GAAwB,UAAU,0CAA0C,YAAa,EAAG,cAAY,OAAO,EAC9G,WACH9N,GAAA,EAAY,GACf,EACF,EACArvJ,MAAC2vJ,GAAA,CACE,SAAAuB,GAAqB,IAAKjzG,GAAW,CACpC,MAAMmzF,EAAOnzF,EAAO,KACpB,OACEj+C,MAACiwJ,GAAA,CAEC,MAAOhyG,EAAO,MACd,UAAU,UACV,MAAOA,EAAO,MACd,KAAMmzF,EAAOpxI,MAACoxI,EAAA,CAAK,UAAU,WAAW,YAAa,EAAG,EAAK,KAE5D,SAAAnzF,EAAO,OANHA,EAAO,MASlB,CAAC,EACH,IACF,CACF,GACF,EAEAj9C,OAAC2xJ,GAAA,CAAkB,MAAM,QACtB,UAAAJ,GAAoB,IAAKxlG,GAAc,CACtC,MAAMn2C,EAAWgmJ,EAAuB,UAAU7vG,EAAU,EAAE,GAAK,GAC7DtwC,EAAQ7F,EAAS,OAASm2C,EAAU,aACpC19B,EAAYzY,EAAS,WAAam2C,EAAU,iBAC5ChhC,EAAUnV,EAAS,SAAWm2C,EAAU,eAC9C,OACE/sD,MAAC8zJ,GAAA,CAEC,MAAO/mG,EAAU,MACjB,MAAAtwC,EACA,UAAA4S,EACA,QAAAtD,EACA,cAAgB6mF,GAAcqqD,EAAalwG,EAAU,GAAI,CAAE,MAAO6lD,EAAW,EAC7E,kBAAoBA,GAAcqqD,EAAalwG,EAAU,GAAI,CAAE,UAAW6lD,EAAW,EACrF,gBAAkBA,GAAcqqD,EAAalwG,EAAU,GAAI,CAAE,QAAS6lD,CAAA,CAAW,GAP5E7lD,EAAU,GAUrB,CAAC,EAED/sD,MAACg5H,GAAA,CACC,MAAM,YACN,SACEh5H,MAAC2zJ,GAAA,CACC,MAAM,YACN,MAAOiJ,EAAuB,gBAAkBx5I,GAChD,QAASw5I,EAAuB,kBAAoB,EACpD,UAAWA,EAAuB,oBAAsB,EACxD,IAAK,GACL,IAAK,EACL,OAAQ,EACR,cAAgBhqD,GAAcoqD,EAAS,CAAE,eAAgBpqD,EAAW,EACpE,gBAAkBA,GAAcoqD,EAAS,CAAE,iBAAkBpqD,EAAW,EACxE,kBAAoBA,GAAcoqD,EAAS,CAAE,mBAAoBpqD,EAAW,IAGhF,iBAAiB,iBAGlBomB,GAAA,CACC,SAAAh4H,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,QAAS+K,EACT,MAAM,qBAEN,UAAAl9J,MAACk/E,IAAU,UAAU,UAAU,YAAa,EAAG,cAAY,OAAO,EAClEl/E,MAAC,QAAK,iBAAK,IACb,CACF,GACF,EAEAgB,OAAC2xJ,GAAA,CAAkB,MAAM,gBACvB,UAAA3yJ,MAAC86H,GAAA,CACC,MAAM,UACN,QAASnuC,EAA2B,QACpC,gBAAkBiuC,GAAYmiC,EAAY,CAAE,QAASniC,EAAS,IAG/DjuC,EAA2B,QAC1B3rF,OAAAsgE,WAAA,CACE,UAAAthE,MAACyyJ,GAAA,CAAM,MAAM,OACX,SAAAzyJ,MAACk1J,GAAA,CACC,MAAOvoE,EAA2B,KAClC,QAASslE,GACT,SAAWr/C,GAAcmqD,EAAY,CAAE,KAAMnqD,EAAW,IAE5D,EAEA5yG,MAACs6H,GAAA,CACC,MAAM,UACN,MAAO,GAAG3tC,EAA2B,QAAQ,QAAQ,CAAC,CAAC,IACvD,cAAgBimB,GAAc,CAC5BmqD,EAAY,CACV,QAAS5jC,GAA0BvmB,EAAW,CAC5C,SAAUjmB,EAA2B,QACrC,IAAK,IACL,IAAK,EACN,EACF,CACH,EAEA,SAAA3sF,MAAC43I,GAAA,CACC,UAAWwa,GACX,MAAO,CAACzlE,EAA2B,OAAO,EAC1C,IAAK,IACL,IAAK,EACL,KAAM,IACN,cAAgBz+F,GAAU,CACxB6uK,EAAY,CAAE,QAAS,MAAM,QAAQ7uK,CAAK,EAAIA,EAAM,CAAC,EAAIA,EAAO,CAClE,EACA,aAAW,oBACb,GAGF8R,MAACs6H,GAAA,CACC,MAAM,QACN,MAAO,GAAG3tC,EAA2B,KAAK,GAC1C,cAAgBimB,GAAc,CAC5BmqD,EAAY,CACV,MAAO5jC,GAA0BvmB,EAAW,CAC1C,SAAUjmB,EAA2B,MACrC,IAAK,EACL,IAAK,EACL,QAAS,GACV,EACF,CACH,EAEA,SAAA3sF,MAAC43I,GAAA,CACC,UAAWwa,GACX,MAAO,CAACzlE,EAA2B,KAAK,EACxC,IAAK,EACL,IAAK,EACL,KAAM,EACN,cAAgBz+F,GAAU,CACxB6uK,EAAY,CAAE,MAAO,MAAM,QAAQ7uK,CAAK,EAAIA,EAAM,CAAC,EAAIA,EAAO,CAChE,EACA,aAAW,kBACb,GAGF8R,MAAC86H,GAAA,CACC,MAAM,eACN,QAASnuC,EAA2B,cACpC,gBAAkBiuC,GAAYmiC,EAAY,CAAE,cAAeniC,EAAS,IAGtE56H,MAAC86H,GAAA,CACC,MAAM,cACN,QAASnuC,EAA2B,iBACpC,gBAAkBiuC,GAAYmiC,EAAY,CAAE,iBAAkBniC,EAAS,UAGxE5B,GAAA,CACC,SAAAh4H,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,QAAS,IAAM4K,EAAYt5I,EAA8B,EACzD,MAAM,sBAEN,UAAAzjB,MAACk/E,IAAU,UAAU,UAAU,YAAa,EAAG,cAAY,OAAO,EAClEl/E,MAAC,QAAK,iBAAK,IACb,CACF,GACF,EACE,MACN,EAEC28J,EACC37J,OAAC2xJ,GAAA,CAAkB,MAAM,OAAO,mBAAoB,GACjD,UAAAL,GAAa,IAAKt8I,GAAS,CAC1B,MAAMunJ,EAAa/vE,EAAuB,UAAUx3E,CAAI,GAAKT,GAA2B,QAAQS,CAAI,EAC9FwnJ,EAAe,CACnB,GAAGhwE,EACH,KAAAx3E,EACA,OAAQunJ,EACR,QAAS,CACP,GAAG/vE,EAAuB,QAC1B,CAACx3E,CAAI,EAAGunJ,CAAA,CACV,EAEIE,EAAgBhnJ,GAAeimJ,EAAY1mJ,CAAI,EAC/C0nJ,EAAY,KAAK,IAAID,EAAc,IAAMA,EAAc,IAAK,CAAC,EAC7DE,EAAehnJ,GAAiB+lJ,EAAYc,CAAY,EAC9D,OACEx8J,OAACs5H,GAAA,CAEC,MAAOtkH,EACP,MAAO,GAAGw8I,GAASmL,CAAY,CAAC,MAChC,cAAgB/qD,GAAc,CAC5B,MAAMipD,EAAe1iC,GAA0BvmB,EAAW,CACxD,SAAU+qD,EACV,IAAKF,EAAc,IACnB,IAAKA,EAAc,IACpB,EACDL,EACEpnJ,EACA0nJ,EAAY,GAAK7B,EAAe4B,EAAc,KAAOC,EAAYH,CAAA,CAErE,EACA,gBAAiB,CACf,SAAU,CAACG,EACX,UAAW,QAAQ1nJ,EAAK,aAAa,aAGvC,UAAAhW,MAAC43I,GAAA,CACC,UAAWwa,GACX,MAAO,CAACmL,CAAU,EAClB,IAAK,EACL,IAAK,EACL,KAAM,KACN,SAAU,CAACG,EACX,cAAgBxvK,GAAU,CACxB,MAAMgsD,EAAa,MAAM,QAAQhsD,CAAK,EAAIA,EAAM,CAAC,EAAIA,EACrDkvK,EAAqBpnJ,EAAMkkC,CAAU,CACvC,EACA,aAAY,QAAQlkC,EAAK,aAAa,UAExChV,OAAC,OAAI,UAAU,oEACb,UAAAhB,MAAC,QAAM,SAAAwyJ,GAASiL,EAAc,GAAG,EAAE,EACnCz9J,MAAC,QAAM,SAAAwyJ,GAASiL,EAAc,GAAG,EAAE,GACrC,IAnCKznJ,CAAA,CAsCX,CAAC,EAEDhW,MAACg5H,GAAA,CACC,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,QAAS,IAAM2K,EAAQ,CAAE,OAAQ,CAACtvE,EAAuB,OAAQ,EACjE,eAAcA,EAAuB,OACrC,MAAM,iBAEN,UAAAxtF,MAAC49J,IAAgB,UAAU,UAAU,YAAa,EAAG,cAAY,OAAO,EACxE59J,MAAC,QAAK,gBAAI,KAEZgB,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,QAAS,IAAM0K,EAAW,CAAE,KAAM/mJ,GAA0BP,EAA0B,EAAG,EACzF,MAAM,mBAEN,UAAAvV,MAACk/E,IAAU,UAAU,UAAU,YAAa,EAAG,cAAY,OAAO,EAClEl/E,MAAC,QAAK,iBAAK,IACb,EACF,EACF,GACF,EACE,MACN,CAEJ,CAEO,SAAS69J,GAAsB,CACpC,aAAAhI,EAAe,GACf,cAAA71H,EACA,cAAA81H,EAAgB,GAChB,wBAAA5B,EAA0B/8H,GAAkB,MAC5C,oBAAAohI,EACA,yBAAAmC,EACA,4BAAAC,EACA,gCAAAC,CACF,EAAG,CACD,KAAM,CAACkD,EAAoBC,CAAqB,EAAI19F,WAAS,aAAa,EACpEm5F,EAAoBhvE,UACxB,IAAMorE,GAAyBC,EAAcC,EAAe91H,CAAa,EACzE,CAAC61H,EAAcC,EAAe91H,CAAa,GAEvCi7H,EAAkBhF,GAA+BuD,EAAmBx5H,CAAa,EACjFg+H,EACJh9J,OAAC,QAAK,UAAU,kCACd,UAAAhB,MAAC,QAAK,sBAAU,EACfi7J,EAAkBj7J,MAACw2J,GAAA,CAAoB,UAAU,cAAc,EAAK,MACvE,EAGIyH,EAAgB/mJ,GAAU,CAC9BqhJ,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,UAAW,CACT,GAAGA,EAAQ,UACX,GAAGijB,CAAA,CACL,EACA,CACJ,EAEMgnJ,EAAiBhnJ,GAAU,CAC/BqhJ,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,WAAY,CACV,GAAGA,EAAQ,WACX,GAAGijB,CAAA,CACL,EACA,CACJ,EAEMinJ,EAAYjnJ,GAAU,CAC1BqhJ,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,MAAO,CACL,GAAGA,EAAQ,MACX,GAAGijB,CAAA,CACL,EACA,CACJ,EACMknJ,EAAgBlnJ,GAAU,CAC9BqhJ,EAAqBtkK,GAAY,CAC/B,MAAMoqK,EAAepqK,EAAQ,OAAS,GACtC,MAAO,CACL,GAAGA,EACH,MAAO,CACL,GAAGoqK,EACH,KAAM,CACJ,GAAIA,EAAa,MAAQ,GACzB,GAAGnnJ,CAAA,CACL,CACF,CAEJ,CAAC,CACH,EAEMonJ,EAAkBpnJ,GAAU,CAChCqhJ,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,YAAa,CACX,GAAGA,EAAQ,YACX,GAAGijB,CAAA,CACL,EACA,CACJ,EAEMqnJ,EAAernJ,GAAU,CAC7BqhJ,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,SAAU,CACR,GAAGA,EAAQ,SACX,GAAGijB,CAAA,CACL,EACA,CACJ,EAoBMsnJ,EAAuB,CAC3B,cAAAx+H,EACA,wBAAAk0H,EACA,SArBoB,CAAClgK,EAAM4+G,EAAWntF,EAAO,KAAO,CACpD8yI,EAAqBtkK,GAAY,CAC/B,MAAM8R,EAAay4B,GAAuBvqC,CAAO,EAC3CgkC,EAAa+7H,GAAgBjuJ,EAAW,UAAU,EAClD3R,EAAO,CACX,GAAG2R,EACH,WAAAkyB,CAAA,EAEF,GAAIxS,IAAS0R,GAAkB,OAAS1R,IAAS0R,GAAkB,KACjE,OAAAK,GAAaS,EAAWxS,CAAI,EAAGzxB,EAAM4+G,CAAS,EACvCx+G,EAET,MAAMqqK,EAAaxK,GAAqBluJ,EAAYmuJ,CAAuB,EAC3E,OAAA18H,GAAapjC,EAAMJ,EAAM4+G,CAAS,EAClCp7E,GAAaS,EAAWwmI,CAAU,EAAGzqK,EAAM4+G,CAAS,EAC7Cx+G,CACT,CAAC,CACH,CAIY,EAGNsqK,EAAiB,CAACC,EAAUznJ,IAAU,CAC1CqhJ,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,SAAU,CACR,GAAGA,EAAQ,SACX,CAAC0qK,CAAQ,EAAG,CACV,GAAG1qK,EAAQ,SAAS0qK,CAAQ,EAC5B,GAAGznJ,CAAA,CACL,CACF,EACA,CACJ,EAEM0nJ,EAAmB,CAACD,EAAU3oJ,EAAM48F,IAAc,CACtD2lD,EAAqBtkK,IAAa,CAChC,GAAGA,EACH,SAAU,CACR,GAAGA,EAAQ,SACX,CAAC0qK,CAAQ,EAAG,CACV,GAAG1qK,EAAQ,SAAS0qK,CAAQ,EAC5B,SAAU,CACR,GAAG1qK,EAAQ,SAAS0qK,CAAQ,EAAE,SAC9B,CAAC3oJ,CAAI,EAAG48F,CAAA,CACV,CACF,CACF,EACA,CACJ,EAEA,OACE5xG,OAAC0xJ,GAAA,CACC,MAAOsL,EACP,MAAM,aACN,oCAAkC,OAElC,UAAAh+J,MAACy6J,GAAA,CACC,aAAA5E,EACA,cAAA71H,EACA,cAAA81H,EACA,oBAAAyC,EACA,yBAAAmC,EACA,4BAAAC,EACA,gCAAAC,CAAA,GAGF55J,OAAC2xJ,GAAA,CAAkB,MAAM,UACvB,UAAA3yJ,MAACyyJ,GAAA,CAAM,MAAM,SAAS,MAAO,GAAGkC,GAAkB30H,EAAc,SAAS,EAAE,MAAM,IAAI9J,EAAqB,GACxG,SAAAl2B,MAAC40J,GAAA,CACC,OAAQD,GAAkB30H,EAAc,SAAS,EACjD,YAAaA,EAAc,UAAU,cAAgB,GACrD,SAAWg1H,GAAeiJ,EAAa,CACrC,aAAcjJ,EAAW,CAAC,EAC1B,WAAYA,CAAA,CACb,IAEL,EAEAh1J,MAACmzJ,GAAA,CACC,MAAM,eACN,QAASnzH,EAAc,UAAU,cAAgB,GACjD,SAAW4yE,GAAcqrD,EAAa,CAAE,YAAarrD,EAAW,IAGlE5yG,MAACmzJ,GAAA,CACC,MAAM,kBACN,QAASnzH,EAAc,UAAU,uBAAyB,GAC1D,SAAW4yE,GAAcqrD,EAAa,CAAE,qBAAsBrrD,EAAW,IAG3E5yG,MAACizJ,IAAY,MAAM,aAAa,MAAOhW,GAAaj9G,EAAc,UAAU,UAAU,EACpF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,UAAU,WAC/B,IAAK,EACL,IAAK,IACL,KAAM,IACN,SAAW4yE,GAAcqrD,EAAa,CAAE,WAAYrrD,EAAW,IAEnE,EAEA5yG,MAACizJ,IAAY,MAAM,WAAW,MAAOhW,GAAaj9G,EAAc,UAAU,QAAQ,EAChF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,UAAU,SAC/B,IAAK,EACL,IAAK,IACL,KAAM,IACN,SAAW4yE,GAAcqrD,EAAa,CAAE,SAAUrrD,EAAW,IAEjE,EAEA5yG,MAACizJ,IAAY,MAAM,aAAa,MAAOhW,GAAaj9G,EAAc,UAAU,UAAU,EACpF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,UAAU,WAC/B,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcqrD,EAAa,CAAE,WAAYrrD,EAAW,GACjE,CACF,GACF,EAEA5xG,OAAC2xJ,GAAA,CAAkB,MAAM,WACvB,UAAA3yJ,MAACyyJ,GAAA,CAAM,MAAM,QACX,SAAAzyJ,MAACk1J,GAAA,CACC,MAAOl1H,EAAc,WAAW,KAChC,SAAW4yE,GAAcsrD,EAAc,CAAE,KAAMtrD,EAAW,EAC1D,QAASk/C,EAAA,GAEb,EAEC9xH,EAAc,WAAW,OAAS,QACjChgC,MAAC00J,GAAA,CACC,MAAM,QACN,KAAM,CAAC,aAAc,YAAY,EAChC,GAAG8J,CAAA,GAEJ,KAEHx+H,EAAc,WAAW,OAAS,SACjCh/B,OAAAsgE,WAAA,CACE,UAAAthE,MAAC00J,GAAA,CACC,MAAM,cACN,KAAM,CAAC,aAAc,aAAa,EACjC,GAAG8J,CAAA,GAENx+J,MAAC00J,GAAA,CACC,MAAM,YACN,KAAM,CAAC,aAAc,WAAW,EAC/B,GAAG8J,CAAA,GAENx+J,MAACizJ,GAAA,CAAY,MAAM,QAAQ,MAAO,GAAGhW,GAAaj9G,EAAc,WAAW,YAAa,CAAC,CAAC,OACxF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,WAAW,YAChC,IAAK,KACL,IAAK,IACL,KAAM,EACN,SAAW4yE,GAAcsrD,EAAc,CAAE,YAAatrD,EAAW,GACnE,CACF,GACF,EACE,KAEH5yE,EAAc,WAAW,OAAS,SACjCh/B,OAAAsgE,WAAA,CACE,UAAAthE,MAAC00J,GAAA,CACC,MAAM,cACN,KAAM,CAAC,aAAc,aAAa,EACjC,GAAG8J,CAAA,GAENx+J,MAAC00J,GAAA,CACC,MAAM,cACN,KAAM,CAAC,aAAc,aAAa,EACjC,GAAG8J,CAAA,EACN,EACF,EACE,MACN,EAEAx+J,MAAC2yJ,GAAA,CACC,MAAM,QACN,SACE3yJ,MAAC26H,GAAA,CACC,QAAS36F,EAAc,OAAO,UAAY,GAC1C,gBAAkB4yE,GAAcurD,EAAS,CAAE,QAASvrD,EAAW,EAC/D,UAAU,iBAIb,SAAA5yE,EAAc,OAAO,UAAY,GAChCh/B,OAAAsgE,WAAA,CACE,UAAAthE,MAAC00J,GAAA,CACC,MAAM,QACN,KAAM,CAAC,QAAS,OAAO,EACtB,GAAG8J,CAAA,GAENx+J,MAACizJ,GAAA,CAAY,MAAM,YAAY,MAAOhW,GAAaj9G,EAAc,OAAO,WAAa,GAAI,EACvF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,OAAO,WAAa,IACzC,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcurD,EAAS,CAAE,UAAWvrD,EAAW,IAE9D,EACA5yG,MAACizJ,GAAA,CAAY,MAAM,eAAe,MAAOhW,GAAaj9G,EAAc,OAAO,cAAgB,GAAI,EAC7F,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,OAAO,cAAgB,IAC5C,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcurD,EAAS,CAAE,aAAcvrD,EAAW,IAEjE,EACA5yG,MAACizJ,GAAA,CAAY,MAAM,SAAS,MAAOhW,GAAaj9G,EAAc,OAAO,eAAiB,GAAI,EACxF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,OAAO,eAAiB,IAC7C,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcurD,EAAS,CAAE,cAAevrD,EAAW,IAElE,EACA5yG,MAACizJ,GAAA,CAAY,MAAM,iBAAiB,MAAOhW,GAAaj9G,EAAc,OAAO,cAAgB,CAAC,EAC5F,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,OAAO,cAAgB,EAC5C,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcurD,EAAS,CAAE,aAAcvrD,EAAW,GAC/D,CACF,GACF,EACE,OAGN5yG,MAAC2yJ,GAAA,CACC,MAAM,OACN,SACE3yJ,MAAC26H,GAAA,CACC,QAAS36F,EAAc,OAAO,MAAM,UAAY,GAChD,gBAAkB4yE,GAAcwrD,EAAa,CAAE,QAASxrD,EAAW,EACnE,UAAU,gBAIb,SAAA5yE,EAAc,OAAO,MAAM,UAAY,GACtCh/B,OAAAsgE,WAAA,CACE,UAAAthE,MAAC00J,GAAA,CACC,MAAM,cACN,KAAM,CAAC,QAAS,OAAO,EACtB,GAAG8J,CAAA,GAENx+J,MAAC00J,GAAA,CACC,MAAM,cACN,KAAM,CAAC,QAAS,OAAQ,aAAa,EACpC,GAAG8J,CAAA,GAENx+J,MAAC00J,GAAA,CACC,MAAM,YACN,KAAM,CAAC,QAAS,OAAQ,WAAW,EAClC,GAAG8J,CAAA,GAENx+J,MAACizJ,GAAA,CAAY,MAAM,eAAe,MAAOhW,GAAaj9G,EAAc,OAAO,MAAM,SAAW,GAAI,EAC9F,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,OAAO,MAAM,SAAW,IAC7C,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcwrD,EAAa,CAAE,QAASxrD,EAAW,IAEhE,EACA5yG,MAACizJ,GAAA,CAAY,MAAM,UAAU,MAAOhW,GAAaj9G,EAAc,OAAO,MAAM,SAAW,CAAC,EACtF,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,OAAO,MAAM,SAAW,EAC7C,IAAK,IACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAcwrD,EAAa,CAAE,QAASxrD,EAAW,GAC9D,CACF,GACF,EACE,OAGN5xG,OAAC2xJ,GAAA,CAAkB,MAAM,WACvB,UAAA3yJ,MAACmzJ,GAAA,CACC,MAAM,oBACN,QAASnzH,EAAc,YAAY,QACnC,SAAW4yE,GAAc0rD,EAAe,CAAE,QAAS1rD,EAAW,IAEhE5yG,MAACizJ,IAAY,MAAM,wBAAwB,MAAOhW,GAAaj9G,EAAc,YAAY,SAAS,EAChG,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,YAAY,UACjC,IAAK,EACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAc0rD,EAAe,CAAE,UAAW1rD,EAAW,IAEpE,EAEA5yG,MAACizJ,IAAY,MAAM,eAAe,MAAOhW,GAAaj9G,EAAc,SAAS,mBAAmB,EAC9F,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,SAAS,oBAC9B,IAAK,IACL,IAAK,EACL,KAAM,IACN,SAAW4yE,GAAc2rD,EAAY,CAAE,oBAAqB3rD,EAAW,IAE3E,EAEA5yG,MAAC4yJ,GAAA,CAAmB,MAAM,UACxB,SAAA5xJ,OAAC0vJ,GAAA,CAAK,MAAOoN,EAAoB,cAAeC,EAAuB,UAAU,QAC/E,UAAA/9J,MAAC,OAAI,UAAU,YACb,SAAAA,MAAC4wJ,GAAA,CAAS,UAAU,+CACjB,SAAAsB,GAAsB,IAAKj0G,GAC1Bj+C,MAAC8wJ,IAA+B,MAAO7yG,EAAO,MAAO,UAAU,cAC5D,SAAAA,EAAO,OADQA,EAAO,KAEzB,CACD,EACH,EACF,EAECi0G,GAAsB,IAAKj0G,GAAW,CACrC,MAAM0hC,EAAQ3/C,EAAc,SAASie,EAAO,KAAK,EAC3C4gH,EAAmB5gH,EAAO,QAAU,cAC1C,OACEj9C,OAACgwJ,GAAA,CAEC,MAAO/yG,EAAO,MACd,UAAW3+C,EAAG,OAAQg4H,EAA4B,EAClD,4BAA0B,GAE1B,UAAAt3H,MAACmzJ,GAAA,CACC,MAAO,GAAGl1G,EAAO,KAAK,SACtB,QAAS0hC,EAAM,QACf,SAAWizB,GAAc8rD,EAAezgH,EAAO,MAAO,CAAE,QAAS20D,CAAA,CAAW,IAE9E5yG,MAAC00J,GAAA,CACC,MAAM,QACN,KAAM,CAAC,WAAYz2G,EAAO,MAAO,OAAO,EACvC,GAAGugH,CAAA,GAENx+J,MAACizJ,IAAY,MAAM,YAAY,MAAOhW,GAAat9D,EAAM,SAAS,EAChE,SAAA3/E,MAACgzJ,GAAA,CACC,MAAOrzE,EAAM,UACb,IAAK,EACL,IAAK,GACL,KAAM,IACN,SAAWizB,GAAc8rD,EAAezgH,EAAO,MAAO,CAAE,UAAW20D,CAAA,CAAW,IAElF,EACC30D,EAAO,QAAU,OAChBj+C,MAACizJ,GAAA,CAAY,MAAM,QAAQ,MAAOhW,GAAat9D,EAAM,KAAK,EACxD,SAAA3/E,MAACgzJ,GAAA,CACC,MAAOrzE,EAAM,MACb,IAAK,IACL,IAAK,KACL,KAAM,IACN,SAAWizB,GAAc8rD,EAAezgH,EAAO,MAAO,CAAE,MAAO20D,CAAA,CAAW,IAE9E,EACE,KACHisD,EACC7+J,MAACizJ,GAAA,CAAY,MAAM,WAAW,MAAOhW,GAAat9D,EAAM,SAAU,CAAC,EACjE,SAAA3/E,MAACgzJ,GAAA,CACC,MAAOrzE,EAAM,SACb,IAAK,EACL,IAAK,IACL,KAAM,EACN,SAAWizB,GAAc8rD,EAAezgH,EAAO,MAAO,CAAE,SAAU20D,CAAA,CAAW,IAEjF,EACE,KACJ5yG,MAACyyJ,GAAA,CAAM,MAAM,iBACX,SAAAzyJ,MAACw7J,GAAA,CACC,MAAO77E,EAAM,SACb,SAAU,CAAC3pE,EAAM48F,IAAcgsD,EAAiB3gH,EAAO,MAAOjoC,EAAM48F,CAAS,IAEjF,EACA5yG,MAACizJ,GAAA,CAAY,MAAM,aAAa,MAAOhW,GAAat9D,EAAM,SAAS,EAAG,CAAC,EACrE,SAAA3/E,MAACgzJ,GAAA,CACC,MAAOrzE,EAAM,SAAS,EACtB,IAAK,KACL,IAAK,IACL,KAAM,EACN,SAAWizB,GAAcgsD,EAAiB3gH,EAAO,MAAO,IAAK20D,CAAS,GACxE,CACF,IA5DK30D,EAAO,MA+DlB,CAAC,GACH,EACF,EAEAj9C,OAAC4xJ,GAAA,CAAmB,MAAM,UACxB,UAAA5yJ,MAACmzJ,GAAA,CACC,MAAM,gBACN,QAASnzH,EAAc,SAAS,QAAQ,QACxC,SAAW4yE,GAAc8rD,EAAe,UAAW,CAAE,QAAS9rD,EAAW,IAE3E5yG,MAAC00J,GAAA,CACC,MAAM,gBACN,KAAM,CAAC,WAAY,UAAW,OAAO,EACpC,GAAG8J,CAAA,GAENx+J,MAACizJ,GAAA,CAAY,MAAM,oBAAoB,MAAOhW,GAAaj9G,EAAc,SAAS,QAAQ,SAAS,EACjG,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,SAAS,QAAQ,UACtC,IAAK,EACL,IAAK,GACL,KAAM,IACN,SAAW4yE,GAAc8rD,EAAe,UAAW,CAAE,UAAW9rD,EAAW,GAC7E,CACF,GACF,EAEA5xG,OAAC4xJ,GAAA,CAAmB,MAAM,aACxB,UAAA5yJ,MAACmzJ,GAAA,CACC,MAAM,mBACN,QAASnzH,EAAc,SAAS,WAAW,QAC3C,SAAW4yE,GAAc8rD,EAAe,aAAc,CAAE,QAAS9rD,EAAW,IAE9E5yG,MAAC00J,GAAA,CACC,MAAM,YACN,KAAM,CAAC,WAAY,aAAc,UAAU,EAC1C,GAAG8J,CAAA,GAENx+J,MAAC00J,GAAA,CACC,MAAM,eACN,KAAM,CAAC,WAAY,aAAc,aAAa,EAC7C,GAAG8J,CAAA,GAENx+J,MAACizJ,GAAA,CAAY,MAAM,uBAAuB,MAAOhW,GAAaj9G,EAAc,SAAS,WAAW,SAAS,EACvG,SAAAhgC,MAACgzJ,GAAA,CACC,MAAOhzH,EAAc,SAAS,WAAW,UACzC,IAAK,EACL,IAAK,GACL,KAAM,IACN,SAAW4yE,GAAc8rD,EAAe,aAAc,CAAE,UAAW9rD,EAAW,GAChF,CACF,GACF,GACF,IAGN,CCx1EA,SAAwBksD,GAAc,CACpC,KAAAr7J,EACA,MAAA80H,EAAQ,OACR,UAAA0C,EACA,MAAAnrI,EACA,cAAAga,EAAgB,KAChB,aAAAoxH,EACA,cAAAC,EACA,sBAAA+W,EAAwB,GACxB,iBAAAtO,EAAmB,KACnB,uBAAAuO,EAAyB,GACzB,kBAAAX,EAAoB,GACpB,gBAAAC,EACA,8BAAA8F,EAAgC,GAChC,YAAA1B,EAAc,GACd,cAAA2B,EAAgB,KAChB,eAAAC,EAAiB,GACjB,uBAAAC,CACF,EAAG,CACD,OACE13I,MAACg7H,GAAA,CACC,KAAAv3H,EACA,MAAA80H,EACA,UAAA0C,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EAEA,SAAAn6H,OAACs0H,GAAA,CACC,KAAK,WACL,MAAOmiB,EACP,cAAeC,EACf,UAAU,UAEV,UAAA13I,MAACw1I,GAAA,CAAkB,MAAOK,CAAA,CAAa,EACtC2B,EACDx3I,MAACiyI,GAAA,CACC,MAAOnoI,EACP,sBAAAooI,EACA,iBAAAtO,EACA,uBAAAuO,EACA,kBAAAX,EACA,gBAAAC,EACA,sBAAuB8F,CAAA,EACzB,GACF,EAGN,CClCA,SAASwnB,GAAY7wK,EAAO,CAC1B,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAK,OAAO,SAASwa,CAAY,EAG1B,GAAGA,EAAa,QAAQ,CAAC,CAAC,IAFxB,OAGX,CAEA,SAASs2J,GAAcxtI,EAASriC,EAAKjB,EAAO,CAC1CsjC,GAAS,mBAAoBv9B,IAAa,CACxC,GAAGosG,GAAkCpsG,CAAO,EAC5C,CAAC9E,CAAG,EAAGjB,CAAA,EACP,CACJ,CAEA,SAAS+wK,GAAkB,CAAE,MAAAjjK,EAAO,WAAAkjK,EAAY,SAAAtoJ,EAAU,QAAA4a,GAAW,CACnE,MAAM2tI,EAASl/D,GAAyBi/D,CAAU,EAC5ChxK,EAAQ0oB,EAASsoJ,CAAU,EACjC,OACEl/J,MAACs6H,GAAA,CACC,MAAAt+H,EACA,MAAO+iK,GAAY7wK,CAAK,EACxB,cAAgB0kH,GAAc,CAC5BosD,GAAcxtI,EAAS0tI,EAAY/lC,GAA0BvmB,EAAW,CACtE,SAAU1kH,EACV,IAAKixK,EAAO,IACZ,IAAKA,EAAO,IACb,CAAC,CACJ,EACA,gBAAiB,CACf,UAAW,GAAGnjK,CAAK,UAGrB,SAAAgE,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAACnqI,CAAK,EACb,IAAKixK,EAAO,IACZ,IAAKA,EAAO,IACZ,KAAMA,EAAO,KACb,cAAgBvsD,GAAcosD,GAAcxtI,EAAS0tI,EAAYtsD,IAAY,CAAC,GAAK1kH,CAAK,EACxF,aAAY8N,CAAA,EACd,EAGN,CAEA,SAAwBojK,GAAwB,CAC9C,QAAA5tI,EAAU,KACV,MAAAtjC,EAAQ,WACR,MAAAqqI,EAAQ,UACV,EAAG,CACD,MAAM3hH,EAAWypF,GAAkC7uE,GAAS,QAAQ,EAC9D6tI,EAAiB,EAAQ7tI,GAAS,OAAO,YACzC8tI,EAAqB7+D,GAA8B7pF,EAAUopF,EAAkC,EAErG,OACEhgG,MAACs4H,GAAA,CAAiB,MAAApqI,EAAc,MAAAqqI,EAC9B,gBAACQ,GAAA,CACE,UAAAkmC,GAAkB,CACjB,MAAO,aACP,WAAY,kBACZ,SAAAroJ,EACA,QAAA4a,CAAA,CACD,EACAytI,GAAkB,CACjB,MAAO,oBACP,WAAY,6BACZ,SAAAroJ,EACA,QAAA4a,CAAA,CACD,EACAytI,GAAkB,CACjB,MAAO,aACP,WAAY,SACZ,SAAAroJ,EACA,QAAA4a,CAAA,CACD,EACAytI,GAAkB,CACjB,MAAO,mBACP,WAAY,kBACZ,SAAAroJ,EACA,QAAA4a,CAAA,CACD,EACDxxB,MAAC86H,GAAA,CACC,MAAM,eACN,QAASlkH,EAAS,aAAeyoJ,EACjC,SAAU,CAACA,EACX,gBAAkBzkC,GAAYokC,GAAcxtI,EAAS,cAAeopG,CAAO,EAC3E,UAAU,iBAEZ56H,MAAC86H,GAAA,CACC,MAAM,eACN,QAASlkH,EAAS,QAClB,gBAAkBgkH,GAAYokC,GAAcxtI,EAAS,UAAWopG,CAAO,EACvE,UAAU,iBAEZ56H,MAAC86H,GAAA,CACC,MAAM,oBACN,QAASlkH,EAAS,iBAClB,gBAAkBgkH,GAAYokC,GAAcxtI,EAAS,mBAAoBopG,CAAO,EAChF,UAAU,sBAEZ56H,MAAC86H,GAAA,CACC,MAAM,YACN,QAASlkH,EAAS,SAClB,gBAAkBgkH,GAAYokC,GAAcxtI,EAAS,WAAYopG,CAAO,EACxE,UAAU,cAEZ56H,MAACg5H,GAAA,CAAoB,UAAU,OAC7B,SAAAh4H,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAGw4H,GAAmC,uBAAuB,EACxE,SAAUwnC,EACV,QAAS,IAAM9tI,GAAS,mBAAmBwuE,EAAkC,EAC7E,MAAM,iBAEN,UAAAhgG,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,0BAAc,IACtB,CACF,GACF,EACF,CAEJ,CC5IA,MAAMu/J,GAA8B,IAC9BC,GAA0B,KAC1BC,GAA6B,IAEnC,SAAS97I,GAASz1B,EAAO,CACvB,MAAO,CAAC,CAACA,GAAS,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,CACrE,CAEA,SAAS4vD,GAAe5vD,EAAOsa,EAAW,EAAG,CAC3C,MAAME,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,EAAIA,EAAeF,CACxD,CAEA,SAASk3J,GAAexxK,EAAO,CAC7B,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,GAAKA,EAAe,EAAIA,EAAe,CAC5E,CAEA,SAASi3J,GAAczxK,EAAO,CAC5B,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAO,OAAO,SAASwa,CAAY,EAC/B,OAAOA,EAAa,YAAY,EAAE,CAAC,EACnC62J,EACN,CAEA,SAASK,IAAclvJ,EAAM1U,EAAQ,aAAc,CACjD,MAAM6jK,EAAU,OAAOnvJ,GAAQ,EAAE,EAAE,OACnC,GAAI,CAACmvJ,EACH,MAAM,IAAI,MAAM,8BAA8B7jK,CAAK,EAAE,EAEvD,GAAI,CACF,OAAO,KAAK,MAAM6jK,CAAO,CAC3B,MAAQ,CACN,MAAMC,EAAaD,EAAQ,QAAQ,GAAG,EAChCE,EAAYF,EAAQ,YAAY,GAAG,EACzC,GAAIC,GAAc,GAAKC,EAAYD,EACjC,OAAO,KAAK,MAAMD,EAAQ,MAAMC,EAAYC,EAAY,CAAC,CAAC,EAE5D,MAAM,IAAI,MAAM,GAAG/jK,CAAK,qBAAqB,CAC/C,CACF,CAEO,SAASgkK,GAAkCn/G,EAAW,CAC3D,MAAMo/G,EAAeP,GAAe7+G,GAAW,IAAI,EAC7CjrC,EAAMkoC,GAAe+C,GAAW,IAAK,CAAC,EACtChrC,EAAMioC,GAAe+C,GAAW,IAAKjrC,CAAG,EACxCtF,EAAQ,KAAK,IAAIuF,EAAMD,CAAG,EAC1BsqJ,EAAY5vJ,EAAQ,EACtB,KAAK,IACH,IAAM,KAAK,MAAM,KAAK,MAAMA,EAAQmvJ,EAA0B,CAAC,EAC/DD,EAAA,EAEFD,GACJ,OAAOI,GAAcM,EAAe,EAAI,KAAK,IAAIA,EAAcC,CAAS,EAAIA,CAAS,CACvF,CAEO,SAASC,GAA6B3hH,EAAY73B,EAAS,GAAI,CACpE,MAAM05B,EAAa,MAAM,QAAQ7B,GAAY,UAAU,EAAIA,EAAW,WAAa,GACnF,GAAI,CAAC6B,EAAW,OACd,MAAO,KAET,MAAM+/G,EAAmBt/D,GAAyBtiD,EAAY73B,CAAM,EAC9D05I,EAAgB,OAAO,YAC3BhgH,EAAW,IAAKQ,GAAc,CAACA,EAAU,GAAIu/G,EAAiBv/G,EAAU,EAAE,CAAC,CAAC,GAE9E,OAAO,KAAK,UAAUw/G,EAAe,KAAM,CAAC,CAC9C,CAEO,SAASC,GAA8B9hH,EAAY9tC,EAAM,CAAE,MAAA1U,EAAQ,aAAc,aAAAukK,EAAe,aAAgB,GAAI,CACzH,MAAMjgH,EAAe38B,GAAS66B,GAAY,YAAY,EAAIA,EAAW,aAAe,GAC9EkgD,EAASkhE,IAAclvJ,EAAM1U,CAAK,EAClCwkK,EAAY78I,GAAS+6E,GAAQ,MAAM,EAAIA,EAAO,OAASA,EAC7D,GAAI,CAAC/6E,GAAS68I,CAAS,EACrB,MAAM,IAAI,MAAM,GAAGxkK,CAAK,8BAA8B,EAGxD,MAAMykK,EAAa,GACb95I,EAAS,GACf,SAAW,CAAC+5I,EAAOnjG,CAAQ,IAAK,OAAO,QAAQijG,CAAS,EAAG,CACzD,MAAMl3J,EAAK,OAAOo3J,GAAS,EAAE,EAAE,OAC/B,GAAI,CAACp3J,EACH,SAEF,MAAMu3C,EAAYP,EAAah3C,CAAE,EACjC,GAAI,CAACu3C,EAAW,CACd4/G,EAAW,KAAKn3J,CAAE,EAClB,QACF,CACAqd,EAAOrd,CAAE,EAAIi1C,GAAwBsC,EAAW0c,CAAQ,CAC1D,CAEA,GAAIkjG,EAAW,OACb,MAAM,IAAI,MAAM,WAAWF,CAAY,GAAGE,EAAW,SAAW,EAAI,GAAK,GAAG,KAAKA,EAAW,KAAK,IAAI,CAAC,EAAE,EAE1G,MAAMp2I,EAAQ,OAAO,KAAK1D,CAAM,EAAE,OAClC,GAAI,CAAC0D,EACH,MAAM,IAAI,MAAM,YAAYk2I,CAAY,SAAS,EAEnD,MAAO,CAAE,OAAA55I,EAAQ,MAAA0D,CAAA,CACnB,CC9EA,MAAM8nI,GAAuBr6B,GACvB0e,IAAsBxe,GACtB2oC,GAAgC,GAChCC,GAAgC,EAEtC,SAASC,GAAoB3yK,EAAO,CAClC,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAK,OAAO,SAASwa,CAAY,EAG7B,KAAK,IAAIA,CAAY,GAAK,IACrBA,EAAa,QAAQ,CAAC,EAE3B,KAAK,IAAIA,CAAY,GAAK,GACrBA,EAAa,QAAQ,CAAC,EAExBA,EAAa,QAAQ,CAAC,EARpB,GASX,CAEA,SAASo4J,IAAc5yK,EAAO,CAC5B,MAAMwa,EAAe,KAAK,IAAI,OAAOxa,CAAK,GAAK,EAAG,CAAC,EACnD,MAAO,GAAGwa,EAAa,QAAQA,GAAgB,GAAK,EAAI,CAAC,CAAC,GAC5D,CAEA,SAASq4J,IAAyB7yK,EAAOmrI,EAAgB,EAAG,CAC1D,OAAOF,GAA0BjrI,EAAO,CACtC,SAAUmrI,EACV,IAAKsnC,GACL,IAAKC,EAAA,CACN,CACH,CAEA,SAAwBI,IAAyB,CAC/C,MAAA9yK,EAAQ,aACR,MAAAqqI,EAAQ,aACR,QAAA/mG,EAAU,KACV,MAAAx1B,EAAQ,YACR,aAAAilK,EAAe,wBACf,kBAAAC,EAAoB,iBACpB,cAAAC,EAAgB,GAChB,iBAAAC,EAAmB,GACnB,YAAAC,EAAc,SACd,mBAAAC,EAAqB,YACrB,UAAAC,EAAY,sBACZ,WAAAC,EAAa,uBACb,WAAAC,EAAa,kBACf,EAAG,CACD,MAAMjjH,EAAahtB,GAAS,YAAc,KACpC6uB,EAAa,MAAM,QAAQ7B,GAAY,UAAU,EAAIA,EAAW,WAAa,GAC7EgxD,EAAa,MAAM,QAAQhxD,GAAY,UAAU,EAAIA,EAAW,WAAa,GAC7E6hG,EAAS,OAAO7uH,GAAS,QAAU,EAAE,EAAE,OACvCrgB,EAAQ,OAAOqgB,GAAS,OAAS,EAAE,EAAE,OACrC7K,EAAS6K,GAAS,iBAAmB,GACrCoyB,EAAiBpyB,GAAS,gBAAkB,GAC5CkwI,EAAoB,KAAK,IAAI,OAAO99G,EAAe,QAAQ,GAAK,EAAG,IAAK,EACxEnpB,EAAUjJ,GAAS,UAAY,GAC/BmwI,EAActhH,EAAW,OAAS,GAAKmvD,EAAW,OAAS,EAMjE,OALI2xD,GAAiB3iH,GAAc,CAACmjH,GAAethB,IAAW,WAAa,CAAClvI,GAKxE,EAFYqtC,GAAc6hG,IAAW,WAAalvI,GAG7C,KAIPnR,MAACs4H,GAAA,CAAiB,MAAApqI,EAAc,MAAAqqI,EAC9B,gBAACQ,GAAA,CACE,UAAAv6E,GAAc4iH,EACbphK,MAAC86H,GAAA,CACC,MAAOumC,EACP,QAAS5mI,EACT,gBAAkBmgG,GAAYppG,GAAS,kBAAkBopG,CAAO,EAChE,UAAWymC,CAAA,GAEX,KAEHhhB,IAAW,UACVrgJ,MAAC,KAAE,UAAU,gDAAiD,WAAa,EACzE,KACHmR,EACCnR,MAAC,KAAE,UAAU,yDAA0D,WAAM,EAC3E,KAEHw+C,GAAcgxD,EAAW,OACxBxuG,OAAAsgE,WAAA,CACG,UAAAkuC,EAAW,OAAS,EACnBxvG,MAACg5H,GAAA,CAAoB,MAAM,YACzB,SAAAh4H,OAACmuJ,GAAA,CACC,MAAO,OAAOvrG,EAAe,UAAY4rD,EAAW,CAAC,GAAG,IAAM,EAAE,EAChE,cAAgBoD,GAAcphF,GAAS,oBAAoBohF,CAAS,EACpE,SAAU,CAACn4E,EAEX,UAAAz6B,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,mBAAmB,aAAY+R,EAChE,SAAAthK,MAACqvJ,GAAA,EAAY,EACf,QACCM,GAAA,CACE,SAAAngD,EAAW,IAAKtzB,GACfl8E,MAACiwJ,GAAA,CAA8B,MAAO/zE,EAAU,GAC7C,SAAAA,EAAU,OADIA,EAAU,EAE3B,CACD,EACH,KAEJ,EACE,KACJl8E,MAACg5H,GAAA,CACC,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAM3gI,GAAS,0BACxB,SAAU,CAACiJ,EACX,aAAY,GAAGmpB,EAAe,QAAU,QAAU,MAAM,IAAI5nD,CAAK,aACjE,MAAO,GAAG4nD,EAAe,QAAU,QAAU,MAAM,IAAI5nD,CAAK,aAE3D,UAAA4nD,EAAe,QACd5jD,MAAC4hK,GAAA,CAAM,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,QAEjEC,GAAA,CAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EAEnE7hK,MAAC,QAAM,SAAA4jD,EAAe,QAAU,QAAU,OAAO,KAEnD5iD,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAM3gI,GAAS,qBACxB,SAAU,CAACiJ,EACX,aAAY,WAAWz+B,CAAK,aAC5B,MAAM,UAEN,UAAAgE,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,iBAAK,IACb,EACF,EACF,EACAA,MAACs6H,GAAA,CACC,MAAM,OACN,MAAOwmC,IAAcl9G,EAAe,UAAU,EAC9C,cAAgBgvD,GAAc,CAC5BphF,GAAS,mBAAmB2nG,GAA0BvmB,EAAW,CAC/D,SAAUhvD,EAAe,WACzB,IAAK,EACL,IAAK89G,CAAA,CACN,CAAC,CACJ,EACA,gBAAiB,CACf,SAAU,CAACjnI,EACX,UAAW,GAAGz+B,CAAK,yBAGrB,SAAAgE,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAAC,OAAOz0E,EAAe,UAAU,GAAK,CAAC,EAC9C,IAAK,EACL,IAAK89G,EACL,KAAM,IACN,cAAgB9uD,GAAcphF,GAAS,mBAAmBohF,IAAY,CAAC,GAAK,CAAC,EAC7E,SAAU,CAACn4E,EACX,aAAY,GAAGz+B,CAAK,mBACtB,GAEFgE,MAACs6H,GAAA,CACC,MAAM,QACN,MAAO,GAAGumC,GAAoBj9G,EAAe,OAAS,CAAC,CAAC,IACxD,cAAgBgvD,GAAc,CAC5BphF,GAAS,yBACPuvI,IAAyBnuD,EAAWhvD,EAAe,OAAS,CAAC,EAEjE,EACA,gBAAiB,CACf,SAAU,CAACnpB,EACX,UAAW,GAAGz+B,CAAK,0BAGrB,SAAAgE,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAAC,OAAOz0E,EAAe,KAAK,GAAK,CAAC,EACzC,IAAK+8G,GACL,IAAKC,GACL,KAAM,GACN,cAAgBhuD,GAAcphF,GAAS,yBAAyBohF,IAAY,CAAC,GAAK,CAAC,EACnF,SAAU,CAACn4E,EACX,aAAY,GAAGz+B,CAAK,oBACtB,EACF,EACF,EACE,KAEHwiD,GAAc,CAAC6B,EAAW,aACxB,KAAE,UAAU,gDAAiD,SAAA6gH,CAAA,CAAkB,EAC9E,KACH7gH,EAAW,IAAKQ,GAAc,CAC7B,MAAMihH,EAAen7I,IAASk6B,EAAU,EAAE,GAAKA,EAAU,aACnDkhH,EAAc/B,GAAkCn/G,CAAS,EAC/D,OAAIA,EAAU,OAAS,UAEnB7gD,MAAC86H,GAAA,CAEC,MAAOj6E,EAAU,MACjB,QAASihH,IAAiB,GAC1B,gBAAkBlnC,GAAYppG,GAAS,oBAAoBqvB,EAAU,GAAI+5E,CAAO,EAChF,SAAU,CAACngG,EACX,UAAWomB,EAAU,OALhBA,EAAU,IASjBA,EAAU,OAAS,OAEnB7gD,MAACg5H,GAAA,CAAuC,MAAOn4E,EAAU,MACvD,SAAA7/C,OAACmuJ,GAAA,CACC,MAAO,OAAO2S,GAAgB,EAAE,EAChC,cAAgBlvD,GAAcphF,GAAS,oBAAoBqvB,EAAU,GAAI+xD,CAAS,EAClF,SAAU,CAACn4E,EAEX,UAAAz6B,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,mBAAmB,aAAY1uG,EAAU,MAC1E,SAAA7gD,MAACqvJ,GAAA,EAAY,EACf,QACCM,GAAA,CACE,SAAA9uG,EAAU,QAAQ,IAAK5C,GACtBj+C,MAACiwJ,GAAA,CAA8B,MAAOhyG,EAAO,MAC1C,SAAAA,EAAO,OADOA,EAAO,KAExB,CACD,EACH,IACF,EAhBwB4C,EAAU,EAiBpC,EAGAA,EAAU,OAAS,QAEnB7gD,MAACg5H,GAAA,CAEC,MAAOn4E,EAAU,MACjB,SACE7gD,MAACksJ,GAAA,CACC,MAAO,OAAO4V,GAAgB,SAAS,EACvC,SAAWlvD,GAAcphF,GAAS,oBAAoBqvB,EAAU,GAAI+xD,CAAS,EAC7E,SAAU,CAACn4E,EACX,UAAWn7B,EAAGk3I,IAAqB,oCAAoC,EACvE,gBAAgB,WAChB,aAAa,MACb,aAAY31F,EAAU,OACxB,EAXGA,EAAU,IAgBjBA,EAAU,OAAS,eAElBm4E,GAAA,CACC,SAAAh5H,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,uBAAuB,EAC3D,QAAS,IAAM3gI,GAAS,oBAAoBqvB,EAAU,GAAI,OAAOihH,GAAgB,CAAC,EAAI,CAAC,EACvF,SAAU,CAACrnI,EAEV,SAAAomB,EAAU,OACb,EAVwBA,EAAU,EAWpC,EAGAA,EAAU,OAAS,SAEnB7gD,MAACg5H,GAAA,CAEC,MAAOn4E,EAAU,MACjB,SACE7gD,MAACy5H,GAAA,CACC,MAAO,OAAOqoC,GAAgB,EAAE,EAChC,cAAgBlvD,GAAcphF,GAAS,oBAAoBqvB,EAAU,GAAI+xD,CAAS,EAClF,SAAU,CAACn4E,EACX,UAAU,OACV,UAAW,GAAGomB,EAAU,KAAK,SAC7B,UAAU,mEACZ,EAVGA,EAAU,IAgBnB7gD,MAACs6H,GAAA,CAEC,MAAOz5E,EAAU,MACjB,MAAO,GAAGggH,GAAoBiB,CAAY,CAAC,GAAGjhH,EAAU,KAAO,IAAIA,EAAU,IAAI,GAAK,EAAE,GACxF,cAAgB+xD,GAAc,CAC5BphF,GAAS,oBAAoBqvB,EAAU,GAAIs4E,GAA0BvmB,EAAW,CAC9E,SAAUkvD,EACV,IAAKjhH,EAAU,IACf,IAAKA,EAAU,IAChB,CAAC,CACJ,EACA,gBAAiB,CACf,SAAU,CAACpmB,EACX,UAAW,GAAGomB,EAAU,KAAK,iBAG/B,SAAA7gD,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAAC,OAAOypC,CAAY,GAAK,CAAC,EACjC,IAAKjhH,EAAU,IACf,IAAKA,EAAU,IACf,KAAMkhH,EACN,cAAgBnvD,GAAcphF,GAAS,oBAAoBqvB,EAAU,GAAI+xD,IAAY,CAAC,GAAKkvD,CAAY,EACvG,SAAU,CAACrnI,EACX,aAAYomB,EAAU,OACxB,EAxBKA,EAAU,GA2BrB,CAAC,EACArC,GAAc6B,EAAW,OACxBr/C,OAAAsgE,WAAA,CACE,UAAAthE,MAACg5H,IAAoB,UAAU,OAC7B,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAM,CACR3gI,GAAS,gBAChB,EACA,MAAO+vI,EAEP,UAAAvhK,MAACsxI,IAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACjEtxI,MAAC,QAAK,2BAAe,KAEvBgB,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAM,CACR3gI,GAAS,iBAChB,EACA,MAAOgwI,EAEP,UAAAxhK,MAACgiK,IAAe,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EAC3EhiK,MAAC,QAAK,4BAAgB,IACxB,EACF,EACF,EACCwxB,GAAS,kBACRxxB,MAACg5H,GAAA,CACC,SAAAh4H,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,uBAAuB,EAC3D,QAAS,IAAM3gI,EAAQ,oBACvB,MAAOiwI,EAEP,UAAAzhK,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,4BAAgB,KAE1B,EACE,MACN,EACE,MACN,EACF,CAEJ,CClYA,SAAwBiiK,IAAkB,CACxC,KAAAx+J,EACA,MAAA80H,EAAQ,eACR,UAAA0C,EACA,MAAAnrI,EACA,cAAAga,EAAgB,KAChB,aAAAoxH,EACA,cAAAC,EACA,iBAAA+mC,EAAmB,KACnB,gBAAAC,EAAkB,KAClB,sBAAAjwB,EAAwB,GACxB,iBAAAtO,EAAmB,KACnB,uBAAAuO,EAAyB,GACzB,kBAAAX,EAAoB,GACpB,gBAAAC,EACA,8BAAA8F,EAAgC,GAChC,YAAA1B,EAAc,GACd,cAAA2B,EAAgB,KAChB,eAAAC,EAAiB,GACjB,uBAAAC,CACF,EAAG,CACD,OACE13I,MAACg7H,GAAA,CACC,KAAAv3H,EACA,MAAA80H,EACA,UAAA0C,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EAEA,SAAAn6H,OAACs0H,GAAA,CACC,KAAK,WACL,MAAOmiB,EACP,cAAeC,EACf,UAAU,UAEV,UAAA13I,MAACw1I,GAAA,CAAkB,MAAOK,CAAA,CAAa,EACvC71I,MAACghK,IAAA,CACC,QAASkB,EACT,MAAM,qBACN,aAAa,iCACb,kBAAkB,0BAClB,cAAa,GACb,mBAAmB,qBACnB,UAAU,+BACV,WAAW,kCAEbliK,MAACo/J,GAAA,CAAwB,QAAS+C,CAAA,CAAiB,EAClD3qB,EACDx3I,MAACiyI,GAAA,CACC,MAAOnoI,EACP,sBAAAooI,EACA,iBAAAtO,EACA,uBAAAuO,EACA,kBAAAX,EACA,gBAAAC,EACA,sBAAuB8F,CAAA,EACzB,GACF,EAGN,CChEO,SAAS6qB,IAAmCvhH,EAAW,CAC5D,OAAOm/G,GAAkCn/G,CAAS,CACpD,CAEO,SAASwhH,IAA8B7jH,EAAY73B,EAAS,GAAI,CACrE,OAAOw5I,GAA6B3hH,EAAY73B,CAAM,CACxD,CAEO,SAAS27I,IAA+B9jH,EAAY9tC,EAAM,CAC/D,OAAO4vJ,GAA8B9hH,EAAY9tC,EAAM,CACrD,MAAO,iBACP,aAAc,iBACf,CACH,CC4BA,MAAMyhJ,GAAuBr6B,GACvB0e,IAAsBxe,GACtBuqC,IAA2B,8KAC3BC,IAA6B,sMAC7BC,IAAwB,kCACxBC,GAAwB,sEACxBC,GAAuB,oCACvBC,IAA0B,2DAC1BC,GAAoB,GACpBC,IAAyB,GACzBC,GAAiB,IACjBC,GAAgB,OAChBC,IAA+B,IAC/BC,GAAmB,GACnBC,IAA4B,0OAC5BC,GAAkC,GAClCC,GAAkC,EAExC,SAASxC,GAAoB3yK,EAAO,CAClC,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,OAAK,OAAO,SAASwa,CAAY,EAG7B,KAAK,IAAIA,CAAY,GAAK,IACrBA,EAAa,QAAQ,CAAC,EAE3B,KAAK,IAAIA,CAAY,GAAK,GACrBA,EAAa,QAAQ,CAAC,EAExBA,EAAa,QAAQ,CAAC,EARpB,GASX,CAEA,SAASo4J,IAAc5yK,EAAO,CAC5B,MAAMwa,EAAe,KAAK,IAAI,OAAOxa,CAAK,GAAK,EAAG,CAAC,EACnD,MAAO,GAAGwa,EAAa,QAAQA,GAAgB,GAAK,EAAI,CAAC,CAAC,GAC5D,CAEA,SAASq4J,IAAyB7yK,EAAOmrI,EAAgB,EAAG,CAC1D,OAAOF,GAA0BjrI,EAAO,CACtC,SAAUmrI,EACV,IAAK+pC,GACL,IAAKC,EAAA,CACN,CACH,CAEA,SAASC,IAAc95J,EAAaymC,EAAe,CACjD,MAAMszH,EAAU,MAAM,QAAQ/5J,CAAW,EACrCA,EAAY,IAAKF,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,EAC/D,GACJ,GAAI,CAACi6J,EAAQ,OACX,MAAO,GAET,MAAMjzH,EAAS,IAAI,IAAI,MAAM,QAAQL,CAAa,EAAIA,EAAgB,EAAE,EACxE,OAAOszH,EAAQ,MAAOj6J,GAAOgnC,EAAO,IAAIhnC,CAAE,CAAC,CAC7C,CAEA,SAASk6J,IAAqBC,EAAaxzH,EAAe,CACxD,MAAMyzH,MAAiB,IACjBC,EAAgB,GACtB,UAAW58I,KAAO,MAAM,QAAQ08I,CAAW,EAAIA,EAAc,GAAI,CAC/D,MAAMh0J,EAAQ,KAAK,IAAI,OAAOsX,GAAK,KAAK,GAAK,EAAG,CAAC,EACjD48I,EAAc,OAASl0J,EAEvB,MAAMm0J,EADen0J,EAAQ,GAAKk0J,EAAcl0J,EAAQ,CAAC,IAAM,IAC7B6zJ,IAAcv8I,GAAK,YAAakpB,CAAa,EAC/E0zH,EAAcl0J,CAAK,EAAIm0J,EACnBA,GACFF,EAAW,IAAI,OAAO38I,GAAK,IAAM,EAAE,EAAE,MAAM,CAE/C,CACA,OAAO28I,CACT,CAEA,SAAS76J,IAAeC,EAAM,CAC5B,OAAO,OAAOA,GAAM,IAAMA,GAAM,cAAgB,EAAE,EAAE,MACtD,CAEA,SAAS+6J,IAAuBJ,EAAaK,EAAgB,CAC3D,MAAMx/C,EAAU,IAAI,KACjB,MAAM,QAAQw/C,CAAc,EAAIA,EAAiB,IAC/C,IAAKx6J,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EACnC,OAAO,OAAO,GAEnB,GAAI,CAACg7G,EAAQ,KACX,OAAO,KAET,MAAMy/C,MAAmB,IACnBC,EAAkB,GACxB,UAAWj9I,KAAO,MAAM,QAAQ08I,CAAW,EAAIA,EAAc,GAAI,CAC/D,MAAMQ,EAAQ,OAAOl9I,GAAK,IAAM,EAAE,EAAE,OAC9BtX,EAAQ,KAAK,IAAI,OAAOsX,GAAK,KAAK,GAAK,EAAG,CAAC,EACjDi9I,EAAgB,OAASv0J,EAEzB,MAAMy0J,EADiBz0J,EAAQ,GAAKu0J,EAAgBv0J,EAAQ,CAAC,IAAM,IAC7B60G,EAAQ,IAAI2/C,CAAK,EACvDD,EAAgBv0J,CAAK,EAAIy0J,EACrBA,GAAeD,GACjBF,EAAa,IAAIE,CAAK,CAE1B,CACA,OAAOF,CACT,CAEA,SAASI,GAAuBt2J,EAAQ,CAAE,MAAAu2J,EAAQ,WAAc,GAAI,CAClE,GAAI,CAACv2J,EACH,OAGF,MAAMgtF,EAAWhtF,EAAO,QAAQ,oCAAoC,EACpE,GAAI,CAACgtF,EAAU,CACbhtF,EAAO,iBAAiB,CACtB,MAAAu2J,EACA,SAAU,UACX,EACD,MACF,CAEA,MAAMC,EAAax2J,EAAO,wBACpBy2J,EAAezpE,EAAS,wBAE9B,GAAIupE,IAAU,SAAU,CACtB,MAAMG,EAAeF,EAAW,IAAMA,EAAW,OAAS,EACpDG,EAAiBF,EAAa,IAAMA,EAAa,OAAS,EAChEzpE,EAAS,WAAa0pE,EAAeC,EACrC,MACF,CAEA,MAAMC,EAAYH,EAAa,IAAMrB,IAErC,GAAIoB,EAAW,IAAMI,EAAW,CAC9B5pE,EAAS,WAAawpE,EAAW,IAAMI,EACvC,MACF,CAEIJ,EAAW,OAASC,EAAa,SACnCzpE,EAAS,WAAawpE,EAAW,OAASC,EAAa,OAE3D,CAEA,SAASI,GAAoB39I,EAAK,CAChC,MAAMooF,EAAe,OAAOpoF,GAAK,cAAgB,EAAE,EAAE,OACrD,GAAIooF,EACF,OAAOA,EAET,MAAMhmG,EAAW,OAAO4d,GAAK,UAAYA,GAAK,MAAM,UAAY,EAAE,EAAE,OACpE,OAAO5d,EAAS,WAAW,WAAW,EAAIA,EAAS,MAAM,CAAkB,EAAI,EACjF,CAEA,SAASw7J,IAA0B59I,EAAK,CACtC,OAAO,OAAOA,GAAK,QAAUA,GAAK,MAAM,QAAUA,GAAK,SAAWA,GAAK,MAAM,SAAW,EAAE,EAAE,MAC9F,CAEA,SAAS69I,IAAoB79I,EAAK7mB,EAAM,CACtC,MAAM80C,EAAS2vH,IAA0B59I,CAAG,EAAE,cACxC/qB,EAAQ,OAAO+qB,GAAK,OAASA,GAAK,MAAM,aAAe,EAAE,EAAE,OAAO,cAClE89I,EAAW,GAAG7vH,CAAM,IAAIh5C,CAAK,GACnC,GAAIkE,IAAS,OACX,MAAI,YAAY,KAAK2kK,CAAQ,EAAU,QACnC,eAAe,KAAKA,CAAQ,EAAU,WACtC,WAAW,KAAKA,CAAQ,EAAU,OAClC,aAAa,KAAKA,CAAQ,EAAU,SACpC,YAAY,KAAKA,CAAQ,EAAU,QACnC,oCAAoC,KAAKA,CAAQ,EAAU,SACxD,OAET,GAAI3kK,IAAS,OACX,MAAI,aAAa,KAAK2kK,CAAQ,EAAU,SACpC,cAAc,KAAKA,CAAQ,EAAU,UACrC,WAAW,KAAKA,CAAQ,EAAU,OAClC,oCAAoC,KAAKA,CAAQ,EAAU,SACxD,OAET,GAAI3kK,IAAS,QAAS,CACpB,GAAI,YAAY,KAAK2kK,CAAQ,EAAG,MAAO,QACvC,GAAI,YAAY,KAAKA,CAAQ,EAAG,MAAO,OACzC,CACA,OAAO3kK,CACT,CAEA,SAAS4kK,GAAoB52K,EAAO,CAClC,MAAMwiB,EAAO,OAAOxiB,GAAS,EAAE,EAAE,OACjC,OAAOwiB,EAAO,GAAGA,EAAK,MAAM,EAAG,CAAC,EAAE,aAAa,GAAGA,EAAK,MAAM,CAAC,CAAC,GAAK,EACtE,CAEA,SAASq0J,IAAqBh+I,EAAKi+I,EAAchwH,EAAS,GAAI,CAC5D,MAAMh5C,EAAQ,OAAO+qB,GAAK,OAASA,GAAK,MAAM,aAAe,EAAE,EAAE,OAC3Dk+I,EAAyB,OAAOD,GAAgB,EAAE,EAAE,OACpDE,EAAmB,OAAOlwH,GAAU,EAAE,EAAE,OAC9C,GAAIiwH,EAAwB,CAC1B,MAAM3vK,EAASwvK,GAAoBG,CAAsB,EACnDE,EAAkBnpK,EAAM,cAE9B,MAAO,CADc1G,GAAU,CAAC6vK,EAAgB,WAAWF,EAAuB,aAAa,EACxE3vK,EAAS,GAAI0G,EAAOkpK,CAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CACvF,CAGA,MAAO,CAFU,OAAOn+I,GAAK,UAAYA,GAAK,MAAM,UAAY,EAAE,EAAE,SACxC,WAAa,WAAa,YACtC/qB,EAAOkpK,CAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CACnE,CAEA,SAASE,GAAsBppK,EAAO9N,EAAO,CAC3C,MAAM6d,EAAkB,OAAO7d,GAAS,EAAE,EAAE,OAC5C,OAAO6d,EAAkB,GAAG/P,CAAK,KAAK+P,CAAe,GAAK,EAC5D,CAEA,SAASs5J,GAAoBn3K,EAAO,CAClC,MAAM6d,EAAkB,OAAO7d,GAAS,EAAE,EAAE,OAAO,QAAQ,KAAM,EAAE,EACnE,OAAO6d,EAAkB,IAAIA,CAAe,GAAK,EACnD,CAEA,SAASu5J,IAAmBv+I,EAAK,CAC/B,aAAAi+I,EAAe,GACf,oBAAAO,EAAsB,GACtB,OAAAvwH,EAAS,GACT,eAAAwwH,EAAiB,EACnB,EAAI,GAAI,CACN,MAAMxpK,EAAQ,OAAO+qB,GAAK,OAASA,GAAK,MAAM,aAAe,EAAE,EAAE,OAC3D5d,EAAW,OAAO4d,GAAK,UAAYA,GAAK,MAAM,UAAY,EAAE,EAAE,OAC9D7mB,EAAO8kK,EACTF,GAAoBE,CAAY,EAChC77J,IAAa,WAAa,WAAa,YACrChD,EAAW6+J,EACb,OAAOj+I,GAAK,MAAM,iBAAmBA,GAAK,iBAAmBw+I,GAAuB,EAAE,EAAE,OACxF,OAAOx+I,GAAK,MAAM,cAAgBA,GAAK,MAAM,IAAMA,GAAK,IAAM,EAAE,EAAE,OACtE,MAAO,CACLq+I,GAAsBllK,GAAQ,OAAQlE,CAAK,EAC3CopK,GAAsB,MAAOC,GAAoBl/J,CAAQ,CAAC,EAC1Di/J,GAAsB,OAAQpwH,CAAM,EACpCowH,GAAsB,SAAUI,CAAc,GAC9C,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI,CAC7B,CAEA,SAASC,IAAex9E,EAAMu9E,EAAiB,GAAI,CACjD,MAAO,CACLJ,GAAsB,OAAQn9E,GAAM,KAAK,EACzCm9E,GAAsB,MAAOC,GAAoBp9E,GAAM,EAAE,CAAC,EAC1Dm9E,GAAsB,OAAQn9E,GAAM,MAAM,EAC1Cm9E,GAAsB,SAAUI,CAAc,GAC9C,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI,CAC7B,CAEA,SAASE,IAAoB,CAAE,MAAAj2J,GAAS,CACtC,MAAMk2J,EAAkB,KAAK,IAC3B,KAAK,IAAI,KAAK,MAAM,OAAOl2J,CAAK,GAAK,CAAC,EAAG,CAAC,EAC1C,KAAK,MAAMszJ,GAAiBF,EAAiB,GAG/C,OAAI8C,EAAkB,EACb,WAIN,QAAK,UAAU,gDAAgD,cAAY,OACzE,eAAM,KAAK,CAAE,OAAQA,EAAiB,EAAE,IAAI,CAACxrI,EAAGtkC,IAC/CmK,MAAC,QAEC,UAAU,uDACV,MAAO,CAAE,KAAM,GAAGnK,EAAQgtK,GAAoBC,GAAsB,KAAK,EAFpEjtK,CAAA,CAIR,EACH,CAEJ,CAEA,SAAS+vK,GAAY,CAAE,SAAA/kK,GAAY,CACjC,OACEb,MAAC,OACC,UAAW2iK,GACX,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,OACZ,cAAc,QACd,eAAe,QACf,eAAe,qBACf,cAAY,OAEX,SAAA9hK,CAAA,EAGP,CAEA,SAASglK,IAAkB,CAAE,IAAA9+I,EAAK,KAAA7mB,GAAQ,CACxC,MAAMyR,EAAiB,OAAOzR,GAAQ,EAAE,EAAE,OACpC0F,EAAOg/J,IAAoB79I,EAAKpV,CAAc,EAC9Cm0J,EAAS,YAAYnD,EAAoB,GAC/C,OAAIhxJ,IAAmB,aACd,KAELA,IAAmB,QACjB/L,IAAS,eAERggK,GAAA,CACC,UAAA5lK,MAAC,QAAK,EAAE,mBAAmB,EAC3BA,MAAC,QAAK,EAAE,2BAA2B,GACrC,EAIFA,MAAC,QAAK,UAAW8lK,EAAQ,cAAY,OACnC,SAAA9lK,MAAC,QAAK,UAAU,uFAAuF,EACzG,EAGA2R,IAAmB,OACjB/L,IAAS,kBAERggK,GAAA,CACC,UAAA5lK,MAAC,WAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EACrCA,MAAC,QAAK,EAAE,SAAS,EACjBA,MAAC,QAAK,EAAE,UAAU,EAClBA,MAAC,WAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GACxC,EAGA4F,IAAS,cAERggK,GAAA,CACC,UAAA5lK,MAAC,QAAK,EAAE,YAAY,EACpBA,MAAC,QAAK,EAAE,WAAW,EACnBA,MAAC,QAAK,EAAE,gCAAgC,GAC1C,EAGA4F,IAAS,gBAERggK,GAAA,CACC,UAAA5lK,MAAC,UAAO,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,EAC5BA,MAAC,QAAK,EAAE,wCAAwC,EAChDA,MAAC,QAAK,EAAE,UAAU,GACpB,EAGA4F,IAAS,eAERggK,GAAA,CACC,UAAA5lK,MAAC,WAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EACzCA,MAAC,WAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAC5C,EAGA4F,IAAS,gBAERggK,GAAA,CACC,UAAA5lK,MAAC,QAAK,EAAE,+BAA+B,EACvCA,MAAC,QAAK,EAAE,gBAAgB,QAAQ,OAAO,GACzC,EAIFA,MAAC,QAAK,UAAW8lK,EAAQ,cAAY,OACnC,SAAA9lK,MAAC,QAAK,UAAU,yEAAyE,EAC3F,EAGA2R,IAAmB,OACjB/L,IAAS,gBAERggK,GAAA,CACC,UAAA5lK,MAAC,UAAO,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM,EAC9BA,MAAC,UAAO,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM,KAAK,eAAe,OAAO,OAAO,QAAQ,OAAO,GACjF,EAGA4F,IAAS,UAET5F,MAAC4lK,GAAA,CACC,SAAA5lK,MAAC,WAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAC3C,EAGA4F,IAAS,gBAERggK,GAAA,CACC,UAAA5lK,MAAC,QAAK,EAAE,qCAAqC,EAC7CA,MAAC,UAAO,GAAG,MAAM,GAAG,OAAO,EAAE,MAAM,KAAK,eAAe,OAAO,OAAO,EACrEA,MAAC,UAAO,GAAG,OAAO,GAAG,MAAM,EAAE,MAAM,KAAK,eAAe,OAAO,OAAO,GACvE,EAIFgB,OAAC,QAAK,UAAW8kK,EAAQ,cAAY,OACnC,UAAA9lK,MAAC,QAAK,UAAU,iFAAiF,EACjGA,MAAC,QAAK,UAAU,+DAA+D,EAC/EA,MAAC,QAAK,UAAU,gEAAgE,GAClF,EAGG,IACT,CAEA,SAAS+lK,IAAiB,CAAE,IAAAh/I,GAAO,CACjC,MAAMi+I,EAAeN,GAAoB39I,CAAG,EAC5C,OAAIi+I,EACKhlK,MAAC6lK,IAAA,CAAkB,IAAA9+I,EAAU,KAAMi+I,CAAA,CAAc,EAEnD,IACT,CAEA,SAASgB,IAA0Bp+E,EAAe,CAChD,OAAK,MAAM,QAAQA,CAAa,EAGzBA,EACJ,OAAQK,GAASA,GAAQ,OAAOA,GAAS,QAAQ,EACjD,IAAI,CAACA,EAAMpyF,IAAU,CACpB,MAAMowK,EAAa,IAAIpwK,EAAQ,CAAC,GAC1ByT,EAAK,OAAO2+E,EAAK,IAAMg+E,CAAU,EAAE,QAAUA,EAC7CC,EAAc,OAAOj+E,EAAK,aAAeA,EAAK,MAAQ,EAAE,EAAE,OAC1Dk+E,EAAW,OAAOl+E,EAAK,OAAS,EAAE,EAAE,OACpCjsF,EAAQkqK,IAAgBC,GAAYA,IAAa78J,EAAK68J,EAAW,KAAO78J,EACxEpJ,EAAO,OAAO+nF,EAAK,MAAQA,EAAK,UAAY,MAAM,EAAE,QAAU,OAC9DE,EAAQ,OAAOF,EAAK,OAAS,EAAE,EAAE,OACjCG,EAAS,OAAOH,EAAK,QAAU,EAAE,EAAE,OACnCjrE,EAAYmrE,GAASC,EAAS,GAAGD,CAAK,OAAOC,CAAM,GAAKD,GAASC,EACjEpzC,EAAS,CAAC1rC,EAAIpJ,EAAM8c,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7D,MAAO,CACL,GAAA1T,EACA,MAAAtN,EACA,OAAAg5C,CAAA,CAEJ,CAAC,EApBM,EAqBX,CAEA,SAASoxH,IAA+B,CACtC,eAAAxiH,EACA,SAAAC,EACA,QAAAppB,EACA,QAAA4rI,CACF,EAAG,CACD,MAAMC,EAAiB3jD,GAAA,EACjB4jD,EAAgB3iH,GAAgB,QAClC0iH,EACA,OAAO1iH,GAAgB,UAAU,GAAK,EACpCE,EAAa,KAAK,IAAI,KAAK,IAAIyiH,EAAe,CAAC,EAAG1iH,CAAQ,EAEhE,OACE7jD,MAACs6H,GAAA,CACC,MAAM,OACN,MAAOwmC,IAAch9G,CAAU,EAC/B,cAAgB8uD,GAAc,CAC5ByzD,IAAUltC,GAA0BvmB,EAAW,CAC7C,SAAU9uD,EACV,IAAK,EACL,IAAKD,CAAA,CACN,CAAC,CACJ,EACA,gBAAiB,CACf,SAAU,CAACppB,EACX,UAAW,6BAGb,SAAAz6B,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAACv0E,CAAU,EAClB,IAAK,EACL,IAAKD,EACL,KAAM,IACN,cAAgB+uD,GAAcyzD,IAAUzzD,IAAY,CAAC,GAAK,CAAC,EAC3D,SAAU,CAACn4E,EACX,aAAW,uBACb,EAGN,CAEA,SAAwB+rI,IAAc,CACpC,KAAA/iK,EACA,UAAAw3H,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EACA,cAAArxH,EACA,cAAAy7G,EACA,eAAAkhD,EAAiB,GACjB,aAAAC,EACA,cAAA9+E,EAAgB,GAChB,oBAAA++E,EACA,qBAAAC,EAAuB,GACvB,6BAAAC,EACA,oBAAAC,EAAsB,GACtB,gBAAA12H,EACA,qBAAAq5C,EAAuB,GACvB,gBAAA5B,EAAkB,GAClB,kBAAAk/E,EAAoB,KACpB,iBAAkBC,EAAuB,GACzC,wBAAAC,EAA0B,GAC1B,cAAA/2H,EACA,mBAAAs5C,EAAqB,GACrB,cAAA1B,EAAgB,GAChB,cAAA73C,EACA,eAAA6zH,EAAiB,GACjB,iBAAAoD,EACA,sBAAAC,EACA,iBAAAC,EACA,wBAAAC,EACA,wBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,iBAAA5mD,EACA,oBAAA6mD,EACA,iBAAAC,EACA,iBAAAC,GACA,gBAAAC,EACA,qBAAAC,EACA,gBAAAC,GACA,sBAAAC,GAAwB,GACxB,4BAAAC,GAA8B,GAC9B,uBAAAC,GACA,aAAAC,GACA,mBAAAC,GACA,WAAAC,GAAa,KACb,sBAAAl2B,GAAwB,GACxB,iBAAAtO,GAAmB,KACnB,uBAAAuO,GAAyB,GACzB,kBAAAX,GAAoB,GACpB,gBAAAC,GACA,8BAAA8F,GAAgC,GAChC,YAAA1B,GAAc,GACd,cAAA2B,GAAgB,KAChB,eAAAC,GAAiB,GACjB,uBAAAC,EACF,EAAG,CACD,MAAM2wB,GAAU9gG,SAAO,IAAI,GAAK,EAC1B+gG,GAAiC/gG,SAAO,EAAE,EAC1CghG,GAAc,MAAM,QAAQn4H,CAAe,EAAIA,EAAkB,GACjEo4H,GAAyBh+E,UAC7B,IAAM,IAAI,KAAK,MAAM,QAAQf,CAAoB,EAAIA,EAAuB,IAAI,IAAKngF,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,EACpI,CAACmgF,CAAoB,GAEjBg/E,GAA4B,OAChC,MAAM,QAAQh/E,CAAoB,GAAIA,EAAqBA,EAAqB,OAAS,CAAC,GAAK,EAAK,EACpG,OACIi/E,GAAoBl+E,UACxB,IAAM,IAAI,KAAK,MAAM,QAAQ3C,CAAe,EAAIA,EAAkB,IAAI,IAAKv+E,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,EAC1H,CAACu+E,CAAe,GAEZxd,GAAY,MAAM,QAAQp6B,CAAa,EAAIA,EAAgB,GAC3D04H,GAAmBn+E,UACvB,IAAM,IAAI,KAAK,MAAM,QAAQs5E,CAAc,EAAIA,EAAiB,IAAI,IAAKx6J,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,EACxH,CAACw6J,CAAc,GAEXjuE,GAA+B,OAAOrM,GAAsB,EAAE,EAAE,OAChEo/E,GAA0B,OAAO9gF,GAAiB,EAAE,EAAE,OACtD+gF,GAAsBr+E,UAAQ,IAC7B,MAAM,QAAQu8E,CAAiB,EAG7B,IAAI,IAAIA,EAAkB,IAAKz9J,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,EAF5E,KAGR,CAACy9J,CAAiB,CAAC,EAChB+B,GAAWpC,EACXqC,GAAmB9/J,GAAqB6/J,EAAQ,EAChDE,GAAmBD,GAAiB,OAAS,IACjDtC,GACA59J,IAAeigK,EAAQ,IAAM3gK,IAEzB8gK,GAAmBz+E,UACvB,IAAMw7E,IAA0Bp+E,CAAa,EAC7C,CAACA,CAAa,GAGVshF,GADgBH,GAAiB,OAASE,GAAiB,OACvB/F,GACpCiG,GAAiCD,GACnC,KAAK,IAAIH,GAAiB,OAAQ7F,EAAgB,EAClD6F,GAAiB,OACfK,GAA4BF,GAC9B,KAAK,IAAIhG,GAAmBiG,GAAgC,CAAC,EAC7DF,GAAiB,OACfI,GAAiB7+E,UACrB,IAAM17E,GAA2Bg6J,GAAUnC,EAAqB,CAC9D,SAAUqC,GACV,oBAAqB,GACtB,EACD,CAACA,GAAkBrC,EAAqBmC,EAAQ,GAE5CQ,GAAqC9+E,UACzC,IAAMi+E,IACFY,GAAe,KAAMtiJ,GAAQ,OAAOA,GAAK,qBAAuB,EAAE,EAAE,SAAW0hJ,EAAyB,GAAK,KAEjH,CAACA,GAA2BY,EAAc,GAEtCE,GAA8B/+E,UAAQ,IACrC0+E,GAGoB,CACvB,GAAGX,GACHvB,EACAsC,IAAoC,IAEnC,IAAKhgK,IAAO,OAAOA,IAAM,EAAE,EAAE,MAAM,EACnC,OAAO,OAAO,EACO,KAAMC,IAC5BsF,GAA8Bi6J,GAAUv/J,EAAM,GAAK4/J,EACpD,EAXQ,GAYR,CACDG,GACAtC,EACAmC,GACAD,GACAX,GACAO,EAAA,CACD,EACKU,GAAyBh/E,UAAQ,IACjC,CAAC0+E,IAAqBR,GAAkB,KAAO,GAAKU,IAA6BH,GAAiB,OAC7F,GAEFA,GAAiB,KAAK,CAAChhF,EAAMpyF,KAClCA,IAASuzK,IACTV,GAAkB,IAAI,OAAOzgF,GAAM,IAAM,EAAE,EAAE,MAAM,CACpD,EACA,CACDghF,GACAG,GACAF,GACAR,EAAA,CACD,EACKe,GAAwBP,KAC5BK,IACAC,IAEIE,GAAoBR,KACxBtC,GACA6C,IAEIhG,GAAcj5E,UAClB,IAAM17E,GAA2Bg6J,GAAUnC,EAAqB,CAC9D,SAAUqC,GACV,eAAgB9F,GAChB,oBAAqB,CAACgG,IAAqBQ,EAAA,CAC5C,EACD,CAACV,GAAkBrC,EAAqBuC,GAAmBQ,GAAmBZ,EAAQ,GAElFa,GAAuBT,GACzB,KAAK,IAAIH,GAAiB,OAASI,GAAgC,CAAC,EACpE,EACES,GAAyBp/E,UAC7B,IAAMi5E,GAAY,IAAK18I,GAAQ,OAAOA,GAAK,IAAM,EAAE,CAAC,EAAE,KAAK;AAAA,CAAI,EAC/D,CAAC08I,EAAW,GAERoG,GAAmBr/E,UACvB,IAAMg5E,IAAqBC,GAAap5F,EAAS,EACjD,CAACA,GAAWo5F,EAAW,GAEnBqG,GAAqBt/E,UACzB,IAAMq5E,IAAuBJ,GAAaK,CAAc,EACxD,CAACA,EAAgBL,EAAW,GAExBsG,GAAkBtD,GAAkBuC,GACtCvF,GAAY,OAAS,EACrBA,GAAY,KAAM18I,GAAQA,GAAK,WAAW,EACxCijJ,GAAkBd,IAAqB,CAACQ,GAC1CT,GAAiB,MAAM,EAAGG,EAAyB,EACnDH,GAEEgB,GADchB,GAAiB,OAAS,EAExCiB,GAAmBF,GAAgB,OAAS,EAC5CG,GAAkBjB,IAAqB,CAACQ,GAC1C,KAAK,IAAIT,GAAiB,OAASe,GAAgB,OAAQ,CAAC,EAC5D,EACEI,GAAqBT,GAAuBQ,GAC5CE,GAAuBnB,KAC3B,CAACO,IACD7C,GAEI0D,GAAwBZ,GAC1B,YACA,QAAQU,EAAkB,QACxBG,GAAwBb,GAC1B,YACA,YACEc,GAAmBH,GACvBrqK,MAAC,OAAI,UAAU,SAAS,KAAK,eAC3B,SAAAA,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,KACL,UAAW0jK,IACX,MAAOoH,GACP,QAAUtmK,GAAU,CAClBA,EAAM,kBACN4iK,IAA+B,CAAC6C,EAAiB,CACnD,EAEC,SAAAY,EAAA,GAEL,EACE,KACEG,GAAyBjgF,UAC7B,IAAMi+E,IACFhF,GAAY,KAAM18I,GAAQ,OAAOA,GAAK,qBAAuB,EAAE,EAAE,SAAW0hJ,EAAyB,GAAK,KAE9G,CAACA,GAA2BhF,EAAW,GAEnCiH,GAAsB,OAAO1D,GAAwBuB,GAAYA,GAAY,OAAS,CAAC,GAAK,EAAE,EAAE,OAChGoC,GAAmB,OAAOF,IAAwB,IAAMC,IAAuB,EAAE,EAAE,OACnFE,GAAgBpgF,UACpB,IAAMmgF,IACFlH,GAAY,KAAM18I,GAChB,OAAOA,GAAK,IAAM,EAAE,EAAE,SAAW4jJ,IACjC,OAAO5jJ,GAAK,MAAM,iBAAmB,EAAE,EAAE,SAAW4jJ,EACrD,GAAK,KAEV,CAACA,GAAkBlH,EAAW,GAE1BoH,GAA2BD,IAAe,MAAM,aAAe,GACjE,GACA,EAAQlG,GAAoBkG,EAAa,EACvCE,GAAgBnC,GAAiB,KAAO,EACxCoC,GAA6BtE,IAAmB,GAChDuE,EAAkB,MAAM,QAAQvzB,EAAc,GAAKA,GAAe,SAASurB,EAAa,EACxFiI,GAAqBlD,GACvB,OAAOC,IAA+B,4DAA4D,EAAE,OACpG,GACEkD,EAAwB1gF,UAC5B,IAAM,IAAI,KAAK,MAAM,QAAQm8E,CAAmB,EAAIA,EAAsB,IAAI,IAAKr9J,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,EAClI,CAACq9J,CAAmB,GAEhBwE,GAAwB3gF,UAC5B,IAAM,IAAI,KAAK,MAAM,QAAQs8E,CAAmB,EAAIA,EAAsB,IAAI,IAAKx9J,GAAO,OAAOA,GAAM,EAAE,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,EAClI,CAACw9J,CAAmB,GAEhBsE,GAAsBrkJ,GAAQ,CAClC,MAAMk9I,GAAQ,OAAOl9I,GAAK,IAAM,EAAE,EAAE,OACpC,MAAO,GAAQA,GAAK,aAAgBk9I,IAASkH,GAAsB,IAAIlH,EAAK,EAC9E,EACMoH,GAAwB7gF,UAAQ,IAAM,CAC1C,MAAM/wC,EAAM,GACNwL,OAAW,IACjB,UAAWl+B,MAAO08I,GAAa,CAC7B,MAAMQ,GAAQ,OAAOl9I,IAAK,IAAM,EAAE,EAAE,OAChC,CAACk9I,IAASh/G,GAAK,IAAIg/G,EAAK,GAGxBmH,GAAmBrkJ,EAAG,IACxBk+B,GAAK,IAAIg/G,EAAK,EACdxqH,EAAI,KAAKwqH,EAAK,EAElB,CACA,OAAOxqH,CACT,EAAG,CAAC0xH,GAAuB1H,EAAW,CAAC,EACjC6H,GAAiC9gF,UACrC,IAAM6gF,GAAsB,OAAQ9hK,GAAW,CAAC2hK,EAAsB,IAAI3hK,CAAM,CAAC,EACjF,CAAC8hK,GAAuBH,CAAqB,GAEzCK,GAAgC/gF,UACpC,IAAM6gF,GAAsB,OAAQ9hK,GAAW2hK,EAAsB,IAAI3hK,CAAM,CAAC,EAChF,CAAC8hK,GAAuBH,CAAqB,GAEzCM,GAAiBhhF,UAAQ,IAAM,CACnC,MAAMiE,MAAU,IAChB,UAAW1nE,MAAO08I,GAAa,CAC7B,MAAMQ,GAAQ,OAAOl9I,IAAK,IAAM,EAAE,EAAE,OAChCk9I,IACFx1E,EAAI,IAAIw1E,GAAOl9I,EAAG,EAEpB,MAAM0kJ,GAAiB,OAAO1kJ,IAAK,MAAM,iBAAmB,EAAE,EAAE,OAC5D0kJ,IAAkB,CAACh9E,EAAI,IAAIg9E,EAAc,GAC3Ch9E,EAAI,IAAIg9E,GAAgB1kJ,EAAG,CAE/B,CACA,OAAO0nE,CACT,EAAG,CAACg1E,EAAW,CAAC,EAEViI,GAAsB,CAACz5K,EAAY2uB,GAAY,IAAM,CACzD,GAAI,CAAC6iJ,GAAY,OACf,OAEF,MAAMhkJ,GAAOmB,GAAY,EAAI,GAAK,EAClC,IAAI/qB,GAAQ,KAAK,IAAI,KAAK,IAAI,OAAO5D,CAAU,GAAK,EAAG,CAAC,EAAGwxK,GAAY,OAAS,CAAC,EACjF,KAAO5tK,IAAS,GAAKA,GAAQ4tK,GAAY,QAAQ,CAC/C,MAAMQ,GAAQ,OAAOR,GAAY5tK,EAAK,GAAG,IAAM,EAAE,EAAE,OAC7CiT,GAAOm7J,GAAQoE,GAAQ,QAAQ,IAAIpE,EAAK,EAAI,KAClD,GAAIn7J,IAAQA,GAAK,aAAa,eAAe,IAAM,OAAQ,CACzDA,GAAK,UACLq7J,GAAuBr7J,GAAM,CAAE,MAAO,UAAW,EACjD,MACF,CACAjT,IAAS4pB,EACX,CACF,EAEMksJ,GAAuBvD,IAAY,YAAc,KACjDwD,GAAuB,MAAM,QAAQD,IAAsB,UAAU,EAAIA,GAAqB,WAAa,GAC3GE,GAAuB,MAAM,QAAQF,IAAsB,UAAU,EAAIA,GAAqB,WAAa,GAC3GG,GAAmB,OAAO1D,IAAY,QAAU,EAAE,EAAE,OACpD2D,GAAkB,OAAO3D,IAAY,OAAS,EAAE,EAAE,OAClD4D,GAAmB5D,IAAY,iBAAmB,GAClD6D,GAA2B7D,IAAY,gBAAkB,GACzD8D,GAA8B,KAAK,IAAI,OAAOD,GAAyB,QAAQ,GAAK,EAAG,IAAK,EAC5FE,GAAoB/D,IAAY,UAAY,GA2BlD,OAzBA9lG,YAAU,IAAM,CACd,MAAM8pG,EAAY,OAAOnF,GAA2B,EAAE,EAAE,OACxD,GAAI,CAACmF,GAAaA,IAAc9D,GAA+B,SAAW,CAACqC,IAAoB,CAACK,EAC9F,OAEF,MAAMqB,GAAyB,IAAM,CACnC,MAAMC,GAAajE,GAAQ,QAAQ,IAAIsC,EAAgB,EAClD2B,KAGLhE,GAA+B,QAAU8D,EACzCjI,GAAuBmI,GAAY,CACjC,MAAOzB,GAA2B,SAAW,UAC9C,EACH,EACA,GAAI,OAAO,OAAW,IAAa,CACjCwB,GAAA,EACA,MACF,CACA,MAAMpwD,GAAU,OAAO,sBAAsBowD,EAAsB,EACnE,MAAO,IAAM,CACX,OAAO,qBAAqBpwD,EAAO,CACrC,CACF,EAAG,CAAC0uD,GAAkBE,GAA0B5D,EAAyB+D,EAAiBpB,EAAsB,CAAC,EAE5G9/J,EAKH9J,MAACg7H,GAAA,CACC,KAAAv3H,EACA,MAAM,OACN,UAAAw3H,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EAEA,SAAAn6H,OAACs0H,GAAA,CACC,KAAK,WACL,MAAOmiB,GACP,cAAeC,GAEf,UAAA13I,MAACw1I,GAAA,CAAkB,MAAOK,EAAA,CAAa,EAEvC71I,MAACs4H,GAAA,CACC,MAAO0qC,GACP,MAAM,OACN,aAAc,CAAE,MAAOiI,IAAsB,QAE3C,SAAAjrK,MAAC,OAAI,UAAU,yCACb,SAAAgB,OAAC,OACC,UAAU,yBACV,KAAK,OACL,uBAAqB,OACrB,gBAAe+mK,GACf,MAAOkD,IAAsB,OAC7B,QAAUhnK,GAAU,CACd8jK,IAGA9jK,EAAM,SAAWA,EAAM,eACzB0jK,KAAA,CAEJ,EAED,UAAAsC,SACE,OAAI,UAAWvH,GAAuB,KAAK,eAAe,qBAE3D,EACE,KAEHn9C,GAAiB,CAACk+C,GAAY,aAC5B,KAAE,UAAU,kDAAkD,gCAE/D,EACE,KAEHsG,GACGtG,GAAY,IAAI,CAAC18I,EAAKoB,KAAa,CAEnC,MAAM68I,GADgBj+I,GAAK,MAAM,aAAe,GACX,GAAK29I,GAAoB39I,CAAG,EAC3DwlJ,GAAc,EAAQvH,GACtBf,GAAQ,OAAOl9I,EAAI,IAAM,EAAE,EAAE,OAC7B0kJ,GAAiB,OAAO1kJ,EAAI,MAAM,iBAAmBA,EAAI,IAAM,EAAE,EAAE,OACnEw+I,GAAsB,OAAOx+I,EAAI,qBAAuB,EAAE,EAAE,OAC5DylJ,GAAiBD,GAAc,OAAOxlJ,EAAI,MAAM,QAAU,EAAE,EAAE,OAAS,GACvE0lJ,GAAwB,EAAQzH,IACpCO,IACA,OAAO4B,GAA0B,WAC7BuF,GAAY,OAAO3lJ,EAAI,QAAU,EAAE,EAAE,OACrC4lJ,GAAkB3H,GAAe,GAAK0H,GACtCE,GAAe7H,IAAqBh+I,EAAKi+I,GAAc0H,EAAS,EAChEG,GAAiBzB,GAAmBrkJ,CAAG,EACvC+lJ,GAAc,EAAQ/lJ,EAAI,SAC1BwpB,GAAWg8H,GACb/D,GAAuB,IAAIjD,EAAmB,EAC9CgD,GAAY,SAASkD,EAAc,EACjCsB,GAA+BR,IAAeC,KAClD1C,IAAoB,IAAI0C,EAAc,GACtC7D,GAAiB,IAAI6D,EAAc,GACnC3D,IAAqB,IAAI2D,EAAc,GAEnCQ,GAAkB,CAAClD,IACvBA,GAAmB,IAAI7F,EAAK,GAC5B8I,GACIzoD,GAAU,CAACioD,IAAe5D,GAAiB,IAAI1E,EAAK,EACpDgJ,IAA8BjI,KAAiB,SAAWA,KAAiB,eAC/E2D,GAAiB,IAAI,OAAO5hJ,EAAI,MAAM,QAAU,EAAE,EAAE,MAAM,EACtDmmJ,GAAaX,GACfE,IAAyBO,IAAmB,CAACC,GAC7C,CAAC3oD,KAAY,CAACukD,IAAuBA,GAAoB,IAAI4C,EAAc,GAAKl7H,IAC9ED,GAASu5H,GAAiB,IAAI,OAAO9iJ,EAAI,IAAM,EAAE,EAAE,MAAM,EACzDomJ,GAAiBrC,IAAiB,CAACkC,GACnCI,GAAuBrF,IAAyBz3H,IAAU,CAAC48H,GAC3DG,GAAuB98H,IAAY,CAACD,IAAU,CAACg0E,IAAW,CAAC2oD,GAC3Dz8H,GAAU,CAACF,IAAU,CAAC88H,KAC1Bb,GACIhH,IAAuB1vE,KAAiC0vE,GACxDr1H,IAAkBu7H,IAElB6B,GAAoBrC,KACtBiC,GAME,GALAD,GACE,mDACCV,GAEC,GADAzB,GAAgB,mCAAqC,iDAWzDyC,GAAkBH,IAAwB,EARd,CAACb,IACjCxB,IACA,CAAChD,KAECzjD,GACI,OAAOkjD,GAAsB,WAC7B,OAAOS,IAA2B,aAGpCuF,GAAWlI,IAAmBv+I,EAAK,CACvC,aAAAi+I,GACA,oBAAAO,GACA,OAAQmH,GACR,eAAgBY,EAAA,CACjB,EACKG,GAAa,KAAK,IAAI,KAAK,IAAI1mJ,EAAI,MAAO,CAAC,EAAI87I,GAAmBE,EAAc,EAChF2K,GAAazpK,IAAU,CAC3B,MAAM0pK,GAAc1pK,GAAM,SACtBsoK,GACFpF,IAAwB5B,GAAqB,CAAE,YAAAoI,GAAa,EAE5DzG,IAAmBuE,GAAgB,CAAE,YAAAkC,GAAa,CAEtD,EACMC,GAAsB,IAAM,CAChC,GAAI,CAAAR,GAGJ,IAAIb,GAAa,CACXhH,IACFsC,IAAuBtC,EAAmB,EAE5C,MACF,CACAqC,IAAkB6D,EAAc,EAClC,EACMoC,GAAoB,IAAM,CAC9B,GAAItB,GAAa,CACXhH,IACFsC,IAAuB,EAAE,EAE3B,MACF,CACKuF,IACHxF,IAAkB,EAAE,CAExB,EACMkG,GAAkB7pK,IAAU,CAChC,GAAImpK,GAAsB,CACxBnpK,GAAM,iBACN,MACF,CACAypK,GAAUzpK,EAAK,CACjB,EACMiyI,GAAoBjyI,IAAU,CAClC,GAAI,EAAAA,GAAM,SAAWA,GAAM,eAAiBmpK,IAG5C,IAAInpK,GAAM,MAAQ,YAAa,CAC7BA,GAAM,iBACNynK,GAAoBvjJ,GAAW,EAAG,CAAC,EACnC,MACF,CACA,GAAIlkB,GAAM,MAAQ,UAAW,CAC3BA,GAAM,iBACNynK,GAAoBvjJ,GAAW,EAAG,EAAE,EACpC,MACF,CACA,GAAIlkB,GAAM,MAAQ,OAAQ,CACxBA,GAAM,iBACNynK,GAAoB,EAAG,CAAC,EACxB,MACF,CACA,GAAIznK,GAAM,MAAQ,MAAO,CACvBA,GAAM,iBACNynK,GAAoBjI,GAAY,OAAS,EAAG,EAAE,EAC9C,MACF,CACA,GAAIx/J,GAAM,MAAQ,SAAWA,GAAM,MAAQ,IAAK,CAC9CA,GAAM,iBACNypK,GAAUzpK,EAAK,EACf,MACF,CACA,GAAI4oK,IAAkB5oK,GAAM,MAAQ,cAAgB,CAAC6oK,GAAa,CAChE7oK,GAAM,iBACNyjK,IAAmB3gJ,EAAI,EAAE,EACzB,MACF,CACI8lJ,IAAkB5oK,GAAM,MAAQ,aAAe6oK,KACjD7oK,GAAM,iBACNyjK,IAAmB3gJ,EAAI,EAAE,GAE7B,EACMgnJ,GAA8BzpD,GAChC,OAAOkjD,GAAsB,WAC7B,OAAOD,GAAoB,WACzByG,GAAwBjG,IAA0B,CAACmF,IAAc,CAAC38H,IAAcD,IAAU,CAACC,GAC3F09H,GAAuB1B,IAC3BxE,IACA,CAACgG,IACA,CAACzpD,IAAW,CAAC4oD,IAAc,CAAC38H,GACzB29H,GAAiC,CAAC3B,IACtCzB,IACAnC,GAAiB,KAAO,GACxB,OAAO/nD,GAAqB,WACxButD,GAA2B5B,IAC/BxE,IACAz3H,IACA,OAAOm3H,GAAwB,WAC3B2G,GAAyB7B,IAC7BxE,KACCz3H,GACG,OAAO63H,IAAuB,WAC9B,OAAOD,IAAiB,YACxBmG,GAA4B9B,IAChCjoD,IACA,CAACymD,IACD,OAAO9C,IAA2B,WAC9BqG,GAA0B/B,GAI5B,GAHAhE,GACC,IAAKj/J,IAAO,OAAOA,IAAM,EAAE,EAAE,MAAM,EACnC,OAAO,OAAO,EAEbilK,GAAiBhC,GAKnB,GAJA,MAAM,KAAK,IAAI,IAAI,CACnB,GAAG+B,GACH7C,EAAA,EACA,OAAO,OAAO,CAAC,CAAC,EAEd+C,GAAaD,GAChB,IAAKhlK,IAAWiiK,GAAe,IAAIjiK,EAAM,GAAK,IAAI,EAClD,OAAO,OAAO,EACXklK,GAAyBD,GAC5B,OAAQE,IAActD,GAAmBsD,EAAS,GAAK,CAACxD,EAAsB,IAAI,OAAOwD,GAAU,IAAM,EAAE,EAAE,MAAM,CAAC,EACpH,IAAKA,IAAc,OAAOA,GAAU,IAAM,EAAE,EAAE,MAAM,EACpD,OAAO,OAAO,EACXC,GAAwBH,GAC3B,OAAQE,IAActD,GAAmBsD,EAAS,GAAKxD,EAAsB,IAAI,OAAOwD,GAAU,IAAM,EAAE,EAAE,MAAM,CAAC,EACnH,IAAKA,IAAc,OAAOA,GAAU,IAAM,EAAE,EAAE,MAAM,EACpD,OAAO,OAAO,EACXE,GAAqBL,GAAc,QAAU,EAC7CluD,GAAyBouD,GAAuB,OAAS,GAC7D,OAAO/G,GAAqB,WACxBpnD,GAA2BquD,GAAsB,OAAS,GAC9D,OAAOjH,GAAqB,WACxBnnD,GAAoB+qD,GAA+B,OAAS,GAChE,OAAO5D,GAAqB,WACxBlnD,GAAsB+qD,GAA8B,OAAS,GACjE,OAAO7D,GAAqB,WACxBmH,GAAwBtC,GAAchH,GAAsBkG,GAClE,OACEzqK,OAAC,OAAiB,UAAU,8BAC1B,UAAAhB,MAAC0lK,IAAA,CAAoB,MAAO3+I,EAAI,MAAO,EACvC/mB,MAAC,OACC,UAAU,oDACV,MAAOytK,GAAa,EAAI,CAAE,WAAY,GAAGA,EAAU,MAAS,OAE5D,SAAAzsK,OAACu/I,GAAA,CAAY,MAAO,GAClB,UAAAvgJ,MAACygJ,GAAA,CAAmB,QAAO,GACzB,SAAAz/I,OAAC,OACC,IAAM8H,IAAS,CACb,GAAIA,GAAM,CACRu/J,GAAQ,QAAQ,IAAIthJ,EAAI,GAAIje,EAAI,EAC5B2iK,IAAkBA,KAAmB1kJ,EAAI,IAC3CshJ,GAAQ,QAAQ,IAAIoD,GAAgB3iK,EAAI,EAE1C,MACF,CACAu/J,GAAQ,QAAQ,OAAOthJ,EAAI,EAAE,EACzB0kJ,IAAkBA,KAAmB1kJ,EAAI,IAC3CshJ,GAAQ,QAAQ,OAAOoD,EAAc,CAEzC,EACA,KAAK,WACL,gBAAeoB,GAAiBC,GAAc,OAC9C,gBAAev8H,GACf,aAAYq8H,GACZ,yBAAwB7lJ,EAAI,IAAM,OAClC,2BAA0BA,EAAI,UAAY,OAC1C,uCAAsCw+I,IAAuB,OAC7D,0BAAyB6H,GAAuB,OAAS,OACzD,gBAAeG,GACf,SAAUH,GAAuB,GAAK,EACtC,UAAW9tK,EACT,sHACA8tK,GACI,4CACA,mLACJC,GACI,+DACA78H,IAAW,oDACdF,IAAU68H,KAAmB,cAEhC,MAAOK,GACP,QAASM,GACT,UAAW53B,GACX,aAAc03B,GACd,aAAcC,GAEd,UAAA7sK,OAAC,OAAI,UAAU,2DACZ,UAAA6rK,GACC7sK,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,UAAW8iK,IACX,QAAUt+J,IAAU,CAClBA,GAAM,kBACNyjK,IAAmB3gJ,EAAI,EAAE,CAC3B,EACA,aAAY+lJ,GAAc,YAAY/lJ,EAAI,KAAK,GAAK,UAAUA,EAAI,KAAK,GACvE,MAAO+lJ,GAAc,WAAa,SAElC,SAAA9sK,MAACo+G,GAAA,CACC,UAAW9+G,EAAG,gCAAiCwtK,IAAe,WAAW,EACzE,YAAa,EACb,cAAY,QACd,GAEA,KACJ9rK,OAAC,OACC,UAAW1B,EACTmjK,IACA,kHACA2K,IAAwB,8BAG1B,UAAAptK,MAAC+lK,KAAiB,IAAAh/I,EAAU,QAC3B,QAAK,UAAU,iCACd,SAAA/lB,OAAC,QAAK,UAAU,oFACd,UAAAhB,MAAC,QAAK,UAAU,mBACb,SAAA+mB,EAAI,MACP,EACC4lJ,GACC3sK,MAAC,QAAK,UAAU,2DACb,YACH,EACE,MACN,EACF,IACF,EACF,EACC,CAACusK,IAAexB,GACf/qK,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,UAAWH,EACTkjK,IACA,gBACA,CAAClyH,IAAU,CAAC+8H,IAAwB,CAAC78H,IAAW,CAAC8zE,IAAW,uEAC5Dh0E,IAAU,kBACVy3H,IAAyB,+EAE3B,SAAUA,KACRzjD,GACI,OAAOkjD,GAAsB,WAC7B,OAAOS,IAA2B,YAExC,aAAY3jD,GACR,oBAAoBv9F,EAAI,KAAK,GAC7BupB,GAAS,QAAQvpB,EAAI,KAAK,GAAK,QAAQA,EAAI,KAAK,GACpD,MAAOu9F,GAAU,eAAiBh0E,GAAS,OAAS,OACpD,QAAUrsC,IAAU,CAElB,GADAA,GAAM,kBACFqgH,GAAS,CACXkjD,IAAoBzgJ,EAAI,EAAE,EAC1B,MACF,CACAkhJ,KAAyBlhJ,EAAI,EAAE,CACjC,EAEC,SAAAu9F,GACCtkH,MAAC8pH,GAAA,CAAE,UAAU,SAAS,YAAa,EAAG,cAAY,OAAO,EACvDx5E,GACFtwC,MAACqxJ,GAAA,CAAI,UAAU,SAAS,YAAa,IAAK,cAAY,OAAO,EAE7DrxJ,MAACsxJ,GAAA,CAAO,UAAU,SAAS,YAAa,IAAK,cAAY,OAAO,IAGlE,QAER,EACAtxJ,MAAC2gJ,GAAA,CAAmB,UAAU,OAChC,SAAA3gJ,MAAC8+G,GAAA,CACC,KAAMgiC,GACN,UAAWE,GACX,SAAAzwG,GACA,SAAU+zE,GACV,OAAAh0E,GACA,YAAas+H,GACb,sBAAuB,CAACC,IAAyB,OAAOxH,GAA4B,WACpF,eAAgB2G,GAChB,YAAa,CAACzB,GACd,gBAAiB0B,GACjB,mBAAoBC,GACpB,uBAAwBnG,IAAyB,CAACmG,GAClD,cAAe,CAAC3B,GAChB,kBAAmB4B,GACnB,gBAAiBC,GACjB,aAAa,WACb,eAAgB,CAAC7B,IAAe,CAACjoD,GACjC,mBAAoB+pD,GACpB,YAAa,GACb,mBAAoBxB,IAAkB2B,GAAW,KAAME,IAActD,GAAmBsD,EAAS,CAAC,GAAKrD,GAAsB,OAAS,EACtI,uBAAAhrD,GACA,yBAAAC,GACA,kBAAAC,GACA,oBAAAC,GACA,gBAAiB,IAAM,CACrB6mD,IAA0BwH,GAAuB,CAAE,SAAUtC,EAAA,CAAa,CAC5E,EACA,SAAWtoK,IAAU,CACnB,GAAI,CAACsoK,IAAeh8H,IAAY+9H,GAAuB,OAAS,EAAG,CACjE3G,KAAA,EACA,MACF,CACA+F,GAAUzpK,EAAK,CACjB,EACA,UAAW,IAAM,CACf,GAAIqgH,GAAS,CACXkjD,IAAoBzgJ,EAAI,EAAE,EAC1B,MACF,CACAwgJ,IAAkBgH,EAAa,CACjC,EACA,iBAAkB,IAAM,CACtB3tD,IAAA,CACF,EACA,YAAa,IAAM,CACjB6mD,IAAsB8G,EAAa,CACrC,EACA,UAAW,IAAM,CACf,GAAIj+H,GAAQ,CACV63H,KAAA,EACA,MACF,CACAD,KAAA,CACF,EACA,mBAAoB,IAAM,CACxB,UAAW3+J,MAAUglK,GACnBtG,KAAyB1+J,EAAM,CAEnC,EACA,iBAAkB,IAAM,CACtB,UAAWA,MAAUklK,GACnB/G,IAAmBn+J,EAAM,CAE7B,EACA,mBAAoB,IAAM,CACxB,UAAWA,MAAUolK,GACnBjH,IAAmBn+J,EAAM,CAE7B,EACA,YAAa,IAAM,CACjB,UAAWA,MAAU+hK,GACnB5D,IAAmBn+J,EAAM,CAE7B,EACA,cAAe,IAAM,CACnB,UAAWA,MAAUgiK,GACnB7D,IAAmBn+J,EAAM,CAE7B,GACF,CACE,GACF,GACF,GAxNQwd,EAAI,EAyNd,CAEJ,CAAC,EACC,KAEFmjJ,GAAsC,KAAnBM,GAEpB,CAACT,IAAmB,CAACxkD,QACnB,KAAE,UAAU,kDAAkD,4BAE/D,EACE,KAEH2kD,GACClpK,OAAAsgE,WAAA,CACE,UAAAthE,MAAC,OAAI,UAAW0iK,GAAuB,KAAK,eAAe,iBAE3D,EACCsH,GAAgB,IAAK/hF,GAAS,CAC7B,MAAM6mF,GAAepG,GAAkB,IAAIzgF,EAAK,EAAE,EAC5C8mF,GAAcnG,KAA4B3gF,EAAK,GAC/C+mF,GAAwBjH,IAAyB,OAAOX,GAAqB,WAC7E6H,GAAYxJ,IAAex9E,EAAMgjF,EAAkB,EACnDiE,GAAcjrK,IAAU,CAC5BmjK,IAAmBn/E,EAAK,GAAI,CAAE,YAAahkF,IAAO,WAAa,GAAM,CACvE,EACA,OACEjD,OAACu/I,GAAA,CAA0B,MAAO,GAChC,UAAAvgJ,MAACygJ,GAAA,CAAmB,QAAO,GACzB,SAAAz/I,OAAC,OACC,KAAK,WACL,aAAY,CAACinF,EAAK,MAAOA,EAAK,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC9D,gBAAe6mF,GACf,gBAAeE,GACf,SAAUA,GAAwB,GAAK,EACvC,UAAW1vK,EACT,0GACA0vK,GACI,4CACA,mLACJF,GACI,+DACAC,IAAe,oDAErB,MAAOE,GACP,QAAUhrK,IAAU,CAClB,GAAI+qK,GAAuB,CACzB/qK,GAAM,iBACN,MACF,CACAirK,GAAWjrK,EAAK,CAClB,EACA,UAAYA,IAAU,CAChBA,GAAM,SAAWA,GAAM,eAAiB+qK,KAGxC/qK,GAAM,MAAQ,SAAWA,GAAM,MAAQ,OACzCA,GAAM,iBACNirK,GAAWjrK,EAAK,EAEpB,EACA,aAAc,IAAM,CACb+qK,IACHlH,KAAkB7/E,EAAK,EAAE,CAE7B,EACA,aAAc,IAAM,CACb+mF,IACHlH,KAAkB,EAAE,CAExB,EAEA,UAAA9nK,MAAC,QAAK,UAAW4iK,IAAyB,cAAY,OACpD,SAAA5iK,MAACmvK,GAAA,CAAM,UAAU,WAAW,YAAa,IAAK,EAChD,EACAnvK,MAAC,QAAK,UAAU,gDACb,WAAK,MACR,KAEJ,EACAA,MAAC2gJ,GAAA,CAAmB,UAAU,OAC5B,SAAA3gJ,MAAC8+G,GAAA,CACC,KAAMgiC,GACN,UAAWE,GACX,SAAU8tB,GACV,sBAAuB,CAAC7mF,EAAK,IAAM,OAAOq/E,GAA4B,WACtE,eAAgB0H,GAChB,YAAa,GACb,cAAe,GACf,eAAgB,GAChB,YAAa,GACb,mBAAoB,GACpB,gBAAiB,IAAM,CACrB1H,IAA0Br/E,EAAK,EAAE,CACnC,EACA,SAAUinF,EAAA,EACZ,CACF,IAtEgBjnF,EAAK,EAuEvB,CAEJ,CAAC,EACAuiF,EAAA,EACH,EACE,OACJ,CACF,IAGHmB,IAAwBG,KAAqB,WAAaC,GACzD/rK,MAACs4H,GAAA,CAAiB,MAAM,aAAa,MAAM,aACvC,SAAAt3H,OAAC+3H,GAAA,CACE,UAAA4yC,GACC3rK,MAAC86H,GAAA,CACC,MAAM,SACN,QAASqxC,GACT,gBAAkBvxC,GAAYwtC,IAAY,kBAAkBxtC,CAAO,EACnE,UAAU,uBAEV,KAEHkxC,KAAqB,UACpB9rK,MAAC,KAAE,UAAU,gDAAgD,kCAAsB,EACjF,KACH+rK,GACC/rK,MAAC,KAAE,UAAU,yDAA0D,YAAgB,EACrF,KAEH2rK,IAAwBE,GAAqB,OAC5C7qK,OAAAsgE,WAAA,CACG,UAAAuqG,GAAqB,OAAS,EAC7B7rK,MAACg5H,GAAA,CAAoB,MAAM,YACzB,SAAAh4H,OAACmuJ,GAAA,CACC,MAAO,OAAO8c,GAAyB,UAAYJ,GAAqB,CAAC,GAAG,IAAM,EAAE,EACpF,cAAgBj5D,GAAcw1D,IAAY,oBAAoBx1D,CAAS,EACvE,SAAU,CAACu5D,GAEX,UAAAnsK,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,mBAAmB,aAAW,iBAC/D,SAAAvvJ,MAACqvJ,GAAA,EAAY,EACf,QACCM,GAAA,CACE,SAAAkc,GAAqB,IAAK3vF,GACzBl8E,MAACiwJ,GAAA,CAA8B,MAAO/zE,EAAU,GAC7C,SAAAA,EAAU,OADIA,EAAU,EAE3B,CACD,EACH,KAEJ,EACE,KACJl8E,MAACg5H,GAAA,CACC,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAMiW,IAAY,0BAC3B,SAAU,CAAC+D,GAEV,UAAAF,GAAyB,QACxBjsK,MAAC4hK,GAAA,CAAM,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,QAEjEC,GAAA,CAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EAEnE7hK,MAAC,QAAM,SAAAisK,GAAyB,QAAU,QAAU,OAAO,KAE7DjrK,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAMiW,IAAY,qBAC3B,SAAU,CAAC+D,GACX,aAAW,yBACX,MAAM,UAEN,UAAAnsK,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,iBAAK,IACb,EACF,EACF,EACAA,MAAComK,IAAA,CACC,eAAgB6F,GAChB,SAAUC,GACV,QAASC,GACT,QAAS/D,IAAY,mBAEvBpoK,MAACs6H,GAAA,CACC,MAAM,QACN,MAAO,GAAGumC,GAAoBoL,GAAyB,OAAS,CAAC,CAAC,IAClE,cAAgBr5D,GAAc,CAC5Bw1D,IAAY,yBACVrH,IAAyBnuD,EAAWq5D,GAAyB,OAAS,CAAC,EAE3E,EACA,gBAAiB,CACf,SAAU,CAACE,GACX,UAAW,8BAGb,SAAAnsK,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAAC,OAAO4zC,GAAyB,KAAK,GAAK,CAAC,EACnD,IAAK7I,GACL,IAAKC,GACL,KAAM,GACN,cAAgBzwD,GAAcw1D,IAAY,yBAAyBx1D,IAAY,CAAC,GAAK,CAAC,EACtF,SAAU,CAACu5D,GACX,aAAW,wBACb,EACF,EACF,EACE,KAEHR,IAAwB,CAACC,GAAqB,aAC5C,KAAE,UAAU,gDAAgD,iCAAqB,EAChF,KACHA,GAAqB,IAAK/qH,GAAc,CACvC,MAAM3yD,GAAQ89K,KAAmBnrH,EAAU,EAAE,GAAKA,EAAU,aACtDkhH,GAAcK,IAAmCvhH,CAAS,EAChE,OAAIA,EAAU,OAAS,UAEnB7gD,MAAC86H,GAAA,CAEC,MAAOj6E,EAAU,MACjB,QAAS3yD,KAAU,GACnB,gBAAkB0sI,IAAYwtC,IAAY,oBAAoBvnH,EAAU,GAAI+5E,EAAO,EACnF,SAAU,CAACuxC,GACX,UAAWtrH,EAAU,OALhBA,EAAU,IASjBA,EAAU,OAAS,OAEnB7gD,MAACg5H,GAAA,CAAuC,MAAOn4E,EAAU,MACvD,SAAA7/C,OAACmuJ,GAAA,CACC,MAAO,OAAOjhK,IAAS,EAAE,EACzB,cAAgB0kH,IAAcw1D,IAAY,oBAAoBvnH,EAAU,GAAI+xD,EAAS,EACrF,SAAU,CAACu5D,GAEX,UAAAnsK,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,mBAAmB,aAAY1uG,EAAU,MAC1E,SAAA7gD,MAACqvJ,GAAA,EAAY,EACf,QACCM,GAAA,CACE,SAAA9uG,EAAU,QAAQ,IAAK5C,IACtBj+C,MAACiwJ,GAAA,CAA8B,MAAOhyG,GAAO,MAC1C,SAAAA,GAAO,OADOA,GAAO,KAExB,CACD,EACH,IACF,EAhBwB4C,EAAU,EAiBpC,EAGAA,EAAU,OAAS,QAEnB7gD,MAACg5H,GAAA,CAEC,MAAOn4E,EAAU,MACjB,SACE7gD,MAACksJ,GAAA,CACC,MAAO,OAAOh+J,IAAS,SAAS,EAChC,SAAW0kH,IAAcw1D,IAAY,oBAAoBvnH,EAAU,GAAI+xD,EAAS,EAChF,SAAU,CAACu5D,GACX,UAAW7sK,EAAGk3I,IAAqB,oCAAoC,EACvE,gBAAgB,WAChB,aAAa,MACb,aAAY31F,EAAU,OACxB,EAXGA,EAAU,IAgBjBA,EAAU,OAAS,eAElBm4E,GAAA,CACC,SAAAh5H,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,uBAAuB,EAC3D,QAAS,IAAMiW,IAAY,oBAAoBvnH,EAAU,GAAI,OAAO3yD,IAAS,CAAC,EAAI,CAAC,EACnF,SAAU,CAACi+K,GAEV,SAAAtrH,EAAU,OACb,EAVwBA,EAAU,EAWpC,EAIF7gD,MAACs6H,GAAA,CAEC,MAAOz5E,EAAU,MACjB,MAAO,GAAGggH,GAAoB3yK,EAAK,CAAC,GAAG2yD,EAAU,KAAO,IAAIA,EAAU,IAAI,GAAK,EAAE,GACjF,cAAgB+xD,IAAc,CAC5Bw1D,IAAY,oBAAoBvnH,EAAU,GAAIs4E,GAA0BvmB,GAAW,CACjF,SAAU1kH,GACV,IAAK2yD,EAAU,IACf,IAAKA,EAAU,IAChB,CAAC,CACJ,EACA,gBAAiB,CACf,SAAU,CAACsrH,GACX,UAAW,GAAGtrH,EAAU,KAAK,iBAG/B,SAAA7gD,MAAC43I,GAAA,CACC,UAAWvf,GACX,MAAO,CAAC,OAAOnqI,EAAK,GAAK,CAAC,EAC1B,IAAK2yD,EAAU,IACf,IAAKA,EAAU,IACf,KAAMkhH,GACN,cAAgBnvD,IAAcw1D,IAAY,oBAAoBvnH,EAAU,GAAI+xD,KAAY,CAAC,GAAK1kH,EAAK,EACnG,SAAU,CAACi+K,GACX,aAAYtrH,EAAU,OACxB,EAxBKA,EAAU,GA2BrB,CAAC,EACA8qH,IAAwBC,GAAqB,OAC5C5rK,MAACg5H,GAAA,CAAoB,UAAU,OAC7B,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAM,CACRiW,IAAY,gBACnB,EACA,MAAM,2BAEN,UAAApoK,MAACsxI,IAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACjEtxI,MAAC,QAAK,2BAAe,KAEvBgB,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAWH,EAAG6yJ,GAAsB,gBAAgB,EACpD,QAAS,IAAM,CACRiW,IAAY,iBACnB,EACA,MAAM,4BAEN,UAAApoK,MAACgiK,IAAe,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EAC3EhiK,MAAC,QAAK,4BAAgB,IACxB,EACF,EACF,EACE,MACN,EACJ,EACE,KAEHw3I,GACDx3I,MAACiyI,GAAA,CACC,MAAOnoI,EACP,sBAAAooI,GACA,iBAAAtO,GACA,uBAAAuO,GACA,kBAAAX,GACA,gBAAAC,GACA,sBAAuB8F,EAAA,EACzB,GACF,GAp0BK,IAu0BX,CCjqDA,SAAS63B,IAAc,CACrB,GAAG7gL,CACL,EAAG,CACD,aAAQ8gL,GAAA,CAAwB,YAAU,iBAAkB,GAAG9gL,EAAO,CACxE,CAEA,SAAS+gL,IAAM,CACb,UAAAx9K,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAACuvK,GAAA,CACC,YAAU,QACV,UAAWjwK,EACT,8WACAxN,CAAA,EAED,GAAGvD,CAAA,EAEV,CAEA,SAASihL,IAAW,CAClB,GAAGjhL,CACL,EAAG,CACD,aAAQkhL,GAAA,CAAqB,YAAU,cAAe,GAAGlhL,EAAO,CAClE,CAEA,SAASmhL,IAAc,CACrB,UAAA59K,EACA,GAAGvD,CACL,EAAG,CACD,OACEyR,MAAC2vK,GAAA,CACC,YAAU,iBACV,UAAWrwK,EACT,yGACAxN,CAAA,EAED,GAAGvD,CAAA,EAEV,CCrCA,SAAwBqhL,IAAY,CAAE,WAAAC,EAAY,iBAAAC,EAAkB,kBAAAC,EAAmB,kBAAAC,EAAmB,YAAAzwG,EAAa,QAAA0wG,GAAW,CAChI,MAAM7+J,EAAU4+J,GAAqBH,GAAcC,GAAoBC,EACjEG,EAAU,EAAQF,EACxB,MAAI,CAAC5+J,GAAWmuD,EACP,KAIPv+D,OAACouK,IAAA,CAAc,SAAU,KAAM,eAAe,QAC5C,UAAApvK,MAACsvK,IAAA,CACC,KAAM,GACN,UAAWY,EAAU,yCAA2C,OAChE,aAAezsK,GAAS,CACjBA,GACHwsK,IAAA,CAEJ,EAEA,SAAAjwK,MAACwvK,KAAY,SAAAp+J,CAAA,CAAQ,UAEtBs+J,IAAA,EAAc,GACjB,CAEJ,CCAA,MAAM3yB,GAAoBrlB,GACpB8e,GAAsBxe,GACtBm6B,GAAuBr6B,GACvBq4C,IAA6B,KAC7BC,IAAkC,KAExC,SAASC,GAAwBlpK,EAAMC,EAAO,CAC5C,OAAO,KAAK,IAAI,OAAOD,CAAI,EAAI,OAAOC,CAAK,CAAC,GAAK+oK,GACnD,CAEA,SAASG,GAAeC,EAAO,CAC7B,MAAMC,EAAY,OAAOD,GAAO,MAAQ,EAAE,EAAE,OAAO,cACnD,OAAOC,IAAc,cAAgBA,IAAc,UACrD,CAEA,SAASC,IAAeF,EAAO,CAC7B,OAAOD,GAAeC,CAAK,EAAI,MAAQ,GACzC,CAEA,SAASG,GAAiBxiL,EAAOqiL,EAAO,CACtC,MAAM9tH,EAAQ6tH,GAAeC,CAAK,EAAI,GAAK,IACrCn2E,EAAU,KAAK,MAAM,OAAOlsG,CAAK,EAAIu0D,CAAK,EAAIA,EAC9CkuH,EAAY,OAAO,SAASv2E,CAAO,EAAIA,EAAU,EACvD,OAAOk2E,GAAeC,CAAK,EAAI,GAAGI,CAAS,IAAW,GAAGA,CAAS,IACpE,CAEA,SAASC,GAAgB1iL,EAAOsa,EAAW,IAAK,CAC9C,MAAME,EAAe,OAAOxa,CAAK,EACjC,GAAI,CAAC,OAAO,SAASwa,CAAY,EAC/B,OAAOF,EAET,MAAM4xF,EAAU,KAAK,MAAM1xF,EAAe,GAAI,EAAI,IAClD,OAAO,OAAO,OAAO,GAAG0xF,EAAS,EAAE,EAAI,EAAIA,CAAO,CACpD,CAEA,SAASy2E,GAAuB3iL,EAAO,CACrC,MAAMwa,EAAe,OAAOxa,CAAK,EACjC,GAAI,CAAC,OAAO,SAASwa,CAAY,EAC/B,MAAO,GAET,MAAM0xF,EAAU,KAAK,MAAM1xF,EAAe,GAAK,EAAI,IACnD,OAAO,OAAO,OAAO,GAAG0xF,EAAS,EAAE,EAAI,EAAIA,CAAO,CACpD,CAEA,SAAS02E,IAAqBxlK,EAAGC,EAAG,CAClC,MAAI,CAAC,MAAM,QAAQD,CAAC,GAAK,CAAC,MAAM,QAAQC,CAAC,GAAKD,EAAE,OAAS,GAAKC,EAAE,OAAS,EAChE,GAEF,CAAC,EAAG,EAAG,CAAC,EAAE,MAAO1V,GAAU,KAAK,IAAI,OAAOyV,EAAEzV,CAAK,CAAC,EAAI,OAAO0V,EAAE1V,CAAK,CAAC,CAAC,GAAK,IAAM,CAC3F,CAEA,SAASk7K,GAAqBl6B,EAAUm6B,EAAaC,EAAaC,EAAkB,CAClF,MAAMxoK,EAAe,OAAO,SAAS,OAAOmuI,CAAQ,CAAC,EAAI,OAAOA,CAAQ,EAAIq6B,EAC5E,OAAO,KAAK,IAAI,KAAK,IAAIxoK,EAAcsoK,CAAW,EAAG,KAAK,IAAIA,EAAaC,CAAW,CAAC,CACzF,CAEA,MAAME,IAAeC,OAAK,SAAsB,CAC9C,MAAAb,EACA,SAAA15B,EACA,cAAAw6B,CACF,EAAG,CACD,MAAMC,EAAY,OAAOf,GAAO,MAAQ,EAAE,EAAE,OACtCS,EAAc,OAAO,SAAS,OAAOT,GAAO,WAAW,CAAC,EAAI,OAAOA,EAAM,WAAW,EAAI,KACxFU,EAAc,OAAO,SAAS,OAAOV,GAAO,WAAW,CAAC,EAAI,OAAOA,EAAM,WAAW,EAAI,IACxFgB,EAAeR,GAAqBl6B,EAAUm6B,EAAaC,EAAa,CAAC,EACzEO,EAAYf,IAAeF,CAAK,EAChCkB,EAAanB,GAAeC,CAAK,EAAI,EAAI,KACzCmB,EAAkBnqG,SAAO,CAAC,EAC1BoqG,EAAkBpqG,SAAOgqG,CAAY,EACrCK,EAAqBrqG,SAAOgqG,CAAY,EACxCM,EAAmBtqG,SAAO,EAAK,EAC/BuqG,EAA0BvqG,SAAO,CAAC,EAClC,CAACwqG,EAAcC,CAAe,EAAI3xG,WAASkxG,CAAY,EAEvDU,EAA4B,IAAM,CAClCH,EAAwB,SAAW,OAAO,OAAW,KACvD,OAAO,aAAaA,EAAwB,OAAO,EAErDA,EAAwB,QAAU,CACpC,EAEMI,EAAuB,CAACC,EAAeP,EAAmB,UAAY,CAC1EK,EAAA,EACAJ,EAAiB,QAAU,GAC3B,MAAMO,EAAqBrB,GAAqBoB,EAAcnB,EAAaC,EAAaW,EAAmB,OAAO,EAClHD,EAAgB,QAAUS,EAC1BJ,EAAgBI,CAAkB,CACpC,EAEMC,EAAoCF,GAAiB,CACzDR,EAAgB,QAAUQ,EAC1BN,EAAiB,QAAU,GAC3BI,EAAA,EACI,OAAO,OAAW,MACpBH,EAAwB,QAAU,OAAO,WAAW,IAAM,CACxDI,EAAA,CACF,EAAG9B,GAA+B,EAEtC,EAEA9tG,YAAU,IAAM,CAEd,GADAsvG,EAAmB,QAAUL,EACzBM,EAAiB,QAAS,CACxBxB,GAAwBkB,EAAcI,EAAgB,OAAO,GAC/DO,EAAqBX,CAAY,EAEnC,MACF,CACAI,EAAgB,QAAUJ,EAC1BS,EAAgBT,CAAY,CAC9B,EAAG,CAACA,CAAY,CAAC,EAEjBjvG,YAAU,IAAM,IAAM,CAChBovG,EAAgB,SAAW,OAAO,sBAAyB,YAC7D,qBAAqBA,EAAgB,OAAO,EAE9CO,EAAA,CACF,EAAG,EAAE,EAEL,MAAMK,EAAsB,CAACH,EAAczrK,EAAU,KAAO,CAE1D,GADAirK,EAAgB,QAAUQ,EACtB,OAAO,uBAA0B,WAAY,CAC/Cd,EAAcd,EAAO4B,EAAczrK,CAAO,EAC1C,MACF,CACIgrK,EAAgB,UAGpBA,EAAgB,QAAU,sBAAsB,IAAM,CACpDA,EAAgB,QAAU,EAC1BL,EAAcd,EAAOoB,EAAgB,QAASjrK,CAAO,CACvD,CAAC,EACH,EAEMixI,EAAc,CAACw6B,EAAczrK,EAAU,KAAO,CAClD,MAAM0rK,EAAqBrB,GAAqBoB,EAAcnB,EAAaC,EAAac,CAAY,EACpGJ,EAAgB,QAAUS,EACtBV,EAAgB,SAAW,OAAO,sBAAyB,aAC7D,qBAAqBA,EAAgB,OAAO,EAC5CA,EAAgB,QAAU,GAE5BM,EAAgBI,CAAkB,EAClCC,EAAiCD,CAAkB,EACnDf,EAAcd,EAAO6B,EAAoB1rK,CAAO,CAClD,EAEA,OACE1G,MAACs6H,GAAA,CACC,MAAOg3C,GAAa,QACpB,MAAOZ,GAAiBqB,EAAcxB,CAAK,EAC3C,cAAgB39D,GAAc,CAC5B+kC,EAAYxe,GAA0BvmB,EAAW,CAC/C,SAAUm/D,EACV,IAAKf,EACL,IAAKC,CAAA,CACN,CAAC,CACJ,EACA,gBAAiB,CACf,UAAW,GAAGK,GAAa,OAAO,aAAaE,CAAS,IAGxD,SAAAxxK,MAAC43I,GAAA,CACC,UAAWt4I,EAAG+4H,GAAqC,SAAS,EAC5D,IAAK24C,EACL,IAAKC,EACL,KAAMQ,EACN,MAAO,CAACM,CAAY,EACpB,cAAgBn/D,GAAc,CAC5B,MAAMu/D,EAAepB,GAAqBn+D,IAAY,CAAC,EAAGo+D,EAAaC,EAAac,CAAY,EAC5F1B,GAAwB8B,EAAcR,EAAgB,OAAO,IAGjEK,EAAgBG,CAAY,EAC5BE,EAAiCF,CAAY,EAC7CG,EAAoBH,EAAc,CAAE,MAAO,GAAM,EACnD,EACA,cAAgBv/D,GAAc,CAC5B+kC,EAAY/kC,IAAY,CAAC,EAAG,CAAE,MAAO,GAAM,CAC7C,EACA,aAAY0+D,GAAa,cACzB,MAAO,GAAGZ,GAAiBM,EAAaT,CAAK,CAAC,OAAOG,GAAiBO,EAAaV,CAAK,CAAC,IAC3F,EAGR,CAAC,EAEKgC,IAAwBnB,OAAK,SAA+B,CAChE,KAAAp7J,EACA,MAAA9nB,EACA,SAAAyrI,EACA,cAAA03C,CACF,EAAG,CACD,MAAMV,EAAY,OAAO,SAAS,OAAOziL,CAAK,CAAC,EAAI,OAAOA,CAAK,EAAI,EAC7D,CAAC8rI,EAAYC,CAAa,EAAI55D,WAAS,IAAMwwG,GAAuBF,CAAS,CAAC,EAEpFruG,YAAU,IAAM,CACd23D,EAAc42C,GAAuBF,CAAS,CAAC,CACjD,EAAG,CAACA,CAAS,CAAC,EAEd,MAAMh5B,EAAe/kC,GAAc,CACjC,MAAMlqG,EAAe,OAAOkqG,CAAS,EAC/B4/D,EAAiB,OAAO,SAAS9pK,CAAY,EAAIA,EAAeioK,EACtE12C,EAAc42C,GAAuB2B,CAAc,CAAC,EACpDnB,IAAgBmB,CAAc,CAChC,EAEA,OACExxK,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAoB,SAAA/mI,EAAK,EAC1ChW,MAACC,GAAA,CACC,KAAK,SACL,KAAK,QACL,UAAU,UACV,SAAA05H,EACA,MAAOK,EACP,SAAW/1H,GAAU,CACnBg2H,EAAch2H,EAAM,OAAO,KAAK,CAClC,EACA,QAAUA,GAAU,CAClBA,EAAM,cAAc,QACtB,EACA,UAAYA,GAAU,CACpBA,EAAM,gBACR,EACA,OAAQ,IAAM,CACZ0zI,EAAY3d,CAAU,CACxB,EACA,UAAY/1H,GAAU,CAChBA,EAAM,MAAQ,SAChBA,EAAM,cAAc,MAExB,EACA,UAAW,GAAGuyI,EAAmB,mBACjC,aAAY,UAAUxgI,CAAI,eAC5B,EACF,CAEJ,CAAC,EAED,SAASy8J,GAAc,CAAE,MAAAz2K,EAAO,MAAA9N,GAAS,CACvC,MAAM6rI,EAAe,OAAO7rI,GAAS,EAAE,EACvC,OACE8S,OAAC,OAAI,UAAU,gBACb,UAAAhB,MAAC,QAAK,UAAW+8I,GAAoB,SAAA/gJ,EAAM,EAC3CgE,MAAC,OACC,UAAU,qIACV,MAAO+5H,EAEN,SAAAA,CAAA,EACH,EACF,CAEJ,CAEA,SAAS24C,IAAsB/qK,EAAMgrK,EAAQ,CAC3C,MAAI,CAAChrK,GAAQ,OAAOA,GAAS,SACpB,GAEFgrK,EACJ,IAAKC,GAAU,OAAOjrK,IAAOirK,CAAK,GAAK,EAAE,EAAE,MAAM,EACjD,OAAO,OAAO,EACd,KAAK,KAAK,CACf,CAEA,SAASC,GAAgB,CAAE,MAAAt6C,EAAO,MAAA6a,EAAO,OAAAu/B,GAAU,CACjD,MAAMvqI,EAAU,MAAM,QAAQgrG,CAAK,EAC/BA,EAAM,IAAKzrI,GAAS+qK,IAAsB/qK,EAAMgrK,CAAM,CAAC,EAAE,OAAO,OAAO,EACvE,GACJ,OAAKvqI,EAAQ,OAIXpnC,OAAC,OAAI,UAAU,sEACb,UAAAhB,MAAC,QAAK,UAAW+8I,GAAoB,SAAAxkB,EAAM,EAC3Cv3H,OAAC,OAAI,UAAU,YACZ,UAAAonC,EAAQ,MAAM,EAAG,CAAC,EAAE,IAAI,CAACE,EAAQzyC,IAChCmK,MAAC,OAEC,UAAU,6DACV,MAAOsoC,EAEN,SAAAA,CAAA,EAJI,GAAGiwF,CAAK,IAAI1iI,CAAK,GAMzB,EACAuyC,EAAQ,OAAS,EAChBpnC,OAAC,OAAI,UAAU,gCAAiC,UAAAonC,EAAQ,OAAS,EAAE,SAAK,EACtE,MACN,GACF,EAnBO,IAqBX,CAEA,SAAwB0qI,IAAc,CACpC,KAAArvK,EACA,MAAA80H,EAAQ,OACR,aAAAwE,EAAe,OACf,WAAAf,EAAa,GACb,WAAA+2C,EAAa,GACb,UAAA93C,EACA,MAAAnrI,EACA,cAAAga,EAAgB,KAChB,aAAAoxH,EACA,cAAAC,EACA,OAAA63C,EACA,YAAAC,EACA,mBAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,mBAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,OAAAC,EAAS,KACT,IAAAtmE,EAAM,KACN,sBAAAglC,EAAwB,GACxB,iBAAAtO,EAAmB,KACnB,uBAAAuO,EAAyB,GACzB,kBAAAX,EAAoB,GACpB,gBAAAC,EACA,8BAAA8F,EAAgC,GAChC,YAAA1B,EAAc,GACd,cAAA2B,EAAgB,KAChB,eAAAC,EAAiB,GACjB,uBAAAC,CACF,EAAG,CACD,MAAM3b,EAAQ,OAAOgB,GAAgB,EAAE,EAAE,OAAO,gBAAkB,MAC5D02C,EAAgB,MAAM,QAAQT,CAAM,EAAIA,EAAS,GACjDU,EAAoB,MAAM,QAAQT,CAAW,EAAIA,EAAc,GAC/Dr+B,EAAU1nC,GAAK,MAAQ,OAAOA,EAAI,MAAS,SAAWA,EAAI,KAAO,GACjEymE,EAAoB/+B,EAAQ,gBAAkB,OAAOA,EAAQ,gBAAmB,SAClFA,EAAQ,eACR,GACEg/B,GAAc,MAAM,QAAQD,EAAkB,QAAQ,EAAIA,EAAkB,SAAW,GACvFE,EAAa,MAAM,QAAQF,EAAkB,OAAO,EAAIA,EAAkB,QAAU,GACpFG,EAAa,MAAM,QAAQH,EAAkB,OAAO,EAAIA,EAAkB,QAAU,GACpFI,GAAY,MAAM,QAAQJ,EAAkB,MAAM,EAAIA,EAAkB,OAAS,GACjFK,GAAa,MAAM,QAAQL,EAAkB,OAAO,EAAIA,EAAkB,QAAU,GACpFM,GAAsB,OAAO,SAAS,OAAON,EAAkB,gBAAgB,CAAC,EAClF,OAAOA,EAAkB,gBAAgB,EACzC,EACEO,GAAiB,GACrBN,GAAY,QACZC,EAAW,QACXC,EAAW,QACXC,GAAU,QACVC,GAAW,QAEPG,GAAqB,MAAM,QAAQX,GAAQ,YAAY,EAAIA,EAAO,aAAe,GACjFY,GAAuB,MAAM,QAAQZ,GAAQ,cAAc,EAAIA,EAAO,eAAiB,GACvFa,GAAqB,MAAM,QAAQb,GAAQ,YAAY,EAAIA,EAAO,aAAe,GACjFc,GAAgBvB,GAAcS,GAAQ,aAAe,IAAQW,GAAmB,OAAS,EACzFI,GAA8B,OAAOf,GAAQ,uBAAyBW,GAAmB,CAAC,GAAG,MAAQ,EAAE,EAAE,OACzGK,GAAgC,OAAOhB,GAAQ,yBAA2BY,GAAqB,CAAC,GAAG,MAAQ,EAAE,EAAE,OAC/GK,GAA8B,OAAOjB,GAAQ,uBAAyBa,GAAmB,CAAC,GAAK,EAAE,EAAE,OACnGK,GAAuB,MAAM,QAAQlB,GAAQ,cAAc,EAAIA,EAAO,eAAiB,CAAC,EAAG,EAAG,CAAC,EAC/FmB,GAAwB,MAAM,QAAQnB,GAAQ,eAAe,EAAIA,EAAO,gBAAkB,KAC1FoB,GAAkBpB,GAAQ,SAAW,OAAOA,EAAO,SAAY,SAAWA,EAAO,QAAU,GAC3FqB,GAAa,EAAQrB,GAAQ,QAC7BsB,GAAuBtB,GAAQ,iBAAmB,GAClDuB,GAAqBvB,GAAQ,WAAa,YAAc,UACxDwB,GAAyB,EAAQxB,GAAQ,iBACzCyB,GAAqCN,GAAwB7D,IAAqB4D,GAAsBC,EAAqB,EAAI,GACjIO,GAAwBxB,EAAkB,KAAMxvK,IAAU,OAAOA,IAAO,IAAM,EAAE,EAAE,SAAWgvK,CAAkB,EACjHA,EACA,aACEiC,GAAmBzB,EAAkB,KAAMxvK,IAAU,OAAOA,IAAO,IAAM,EAAE,EAAE,SAAWgxK,EAAqB,EAC7GE,GAAwBF,KAA0B,aAAe,SAAW,OAAOC,IAAkB,OAASA,IAAkB,MAAQD,EAAqB,EAEnK,OACEl1K,MAACg7H,GAAA,CACC,KAAAv3H,EACA,MAAA80H,EACA,UAAA0C,EACA,MAAAnrI,EACA,aAAAorI,EACA,cAAAC,EAEA,SAAAn6H,OAACs0H,GAAA,CACC,KAAK,WACL,MAAOmiB,EACP,cAAeC,EAEf,UAAA13I,MAACw1I,GAAA,CAAkB,MAAOK,CAAA,CAAa,EAEtC9Z,QACEzD,GAAA,CAAiB,MAAM,MAAM,MAAM,MAChC,gBAAC,OACC,UAAAt4H,MAAC24H,GAAA,CAAoB,MAAM,WAAW,iBAAiB,OACvD,SAAA33H,OAAC,OAAI,UAAU,yBACb,UAAAhB,MAACyyK,GAAA,CAAc,MAAM,UAAU,MAAO,OAAO79B,EAAQ,SAAW,SAAS,EAAG,EAC5E50I,MAACyyK,IAAc,MAAM,WAAW,MAAO,OAAO79B,EAAQ,cAAgB,OAAO,EAAG,EAC/EA,EAAQ,UACP50I,MAACyyK,GAAA,CAAc,MAAM,QAAQ,MAAO,OAAO79B,EAAQ,SAAS,EAAG,EAC7D,KACJ50I,MAACyyK,IAAc,MAAM,aAAa,MAAO79B,EAAQ,qBAAuB,SAAW,SAAU,EAC7F50I,MAACyyK,IAAc,MAAM,YAAY,MAAO,OAAO79B,EAAQ,UAAY,EAAE,EAAG,EACxE50I,MAACyyK,GAAA,CAAc,MAAM,QAAQ,MAAO,OAAO79B,EAAQ,WAAarc,GAAS,OAAO,EAAG,GACrF,EACA,EAEAv4H,MAAC24H,IAAoB,MAAM,SAAS,iBAAiB,OACrD,SAAA33H,OAAC,OAAI,UAAU,yBACb,UAAAhB,MAACyyK,GAAA,CAAc,MAAM,QAAQ,MAAO,OAAO79B,EAAQ,WAAa6+B,EAAc,MAAM,EAAG,EACvFzzK,MAACyyK,GAAA,CAAc,MAAM,SAAS,MAAO,OAAO79B,EAAQ,YAAco+B,GAAQ,QAAU,CAAC,EAAG,EACxFhzK,MAACyyK,IAAc,MAAM,SAAS,MAAO,OAAO79B,EAAQ,YAAc,CAAC,EAAG,EACtE50I,MAACyyK,IAAc,MAAM,WAAW,MAAO,OAAOmB,GAAY,MAAM,EAAG,EACnE5zK,MAACyyK,IAAc,MAAM,UAAU,MAAO,OAAOoB,EAAW,MAAM,EAAG,EACjE7zK,MAACyyK,IAAc,MAAM,UAAU,MAAO,OAAOqB,EAAW,MAAM,EAAG,EACjE9zK,MAACyyK,IAAc,MAAM,SAAS,MAAO,OAAOsB,GAAU,MAAM,EAAG,EAC/D/zK,MAACyyK,IAAc,MAAM,UAAU,MAAO,OAAOuB,GAAW,MAAM,EAAG,QAChEvB,GAAA,CAAc,MAAM,gBAAgB,MAAO7B,GAAgBqD,EAAmB,EAAG,EAClFj0K,MAACyyK,GAAA,CAAc,MAAM,oBAAoB,MAAO,GAAG7B,GAAgBh8B,EAAQ,sBAAsB,CAAC,MAAMg8B,GAAgBh8B,EAAQ,yBAAyB,CAAC,GAAI,GAChK,EACA,EAECs/B,GACClzK,OAAC23H,GAAA,CAAoB,MAAM,WAAW,iBAAiB,OACrD,UAAA34H,MAAC6yK,GAAA,CAAgB,MAAM,WAAW,MAAOe,GAAa,OAAQ,CAAC,OAAQ,KAAK,EAAG,EAC/E5zK,MAAC6yK,GAAA,CAAgB,MAAM,UAAU,MAAOgB,EAAY,OAAQ,CAAC,OAAQ,UAAU,EAAG,EAClF7zK,MAAC6yK,GAAA,CAAgB,MAAM,UAAU,MAAOiB,EAAY,OAAQ,CAAC,OAAQ,MAAM,EAAG,EAC9E9zK,MAAC6yK,GAAA,CAAgB,MAAM,SAAS,MAAOkB,GAAW,OAAQ,CAAC,OAAQ,MAAM,EAAG,EAC5E/zK,MAAC6yK,GAAA,CAAgB,MAAM,UAAU,MAAOmB,GAAY,OAAQ,CAAC,OAAQ,OAAQ,SAAS,EAAG,GAC3F,EACE,MACN,EACJ,EACE,KACHM,SACEh8C,GAAA,CAAiB,MAAM,SAAS,MAAM,UACnC,gBAAC,OACC,UAAAt4H,MAAC24H,GAAA,CAAoB,MAAM,SAC3B,SAAA34H,MAACg5H,IACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,gBAAI,EACxC/8I,MAACC,GAAA,CACC,MAAOuzK,GAAQ,MAAM,MAAQA,GAAQ,MAAM,UAAY,SACvD,SAAQ,GACR,SAAQ,GACR,UAAW,GAAGh9B,EAAmB,QACjC,aAAW,eACb,EACF,EACAx1I,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,0BAAc,EAClD/8I,MAACC,GAAA,CACC,MAAO80K,GACP,SAAQ,GACR,SAAQ,GACR,UAAW,GAAGv+B,EAAmB,QACnC,aAAW,yBACb,EACF,GACF,EACE,EACA,EAEAx1I,OAAC23H,GAAA,CAAoB,MAAM,SAC3B,UAAA34H,MAACg5H,GAAA,CACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,0BAAc,EAClD/7I,OAACmuJ,GAAA,CACC,MAAOqlB,GACP,SAAUK,IAAcT,GAAqB,QAAU,EACvD,cAAgBlmL,IAAU,CACxBslL,GAAQ,yBAAyB,0BAA2BtlL,EAAK,CACnE,EAEA,UAAA8R,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,wBACjC,SAAAvvJ,MAACqvJ,GAAA,CAAY,YAAY,eAAe,EAC1C,EACArvJ,MAAC2vJ,GAAA,CACE,SAAAykB,GAAqB,IAAKjhL,IAAU,CACnC,MAAM6X,GAAO,OAAO7X,IAAO,MAAQ,EAAE,EAAE,OACvC,OAAO6X,GACLhL,MAACiwJ,GAAA,CAAsB,MAAOjlJ,GAC3B,SAAAA,EAAA,EADcA,EAEjB,EACE,IACN,CAAC,EACH,IACF,EACF,EACAhK,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,wBAAY,EAClD/7I,OAACmuJ,GAAA,CACC,MAAOolB,GACP,SAAUM,IAAcV,GAAmB,QAAU,EACrD,cAAgBjmL,IAAU,CACxBslL,GAAQ,sBAAsBtlL,EAAK,CACrC,EAEA,UAAA8R,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,wBACjC,SAAAvvJ,MAACqvJ,GAAA,CAAY,YAAY,sBAAsB,EACjD,EACArvJ,MAAC2vJ,GAAA,CACE,SAAAwkB,GAAmB,IAAKkB,IAAgB,CACvC,MAAMrqK,GAAO,OAAOqqK,IAAa,MAAQ,EAAE,EAAE,OAC7C,OAAOrqK,GACLhL,MAACiwJ,GAAA,CAAsB,MAAOjlJ,GAC3B,SAAAA,EAAA,EADcA,EAEjB,EACE,IACN,CAAC,EACH,IACF,EACA,EACAhK,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,wBAAY,EAChD/7I,OAACmuJ,GAAA,CACC,MAAOslB,GACP,SAAUI,IAAcR,GAAmB,QAAU,EACrD,cAAgBnmL,IAAU,CACxBslL,GAAQ,yBAAyB,cAAetlL,EAAK,CACvD,EAEA,UAAA8R,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,wBACjC,SAAAvvJ,MAACqvJ,GAAA,CAAY,YAAY,eAAe,EAC1C,EACArvJ,MAAC2vJ,GAAA,CACE,SAAA0kB,GAAmB,IAAK9qI,IAAU,CACjC,MAAMv+B,GAAO,OAAOu+B,IAAS,EAAE,EAAE,OACjC,OAAOv+B,GACLhL,MAACiwJ,GAAA,CAAsB,MAAOjlJ,GAC3B,SAAAA,EAAA,EADcA,EAEjB,EACE,IACN,CAAC,EACH,IACJ,EACA,GACF,EACA,EAEAhL,MAACg5H,GAAA,CACD,SAAAh5H,MAAC,OAAI,UAAU,yBACZ,UAAC,IAAK,IAAK,GAAG,EAAE,IAAI,CAACgW,GAAMngB,KAC1BmK,MAACuyK,IAAA,CAEC,KAAAv8J,GACA,MAAO0+J,GAAqB7+K,EAAK,EACjC,SAAUg/K,GACV,cAAgBjiE,IAAc,CAC5B4gE,GAAQ,yBAAyB39K,GAAO+8G,EAAS,CACnD,GANK58F,EAAA,CAQR,EACH,EACA,GACA,EAEAhW,MAAC24H,IAAoB,MAAM,SAC3B,eAACK,GAAA,CACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,sBAAU,EAC9C/8I,MAACC,GAAA,CACC,KAAK,SACL,KAAK,OACL,IAAI,QACJ,MAAO20K,GAAgB,WAAa,IACpC,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,YAAavvK,GAAM,OAAO,KAAK,EACrF,UAAW,GAAGuyI,EAAmB,oBACnC,EACF,EACAx1I,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,uBAAW,EAC/C/8I,MAACC,GAAA,CACC,KAAK,SACL,KAAK,IACL,IAAI,IACJ,MAAO20K,GAAgB,YAAc,EACrC,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,aAAcvvK,GAAM,OAAO,KAAK,EACtF,UAAW,GAAGuyI,EAAmB,oBACnC,EACF,EACAx1I,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,qBAAS,EAC7C/8I,MAACC,GAAA,CACC,KAAK,SACL,KAAK,QACL,IAAI,SACJ,MAAO20K,GAAgB,aAAe,KACtC,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,cAAevvK,GAAM,OAAO,KAAK,EACvF,UAAW,GAAGuyI,EAAmB,oBACnC,EACF,GACF,EACA,EACA,EAEAx1I,OAAC23H,GAAA,CAAoB,MAAM,WAC3B,UAAA34H,MAACg5H,GAAA,CACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,6BAAiB,EACrD/8I,MAACC,GAAA,CACC,MAAO20K,GAAgB,kBAAoB,OAC3C,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,mBAAoBvvK,GAAM,OAAO,KAAK,EAC5F,UAAW,GAAGuyI,EAAmB,SACnC,EACF,EACAx1I,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,sBAAU,EAC9C/8I,MAACC,GAAA,CACC,MAAO20K,GAAgB,WAAa,2BACpC,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,YAAavvK,GAAM,OAAO,KAAK,EACrF,UAAW,GAAGuyI,EAAmB,SACnC,EACF,GACF,EACA,EAEAx2I,MAACg5H,GAAA,CACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,qBAAS,EAC7C/8I,MAACC,GAAA,CACC,KAAK,SACL,KAAK,MACL,IAAI,MACJ,MAAO20K,GAAgB,cAAgB,EACvC,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,eAAgBvvK,GAAM,OAAO,KAAK,EACxF,UAAW,GAAGuyI,EAAmB,oBACnC,EACF,EACAx1I,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,oBAAQ,EAC5C/8I,MAACC,GAAA,CACC,KAAK,SACL,KAAK,OACL,IAAI,OACJ,IAAI,IACJ,MAAO20K,GAAgB,0BAA4B,EACnD,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,2BAA4BvvK,GAAM,OAAO,KAAK,EACpG,UAAW,GAAGuyI,EAAmB,oBACnC,EACF,EACAx1I,OAAC,SAAM,UAAU,gBACf,UAAAhB,MAAC,QAAK,UAAW+8I,GAAmB,wBAAY,EAChD/8I,MAACC,GAAA,CACC,KAAK,SACL,KAAK,OACL,IAAI,OACJ,IAAI,IACJ,MAAO20K,GAAgB,8BAAgC,EACvD,SAAUC,GACV,SAAW5wK,IAAUuvK,GAAQ,yBAAyB,+BAAgCvvK,GAAM,OAAO,KAAK,EACxG,UAAW,GAAGuyI,EAAmB,oBACnC,EACF,GACF,EACA,GACA,EAEAx2I,MAAC24H,IAAoB,MAAM,UAC3B,eAACK,GAAA,CACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAhB,MAACP,GAAA,CACC,KAAK,SACL,QAASu1K,GAAyB,YAAc,UAChD,KAAK,KACL,UAAW7iB,GACX,SAAU0iB,IAAc,CAACC,GACzB,QAAS,IAAM,CACb,GAAIE,GAAwB,CAC1BxB,GAAQ,uBACR,MACF,CACAA,GAAQ,gBACV,EACA,eAAcwB,GAEd,SAAAh1K,MAAC,QAAK,uBAAW,IAEjBi1K,GAaE,KAZFj1K,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,SAAU0iB,GACV,QAAS,IAAM,CACbrB,GAAQ,wBACV,EAEA,SAAAxzK,MAAC,QAAK,iBAAK,IAGfA,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,SAAU0iB,IAAc,CAACC,IAAwBG,GACjD,QAAS,IAAM,CACRzB,GAAQ,WACf,EAEA,SAAAxzK,MAAC,QAAM,SAAA60K,GAAa,aAAe,aAAa,IAElD70K,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,SAAU0iB,IAAc,CAACC,IAAwBG,GACjD,QAAS,IAAM,CACRzB,GAAQ,UACf,EAEA,SAAAxzK,MAAC,QAAM,SAAA60K,GAAa,cAAgB,eAAe,GACrD,EACF,EACA,EACA,GACF,EACJ,EACE,KACH74C,QACA1D,GAAA,CAAiB,MAAM,SAAS,MAAM,SAClC,SAAAm7C,EAAc,OACbzyK,OAAAsgE,WAAA,CACE,UAAAtgE,OAAC23H,GAAA,CAAoB,MAAM,WACxB,UAAA+6C,EAAkB,OACjB1zK,MAACg5H,GAAA,CAAoB,MAAM,cACzB,SAAAh4H,OAACmuJ,GAAA,CACC,MAAO+lB,GACP,cAAgBhnL,IAAU,CACxB,GAAIA,KAAU,aACZ,OAEF,MAAMonL,GAAa5B,EAAkB,KAAM5lK,IAAc,OAAOA,IAAW,IAAM,EAAE,EAAE,SAAW5f,EAAK,EACjGonL,IACFjC,IAAqBiC,EAAU,CAEnC,EAEA,UAAAt1K,MAACuvJ,GAAA,CAAc,KAAK,KAAK,UAAU,mBACjC,eAAC,QAAK,UAAU,WAAY,SAAA6lB,EAAA,CAAsB,EACpD,EACAp1K,MAAC2vJ,GAAA,CACE,SAAA+jB,EAAkB,IAAK4B,IAAe,CACrC,MAAMC,GAAe,OAAOD,IAAY,IAAM,EAAE,EAAE,OAC5CE,GAAiB,OAAOF,IAAY,OAASA,IAAY,MAAQ,EAAE,EAAE,QAAU,QACrF,OACEt1K,MAACiwJ,GAAA,CAA8B,MAAOslB,GACnC,aADcA,EAEjB,CAEJ,CAAC,EACH,KAEJ,EACE,KACJv1K,MAACg5H,GAAA,CACD,SAAAh4H,OAAC,OAAI,UAAU,yBACb,UAAAA,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,QAASohB,EAET,UAAAvzK,MAACk/E,IAAU,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACtEl/E,MAAC,QAAK,sBAAU,KAElBgB,OAACvB,GAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,UAAW0yJ,GACX,QAAS,IAAM,CACRmhB,IAAA,CACP,EAEA,UAAAtzK,MAACsxI,IAAK,UAAU,cAAc,YAAa,EAAG,cAAY,OAAO,EACjEtxI,MAAC,QAAM,SAAA+7H,EAAQ,cAAgB,cAAc,IAC/C,EACF,EACA,GACF,QACCpD,GAAA,CAAoB,MAAM,SAC1B,SAAA86C,EAAc,IAAKlD,IAClBvwK,MAACmxK,IAAA,CAEC,MAAAZ,GACA,SAAU4C,IAAc5C,GAAM,IAAI,GAAKA,IAAO,iBAAmB,EACjE,cAAe6C,CAAA,EAHV7C,GAAM,KAKd,EACD,GACF,EAEAvwK,MAAC,KAAE,UAAU,0CAA0C,4CAAgC,EAE7F,EACI,KACHw3I,EACDx3I,MAACiyI,GAAA,CACC,MAAOnoI,EACP,sBAAAooI,EACA,iBAAAtO,EACA,uBAAAuO,EACA,kBAAAX,EACA,gBAAAC,EACA,sBAAuB8F,CAAA,EACzB,GACF,EAGN,CC30BA,SAAwBk+B,IAAmB,CAAE,QAAA39F,GAAW,CACtD,MAAM49F,EAAoB,OAAO59F,GAAW,EAAE,EAAE,OAC1C,CAAChnE,EAAQqgI,CAAS,EAAI9wE,WAAS,EAAK,EACpC,CAACs1G,EAAWC,CAAY,EAAIv1G,WAAS,EAAE,EAe7C,GAbAiC,YAAU,IAAM,CACd6uE,EAAU,EAAK,EACfykC,EAAa,EAAE,CACjB,EAAG,CAACF,CAAiB,CAAC,EAEtBpzG,YAAU,IAAM,CACd,GAAI,CAACxxD,EACH,OAEF,MAAMglI,EAAU,WAAW,WAAW,IAAM3E,EAAU,EAAK,EAAG,IAAI,EAClE,MAAO,IAAM,WAAW,aAAa2E,CAAO,CAC9C,EAAG,CAAChlI,CAAM,CAAC,EAEP,CAAC4kK,EACH,OAAO,KAGT,eAAeG,GAAoB,CACjC,GAAI,CACF,MAAM/jK,GAAoB4jK,CAAiB,EAC3CvkC,EAAU,EAAI,EACdykC,EAAa,EAAE,CACjB,OAASzkK,EAAO,CACdggI,EAAU,EAAK,EACfykC,EAAazkK,aAAiB,MAAQA,EAAM,QAAU,aAAa,CACrE,CACF,CAEA,OACEnQ,OAAC,OAAI,UAAU,0BACb,UAAAA,OAAC,OAAI,UAAU,oFACb,UAAAhB,MAAC,QACC,UAAU,kEACV,MAAO01K,EAEN,SAAAA,CAAA,GAEH11K,MAACP,GAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,UACL,UAAU,uDACV,QAASo2K,EACT,aAAY/kK,EAAS,yBAA2B,uBAChD,MAAOA,EAAS,SAAW,uBAE1B,SAAAA,EAAS9Q,MAACqxI,GAAA,CAAM,UAAU,WAAW,cAAY,OAAO,EAAKrxI,MAACsxI,GAAA,CAAK,UAAU,WAAW,cAAY,OAAO,GAC9G,EACF,EACCqkC,EACC31K,MAAC,KAAE,UAAU,gCAAiC,WAAU,EACtD,MACN,CAEJ,CCpDA,SAAwB81K,IAAkB,CACxC,gBAAAC,EACA,YAAAvwD,EACA,YAAAjmD,EACA,mBAAAy2G,CACF,EAAG,CACD,GAAI,CAACxwD,GAAejmD,EAClB,OAAO,KAET,MAAM02G,EAAYzwD,EAAY,WAAa,UACrC1lD,EAAU,EAAQ0lD,EAAY,QAEpC,OACExlH,MAAC0pJ,GAAA,CACC,KAAMqsB,EACN,aAAcC,EAEd,SAAAh1K,OAACipJ,GAAA,CAAmB,UAAWnqF,EAAU,WAAa,WACpD,UAAA9+D,OAACmpJ,GAAA,CACC,UAAAnqJ,MAACqyI,GAAA,CACC,QAAS4jC,EAAY,UAAY,cACjC,UAAU,OAET,WAAY,UAAY,UAE3Bj2K,MAACqqJ,GAAA,CAAkB,SAAA7kC,EAAY,MAAM,EACrCxkH,OAACupJ,GAAA,CAAuB,UAAWzqF,EAAU,gCAAkC,sBAC7E,UAAA9/D,MAAC,QAAK,UAAU,QAAS,SAAAwlH,EAAY,QAAQ,EAC5C,CAAC1lD,GAAW0lD,EAAY,WACvBxlH,MAAC,QAAK,UAAU,iCAAkC,SAAAwlH,EAAY,WAAW,EACvE,MACN,GACF,EACAxlH,MAACy1K,IAAA,CAAmB,QAASjwD,EAAY,QAAS,QACjD4kC,GAAA,CACC,SAAApqJ,MAAC2qJ,IAAkB,aAAW,qBAAqB,iBAAK,EAC1D,GACF,GAGN,CCjDA,MAAMurB,GAA4B,OAAO,OAAO,CAC9C,gBACA,YACA,cACA,eACA,SACA,UACA,YACA,aACA,YACA,YACA,aACA,YACA,eACA,UACA,gBACA,UACA,UACA,YACA,cACA,aACA,eACA,YACA,cACA,cACA,aACA,cACA,iBACA,WACA,aACA,aACA,gBACA,YACA,YACA,aACA,cACA,gBACA,UACA,WACA,WACA,YACA,gBACA,cACA,cACA,eACA,cACA,iBACA,mBACA,QACA,WACA,YACA,SACA,YACA,cACA,eACA,aACA,cACA,cACA,aACA,kBACA,YACA,YACA,qBACA,UACA,aACA,aACA,UACA,UACA,aACA,WACA,eACA,YACA,aACA,aACA,gBACA,cACA,YACA,WACA,UACA,cACA,UACA,WACA,UACA,UACA,iBACA,eACA,WACA,YACA,cACA,aACA,YACA,WACA,WACA,gBACA,aACA,WACA,YACA,aACA,eACA,cACA,aACA,aACA,iBACA,UACA,cACA,WACA,UACA,YACA,SACA,aACA,UACA,eACA,WACA,aACA,WACA,gBACA,WACA,gBACA,cACA,WACA,iBACA,oBACA,cACA,YACA,gBACA,WACA,gBACA,mBACA,aACA,WACA,cACA,YACA,WACA,eACA,kBACA,gBACA,kBACA,eACA,WACA,aACA,WACA,aACA,aACA,YACA,YACA,gBACA,YACA,YACA,cACA,YACA,aACA,YACA,eACA,aACA,WACA,YACA,UACA,cACA,WACA,WACA,aACA,eACA,YACA,WACA,aACA,YACA,eACA,iBACA,gBACA,cACA,WACA,aACA,YACA,cACA,SACA,WACA,YACA,UACA,qBACA,eACA,WACA,WACA,WACA,UACA,YACA,UACA,YACF,CAAC,EAED,SAASC,IAAuB,CAC9B,MAAMC,EAAQ,CAAC,GAAGF,EAAyB,EAC3C,QAASrgL,EAAQugL,EAAM,OAAS,EAAGvgL,EAAQ,EAAGA,GAAS,EAAG,CACxD,MAAMwgL,EAAY,KAAK,MAAM,KAAK,UAAYxgL,EAAQ,EAAE,EACxD,CAACugL,EAAMvgL,CAAK,EAAGugL,EAAMC,CAAS,CAAC,EAAI,CAACD,EAAMC,CAAS,EAAGD,EAAMvgL,CAAK,CAAC,CACpE,CACA,OAAOugL,CACT,CAEA,SAAwBE,IAAqB,CAC3C,cAAA/wD,EACA,YAAAhmD,CACF,EAAG,CACD,KAAM,CAACg3G,EAAcC,CAAe,EAAIn2G,WAAS,IAAM81G,IAAsB,EACvE,CAACM,EAAiBC,CAAkB,EAAIr2G,WAAS,CAAC,EAClD,CAACs2G,EAAmBC,CAAoB,EAAIv2G,WAAS,CAAC,EACtD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","names":["r","f","n","clsx","falsyToString","value","cx","cva","base","config","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","CAD_WORKSPACE_MOBILE_BREAKPOINT_PX","CAD_WORKSPACE_DESKTOP_BREAKPOINT_PX","CAD_WORKSPACE_FILE_SHEET_COMPACT_BREAKPOINT_PX","CAD_WORKSPACE_MOBILE_MEDIA_QUERY","CAD_WORKSPACE_LAYOUT_MODE","getCadWorkspaceLayoutMode","width","numericWidth","isCadWorkspaceMobileViewport","isCadWorkspaceDesktopViewport","isCadWorkspaceCompactFileSheetViewport","shouldCadWorkspaceDefaultFileSettingsOpen","useIsMobile","isMobile","setIsMobile","React.useState","React.useEffect","mql","onChange","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","buttonVariants","Button","React.forwardRef","size","asChild","ref","Comp","Slot.Root","jsx","Input","type","Sheet","SheetPrimitive.Root","SheetPrimitive.Trigger","SheetPrimitive.Close","SheetPortal","SheetPrimitive.Portal","SheetOverlay","SheetPrimitive.Overlay","SheetContent","overlayClassName","children","side","showCloseButton","jsxs","SheetPrimitive.Content","XIcon","SheetHeader","SheetTitle","SheetPrimitive.Title","SheetDescription","SheetPrimitive.Description","TooltipProvider","delayDuration","TooltipPrimitive.Provider","Tooltip","TooltipPrimitive.Root","TooltipTrigger","TooltipPrimitive.Trigger","TooltipContent","arrowClassName","sideOffset","TooltipPrimitive.Portal","TooltipPrimitive.Content","TooltipPrimitive.Arrow","SIDEBAR_WIDTH","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React.createContext","useSidebar","context","React.useContext","SidebarProvider","defaultOpen","defaultMobileOpen","openProp","setOpenProp","openMobileProp","setOpenMobileProp","style","_openMobile","_setOpenMobile","_open","_setOpen","open","openMobile","setOpen","React.useCallback","openState","setOpenMobile","toggleSidebar","handleKeyDown","event","state","contextValue","React.useMemo","SidebarTrigger","onClick","PanelLeftIcon","SidebarInset","SidebarInput","SidebarHeader","SidebarContent","SidebarGroup","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","tooltip","button","SidebarMenuSub","SidebarMenuSubItem","CAD_TOKEN_RE","OCCURRENCE_SELECTOR_RE","OCCURRENCE_ENTITY_SELECTOR_RE","ENTITY_SELECTOR_RE","selectorTypeForKind","kind","normalizeCadPath","rawCadPath","normalized","parseStructuredSelector","rawSelector","inheritedOccurrenceId","selector","occurrenceEntityMatch","occurrenceId","ordinal","occurrenceMatch","entityMatch","parseCadRefSelector","options","normalizeCadRefSelectors","selectors","rawSelectors","normalizedSelectors","parsedSelector","sortCadRefSelectors","uniqueSelectors","rank","left","right","leftOccurrence","rightOccurrence","leftRank","rightRank","leftOrdinal","rightOrdinal","item","parseCadRefToken","copyText","match","selectorText","buildCadRefToken","cadPath","selectorList","STEP_MODEL_ROOT_ID","STEP_MODEL_RENDER_PART_ID","STEP_TREE_TOPOLOGY_NODE_PREFIX","STEP_TREE_TOPOLOGY_SELECTOR_TYPES","normalizeString","fallback","normalizePositiveInteger","numericValue","basename","componentLabelFromPartLabel","stepTreeNodeId","node","stepTreeNodeLabel","stepTreeNodeDetail","stepTreeNodeChildren","stepTreeNodeTopologyType","nodeType","stepTreeNodeLeafPartIds","declaredLeafPartIds","id","nodeId","leafPartIds","stack","child","childNodeType","childId","buildStepPartRoot","selectedEntry","meshData","buildStepTreeRoot","assemblyRoot","nodeMatchesQuery","query","normalizedQuery","topologyReferenceSelector","reference","topologySelectorToken","normalizedSelector","topologyOccurrenceIdFromSelector","topologyReferenceOccurrenceId","topologyReferenceName","pickData","topologyReferenceLabel","selectorType","selectorToken","name","summary","topologyReferenceDetail","topologyNodeId","partId","compareTopologyReferences","a","b","aRowIndex","bRowIndex","buildTopologyReferenceNode","buildSyntheticOccurrenceNode","buildTopologyFolderNode","partNode","topologySelectorAliases","normalizedValue","aliases","internalSelector","topologyOccurrenceNodeIsRedundantForPart","occurrenceNode","siblingCount","topologyOccurrenceNodeDuplicatesPart","partSelectors","flattenRedundantTopologyOccurrenceNodes","topologyChildren","maybeWrapSinglePartTopologyFolder","topologyReferencePartId","fallbackPartId","addStepTreeTopologyPartTarget","targets","seenTargets","priority","normalizedPartId","normalizedOccurrenceId","collectStepTreeTopologyPartTargets","root","leafPartId","occurrenceMatchesStepTreePartTarget","targetOccurrenceId","normalizedTargetOccurrenceId","assignStepTreeTopologyReferencePartIds","references","normalizedReferences","changed","assignedReferences","target","candidate","buildTopologyChildrenByPart","byPart","partGroup","occurrenceGroup","occurrenceGroups","occurrenceNodes","buildStepTreeRootWithTopology","topologyPartIds","topologyPartIdSet","topologyChildrenByPart","cloneWithTopology","subtreeMatchesQuery","subtreeContainsNodeId","normalizedNodeId","stepTreeRootChildIndexForNode","flattenVisibleStepTreeRows","expandedNodeIds","omitRoot","rootChildLimit","showAllRootChildren","expanded","normalizedRootChildLimit","limitRootChildren","rows","rootChildrenForVisit","visit","depth","parentNode","hasChildren","isExpanded","elideRedundantTopologyOccurrence","childRows","collectStepTreeAncestorIds","getDocumentSelection","doc","preserveSelection","selection","ranges","restoreSelection","range","focusElement","element","execCommandCopyText","text","activeElement","preservedRanges","textarea","copied","normalizeClipboardImageBlob","blob","fallbackType","isClipboardPermissionError","error","message","blockedClipboardError","blockedClipboardTextReadError","copyImageBlobToClipboard","blobOrPromise","clipboard","ClipboardItemCtor","normalizedType","blobPromise","blobType","copyTextToClipboard","clipboardText","clipboardError","readTextFromClipboard","DOWNLOAD_BLOCKED_MESSAGE","normalizeFilename","downloadRequestedMessage","filename","normalizedFilename","getDownloadDocument","clickDownloadLink","link","triggerUrlDownload","url","href","triggerBlobDownload","urlApi","downloadUrl","revoke","normalizeVector","fieldName","required","nonZero","strict","vector","cloneCameraVector","normalizeCameraZoom","normalizePerspectiveMetadataValue","CAMERA_PROJECTION","normalizeCameraProjection","clonePerspectiveVector","clonePerspectiveSnapshot","snapshot","position","up","clonedSnapshot","modelKey","sceneScaleMode","coordinateSystem","annotatePerspectiveSnapshot","annotatedSnapshot","normalizedModelKey","normalizedSceneScaleMode","normalizedCoordinateSystem","resolvePerspectiveSnapshot","primary","perspectiveVectorEqual","epsilon","perspectiveSnapshotEqual","perspectiveSnapshotMatchesScene","requireModelKey","requireSceneScaleMode","requireCoordinateSystem","normalizedSnapshot","VIEWER_PICK_MODE","STEP_CLIP_AXES","DEFAULT_STEP_CLIP_OFFSETS","DEFAULT_STEP_CLIP_SETTINGS","AXIS_INDEX","ACTIVE_CLIP_OFFSET_EPSILON","normalizeNumber","clamp","min","max","normalizeStepClipSettings","source","axis","sourceOffsets","legacyOffset","offsets","clipAxis","activeOffset","offsetEnabled","stepClipSettingsEqual","axisIndex","clipAxisBounds","bounds","clipAxisPosition","settings","pointVisibleByClipPlane","clipPlane","point","tolerance","buildStepClipPatch","patch","rawPatch","hasExplicitEnabled","hasOffsetPatch","patchedAxis","DRAWING_TOOL","distancePointToSegment2d","start","end","dx","dy","t","projected","pointInPolygon2d","polygon","inside","previous","buildDrawingPoint","canvas","rect","height","drawingPointToPixels","strokeLengthInPixels","stroke","points","total","getDrawingStrokePoints","getFillStrokePoints","isFillStroke","isSurfaceLineStroke","isClosedDrawingStroke","isFillBoundaryStroke","drawingToolNeedsTwoPoints","tool","distanceToStrokeInPixels","pixelPoint","entry","minimum","pixelPoints","pointPixels","corners","center","edge","radius","DRAWING_STROKE_COLOR","DRAWING_STROKE_HALO","DRAWING_STROKE_WIDTH","DRAWING_STROKE_HALO_WIDTH","DRAWING_ARROW_HEAD_LENGTH","DRAWING_MIN_POINT_DISTANCE_PX","DRAWING_MIN_STROKE_LENGTH_PX","DRAWING_ERASE_THRESHOLD_PX","DRAWING_FILL_COLOR","DRAWING_GUESSED_FILL_COLOR","DRAWING_FILL_ANALYSIS_MAX_DIMENSION","DRAWING_FILL_ANALYSIS_MIN_DIMENSION","DRAWING_FILL_CONNECT_GAP_PX","DRAWING_FILL_RAY_COUNT","DRAWING_FILL_MIN_REGION_PIXELS","DRAWING_FILL_MAX_REGION_RATIO","SURFACE_LINE_COLOR","pointsEqual2d","maxDrawingStrokeOrdinal","strokes","maxOrdinal","nextOrdinal","buildRectanglePixelCorners","buildCirclePixelPolygon","segmentCount","segments","angle","getDrawingBoundaryPixelPoints","drawArrowHead","lineWidth","lengthPx","ux","uy","headLength","cos","sin","drawPointDot","drawPolylineStroke","drawRectangleStroke","x","y","drawCircleStroke","drawFillStroke","color","alpha","drawLineStroke","createOffscreenCanvas","getOpenBoundaryEndpoints","allowSelfConnect","pairNearbyBoundaryEndpoints","endpoints","maxDistance","candidates","leftIndex","rightIndex","distance","used","pairs","buildBoundaryMaskFromStrokes","gapPx","boundaryStrokes","connectors","data","mask","findNearestOpenSeed","boundaryMask","seedX","seedY","maxRadius","best","bestDistance","px","py","floodFillInterior","seedPoint","fillMask","queue","head","tail","area","touchesEdge","upIndex","downIndex","polygonArea2d","removeDuplicatePolygonPoints","removeCollinearPolygonPoints","loop","following","cross","downsamplePolygon","maxPoints","step","cursor","pointKey","traceMaskLoops","adjacency","addSegment","loops","currentIndex","guard","candidateIndex","normalizedLoop","normalizePolygonPoints","buildPolygonFromFilledMask","seed","containingLoops","chosen","simplified","findNearestValidDistance","distances","direction","offset","nextIndex","buildGuessedFillPolygon","validDistances","orderedDistances","medianDistance","smoothedDistances","pass","buildFillStrokeAtPoint","canvasWidth","canvasHeight","maxCanvasDimension","analysisScale","analysisWidth","analysisHeight","gapStrategies","strategy","filledRegion","fillPoints","fallbackBoundaryMask","redrawDrawingCanvas","draftStroke","allStrokes","DERIVED_DISPLAY_EDGE_TRIANGLE_LIMIT","isNumericArray","stride","shouldBuildDerivedDisplayEdges","triangleLimit","shouldShowRecordDisplayEdges","edgesVisible","topologyDisplayEdgesVisible","displayEdgesVisible","wireframeMode","CAD_DISPLAY_MODE","CAD_DISPLAY_MODE_VALUES","EXPLODED_VIEW_AXES","MAX_EXPLODED_VIEW_DEPTH","HEX_COLOR_PATTERN","CAD_EDGE_COLOR","CAD_EDGE_HIGHLIGHT_COLOR","CAD_EDGE_CLASS_IDS","DEFAULT_DISPLAY_EDGE_CLASS_SETTINGS","DEFAULT_DISPLAY_EDGE_SETTINGS","DISABLED_DISPLAY_EDGE_SETTINGS","DEFAULT_EXPLODED_VIEW_SETTINGS","DEFAULT_DISPLAY_SETTINGS","isObject","normalizeColor","normalizeBoolean","normalizeDisplayEdgeContrastMode","normalizeDisplayEdgeClassSettings","colorFallback","fallbackColor","classSource","classFallback","legacyDisabled","normalizeDisplayEdgeSettings","normalizeModeText","normalizeDisplayMode","normalizeExplodedViewAxis","normalizeExplodedViewDirection","normalizeExplodedViewDepth","normalizeExplodedViewSettings","overrides","merged","axisText","normalizeDisplaySettings","explodedOverrides","displaySettingsEqual","resolveDisplayEdgeSettings","displaySettings","displayModeIsWireframe","displayModeForcesEdges","displayModeAllowsEdges","displayModeShowsEdges","edgeSettings","mode","displayModeShowsThroughEdges","displayModeUsesTransparentSurfaces","displayModeUsesUnlitSurfaces","displayModeSurfaceOpacity","numericFallback","isFloat32Array","isUint32Array","pointDistance","boundsForPolylines","polylines","positions","stitchToleranceForPolylines","pointFromProxy","proxy","vertexIndex","normalizePartIdSet","normalizeVisibilityClassSet","values","occurrenceMatchesPartIds","partIds","edgeRowMatchesPartIds","row","edgeRowPassesPartFilter","includePartIds","excludePartIds","edgeRowPassesVisibilityClassFilter","visibilityClasses","visibilityClass","edgeRowPassesFilters","pushPoint","last","buildTopologyPolylinesForRun","segmentStart","lastPoint","segmentIndex","startVertexIndex","endVertexIndex","startPoint","endPoint","buildTopologyPolylinesForEdgeId","edgeIds","rowIndex","runStart","runCount","flushRun","polylinePoint","polylineStart","polylineEnd","reversePolyline","reversed","appendPolyline","skipFirst","startOffset","closePolylineIfNeeded","output","stitchTopologyDisplayEdgePolylines","chains","currentStart","currentEnd","candidateStart","candidateEnd","hasTopologyDisplayEdgeProxy","selectorRuntime","shouldUseTopologyDisplayEdges","buildTopologyDisplayEdgePositions","includePartIdSet","excludePartIdSet","hasPartFilter","visibilityClassSet","edgeRows","hasVisibilityClassFilter","hasEdgeRowFilter","linePositions","writeOffset","writeSegment","count","buildTopologyDisplayEdgePolylines","DEFAULT_LINE_DEPTH_BIAS","TOPOLOGY_LINE_DEPTH_BIAS","TOPOLOGY_LINE_DEPTH_BIAS_PER_EXTRA_PIXEL","MAX_TOPOLOGY_LINE_DEPTH_BIAS","COPLANAR_TOPOLOGY_EDGE_CLASSES","COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS","COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS_PER_EXTRA_PIXEL","MAX_COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS","DEFAULT_VISIBLE_TOPOLOGY_EDGE_CLASSES","TOPOLOGY_EDGE_CLASS_ORDER","MAX_TOPOLOGY_LINE_STRIP_POLYLINES","MAX_TOPOLOGY_LINE_STRIP_POSITION_VALUES","DEFAULT_TOPOLOGY_EDGE_CLASS_SETTINGS","topologyLineDepthBiasForWidth","normalizedClass","baseBias","biasPerExtraPixel","maxBias","lineSegmentPositionsFromGeometry","geometry","positionAttribute","rawPositions","syncLineMaterialOpacity","material","opacity","nextOpacity","nextTransparent","syncScreenSpaceLineMaterialResolution","materials","nextWidth","nextHeight","registerLineMaterial","unregisterLineMaterial","normalizePartIds","topologyEdgeRowMatchesPartIds","topologyEdgeRowMatchesLineStripFilters","shouldBuildTopologyLineStrips","filters","polylineCount","positionValueCount","normalizeVisibilityClasses","normalizeTopologyEdgeClassSettings","baseTheme","fallbackClasses","classSettings","explicitVisibilityClasses","baseOpacity","baseThickness","baseColor","classValue","classOpacity","classThickness","classColor","runtimeHasVisibilityClassRows","createScreenSpaceLineSegments","renderOrder","depthTest","depthWrite","depthBias","LineSegments2","LineSegmentsGeometry","LineMaterial","lineGeometry","lineMaterial","createScreenSpaceLineMaterial","line","applyLineDepthBias","bias","createScreenSpaceLineStrip","Line2","LineGeometry","createBasicLineStrip","THREE","positionArray","createBasicLineSegments","createScreenSpaceLineSegmentsFromGeometry","createDisplayEdgeObject","displayMode","thickness","wireframeEdgeColor","edgeOpacity","createTopologyDisplayEdgeObject","focusedPartIds","highlightPartIds","edgeClassSettings","classSetting","setting","highlightOpacity","dimmedOpacity","baseOptions","createLine","createLineStrip","createClassGroup","lines","createLineStripGroup","sum","createClassLine","lineOptions","stripGroup","dimmedLine","focusedLine","classLines","URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS","URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS","URDF_POSE_PICKER_MARKER_COLOR","URDF_POSE_PICKER_HOVER_FILL_COLOR","URDF_POSE_PICKER_HOVER_OUTLINE_COLOR","URDF_POSE_PICKER_HOVER_OUTLINE_WIDTH","URDF_POSE_PICKER_GRID_OPACITY","URDF_POSE_PICKER_SHELL_RADIUS_SCALE","normalizeUrdfPosePickerCenter","picker","resolveUrdfPosePickerCenterWorld","runtime","centerLocal","centerWorld","resolveUrdfPosePickerShell","centerLocalVector","cameraDistance","modelRadius","minRadius","clampedRadius","intersectUrdfPosePickerShell","ray","shell","hitPoint","sphere","modelPoint","intersectUrdfPosePickerShellAtNdc","ndc","cameraPosition","urdfPosePickerCellKey","cell","isValidUrdfPosePickerCell","urdfPosePickerCellForModelPoint","worldPoint","longitude","latitude","v","resolveUrdfPosePickerHoverCell","pick","urdfPosePickerSphereDirection","u","horizontal","urdfPosePickerCellCornerDirection","xOffset","yOffset","createUrdfPosePickerShellGridGeometry","createUrdfPosePickerCellGeometry","surfaceOffset","createUrdfPosePickerCellOutlinePositions","createUrdfPosePickerShell","lineSegments","nextShell","createUrdfPosePickerHoverCellMesh","mesh","nextCell","nextCellKey","nextGeometry","createUrdfPosePickerHoverCellOutline","nextPositions","syncUrdfPosePickerHoverMesh","object","cellKey","syncUrdfPosePickerHoverOutline","syncUrdfPosePickerHoverObjects","meshVisible","outlineVisible","VIEWER_SCENE_SCALE","SCENE_SCALE_SETTINGS","SHADOW_SETTINGS","normalizeSceneScaleMode","getSceneScaleSettings","clampSceneModelRadius","numericRadius","defaultSceneGridRadius","getLightingScopeRadius","getProportionalLightingScopeRadius","sceneScaleSettings","safeModelRadius","referenceModelRadius","getShadowCameraSettings","keyLightDistance","shadowSettings","shadowScopeRadius","shadowExtent","shadowFar","MAX_THEME_FILL_COLORS","CAD_THEME_EDGE_SETTINGS","DISABLED_THEME_EDGE_SETTINGS","normalizeThemeFillColors","DEFAULT_THEME_SETTINGS","fillColors","resolveThemeFillColor","colorIndex","hexColorToLinearRgb","hex","channel","srgb","relativeLuminance","rgb","normalizeBackgroundType","normalizeMaterialTintMode","THEME_FLOOR_MODES","THEME_COLOR_MODES","THEME_COLOR_MODE_VALUES","normalizeThemeColorMode","THEME_MODE_COLOR_PATHS","getPathValue","setPathValue","deepClone","createThemeModeColorOverridesFromSettings","fallbackSettings","createThemeModeColors","lightSettings","darkSettings","withThemeColorMode","colorMode","modeColors","normalizeThemeModeColors","fallbackModeColors","applyThemeModeColorOverrides","MIN_FLOOR_GRID_DENSITY","MAX_FLOOR_GRID_DENSITY","DEFAULT_FLOOR_GRID_SETTINGS","normalizeFloorMode","ENVIRONMENT_PRESETS","WORKBENCH_FILL_COLORS","BLUE_FILL_COLORS","MAGENTA_FILL_COLORS","CLAY_FILL_COLORS","BEACH_FILL_COLORS","TERMINAL_FILL_COLORS","TERMINAL_EDGE_COLOR","TERMINAL_EDGE_HIGHLIGHT_COLOR","TERMINAL_EDGE_CLASS_SETTINGS","TERMINAL_THEME_EDGE_SETTINGS","CHARCOAL_FILL_COLORS","mixHexColors","colorA","colorB","amount","from","to","clampedAmount","fromChannel","toChannel","midpointPalette","primaryColors","secondaryColors","secondary","colorCount","_","primaryColor","secondaryColor","createFloorGridSettings","floorColor","normalizedFloorColor","enabled","lightFloor","centerColor","cellColor","density","CINEMATIC_THEME_SETTINGS","DARK_STUDIO_THEME_SETTINGS","CODEX_DARK_STUDIO_THEME_SETTINGS","DARKOAL_FILL_COLORS","DARKOAL_THEME_SETTINGS","BLUE_THEME_SETTINGS","PINK_THEME_SETTINGS","CLAY_SUNRISE_THEME_SETTINGS","BEACH_THEME_SETTINGS","TERMINAL_THEME_SETTINGS","WORKBENCH_LIGHT_CANVAS_COLOR","WORKBENCH_LIGHT_FLOOR_COLOR","WORKBENCH_BASE_THEME_SETTINGS","WORKBENCH_DARK_FLOOR_COLOR","WORKBENCH_DARK_THEME_SETTINGS","WORKBENCH_THEME_SETTINGS","BLUE_THEME_PRESET_SETTINGS","PINK_THEME_PRESET_SETTINGS","CLAY_SUNRISE_THEME_PRESET_SETTINGS","BEACH_THEME_PRESET_SETTINGS","TERMINAL_THEME_PRESET_SETTINGS","THEME_PRESETS","THEME_PRESET_ID_ALIASES","DEFAULT_THEME_PRESET_ID","DEFAULT_THEME_PRESET","preset","resolveSystemThemePresetId","prefersDark","PRESET_ID_SET","LEGACY_CINEMATIC_MATERIALS","PREVIOUS_CINEMATIC_MATERIALS","DIM_CINEMATIC_MATERIALS","LOW_CONTRAST_CINEMATIC_MATERIALS","SOFT_CONTRAST_CINEMATIC_MATERIALS","FEATURE_CONTRAST_CINEMATIC_MATERIALS","LEGACY_CINEMATIC_BACKGROUND","PREVIOUS_CINEMATIC_BACKGROUND","DIM_CINEMATIC_BACKGROUND","LEGACY_CINEMATIC_FLOOR","PREVIOUS_CINEMATIC_FLOOR","DIM_CINEMATIC_FLOOR","LEGACY_CINEMATIC_ENVIRONMENT","DIM_CINEMATIC_ENVIRONMENT","PREVIOUS_CINEMATIC_LIGHTING","DIM_CINEMATIC_LIGHTING","normalizeEnvironmentPresetId","normalizePosition","valuesMatch","expected","nestedExpected","valuesMatchAny","expectedValues","isMigratableCinematicThemeSettings","materialMatches","floorMatches","environmentMatches","backgroundMatches","lightingMatches","normalizeThemeSettings","background","environment","floor","lighting","hasMaterialSettings","missingLegacyTintMode","missingLegacyEmissiveIntensity","normalizedDefaultColor","normalizedFloorMode","grid","fallbackGridSettings","normalizedGridCenterColor","normalizedGridCellColor","normalizedGridOpacity","normalizedGridDensity","cloneNormalizedThemeSettings","normalizeThemePresetId","presetId","canonical","getThemePresetById","normalizedPresetId","cloneThemePresetSettings","resolveThemeSettingsColorMode","themeSettings","systemFallback","normalizedColorMode","resolveThemeSettingsForColorMode","resolvedColorMode","resolved","themeSettingsSupportsSystemColorMode","inferThemeSettingsSceneTone","getEnvironmentPresetById","BASE_VIEWER_THEME","THEME_BACKGROUND_TYPES","BACKGROUND_TEXTURE_SIZE","FLOOR_GLOW_TEXTURE_SIZE","MIN_WIREFRAME_EDGE_CONTRAST","WIREFRAME_LIGHT_EDGE_COLOR","WIREFRAME_DARK_EDGE_COLOR","normalizeHexColor","hexChannelToLinear","red","green","blue","contrastRatio","luminanceA","luminanceB","lighter","darker","minimumContrast","backgroundColors","normalizedBackgrounds","backgroundColor","wireframeBackgroundColors","viewerTheme","backgroundType","colors","normalizedColors","resolveWireframeEdgeColor","edgeColor","minimumContrastRatio","normalizedEdgeColor","getViewerThemeValue","getViewerThemeNumber","toThemeArray","colorToRgba","normalizeGradientStops","stops","filteredStops","stop","fallbackOffset","createSceneBackgroundTexture","themeBackground","useThemeBackground","gradientStops","glowLayers","radialGradient","angleRad","cy","x1","y1","x2","y2","linearGradient","glowLayer","resolvedX","resolvedY","centerX","centerY","outerRadius","glow","texture","disposeTexture","applySceneBackground","createSafeColor","normalizedFallback","colorValue","resolveBackgroundFloorColor","resolveStageFloorGlassFactor","roughness","clearcoat","envSignal","resolveStageFloorColor","explicitFloorColor","glassFactor","backgroundHsl","lightness","groundColor","defaultColor","floorHsl","getStageFloorSetting","createStageFloorGlowTexture","resolvedOpacity","gradient","getStageFloorGlowSize","lightingScopeRadius","safeLightingRadius","createStageFloorPlane","floorZ","lift","horizonBlend","reflectivity","isDarkFloor","specularColor","specularIntensity","clearcoatRoughness","envMapIntensity","createStageFloorGlowPlane","spotLight","shadowOpacity","spotIntensity","glowOpacity","glowSize","createStageShadowPlane","updateSpotLightTarget","targetZ","getStageFloorSize","safeRadius","DEFAULT_AUTO_ZOOM_PADDING","EPSILON","toNumber","numeric","normalizePartId","partIdMatchesFilter","filter","normalizedCandidate","isNumericBounds","vectorComponents","normalizedVector","z","mergeBoundsList","boundsList","shiftedBounds","translation","displayRecordsBounds","records","translationByRecord","record","boundsCenterAndRadius","fitDistanceForRadius","camera","aspect","padding","fov","verticalHalfFov","horizontalHalfFov","limitingHalfFov","autoZoomFrameForBounds","controls","modelOffset","frameAspect","defaultDirection","viewDirection","viewUp","frame","DEFAULT_GRID_DIVISIONS","GRID_TARGET_VISIBLE_CELLS","normalizeGridDensity","resolveGridStyle","floorSettings","gridSettings","buildGridConfig","gridDensity","targetVisibleCells","cellSize","divisions","updateGridHelper","floorMode","disposeSceneObject","gridEnabled","nextConfig","currentConfig","readSourceColor","shapeSourceColor","sourceColor","materialSettings","applyTint","shaped","tintStrength","tintColor","saturation","hsl","contrast","brightness","createMaterialFillColor","fillIndex","resolveMaterialFillBaseColor","resolveSourceBaseColor","hasVertexColors","forceFill","applyMaterialSettingsToRecord","nextUseVertexColors","REFERENCE_SELECTED_COLOR","REFERENCE_CORNER_COLOR","REFERENCE_HIGHLIGHT_WIDTH_MULTIPLIER","isPlanarFaceReference","surfaceType","faceFillOffset","normal","normalLength","normalizedNormal","worldCenter","toCamera","facingSign","magnitude","buildFaceFillGeometryFromProxy","triangleStart","triangleCount","indexSlice","sourceIndex","buildFaceFillGeometryFromDisplayMeshes","vertex","fillPositions","faceIds","indices","triangleIndex","corner","buildEdgeLinePositionsFromProxy","endIndex","buildAdjacentEdgeLinePositions","edgeReference","edgePositions","buildFaceBoundaryLinePositions","buildVertexMarkerMesh","CAD_EDGE_OPACITY","PART_HIGHLIGHT_SURFACE_RENDER_ORDER","PART_HIGHLIGHT_EDGE_RENDER_ORDER","PART_HOVER_OPACITY_BOOST","PART_SELECTED_OPACITY_BOOST","FOCUSED_DIMMED_SURFACE_OPACITY","getPartHighlightColors","highlightColor","normalizePartIdList","normalizePartSelector","partIdMatchesSet","set","referenceMatchesFocusedPart","focusedPartIdSet","baseObjectRenderOrder","syncHighlightRenderOrder","highlighted","highlightRenderOrder","baseRenderOrder","syncSurfaceTransparency","forceTransparent","writeTransparentDepth","CAD_SURFACE_EDGE_OPACITY_UNIFORMS","CAD_SURFACE_EDGE_COLOR_UNIFORMS","syncCadSurfaceEdgeHighlight","userData","nextColor","colorUniform","highlightedOpacity","baseClassSettings","uniforms","overrideClassColor","uniformName","baseClassColor","nextClassColor","applyPartVisualState","hiddenPartIds","hoveredPartId","focusedPartId","selectedPartIds","showEdges","hidden","selected","hovered","baseEdgeColor","defaultSurfaceOpacity","focusIds","hasFocus","baseEdgeOpacity","transparentDisplayMode","highlightEdgeOpacity","hoveredSurfaceColor","hoveredEdgeColor","selectedSurfaceColor","selectedEdgeColor","effectStyle","effectHidden","effectColor","effectEdgeColor","effectEmissive","isHidden","isSelected","isHovered","isFocused","isDimmed","isHighlighted","baseSurfaceOpacity","effectOpacity","effectEdgeOpacity","highlightedEdgeOpacity","dimmedSurfaceOpacity","baseEffectSurfaceOpacity","highlightedSurfaceOpacity","nextSurfaceOpacity","nextEdgeColor","toRows","manifest","rowKey","columnsKey","columns","column","relationArray","buffers","relationKey","viewKey","direct","viewName","typedBufferView","manifestSectionKey","selectorPrefix","singleOccurrenceId","suffix","selectorTypeLabel","transformPoint","transform","transformVector","transformBBox","bbox","xs","ys","zs","transformParams","params","pointKeys","vectorKeys","transformPointList","transformLoopMetadata","loopsMeta","transformSurface","surface","transformPositions","transformPickData","referenceIdForRow","displaySelector","referenceSummary","detail","sourceOccurrenceMatchesFilter","sourceOccurrenceId","filterOccurrenceId","sourceId","filterId","remapSourceOccurrenceId","remapOccurrencePrefix","sourceRootId","targetRootId","sourceRootPrefix","selectorForRow","remapOccurrenceId","selectorWithRemappedOccurrence","remappedOccurrenceId","occurrenceIdForReference","buildAdjacencySelectors","relationRows","targetRows","idKey","startKey","countKey","targetSelectorType","targetRowIndex","targetRow","buildReference","copyCadPath","selectorTransform","targetKey","adjacentSelectors","buildLeafOccurrenceIds","shapes","transformRows","transformRow","applySequentialRelationStarts","relationSpecs","specs","nextStarts","nextRow","specIndex","buildSelectorRuntime","bundle","faceRelations","edgeRelations","occurrences","faces","edges","leafOccurrenceIds","selectorBuffers","visibleReferences","referenceMap","referenceByNormalizedSelector","referenceByDisplaySelector","faceReferenceByRowIndex","edgeReferenceByRowIndex","occurrenceIdByRowIndex","buildDisplayEdgeRuntime","edgeRendering","edgeProxy","edgePositionView","edgeIndexView","edgeIdView","edgeIndices","normalizedTransformEntries","component","transformForOccurrenceId","transformEntries","modelTransform","rowOccurrenceId","transformRowsByOccurrence","transforms","transformReference","transformIndexedProxy","ids","rowTransforms","elementSize","elementCount","nextIndices","nextIds","writeVertex","elementIndex","sourceOffset","nextOffset","transformedPoint","buildTransformedSelectorRuntime","transformByPartId","occurrencesResult","shapesResult","facesResult","edgesResult","referenceTransforms","faceProxy","buildTransformedDisplayEdgeRuntime","displayEdgeRuntime","displayEdgeVisibilityClassRuntimeCache","transformedSelectorRuntimeCache","transformedDisplayEdgeRuntimeCache","MAX_TRANSFORMED_RUNTIME_CACHE_ENTRIES","applyTopologyDisplayEdgeSurfaceOffset","disposeTopologyDisplayEdgeObject","matrixHasTransform","matrix","identity","rowMajorArrayFromMatrix4","elements","transformSignatureValue","number","transformEntriesSignature","transformValues","cachedTransformedRuntime","baseRuntime","buildRuntime","signature","runtimeBySignature","selectorTransformsFromDisplayRecords","displayRecords","displayEdgeRowsCanUseSelectorClasses","displayRows","selectorRows","alignedRows","selectorRow","displayStart","selectorStart","displayCount","selectorCount","runtimeUsesSurfaceOwnedEdges","displayEdgeRuntimeWithSelectorVisibilityClasses","cached","resolveTopologyDisplayEdgeRuntimes","transformDisplayEdges","selectorTransforms","baseDisplayEdgeRuntime","transformedSelectorRuntime","transformedDisplayEdgeRuntime","activeSelectorRuntime","activeDisplayEdgeRuntime","shouldRenderTopologyDisplayEdges","cadEdgeSource","shouldUseRecordTopologyEdgeTransforms","transformDetected","STEP_MODULE_SCHEMA_VERSION","HEX_COLOR_RE","toFiniteNumber","normalizeParameterType","normalizeParameterOptions","option","valueText","normalizeParameterDefinition","rawDefinition","raw","fallbackDefault","normalizeParameterValue","definition","normalizeParameters","inferCadPathFromStepModuleUrl","pathname","normalizedPath","slashIndex","directory","normalizeRelativeStepPath","rawPath","cadPathFromStepPath","stepPath","normalizeStepLink","normalizeManifestStep","normalizedStep","normalizeFeatureRef","rawFeature","fullToken","normalizeFeatures","featureId","normalizeVector3","normalizePoint3","normalizeAnimations","rawAnimation","animationId","normalizeStepModuleDefinition","rawModule","schemaVersion","stepCadPath","normalizedCadPath","parameters","parameterMap","defaultParameterValues","normalizedManifestStep","normalizedManifest","loadStepModuleDefinition","namespace","normalizeStepModuleParameterValues","parameter","boundsCenter","mergeBounds","validBounds","partIdsForSelector","referenceForSelector","uniqueStrings","featureSelectors","feature","token","resolveStepModuleFeatures","partMap","allPartIds","selectorPartIds","partsForFeature","stepModuleTargetPartIds","features","normalizedTarget","buildPartTransformMatrix","displayTransformForPart","renderPartsIndividually","normalizeStepModulePoint","stepModuleVector3","buildStepModuleRotateMatrix","spec","origin","buildStepModuleScaleMatrix","rawScale","scale","buildStepModuleTranslateMatrix","translate","buildStepModuleSingleEffectMatrix","buildStepModuleEffectMatrix","steps","resetStepModuleRecordEffects","allStepModulePartIds","displayPartIds","resolveStepModuleEffectTargetPartIds","createStepModuleEffectsApi","effectsByPartId","onTransformEffect","ensureEffect","forEachTarget","callback","effect","visible","buildStepModuleTimeState","animationState","duration","elapsedSec","buildStepModuleContext","stepModuleRuntime","effects","cleanup","applyStepModuleEffectsToRecords","applyObjectMatrix","object3d","targetMatrix","composeDisplayRecordEffectMatrix","matrices","combined","composeDisplayRecordObjectMatrix","baseMatrix","effectMatrix","applyDisplayRecordTransform","combinedMatrix","partIdMatchesAny","uniqueDisplayRecordsByPartId","seen","displayRecordPartIds","topologyDisplayEdgeLineSettingsKey","transformByRecord","numberOrNull","applyRecordEffectMatrix","nextMatrix","nextVisible","syncRecordEdgeLineTransforms","recordByPartId","syncRecordTopologyDisplayEdgeTransforms","createRecordTopologyDisplayEdgeGroup","sourceRuntime","focusedIds","highlightIds","recordEdgeSettings","syncTopologyDisplayEdgeLine","topologyRuntime","syncClip","settingsKey","topologyEdgeLine","GOLDEN_ANGLE","boundsRadius","boundsSize","boundsMaxSize","translationVector","occurrenceSegments","commonOccurrencePrefix","paths","shortest","explodedViewGroupKey","commonPrefix","safeDepth","prefixLength","groupLength","recordCanExplode","groupRecords","groupsByKey","recordIndex","groupKey","existing","createAxisVector","fallbackDirection","normalizedCount","radialGroupDirection","modelCenter","createRadialExplodedViewRecordStates","groups","modelMaxSize","spacing","baseDistance","states","radialGroups","groupIndex","groupRadius","travel","baseMin","baseMinZ","explodedBounds","explodedMinZ","createExplodedViewRecordStates","radialAxis","explodableRecords","modelSpan","baseGroups","leftCenter","rightCenter","maxGroupThickness","sortedThicknesses","medianGroupThickness","layerTolerance","minimumGap","axisVector","layers","groupCenter","previousLayer","layerGap","layer","previousThickness","currentThickness","previousMax","layerIndex","layerMin","layerMax","axisDistance","targetMin","explodedViewStateTranslationAtProgress","progress","targetTranslation","fromTranslation","applyExplodedViewProgress","clearExplodedViewRecords","easeExplodedViewProgress","CAD_SCENE_SCALE","CAD_EDGE_THRESHOLD_DEG","REFERENCE_HOVER_COLOR","MODEL_PART_ID","DEFAULT_THEME","SURFACE_EDGE_BARYCENTRIC_ATTRIBUTE","SURFACE_EDGE_CLASS_ATTRIBUTE","SURFACE_EDGE_CLASS_IDS","SURFACE_EDGE_CLASS_DEFAULTS","meshGeometryCache","cacheOwnerForMeshData","geometrySource","toArray","normalizeCadSceneScale","boundsFromVertices","vertices","centerAndRadiusFromBounds","sceneScale","cacheForMeshData","cacheOwner","cacheKey","markCachedGeometry","disposeMaterial","disposeCachedGeometry","clearGroup","applyGeometryNormals","normals","recomputeNormals","hasNormals","setSurfaceEdgeAttributes","vertexOffset","vertexCount","barycentric","edgeClass","componentOffset","componentCount","geometryHasSurfaceEdgeAttributes","shapeSourceColorBuffer","shapedColors","shouldUseDisplayVertexColors","partUsesDisplayVertexColors","surfaceEdgeClassSetting","addCadSurfaceEdgeShader","classColors","shader","activeEdgeColor","createSurfaceMaterial","useVertexColors","createWireframeSurfaceMaterial","createUnshadedSurfaceMaterial","sourceColorForPart","sourceOpacityForPart","meshUsesPartSourceColors","renderableParts","partColors","meshUsesPartSourceOpacity","emptyLineGeometry","stablePartFillKey","buildPartFillIndexMap","geometryCacheEntry","createGeometry","buildPartGeometryEntry","sourceMesh","sourceMeshColorMode","triangleOffset","localVertices","rawColors","localNormals","localIndices","positionStart","positionEnd","rawIndices","buildWholeGeometryEntry","syncRecordVertexColors","attribute","buildEdgeGeometryFromIndices","aOffset","bOffset","packedPositions","buildEdgeGeometry","sourceGeometry","sourceMeshKey","edgeKey","edgeIndexOffset","edgeIndexCount","partEdgeIndices","getEdgeThickness","fallbackThickness","createDefaultEdgeObject","normalizeEdgeResult","normalizeEdgeRendering","applyEdgeRenderingToRuntime","createSilhouetteMesh","shouldBuildSilhouette","readBoundsCenter","sourceOpacity","edgeHighlightColor","resetParameterEffects","boundsCorners","transformedBounds","effectiveBoundsFromRecords","fallbackBounds","runParameterSetup","callbacks","module","ctx","cleanupParameterRuntime","applyParameters","buildStepClipPlane","clip","boundsMin","boundsMax","low","high","syncMaterialClipPlanes","clipPlanes","clippingEnabled","previousEnabled","previousCount","previousShaderClipping","normalizeSelection","selectorEntries","selectorValuesFromEntry","normalizedSelectorValues","valueMatchesSelector","descendants","partMatchesSelector","mergePartBounds","filterMeshDataForSelection","focus","hide","nextParts","resolveMaterialSettings","resolvePartsToRender","pickableParts","addEdgeObject","edgeGeometry","rawResult","buildDisplayRecords","useSilhouette","renderParts","partFillIndexMap","useWholeMesh","makeRecord","geometryEntry","baseTransform","sourceVertexColors","useSurfaceEdges","hasSourceColor","silhouette","settingsSignature","normalizeSettings","sourceTheme","normalizedTheme","themeEdgeSettings","applyDisplayModeEdgePolicy","setRuntimeTheme","meshDataFromSource","buildModel","rawMeshData","modelGroup","edgesGroup","baseBounds","disposed","currentSettings","currentSignature","activeParameters","activeParameterSetup","rebuild","nextSettings","applyMutableState","nextParameterSetup","nextParameters","effectiveBounds","api","mergedSettings","normalizeRuntimeModelKey","runtimeModelKeyMatches","activeModelKey","currentModelKey","resolveRuntimeModelFloorZ","modelPosition","positionZ","applyRuntimeModelBounds","shadowMapSize","syncObjectClipPlanes","syncRuntimeStepClipPlane","clipSettings","TOPOLOGY_FACE_ID_NONE","buildFacePickMesh","faceRunColumnIndexes","buildGlbFaceIdsForPart","runs","primitiveIndex","sourcePartRanges","matched","runOccurrenceId","runTriangleCount","faceRow","buildGlbFaceIdsForMesh","partFaceIds","sourcePartForRecord","sourcePart","sourcePartId","syncDisplayMeshFaceIds","partsById","buildEdgePickLines","buildVertexPickPoints","clearPickGroup","clearSceneGroup","syncSelectorPickGroups","facePickMesh","edgePickLines","vertexPickPoints","SURFACE_LINE_UNSUPPORTED_TYPES","length","subtract","dot","normalizeAngleAround","adjusted","clonePoint3","clonePoint2","projectPointToPlane","relative","projectPointToCylinder","angleCenter","axial","radial","rawAngle","projectPointToSurfaceUv","pointOnSurfaceFromUv","uv","theta","cosTheta","sinTheta","surfaceNormalAtUv","buildSurfaceLinePositions","surfaceLine","startUv","endUv","project","previousPoint","offsetPoint","dataUrlToBlob","dataUrl","mimeType","binary","bytes","canvasToBlob","resolve","reject","captureError","normalizeScreenshotCrop","crop","fullWidth","fullHeight","maxWidth","maxHeight","cropWidth","cropHeight","isTransparentCssColor","resolveElementBackgroundColor","getComputedStyle","visited","body","paintScreenshotSourceCanvas","sourceCanvas","overlayCanvas","cropRect","resolvedBackground","previousFillStyle","buildCompositeScreenshotBlob","renderer","scene","previousRenderTarget","previousXrEnabled","exportCanvas","WEBGL_CONTEXT_ERROR_PATTERN","runtimeErrorMessage","isWebGlContextCreationError","buildRuntimeInitializationAlert","RENDER_FORMAT","MESH_RENDER_FORMATS","ROBOT_RENDER_FORMATS","normalizeFormat","normalizeRenderFormat","defaultFormat","entryKind","entrySourceFormat","isMeshRenderFormat","format","isRobotRenderFormat","meshAssetKeyForFormat","meshAssetKeyForEntry","fileSheetKindForEntry","fileExtensionFromPath","baseUrl","rawValue","dotIndex","renderFormatFromExtension","extension","renderFormatFromPath","ASSET_STATUS","REFERENCE_STATUS","TAB_TOOL_MODE","ORIENTATION_FALLBACK","DEFAULT_VIEW_PLANE_PALETTE","DEFAULT_VIEW_PLANE_SIZE","normalizeCssLength","toRgb","g","mixRgb","ratio","rgbToCss","normalizeRgbTriplet","resolveViewPlanePalette","themePalette","themeAxisPalette","axisId","custom","normalizeAxis","normalizeOrientation","orientation","projectDirection","dz","getAxisId","face","ViewPlaneControl","showViewPlane","previewMode","isLoading","viewPlaneOffsetRight","viewPlaneOffsetBottom","activeViewPlaneFace","viewPlaneFaces","viewPlaneOrientation","compact","viewPlaneSize","viewPlaneHeader","activateViewPlaneFace","activateDefaultViewPlane","hoveredNodeId","setHoveredNodeId","useState","palette","projectedNodes","axisPalette","fillColor","backNodes","frontNodes","is2d","customViewPlaneSize","viewPlaneSizeClasses","viewPlaneSizeStyle","viewPlaneSurfaceClasses","viewPlaneLabel","normalizedBottomOffset","centerHovered","renderNode","active","Fragment","useViewerDrawingOverlay","drawingCanvasRef","drawingDraftRef","drawingStrokesRef","drawingChangeRef","drawingIdRef","drawingEnabled","drawingTool","viewerReadyTick","renderDrawingOverlay","buildSurfaceLineAnchor","updateSurfaceLineAnchor","drawingEraseThresholdPx","drawingMinPointDistancePx","drawingMinStrokeLengthPx","useEffect","interaction","commitStrokes","nextStrokes","commitSingleStroke","eraseStrokeAt","bestIndex","beginDraft","updateDraft","draft","endDraft","strokeLength","handlePointerDown","anchor","handlePointerMove","nextAnchor","handlePointerEnd","worldUnitsPerPixelAtDistance","viewportHeightPx","safeViewportHeightPx","safeDistance","verticalFovRadians","zoom","top","bottom","screenLimitedPickThreshold","baseThreshold","thresholdScale","maxScreenDistancePx","scaledBaseThreshold","screenDistancePx","unitsPerPixel","VIEWER_CONTEXT_MENU_SUPPRESSION_MS","createViewerContextMenuGestureState","now","suppressionMs","suppressUntil","AUTO_EDGE_PICK_THRESHOLD_FACTOR","FRONT_LAYER_DISTANCE_FACTOR","FRONT_LAYER_DISTANCE_MIN","EDGE_OCCLUSION_EPSILON_FACTOR","EDGE_OCCLUSION_EPSILON_MIN","EDGE_PICK_MAX_SCREEN_DISTANCE_PX","EDGE_PICK_MAX_SCREEN_DISTANCE_WITH_FACE_PX","EDGE_HOVER_MAX_SCREEN_DISTANCE_PX","EDGE_HOVER_MAX_SCREEN_DISTANCE_WITH_FACE_PX","EDGE_PICK_PRIORITY_WITH_FACE_PX","EDGE_HOVER_PRIORITY_WITH_FACE_PX","CORNER_PICK_MAX_SCREEN_DISTANCE_PX","CORNER_HOVER_MAX_SCREEN_DISTANCE_PX","CORNER_PICK_PRIORITY_WITH_OTHER_PX","CORNER_HOVER_PRIORITY_WITH_OTHER_PX","HOVER_PICK_MIN_MOVE_PX","FINE_POINTER_TAP_SLOP_PX","COARSE_POINTER_TAP_SLOP_PX","VIEWER_DOUBLE_CLICK_ACTIVATION_DELAY_MS","chooseBestEdgeIntersection","intersections","measureScreenDistance","scored","intersection","aScreenDistance","bScreenDistance","frontMostModelIntersections","nearestDistance","depthWindow","intersectionVisibleByClipPlane","filterClippedIntersections","useViewerPicking","runtimeRef","mountRef","sceneMountRef","pickMode","pickableFaces","pickableEdges","pickableVertices","onHoverReferenceChange","onActivateReference","onDoubleActivateReference","onContextReference","pickModeRef","useRef","selectorRuntimeRef","pickableFacesRef","pickableEdgesRef","pickableVerticesRef","hiddenPartIdsRef","focusedPartIdRef","onHoverReferenceChangeRef","onActivateReferenceRef","onDoubleActivateReferenceRef","onContextReferenceRef","allowedFaceReferenceIdsRef","allowedEdgeReferenceIdsRef","allowedVertexReferenceIdsRef","container","sceneMount","drawingCanvas","defaultToCoarsePointer","pointerDown","primaryPointer","contextPointer","hoverState","doubleClickEnabled","activationTimerId","contextMenuGesture","pointerButtons","buttons","primaryButtonHeld","contextButtonHeld","chordButtonsHeld","resetPrimaryPointer","resetContextPointer","suppressContextMenuFromPanChord","setPointerFromPosition","clientX","clientY","projectPointToClient","edgeScreenDistance","clientPoint","pickViewportHeightPx","pickSurfaceDistance","modelIntersections","surfaceDistance","controlsDistance","currentPickThreshold","visibleModelMeshes","hiddenIds","intersectVisibleModelMeshes","modelMeshes","pickPartReferenceFromIntersections","faceReferenceFromIntersection","referenceId","allowedFaceReferenceIds","edgeReferenceFromIntersection","hitIndex","allowedEdgeReferenceIds","vertexReferenceFromIntersection","pointIndex","vertexIds","allowedVertexReferenceIds","pickFaceReference","frontModelIntersections","filteredIntersections","nearestSurfaceDistance","pickEdgeCandidate","edgeThreshold","depthAllowance","bestScreenDistance","pickVertexCandidate","vertexThreshold","areFaceAndEdgeAdjacent","faceReference","edgeDisplaySelector","edgeNormalizedSelector","areEdgeAndVertexAdjacent","vertexReference","areFaceAndVertexAdjacent","faceAdjacentSelectors","vertexAdjacentSelectors","edgeSelectorSet","pickTopologyReference","hover","hasFaces","hasEdges","hasVertices","edgeCandidate","vertexCandidate","vertexPriorityDistancePx","adjacentToEdge","adjacentToFace","priorityDistancePx","pickReferenceAtPosition","preferTopology","topologyReference","pickActivationReference","pointerType","canHoverWithPointer","isCoarsePointer","tapSlopForPointer","isSceneInteractionTarget","isSceneEvent","isActiveSceneGestureEvent","commitHoverState","normalizedReferenceId","clearHoverState","clearPendingActivation","commitActivation","scheduleActivation","flushHoverPick","scheduleHoverPick","recordPrimaryPointerDown","recordContextPointerDown","preserveGestureBlock","blocked","moved","shouldOpenContextMenuFromRelease","tapSlop","openContextMenuFromEvent","suppressNativeContextMenu","releaseContextPointer","updateContextPointerMove","handlePointerDownCapture","handleMouseDownCapture","handlePointerMoveCapture","handleMouseMoveCapture","handlePointerUpCapture","handleMouseUpCapture","handlePointerLeave","handlePointerUp","pointerDownReferenceId","handleDoubleClick","handleContextMenu","isEditableTarget","cadWebGlRendererAttributes","antialias","powerPreference","preserveDrawingBuffer","logarithmicDepthBuffer","fallbackCadWebGlRendererAttributes","createCadWebGlRenderer","allowFallback","isRecoverableError","resolveInteractionPixelRatioCap","idlePixelRatioCap","interactionPixelRatioCap","preservePixelRatio","screenSpaceLineMaterialCount","screenSpaceLineMaterials","MAX_ORBIT_DELTA_SECONDS","PREVIEW_ORBIT_SECONDS_PER_TURN","PREVIEW_AUTO_ROTATE_SPEED","finiteTimestamp","orbitControlsDeltaSeconds","timestamp","previousTimestamp","updateOrbitControls","deltaSeconds","createWebGlRenderer","useViewerRuntime","previewModeRef","setError","setViewerReadyTick","syncDrawingCanvasSize","emitPerspectiveChange","setActiveViewPlaneFace","activeViewPlaneFaceRef","stepCameraTransition","stepKeyboardOrbit","getActiveViewPlaneFaceId","cancelCameraTransition","clearKeyboardOrbitState","isTrackpadLikeWheelEvent","getKeyboardOrbitCommand","getKeyboardOrbitAxes","applyOrbitDelta","getPixelRatioCap","applyCameraFrameInsets","frameInsetsRef","applyInitialPerspective","syncViewPlaneOrientation","DEFAULT_LIGHTING","DEFAULT_DAMPING_FACTOR","DEFAULT_ZOOM_SPEED","COARSE_POINTER_ZOOM_SPEED","INTERACTION_PIXEL_RATIO_CAP","IDLE_PIXEL_RATIO_CAP","INTERACTION_IDLE_DELAY_MS","TRACKPAD_PINCH_ZOOM_SPEED","COARSE_POINTER_PINCH_ZOOM_SPEED","ACCELERATED_WHEEL_ZOOM_SPEED","KEYBOARD_ORBIT_NUDGE_RAD","defaultGridRadius","onManualCameraInteraction","onViewportResize","onContextLost","onContextRestored","onInitializationError","preserveInteractionPixelRatio","runtimeResetToken","cancelled","initializeViewer","OrbitControls","__vitePreload","prefersCoarsePointer","getOrbitControlsPixelRatioBucket","initialWheelPixelRatioBucket","getDefaultZoomSpeed","getPinchZoomSpeed","getWheelZoomSpeed","baseZoomSpeed","syncCameraViewport","targetCamera","halfHeight","perspectiveCamera","orthographicCamera","hemisphereLight","ambientLight","keyLight","fillLight","rimLight","pointLight","axesHelper","stageGroup","facePickGroup","edgePickGroup","vertexPickGroup","raycaster","pointer","interactionState","keyboardOrbitState","getScreenSpaceLineMaterialCount","syncScreenSpaceLineMaterials","registerScreenSpaceLineMaterial","unregisterScreenSpaceLineMaterial","handleContextLost","handleContextRestored","applyRenderQuality","pixelRatioCap","nextPixelRatio","rafId","requestRender","renderFrame","cameraTransitionActive","keyboardOrbitMoved","needsMoreFrames","previewOrbitActive","nextActiveFace","beginInteraction","scheduleIdleQuality","onResize","w","h","resizeObserver","controlsStartDistance","readControlsDistance","activeRuntime","handleControlsStart","handleControlsChange","handleControlsEnd","controlsEndDistance","threshold","handleWheel","wheelListenerOptions","command","handleKeyUp","axes","clearKeyboardOrbit","handleVisibilityChange","err","normalizeViewerRenderState","normalizedThemeSettings","normalizedDisplaySettings","EXPLODED_VIEW_ANIMATION_DURATION_MS","KEYBOARD_ORBIT_SPEED_RAD_PER_SEC","KEYBOARD_POLAR_EPSILON","VIEW_PLANE_ACTIVE_DOT_THRESHOLD","VIEW_PLANE_TRANSITION_MS","VIEW_PLANE_POLE_DIRECTION_DOT_THRESHOLD","VIEW_PLANE_POLE_DIRECTION_NUDGE","DEFAULT_PERSPECTIVE_DIRECTION_DOT_THRESHOLD","DEFAULT_PERSPECTIVE_UP_DOT_THRESHOLD","CAMERA_TRANSITION_EASING","DEFAULT_VIEW_PLANE_ORIENTATION","AUTO_ZOOM_PADDING","WORLD_UP","CAD_COORDINATE_SYSTEM","ROBOT_COORDINATE_SYSTEM","DEFAULT_VIEW_DIRECTION","VIEW_PLANE_DEFAULT_PRESET","DISPLAY_TOOLBAR_CLASSES","DISPLAY_TOOLBAR_BUTTON_CLASSES","VIEW_PLANE_CONTROL_SIZE","VIEW_PLANE_CONTROL_GAP","ZOOM_CONTROL_CONTENT_WIDTH","ZOOM_CONTROL_MIN_PERCENT","ZOOM_CONTROL_MAX_PERCENT","ZOOM_CONTROL_STEP_PERCENT","BEND_GUIDE_COLOR","BEND_GUIDE_WIDTH_MULTIPLIER","VIEW_PLANE_FACES","VIEW_PLANE_FACE_BY_ID","referenceSelectorType","referenceOccurrenceSelector","referenceMatchesOccurrenceSubtree","occurrenceSelector","referenceShapeSelector","referenceMatchesShape","shapeSelector","occurrence","syntheticOccurrenceSelectorFromReferenceId","marker","markerIndex","viewPlaneOrientationEqual","readViewPlaneOrientation","inverseCameraRotation","projectAxis","cameraMatchesViewPreset","directionDotThreshold","upDotThreshold","currentDirection","nextDirection","currentUp","nextUp","renderableMeshParts","meshNeedsPartRenderingForSourceColors","displayRecordsAnimationKey","transformedRuntimeStateEqual","updateTransformedRuntimeState","setState","cancelExplodedViewAnimation","animationRef","animation","displayRecordExplodedViewTranslation","explodedViewStateTargetTranslation","targetProgress","explodedViewTransitionStateKey","createExplodedViewRuntimeTransitionStates","previousStates","previousTransitionProgress","useCurrentTranslations","previousTranslationsByRecord","previousTranslationsByKey","previousState","clearExplodedViewRecordsOutsideStates","stateRecords","explodedViewTransitionNeedsAnimation","normalizeZoomPercent","formatZoomPercent","readCameraTargetDistance","readOrthographicHalfHeight","storedHalfHeight","derivedHalfHeight","resetRuntimeZoomBaseline","readRuntimeZoomPercent","cameraZoom","baseHalfHeight","normalizedBaseHalfHeight","normalizedBaseDistance","setRuntimeZoomPercent","percent","nextZoom","reapplyRuntimeCameraFrameInsets","minDistance","nextDistance","ZoomControl","zoomPercent","onZoomPercentChange","onZoomReset","editing","setEditing","inputValue","setInputValue","selectOnFocusRef","commitInputValue","adjustZoom","delta","Minus","input","Plus","RotateCcw","cssLength","ZoomToolbar","applyExplodedViewRuntimeProgress","cap","getStageEffectRadius","getStageEffectScale","referenceRadius","setScaledLightPosition","light","scaledLightDistance","numericDistance","syncRuntimeScaledLighting","lightingSettings","syncRuntimeScaledLightingAndShadow","updateStageEffects","stageScaleMode","floorSize","glowPlane","shadowPlane","normalizeViewportFrameInsets","normalizeInset","inset","numericInset","getViewportFrameMetrics","frameInsets","normalizedInsets","framedWidth","framedHeight","getViewportFrameCrop","metrics","pixelWidth","pixelHeight","scaleX","scaleY","updateProjection","offsetX","offsetY","getFitDistanceForBoundingSphere","runtimeCameraProjection","syncRuntimeCameraClipPlanes","near","far","getOrthographicHalfHeightForBoundingSphere","frameMetrics","viewportHeight","setOrthographicCameraHalfHeight","nextHalfHeight","previousHalfHeight","previousLeft","previousRight","previousTop","previousBottom","syncOrthographicCameraFrame","frameRuntimeCameraForBoundingSphere","activeCamera","fitCamera","fitDistance","syncRuntimeCameraProjection","projection","scheduleIdle","nextProjection","nextCamera","previousCamera","previousPerspectiveHalfHeight","previousOrthographicHalfHeight","preservedHalfHeight","autoRotateBeforeProjectionSync","easeInOutCubic","easeInOutSine","easeCameraTransitionProgress","easing","readPerspectiveSnapshot","readScopedPerspectiveSnapshot","coordinateSystemForSceneScale","azimuthDelta","polarDelta","worldUp","minPolar","maxPolar","currentPolar","resolvedPolarDelta","minAzimuth","maxAzimuth","currentAzimuth","orbitRight","applyPerspectiveSnapshot","perspective","nextPerspective","transitionCameraToPerspectiveSnapshot","durationMs","orthographicHalfHeight","resetZoomBaselineOnComplete","endPosition","endTarget","endUp","endZoom","startOrthographicHalfHeight","endOrthographicHalfHeight","pointBounds","selectorReferenceForId","selectorReferenceBounds","referenceIds","currentDisplayRecordTranslationByRecord","translations","displayRecordBoundsForPartIds","normalizedPartIds","zoomRuntimeToBounds","animate","resetZoomBaseline","normalizedBounds","applied","transition","eased","projectionUpdated","transitionCameraToViewPreset","currentTarget","currentOffset","fallbackDistance","currentDistance","screenUp","poleSign","bestId","bestScore","score","getHighlightEdgeThickness","getHighlightEdgeOpacity","getHighlightEdgeColor","isPointerInsideElement","disposeOverlayChild","nested","clearOverlayGroup","parseFaceToken","mateOverlayVector","normalizedMateOverlayEndpoint","endpoint","normalizeMateIdList","resolveActiveMateOverlays","assemblyMates","selectedMateIds","hoveredMateId","selectedSet","hoveredId","mate","mateId","fixed","moving","createMateMarkerMesh","markerGeometry","markerMaterial","pushMateAxisSegment","unit","addMateOverlayGlyph","markerRadius","axisLength","fixedPosition","movingPosition","anchorPosition","updateStageGridHelper","CadViewer","forwardRef","renderFormat","perspectiveRef","floorModeOverride","compactViewPlane","viewportFrameInsets","hoveredReferenceId","selectedReferenceIds","stepParameters","surfaceLineFaceId","drawingStrokes","onDrawingStrokesChange","onPerspectiveChange","onProjectionChange","onDisplayModeChange","onViewerAlertChange","onStepModuleTransformDetectedChange","urdfPosePicker","stepParameterRuntime","normalizedProjection","meshGeometrySource","normalizedViewportFrameInsets","useMemo","interactionHostRef","perspectiveChangeRef","viewerAlertChangeRef","stepModuleTransformDetectedChangeRef","urdfPosePickerRef","posePickerPointerRef","lastEmittedPerspectiveRef","lastProjectionRef","suppressPerspectiveEventsRef","explodedViewAnimationRef","viewportFrameInsetsRef","framedModelKeyRef","modelTransformRef","clipSettingsRef","displayEdgeRuntimeRef","stepModuleCleanupRef","setTransformedSelectorRuntime","setTransformedDisplayEdgeRuntime","defaultPerspectiveDetached","setDefaultPerspectiveDetached","setRuntimeResetToken","setViewPlaneOrientation","cameraZoomPercent","setCameraZoomPercent","urdfPosePickerGuidePoint","setUrdfPosePickerGuidePoint","urdfPosePickerHoverActive","setUrdfPosePickerHoverActive","defaultPerspectiveResettingRef","perspectivePropRef","modelKeyRef","sceneScaleModeRef","normalizedViewerRenderState","normalizedDisplayMode","normalizedExplodedSettings","explodablePartCount","explodedViewActive","effectiveRenderPartsIndividually","shouldUseCadEdgeSource","displayEdgeSettings","displayModeForceEdges","displayModeThroughEdges","wireframeEdgeOpacity","visualEdgeSettings","forcedSettings","hiddenPartIdSet","hiddenAwareVisualEdgeSettings","normalizedClipSettings","defaultFloorMode","resolvedFloorMode","updateActiveGridHelper","useCallback","activeViewerTheme","surfaceStepEdgesVisible","recordEdgesVisible","partVisualStateEnabled","partVisualStateRef","useLayoutEffect","activeSurfaceLineFaceId","visibleReferenceFilter","filteredPickableFaces","filteredPickableEdges","filteredPickableVertices","pickableReferenceMap","map","pickableFaceReferenceIds","rendererCanvas","runWithoutPerspectiveEvents","syncCameraZoomPercent","nextZoomPercent","syncDefaultPerspectiveState","nextDetached","nextOrientation","applyZoomPercent","resetZoomAndPan","reset","buildSurfaceLineFaceAnchor","lockedReferenceId","activeLockedReferenceId","proxyIntersections","localPoint","updateSurfaceLineFaceAnchor","draftSurfaceLine","readUrdfPosePickerModelPoint","updateUrdfPosePickerHoverFromPointer","guidePoint","pickUrdfPosePoint","handlePosePickerPointerDown","handlePosePickerPointerMove","handlePosePickerPointerUp","handlePosePickerPointerCancel","handlePosePickerPointerLeave","faceId","transitioned","useImperativeHandle","fitted","handleRuntimeContextRestored","handleRuntimeInitializationError","runtimeError","previousProjection","fillIntensity","rimIntensity","environmentSettings","clearEnvironmentTexture","applyBackgroundFallback","textureUrl","textureLoader","nextTexture","urdfPosePickerInteractionActive","urdfPosePickerCursor","handleCanvasPointerMove","handleCanvasPointerLeave","clearDisplayedModel","shouldRenderFillParts","shouldRenderSourceColorParts","shouldRenderParts","renderedParts","modelStepParameters","sceneTheme","cadScene","warning","initialEdgeRuntimes","initialRecordTopologyEdgeTransforms","initialDisplayEdgeRuntime","initialSelectorRuntime","displaySelectorRuntime","displayEdgesRuntime","displayBounds","previousTransform","currentPartVisualState","nextPerspectiveMatchesScene","updated","cleanups","runCleanups","baseTopologyDisplayEdgesVisible","useRecordTopologyEdgeTransforms","nextEdgeRuntimes","nextTopologyDisplayEdgesVisible","nextSelectorRuntime","nextDisplayEdgeRuntime","effectiveRuntime","previousAnimationStates","previousAnimationProgress","animationModelKey","recordKey","modelChanged","transitionStates","startedAt","linearProgress","easedProgress","lineGroup","surfaceLineStrokes","lineOffset","bendGuideGroup","bendGuideLine","guideGroup","shellMesh","hoverCellMesh","hoverCellOutline","highlightGroup","highlightedPartIds","seenPartIds","addHighlightedPartId","highlightEdgeSettings","highlightLine","createSharedTopologyDisplayEdgeObject","mateOverlayGroup","activeMates","baseLineWidth","faceFillGroup","selectedLineWidth","hoveredLineWidth","highlightEdgeColor","highlightReferenceStates","runtimeReferences","addHighlightReference","addReferenceSelection","syntheticOccurrenceSelector","childReference","childSelectorType","normalizedHoveredReferenceId","highlightState","referenceVisibilityClass","fillGeometry","fillOpacity","fillMaterial","fillMesh","MIN_VIEW_SIZE","VIEW_PADDING_RATIO","MAX_ZOOM_IN","MAX_ZOOM_OUT","WHEEL_ZOOM_FACTOR","VIEWBOX_EPSILON","POINT_KEY_SCALE","GEOMETRY_EPSILON","ANGLE_EPSILON","ARC_CHORD_TOLERANCE_MM","MIN_ARC_SEGMENTS","MAX_ARC_SEGMENTS","DXF_2D_VIEW_PLANE_ORIENTATION","DXF_2D_VIEW_PLANE_FACES","DXF_2D_VIEW_PLANE_MESH","normalizePoint","pointsEqual","reversePoints","removeDuplicateClosure","removeConsecutiveDuplicates","deduped","normalizeAngle","angleDeg","angleInSweep","startAngleDeg","sweepAngleDeg","absSweepAngleDeg","pointOnCircle","radians","arcExtremaPoints","arc","endAngleDeg","candidateAngle","boundsFromPoints","expandBounds","nextBounds","sampleCountForSweep","sweepRadians","chordRatio","maxSegmentAngle","sampleArcPoints","startAngleRad","sweepAngleRad","sampleCirclePoints","readGeometryRecords","dxfData","arcs","circles","cutPrimitives","cutCircleLoops","rawBounds","circle","buildCutLoops","addAdjacency","primitive","endKey","loopPoints","currentKey","nextOptions","nextOption","primitivePoints","orientedPoints","circleLoop","formatSvgNumber","rounded","screenPoint","buildDxfMaterialFillPathData","screenLoop","first","rest","readCssVar","readPalette","buildFittedViewBox","viewport","viewportWidth","paddedWidth","paddedHeight","contentAspect","viewportAspect","viewWidth","viewHeight","clampViewBox","nextViewBox","baseViewBox","minWidth","minHeight","areViewBoxesEqual","base64","char","buildSvgScreenshotBlob","svgElement","svgMarkup","objectUrl","image","nextImage","DxfViewer","containerRef","svgRef","dragStateRef","previousModelKeyRef","viewportSize","setViewportSize","viewBox","setViewBox","materialFill","boundsWidth","boundsHeight","fillPathData","fittedViewBox","observer","nextEntry","clearDrag","pixelRatio","dragState","deltaX","deltaY","cursorX","cursorY","anchorX","anchorY","isBendPath","isBendCircle","TOP_VIEW_UP","RENDER_CAMERA_PRESETS","DEFAULT_CAMERA_PRESET","CAMERA_SPEC_KEYS","isPlainObject","clonePreset","cameraPresetByName","presets","azimuth","elevation","cosElevation","parseCameraJsonString","parsed","validateCameraSpecKeys","unknownKeys","normalizeCameraSpec","rawCamera","rawPreset","hasExplicitZoom","CAD_EDGE_CLASS_SETTINGS","normalizeEdgeContrastMode","normalizeEdgeClassSettings","LEGACY_CINEMATIC_EDGES","PREVIOUS_CINEMATIC_EDGES","DIM_CINEMATIC_EDGES","LOW_CONTRAST_CINEMATIC_EDGES","edgeMatches","cloneThemeSettings","themeId","resolveAppearanceJobConfig","job","defaultThemeId","resolveAppearanceSettings","appearance","DEFAULT_IMPLICIT_GRAPHICS_SETTINGS","IMPLICIT_GRAPHICS_LIMITS","IMPLICIT_INTERACTION_STEP_BUDGET","IMPLICIT_INTERACTION_DETAIL","clampNumber","normalizeImplicitGraphicsSettings","implicitGraphicsRenderResolutionScale","implicitGraphicsRenderSettings","requestedStepBudget","implicitGraphicsSettingsEqual","normalizedA","normalizedB","normalizeParameterDefinitions","parameterMapForDefinitions","normalizeParameterValues","normalizeParameterAnimations","isVector","finiteNumber","truthy","vec","flat","arg","vec2","vec3","vec4","mapUnary","fn","mapBinary","add","sub","mul","div","neg","abs","minValue","maxValue","smoothstep","edge0","edge1","va","vb","normalize","swizzleIndices","swizzle","lookup","getSwizzle","setSwizzle","targetIndex","implicit_linear_map","inMin","inMax","outMin","outMax","slope","implicit_ramp","implicit_two_body_field","implicit_two_body_polar","implicit_triangle_wave_even","period","halfPeriod","quarterPeriod","wrapped","implicit_triangle_wave_even_positive","implicit_triangle_wave_odd","implicit_triangle_wave_odd_positive","implicit_repeat_centered","p","implicit_intersect_round","q","implicit_intersect_chamfer","implicit_intersect_exp","implicit_intersect_lp_norm","normPower","implicit_intersect_rvachev","sharp","r0","s","BUILTINS","segment","segmentLengthSq","majorRadius","minorRadius","directionLength","toPoint","capA","capB","radiusA","radiusB","axisLengthSq","apex","halfAngle","coneDistance","distanceValue","local","c","circumference","drop","xyz","yzx","gyroidBlend","mixTerm","zxy","sinXyz","cosYzx","cosZxy","blendFactor","term1","term2","cos2Xyz","cos2Yzx","schwarzBlend","cosDrop","lidinoidBlend","gyroidOctave","schwarzOctave","sin2Xyz","term3","d","rotation","rotation2","hasRotation2","pxy","squareGrid","repeated","diagonal","angle2","diagonal2","positive","negative","square","oddGrid","planeGrid","diagonalPeriod","rotated","setback","halfSize","quarterSize","starCenter","folded","reflected","foldedStar","reflectedStar","normalH","normalP60","normalN60","shifted","shiftedStar","TYPE_KEYWORDS","QUALIFIERS","OPERATORS","stripComments","tokenize","tokens","numberMatch","identifierMatch","op","Parser","globals","functions","paramType","paramName","init","expression","condition","consequent","alternate","statement","varType","defaultValueForType","ReturnValue","Scope","parent","cloneValue","castValue","binaryValue","evalLValue","scope","objectLValue","evalExpression","lvalue","callee","executeStatement","normalizedDistanceSource","createImplicitCadProgramRuntime","model","functionName","program","uniform","global","createImplicitCadSdfEvaluator","IMPLICIT_CAD_SCHEMA","IMPLICIT_CAD_KIND","DEFAULT_BOUNDS","AUTO_BOUNDS_RADII","AUTO_BOUNDS_SCAN_SAMPLES","AUTO_BOUNDS_REFINE_SAMPLES","AUTO_BOUNDS_CACHE_LIMIT","DEFAULT_COLOR","GLSL_IDENTIFIER_PATTERN","UNIFORM_TYPES","PARAM_UNIFORM_TYPES","finitePositiveNumber","finiteVec3","finiteVector","normalizeBounds","cloneBounds","hasExplicitBounds","margin","safeMargin","sampleAutoBounds","sdf","samples","axisSize","hitMin","hitMax","hitCount","boundaryTouch","iz","iy","ix","estimateAutoBoundsStartRadius","largest","likelyPoseParameter","estimateImplicitCadAutoBounds","partialModel","startRadius","candidateRadius","scan","autoBoundsCacheKey","glslSource","readCachedAutoBounds","animationPlaying","rememberAutoBounds","cloned","oldestKey","resolveImplicitCadBounds","estimated","hexToRgb01","evaluateValue","normalizeMaterial","unwrapModuleExports","moduleValue","normalizeUniformValue","explicitType","uniformsFromParams","glslSourceFromModel","normalizeAnimationState","findAnimation","animations","normalizedId","buildImplicitCadContext","parameterValues","normalizedAnimationState","normalizeImplicitCadRuntimeModel","rawModel","sourceUrl","autoBoundsCache","resolvedBounds","evaluatedRender","render","normalEpsilon","stepScale","maxStep","normalizeImplicitCadDefinition","normalizeImplicitCadModel","firstThemeFillColor","DEFAULT_BACKGROUND","DEFAULT_FOV_DEG","DEFAULT_SNAPSHOT_CAMERA_ZOOM","DEFAULT_SNAPSHOT_FRAME_MARGIN","FRAME_BOUNDS_SAMPLE_COUNT","FRAME_BOUNDS_THRESHOLD_STEP_FACTOR","FRAME_BOUNDS_MARGIN_STEP_FACTOR","FRAME_BOUNDS_MARGIN_SIZE_FACTOR","DEFAULT_APPEARANCE_ID","colorToRgb01","normalizeBackgroundMode","degreesToRadians","implicitCadUniformDeclarations","DEFAULT_LIGHTING_RIG","srgbChannelToLinear","linearLightRgb","intensity","lightDirectionFromPosition","fallbackPosition","implicitFloorFadeRadius","implicitFloorBoundsForModel","estimate","boundsKey","maxDelta","floorBounds","estimateImplicitCadFrameBounds","peekImplicitCadFrameBounds","applyImplicitFloorUniforms","refreshImplicitCadFloorBounds","estimateImplicitCadFrameBoundsAsync","vecUniformValue","threeUniformValue","updateThreeUniformValue","targetUniform","nextValue","isIdentifierCharacter","previousSignificantCharacter","character","nextSignificantCharacter","statementPrefix","boundary","isInsideForHeader","forIndex","openParen","closeParen","isExponentSuffixDigits","sign","INT_SCALAR_DECLARATION_PATTERN","collectIntScalarIdentifiers","identifiers","comparisonOperandBefore","lead","operandEnd","operandStart","shouldPromoteIntegerLiteral","intIdentifiers","comparedOperand","normalizeImplicitCadGlslFloatLiterals","nextCharacter","commentEnd","cameraBoundsForImplicitModel","FRAME_BOUNDS_CACHE_LIMIT","frameBoundsEstimateCache","frameBoundsCacheKey","uniformsKey","frameBoundsSampleCount","sourceLength","rememberFrameBoundsEstimate","scanImplicitCadFrameBoundsSteps","sampleCount","frameBoundsEstimatePending","pending","sliceStart","vectorFromArray","vectorLength","addScaled","cameraFrameAxes","zAxis","requestedUp","fitDistanceForFrameBounds","tanHalfFov","safeAspect","safeZoom","projectedBoundsCenter","minX","maxX","minY","maxY","recenterTargetForProjectedBounds","xShift","yShift","implicitCadCameraState","frameMargin","estimateFrameBounds","frameBounds","effectiveZoom","unitDirection","implicitCadFragmentShader","maxSteps","customUniformDeclarations","hasColorFunction","implicitCadModelShaderKey","implicitCadVertexShader","createImplicitCadMaterial","customUniforms","floorUserData","updateImplicitCadModelUniforms","resolveImplicitCadAppearanceSettings","applyImplicitLightingUniforms","rig","hemisphere","hemiIntensity","ambient","ambientIntensity","ambientRgb","environmentAmbient","directional","keyIntensity","spot","pointIntensity","updateImplicitCadAppearanceUniforms","graphicsSettings","normalizedGraphics","surfaceColor","backgroundRgb","backgroundSettings","backgroundMode","solidColor","updateImplicitCadGraphicsUniforms","detailRoot","updateImplicitCadMaterialUniforms","createImplicitCadFullscreenScene","quad","IMPLICIT_CAMERA_VERSION","AUTO_ZOOM_FRAME_MARGIN","AUTO_ZOOM_SPEED_MS","RESET_VIEW_CONTROL_BUTTON_CLASSES","THREE.Vector3","viewportCropForCanvas","offsetNdcX","offsetNdcY","viewPlaneOrientationsEqual","av","bv","bestDot","perspectiveSnapshot","snapshotModelKey","applyCameraState","cameraState","transitionCameraToState","armImplicitShaderCompile","shaderScene","autoZoomBoundsKey","quantum","canvasBlob","updateImplicitThemeUniforms","updateImplicitGraphicsUniforms","ImplicitCadViewer","dynamicRenderActive","latestModelKeyRef","normalizedGraphicsSettings","graphicsSettingsRef","dynamicRenderActiveRef","renderError","setRenderError","autoZoomStateRef","autoZoomDetached","setAutoZoomDetached","setAutoZoomAttached","attached","setAutoZoomAttachedRef","runAutoZoom","reason","force","activeModel","runAutoZoomRef","maybeAutoZoomForModel","nextModel","refineImplicitFit","refineImplicitFitRef","nextShaderKey","nextShaderScene","previousShaderScene","frameId","idleTimerId","mount","THREE.WebGLRenderer","screenCamera","THREE.OrthographicCamera","THREE.PerspectiveCamera","setPixelRatioCap","updateCameraFraming","transitionActive","controlsActive","initialPerspective","Navigation2","alertVariants","Alert","AlertTitle","AlertDescription","DropdownMenu","DropdownMenuPrimitive.Root","DropdownMenuTrigger","DropdownMenuPrimitive.Trigger","DropdownMenuContent","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Content","DropdownMenuItem","DropdownMenuPrimitive.Item","DropdownMenuLabel","DropdownMenuPrimitive.Label","DropdownMenuSeparator","DropdownMenuPrimitive.Separator","DropdownMenuSub","DropdownMenuPrimitive.Sub","DropdownMenuSubTrigger","showChevron","DropdownMenuPrimitive.SubTrigger","ChevronRight","DropdownMenuSubContent","DropdownMenuPrimitive.SubContent","toggleVariants","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive.Root","ToggleGroupItem","ToggleGroupPrimitive.Item","AssemblyContextMenuItemLabel","AssemblyContextMenuItems","Item","Separator","itemClassName","isolated","actionCount","copyReferenceDisabled","selectDisabled","showIsolate","isolateDisabled","showExitAllIsolate","exitAllIsolateDisabled","showHideOther","hideOtherDisabled","hideAllDisabled","hideAllLabel","showVisibility","visibilityDisabled","showCameraActions","resetZoomDisabled","zoomToFitDisabled","showHideAll","showExpandCollapse","expandSelectedDisabled","collapseSelectedDisabled","expandAllDisabled","collapseAllDisabled","onCopyReference","onSelect","onIsolate","onExitAllIsolate","onHideOther","onHideAll","onToggleVisibility","onResetZoom","onZoomToFit","onExpandSelected","onCollapseSelected","onExpandAll","onCollapseAll","selectLabel","isolateLabel","visibilityLabel","EMPTY_PARAMETER_VALUES","listeners","notify","listener","subscribe","normalizedElapsedSec","normalizedParameterValues","publishSnapshot","nextSnapshot","getSnapshot","getElapsedSnapshot","setStepAnimationFrame","setStepAnimationElapsed","resetStepAnimationStore","getStepAnimationElapsed","getStepAnimationParameterValues","useStepAnimationSnapshot","useSyncExternalStore","useStepAnimationElapsed","viewerPickModeForRenderPane","dxfMode","pathPreviewMode","topologySelectionPending","topologySelectionUnavailable","topologySelectionDeferred","topologyPickingActive","viewerMode","assemblyPickingActive","EMPTY_LIST","VIEWPORT_ISSUE_META","viewportInsetPx","viewportIssueMetaForAlert","alert","viewerContextMenuAnchorStyle","menu","DxfViewModeControl","threeDimensionalAvailable","ViewerContextMenu","positionStyle","onClose","onFocus","onHide","onReveal","handleAction","action","focused","nextOpen","CadRenderPane","viewerRef","selectedMeshData","selectedDxfData","selectedDxfMeshData","dxfViewMode","onDxfViewModeChange","selectedImplicitModel","implicitDynamicRenderActive","implicitGraphicsSettings","selectedKey","selectedDxfKey","missingFileRef","viewerPerspective","viewerPerspectiveRef","viewerLoading","viewerAlert","stepUpdateInProgress","referenceSelectionPending","referenceSelectionUnavailable","referenceSelectionDeferred","assemblyParts","boundsAnimationActive","drawToolActive","handleDrawingStrokesChange","handlePerspectiveChange","handleModelHoverChange","handleModelReferenceActivate","handleModelReferenceDoubleActivate","handleModelReferenceContext","viewerContextMenu","onViewerContextMenuClose","onViewerContextMenuCopyReference","onViewerContextMenuSelect","onViewerContextMenuFocus","onViewerContextMenuExitAllIsolate","onViewerContextMenuHideOther","onViewerContextMenuHideAll","onViewerContextMenuHide","onViewerContextMenuReveal","onViewerContextMenuResetZoom","onViewerContextMenuZoomToFit","onViewerContextMenuExpandSelected","onViewerContextMenuCollapseSelected","onViewerContextMenuExpandAll","onViewerContextMenuCollapseAll","handleViewerAlertChange","handleStepModuleTransformDetectedChange","selectionCount","copyButtonLabel","handleCopySelection","handleScreenshotCopy","liveStepAnimation","resolvedStepParameters","liveParameterValues","viewerAlertIconLabel","gcodeMode","urdfMode","implicitMode","dxf3dAvailable","activeDxfViewMode","dxfMeshPreviewReady","activeMeshData","stepDisplaySettingsActive","cadProjection","stepBoundsAnimationActive","cadViewerBoundsAnimationActive","missingFileLabel","urdfPosePickerActive","urdfPosePickerPrompt","posePickerExitStyle","ctaMode","dxfViewPlaneHeader","bottomOverlayStyle","modelViewportOverlayStyle","modelViewportBottomOverlayStyle","ctaOverlayStyle","ctaLabel","ctaTitle","ctaDisabled","viewportHasRenderableContent","blockingViewerAlert","viewportIssueMeta","viewerContextMenuStyle","handleEscape","CircleAlert","X","DEFAULT_DXF_PREVIEW_THICKNESS_MM","MIN_DXF_PREVIEW_THICKNESS_MM","MAX_DXF_PREVIEW_THICKNESS_MM","DEFAULT_DXF_BEND_ANGLE_DEG","MIN_DXF_BEND_ANGLE_DEG","MAX_DXF_BEND_ANGLE_DEG","DXF_BEND_DIRECTION","BEND_LINE_ELEVATION_MM","GEOMETRY_EPSILON_MM","BEND_LINE_AXIS_EPSILON_MM","MIN_BEND_BRIDGE_SEGMENTS","MAX_BEND_BRIDGE_SEGMENTS","VISUAL_BEND_INSIDE_RADIUS_RATIO","approxEqual","polygonSignedArea","normalizeLoopWinding","clockwise","vectors","Vector2","isClockwise","ShapeUtils","lineRecords","arcRecords","circleRecords","bendLines","normalizeBendLine","ordered","sortBendLines","rawBendLines","xDiff","extractOrderedDxfBendLines","validateBendLines","bendLine","normalizeDxfBendDirection","normalizeDxfBendAngleDeg","safeFallback","normalizeDxfPreviewThicknessMm","normalizeDxfBendSettings","clipEdgeAgainstMinX","clipEdgeAgainstMaxX","clipLoopAgainstMinX","currentInside","previousInside","clipLoopAgainstMaxX","clipLoopToSlab","leftX","rightX","loopBounds","pointOnSegment","squaredLength","pointInLoop","previousIndex","xIntersection","loopContainmentNodes","sortedLoops","nodes","representativePoint","parentIndex","parentArea","resolveDepth","buildFlatStripDefinitions","strips","outerLoop","holeLoops","holeClassificationForStrip","buildBendProfiles","outerBounds","bendSettings","halfThickness","profiles","bendSetting","angleRadians","bendAngleRadiansForSetting","angleMagnitude","insideRadius","neutralRadius","desiredHalfWidth","profile","midpoint","flatWidth","ensureHolesDoNotCrossBendBands","bendProfiles","holeLoop","bendProfile","buildStripDefinitions","clippedOuter","stripHoles","classification","appendTriangle","indexOffset","orientTriangleY","positiveY","abx","abz","acx","acz","crossY","applyMatrixToPoint","appendTransformedTriangle","triangle","appendTransformedQuad","reverse","transformedA","transformedB","transformedC","transformedD","appendVertex","appendTransformedEdgeSegment","transformedStart","transformedEnd","isInternalStripBoundaryEdge","strip","appendLoopSideFaces","topY","bottomY","shouldSkipEdge","appendLoopEdgeSegments","buildRotationAroundAxisMatrix","axisStart","axisEnd","Matrix4","Vector3","translateToOrigin","rotate","buildBendContinuationMatrix","bendSign","endX","endY","translateToTangent","buildSegmentTransforms","bendTransforms","guideLineSegments","currentMatrix","mergeIntervals","intervals","sortedIntervals","interval","collectBoundaryIntervals","boundaryX","intersectIntervalSets","leftIntervals","rightIntervals","collectBendIntervals","mergedLeft","mergedRight","bendBridgeSegmentCount","bendArcPoint","surfaceY","startVectorY","appendBendArcSurface","zMin","zMax","startAngle","endAngle","appendBendCapSurface","appendBendArcEdgeSegments","appendBendRadialEdgeSegment","appendBendBridgeInterval","edgeVertices","bendTransform","reverseArcSurface","reverseMinCap","reverseMaxCap","appendBendBridgeGeometry","buildBounds","minZ","maxZ","buildTriangulatedFlatPattern","buildDxfPreviewMeshData","thicknessMm","normalizedThicknessMm","normalizedBendSettings","triangleVertices","outerVectors","holeVectors","combinedLoops","a2","b2","c2","skipOuterEdge","triangleVertexCount","combinedVertices","combinedEdgeIndices","Accordion","AccordionPrimitive.Root","AccordionItem","AccordionPrimitive.Item","AccordionTrigger","AccordionPrimitive.Header","AccordionPrimitive.Trigger","ChevronDownIcon","AccordionContent","AccordionPrimitive.Content","ScrollArea","viewportClassName","scrollbars","_type","_scrollHideDelay","scrollbarOrientations","hasHorizontalScrollbar","hasVerticalScrollbar","overflowX","overflowY","Switch","thumbClassName","SwitchPrimitive.Root","SwitchPrimitive.Thumb","DEFAULT_FILE_SHEET_WIDTH","DESKTOP_FILE_SHEET_MIN_WIDTH","DESKTOP_FILE_SHEET_MAX_WIDTH","MOBILE_FILE_SHEET_WIDTH","FILE_SHEET_CONTROL_TEXT_CLASSES","FILE_SHEET_SECTION_TRIGGER_CLASSES","FILE_SHEET_SECTION_CONTENT_CLASSES","FILE_SHEET_CONTROL_ROW_CLASSES","FILE_SHEET_ROW_STACK_CLASSES","FILE_SHEET_SECTION_BODY_CLASSES","FILE_SHEET_SLIDER_FIELD_CLASSES","FILE_SHEET_INLINE_CONTROL_ROW_CLASSES","FILE_SHEET_FIELD_LABEL_CLASSES","FILE_SHEET_SUBSUBSECTION_HEADER_CLASSES","FILE_SHEET_VALUE_BADGE_CLASSES","FILE_SHEET_VALUE_BADGE_INPUT_CLASSES","FILE_SHEET_COMPACT_BUTTON_CLASSES","FILE_SHEET_COMPACT_ICON_BUTTON_CLASSES","FILE_SHEET_COMPACT_INPUT_CLASSES","FILE_SHEET_COMPACT_NUMERIC_INPUT_CLASSES","FILE_SHEET_BOOLEAN_SWITCH_CLASSES","FILE_SHEET_BOOLEAN_SWITCH_THUMB_CLASSES","FILE_SHEET_SEGMENTED_ITEM_CLASSES","FILE_SHEET_PRECISION_SLIDER_CLASSES","FileSheetSection","title","contentClassName","triggerClassName","triggerProps","FileSheetSubsection","trailing","hideFirstSeparator","FileSheetSubsubsection","FileSheetSectionBody","FileSheetControlRow","labelClassName","rowKind","parseFileSheetNumberInput","integer","fallbackValue","lowerBound","upperBound","clampedValue","FileSheetValueInput","onValueCommit","disabled","ariaLabel","inputMode","inputRef","displayValue","draftValue","setDraftValue","skipCommitRef","selectOnEditRef","visibleValue","selectInputValue","FileSheetSliderField","valueInputProps","valueTrailing","FileSheetInlineControlRow","description","FileSheetBooleanToggle","checked","onCheckedChange","FileSheetToggleRow","normalizeFileSheetWidth","FileSheet","isDesktop","onOpenChange","onStartResize","bodyClassName","desktopWidth","sheetStyle","sheetBody","FILE_SHEET_SECTION_IDS","THEME_SECTION_IDS","normalizeSectionIds","migrateLegacySectionId","sectionId","renderedFileSheetSectionIds","normalizedKind","isSdf","showJoints","defaultOpenFileSheetSectionIds","normalizeFileSheetOpenSectionIds","sectionIds","renderedSectionIds","rendered","fileSheetSectionIdsWithOpenSection","normalizedSectionId","normalizedSectionIds","shouldOpenFileSheetForSelectionReveal","primaryAsset","relationAsset","relation","entryAsset","assetKey","sourceFormat","entryAssetUrl","entryAssetHash","entryAssetBytes","entryMeshAssetUrl","entryMeshAssetHash","entryMeshAssetBytes","entryTopologyAssetUrl","entrySelectorTopologyAssetUrl","entryDisplayEdgeTopologyAssetUrl","entryUrdfAssetHash","entryMeshAssetSignature","entryReferenceAssetSignature","entryHasMesh","meshKey","entryHasUrdf","entryHasReferences","entryHasDisplayEdges","entryHasDxf","entryHasGcode","entryStepModuleUrl","STEP_ARTIFACT_GENERATION_FAILURE_DISPLAY_THRESHOLD","BUILDABLE_STEP_ARTIFACT_ERROR_CODES","BUILDABLE_STEP_ARTIFACT_ERROR_CODE_SET","STEP_FILE_EXTENSION_RE","normalizeStepArtifactFileRef","valuesArray","addFileRef","refs","addStepFileRef","dir","fileRefsMatch","leftRef","rightRef","fileRefMatchesAny","file","stepArtifactGenerationFailureCount","stepArtifactGenerationFileRefs","artifact","stepArtifactGenerationInProgress","generationState","activeGenerationFiles","stateFile","stepArtifactIssueShouldSuppress","generationAvailable","candidateEntry","generationInProgress","stepArtifactCanGenerate","validateGeneratedStepArtifactPayload","payload","generatedEntry","fileLabel","code","runStepArtifactGenerationWithRetries","initialFailureCount","generate","isCurrent","onState","onFinalError","validatePayload","maxFailures","failureCount","attempt","readyState","generationError","failedState","stepArtifactIsStale","stepArtifactNeedsWarning","entryIconStatus","entryKey","hasMesh","hasDxf","hasGcode","hasImplicit","hasUrdf","activeStepArtifactGenerationFile","activeStepArtifactGenerationFiles","stepArtifactGenerationAvailable","normalizedSourceFormat","activeScriptGenerationFileSet","activeArtifactGenerationFileSet","artifactGenerationFiles","artifactGenerationInProgress","artifactBuildable","artifactStale","artifactErrorCode","generatorRunning","artifactWarning","artifactGenerating","entryStepSourceKind","artifactSourceKind","sourceKind","cleanText","normalizeRelativePath","normalizePathPrefix","stripQueryAndHash","pathnameFromUrlOrPath","pathRelativeToPrefix","filePath","normalizedPrefix","stripViewerRootDirPrefix","rootDir","normalizedRootDir","suffixFromAnchorDirectory","anchorFile","normalizedAnchor","anchorParts","searchable","viewerRootRelativePath","viewerServerInfo","rootPathRelative","directoryRootRelative","pathText","CAD_VIEWER_ACTIVE_DIR_SESSION_STORAGE_KEY","sessionStorageForWindow","readStoredActiveCadDir","storage","writeStoredActiveCadDir","activeDir","normalizedDir","rememberActiveCadDir","candidateDir","DEFAULT_VIEWER_GITHUB_URL","DEFAULT_VIEWER_DISCORD_URL","DEFAULT_VIEWER_SKILLS_INSTALL_COMMAND","normalizeViewerDefaultFile","normalizeViewerGithubUrl","normalizeHttpUrlCandidate","normalizeViewerDiscordUrl","viewerGithubRepositoryUrl","owner","repo","viewerGithubReleaseUrl","version","normalizedVersion","repositoryUrl","viewerGithubLatestReleaseUrl","viewerGithubLatestReleaseApiUrl","rawOwner","rawRepo","isViewerReleaseNewer","currentVersion","candidateVersion","parseViewerReleaseVersion","compareParsedViewerReleaseVersions","isViewerReleaseMajorMinorNewer","normalizeViewerSkillsInstallCommand","cleanInstallCommandCandidate","viewerSkillsInstallCommandFromText","urlValue","withoutBuild","core","prereleaseParts","difference","compareViewerPrereleaseIdentifiers","leftValue","rightValue","leftNumeric","rightNumeric","CAD_DIR_QUERY_PARAM","CAD_QUERY_PARAM","fileKey","cadFileParamForEntry","cadPathForEntry","writeUrl","history","nextSearch","nextUrl","currentUrl","normalizeUrlPath","normalizeCadFileQueryParam","sourceExtensionForPath","appendExtension","normalizedExtension","fileAliasesForEntry","addAlias","readDefaultCadParam","__vite_import_meta_env__","readCadParam","readCadDirParam","findEntryByUrlPath","urlPath","normalizedUrlPath","shouldDeferFileParamSelection","explicitFileParam","matchingEntry","catalogHydrated","catalogRefreshing","missingFileRefForCatalog","normalizedFileParam","selectedEntryKeyFromUrl","defaultFile","explicitFilePath","writeCadParam","writeCadDirParam","dirPath","preserveFile","normalizedDirPath","compareSidebarLabels","entryLeafName","normalizedEntryStem","sidebarDirectoryIdForEntry","sourceExtensionForEntry","leafName","filenameLabelForEntry","stem","sidebarLabelForEntry","compareSidebarEntries","nameDiff","createSidebarDirectoryNode","finalizeSidebarDirectoryNode","buildSidebarDirectoryTree","rootName","directoryId","directoryParts","currentNode","currentId","childNode","collectSidebarDirectoryIds","directoryNode","sidebarDirectoryPath","targetId","childDirectory","listSidebarItems","labelDiff","collectAncestorDirectoryIds","ancestorIds","basenameFromFileRef","normalizedRelativePath","normalizedFilePath","dirnameFromFileRef","joinRelativePath","sameStemPythonFilename","sameStemPythonFileRef","dirname","isStepFileRef","filenameFromUrl","cleanUrl","hostedBlobDownloadsAvailable","explicitSourceFileRef","explicitSourceDirectoryFileRef","artifactFileRef","sourceUrlFromEntry","stepUrlFromEntry","explicitStepUrl","outputUrlFromEntry","outputFileRef","localPathSeparator","basePath","joinLocalPath","relativePath","separator","normalizedBase","normalizedRelative","directoryPathIsInsideViewerRoot","directoryRelativePath","directoryPath","rootRelativePathFromDirectoryRelativePath","fileAccessAssetsForEntry","stepSourceStatus","fileRef","outputFilename","artifactRef","artifactFilename","directDownloads","outputDownloadUrl","artifactDownloadUrl","stepSourcePath","explicitSourceRef","explicitSourceDirectoryRef","inferredSourceRootRef","sourceRef","sourceDirectoryRef","hasViewerPathContext","sourceRootRef","sourceFilename","downloadUrlForFileAsset","asset","openUrlForFileAsset","copyTargetsForFileAccessAsset","rawRootRelativePath","rootRelativePath","normalizeKind","titleCase","shortHash","metadataRow","compactRows","metadataGroup","compactedRows","formatFileMetadataBytes","roundedBytes","units","scaled","unitIndex","precision","fileKindLabel","sourceKindForEntry","sourceKindLabel","sourcePathForEntry","sourceAsset","openActionOptionsForAsset","downloadActionOptionsForAsset","fileActionOptionsForAsset","includeFileOpenActions","includeFileDownloadActions","sourceRowsForEntry","includePythonSource","suppressDynamicStatus","sourceStatus","sourceAssets","sourcePath","generatedRowsForEntry","moduleUrl","modulePath","headerRowsForEntry","headers","relationRowsForEntry","relations","fileMetadataGroupsForEntry","assets","entryFile","assetPath","fileRows","MetadataCopyButton","setCopied","Icon","Check","Copy","MetadataValue","fileAccessBusyKey","onOpenFileAsset","copyValue","valueClassName","withCopyButton","valueNode","busyKey","busy","canOpen","FileMetadataSection","fileDownloadAvailable","localFileOpenAvailable","badgeVariants","Badge","FILE_STATUS_LEVELS","FILE_STATUS_LEVEL_RANK","REGENERATE_STEP_ARTIFACTS_RE","mono","displayPath","pathDetail","ownProperty","normalizeFileStatusLevel","fileStatusLevelRank","level","fileStatusLevelLabel","normalizeFileStatusItem","details","normalizeFileStatusItems","items","detailItem","fileStatusWarningOrErrorItems","fileStatusHasWarningsOrErrors","mostIntenseFileStatusLevel","currentLevel","stepArtifactHasRenderableGlb","artifactStatusTitle","artifactStatusLevel","stepArtifactStatusMessage","stepSourceStatusTitle","stepStatus","stepSourceStatusLevel","stepSourceStatusMessage","generatedSourceStatusTitle","generatedSourceStatusMessage","generatedSourceStatusItems","stepFileStatusItems","stepArtifactGenerationState","formatFileStatusItemForAgent","gcodeFileStatusItems","gcodeData","warnings","sdfFileStatusItems","sdfInfo","staticMetadata","viewerAlertFileStatusItem","buildFileStatusItems","fileSheetKind","urdfData","viewerAlertItem","duplicatesExistingItem","LEVEL_RENDER_META","STATUS_COUNT_BADGE_CLASSES","STATUS_LEVEL_BADGE_CLASSES","renderMetaForLevel","FileStatusSection","expandedItemIds","setExpandedItemIds","copiedItemId","setCopiedItemId","statusItems","timeout","toggleExpanded","itemId","collapseExpandedItem","handleRowKeyDown","hasDetails","handleCopyIssue","highestLevel","headerMeta","itemMeta","compactInputClasses","compactIconButtonClasses","formatThicknessInput","valueMm","formatAngleInput","valueDeg","DxfBendRow","draftAngle","setDraftAngle","commitAngle","normalizedAngle","DxfFileSheet","hasDxfData","onThicknessChange","onBendChange","suppressDynamicMetadataStatus","themeSections","openSectionIds","onOpenSectionIdsChange","commitValue","Slider","defaultValue","SliderPrimitive.Root","SliderPrimitive.Track","SliderPrimitive.Range","SliderPrimitive.Thumb","DEFAULT_EXTRUSION_WIDTH_MM","DEFAULT_TRAVEL_WIDTH_MM","DEFAULT_EXTRUSION_HEIGHT_MM","DEFAULT_TRAVEL_HEIGHT_MM","DEFAULT_GCODE_PREVIEW_SEGMENT_BUDGET","GCODE_PREVIEW_DETAIL_MIN","GCODE_PREVIEW_DETAIL_MAX","DEFAULT_GCODE_PREVIEW_DETAIL_LEVEL","GCODE_PREVIEW_DETAIL_SEGMENT_BUDGETS","MIN_GCODE_PREVIEW_SEGMENT_BUDGET","MIN_SEGMENT_LENGTH_MM","GCODE_PREVIEW_Z_LIFT_MM","DEFAULT_LAYER_COLORS","SUPPORT_COLOR","TRAVEL_COLOR","FEATURE_CATEGORY_Z_BIAS_MM","TRAVEL_Z_BIAS_MM","RIBBON_VERTICES_PER_SEGMENT","RIBBON_INDICES_PER_SEGMENT","RIBBON_NORMAL","normalizeDetailMode","normalizePreviewDetailLevel","segmentBudgetForPreviewDetailLevel","detailLevel","coordinate","emptyBounds","finalizeBounds","segmentLength","normalizeLayerRange","layerCount","maxLayer","normalizeGcodePreviewOptions","detailMode","defaultSegmentBudget","explicitRange","layerColor","segmentGroupKey","groupLabel","colorToRgb","visibleSegmentMatches","minLayer","analyzeVisibleSegments","segmentsByLayer","visibleSegmentCount","includeLayerForStride","layerStride","countSegmentsForLayerStride","layerStrideForBudget","budget","visibleLayerCount","countRenderedLayers","updateBoundsFromCoordinates","updateSegmentBounds","segmentColor","segmentZOffset","category","writeRibbonVertex","zOffset","writeSegmentRibbon","startX","startY","startZ","endZ","nx","ny","halfWidth","vertexBase","buildGcodePreviewMeshData","renderedSegmentCapacity","renderedLayerCount","geometryBounds","currentGroup","writtenSegments","finalizedParts","nextVertexOffset","nextTriangleOffset","finalBounds","fieldLabelClasses","compactNumberBadgeClasses","formatNumber","digits","formatCount","formatOrdinal","absoluteValue","tensRemainder","formatDistance","formatCommandCount","formatFeatureCategory","previewDetailLabel","boundsAxisText","visibleLayerText","visibleCount","parseVisibleLayerInput","fallbackVisibleCount","parsedValue","GcodeValueField","GcodeFileSheet","previewMetadata","showTravel","fullDetail","previewDetailLevel","onMaxLayerChange","onShowTravelChange","onFullDetailChange","onPreviewDetailLevelChange","stats","hasSupports","featureMarkerCount","renderedSegments","visibleSegments","renderedLayers","visiblePreviewLayers","decimatedPreview","renderedPathText","renderedLayerText","safePreviewDetailLevel","safeMaxLayer","hasGcodeData","visibleLayers","extrusionMoves","markerCount","detailParts","rawLabels","Collapsible","CollapsiblePrimitive.Root","CollapsibleTrigger","CollapsiblePrimitive.CollapsibleTrigger","CollapsibleContent","CollapsiblePrimitive.CollapsibleContent","ENTRY_ICON_KIND","entryIconKind","status","safeStatus","ContextMenu","ContextMenuPrimitive.Root","ContextMenuTrigger","ContextMenuPrimitive.Trigger","ContextMenuContent","ContextMenuPrimitive.Portal","ContextMenuPrimitive.Content","ContextMenuItem","ContextMenuPrimitive.Item","ContextMenuSeparator","ContextMenuPrimitive.Separator","CAD_CATALOG_REFRESH_INTERVAL_MS","HOSTED_CAD_CATALOG_REFRESH_INTERVAL_MS","CAD_CATALOG_FETCH_TIMEOUT_MS","CAD_GENERATION_STATUS_REFRESH_INTERVAL_MS","CAD_FILE_QUERY_PARAM","HOSTED_CATALOG_BACKENDS","viewerAssetBackendFromEnv","cadViewerUsesHostedCatalog","assetBackend","cadCatalogRefreshIntervalMs","normalizeCadManifest","normalizeCadGenerationStatus","currentManifestSignature","currentSnapshot","refreshRequestId","refreshInFlight","generationRefreshInFlight","generationStatusUnavailable","refreshLoopStarted","publishCadManifest","nextManifest","hydrated","refreshing","manifestSignature","manifestChanged","publishCadGenerationStatus","nextGenerationStatus","generationStatus","previousSignature","nextSignature","publishCadRefreshState","readSearchParam","readActiveCadDir","queryDir","cadApiUrl","includeFile","readJsonError","response","fetchWithTimeout","timeoutMs","timeoutMessage","controller","timeoutId","refreshCadCatalog","markRefreshing","requestId","catalog","refreshCadGenerationStatus","contentType","requestStepArtifactGeneration","signal","normalizedFileRef","requestStepSourceStatus","getCadManifestSnapshot","subscribeCadManifest","refreshSilently","IMPLICIT_EXPORT_FORMATS","DEFAULT_IMPLICIT_EXPORT_RESOLUTION","normalizedFormat","requestImplicitCadExport","resolution","exportFormat","ExplorerViewSection","onRevealInExplorerView","FileAccessSection","canRevealFileAssets","canCopyFileAssetLinks","canCopyFileAssetPaths","onDownloadFileAsset","onRevealFileAsset","onCopyFileAssetReference","revealBusy","canCopyFileAssetReference","ImplicitExportSection","onExportImplicitFile","upperFormat","FileAccessContextMenu","revealInExplorerViewAvailable","assetActionsAvailable","implicitExportAvailable","DESKTOP_FILE_VIEWER_MIN_WIDTH","DESKTOP_FILE_VIEWER_MAX_WIDTH","MOBILE_FILE_VIEWER_WIDTH","ENTRY_ICON_COMPONENTS","LoaderCircle","Boxes","DraftingCompass","Route","Code","Bot","Package","Cuboid","Layers3","FileBox","iconForEntry","FileEntryButton","onSelectEntry","EntryIcon","stepSourceKind","SourceBadgeIcon","ArrowUpFromLine","showSourceBadge","DirectoryNode","queryActive","expandedDirectoryIds","onToggleDirectory","DirectoryItem","SidebarResizeHandle","directoryLabelForOption","pathLabel","directoryPathLabelForOption","normalizeDirectoryOptions","rootPath","DirectorySwitcher","directoryOptions","activeDirectory","onSelectDirectory","activeOption","activeLabel","activePathLabel","FolderOpen","ChevronDown","FileViewerContents","onQueryChange","filteredEntries","catalogEntries","filteredEntriesTree","catalogError","resizable","hasMatches","hasEntries","catalogErrorMessage","catalogLoading","FileViewerSidebar","SheetHeaderPrimitive","sidebarStyle","AlertDialog","AlertDialogPrimitive.Root","AlertDialogPrimitive.Trigger","AlertDialogPortal","AlertDialogPrimitive.Portal","AlertDialogOverlay","AlertDialogPrimitive.Overlay","AlertDialogContent","AlertDialogPrimitive.Content","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogPrimitive.Title","AlertDialogDescription","AlertDialogPrimitive.Description","AlertDialogAction","AlertDialogPrimitive.Action","AlertDialogCancel","AlertDialogPrimitive.Cancel","Popover","PopoverPrimitive.Root","PopoverTrigger","PopoverPrimitive.Trigger","PopoverContent","align","PopoverPrimitive.Portal","PopoverPrimitive.Content","FORMAT_OPTIONS","componentToHex","rgbToHex","hexToRgb","rgbToHsv","hsvToRgb","hue","chroma","rgbToHsl","l","hslToRgb","roundedColorNumbers","ColorNumberInput","ColorPicker","onOpacityChange","swatchClassName","popoverAlign","showValue","showOpacity","normalizedOpacity","setFormat","hexDraft","setHexDraft","canUseEyeDropper","setCanUseEyeDropper","svPlaneRef","React.useRef","hueTrackRef","colorNumbers","svColor","commitHex","nextHex","normalizedNextHex","updateFromSvPointer","nextS","nextV","updateFromHuePointer","nextHue","handleSvPointerDown","handleHuePointerDown","handleHexCommit","setRgbChannel","setHslChannel","pickFromScreen","Pipette","Dialog","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPortal","DialogPrimitive.Portal","DialogClose","DialogPrimitive.Close","DialogOverlay","DialogPrimitive.Overlay","DialogContent","DialogPrimitive.Content","DialogHeader","DialogFooter","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description","Select","SelectPrimitive.Root","SelectValue","SelectPrimitive.Value","SelectTrigger","showIcon","SelectPrimitive.Trigger","SelectPrimitive.Icon","SelectContent","SelectPrimitive.Portal","SelectPrimitive.Content","SelectScrollUpButton","SelectPrimitive.Viewport","SelectScrollDownButton","SelectItem","icon","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","CheckIcon","SelectPrimitive.ItemText","SelectPrimitive.ScrollUpButton","ChevronUpIcon","SelectPrimitive.ScrollDownButton","Tabs","TabsPrimitive.Root","TabsList","TabsPrimitive.List","TabsTrigger","TabsPrimitive.Trigger","TabsContent","TabsPrimitive.Content","DISPLAY_MODE_OPTIONS","Layers","Paintbrush","Eye","EyeOff","SquareDashed","Contrast","Spline","displayModeOptionForValue","OrthographicProjectionIcon","strokeWidth","PerspectiveProjectionIcon","BACKGROUND_MODE_OPTIONS","PROJECTION_MODE_OPTIONS","COLOR_MODE_OPTIONS","EXPLODED_AXIS_OPTIONS","PRIMARY_LIGHT_OPTIONS","compactButtonClasses","precisionSliderClasses","SLIDER_COMMIT_DELAY_MS","AXIS_OPTIONS","EDGE_CLASS_CONTROLS","formatMm","Field","Section","ControlSubsection","NestedControlGroup","getSliderInputProps","Children","isValidElement","SliderInput","SliderField","sliderInputProps","ThemeToggleRow","commitTimerRef","resolveNextValue","numericNextValue","resolvedNextValue","scheduleCommitValue","CompactNumberInput","formattedValue","EdgeMetricInput","onColorChange","ColorInput","EdgeClassControlRow","ColorField","cloneModeColors","activeThemeColorMode","resolvedColorSchemeMode","themeModeColorValue","ColorModeIndicatorLabel","isDarkMode","ModeIcon","Moon","Sun","modeLabel","ColorModeField","resolveFillColors","FillColorEditor","cycleColors","resolvedColors","commitColors","nextColors","compactColors","SegmentedControl","templateColumns","PresetSwatch","useSystemDefaultThemePresetId","systemDefaultPresetId","setSystemDefaultPresetId","colorSchemeQuery","updateSystemDefaultPreset","orderedThemePresets","defaultPresetIndex","resolveActiveThemePreset","themePresets","themePresetId","directPreset","currentThemeSettingsSignature","themeSettingsChangedFromPreset","themePresetIsCustom","themePresetCanResetToDefault","themePresetCanUpdate","themePresetCanDelete","themeLibraryChangedFromDefaults","defaultPreset","ThemeDirtyIndicator","ThemePresetOverflowMenu","canDeleteTheme","canResetToDefault","onActionActiveChange","onDelete","onEdit","onReset","actionsLabel","setActionActive","nextActive","handleOpenChange","stopMenuPropagation","handleActionSelect","handleTriggerBlur","MoreHorizontal","Pencil","Trash2","ThemeWarningDialog","actionLabel","onConfirm","SaveThemeDialog","defaultName","onSave","inputId","useId","draftName","setDraftName","normalizedDraftName","handleSubmit","ThemePresetDropdown","updateThemeSettings","handleDeleteCustomThemePreset","handleEditThemePreset","handleResetThemePresetToDefault","handleRestoreDefaultThemePresets","iconClassName","menuOpen","setMenuOpen","deleteThemeId","setDeleteThemeId","resetThemeId","setResetThemeId","restoreThemesDialogOpen","setRestoreThemesDialogOpen","activeActionThemeId","setActiveActionThemeId","orderedPresets","activeThemePreset","activeThemePresetId","activeThemeLabel","deleteThemePreset","resetThemePreset","themeLibraryHasChanged","handleMenuOpenChange","clearThemeMenuActionState","currentThemeId","applyThemePreset","handleDeleteThemePreset","handleConfirmDeleteTheme","handleEditTheme","handleResetThemePreset","handleConfirmResetTheme","handleConfirmRestoreThemes","actionActive","ThemeAppearanceSection","handleResetThemeSettings","handleSaveCustomThemePreset","handleUpdateThemePresetSettings","saveThemeDialogOpen","setSaveThemeDialogOpen","activeThemeId","canUpdateActiveTheme","themeHasChanged","fallbackThemeName","handleSaveTheme","themeName","handleUpdateTheme","handleColorModeChange","nextColorMode","PositionPad","resolvedZ","draftPosition","setDraftPosition","draftPositionRef","nextPosition","extent","markerLeft","markerTop","commitPosition","nextX","nextZ","scheduleCommitPosition","updateFromPointer","ratioX","ratioY","DisplaySettingsSection","updateDisplaySettings","clipBounds","showClip","normalizedEdgeSettings","setDisplay","setClip","setExploded","setEdges","setEdgeClass","resetEdges","SelectedDisplayModeIcon","updateClipAxisOffset","numericOffset","resolvedOffset","axisOffset","axisSettings","boundsForAxis","axisRange","clipPosition","FlipHorizontal2","ThemeSettingsSections","activePrimaryLight","setActivePrimaryLight","appearanceTitle","setMaterials","setBackground","setFloor","setFloorGrid","currentFloor","setEnvironment","setLighting","themeColorFieldProps","activeMode","setLightConfig","lightKey","setLightPosition","supportsDistance","MeshFileSheet","formatScale","updateSetting","renderScaleSlider","settingKey","limits","ImplicitGraphicsSection","hasModelColors","hasDefaultSettings","DEFAULT_NUMBER_CONTROL_STEP","MIN_NUMBER_CONTROL_STEP","TARGET_NUMBER_SLIDER_STEPS","positiveNumber","compactNumber","parseJsonText","trimmed","firstBrace","lastBrace","resolveParameterNumberControlStep","declaredStep","rangeStep","buildParameterValuesCopyText","normalizedValues","orderedValues","parseParameterValuesPasteText","unknownLabel","rawValues","unknownIds","rawId","PARAMETER_ANIMATION_SPEED_MIN","PARAMETER_ANIMATION_SPEED_MAX","formatControlNumber","formatSeconds","parseAnimationSpeedInput","ParameterControlsSection","loadingLabel","noParametersLabel","hideWhenEmpty","showEnableToggle","enableLabel","animationAriaLabel","copyTitle","pasteTitle","resetTitle","animationDuration","hasControls","Pause","Play","currentValue","controlStep","ClipboardPaste","ImplicitFileSheet","parameterRuntime","graphicsRuntime","resolveStepModuleNumberControlStep","buildStepModuleParamsCopyText","parseStepModuleParamsPasteText","treeChevronButtonClasses","treeRowActionButtonClasses","treeRowContentClasses","treeGroupLabelClasses","treeGlyphIconClasses","treeMateIconSlotClasses","treeDepthIndentPx","treeDepthGuideOffsetPx","treeDepthMaxPx","treeSectionId","treeRevealScrollPaddingTopPx","treeRootRowLimit","treeShowMoreButtonClasses","STEP_MODULE_ANIMATION_SPEED_MIN","STEP_MODULE_ANIMATION_SPEED_MAX","leafIdsHidden","leafIds","hiddenStepTreeRowIds","visibleRows","hiddenRows","hiddenByDepth","rowHidden","isolatedStepTreeRowIds","focusedNodeIds","isolatedRows","isolatedByDepth","rowId","rowIsolated","scrollTreeNodeIntoView","block","targetRect","viewportRect","targetCenter","viewportCenter","paddedTop","topologyTreeRowType","topologyTreeRowDetailText","topologyTreeRowKind","haystack","capitalizeTreeLabel","stepTreeRowAriaLabel","topologyType","normalizedTopologyType","normalizedDetail","normalizedLabel","formatTreeTooltipLine","formatRefForTooltip","stepTreeRowTooltip","topologyReferenceId","disabledReason","mateRowTooltip","StepTreeDepthGuides","normalizedDepth","TopologySvg","TopologyTreeGlyph","common","StepTreeRowGlyph","normalizeAssemblyMateRows","fallbackId","sourceLabel","rawLabel","StepModuleAnimationTimeControl","onScrub","liveElapsedSec","rawElapsedSec","StepFileSheet","isAssemblyView","stepTreeRoot","expandedTreeNodeIds","stepTreeRootShowMore","onStepTreeRootShowMoreChange","loadableTreeNodeIds","selectableNodeIds","activeTreeNodeIdProp","activeTreeNodeScrollKey","onSelectTreeNode","onSelectReferenceNode","onSelectMateNode","onCopyTreeNodeReference","onCopyMateNodeReference","onFocusTreeNode","onUnfocusTreeNode","onHideOtherTreeNode","onToggleTreeNode","onClearSelection","onHoverTreeNode","onHoverReferenceNode","onHoverMateNode","treeSelectionDisabled","treeSelectionDisabledReason","onTogglePartVisibility","hideAllParts","showAllHiddenParts","stepModule","rowRefs","lastActiveTreeNodeScrollKeyRef","selectedIds","selectedReferenceIdSet","activeSelectedReferenceId","selectedMateIdSet","focusedNodeIdSet","normalizedHoveredMateId","selectableNodeIdSet","treeRoot","treeRootChildren","elideRootTreeRow","assemblyMateRows","rootItemsOverflow","collapsedVisibleRootChildCount","collapsedVisibleMateCount","allVisibleRows","activeReferenceTreeRowForRootLimit","rootChildSelectionPastLimit","mateSelectionPastLimit","rootLimitAutoExpanded","rootLimitExpanded","hiddenRootChildCount","visibleRowIdsSignature","hiddenTreeRowIds","isolatedTreeRowIds","hasAssemblyTree","visibleMateRows","showInstancesLabel","showMateSections","hiddenMateCount","hiddenTreeRowCount","showRootLimitControl","rootLimitControlLabel","rootLimitControlTitle","rootLimitControl","activeReferenceTreeRow","rawActiveTreeNodeId","activeTreeNodeId","activeTreeRow","activeTreeNodeIsTopology","isolateActive","showTreeVisibilityControls","treeSectionOpen","treeSelectionTitle","expandedTreeNodeIdSet","loadableTreeNodeIdSet","rowCanExpandOrLoad","expandableTreeNodeIds","collapsedExpandableTreeNodeIds","expandedExpandableTreeNodeIds","visibleRowById","selectionRowId","focusTreeRowAtIndex","stepModuleDefinition","stepModuleParameters","stepModuleAnimations","stepModuleStatus","stepModuleError","stepModuleValues","stepModuleAnimationState","stepModuleAnimationDuration","stepModuleEnabled","scrollKey","scrollToActiveTreeNode","activeNode","topologyRow","topologyPartId","selectableTopologyRow","rowDetail","inlineRowDetail","rowAriaLabel","rowHasChildren","rowExpanded","topologyInsideSelectablePart","insideIsolation","topologyWholeOfFocusedPart","selectable","isolationMuted","rowSelectionDisabled","showSelectedRowState","rowDisabledReason","rowAriaDisabled","rowTitle","rowDepthPx","selectRow","multiSelect","handleRowHoverStart","handleRowHoverEnd","handleRowClick","contextFocusActionAvailable","contextSelectDisabled","contextFocusDisabled","contextExitAllIsolateAvailable","contextHideOtherDisabled","contextHideAllDisabled","contextVisibilityDisabled","selectedContextNodeIds","actionNodeIds","actionRows","collapsedActionNodeIds","actionRow","expandedActionNodeIds","contextActionCount","copyReferenceTargetId","mateSelected","mateHovered","mateSelectionDisabled","mateTitle","selectMate","Link2","ToastProvider","ToastPrimitive.Provider","Toast","ToastPrimitive.Root","ToastTitle","ToastPrimitive.Title","ToastViewport","ToastPrimitive.Viewport","StatusToast","copyStatus","screenshotStatus","persistenceStatus","motionErrorStatus","onClear","isError","JOINT_CONTROL_SYNC_EPSILON","JOINT_CONTROL_LOCAL_OVERRIDE_MS","jointControlValuesClose","isAngularJoint","joint","jointType","jointUnitLabel","formatJointValue","safeValue","formatSdfNumber","formatMotionCoordinate","motionPositionsClose","clampJointInputValue","minValueDeg","maxValueDeg","fallbackValueDeg","UrdfJointRow","memo","onValueChange","jointName","safeValueDeg","unitLabel","sliderStep","pendingFrameRef","pendingValueRef","latestSafeValueRef","localOverrideRef","localOverrideTimeoutRef","liveValueDeg","setLiveValueDeg","clearLocalOverrideTimeout","releaseLocalOverride","nextValueDeg","normalizedValueDeg","holdLocalValueUntilParentSettles","scheduleValueChange","MotionCoordinateInput","committedValue","SdfValueField","formatSdfMetadataItem","fields","field","SdfMetadataList","UrdfFileSheet","showMotion","joints","groupStates","activeGroupStateId","jointValues","onJointValueChange","onGroupStateSelect","onCopyJointAngles","onResetPose","motion","movableJoints","groupStatePresets","sdfStaticMetadata","sdfIncludes","sdfPlugins","sdfSensors","sdfLights","sdfPhysics","sdfNestedModelCount","hasSdfMetadata","motionEndEffectors","motionPlanningGroups","motionTargetFrames","motionEnabled","activeMotionEndEffectorName","activeMotionPlanningGroupName","activeMotionTargetFrameName","motionTargetPosition","motionCurrentPosition","moveit2Settings","motionBusy","motionActionsEnabled","motionServerStatus","motionSelectPoseActive","motionTargetMatchesCurrentPosition","activeGroupStateValue","activeGroupState","activeGroupStateLabel","endEffector","groupState","groupStateId","groupStateName","ViewerAlertCommand","normalizedCommand","copyError","setCopyError","handleCopyCommand","ViewerAlertDialog","viewerAlertOpen","setViewerAlertOpen","isWarning","CLAUDE_CODE_LOADING_VERBS","shuffledLoadingVerbs","verbs","swapIndex","ViewerLoadingOverlay","loadingVerbs","setLoadingVerbs","activeWordIndex","setActiveWordIndex","spinnerFrameIndex","setSpinnerFrameIndex","ellipsisFrameIndex","setEllipsisFrameIndex","ASCII_SPINNER_FRAMES","ASCII_ELLIPSIS_FRAMES","nextLoadingVerbs","verbIntervalId","spinnerIntervalId","ellipsisIntervalId","activeVerb","spinnerFrame","ellipsis","CAD_WORKSPACE_TOOLBAR_DESKTOP_WIDTH_CLASS","ToolbarShell","ToolbarButton","tooltipSide","DrawingToolbar","layout","drawingToolOptions","handleSelectDrawingTool","handleUndoDrawing","handleRedoDrawing","handleClearDrawings","canUndoDrawing","canRedoDrawing","historyUndo","historyRedo","clearAction","canUndo","canRedo","scrollLayout","toolbarButtons","Undo2","Redo2","projectionOptionForValue","projectionMenuLabel","DisplayProjectionControl","contentAlign","contentSide","contentSideOffset","showDisplayModeSection","showProjectionSection","selectedOption","selectedProjectionOption","SelectedProjectionIcon","FLOATING_TOOL_BAR_SURFACE_CLASS","FLOATING_TOOL_BAR_BUTTON_CLASSES","DesktopFloatingToolBar","floatingCadToolbarPosition","selectionToolActive","urdfPosePickerAvailable","handleToggleUrdfPosePicker","stepAnimationAvailable","stepAnimationPlaying","stepAnimationDisabled","handleStepAnimationPlayToggle","handleSelectTabToolMode","handleEnterPreviewMode","displayMenuOpen","setDisplayMenuOpen","robotMode","meshOnlyMode","renderReady","captureDisabled","posePickerDisabled","showStepAnimationPlay","stepAnimationPlayDisabled","stepAnimationLabel","displayControlAvailable","MousePointer2","PenTool","Crosshair","Orbit","Focus","FloatingToolBar","toolbarProps","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbSeparator","SYSTEM_COLOR_SCHEME_ID","LIGHT_COLOR_SCHEME_ID","DARK_COLOR_SCHEME_ID","DEFAULT_COLOR_SCHEME_ID","THEME_STORAGE_KEY","COLOR_SCHEME_STORAGE_KEY","COLOR_SCHEME_ALIASES","COLOR_SCHEME_OPTIONS","COLOR_SCHEME_REGISTRY","normalizeColorSchemeId","colorSchemeId","canonicalId","resolveColorSchemeMode","browserLocalStorage","readColorSchemePreference","writeColorSchemePreference","applyColorSchemeToDocument","resolvedMode","collapsedBreadcrumbNodes","ellipsisBreadcrumbMenuDirectory","directoryTitle","parentDirectoryForPath","buildBreadcrumbNodes","directoryTree","selectedFileLabel","selectedFileTitle","directoryNodes","containingDirectory","fileSheetLabel","sourceFormatForEntry","entryStatusForMenu","BreadcrumbEntryMenuItem","BreadcrumbDirectoryMenuItems","BreadcrumbDirectorySubMenu","Folder","DropdownMenuScrollArea","titleProp","labelText","BreadcrumbNodeDropdown","selectedStepSourceStatus","filenameLoadActivity","menuDirectory","labelNode","FilenameLoadStatus","triggerButton","dropdownTrigger","trigger","BreadcrumbEllipsisDropdown","hiddenNodes","menuTitle","activity","GitHubMark","DiscordMark","topBarIconButtonClasses","topBarIconClasses","latestReleaseCacheKeyPrefix","latestReleaseCacheTtlMs","updateVersionTooltipDelayMs","passiveVersionTooltipDelayMs","emptyLatestReleaseCheck","currentColorMode","latestReleaseCacheKey","apiUrl","readLatestReleaseCache","expiresAt","latestVersion","releaseUrl","installCommand","writeLatestReleaseCache","release","latestReleaseFromPayload","fallbackReleaseUrl","latestReleaseCheckState","latestReleaseNewer","useViewerLatestReleaseCheck","latestReleaseApiUrl","latestReleaseUrl","mockLatestVersion","mockLatestReleaseUrl","releaseCheck","setReleaseCheck","mockedVersion","cachedRelease","VersionTooltipRow","VersionReleaseLink","installCopyStatus","setInstallCopyStatus","copyGestureHandledRef","updateAvailable","targetReleaseUrl","latestVersionVisible","upToDate","handleCopyInstallCommand","releaseButton","CircleCheck","CadWorkspaceTopBar","onColorSchemePreferenceChange","fileSheetOpen","onToggleFileSheet","navigationAvailable","viewerVersion","viewerPackage","discordUrl","githubUrl","breadcrumbAvailable","breadcrumbNodes","breadcrumbItems","mobileBreadcrumbNode","activeIconButtonClasses","showFileSheetToggle","fileSheetToggleLabel","showThemeColorModeToggle","activeColorSchemeMode","nextColorSchemeMode","colorModeToggleLabel","ColorModeIcon","handleThemeColorModeToggle","SlidersHorizontal","MAX_HOME_OPTIONS","formatLabelForEntry","pathLabelForEntry","compareEntryLabels","addHomeEntry","seenKeys","selectHomeEntries","sortedEntries","matchesGroup","CadWorkspaceHome","directorySelectionActive","homeEntries","normalizedDirectoryOptions","hasDirectoryOptions","heading","formatLabel","DXF_RENDER_SCHEMA_VERSION","SUPPORTED_ENTITY_TYPES","semanticKindForLayer","layerName","normalizeLayerName","lineBounds","circleBounds","arcBounds","parseRecordPairs","parseHeader","sourceUnits","variableName","valueRecord","parseLineEntity","parseArcEntity","parseCircleEntity","arcFromBulgeSegment","bulge","chordLength","includedAngleRad","leftNormal","centerOffset","parseLwpolylineEntity","flags","currentVertex","startVertex","endVertex","parseEntities","startRecord","entityType","entityRecords","polyline","splitSections","sections","nameRecord","sectionName","sectionRecords","nextRecord","buildPathRecord","pathData","touchLayer","layerSummary","parseDxf","dxfText","header","entities","pathRecords","largeArcFlag","sweepFlag","GCODE_RENDER_SCHEMA_VERSION","POSITION_EPSILON","EXTRUSION_EPSILON","ARC_CHORD_MM","UNCLASSIFIED_FEATURE","FEATURE_CATEGORY_ORDER","FEATURE_DEFINITIONS","SUPPORTED_COMMANDS","clonePoint","stripComment","parseCommand","stripped","parseTokens","commentText","commentIndex","normalizeFeatureText","featureSlug","titleCaseFeatureLabel","word","featureFromLabel","matchText","pattern","slug","parseFeatureMarker","comment","distance3","roundedZ","updateBounds","layerKey","layerIndexForZ","endpointForMove","absolutePositioning","nextExtruder","absoluteExtrusion","lineNumber","extrusionDelta","feedRate","lengthMm","arcSegments","sweep","chordSegments","compactBounds","finalizeLayers","zValues","ensureFeatureRecord","resolvedFeature","layerRangeText","finalizeFeatures","markers","categoryDelta","warningList","unsupportedCommands","unsupported","parseGcode","relativeWarningAdded","inchWarningAdded","currentFeature","featureMarkers","lineIndex","rawLine","featureMarker","nextE","STEP_TOPOLOGY_EXTENSION","STEP_TOPOLOGY_SCHEMA_VERSION","STEP_EDGE_BARYCENTRIC_ATTRIBUTE","STEP_EDGE_CLASS_ATTRIBUTE","STEP_EDGE_VISIBILITY_CLASSES","isCurrentStepTopologySchemaVersion","GLB_CAD_UNIT_SCALE","CAD_EDGE_BARYCENTRIC_ATTRIBUTE_NAMES","CAD_EDGE_CLASS_ATTRIBUTE_NAMES","GENERATED_STEP_DEFAULT_BASE_COLOR","BASE_COLOR_EPSILON","createBoundsAccumulator","includeBoundsPoint","boundsFromAccumulator","rawBaseColorFactor","rawMaterial","colorFactorsEqual","rawMaterialSourceColorHint","materialSourceColorHint","isGeneratedStepDefaultMaterial","colorFromMaterial","useSourceColors","stepTopology","sourceColorHint","materialOpacity","materialValue","rawAlpha","materialForGroup","materialIndex","materialIndexForGroup","rawMaterialForGroup","rawMaterials","isBuild123dAxisCorrectionMatrix","buildGlbCadRootCorrection","cadOccurrenceIdForObject","rawOccurrenceId","objectName","sceneHasCadOccurrenceIds","found","cadVectorFromGlbVector","convertYUpToCad","sourceIndexForSlot","indexAttribute","slot","geometryAttributeByName","names","isValidTriangleSource","sourceStart","countPrimitiveOutputVertices","localIndex","inspectGlbPrimitive","rootCorrection","partIndex","matrixWorld","normalMatrix","surfaceEdgeBarycentric","surfaceEdgeClass","availableCount","rawCount","sourceCount","cadOccurrenceId","writeGlbPrimitive","descriptor","partBounds","positionVector","normalVector","localVertexCount","triangleOffsetIndex","sourceSlot","outputVertexIndex","outputComponentIndex","cadPosition","cadNormal","buildMeshDataFromGltf","gltf","declaredMaterials","hasStepTopology","descriptors","colorSet","totalVertexCount","totalIndexCount","hasSurfaceEdgeAttributes","nextPrimitiveIndexByOccurrence","primitiveIndexBase","parseGlb","GLTFLoader","buffer","loader","buildMeshDataFromGlbBuffer","buildBoundsFromGeometry","STL_NORMAL_CREASE_ANGLE","buildDisplayGeometryFromStlGeometry","toCreasedNormals","displayGeometry","normalGeometry","buildGeometryIndices","buildMeshDataFromStlGeometry","displayPositions","displayNormals","buildMeshDataFromStlBuffer","STLLoader","GENERATED_DEFAULT_MATERIAL_NAMES","GENERATED_DEFAULT_MATERIAL_COLORS","WORKBENCH_DEFAULT_MATERIAL_COLOR","buildBoundsFromVertices","normalize3MfPackagePath","baseParts","elementChildren","localName","firstElementChild","attributeByLocalName","parseNumber","parseIndex","parse3MfXml","document","parse3MfTransform","parse3MfMeshNode","meshNode","verticesNode","vertexNode","triangles","trianglesNode","triangleNode","parse3MfModelPart","xmlText","modelPath","modelNode","resourcesNode","objects","objectNode","componentsNode","components","componentNode","objectId","build","buildNode","itemNode","parse3MfRelationships","relsPath","relationship","materialName","appendMeshPrimitive","accumulator","partVertices","outputIndex","buildMeshDataFromThreeMfGroup","geometryGroup","hasSourceColors","appendParsedMeshPart","transformedTriangle","edgeA","edgeB","sourceVertices","transformedVertex","partLabel","findObjectInAnyModel","models","appendParsed3MfObject","stackKey","objectData","resolvedModelPath","componentPath","componentMatrix","finalizeParsed3MfMesh","buildMeshDataFrom3MfPackageFallback","fflate","textDecoder","zipEntries","textEntry","entryPath","modelPaths","leftRoot","rightRoot","relationshipsText","rootModelPath","buildModelPath","buildItems","buildItem","buildMeshDataFrom3MfBuffer","ThreeMFLoader","glbWorker","nextRequestId","pendingRequests","makeAbortError","glbWorkerSupported","rejectPendingRequests","request","ensureGlbWorker","loadGlbMeshDataInWorker","worker","abort","stlWorker","stlWorkerSupported","ensureStlWorker","loadStlMeshDataInWorker","fetchError","textCache","arrayBufferCache","arrayBufferPendingCache","glbCache","stlCache","threeMfCache","selectorCache","displayEdgeCache","topologyIndexCache","dxfCache","gcodeCache","urdfCache","srdfCache","sdfCache","GIT_LFS_POINTER_PREFIX","GIT_LFS_POINTER_SCAN_BYTES","fetchText","fetchArrayBuffer","loadCached","cachePending","peekCached","finalizeCached","isAbortError","gitLfsPointerDetailsFromBuffer","byteLength","preview","oid","sizeText","displayPathFromUrl","rawUrl","assertNotGitLfsPointer","assetLabel","oidText","withConsumerAbort","promise","loadRenderText","loadRenderArrayBuffer","loadRenderGlb","preferWorker","workerMeshData","peekRenderGlb","loadRenderStl","peekRenderStl","loadRender3Mf","peekRender3Mf","parseGlbContainer","arrayBuffer","totalLength","json","bin","chunkLength","chunkType","glbBufferViewRange","viewIndex","view","byteOffset","buildTypedView","glb","relativeOffset","buildSelectorBuffers","views","typed","glbPrimitivesHaveSurfaceEdgeAttributes","meshes","primitiveCount","attributes","stepTopologyExtension","parseJsonBufferView","encoding","topologyIndexFromGlbBuffer","selectorBundleFromGlbBuffer","displayEdgeBundleFromGlbBuffer","loadRenderTopologyIndex","glbUrl","peekRenderTopologyIndex","loadRenderSelectorBundle","peekRenderSelectorBundle","loadRenderDisplayEdgeBundle","peekRenderDisplayEdgeBundle","loadRenderDxf","peekRenderDxf","loadRenderGcode","gcodeText","peekRenderGcode","urdfCacheKey","loadRenderUrdf","parseUrdf","peekRenderUrdf","srdfCacheKey","srdfUrl","urdfUrl","loadRenderSrdf","srdfText","parseSrdf","motionFromSrdf","srdfData","peekRenderSrdf","sdfCacheKey","loadRenderSdf","parseSdf","peekRenderSdf","implicitCadModuleCache","importUrl","loadImplicitCadModule","peekImplicitCadModule","IDENTITY_TRANSFORM","CYLINDER_SEGMENTS","SPHERE_WIDTH_SEGMENTS","SPHERE_HEIGHT_SEGMENTS","srgbToLinear","parseHexColorToLinearRgb","toTransformArray","toVector3","multiplyTransforms","product","translationTransform","rotationTransformFromRpy","roll","pitch","yaw","safeRoll","safePitch","safeYaw","sr","cr","sp","cp","sy","poseTransformFromXyzRpy","poseValues","axisAngleTransform","cosine","sine","oneMinusCosine","invertRigidTransform","transformBounds","transformed","buildDefaultUrdfJointValues","clampJointValueDeg","jointValueToNative","nativeToJointValue","translationAlongAxisTransform","posedJointLocalTransform","originTransform","preMotionTransform","postMotionTransform","motionTransform","resolveJointValue","jointByName","jointValuesByName","resolving","mimic","masterJoint","masterValue","masterNativeValue","multiplier","solveUrdfLinkWorldTransforms","rootLink","rootWorldTransform","linkTransforms","jointsByParent","parentLink","linkName","worldTransform","childJoints","childLink","jointValueDeg","childWorldTransform","linkOriginInFrame","frameLinkName","normalizedLinkName","normalizedFrameLinkName","linkWorldTransforms","linkWorldTransform","frameWorldTransform","rootPointInFrame","resolveVisualMesh","meshesByUrl","meshUrl","partFileRef","lookupKey","primitiveBounds","primitiveMesh","buildBoxPrimitiveMesh","sx","sz","hx","hy","hz","buildCylinderPrimitiveMesh","halfLength","nextAngle","x0","y0","topBase","bottomBase","buildSpherePrimitiveMesh","lat","lon","phi","rowWidth","second","buildUrdfPrimitiveMesh","resolveUrdfVisuals","links","resolvedVisuals","visuals","visual","partMesh","buildUrdfMeshGeometry","hasAuthoredDisplayColors","visualIndex","sourceIndices","visualColor","partHasSourceColors","urdfMeshHasSourceColors","urdfVisualHasDisplayColors","resolvedVisual","sourceNormals","sourceColors","partVertexOffset","partTriangleOffset","visualRgb","poseUrdfMeshData","linkWorldTransformOverrides","sourceParts","posedParts","localTransform","sourceBounds","applyUrdfPoseToMeshData","posed","assemblyMeshDescriptor","topologyManifest","assemblyUsesSelfContainedMesh","assemblyRootFromTopology","toVectorArray","normalizeMateEndpoint","normalizedAxes","assemblyMatesFromTopology","mates","flattenAssemblyLeafParts","leafParts","flattenAssemblyNodes","findAssemblyNode","rootAssemblyInspectionNodeId","descendantLeafPartIds","buildAssemblyLeafToNodePickMap","normalizedLeafPartId","resolveAssemblyPickedPartId","pickPartIdMap","validLeafPartIds","validLeafPartIdSet","mappedPartId","leafPartIdsForAssemblySelection","assemblyPartMap","leafIdIsValid","normalizeLeafIds","selectedNode","selectedLeafPartIds","normalizedFallbackPartId","meshPartId","meshPartNumericValue","meshPartIdMatches","meshPartIdHasPrefix","prefixes","meshPartsForTopologyLeaf","manifestPart","allParts","exactParts","buildSelfContainedAssemblyMeshData","manifestParts","partSources","meshlessLeafPartIds","meshlessLeafPartId","sourceSurfaceEdgeBarycentric","sourceSurfaceEdgeClass","firstMeshPart","sourceVertexOffset","sourceVertexCount","sourceTriangleOffset","sourceTriangleCount","rangeTriangleOffset","sourcePositionStart","sourcePositionEnd","sourceIndexStart","sourceIndexEnd","displayName","manifestPartUsesSourceColors","mapWithConcurrency","concurrency","mapper","list","workerCount","results","runWorker","meshRenderFormat","renderFormatFromMeshAssetUrl","directFormat","parsedUrl","parameterName","parameterValue","parameterFormat","normalizeMeshFallback","resolveMeshFormatFromUrl","peekRenderMeshByUrl","loadRenderMeshByUrl","LARGE_STEP_GLB_BYTES","LARGE_MESH_TRIANGLE_COUNT","LARGE_MESH_TYPED_ARRAY_BYTES","typedArrayBytes","entryStepGlbBytes","hasStepGlbByteCost","isLargeStepGlbEntry","isLargeNativeGlbEntry","shouldUseGlbMeshWorkerForEntry","estimateMeshRenderCost","indicesTriangleCount","partTriangleCount","isLargeMeshData","cost","ROBOT_MESH_LOAD_CONCURRENCY","abortLoad","controllerRef","browserYield","abortError","robotMeshLoadConcurrency","hardwareConcurrency","urdfMeshUrls","loadRenderRobotMeshes","meshUrls","onProgress","completed","peekRenderMeshForEntry","loadRenderMeshForEntry","createAssemblyPreviewMeshData","useCadAssets","buildNormalizedReferenceState","meshState","setMeshState","meshLoadInProgress","setMeshLoadInProgress","meshLoadTargetFile","setMeshLoadTargetFile","meshLoadStage","setMeshLoadStage","setStatus","dxfState","setDxfState","dxfStatus","setDxfStatus","dxfError","setDxfError","dxfLoadStage","setDxfLoadStage","gcodeState","setGcodeState","gcodeStatus","setGcodeStatus","gcodeError","setGcodeError","gcodeLoadStage","setGcodeLoadStage","implicitState","setImplicitState","implicitStatus","setImplicitStatus","implicitError","setImplicitError","implicitLoadStage","setImplicitLoadStage","urdfState","setUrdfState","urdfStatus","setUrdfStatus","urdfError","setUrdfError","urdfLoadStage","setUrdfLoadStage","referenceState","setReferenceState","referenceStatus","setReferenceStatus","referenceError","setReferenceError","referenceLoadStage","setReferenceLoadStage","displayEdgeState","setDisplayEdgeState","displayEdgeStatus","setDisplayEdgeStatus","displayEdgeError","setDisplayEdgeError","displayEdgeLoadStage","setDisplayEdgeLoadStage","requestIdRef","dxfRequestIdRef","gcodeRequestIdRef","implicitRequestIdRef","urdfRequestIdRef","referenceRequestIdRef","displayEdgeRequestIdRef","meshAbortControllerRef","dxfAbortControllerRef","gcodeAbortControllerRef","implicitAbortControllerRef","urdfAbortControllerRef","referenceAbortControllerRef","displayEdgeAbortControllerRef","getAssemblyMeshHash","buildSelfContainedAssemblyMeshState","assemblyMeshData","buildAssemblyPreviewMeshState","previewMeshData","getCachedMeshState","topologyUrl","getCachedReferenceState","buildDisplayEdgeState","getCachedDisplayEdgeState","getCachedDxfState","getCachedGcodeState","getCachedImplicitState","getCachedUrdfState","srdfPayload","cancelMeshLoad","cancelDxfLoad","cancelGcodeLoad","cancelImplicitLoad","cancelUrdfLoad","cancelReferenceLoad","cancelDisplayEdgeLoad","loadMeshForEntry","cachedMeshState","keepRenderedAssemblyVisible","assemblyPreviewVisible","meshHash","loadReferencesForEntry","cachedReferenceState","nextReferenceState","loadDisplayEdgesForEntry","cachedDisplayEdgeState","loadDxfForEntry","cachedDxfState","loadGcodeForEntry","cachedGcodeState","loadImplicitForEntry","cachedImplicitState","loadUrdfForEntry","cachedUrdfState","SIDEBAR_WRAPPER_SELECTOR","sidebarWrapperElement","applySidebarWidth","readWindowViewportWidth","preferredPanelWidthAfterViewportSync","clampPanelWidthForLayout","numericMinWidth","numericMaxWidth","normalizedMinWidth","normalizedMaxWidth","resolveDesktopPanelWidths","sidebarOpen","sheetOpen","sidebarWidth","sheetWidth","sidebarMinWidth","sheetMinWidth","sidebarMaxWidth","sheetMaxWidth","sidebarMax","sheetMax","sidebarMin","sheetMin","nextSidebarWidth","nextSheetWidth","useCadWorkspaceLayout","setLayoutMode","setSidebarOpen","setTabToolsOpen","setLayoutViewportWidth","clampSidebarWidth","clampTabToolsWidth","setSidebarWidth","setTabToolsWidth","panelResizeStateRef","tabToolsResizeStateRef","defaultSidebarWidth","tabToolsMinWidth","endPanelResize","endTabToolsResize","syncViewport","syncPanelWidths","resizeState","rawWidth","endResize","useCadWorkspaceSelection","supportsPartSelection","assemblyPartsLoaded","selectedEntryHasReferences","setSelectedReferenceIds","selectedReferenceIdsRef","setHoveredListReferenceId","setHoveredModelReferenceId","validAssemblyPartIds","validHiddenPartIds","selectedPartIdsRef","setSelectedPartIds","parseAssemblyPartReferenceSelectionId","setHiddenPartIds","setHoveredListPartId","setHoveredModelPartId","validIds","validHiddenIds","shouldActivateUrlSelection","selectedKeyExists","urlSelectionRequested","nextSelectedKey","createSessionBackedTabRecord","createTabRecord","initialSelectedTabSnapshot","fileSessionState","restoredTabSnapshot","useCadDirectorySession","manifestEntries","cadDirectorySessionBootstrappedRef","setOpenTabs","applyTabRecord","upsertTabRecord","defaultDocumentTitle","entryMap","buildActiveTabSnapshot","manifestRevision","activateEntryTab","resetActiveDirectory","readEntrySessionState","applyEntrySessionState","initialManifestRevisionRef","initialUnresolvedUrlSelectionRef","urlSelectedKey","nextTab","syncSelectionFromHistory","createMap","buildAssemblyPartMap","buildReferenceMap","useCadWorkspaceSelectors","selectedReferencesMatch","inspectedAssemblyNodeId","inspectedAssemblyPartTopologyReferences","hoveredListReferenceId","hoveredModelReferenceId","hoveredListPartId","hoveredModelPartId","currentReferences","normalizedAssemblyParts","normalizedAssemblyPartMap","inspectedAssemblyPartId","inspectedAssemblyPartIds","inspectedAssemblyPart","isInspectingAssemblyPart","inspectedAssemblyPartReferences","activeReferenceMap","inspectedAssemblyPartSourceLabel","selectedReferences","selectedParts","hoveredReference","useCadWorkspaceShortcuts","setCopyStatus","setScreenshotStatus","themeSheetOpen","tabToolsOpen","previewUiStateRef","tabToolMode","drawingUndoStackRef","drawingRedoStackRef","setPreviewMode","setThemeMenuOpen","setTabToolMode","lowerKey","redoShortcut","previousUiState","CAD_BUILD_COMMANDS","commandForFile","buildCadCommand","buildViewerMeshAlert","hasMeshData","loadError","meshSidecarFormat","meshSidecarLabel","reloadResolution","missingResolution","stepArtifactError","renderableGlb","buildViewerDxfAlert","previewError","normalizedPreviewError","buildViewerImplicitAlert","hasImplicitData","buildReferenceCacheKey","referenceHash","normalizeReferenceList","referencePayload","buildCadRefGroupKey","ensureCadRefGroup","outputOrder","appendUniquePlainLine","plainLines","normalizedText","normalizedKey","appendCadRefText","parsedToken","addedCount","canonicalCadRefCopyText","allowPlain","copySelectedReferenceText","buildAssemblyPartCopyText","buildWholeStepEntryCopyReference","buildAssemblyMateSelector","buildAssemblyMateCopyText","buildSelectionCopyPayload","referencesForCopy","missingPartNames","partReferenceId","referenceText","buildSelectionCopyButtonLabel","limit","copyLines","normalizedLimit","orderedStringListEqual","uniqueStringList","computeNextSelectionIds","currentIds","selectionId","normalizedSelectionId","THEME_STORAGE_VERSION","CUSTOM_THEME_PRESET_ID_PREFIX","THEME_APPEARANCE_QUERY_PARAM","CAD_DIRECTORY_SESSION_STORAGE_VERSION","CAD_DIRECTORY_SESSION_STORAGE_KEY","CAD_WORKSPACE_DEFAULT_SIDEBAR_WIDTH","CAD_WORKSPACE_DEFAULT_TAB_TOOLS_WIDTH","CAD_WORKSPACE_COMPACT_TAB_TOOLS_WIDTH","hasOwn","normalizeStringList","normalizeUniqueStringList","normalizeNullableUniqueStringList","normalizeNullablePositiveInteger","normalizeNullableBoolean","fileSheetWidthPxForSessionState","defaultWidth","normalizedWidth","normalizedDefaultWidth","fileViewerWidthPxForSessionState","cadWorkspaceDefaultFileSheetWidthForViewport","cloneStringList","stringListEqual","cloneDrawingPoint","normalizeTabCameraSnapshot","normalizeDrawingTool","normalizeTabToolMode","pointsEqualN","cloneSurfaceLineData","surfaceLineEqual","drawingPointsEqual","cloneDrawingStroke","rawTool","cloneDrawingStrokes","drawingStrokesEqual","cloneDrawingHistoryStack","drawingHistoryStackEqual","TAB_STATE_SCHEMA","normalizeSchemaState","schema","cloneSchemaState","schemaStateEqual","normalizeTabKey","readStorageJson","reportStorageWriteFailure","writeStorageJson","removeStorageItem","browserSessionStorage","createCadDirectorySessionState","normalizeDirectorySessionThemeSlice","buildCadDirectorySessionStoragePayload","normalizedState","readCadDirectorySessionState","writeCadDirectorySessionState","normalizeThemeLibraryId","normalizeThemeLibraryThemeId","themes","normalizedThemeId","slugifyCustomThemePresetName","normalizeThemeLibraryLabel","createCustomThemePresetId","createUniqueThemePresetId","baseId","existingIds","nextId","backgroundPreviewForThemeSettings","createCustomThemePresetPreview","modelColor","createThemeRecordFromPreset","createDefaultThemeLibrary","isCustomThemePresetId","normalizeCustomThemeLibraryThemeId","normalizeStoredCustomThemePreset","builtInId","rawPresetId","fallbackPresetId","fallbackPreset","rawTheme","normalizeStoredCustomThemePresets","seenIds","normalizeThemeLibraryPayload","storedThemePresetPayload","resolveDefaultActiveThemeId","buildThemeStoragePayload","customPresets","themeLibrary","customThemes","readThemeStorageState","defaultThemes","writeThemeStorageState","readCustomThemePresets","writeCustomThemePresets","currentThemeState","createCustomThemePresetRecord","existingPresets","getAvailableThemePresetById","saveAndActivateCustomThemePreset","deleteCustomThemePreset","nextPresets","nextThemeId","updateThemePresetSettings","resetThemePresetToDefault","sourcePresetId","presetRecord","nextTheme","restoreDefaultThemePresets","buildAvailableThemePresets","normalizedCustomPresets","cloneAvailableThemePresetSettings","getAvailableThemePresetIdForSettings","normalizedSettings","normalizedSignature","cloneThemeSettingsState","readThemeSettingsStateFromAppearanceQuery","search","requestedPresetId","isPlainStorageObject","createDirectorySessionThemeSlice","themeState","savedPreset","isDirectorySessionThemeSlice","themeSlice","readDirectoryThemeSettingsState","queryState","globalThemeState","readThemeSettingsState","sessionTheme","serializeThemeSettingsForStorage","storageState","storedPresetId","writeThemeSettings","serialized","cloneTabSnapshot","tabSnapshotEqual","FILE_SESSION_STORAGE_VERSION","FILE_SESSION_STORAGE_KEY_PREFIX","FILE_SESSION_INDEX_KEY_PREFIX","DEFAULT_FILE_SESSION_NAMESPACE","normalizePositiveNumber","storageValuesEqual","cloneSerializable","childValue","normalizeFileSessionNamespace","encodeStoragePart","fileSessionStorageKey","fileSessionIndexStorageKey","readIndex","writeIndex","files","normalizedFiles","updateIndex","normalizedFileKey","entryUrdfSignature","entryDxfSignature","entryStepModuleSignature","entryImplicitSignature","entryLargeFileSignature","entryTabSignature","fileSessionSignaturesForEntry","normalizeDisplaySlice","normalizeDxfSlice","normalizeStepModuleAnimationState","normalizeStepModuleSlice","normalizeImplicitSlice","normalizeJointValues","jointValue","normalizeMotionTargets","normalizedName","normalizeUrdfMotionState","targetsByEndEffector","normalizeUrdfSlice","normalizeLargeFileSlice","FILE_SESSION_SLICE_SCHEMA","sliceSignatureMatches","sliceName","signatures","currentSignatures","signatureKey","storedSignature","normalizeFileSessionSlices","rawSlices","slices","sliceSchema","createFileSessionSnapshot","normalizeFileSessionState","readFileSessionState","writeFileSessionState","wroteSnapshot","updatedIndex","pruneFileSessionState","knownFileKeys","knownFiles","ok","keptFiles","CAD_DIRECTORY_STORAGE_EVENT_ACTION","cadDirectoryStorageEventAction","storageKey","shallowObjectValuesEqual","leftKeys","rightKeys","findStepModuleAnimation","buildDefaultStepModuleAnimationState","animationNowMs","findParameterAnimation","buildDefaultParameterAnimationState","URDF_JOINT_ANIMATION_DURATION_MS","URDF_JOINT_ANIMATION_FOLLOW_MS","URDF_JOINT_ANIMATION_EPSILON","clampUnit","normalizedJointValueEntries","leftName","rightName","wrappedJointSetHas","wrappedJointNames","wrapAngleDeltaDeg","deltaDeg","numericDelta","animatedJointDeltaDeg","targetValue","numericCurrent","numericTarget","easeUrdfJointAnimation","jointValueMapsClose","leftEntries","rightEntries","interpolateUrdfJointValues","startValues","targetValues","targetEntries","startByName","done","startValue","deltaValue","interpolatedValue","advanceUrdfJointValues","currentValues","deltaMs","smoothingMs","currentByName","safeDeltaMs","safeSmoothingMs","MOTION_LIMIT_EPSILON","nativeJointValueToDisplay","displayJointValueToNative","jointValuesByNameToNative","nativeValues","normalizeMotionTargetPosition","positionDistance","validateUrdfMotionJointValues","native","validated","rawNumericValue","validateUrdfMotionTrajectory","trajectory","jointNames","rawPoints","previousTime","timeFromStartSec","hasNativePositions","nativePositions","positionsDeg","positionsByNameDeg","measureUrdfMotionResult","targetPosition","actualPosition","cloneJointValueMap","srdfGroupStateJointValuesToDisplay","srdfHomeGroupStateJointValuesToDisplay","homeValues","jointValueSubsetClose","subset","targetNames","findBestMatchingJointValueState","defaultValues","normalizedStates","normalizedCurrentValues","normalizedDefaultValues","defaultJointNames","bestState","bestJointCount","stateValues","stateJointNames","outsideJointNames","outsideCurrentValues","outsideDefaultValues","interpolateTrajectoryJointValues","fallbackValues","firstPoint","nextPoint","nextTime","span","previousValues","nextValues","interpolated","previousValue","roundedUrdfJointValue","emptyUrdfPosePickerState","buildUrdfJointAnglesCopyText","DEFAULT_TIMEOUT_MS","DEFAULT_MOVEIT2_SERVER_WS_URL","MOVEIT2_PROTOCOL_VERSION","socket","socketUrl","defaultMoveIt2ServerEnabled","explicitMoveIt2ServerUrl","env","moveit2ServerEnabled","normalizeRequestId","configuredMoveIt2ServerUrl","envUrl","moveit2ServerUrl","queryUrl","resetSocket","ensureMoveIt2ServerSocket","WebSocketImpl","sendWhenOpen","activeSocket","handleOpen","checkMoveIt2ServerLive","safeTimeoutMs","settled","timer","settle","isLive","requestMoveIt2Server","assemblyPathToNode","rootId","assemblyNodeContainsNode","ancestorNodeId","descendantNodeId","normalizedAncestorNodeId","normalizedDescendantNodeId","minimalAssemblyIsolationNodeIds","nodeIds","normalizedRootId","roots","rootNodeId","selectedReferenceIdsOutsideFocusedAssemblyNodes","referencePartId","readReferencePartId","selectableViewerNodeIdsForExpandedTree","isolatedNodeIds","isolationRoots","startNodes","addSelectable","forceChildren","expandedNode","DEFAULT_DOCUMENT_TITLE","LOCAL_ASSET_BACKEND","MOVEIT2_SERVER_ENABLED","URDF_POSE_PICKER_DEFAULT_CENTER","DESKTOP_SIDEBAR_MIN_WIDTH","DESKTOP_SIDEBAR_MAX_WIDTH","DEFAULT_SIDEBAR_WIDTH","DESKTOP_TAB_TOOLS_MIN_WIDTH","DESKTOP_TAB_TOOLS_MAX_WIDTH","CAD_WORKSPACE_TOP_BAR_HEIGHT","IMPLICIT_PARAMETER_RENDER_THROTTLE_MS","IMPLICIT_PARAMETER_ANIMATION_TICK_MS","IMPLICIT_DYNAMIC_RENDER_SETTLE_MS","DEFAULT_LARGE_FILE_STATE","normalizeLargeFileState","readViewerViewportWidth","readViewerPrefersDark","readViewerLayoutMode","readDirectorySessionState","readInitialFileSheetOpen","storedOpen","readInitialFileSheetWidth","readInitialFileSheetWidthIsCustom","stepTreeNodeIdForWorkspace","NATIVE_CAD_SELECTOR_RE","nativeCadSelectorCandidate","selectorFromStepTreeInternalId","canonicalCopyTextForSelector","allowOpaque","canonicalCopyTextFromCandidates","stepTreeNodeSelectorIdForWorkspace","findStepTreeNodeForWorkspace","collectStepTreeTopologyLoadableNodeIds","copyableStepTreeNodeForWorkspace","displayStepTreeRoot","copyableAssemblyPartForSelection","copyReferenceForAssemblyPartSelection","copyablePart","copyReferenceForRawSelectorSelection","idPrefix","copyReferenceForStepTreeNodeSelection","topologyNode","addStepTreeCopyReferenceMapEntry","buildStepTreeCopyReferenceMap","selectedCopyLinesFromIds","copyReferenceMap","copyPayloadWithSelectedIdFallback","currentLines","fallbackLines","addReferenceLookupKeys","keys","canonicalCopyText","stepTreeRootRowIsElidedForWorkspace","expandableStepTreeNodeIdsForWorkspace","buildStepTreeExpansionMenuState","visibleStepTreeTopologyReferenceIdsForWorkspace","findStepTreeTopologyNodeIdForReference","childAssemblyNodeIdForPickedLeaf","collectTopologyWrapperExpansionIds","expansionIds","childType","collectStepTreeRevealExpansionIds","expandSelf","includeVisualOnlyAncestors","collectStepTreeSubtreeIds","buildStepModuleAnimationFrameValues","speed","baseValues","safeElapsedSec","parameterId","useThrottledValue","intervalMs","resetKey","throttledValue","setThrottledValue","latestValueRef","resetKeyRef","lastEmitTimeRef","timerIdRef","elapsed","buildAnimatedImplicitParameterValues","clampedElapsedSec","normalizedCurrent","readResponseError","buildDxfCacheKey","dxfHash","entryHasImplicitAsset","mergeStepSourceStatusIntoEntry","normalizeViewerDirectoryOptions","CadWorkspace","manifestEntriesProp","explicitDirParam","viewerAssetBackend","activeGeneratorFiles","catalogRootDir","setQuery","initialFileViewerDirectoryStateRef","storedExpandedDirectoryIds","setExpandedDirectoryIds","fileViewerDirectoryStateInitialized","setFileViewerDirectoryStateInitialized","openTabs","setViewerServerInfo","viewerServerBackend","setSelectedKey","fileSheetOpenSectionIds","setFileSheetOpenSectionIds","dxfThicknessMm","setDxfThicknessMm","dxfBendSettings","setDxfBendSettings","setDxfViewMode","gcodeShowTravel","setGcodeShowTravel","gcodeMaxLayer","setGcodeMaxLayer","gcodeFullDetail","setGcodeFullDetail","gcodePreviewDetailLevel","setGcodePreviewDetailLevel","referenceQuery","setReferenceQuery","setSelectedMateIds","largeFileState","setLargeFileState","setHoveredMateId","selectedRenderPartIdByAssemblyPartId","setSelectedRenderPartIdByAssemblyPartId","selectedWholeEntryCadRefToken","setSelectedWholeEntryCadRefToken","expandedStepTreeNodeIds","setExpandedStepTreeNodeIds","setStepTreeRootShowMore","setActiveTreeNodeScrollKey","isolatedAssemblyNodeIds","setIsolatedAssemblyNodeIds","setViewerContextMenu","setDisplaySettings","setStepUpdateInProgress","stepArtifactGenerationStateByKey","setStepArtifactGenerationStateByKey","stepSourceStatusState","setStepSourceStatusState","setFileAccessBusyKey","setPersistenceStatus","setMotionErrorStatus","moveit2ServerLive","setMoveIt2ServerLive","viewerLayoutMode","setViewerLayoutMode","layoutViewportWidth","fileSheetOpenIntent","setFileSheetOpenIntent","viewerRuntimeAlert","setViewerRuntimeAlert","customThemePresets","setCustomThemePresets","setThemeState","availableThemePresets","systemPrefersDark","setSystemPrefersDark","colorSchemePreference","setColorSchemePreference","resolvedThemeSettings","resolvedDisplayEdgeSettings","cadWorkspaceGlassTone","updateDisplayMode","nextMode","updateDisplayProjection","updateImplicitGraphicsSettings","setImplicitGraphicsSettings","tabToolsWidth","fileSheetWidthIsCustom","setFileSheetWidthIsCustom","setDrawingTool","setViewerPerspective","setDrawingStrokes","drawingUndoStack","setDrawingUndoStack","drawingRedoStack","setDrawingRedoStack","jointValuesByFileRef","setJointValuesByFileRef","selectedUrdfGroupStateIdByFileRef","setSelectedUrdfGroupStateIdByFileRef","urdfMotionStateByFileRef","setUrdfMotionStateByFileRef","stepModuleLoadState","setStepModuleLoadState","stepModuleParameterValues","setStepModuleParameterValues","setStepModuleEnabled","setStepModuleAnimationState","stepModuleParameterValuesRef","stepModuleAnimationStateRef","implicitParameterValues","setImplicitParameterValues","implicitAnimationState","setImplicitAnimationState","implicitAnimationStateRef","implicitParameterInteractionActive","setImplicitParameterInteractionActive","implicitParameterInteractionTimerRef","urdfPosePickerState","setUrdfPosePickerState","lastPersistenceFailureKeyRef","urdfTrajectoryPlaybackRef","urdfJointAnimationRef","stepArtifactGenerationRequestsRef","selectedStepArtifactBuildKeyRef","handlePersistenceWriteError","failureKey","fileSessionNamespace","allEntriesTree","allDirectoryIds","catalogSelectedEntry","explicitFileEntry","fileParamSelectionPending","catalogSelectedEntrySourceFormat","selectedGeneratorRunning","selectedStepSourceStatusFile","selectedStepSourceStatusKey","selectedEntrySourceFormat","selectedFileSheetKind","activeViewerDir","directorySelectionEligible","directoryAutoEnterDir","directoryNavigationAvailable","fileAccessBackend","fileRevealAvailable","filePathCopyAvailable","fileLinkCopyAvailable","isStepView","isUrdfView","robotBoundsAnimationActive","isGcodeView","selectedStepModuleUrl","selectedStepModuleCadPath","selectedStepModuleDefinition","selectedStepModuleHasAnimations","selectedStepModuleStatus","selectedStepModuleError","selectedStepModuleLoading","selectedEntryHasMesh","selectedEntryHasUrdf","selectedEntryHasDisplayEdges","selectedEntryHasDxf","selectedEntryHasGcode","selectedEntryHasImplicit","selectedStepArtifactExternalGenerationActive","selectedStepArtifactBuildFile","selectedStepArtifactBuildKey","selectedStepArtifactGenerationState","selectedStepArtifactGenerationStatus","selectedStepArtifactGenerationFailureCount","selectedStepArtifactGenerationActive","selectedStepArtifactRenderPending","selectedMeshHash","selectedMeshMatches","selectedAssemblyStructureReady","selectedAssemblyInteractionReady","selectedAssemblyHydrationFailed","selectedDxfMatches","selectedGcodeMatches","selectedImplicitMatches","selectedUrdfMatches","selectedUrdfData","selectedUrdfMeshes","selectedGcodeData","selectedImplicitDefinition","selectedDxfFileRef","selectedGcodeFileRef","selectedUrdfFileRef","defaultSelectedUrdfJointValues","storedSelectedUrdfJointValues","storedValues","selectedUrdfJointValues","selectedUrdfMotion","endEffectors","selectedUrdfGroupStates","nameCounts","counts","selectedUrdfContinuousJointNames","matchedSelectedUrdfGroupStateId","trackedSelectedUrdfGroupStateId","activeSelectedUrdfGroupStateId","selectedUrdfMotionConfigKey","activeFile","probeTimer","clearProbeTimer","probeServer","live","restoredStepModuleState","defaultAnimationState","nextParameterValues","nextAnimationState","restoredImplicitState","selectedUrdfMotionControls","selectedUrdfMoveIt2ActionsEnabled","selectedUrdfMotionState","selectedUrdfMotionPlanningGroups","selectedUrdfMotionPlanningGroupName","storedName","selectedUrdfMotionEndEffectors","selectedUrdfMotionEndEffectorName","selectedUrdfMotionEndEffector","selectedUrdfMotionTargetFrames","selectedUrdfMotionTargetFrameName","selectedUrdfMoveIt2Settings","selectedUrdfMotionCurrentPosition","selectedUrdfMotionTargetPosition","storedTarget","selectedUrdfMotionSolving","selectedUrdfPosePickerState","selectedUrdfMeshGeometryResult","movableUrdfJoints","selectedUrdfPreview","selectedGcodeLayerCount","selectedGcodeMaxLayer","selectedGcodePreviewOptions","selectedGcodePreview","selectedGcodeMeshData","selectedGcodePreviewError","selectedStepModuleActiveAnimation","selectedStepModuleAnimationViewState","selectedStepParameterRuntime","stepModuleTreeSelectionDisabled","stepModuleTreeSelectionDisabledReason","handleStepModuleParameterChange","handleCopyStepModuleParams","handlePasteStepModuleParams","handleResetStepModuleParameters","handleStepModuleAnimationSelect","nextState","handleStepModuleAnimationPlayToggle","currentState","liveValues","handleStepModuleAnimationReset","handleStepModuleAnimationScrub","handleStepModuleAnimationSpeedChange","handleStepModuleEnabledChange","nextEnabled","previousTimeMs","tick","timeMs","deltaSec","playing","selectedImplicitActiveAnimation","selectedImplicitAnimationViewState","implicitRenderParameterValues","implicitRenderAnimationViewState","selectedImplicitRuntime","selectedImplicitRuntimeModel","selectedImplicitRuntimeError","markImplicitParameterInteraction","implicitRenderPending","handleImplicitParameterChange","handleCopyImplicitParams","handlePasteImplicitParams","handleResetImplicitParameters","handleImplicitAnimationSelect","handleImplicitAnimationPlayToggle","handleImplicitAnimationReset","handleImplicitAnimationScrub","handleImplicitAnimationSpeedChange","timerId","selectedAssemblyMates","selectedAssemblyMateMap","assemblyLeafParts","stepLeafParts","stepTreeNodes","validAssemblySelectionIds","validAssemblySelectionIdSet","assemblyRootNodeId","focusedAssemblyNodeIds","loadableStepTreeTopologyNodeIds","loadableStepTreeTopologyNodeIdSet","requestedStepTreeTopologyNodeIds","viewerSelectableAssemblyNodeIds","viewerSelectableAssemblyNodeIdSet","assemblyPickPartIdMap","validAssemblyLeafIds","validAssemblyLeafIdSet","resolvePickedAssemblyPartId","renderPartIdsForAssemblySelection","renderPartIdForAssemblySelection","hiddenLeafIds","selectedUrdfPreviewError","selectedDxfBendLines","normalizedSelectedDxfBendSettings","effectiveDxfThicknessMm","selectedDxfPreview","selectedDxfPreviewError","selectedDxfPreviewKey","baseKey","bendsKey","effectiveRenderFormat","dxfViewerLoading","gcodeViewerLoading","implicitViewerLoading","urdfViewerLoading","stepArtifactBlocksRender","stepViewerLoading","effectiveViewerLoading","assemblySidebarLoading","assemblyHydrationLoading","viewerLoadingLabel","viewerAlertKey","focusedAssemblyTopologyActive","viewerInAssemblyMode","drawModeActive","selectionCountBase","selectedMateIdsRef","selectedEntryBuildSnapshotRef","fileSessionSaveTimerRef","openTabsRef","activePerspectiveRef","selectedFileSheetKeyRef","fileViewerExpandedDirectoryIdList","defaultFileSheetWidth","directorySessionThemeSlice","desktopFileSheetOpen","effectiveSidebarOpen","desktopSidebarOpen","readGlobalThemeState","handleColorSchemePreferenceChange","nextPreference","normalizedPreference","updater","persistGlobal","savedTheme","nextCustomThemePresets","nextAlert","handleStartSidebarResize","handleSidebarOpenChange","currentWidth","handleStartFileSheetResize","resetSelectionForStepUpdate","tabs","tab","selectedFileStatusItems","selectedFileStatusLevel","selectedFileHasWarningOrErrorStatus","fileSheetSectionOptions","renderedSelectedFileSheetSectionIds","defaultSelectedFileSheetOpenSectionIds","effectiveFileSheetOpenSectionIds","handleFileSheetOpenSectionIdsChange","nextSectionIds","openFileSheetSection","openSheet","baseSectionIds","parametersSectionId","graphicsSectionId","hasParametersSection","hasGraphicsSection","entryOverride","buildActiveFileSessionSnapshot","targetEntry","targetFileKey","targetUrdfJointValues","targetUrdfMotionState","snapshotStepModuleAnimationState","snapshotStepModuleParameterValues","clearFileSessionSaveTimer","writeFileSessionForEntry","flushActiveFileSession","scheduleActiveFileSessionSave","sessionState","queryThemeState","dxfSlice","stepModuleSlice","implicitSlice","urdfSlice","handleDxfBendSettingChange","bendIndex","fileSheetSelectionKeyForTab","tabRecord","nextTabs","restoredSessionState","cadFileParamForSelectedEntry","handlePageHide","handleColorSchemeChange","documentColorSchemePreference","handleStorage","nextSelectedPartIds","selectedNodeIdSet","nextMap","renderPartId","nextFileSheetKey","stepHash","sameEntry","resolvedDesktopPanelWidths","expandFileViewerTreeToEntry","knownDirectoryIds","retryTimer","attempts","loadStatus","statusError","selectedSelectorRuntime","selectedDisplayEdgesMatch","selectedDisplayEdgeRuntime","selectedStepPartRootActive","plainStepReferencePickingEnabled","assemblyStepTreeTopologyLoadingEnabled","selectedStepDisplayEdgesRequested","selectedTopologyExplicitlyEnabled","selectedTopologyLargeByCost","selectedTopologyWaitingForMeshCost","selectedTopologyDeferredByCost","topLevelReferenceSelectionActive","referenceLoadingEnabled","filtered","isFaceReference","isEdgeReference","isVertexReference","isViewerTopologyReference","isStepTopologyReference","explicitPartId","assemblyStepTreeTopologyReferences","focusedAssemblyRenderPartIds","focusedAssemblyPartReferences","effectiveVisibleReferences","stepTreeTopologyReferences","isolatedStepTreeSelectableNodeIds","treeRootForIsolation","visibleStepTreeTopologyReferenceIds","visibleStepTreeTopologyReferenceIdSet","stepTreeCopyReferenceMap","effectiveSelectorRuntime","effectiveActiveReferenceMap","nextSelectedReferenceIds","renderPartIdsForWholeTopologyReference","viewerPickableReferences","viewerPickableFaces","viewerPickableEdges","viewerPickableVertices","referenceSelectionStatus","hasViewerPickableTopology","topologySelectionActive","activeMeshLoadStage","selectedWholeTopologyReferencePartIds","hoveredWholeTopologyReferencePartIds","viewerSelectedPartIds","viewerHoveredPartIds","contextMenuNodeId","contextRenderPartId","normalizedTreeHoveredPartId","normalizedHoveredPartId","hoveredSelectionId","effectiveHoveredReferenceId","viewerFocusedPartIds","viewerHiddenPartIds","viewerAssemblyRenderParts","clearUrdfMotionStatusForFile","clearTrackedUrdfGroupStateForFile","cancelUrdfTrajectoryOnly","playback","cancelUrdfJointAnimation","jointAnimation","cancelUrdfTrajectoryPlayback","animateUrdfJointValues","startJointValues","targetJointValues","finalValues","startedAtMs","elapsedMs","interpolation","followUrdfJointValues","currentJointValues","activeAnimation","advanced","playUrdfTrajectory","baseJointValues","finalJointValues","durationSec","syncUrdfMotionTargetToJointValues","nextJointValues","currentPosition","normalizedTargetPosition","statusesByEndEffector","handleUrdfJointValueChange","clampedValueDeg","currentValueDeg","handleResetUrdfPose","handleSelectUrdfGroupState","groupStateJointValues","handleUrdfMotionEndEffectorChange","nextName","startTransition","handleUrdfMoveIt2SettingChange","handleUrdfMotionTargetPositionChange","nextTarget","handleUseCurrentUrdfMotionPosition","handleApplyUrdfMotionTarget","commandName","targetPositionOverride","requestCommandName","showMotionError","nextMessage","fallbackNativeJointValues","fallbackDisplayJointValues","nativeJointValues","returnedJointValues","measurement","handleSolveUrdfPose","handlePlanUrdfPose","restoreUrdfPosePickerPerspective","restoredPerspective","handleBeginUrdfPosePicker","originalPerspective","handleCancelUrdfPosePicker","commitUrdfMotionTargetPosition","handleUrdfPosePointPick","pickedPoint","handleCopyUrdfJointAngles","copySelectionPayload","selectedReferencesForCopy","wholeStepEntryReference","selectedPartReferencesForCopy","selectedMatesForCopy","canonicalCopySelectionLines","expandStepTreeAroundNode","treeRootForExpansion","idsToExpand","revealStepTreeNode","expandAncestors","toggleReferenceSelection","selectedReference","selectedReferenceType","selectedReferencePartId","selectedReferenceTreeNodeId","clearReferenceSelection","copiedCount","missingSuffix","toggleStepTreeNode","collapseExitsIsolation","focusedNodeId","collapsedSubtreeIds","removeSelectedAssemblyNode","togglePartSelection","alreadySelected","selectedPartId","normalizedSelectedPartId","selectedRenderPartId","selectStepTreeNode","selectStepTreeReferenceNode","toggleMateSelection","normalizedMateId","selectStepTreeMateNode","clearAssemblySelectionForFocus","collapseStepTreeSubtree","treeRootForCollapse","collapsedIds","focusStepTreeNode","requestedNodeIds","targetNodeIds","targetNodes","targetLeafIds","targetLeafIdSet","targetNodeId","handleExitIsolate","handleExitSingleIsolate","clearAssemblySelection","clearSelectionForHiddenLeafIds","selectedNodeId","normalizedSelectedNodeId","leafId","partSelectionChanged","referenceSelectionChanged","hideStepTreeNode","revealHiddenStepTreeNode","leafIdSet","togglePartVisibility","handleHideSelectedParts","handleHideOtherSelectedParts","selectedLeafPartIdSet","handleHideOtherTreeNode","normalizedNodeIds","targetLeafPartIds","targetLeafPartIdSet","handleHideAllParts","handleShowAllHiddenParts","nextReferenceId","pickedPartId","nextPartId","focusedNode","hoveredChildNodeId","closeViewerContextMenu","openGlobalViewerContextMenu","expansionState","selectedContextReferenceIds","actionReferenceIds","fitReferenceIds","selectedFitPartIds","fitPartIds","fitAvailable","contextCopyReference","copyViewerContextMenuReference","copyStepTreeContextMenuReference","topology","partReference","copyStepTreeMateReference","selectViewerContextMenuNode","focusViewerContextMenuNode","hideViewerContextMenuNode","actionNodeId","revealViewerContextMenuNode","hideOtherViewerContextMenuNode","hideAllViewerContextMenuNodes","resetZoomViewerContextMenu","zoomToFitViewerContextMenu","expandSelectedViewerContextMenuNodes","collapseSelectedViewerContextMenuNodes","expandAllViewerContextMenuNodes","collapseAllViewerContextMenuNodes","handleSelectEntry","handleSelectDirectory","handleRevealEntryInExplorerView","normalizedMode","handleToggleFileSheet","handleDownloadFileAsset","assetInfo","assetKind","downloadError","handleCopyFileAssetReference","referenceKind","statusLabel","handleRevealFileAsset","revealUrl","handleExportImplicitFile","currentParameterValues","currentAnimationState","future","normalizedPerspective","previewRenderable","toggleDirectory","activeReferenceId","activeReferencePartTreeNodeId","activeReferenceTreeNodeId","activeStepTreeNodeId","activeSidebarWidth","activeSheetWidth","sidebarShellWidth","ArrowRight","ArrowLeftRight","Square","Circle","PaintBucket","Eraser","renderDisplaySettings","faviconUrl","ROOT_ID","ROOT_CACHE_KEY","ensureFavicon","bootstrap","rootElement","cachedRoot","createRoot","StrictMode","AppRoot","revision"],"ignoreList":[0,1,4],"sources":["../../node_modules/clsx/dist/clsx.mjs","../../node_modules/class-variance-authority/dist/index.mjs","../../src/client/workbench/breakpoints.js","../../src/client/hooks/use-mobile.js","../../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../src/client/ui/utils.js","../../src/client/components/ui/button.jsx","../../src/client/components/ui/input.jsx","../../src/client/components/ui/sheet.jsx","../../src/client/components/ui/tooltip.jsx","../../src/client/components/ui/sidebar.jsx","../../packages/cadjs/src/lib/cadRefs.js","../../packages/cadjs/src/lib/step/stepTree.js","../../src/client/ui/clipboard.js","../../src/client/ui/download.js","../../packages/cadjs/src/common/camera.js","../../packages/cadjs/src/lib/perspective.js","../../packages/cadjs/src/lib/viewer/constants.js","../../packages/cadjs/src/lib/viewer/clipPlane.js","../../packages/cadjs/src/lib/viewer/drawingTools.js","../../packages/cadjs/src/lib/viewer/drawingGeometry.js","../../packages/cadjs/src/lib/viewer/drawingCanvas.js","../../packages/cadjs/src/lib/viewer/displayEdgePolicy.js","../../packages/cadjs/src/common/displaySettings.js","../../packages/cadjs/src/common/topologyDisplayEdges.js","../../packages/cadjs/src/common/renderEdges.js","../../packages/cadjs/src/lib/viewer/urdfPosePicker.js","../../packages/cadjs/src/lib/viewer/sceneScale.js","../../packages/cadjs/src/common/themeSettings.js","../../packages/cadjs/src/lib/viewer/stageTheme.js","../../packages/cadjs/src/lib/viewer/autoZoom.js","../../packages/cadjs/src/lib/viewer/stageGrid.js","../../packages/cadjs/src/lib/viewer/surfaceMaterials.js","../../packages/cadjs/src/lib/viewer/referenceGeometry.js","../../packages/cadjs/src/lib/viewer/partVisualState.js","../../packages/cadjs/src/lib/selectors/runtime.js","../../packages/cadjs/src/common/topologyDisplayEdgeRuntime.js","../../packages/cadjs/src/common/stepModule.js","../../packages/cadjs/src/common/stepModuleEffects.js","../../packages/cadjs/src/common/displayRecordTransform.js","../../packages/cadjs/src/lib/viewer/topologyDisplayEdgeLine.js","../../packages/cadjs/src/lib/viewer/explodedView.js","../../packages/cadjs/src/common/cadScene.js","../../packages/cadjs/src/lib/viewer/modelRuntime.js","../../packages/cadjs/src/lib/viewer/selectorPickGroups.js","../../packages/cadjs/src/lib/viewer/surfaceLineGeometry.js","../../packages/cadjs/src/lib/viewer/screenshotCapture.js","../../packages/cadjs/src/lib/viewer/webglSupport.js","../../packages/cadjs/src/lib/fileFormats.js","../../src/client/workbench/constants.js","../../src/client/components/viewer/ViewPlaneControl.js","../../src/client/components/viewer/hooks/useViewerDrawingOverlay.js","../../packages/cadjs/src/lib/viewer/pickingThresholds.js","../../src/client/components/viewer/hooks/viewerContextMenuGesture.js","../../src/client/components/viewer/hooks/useViewerPicking.js","../../src/client/ui/dom.js","../../packages/cadjs/src/common/webglRenderer.js","../../packages/cadjs/src/lib/viewer/renderQuality.js","../../src/client/components/viewer/orbitControls.js","../../src/client/components/viewer/hooks/useViewerRuntime.js","../../src/client/components/viewer/renderState.js","../../src/client/components/CadViewer.js","../../src/client/components/DxfViewer.js","../../packages/implicitjs/src/common/camera.js","../../packages/implicitjs/src/common/themeSettings.js","../../packages/implicitjs/src/common/renderOptions.js","../../packages/implicitjs/src/lib/implicitCad/graphicsSettings.js","../../packages/implicitjs/src/common/parameters.js","../../packages/implicitjs/src/lib/implicitCad/sdfEvaluator.js","../../packages/implicitjs/src/lib/implicitCad/schema.js","../../packages/implicitjs/src/lib/implicitCad/model.js","../../packages/implicitjs/src/lib/viewer/stageTheme.js","../../packages/implicitjs/src/lib/viewer/surfaceMaterials.js","../../packages/implicitjs/src/lib/implicitCad/render.js","../../src/client/components/ImplicitCadViewer.js","../../src/client/components/ui/alert.jsx","../../src/client/components/ui/dropdown-menu.jsx","../../src/client/components/ui/toggle.jsx","../../src/client/components/ui/toggle-group.jsx","../../src/client/components/workbench/AssemblyContextMenuItems.js","../../src/client/workbench/stepAnimationStore.js","../../src/client/workbench/viewerPickMode.js","../../src/client/components/workbench/CadRenderPane.js","../../packages/cadjs/src/lib/dxf/buildPreviewMesh.js","../../src/client/components/ui/accordion.jsx","../../src/client/components/ui/scroll-area.jsx","../../src/client/components/ui/switch.jsx","../../src/client/components/workbench/FileSheet.js","../../src/client/workbench/fileSheetSections.js","../../packages/cadjs/src/lib/entryAssets.js","../../src/client/workbench/stepArtifactStatus.js","../../src/client/workbench/entryIconStatus.js","../../src/client/workbench/pathPresentation.js","../../src/client/workbench/cadViewerDirectorySession.mjs","../../src/shared/viewerConfig.mjs","../../src/client/workbench/sidebar.js","../../src/client/workbench/fileAccessAssets.js","../../src/client/workbench/fileMetadata.js","../../src/client/components/workbench/FileMetadataSection.js","../../src/client/components/ui/badge.jsx","../../src/client/workbench/fileStatusItems.js","../../src/client/components/workbench/FileStatusSection.js","../../src/client/components/workbench/DxfFileSheet.js","../../src/client/components/ui/slider.jsx","../../packages/cadjs/src/lib/gcode/buildPreviewMesh.js","../../src/client/components/workbench/GcodeFileSheet.js","../../src/client/components/ui/collapsible.jsx","../../src/client/workbench/entryIconKind.js","../../src/client/components/ui/context-menu.jsx","../../src/client/workbench/cadManifestStore.js","../../src/client/workbench/implicitExport.js","../../src/client/components/workbench/FileAccessContextMenu.jsx","../../src/client/components/workbench/FileViewerSidebar.js","../../src/client/components/ui/alert-dialog.jsx","../../src/client/components/ui/popover.jsx","../../src/client/components/ui/color-picker.jsx","../../src/client/components/ui/dialog.jsx","../../src/client/components/ui/select.jsx","../../src/client/components/ui/tabs.jsx","../../src/client/components/viewer/DisplayModeOptions.js","../../src/client/components/viewer/ProjectionModeIcons.js","../../src/client/components/workbench/ThemeSettingsPopover.js","../../src/client/components/workbench/MeshFileSheet.js","../../src/client/components/workbench/ImplicitGraphicsSection.js","../../src/client/workbench/parameterControls.js","../../src/client/components/workbench/ParameterControlsSection.js","../../src/client/components/workbench/ImplicitFileSheet.js","../../src/client/workbench/stepModuleParameterControls.js","../../src/client/components/workbench/StepFileSheet.js","../../src/client/components/ui/toast.jsx","../../src/client/components/workbench/StatusToast.js","../../src/client/components/workbench/UrdfFileSheet.js","../../src/client/components/workbench/ViewerAlertCommand.js","../../src/client/components/workbench/ViewerAlertDialog.js","../../src/client/components/workbench/ViewerLoadingOverlay.js","../../src/client/components/workbench/ToolbarShell.js","../../src/client/components/workbench/ToolbarButton.js","../../src/client/components/workbench/DrawingToolbar.js","../../src/client/components/viewer/DisplayProjectionControl.js","../../src/client/components/workbench/FloatingToolBar.js","../../src/client/components/ui/breadcrumb.jsx","../../src/client/ui/colorScheme.js","../../src/client/workbench/breadcrumbs.js","../../src/client/components/workbench/CadWorkspaceTopBar.js","../../src/client/components/workbench/CadWorkspaceHome.js","../../packages/cadjs/src/lib/dxf/parseDxf.js","../../packages/cadjs/src/lib/gcode/parseGcode.js","../../packages/cadjs/src/common/stepTopology.mjs","../../packages/cadjs/src/lib/render/glbMeshData.js","../../packages/cadjs/src/lib/render/stlMeshData.js","../../packages/cadjs/src/lib/render/threeMfMeshData.js","../../packages/cadjs/src/lib/render/glbMeshWorkerClient.js","../../packages/cadjs/src/lib/render/stlMeshWorkerClient.js","../../packages/cadjs/src/lib/renderAssetClient.js","../../packages/implicitjs/src/lib/implicitCad/loader.js","../../packages/cadjs/src/lib/urdf/kinematics.js","../../packages/cadjs/src/lib/assembly/meshData.js","../../packages/cadjs/src/lib/async/concurrency.js","../../packages/cadjs/src/lib/render/meshLoaders.js","../../packages/cadjs/src/lib/render/meshCost.js","../../src/client/components/workbench/hooks/useCadAssets.js","../../src/client/components/workbench/hooks/useCadWorkspaceLayout.js","../../src/client/components/workbench/hooks/useCadWorkspaceSelection.js","../../src/client/components/workbench/hooks/useCadDirectorySession.js","../../src/client/workbench/selectors.js","../../src/client/components/workbench/hooks/useCadWorkspaceSelectors.js","../../src/client/components/workbench/hooks/useCadWorkspaceShortcuts.js","../../src/client/workbench/viewerAlerts.js","../../src/client/workbench/referenceSelection.js","../../src/client/workbench/persistence.js","../../src/client/workbench/fileSessionState.js","../../src/client/workbench/storageEvents.js","../../src/client/workbench/valueUtils.js","../../src/client/workbench/stepModuleAnimation.js","../../src/client/workbench/parameterAnimation.js","../../packages/cadjs/src/lib/urdf/jointAnimation.js","../../packages/cadjs/src/lib/urdf/motion.js","../../src/client/workbench/robotMotionControls.js","../../packages/cadjs/src/lib/urdf/moveit2ServerClient.js","../../src/client/workbench/assemblyIsolation.js","../../src/client/components/CadWorkspace.js","../../src/client/assets/favicon.ico","../../src/client/main.jsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;ttypeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","export const CAD_WORKSPACE_MOBILE_BREAKPOINT_PX = 520;\nexport const CAD_WORKSPACE_DESKTOP_BREAKPOINT_PX = CAD_WORKSPACE_MOBILE_BREAKPOINT_PX;\nexport const CAD_WORKSPACE_FILE_VIEWER_DEFAULT_OPEN_BREAKPOINT_PX = 1024;\nexport const CAD_WORKSPACE_FILE_SHEET_COMPACT_BREAKPOINT_PX = 1024;\nexport const CAD_WORKSPACE_BREAKPOINT_PX = CAD_WORKSPACE_DESKTOP_BREAKPOINT_PX;\n\nexport const CAD_WORKSPACE_DESKTOP_MEDIA_QUERY = `(min-width: ${CAD_WORKSPACE_MOBILE_BREAKPOINT_PX}px)`;\nexport const CAD_WORKSPACE_MOBILE_MEDIA_QUERY = `(max-width: ${CAD_WORKSPACE_MOBILE_BREAKPOINT_PX - 1}px)`;\n\nexport const CAD_WORKSPACE_LAYOUT_MODE = Object.freeze({\n DESKTOP: \"desktop\",\n MOBILE: \"mobile\"\n});\n\nexport function getCadWorkspaceLayoutMode(width) {\n const numericWidth = Number(width);\n if (!Number.isFinite(numericWidth)) {\n return CAD_WORKSPACE_LAYOUT_MODE.DESKTOP;\n }\n return numericWidth >= CAD_WORKSPACE_DESKTOP_BREAKPOINT_PX\n ? CAD_WORKSPACE_LAYOUT_MODE.DESKTOP\n : CAD_WORKSPACE_LAYOUT_MODE.MOBILE;\n}\n\nexport function isCadWorkspaceMobileViewport(width) {\n return getCadWorkspaceLayoutMode(width) === CAD_WORKSPACE_LAYOUT_MODE.MOBILE;\n}\n\nexport function isCadWorkspaceDesktopViewport(width) {\n return getCadWorkspaceLayoutMode(width) === CAD_WORKSPACE_LAYOUT_MODE.DESKTOP;\n}\n\nexport function isCadWorkspaceCompactFileSheetViewport(width) {\n const numericWidth = Number(width);\n if (!Number.isFinite(numericWidth)) {\n return false;\n }\n return (\n numericWidth >= CAD_WORKSPACE_MOBILE_BREAKPOINT_PX &&\n numericWidth < CAD_WORKSPACE_FILE_SHEET_COMPACT_BREAKPOINT_PX\n );\n}\n\nexport function shouldCadWorkspaceDefaultFileViewerOpen(width, { hasSelectedFile = true } = {}) {\n return false;\n}\n\nexport function shouldCadWorkspaceDefaultFileSettingsOpen(width) {\n return isCadWorkspaceDesktopViewport(width);\n}\n","import * as React from \"react\"\n\nimport {\n CAD_WORKSPACE_MOBILE_MEDIA_QUERY,\n isCadWorkspaceMobileViewport\n} from \"../workbench/breakpoints.js\"\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState(() => (\n typeof window === \"undefined\" ? false : isCadWorkspaceMobileViewport(window.innerWidth)\n ))\n\n React.useEffect(() => {\n const mql = window.matchMedia(CAD_WORKSPACE_MOBILE_MEDIA_QUERY)\n const onChange = () => {\n setIsMobile(isCadWorkspaceMobileViewport(window.innerWidth))\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(isCadWorkspaceMobileViewport(window.innerWidth))\n return () => mql.removeEventListener(\"change\", onChange);\n }, [])\n\n return !!isMobile\n}\n","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Button = React.forwardRef(function Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}, ref) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n \n );\n})\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/ui/utils\"\n\nfunction Input({\n className,\n type,\n ...props\n}) {\n return (\n \n );\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\n\nfunction Sheet({\n ...props\n}) {\n return ;\n}\n\nconst SheetTrigger = React.forwardRef(function SheetTrigger({\n ...props\n}, ref) {\n return ;\n});\n\nconst SheetClose = React.forwardRef(function SheetClose({\n ...props\n}, ref) {\n return ;\n});\n\nfunction SheetPortal({\n ...props\n}) {\n return ;\n}\n\nconst SheetOverlay = React.forwardRef(function SheetOverlay({\n className,\n ...props\n}, ref) {\n return (\n \n );\n});\n\nconst SheetContent = React.forwardRef(function SheetContent({\n className,\n overlayClassName,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}, ref) {\n return (\n \n \n \n {children}\n {showCloseButton && (\n \n \n Close\n \n )}\n \n \n );\n});\n\nfunction SheetHeader({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SheetFooter({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}) {\n return ();\n}\n\nfunction Tooltip({\n ...props\n}) {\n return ;\n}\n\nconst TooltipTrigger = React.forwardRef(function TooltipTrigger({\n ...props\n}, ref) {\n return ;\n});\n\nconst TooltipContent = React.forwardRef(function TooltipContent({\n className,\n arrowClassName,\n sideOffset = 0,\n children,\n ...props\n}, ref) {\n return (\n \n \n {children}\n \n \n \n );\n});\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/ui/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\nconst SidebarContext = React.createContext(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n defaultMobileOpen = false,\n open: openProp,\n onOpenChange: setOpenProp,\n mobileOpen: openMobileProp,\n onMobileOpenChange: setOpenMobileProp,\n className,\n style,\n children,\n ...props\n}) {\n const isMobile = useIsMobile()\n const [_openMobile, _setOpenMobile] = React.useState(defaultMobileOpen)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const openMobile = openMobileProp ?? _openMobile\n const setOpen = React.useCallback((value) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n }, [setOpenProp, open])\n const setOpenMobile = React.useCallback((value) => {\n const openState = typeof value === \"function\" ? value(openMobile) : value\n if (setOpenMobileProp) {\n setOpenMobileProp(openState)\n } else {\n _setOpenMobile(openState)\n }\n }, [setOpenMobileProp, openMobile])\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo(() => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }), [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar])\n\n return (\n \n \n \n {children}\n
\n \n \n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n \n {children}\n
\n );\n }\n\n if (isMobile) {\n return (\n \n button]:hidden\"\n overlayClassName=\"data-[state=closed]:!animate-none data-[state=closed]:!duration-0 data-[state=open]:!animate-none data-[state=open]:!duration-0\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n }\n }\n side={side}>\n \n Sidebar\n Displays the mobile sidebar.\n \n {children}
\n \n \n );\n }\n\n return (\n \n {/* This is what handles the sidebar gap on desktop */}\n
\n
\n
\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}) {\n const { toggleSidebar } = useSidebar()\n\n return (\n \n );\n}\n\nfunction SidebarRail({\n className,\n ...props\n}) {\n const { toggleSidebar } = useSidebar()\n\n return (\n \n );\n}\n\nfunction SidebarInset({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarHeader({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarFooter({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarContent({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarGroup({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}) {\n const Comp = asChild ? Slot.Root : \"div\"\n\n return (\n svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props} />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props} />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarMenu({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarMenuItem({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n \n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n \n {button}\n \n \n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props} />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, [])\n\n return (\n \n {showIcon && (\n \n )}\n \n
\n );\n}\n\nfunction SidebarMenuSub({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}) {\n const Comp = asChild ? Slot.Root : \"a\"\n\n return (\n span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props} />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","const CAD_TOKEN_RE = /^\\s*#([^\\s]*)/;\nconst OCCURRENCE_SELECTOR_RE = /^o((?:\\d+)(?:\\.\\d+)*)$/;\nconst OCCURRENCE_ENTITY_SELECTOR_RE = /^o((?:\\d+)(?:\\.\\d+)*)\\.([sfev])(\\d+)$/;\nconst ENTITY_SELECTOR_RE = /^([sfev])(\\d+)$/;\n\nfunction selectorTypeForKind(kind) {\n if (kind === \"s\") {\n return \"shape\";\n }\n if (kind === \"f\") {\n return \"face\";\n }\n if (kind === \"e\") {\n return \"edge\";\n }\n return \"vertex\";\n}\n\nexport function normalizeCadPath(rawCadPath) {\n let normalized = String(rawCadPath || \"\").replace(/\\\\/g, \"/\").trim().replace(/^\\/+|\\/+$/g, \"\");\n if (!normalized) {\n return \"\";\n }\n if (normalized.split(\"/\").some((part) => !part || part === \".\" || part === \"..\")) {\n return \"\";\n }\n return normalized;\n}\n\nfunction parseStructuredSelector(rawSelector, { inheritedOccurrenceId = \"\" } = {}) {\n const selector = String(rawSelector || \"\").trim().replace(/^#/, \"\");\n if (!selector) {\n return null;\n }\n\n const occurrenceEntityMatch = selector.match(OCCURRENCE_ENTITY_SELECTOR_RE);\n if (occurrenceEntityMatch) {\n const occurrenceId = `o${occurrenceEntityMatch[1]}`;\n const kind = occurrenceEntityMatch[2];\n const ordinal = Number(occurrenceEntityMatch[3]);\n return {\n selectorType: selectorTypeForKind(kind),\n occurrenceId,\n ordinal,\n kind,\n canonical: `${occurrenceId}.${kind}${ordinal}`\n };\n }\n\n const occurrenceMatch = selector.match(OCCURRENCE_SELECTOR_RE);\n if (occurrenceMatch) {\n return {\n selectorType: \"occurrence\",\n occurrenceId: `o${occurrenceMatch[1]}`,\n ordinal: null,\n kind: \"\",\n canonical: `o${occurrenceMatch[1]}`\n };\n }\n\n const entityMatch = selector.match(ENTITY_SELECTOR_RE);\n if (entityMatch) {\n const kind = entityMatch[1];\n const ordinal = Number(entityMatch[2]);\n if (inheritedOccurrenceId) {\n return {\n selectorType: selectorTypeForKind(kind),\n occurrenceId: inheritedOccurrenceId,\n ordinal,\n kind,\n canonical: `${inheritedOccurrenceId}.${kind}${ordinal}`\n };\n }\n return {\n selectorType: selectorTypeForKind(kind),\n occurrenceId: \"\",\n ordinal,\n kind,\n canonical: `${kind}${ordinal}`\n };\n }\n\n return {\n selectorType: \"opaque\",\n occurrenceId: \"\",\n ordinal: null,\n kind: \"\",\n canonical: selector\n };\n}\n\nexport function parseCadRefSelector(rawSelector, options = {}) {\n return parseStructuredSelector(rawSelector, options);\n}\n\nexport function normalizeCadRefSelectors(selectors) {\n const rawSelectors = Array.isArray(selectors)\n ? selectors.flatMap((selector) => String(selector || \"\").split(\",\"))\n : String(selectors || \"\").split(\",\");\n const normalizedSelectors = [];\n let inheritedOccurrenceId = \"\";\n\n for (const rawSelector of rawSelectors) {\n const parsedSelector = parseStructuredSelector(rawSelector, { inheritedOccurrenceId });\n if (!parsedSelector) {\n continue;\n }\n normalizedSelectors.push(parsedSelector.canonical);\n if (parsedSelector.occurrenceId) {\n inheritedOccurrenceId = parsedSelector.occurrenceId;\n }\n }\n\n return normalizedSelectors;\n}\n\nexport function sortCadRefSelectors(selectors) {\n const normalizedSelectors = normalizeCadRefSelectors(selectors);\n const uniqueSelectors = [...new Set(normalizedSelectors.filter(Boolean))];\n const rank = {\n occurrence: 1,\n shape: 2,\n face: 3,\n edge: 4,\n vertex: 5,\n opaque: 6\n };\n return uniqueSelectors\n .map((selector, index) => ({ selector, index, parsed: parseStructuredSelector(selector) }))\n .sort((left, right) => {\n const leftOccurrence = left.parsed?.occurrenceId || \"\";\n const rightOccurrence = right.parsed?.occurrenceId || \"\";\n if (leftOccurrence !== rightOccurrence) {\n return leftOccurrence.localeCompare(rightOccurrence);\n }\n const leftRank = rank[left.parsed?.selectorType] ?? 99;\n const rightRank = rank[right.parsed?.selectorType] ?? 99;\n if (leftRank !== rightRank) {\n return leftRank - rightRank;\n }\n const leftOrdinal = Number(left.parsed?.ordinal || 0);\n const rightOrdinal = Number(right.parsed?.ordinal || 0);\n if (leftOrdinal !== rightOrdinal) {\n return leftOrdinal - rightOrdinal;\n }\n if (left.selector !== right.selector) {\n return left.selector.localeCompare(right.selector);\n }\n return left.index - right.index;\n })\n .map((item) => item.selector);\n}\n\nexport function parseCadRefToken(copyText) {\n const match = String(copyText || \"\").trim().match(CAD_TOKEN_RE);\n if (!match) {\n return null;\n }\n const selectorText = String(match[1] || \"\").trim();\n return {\n token: match[0],\n cadPath: \"\",\n selectors: normalizeCadRefSelectors(selectorText)\n };\n}\n\nexport function buildCadRefToken({ cadPath = \"\", selector = \"\", selectors } = {}) {\n void cadPath;\n const selectorList = selectors !== undefined ? sortCadRefSelectors(selectors) : sortCadRefSelectors(selector ? [selector] : []);\n if (!selectorList.length) {\n return \"#\";\n }\n return `#${selectorList.join(\",\")}`;\n}\n","export const STEP_MODEL_ROOT_ID = \"__step_model__\";\nexport const STEP_MODEL_RENDER_PART_ID = \"__model__\";\nexport const STEP_TREE_TOPOLOGY_NODE_PREFIX = \"step-topology:\";\n\nconst STEP_TREE_TOPOLOGY_SELECTOR_TYPES = new Set([\"occurrence\", \"shape\", \"face\", \"edge\"]);\n\nfunction normalizeString(value, fallback = \"\") {\n return String(value ?? fallback).trim();\n}\n\nfunction normalizePositiveInteger(value) {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue) || numericValue < 1) {\n return null;\n }\n return Math.floor(numericValue);\n}\n\nfunction basename(value) {\n const normalized = normalizeString(value);\n if (!normalized) {\n return \"\";\n }\n return normalized.split(/[\\\\/]/).filter(Boolean).pop() || normalized;\n}\n\nfunction componentLabelFromPartLabel(value) {\n return normalizeString(value).replace(/\\.(?:step|stp)$/i, \"\") || \"STEP part\";\n}\n\nexport function stepTreeNodeId(node) {\n return normalizeString(node?.id || node?.occurrenceId);\n}\n\nexport function stepTreeNodeLabel(node) {\n return normalizeString(\n node?.displayName ||\n node?.name ||\n node?.label ||\n node?.sourcePath && basename(node.sourcePath) ||\n node?.partSourcePath && basename(node.partSourcePath) ||\n node?.id,\n \"STEP\"\n );\n}\n\nexport function stepTreeNodeDetail(node) {\n return normalizeString(node?.detail || node?.summary || node?.shortSummary);\n}\n\nexport function stepTreeNodeChildren(node) {\n return Array.isArray(node?.children) ? node.children : [];\n}\n\nexport function stepTreeNodeTopologyType(node) {\n const nodeType = normalizeString(node?.nodeType);\n if (!nodeType.startsWith(\"topology-\")) {\n return \"\";\n }\n return nodeType.slice(\"topology-\".length);\n}\n\nexport function stepTreeNodeIsTopology(node) {\n return Boolean(stepTreeNodeTopologyType(node));\n}\n\nexport function stepTreeNodeHasChildren(node) {\n return stepTreeNodeChildren(node).length > 0;\n}\n\nexport function stepTreeNodeLeafPartIds(node) {\n const declaredLeafPartIds = Array.isArray(node?.leafPartIds)\n ? node.leafPartIds.map((id) => normalizeString(id)).filter(Boolean)\n : [];\n if (declaredLeafPartIds.length) {\n return [...new Set(declaredLeafPartIds)];\n }\n const nodeType = normalizeString(node?.nodeType);\n const nodeId = stepTreeNodeId(node);\n if (nodeType === \"part\" && nodeId) {\n return [nodeId];\n }\n const leafPartIds = [];\n const stack = [...stepTreeNodeChildren(node)].reverse();\n while (stack.length) {\n const child = stack.pop();\n const childNodeType = normalizeString(child?.nodeType);\n const children = stepTreeNodeChildren(child);\n if (children.length) {\n for (let index = children.length - 1; index >= 0; index -= 1) {\n stack.push(children[index]);\n }\n continue;\n }\n if (childNodeType === \"part\") {\n const childId = stepTreeNodeId(child);\n if (childId) {\n leafPartIds.push(childId);\n }\n }\n }\n return [...new Set(leafPartIds)];\n}\n\nexport function buildStepPartRoot({ selectedEntry = null, meshData = null } = {}) {\n const label = normalizeString(\n selectedEntry?.file && basename(selectedEntry.file) ||\n \"STEP part\"\n );\n return {\n id: STEP_MODEL_ROOT_ID,\n occurrenceId: \"\",\n nodeType: \"part\",\n displayName: label,\n name: label,\n sourceKind: \"entry\",\n leafPartIds: [STEP_MODEL_RENDER_PART_ID],\n bbox: meshData?.bounds || null,\n children: []\n };\n}\n\nexport function buildStepTreeRoot({ selectedEntry = null, assemblyRoot = null, meshData = null } = {}) {\n if (assemblyRoot && typeof assemblyRoot === \"object\") {\n return assemblyRoot;\n }\n if (!meshData) {\n return null;\n }\n return buildStepPartRoot({ selectedEntry, meshData });\n}\n\nfunction nodeMatchesQuery(node, query) {\n if (!query) {\n return true;\n }\n const normalizedQuery = normalizeString(query).toLowerCase();\n if (!normalizedQuery) {\n return true;\n }\n const haystack = [\n stepTreeNodeLabel(node),\n stepTreeNodeDetail(node),\n stepTreeNodeId(node),\n node?.occurrenceId,\n node?.topologyReferenceId,\n node?.displaySelector,\n node?.sourcePath,\n node?.partSourcePath\n ].map((value) => normalizeString(value).toLowerCase()).join(\" \");\n return haystack.includes(normalizedQuery);\n}\n\nfunction topologyReferenceSelector(reference) {\n return normalizeString(reference?.displaySelector || reference?.normalizedSelector || reference?.id);\n}\n\nfunction topologySelectorToken(selector) {\n const normalizedSelector = normalizeString(selector);\n if (!normalizedSelector) {\n return \"\";\n }\n return normalizedSelector.split(\".\").filter(Boolean).pop() || normalizedSelector;\n}\n\nfunction topologyOccurrenceIdFromSelector(selector) {\n const normalizedSelector = normalizeString(selector);\n if (!normalizedSelector) {\n return \"\";\n }\n const match = normalizedSelector.match(/^(.*)\\.[sfe]\\d+$/i);\n return match ? match[1] : normalizedSelector;\n}\n\nfunction topologyReferenceOccurrenceId(reference) {\n const selectorType = normalizeString(reference?.selectorType);\n if (selectorType === \"occurrence\") {\n return topologyReferenceSelector(reference);\n }\n return normalizeString(reference?.occurrenceId) ||\n topologyOccurrenceIdFromSelector(topologyReferenceSelector(reference));\n}\n\nfunction topologyReferenceName(reference) {\n const pickData = reference?.pickData && typeof reference.pickData === \"object\"\n ? reference.pickData\n : {};\n return normalizeString(\n reference?.name ||\n reference?.sourceName ||\n pickData.name ||\n pickData.sourceName\n );\n}\n\nfunction topologyReferenceLabel(reference) {\n const selectorType = normalizeString(reference?.selectorType);\n const selector = topologyReferenceSelector(reference);\n const selectorToken = topologySelectorToken(selector);\n const name = topologyReferenceName(reference);\n const summary = normalizeString(reference?.summary || reference?.shortSummary);\n\n if (selectorType === \"occurrence\") {\n return summary || name || selector || \"Occurrence\";\n }\n if (selectorType === \"shape\") {\n return name || (selectorToken ? `Shape ${selectorToken}` : \"Shape\");\n }\n if (selectorType === \"face\") {\n return selectorToken ? `Face ${selectorToken}` : \"Face\";\n }\n if (selectorType === \"edge\") {\n return selectorToken ? `Edge ${selectorToken}` : \"Edge\";\n }\n return summary || selector || \"Topology\";\n}\n\nfunction topologyReferenceDetail(reference) {\n const selectorType = normalizeString(reference?.selectorType);\n const selector = topologyReferenceSelector(reference);\n const label = topologyReferenceLabel(reference);\n const summary = normalizeString(reference?.summary || reference?.shortSummary);\n if (selectorType === \"occurrence\") {\n return summary && summary !== selector && summary !== label ? selector : \"\";\n }\n if (selectorType === \"shape\") {\n return summary && summary !== label ? summary : selector;\n }\n return summary;\n}\n\nfunction topologyNodeId(partId, selectorType, selector) {\n return `${STEP_TREE_TOPOLOGY_NODE_PREFIX}${partId || \"part\"}:${selectorType}:${selector || \"item\"}`;\n}\n\nfunction compareTopologyReferences(a, b) {\n const aRowIndex = Number(a?.rowIndex);\n const bRowIndex = Number(b?.rowIndex);\n if (Number.isFinite(aRowIndex) && Number.isFinite(bRowIndex) && aRowIndex !== bRowIndex) {\n return aRowIndex - bRowIndex;\n }\n if (Number.isFinite(aRowIndex)) {\n return -1;\n }\n if (Number.isFinite(bRowIndex)) {\n return 1;\n }\n return topologyReferenceSelector(a).localeCompare(topologyReferenceSelector(b));\n}\n\nfunction buildTopologyReferenceNode({ reference, selectorType, partId, occurrenceId }) {\n const selector = topologyReferenceSelector(reference);\n return {\n id: topologyNodeId(partId, selectorType, selector || normalizeString(reference?.id)),\n nodeType: `topology-${selectorType}`,\n displayName: topologyReferenceLabel(reference),\n detail: topologyReferenceDetail(reference),\n topologyReferenceId: normalizeString(reference?.id),\n displaySelector: selector,\n partId,\n occurrenceId,\n shapeId: normalizeString(reference?.shapeId),\n children: []\n };\n}\n\nfunction buildSyntheticOccurrenceNode({ partId, occurrenceId, children }) {\n const id = topologyNodeId(partId, \"occurrence\", occurrenceId);\n return {\n id,\n nodeType: \"topology-occurrence\",\n displayName: occurrenceId || \"Occurrence\",\n detail: \"\",\n topologyReferenceId: id,\n displaySelector: occurrenceId,\n partId,\n occurrenceId,\n children\n };\n}\n\nfunction buildTopologyFolderNode({ partNode, partId, children }) {\n const label = componentLabelFromPartLabel(stepTreeNodeLabel(partNode));\n return {\n id: topologyNodeId(partId, \"folder\", \"faces-edges\"),\n nodeType: \"topology-folder\",\n displayName: label,\n name: label,\n detail: \"\",\n topologyReferenceId: \"\",\n displaySelector: \"\",\n partId,\n selectionPartId: partId,\n leafPartIds: [STEP_MODEL_RENDER_PART_ID],\n visualOnly: true,\n children\n };\n}\n\nfunction topologySelectorAliases(value) {\n const normalizedValue = normalizeString(value);\n if (!normalizedValue) {\n return [];\n }\n const aliases = [normalizedValue];\n if (normalizedValue.startsWith(\"#\")) {\n aliases.push(normalizedValue.slice(1));\n }\n if (normalizedValue.startsWith(STEP_TREE_TOPOLOGY_NODE_PREFIX)) {\n const internalSelector = normalizeString(normalizedValue.split(\":\").pop());\n if (internalSelector) {\n aliases.push(internalSelector);\n }\n }\n return [...new Set(aliases.filter(Boolean))];\n}\n\nfunction topologyOccurrenceNodeIsRedundantForPart(partNode, occurrenceNode, siblingCount) {\n if (normalizeString(occurrenceNode?.nodeType) !== \"topology-occurrence\") {\n return false;\n }\n if (siblingCount === 1) {\n return true;\n }\n return topologyOccurrenceNodeDuplicatesPart(partNode, occurrenceNode);\n}\n\nfunction topologyOccurrenceNodeDuplicatesPart(partNode, occurrenceNode) {\n if (normalizeString(occurrenceNode?.nodeType) !== \"topology-occurrence\") {\n return false;\n }\n const occurrenceId = normalizeString(occurrenceNode?.occurrenceId || occurrenceNode?.displaySelector);\n if (!occurrenceId) {\n return false;\n }\n const partSelectors = [\n stepTreeNodeId(partNode),\n partNode?.occurrenceId,\n partNode?.sourceOccurrenceId,\n partNode?.sourceRootTargetOccurrenceId,\n partNode?.topologyReferenceId,\n partNode?.displaySelector,\n partNode?.displayName,\n partNode?.name,\n partNode?.label\n ].flatMap(topologySelectorAliases);\n const occurrenceSelectors = [\n occurrenceId,\n stepTreeNodeId(occurrenceNode),\n occurrenceNode?.topologyReferenceId,\n occurrenceNode?.displaySelector,\n occurrenceNode?.displayName,\n occurrenceNode?.name,\n occurrenceNode?.label\n ].flatMap(topologySelectorAliases);\n return occurrenceSelectors.some((selector) => partSelectors.includes(selector));\n}\n\nfunction flattenRedundantTopologyOccurrenceNodes(partNode, topologyChildren) {\n const children = Array.isArray(topologyChildren) ? topologyChildren : [];\n return children.flatMap((child) => (\n topologyOccurrenceNodeIsRedundantForPart(partNode, child, children.length)\n ? stepTreeNodeChildren(child)\n : [child]\n ));\n}\n\nfunction maybeWrapSinglePartTopologyFolder(partNode, topologyChildren) {\n const children = Array.isArray(topologyChildren) ? topologyChildren : [];\n if (\n !children.length ||\n normalizeString(partNode?.nodeType) !== \"part\" ||\n stepTreeNodeId(partNode) !== STEP_MODEL_ROOT_ID\n ) {\n return children;\n }\n return [buildTopologyFolderNode({\n partNode,\n partId: STEP_MODEL_ROOT_ID,\n children\n })];\n}\n\nfunction topologyReferencePartId(reference, fallbackPartId) {\n return normalizeString(reference?.partId) || normalizeString(fallbackPartId);\n}\n\nfunction addStepTreeTopologyPartTarget(targets, seenTargets, partId, occurrenceId, priority = 0) {\n const normalizedPartId = normalizeString(partId);\n const normalizedOccurrenceId = normalizeString(occurrenceId);\n if (!normalizedPartId || !normalizedOccurrenceId) {\n return;\n }\n const key = `${normalizedPartId}\\0${normalizedOccurrenceId}`;\n if (seenTargets.has(key)) {\n return;\n }\n seenTargets.add(key);\n targets.push({\n partId: normalizedPartId,\n occurrenceId: normalizedOccurrenceId,\n priority: Number.isFinite(Number(priority)) ? Number(priority) : 0\n });\n}\n\nfunction collectStepTreeTopologyPartTargets(root) {\n const targets = [];\n const seenTargets = new Set();\n const stack = root ? [root] : [];\n\n while (stack.length) {\n const node = stack.pop();\n const children = stepTreeNodeChildren(node);\n for (let index = children.length - 1; index >= 0; index -= 1) {\n stack.push(children[index]);\n }\n\n if (normalizeString(node?.nodeType) !== \"part\") {\n continue;\n }\n\n const partId = stepTreeNodeId(node);\n if (!partId) {\n continue;\n }\n\n addStepTreeTopologyPartTarget(targets, seenTargets, partId, partId, 0);\n addStepTreeTopologyPartTarget(targets, seenTargets, partId, node?.occurrenceId, 0);\n for (const leafPartId of stepTreeNodeLeafPartIds(node)) {\n addStepTreeTopologyPartTarget(targets, seenTargets, partId, leafPartId, 1);\n }\n addStepTreeTopologyPartTarget(targets, seenTargets, partId, node?.sourceOccurrenceId, 2);\n addStepTreeTopologyPartTarget(targets, seenTargets, partId, node?.sourceRootTargetOccurrenceId, 2);\n }\n\n return targets.sort((a, b) => (\n b.occurrenceId.length - a.occurrenceId.length ||\n a.priority - b.priority\n ));\n}\n\nfunction occurrenceMatchesStepTreePartTarget(occurrenceId, targetOccurrenceId) {\n const normalizedOccurrenceId = normalizeString(occurrenceId);\n const normalizedTargetOccurrenceId = normalizeString(targetOccurrenceId);\n return Boolean(\n normalizedOccurrenceId &&\n normalizedTargetOccurrenceId &&\n (\n normalizedOccurrenceId === normalizedTargetOccurrenceId ||\n normalizedOccurrenceId.startsWith(`${normalizedTargetOccurrenceId}.`)\n )\n );\n}\n\nexport function assignStepTreeTopologyReferencePartIds(root = null, references = []) {\n const normalizedReferences = Array.isArray(references) ? references : [];\n const targets = collectStepTreeTopologyPartTargets(root);\n if (!normalizedReferences.length || !targets.length) {\n return normalizedReferences;\n }\n\n let changed = false;\n const assignedReferences = normalizedReferences.map((reference) => {\n if (!reference || typeof reference !== \"object\" || normalizeString(reference.partId)) {\n return reference;\n }\n const occurrenceId = topologyReferenceOccurrenceId(reference);\n const target = targets.find((candidate) => (\n occurrenceMatchesStepTreePartTarget(occurrenceId, candidate.occurrenceId)\n ));\n if (!target) {\n return reference;\n }\n changed = true;\n return {\n ...reference,\n partId: target.partId\n };\n });\n\n return changed ? assignedReferences : normalizedReferences;\n}\n\nfunction buildTopologyChildrenByPart(references, fallbackPartId) {\n const byPart = new Map();\n for (const reference of Array.isArray(references) ? references : []) {\n const selectorType = normalizeString(reference?.selectorType);\n if (!STEP_TREE_TOPOLOGY_SELECTOR_TYPES.has(selectorType)) {\n continue;\n }\n const partId = topologyReferencePartId(reference, fallbackPartId);\n const occurrenceId = topologyReferenceOccurrenceId(reference);\n if (!partId || !occurrenceId) {\n continue;\n }\n let partGroup = byPart.get(partId);\n if (!partGroup) {\n partGroup = new Map();\n byPart.set(partId, partGroup);\n }\n let occurrenceGroup = partGroup.get(occurrenceId);\n if (!occurrenceGroup) {\n occurrenceGroup = {\n occurrence: null,\n shapes: [],\n faces: [],\n edges: []\n };\n partGroup.set(occurrenceId, occurrenceGroup);\n }\n if (selectorType === \"occurrence\") {\n occurrenceGroup.occurrence = reference;\n } else if (selectorType === \"shape\") {\n occurrenceGroup.shapes.push(reference);\n } else if (selectorType === \"face\") {\n occurrenceGroup.faces.push(reference);\n } else if (selectorType === \"edge\") {\n occurrenceGroup.edges.push(reference);\n }\n }\n\n return new Map([...byPart.entries()].map(([partId, occurrenceGroups]) => {\n const occurrenceNodes = [...occurrenceGroups.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([occurrenceId, group]) => {\n const children = [\n ...group.shapes.sort(compareTopologyReferences).map((reference) => buildTopologyReferenceNode({\n reference,\n selectorType: \"shape\",\n partId,\n occurrenceId\n })),\n ...group.faces.sort(compareTopologyReferences).map((reference) => buildTopologyReferenceNode({\n reference,\n selectorType: \"face\",\n partId,\n occurrenceId\n })),\n ...group.edges.sort(compareTopologyReferences).map((reference) => buildTopologyReferenceNode({\n reference,\n selectorType: \"edge\",\n partId,\n occurrenceId\n }))\n ];\n if (group.occurrence) {\n return {\n ...buildTopologyReferenceNode({\n reference: group.occurrence,\n selectorType: \"occurrence\",\n partId,\n occurrenceId\n }),\n children\n };\n }\n return buildSyntheticOccurrenceNode({ partId, occurrenceId, children });\n });\n return [partId, occurrenceNodes];\n }));\n}\n\nexport function buildStepTreeRootWithTopology({\n root = null,\n references = [],\n fallbackPartId = \"\",\n topologyPartIds = null\n} = {}) {\n if (!root || typeof root !== \"object\") {\n return root;\n }\n const topologyPartIdSet = topologyPartIds == null\n ? null\n : new Set(\n (Array.isArray(topologyPartIds) ? topologyPartIds : [topologyPartIds])\n .map((id) => normalizeString(id))\n .filter(Boolean)\n );\n const topologyChildrenByPart = buildTopologyChildrenByPart(references, fallbackPartId || stepTreeNodeId(root));\n if (!topologyChildrenByPart.size) {\n return root;\n }\n\n function cloneWithTopology(node) {\n const id = stepTreeNodeId(node);\n const children = stepTreeNodeChildren(node).map((child) => cloneWithTopology(child));\n const topologyLoaded = !topologyPartIdSet || topologyPartIdSet.has(id);\n const topologyChildren = topologyLoaded && normalizeString(node?.nodeType) === \"part\"\n ? maybeWrapSinglePartTopologyFolder(\n node,\n flattenRedundantTopologyOccurrenceNodes(node, topologyChildrenByPart.get(id) || [])\n )\n : [];\n if (!children.length && !topologyChildren.length) {\n return node;\n }\n return {\n ...node,\n children: [...children, ...topologyChildren]\n };\n }\n\n return cloneWithTopology(root);\n}\n\nfunction subtreeMatchesQuery(node, query) {\n if (!query || nodeMatchesQuery(node, query)) {\n return true;\n }\n return stepTreeNodeChildren(node).some((child) => subtreeMatchesQuery(child, query));\n}\n\nfunction subtreeContainsNodeId(node, nodeId) {\n const normalizedNodeId = normalizeString(nodeId);\n if (!node || !normalizedNodeId) {\n return false;\n }\n if (stepTreeNodeId(node) === normalizedNodeId) {\n return true;\n }\n return stepTreeNodeChildren(node).some((child) => subtreeContainsNodeId(child, normalizedNodeId));\n}\n\nexport function stepTreeRootChildIndexForNode(root, nodeId) {\n const normalizedNodeId = normalizeString(nodeId);\n if (!root || !normalizedNodeId) {\n return -1;\n }\n const children = stepTreeNodeChildren(root);\n for (let index = 0; index < children.length; index += 1) {\n if (subtreeContainsNodeId(children[index], normalizedNodeId)) {\n return index;\n }\n }\n return -1;\n}\n\nexport function flattenVisibleStepTreeRows(root, expandedNodeIds = [], {\n query = \"\",\n omitRoot = false,\n rootChildLimit = null,\n showAllRootChildren = true\n} = {}) {\n if (!root) {\n return [];\n }\n const expanded = new Set(\n (Array.isArray(expandedNodeIds) ? expandedNodeIds : [])\n .map((id) => normalizeString(id))\n .filter(Boolean)\n );\n const normalizedQuery = normalizeString(query).toLowerCase();\n const normalizedRootChildLimit = normalizePositiveInteger(rootChildLimit);\n const limitRootChildren = Boolean(\n normalizedRootChildLimit &&\n showAllRootChildren !== true &&\n !normalizedQuery\n );\n const rows = [];\n\n function rootChildrenForVisit(children) {\n return limitRootChildren\n ? children.slice(0, normalizedRootChildLimit)\n : children;\n }\n\n function visit(node, depth, options = {}, parentNode = null) {\n if (normalizedQuery && !subtreeMatchesQuery(node, normalizedQuery)) {\n return;\n }\n const id = stepTreeNodeId(node);\n const children = stepTreeNodeChildren(node);\n const hasChildren = children.length > 0;\n const expandedByQuery = Boolean(normalizedQuery && hasChildren);\n const isExpanded = expandedByQuery || expanded.has(id);\n const elideRedundantTopologyOccurrence = parentNode &&\n topologyOccurrenceNodeDuplicatesPart(parentNode, node);\n if (!elideRedundantTopologyOccurrence) {\n rows.push({\n id,\n node,\n label: stepTreeNodeLabel(node),\n detail: stepTreeNodeDetail(node),\n nodeType: normalizeString(node?.nodeType),\n topologyType: stepTreeNodeTopologyType(node),\n topologyReferenceId: normalizeString(node?.topologyReferenceId),\n depth,\n hasChildren,\n expanded: isExpanded,\n leafPartIds: stepTreeNodeLeafPartIds(node)\n });\n }\n if (!hasChildren || (!isExpanded && !elideRedundantTopologyOccurrence)) {\n return;\n }\n const childRows = options.isRoot ? rootChildrenForVisit(children) : children;\n for (const child of childRows) {\n visit(child, elideRedundantTopologyOccurrence ? depth : depth + 1, {}, node);\n }\n }\n\n if (omitRoot) {\n for (const child of rootChildrenForVisit(stepTreeNodeChildren(root))) {\n visit(child, 0, {}, root);\n }\n } else {\n visit(root, 0, { isRoot: true });\n }\n return rows;\n}\n\nexport function collectStepTreeAncestorIds(root, nodeId) {\n const normalizedNodeId = normalizeString(nodeId);\n if (!root || !normalizedNodeId) {\n return [];\n }\n const path = [];\n function visit(node) {\n const id = stepTreeNodeId(node);\n path.push(id);\n if (id === normalizedNodeId) {\n return true;\n }\n for (const child of stepTreeNodeChildren(node)) {\n if (visit(child)) {\n return true;\n }\n }\n path.pop();\n return false;\n }\n return visit(root) ? path.slice(0, -1).filter(Boolean) : [];\n}\n","function getDocumentSelection(doc) {\n if (!doc || typeof doc.getSelection !== \"function\") {\n return null;\n }\n try {\n return doc.getSelection();\n } catch {\n return null;\n }\n}\n\nfunction preserveSelection(selection) {\n if (!selection || typeof selection.rangeCount !== \"number\" || typeof selection.getRangeAt !== \"function\") {\n return [];\n }\n\n const ranges = [];\n for (let index = 0; index < selection.rangeCount; index += 1) {\n try {\n ranges.push(selection.getRangeAt(index));\n } catch {\n return ranges;\n }\n }\n return ranges;\n}\n\nfunction restoreSelection(selection, ranges) {\n if (!selection || typeof selection.removeAllRanges !== \"function\" || typeof selection.addRange !== \"function\") {\n return;\n }\n try {\n selection.removeAllRanges();\n for (const range of ranges) {\n selection.addRange(range);\n }\n } catch {\n // Selection restoration is a courtesy; copying already happened.\n }\n}\n\nfunction focusElement(element) {\n if (!element || typeof element.focus !== \"function\") {\n return;\n }\n try {\n element.focus({ preventScroll: true });\n } catch {\n try {\n element.focus();\n } catch {\n // Ignore focus restoration failures.\n }\n }\n}\n\nfunction execCommandCopyText(text) {\n const doc = globalThis.document;\n if (!doc?.body || typeof doc.createElement !== \"function\" || typeof doc.execCommand !== \"function\") {\n return false;\n }\n\n const activeElement = doc.activeElement;\n const selection = getDocumentSelection(doc);\n const preservedRanges = preserveSelection(selection);\n const textarea = doc.createElement(\"textarea\");\n textarea.value = text;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.setAttribute(\"aria-hidden\", \"true\");\n textarea.style.position = \"fixed\";\n textarea.style.top = \"0\";\n textarea.style.left = \"-9999px\";\n textarea.style.width = \"1px\";\n textarea.style.height = \"1px\";\n textarea.style.opacity = \"0\";\n\n doc.body.appendChild(textarea);\n focusElement(textarea);\n textarea.select();\n\n let copied = false;\n try {\n copied = doc.execCommand(\"copy\");\n } finally {\n doc.body.removeChild(textarea);\n restoreSelection(selection, preservedRanges);\n if (activeElement && activeElement !== textarea) {\n focusElement(activeElement);\n }\n }\n\n return copied;\n}\n\nfunction normalizeClipboardImageBlob(blob, fallbackType) {\n if (!blob || typeof blob !== \"object\") {\n throw new Error(\"Failed to encode screenshot\");\n }\n\n const type = String(blob.type || fallbackType || \"\").trim();\n if (!type) {\n return blob;\n }\n if (blob.type === type) {\n return blob;\n }\n return blob.slice(0, blob.size, type);\n}\n\nfunction isClipboardPermissionError(error) {\n const name = String(error?.name || \"\").toLowerCase();\n const message = String(error?.message || error || \"\").toLowerCase();\n return (\n name.includes(\"notallowed\") ||\n name.includes(\"security\") ||\n message.includes(\"permission\") ||\n message.includes(\"denied\") ||\n message.includes(\"not allowed\")\n );\n}\n\nfunction blockedClipboardError(error) {\n if (isClipboardPermissionError(error)) {\n return new Error(\"Clipboard image copy is blocked in this browser.\");\n }\n return error instanceof Error ? error : new Error(\"Clipboard image copy failed\");\n}\n\nfunction blockedClipboardTextReadError(error) {\n if (isClipboardPermissionError(error)) {\n return new Error(\"Clipboard paste is blocked in this browser\");\n }\n return error instanceof Error ? error : new Error(\"Clipboard paste failed\");\n}\n\nexport async function copyImageBlobToClipboard(blobOrPromise, { type = \"image/png\" } = {}) {\n const clipboard = globalThis.navigator?.clipboard;\n const ClipboardItemCtor = globalThis.ClipboardItem;\n const normalizedType = String(type || \"image/png\").trim() || \"image/png\";\n const blobPromise = Promise.resolve(blobOrPromise).then((blob) => normalizeClipboardImageBlob(blob, normalizedType));\n\n if (!clipboard?.write || typeof ClipboardItemCtor !== \"function\") {\n throw new Error(\"Clipboard image copy is not supported in this browser\");\n }\n\n let item;\n try {\n item = new ClipboardItemCtor({ [normalizedType]: blobPromise });\n } catch {\n const blob = await blobPromise;\n const blobType = String(blob.type || normalizedType).trim() || normalizedType;\n item = new ClipboardItemCtor({ [blobType]: blob });\n }\n\n try {\n await clipboard.write([item]);\n } catch (error) {\n blobPromise.catch(() => {});\n throw blockedClipboardError(error);\n }\n return await blobPromise;\n}\n\nexport async function copyTextToClipboard(text) {\n const clipboardText = String(text ?? \"\");\n const clipboard = globalThis.navigator?.clipboard;\n let clipboardError = null;\n\n if (typeof clipboard?.writeText === \"function\") {\n try {\n await clipboard.writeText(clipboardText);\n return;\n } catch (error) {\n clipboardError = error;\n }\n }\n\n if (execCommandCopyText(clipboardText)) {\n return;\n }\n\n if (clipboardError instanceof Error) {\n throw clipboardError;\n }\n throw new Error(\"Clipboard is unavailable\");\n}\n\nexport async function readTextFromClipboard() {\n const clipboard = globalThis.navigator?.clipboard;\n if (typeof clipboard?.readText !== \"function\") {\n throw new Error(\"Clipboard paste is unavailable\");\n }\n try {\n return await clipboard.readText();\n } catch (error) {\n throw blockedClipboardTextReadError(error);\n }\n}\n","const DOWNLOAD_BLOCKED_MESSAGE = \"Download was blocked by the browser\";\n\nfunction normalizeFilename(value) {\n return String(value || \"\").trim();\n}\n\nfunction downloadRequestedMessage(filename) {\n const normalizedFilename = normalizeFilename(filename);\n return normalizedFilename ? `Downloading ${normalizedFilename}` : \"Downloading file\";\n}\n\nfunction getDownloadDocument() {\n const doc = globalThis.document;\n if (!doc || typeof doc.createElement !== \"function\") {\n throw new Error(\"Downloads are not available in this browser\");\n }\n return doc;\n}\n\nfunction clickDownloadLink(link) {\n if (typeof link.click !== \"function\") {\n throw new Error(\"Downloads are not available in this browser\");\n }\n\n try {\n link.click();\n } catch (error) {\n throw error instanceof Error ? error : new Error(DOWNLOAD_BLOCKED_MESSAGE);\n }\n}\n\nexport function triggerUrlDownload(url, { filename = \"\" } = {}) {\n const href = String(url || \"\").trim();\n if (!href) {\n throw new Error(\"No download URL is available\");\n }\n\n const doc = getDownloadDocument();\n const link = doc.createElement(\"a\");\n link.href = href;\n link.rel = \"noopener\";\n const normalizedFilename = normalizeFilename(filename);\n if (normalizedFilename) {\n link.download = normalizedFilename;\n }\n if (link.style) {\n link.style.display = \"none\";\n }\n\n doc.body?.appendChild?.(link);\n try {\n clickDownloadLink(link);\n } finally {\n doc.body?.removeChild?.(link);\n }\n\n return {\n filename: normalizedFilename,\n message: downloadRequestedMessage(normalizedFilename),\n status: \"requested\"\n };\n}\n\nexport function triggerBlobDownload(blob, { filename = \"\" } = {}) {\n if (!blob || typeof blob !== \"object\") {\n throw new Error(\"No download data is available\");\n }\n const urlApi = globalThis.URL;\n if (typeof urlApi?.createObjectURL !== \"function\") {\n throw new Error(\"Downloads are not available in this browser\");\n }\n\n const downloadUrl = urlApi.createObjectURL(blob);\n try {\n return triggerUrlDownload(downloadUrl, { filename });\n } finally {\n const revoke = () => {\n urlApi.revokeObjectURL?.(downloadUrl);\n };\n if (typeof globalThis.setTimeout === \"function\") {\n globalThis.setTimeout(revoke, 1000);\n } else {\n revoke();\n }\n }\n}\n","import * as THREE from \"three\";\n\nexport const WORLD_UP = Object.freeze([0, 0, 1]);\nexport const TOP_VIEW_UP = Object.freeze([0, 1, 0]);\n\nexport const RENDER_CAMERA_PRESETS = Object.freeze({\n front: Object.freeze({ name: \"front\", direction: Object.freeze([0, -1, 0]), up: WORLD_UP }),\n back: Object.freeze({ name: \"back\", direction: Object.freeze([0, 1, 0]), up: WORLD_UP }),\n right: Object.freeze({ name: \"right\", direction: Object.freeze([1, 0, 0]), up: WORLD_UP }),\n left: Object.freeze({ name: \"left\", direction: Object.freeze([-1, 0, 0]), up: WORLD_UP }),\n top: Object.freeze({ name: \"top\", direction: Object.freeze([0, 0, 1]), up: TOP_VIEW_UP }),\n bottom: Object.freeze({ name: \"bottom\", direction: Object.freeze([0, 0, -1]), up: TOP_VIEW_UP }),\n iso: Object.freeze({ name: \"iso\", direction: Object.freeze([1, -1, 0.8]), up: WORLD_UP }),\n isometric: Object.freeze({ name: \"iso\", direction: Object.freeze([1, -1, 0.8]), up: WORLD_UP }),\n side: Object.freeze({ name: \"side\", direction: Object.freeze([1, 0, 0]), up: WORLD_UP })\n});\n\nexport const RENDER_VIEW_PRESETS = RENDER_CAMERA_PRESETS;\n\nconst DEFAULT_CAMERA_PRESET = \"iso\";\nconst CAMERA_SPEC_KEYS = Object.freeze([\"preset\", \"position\", \"target\", \"up\", \"zoom\", \"direction\", \"name\"]);\n\nfunction isPlainObject(value) {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction toFiniteNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction normalizeVector(value, {\n fieldName = \"camera vector\",\n required = false,\n nonZero = false,\n strict = true\n} = {}) {\n if (value === undefined || value === null) {\n if (required && strict) {\n throw new Error(`${fieldName} must be a three-number array`);\n }\n return null;\n }\n if (!Array.isArray(value) || value.length < 3) {\n if (strict) {\n throw new Error(`${fieldName} must be a three-number array`);\n }\n return null;\n }\n const vector = [\n Number(value[0]),\n Number(value[1]),\n Number(value[2])\n ];\n if (!vector.every(Number.isFinite)) {\n if (strict) {\n throw new Error(`${fieldName} must contain only finite numbers`);\n }\n return null;\n }\n if (nonZero && vector[0] ** 2 + vector[1] ** 2 + vector[2] ** 2 <= 1e-12) {\n if (strict) {\n throw new Error(`${fieldName} must not be the zero vector`);\n }\n return null;\n }\n return vector;\n}\n\nexport function cloneCameraVector(vector) {\n return normalizeVector(vector, { strict: false });\n}\n\nexport function normalizeCameraZoom(value, fallback = 1, {\n fieldName = \"camera.zoom\",\n strict = false\n} = {}) {\n if (value === undefined || value === null || value === \"\") {\n return fallback;\n }\n const numericValue = Number(value);\n if (Number.isFinite(numericValue) && numericValue > 0) {\n return numericValue;\n }\n if (strict) {\n throw new Error(`${fieldName} must be a positive finite number`);\n }\n return fallback;\n}\n\nfunction clonePreset(preset) {\n return {\n name: preset.name,\n direction: [...preset.direction],\n up: [...preset.up]\n };\n}\n\nfunction cameraPresetByName(name, {\n presets = RENDER_CAMERA_PRESETS,\n strict = true\n} = {}) {\n const raw = String(name || DEFAULT_CAMERA_PRESET).trim().toLowerCase();\n if (presets[raw]) {\n return clonePreset(presets[raw]);\n }\n const parts = raw.split(\":\").map((entry) => Number(entry));\n if (parts.length >= 2 && parts.every(Number.isFinite)) {\n const azimuth = (parts[0] * Math.PI) / 180;\n const elevation = (parts[1] * Math.PI) / 180;\n const cosElevation = Math.cos(elevation);\n return {\n name: `${parts[0]}:${parts[1]}`,\n direction: [\n Math.sin(azimuth) * cosElevation,\n -Math.cos(azimuth) * cosElevation,\n Math.sin(elevation)\n ],\n up: [...WORLD_UP]\n };\n }\n if (strict) {\n throw new Error(`Unknown camera preset: ${name}`);\n }\n return clonePreset(presets[DEFAULT_CAMERA_PRESET]);\n}\n\nfunction parseCameraJsonString(raw, { strict = true } = {}) {\n const text = String(raw || \"\").trim();\n if (!text.startsWith(\"{\")) {\n return null;\n }\n try {\n const parsed = JSON.parse(text);\n if (!isPlainObject(parsed)) {\n throw new Error(\"camera JSON must be an object\");\n }\n return parsed;\n } catch (error) {\n if (strict) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid camera JSON: ${message}`);\n }\n return null;\n }\n}\n\nfunction validateCameraSpecKeys(spec) {\n const unknownKeys = Object.keys(spec).filter((key) => !CAMERA_SPEC_KEYS.includes(key));\n if (unknownKeys.length) {\n throw new Error(`Unsupported camera fields: ${unknownKeys.join(\", \")}`);\n }\n}\n\nexport function normalizeCameraSpec(rawCamera = DEFAULT_CAMERA_PRESET, {\n presets = RENDER_CAMERA_PRESETS,\n strict = true\n} = {}) {\n const parsedJson = typeof rawCamera === \"string\"\n ? parseCameraJsonString(rawCamera, { strict })\n : null;\n const source = parsedJson || rawCamera;\n if (!isPlainObject(source)) {\n const preset = cameraPresetByName(source || DEFAULT_CAMERA_PRESET, { presets, strict });\n return {\n sourceKind: \"string\",\n name: preset.name,\n preset: preset.name,\n direction: preset.direction,\n position: null,\n target: null,\n up: preset.up,\n zoom: 1,\n hasExplicitPosition: false,\n hasExplicitTarget: false,\n hasExplicitUp: false,\n hasExplicitZoom: false\n };\n }\n\n validateCameraSpecKeys(source);\n const rawPreset = source.preset ?? DEFAULT_CAMERA_PRESET;\n const preset = cameraPresetByName(rawPreset, { presets, strict });\n const direction = normalizeVector(source.direction, {\n fieldName: \"camera.direction\",\n nonZero: true,\n strict\n }) || preset.direction;\n const position = normalizeVector(source.position, {\n fieldName: \"camera.position\",\n strict\n });\n const target = normalizeVector(source.target, {\n fieldName: \"camera.target\",\n strict\n });\n const up = normalizeVector(source.up, {\n fieldName: \"camera.up\",\n nonZero: true,\n strict\n }) || preset.up || [...WORLD_UP];\n const hasExplicitZoom = Object.prototype.hasOwnProperty.call(source, \"zoom\");\n return {\n sourceKind: \"object\",\n name: String(source.name || preset.name || \"custom\"),\n preset: preset.name,\n direction,\n position,\n target,\n up,\n zoom: normalizeCameraZoom(source.zoom, 1, { strict, fieldName: \"camera.zoom\" }),\n hasExplicitPosition: Object.prototype.hasOwnProperty.call(source, \"position\"),\n hasExplicitTarget: Object.prototype.hasOwnProperty.call(source, \"target\"),\n hasExplicitUp: Object.prototype.hasOwnProperty.call(source, \"up\"),\n hasExplicitZoom\n };\n}\n\nfunction settingsForCamera(sceneScale, settingsByScale) {\n if (settingsByScale?.[sceneScale]) {\n return settingsByScale[sceneScale];\n }\n if (settingsByScale?.cad) {\n return settingsByScale.cad;\n }\n return {\n minBoundsSpan: 1,\n minModelRadius: 1,\n minCameraDistance: 10,\n minCameraFar: 1000\n };\n}\n\nfunction centerAndRadiusFromBounds(bounds, sceneScale, settingsByScale) {\n const settings = settingsForCamera(sceneScale, settingsByScale);\n const min = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const max = Array.isArray(bounds?.max) ? bounds.max : [1, 1, 1];\n const center = new THREE.Vector3(\n (toFiniteNumber(min[0]) + toFiniteNumber(max[0], 1)) / 2,\n (toFiniteNumber(min[1]) + toFiniteNumber(max[1], 1)) / 2,\n (toFiniteNumber(min[2]) + toFiniteNumber(max[2], 1)) / 2\n );\n const size = new THREE.Vector3(\n Math.max(toFiniteNumber(max[0], 1) - toFiniteNumber(min[0]), settings.minBoundsSpan),\n Math.max(toFiniteNumber(max[1], 1) - toFiniteNumber(min[1]), settings.minBoundsSpan),\n Math.max(toFiniteNumber(max[2], 1) - toFiniteNumber(min[2]), settings.minBoundsSpan)\n );\n return {\n center,\n radius: Math.max(size.length() / 2, settings.minModelRadius),\n size\n };\n}\n\nfunction vectorFromArray(vector) {\n return new THREE.Vector3(vector[0], vector[1], vector[2]);\n}\n\nexport function resolveCameraView(rawCamera = DEFAULT_CAMERA_PRESET, options = {}) {\n const spec = normalizeCameraSpec(rawCamera, options);\n const target = spec.target ? vectorFromArray(spec.target) : null;\n const position = spec.position ? vectorFromArray(spec.position) : null;\n const direction = position && target\n ? position.clone().sub(target).normalize().toArray()\n : normalizeVector(spec.direction, {\n fieldName: \"camera.direction\",\n nonZero: true,\n strict: false\n }) || [...RENDER_CAMERA_PRESETS[DEFAULT_CAMERA_PRESET].direction];\n return {\n name: spec.name,\n direction,\n up: [...(spec.up || WORLD_UP)],\n zoom: spec.zoom\n };\n}\n\nexport function resolveCameraSnapshot(rawCamera = DEFAULT_CAMERA_PRESET, bounds = null, {\n sceneScale = \"cad\",\n settingsByScale = null,\n presets = RENDER_CAMERA_PRESETS,\n strict = true\n} = {}) {\n const spec = normalizeCameraSpec(rawCamera, { presets, strict });\n const settings = settingsForCamera(sceneScale, settingsByScale);\n const { center, radius, size } = centerAndRadiusFromBounds(bounds, sceneScale, settingsByScale);\n const target = spec.target ? vectorFromArray(spec.target) : center.clone();\n const direction = normalizeVector(spec.direction, {\n fieldName: \"camera.direction\",\n nonZero: true,\n strict\n }) || [...RENDER_CAMERA_PRESETS[DEFAULT_CAMERA_PRESET].direction];\n const position = spec.position\n ? vectorFromArray(spec.position)\n : target.clone().add(vectorFromArray(direction).normalize().multiplyScalar(\n Math.max(radius * 3.2, settings.minCameraDistance || settings.minModelRadius * 10 || 10)\n ));\n const resolvedDirection = position.clone().sub(target);\n if (resolvedDirection.lengthSq() <= 1e-12) {\n throw new Error(\"camera.position must differ from camera.target\");\n }\n const up = vectorFromArray(spec.up || WORLD_UP);\n if (up.lengthSq() <= 1e-12) {\n throw new Error(\"camera.up must not be the zero vector\");\n }\n return {\n name: spec.name,\n preset: spec.preset,\n position: position.toArray(),\n target: target.toArray(),\n up: up.normalize().toArray(),\n zoom: spec.zoom,\n direction: resolvedDirection.normalize().toArray(),\n view: {\n name: spec.name,\n direction: resolvedDirection.normalize().toArray(),\n up: up.normalize().toArray(),\n zoom: spec.zoom\n },\n sourceKind: spec.sourceKind,\n hasExplicitPosition: spec.hasExplicitPosition,\n hasExplicitTarget: spec.hasExplicitTarget,\n hasExplicitUp: spec.hasExplicitUp,\n hasExplicitZoom: spec.hasExplicitZoom,\n radius,\n size: size.toArray()\n };\n}\n\nexport function cameraSpecUsesPerspectiveProjection(rawCamera = DEFAULT_CAMERA_PRESET, options = {}) {\n const spec = normalizeCameraSpec(rawCamera, options);\n return spec.sourceKind === \"object\" && (\n spec.hasExplicitPosition ||\n spec.hasExplicitTarget ||\n spec.hasExplicitUp\n );\n}\n","import {\n cloneCameraVector,\n normalizeCameraZoom\n} from \"../common/camera.js\";\n\nfunction normalizePerspectiveMetadataValue(value) {\n return String(value || \"\").trim();\n}\n\nexport const CAMERA_PROJECTION = Object.freeze({\n PERSPECTIVE: \"perspective\",\n ORTHOGRAPHIC: \"orthographic\"\n});\n\nexport function normalizeCameraProjection(value, fallback = CAMERA_PROJECTION.PERSPECTIVE) {\n const normalizedValue = String(value || \"\").trim().toLowerCase();\n if (normalizedValue === CAMERA_PROJECTION.ORTHOGRAPHIC) {\n return CAMERA_PROJECTION.ORTHOGRAPHIC;\n }\n if (normalizedValue === CAMERA_PROJECTION.PERSPECTIVE) {\n return CAMERA_PROJECTION.PERSPECTIVE;\n }\n return fallback === CAMERA_PROJECTION.ORTHOGRAPHIC\n ? CAMERA_PROJECTION.ORTHOGRAPHIC\n : CAMERA_PROJECTION.PERSPECTIVE;\n}\n\nexport function clonePerspectiveVector(vector) {\n return cloneCameraVector(vector);\n}\n\nexport function clonePerspectiveSnapshot(snapshot) {\n if (!snapshot || typeof snapshot !== \"object\") {\n return null;\n }\n const position = clonePerspectiveVector(snapshot.position);\n const target = clonePerspectiveVector(snapshot.target);\n const up = clonePerspectiveVector(snapshot.up);\n if (!position || !target || !up) {\n return null;\n }\n const clonedSnapshot = {\n position,\n target,\n up\n };\n if (Object.prototype.hasOwnProperty.call(snapshot, \"zoom\")) {\n clonedSnapshot.zoom = normalizeCameraZoom(snapshot.zoom, 1);\n }\n if (Object.prototype.hasOwnProperty.call(snapshot, \"projection\")) {\n clonedSnapshot.projection = normalizeCameraProjection(snapshot.projection);\n }\n const modelKey = normalizePerspectiveMetadataValue(snapshot.modelKey);\n const sceneScaleMode = normalizePerspectiveMetadataValue(snapshot.sceneScaleMode);\n const coordinateSystem = normalizePerspectiveMetadataValue(snapshot.coordinateSystem);\n if (modelKey) {\n clonedSnapshot.modelKey = modelKey;\n }\n if (sceneScaleMode) {\n clonedSnapshot.sceneScaleMode = sceneScaleMode;\n }\n if (coordinateSystem) {\n clonedSnapshot.coordinateSystem = coordinateSystem;\n }\n return clonedSnapshot;\n}\n\nexport function annotatePerspectiveSnapshot(snapshot, { modelKey = \"\", sceneScaleMode = \"\", coordinateSystem = \"\" } = {}) {\n const annotatedSnapshot = clonePerspectiveSnapshot(snapshot);\n if (!annotatedSnapshot) {\n return null;\n }\n const normalizedModelKey = normalizePerspectiveMetadataValue(modelKey);\n const normalizedSceneScaleMode = normalizePerspectiveMetadataValue(sceneScaleMode);\n const normalizedCoordinateSystem = normalizePerspectiveMetadataValue(coordinateSystem);\n if (normalizedModelKey) {\n annotatedSnapshot.modelKey = normalizedModelKey;\n }\n if (normalizedSceneScaleMode) {\n annotatedSnapshot.sceneScaleMode = normalizedSceneScaleMode;\n }\n if (normalizedCoordinateSystem) {\n annotatedSnapshot.coordinateSystem = normalizedCoordinateSystem;\n }\n return annotatedSnapshot;\n}\n\nexport function resolvePerspectiveSnapshot(primary, fallback) {\n if (typeof primary !== \"undefined\") {\n return clonePerspectiveSnapshot(primary);\n }\n return clonePerspectiveSnapshot(fallback);\n}\n\nfunction perspectiveVectorEqual(a, b, epsilon = 1e-4) {\n if (a === b) {\n return true;\n }\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let index = 0; index < a.length; index += 1) {\n if (Math.abs((Number(a[index]) || 0) - (Number(b[index]) || 0)) > epsilon) {\n return false;\n }\n }\n return true;\n}\n\nexport function perspectiveSnapshotEqual(a, b, epsilon = 1e-4) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return !a && !b;\n }\n return (\n perspectiveVectorEqual(a.position, b.position, epsilon) &&\n perspectiveVectorEqual(a.target, b.target, epsilon) &&\n perspectiveVectorEqual(a.up, b.up, epsilon) &&\n Math.abs(normalizeCameraZoom(a.zoom, 1) - normalizeCameraZoom(b.zoom, 1)) <= epsilon &&\n normalizeCameraProjection(a.projection) === normalizeCameraProjection(b.projection) &&\n normalizePerspectiveMetadataValue(a.modelKey) === normalizePerspectiveMetadataValue(b.modelKey) &&\n normalizePerspectiveMetadataValue(a.sceneScaleMode) === normalizePerspectiveMetadataValue(b.sceneScaleMode) &&\n normalizePerspectiveMetadataValue(a.coordinateSystem) === normalizePerspectiveMetadataValue(b.coordinateSystem)\n );\n}\n\nexport function perspectiveSnapshotMatchesScene(snapshot, {\n modelKey = \"\",\n sceneScaleMode = \"\",\n coordinateSystem = \"\",\n requireModelKey = false,\n requireSceneScaleMode = false,\n requireCoordinateSystem = false\n} = {}) {\n const normalizedSnapshot = clonePerspectiveSnapshot(snapshot);\n if (!normalizedSnapshot) {\n return false;\n }\n const normalizedModelKey = normalizePerspectiveMetadataValue(modelKey);\n if (requireModelKey && normalizedModelKey && normalizedSnapshot.modelKey !== normalizedModelKey) {\n return false;\n }\n if (normalizedModelKey && normalizedSnapshot.modelKey && normalizedSnapshot.modelKey !== normalizedModelKey) {\n return false;\n }\n const normalizedSceneScaleMode = normalizePerspectiveMetadataValue(sceneScaleMode);\n if (requireSceneScaleMode && normalizedSceneScaleMode && normalizedSnapshot.sceneScaleMode !== normalizedSceneScaleMode) {\n return false;\n }\n if (normalizedSceneScaleMode && normalizedSnapshot.sceneScaleMode && normalizedSnapshot.sceneScaleMode !== normalizedSceneScaleMode) {\n return false;\n }\n const normalizedCoordinateSystem = normalizePerspectiveMetadataValue(coordinateSystem);\n if (requireCoordinateSystem && normalizedCoordinateSystem && normalizedSnapshot.coordinateSystem !== normalizedCoordinateSystem) {\n return false;\n }\n if (normalizedCoordinateSystem && normalizedSnapshot.coordinateSystem && normalizedSnapshot.coordinateSystem !== normalizedCoordinateSystem) {\n return false;\n }\n return true;\n}\n","export const VIEWER_PICK_MODE = {\n NONE: \"none\",\n AUTO: \"auto\",\n ASSEMBLY: \"assembly\",\n PARTS: \"parts\"\n};\n","export const STEP_CLIP_AXES = Object.freeze([\"x\", \"y\", \"z\"]);\nconst DEFAULT_STEP_CLIP_OFFSETS = Object.freeze({\n x: 0,\n y: 0,\n z: 0\n});\nexport const DEFAULT_STEP_CLIP_SETTINGS = Object.freeze({\n enabled: false,\n axis: \"x\",\n offset: DEFAULT_STEP_CLIP_OFFSETS.x,\n offsets: DEFAULT_STEP_CLIP_OFFSETS,\n invert: false\n});\n\nconst AXIS_INDEX = Object.freeze({\n x: 0,\n y: 1,\n z: 2\n});\nconst ACTIVE_CLIP_OFFSET_EPSILON = 1e-6;\n\nfunction normalizeNumber(value, fallback) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function normalizeStepClipSettings(value = null) {\n const source = value && typeof value === \"object\" ? value : {};\n const axis = STEP_CLIP_AXES.includes(String(source.axis || \"\").toLowerCase())\n ? String(source.axis).toLowerCase()\n : DEFAULT_STEP_CLIP_SETTINGS.axis;\n const sourceOffsets = source.offsets && typeof source.offsets === \"object\" ? source.offsets : {};\n const legacyOffset = normalizeNumber(source.offset, DEFAULT_STEP_CLIP_SETTINGS.offset);\n const offsets = Object.fromEntries(\n STEP_CLIP_AXES.map((clipAxis) => [\n clipAxis,\n clamp(\n normalizeNumber(\n sourceOffsets[clipAxis],\n clipAxis === axis ? legacyOffset : DEFAULT_STEP_CLIP_OFFSETS[clipAxis]\n ),\n 0,\n 1\n )\n ])\n );\n const activeOffset = offsets[axis];\n const offsetEnabled = activeOffset > ACTIVE_CLIP_OFFSET_EPSILON;\n const requestedEnabled = source.enabled === true\n ? true\n : source.enabled === false\n ? false\n : offsetEnabled;\n return {\n enabled: requestedEnabled && offsetEnabled,\n axis,\n offset: activeOffset,\n offsets,\n invert: source.invert === true\n };\n}\n\nexport function stepClipSettingsEqual(left, right) {\n const a = normalizeStepClipSettings(left);\n const b = normalizeStepClipSettings(right);\n return (\n a.enabled === b.enabled &&\n a.axis === b.axis &&\n Math.abs(a.offset - b.offset) < 1e-6 &&\n STEP_CLIP_AXES.every((axis) => Math.abs((a.offsets?.[axis] ?? DEFAULT_STEP_CLIP_OFFSETS[axis]) - (b.offsets?.[axis] ?? DEFAULT_STEP_CLIP_OFFSETS[axis])) < 1e-6) &&\n a.invert === b.invert\n );\n}\n\nexport function axisIndex(axis) {\n return AXIS_INDEX[String(axis || \"\").toLowerCase()] ?? AXIS_INDEX.x;\n}\n\nexport function clipAxisBounds(bounds, axis) {\n const index = axisIndex(axis);\n const min = normalizeNumber(bounds?.min?.[index], 0);\n const max = normalizeNumber(bounds?.max?.[index], min);\n return min <= max ? { min, max } : { min: max, max: min };\n}\n\nexport function clipAxisPosition(bounds, settings) {\n const normalized = normalizeStepClipSettings(settings);\n const { min, max } = clipAxisBounds(bounds, normalized.axis);\n return min + ((max - min) * normalized.offset);\n}\n\nexport function pointVisibleByClipPlane(clipPlane, point, epsilon = 1e-5) {\n if (!clipPlane || !point || typeof clipPlane.distanceToPoint !== \"function\") {\n return true;\n }\n const tolerance = Math.abs(normalizeNumber(epsilon, 1e-5));\n return clipPlane.distanceToPoint(point) >= -tolerance;\n}\n\nexport function buildStepClipPatch(settings, patch) {\n const current = normalizeStepClipSettings(settings);\n const rawPatch = patch && typeof patch === \"object\" ? patch : {};\n const hasExplicitEnabled = Object.prototype.hasOwnProperty.call(rawPatch, \"enabled\");\n const hasOffsetPatch = Object.prototype.hasOwnProperty.call(rawPatch, \"offset\") ||\n (rawPatch.offsets && typeof rawPatch.offsets === \"object\");\n const patchedAxis = STEP_CLIP_AXES.includes(String(rawPatch.axis || \"\").toLowerCase())\n ? String(rawPatch.axis).toLowerCase()\n : current.axis;\n const offsets = {\n ...current.offsets,\n ...(rawPatch.offsets && typeof rawPatch.offsets === \"object\" ? rawPatch.offsets : {})\n };\n if (Object.prototype.hasOwnProperty.call(rawPatch, \"offset\")) {\n offsets[patchedAxis] = rawPatch.offset;\n }\n const activeOffset = clamp(normalizeNumber(offsets[patchedAxis], 0), 0, 1);\n return normalizeStepClipSettings({\n ...current,\n ...rawPatch,\n ...(!hasExplicitEnabled && hasOffsetPatch ? { enabled: activeOffset > ACTIVE_CLIP_OFFSET_EPSILON } : {}),\n axis: patchedAxis,\n offsets,\n offset: offsets[patchedAxis]\n });\n}\n","export const DRAWING_TOOL = Object.freeze({\n FREEHAND: \"freehand\",\n LINE: \"line\",\n SURFACE_LINE: \"surface-line\",\n ARROW: \"arrow\",\n DOUBLE_ARROW: \"double-arrow\",\n RECTANGLE: \"rectangle\",\n CIRCLE: \"circle\",\n FILL: \"fill\",\n ERASE: \"erase\"\n});\n","import { DRAWING_TOOL } from \"./drawingTools.js\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function distancePointToSegment2d(point, start, end) {\n const dx = end[0] - start[0];\n const dy = end[1] - start[1];\n if (Math.abs(dx) < 1e-9 && Math.abs(dy) < 1e-9) {\n return Math.hypot(point[0] - start[0], point[1] - start[1]);\n }\n const t = clamp(\n ((point[0] - start[0]) * dx + (point[1] - start[1]) * dy) / (dx * dx + dy * dy),\n 0,\n 1\n );\n const projected = [start[0] + dx * t, start[1] + dy * t];\n return Math.hypot(point[0] - projected[0], point[1] - projected[1]);\n}\n\nexport function pointInPolygon2d(point, polygon) {\n let inside = false;\n for (let index = 0, previous = polygon.length - 1; index < polygon.length; previous = index, index += 1) {\n const a = polygon[index];\n const b = polygon[previous];\n if (distancePointToSegment2d(point, a, b) <= 1e-4) {\n return true;\n }\n const intersects =\n (a[1] > point[1]) !== (b[1] > point[1]) &&\n point[0] < ((b[0] - a[0]) * (point[1] - a[1])) / (b[1] - a[1] || 1e-9) + a[0];\n if (intersects) {\n inside = !inside;\n }\n }\n return inside;\n}\n\nexport function buildDrawingPoint(event, canvas) {\n const rect = canvas.getBoundingClientRect();\n const width = rect.width || 1;\n const height = rect.height || 1;\n return {\n x: clamp((event.clientX - rect.left) / width, 0, 1),\n y: clamp((event.clientY - rect.top) / height, 0, 1)\n };\n}\n\nexport function drawingPointToPixels(point, width, height) {\n return [point.x * width, point.y * height];\n}\n\nexport function strokeLengthInPixels(stroke, width, height) {\n const points = Array.isArray(stroke?.points) ? stroke.points : [];\n if (points.length < 2) {\n return 0;\n }\n let total = 0;\n for (let index = 1; index < points.length; index += 1) {\n const previous = drawingPointToPixels(points[index - 1], width, height);\n const current = drawingPointToPixels(points[index], width, height);\n total += Math.hypot(current[0] - previous[0], current[1] - previous[1]);\n }\n return total;\n}\n\nexport function getDrawingStrokePoints(stroke) {\n return Array.isArray(stroke?.points)\n ? stroke.points.filter((point) => point && Number.isFinite(point.x) && Number.isFinite(point.y))\n : [];\n}\n\nexport function getFillStrokePoints(stroke) {\n return Array.isArray(stroke?.fillPoints)\n ? stroke.fillPoints.filter((point) => point && Number.isFinite(point.x) && Number.isFinite(point.y))\n : [];\n}\n\nexport function isFillStroke(stroke) {\n return stroke?.tool === DRAWING_TOOL.FILL;\n}\n\nexport function isSurfaceLineStroke(stroke) {\n return stroke?.tool === DRAWING_TOOL.SURFACE_LINE && !!stroke?.surfaceLine;\n}\n\nexport function isClosedDrawingStroke(stroke) {\n return stroke?.tool === DRAWING_TOOL.RECTANGLE || stroke?.tool === DRAWING_TOOL.CIRCLE;\n}\n\nexport function isFillBoundaryStroke(stroke) {\n return !!stroke && stroke.tool !== DRAWING_TOOL.ERASE && stroke.tool !== DRAWING_TOOL.FILL && stroke.tool !== DRAWING_TOOL.SURFACE_LINE;\n}\n\nexport function drawingToolNeedsTwoPoints(tool) {\n return (\n tool === DRAWING_TOOL.LINE ||\n tool === DRAWING_TOOL.SURFACE_LINE ||\n tool === DRAWING_TOOL.ARROW ||\n tool === DRAWING_TOOL.DOUBLE_ARROW ||\n tool === DRAWING_TOOL.RECTANGLE ||\n tool === DRAWING_TOOL.CIRCLE\n );\n}\n\nexport function distanceToStrokeInPixels(point, stroke, width, height) {\n if (isFillStroke(stroke)) {\n const pixelPoint = drawingPointToPixels(point, width, height);\n const polygon = getFillStrokePoints(stroke).map((entry) => drawingPointToPixels(entry, width, height));\n if (polygon.length < 3) {\n return Infinity;\n }\n if (pointInPolygon2d(pixelPoint, polygon)) {\n return 0;\n }\n let minimum = Infinity;\n for (let index = 0; index < polygon.length; index += 1) {\n const start = polygon[index];\n const end = polygon[(index + 1) % polygon.length];\n minimum = Math.min(minimum, distancePointToSegment2d(pixelPoint, start, end));\n }\n return minimum;\n }\n\n const points = getDrawingStrokePoints(stroke);\n if (!points.length) {\n return Infinity;\n }\n const pixelPoint = drawingPointToPixels(point, width, height);\n const pixelPoints = points.map((entry) => drawingPointToPixels(entry, width, height));\n if (pixelPoints.length === 1) {\n const pointPixels = pixelPoints[0];\n return Math.hypot(pixelPoint[0] - pointPixels[0], pixelPoint[1] - pointPixels[1]);\n }\n\n if (stroke.tool === DRAWING_TOOL.RECTANGLE) {\n const start = pixelPoints[0];\n const end = pixelPoints[pixelPoints.length - 1];\n const corners = [\n [start[0], start[1]],\n [end[0], start[1]],\n [end[0], end[1]],\n [start[0], end[1]]\n ];\n let minimum = Infinity;\n for (let index = 0; index < corners.length; index += 1) {\n const a = corners[index];\n const b = corners[(index + 1) % corners.length];\n minimum = Math.min(minimum, distancePointToSegment2d(pixelPoint, a, b));\n }\n return minimum;\n }\n\n if (stroke.tool === DRAWING_TOOL.CIRCLE) {\n const center = pixelPoints[0];\n const edge = pixelPoints[pixelPoints.length - 1];\n const radius = Math.hypot(edge[0] - center[0], edge[1] - center[1]);\n return Math.abs(Math.hypot(pixelPoint[0] - center[0], pixelPoint[1] - center[1]) - radius);\n }\n\n let minimum = Infinity;\n for (let index = 1; index < pixelPoints.length; index += 1) {\n const start = pixelPoints[index - 1];\n const end = pixelPoints[index];\n minimum = Math.min(minimum, distancePointToSegment2d(pixelPoint, start, end));\n }\n return minimum;\n}\n","import { DRAWING_TOOL } from \"./drawingTools.js\";\nimport {\n drawingPointToPixels,\n getDrawingStrokePoints,\n getFillStrokePoints,\n isClosedDrawingStroke,\n isFillBoundaryStroke,\n isFillStroke,\n isSurfaceLineStroke,\n pointInPolygon2d\n} from \"./drawingGeometry.js\";\n\nexport const DRAWING_STROKE_COLOR = \"#ef4444\";\nexport const DRAWING_STROKE_HALO = \"rgba(255, 255, 255, 0.94)\";\nexport const DRAWING_STROKE_WIDTH = 4;\nexport const DRAWING_STROKE_HALO_WIDTH = 8;\nexport const DRAWING_ARROW_HEAD_LENGTH = 18;\nexport const DRAWING_MIN_POINT_DISTANCE_PX = 2.5;\nexport const DRAWING_MIN_STROKE_LENGTH_PX = 4;\nexport const DRAWING_ERASE_THRESHOLD_PX = 16;\nexport const DRAWING_FILL_COLOR = \"rgba(239, 68, 68, 0.22)\";\nexport const DRAWING_GUESSED_FILL_COLOR = \"rgba(239, 68, 68, 0.16)\";\nexport const DRAWING_FILL_ANALYSIS_MAX_DIMENSION = 420;\nexport const DRAWING_FILL_ANALYSIS_MIN_DIMENSION = 96;\nexport const DRAWING_FILL_CONNECT_GAP_PX = 28;\nexport const DRAWING_FILL_RAY_COUNT = 72;\nexport const DRAWING_FILL_MIN_REGION_PIXELS = 56;\nexport const DRAWING_FILL_MAX_REGION_RATIO = 0.92;\nexport const SURFACE_LINE_COLOR = \"#ef4444\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction pointsEqual2d(a, b, epsilon = 1e-4) {\n return Math.abs(a[0] - b[0]) <= epsilon && Math.abs(a[1] - b[1]) <= epsilon;\n}\n\nexport function maxDrawingStrokeOrdinal(strokes) {\n let maxOrdinal = 0;\n for (const stroke of Array.isArray(strokes) ? strokes : []) {\n const match = /^stroke-(\\d+)$/.exec(String(stroke?.id || \"\"));\n if (!match) {\n continue;\n }\n const nextOrdinal = Number(match[1]);\n if (Number.isFinite(nextOrdinal) && nextOrdinal > maxOrdinal) {\n maxOrdinal = nextOrdinal;\n }\n }\n return maxOrdinal;\n}\n\nexport function buildRectanglePixelCorners(start, end) {\n return [\n [start[0], start[1]],\n [end[0], start[1]],\n [end[0], end[1]],\n [start[0], end[1]]\n ];\n}\n\nexport function buildCirclePixelPolygon(center, edge, segmentCount = 56) {\n const radius = Math.hypot(edge[0] - center[0], edge[1] - center[1]);\n if (radius < 1e-4) {\n return [center];\n }\n const segments = Math.max(segmentCount, 12);\n const points = [];\n for (let index = 0; index <= segments; index += 1) {\n const angle = (index / segments) * Math.PI * 2;\n points.push([\n center[0] + Math.cos(angle) * radius,\n center[1] + Math.sin(angle) * radius\n ]);\n }\n return points;\n}\n\nexport function getDrawingBoundaryPixelPoints(stroke, width, height) {\n const pixelPoints = getDrawingStrokePoints(stroke).map((point) => drawingPointToPixels(point, width, height));\n if (pixelPoints.length < 2) {\n return pixelPoints;\n }\n if (stroke.tool === DRAWING_TOOL.RECTANGLE) {\n const corners = buildRectanglePixelCorners(pixelPoints[0], pixelPoints[pixelPoints.length - 1]);\n return [...corners, corners[0]];\n }\n if (stroke.tool === DRAWING_TOOL.CIRCLE) {\n return buildCirclePixelPolygon(pixelPoints[0], pixelPoints[pixelPoints.length - 1]);\n }\n return pixelPoints;\n}\n\nfunction drawArrowHead(context, start, end, lineWidth) {\n const dx = end[0] - start[0];\n const dy = end[1] - start[1];\n const lengthPx = Math.hypot(dx, dy);\n if (lengthPx < 1) {\n return;\n }\n const ux = dx / lengthPx;\n const uy = dy / lengthPx;\n const angle = Math.PI / 7;\n const headLength = Math.max(DRAWING_ARROW_HEAD_LENGTH, lineWidth * 3.25);\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const left = [\n end[0] - headLength * (ux * cos - uy * sin),\n end[1] - headLength * (uy * cos + ux * sin)\n ];\n const right = [\n end[0] - headLength * (ux * cos + uy * sin),\n end[1] - headLength * (uy * cos - ux * sin)\n ];\n\n context.beginPath();\n context.moveTo(end[0], end[1]);\n context.lineTo(left[0], left[1]);\n context.moveTo(end[0], end[1]);\n context.lineTo(right[0], right[1]);\n context.stroke();\n}\n\nfunction drawPointDot(context, point, lineWidth) {\n context.beginPath();\n context.arc(point[0], point[1], lineWidth * 0.65, 0, Math.PI * 2);\n context.fill();\n}\n\nfunction drawPolylineStroke(context, pixelPoints) {\n context.beginPath();\n pixelPoints.forEach((point, index) => {\n if (index === 0) {\n context.moveTo(point[0], point[1]);\n return;\n }\n context.lineTo(point[0], point[1]);\n });\n context.stroke();\n}\n\nfunction drawRectangleStroke(context, start, end) {\n const x = Math.min(start[0], end[0]);\n const y = Math.min(start[1], end[1]);\n const width = Math.abs(end[0] - start[0]);\n const height = Math.abs(end[1] - start[1]);\n context.strokeRect(x, y, width, height);\n}\n\nfunction drawCircleStroke(context, center, edge) {\n const radius = Math.hypot(edge[0] - center[0], edge[1] - center[1]);\n context.beginPath();\n context.arc(center[0], center[1], radius, 0, Math.PI * 2);\n context.stroke();\n}\n\nfunction drawFillStroke(context, stroke, width, height, { color, alpha = 1 }) {\n const points = getFillStrokePoints(stroke);\n if (points.length < 3) {\n return;\n }\n\n const pixelPoints = points.map((point) => drawingPointToPixels(point, width, height));\n context.save();\n context.globalAlpha = alpha;\n context.fillStyle = color;\n context.beginPath();\n pixelPoints.forEach((point, index) => {\n if (index === 0) {\n context.moveTo(point[0], point[1]);\n return;\n }\n context.lineTo(point[0], point[1]);\n });\n context.closePath();\n context.fill();\n context.restore();\n}\n\nfunction drawLineStroke(context, stroke, width, height, { color, lineWidth, alpha = 1 }) {\n if (isFillStroke(stroke)) {\n return;\n }\n const points = getDrawingStrokePoints(stroke);\n if (!points.length) {\n return;\n }\n\n const pixelPoints = points.map((point) => drawingPointToPixels(point, width, height));\n\n context.save();\n context.globalAlpha = alpha;\n context.strokeStyle = color;\n context.fillStyle = color;\n context.lineCap = \"round\";\n context.lineJoin = \"round\";\n context.lineWidth = lineWidth;\n\n if (pixelPoints.length === 1) {\n drawPointDot(context, pixelPoints[0], lineWidth);\n context.restore();\n return;\n }\n\n if (stroke.tool === DRAWING_TOOL.RECTANGLE) {\n drawRectangleStroke(context, pixelPoints[0], pixelPoints[pixelPoints.length - 1]);\n context.restore();\n return;\n }\n\n if (stroke.tool === DRAWING_TOOL.CIRCLE) {\n drawCircleStroke(context, pixelPoints[0], pixelPoints[pixelPoints.length - 1]);\n context.restore();\n return;\n }\n\n drawPolylineStroke(context, pixelPoints);\n\n if (stroke.tool === DRAWING_TOOL.ARROW || stroke.tool === DRAWING_TOOL.DOUBLE_ARROW) {\n drawArrowHead(context, pixelPoints[pixelPoints.length - 2], pixelPoints[pixelPoints.length - 1], lineWidth);\n }\n if (stroke.tool === DRAWING_TOOL.DOUBLE_ARROW) {\n drawArrowHead(context, pixelPoints[1], pixelPoints[0], lineWidth);\n }\n\n context.restore();\n}\n\nfunction createOffscreenCanvas(width, height) {\n if (typeof OffscreenCanvas !== \"undefined\") {\n return new OffscreenCanvas(width, height);\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction getOpenBoundaryEndpoints(stroke, width, height) {\n if (!isFillBoundaryStroke(stroke) || isClosedDrawingStroke(stroke)) {\n return [];\n }\n const pixelPoints = getDrawingBoundaryPixelPoints(stroke, width, height);\n if (pixelPoints.length < 2) {\n return [];\n }\n const allowSelfConnect = stroke?.tool === DRAWING_TOOL.FREEHAND && pixelPoints.length > 2;\n return [\n {\n strokeId: String(stroke?.id || \"\"),\n point: pixelPoints[0],\n allowSelfConnect\n },\n {\n strokeId: String(stroke?.id || \"\"),\n point: pixelPoints[pixelPoints.length - 1],\n allowSelfConnect\n }\n ];\n}\n\nexport function pairNearbyBoundaryEndpoints(endpoints, maxDistance) {\n if (!Array.isArray(endpoints) || endpoints.length < 2 || maxDistance <= 0) {\n return [];\n }\n const candidates = [];\n for (let leftIndex = 0; leftIndex < endpoints.length; leftIndex += 1) {\n for (let rightIndex = leftIndex + 1; rightIndex < endpoints.length; rightIndex += 1) {\n const left = endpoints[leftIndex];\n const right = endpoints[rightIndex];\n const sameStroke = left.strokeId && left.strokeId === right.strokeId;\n if (sameStroke && !(left.allowSelfConnect && right.allowSelfConnect)) {\n continue;\n }\n const distance = Math.hypot(left.point[0] - right.point[0], left.point[1] - right.point[1]);\n if (distance <= maxDistance) {\n candidates.push({ leftIndex, rightIndex, distance });\n }\n }\n }\n candidates.sort((left, right) => left.distance - right.distance);\n const used = new Set();\n const pairs = [];\n for (const candidate of candidates) {\n if (used.has(candidate.leftIndex) || used.has(candidate.rightIndex)) {\n continue;\n }\n used.add(candidate.leftIndex);\n used.add(candidate.rightIndex);\n pairs.push([\n endpoints[candidate.leftIndex].point,\n endpoints[candidate.rightIndex].point\n ]);\n }\n return pairs;\n}\n\nexport function buildBoundaryMaskFromStrokes(strokes, width, height, { gapPx = 0, lineWidth = DRAWING_STROKE_WIDTH } = {}) {\n const canvas = createOffscreenCanvas(width, height);\n const context = canvas.getContext(\"2d\", { willReadFrequently: true });\n if (!context) {\n return null;\n }\n\n context.clearRect(0, 0, width, height);\n const boundaryStrokes = Array.isArray(strokes) ? strokes.filter(isFillBoundaryStroke) : [];\n for (const stroke of boundaryStrokes) {\n drawLineStroke(context, stroke, width, height, {\n color: \"#000000\",\n lineWidth,\n alpha: 1\n });\n }\n\n if (gapPx > 0) {\n const connectors = pairNearbyBoundaryEndpoints(\n boundaryStrokes.flatMap((stroke) => getOpenBoundaryEndpoints(stroke, width, height)),\n Math.max(gapPx, lineWidth * 1.15)\n );\n if (connectors.length) {\n context.save();\n context.strokeStyle = \"#000000\";\n context.lineWidth = lineWidth;\n context.lineCap = \"round\";\n for (const [start, end] of connectors) {\n context.beginPath();\n context.moveTo(start[0], start[1]);\n context.lineTo(end[0], end[1]);\n context.stroke();\n }\n context.restore();\n }\n }\n\n const { data } = context.getImageData(0, 0, width, height);\n const mask = new Uint8Array(width * height);\n for (let index = 0; index < mask.length; index += 1) {\n mask[index] = data[index * 4 + 3] > 20 ? 1 : 0;\n }\n return mask;\n}\n\nexport function findNearestOpenSeed(boundaryMask, width, height, seedX, seedY, maxRadius = 5) {\n const x = clamp(Math.round(seedX), 0, width - 1);\n const y = clamp(Math.round(seedY), 0, height - 1);\n for (let radius = 0; radius <= maxRadius; radius += 1) {\n let best = null;\n let bestDistance = Infinity;\n for (let dy = -radius; dy <= radius; dy += 1) {\n for (let dx = -radius; dx <= radius; dx += 1) {\n const px = x + dx;\n const py = y + dy;\n if (px < 0 || py < 0 || px >= width || py >= height) {\n continue;\n }\n if (boundaryMask[py * width + px]) {\n continue;\n }\n const distance = Math.hypot(dx, dy);\n if (distance < bestDistance) {\n bestDistance = distance;\n best = [px, py];\n }\n }\n }\n if (best) {\n return best;\n }\n }\n return null;\n}\n\nexport function floodFillInterior(boundaryMask, width, height, seedPoint) {\n const start = findNearestOpenSeed(boundaryMask, width, height, seedPoint[0], seedPoint[1]);\n if (!start) {\n return null;\n }\n\n const fillMask = new Uint8Array(width * height);\n const queue = new Int32Array(width * height);\n let head = 0;\n let tail = 0;\n const startIndex = start[1] * width + start[0];\n queue[tail++] = startIndex;\n fillMask[startIndex] = 1;\n let area = 0;\n let touchesEdge = false;\n\n while (head < tail) {\n const index = queue[head++];\n area += 1;\n const x = index % width;\n const y = (index / width) | 0;\n if (x === 0 || y === 0 || x === width - 1 || y === height - 1) {\n touchesEdge = true;\n }\n\n if (x > 0) {\n const leftIndex = index - 1;\n if (!boundaryMask[leftIndex] && !fillMask[leftIndex]) {\n fillMask[leftIndex] = 1;\n queue[tail++] = leftIndex;\n }\n }\n if (x + 1 < width) {\n const rightIndex = index + 1;\n if (!boundaryMask[rightIndex] && !fillMask[rightIndex]) {\n fillMask[rightIndex] = 1;\n queue[tail++] = rightIndex;\n }\n }\n if (y > 0) {\n const upIndex = index - width;\n if (!boundaryMask[upIndex] && !fillMask[upIndex]) {\n fillMask[upIndex] = 1;\n queue[tail++] = upIndex;\n }\n }\n if (y + 1 < height) {\n const downIndex = index + width;\n if (!boundaryMask[downIndex] && !fillMask[downIndex]) {\n fillMask[downIndex] = 1;\n queue[tail++] = downIndex;\n }\n }\n }\n\n return {\n mask: fillMask,\n area,\n touchesEdge,\n seed: start\n };\n}\n\nfunction polygonArea2d(points) {\n let area = 0;\n for (let index = 0, previous = points.length - 1; index < points.length; previous = index, index += 1) {\n area += points[previous][0] * points[index][1] - points[index][0] * points[previous][1];\n }\n return area / 2;\n}\n\nfunction removeDuplicatePolygonPoints(points) {\n const next = [];\n for (const point of points) {\n if (!next.length || !pointsEqual2d(next[next.length - 1], point)) {\n next.push(point);\n }\n }\n if (next.length > 1 && pointsEqual2d(next[0], next[next.length - 1])) {\n next.pop();\n }\n return next;\n}\n\nfunction removeCollinearPolygonPoints(points) {\n const loop = removeDuplicatePolygonPoints(points);\n if (loop.length < 3) {\n return loop;\n }\n const next = [];\n for (let index = 0; index < loop.length; index += 1) {\n const previous = loop[(index + loop.length - 1) % loop.length];\n const current = loop[index];\n const following = loop[(index + 1) % loop.length];\n const cross =\n (current[0] - previous[0]) * (following[1] - current[1]) -\n (current[1] - previous[1]) * (following[0] - current[0]);\n if (Math.abs(cross) > 1e-4) {\n next.push(current);\n }\n }\n return next.length >= 3 ? next : loop;\n}\n\nfunction downsamplePolygon(points, maxPoints = 160) {\n if (points.length <= maxPoints) {\n return points;\n }\n const step = points.length / maxPoints;\n const next = [];\n let cursor = 0;\n for (let index = 0; index < maxPoints; index += 1) {\n next.push(points[Math.floor(cursor) % points.length]);\n cursor += step;\n }\n return removeDuplicatePolygonPoints(next);\n}\n\nfunction pointKey(point) {\n return `${point[0]},${point[1]}`;\n}\n\nexport function traceMaskLoops(mask, width, height) {\n const segments = [];\n const adjacency = new Map();\n const addSegment = (start, end) => {\n const index = segments.length;\n segments.push([start, end]);\n const key = pointKey(start);\n const entries = adjacency.get(key);\n if (entries) {\n entries.push(index);\n return;\n }\n adjacency.set(key, [index]);\n };\n\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n if (!mask[y * width + x]) {\n continue;\n }\n if (y === 0 || !mask[(y - 1) * width + x]) {\n addSegment([x, y], [x + 1, y]);\n }\n if (x === width - 1 || !mask[y * width + x + 1]) {\n addSegment([x + 1, y], [x + 1, y + 1]);\n }\n if (y === height - 1 || !mask[(y + 1) * width + x]) {\n addSegment([x + 1, y + 1], [x, y + 1]);\n }\n if (x === 0 || !mask[y * width + x - 1]) {\n addSegment([x, y + 1], [x, y]);\n }\n }\n }\n\n const used = new Uint8Array(segments.length);\n const loops = [];\n for (let index = 0; index < segments.length; index += 1) {\n if (used[index]) {\n continue;\n }\n const loop = [];\n let currentIndex = index;\n let guard = 0;\n while (currentIndex !== -1 && !used[currentIndex] && guard < segments.length + 4) {\n used[currentIndex] = 1;\n const [start, end] = segments[currentIndex];\n if (!loop.length) {\n loop.push(start);\n }\n loop.push(end);\n if (pointsEqual2d(end, loop[0])) {\n break;\n }\n const nextCandidates = adjacency.get(pointKey(end)) || [];\n currentIndex = nextCandidates.find((candidateIndex) => !used[candidateIndex]) ?? -1;\n guard += 1;\n }\n if (loop.length >= 4 && pointsEqual2d(loop[0], loop[loop.length - 1])) {\n const normalizedLoop = removeCollinearPolygonPoints(loop.slice(0, -1));\n if (normalizedLoop.length >= 3) {\n loops.push(normalizedLoop);\n }\n }\n }\n return loops;\n}\n\nexport function normalizePolygonPoints(points, width, height) {\n return points.map((point) => ({\n x: clamp(point[0] / width, 0, 1),\n y: clamp(point[1] / height, 0, 1)\n }));\n}\n\nexport function buildPolygonFromFilledMask(mask, width, height, seedPoint) {\n const loops = traceMaskLoops(mask, width, height);\n if (!loops.length) {\n return null;\n }\n const seed = [seedPoint[0] + 0.5, seedPoint[1] + 0.5];\n const containingLoops = loops.filter((loop) => pointInPolygon2d(seed, loop));\n const sourceLoops = containingLoops.length ? containingLoops : loops;\n const chosen = sourceLoops.reduce((best, current) => {\n if (!best) {\n return current;\n }\n return Math.abs(polygonArea2d(current)) > Math.abs(polygonArea2d(best)) ? current : best;\n }, null);\n if (!chosen) {\n return null;\n }\n const simplified = downsamplePolygon(removeCollinearPolygonPoints(chosen));\n return simplified.length >= 3 ? normalizePolygonPoints(simplified, width, height) : null;\n}\n\nfunction findNearestValidDistance(distances, index, direction) {\n for (let offset = 1; offset < distances.length; offset += 1) {\n const nextIndex = (index + direction * offset + distances.length) % distances.length;\n if (Number.isFinite(distances[nextIndex])) {\n return {\n value: distances[nextIndex],\n offset\n };\n }\n }\n return null;\n}\n\nexport function buildGuessedFillPolygon(boundaryMask, width, height, seedPoint) {\n const start = findNearestOpenSeed(boundaryMask, width, height, seedPoint[0], seedPoint[1]);\n if (!start) {\n return null;\n }\n const maxDistance = Math.hypot(width, height);\n const distances = Array.from({ length: DRAWING_FILL_RAY_COUNT }, () => null);\n\n for (let index = 0; index < DRAWING_FILL_RAY_COUNT; index += 1) {\n const angle = (index / DRAWING_FILL_RAY_COUNT) * Math.PI * 2;\n const dx = Math.cos(angle);\n const dy = Math.sin(angle);\n for (let distance = 1; distance < maxDistance; distance += 1) {\n const x = Math.round(start[0] + dx * distance);\n const y = Math.round(start[1] + dy * distance);\n if (x < 0 || y < 0 || x >= width || y >= height) {\n break;\n }\n if (boundaryMask[y * width + x]) {\n distances[index] = Math.max(distance - 1.5, 1);\n break;\n }\n }\n }\n\n const validDistances = distances.filter(Number.isFinite);\n if (validDistances.length < Math.max(12, Math.floor(DRAWING_FILL_RAY_COUNT / 4))) {\n return null;\n }\n\n const orderedDistances = [...validDistances].sort((left, right) => left - right);\n const medianDistance = orderedDistances[Math.floor(orderedDistances.length / 2)] || 1;\n const resolvedDistances = distances.map((value, index) => {\n if (Number.isFinite(value)) {\n return value;\n }\n const previous = findNearestValidDistance(distances, index, -1);\n const next = findNearestValidDistance(distances, index, 1);\n if (previous && next) {\n const total = previous.offset + next.offset;\n return (previous.value * next.offset + next.value * previous.offset) / Math.max(total, 1);\n }\n if (previous) {\n return previous.value;\n }\n if (next) {\n return next.value;\n }\n return medianDistance;\n });\n\n let smoothedDistances = resolvedDistances;\n for (let pass = 0; pass < 2; pass += 1) {\n smoothedDistances = smoothedDistances.map((value, index) => {\n const previous = smoothedDistances[(index + smoothedDistances.length - 1) % smoothedDistances.length];\n const next = smoothedDistances[(index + 1) % smoothedDistances.length];\n return (previous + value * 2 + next) / 4;\n });\n }\n\n const polygon = smoothedDistances.map((distance, index) => {\n const angle = (index / DRAWING_FILL_RAY_COUNT) * Math.PI * 2;\n return [\n clamp(start[0] + Math.cos(angle) * distance, 0, width),\n clamp(start[1] + Math.sin(angle) * distance, 0, height)\n ];\n });\n const simplified = downsamplePolygon(removeCollinearPolygonPoints(polygon), DRAWING_FILL_RAY_COUNT);\n if (simplified.length < 3) {\n return null;\n }\n const area = Math.abs(polygonArea2d(simplified));\n if (area < DRAWING_FILL_MIN_REGION_PIXELS || area > width * height * DRAWING_FILL_MAX_REGION_RATIO) {\n return null;\n }\n return normalizePolygonPoints(simplified, width, height);\n}\n\nexport function buildFillStrokeAtPoint(point, strokes, canvas) {\n const boundaryStrokes = Array.isArray(strokes) ? strokes.filter(isFillBoundaryStroke) : [];\n if (!boundaryStrokes.length) {\n return null;\n }\n\n const canvasWidth = canvas.width || 1;\n const canvasHeight = canvas.height || 1;\n const maxCanvasDimension = Math.max(canvasWidth, canvasHeight, 1);\n const analysisScale = Math.min(1, DRAWING_FILL_ANALYSIS_MAX_DIMENSION / maxCanvasDimension);\n const analysisWidth = Math.max(DRAWING_FILL_ANALYSIS_MIN_DIMENSION, Math.round(canvasWidth * analysisScale));\n const analysisHeight = Math.max(DRAWING_FILL_ANALYSIS_MIN_DIMENSION, Math.round(canvasHeight * analysisScale));\n const seedPoint = [point.x * (analysisWidth - 1), point.y * (analysisHeight - 1)];\n const lineWidth = Math.max(3, DRAWING_STROKE_WIDTH * analysisScale + 3);\n const gapStrategies = [\n { gapPx: 0, guessed: false },\n { gapPx: DRAWING_FILL_CONNECT_GAP_PX * 0.45 * analysisScale, guessed: true },\n { gapPx: DRAWING_FILL_CONNECT_GAP_PX * analysisScale, guessed: true }\n ];\n\n for (const strategy of gapStrategies) {\n const boundaryMask = buildBoundaryMaskFromStrokes(boundaryStrokes, analysisWidth, analysisHeight, {\n gapPx: strategy.gapPx,\n lineWidth\n });\n if (!boundaryMask) {\n continue;\n }\n const filledRegion = floodFillInterior(boundaryMask, analysisWidth, analysisHeight, seedPoint);\n if (!filledRegion || filledRegion.area < DRAWING_FILL_MIN_REGION_PIXELS) {\n continue;\n }\n if (filledRegion.touchesEdge || filledRegion.area > analysisWidth * analysisHeight * DRAWING_FILL_MAX_REGION_RATIO) {\n continue;\n }\n const fillPoints = buildPolygonFromFilledMask(\n filledRegion.mask,\n analysisWidth,\n analysisHeight,\n filledRegion.seed\n );\n if (fillPoints?.length >= 3) {\n return {\n tool: DRAWING_TOOL.FILL,\n points: [point],\n fillPoints,\n guessed: strategy.guessed\n };\n }\n }\n\n const fallbackBoundaryMask = buildBoundaryMaskFromStrokes(boundaryStrokes, analysisWidth, analysisHeight, {\n gapPx: DRAWING_FILL_CONNECT_GAP_PX * analysisScale,\n lineWidth\n });\n if (!fallbackBoundaryMask) {\n return null;\n }\n const fillPoints = buildGuessedFillPolygon(fallbackBoundaryMask, analysisWidth, analysisHeight, seedPoint);\n if (!fillPoints?.length || fillPoints.length < 3) {\n return null;\n }\n return {\n tool: DRAWING_TOOL.FILL,\n points: [point],\n fillPoints,\n guessed: true\n };\n}\n\nexport function redrawDrawingCanvas(canvas, strokes, draftStroke = null) {\n if (!canvas) {\n return;\n }\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return;\n }\n const width = canvas.width;\n const height = canvas.height;\n context.clearRect(0, 0, width, height);\n\n const allStrokes = Array.isArray(strokes) ? strokes : [];\n for (const stroke of allStrokes) {\n if (!isFillStroke(stroke)) {\n continue;\n }\n drawFillStroke(context, stroke, width, height, {\n color: stroke?.guessed ? DRAWING_GUESSED_FILL_COLOR : DRAWING_FILL_COLOR,\n alpha: 1\n });\n }\n for (const stroke of allStrokes) {\n if (isSurfaceLineStroke(stroke)) {\n continue;\n }\n drawLineStroke(context, stroke, width, height, {\n color: DRAWING_STROKE_HALO,\n lineWidth: DRAWING_STROKE_HALO_WIDTH\n });\n drawLineStroke(context, stroke, width, height, {\n color: DRAWING_STROKE_COLOR,\n lineWidth: DRAWING_STROKE_WIDTH\n });\n }\n\n if (draftStroke) {\n drawLineStroke(context, draftStroke, width, height, {\n color: DRAWING_STROKE_HALO,\n lineWidth: DRAWING_STROKE_HALO_WIDTH,\n alpha: 0.78\n });\n drawLineStroke(context, draftStroke, width, height, {\n color: DRAWING_STROKE_COLOR,\n lineWidth: DRAWING_STROKE_WIDTH,\n alpha: 0.9\n });\n }\n}\n","export const DERIVED_DISPLAY_EDGE_TRIANGLE_LIMIT = 500000;\n\nfunction isNumericArray(value, stride = 1) {\n return (\n (Array.isArray(value) || ArrayBuffer.isView(value)) &&\n value.length >= stride &&\n value.length % stride === 0\n );\n}\n\nexport function shouldBuildDerivedDisplayEdges(meshData, {\n triangleLimit = DERIVED_DISPLAY_EDGE_TRIANGLE_LIMIT\n} = {}) {\n if (isNumericArray(meshData?.edge_indices, 2)) {\n return true;\n }\n const triangleCount = Math.floor((meshData?.indices?.length || 0) / 3);\n return triangleCount <= triangleLimit;\n}\n\nexport function shouldShowRecordDisplayEdges({\n edgesVisible = false,\n topologyDisplayEdgesVisible = false,\n displayEdgesVisible = false,\n wireframeMode = false\n} = {}) {\n return Boolean(\n edgesVisible &&\n !topologyDisplayEdgesVisible &&\n (displayEdgesVisible || wireframeMode)\n );\n}\n","import {\n DEFAULT_STEP_CLIP_SETTINGS,\n normalizeStepClipSettings,\n stepClipSettingsEqual\n} from \"../lib/viewer/clipPlane.js\";\nimport {\n CAMERA_PROJECTION,\n normalizeCameraProjection\n} from \"../lib/perspective.js\";\n\nexport { CAMERA_PROJECTION, normalizeCameraProjection };\n\nexport const CAD_DISPLAY_MODE = Object.freeze({\n HIDDEN_EDGES: \"hidden_edges\",\n HIDDEN_LINES_REMOVED: \"hidden_lines_removed\",\n RENDERED: \"rendered\",\n SOLID: \"solid\",\n TRANSPARENT: \"transparent\",\n UNSHADED: \"unshaded\",\n WIREFRAME: \"wireframe\"\n});\n\nexport const CAD_DISPLAY_MODE_VALUES = Object.freeze(Object.values(CAD_DISPLAY_MODE));\n\nexport const EXPLODED_VIEW_AXES = Object.freeze([\"x\", \"y\", \"z\", \"radial\"]);\nexport const EXPLODED_VIEW_DIRECTIONS = Object.freeze([\"positive\", \"negative\"]);\nexport const MAX_EXPLODED_VIEW_DEPTH = 8;\nconst HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\n\nexport const CAD_EDGE_COLOR = \"#132232\";\nexport const CAD_EDGE_HIGHLIGHT_COLOR = \"#8dc5ff\";\nexport const CAD_EDGE_CLASS_IDS = Object.freeze([\"feature\", \"tangent\", \"seam\", \"degenerate\"]);\n\nexport const DEFAULT_DISPLAY_EDGE_CLASS_SETTINGS = Object.freeze({\n feature: Object.freeze({\n color: CAD_EDGE_COLOR,\n opacity: 1,\n thickness: 1.15\n }),\n tangent: Object.freeze({\n color: CAD_EDGE_COLOR,\n opacity: 0.5,\n thickness: 1.15\n }),\n seam: Object.freeze({\n color: CAD_EDGE_COLOR,\n opacity: 0.85,\n thickness: 1.15\n }),\n degenerate: Object.freeze({\n color: CAD_EDGE_COLOR,\n opacity: 1,\n thickness: 0\n })\n});\n\nexport const DEFAULT_DISPLAY_EDGE_SETTINGS = Object.freeze({\n enabled: true,\n contrastMode: \"manual\",\n color: CAD_EDGE_COLOR,\n thickness: 1,\n classes: DEFAULT_DISPLAY_EDGE_CLASS_SETTINGS,\n highlightColor: CAD_EDGE_HIGHLIGHT_COLOR,\n highlightOpacity: 1,\n highlightThickness: 3,\n silhouette: false,\n silhouetteScale: 0\n});\n\nexport const DISABLED_DISPLAY_EDGE_SETTINGS = Object.freeze({\n ...DEFAULT_DISPLAY_EDGE_SETTINGS,\n enabled: false\n});\n\nexport const DEFAULT_EXPLODED_VIEW_SETTINGS = Object.freeze({\n enabled: false,\n axis: \"z\",\n direction: \"positive\",\n spacing: 1.45,\n depth: 1,\n keepBaseGrounded: true,\n mergeCoplanar: false,\n autoFrame: true\n});\n\nexport const DEFAULT_DISPLAY_SETTINGS = Object.freeze({\n projection: CAMERA_PROJECTION.ORTHOGRAPHIC,\n mode: CAD_DISPLAY_MODE.SOLID,\n clip: DEFAULT_STEP_CLIP_SETTINGS,\n exploded: DEFAULT_EXPLODED_VIEW_SETTINGS,\n edges: DEFAULT_DISPLAY_EDGE_SETTINGS\n});\n\nfunction isObject(value) {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeNumber(value, fallback, min = -Infinity, max = Infinity) {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue)) {\n return fallback;\n }\n return clamp(numericValue, min, max);\n}\n\nfunction normalizeColor(value, fallback) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return fallback;\n }\n return normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`.toLowerCase()\n : normalized.toLowerCase();\n}\n\nfunction normalizeBoolean(value, fallback = false) {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nfunction normalizeDisplayEdgeContrastMode(value, fallback = \"manual\") {\n const normalized = String(value || \"\").trim().toLowerCase();\n return [\"auto\", \"manual\"].includes(normalized)\n ? normalized\n : fallback;\n}\n\nexport function normalizeDisplayEdgeClassSettings(\n value = {},\n fallback = DEFAULT_DISPLAY_EDGE_CLASS_SETTINGS,\n colorFallback = CAD_EDGE_COLOR\n) {\n const source = isObject(value) ? value : {};\n const fallbackColor = normalizeColor(colorFallback, CAD_EDGE_COLOR);\n return Object.fromEntries(CAD_EDGE_CLASS_IDS.map((classId) => {\n const classSource = isObject(source[classId]) ? source[classId] : {};\n const classFallback = fallback?.[classId] || DEFAULT_DISPLAY_EDGE_CLASS_SETTINGS[classId];\n const legacyDisabled = classSource.enabled === false;\n return [classId, {\n color: normalizeColor(classSource.color, fallbackColor),\n opacity: normalizeNumber(classSource.opacity, classFallback.opacity, 0, 1),\n thickness: legacyDisabled\n ? 0\n : normalizeNumber(classSource.thickness, classFallback.thickness, 0, 6)\n }];\n }));\n}\n\nexport function normalizeDisplayEdgeSettings(value = null, fallback = DEFAULT_DISPLAY_EDGE_SETTINGS) {\n const source = isObject(value) ? value : {};\n const color = normalizeColor(source.color, fallback.color);\n const normalized = {\n enabled: normalizeBoolean(source.enabled, fallback.enabled),\n contrastMode: normalizeDisplayEdgeContrastMode(source.contrastMode, fallback.contrastMode),\n color,\n thickness: normalizeNumber(source.thickness, fallback.thickness, 0.5, 6),\n classes: normalizeDisplayEdgeClassSettings(source.classes, fallback.classes, color),\n highlightColor: normalizeColor(source.highlightColor, fallback.highlightColor || CAD_EDGE_HIGHLIGHT_COLOR),\n highlightOpacity: normalizeNumber(source.highlightOpacity, fallback.highlightOpacity || 1, 0, 1),\n highlightThickness: normalizeNumber(source.highlightThickness, fallback.highlightThickness || 3, 0.5, 6),\n silhouette: normalizeBoolean(source.silhouette, fallback.silhouette || false),\n silhouetteScale: normalizeNumber(source.silhouetteScale, fallback.silhouetteScale || 0, 0, 0.04)\n };\n if (typeof source.depthTest === \"boolean\") {\n normalized.depthTest = source.depthTest;\n }\n return normalized;\n}\n\nfunction normalizeModeText(value) {\n return String(value || \"\").trim().toLowerCase().replace(/\\s+/g, \"_\").replace(/-/g, \"_\");\n}\n\nexport function normalizeDisplayMode(value) {\n const normalized = normalizeModeText(value);\n if (!normalized) {\n return CAD_DISPLAY_MODE.SOLID;\n }\n if (normalized === \"wire\" || normalized === \"wire_frame\") {\n return CAD_DISPLAY_MODE.WIREFRAME;\n }\n if (\n normalized === \"edges\" ||\n normalized === \"edge\" ||\n normalized === \"shaded_edges\" ||\n normalized === \"shaded_with_edges\" ||\n normalized === \"with_edges\"\n ) {\n return CAD_DISPLAY_MODE.SOLID;\n }\n if (\n normalized === \"shaded\" ||\n normalized === \"shaded_without_edges\" ||\n normalized === \"without_edges\"\n ) {\n return CAD_DISPLAY_MODE.RENDERED;\n }\n if (\n normalized === \"translucent\" ||\n normalized === \"xray\" ||\n normalized === \"x_ray\" ||\n normalized === \"see_through\"\n ) {\n return CAD_DISPLAY_MODE.TRANSPARENT;\n }\n if (\n normalized === \"hidden_edge\" ||\n normalized === \"hidden_edges_visible\" ||\n normalized === \"hidden_edge_display\" ||\n normalized === \"shaded_hidden_edges\"\n ) {\n return CAD_DISPLAY_MODE.HIDDEN_EDGES;\n }\n if (\n normalized === \"visible_edges\" ||\n normalized === \"visible_edges_only\" ||\n normalized === \"hidden_lines\" ||\n normalized === \"hidden_line_removed\" ||\n normalized === \"hidden_lines_removed\" ||\n normalized === \"hidden_edges_removed\"\n ) {\n return CAD_DISPLAY_MODE.HIDDEN_LINES_REMOVED;\n }\n if (normalized === \"flat\") {\n return CAD_DISPLAY_MODE.UNSHADED;\n }\n if (normalized === \"appearance\" || normalized === \"material\" || normalized === \"materials\") {\n return CAD_DISPLAY_MODE.RENDERED;\n }\n return CAD_DISPLAY_MODE_VALUES.includes(normalized)\n ? normalized\n : CAD_DISPLAY_MODE.SOLID;\n}\n\nexport function normalizeExplodedViewAxis(value, fallback = DEFAULT_EXPLODED_VIEW_SETTINGS.axis) {\n const normalized = String(value || \"\").trim().toLowerCase();\n const axis = normalized.startsWith(\"-\") ? normalized.slice(1) : normalized;\n return EXPLODED_VIEW_AXES.includes(axis) ? axis : fallback;\n}\n\nexport function normalizeExplodedViewDirection(value, fallback = DEFAULT_EXPLODED_VIEW_SETTINGS.direction) {\n const normalized = String(value || \"\").trim().toLowerCase();\n if ([\"negative\", \"reverse\", \"down\", \"backward\", \"-\", \"-1\"].includes(normalized)) {\n return \"negative\";\n }\n if ([\"positive\", \"forward\", \"up\", \"+\", \"+1\", \"1\"].includes(normalized)) {\n return \"positive\";\n }\n return fallback;\n}\n\nexport function normalizeExplodedViewDepth(value, fallback = DEFAULT_EXPLODED_VIEW_SETTINGS.depth) {\n const normalized = String(value ?? \"\").trim().toLowerCase();\n if ([\"all\", \"full\", \"parts\", \"leaves\", \"leaf\"].includes(normalized)) {\n return MAX_EXPLODED_VIEW_DEPTH;\n }\n const numericValue = Math.round(Number(value));\n return Number.isFinite(numericValue)\n ? clamp(numericValue, 1, MAX_EXPLODED_VIEW_DEPTH)\n : fallback;\n}\n\nexport function normalizeExplodedViewSettings(value = null, overrides = {}) {\n const source = isObject(value) ? value : {};\n const merged = isObject(overrides) ? { ...source, ...overrides } : source;\n const axisText = String(merged.axis || \"\").trim().toLowerCase();\n return {\n enabled: normalizeBoolean(merged.enabled, DEFAULT_EXPLODED_VIEW_SETTINGS.enabled),\n axis: normalizeExplodedViewAxis(merged.axis),\n direction: normalizeExplodedViewDirection(merged.direction || (axisText.startsWith(\"-\") ? \"negative\" : \"positive\")),\n spacing: normalizeNumber(merged.spacing ?? merged.distance ?? merged.distanceScale, DEFAULT_EXPLODED_VIEW_SETTINGS.spacing, 0.25, 4),\n depth: normalizeExplodedViewDepth(merged.depth ?? merged.levels ?? merged.scopeDepth),\n keepBaseGrounded: normalizeBoolean(merged.keepBaseGrounded ?? merged.groundBase, DEFAULT_EXPLODED_VIEW_SETTINGS.keepBaseGrounded),\n mergeCoplanar: normalizeBoolean(merged.mergeCoplanar ?? merged.mergeLayers ?? merged.coalesceLayers, DEFAULT_EXPLODED_VIEW_SETTINGS.mergeCoplanar),\n autoFrame: normalizeBoolean(merged.autoFrame, DEFAULT_EXPLODED_VIEW_SETTINGS.autoFrame)\n };\n}\n\nexport function normalizeDisplaySettings(value = null) {\n const source = isObject(value) ? value : {};\n const explodedOverrides = {};\n if (isObject(source.exploded) && source.exploded.enabled !== undefined) {\n explodedOverrides.enabled = source.exploded.enabled;\n }\n return {\n projection: normalizeCameraProjection(source.projection, DEFAULT_DISPLAY_SETTINGS.projection),\n mode: normalizeDisplayMode(source.mode),\n clip: normalizeStepClipSettings(source.clip),\n exploded: normalizeExplodedViewSettings(source.exploded, explodedOverrides),\n edges: normalizeDisplayEdgeSettings(source.edges)\n };\n}\n\nexport function cloneDisplaySettings(value = DEFAULT_DISPLAY_SETTINGS) {\n return normalizeDisplaySettings(value);\n}\n\nexport function displaySettingsEqual(left, right) {\n const a = normalizeDisplaySettings(left);\n const b = normalizeDisplaySettings(right);\n return a.projection === b.projection &&\n a.mode === b.mode &&\n stepClipSettingsEqual(a.clip, b.clip) &&\n JSON.stringify(a.exploded) === JSON.stringify(b.exploded) &&\n JSON.stringify(a.edges) === JSON.stringify(b.edges);\n}\n\nexport function resolveDisplayMode(displaySettings) {\n return normalizeDisplaySettings(displaySettings).mode;\n}\n\nexport function resolveDisplayEdgeSettings(displaySettings) {\n return normalizeDisplaySettings(displaySettings).edges;\n}\n\nexport function displayModeIsWireframe(value) {\n return normalizeDisplayMode(value) === CAD_DISPLAY_MODE.WIREFRAME;\n}\n\nexport function displayModeForcesEdges(value) {\n return [\n CAD_DISPLAY_MODE.SOLID,\n CAD_DISPLAY_MODE.TRANSPARENT,\n CAD_DISPLAY_MODE.HIDDEN_EDGES,\n CAD_DISPLAY_MODE.HIDDEN_LINES_REMOVED\n ].includes(normalizeDisplayMode(value));\n}\n\nexport function displayModeAllowsEdges(value) {\n return ![\n CAD_DISPLAY_MODE.RENDERED,\n CAD_DISPLAY_MODE.UNSHADED\n ].includes(normalizeDisplayMode(value));\n}\n\nexport function displayModeShowsEdges(value, edgeSettings = null) {\n const mode = normalizeDisplayMode(value);\n return mode === CAD_DISPLAY_MODE.WIREFRAME ||\n displayModeForcesEdges(mode);\n}\n\nexport function displayModeShowsThroughEdges(value) {\n return [\n CAD_DISPLAY_MODE.TRANSPARENT,\n CAD_DISPLAY_MODE.HIDDEN_EDGES\n ].includes(normalizeDisplayMode(value));\n}\n\nexport function displayModeUsesTransparentSurfaces(value) {\n return [\n CAD_DISPLAY_MODE.TRANSPARENT,\n CAD_DISPLAY_MODE.HIDDEN_LINES_REMOVED,\n CAD_DISPLAY_MODE.WIREFRAME\n ].includes(normalizeDisplayMode(value));\n}\n\nexport function displayModeUsesUnlitSurfaces(value) {\n return [\n CAD_DISPLAY_MODE.UNSHADED,\n CAD_DISPLAY_MODE.HIDDEN_LINES_REMOVED,\n CAD_DISPLAY_MODE.WIREFRAME\n ].includes(normalizeDisplayMode(value));\n}\n\nexport function displayModeSurfaceOpacity(value, fallback = 1) {\n const mode = normalizeDisplayMode(value);\n if (mode === CAD_DISPLAY_MODE.WIREFRAME) {\n return 0.035;\n }\n if (mode === CAD_DISPLAY_MODE.TRANSPARENT) {\n return 0.22;\n }\n if (mode === CAD_DISPLAY_MODE.HIDDEN_LINES_REMOVED) {\n return 0.045;\n }\n const numericFallback = Number(fallback);\n return Number.isFinite(numericFallback) ? numericFallback : 1;\n}\n","function isFloat32Array(value) {\n return value instanceof Float32Array;\n}\n\nfunction isUint32Array(value) {\n return value instanceof Uint32Array;\n}\n\nfunction pointDistance(left, right) {\n return Math.hypot(\n Number(right?.[0] || 0) - Number(left?.[0] || 0),\n Number(right?.[1] || 0) - Number(left?.[1] || 0),\n Number(right?.[2] || 0) - Number(left?.[2] || 0)\n );\n}\n\nfunction boundsForPolylines(polylines) {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n for (const positions of polylines) {\n for (let offset = 0; offset + 2 < positions.length; offset += 3) {\n min[0] = Math.min(min[0], positions[offset]);\n min[1] = Math.min(min[1], positions[offset + 1]);\n min[2] = Math.min(min[2], positions[offset + 2]);\n max[0] = Math.max(max[0], positions[offset]);\n max[1] = Math.max(max[1], positions[offset + 1]);\n max[2] = Math.max(max[2], positions[offset + 2]);\n }\n }\n if (!Number.isFinite(min[0]) || !Number.isFinite(max[0])) {\n return null;\n }\n return { min, max };\n}\n\nfunction stitchToleranceForPolylines(polylines) {\n const bounds = boundsForPolylines(polylines);\n if (!bounds) {\n return 1e-5;\n }\n return Math.max(1e-5, pointDistance(bounds.min, bounds.max) * 1e-7);\n}\n\nfunction pointFromProxy(proxy, vertexIndex) {\n const offset = Number(vertexIndex) * 3;\n if (\n !Number.isInteger(vertexIndex) ||\n offset < 0 ||\n offset + 2 >= proxy.edgePositions.length\n ) {\n return null;\n }\n return [\n proxy.edgePositions[offset],\n proxy.edgePositions[offset + 1],\n proxy.edgePositions[offset + 2]\n ];\n}\n\nfunction normalizePartIdSet(value) {\n return new Set(\n (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean)\n );\n}\n\nfunction normalizeVisibilityClassSet(value) {\n const values = (Array.isArray(value) ? value : [value])\n .map((item) => String(item || \"\").trim().toLowerCase())\n .filter(Boolean);\n return values.length ? new Set(values) : null;\n}\n\nfunction occurrenceMatchesPartIds(occurrenceId, partIds) {\n const normalizedOccurrenceId = String(occurrenceId || \"\").trim();\n if (!normalizedOccurrenceId || !partIds?.size) {\n return false;\n }\n for (const partId of partIds) {\n if (normalizedOccurrenceId === partId || normalizedOccurrenceId.startsWith(`${partId}.`)) {\n return true;\n }\n }\n return false;\n}\n\nfunction edgeRowMatchesPartIds(row, partIds) {\n return occurrenceMatchesPartIds(row?.occurrenceId || row?.partId || row?.id, partIds);\n}\n\nfunction edgeRowPassesPartFilter(row, includePartIds, excludePartIds) {\n if (includePartIds.size && !edgeRowMatchesPartIds(row, includePartIds)) {\n return false;\n }\n if (excludePartIds.size && edgeRowMatchesPartIds(row, excludePartIds)) {\n return false;\n }\n return true;\n}\n\nfunction edgeRowPassesVisibilityClassFilter(row, visibilityClasses) {\n if (!visibilityClasses?.size) {\n return true;\n }\n const visibilityClass = String(row?.visibilityClass || \"feature\").trim().toLowerCase() || \"feature\";\n return visibilityClasses.has(visibilityClass);\n}\n\nfunction edgeRowPassesFilters(row, includePartIds, excludePartIds, visibilityClasses) {\n return (\n edgeRowPassesPartFilter(row, includePartIds, excludePartIds) &&\n edgeRowPassesVisibilityClassFilter(row, visibilityClasses)\n );\n}\n\nfunction pushPoint(target, point, tolerance = 1e-7) {\n if (!point) {\n return;\n }\n const last = target.length >= 3\n ? [target[target.length - 3], target[target.length - 2], target[target.length - 1]]\n : null;\n if (!last || pointDistance(last, point) > tolerance) {\n target.push(point[0], point[1], point[2]);\n }\n}\n\nfunction buildTopologyPolylinesForRun(proxy, segmentStart, segmentCount) {\n const polylines = [];\n let current = [];\n let lastPoint = null;\n for (let segmentIndex = segmentStart; segmentIndex < segmentStart + segmentCount; segmentIndex += 1) {\n const startVertexIndex = Number(proxy.edgeIndices[segmentIndex * 2]);\n const endVertexIndex = Number(proxy.edgeIndices[(segmentIndex * 2) + 1]);\n const startPoint = pointFromProxy(proxy, startVertexIndex);\n const endPoint = pointFromProxy(proxy, endVertexIndex);\n if (!startPoint || !endPoint || pointDistance(startPoint, endPoint) <= 1e-10) {\n continue;\n }\n if (lastPoint && pointDistance(lastPoint, startPoint) > 1e-5) {\n if (current.length >= 6) {\n polylines.push(new Float32Array(current));\n }\n current = [];\n lastPoint = null;\n }\n if (!lastPoint) {\n pushPoint(current, startPoint);\n }\n pushPoint(current, endPoint);\n lastPoint = endPoint;\n }\n if (current.length >= 6) {\n polylines.push(new Float32Array(current));\n }\n return polylines;\n}\n\nfunction buildTopologyPolylinesForEdgeId(proxy, edgeIds, rowIndex, segmentCount) {\n const polylines = [];\n let runStart = -1;\n let runCount = 0;\n const flushRun = () => {\n if (runStart >= 0 && runCount > 0) {\n polylines.push(...buildTopologyPolylinesForRun(proxy, runStart, runCount));\n }\n runStart = -1;\n runCount = 0;\n };\n for (let segmentIndex = 0; segmentIndex < segmentCount; segmentIndex += 1) {\n if (Number(edgeIds[segmentIndex]) === rowIndex) {\n if (runStart < 0) {\n runStart = segmentIndex;\n }\n runCount += 1;\n } else {\n flushRun();\n }\n }\n flushRun();\n return polylines;\n}\n\nfunction polylinePoint(positions, vertexIndex) {\n const offset = vertexIndex * 3;\n return [\n positions[offset],\n positions[offset + 1],\n positions[offset + 2]\n ];\n}\n\nfunction polylineStart(positions) {\n return polylinePoint(positions, 0);\n}\n\nfunction polylineEnd(positions) {\n return polylinePoint(positions, Math.floor(positions.length / 3) - 1);\n}\n\nfunction reversePolyline(positions) {\n const reversed = [];\n for (let offset = positions.length - 3; offset >= 0; offset -= 3) {\n reversed.push(positions[offset], positions[offset + 1], positions[offset + 2]);\n }\n return reversed;\n}\n\nfunction appendPolyline(target, source, { skipFirst = true, tolerance = 1e-7 } = {}) {\n const startOffset = skipFirst ? 3 : 0;\n for (let offset = startOffset; offset + 2 < source.length; offset += 3) {\n pushPoint(target, [source[offset], source[offset + 1], source[offset + 2]], tolerance);\n }\n}\n\nfunction closePolylineIfNeeded(positions, tolerance) {\n if (positions.length < 12) {\n return positions;\n }\n const start = polylineStart(positions);\n const end = polylineEnd(positions);\n if (pointDistance(start, end) > tolerance) {\n return positions;\n }\n const output = Array.from(positions);\n output[output.length - 3] = output[0];\n output[output.length - 2] = output[1];\n output[output.length - 1] = output[2];\n return new Float32Array(output);\n}\n\nexport function stitchTopologyDisplayEdgePolylines(polylines) {\n if (!Array.isArray(polylines) || polylines.length <= 1) {\n return polylines || [];\n }\n const tolerance = stitchToleranceForPolylines(polylines);\n const chains = polylines\n .filter((positions) => positions?.length >= 6)\n .map((positions) => Array.from(positions));\n for (let index = 0; index < chains.length; index += 1) {\n let changed = true;\n while (changed) {\n changed = false;\n for (let candidateIndex = index + 1; candidateIndex < chains.length; candidateIndex += 1) {\n const current = chains[index];\n const candidate = chains[candidateIndex];\n const currentStart = polylineStart(current);\n const currentEnd = polylineEnd(current);\n const candidateStart = polylineStart(candidate);\n const candidateEnd = polylineEnd(candidate);\n let merged = null;\n if (pointDistance(currentEnd, candidateStart) <= tolerance) {\n merged = [...current];\n appendPolyline(merged, candidate, { tolerance });\n } else if (pointDistance(currentEnd, candidateEnd) <= tolerance) {\n merged = [...current];\n appendPolyline(merged, reversePolyline(candidate), { tolerance });\n } else if (pointDistance(currentStart, candidateEnd) <= tolerance) {\n merged = [...candidate];\n appendPolyline(merged, current, { tolerance });\n } else if (pointDistance(currentStart, candidateStart) <= tolerance) {\n merged = reversePolyline(candidate);\n appendPolyline(merged, current, { tolerance });\n }\n if (merged) {\n chains[index] = merged;\n chains.splice(candidateIndex, 1);\n changed = true;\n break;\n }\n }\n }\n }\n return chains\n .filter((positions) => positions.length >= 6)\n .map((positions) => closePolylineIfNeeded(new Float32Array(positions), tolerance));\n}\n\nexport function hasTopologyDisplayEdgeProxy(selectorRuntime) {\n const proxy = selectorRuntime?.proxy || {};\n return (\n isFloat32Array(proxy.edgePositions) &&\n isUint32Array(proxy.edgeIndices) &&\n proxy.edgePositions.length >= 6 &&\n proxy.edgeIndices.length >= 2\n );\n}\n\nexport function hasTopologyDisplayEdgeClassification(selectorRuntime) {\n return hasTopologyDisplayEdgeProxy(selectorRuntime);\n}\n\nexport function shouldUseTopologyDisplayEdges(selectorRuntime) {\n return !selectorRuntime?.surfaceEdgeRendering &&\n Number(selectorRuntime?.schemaVersion || 0) < 3 &&\n hasTopologyDisplayEdgeProxy(selectorRuntime);\n}\n\nexport function buildTopologyDisplayEdgePositions(selectorRuntime, {\n includePartIds = [],\n excludePartIds = [],\n visibilityClasses = null\n} = {}) {\n if (!hasTopologyDisplayEdgeProxy(selectorRuntime)) {\n return null;\n }\n const proxy = selectorRuntime.proxy;\n const segmentCount = Math.floor(proxy.edgeIndices.length / 2);\n if (segmentCount <= 0) {\n return null;\n }\n const includePartIdSet = normalizePartIdSet(includePartIds);\n const excludePartIdSet = normalizePartIdSet(excludePartIds);\n const hasPartFilter = includePartIdSet.size > 0 || excludePartIdSet.size > 0;\n const visibilityClassSet = normalizeVisibilityClassSet(visibilityClasses);\n const edgeRows = Array.isArray(selectorRuntime.edges) ? selectorRuntime.edges : [];\n const hasVisibilityClassFilter = Boolean(visibilityClassSet?.size && edgeRows.length);\n const hasEdgeRowFilter = hasPartFilter || hasVisibilityClassFilter;\n const edgeIds = isUint32Array(proxy.edgeIds) ? proxy.edgeIds : null;\n const linePositions = new Float32Array(segmentCount * 6);\n let writeOffset = 0;\n\n const writeSegment = (segmentIndex) => {\n const startVertexIndex = Number(proxy.edgeIndices[segmentIndex * 2]);\n const endVertexIndex = Number(proxy.edgeIndices[(segmentIndex * 2) + 1]);\n const startPoint = pointFromProxy(proxy, startVertexIndex);\n const endPoint = pointFromProxy(proxy, endVertexIndex);\n if (!startPoint || !endPoint || pointDistance(startPoint, endPoint) <= 1e-10) {\n return;\n }\n linePositions[writeOffset] = startPoint[0];\n linePositions[writeOffset + 1] = startPoint[1];\n linePositions[writeOffset + 2] = startPoint[2];\n linePositions[writeOffset + 3] = endPoint[0];\n linePositions[writeOffset + 4] = endPoint[1];\n linePositions[writeOffset + 5] = endPoint[2];\n writeOffset += 6;\n };\n\n if (hasEdgeRowFilter) {\n if (!edgeRows.length) {\n return null;\n }\n for (let rowIndex = 0; rowIndex < edgeRows.length; rowIndex += 1) {\n const row = edgeRows[rowIndex];\n if (!edgeRowPassesFilters(row, includePartIdSet, excludePartIdSet, visibilityClassSet)) {\n continue;\n }\n const start = Number(row?.segmentStart || 0);\n const count = Number(row?.segmentCount || 0);\n if (Number.isInteger(start) && Number.isInteger(count) && start >= 0 && count > 0 && start + count <= segmentCount) {\n for (let segmentIndex = start; segmentIndex < start + count; segmentIndex += 1) {\n writeSegment(segmentIndex);\n }\n continue;\n }\n if (edgeIds) {\n for (let segmentIndex = 0; segmentIndex < segmentCount; segmentIndex += 1) {\n if (Number(edgeIds[segmentIndex]) === rowIndex) {\n writeSegment(segmentIndex);\n }\n }\n }\n }\n } else {\n for (let segmentIndex = 0; segmentIndex < segmentCount; segmentIndex += 1) {\n writeSegment(segmentIndex);\n }\n }\n\n if (writeOffset <= 0) {\n return null;\n }\n return writeOffset === linePositions.length ? linePositions : linePositions.subarray(0, writeOffset);\n}\n\nexport function buildTopologyDisplayEdgePolylines(selectorRuntime, {\n includePartIds = [],\n excludePartIds = [],\n visibilityClasses = null\n} = {}) {\n if (!hasTopologyDisplayEdgeProxy(selectorRuntime)) {\n return [];\n }\n const proxy = selectorRuntime.proxy;\n const segmentCount = Math.floor(proxy.edgeIndices.length / 2);\n if (segmentCount <= 0) {\n return [];\n }\n\n const edgeRows = Array.isArray(selectorRuntime.edges) ? selectorRuntime.edges : [];\n const edgeIds = isUint32Array(proxy.edgeIds) ? proxy.edgeIds : null;\n const includePartIdSet = normalizePartIdSet(includePartIds);\n const excludePartIdSet = normalizePartIdSet(excludePartIds);\n const hasPartFilter = includePartIdSet.size > 0 || excludePartIdSet.size > 0;\n const visibilityClassSet = normalizeVisibilityClassSet(visibilityClasses);\n const hasVisibilityClassFilter = Boolean(visibilityClassSet?.size && edgeRows.length);\n const hasEdgeRowFilter = hasPartFilter || hasVisibilityClassFilter;\n const polylines = [];\n\n if (edgeRows.length) {\n for (let rowIndex = 0; rowIndex < edgeRows.length; rowIndex += 1) {\n const row = edgeRows[rowIndex];\n if (!row) {\n continue;\n }\n if (!edgeRowPassesFilters(row, includePartIdSet, excludePartIdSet, visibilityClassSet)) {\n continue;\n }\n const start = Number(row.segmentStart || 0);\n const count = Number(row.segmentCount || 0);\n if (Number.isInteger(start) && Number.isInteger(count) && start >= 0 && count > 0 && start + count <= segmentCount) {\n polylines.push(...buildTopologyPolylinesForRun(proxy, start, count));\n } else if (edgeIds) {\n polylines.push(...buildTopologyPolylinesForEdgeId(proxy, edgeIds, rowIndex, segmentCount));\n }\n }\n return stitchTopologyDisplayEdgePolylines(polylines);\n }\n\n if (hasEdgeRowFilter) {\n return [];\n }\n\n for (let segmentIndex = 0; segmentIndex < segmentCount; segmentIndex += 1) {\n const rowIndex = edgeIds ? Number(edgeIds[segmentIndex]) : -1;\n void rowIndex;\n\n polylines.push(...buildTopologyPolylinesForRun(proxy, segmentIndex, 1));\n }\n\n return stitchTopologyDisplayEdgePolylines(polylines);\n}\n","import {\n buildTopologyDisplayEdgePolylines,\n buildTopologyDisplayEdgePositions\n} from \"./topologyDisplayEdges.js\";\nimport {\n displayModeIsWireframe\n} from \"./displaySettings.js\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nconst DEFAULT_LINE_DEPTH_BIAS = 0;\n// Keep topology edges slightly above coplanar faces without letting nearby solids lose the depth test.\nexport const TOPOLOGY_LINE_DEPTH_BIAS = 0.0045;\nconst TOPOLOGY_LINE_DEPTH_BIAS_PER_EXTRA_PIXEL = 0.00025;\nconst MAX_TOPOLOGY_LINE_DEPTH_BIAS = 0.006;\nconst COPLANAR_TOPOLOGY_EDGE_CLASSES = new Set([\"tangent\", \"seam\"]);\nconst COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS = 0.006;\nconst COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS_PER_EXTRA_PIXEL = 0.00025;\nconst MAX_COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS = 0.008;\nconst DEFAULT_VISIBLE_TOPOLOGY_EDGE_CLASSES = Object.freeze([\"feature\"]);\nconst TOPOLOGY_EDGE_CLASS_ORDER = Object.freeze([\"feature\", \"tangent\", \"seam\", \"degenerate\"]);\nconst MAX_TOPOLOGY_LINE_STRIP_POLYLINES = 1200;\nconst MAX_TOPOLOGY_LINE_STRIP_POSITION_VALUES = 180000;\nconst HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\nconst DEFAULT_TOPOLOGY_EDGE_CLASS_SETTINGS = Object.freeze({\n feature: Object.freeze({ color: \"#132232\", opacity: 1, thickness: 1.15 }),\n tangent: Object.freeze({ color: \"#132232\", opacity: 0.5, thickness: 1.15 }),\n seam: Object.freeze({ color: \"#132232\", opacity: 0.85, thickness: 1.15 }),\n degenerate: Object.freeze({ color: \"#132232\", opacity: 1, thickness: 0 })\n});\n\nexport function topologyLineDepthBiasForWidth(lineWidth = 1, { visibilityClass = \"\" } = {}) {\n const width = Number.isFinite(Number(lineWidth))\n ? Math.max(1, Number(lineWidth))\n : 1;\n const normalizedClass = String(visibilityClass || \"\").trim().toLowerCase();\n const baseBias = COPLANAR_TOPOLOGY_EDGE_CLASSES.has(normalizedClass)\n ? COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS\n : TOPOLOGY_LINE_DEPTH_BIAS;\n const biasPerExtraPixel = COPLANAR_TOPOLOGY_EDGE_CLASSES.has(normalizedClass)\n ? COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS_PER_EXTRA_PIXEL\n : TOPOLOGY_LINE_DEPTH_BIAS_PER_EXTRA_PIXEL;\n const maxBias = COPLANAR_TOPOLOGY_EDGE_CLASSES.has(normalizedClass)\n ? MAX_COPLANAR_TOPOLOGY_LINE_DEPTH_BIAS\n : MAX_TOPOLOGY_LINE_DEPTH_BIAS;\n return clamp(\n baseBias + Math.max(0, width - 1) * biasPerExtraPixel,\n baseBias,\n maxBias\n );\n}\n\nexport function lineSegmentPositionsFromGeometry(geometry) {\n const positionAttribute = geometry?.getAttribute?.(\"position\");\n const rawPositions = positionAttribute?.array;\n if (!positionAttribute?.count || !rawPositions?.length) {\n return null;\n }\n return rawPositions;\n}\n\nexport function syncLineMaterialOpacity(material, opacity) {\n if (!material) {\n return;\n }\n const nextOpacity = clamp(Number(opacity) || 0, 0, 1);\n const nextTransparent = nextOpacity < 0.999;\n material.opacity = nextOpacity;\n material.depthWrite = false;\n if (material.transparent !== nextTransparent) {\n material.transparent = nextTransparent;\n material.needsUpdate = true;\n }\n}\n\nexport function syncScreenSpaceLineMaterialResolution(materials, width, height) {\n const nextWidth = Math.max(1, Math.floor(Number(width) || 1));\n const nextHeight = Math.max(1, Math.floor(Number(height) || 1));\n for (const material of materials || []) {\n material?.resolution?.set?.(nextWidth, nextHeight);\n }\n}\n\nfunction registerLineMaterial(context = {}, material, materials = null) {\n materials?.add?.(material);\n context.registerScreenSpaceLineMaterial?.(material);\n}\n\nfunction unregisterLineMaterial(context = {}, material, materials = null) {\n materials?.delete?.(material);\n context.unregisterScreenSpaceLineMaterial?.(material);\n}\n\nfunction normalizePartIds(value) {\n return (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean);\n}\n\nfunction occurrenceMatchesPartIds(occurrenceId, partIds = []) {\n const normalizedOccurrenceId = String(occurrenceId || \"\").trim();\n if (!normalizedOccurrenceId || !partIds.length) {\n return false;\n }\n return partIds.some((partId) => (\n normalizedOccurrenceId === partId ||\n normalizedOccurrenceId.startsWith(`${partId}.`)\n ));\n}\n\nfunction topologyEdgeRowMatchesPartIds(row, partIds = []) {\n return occurrenceMatchesPartIds(row?.occurrenceId || row?.partId || row?.id, partIds);\n}\n\nfunction topologyEdgeRowMatchesLineStripFilters(row, {\n includePartIds = [],\n excludePartIds = [],\n visibilityClasses = []\n} = {}) {\n if (includePartIds.length && !topologyEdgeRowMatchesPartIds(row, includePartIds)) {\n return false;\n }\n if (excludePartIds.length && topologyEdgeRowMatchesPartIds(row, excludePartIds)) {\n return false;\n }\n if (visibilityClasses.length) {\n const visibilityClass = String(row?.visibilityClass || \"feature\").trim().toLowerCase() || \"feature\";\n if (!visibilityClasses.includes(visibilityClass)) {\n return false;\n }\n }\n return true;\n}\n\nfunction shouldBuildTopologyLineStrips(selectorRuntime, filters = {}) {\n const edgeRows = Array.isArray(selectorRuntime?.edges) ? selectorRuntime.edges : [];\n if (!edgeRows.length) {\n return false;\n }\n let polylineCount = 0;\n let positionValueCount = 0;\n for (const row of edgeRows) {\n if (!topologyEdgeRowMatchesLineStripFilters(row, filters)) {\n continue;\n }\n const segmentCount = Number.isFinite(Number(row?.segmentCount))\n ? Math.max(1, Number(row.segmentCount))\n : 1;\n polylineCount += 1;\n positionValueCount += (segmentCount + 1) * 3;\n if (\n polylineCount > MAX_TOPOLOGY_LINE_STRIP_POLYLINES ||\n positionValueCount > MAX_TOPOLOGY_LINE_STRIP_POSITION_VALUES\n ) {\n return false;\n }\n }\n return polylineCount > 0;\n}\n\nfunction normalizeVisibilityClasses(value, fallback = DEFAULT_VISIBLE_TOPOLOGY_EDGE_CLASSES) {\n const values = (Array.isArray(value) ? value : [value])\n .map((item) => String(item || \"\").trim().toLowerCase())\n .filter(Boolean);\n return values.length ? values : fallback;\n}\n\nfunction normalizeColor(value, fallback) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return fallback;\n }\n return normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`.toLowerCase()\n : normalized.toLowerCase();\n}\n\nfunction normalizeTopologyEdgeClassSettings(edgeSettings = {}, baseTheme = {}, fallbackClasses = DEFAULT_VISIBLE_TOPOLOGY_EDGE_CLASSES) {\n const classSettings = edgeSettings?.classes && typeof edgeSettings.classes === \"object\"\n ? edgeSettings.classes\n : null;\n const explicitVisibilityClasses = classSettings\n ? []\n : normalizeVisibilityClasses(edgeSettings?.visibilityClasses, fallbackClasses);\n const baseOpacity = Number.isFinite(Number(edgeSettings?.opacity))\n ? clamp(Number(edgeSettings.opacity), 0, 1)\n : (baseTheme?.edgeOpacity ?? 0.84);\n const baseThickness = Number.isFinite(Number(edgeSettings?.thickness))\n ? clamp(Number(edgeSettings.thickness), 0.5, 6)\n : (baseTheme?.edgeThickness ?? 1);\n const baseColor = normalizeColor(edgeSettings?.color, baseTheme?.edge || \"#18181b\");\n\n if (!classSettings) {\n return explicitVisibilityClasses.map((classId) => ({\n classId,\n color: baseColor,\n opacity: baseOpacity,\n thickness: baseThickness\n }));\n }\n\n return TOPOLOGY_EDGE_CLASS_ORDER\n .map((classId) => {\n const classValue = classSettings[classId] || DEFAULT_TOPOLOGY_EDGE_CLASS_SETTINGS[classId];\n const classOpacity = Number.isFinite(Number(classValue.opacity))\n ? clamp(Number(classValue.opacity), 0, 1)\n : DEFAULT_TOPOLOGY_EDGE_CLASS_SETTINGS[classId].opacity;\n const classThickness = Number.isFinite(Number(classValue.thickness))\n ? clamp(Number(classValue.thickness), 0, 6)\n : DEFAULT_TOPOLOGY_EDGE_CLASS_SETTINGS[classId].thickness;\n const classColor = normalizeColor(classValue.color, baseColor);\n if (classThickness <= 0 || classOpacity <= 0) {\n return null;\n }\n return {\n classId,\n color: classColor,\n opacity: classOpacity,\n thickness: classThickness\n };\n })\n .filter(Boolean);\n}\n\nfunction runtimeHasVisibilityClassRows(selectorRuntime) {\n return Array.isArray(selectorRuntime?.edges) &&\n selectorRuntime.edges.some((row) => String(row?.visibilityClass || \"\").trim());\n}\n\nexport function createScreenSpaceLineSegments(context = {}, positions, {\n color,\n opacity = 1,\n lineWidth = 1,\n renderOrder = 3,\n depthTest = true,\n depthWrite = false,\n depthBias = DEFAULT_LINE_DEPTH_BIAS\n} = {}, materials = null) {\n const LineSegments2 = context.LineSegments2;\n const LineSegmentsGeometry = context.LineSegmentsGeometry;\n const LineMaterial = context.LineMaterial;\n if (\n !LineSegments2 ||\n !LineSegmentsGeometry ||\n !LineMaterial ||\n !(Array.isArray(positions) || ArrayBuffer.isView(positions)) ||\n !positions.length\n ) {\n return null;\n }\n\n const lineGeometry = new LineSegmentsGeometry();\n lineGeometry.setPositions(positions);\n const lineMaterial = createScreenSpaceLineMaterial(LineMaterial, {\n color,\n opacity,\n lineWidth,\n depthTest,\n depthWrite,\n depthBias\n });\n registerLineMaterial(context, lineMaterial, materials);\n const line = new LineSegments2(lineGeometry, lineMaterial);\n line.renderOrder = renderOrder;\n line.frustumCulled = false;\n line.userData.beforeDispose = () => {\n unregisterLineMaterial(context, lineMaterial, materials);\n };\n line.userData.disposeGeometry = true;\n line.userData.disposeMaterial = true;\n return line;\n}\n\nfunction createScreenSpaceLineMaterial(LineMaterial, {\n color,\n opacity = 1,\n lineWidth = 1,\n depthTest = true,\n depthWrite = false,\n depthBias = DEFAULT_LINE_DEPTH_BIAS\n} = {}) {\n const lineMaterial = new LineMaterial({\n color,\n linewidth: lineWidth,\n opacity,\n depthTest,\n depthWrite,\n toneMapped: false,\n worldUnits: false\n });\n syncLineMaterialOpacity(lineMaterial, opacity);\n applyLineDepthBias(lineMaterial, depthBias);\n return lineMaterial;\n}\n\nexport function applyLineDepthBias(material, depthBias = DEFAULT_LINE_DEPTH_BIAS) {\n const bias = clamp(Number(depthBias) || 0, 0, 0.01);\n if (!material || bias <= 0) {\n return material;\n }\n material.polygonOffset = true;\n material.polygonOffsetFactor = 0;\n material.polygonOffsetUnits = -clamp(Math.round(bias * 1000), 1, 10);\n material.needsUpdate = true;\n return material;\n}\n\nexport function createScreenSpaceLineStrip(context = {}, positions, {\n color,\n opacity = 1,\n lineWidth = 1,\n renderOrder = 3,\n depthTest = true,\n depthWrite = false,\n depthBias = DEFAULT_LINE_DEPTH_BIAS\n} = {}, materials = null) {\n const Line2 = context.Line2;\n const LineGeometry = context.LineGeometry;\n const LineMaterial = context.LineMaterial;\n if (\n !Line2 ||\n !LineGeometry ||\n !LineMaterial ||\n !(Array.isArray(positions) || ArrayBuffer.isView(positions)) ||\n positions.length < 6\n ) {\n return null;\n }\n\n const lineGeometry = new LineGeometry();\n lineGeometry.setPositions(positions);\n const lineMaterial = createScreenSpaceLineMaterial(LineMaterial, {\n color,\n opacity,\n lineWidth,\n depthTest,\n depthWrite,\n depthBias\n });\n registerLineMaterial(context, lineMaterial, materials);\n const line = new Line2(lineGeometry, lineMaterial);\n line.renderOrder = renderOrder;\n line.frustumCulled = false;\n line.userData.beforeDispose = () => {\n unregisterLineMaterial(context, lineMaterial, materials);\n };\n line.userData.disposeGeometry = true;\n line.userData.disposeMaterial = true;\n return line;\n}\n\nexport function createBasicLineStrip(context = {}, positions, {\n color,\n opacity = 1,\n lineWidth = 1,\n renderOrder = 3,\n depthTest = true,\n depthWrite = false,\n depthBias = DEFAULT_LINE_DEPTH_BIAS\n} = {}) {\n const THREE = context.THREE;\n if (\n !THREE ||\n !(Array.isArray(positions) || ArrayBuffer.isView(positions)) ||\n positions.length < 6\n ) {\n return null;\n }\n\n const geometry = new THREE.BufferGeometry();\n const positionArray = positions instanceof Float32Array ? positions : new Float32Array(positions);\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(positionArray, 3));\n const material = new THREE.LineBasicMaterial({\n color,\n linewidth: Number.isFinite(Number(lineWidth)) ? Number(lineWidth) : 1,\n transparent: Number(opacity) < 0.999,\n opacity: clamp(Number(opacity) || 0, 0, 1),\n depthTest,\n depthWrite,\n toneMapped: false\n });\n applyLineDepthBias(material, depthBias);\n const line = new THREE.Line(geometry, material);\n line.renderOrder = renderOrder;\n line.frustumCulled = false;\n line.userData.disposeGeometry = true;\n line.userData.disposeMaterial = true;\n return line;\n}\n\nexport function createBasicLineSegments(context = {}, positions, {\n color,\n opacity = 1,\n renderOrder = 3,\n depthTest = true,\n depthWrite = false,\n depthBias = DEFAULT_LINE_DEPTH_BIAS\n} = {}) {\n const THREE = context.THREE;\n if (\n !THREE ||\n !(Array.isArray(positions) || ArrayBuffer.isView(positions)) ||\n positions.length < 6\n ) {\n return null;\n }\n\n const geometry = new THREE.BufferGeometry();\n const positionArray = positions instanceof Float32Array ? positions : new Float32Array(positions);\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(positionArray, 3));\n const material = new THREE.LineBasicMaterial({\n color,\n transparent: Number(opacity) < 0.999,\n opacity: clamp(Number(opacity) || 0, 0, 1),\n depthTest,\n depthWrite,\n toneMapped: false\n });\n applyLineDepthBias(material, depthBias);\n const line = new THREE.LineSegments(geometry, material);\n line.renderOrder = renderOrder;\n line.frustumCulled = false;\n line.userData.disposeGeometry = true;\n line.userData.disposeMaterial = true;\n return line;\n}\n\nexport function createScreenSpaceLineSegmentsFromGeometry(context, geometry, options, materials = null) {\n const positions = lineSegmentPositionsFromGeometry(geometry);\n return positions ? createScreenSpaceLineSegments(context, positions, options, materials) : null;\n}\n\nexport function createDisplayEdgeObject(context = {}, {\n geometry,\n edgeSettings,\n baseTheme,\n partId,\n displayMode,\n thickness,\n wireframeEdgeColor = \"\"\n}, materials = null) {\n const THREE = context.THREE;\n const wireframeMode = displayModeIsWireframe(displayMode);\n const depthTest = edgeSettings?.depthTest === false ? false : true;\n const edgeOpacity = Number.isFinite(Number(edgeSettings?.opacity))\n ? clamp(Number(edgeSettings.opacity), 0, 1)\n : (baseTheme?.edgeOpacity ?? 0.84);\n const color = wireframeMode\n ? (wireframeEdgeColor || edgeSettings?.color || baseTheme?.edge || \"#18181b\")\n : (edgeSettings?.color || baseTheme?.edge || \"#18181b\");\n if (wireframeMode && THREE) {\n const opacity = Math.max(edgeOpacity, 0.9);\n const material = new THREE.LineBasicMaterial({\n color,\n transparent: opacity < 0.999,\n opacity,\n depthTest: false,\n depthWrite: false,\n toneMapped: false\n });\n const line = new THREE.LineSegments(geometry, material);\n line.renderOrder = 4;\n line.frustumCulled = false;\n line.userData.partId = partId;\n return { edgeMesh: line, edgeMaterial: material };\n }\n\n const line = createScreenSpaceLineSegmentsFromGeometry(context, geometry, {\n color,\n opacity: edgeOpacity,\n lineWidth: Number.isFinite(Number(thickness)) ? Number(thickness) : 1,\n renderOrder: 3,\n depthTest,\n depthWrite: false,\n depthBias: topologyLineDepthBiasForWidth(thickness)\n }, materials);\n if (!line) {\n return { edgeMesh: null, edgeMaterial: null };\n }\n line.userData.partId = partId;\n return { edgeMesh: line, edgeMaterial: line.material };\n}\n\nexport function createTopologyDisplayEdgeObject(context = {}, selectorRuntime, edgeSettings, baseTheme, materials = null) {\n const includePartIds = normalizePartIds(edgeSettings?.includePartIds);\n const excludePartIds = normalizePartIds(edgeSettings?.excludePartIds);\n const focusedPartIds = normalizePartIds(edgeSettings?.focusedPartIds);\n const highlightPartIds = normalizePartIds(edgeSettings?.highlightPartIds);\n const edgeClassSettings = normalizeTopologyEdgeClassSettings(edgeSettings, baseTheme)\n .filter((classSetting) => (\n classSetting.classId === \"feature\" ||\n runtimeHasVisibilityClassRows(selectorRuntime)\n ));\n const visibilityClasses = edgeClassSettings.map((setting) => setting.classId);\n const edgeOpacity = Number.isFinite(Number(edgeSettings?.opacity))\n ? clamp(Number(edgeSettings.opacity), 0, 1)\n : (baseTheme?.edgeOpacity ?? 0.84);\n const highlightOpacity = Number.isFinite(Number(edgeSettings?.highlightOpacity))\n ? clamp(Number(edgeSettings.highlightOpacity), 0, 1)\n : edgeOpacity;\n const dimmedOpacity = Number.isFinite(Number(edgeSettings?.dimmedOpacity))\n ? clamp(Number(edgeSettings.dimmedOpacity), 0, 1)\n : edgeOpacity;\n const thickness = Number.isFinite(Number(edgeSettings?.thickness))\n ? clamp(Number(edgeSettings.thickness), 0.5, 6)\n : (baseTheme?.edgeThickness ?? 1);\n const baseOptions = {\n color: edgeSettings?.color || baseTheme?.edge || \"#18181b\",\n lineWidth: thickness,\n renderOrder: 3,\n depthTest: edgeSettings?.depthTest === false ? false : true,\n depthWrite: false,\n depthBias: topologyLineDepthBiasForWidth(thickness)\n };\n const createLine = (positions, options) => (\n createScreenSpaceLineSegments(context, positions, options, materials) ||\n createBasicLineSegments(context, positions, options)\n );\n const createLineStrip = (positions, options = {}) => {\n const lineWidth = Number.isFinite(Number(options.lineWidth)) ? Number(options.lineWidth) : 1;\n if (lineWidth <= 1.05) {\n return (\n createBasicLineStrip(context, positions, options) ||\n createScreenSpaceLineStrip(context, positions, options, materials)\n );\n }\n return (\n createScreenSpaceLineStrip(context, positions, options, materials) ||\n createBasicLineStrip(context, positions, options)\n );\n };\n const createClassGroup = (children) => {\n const lines = children.filter(Boolean);\n if (!lines.length) {\n return null;\n }\n if (lines.length === 1) {\n return lines[0];\n }\n const group = context.THREE ? new context.THREE.Group() : null;\n if (!group) {\n return lines[0];\n }\n for (const line of lines) {\n group.add(line);\n }\n return group;\n };\n const createLineStripGroup = (polylines, options) => {\n if (!context.THREE || !Array.isArray(polylines) || !polylines.length) {\n return null;\n }\n const positionValueCount = polylines.reduce((sum, positions) => sum + (positions?.length || 0), 0);\n if (\n polylines.length > MAX_TOPOLOGY_LINE_STRIP_POLYLINES ||\n positionValueCount > MAX_TOPOLOGY_LINE_STRIP_POSITION_VALUES\n ) {\n return null;\n }\n return createClassGroup(polylines.map((positions) => createLineStrip(positions, options)));\n };\n const createClassLine = (classSetting, options = {}) => {\n const lineWidth = Number.isFinite(Number(options.lineWidth))\n ? Number(options.lineWidth)\n : classSetting.thickness;\n const filters = {\n includePartIds: options.includePartIds || includePartIds,\n excludePartIds: options.excludePartIds || excludePartIds,\n visibilityClasses: [classSetting.classId]\n };\n const lineOptions = {\n ...baseOptions,\n ...options,\n color: options.color || classSetting.color || baseOptions.color,\n lineWidth,\n opacity: Number.isFinite(Number(options.opacity)) ? options.opacity : classSetting.opacity,\n depthBias: Number.isFinite(Number(options.depthBias))\n ? options.depthBias\n : topologyLineDepthBiasForWidth(lineWidth, { visibilityClass: classSetting.classId })\n };\n const polylines = shouldBuildTopologyLineStrips(selectorRuntime, filters)\n ? buildTopologyDisplayEdgePolylines(selectorRuntime, filters)\n : [];\n const stripGroup = createLineStripGroup(polylines, lineOptions);\n if (stripGroup) {\n return stripGroup;\n }\n const positions = buildTopologyDisplayEdgePositions(selectorRuntime, {\n ...filters\n });\n if (!positions?.length) {\n return null;\n }\n return createLine(positions, lineOptions);\n };\n\n if (highlightPartIds.length) {\n const positions = buildTopologyDisplayEdgePositions(selectorRuntime, {\n includePartIds: highlightPartIds,\n visibilityClasses\n });\n if (!positions?.length) {\n return null;\n }\n const line = createLine(positions, {\n ...baseOptions,\n color: edgeSettings?.highlightColor || baseOptions.color,\n opacity: highlightOpacity,\n depthBias: Number.isFinite(Number(edgeSettings?.highlightDepthBias))\n ? clamp(Number(edgeSettings.highlightDepthBias), 0, 0.01)\n : 0,\n renderOrder: Number.isFinite(Number(edgeSettings?.highlightRenderOrder))\n ? Number(edgeSettings.highlightRenderOrder)\n : 26\n });\n if (line) {\n line.name = \"TopologyDisplayEdgeHighlights\";\n line.userData.partId = \"__topology_highlight__\";\n }\n return line;\n }\n\n if (focusedPartIds.length && context.THREE) {\n const group = new context.THREE.Group();\n for (const classSetting of edgeClassSettings) {\n const dimmedLine = createClassLine(classSetting, {\n excludePartIds: focusedPartIds,\n opacity: Math.min(dimmedOpacity, classSetting.opacity),\n renderOrder: 3\n });\n const focusedLine = createClassLine(classSetting, {\n includePartIds: focusedPartIds,\n opacity: classSetting.opacity,\n renderOrder: 4\n });\n if (dimmedLine) {\n group.add(dimmedLine);\n }\n if (focusedLine) {\n group.add(focusedLine);\n }\n }\n if (!group.children.length) {\n return null;\n }\n group.name = \"TopologyDisplayEdges\";\n group.userData.partId = \"__topology__\";\n return group;\n }\n\n const classLines = edgeClassSettings.map((classSetting) => createClassLine(classSetting));\n const line = createClassGroup(classLines);\n if (!line) {\n return null;\n }\n line.name = \"TopologyDisplayEdges\";\n line.userData.partId = \"__topology__\";\n return line;\n}\n","import { createScreenSpaceLineSegments } from \"../../common/renderEdges.js\";\n\nexport const URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS = 100;\nexport const URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS = 50;\n\nconst URDF_POSE_PICKER_MARKER_COLOR = \"#38bdf8\";\nconst URDF_POSE_PICKER_HOVER_FILL_COLOR = \"#1e3a8a\";\nconst URDF_POSE_PICKER_HOVER_OUTLINE_COLOR = \"#bae6fd\";\nconst URDF_POSE_PICKER_HOVER_OUTLINE_WIDTH = 3.25;\nconst URDF_POSE_PICKER_GRID_OPACITY = 0.155;\nconst URDF_POSE_PICKER_SHELL_RADIUS_SCALE = 0.238;\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function normalizeUrdfPosePickerCenter(picker) {\n const center = Array.isArray(picker?.center) ? picker.center : [0, 0, 0];\n const point = [Number(center[0]), Number(center[1]), Number(center[2])];\n return point.every(Number.isFinite) ? point : [0, 0, 0];\n}\n\nexport function resolveUrdfPosePickerCenterWorld(runtime, picker) {\n if (!runtime?.THREE || !runtime?.modelGroup) {\n return null;\n }\n const { THREE } = runtime;\n runtime.modelGroup.updateMatrixWorld(true);\n const target = runtime.controls?.target;\n if (\n target &&\n Number.isFinite(target.x) &&\n Number.isFinite(target.y) &&\n Number.isFinite(target.z)\n ) {\n return target.clone();\n }\n const centerLocal = normalizeUrdfPosePickerCenter(picker);\n const centerWorld = new THREE.Vector3(...centerLocal);\n runtime.modelGroup.localToWorld(centerWorld);\n return centerWorld;\n}\n\nexport function resolveUrdfPosePickerShell(runtime, picker) {\n if (!runtime?.THREE || !runtime?.camera || !runtime?.modelGroup) {\n return null;\n }\n const centerWorld = resolveUrdfPosePickerCenterWorld(runtime, picker);\n if (!centerWorld) {\n return null;\n }\n const centerLocalVector = runtime.modelGroup.worldToLocal(centerWorld.clone());\n const centerLocal = [centerLocalVector.x, centerLocalVector.y, centerLocalVector.z];\n const cameraDistance = runtime.camera.position.distanceTo(centerWorld);\n const modelRadius = Math.max(Number(runtime.modelRadius || 0), 0.08);\n const minRadius = Math.max(modelRadius * 0.12, 0.025);\n const maxRadius = Math.max(modelRadius * 3.2, minRadius * 3);\n const clampedRadius = clamp(cameraDistance * URDF_POSE_PICKER_SHELL_RADIUS_SCALE, minRadius, maxRadius);\n const radius = cameraDistance > 1e-4 ? Math.min(clampedRadius, cameraDistance * 0.92) : clampedRadius;\n return {\n centerLocal,\n centerWorld,\n radius\n };\n}\n\nexport function intersectUrdfPosePickerShell(runtime, picker, ray = runtime?.raycaster?.ray) {\n if (!runtime?.THREE || !runtime?.modelGroup || !ray) {\n return null;\n }\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n if (!shell) {\n return null;\n }\n const { THREE } = runtime;\n const hitPoint = new THREE.Vector3();\n const sphere = new THREE.Sphere(shell.centerWorld, shell.radius);\n if (!ray.intersectSphere(sphere, hitPoint)) {\n return null;\n }\n const modelPoint = runtime.modelGroup.worldToLocal(hitPoint.clone());\n return {\n point: [modelPoint.x, modelPoint.y, modelPoint.z],\n source: \"sphere\"\n };\n}\n\nexport function intersectUrdfPosePickerShellAtNdc(runtime, picker, ndc) {\n if (!runtime?.THREE || !runtime?.camera || !ndc) {\n return null;\n }\n const { THREE } = runtime;\n const cameraPosition = new THREE.Vector3();\n runtime.camera.getWorldPosition(cameraPosition);\n const worldPoint = new THREE.Vector3(Number(ndc.x) || 0, Number(ndc.y) || 0, 0.5).unproject(runtime.camera);\n const direction = worldPoint.sub(cameraPosition).normalize();\n return intersectUrdfPosePickerShell(runtime, picker, new THREE.Ray(cameraPosition, direction));\n}\n\nexport function urdfPosePickerCellKey(cell) {\n return cell ? `${cell.x}:${cell.y}` : \"\";\n}\n\nexport function isValidUrdfPosePickerCell(cell) {\n return (\n cell &&\n Number.isInteger(cell.x) &&\n Number.isInteger(cell.y) &&\n cell.x >= 0 &&\n cell.x < URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS &&\n cell.y >= 0 &&\n cell.y < URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS\n );\n}\n\nexport function urdfPosePickerCellForModelPoint(runtime, picker, point) {\n if (!runtime?.THREE || !runtime?.camera || !runtime?.modelGroup || !Array.isArray(point) || point.length < 3) {\n return null;\n }\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n if (!shell) {\n return null;\n }\n const { THREE } = runtime;\n const worldPoint = new THREE.Vector3(Number(point[0]), Number(point[1]), Number(point[2]));\n if (![worldPoint.x, worldPoint.y, worldPoint.z].every(Number.isFinite)) {\n return null;\n }\n runtime.modelGroup.updateMatrixWorld(true);\n runtime.modelGroup.localToWorld(worldPoint);\n const direction = worldPoint.sub(shell.centerWorld);\n if (direction.lengthSq() <= 1e-12) {\n return null;\n }\n direction.normalize();\n\n let longitude = Math.atan2(direction.z, -direction.x);\n if (longitude < 0) {\n longitude += Math.PI * 2;\n }\n const latitude = Math.acos(clamp(direction.y, -1, 1));\n const u = clamp(longitude / (Math.PI * 2), 0, 0.999999);\n const v = clamp(latitude / Math.PI, 0, 0.999999);\n return {\n x: Math.floor(u * URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS),\n y: Math.floor(v * URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS)\n };\n}\n\nexport function resolveUrdfPosePickerHoverCell(runtime, picker) {\n const pick = intersectUrdfPosePickerShellAtNdc(runtime, picker, runtime?.urdfPosePickerPointerNdc);\n if (pick?.point) {\n return urdfPosePickerCellForModelPoint(runtime, picker, pick.point);\n }\n return null;\n}\n\nexport function urdfPosePickerSphereDirection(THREE, u, v) {\n const longitude = u * Math.PI * 2;\n const latitude = v * Math.PI;\n const horizontal = Math.sin(latitude);\n return new THREE.Vector3(\n -Math.cos(longitude) * horizontal,\n Math.cos(latitude),\n Math.sin(longitude) * horizontal\n );\n}\n\nexport function urdfPosePickerCellCornerDirection(THREE, cell, xOffset, yOffset) {\n return urdfPosePickerSphereDirection(\n THREE,\n (cell.x + xOffset) / URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS,\n (cell.y + yOffset) / URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS\n );\n}\n\nexport function createUrdfPosePickerShellGridGeometry(THREE) {\n const positions = [];\n const pushPoint = (point) => {\n positions.push(point.x, point.y, point.z);\n };\n for (let y = 1; y < URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS; y += 1) {\n const v = y / URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS;\n for (let x = 0; x < URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS; x += 1) {\n pushPoint(urdfPosePickerSphereDirection(THREE, x / URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS, v));\n pushPoint(urdfPosePickerSphereDirection(THREE, (x + 1) / URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS, v));\n }\n }\n for (let x = 0; x < URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS; x += 1) {\n const u = x / URDF_POSE_PICKER_SHELL_WIDTH_SEGMENTS;\n for (let y = 0; y < URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS; y += 1) {\n pushPoint(urdfPosePickerSphereDirection(THREE, u, y / URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS));\n pushPoint(urdfPosePickerSphereDirection(THREE, u, (y + 1) / URDF_POSE_PICKER_SHELL_HEIGHT_SEGMENTS));\n }\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(positions), 3));\n return geometry;\n}\n\nexport function createUrdfPosePickerCellGeometry(runtime, cell) {\n if (!runtime?.THREE || !isValidUrdfPosePickerCell(cell)) {\n return null;\n }\n const { THREE } = runtime;\n const surfaceOffset = 1.0015;\n const corners = [\n urdfPosePickerCellCornerDirection(THREE, cell, 0, 0),\n urdfPosePickerCellCornerDirection(THREE, cell, 1, 0),\n urdfPosePickerCellCornerDirection(THREE, cell, 1, 1),\n urdfPosePickerCellCornerDirection(THREE, cell, 0, 1)\n ].map((direction) => direction.multiplyScalar(surfaceOffset));\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\n \"position\",\n new THREE.BufferAttribute(\n new Float32Array([\n corners[0].x, corners[0].y, corners[0].z,\n corners[1].x, corners[1].y, corners[1].z,\n corners[2].x, corners[2].y, corners[2].z,\n corners[0].x, corners[0].y, corners[0].z,\n corners[2].x, corners[2].y, corners[2].z,\n corners[3].x, corners[3].y, corners[3].z\n ]),\n 3\n )\n );\n geometry.computeVertexNormals();\n return geometry;\n}\n\nexport function createUrdfPosePickerCellOutlinePositions(runtime, cell) {\n if (!runtime?.THREE || !isValidUrdfPosePickerCell(cell)) {\n return null;\n }\n const { THREE } = runtime;\n const surfaceOffset = 1.0045;\n const corners = [\n urdfPosePickerCellCornerDirection(THREE, cell, 0, 0),\n urdfPosePickerCellCornerDirection(THREE, cell, 1, 0),\n urdfPosePickerCellCornerDirection(THREE, cell, 1, 1),\n urdfPosePickerCellCornerDirection(THREE, cell, 0, 1)\n ].map((direction) => direction.multiplyScalar(surfaceOffset));\n return new Float32Array([\n corners[0].x, corners[0].y, corners[0].z,\n corners[1].x, corners[1].y, corners[1].z,\n corners[1].x, corners[1].y, corners[1].z,\n corners[2].x, corners[2].y, corners[2].z,\n corners[2].x, corners[2].y, corners[2].z,\n corners[3].x, corners[3].y, corners[3].z,\n corners[3].x, corners[3].y, corners[3].z,\n corners[0].x, corners[0].y, corners[0].z\n ]);\n}\n\nexport function createUrdfPosePickerShell(runtime, picker) {\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n if (!runtime?.THREE || !shell) {\n return null;\n }\n const { THREE } = runtime;\n const geometry = createUrdfPosePickerShellGridGeometry(THREE);\n const material = new THREE.LineBasicMaterial({\n color: URDF_POSE_PICKER_MARKER_COLOR,\n transparent: true,\n opacity: URDF_POSE_PICKER_GRID_OPACITY,\n depthTest: false,\n depthWrite: false,\n toneMapped: false\n });\n const lineSegments = new THREE.LineSegments(geometry, material);\n lineSegments.position.set(...shell.centerLocal);\n lineSegments.scale.setScalar(shell.radius);\n lineSegments.renderOrder = 28;\n lineSegments.frustumCulled = false;\n lineSegments.onBeforeRender = () => {\n const nextShell = resolveUrdfPosePickerShell(runtime, picker);\n if (!nextShell) {\n return;\n }\n lineSegments.position.set(...nextShell.centerLocal);\n lineSegments.scale.setScalar(nextShell.radius);\n };\n lineSegments.userData.disposeGeometry = true;\n lineSegments.userData.disposeMaterial = true;\n return lineSegments;\n}\n\nexport function createUrdfPosePickerHoverCellMesh(runtime, picker) {\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n const cell = resolveUrdfPosePickerHoverCell(runtime, picker);\n const geometry = createUrdfPosePickerCellGeometry(runtime, cell) || createUrdfPosePickerCellGeometry(runtime, { x: 0, y: 0 });\n if (!runtime?.THREE || !shell || !geometry) {\n return null;\n }\n const { THREE } = runtime;\n const material = new THREE.MeshBasicMaterial({\n color: URDF_POSE_PICKER_HOVER_FILL_COLOR,\n transparent: false,\n opacity: 1,\n side: THREE.DoubleSide,\n blending: THREE.NoBlending,\n depthTest: false,\n depthWrite: false,\n toneMapped: false\n });\n const mesh = new THREE.Mesh(geometry, material);\n mesh.position.set(...shell.centerLocal);\n mesh.scale.setScalar(shell.radius);\n mesh.renderOrder = 80;\n mesh.frustumCulled = false;\n mesh.visible = isValidUrdfPosePickerCell(cell);\n mesh.userData.lastHoverCellKey = urdfPosePickerCellKey(cell);\n runtime.urdfPosePickerHoverCellMesh = mesh;\n mesh.onBeforeRender = () => {\n const nextShell = resolveUrdfPosePickerShell(runtime, picker);\n const nextCell = resolveUrdfPosePickerHoverCell(runtime, picker);\n const nextCellKey = urdfPosePickerCellKey(nextCell);\n mesh.visible = isValidUrdfPosePickerCell(nextCell);\n if (!nextShell || !mesh.visible) {\n return;\n }\n mesh.position.set(...nextShell.centerLocal);\n mesh.scale.setScalar(nextShell.radius);\n if (mesh.userData.lastHoverCellKey !== nextCellKey) {\n const nextGeometry = createUrdfPosePickerCellGeometry(runtime, nextCell);\n if (!nextGeometry) {\n return;\n }\n mesh.geometry?.dispose?.();\n mesh.geometry = nextGeometry;\n }\n mesh.userData.lastHoverCellKey = nextCellKey;\n };\n mesh.userData.disposeGeometry = true;\n mesh.userData.disposeMaterial = true;\n return mesh;\n}\n\nexport function createUrdfPosePickerHoverCellOutline(runtime, picker) {\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n const cell = resolveUrdfPosePickerHoverCell(runtime, picker);\n const positions =\n createUrdfPosePickerCellOutlinePositions(runtime, cell) ||\n createUrdfPosePickerCellOutlinePositions(runtime, { x: 0, y: 0 });\n if (!runtime?.THREE || !shell || !positions) {\n return null;\n }\n const line = createScreenSpaceLineSegments(runtime, positions, {\n color: URDF_POSE_PICKER_HOVER_OUTLINE_COLOR,\n opacity: 0.98,\n lineWidth: URDF_POSE_PICKER_HOVER_OUTLINE_WIDTH,\n renderOrder: 82,\n depthTest: false,\n depthWrite: false\n });\n if (!line) {\n return null;\n }\n line.position.set(...shell.centerLocal);\n line.scale.setScalar(shell.radius);\n line.visible = isValidUrdfPosePickerCell(cell);\n line.userData.lastHoverCellKey = urdfPosePickerCellKey(cell);\n runtime.urdfPosePickerHoverCellOutline = line;\n line.onBeforeRender = () => {\n const nextShell = resolveUrdfPosePickerShell(runtime, picker);\n const nextCell = resolveUrdfPosePickerHoverCell(runtime, picker);\n const nextCellKey = urdfPosePickerCellKey(nextCell);\n line.visible = isValidUrdfPosePickerCell(nextCell);\n if (!nextShell || !line.visible) {\n return;\n }\n line.position.set(...nextShell.centerLocal);\n line.scale.setScalar(nextShell.radius);\n if (line.userData.lastHoverCellKey !== nextCellKey) {\n const nextPositions = createUrdfPosePickerCellOutlinePositions(runtime, nextCell);\n if (!nextPositions) {\n return;\n }\n line.geometry?.setPositions?.(nextPositions);\n line.geometry?.computeBoundingSphere?.();\n }\n line.userData.lastHoverCellKey = nextCellKey;\n };\n return line;\n}\n\nexport function syncUrdfPosePickerHoverMesh(runtime, object, picker) {\n if (!runtime?.THREE || !object) {\n return false;\n }\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n const cell = resolveUrdfPosePickerHoverCell(runtime, picker);\n const cellKey = urdfPosePickerCellKey(cell);\n object.visible = isValidUrdfPosePickerCell(cell);\n if (!shell || !object.visible) {\n object.userData.lastHoverCellKey = \"\";\n return false;\n }\n object.position.set(...shell.centerLocal);\n object.scale.setScalar(shell.radius);\n if (object.userData.lastHoverCellKey === cellKey) {\n return true;\n }\n const nextGeometry = createUrdfPosePickerCellGeometry(runtime, cell);\n if (!nextGeometry) {\n object.visible = false;\n object.userData.lastHoverCellKey = \"\";\n return false;\n }\n object.geometry?.dispose?.();\n object.geometry = nextGeometry;\n object.userData.lastHoverCellKey = cellKey;\n return true;\n}\n\nexport function syncUrdfPosePickerHoverOutline(runtime, object, picker) {\n if (!runtime?.THREE || !object) {\n return false;\n }\n const shell = resolveUrdfPosePickerShell(runtime, picker);\n const cell = resolveUrdfPosePickerHoverCell(runtime, picker);\n const cellKey = urdfPosePickerCellKey(cell);\n object.visible = isValidUrdfPosePickerCell(cell);\n if (!shell || !object.visible) {\n object.userData.lastHoverCellKey = \"\";\n return false;\n }\n object.position.set(...shell.centerLocal);\n object.scale.setScalar(shell.radius);\n if (object.userData.lastHoverCellKey === cellKey) {\n return true;\n }\n const nextPositions = createUrdfPosePickerCellOutlinePositions(runtime, cell);\n if (!nextPositions) {\n object.visible = false;\n object.userData.lastHoverCellKey = \"\";\n return false;\n }\n object.geometry?.setPositions?.(nextPositions);\n object.geometry?.computeBoundingSphere?.();\n object.userData.lastHoverCellKey = cellKey;\n return true;\n}\n\nexport function syncUrdfPosePickerHoverObjects(runtime, picker) {\n const meshVisible = syncUrdfPosePickerHoverMesh(\n runtime,\n runtime?.urdfPosePickerHoverCellMesh,\n picker\n );\n const outlineVisible = syncUrdfPosePickerHoverOutline(\n runtime,\n runtime?.urdfPosePickerHoverCellOutline,\n picker\n );\n return meshVisible || outlineVisible;\n}\n","export const VIEWER_SCENE_SCALE = Object.freeze({\n CAD: \"cad\",\n URDF: \"urdf\"\n});\n\nconst SCENE_SCALE_SETTINGS = Object.freeze({\n [VIEWER_SCENE_SCALE.CAD]: Object.freeze({\n minModelRadius: 1,\n minGridSize: 280,\n lightingScopeRadius: 140,\n lightingReferenceModelRadius: 760\n }),\n [VIEWER_SCENE_SCALE.URDF]: Object.freeze({\n minModelRadius: 0.05,\n minGridSize: 0.28,\n lightingScopeRadius: 0.14,\n lightingReferenceModelRadius: 0.76\n })\n});\n\nconst SHADOW_SETTINGS = Object.freeze({\n [VIEWER_SCENE_SCALE.CAD]: Object.freeze({\n minExtent: 60,\n normalBias: 0.024,\n radius: 14\n }),\n [VIEWER_SCENE_SCALE.URDF]: Object.freeze({\n minExtent: 0.55,\n normalBias: 0.000012,\n radius: 14\n })\n});\n\nexport function normalizeSceneScaleMode(value) {\n return value === VIEWER_SCENE_SCALE.URDF\n ? VIEWER_SCENE_SCALE.URDF\n : VIEWER_SCENE_SCALE.CAD;\n}\n\nexport function getSceneScaleSettings(value) {\n return SCENE_SCALE_SETTINGS[normalizeSceneScaleMode(value)];\n}\n\nexport function clampSceneModelRadius(radius, value) {\n const numericRadius = Number(radius);\n return Math.max(\n Number.isFinite(numericRadius) ? numericRadius : 0,\n getSceneScaleSettings(value).minModelRadius\n );\n}\n\nexport function defaultSceneGridRadius(value) {\n return getSceneScaleSettings(value).minGridSize / 2;\n}\n\nexport function getLightingScopeRadius(value) {\n return getSceneScaleSettings(value).lightingScopeRadius;\n}\n\nexport function getProportionalLightingScopeRadius(radius, value) {\n const sceneScaleMode = normalizeSceneScaleMode(value);\n const sceneScaleSettings = getSceneScaleSettings(sceneScaleMode);\n const safeModelRadius = clampSceneModelRadius(radius, sceneScaleMode);\n const referenceModelRadius = Math.max(\n Number(sceneScaleSettings.lightingReferenceModelRadius) || 0,\n sceneScaleSettings.minModelRadius\n );\n return (safeModelRadius / referenceModelRadius) * sceneScaleSettings.lightingScopeRadius;\n}\n\nexport function getShadowCameraSettings(value, { radius = 0, keyLightDistance = 0 } = {}) {\n const sceneScaleMode = normalizeSceneScaleMode(value);\n const shadowSettings = SHADOW_SETTINGS[sceneScaleMode];\n const shadowScopeRadius = clampSceneModelRadius(radius, sceneScaleMode);\n const shadowExtent = Math.max(shadowScopeRadius * 2.8, shadowSettings.minExtent);\n const shadowFar = sceneScaleMode === VIEWER_SCENE_SCALE.URDF\n ? Math.max(\n shadowScopeRadius * 8,\n Math.max(Number(keyLightDistance) || 0, 0) + (shadowScopeRadius * 6) + 1\n )\n : Math.max(shadowScopeRadius * 8, 320);\n\n return {\n scopeRadius: shadowScopeRadius,\n extent: shadowExtent,\n far: shadowFar,\n normalBias: shadowSettings.normalBias,\n radius: shadowSettings.radius\n };\n}\n","import {\n DEFAULT_DISPLAY_EDGE_SETTINGS,\n DISABLED_DISPLAY_EDGE_SETTINGS\n} from \"./displaySettings.js\";\n\nexport {\n CAD_EDGE_CLASS_IDS,\n CAD_EDGE_COLOR,\n CAD_EDGE_HIGHLIGHT_COLOR\n} from \"./displaySettings.js\";\n\nconst HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\nexport const MAX_THEME_FILL_COLORS = 50;\nconst CAD_THEME_EDGE_SETTINGS = DEFAULT_DISPLAY_EDGE_SETTINGS;\nconst DISABLED_THEME_EDGE_SETTINGS = DISABLED_DISPLAY_EDGE_SETTINGS;\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeNumber(value, fallback, min = -Infinity, max = Infinity) {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue)) {\n return fallback;\n }\n return clamp(numericValue, min, max);\n}\n\nfunction normalizeColor(value, fallback) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return fallback;\n }\n return normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`.toLowerCase()\n : normalized.toLowerCase();\n}\n\nexport function normalizeThemeFillColors(value, fallback = DEFAULT_THEME_SETTINGS?.materials?.defaultColor || \"#ffffff\") {\n const values = Array.isArray(value) ? value : [value];\n const fillColors = values\n .map((entry) => normalizeColor(entry, \"\"))\n .filter(Boolean)\n .slice(0, MAX_THEME_FILL_COLORS);\n if (fillColors.length) {\n return fillColors;\n }\n return [normalizeColor(fallback, \"#ffffff\")];\n}\n\nexport function resolveThemeFillColor(materials = {}, index = 0) {\n const fillColors = normalizeThemeFillColors(\n materials.fillColors,\n materials.defaultColor || DEFAULT_THEME_SETTINGS?.materials?.defaultColor || \"#ffffff\"\n );\n const cycleColors = normalizeBoolean(\n materials.cycleColors,\n DEFAULT_THEME_SETTINGS?.materials?.cycleColors || false\n );\n const colorIndex = cycleColors ? Math.max(Math.floor(Number(index) || 0), 0) % fillColors.length : 0;\n return fillColors[colorIndex];\n}\n\nfunction hexColorToLinearRgb(value, fallback = \"#000000\") {\n const hex = normalizeColor(value, fallback);\n const expanded = hex.length === 4\n ? `#${hex[1]}${hex[1]}${hex[2]}${hex[2]}${hex[3]}${hex[3]}`\n : hex;\n const channel = (offset) => {\n const srgb = parseInt(expanded.slice(offset, offset + 2), 16) / 255;\n return srgb <= 0.03928\n ? srgb / 12.92\n : ((srgb + 0.055) / 1.055) ** 2.4;\n };\n return {\n r: channel(1),\n g: channel(3),\n b: channel(5)\n };\n}\n\nfunction relativeLuminance(value, fallback = \"#000000\") {\n const rgb = hexColorToLinearRgb(value, fallback);\n return (0.2126 * rgb.r) + (0.7152 * rgb.g) + (0.0722 * rgb.b);\n}\n\nfunction normalizeBoolean(value, fallback = false) {\n if (typeof value === \"boolean\") {\n return value;\n }\n return fallback;\n}\n\nfunction normalizeBackgroundType(value, fallback = \"solid\") {\n const normalized = String(value || \"\").trim().toLowerCase();\n return [\"solid\", \"linear\", \"radial\", \"transparent\"].includes(normalized)\n ? normalized\n : fallback;\n}\n\nfunction normalizeMaterialTintMode(value, fallback = \"multiply\") {\n const normalized = String(value || \"\").trim().toLowerCase();\n return [\"multiply\", \"blend\"].includes(normalized)\n ? normalized\n : fallback;\n}\n\nexport const THEME_FLOOR_MODES = Object.freeze({\n STAGE: \"stage\",\n GRID: \"grid\",\n NONE: \"none\"\n});\n\nexport const THEME_COLOR_MODES = Object.freeze({\n SYSTEM: \"system\",\n LIGHT: \"light\",\n DARK: \"dark\"\n});\n\nconst THEME_COLOR_MODE_VALUES = Object.freeze(Object.values(THEME_COLOR_MODES));\n\nfunction normalizeThemeColorMode(value, fallback = THEME_COLOR_MODES.SYSTEM) {\n const normalized = String(value || \"\").trim().toLowerCase();\n return THEME_COLOR_MODE_VALUES.includes(normalized) ? normalized : fallback;\n}\n\nconst THEME_MODE_COLOR_PATHS = Object.freeze([\n Object.freeze([\"background\", \"solidColor\"]),\n Object.freeze([\"background\", \"linearStart\"]),\n Object.freeze([\"background\", \"linearEnd\"]),\n Object.freeze([\"background\", \"radialInner\"]),\n Object.freeze([\"background\", \"radialOuter\"]),\n Object.freeze([\"floor\", \"color\"]),\n Object.freeze([\"floor\", \"gridCenterColor\"]),\n Object.freeze([\"floor\", \"gridCellColor\"]),\n Object.freeze([\"floor\", \"grid\", \"centerColor\"]),\n Object.freeze([\"floor\", \"grid\", \"cellColor\"]),\n Object.freeze([\"lighting\", \"directional\", \"color\"]),\n Object.freeze([\"lighting\", \"spot\", \"color\"]),\n Object.freeze([\"lighting\", \"point\", \"color\"]),\n Object.freeze([\"lighting\", \"ambient\", \"color\"]),\n Object.freeze([\"lighting\", \"hemisphere\", \"skyColor\"]),\n Object.freeze([\"lighting\", \"hemisphere\", \"groundColor\"])\n]);\n\nfunction getPathValue(source, path) {\n return path.reduce((value, key) => (\n value && typeof value === \"object\" ? value[key] : undefined\n ), source);\n}\n\nfunction setPathValue(target, path, value) {\n let cursor = target;\n for (let index = 0; index < path.length - 1; index += 1) {\n const key = path[index];\n if (!cursor[key] || typeof cursor[key] !== \"object\" || Array.isArray(cursor[key])) {\n cursor[key] = {};\n }\n cursor = cursor[key];\n }\n cursor[path[path.length - 1]] = value;\n}\n\nfunction deepClone(value) {\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction createThemeModeColorOverridesFromSettings(settings = {}, fallbackSettings = settings) {\n const result = {};\n for (const path of THEME_MODE_COLOR_PATHS) {\n const fallback = getPathValue(fallbackSettings, path) || \"#ffffff\";\n setPathValue(result, path, normalizeColor(getPathValue(settings, path), fallback));\n }\n return result;\n}\n\nfunction createThemeModeColors(lightSettings = {}, darkSettings = lightSettings) {\n return Object.freeze({\n light: createThemeModeColorOverridesFromSettings(lightSettings, lightSettings),\n dark: createThemeModeColorOverridesFromSettings(darkSettings, lightSettings)\n });\n}\n\nfunction withThemeColorMode(settings, colorMode, modeColors = createThemeModeColors(settings, settings)) {\n return Object.freeze({\n ...settings,\n colorMode: normalizeThemeColorMode(colorMode),\n modeColors\n });\n}\n\nfunction normalizeThemeModeColors(value = {}, fallbackSettings = DEFAULT_THEME_SETTINGS) {\n const source = value && typeof value === \"object\" ? value : {};\n const fallback = fallbackSettings && typeof fallbackSettings === \"object\"\n ? fallbackSettings\n : DEFAULT_THEME_SETTINGS;\n const fallbackModeColors = fallback?.modeColors && typeof fallback.modeColors === \"object\"\n ? fallback.modeColors\n : createThemeModeColors(fallback, fallback);\n return {\n light: createThemeModeColorOverridesFromSettings(source.light, fallbackModeColors.light || fallback),\n dark: createThemeModeColorOverridesFromSettings(source.dark, fallbackModeColors.dark || fallback)\n };\n}\n\nfunction applyThemeModeColorOverrides(target, overrides = {}) {\n for (const path of THEME_MODE_COLOR_PATHS) {\n const value = getPathValue(overrides, path);\n if (value) {\n setPathValue(target, path, value);\n }\n }\n}\n\nexport const MIN_FLOOR_GRID_DENSITY = 0.25;\nexport const MAX_FLOOR_GRID_DENSITY = 4;\nexport const DEFAULT_FLOOR_GRID_SETTINGS = Object.freeze({\n enabled: true,\n gridCenterColor: \"#6b7280\",\n gridCellColor: \"#cbd5e1\",\n gridOpacity: 0.18,\n gridDensity: 1,\n centerColor: \"#6b7280\",\n cellColor: \"#cbd5e1\",\n opacity: 0.18,\n density: 1\n});\n\nfunction normalizeFloorMode(value, fallback = THEME_FLOOR_MODES.STAGE) {\n const normalized = String(value || \"\").trim().toLowerCase();\n if (normalized === \"glass\") {\n return THEME_FLOOR_MODES.STAGE;\n }\n return Object.values(THEME_FLOOR_MODES).includes(normalized)\n ? normalized\n : fallback;\n}\n\nexport const ENVIRONMENT_PRESETS = Object.freeze([\n {\n id: \"studio-hdri-43\",\n label: \"Studio HDRI 43\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_43.jpg\"\n },\n {\n id: \"studio-hdri-41\",\n label: \"Studio HDRI 41\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_41.jpg\"\n },\n {\n id: \"studio-hdri-12\",\n label: \"Studio HDRI 12\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_12.jpg\"\n },\n {\n id: \"studio-hdri-17\",\n label: \"Studio HDRI 17\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_17.jpg\"\n },\n {\n id: \"studio-hdri-22\",\n label: \"Studio HDRI 22\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_22.jpg\"\n },\n {\n id: \"colorful-1\",\n label: \"Colorful 1\",\n url: \"https://static.morflax.com/textures/env/colorful-1.jpg\"\n },\n {\n id: \"colorful-dark-1\",\n label: \"Colorful Dark 1\",\n url: \"https://static.morflax.com/textures/env/colorful-dark-1.jpg\"\n }\n]);\n\nconst WORKBENCH_FILL_COLORS = Object.freeze([\n \"#b6c4ce\",\n \"#f4a7a7\",\n \"#f8c77e\",\n \"#f7e38d\",\n \"#b9e88f\",\n \"#8fe3c0\",\n \"#92d7f5\",\n \"#a9b8ff\",\n \"#c7a8ff\",\n \"#f2a7d9\"\n]);\n\nconst BLUE_FILL_COLORS = Object.freeze([\"#4cc9f0\"]);\n\nconst MAGENTA_FILL_COLORS = Object.freeze([\"#ff4faf\"]);\n\nconst CLAY_FILL_COLORS = Object.freeze([\"#b9856e\"]);\n\nconst BEACH_FILL_COLORS = Object.freeze([\"#178f9f\", \"#ef7459\"]);\n\nconst TERMINAL_FILL_COLORS = Object.freeze([\"#0b7a3f\"]);\n\nconst TERMINAL_EDGE_COLOR = \"#66ff99\";\nconst TERMINAL_EDGE_HIGHLIGHT_COLOR = \"#b7ffc9\";\nconst TERMINAL_EDGE_CLASS_SETTINGS = Object.freeze({\n feature: Object.freeze({\n opacity: 1,\n thickness: 1.15\n }),\n tangent: Object.freeze({\n opacity: 0.84,\n thickness: 0.95\n }),\n seam: Object.freeze({\n opacity: 0.92,\n thickness: 1\n }),\n degenerate: Object.freeze({\n opacity: 0.72,\n thickness: 0.8\n })\n});\n\nconst TERMINAL_THEME_EDGE_SETTINGS = Object.freeze({\n ...CAD_THEME_EDGE_SETTINGS,\n enabled: true,\n color: TERMINAL_EDGE_COLOR,\n classes: TERMINAL_EDGE_CLASS_SETTINGS,\n highlightColor: TERMINAL_EDGE_HIGHLIGHT_COLOR,\n highlightOpacity: 1,\n highlightThickness: 3\n});\n\nconst CHARCOAL_FILL_COLORS = Object.freeze([\n \"#b6c4ce\",\n \"#8f9aa3\",\n \"#d3dae0\",\n \"#68737d\"\n]);\n\nfunction mixHexColors(colorA, colorB, amount = 0.5) {\n const from = normalizeColor(colorA, \"#000000\");\n const to = normalizeColor(colorB, from);\n const clampedAmount = clamp(Number(amount), 0, 1);\n const channel = (offset) => {\n const fromChannel = parseInt(from.slice(offset, offset + 2), 16);\n const toChannel = parseInt(to.slice(offset, offset + 2), 16);\n return Math.round(fromChannel + ((toChannel - fromChannel) * clampedAmount))\n .toString(16)\n .padStart(2, \"0\");\n };\n return `#${channel(1)}${channel(3)}${channel(5)}`;\n}\n\nfunction midpointPalette(primaryColors, secondaryColors) {\n const primary = Array.isArray(primaryColors) ? primaryColors : [];\n const secondary = Array.isArray(secondaryColors) ? secondaryColors : [];\n const colorCount = Math.max(primary.length, secondary.length);\n if (!colorCount) {\n return Object.freeze([\"#ffffff\"]);\n }\n\n return Object.freeze(Array.from({ length: colorCount }, (_, index) => {\n const primaryColor = primary[index] || primary.at(-1) || \"#ffffff\";\n const secondaryColor = secondary[index] || secondary.at(-1) || primaryColor;\n return mixHexColors(primaryColor, secondaryColor);\n }));\n}\n\nfunction createFloorGridSettings(floorColor, options = {}) {\n const normalizedFloorColor = normalizeColor(floorColor, \"#f1f5f9\");\n const enabled = normalizeBoolean(options.enabled, false);\n const lightFloor = relativeLuminance(normalizedFloorColor) >= 0.36;\n const centerColor = normalizeColor(\n options.centerColor,\n lightFloor\n ? mixHexColors(normalizedFloorColor, \"#0f172a\", 0.48)\n : mixHexColors(normalizedFloorColor, \"#f8fafc\", 0.46)\n );\n const cellColor = normalizeColor(\n options.cellColor,\n lightFloor\n ? mixHexColors(normalizedFloorColor, \"#475569\", 0.26)\n : mixHexColors(normalizedFloorColor, \"#cbd5e1\", 0.22)\n );\n const opacity = normalizeNumber(options.opacity, DEFAULT_FLOOR_GRID_SETTINGS.opacity, 0, 1);\n const density = normalizeNumber(\n options.density,\n DEFAULT_FLOOR_GRID_SETTINGS.density,\n MIN_FLOOR_GRID_DENSITY,\n MAX_FLOOR_GRID_DENSITY\n );\n return {\n gridCenterColor: centerColor,\n gridCellColor: cellColor,\n gridOpacity: opacity,\n gridDensity: density,\n grid: {\n enabled,\n centerColor,\n cellColor,\n opacity,\n density\n },\n centerColor,\n cellColor,\n opacity,\n density\n };\n}\n\nconst CINEMATIC_THEME_SETTINGS = Object.freeze({\n materials: {\n defaultColor: WORKBENCH_FILL_COLORS[0],\n fillColors: WORKBENCH_FILL_COLORS,\n cycleColors: false,\n overrideSourceColors: false,\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.12,\n brightness: 1.02,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n },\n edges: {\n ...CAD_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#edf5fb\",\n linearStart: \"#fbfdff\",\n linearEnd: \"#b8cadb\",\n linearAngle: 135,\n radialInner: \"#ffffff\",\n radialOuter: \"#b3c4d4\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#edf3f8\",\n roughness: 0.7,\n reflectivity: 0.14,\n shadowOpacity: 0.16,\n horizonBlend: 0.18,\n ...createFloorGridSettings(\"#edf3f8\", { opacity: 0.2 }),\n enabled: false\n },\n environment: {\n enabled: true,\n presetId: \"studio-hdri-43\",\n intensity: 0.32,\n rotationY: -0.25,\n useAsBackground: false\n },\n lighting: {\n toneMappingExposure: 1.16,\n directional: {\n enabled: true,\n color: \"#ffffff\",\n intensity: 1.16,\n position: {\n x: -210,\n y: 260,\n z: 270\n }\n },\n spot: {\n enabled: true,\n color: \"#f4fbff\",\n intensity: 0.52,\n angle: 0.74,\n distance: 0,\n position: {\n x: 190,\n y: 210,\n z: 170\n }\n },\n point: {\n enabled: true,\n color: \"#ffe2ba\",\n intensity: 0.28,\n distance: 0,\n position: {\n x: -240,\n y: 110,\n z: -210\n }\n },\n ambient: {\n enabled: true,\n color: \"#ffffff\",\n intensity: 0.4\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#ffffff\",\n groundColor: \"#d6e2ee\",\n intensity: 1.12\n }\n }\n});\n\nconst DARK_STUDIO_THEME_SETTINGS = Object.freeze({\n materials: {\n defaultColor: WORKBENCH_FILL_COLORS[0],\n fillColors: WORKBENCH_FILL_COLORS,\n cycleColors: false,\n overrideSourceColors: false,\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.2,\n contrast: 1.14,\n brightness: 1.06,\n roughness: 0.54,\n metalness: 0.02,\n clearcoat: 0.14,\n clearcoatRoughness: 0.4,\n opacity: 1,\n envMapIntensity: 0.5,\n emissiveIntensity: 0.03\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#081b2d\",\n linearStart: \"#18304a\",\n linearEnd: \"#030914\",\n linearAngle: 135,\n radialInner: \"#174267\",\n radialOuter: \"#030914\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#0a2238\",\n roughness: 0.38,\n reflectivity: 0.1,\n shadowOpacity: 0.42,\n horizonBlend: 0.1,\n ...createFloorGridSettings(\"#0a2238\", { opacity: 0.22 }),\n enabled: false\n },\n environment: {\n enabled: true,\n presetId: \"studio-hdri-43\",\n intensity: 0.18,\n rotationY: -0.25,\n useAsBackground: false\n },\n lighting: {\n toneMappingExposure: 1.22,\n directional: {\n enabled: true,\n color: \"#ffffff\",\n intensity: 1.42,\n position: {\n x: -210,\n y: 260,\n z: 270\n }\n },\n spot: {\n enabled: true,\n color: \"#70c4ff\",\n intensity: 0.24,\n angle: 0.74,\n distance: 0,\n position: {\n x: 190,\n y: 210,\n z: 170\n }\n },\n point: {\n enabled: true,\n color: \"#9bd0ff\",\n intensity: 0.36,\n distance: 0,\n position: {\n x: -240,\n y: 110,\n z: -210\n }\n },\n ambient: {\n enabled: true,\n color: \"#c6d8ea\",\n intensity: 0.24\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#ffffff\",\n groundColor: \"#020713\",\n intensity: 0.98\n }\n }\n});\n\nconst CODEX_DARK_STUDIO_THEME_SETTINGS = Object.freeze({\n ...DARK_STUDIO_THEME_SETTINGS,\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: CHARCOAL_FILL_COLORS[0],\n fillColors: CHARCOAL_FILL_COLORS\n },\n background: {\n ...DARK_STUDIO_THEME_SETTINGS.background,\n solidColor: \"#151617\",\n linearStart: \"#2a2b2d\",\n linearEnd: \"#070809\",\n radialInner: \"#303133\",\n radialOuter: \"#070809\"\n },\n floor: {\n ...DARK_STUDIO_THEME_SETTINGS.floor,\n color: \"#171819\",\n ...createFloorGridSettings(\"#171819\", { opacity: 0.22 })\n }\n});\n\nconst DARKOAL_FILL_COLORS = midpointPalette(\n DARK_STUDIO_THEME_SETTINGS.materials.fillColors,\n CODEX_DARK_STUDIO_THEME_SETTINGS.materials.fillColors\n);\n\nconst DARKOAL_THEME_SETTINGS = Object.freeze({\n ...DARK_STUDIO_THEME_SETTINGS,\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: DARKOAL_FILL_COLORS[0],\n fillColors: DARKOAL_FILL_COLORS\n },\n edges: {\n ...CAD_THEME_EDGE_SETTINGS\n },\n background: {\n ...DARK_STUDIO_THEME_SETTINGS.background,\n solidColor: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.solidColor, CODEX_DARK_STUDIO_THEME_SETTINGS.background.solidColor),\n linearStart: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.linearStart, CODEX_DARK_STUDIO_THEME_SETTINGS.background.linearStart),\n linearEnd: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.linearEnd, CODEX_DARK_STUDIO_THEME_SETTINGS.background.linearEnd),\n radialInner: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.radialInner, CODEX_DARK_STUDIO_THEME_SETTINGS.background.radialInner),\n radialOuter: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.radialOuter, CODEX_DARK_STUDIO_THEME_SETTINGS.background.radialOuter)\n },\n floor: {\n ...DARK_STUDIO_THEME_SETTINGS.floor,\n color: mixHexColors(DARK_STUDIO_THEME_SETTINGS.floor.color, CODEX_DARK_STUDIO_THEME_SETTINGS.floor.color),\n ...createFloorGridSettings(\n mixHexColors(DARK_STUDIO_THEME_SETTINGS.floor.color, CODEX_DARK_STUDIO_THEME_SETTINGS.floor.color),\n { opacity: 0.22 }\n )\n }\n});\n\nconst BLUE_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: BLUE_FILL_COLORS[0],\n fillColors: BLUE_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"radial\",\n solidColor: \"#04131f\",\n linearStart: \"#07253a\",\n linearEnd: \"#0b8edc\",\n linearAngle: 128,\n radialInner: \"#0b8edc\",\n radialOuter: \"#02070c\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#06324f\",\n roughness: 0.58,\n reflectivity: 0.2,\n shadowOpacity: 0.3,\n horizonBlend: 0.18,\n ...createFloorGridSettings(\"#06324f\", { opacity: 0.24 }),\n enabled: false\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\nconst PINK_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: MAGENTA_FILL_COLORS[0],\n fillColors: MAGENTA_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"radial\",\n solidColor: \"#281323\",\n linearStart: \"#7a1a52\",\n linearEnd: \"#301426\",\n linearAngle: 140,\n radialInner: \"#7f1a55\",\n radialOuter: \"#25101f\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#4a1833\",\n roughness: 0.56,\n reflectivity: 0.2,\n shadowOpacity: 0.26,\n horizonBlend: 0.22,\n ...createFloorGridSettings(\"#4a1833\", { opacity: 0.24 }),\n enabled: false\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\nconst CLAY_SUNRISE_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: CLAY_FILL_COLORS[0],\n fillColors: CLAY_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#f3eadc\",\n linearStart: \"#f7ead8\",\n linearEnd: \"#c88d5d\",\n linearAngle: 162,\n radialInner: \"#f7ead8\",\n radialOuter: \"#b06c43\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#d4a070\",\n roughness: 0.72,\n reflectivity: 0.14,\n shadowOpacity: 0.34,\n horizonBlend: 0.12,\n ...createFloorGridSettings(\"#d4a070\", { opacity: 0.18 }),\n enabled: false\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\nconst BEACH_THEME_SETTINGS = Object.freeze({\n materials: {\n ...CINEMATIC_THEME_SETTINGS.materials,\n defaultColor: BEACH_FILL_COLORS[0],\n fillColors: BEACH_FILL_COLORS,\n cycleColors: true\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#dff7f7\",\n linearStart: \"#fff4d6\",\n linearEnd: \"#47c5d6\",\n linearAngle: 152,\n radialInner: \"#fff8e8\",\n radialOuter: \"#1a8fb5\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#f2d59b\",\n roughness: 0.74,\n reflectivity: 0.18,\n shadowOpacity: 0.2,\n horizonBlend: 0.2,\n ...createFloorGridSettings(\"#f2d59b\", { opacity: 0.18 }),\n enabled: false\n },\n environment: {\n enabled: true,\n presetId: \"studio-hdri-12\",\n intensity: 0.36,\n rotationY: -0.18,\n useAsBackground: false\n },\n lighting: {\n toneMappingExposure: 1.18,\n directional: {\n enabled: true,\n color: \"#fff7df\",\n intensity: 1.3,\n position: {\n x: -220,\n y: 280,\n z: 250\n }\n },\n spot: {\n enabled: true,\n color: \"#e4fbff\",\n intensity: 0.36,\n angle: 0.72,\n distance: 0,\n position: {\n x: 190,\n y: 210,\n z: 170\n }\n },\n point: {\n enabled: true,\n color: \"#ffd08a\",\n intensity: 0.24,\n distance: 0,\n position: {\n x: -240,\n y: 110,\n z: -210\n }\n },\n ambient: {\n enabled: true,\n color: \"#fff8e6\",\n intensity: 0.34\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#bff8ff\",\n groundColor: \"#f2d59b\",\n intensity: 1.04\n }\n }\n});\n\nconst TERMINAL_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: TERMINAL_FILL_COLORS[0],\n fillColors: TERMINAL_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...TERMINAL_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"radial\",\n solidColor: \"#020403\",\n linearStart: \"#031109\",\n linearEnd: \"#000000\",\n linearAngle: 180,\n radialInner: \"#062414\",\n radialOuter: \"#000201\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.GRID,\n color: \"#020403\",\n roughness: 0.58,\n reflectivity: 0.12,\n shadowOpacity: 0.35,\n horizonBlend: 0,\n gridCenterColor: TERMINAL_EDGE_COLOR,\n gridCellColor: \"#0c3d22\",\n gridOpacity: 0.34,\n gridDensity: 1.15\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\n// Workbench light mode counterpart to the dark treatment below: the canvas\n// sits a few steps below pure white and the floor a step below that, so\n// white parts (which light toward pure white under the shared exposure)\n// keep a silhouette and the horizon reads as an intentional stage break.\n// The deeper hemisphere ground keeps shading gradation on white undersides.\nconst WORKBENCH_LIGHT_CANVAS_COLOR = \"#f0f4f9\";\nconst WORKBENCH_LIGHT_FLOOR_COLOR = \"#e2e9f0\";\n\nconst WORKBENCH_BASE_THEME_SETTINGS = Object.freeze({\n ...CINEMATIC_THEME_SETTINGS,\n background: {\n ...CINEMATIC_THEME_SETTINGS.background,\n type: \"solid\",\n solidColor: WORKBENCH_LIGHT_CANVAS_COLOR,\n linearStart: WORKBENCH_LIGHT_CANVAS_COLOR,\n linearEnd: WORKBENCH_LIGHT_CANVAS_COLOR,\n radialInner: WORKBENCH_LIGHT_CANVAS_COLOR,\n radialOuter: WORKBENCH_LIGHT_CANVAS_COLOR\n },\n edges: {\n ...CAD_THEME_EDGE_SETTINGS\n },\n floor: {\n ...CINEMATIC_THEME_SETTINGS.floor,\n color: WORKBENCH_LIGHT_FLOOR_COLOR,\n enabled: true,\n ...createFloorGridSettings(WORKBENCH_LIGHT_FLOOR_COLOR, { enabled: true, opacity: 0.2 })\n },\n environment: {\n ...CINEMATIC_THEME_SETTINGS.environment,\n enabled: false\n },\n lighting: {\n ...CINEMATIC_THEME_SETTINGS.lighting,\n hemisphere: {\n ...CINEMATIC_THEME_SETTINGS.lighting.hemisphere,\n groundColor: \"#c7d5e3\"\n }\n }\n});\n\n// Workbench dark mode treatment: a deep, slightly muted blue-slate. Mode\n// overrides can only swap colors, not light intensities, so dark-part\n// visibility is tuned entirely through these colors: lifted ambient and\n// hemisphere-ground fill so shaded faces of dark parts keep their form and\n// a canvas/floor luminance step for silhouette separation. Edges stay deep\n// navy so they read as subtle technical linework on light fills; wireframe\n// display relies on the automatic light-edge contrast fallback.\nconst WORKBENCH_DARK_FLOOR_COLOR = \"#202832\";\n\nconst WORKBENCH_DARK_THEME_SETTINGS = Object.freeze({\n ...DARKOAL_THEME_SETTINGS,\n edges: {\n ...CAD_THEME_EDGE_SETTINGS,\n color: \"#1c2836\"\n },\n background: {\n ...DARKOAL_THEME_SETTINGS.background,\n solidColor: \"#181f28\",\n linearStart: \"#242e3a\",\n linearEnd: \"#0c1016\",\n radialInner: \"#293443\",\n radialOuter: \"#0c1016\"\n },\n floor: {\n ...DARKOAL_THEME_SETTINGS.floor,\n color: WORKBENCH_DARK_FLOOR_COLOR,\n enabled: true,\n ...createFloorGridSettings(WORKBENCH_DARK_FLOOR_COLOR, { enabled: true, opacity: 0.22 })\n },\n lighting: {\n ...DARKOAL_THEME_SETTINGS.lighting,\n spot: {\n ...DARKOAL_THEME_SETTINGS.lighting.spot,\n color: \"#b3d4f2\"\n },\n point: {\n ...DARKOAL_THEME_SETTINGS.lighting.point,\n color: \"#bfd8f0\"\n },\n ambient: {\n ...DARKOAL_THEME_SETTINGS.lighting.ambient,\n color: \"#dfe7f0\"\n },\n hemisphere: {\n ...DARKOAL_THEME_SETTINGS.lighting.hemisphere,\n groundColor: \"#333d4b\"\n }\n }\n});\n\nconst WORKBENCH_THEME_SETTINGS = withThemeColorMode(\n WORKBENCH_BASE_THEME_SETTINGS,\n THEME_COLOR_MODES.SYSTEM,\n createThemeModeColors(WORKBENCH_BASE_THEME_SETTINGS, WORKBENCH_DARK_THEME_SETTINGS)\n);\n\nconst BLUE_THEME_PRESET_SETTINGS = withThemeColorMode(BLUE_THEME_SETTINGS, THEME_COLOR_MODES.DARK);\nconst PINK_THEME_PRESET_SETTINGS = withThemeColorMode(PINK_THEME_SETTINGS, THEME_COLOR_MODES.DARK);\nconst CLAY_SUNRISE_THEME_PRESET_SETTINGS = withThemeColorMode(CLAY_SUNRISE_THEME_SETTINGS, THEME_COLOR_MODES.LIGHT);\nconst BEACH_THEME_PRESET_SETTINGS = withThemeColorMode(BEACH_THEME_SETTINGS, THEME_COLOR_MODES.LIGHT);\nconst TERMINAL_THEME_PRESET_SETTINGS = withThemeColorMode(TERMINAL_THEME_SETTINGS, THEME_COLOR_MODES.DARK);\n\nexport const THEME_PRESETS = Object.freeze([\n {\n id: \"workbench\",\n label: \"Workbench\",\n description: \"Balanced CAD workbench lighting with system-aware light and dark canvas colors.\",\n preview: {\n background: \"#f0f4f9\",\n modelColor: \"#b6c4ce\",\n accentColor: \"#4ea7d8\"\n },\n settings: WORKBENCH_THEME_SETTINGS\n },\n {\n id: \"blue\",\n label: \"Blue\",\n description: \"Single cyan fill against deep-navy CAD lighting.\",\n preview: {\n background: BLUE_FILL_COLORS[0],\n modelColor: BLUE_FILL_COLORS[0],\n accentColor: BLUE_FILL_COLORS[0]\n },\n settings: BLUE_THEME_PRESET_SETTINGS\n },\n {\n id: \"pink\",\n label: \"Magenta\",\n description: \"Single saturated magenta fill against a near-black studio backdrop.\",\n preview: {\n background: MAGENTA_FILL_COLORS[0],\n modelColor: MAGENTA_FILL_COLORS[0],\n accentColor: MAGENTA_FILL_COLORS[0]\n },\n settings: PINK_THEME_PRESET_SETTINGS\n },\n {\n id: \"clay-sunrise\",\n label: \"Clay\",\n description: \"Single warm clay fill with a soft presentation stage.\",\n preview: {\n background: CLAY_FILL_COLORS[0],\n modelColor: CLAY_FILL_COLORS[0],\n accentColor: CLAY_FILL_COLORS[0]\n },\n settings: CLAY_SUNRISE_THEME_PRESET_SETTINGS\n },\n {\n id: \"beach\",\n label: \"Beach\",\n description: \"Two-color aqua-and-coral fill with warm beach presentation lighting.\",\n preview: {\n background: `linear-gradient(135deg, ${BEACH_FILL_COLORS[0]} 0%, ${BEACH_FILL_COLORS[0]} 50%, ${BEACH_FILL_COLORS[1]} 50%, ${BEACH_FILL_COLORS[1]} 100%)`,\n modelColor: BEACH_FILL_COLORS[0],\n accentColor: BEACH_FILL_COLORS[1]\n },\n settings: BEACH_THEME_PRESET_SETTINGS\n },\n {\n id: \"terminal\",\n label: \"Terminal\",\n description: \"Single terminal-green fill with green CAD edge linework and a dark grid floor.\",\n preview: {\n background: TERMINAL_FILL_COLORS[0],\n modelColor: TERMINAL_FILL_COLORS[0],\n accentColor: TERMINAL_FILL_COLORS[0]\n },\n settings: TERMINAL_THEME_PRESET_SETTINGS\n }\n]);\n\nconst THEME_PRESET_ID_ALIASES = Object.freeze({\n cinematic: \"workbench\",\n light: \"workbench\",\n dark: \"workbench\",\n charcoal: \"workbench\",\n darkoal: \"workbench\",\n \"dark-2\": \"workbench\"\n});\n\nexport const DEFAULT_THEME_PRESET_ID = \"workbench\";\n\nexport const DEFAULT_THEME_PRESET = Object.freeze(\n THEME_PRESETS.find((preset) => preset.id === DEFAULT_THEME_PRESET_ID) || THEME_PRESETS[0]\n);\n\nexport const DEFAULT_THEME_SETTINGS = Object.freeze(DEFAULT_THEME_PRESET.settings);\nexport const THEMES = THEME_PRESETS;\nexport const DEFAULT_THEME_ID = DEFAULT_THEME_PRESET_ID;\nexport const DEFAULT_THEME = DEFAULT_THEME_PRESET;\n\nexport function resolveSystemThemePresetId({ prefersDark = false } = {}) {\n return DEFAULT_THEME_PRESET_ID;\n}\n\nconst PRESET_ID_SET = new Set(ENVIRONMENT_PRESETS.map((preset) => preset.id));\nconst LEGACY_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#aeb9c3\",\n tintStrength: 0.28,\n saturation: 0.42,\n contrast: 1.02,\n brightness: 0.94,\n roughness: 0.46,\n metalness: 0.02,\n clearcoat: 0.18,\n clearcoatRoughness: 0.34,\n opacity: 1,\n envMapIntensity: 0.58\n});\nconst PREVIOUS_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#aeb9c3\",\n tintMode: \"blend\",\n tintStrength: 0.08,\n saturation: 1,\n contrast: 1.04,\n brightness: 1.02,\n roughness: 0.46,\n metalness: 0.02,\n clearcoat: 0.18,\n clearcoatRoughness: 0.34,\n opacity: 1,\n envMapIntensity: 0.58,\n emissiveIntensity: 0.06\n});\nconst DIM_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#aeb9c3\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.34,\n contrast: 1.02,\n brightness: 0.82,\n roughness: 0.76,\n metalness: 0,\n clearcoat: 0,\n clearcoatRoughness: 0.72,\n opacity: 1,\n envMapIntensity: 0.08,\n emissiveIntensity: 0.01\n});\nconst LOW_CONTRAST_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#bcc8d4\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.07,\n brightness: 1.04,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n});\nconst SOFT_CONTRAST_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#748899\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.07,\n brightness: 1.04,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n});\nconst FEATURE_CONTRAST_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#556c7f\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.12,\n brightness: 1.02,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n});\nconst LEGACY_CINEMATIC_EDGES = Object.freeze({\n enabled: false,\n color: \"#8fa1b5\",\n thickness: 1\n});\nconst PREVIOUS_CINEMATIC_EDGES = Object.freeze({\n enabled: true,\n color: \"#8fa1b5\",\n thickness: 1.65\n});\nconst DIM_CINEMATIC_EDGES = Object.freeze({\n enabled: false,\n color: \"#8fa1b5\",\n thickness: 1\n});\nconst LOW_CONTRAST_CINEMATIC_EDGES = Object.freeze({\n enabled: false,\n color: \"#8fa1b5\",\n thickness: 1\n});\nconst LEGACY_CINEMATIC_BACKGROUND = Object.freeze({\n solidColor: \"#050711\",\n linearStart: \"#02040b\",\n linearEnd: \"#252f47\",\n linearAngle: 90,\n radialInner: \"#171d30\",\n radialOuter: \"#02040b\"\n});\nconst PREVIOUS_CINEMATIC_BACKGROUND = LEGACY_CINEMATIC_BACKGROUND;\nconst DIM_CINEMATIC_BACKGROUND = Object.freeze({\n solidColor: \"#0a0f18\",\n linearStart: \"#08111c\",\n linearEnd: \"#1f2c3d\",\n linearAngle: 90,\n radialInner: \"#182337\",\n radialOuter: \"#08111c\"\n});\nconst LEGACY_CINEMATIC_FLOOR = Object.freeze({\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#141a29\",\n roughness: 0.62,\n reflectivity: 0.22,\n shadowOpacity: 0.24,\n horizonBlend: 0.28\n});\nconst PREVIOUS_CINEMATIC_FLOOR = Object.freeze({\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#141a29\",\n roughness: 0.62,\n reflectivity: 0.06,\n shadowOpacity: 0.24,\n horizonBlend: 0.12\n});\nconst DIM_CINEMATIC_FLOOR = Object.freeze({\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#121a24\",\n roughness: 0.86,\n reflectivity: 0.06,\n shadowOpacity: 0.24,\n horizonBlend: 0.28\n});\nconst LEGACY_CINEMATIC_ENVIRONMENT = Object.freeze({\n enabled: true,\n presetId: \"studio-hdri-43\",\n intensity: 0.46,\n rotationY: -0.35,\n useAsBackground: false\n});\nconst DIM_CINEMATIC_ENVIRONMENT = Object.freeze({\n enabled: false,\n presetId: \"studio-hdri-43\",\n intensity: 0,\n rotationY: -0.35,\n useAsBackground: false\n});\nconst PREVIOUS_CINEMATIC_LIGHTING = Object.freeze({\n toneMappingExposure: 1.2,\n directional: {\n enabled: true,\n color: \"#f1f6fb\",\n intensity: 2.45,\n position: {\n x: -190,\n y: 300,\n z: 210\n }\n },\n spot: {\n enabled: true,\n color: \"#dbeafe\",\n intensity: 1.34,\n angle: 0.72,\n distance: 0,\n position: {\n x: 160,\n y: 245,\n z: 126\n }\n },\n point: {\n enabled: true,\n color: \"#8fb6d8\",\n intensity: 0.34,\n distance: 0,\n position: {\n x: -260,\n y: 95,\n z: -220\n }\n },\n ambient: {\n enabled: true,\n color: \"#1e293b\",\n intensity: 0.2\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#dbe7f3\",\n groundColor: \"#070a14\",\n intensity: 0.68\n }\n});\nconst DIM_CINEMATIC_LIGHTING = Object.freeze({\n toneMappingExposure: 1.03,\n directional: {\n enabled: true,\n color: \"#f1f6fb\",\n intensity: 1.28,\n position: {\n x: -190,\n y: 300,\n z: 210\n }\n },\n spot: {\n enabled: true,\n color: \"#dbeafe\",\n intensity: 0.18,\n angle: 0.72,\n distance: 0,\n position: {\n x: 160,\n y: 245,\n z: 126\n }\n },\n point: {\n enabled: true,\n color: \"#8fb6d8\",\n intensity: 0.08,\n distance: 0,\n position: {\n x: -260,\n y: 95,\n z: -220\n }\n },\n ambient: {\n enabled: true,\n color: \"#1e293b\",\n intensity: 0.42\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#dbe7f3\",\n groundColor: \"#070a14\",\n intensity: 0.92\n }\n});\n\nfunction normalizeEnvironmentPresetId(value) {\n const normalized = String(value || \"\").trim();\n if (PRESET_ID_SET.has(normalized)) {\n return normalized;\n }\n return DEFAULT_THEME_SETTINGS.environment.presetId;\n}\n\nfunction normalizePosition(value, fallback) {\n return {\n x: normalizeNumber(value?.x, fallback.x, -5000, 5000),\n y: normalizeNumber(value?.y, fallback.y, -5000, 5000),\n z: normalizeNumber(value?.z, fallback.z, -5000, 5000)\n };\n}\n\nfunction createThemeSettingsSignature(value = {}) {\n return JSON.stringify({\n colorMode: value?.colorMode || THEME_COLOR_MODES.SYSTEM,\n modeColors: value?.modeColors || {},\n materials: value?.materials || {},\n background: value?.background || {},\n floor: value?.floor || {},\n environment: value?.environment || {},\n lighting: value?.lighting || {}\n });\n}\n\nfunction valuesMatch(value, expected) {\n if (typeof expected === \"number\") {\n return Math.abs((Number(value) || 0) - expected) < 1e-6;\n }\n if (expected && typeof expected === \"object\") {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n return Object.entries(expected).every(([key, nestedExpected]) => (\n valuesMatch(value[key], nestedExpected)\n ));\n }\n return value === expected;\n}\n\nfunction valuesMatchAny(value, expectedValues) {\n return expectedValues.some((expected) => valuesMatch(value, expected));\n}\n\nfunction isMigratableCinematicThemeSettings(settings) {\n const materialMatches = valuesMatchAny(settings?.materials, [\n LEGACY_CINEMATIC_MATERIALS,\n PREVIOUS_CINEMATIC_MATERIALS,\n DIM_CINEMATIC_MATERIALS,\n LOW_CONTRAST_CINEMATIC_MATERIALS,\n SOFT_CONTRAST_CINEMATIC_MATERIALS,\n FEATURE_CONTRAST_CINEMATIC_MATERIALS,\n CINEMATIC_THEME_SETTINGS.materials\n ]);\n const floorMatches = valuesMatchAny(settings?.floor, [\n LEGACY_CINEMATIC_FLOOR,\n PREVIOUS_CINEMATIC_FLOOR,\n DIM_CINEMATIC_FLOOR,\n CINEMATIC_THEME_SETTINGS.floor\n ]);\n const environmentMatches = valuesMatchAny(settings?.environment, [\n LEGACY_CINEMATIC_ENVIRONMENT,\n DIM_CINEMATIC_ENVIRONMENT,\n CINEMATIC_THEME_SETTINGS.environment,\n WORKBENCH_THEME_SETTINGS.environment\n ]);\n const backgroundMatches = valuesMatchAny(settings?.background, [\n LEGACY_CINEMATIC_BACKGROUND,\n PREVIOUS_CINEMATIC_BACKGROUND,\n DIM_CINEMATIC_BACKGROUND,\n CINEMATIC_THEME_SETTINGS.background\n ]);\n const lightingMatches = valuesMatchAny(settings?.lighting, [\n PREVIOUS_CINEMATIC_LIGHTING,\n DIM_CINEMATIC_LIGHTING,\n CINEMATIC_THEME_SETTINGS.lighting\n ]);\n return (\n materialMatches &&\n backgroundMatches &&\n floorMatches &&\n environmentMatches &&\n lightingMatches\n );\n}\n\nexport function normalizeThemeSettings(value = {}) {\n const source = value && typeof value === \"object\" ? value : {};\n const materials = source.materials && typeof source.materials === \"object\"\n ? source.materials\n : {};\n const background = source.background && typeof source.background === \"object\"\n ? source.background\n : {};\n const environment = source.environment && typeof source.environment === \"object\"\n ? source.environment\n : {};\n const floor = source.floor && typeof source.floor === \"object\"\n ? source.floor\n : {};\n const lighting = source.lighting && typeof source.lighting === \"object\"\n ? source.lighting\n : {};\n const hasMaterialSettings = !!(source.materials && typeof source.materials === \"object\");\n const missingLegacyTintMode = hasMaterialSettings && !Object.hasOwn(materials, \"tintMode\");\n const missingLegacyEmissiveIntensity = hasMaterialSettings && !Object.hasOwn(materials, \"emissiveIntensity\");\n const normalizedDefaultColor = normalizeColor(\n materials.defaultColor || materials.tintColor,\n DEFAULT_THEME_SETTINGS.materials.defaultColor\n );\n const fillColors = normalizeThemeFillColors(materials.fillColors, normalizedDefaultColor);\n const normalizedFloorColor = normalizeColor(floor.color, DEFAULT_THEME_SETTINGS.floor?.color || \"#141416\");\n const normalizedFloorMode = normalizeFloorMode(floor.mode, DEFAULT_THEME_SETTINGS.floor?.mode || THEME_FLOOR_MODES.STAGE);\n const grid = floor.grid && typeof floor.grid === \"object\" && !Array.isArray(floor.grid)\n ? floor.grid\n : {};\n const fallbackGridSettings = createFloorGridSettings(normalizedFloorColor);\n const normalizedGridCenterColor = normalizeColor(\n grid.centerColor ?? floor.gridCenterColor ?? floor.gridCenter,\n fallbackGridSettings.centerColor\n );\n const normalizedGridCellColor = normalizeColor(\n grid.cellColor ?? floor.gridCellColor ?? floor.gridCell,\n fallbackGridSettings.cellColor\n );\n const normalizedGridOpacity = normalizeNumber(\n grid.opacity ?? floor.gridOpacity,\n fallbackGridSettings.opacity,\n 0,\n 1\n );\n const normalizedGridDensity = normalizeNumber(\n grid.density ?? floor.gridDensity,\n fallbackGridSettings.density,\n MIN_FLOOR_GRID_DENSITY,\n MAX_FLOOR_GRID_DENSITY\n );\n const colorMode = normalizeThemeColorMode(\n source.colorMode,\n DEFAULT_THEME_SETTINGS?.colorMode || THEME_COLOR_MODES.SYSTEM\n );\n\n const normalized = {\n colorMode,\n materials: {\n defaultColor: fillColors[0] || normalizedDefaultColor,\n fillColors,\n cycleColors: normalizeBoolean(\n materials.cycleColors,\n DEFAULT_THEME_SETTINGS.materials.cycleColors || false\n ),\n overrideSourceColors: normalizeBoolean(\n materials.overrideSourceColors,\n DEFAULT_THEME_SETTINGS.materials.overrideSourceColors || false\n ),\n tintMode: normalizeMaterialTintMode(\n materials.tintMode,\n missingLegacyTintMode ? \"multiply\" : DEFAULT_THEME_SETTINGS.materials.tintMode\n ),\n tintStrength: normalizeNumber(materials.tintStrength, DEFAULT_THEME_SETTINGS.materials.tintStrength, 0, 1),\n saturation: normalizeNumber(materials.saturation, DEFAULT_THEME_SETTINGS.materials.saturation, 0, 2.5),\n contrast: normalizeNumber(materials.contrast, DEFAULT_THEME_SETTINGS.materials.contrast, 0, 2.5),\n brightness: normalizeNumber(materials.brightness, DEFAULT_THEME_SETTINGS.materials.brightness, 0, 2),\n roughness: normalizeNumber(materials.roughness, DEFAULT_THEME_SETTINGS.materials.roughness, 0, 1),\n metalness: normalizeNumber(materials.metalness, DEFAULT_THEME_SETTINGS.materials.metalness, 0, 1),\n clearcoat: normalizeNumber(materials.clearcoat, DEFAULT_THEME_SETTINGS.materials.clearcoat, 0, 1),\n clearcoatRoughness: normalizeNumber(\n materials.clearcoatRoughness,\n DEFAULT_THEME_SETTINGS.materials.clearcoatRoughness,\n 0,\n 1\n ),\n opacity: normalizeNumber(materials.opacity, DEFAULT_THEME_SETTINGS.materials.opacity, 0, 1),\n envMapIntensity: normalizeNumber(materials.envMapIntensity, DEFAULT_THEME_SETTINGS.materials.envMapIntensity, 0, 4),\n emissiveIntensity: normalizeNumber(\n materials.emissiveIntensity,\n missingLegacyEmissiveIntensity ? 0 : DEFAULT_THEME_SETTINGS.materials.emissiveIntensity,\n 0,\n 2\n )\n },\n background: {\n type: normalizeBackgroundType(background.type, DEFAULT_THEME_SETTINGS.background.type),\n solidColor: normalizeColor(background.solidColor, DEFAULT_THEME_SETTINGS.background.solidColor),\n linearStart: normalizeColor(background.linearStart, DEFAULT_THEME_SETTINGS.background.linearStart),\n linearEnd: normalizeColor(background.linearEnd, DEFAULT_THEME_SETTINGS.background.linearEnd),\n linearAngle: normalizeNumber(background.linearAngle, DEFAULT_THEME_SETTINGS.background.linearAngle, -360, 360),\n radialInner: normalizeColor(background.radialInner, DEFAULT_THEME_SETTINGS.background.radialInner),\n radialOuter: normalizeColor(background.radialOuter, DEFAULT_THEME_SETTINGS.background.radialOuter)\n },\n floor: {\n mode: normalizedFloorMode,\n enabled: normalizeBoolean(floor.enabled, normalizedFloorMode !== THEME_FLOOR_MODES.NONE),\n color: normalizedFloorColor,\n roughness: normalizeNumber(floor.roughness, DEFAULT_THEME_SETTINGS.floor?.roughness ?? 0.72, 0, 1),\n reflectivity: normalizeNumber(floor.reflectivity, DEFAULT_THEME_SETTINGS.floor?.reflectivity ?? 0.12, 0, 1),\n shadowOpacity: normalizeNumber(floor.shadowOpacity, DEFAULT_THEME_SETTINGS.floor?.shadowOpacity ?? 0.45, 0, 1),\n horizonBlend: normalizeNumber(floor.horizonBlend, DEFAULT_THEME_SETTINGS.floor?.horizonBlend ?? 0, 0, 1),\n gridCenterColor: normalizedGridCenterColor,\n gridCellColor: normalizedGridCellColor,\n gridOpacity: normalizedGridOpacity,\n gridDensity: normalizedGridDensity,\n grid: {\n enabled: normalizeBoolean(grid.enabled, normalizedFloorMode === THEME_FLOOR_MODES.GRID),\n centerColor: normalizedGridCenterColor,\n cellColor: normalizedGridCellColor,\n opacity: normalizedGridOpacity,\n density: normalizedGridDensity\n }\n },\n environment: {\n enabled: normalizeBoolean(environment.enabled, DEFAULT_THEME_SETTINGS.environment.enabled),\n presetId: normalizeEnvironmentPresetId(environment.presetId),\n intensity: normalizeNumber(environment.intensity, DEFAULT_THEME_SETTINGS.environment.intensity, 0, 4),\n rotationY: normalizeNumber(environment.rotationY, DEFAULT_THEME_SETTINGS.environment.rotationY, -Math.PI * 2, Math.PI * 2),\n useAsBackground: normalizeBoolean(environment.useAsBackground, DEFAULT_THEME_SETTINGS.environment.useAsBackground)\n },\n lighting: {\n toneMappingExposure: normalizeNumber(\n lighting.toneMappingExposure,\n DEFAULT_THEME_SETTINGS.lighting.toneMappingExposure,\n 0.05,\n 6\n ),\n directional: {\n enabled: normalizeBoolean(lighting.directional?.enabled, DEFAULT_THEME_SETTINGS.lighting.directional.enabled),\n color: normalizeColor(lighting.directional?.color, DEFAULT_THEME_SETTINGS.lighting.directional.color),\n intensity: normalizeNumber(lighting.directional?.intensity, DEFAULT_THEME_SETTINGS.lighting.directional.intensity, 0, 20),\n position: normalizePosition(lighting.directional?.position, DEFAULT_THEME_SETTINGS.lighting.directional.position)\n },\n spot: {\n enabled: normalizeBoolean(lighting.spot?.enabled, DEFAULT_THEME_SETTINGS.lighting.spot.enabled),\n color: normalizeColor(lighting.spot?.color, DEFAULT_THEME_SETTINGS.lighting.spot.color),\n intensity: normalizeNumber(lighting.spot?.intensity, DEFAULT_THEME_SETTINGS.lighting.spot.intensity, 0, 20),\n angle: normalizeNumber(lighting.spot?.angle, DEFAULT_THEME_SETTINGS.lighting.spot.angle, 0.01, Math.PI / 2),\n distance: normalizeNumber(lighting.spot?.distance, DEFAULT_THEME_SETTINGS.lighting.spot.distance, 0, 5000),\n position: normalizePosition(lighting.spot?.position, DEFAULT_THEME_SETTINGS.lighting.spot.position)\n },\n point: {\n enabled: normalizeBoolean(lighting.point?.enabled, DEFAULT_THEME_SETTINGS.lighting.point.enabled),\n color: normalizeColor(lighting.point?.color, DEFAULT_THEME_SETTINGS.lighting.point.color),\n intensity: normalizeNumber(lighting.point?.intensity, DEFAULT_THEME_SETTINGS.lighting.point.intensity, 0, 20),\n distance: normalizeNumber(lighting.point?.distance, DEFAULT_THEME_SETTINGS.lighting.point.distance, 0, 5000),\n position: normalizePosition(lighting.point?.position, DEFAULT_THEME_SETTINGS.lighting.point.position)\n },\n ambient: {\n enabled: normalizeBoolean(lighting.ambient?.enabled, DEFAULT_THEME_SETTINGS.lighting.ambient.enabled),\n color: normalizeColor(lighting.ambient?.color, DEFAULT_THEME_SETTINGS.lighting.ambient.color),\n intensity: normalizeNumber(lighting.ambient?.intensity, DEFAULT_THEME_SETTINGS.lighting.ambient.intensity, 0, 20)\n },\n hemisphere: {\n enabled: normalizeBoolean(lighting.hemisphere?.enabled, DEFAULT_THEME_SETTINGS.lighting.hemisphere.enabled),\n skyColor: normalizeColor(lighting.hemisphere?.skyColor, DEFAULT_THEME_SETTINGS.lighting.hemisphere.skyColor),\n groundColor: normalizeColor(lighting.hemisphere?.groundColor, DEFAULT_THEME_SETTINGS.lighting.hemisphere.groundColor),\n intensity: normalizeNumber(lighting.hemisphere?.intensity, DEFAULT_THEME_SETTINGS.lighting.hemisphere.intensity, 0, 20)\n }\n }\n };\n normalized.modeColors = normalizeThemeModeColors(source.modeColors, normalized);\n\n if (\n !Object.hasOwn(source, \"colorMode\") &&\n !Object.hasOwn(source, \"modeColors\") &&\n isMigratableCinematicThemeSettings(normalized)\n ) {\n return normalizeThemeSettings(deepClone(WORKBENCH_THEME_SETTINGS));\n }\n\n return normalized;\n}\n\nfunction cloneNormalizedThemeSettings(value = DEFAULT_THEME_SETTINGS) {\n return normalizeThemeSettings(JSON.parse(JSON.stringify(value)));\n}\n\nexport function normalizeThemePresetId(presetId) {\n const normalized = String(presetId || \"\").trim();\n const canonical = THEME_PRESET_ID_ALIASES[normalized] || normalized;\n return THEME_PRESETS.some((preset) => preset.id === canonical) ? canonical : \"\";\n}\n\nexport function getThemePresetById(presetId) {\n const normalizedPresetId = normalizeThemePresetId(presetId);\n return THEME_PRESETS.find((preset) => preset.id === normalizedPresetId) || DEFAULT_THEME_PRESET;\n}\n\nexport function cloneThemePresetSettings(presetId) {\n return cloneNormalizedThemeSettings(getThemePresetById(presetId).settings);\n}\n\nexport function cloneThemeSettings(themeId) {\n return cloneThemePresetSettings(themeId);\n}\n\nexport function getThemePresetIdForSettings(themeSettings) {\n const currentSignature = createThemeSettingsSignature(normalizeThemeSettings(themeSettings));\n for (const preset of THEME_PRESETS) {\n const presetSignature = createThemeSettingsSignature(normalizeThemeSettings(preset.settings));\n if (presetSignature === currentSignature) {\n return preset.id;\n }\n }\n return null;\n}\n\nexport function getThemeIdForSettings(themeSettings) {\n return getThemePresetIdForSettings(themeSettings);\n}\n\nexport function resolveThemeSettingsColorMode(themeSettings = {}, { prefersDark = false, systemFallback = THEME_COLOR_MODES.LIGHT } = {}) {\n const normalizedColorMode = normalizeThemeColorMode(\n themeSettings?.colorMode,\n DEFAULT_THEME_SETTINGS?.colorMode || THEME_COLOR_MODES.SYSTEM\n );\n if (normalizedColorMode === THEME_COLOR_MODES.SYSTEM) {\n return prefersDark === true\n ? THEME_COLOR_MODES.DARK\n : normalizeThemeColorMode(systemFallback, THEME_COLOR_MODES.LIGHT) === THEME_COLOR_MODES.DARK\n ? THEME_COLOR_MODES.DARK\n : THEME_COLOR_MODES.LIGHT;\n }\n return normalizedColorMode;\n}\n\nexport function resolveThemeSettingsForColorMode(themeSettings = {}, options = {}) {\n const normalized = normalizeThemeSettings(themeSettings);\n const resolvedColorMode = resolveThemeSettingsColorMode(normalized, options);\n const resolved = deepClone(normalized);\n resolved.colorMode = resolvedColorMode;\n applyThemeModeColorOverrides(resolved, normalized.modeColors?.[resolvedColorMode]);\n return normalizeThemeSettings(resolved);\n}\n\nexport function themeSettingsSupportsSystemColorMode(themeSettings = {}) {\n const normalized = normalizeThemeSettings(themeSettings);\n return normalized.colorMode === THEME_COLOR_MODES.SYSTEM;\n}\n\nexport function inferThemeSettingsSceneTone(themeSettings, options = {}) {\n const normalized = resolveThemeSettingsForColorMode(themeSettings, options);\n const luminance = relativeLuminance(\n normalized.floor?.color,\n DEFAULT_THEME_SETTINGS.floor?.color || DEFAULT_THEME_SETTINGS.background.solidColor\n );\n return luminance >= 0.36 ? \"light\" : \"dark\";\n}\n\nexport function inferThemeSceneTone(themeSettings) {\n return inferThemeSettingsSceneTone(themeSettings);\n}\n\nexport function getEnvironmentPresetById(presetId) {\n return ENVIRONMENT_PRESETS.find((preset) => preset.id === presetId) || ENVIRONMENT_PRESETS[0];\n}\n","import { THEME_FLOOR_MODES } from \"../themeSettings.js\";\nimport {\n clampSceneModelRadius,\n VIEWER_SCENE_SCALE,\n getSceneScaleSettings\n} from \"./sceneScale.js\";\n\nexport const BASE_VIEWER_THEME = {\n sceneBackground: \"#09090b\",\n surface: \"#f4f4f5\",\n surfaceRoughness: 0.92,\n surfaceMetalness: 0.03,\n surfaceClearcoat: 0,\n surfaceClearcoatRoughness: 0.6,\n edge: \"#18181b\",\n edgeThickness: 1,\n edgeOpacity: 0.84,\n selected: \"#2563eb\",\n hover: \"#0ea5e9\",\n gridCenter: \"#3f3f46\",\n gridCell: \"#27272a\",\n gridOpacity: 0.16,\n stageFloorColor: \"#141416\",\n stageFloorOpacity: 0.78,\n stageFloorRoughness: 0.92,\n stageFloorMetalness: 0,\n stageFloorTransmission: 0,\n stageFloorIor: 1.35,\n stageFloorThickness: 0.035,\n stageFloorAttenuationDistance: 4,\n viewPlanePalette: {\n axis: {\n x: {\n front: [250, 88, 79],\n back: [122, 32, 28]\n },\n y: {\n front: [92, 233, 123],\n back: [30, 99, 46]\n },\n z: {\n front: [84, 131, 255],\n back: [30, 53, 126]\n }\n },\n center: {\n fill: [252, 215, 74],\n stroke: [255, 235, 153]\n },\n shell: {\n inner: [24, 31, 48],\n outer: [8, 12, 20],\n stroke: [148, 163, 184]\n }\n }\n};\n\nexport const THEME_BACKGROUND_TYPES = {\n SOLID: \"solid\",\n LINEAR: \"linear\",\n RADIAL: \"radial\",\n TRANSPARENT: \"transparent\"\n};\n\nexport const HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\n\nconst BACKGROUND_TEXTURE_SIZE = 1024;\nconst FLOOR_GLOW_TEXTURE_SIZE = 512;\nconst MIN_WIREFRAME_EDGE_CONTRAST = 3;\nconst WIREFRAME_LIGHT_EDGE_COLOR = \"#dbeafe\";\nconst WIREFRAME_DARK_EDGE_COLOR = \"#111827\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeHexColor(value, fallback = \"\") {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return fallback;\n }\n return normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`.toLowerCase()\n : normalized.toLowerCase();\n}\n\nfunction hexChannelToLinear(value) {\n const srgb = value / 255;\n return srgb <= 0.03928\n ? srgb / 12.92\n : ((srgb + 0.055) / 1.055) ** 2.4;\n}\n\nfunction relativeLuminance(value) {\n const color = normalizeHexColor(value, \"#000000\");\n const red = parseInt(color.slice(1, 3), 16);\n const green = parseInt(color.slice(3, 5), 16);\n const blue = parseInt(color.slice(5, 7), 16);\n return (\n 0.2126 * hexChannelToLinear(red) +\n 0.7152 * hexChannelToLinear(green) +\n 0.0722 * hexChannelToLinear(blue)\n );\n}\n\nfunction contrastRatio(colorA, colorB) {\n const luminanceA = relativeLuminance(colorA);\n const luminanceB = relativeLuminance(colorB);\n const lighter = Math.max(luminanceA, luminanceB);\n const darker = Math.min(luminanceA, luminanceB);\n return (lighter + 0.05) / (darker + 0.05);\n}\n\nfunction minimumContrast(color, backgroundColors) {\n const normalizedBackgrounds = backgroundColors\n .map((backgroundColor) => normalizeHexColor(backgroundColor, \"\"))\n .filter(Boolean);\n if (!normalizedBackgrounds.length) {\n return Infinity;\n }\n return Math.min(...normalizedBackgrounds.map((backgroundColor) => contrastRatio(color, backgroundColor)));\n}\n\nfunction wireframeBackgroundColors(themeSettings = {}, viewerTheme = BASE_VIEWER_THEME) {\n const background = themeSettings?.background || {};\n const backgroundType = String(background.type || \"\").trim().toLowerCase();\n const colors = [];\n if (backgroundType === THEME_BACKGROUND_TYPES.LINEAR) {\n colors.push(background.linearStart, background.linearEnd);\n } else if (backgroundType === THEME_BACKGROUND_TYPES.RADIAL) {\n colors.push(background.radialInner, background.radialOuter);\n } else if (backgroundType === THEME_BACKGROUND_TYPES.SOLID) {\n colors.push(background.solidColor);\n }\n const normalizedColors = colors\n .map((backgroundColor) => normalizeHexColor(backgroundColor, \"\"))\n .filter(Boolean);\n return normalizedColors.length\n ? normalizedColors\n : [viewerTheme?.sceneBackground, BASE_VIEWER_THEME.sceneBackground];\n}\n\nexport function resolveWireframeEdgeColor({\n edgeColor = \"\",\n themeSettings = {},\n viewerTheme = BASE_VIEWER_THEME,\n minimumContrastRatio = MIN_WIREFRAME_EDGE_CONTRAST\n} = {}) {\n const normalizedEdgeColor = normalizeHexColor(edgeColor, \"\");\n const backgroundColors = wireframeBackgroundColors(themeSettings, viewerTheme);\n if (\n normalizedEdgeColor &&\n minimumContrast(normalizedEdgeColor, backgroundColors) >= minimumContrastRatio\n ) {\n return normalizedEdgeColor;\n }\n return minimumContrast(WIREFRAME_LIGHT_EDGE_COLOR, backgroundColors) >=\n minimumContrast(WIREFRAME_DARK_EDGE_COLOR, backgroundColors)\n ? WIREFRAME_LIGHT_EDGE_COLOR\n : WIREFRAME_DARK_EDGE_COLOR;\n}\n\nexport function getViewerThemeValue(viewerTheme, key, fallback) {\n const value = viewerTheme?.[key];\n return value ?? BASE_VIEWER_THEME[key] ?? fallback;\n}\n\nexport function getViewerThemeNumber(viewerTheme, key, fallback) {\n const value = Number(getViewerThemeValue(viewerTheme, key, fallback));\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeFloorMode(value, fallback = THEME_FLOOR_MODES.STAGE) {\n const normalized = String(value || \"\").trim().toLowerCase();\n if (normalized === \"glass\") {\n return THEME_FLOOR_MODES.STAGE;\n }\n return Object.values(THEME_FLOOR_MODES).includes(normalized)\n ? normalized\n : fallback;\n}\n\nexport function resolveFloorMode(floorSettings = {}) {\n const gridEnabled = floorSettings?.grid?.enabled === true;\n const floorEnabled = floorSettings?.enabled !== false;\n const gridExplicitlyDisabled = floorSettings?.grid?.enabled === false;\n if (gridEnabled) {\n return THEME_FLOOR_MODES.GRID;\n }\n if (!floorEnabled) {\n return THEME_FLOOR_MODES.NONE;\n }\n if (gridExplicitlyDisabled) {\n return THEME_FLOOR_MODES.STAGE;\n }\n return normalizeFloorMode(floorSettings?.mode);\n}\n\nfunction toThemeArray(value) {\n if (Array.isArray(value)) {\n return value.filter(Boolean);\n }\n return value ? [value] : [];\n}\n\nfunction colorToRgba(THREE, value, alpha = 1) {\n const color = new THREE.Color(value || \"#000000\");\n return `rgba(${Math.round(color.r * 255)}, ${Math.round(color.g * 255)}, ${Math.round(color.b * 255)}, ${clamp(alpha, 0, 1)})`;\n}\n\nexport function normalizeGradientStops(stops) {\n const filteredStops = toThemeArray(stops);\n if (!filteredStops.length) {\n return [];\n }\n return filteredStops\n .map((stop, index) => {\n if (typeof stop === \"string\") {\n return {\n offset: filteredStops.length === 1 ? 0 : index / (filteredStops.length - 1),\n color: stop\n };\n }\n const fallbackOffset = filteredStops.length === 1 ? 0 : index / (filteredStops.length - 1);\n const offset = Number(stop?.offset);\n return {\n offset: Number.isFinite(offset) ? clamp(offset, 0, 1) : fallbackOffset,\n color: stop?.color || stop?.value || \"#000000\"\n };\n })\n .sort((left, right) => left.offset - right.offset);\n}\n\nexport function createSceneBackgroundTexture(THREE, viewerTheme, themeBackground = null) {\n const backgroundType = String(themeBackground?.type || \"\").trim().toLowerCase();\n const useThemeBackground = !!backgroundType;\n const gradientStops = useThemeBackground\n ? (\n backgroundType === THEME_BACKGROUND_TYPES.LINEAR\n ? [\n { offset: 0, color: themeBackground.linearStart || \"#000000\" },\n { offset: 1, color: themeBackground.linearEnd || \"#ffffff\" }\n ]\n : backgroundType === THEME_BACKGROUND_TYPES.RADIAL\n ? [\n { offset: 0, color: themeBackground.radialInner || \"#000000\" },\n { offset: 1, color: themeBackground.radialOuter || \"#ffffff\" }\n ]\n : []\n )\n : normalizeGradientStops(viewerTheme?.sceneBackgroundGradient);\n const glowLayers = useThemeBackground ? [] : toThemeArray(viewerTheme?.sceneBackgroundGlow);\n if (!gradientStops.length && !glowLayers.length) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = BACKGROUND_TEXTURE_SIZE;\n canvas.height = BACKGROUND_TEXTURE_SIZE;\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return null;\n }\n\n context.fillStyle = useThemeBackground\n ? themeBackground.solidColor || BASE_VIEWER_THEME.sceneBackground\n : viewerTheme?.sceneBackground || BASE_VIEWER_THEME.sceneBackground;\n context.fillRect(0, 0, canvas.width, canvas.height);\n\n if (gradientStops.length) {\n if (backgroundType === THEME_BACKGROUND_TYPES.RADIAL) {\n const radialGradient = context.createRadialGradient(\n canvas.width / 2,\n canvas.height / 2,\n canvas.width * 0.1,\n canvas.width / 2,\n canvas.height / 2,\n canvas.width * 0.75\n );\n for (const stop of gradientStops) {\n radialGradient.addColorStop(stop.offset, stop.color);\n }\n context.fillStyle = radialGradient;\n context.fillRect(0, 0, canvas.width, canvas.height);\n } else {\n const angleDeg = Number.isFinite(Number(themeBackground?.linearAngle)) ? Number(themeBackground.linearAngle) : 180;\n const angleRad = (angleDeg * Math.PI) / 180;\n const cx = canvas.width / 2;\n const cy = canvas.height / 2;\n const radius = Math.max(canvas.width, canvas.height);\n const x1 = cx - Math.cos(angleRad) * radius;\n const y1 = cy - Math.sin(angleRad) * radius;\n const x2 = cx + Math.cos(angleRad) * radius;\n const y2 = cy + Math.sin(angleRad) * radius;\n const linearGradient = context.createLinearGradient(x1, y1, x2, y2);\n for (const stop of gradientStops) {\n linearGradient.addColorStop(stop.offset, stop.color);\n }\n context.fillStyle = linearGradient;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n }\n\n for (const glowLayer of glowLayers) {\n const resolvedX = Number(glowLayer?.x);\n const resolvedY = Number(glowLayer?.y);\n const x = Number.isFinite(resolvedX) ? clamp(resolvedX, 0, 1) : 0.5;\n const y = Number.isFinite(resolvedY) ? clamp(resolvedY, 0, 1) : 0.5;\n const radius = Math.max(Number(glowLayer?.radius) || 0, 0.08);\n const opacity = clamp(Number(glowLayer?.opacity) || 0, 0, 1);\n if (opacity <= 0) {\n continue;\n }\n const centerX = canvas.width * x;\n const centerY = canvas.height * y;\n const outerRadius = canvas.width * radius;\n const glow = context.createRadialGradient(centerX, centerY, 0, centerX, centerY, outerRadius);\n glow.addColorStop(0, colorToRgba(THREE, glowLayer?.color || \"#ffffff\", opacity));\n glow.addColorStop(0.5, colorToRgba(THREE, glowLayer?.color || \"#ffffff\", opacity * 0.3));\n glow.addColorStop(1, colorToRgba(THREE, glowLayer?.color || \"#ffffff\", 0));\n context.fillStyle = glow;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n const texture = new THREE.CanvasTexture(canvas);\n texture.colorSpace = THREE.SRGBColorSpace;\n texture.minFilter = THREE.LinearFilter;\n texture.magFilter = THREE.LinearFilter;\n texture.generateMipmaps = false;\n return texture;\n}\n\nexport function disposeTexture(texture) {\n texture?.dispose?.();\n}\n\nexport function applySceneBackground(runtime, viewerTheme, themeBackground = null) {\n if (!runtime?.THREE || !runtime?.scene) {\n return;\n }\n if (String(themeBackground?.type || \"\").toLowerCase() === THEME_BACKGROUND_TYPES.TRANSPARENT) {\n disposeTexture(runtime.sceneBackgroundTexture);\n runtime.sceneBackgroundTexture = null;\n runtime.scene.background = null;\n runtime.renderer?.setClearAlpha?.(0);\n return;\n }\n runtime.renderer?.setClearAlpha?.(1);\n disposeTexture(runtime.sceneBackgroundTexture);\n runtime.sceneBackgroundTexture = createSceneBackgroundTexture(runtime.THREE, viewerTheme, themeBackground);\n if (runtime.sceneBackgroundTexture) {\n runtime.scene.background = runtime.sceneBackgroundTexture;\n return;\n }\n runtime.scene.background = new runtime.THREE.Color(\n themeBackground?.solidColor || viewerTheme.sceneBackground || BASE_VIEWER_THEME.sceneBackground\n );\n}\n\nexport function createSafeColor(THREE, value, fallback = \"#000000\") {\n const normalizedValue = String(value || \"\").trim();\n const normalizedFallback = String(fallback || \"#000000\").trim();\n const colorValue = HEX_COLOR_PATTERN.test(normalizedValue) ? normalizedValue : normalizedFallback;\n try {\n return new THREE.Color(colorValue);\n } catch {\n return new THREE.Color(HEX_COLOR_PATTERN.test(normalizedFallback) ? normalizedFallback : \"#000000\");\n }\n}\n\nexport function resolveBackgroundFloorColor(THREE, themeBackground = {}, viewerTheme = BASE_VIEWER_THEME) {\n const fallbackColor = viewerTheme?.stageFloorColor || viewerTheme?.sceneBackground || BASE_VIEWER_THEME.stageFloorColor;\n const backgroundType = String(themeBackground?.type || \"\").trim().toLowerCase();\n if (backgroundType === THEME_BACKGROUND_TYPES.LINEAR) {\n return createSafeColor(THREE, themeBackground.linearStart, fallbackColor)\n .lerp(createSafeColor(THREE, themeBackground.linearEnd, fallbackColor), 0.7);\n }\n if (backgroundType === THEME_BACKGROUND_TYPES.RADIAL) {\n return createSafeColor(THREE, themeBackground.radialInner, fallbackColor)\n .lerp(createSafeColor(THREE, themeBackground.radialOuter, fallbackColor), 0.72);\n }\n if (backgroundType === THEME_BACKGROUND_TYPES.SOLID) {\n return createSafeColor(THREE, themeBackground.solidColor, fallbackColor);\n }\n return createSafeColor(THREE, fallbackColor, BASE_VIEWER_THEME.stageFloorColor);\n}\n\nexport function resolveStageFloorGlassFactor(themeSettings = {}) {\n const materials = themeSettings?.materials || {};\n const environment = themeSettings?.environment || {};\n const roughness = clamp(Number(materials.roughness) || 0, 0, 1);\n const clearcoat = clamp(Number(materials.clearcoat) || 0, 0, 1);\n const envSignal = environment?.enabled\n ? clamp(((Number(materials.envMapIntensity) || 0) * (Number(environment.intensity) || 0)) / 3, 0, 1)\n : 0;\n return clamp((clearcoat * 0.5) + ((1 - roughness) * 0.25) + (envSignal * 0.35), 0, 1);\n}\n\nexport function resolveStageFloorColor(THREE, viewerTheme, themeSettings = {}) {\n const explicitFloorColor = String(themeSettings?.floor?.color || \"\").trim();\n if (HEX_COLOR_PATTERN.test(explicitFloorColor)) {\n return createSafeColor(THREE, explicitFloorColor, viewerTheme?.stageFloorColor || BASE_VIEWER_THEME.stageFloorColor);\n }\n\n const backgroundColor = resolveBackgroundFloorColor(THREE, themeSettings?.background, viewerTheme);\n const glassFactor = resolveStageFloorGlassFactor(themeSettings);\n if (glassFactor >= 0.35) {\n const backgroundHsl = {};\n backgroundColor.getHSL(backgroundHsl);\n const floorColor = backgroundColor.clone();\n const lightness = backgroundHsl.l < 0.42\n ? clamp(backgroundHsl.l + 0.012, 0.06, 0.14)\n : clamp(backgroundHsl.l - 0.045, 0.36, 0.78);\n floorColor.setHSL(backgroundHsl.h, clamp(backgroundHsl.s * 0.14, 0, 0.04), lightness);\n return floorColor;\n }\n\n const groundColor = createSafeColor(\n THREE,\n themeSettings?.lighting?.hemisphere?.groundColor,\n viewerTheme?.stageFloorColor || BASE_VIEWER_THEME.stageFloorColor\n );\n const defaultColor = createSafeColor(THREE, themeSettings?.materials?.defaultColor, \"#ffffff\");\n const floorColor = backgroundColor.clone()\n .lerp(groundColor, 0.42 - (glassFactor * 0.24))\n .lerp(defaultColor, 0.07 - (glassFactor * 0.04))\n .lerp(backgroundColor, glassFactor * 0.5);\n const floorHsl = {};\n const backgroundHsl = {};\n floorColor.getHSL(floorHsl);\n backgroundColor.getHSL(backgroundHsl);\n const lightness = backgroundHsl.l < 0.42\n ? clamp(\n Math.max(floorHsl.l, backgroundHsl.l + (0.055 - (glassFactor * 0.035))),\n 0.1 - (glassFactor * 0.04),\n 0.34 - (glassFactor * 0.13)\n )\n : clamp(Math.min(floorHsl.l, backgroundHsl.l - 0.075), 0.38, 0.78);\n floorColor.setHSL(\n floorHsl.h,\n clamp(floorHsl.s * (0.58 - (glassFactor * 0.2)), 0.025, 0.38),\n lightness\n );\n return floorColor;\n}\n\nexport function getStageFloorSetting(themeSettings, key, fallback, min = 0, max = 1) {\n const value = Number(themeSettings?.floor?.[key]);\n return Number.isFinite(value) ? clamp(value, min, max) : fallback;\n}\n\nexport function createStageFloorGlowTexture(THREE, color, opacity) {\n const resolvedOpacity = clamp(Number(opacity) || 0, 0, 1);\n if (resolvedOpacity <= 0.001 || typeof document === \"undefined\") {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = FLOOR_GLOW_TEXTURE_SIZE;\n canvas.height = FLOOR_GLOW_TEXTURE_SIZE;\n const context = canvas.getContext(\"2d\");\n if (!context) {\n return null;\n }\n\n const center = FLOOR_GLOW_TEXTURE_SIZE / 2;\n const gradient = context.createRadialGradient(center, center, 0, center, center, center);\n gradient.addColorStop(0, colorToRgba(THREE, color, resolvedOpacity));\n gradient.addColorStop(0.28, colorToRgba(THREE, color, resolvedOpacity * 0.56));\n gradient.addColorStop(0.62, colorToRgba(THREE, color, resolvedOpacity * 0.16));\n gradient.addColorStop(1, colorToRgba(THREE, color, 0));\n context.fillStyle = gradient;\n context.fillRect(0, 0, canvas.width, canvas.height);\n\n const texture = new THREE.CanvasTexture(canvas);\n texture.colorSpace = THREE.SRGBColorSpace;\n texture.minFilter = THREE.LinearFilter;\n texture.magFilter = THREE.LinearFilter;\n texture.generateMipmaps = false;\n return texture;\n}\n\nexport function getStageFloorGlowSize(lightingScopeRadius, size, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n const sceneScaleSettings = getSceneScaleSettings(sceneScaleMode);\n const safeLightingRadius = Math.max(\n Number(lightingScopeRadius) || 0,\n sceneScaleSettings.minModelRadius\n );\n return Math.min(\n Math.max(Number(size) || 0, 0) * 0.24,\n safeLightingRadius * 8\n );\n}\n\nexport function createStageFloorPlane(THREE, viewerTheme, themeSettings, size, floorZ, lift = 0) {\n const glassFactor = resolveStageFloorGlassFactor(themeSettings);\n const horizonBlend = getStageFloorSetting(themeSettings, \"horizonBlend\", 0, 0, 1);\n const reflectivity = getStageFloorSetting(themeSettings, \"reflectivity\", 0.12, 0, 1);\n const floorColor = resolveStageFloorColor(THREE, viewerTheme, themeSettings);\n const roughness = getStageFloorSetting(\n themeSettings,\n \"roughness\",\n clamp(getViewerThemeNumber(viewerTheme, \"stageFloorRoughness\", 0.92) - (glassFactor * 0.48), 0.16, 1),\n 0,\n 1\n );\n const opacity = horizonBlend <= 0.001\n ? 1\n : clamp(\n (getViewerThemeNumber(viewerTheme, \"stageFloorOpacity\", 0.78) - (glassFactor * 0.02)) * (1 - (horizonBlend * 0.3)),\n 0.62,\n 1\n );\n const floorHsl = {};\n floorColor.getHSL(floorHsl);\n const isDarkFloor = floorHsl.l < 0.18;\n const specularColor = isDarkFloor\n ? floorColor.clone().lerp(new THREE.Color(\"#1c5f8f\"), 0.5)\n : new THREE.Color(\"#ffffff\");\n const specularIntensity = isDarkFloor\n ? clamp(reflectivity * 0.38, 0, 0.06)\n : clamp(reflectivity * 1.4, 0.04, 0.36);\n const clearcoat = isDarkFloor\n ? clamp(reflectivity * 0.22, 0, 0.05)\n : clamp((reflectivity * 0.58) + (glassFactor * 0.12), 0, 0.9);\n const clearcoatRoughness = isDarkFloor\n ? clamp(Math.max(roughness * 0.95, 0.35), 0.35, 0.85)\n : clamp(\n roughness * 0.62,\n 0.04,\n 0.8\n );\n const envMapIntensity = clamp(\n (\n Number(themeSettings?.materials?.envMapIntensity || 0) *\n (themeSettings?.environment?.enabled ? Number(themeSettings?.environment?.intensity || 0) : 0) *\n (0.08 + (glassFactor * 0.1))\n ) + (reflectivity * 0.48),\n 0,\n 1.15\n );\n const material = new THREE.MeshPhysicalMaterial({\n color: floorColor,\n roughness,\n metalness: clamp(getViewerThemeNumber(viewerTheme, \"stageFloorMetalness\", 0) + (reflectivity * 0.06), 0, 0.18),\n clearcoat,\n clearcoatRoughness,\n reflectivity,\n specularColor,\n specularIntensity,\n transmission: clamp(\n getViewerThemeNumber(viewerTheme, \"stageFloorTransmission\", BASE_VIEWER_THEME.stageFloorTransmission) +\n (glassFactor * 0.005),\n 0,\n 0.02\n ),\n ior: getViewerThemeNumber(viewerTheme, \"stageFloorIor\", BASE_VIEWER_THEME.stageFloorIor),\n thickness: getViewerThemeNumber(\n viewerTheme,\n \"stageFloorThickness\",\n BASE_VIEWER_THEME.stageFloorThickness\n ),\n attenuationDistance: getViewerThemeNumber(\n viewerTheme,\n \"stageFloorAttenuationDistance\",\n BASE_VIEWER_THEME.stageFloorAttenuationDistance\n ),\n transparent: opacity < 0.999,\n opacity,\n side: THREE.FrontSide,\n depthWrite: opacity >= 0.999,\n envMapIntensity\n });\n const mesh = new THREE.Mesh(new THREE.PlaneGeometry(1, 1, 1, 1), material);\n mesh.position.set(0, 0, floorZ + lift);\n mesh.scale.set(size, size, 1);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.renderOrder = -3;\n return mesh;\n}\n\nexport function createStageFloorGlowPlane(THREE, themeSettings, lightingScopeRadius, size, floorZ, sceneScaleMode, lift = 0.008) {\n const spotLight = themeSettings?.lighting?.spot || {};\n if (spotLight.enabled === false) {\n return null;\n }\n\n const reflectivity = getStageFloorSetting(themeSettings, \"reflectivity\", 0.12, 0, 1);\n const shadowOpacity = getStageFloorSetting(themeSettings, \"shadowOpacity\", 0.45, 0, 1);\n const spotIntensity = Math.max(Number(spotLight.intensity) || 0, 0);\n const glowOpacity = clamp(0.025 + (spotIntensity * 0.11) + (reflectivity * 0.32) - (shadowOpacity * 0.06), 0, 0.36);\n const texture = createStageFloorGlowTexture(THREE, spotLight.color || \"#ffffff\", glowOpacity);\n if (!texture) {\n return null;\n }\n\n const glowSize = getStageFloorGlowSize(lightingScopeRadius, size, sceneScaleMode);\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n opacity: 1,\n depthWrite: false,\n blending: THREE.AdditiveBlending,\n side: THREE.FrontSide,\n toneMapped: true\n });\n const mesh = new THREE.Mesh(new THREE.PlaneGeometry(1, 1, 1, 1), material);\n mesh.position.set(0, 0, floorZ + lift);\n mesh.scale.set(glowSize * 1.45, glowSize, 1);\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n mesh.renderOrder = -2.8;\n return mesh;\n}\n\nexport function createStageShadowPlane(THREE, themeSettings, size, floorZ, lift = 0.01) {\n const opacity = getStageFloorSetting(themeSettings, \"shadowOpacity\", 0.45, 0, 1);\n if (opacity <= 0.001) {\n return null;\n }\n const material = new THREE.ShadowMaterial({\n color: 0x000000,\n opacity,\n transparent: true,\n depthWrite: false\n });\n const mesh = new THREE.Mesh(new THREE.PlaneGeometry(1, 1, 1, 1), material);\n mesh.position.set(0, 0, floorZ + lift);\n mesh.scale.set(size, size, 1);\n mesh.receiveShadow = true;\n mesh.castShadow = false;\n mesh.renderOrder = -2;\n return mesh;\n}\n\nexport function updateSpotLightTarget(runtime) {\n if (!runtime?.spotLight?.target?.position) {\n return;\n }\n const floorZ = Number(runtime.gridFloorZ);\n const targetZ = runtime.floorMode !== THEME_FLOOR_MODES.NONE && Number.isFinite(floorZ) ? floorZ : 0;\n runtime.spotLight.target.position.set(0, 0, targetZ);\n runtime.spotLight.target.updateMatrixWorld?.();\n}\n\nexport function getStageFloorSize(radius, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n const sceneScaleSettings = getSceneScaleSettings(sceneScaleMode);\n const safeRadius = clampSceneModelRadius(radius, sceneScaleMode);\n return Math.max(sceneScaleSettings.minGridSize * 80, safeRadius * 160);\n}\n","export const DEFAULT_AUTO_ZOOM_PADDING = 1.04;\n\nconst EPSILON = 1e-6;\n\nfunction toNumber(value, fallback = 0) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\n\nfunction normalizePartId(value) {\n return String(value || \"\").trim();\n}\n\nfunction partIdMatchesFilter(partId, filter) {\n const normalizedPartId = normalizePartId(partId);\n if (!filter?.size) {\n return true;\n }\n if (filter.has(\"__model__\")) {\n return true;\n }\n if (!normalizedPartId) {\n return false;\n }\n for (const candidate of filter) {\n const normalizedCandidate = normalizePartId(\n String(candidate || \"\").startsWith(\"#\")\n ? String(candidate || \"\").slice(1)\n : candidate\n );\n if (\n normalizedPartId === normalizedCandidate ||\n normalizedPartId.startsWith(`${normalizedCandidate}.`)\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction isNumericBounds(bounds) {\n return Array.isArray(bounds?.min) &&\n Array.isArray(bounds?.max) &&\n bounds.min.length >= 3 &&\n bounds.max.length >= 3;\n}\n\nfunction vectorComponents(value) {\n if (value?.isVector3) {\n return [value.x, value.y, value.z];\n }\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return [toNumber(value[0]), toNumber(value[1]), toNumber(value[2])];\n }\n return [0, 0, 0];\n}\n\nfunction normalizedVector(THREE, value) {\n if (!value) {\n return null;\n }\n const [x, y, z] = vectorComponents(value);\n const vector = new THREE.Vector3(x, y, z);\n return vector.lengthSq() > EPSILON ? vector.normalize() : null;\n}\n\nexport function mergeBoundsList(boundsList = []) {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n let count = 0;\n for (const bounds of Array.isArray(boundsList) ? boundsList : []) {\n if (!isNumericBounds(bounds)) {\n continue;\n }\n count += 1;\n for (let axis = 0; axis < 3; axis += 1) {\n min[axis] = Math.min(min[axis], toNumber(bounds.min[axis]));\n max[axis] = Math.max(max[axis], toNumber(bounds.max[axis]));\n }\n }\n return count > 0 && min.every(Number.isFinite) && max.every(Number.isFinite)\n ? { min, max }\n : null;\n}\n\nexport function shiftedBounds(bounds, translation = null) {\n if (!isNumericBounds(bounds)) {\n return null;\n }\n const offset = vectorComponents(translation);\n return {\n min: bounds.min.slice(0, 3).map((value, index) => toNumber(value) + offset[index]),\n max: bounds.max.slice(0, 3).map((value, index) => toNumber(value) + offset[index])\n };\n}\n\nexport function displayRecordsBounds(records = [], {\n partIds = null,\n translationByRecord = null\n} = {}) {\n const filter = partIds instanceof Set && partIds.size > 0 ? partIds : null;\n const boundsList = [];\n for (const record of Array.isArray(records) ? records : []) {\n if (!record || !isNumericBounds(record.partBounds)) {\n continue;\n }\n const partId = normalizePartId(record.partId);\n if (filter && !partIdMatchesFilter(partId, filter)) {\n continue;\n }\n const translation = translationByRecord instanceof Map\n ? translationByRecord.get(record)\n : null;\n boundsList.push(shiftedBounds(record.partBounds, translation));\n }\n return mergeBoundsList(boundsList);\n}\n\nexport function focusedDisplayRecordsBounds(records = [], {\n partIds = null,\n translationByRecord = null,\n fallbackBounds = null\n} = {}) {\n const filter = partIds instanceof Set && partIds.size > 0 ? partIds : null;\n if (!filter) {\n return displayRecordsBounds(records, { translationByRecord }) || fallbackBounds;\n }\n const recordBounds = displayRecordsBounds(records, { partIds: filter, translationByRecord });\n return filter.has(\"__model__\") ? (recordBounds || fallbackBounds) : recordBounds;\n}\n\nexport function boundsCenterAndRadius(THREE, bounds, {\n offset = null\n} = {}) {\n if (!THREE?.Vector3 || !isNumericBounds(bounds)) {\n return null;\n }\n const center = new THREE.Vector3(\n (toNumber(bounds.min[0]) + toNumber(bounds.max[0])) / 2,\n (toNumber(bounds.min[1]) + toNumber(bounds.max[1])) / 2,\n (toNumber(bounds.min[2]) + toNumber(bounds.max[2])) / 2\n );\n if (offset?.isVector3) {\n center.add(offset);\n }\n const radius = new THREE.Vector3(\n Math.max(toNumber(bounds.max[0]) - toNumber(bounds.min[0]), 0),\n Math.max(toNumber(bounds.max[1]) - toNumber(bounds.min[1]), 0),\n Math.max(toNumber(bounds.max[2]) - toNumber(bounds.min[2]), 0)\n ).length() / 2;\n return { center, radius };\n}\n\nexport function fitDistanceForRadius(camera, radius, {\n aspect = camera?.aspect || 1,\n minRadius = 0,\n padding = DEFAULT_AUTO_ZOOM_PADDING\n} = {}) {\n const fov = Math.max(toNumber(camera?.fov, 48), EPSILON);\n const safeRadius = Math.max(\n toNumber(radius) * Math.max(toNumber(padding, DEFAULT_AUTO_ZOOM_PADDING), EPSILON),\n toNumber(minRadius)\n );\n const verticalHalfFov = (fov * Math.PI) / 360;\n const horizontalHalfFov = Math.atan(Math.tan(verticalHalfFov) * Math.max(toNumber(aspect, 1), EPSILON));\n const limitingHalfFov = Math.max(Math.min(verticalHalfFov, horizontalHalfFov), EPSILON);\n return safeRadius / Math.sin(limitingHalfFov);\n}\n\nexport function autoZoomFrameForBounds(THREE, {\n camera,\n controls,\n bounds,\n modelOffset = null,\n frameAspect = camera?.aspect || 1,\n minRadius = 0,\n padding = DEFAULT_AUTO_ZOOM_PADDING,\n defaultDirection = [2.1, -1.65, 1.08],\n viewDirection = null,\n viewUp = null\n} = {}) {\n if (!THREE?.Vector3 || !camera || !controls) {\n return null;\n }\n const frame = boundsCenterAndRadius(THREE, bounds, { offset: modelOffset });\n if (!frame || !Number.isFinite(frame.radius)) {\n return null;\n }\n const offset = camera.position.clone().sub(controls.target);\n const direction = normalizedVector(THREE, viewDirection) || (offset.lengthSq() > EPSILON\n ? offset.normalize()\n : new THREE.Vector3(...defaultDirection).normalize());\n const up = normalizedVector(THREE, viewUp) || camera.up.clone();\n const distance = fitDistanceForRadius(camera, frame.radius, {\n aspect: frameAspect,\n minRadius,\n padding\n });\n const position = frame.center.clone().add(direction.multiplyScalar(distance));\n return {\n center: frame.center,\n radius: frame.radius,\n distance,\n position,\n target: frame.center.clone(),\n up,\n zoom: camera.zoom\n };\n}\n","import {\n clampSceneModelRadius,\n VIEWER_SCENE_SCALE,\n getSceneScaleSettings\n} from \"./sceneScale.js\";\nimport { BASE_VIEWER_THEME } from \"./stageTheme.js\";\nimport {\n DEFAULT_FLOOR_GRID_SETTINGS,\n MAX_FLOOR_GRID_DENSITY,\n MIN_FLOOR_GRID_DENSITY,\n THEME_FLOOR_MODES\n} from \"../themeSettings.js\";\nimport { DEFAULT_AUTO_ZOOM_PADDING } from \"./autoZoom.js\";\n\nexport const DEFAULT_GRID_DIVISIONS = 28;\nexport const GRID_TARGET_VISIBLE_CELLS = 1.25;\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeGridDensity(value) {\n const density = Number(value);\n return Number.isFinite(density)\n ? clamp(density, MIN_FLOOR_GRID_DENSITY, MAX_FLOOR_GRID_DENSITY)\n : DEFAULT_FLOOR_GRID_SETTINGS.density;\n}\n\nfunction resolveGridStyle(viewerTheme = {}, floorSettings = {}) {\n const gridSettings = floorSettings?.grid || {};\n return {\n centerColor: gridSettings?.centerColor\n || floorSettings?.gridCenterColor\n || floorSettings?.gridCenter\n || viewerTheme?.gridCenter\n || BASE_VIEWER_THEME.gridCenter,\n cellColor: gridSettings?.cellColor\n || floorSettings?.gridCellColor\n || floorSettings?.gridCell\n || viewerTheme?.gridCell\n || BASE_VIEWER_THEME.gridCell,\n opacity: Number.isFinite(Number(gridSettings?.opacity))\n ? clamp(Number(gridSettings.opacity), 0, 1)\n : Number.isFinite(Number(floorSettings?.gridOpacity))\n ? clamp(Number(floorSettings.gridOpacity), 0, 1)\n : (viewerTheme?.gridOpacity ?? BASE_VIEWER_THEME.gridOpacity)\n };\n}\n\nexport function niceGridStep(minimumStep) {\n if (!Number.isFinite(minimumStep) || minimumStep <= 0) {\n return getSceneScaleSettings(VIEWER_SCENE_SCALE.CAD).minGridSize / DEFAULT_GRID_DIVISIONS;\n }\n const exponent = Math.floor(Math.log10(minimumStep));\n const base = 10 ** exponent;\n for (const multiplier of [1, 2, 5, 10]) {\n const step = base * multiplier;\n if (step >= minimumStep) {\n return step;\n }\n }\n return base * 10;\n}\n\nexport function buildGridConfig(radius, sceneScaleMode, floorSettings = {}) {\n const gridDensity = normalizeGridDensity(floorSettings?.grid?.density ?? floorSettings?.gridDensity);\n const safeRadius = clampSceneModelRadius(radius, sceneScaleMode);\n const targetVisibleCells = GRID_TARGET_VISIBLE_CELLS * gridDensity;\n const cellSize = (safeRadius * 2 * DEFAULT_AUTO_ZOOM_PADDING) / targetVisibleCells;\n let divisions = Math.max(2, Math.round(DEFAULT_GRID_DIVISIONS * gridDensity));\n if (divisions % 2 !== 0) {\n divisions += 1;\n }\n return {\n size: cellSize * divisions,\n cellSize,\n divisions\n };\n}\n\nexport function updateGridHelper(\n runtime,\n viewerTheme,\n radius,\n floorZ = 0,\n sceneScaleMode = VIEWER_SCENE_SCALE.CAD,\n floorMode = THEME_FLOOR_MODES.STAGE,\n { disposeSceneObject = () => {}, floorSettings = {} } = {}\n) {\n if (!runtime?.THREE || !runtime?.scene) {\n return;\n }\n runtime.gridRadius = radius;\n runtime.gridFloorZ = floorZ;\n const gridEnabled = floorSettings?.grid?.enabled === true || floorMode === THEME_FLOOR_MODES.GRID;\n runtime.floorMode = gridEnabled ? THEME_FLOOR_MODES.GRID : floorMode;\n if (!gridEnabled) {\n disposeSceneObject(runtime.gridHelper);\n runtime.gridHelper = null;\n runtime.gridConfig = null;\n return;\n }\n const nextConfig = {\n ...buildGridConfig(radius, sceneScaleMode, floorSettings),\n ...resolveGridStyle(viewerTheme, floorSettings)\n };\n const currentConfig = runtime.gridConfig;\n if (\n currentConfig &&\n currentConfig.size === nextConfig.size &&\n currentConfig.cellSize === nextConfig.cellSize &&\n currentConfig.divisions === nextConfig.divisions &&\n currentConfig.centerColor === nextConfig.centerColor &&\n currentConfig.cellColor === nextConfig.cellColor &&\n currentConfig.opacity === nextConfig.opacity\n ) {\n if (runtime.gridHelper) {\n runtime.gridHelper.rotation.x = Math.PI / 2;\n }\n runtime.gridHelper?.position.set(0, 0, floorZ);\n return;\n }\n\n disposeSceneObject(runtime.gridHelper);\n runtime.gridHelper = new runtime.THREE.GridHelper(\n nextConfig.size,\n nextConfig.divisions,\n nextConfig.centerColor,\n nextConfig.cellColor\n );\n const materials = Array.isArray(runtime.gridHelper.material)\n ? runtime.gridHelper.material\n : [runtime.gridHelper.material];\n for (const material of materials) {\n material.transparent = true;\n material.opacity = nextConfig.opacity;\n material.depthWrite = false;\n material.toneMapped = false;\n }\n runtime.gridHelper.rotation.x = Math.PI / 2;\n runtime.gridHelper.position.set(0, 0, floorZ);\n runtime.scene.add(runtime.gridHelper);\n runtime.gridConfig = nextConfig;\n}\n","import { resolveThemeFillColor } from \"../themeSettings.js\";\nimport {\n CAD_DISPLAY_MODE,\n displayModeIsWireframe,\n displayModeSurfaceOpacity\n} from \"../../common/displaySettings.js\";\nimport {\n BASE_VIEWER_THEME,\n createSafeColor,\n getViewerThemeNumber,\n HEX_COLOR_PATTERN\n} from \"./stageTheme.js\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction isNumericArray(value, stride = 1) {\n return (\n (Array.isArray(value) || ArrayBuffer.isView(value)) &&\n value.length >= stride &&\n value.length % stride === 0\n );\n}\n\nexport function shouldUseDisplayVertexColors(meshData) {\n return !!meshData?.has_source_colors && isNumericArray(meshData?.colors, 3);\n}\n\nexport function partUsesDisplayVertexColors(meshData, part) {\n if (!shouldUseDisplayVertexColors(meshData)) {\n return false;\n }\n if (part && Object.hasOwn(part, \"hasSourceColors\")) {\n return !!part.hasSourceColors;\n }\n return true;\n}\n\nexport function createSurfaceMaterial(THREE, viewerTheme, { color, useVertexColors = false } = {}) {\n const opacity = Number.isFinite(Number(viewerTheme?.surfaceOpacity))\n ? Number(viewerTheme.surfaceOpacity)\n : 1;\n return new THREE.MeshPhysicalMaterial({\n color: color || viewerTheme?.surface || BASE_VIEWER_THEME.surface,\n roughness: getViewerThemeNumber(viewerTheme, \"surfaceRoughness\", BASE_VIEWER_THEME.surfaceRoughness),\n metalness: getViewerThemeNumber(viewerTheme, \"surfaceMetalness\", BASE_VIEWER_THEME.surfaceMetalness),\n clearcoat: getViewerThemeNumber(viewerTheme, \"surfaceClearcoat\", BASE_VIEWER_THEME.surfaceClearcoat),\n clearcoatRoughness: getViewerThemeNumber(\n viewerTheme,\n \"surfaceClearcoatRoughness\",\n BASE_VIEWER_THEME.surfaceClearcoatRoughness\n ),\n side: THREE.DoubleSide,\n vertexColors: useVertexColors,\n transparent: opacity < 0.999,\n opacity,\n emissive: 0x000000,\n emissiveIntensity: 0,\n polygonOffset: false,\n polygonOffsetFactor: 0,\n polygonOffsetUnits: 0\n });\n}\n\nexport function readSourceColor(THREE, value) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return null;\n }\n const expanded = normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`\n : normalized;\n return new THREE.Color(expanded);\n}\n\nexport function shapeSourceColor(THREE, sourceColor, materialSettings = {}, { applyTint = true } = {}) {\n const shaped = (sourceColor || new THREE.Color(\"#ffffff\")).clone();\n const tintStrength = clamp(Number(materialSettings.tintStrength) || 0, 0, 1);\n if (applyTint && tintStrength > 0) {\n const tintColor = createSafeColor(THREE, materialSettings.defaultColor || materialSettings.tintColor, \"#ffffff\");\n if (materialSettings.tintMode === \"blend\") {\n shaped.lerp(tintColor, tintStrength);\n } else {\n shaped.lerp(shaped.clone().multiply(tintColor), tintStrength);\n }\n }\n\n const saturation = clamp(Number(materialSettings.saturation) || 1, 0, 2.5);\n if (Math.abs(saturation - 1) > 1e-4) {\n const hsl = {};\n shaped.getHSL(hsl);\n shaped.setHSL(hsl.h, clamp(hsl.s * saturation, 0, 1), hsl.l);\n }\n\n const contrast = clamp(Number(materialSettings.contrast) || 1, 0, 2.5);\n const brightness = clamp(Number(materialSettings.brightness) || 1, 0, 2);\n shaped.r = clamp(((shaped.r - 0.5) * contrast + 0.5) * brightness, 0, 1);\n shaped.g = clamp(((shaped.g - 0.5) * contrast + 0.5) * brightness, 0, 1);\n shaped.b = clamp(((shaped.b - 0.5) * contrast + 0.5) * brightness, 0, 1);\n return shaped;\n}\n\nexport function shapeSourceColorBuffer(THREE, colors, materialSettings = {}) {\n if (!isNumericArray(colors, 3)) {\n return colors;\n }\n const shapedColors = new Float32Array(colors.length);\n const color = new THREE.Color();\n for (let index = 0; index + 2 < colors.length; index += 3) {\n color.setRGB(\n clamp(Number(colors[index]) || 0, 0, 1),\n clamp(Number(colors[index + 1]) || 0, 0, 1),\n clamp(Number(colors[index + 2]) || 0, 0, 1)\n );\n const shaped = shapeSourceColor(THREE, color, materialSettings);\n shapedColors[index] = shaped.r;\n shapedColors[index + 1] = shaped.g;\n shapedColors[index + 2] = shaped.b;\n }\n return shapedColors;\n}\n\nexport function createMaterialFillColor(THREE, materialSettings = {}, fillIndex = 0) {\n return createSafeColor(\n THREE,\n resolveThemeFillColor(materialSettings, fillIndex),\n materialSettings?.defaultColor || BASE_VIEWER_THEME.surface\n );\n}\n\nexport function resolveMaterialFillBaseColor(THREE, materialSettings = {}, fillIndex = 0) {\n return shapeSourceColor(\n THREE,\n createMaterialFillColor(THREE, materialSettings, fillIndex),\n materialSettings,\n { applyTint: false }\n );\n}\n\nexport function resolveSourceBaseColor(THREE, {\n hasVertexColors = false,\n sourceColor = null,\n materialSettings,\n fallbackColor = \"#ffffff\",\n fillIndex = 0,\n forceFill = false\n}) {\n if (forceFill) {\n return resolveMaterialFillBaseColor(THREE, materialSettings, fillIndex);\n }\n if (hasVertexColors) {\n return new THREE.Color(\"#ffffff\");\n }\n if (!sourceColor) {\n return resolveMaterialFillBaseColor(THREE, {\n ...materialSettings,\n defaultColor: fallbackColor || materialSettings?.defaultColor\n }, fillIndex);\n }\n return shapeSourceColor(THREE, sourceColor, materialSettings);\n}\n\nexport function applyMaterialSettingsToRecord(THREE, record, materialSettings, {\n displayMode = CAD_DISPLAY_MODE.SOLID\n} = {}) {\n if (!record?.material || !materialSettings) {\n return;\n }\n const wireframeMode = displayModeIsWireframe(displayMode);\n const forceFill = materialSettings.overrideSourceColors === true || wireframeMode;\n const hasVertexColors = !forceFill && !!record.hasVertexColors;\n const nextUseVertexColors = hasVertexColors;\n record.useVertexColors = nextUseVertexColors;\n record.baseColor = resolveSourceBaseColor(THREE, {\n hasVertexColors,\n sourceColor: forceFill ? null : record.sourceColor || null,\n materialSettings,\n fallbackColor: materialSettings?.defaultColor || BASE_VIEWER_THEME.surface,\n fillIndex: record.fillIndex || 0,\n forceFill\n });\n record.material.vertexColors = nextUseVertexColors;\n record.material.roughness = clamp(Number(materialSettings.roughness) || 0, 0, 1);\n record.material.metalness = clamp(Number(materialSettings.metalness) || 0, 0, 1);\n record.material.clearcoat = clamp(Number(materialSettings.clearcoat) || 0, 0, 1);\n record.material.clearcoatRoughness = clamp(Number(materialSettings.clearcoatRoughness) || 0, 0, 1);\n record.baseOpacity = clamp(displayModeSurfaceOpacity(displayMode, Number(materialSettings.opacity) || 0), 0, 1);\n record.material.opacity = record.baseOpacity;\n record.material.transparent = wireframeMode || record.baseOpacity < 0.999;\n record.material.depthWrite = displayMode === CAD_DISPLAY_MODE.TRANSPARENT || wireframeMode\n ? false\n : record.baseOpacity >= 0.999;\n record.material.envMapIntensity = Math.max(Number(materialSettings.envMapIntensity) || 0, 0);\n if (record.material.color && record.baseColor) {\n record.material.color.copy(record.baseColor);\n }\n record.baseEmissiveIntensity = clamp(Number(materialSettings.emissiveIntensity) || 0, 0, 2);\n record.baseEmissiveColor = record.baseColor ? record.baseColor.clone() : null;\n if (\"emissive\" in record.material && record.material.emissive) {\n if (record.baseEmissiveColor && record.baseEmissiveIntensity > 0) {\n record.material.emissive.copy(record.baseEmissiveColor);\n } else {\n record.material.emissive.set(0x000000);\n }\n record.material.emissiveIntensity = record.baseEmissiveIntensity;\n }\n record.material.needsUpdate = true;\n}\n","export const REFERENCE_HOVER_COLOR = \"#8dc5ff\";\nexport const REFERENCE_SELECTED_COLOR = \"#4f9dff\";\nexport const REFERENCE_CORNER_COLOR = \"#2563eb\";\nexport const REFERENCE_HIGHLIGHT_WIDTH_MULTIPLIER = 3;\nexport const REFERENCE_HOVER_HIGHLIGHT_WIDTH_MULTIPLIER = REFERENCE_HIGHLIGHT_WIDTH_MULTIPLIER;\nexport const REFERENCE_HOVER_FILL_OPACITY = 0.3;\nexport const REFERENCE_SELECTED_FILL_OPACITY = 0.24;\n\nfunction isPlanarFaceReference(reference) {\n const surfaceType = String(reference?.pickData?.surfaceType || reference?.pickData?.surface?.type || \"\")\n .trim()\n .toLowerCase();\n return !surfaceType || surfaceType.includes(\"plane\") || surfaceType.includes(\"planar\");\n}\n\nexport function faceFillOffset(runtime, reference) {\n if (!isPlanarFaceReference(reference)) {\n return [0, 0, 0];\n }\n const normal = Array.isArray(reference?.pickData?.normal) ? reference.pickData.normal : null;\n if (!runtime?.camera || !runtime?.modelGroup || !normal || normal.length < 3) {\n return [0, 0, 0];\n }\n const normalLength = Math.hypot(normal[0], normal[1], normal[2]);\n if (normalLength <= 1e-9) {\n return [0, 0, 0];\n }\n const normalizedNormal = [\n normal[0] / normalLength,\n normal[1] / normalLength,\n normal[2] / normalLength\n ];\n const center = Array.isArray(reference?.pickData?.center) ? reference.pickData.center : [0, 0, 0];\n const modelOffset = runtime.modelGroup.position;\n const worldCenter = [\n Number(center[0] || 0) + Number(modelOffset?.x || 0),\n Number(center[1] || 0) + Number(modelOffset?.y || 0),\n Number(center[2] || 0) + Number(modelOffset?.z || 0)\n ];\n const toCamera = [\n runtime.camera.position.x - worldCenter[0],\n runtime.camera.position.y - worldCenter[1],\n runtime.camera.position.z - worldCenter[2]\n ];\n const facingSign =\n ((normalizedNormal[0] * toCamera[0]) + (normalizedNormal[1] * toCamera[1]) + (normalizedNormal[2] * toCamera[2])) >= 0\n ? 1\n : -1;\n const magnitude = Math.max(Number(runtime.modelRadius || 1) * 0.00075, 0.015);\n return [\n normalizedNormal[0] * facingSign * magnitude,\n normalizedNormal[1] * facingSign * magnitude,\n normalizedNormal[2] * facingSign * magnitude\n ];\n}\n\nexport function buildFaceFillGeometryFromProxy(runtime, THREE, selectorRuntime, reference) {\n const proxy = selectorRuntime?.proxy || {};\n const triangleStart = Number(reference?.pickData?.triangleStart || 0);\n const triangleCount = Number(reference?.pickData?.triangleCount || 0);\n if (!(proxy.facePositions instanceof Float32Array) || !(proxy.faceIndices instanceof Uint32Array) || triangleCount <= 0) {\n return null;\n }\n const indexSlice = proxy.faceIndices.slice(triangleStart * 3, (triangleStart + triangleCount) * 3);\n if (!indexSlice.length) {\n return null;\n }\n const offset = faceFillOffset(runtime, reference);\n const positions = new Float32Array(indexSlice.length * 3);\n let writeOffset = 0;\n for (const vertexIndex of indexSlice) {\n const sourceIndex = Number(vertexIndex) * 3;\n positions[writeOffset] = proxy.facePositions[sourceIndex] + offset[0];\n positions[writeOffset + 1] = proxy.facePositions[sourceIndex + 1] + offset[1];\n positions[writeOffset + 2] = proxy.facePositions[sourceIndex + 2] + offset[2];\n writeOffset += 3;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n return geometry;\n}\n\nexport function buildFaceFillGeometryFromDisplayMeshes(runtime, THREE, reference) {\n const rowIndex = Number(reference?.rowIndex);\n if (!Number.isInteger(rowIndex) || !Array.isArray(runtime?.displayRecords)) {\n return null;\n }\n const offset = faceFillOffset(runtime, reference);\n const vertex = new THREE.Vector3();\n const fillPositions = [];\n for (const record of runtime.displayRecords) {\n const mesh = record?.mesh;\n const geometry = mesh?.geometry;\n const faceIds = mesh?.userData?.faceIds;\n const positions = geometry?.getAttribute?.(\"position\");\n const indices = geometry?.getIndex?.();\n if (!(faceIds instanceof Uint32Array) || !positions || !indices || !indices.count) {\n continue;\n }\n const triangleCount = Math.min(faceIds.length, Math.floor(indices.count / 3));\n for (let triangleIndex = 0; triangleIndex < triangleCount; triangleIndex += 1) {\n if (Number(faceIds[triangleIndex]) !== rowIndex) {\n continue;\n }\n for (let corner = 0; corner < 3; corner += 1) {\n const sourceIndex = indices.getX((triangleIndex * 3) + corner);\n vertex.set(positions.getX(sourceIndex), positions.getY(sourceIndex), positions.getZ(sourceIndex));\n vertex.applyMatrix4(mesh.matrix);\n fillPositions.push(vertex.x + offset[0], vertex.y + offset[1], vertex.z + offset[2]);\n }\n }\n }\n if (!fillPositions.length) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(fillPositions), 3));\n return geometry;\n}\n\nexport function buildEdgeLinePositionsFromProxy(selectorRuntime, reference) {\n const proxy = selectorRuntime?.proxy || {};\n const segmentStart = Number(reference?.pickData?.segmentStart || 0);\n const segmentCount = Number(reference?.pickData?.segmentCount || 0);\n if (!(proxy.edgePositions instanceof Float32Array) || !(proxy.edgeIndices instanceof Uint32Array) || segmentCount <= 0) {\n return null;\n }\n const indexSlice = proxy.edgeIndices.slice(segmentStart * 2, (segmentStart + segmentCount) * 2);\n if (!indexSlice.length) {\n return null;\n }\n const linePositions = new Float32Array(segmentCount * 6);\n let writeOffset = 0;\n for (let index = 0; index + 1 < indexSlice.length; index += 2) {\n const startIndex = indexSlice[index] * 3;\n const endIndex = indexSlice[index + 1] * 3;\n linePositions[writeOffset] = proxy.edgePositions[startIndex];\n linePositions[writeOffset + 1] = proxy.edgePositions[startIndex + 1];\n linePositions[writeOffset + 2] = proxy.edgePositions[startIndex + 2];\n linePositions[writeOffset + 3] = proxy.edgePositions[endIndex];\n linePositions[writeOffset + 4] = proxy.edgePositions[endIndex + 1];\n linePositions[writeOffset + 5] = proxy.edgePositions[endIndex + 2];\n writeOffset += 6;\n }\n return writeOffset === linePositions.length ? linePositions : linePositions.subarray(0, writeOffset);\n}\n\nexport function buildAdjacentEdgeLinePositions(selectorRuntime, reference) {\n const selectors = Array.isArray(reference?.pickData?.adjacentSelectors) ? reference.pickData.adjacentSelectors : [];\n if (!selectors.length) {\n return null;\n }\n const positions = [];\n for (const selector of selectors) {\n const edgeReference =\n selectorRuntime?.referenceByDisplaySelector?.get?.(selector) ||\n selectorRuntime?.referenceByNormalizedSelector?.get?.(selector) ||\n null;\n const edgePositions = buildEdgeLinePositionsFromProxy(selectorRuntime, edgeReference);\n if (!edgePositions?.length) {\n continue;\n }\n positions.push(...edgePositions);\n }\n return positions.length ? positions : null;\n}\n\nexport function buildFaceBoundaryLinePositions(selectorRuntime, reference) {\n return buildAdjacentEdgeLinePositions(selectorRuntime, reference);\n}\n\nexport function createReferenceEdgeGeometryFromPoints(THREE, points) {\n if (!Array.isArray(points) || points.length < 2) {\n return null;\n }\n const linePositions = [];\n for (let index = 1; index < points.length; index += 1) {\n const start = points[index - 1];\n const end = points[index];\n if (!Array.isArray(start) || !Array.isArray(end) || start.length < 3 || end.length < 3) {\n continue;\n }\n linePositions.push(\n Number(start[0]),\n Number(start[1]),\n Number(start[2]),\n Number(end[0]),\n Number(end[1]),\n Number(end[2])\n );\n }\n if (!linePositions.length) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(linePositions), 3));\n return geometry;\n}\n\nexport function createReferenceFaceLoopGeometry(THREE, loops) {\n if (!Array.isArray(loops) || !loops.length) {\n return null;\n }\n const linePositions = [];\n for (const loop of loops) {\n if (!Array.isArray(loop) || loop.length < 2) {\n continue;\n }\n for (let index = 0; index < loop.length; index += 1) {\n const start = loop[index];\n const end = loop[(index + 1) % loop.length];\n if (!Array.isArray(start) || !Array.isArray(end) || start.length < 3 || end.length < 3) {\n continue;\n }\n linePositions.push(\n Number(start[0]),\n Number(start[1]),\n Number(start[2]),\n Number(end[0]),\n Number(end[1]),\n Number(end[2])\n );\n }\n }\n if (!linePositions.length) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(linePositions), 3));\n return geometry;\n}\n\nexport function createReferenceFaceBoundaryGeometry(THREE, reference) {\n const pickData = reference?.pickData || {};\n const loopsMeta = Array.isArray(pickData?.loopsMeta) ? pickData.loopsMeta : [];\n const boundaryLoops = loopsMeta\n .filter((loopEntry) => Array.isArray(loopEntry?.points) && loopEntry.points.length >= 2)\n .map((loopEntry) => loopEntry.points);\n if (boundaryLoops.length) {\n return createReferenceFaceLoopGeometry(THREE, boundaryLoops);\n }\n\n const fallbackLoops = Array.isArray(pickData?.loops)\n ? pickData.loops.filter((loop) => Array.isArray(loop) && loop.length >= 2)\n : [];\n return createReferenceFaceLoopGeometry(THREE, fallbackLoops);\n}\n\nfunction selectOuterLoopPoints(pickData = {}) {\n const loopsMeta = Array.isArray(pickData?.loopsMeta) ? pickData.loopsMeta : [];\n const explicitOuter = loopsMeta.find((loop) => loop?.isOuter && Array.isArray(loop?.points) && loop.points.length >= 3);\n if (explicitOuter) {\n return explicitOuter.points;\n }\n const loops = Array.isArray(pickData?.loops) ? pickData.loops : [];\n return loops.find((loop) => Array.isArray(loop) && loop.length >= 3) || null;\n}\n\nfunction isFinitePoint2(point) {\n return Array.isArray(point) && point.length >= 2 && Number.isFinite(Number(point[0])) && Number.isFinite(Number(point[1]));\n}\n\nfunction isFinitePoint3(point) {\n return Array.isArray(point) && point.length >= 3 && Number.isFinite(Number(point[0])) && Number.isFinite(Number(point[1])) && Number.isFinite(Number(point[2]));\n}\n\nfunction distanceSquared2d(a, b) {\n const dx = Number(a[0]) - Number(b[0]);\n const dy = Number(a[1]) - Number(b[1]);\n return dx * dx + dy * dy;\n}\n\nfunction distanceSquared3d(a, b) {\n const dx = Number(a[0]) - Number(b[0]);\n const dy = Number(a[1]) - Number(b[1]);\n const dz = Number(a[2]) - Number(b[2]);\n return dx * dx + dy * dy + dz * dz;\n}\n\nfunction sanitizeLoopPair(loop3d, loop2d) {\n const count = Math.min(\n Array.isArray(loop3d) ? loop3d.length : 0,\n Array.isArray(loop2d) ? loop2d.length : 0\n );\n const points3d = [];\n const points2d = [];\n for (let index = 0; index < count; index += 1) {\n const point3d = loop3d[index];\n const point2d = loop2d[index];\n if (!isFinitePoint3(point3d) || !isFinitePoint2(point2d)) {\n continue;\n }\n const normalized3d = [Number(point3d[0]), Number(point3d[1]), Number(point3d[2])];\n const normalized2d = [Number(point2d[0]), Number(point2d[1])];\n const previous3d = points3d[points3d.length - 1];\n const previous2d = points2d[points2d.length - 1];\n if (previous3d && previous2d) {\n const duplicate3d = distanceSquared3d(previous3d, normalized3d) <= 1e-10;\n const duplicate2d = distanceSquared2d(previous2d, normalized2d) <= 1e-10;\n if (duplicate3d || duplicate2d) {\n continue;\n }\n }\n points3d.push(normalized3d);\n points2d.push(normalized2d);\n }\n\n if (points3d.length >= 3 && distanceSquared3d(points3d[0], points3d[points3d.length - 1]) <= 1e-10) {\n points3d.pop();\n points2d.pop();\n }\n\n if (points3d.length < 3 || points2d.length < 3) {\n return null;\n }\n return { loop3d: points3d, loop2d: points2d };\n}\n\nfunction averagePoint3(points) {\n if (!Array.isArray(points) || !points.length) {\n return [0, 0, 0];\n }\n let x = 0;\n let y = 0;\n let z = 0;\n let count = 0;\n for (const point of points) {\n if (!isFinitePoint3(point)) {\n continue;\n }\n x += Number(point[0]);\n y += Number(point[1]);\n z += Number(point[2]);\n count += 1;\n }\n if (!count) {\n return [0, 0, 0];\n }\n return [x / count, y / count, z / count];\n}\n\nfunction subtract(a, b) {\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n}\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction length(vector) {\n return Math.hypot(vector[0], vector[1], vector[2]);\n}\n\nfunction normalizeVector3(vector) {\n const magnitude = length(vector);\n if (magnitude <= 1e-9) {\n return null;\n }\n return [vector[0] / magnitude, vector[1] / magnitude, vector[2] / magnitude];\n}\n\nfunction cross3(a, b) {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0]\n ];\n}\n\nfunction normalizeAngleAround(angle, center) {\n let adjusted = angle;\n while (adjusted - center > Math.PI) {\n adjusted -= Math.PI * 2;\n }\n while (adjusted - center < -Math.PI) {\n adjusted += Math.PI * 2;\n }\n return adjusted;\n}\n\nfunction projectLoopsWithFrame(loops, origin, xDir, yDir) {\n return loops.map((loop) => loop.map((point) => {\n const relative = subtract(point, origin);\n return [dot(relative, xDir), dot(relative, yDir)];\n }));\n}\n\nfunction projectFaceLoopsTo2d(loops, surface) {\n if (!Array.isArray(loops) || !loops.length) {\n return null;\n }\n\n const sanitizedLoops = loops.map((loop) => (Array.isArray(loop) ? loop.filter(isFinitePoint3) : []));\n const hasAnyValidLoop = sanitizedLoops.some((loop) => loop.length >= 3);\n if (!hasAnyValidLoop) {\n return null;\n }\n\n if (surface?.type === \"PLANE\" && Array.isArray(surface?.origin) && Array.isArray(surface?.xDir) && Array.isArray(surface?.yDir)) {\n const origin = surface.origin;\n const xDir = surface.xDir;\n const yDir = surface.yDir;\n return projectLoopsWithFrame(sanitizedLoops, origin, xDir, yDir);\n }\n if (\n surface?.type === \"CYLINDRICAL_SURFACE\" &&\n Array.isArray(surface?.origin) &&\n Array.isArray(surface?.axis) &&\n Array.isArray(surface?.xDir) &&\n Array.isArray(surface?.yDir) &&\n Number(surface?.radius) > 0\n ) {\n const origin = surface.origin;\n const axis = surface.axis;\n const xDir = surface.xDir;\n const yDir = surface.yDir;\n const radius = Number(surface.radius);\n return sanitizedLoops.map((loop) => {\n let previousAngle = null;\n return loop.map((point) => {\n const relative = subtract(point, origin);\n const axial = dot(relative, axis);\n const radial = [\n relative[0] - axis[0] * axial,\n relative[1] - axis[1] * axial,\n relative[2] - axis[2] * axial\n ];\n const rawAngle = Math.atan2(dot(radial, yDir), dot(radial, xDir));\n const angle = previousAngle === null ? rawAngle : normalizeAngleAround(rawAngle, previousAngle);\n previousAngle = angle;\n return [angle * radius, axial];\n });\n });\n }\n\n const allPoints = sanitizedLoops.flat();\n const origin = isFinitePoint3(surface?.origin) ? surface.origin : averagePoint3(allPoints);\n let normal = normalizeVector3(surface?.normal || []);\n if (!normal) {\n for (let index = 2; index < allPoints.length; index += 1) {\n const a = allPoints[index - 2];\n const b = allPoints[index - 1];\n const c = allPoints[index];\n const ab = subtract(b, a);\n const ac = subtract(c, a);\n normal = normalizeVector3(cross3(ab, ac));\n if (normal) {\n break;\n }\n }\n }\n if (!normal) {\n normal = [0, 0, 1];\n }\n\n let axis = Math.abs(normal[2]) < 0.9 ? [0, 0, 1] : [0, 1, 0];\n let xDir = normalizeVector3(cross3(axis, normal));\n if (!xDir) {\n axis = [1, 0, 0];\n xDir = normalizeVector3(cross3(axis, normal));\n }\n if (!xDir) {\n return null;\n }\n const yDir = normalizeVector3(cross3(normal, xDir));\n if (!yDir) {\n return null;\n }\n\n return projectLoopsWithFrame(sanitizedLoops, origin, xDir, yDir);\n}\n\nexport function buildFallbackFaceFanGeometry(THREE, loop3d, centroid = null) {\n if (!Array.isArray(loop3d) || loop3d.length < 3) {\n return null;\n }\n\n const cleanedLoop = loop3d.filter(isFinitePoint3).map((point) => [Number(point[0]), Number(point[1]), Number(point[2])]);\n if (cleanedLoop.length < 3) {\n return null;\n }\n\n const center = isFinitePoint3(centroid) ? centroid.map((value) => Number(value)) : averagePoint3(cleanedLoop);\n const fillPositions = [];\n for (let index = 0; index < cleanedLoop.length; index += 1) {\n const a = cleanedLoop[index];\n const b = cleanedLoop[(index + 1) % cleanedLoop.length];\n fillPositions.push(\n center[0], center[1], center[2],\n a[0], a[1], a[2],\n b[0], b[1], b[2]\n );\n }\n if (!fillPositions.length) {\n return null;\n }\n\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(fillPositions), 3));\n return geometry;\n}\n\nexport function createReferenceFaceFillGeometry(THREE, reference) {\n const pickData = reference?.pickData;\n const loops3d = Array.isArray(pickData?.loops) ? pickData.loops : [];\n if (!loops3d.length) {\n return null;\n }\n\n const projectedLoops = projectFaceLoopsTo2d(loops3d, pickData?.surface || {});\n if (!projectedLoops) {\n return buildFallbackFaceFanGeometry(\n THREE,\n selectOuterLoopPoints(pickData) || loops3d[0],\n pickData?.centroid || null\n );\n }\n\n const loopEntries = loops3d\n .map((loop3d, index) => {\n const cleaned = sanitizeLoopPair(loop3d, projectedLoops[index] || []);\n if (!cleaned) {\n return null;\n }\n return {\n index,\n ...cleaned\n };\n })\n .filter((entry) => entry && Array.isArray(entry.loop3d) && entry.loop3d.length >= 3 && Array.isArray(entry.loop2d) && entry.loop2d.length >= 3);\n if (!loopEntries.length) {\n return buildFallbackFaceFanGeometry(\n THREE,\n selectOuterLoopPoints(pickData) || loops3d[0],\n pickData?.centroid || null\n );\n }\n\n const preferredOuterIndex = Number.isInteger(pickData?.outerLoopIndex) ? pickData.outerLoopIndex : 0;\n const outerEntry = loopEntries.find((entry) => entry.index === preferredOuterIndex) || loopEntries[0];\n if (!outerEntry) {\n return null;\n }\n const contourLoop3d = [...outerEntry.loop3d];\n let contour2d = outerEntry.loop2d.map((point) => new THREE.Vector2(Number(point[0]), Number(point[1])));\n if (contour2d.length < 3) {\n return buildFallbackFaceFanGeometry(THREE, contourLoop3d, pickData?.centroid || null);\n }\n\n let contourClockwise = THREE.ShapeUtils.isClockWise(contour2d);\n if (contourClockwise) {\n contour2d = [...contour2d].reverse();\n contourLoop3d.reverse();\n contourClockwise = false;\n }\n\n const holeEntries = loopEntries.filter((entry) => entry.index !== outerEntry.index);\n const holeData = [];\n for (const holeEntry of holeEntries) {\n let holeLoop3d = [...holeEntry.loop3d];\n let hole2d = holeEntry.loop2d.map((point) => new THREE.Vector2(Number(point[0]), Number(point[1])));\n if (hole2d.length < 3) {\n continue;\n }\n const holeClockwise = THREE.ShapeUtils.isClockWise(hole2d);\n if (holeClockwise === contourClockwise) {\n hole2d = [...hole2d].reverse();\n holeLoop3d.reverse();\n }\n holeData.push({\n loop2d: hole2d,\n loop3d: holeLoop3d\n });\n }\n\n const triangulated = THREE.ShapeUtils.triangulateShape(\n contour2d,\n holeData.map((entry) => entry.loop2d)\n );\n if (!Array.isArray(triangulated) || !triangulated.length) {\n return buildFallbackFaceFanGeometry(THREE, contourLoop3d, pickData?.centroid || null);\n }\n\n const vertexPoints3d = [\n ...contourLoop3d,\n ...holeData.flatMap((entry) => entry.loop3d)\n ];\n if (!vertexPoints3d.length) {\n return null;\n }\n\n const fillPositions = [];\n for (const triangle of triangulated) {\n if (!Array.isArray(triangle) || triangle.length !== 3) {\n continue;\n }\n for (const vertexIndex of triangle) {\n const point = vertexPoints3d[vertexIndex];\n if (!Array.isArray(point) || point.length < 3) {\n continue;\n }\n fillPositions.push(\n Number(point[0]),\n Number(point[1]),\n Number(point[2])\n );\n }\n }\n if (!fillPositions.length) {\n return null;\n }\n\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(fillPositions), 3));\n return geometry;\n}\n\nexport function buildEdgePickObjects(THREE, group, references) {\n const objects = [];\n for (const reference of Array.isArray(references) ? references : []) {\n const points = reference?.pickData?.points;\n if (!Array.isArray(points) || points.length < 2) {\n continue;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(points.flat()), 3));\n const material = new THREE.LineBasicMaterial({\n color: 0xffffff,\n transparent: true,\n opacity: 0\n });\n const line = new THREE.Line(geometry, material);\n line.userData.referenceId = String(reference?.id || \"\");\n line.userData.partId = String(reference?.partId || \"\");\n line.userData.metric = reference?.pickData?.metric ?? Infinity;\n group.add(line);\n objects.push(line);\n }\n group.updateMatrixWorld(true);\n return objects;\n}\n\nexport function buildVertexMarkerMesh(runtime, THREE, reference, {\n color,\n opacity,\n renderOrder = 27\n} = {}) {\n const center = Array.isArray(reference?.pickData?.center) ? reference.pickData.center : null;\n if (!center || center.length < 3) {\n return null;\n }\n const radius = Math.max(Number(runtime?.modelRadius || 1) * 0.0045, 0.2);\n const geometry = new THREE.SphereGeometry(radius, 16, 16);\n const material = new THREE.MeshBasicMaterial({\n color,\n transparent: true,\n opacity,\n depthTest: true,\n depthWrite: false,\n toneMapped: false\n });\n const mesh = new THREE.Mesh(geometry, material);\n mesh.position.set(center[0], center[1], center[2]);\n mesh.renderOrder = renderOrder;\n return mesh;\n}\n","import { syncLineMaterialOpacity } from \"../../common/renderEdges.js\";\nimport {\n CAD_DISPLAY_MODE,\n displayModeUsesTransparentSurfaces\n} from \"../../common/displaySettings.js\";\nimport { REFERENCE_SELECTED_COLOR } from \"./referenceGeometry.js\";\nimport { BASE_VIEWER_THEME } from \"./stageTheme.js\";\nimport { readSourceColor } from \"./surfaceMaterials.js\";\n\nconst CAD_EDGE_OPACITY = 0.84;\nconst PART_HIGHLIGHT_SURFACE_RENDER_ORDER = 23;\nconst PART_HIGHLIGHT_EDGE_RENDER_ORDER = 26;\nconst PART_HOVER_OPACITY_BOOST = 0.08;\nconst PART_SELECTED_OPACITY_BOOST = 0.12;\nexport const FOCUSED_DIMMED_SURFACE_OPACITY = 0.035;\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function getPartHighlightColors(THREE, {\n edgeSettings = null\n} = {}) {\n const highlightColor = String(edgeSettings?.highlightColor || REFERENCE_SELECTED_COLOR).trim() || REFERENCE_SELECTED_COLOR;\n return {\n hoveredSurfaceColor: new THREE.Color(highlightColor),\n hoveredEdgeColor: new THREE.Color(highlightColor),\n selectedSurfaceColor: new THREE.Color(highlightColor),\n selectedEdgeColor: new THREE.Color(highlightColor)\n };\n}\n\nexport function normalizePartIdList(value) {\n return (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean);\n}\n\nfunction normalizePartSelector(value) {\n const text = String(value || \"\").trim();\n return text.startsWith(\"#\") ? text.slice(1).trim() : text;\n}\n\nfunction partIdMatchesSet(partId, set) {\n if (!set?.size) {\n return false;\n }\n if (set.has(\"__model__\")) {\n return true;\n }\n const normalizedPartId = normalizePartSelector(partId);\n if (!normalizedPartId) {\n return false;\n }\n for (const candidate of set) {\n const normalizedCandidate = normalizePartSelector(candidate);\n if (\n normalizedCandidate &&\n (\n normalizedPartId === normalizedCandidate ||\n normalizedPartId.startsWith(`${normalizedCandidate}.`)\n )\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function referenceMatchesFocusedPart(reference, focusedPartIdSet) {\n if (!focusedPartIdSet?.size) {\n return true;\n }\n const partId = String(reference?.partId || \"\").trim();\n return partId\n ? partIdMatchesSet(partId, focusedPartIdSet)\n : focusedPartIdSet.has(\"__model__\");\n}\n\nfunction baseObjectRenderOrder(record, object, fieldName) {\n if (!object) {\n return 0;\n }\n if (!Number.isFinite(Number(record[fieldName]))) {\n record[fieldName] = Number.isFinite(Number(object.renderOrder)) ? Number(object.renderOrder) : 0;\n }\n return record[fieldName];\n}\n\nfunction syncHighlightRenderOrder(record, object, fieldName, highlighted, highlightRenderOrder) {\n if (!object) {\n return;\n }\n const baseRenderOrder = baseObjectRenderOrder(record, object, fieldName);\n object.renderOrder = highlighted ? highlightRenderOrder : baseRenderOrder;\n}\n\nfunction syncSurfaceTransparency(record, forceTransparent, opacity, {\n writeTransparentDepth = true\n} = {}) {\n const material = record?.material;\n if (!material) {\n return;\n }\n if (!Object.hasOwn(record, \"baseDepthWrite\")) {\n record.baseDepthWrite = material.depthWrite !== false;\n }\n const nextTransparent = forceTransparent || opacity < 0.999;\n if (material.transparent !== nextTransparent) {\n material.transparent = nextTransparent;\n material.needsUpdate = true;\n }\n material.depthWrite = nextTransparent && !writeTransparentDepth ? false : record.baseDepthWrite;\n}\n\nconst CAD_SURFACE_EDGE_OPACITY_UNIFORMS = Object.freeze({\n feature: \"cadSurfaceFeatureOpacity\",\n tangent: \"cadSurfaceTangentOpacity\",\n seam: \"cadSurfaceSeamOpacity\",\n degenerate: \"cadSurfaceDegenerateOpacity\"\n});\n\nconst CAD_SURFACE_EDGE_COLOR_UNIFORMS = Object.freeze({\n feature: \"cadSurfaceFeatureColor\",\n tangent: \"cadSurfaceTangentColor\",\n seam: \"cadSurfaceSeamColor\",\n degenerate: \"cadSurfaceDegenerateColor\"\n});\n\nfunction syncCadSurfaceEdgeHighlight(THREE, record, edgeColor, edgeOpacity = null) {\n const material = record?.material;\n const userData = material?.userData;\n if (!material || userData?.cadSurfaceEdges !== true) {\n return;\n }\n const nextColor = edgeColor?.isColor\n ? edgeColor\n : readSourceColor(THREE, edgeColor) || userData.cadSurfaceEdgeBaseColor;\n if (nextColor?.isColor) {\n userData.cadSurfaceEdgeColor = nextColor.clone();\n const colorUniform = userData.cadSurfaceEdgeShader?.uniforms?.cadSurfaceEdgeColor;\n if (colorUniform?.value?.copy) {\n colorUniform.value.copy(nextColor);\n }\n }\n\n const highlightedOpacity = edgeOpacity !== null && edgeOpacity !== undefined && Number.isFinite(Number(edgeOpacity))\n ? clamp(Number(edgeOpacity), 0, 1)\n : null;\n const baseClassSettings = userData.cadSurfaceEdgeBaseClassSettings || {};\n const uniforms = userData.cadSurfaceEdgeShader?.uniforms || null;\n const overrideClassColor = highlightedOpacity !== null ||\n (nextColor?.isColor && userData.cadSurfaceEdgeBaseColor?.isColor && !nextColor.equals(userData.cadSurfaceEdgeBaseColor));\n for (const [classId, uniformName] of Object.entries(CAD_SURFACE_EDGE_COLOR_UNIFORMS)) {\n const baseClassColor = readSourceColor(THREE, baseClassSettings[classId]?.color) ||\n userData.cadSurfaceEdgeBaseColor;\n const nextClassColor = overrideClassColor ? nextColor : baseClassColor;\n if (nextClassColor?.isColor && uniforms?.[uniformName]?.value?.copy) {\n uniforms[uniformName].value.copy(nextClassColor);\n }\n }\n for (const [classId, uniformName] of Object.entries(CAD_SURFACE_EDGE_OPACITY_UNIFORMS)) {\n const baseOpacity = Number(baseClassSettings[classId]?.opacity);\n const nextOpacity = highlightedOpacity === null\n ? (Number.isFinite(baseOpacity) ? baseOpacity : null)\n : highlightedOpacity;\n if (nextOpacity === null) {\n continue;\n }\n userData[`cadSurfaceEdge${classId}Opacity`] = nextOpacity;\n if (uniforms?.[uniformName]) {\n uniforms[uniformName].value = nextOpacity;\n }\n }\n}\n\nexport function applyPartVisualState(THREE, records, {\n viewerTheme,\n edgeSettings,\n hiddenPartIds,\n hoveredPartId,\n focusedPartId,\n selectedPartIds,\n showEdges,\n displayMode = CAD_DISPLAY_MODE.SOLID\n}) {\n const hidden = new Set(Array.isArray(hiddenPartIds) ? hiddenPartIds : []);\n const selected = new Set(Array.isArray(selectedPartIds) ? selectedPartIds : []);\n const hovered = new Set(\n (Array.isArray(hoveredPartId) ? hoveredPartId : [hoveredPartId])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean)\n );\n const baseEdgeColor = edgeSettings?.color || viewerTheme?.edge || BASE_VIEWER_THEME.edge;\n const defaultSurfaceOpacity = Number.isFinite(Number(viewerTheme?.surfaceOpacity))\n ? Number(viewerTheme.surfaceOpacity)\n : 1;\n const focusIds = new Set(normalizePartIdList(focusedPartId));\n const hasFocus = focusIds.size > 0;\n const baseEdgeOpacity = Number.isFinite(Number(edgeSettings?.opacity))\n ? clamp(Number(edgeSettings.opacity), 0, 1)\n : (viewerTheme?.edgeOpacity ?? BASE_VIEWER_THEME.edgeOpacity ?? CAD_EDGE_OPACITY);\n const transparentDisplayMode = displayModeUsesTransparentSurfaces(displayMode);\n const highlightEdgeOpacity = Number.isFinite(Number(edgeSettings?.highlightOpacity))\n ? clamp(Number(edgeSettings.highlightOpacity), 0, 1)\n : 1;\n const {\n hoveredSurfaceColor,\n hoveredEdgeColor,\n selectedSurfaceColor,\n selectedEdgeColor\n } = getPartHighlightColors(THREE, { edgeSettings });\n\n for (const record of Array.isArray(records) ? records : []) {\n const effectStyle = record.effectStyle && typeof record.effectStyle === \"object\" ? record.effectStyle : {};\n const effectHidden = record.effectVisible === false;\n const effectColor = readSourceColor(THREE, effectStyle.color);\n const effectEdgeColor = readSourceColor(THREE, effectStyle.edgeColor);\n const effectEmissive = readSourceColor(THREE, effectStyle.emissive);\n const isHidden = partIdMatchesSet(record.partId, hidden);\n const isSelected = !isHidden && (partIdMatchesSet(record.partId, selected) || record.effectHighlighted === true);\n const isHovered = !isHidden && !effectHidden && partIdMatchesSet(record.partId, hovered);\n const isFocused = !isHidden && !effectHidden && hasFocus && partIdMatchesSet(record.partId, focusIds);\n const isDimmed = !isHidden && !effectHidden && hasFocus && !isFocused;\n const isHighlighted = isSelected || isHovered;\n\n record.mesh.visible = !effectHidden && !isHidden;\n if (record.edges) {\n record.edges.visible = showEdges && !effectHidden && !isHidden;\n }\n syncHighlightRenderOrder(record, record.mesh, \"baseMeshRenderOrder\", isHighlighted, PART_HIGHLIGHT_SURFACE_RENDER_ORDER);\n syncHighlightRenderOrder(record, record.edges, \"baseEdgeRenderOrder\", isHighlighted, PART_HIGHLIGHT_EDGE_RENDER_ORDER);\n\n const baseSurfaceOpacity = Number.isFinite(Number(record.baseOpacity))\n ? Number(record.baseOpacity)\n : defaultSurfaceOpacity;\n const effectOpacity = Number.isFinite(Number(effectStyle.opacity))\n ? clamp(Number(effectStyle.opacity), 0, 1)\n : 1;\n const effectEdgeOpacity = Number.isFinite(Number(effectStyle.edgeOpacity))\n ? clamp(Number(effectStyle.edgeOpacity), 0, 1)\n : effectOpacity;\n const highlightedEdgeOpacity = (isSelected || isHovered) ? highlightEdgeOpacity * effectEdgeOpacity : null;\n const dimmedSurfaceOpacity = Math.min(baseSurfaceOpacity * effectOpacity, FOCUSED_DIMMED_SURFACE_OPACITY);\n const baseEffectSurfaceOpacity = baseSurfaceOpacity * effectOpacity;\n const highlightedSurfaceOpacity = isHighlighted\n ? transparentDisplayMode\n ? clamp(\n baseEffectSurfaceOpacity + (isSelected ? PART_SELECTED_OPACITY_BOOST : PART_HOVER_OPACITY_BOOST) * effectOpacity,\n 0,\n 1\n )\n : clamp(highlightEdgeOpacity * effectOpacity, 0, 1)\n : baseEffectSurfaceOpacity;\n const nextSurfaceOpacity = isHidden ? 0 : isDimmed ? dimmedSurfaceOpacity : highlightedSurfaceOpacity;\n syncSurfaceTransparency(record, isHidden || isDimmed || isHighlighted, nextSurfaceOpacity, {\n writeTransparentDepth: !isHidden && !isDimmed && !transparentDisplayMode\n });\n record.material.opacity = nextSurfaceOpacity;\n\n if (record.baseColor && record.material.color) {\n record.material.color.copy(\n isSelected\n ? selectedSurfaceColor\n : isHovered\n ? hoveredSurfaceColor\n : effectColor || record.baseColor\n );\n }\n\n if (\"emissive\" in record.material && record.material.emissive) {\n if (isSelected) {\n record.material.emissive.copy(selectedSurfaceColor);\n } else if (isHovered) {\n record.material.emissive.copy(hoveredSurfaceColor);\n } else if (record.baseEmissiveColor && record.baseEmissiveIntensity > 0) {\n record.material.emissive.copy(record.baseEmissiveColor);\n } else {\n record.material.emissive.set(0x000000);\n }\n record.material.emissiveIntensity = isSelected\n ? 0.08\n : isHovered\n ? 0.12\n : effectEmissive\n ? clamp(Number(effectStyle.emissiveIntensity) || 0.22, 0, 2)\n : clamp(Number(record.baseEmissiveIntensity) || 0, 0, 2);\n if (!isSelected && !isHovered && effectEmissive) {\n record.material.emissive.copy(effectEmissive);\n }\n }\n\n const nextEdgeColor = isSelected\n ? selectedEdgeColor\n : isHovered\n ? hoveredEdgeColor\n : effectEdgeColor || baseEdgeColor;\n syncCadSurfaceEdgeHighlight(THREE, record, nextEdgeColor, highlightedEdgeOpacity);\n\n if (record.edgeMaterial) {\n record.edgeMaterial.color.set(nextEdgeColor);\n syncLineMaterialOpacity(record.edgeMaterial, isSelected\n ? highlightEdgeOpacity * effectEdgeOpacity\n : isHovered\n ? highlightEdgeOpacity * effectEdgeOpacity\n : isHidden || isDimmed\n ? nextSurfaceOpacity\n : baseEdgeOpacity * effectEdgeOpacity);\n }\n }\n}\n","import { buildCadRefToken } from \"../cadRefs.js\";\n\nfunction isObject(value) {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction toRows(manifest, rowKey, columnsKey) {\n const columns = manifest?.tables?.[columnsKey];\n const rows = manifest?.[rowKey];\n if (!Array.isArray(columns) || !Array.isArray(rows)) {\n return [];\n }\n return rows\n .filter(Array.isArray)\n .map((row) => Object.fromEntries(columns.map((column, index) => [column, row[index]])));\n}\n\nfunction relationArray(manifest, buffers, relationKey, viewKey) {\n const direct = manifest?.relations?.[relationKey];\n if (Array.isArray(direct) || ArrayBuffer.isView(direct)) {\n return direct;\n }\n const viewName = manifest?.relations?.[viewKey];\n if (typeof viewName === \"string\" && buffers?.[viewName]) {\n return buffers[viewName];\n }\n return [];\n}\n\nfunction typedBufferView(manifest, buffers, manifestSectionKey, viewKey) {\n const viewName = manifest?.[manifestSectionKey]?.[viewKey];\n if (typeof viewName === \"string\" && buffers?.[viewName]) {\n return buffers[viewName];\n }\n return new Uint32Array(0);\n}\n\nfunction selectorPrefix(singleOccurrenceId, selector) {\n if (!singleOccurrenceId || !selector.startsWith(`${singleOccurrenceId}.`)) {\n return selector;\n }\n const suffix = selector.slice(singleOccurrenceId.length + 1);\n return suffix.startsWith(\"s\") || suffix.startsWith(\"f\") || suffix.startsWith(\"e\") ? suffix : selector;\n}\n\nfunction selectorTypeLabel(selectorType) {\n if (selectorType === \"occurrence\") {\n return \"Occurrence\";\n }\n if (selectorType === \"shape\") {\n return \"Shape\";\n }\n if (selectorType === \"face\") {\n return \"Face\";\n }\n return \"Edge\";\n}\n\nfunction transformPoint(transform, point) {\n if (!Array.isArray(point) || point.length < 3) {\n return point;\n }\n if (!Array.isArray(transform) || transform.length < 16) {\n return [Number(point[0]), Number(point[1]), Number(point[2])];\n }\n const x = Number(point[0]);\n const y = Number(point[1]);\n const z = Number(point[2]);\n return [\n (transform[0] * x) + (transform[1] * y) + (transform[2] * z) + transform[3],\n (transform[4] * x) + (transform[5] * y) + (transform[6] * z) + transform[7],\n (transform[8] * x) + (transform[9] * y) + (transform[10] * z) + transform[11],\n ];\n}\n\nfunction normalizeVector(vector) {\n const x = Number(vector?.[0] || 0);\n const y = Number(vector?.[1] || 0);\n const z = Number(vector?.[2] || 0);\n const magnitude = Math.hypot(x, y, z);\n if (magnitude <= 1e-9) {\n return null;\n }\n return [x / magnitude, y / magnitude, z / magnitude];\n}\n\nfunction transformVector(transform, vector) {\n if (!Array.isArray(vector) || vector.length < 3 || !Array.isArray(transform) || transform.length < 16) {\n return normalizeVector(vector || []);\n }\n return normalizeVector([\n (transform[0] * vector[0]) + (transform[1] * vector[1]) + (transform[2] * vector[2]),\n (transform[4] * vector[0]) + (transform[5] * vector[1]) + (transform[6] * vector[2]),\n (transform[8] * vector[0]) + (transform[9] * vector[1]) + (transform[10] * vector[2]),\n ]);\n}\n\nfunction transformBBox(transform, bbox) {\n if (!isObject(bbox)) {\n return bbox;\n }\n const min = Array.isArray(bbox.min) ? bbox.min : [0, 0, 0];\n const max = Array.isArray(bbox.max) ? bbox.max : [0, 0, 0];\n const corners = [\n [min[0], min[1], min[2]],\n [min[0], min[1], max[2]],\n [min[0], max[1], min[2]],\n [min[0], max[1], max[2]],\n [max[0], min[1], min[2]],\n [max[0], min[1], max[2]],\n [max[0], max[1], min[2]],\n [max[0], max[1], max[2]],\n ].map((point) => transformPoint(transform, point));\n const xs = corners.map((point) => point[0]);\n const ys = corners.map((point) => point[1]);\n const zs = corners.map((point) => point[2]);\n return {\n min: [Math.min(...xs), Math.min(...ys), Math.min(...zs)],\n max: [Math.max(...xs), Math.max(...ys), Math.max(...zs)],\n };\n}\n\nfunction transformParams(transform, params) {\n if (!isObject(params)) {\n return params;\n }\n const pointKeys = new Set([\"origin\", \"center\", \"location\"]);\n const vectorKeys = new Set([\"axis\", \"direction\", \"normal\"]);\n return Object.fromEntries(Object.entries(params).map(([key, value]) => {\n if (pointKeys.has(key) && Array.isArray(value) && value.length === 3) {\n return [key, transformPoint(transform, value)];\n }\n if (vectorKeys.has(key) && Array.isArray(value) && value.length === 3) {\n return [key, transformVector(transform, value)];\n }\n return [key, value];\n }));\n}\n\nfunction transformPointList(transform, points) {\n if (!Array.isArray(points)) {\n return points;\n }\n return points.map((point) => (\n Array.isArray(point) && point.length >= 3 ? transformPoint(transform, point) : point\n ));\n}\n\nfunction transformLoopMetadata(transform, loopsMeta) {\n if (!Array.isArray(loopsMeta)) {\n return loopsMeta;\n }\n return loopsMeta.map((loop) => (\n isObject(loop) && Array.isArray(loop.points)\n ? { ...loop, points: transformPointList(transform, loop.points) }\n : loop\n ));\n}\n\nfunction transformSurface(transform, surface) {\n if (!isObject(surface)) {\n return surface;\n }\n const pointKeys = new Set([\"origin\", \"center\", \"location\"]);\n const vectorKeys = new Set([\"axis\", \"direction\", \"normal\", \"xDir\", \"yDir\"]);\n return Object.fromEntries(Object.entries(surface).map(([key, value]) => {\n if (pointKeys.has(key) && Array.isArray(value) && value.length === 3) {\n return [key, transformPoint(transform, value)];\n }\n if (vectorKeys.has(key) && Array.isArray(value) && value.length === 3) {\n return [key, transformVector(transform, value)];\n }\n return [key, value];\n }));\n}\n\nfunction transformPositions(values, transform) {\n if (!(values instanceof Float32Array) || !Array.isArray(transform) || transform.length < 16) {\n return values;\n }\n const next = new Float32Array(values.length);\n for (let index = 0; index < values.length; index += 3) {\n const point = transformPoint(transform, [values[index], values[index + 1], values[index + 2]]);\n next[index] = point[0];\n next[index + 1] = point[1];\n next[index + 2] = point[2];\n }\n return next;\n}\n\nfunction transformPickData(pickData, transform) {\n if (!isObject(pickData) || !Array.isArray(transform) || transform.length < 16) {\n return pickData;\n }\n return {\n ...pickData,\n bbox: pickData.bbox ? transformBBox(transform, pickData.bbox) : pickData.bbox,\n center: Array.isArray(pickData.center) ? transformPoint(transform, pickData.center) : pickData.center,\n normal: Array.isArray(pickData.normal) ? transformVector(transform, pickData.normal) : pickData.normal,\n params: pickData.params ? transformParams(transform, pickData.params) : pickData.params,\n points: transformPointList(transform, pickData.points),\n loops: Array.isArray(pickData.loops)\n ? pickData.loops.map((loop) => transformPointList(transform, loop))\n : pickData.loops,\n loopsMeta: transformLoopMetadata(transform, pickData.loopsMeta),\n surface: transformSurface(transform, pickData.surface),\n centroid: Array.isArray(pickData.centroid) ? transformPoint(transform, pickData.centroid) : pickData.centroid,\n transform,\n };\n}\n\nfunction referenceIdForRow(displaySelector, selectorType, partId) {\n if (partId) {\n return `topology|${partId}|${selectorType}|${displaySelector}`;\n }\n return displaySelector;\n}\n\nfunction referenceSummary(selectorType, row) {\n if (selectorType === \"occurrence\") {\n return String(row.name || row.sourceName || row.id || \"\").trim();\n }\n if (selectorType === \"shape\") {\n const name = String(row.name || row.sourceName || \"\").trim();\n const detail = `${row.kind || \"shape\"}${row.volume ? ` volume=${row.volume}` : row.area ? ` area=${row.area}` : \"\"}`;\n return name ? `${name} ${detail}` : detail;\n }\n if (selectorType === \"face\") {\n return `${row.surfaceType || \"face\"} area=${row.area ?? 0}`;\n }\n return `${row.curveType || \"edge\"} length=${row.length ?? 0}`;\n}\n\nfunction sourceOccurrenceMatchesFilter(sourceOccurrenceId, filterOccurrenceId) {\n const sourceId = String(sourceOccurrenceId || \"\").trim();\n const filterId = String(filterOccurrenceId || \"\").trim();\n return !filterId || sourceId === filterId || sourceId.startsWith(`${filterId}.`);\n}\n\nfunction remapSourceOccurrenceId(sourceOccurrenceId, remapOccurrencePrefix) {\n const sourceId = String(sourceOccurrenceId || \"\").trim();\n if (!sourceId || !remapOccurrencePrefix || typeof remapOccurrencePrefix !== \"object\") {\n return \"\";\n }\n if (!sourceOccurrenceMatchesFilter(sourceId, remapOccurrencePrefix.sourceOccurrenceId)) {\n return \"\";\n }\n const sourceRootId = String(remapOccurrencePrefix.sourceRootOccurrenceId || \"\").trim();\n const targetRootId = String(remapOccurrencePrefix.targetRootOccurrenceId || \"\").trim();\n if (!sourceRootId || !targetRootId) {\n return \"\";\n }\n if (sourceId === sourceRootId) {\n return targetRootId;\n }\n const sourceRootPrefix = `${sourceRootId}.`;\n if (sourceId.startsWith(sourceRootPrefix)) {\n return `${targetRootId}.${sourceId.slice(sourceRootPrefix.length)}`;\n }\n return \"\";\n}\n\nfunction selectorForRow(selectorType, row, rowIndex, singleOccurrenceId, remapOccurrenceId = \"\", remapOccurrencePrefix = null) {\n if (!row || !Number.isFinite(Number(rowIndex))) {\n return \"\";\n }\n if (remapOccurrencePrefix && typeof remapOccurrencePrefix === \"object\") {\n const sourceOccurrenceId = selectorType === \"occurrence\"\n ? String(row?.id || \"\").trim()\n : String(row?.occurrenceId || \"\").trim();\n const occurrenceId = remapSourceOccurrenceId(sourceOccurrenceId, remapOccurrencePrefix);\n if (!occurrenceId) {\n return \"\";\n }\n if (selectorType === \"occurrence\") {\n return occurrenceId;\n }\n const selectorKind = selectorType === \"shape\"\n ? \"s\"\n : selectorType === \"face\"\n ? \"f\"\n : \"e\";\n return `${occurrenceId}.${selectorKind}${rowIndex + 1}`;\n }\n const occurrenceId = String(remapOccurrenceId || \"\").trim();\n if (occurrenceId) {\n if (selectorType === \"occurrence\") {\n return occurrenceId;\n }\n const selectorKind = selectorType === \"shape\"\n ? \"s\"\n : selectorType === \"face\"\n ? \"f\"\n : \"e\";\n return `${occurrenceId}.${selectorKind}${rowIndex + 1}`;\n }\n return selectorPrefix(singleOccurrenceId, String(row?.id || \"\").trim());\n}\n\nfunction selectorWithRemappedOccurrence(selector, singleOccurrenceId, remapOccurrenceId = \"\", remapOccurrencePrefix = null) {\n const normalizedSelector = String(selector || \"\").trim();\n if (!normalizedSelector) {\n return \"\";\n }\n const match = normalizedSelector.match(/^(.*)\\.([sfe]\\d+)$/i);\n if (!match) {\n return selectorPrefix(singleOccurrenceId, normalizedSelector);\n }\n const occurrenceId = String(match[1] || \"\").trim();\n const selectorToken = String(match[2] || \"\").trim();\n if (!occurrenceId || !selectorToken) {\n return selectorPrefix(singleOccurrenceId, normalizedSelector);\n }\n if (remapOccurrencePrefix && typeof remapOccurrencePrefix === \"object\") {\n const remappedOccurrenceId = remapSourceOccurrenceId(occurrenceId, remapOccurrencePrefix);\n return remappedOccurrenceId ? `${remappedOccurrenceId}.${selectorToken}` : \"\";\n }\n const targetOccurrenceId = String(remapOccurrenceId || \"\").trim();\n if (targetOccurrenceId) {\n return `${targetOccurrenceId}.${selectorToken}`;\n }\n return selectorPrefix(singleOccurrenceId, normalizedSelector);\n}\n\nfunction occurrenceIdForReference(selectorType, row, singleOccurrenceId, remapOccurrenceId = \"\", remapOccurrencePrefix = null) {\n if (selectorType === \"occurrence\") {\n return \"\";\n }\n const occurrenceId = String(row?.occurrenceId || \"\").trim();\n if (!occurrenceId) {\n return \"\";\n }\n if (remapOccurrencePrefix && typeof remapOccurrencePrefix === \"object\") {\n return remapSourceOccurrenceId(occurrenceId, remapOccurrencePrefix);\n }\n return String(remapOccurrenceId || \"\").trim() || selectorPrefix(singleOccurrenceId, occurrenceId);\n}\n\nfunction buildAdjacencySelectors(row, relationRows, targetRows, singleOccurrenceId, idKey, startKey, countKey, targetSelectorType, remapOccurrenceId, remapOccurrencePrefix) {\n const start = Number(row?.[startKey] || 0);\n const count = Number(row?.[countKey] || 0);\n const selectors = [];\n const end = Math.min(relationRows?.length || 0, start + count);\n for (let index = start; index < end; index += 1) {\n const rowIndex = relationRows[index];\n const targetRowIndex = Number(rowIndex);\n const targetRow = targetRows[targetRowIndex];\n const selector = selectorForRow(\n targetSelectorType,\n targetRow,\n targetRowIndex,\n singleOccurrenceId,\n remapOccurrenceId,\n remapOccurrencePrefix\n ) || String(targetRow?.[idKey] || \"\").trim();\n if (selector) {\n selectors.push(selector);\n }\n }\n return selectors;\n}\n\nfunction buildReference({\n selectorType,\n row,\n rowIndex,\n singleOccurrenceId,\n copyCadPath,\n partId,\n selectorTransform,\n relationRows,\n targetRows,\n targetKey,\n startKey,\n countKey,\n remapOccurrenceId = \"\",\n remapOccurrencePrefix = null,\n targetSelectorType = \"\",\n}) {\n const normalizedSelector = selectorForRow(selectorType, row, rowIndex, singleOccurrenceId, remapOccurrenceId, remapOccurrencePrefix);\n const displaySelector = normalizedSelector;\n const id = referenceIdForRow(displaySelector, selectorType, partId);\n const summary = referenceSummary(selectorType, row);\n const copyText = buildCadRefToken({ cadPath: copyCadPath, selector: displaySelector });\n const adjacentSelectors = relationRows && targetRows\n ? buildAdjacencySelectors(\n row,\n relationRows,\n targetRows,\n singleOccurrenceId,\n targetKey,\n startKey,\n countKey,\n targetSelectorType,\n remapOccurrenceId,\n remapOccurrencePrefix\n )\n : [];\n return {\n id,\n selectorType,\n normalizedSelector,\n displaySelector,\n label: `${selectorTypeLabel(selectorType)} ${displaySelector}`,\n summary,\n shortSummary: summary,\n copyText,\n partId,\n occurrenceId: occurrenceIdForReference(selectorType, row, singleOccurrenceId, remapOccurrenceId, remapOccurrencePrefix),\n shapeId: selectorWithRemappedOccurrence(row.shapeId, singleOccurrenceId, remapOccurrenceId, remapOccurrencePrefix),\n rowIndex,\n pickData: {\n selectorType,\n rowIndex,\n name: row.name || null,\n sourceName: row.sourceName || null,\n kind: row.kind || null,\n bbox: row.bbox || null,\n surfaceType: row.surfaceType || null,\n center: row.center || null,\n normal: row.normal || null,\n params: row.params || null,\n triangleStart: row.triangleStart ?? 0,\n triangleCount: row.triangleCount ?? 0,\n segmentStart: row.segmentStart ?? 0,\n segmentCount: row.segmentCount ?? 0,\n adjacentSelectors,\n transform: selectorTransform || null,\n },\n };\n}\n\nfunction buildLeafOccurrenceIds(shapes) {\n return [...new Set(\n shapes\n .map((row) => String(row.occurrenceId || \"\").trim())\n .filter(Boolean)\n )].sort();\n}\n\nfunction transformRows(rows, transform) {\n if (!Array.isArray(transform) || transform.length < 16) {\n return rows;\n }\n return rows.map((row) => ({\n ...row,\n transform: Array.isArray(row.transform) ? row.transform : transform,\n bbox: row.bbox ? transformBBox(transform, row.bbox) : row.bbox,\n center: Array.isArray(row.center) ? transformPoint(transform, row.center) : row.center,\n normal: Array.isArray(row.normal) ? transformVector(transform, row.normal) : row.normal,\n params: row.params ? transformParams(transform, row.params) : row.params,\n }));\n}\n\nfunction transformRow(row, transform) {\n if (!row || !Array.isArray(transform) || transform.length < 16) {\n return row;\n }\n return {\n ...row,\n bbox: row.bbox ? transformBBox(transform, row.bbox) : row.bbox,\n center: Array.isArray(row.center) ? transformPoint(transform, row.center) : row.center,\n normal: Array.isArray(row.normal) ? transformVector(transform, row.normal) : row.normal,\n params: row.params ? transformParams(transform, row.params) : row.params,\n };\n}\n\nfunction applySequentialRelationStarts(rows, relationSpecs) {\n const specs = Array.isArray(relationSpecs?.[0]) ? relationSpecs : [relationSpecs];\n const nextStarts = specs.map(() => 0);\n return rows.map((row) => {\n const nextRow = { ...row };\n specs.forEach(([startKey, countKey], specIndex) => {\n const count = Math.max(0, Number(row?.[countKey] || 0));\n nextRow[startKey] = nextStarts[specIndex];\n nextRow[countKey] = count;\n nextStarts[specIndex] += count;\n });\n return nextRow;\n });\n}\n\nexport function buildSelectorRuntime(bundle, {\n copyCadPath = \"\",\n partId = \"\",\n transform = null,\n remapOccurrenceId = \"\",\n remapOccurrencePrefix = null,\n} = {}) {\n const manifest = bundle?.manifest || {};\n const buffers = bundle?.buffers || {};\n const faceRelations = relationArray(manifest, buffers, \"faceEdgeRows\", \"faceEdgeRowsView\");\n const edgeRelations = relationArray(manifest, buffers, \"edgeFaceRows\", \"edgeFaceRowsView\");\n const occurrences = transformRows(toRows(manifest, \"occurrences\", \"occurrenceColumns\"), transform);\n const shapes = transformRows(toRows(manifest, \"shapes\", \"shapeColumns\"), transform);\n const faces = applySequentialRelationStarts(\n transformRows(toRows(manifest, \"faces\", \"faceColumns\"), transform),\n [[\"edgeStart\", \"edgeCount\"]]\n );\n const edges = applySequentialRelationStarts(\n transformRows(toRows(manifest, \"edges\", \"edgeColumns\"), transform),\n [[\"faceStart\", \"faceCount\"]]\n );\n const leafOccurrenceIds = buildLeafOccurrenceIds(shapes);\n const singleOccurrenceId = leafOccurrenceIds.length === 1 ? leafOccurrenceIds[0] : \"\";\n const selectorBuffers = {\n facePositions: transformPositions(buffers.facePositions, transform),\n faceIndices: buffers.faceIndices || new Uint32Array(0),\n faceIds: buffers.faceIds || new Uint32Array(0),\n faceRuns: typedBufferView(manifest, buffers, \"faceProxy\", \"runsView\"),\n faceRunColumns: Array.isArray(manifest?.faceProxy?.runColumns) ? manifest.faceProxy.runColumns : [],\n edgePositions: transformPositions(buffers.edgePositions, transform),\n edgeIndices: buffers.edgeIndices || new Uint32Array(0),\n edgeIds: buffers.edgeIds || new Uint32Array(0),\n faceEdgeRows: faceRelations,\n edgeFaceRows: edgeRelations,\n };\n\n const references = [];\n references.push(...occurrences.map((row, rowIndex) => buildReference({\n selectorType: \"occurrence\",\n row,\n rowIndex,\n singleOccurrenceId,\n copyCadPath,\n partId,\n selectorTransform: transform,\n remapOccurrenceId,\n remapOccurrencePrefix,\n })));\n references.push(...shapes.map((row, rowIndex) => buildReference({\n selectorType: \"shape\",\n row,\n rowIndex,\n singleOccurrenceId,\n copyCadPath,\n partId,\n selectorTransform: transform,\n remapOccurrenceId,\n remapOccurrencePrefix,\n })));\n references.push(...faces.map((row, rowIndex) => buildReference({\n selectorType: \"face\",\n row,\n rowIndex,\n singleOccurrenceId,\n copyCadPath,\n partId,\n selectorTransform: transform,\n relationRows: faceRelations,\n targetRows: edges,\n targetKey: \"id\",\n startKey: \"edgeStart\",\n countKey: \"edgeCount\",\n remapOccurrenceId,\n remapOccurrencePrefix,\n targetSelectorType: \"edge\",\n })));\n references.push(...edges.map((row, rowIndex) => buildReference({\n selectorType: \"edge\",\n row,\n rowIndex,\n singleOccurrenceId,\n copyCadPath,\n partId,\n selectorTransform: transform,\n relationRows: edgeRelations,\n targetRows: faces,\n targetKey: \"id\",\n startKey: \"faceStart\",\n countKey: \"faceCount\",\n remapOccurrenceId,\n remapOccurrencePrefix,\n targetSelectorType: \"face\",\n })));\n const visibleReferences = references.filter((reference) => String(reference?.normalizedSelector || \"\").trim());\n const referenceMap = new Map(visibleReferences.map((reference) => [reference.id, reference]));\n const referenceByNormalizedSelector = new Map(\n visibleReferences.map((reference) => [reference.normalizedSelector, reference])\n );\n const referenceByDisplaySelector = new Map(\n visibleReferences.map((reference) => [reference.displaySelector, reference])\n );\n const faceReferenceByRowIndex = new Map(\n visibleReferences\n .filter((reference) => reference.selectorType === \"face\")\n .map((reference) => [reference.rowIndex, reference])\n );\n const edgeReferenceByRowIndex = new Map(\n visibleReferences\n .filter((reference) => reference.selectorType === \"edge\")\n .map((reference) => [reference.rowIndex, reference])\n );\n const occurrenceIdByRowIndex = new Map(\n occurrences.map((row, rowIndex) => [\n rowIndex,\n selectorForRow(\"occurrence\", row, rowIndex, singleOccurrenceId, remapOccurrenceId, remapOccurrencePrefix) || String(row?.id || \"\").trim()\n ])\n );\n return {\n schemaVersion: Number(manifest.schemaVersion || 1),\n surfaceEdgeRendering: Boolean(manifest?.capabilities?.surfaceEdgeRendering),\n capabilities: manifest.capabilities || null,\n cadPath: copyCadPath || String(manifest.cadRef || \"\").trim(),\n stepHash: String(manifest.stepHash || \"\"),\n bbox: transform ? transformBBox(transform, manifest.bbox || {}) : manifest.bbox,\n occurrences,\n shapes,\n faces,\n edges,\n vertices: [],\n references: visibleReferences,\n referenceMap,\n referenceByNormalizedSelector,\n referenceByDisplaySelector,\n faceReferenceByRowIndex,\n edgeReferenceByRowIndex,\n vertexReferenceByRowIndex: new Map(),\n occurrenceIdByRowIndex,\n faceReferenceMap: new Map(visibleReferences.filter((reference) => reference.selectorType === \"face\").map((reference) => [reference.id, reference])),\n edgeReferenceMap: new Map(visibleReferences.filter((reference) => reference.selectorType === \"edge\").map((reference) => [reference.id, reference])),\n vertexReferenceMap: new Map(),\n singleOccurrenceId,\n proxy: selectorBuffers,\n };\n}\n\nexport function buildDisplayEdgeRuntime(bundle, {\n transform = null,\n} = {}) {\n const manifest = bundle?.manifest || {};\n if (String(manifest.profile || \"\") === \"surface-edges\") {\n const edgeRendering = manifest.edgeRendering && typeof manifest.edgeRendering === \"object\"\n ? manifest.edgeRendering\n : {};\n return {\n schemaVersion: Number(manifest.schemaVersion || 1),\n surfaceEdgeRendering: true,\n edgeRendering: {\n visibilityClasses: Array.isArray(edgeRendering.visibilityClasses)\n ? edgeRendering.visibilityClasses.map((item) => String(item || \"\").trim()).filter(Boolean)\n : [],\n generatedVisibilityClasses: Array.isArray(edgeRendering.generatedVisibilityClasses)\n ? edgeRendering.generatedVisibilityClasses.map((item) => String(item || \"\").trim()).filter(Boolean)\n : [],\n visibilityClassCounts: edgeRendering.visibilityClassCounts || {},\n generatedVisibilityClassCounts: edgeRendering.generatedVisibilityClassCounts || {},\n },\n stepHash: String(manifest.stepHash || \"\"),\n bbox: transform ? transformBBox(transform, manifest.bbox || {}) : manifest.bbox,\n edges: [],\n proxy: {\n edgePositions: new Float32Array(0),\n edgeIndices: new Uint32Array(0),\n edgeIds: new Uint32Array(0),\n },\n };\n }\n const buffers = bundle?.buffers || {};\n const edgeProxy = manifest?.edgeProxy || {};\n const edgePositionView = String(edgeProxy.positionsView || \"edgePositions\");\n const edgeIndexView = String(edgeProxy.indicesView || \"edgeIndices\");\n const edgeIdView = String(edgeProxy.edgeIdsView || \"edgeIds\");\n const edgePositions = buffers[edgePositionView] instanceof Float32Array\n ? buffers[edgePositionView]\n : new Float32Array(0);\n const edgeIndices = buffers[edgeIndexView] instanceof Uint32Array\n ? buffers[edgeIndexView]\n : new Uint32Array(0);\n const edgeIds = buffers[edgeIdView] instanceof Uint32Array\n ? buffers[edgeIdView]\n : new Uint32Array(0);\n return {\n schemaVersion: Number(manifest.schemaVersion || 1),\n stepHash: String(manifest.stepHash || \"\"),\n bbox: transform ? transformBBox(transform, manifest.bbox || {}) : manifest.bbox,\n edges: transformRows(toRows(manifest, \"edges\", \"edgeColumns\"), transform),\n proxy: {\n edgePositions: transformPositions(edgePositions, transform),\n edgeIndices,\n edgeIds,\n },\n };\n}\n\nfunction normalizedTransformEntries(value) {\n const entries = value instanceof Map\n ? [...value.entries()]\n : isObject(value)\n ? Object.entries(value)\n : [];\n return entries\n .map(([key, transform]) => [\n String(key || \"\").trim(),\n Array.isArray(transform) && transform.length >= 16\n ? transform.slice(0, 16).map((component) => Number(component))\n : null\n ])\n .filter(([key, transform]) => key && transform && transform.every(Number.isFinite));\n}\n\nfunction transformForOccurrenceId(transformEntries, occurrenceId) {\n const normalizedOccurrenceId = String(occurrenceId || \"\").trim();\n const modelTransform = transformEntries.find(([key]) => key === \"__model__\" || key === \"*\" || key === \"__all__\")?.[1] || null;\n let best = null;\n for (const [partId, transform] of transformEntries) {\n if (partId === \"__model__\" || partId === \"*\" || partId === \"__all__\") {\n continue;\n }\n if (\n normalizedOccurrenceId &&\n (\n normalizedOccurrenceId === partId ||\n normalizedOccurrenceId.startsWith(`${partId}.`)\n ) &&\n (!best || partId.length > best[0].length)\n ) {\n best = [partId, transform];\n }\n }\n return best?.[1] || modelTransform;\n}\n\nfunction rowOccurrenceId(row, selectorType) {\n return selectorType === \"occurrence\"\n ? String(row?.id || \"\").trim()\n : String(row?.occurrenceId || row?.partId || \"\").trim();\n}\n\nfunction transformRowsByOccurrence(rows, selectorType, transformEntries) {\n const transforms = [];\n const nextRows = (Array.isArray(rows) ? rows : []).map((row) => {\n const transform = transformForOccurrenceId(transformEntries, rowOccurrenceId(row, selectorType));\n transforms.push(transform);\n return transform ? transformRow(row, transform) : row;\n });\n return { rows: nextRows, transforms };\n}\n\nfunction transformReference(reference, transform) {\n if (!transform) {\n return reference;\n }\n return {\n ...reference,\n pickData: transformPickData(reference.pickData, transform),\n };\n}\n\nfunction transformIndexedProxy({ positions, indices, ids, rowTransforms, elementSize }) {\n if (!(positions instanceof Float32Array) || !(indices instanceof Uint32Array) || !indices.length || !(ids instanceof Uint32Array) || !ids.length) {\n return { positions, indices, ids };\n }\n const elementCount = Math.floor(indices.length / elementSize);\n const nextPositions = new Float32Array(elementCount * elementSize * 3);\n const nextIndices = new Uint32Array(elementCount * elementSize);\n const nextIds = new Uint32Array(elementCount);\n let writeVertex = 0;\n for (let elementIndex = 0; elementIndex < elementCount; elementIndex += 1) {\n const rowIndex = Number(ids[elementIndex]);\n const transform = Number.isInteger(rowIndex) ? rowTransforms[rowIndex] || null : null;\n nextIds[elementIndex] = Number.isInteger(rowIndex) ? rowIndex : 0;\n for (let vertex = 0; vertex < elementSize; vertex += 1) {\n const sourceVertex = Number(indices[(elementIndex * elementSize) + vertex]);\n const sourceOffset = sourceVertex * 3;\n const nextOffset = writeVertex * 3;\n const point = [\n positions[sourceOffset],\n positions[sourceOffset + 1],\n positions[sourceOffset + 2],\n ];\n const transformedPoint = transform ? transformPoint(transform, point) : point;\n nextPositions[nextOffset] = transformedPoint[0];\n nextPositions[nextOffset + 1] = transformedPoint[1];\n nextPositions[nextOffset + 2] = transformedPoint[2];\n nextIndices[(elementIndex * elementSize) + vertex] = writeVertex;\n writeVertex += 1;\n }\n }\n return {\n positions: nextPositions,\n indices: nextIndices,\n ids: nextIds,\n };\n}\n\nexport function buildTransformedSelectorRuntime(selectorRuntime, transformByPartId = null) {\n const transformEntries = normalizedTransformEntries(transformByPartId);\n if (!selectorRuntime || !transformEntries.length) {\n return selectorRuntime || null;\n }\n\n const occurrencesResult = transformRowsByOccurrence(selectorRuntime.occurrences, \"occurrence\", transformEntries);\n const shapesResult = transformRowsByOccurrence(selectorRuntime.shapes, \"shape\", transformEntries);\n const facesResult = transformRowsByOccurrence(selectorRuntime.faces, \"face\", transformEntries);\n const edgesResult = transformRowsByOccurrence(selectorRuntime.edges, \"edge\", transformEntries);\n const referenceTransforms = {\n occurrence: occurrencesResult.transforms,\n shape: shapesResult.transforms,\n face: facesResult.transforms,\n edge: edgesResult.transforms,\n vertex: [],\n };\n const references = (Array.isArray(selectorRuntime.references) ? selectorRuntime.references : [])\n .map((reference) => transformReference(\n reference,\n referenceTransforms[reference?.selectorType]?.[Number(reference?.rowIndex)] || null\n ));\n const referenceMap = new Map(references.map((reference) => [reference.id, reference]));\n const referenceByNormalizedSelector = new Map(references.map((reference) => [reference.normalizedSelector, reference]));\n const referenceByDisplaySelector = new Map(references.map((reference) => [reference.displaySelector, reference]));\n const faceReferenceByRowIndex = new Map(\n references\n .filter((reference) => reference.selectorType === \"face\")\n .map((reference) => [reference.rowIndex, reference])\n );\n const edgeReferenceByRowIndex = new Map(\n references\n .filter((reference) => reference.selectorType === \"edge\")\n .map((reference) => [reference.rowIndex, reference])\n );\n const proxy = selectorRuntime.proxy || {};\n const faceProxy = transformIndexedProxy({\n positions: proxy.facePositions,\n indices: proxy.faceIndices,\n ids: proxy.faceIds,\n rowTransforms: facesResult.transforms,\n elementSize: 3,\n });\n const edgeProxy = transformIndexedProxy({\n positions: proxy.edgePositions,\n indices: proxy.edgeIndices,\n ids: proxy.edgeIds,\n rowTransforms: edgesResult.transforms,\n elementSize: 2,\n });\n\n return {\n ...selectorRuntime,\n bbox: selectorRuntime.bbox ? transformBBox(transformEntries.find(([key]) => key === \"__model__\" || key === \"*\" || key === \"__all__\")?.[1], selectorRuntime.bbox) : selectorRuntime.bbox,\n occurrences: occurrencesResult.rows,\n shapes: shapesResult.rows,\n faces: facesResult.rows,\n edges: edgesResult.rows,\n references,\n referenceMap,\n referenceByNormalizedSelector,\n referenceByDisplaySelector,\n faceReferenceByRowIndex,\n edgeReferenceByRowIndex,\n faceReferenceMap: new Map(references.filter((reference) => reference.selectorType === \"face\").map((reference) => [reference.id, reference])),\n edgeReferenceMap: new Map(references.filter((reference) => reference.selectorType === \"edge\").map((reference) => [reference.id, reference])),\n proxy: {\n ...proxy,\n facePositions: faceProxy.positions,\n faceIndices: faceProxy.indices,\n faceIds: faceProxy.ids,\n edgePositions: edgeProxy.positions,\n edgeIndices: edgeProxy.indices,\n edgeIds: edgeProxy.ids,\n },\n };\n}\n\nexport function buildTransformedDisplayEdgeRuntime(displayEdgeRuntime, transformByPartId = null) {\n const transformEntries = normalizedTransformEntries(transformByPartId);\n if (!displayEdgeRuntime || !transformEntries.length) {\n return displayEdgeRuntime || null;\n }\n\n const edgesResult = transformRowsByOccurrence(displayEdgeRuntime.edges, \"edge\", transformEntries);\n const proxy = displayEdgeRuntime.proxy || {};\n const edgeProxy = transformIndexedProxy({\n positions: proxy.edgePositions,\n indices: proxy.edgeIndices,\n ids: proxy.edgeIds,\n rowTransforms: edgesResult.transforms,\n elementSize: 2,\n });\n const modelTransform = transformEntries.find(([key]) => key === \"__model__\" || key === \"*\" || key === \"__all__\")?.[1] || null;\n\n return {\n ...displayEdgeRuntime,\n bbox: modelTransform && displayEdgeRuntime.bbox ? transformBBox(modelTransform, displayEdgeRuntime.bbox) : displayEdgeRuntime.bbox,\n edges: edgesResult.rows,\n proxy: {\n ...proxy,\n edgePositions: edgeProxy.positions,\n edgeIndices: edgeProxy.indices,\n edgeIds: edgeProxy.ids,\n },\n };\n}\n","import {\n buildTransformedDisplayEdgeRuntime,\n buildTransformedSelectorRuntime\n} from \"../lib/selectors/runtime.js\";\nimport {\n shouldUseTopologyDisplayEdges\n} from \"./topologyDisplayEdges.js\";\n\nconst displayEdgeVisibilityClassRuntimeCache = new WeakMap();\nconst transformedSelectorRuntimeCache = new WeakMap();\nconst transformedDisplayEdgeRuntimeCache = new WeakMap();\nconst MAX_TRANSFORMED_RUNTIME_CACHE_ENTRIES = 32;\n\nexport function topologyDisplayEdgeSurfaceOffsetForSettings(edgeSettings = {}) {\n return 0;\n}\n\nexport function applyTopologyDisplayEdgeSurfaceOffset(records, edgeSettings = {}) {\n // Topology display edges must depth-test against the true solid surface.\n // Pushing the whole mesh away makes close-but-hidden edges bleed through at distance.\n for (const record of Array.isArray(records) ? records : []) {\n const material = record?.material;\n if (!material) {\n continue;\n }\n material.polygonOffset = false;\n material.polygonOffsetFactor = 0;\n material.polygonOffsetUnits = 0;\n material.needsUpdate = true;\n }\n}\n\nexport function disposeTopologyDisplayEdgeObject(object) {\n if (!object) {\n return;\n }\n while (object.children?.length) {\n disposeTopologyDisplayEdgeObject(object.children[0]);\n }\n object.parent?.remove?.(object);\n if (typeof object.userData?.beforeDispose === \"function\") {\n object.userData.beforeDispose(object);\n delete object.userData.beforeDispose;\n }\n if (object.userData?.disposeGeometry !== false) {\n object.geometry?.dispose?.();\n }\n if (object.userData?.disposeMaterial !== false) {\n const materials = Array.isArray(object.material) ? object.material : [object.material];\n for (const material of materials) {\n material?.dispose?.();\n }\n }\n}\n\nexport function matrixHasTransform(matrix, epsilon = 1e-6) {\n if (!matrix?.elements || matrix.elements.length !== 16) {\n return false;\n }\n const identity = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n return matrix.elements.some((value, index) => Math.abs(Number(value) - identity[index]) > epsilon);\n}\n\nexport function rowMajorArrayFromMatrix4(matrix) {\n if (!matrix?.elements || matrix.elements.length !== 16) {\n return null;\n }\n const elements = matrix.elements;\n return [\n elements[0], elements[4], elements[8], elements[12],\n elements[1], elements[5], elements[9], elements[13],\n elements[2], elements[6], elements[10], elements[14],\n elements[3], elements[7], elements[11], elements[15],\n ];\n}\n\nfunction transformSignatureValue(value) {\n const number = Number(value);\n return Number.isFinite(number) ? String(number) : \"0\";\n}\n\nfunction transformEntriesSignature(transforms) {\n if (!transforms?.size) {\n return \"\";\n }\n return [...transforms.entries()]\n .map(([partId, transform]) => {\n const transformValues = Array.isArray(transform) || ArrayBuffer.isView(transform)\n ? Array.from(transform, transformSignatureValue)\n : [];\n return `${String(partId || \"\").trim()}:${transformValues.join(\",\")}`;\n })\n .sort()\n .join(\"|\");\n}\n\nfunction cachedTransformedRuntime(cache, baseRuntime, transforms, buildRuntime) {\n if (!baseRuntime || !transforms?.size) {\n return null;\n }\n const signature = transformEntriesSignature(transforms);\n if (!signature) {\n return null;\n }\n let runtimeBySignature = cache.get(baseRuntime);\n if (!runtimeBySignature) {\n runtimeBySignature = new Map();\n cache.set(baseRuntime, runtimeBySignature);\n }\n if (runtimeBySignature.has(signature)) {\n return runtimeBySignature.get(signature);\n }\n const runtime = buildRuntime(baseRuntime, transforms);\n runtimeBySignature.set(signature, runtime);\n if (runtimeBySignature.size > MAX_TRANSFORMED_RUNTIME_CACHE_ENTRIES) {\n runtimeBySignature.delete(runtimeBySignature.keys().next().value);\n }\n return runtime;\n}\n\nexport function selectorTransformsFromDisplayRecords(displayRecords) {\n const transforms = new Map();\n for (const record of Array.isArray(displayRecords) ? displayRecords : []) {\n const partId = String(record?.partId || \"\").trim();\n if (!partId || !record?.effectMatrix || !matrixHasTransform(record.effectMatrix)) {\n continue;\n }\n const transform = rowMajorArrayFromMatrix4(record.effectMatrix);\n if (transform) {\n transforms.set(partId, transform);\n }\n }\n return transforms;\n}\n\nfunction runtimeHasVisibilityClassRows(runtime) {\n return Array.isArray(runtime?.edges) &&\n runtime.edges.some((row) => String(row?.visibilityClass || \"\").trim());\n}\n\nfunction displayEdgeRowsCanUseSelectorClasses(displayEdgeRuntime, selectorRuntime) {\n const displayRows = Array.isArray(displayEdgeRuntime?.edges) ? displayEdgeRuntime.edges : [];\n const selectorRows = Array.isArray(selectorRuntime?.edges) ? selectorRuntime.edges : [];\n const alignedRows = displayRows.every((row, rowIndex) => {\n const selectorRow = selectorRows[rowIndex] || {};\n const displayStart = Number(row?.segmentStart);\n const selectorStart = Number(selectorRow?.segmentStart);\n const displayCount = Number(row?.segmentCount);\n const selectorCount = Number(selectorRow?.segmentCount);\n return (\n (!Number.isFinite(displayStart) || !Number.isFinite(selectorStart) || displayStart === selectorStart) &&\n (!Number.isFinite(displayCount) || !Number.isFinite(selectorCount) || displayCount === selectorCount)\n );\n });\n return Boolean(\n displayRows.length &&\n displayRows.length === selectorRows.length &&\n alignedRows &&\n !runtimeHasVisibilityClassRows(displayEdgeRuntime) &&\n runtimeHasVisibilityClassRows(selectorRuntime)\n );\n}\n\nfunction runtimeUsesSurfaceOwnedEdges(runtime) {\n return Boolean(runtime?.surfaceEdgeRendering || Number(runtime?.schemaVersion || 0) >= 3);\n}\n\nexport function displayEdgeRuntimeWithSelectorVisibilityClasses(displayEdgeRuntime, selectorRuntime) {\n if (!displayEdgeRowsCanUseSelectorClasses(displayEdgeRuntime, selectorRuntime)) {\n return displayEdgeRuntime || null;\n }\n const cached = displayEdgeVisibilityClassRuntimeCache.get(displayEdgeRuntime);\n if (cached?.selectorRuntime === selectorRuntime) {\n return cached.runtime;\n }\n const runtime = {\n ...displayEdgeRuntime,\n edges: displayEdgeRuntime.edges.map((row, rowIndex) => ({\n ...row,\n visibilityClass: selectorRuntime.edges[rowIndex]?.visibilityClass || \"feature\"\n }))\n };\n displayEdgeVisibilityClassRuntimeCache.set(displayEdgeRuntime, { selectorRuntime, runtime });\n return runtime;\n}\n\nexport function resolveTopologyDisplayEdgeRuntimes({\n selectorRuntime = null,\n displayEdgeRuntime = null,\n displayRecords = null,\n transformDisplayEdges = true\n} = {}) {\n const selectorTransforms = selectorTransformsFromDisplayRecords(displayRecords);\n const baseDisplayEdgeRuntime = displayEdgeRuntimeWithSelectorVisibilityClasses(displayEdgeRuntime, selectorRuntime);\n const transformedSelectorRuntime = selectorTransforms.size && selectorRuntime\n ? cachedTransformedRuntime(\n transformedSelectorRuntimeCache,\n selectorRuntime,\n selectorTransforms,\n buildTransformedSelectorRuntime\n )\n : null;\n const transformedDisplayEdgeRuntime = transformDisplayEdges && selectorTransforms.size && baseDisplayEdgeRuntime\n ? cachedTransformedRuntime(\n transformedDisplayEdgeRuntimeCache,\n baseDisplayEdgeRuntime,\n selectorTransforms,\n buildTransformedDisplayEdgeRuntime\n )\n : null;\n const activeSelectorRuntime = transformedSelectorRuntime || selectorRuntime || null;\n const activeDisplayEdgeRuntime = transformedDisplayEdgeRuntime || baseDisplayEdgeRuntime || null;\n return {\n selectorTransforms,\n transformCount: selectorTransforms.size,\n transformedSelectorRuntime,\n transformedDisplayEdgeRuntime,\n selectorRuntime: activeSelectorRuntime,\n displayEdgeRuntime: activeDisplayEdgeRuntime,\n topologyRuntime: activeDisplayEdgeRuntime || activeSelectorRuntime\n };\n}\n\nexport function shouldRenderTopologyDisplayEdges({\n edgesVisible = false,\n wireframeMode = false,\n cadEdgeSource = false,\n displayEdgeRuntime = null,\n selectorRuntime = null,\n edgeSettings = null\n} = {}) {\n return Boolean(\n edgesVisible &&\n !wireframeMode &&\n cadEdgeSource &&\n !runtimeUsesSurfaceOwnedEdges(displayEdgeRuntime || selectorRuntime) &&\n shouldUseTopologyDisplayEdges(displayEdgeRuntime || selectorRuntime, edgeSettings)\n );\n}\n\nexport function shouldUseRecordTopologyEdgeTransforms({\n transformDetected = false,\n topologyDisplayEdgesVisible = false,\n displayEdgeRuntime = null,\n displayRecords = []\n} = {}) {\n return Boolean(\n transformDetected &&\n topologyDisplayEdgesVisible &&\n displayEdgeRuntime &&\n Array.isArray(displayRecords) &&\n displayRecords.length > 1\n );\n}\n","import {\n buildCadRefToken,\n normalizeCadPath,\n normalizeCadRefSelectors,\n parseCadRefSelector,\n parseCadRefToken\n} from \"../lib/cadRefs.js\";\n\nexport const STEP_MODULE_SCHEMA_VERSION = 1;\n\nconst HEX_COLOR_RE = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\nfunction isObject(value) {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeString(value, fallback = \"\") {\n const text = String(value ?? fallback).trim();\n return text || fallback;\n}\n\nfunction toFiniteNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeParameterType(value) {\n const type = normalizeString(value, \"number\").toLowerCase();\n if ([\"number\", \"boolean\", \"enum\", \"select\", \"color\", \"string\", \"button\"].includes(type)) {\n return type === \"select\" ? \"enum\" : type;\n }\n return \"number\";\n}\n\nfunction normalizeParameterOptions(value) {\n return (Array.isArray(value) ? value : [])\n .map((option) => {\n if (isObject(option)) {\n const valueText = normalizeString(option.value);\n return valueText ? {\n value: valueText,\n label: normalizeString(option.label, valueText)\n } : null;\n }\n const valueText = normalizeString(option);\n return valueText ? { value: valueText, label: valueText } : null;\n })\n .filter(Boolean);\n}\n\nfunction normalizeParameterDefinition(id, rawDefinition) {\n const raw = isObject(rawDefinition) ? rawDefinition : {};\n const type = normalizeParameterType(raw.type);\n const min = toFiniteNumber(raw.min, 0);\n const max = Math.max(toFiniteNumber(raw.max, type === \"number\" ? 1 : min), min);\n const options = normalizeParameterOptions(raw.options || raw.values);\n const fallbackDefault = type === \"boolean\"\n ? false\n : type === \"color\"\n ? \"#ffffff\"\n : type === \"enum\"\n ? options[0]?.value || \"\"\n : type === \"string\"\n ? \"\"\n : 0;\n return {\n id,\n type,\n label: normalizeString(raw.label, id),\n description: normalizeString(raw.description),\n unit: normalizeString(raw.unit),\n min,\n max,\n step: Math.max(toFiniteNumber(raw.step, type === \"number\" ? 0.01 : 1), 0),\n defaultValue: normalizeParameterValue({ type, min, max, options }, raw.default ?? raw.defaultValue ?? fallbackDefault),\n options\n };\n}\n\nexport function normalizeParameterValue(definition, value) {\n const type = normalizeParameterType(definition?.type);\n if (type === \"boolean\") {\n return value === true;\n }\n if (type === \"color\") {\n const color = normalizeString(value, normalizeString(definition?.defaultValue, \"#ffffff\"));\n return HEX_COLOR_RE.test(color) ? color : \"#ffffff\";\n }\n if (type === \"enum\") {\n const options = Array.isArray(definition?.options) ? definition.options : [];\n const valueText = normalizeString(value, options[0]?.value || \"\");\n return options.some((option) => option.value === valueText) ? valueText : (options[0]?.value || \"\");\n }\n if (type === \"string\") {\n return String(value ?? \"\");\n }\n if (type === \"button\") {\n return Math.max(0, Math.floor(toFiniteNumber(value, 0)));\n }\n const min = toFiniteNumber(definition?.min, 0);\n const max = Math.max(toFiniteNumber(definition?.max, min), min);\n return clamp(toFiniteNumber(value, toFiniteNumber(definition?.defaultValue, min)), min, max);\n}\n\nfunction normalizeParameters(value) {\n return Object.entries(isObject(value) ? value : {})\n .map(([id, rawDefinition]) => normalizeParameterDefinition(normalizeString(id), rawDefinition))\n .filter((definition) => definition.id);\n}\n\nfunction inferCadPathFromStepModuleUrl(url) {\n let pathname = String(url || \"\").split(\"?\")[0].split(\"#\")[0].replace(/\\\\/g, \"/\").trim();\n if (!pathname) {\n return \"\";\n }\n try {\n pathname = new URL(pathname, \"http://localhost\").pathname;\n } catch {\n // Keep the raw path for relative module URLs.\n }\n const normalizedPath = pathname.replace(/^\\/+|\\/+$/g, \"\");\n const slashIndex = normalizedPath.lastIndexOf(\"/\");\n const directory = slashIndex >= 0 ? normalizedPath.slice(0, slashIndex) : \"\";\n const fileName = slashIndex >= 0 ? normalizedPath.slice(slashIndex + 1) : normalizedPath;\n const match = fileName.match(/^\\.?(.+)\\.step\\.js$/);\n if (!match?.[1]) {\n return \"\";\n }\n return normalizeCadPath([directory, match[1]].filter(Boolean).join(\"/\"));\n}\n\nfunction normalizeRelativeStepPath(value) {\n const rawPath = normalizeString(value).replace(/\\\\/g, \"/\");\n if (!rawPath || rawPath.startsWith(\"/\") || /^[A-Za-z]:\\//.test(rawPath) || /^[a-z][a-z0-9+.-]*:/i.test(rawPath)) {\n return \"\";\n }\n const parts = rawPath.split(\"/\").filter((part) => part && part !== \".\");\n if (!parts.length || parts.some((part) => part === \"..\")) {\n return \"\";\n }\n const normalizedPath = parts.join(\"/\");\n return /\\.(step|stp)$/i.test(normalizedPath) ? normalizedPath : \"\";\n}\n\nfunction cadPathFromStepPath(stepPath) {\n return normalizeCadPath(String(stepPath || \"\").replace(/\\.(step|stp)$/i, \"\"));\n}\n\nfunction normalizeStepLink(value) {\n const raw = isObject(value) ? value : {};\n return {\n ...raw,\n path: normalizeRelativeStepPath(raw.path)\n };\n}\n\nfunction normalizeManifestStep(value, normalizedStep) {\n if (!isObject(value) && !normalizedStep.path) {\n return null;\n }\n const step = isObject(value) ? { ...value } : {};\n if (normalizedStep.path) {\n step.path = normalizedStep.path;\n } else {\n delete step.path;\n }\n return Object.keys(step).length ? step : null;\n}\n\nfunction normalizeFeatureRef(rawFeature, cadPath = \"\") {\n const raw = isObject(rawFeature) ? rawFeature : {};\n const ref = normalizeString(raw.ref);\n void cadPath;\n const fullToken = parseCadRefToken(ref);\n if (fullToken) {\n return buildCadRefToken({ selectors: fullToken.selectors });\n }\n\n const rawSelectors = ref.startsWith(\"#\") ? ref.slice(1) : \"\";\n const selectors = normalizeCadRefSelectors(\n rawSelectors ||\n raw.selector ||\n raw.selectors ||\n raw.occurrence ||\n raw.occurrences ||\n []\n );\n return selectors.length\n ? buildCadRefToken({ selectors })\n : ref;\n}\n\nfunction normalizeFeatures(value, { cadPath = \"\" } = {}) {\n return Object.entries(isObject(value) ? value : {})\n .map(([id, rawFeature]) => {\n const raw = isObject(rawFeature) ? rawFeature : {};\n const featureId = normalizeString(id);\n return featureId ? {\n id: featureId,\n label: normalizeString(raw.label, featureId),\n description: normalizeString(raw.description),\n ref: normalizeFeatureRef(raw, cadPath),\n partIds: Array.isArray(raw.partIds)\n ? raw.partIds.map((partId) => normalizeString(partId)).filter(Boolean)\n : [],\n axis: normalizeVector3(raw.axis, [0, 0, 1]),\n origin: normalizePoint3(raw.origin, null)\n } : null;\n })\n .filter(Boolean);\n}\n\nfunction normalizeAnimations(value) {\n return Object.entries(isObject(value) ? value : {})\n .map(([id, rawAnimation]) => {\n const raw = isObject(rawAnimation) ? rawAnimation : {};\n const animationId = normalizeString(id);\n return animationId ? {\n id: animationId,\n label: normalizeString(raw.label, animationId),\n description: normalizeString(raw.description),\n duration: Math.max(toFiniteNumber(raw.duration ?? raw.durationSeconds, 1), 0.001),\n loop: raw.loop !== false,\n update: typeof raw.update === \"function\" ? raw.update : null,\n raw\n } : null;\n })\n .filter(Boolean);\n}\n\nfunction normalizeVector3(value, fallback = [0, 0, 0]) {\n const source = Array.isArray(value) ? value : fallback;\n return [\n toFiniteNumber(source?.[0], fallback[0] || 0),\n toFiniteNumber(source?.[1], fallback[1] || 0),\n toFiniteNumber(source?.[2], fallback[2] || 0)\n ];\n}\n\nfunction normalizePoint3(value, fallback = [0, 0, 0]) {\n if (!Array.isArray(value) && fallback === null) {\n return null;\n }\n return normalizeVector3(value, fallback || [0, 0, 0]);\n}\n\nexport function normalizeStepModuleDefinition(rawModule, { url = \"\", cadPath = \"\" } = {}) {\n if (!isObject(rawModule)) {\n throw new Error(\"STEP runtime module must export an object\");\n }\n const manifest = isObject(rawModule.manifest) ? rawModule.manifest : rawModule;\n const schemaVersion = Number(manifest.schemaVersion || rawModule.schemaVersion || 1);\n if (schemaVersion !== STEP_MODULE_SCHEMA_VERSION) {\n throw new Error(`Unsupported STEP runtime module schemaVersion ${schemaVersion || \"unknown\"}`);\n }\n const step = normalizeStepLink(manifest.step);\n const stepCadPath = cadPathFromStepPath(step.path);\n const normalizedCadPath = stepCadPath || normalizeCadPath(cadPath) || inferCadPathFromStepModuleUrl(url);\n const parameters = normalizeParameters(manifest.parameters);\n const parameterMap = Object.fromEntries(parameters.map((definition) => [definition.id, definition]));\n const defaultParameterValues = Object.fromEntries(\n parameters.map((definition) => [definition.id, definition.defaultValue])\n );\n const normalizedManifestStep = normalizeManifestStep(manifest.step, step);\n const normalizedManifest = {\n ...manifest,\n schemaVersion: STEP_MODULE_SCHEMA_VERSION\n };\n if (normalizedManifestStep) {\n normalizedManifest.step = normalizedManifestStep;\n } else {\n delete normalizedManifest.step;\n }\n return {\n url: normalizeString(url),\n cadPath: normalizedCadPath,\n step: {\n path: step.path,\n cadPath: stepCadPath || normalizedCadPath,\n explicit: Boolean(step.path),\n inferred: !step.path && Boolean(normalizedCadPath)\n },\n module: rawModule,\n manifest: normalizedManifest,\n features: normalizeFeatures(manifest.features, { cadPath: normalizedCadPath }),\n parameters,\n parameterMap,\n defaultParameterValues,\n animations: normalizeAnimations(manifest.animations)\n };\n}\n\nexport async function loadStepModuleDefinition(url, options = {}) {\n const namespace = await import(/* webpackIgnore: true */ /* @vite-ignore */ url);\n return normalizeStepModuleDefinition(namespace?.default ?? namespace, { url, ...options });\n}\n\nexport function normalizeStepModuleParameterValues(definition, values = {}) {\n const parameterMap = definition?.parameterMap || {};\n return Object.fromEntries(\n Object.values(parameterMap).map((parameter) => [\n parameter.id,\n normalizeParameterValue(parameter, isObject(values) && Object.hasOwn(values, parameter.id)\n ? values[parameter.id]\n : parameter.defaultValue)\n ])\n );\n}\n\nconst STEP_MODULE_ZERO_STATE_EPSILON = 1e-6;\n\nfunction stepModuleValueMatchesZeroState(parameter, value, zeroValue) {\n const type = normalizeParameterType(parameter?.type);\n if (type === \"number\" || type === \"button\") {\n const numericValue = Number(value);\n const numericZeroValue = Number(zeroValue);\n return Number.isFinite(numericValue) &&\n Number.isFinite(numericZeroValue) &&\n Math.abs(numericValue - numericZeroValue) <= STEP_MODULE_ZERO_STATE_EPSILON;\n }\n if (type === \"color\") {\n return String(value || \"\").toLowerCase() === String(zeroValue || \"\").toLowerCase();\n }\n return value === zeroValue;\n}\n\nexport function stepModuleParameterValuesAtZeroState(definition, values = {}) {\n const parameters = Array.isArray(definition?.parameters) ? definition.parameters : [];\n if (!parameters.length) {\n return true;\n }\n const normalizedValues = normalizeStepModuleParameterValues(definition, values);\n const zeroValues = normalizeStepModuleParameterValues(definition, definition?.defaultParameterValues || {});\n return parameters.every((parameter) => (\n stepModuleValueMatchesZeroState(parameter, normalizedValues[parameter.id], zeroValues[parameter.id])\n ));\n}\n\nexport function stepModuleAnimationStateAtZeroState(animationState = {}) {\n return animationState?.playing !== true &&\n Math.abs(toFiniteNumber(animationState?.elapsedSec, 0)) <= STEP_MODULE_ZERO_STATE_EPSILON;\n}\n\nexport function stepModuleRuntimeAtZeroState(definition, runtimeState = {}) {\n return stepModuleParameterValuesAtZeroState(definition, runtimeState?.parameterValues) &&\n stepModuleAnimationStateAtZeroState(runtimeState?.animationState);\n}\n\nfunction boundsCenter(bounds) {\n const min = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const max = Array.isArray(bounds?.max) ? bounds.max : min;\n return [\n (toFiniteNumber(min[0]) + toFiniteNumber(max[0])) / 2,\n (toFiniteNumber(min[1]) + toFiniteNumber(max[1])) / 2,\n (toFiniteNumber(min[2]) + toFiniteNumber(max[2])) / 2\n ];\n}\n\nfunction mergeBounds(boundsList) {\n const validBounds = (Array.isArray(boundsList) ? boundsList : [])\n .filter((bounds) => Array.isArray(bounds?.min) && Array.isArray(bounds?.max));\n if (!validBounds.length) {\n return null;\n }\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n for (const bounds of validBounds) {\n for (let index = 0; index < 3; index += 1) {\n min[index] = Math.min(min[index], toFiniteNumber(bounds.min[index]));\n max[index] = Math.max(max[index], toFiniteNumber(bounds.max[index]));\n }\n }\n return { min, max };\n}\n\nfunction partIdsForSelector(selector, meshData) {\n const normalizedSelector = normalizeString(selector);\n const parts = Array.isArray(meshData?.parts) ? meshData.parts : [];\n if (!normalizedSelector || !parts.length) {\n return [];\n }\n return parts\n .filter((part) => {\n const ids = [part?.id, part?.occurrenceId]\n .map((id) => normalizeString(id))\n .filter(Boolean);\n return ids.some((id) => (\n id === normalizedSelector ||\n id.startsWith(`${normalizedSelector}.`) ||\n normalizedSelector.startsWith(`${id}.`)\n ));\n })\n .map((part) => normalizeString(part.id || part.occurrenceId))\n .filter(Boolean);\n}\n\nfunction referenceForSelector(selector, selectorRuntime) {\n const normalizedSelector = normalizeString(selector);\n if (!normalizedSelector || !selectorRuntime) {\n return null;\n }\n return selectorRuntime.referenceByNormalizedSelector?.get(normalizedSelector)\n || selectorRuntime.referenceByDisplaySelector?.get(normalizedSelector)\n || selectorRuntime.referenceMap?.get(normalizedSelector)\n || null;\n}\n\nfunction uniqueStrings(values) {\n return [...new Set((Array.isArray(values) ? values : [])\n .map((value) => normalizeString(value))\n .filter(Boolean))];\n}\n\nfunction featureSelectors(feature) {\n const token = parseCadRefToken(feature?.ref);\n if (!token) {\n return [];\n }\n return token.selectors.length ? token.selectors : [\"__model__\"];\n}\n\nexport function resolveStepModuleFeatures(definition, {\n meshData = null,\n selectorRuntime = null\n} = {}) {\n const parts = Array.isArray(meshData?.parts) ? meshData.parts : [];\n const partMap = new Map(parts.map((part) => [normalizeString(part.id || part.occurrenceId), part]));\n const allPartIds = parts.length\n ? parts.map((part) => normalizeString(part.id || part.occurrenceId)).filter(Boolean)\n : [\"__model__\"];\n return Object.fromEntries(\n (Array.isArray(definition?.features) ? definition.features : []).map((feature) => {\n const selectors = featureSelectors(feature);\n const references = selectors\n .map((selector) => selector === \"__model__\" ? null : referenceForSelector(selector, selectorRuntime))\n .filter(Boolean);\n const selectorPartIds = selectors.flatMap((selector) => {\n if (selector === \"__model__\") {\n return allPartIds;\n }\n const parsedSelector = parseCadRefSelector(selector);\n if (parsedSelector?.occurrenceId) {\n return partIdsForSelector(parsedSelector.occurrenceId, meshData);\n }\n const reference = referenceForSelector(selector, selectorRuntime);\n return partIdsForSelector(reference?.partId || reference?.occurrenceId || selector, meshData);\n });\n const partIds = uniqueStrings([\n ...feature.partIds,\n ...selectorPartIds\n ]);\n const partsForFeature = partIds.map((partId) => partMap.get(partId)).filter(Boolean);\n const bounds = mergeBounds(partsForFeature.map((part) => part.bounds)) || meshData?.bounds || null;\n return [feature.id, {\n ...feature,\n selectors,\n references,\n partIds,\n parts: partsForFeature,\n bounds,\n center: feature.origin || boundsCenter(bounds),\n transform: partsForFeature.length === 1 ? partsForFeature[0]?.transform || null : null,\n transforms: partsForFeature.map((part) => part?.transform || null),\n missing: selectors.length > 0 && partIds.length === 0 && selectors[0] !== \"__model__\"\n }];\n })\n );\n}\n\nexport function stepModuleTargetPartIds(target, features, meshData) {\n if (Array.isArray(target)) {\n return uniqueStrings(target.flatMap((item) => stepModuleTargetPartIds(item, features, meshData)));\n }\n if (isObject(target)) {\n if (Array.isArray(target.partIds)) {\n return uniqueStrings(target.partIds);\n }\n if (target.partId) {\n return uniqueStrings([target.partId]);\n }\n if (target.feature) {\n return stepModuleTargetPartIds(target.feature, features, meshData);\n }\n if (target.ref) {\n return stepModuleTargetPartIds(target.ref, features, meshData);\n }\n }\n const normalizedTarget = normalizeString(target);\n if (!normalizedTarget) {\n return [];\n }\n if (normalizedTarget === \"*\" || normalizedTarget === \"all\" || normalizedTarget === \"__all__\") {\n const parts = Array.isArray(meshData?.parts) ? meshData.parts : [];\n return parts.length\n ? uniqueStrings(parts.map((part) => part?.id || part?.occurrenceId))\n : [\"__model__\"];\n }\n const feature = features?.[normalizedTarget];\n if (feature) {\n return uniqueStrings(feature.partIds);\n }\n const token = parseCadRefToken(normalizedTarget);\n if (token) {\n const selectors = token.selectors.length ? token.selectors : [\"*\"];\n return uniqueStrings(selectors.flatMap((selector) => stepModuleTargetPartIds(selector, features, meshData)));\n }\n return uniqueStrings(partIdsForSelector(normalizedTarget, meshData));\n}\n","import { stepModuleTargetPartIds } from \"./stepModule.js\";\n\nfunction toNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction uniqueStrings(values) {\n return [...new Set((Array.isArray(values) ? values : [])\n .map((value) => String(value || \"\").trim())\n .filter(Boolean))];\n}\n\nexport function buildPartTransformMatrix(THREE, transform) {\n const matrix = new THREE.Matrix4();\n if (!Array.isArray(transform) || transform.length !== 16) {\n matrix.identity();\n return matrix;\n }\n matrix.set(\n Number(transform[0]) || 0,\n Number(transform[1]) || 0,\n Number(transform[2]) || 0,\n Number(transform[3]) || 0,\n Number(transform[4]) || 0,\n Number(transform[5]) || 0,\n Number(transform[6]) || 0,\n Number(transform[7]) || 0,\n Number(transform[8]) || 0,\n Number(transform[9]) || 0,\n Number(transform[10]) || 0,\n Number(transform[11]) || 0,\n Number(transform[12]) || 0,\n Number(transform[13]) || 0,\n Number(transform[14]) || 0,\n Number(transform[15]) || 0\n );\n return matrix;\n}\n\nexport function displayTransformForPart(meshData, part, renderPartsIndividually = true) {\n if (!renderPartsIndividually || meshData?.partTransformsBaked === true) {\n return null;\n }\n return part?.transform || null;\n}\n\nfunction normalizeStepModulePoint(value, fallback = [0, 0, 0]) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return [\n toNumber(value[0], fallback[0] || 0),\n toNumber(value[1], fallback[1] || 0),\n toNumber(value[2], fallback[2] || 0)\n ];\n }\n if (value && typeof value === \"object\") {\n return [\n toNumber(value.x, fallback[0] || 0),\n toNumber(value.y, fallback[1] || 0),\n toNumber(value.z, fallback[2] || 0)\n ];\n }\n return [...fallback];\n}\n\nfunction stepModuleVector3(THREE, value, fallback = [0, 0, 0]) {\n const point = normalizeStepModulePoint(value, fallback);\n return new THREE.Vector3(point[0], point[1], point[2]);\n}\n\nfunction buildStepModuleRotateMatrix(THREE, spec = {}) {\n const axis = stepModuleVector3(THREE, spec.axis, [0, 0, 1]);\n if (axis.lengthSq() <= 1e-12) {\n axis.set(0, 0, 1);\n }\n axis.normalize();\n const origin = stepModuleVector3(THREE, spec.origin, [0, 0, 0]);\n const angleRad = Number.isFinite(Number(spec.angleRad))\n ? Number(spec.angleRad)\n : (toNumber(spec.angleDeg, 0) * Math.PI) / 180;\n return new THREE.Matrix4()\n .makeTranslation(origin.x, origin.y, origin.z)\n .multiply(new THREE.Matrix4().makeRotationAxis(axis, angleRad))\n .multiply(new THREE.Matrix4().makeTranslation(-origin.x, -origin.y, -origin.z));\n}\n\nfunction buildStepModuleScaleMatrix(THREE, spec = {}) {\n const rawScale = spec.scale ?? spec;\n const scale = Array.isArray(rawScale) || ArrayBuffer.isView(rawScale)\n ? normalizeStepModulePoint(rawScale, [1, 1, 1])\n : [toNumber(rawScale, 1), toNumber(rawScale, 1), toNumber(rawScale, 1)];\n const origin = stepModuleVector3(THREE, spec.origin, [0, 0, 0]);\n return new THREE.Matrix4()\n .makeTranslation(origin.x, origin.y, origin.z)\n .multiply(new THREE.Matrix4().makeScale(scale[0], scale[1], scale[2]))\n .multiply(new THREE.Matrix4().makeTranslation(-origin.x, -origin.y, -origin.z));\n}\n\nfunction buildStepModuleTranslateMatrix(THREE, value) {\n const translate = normalizeStepModulePoint(value, [0, 0, 0]);\n return new THREE.Matrix4().makeTranslation(translate[0], translate[1], translate[2]);\n}\n\nfunction buildStepModuleSingleEffectMatrix(THREE, spec = {}) {\n if (!spec || typeof spec !== \"object\") {\n return new THREE.Matrix4();\n }\n if (Array.isArray(spec.matrix) && spec.matrix.length === 16) {\n return buildPartTransformMatrix(THREE, spec.matrix);\n }\n const matrix = new THREE.Matrix4();\n if (spec.scale !== undefined) {\n matrix.premultiply(buildStepModuleScaleMatrix(THREE, spec));\n }\n if (spec.rotate && typeof spec.rotate === \"object\") {\n matrix.premultiply(buildStepModuleRotateMatrix(THREE, spec.rotate));\n }\n if (spec.translate !== undefined) {\n matrix.premultiply(buildStepModuleTranslateMatrix(THREE, spec.translate));\n }\n return matrix;\n}\n\nexport function buildStepModuleEffectMatrix(THREE, spec = {}) {\n if (!spec || typeof spec !== \"object\") {\n return new THREE.Matrix4();\n }\n const steps = Array.isArray(spec.transforms) ? spec.transforms : [spec];\n const matrix = new THREE.Matrix4();\n for (const step of steps) {\n matrix.premultiply(buildStepModuleSingleEffectMatrix(THREE, step));\n }\n return matrix;\n}\n\nfunction matrixHasTransform(matrix, epsilon = 1e-6) {\n if (!matrix?.elements || matrix.elements.length !== 16) {\n return false;\n }\n const identity = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n return matrix.elements.some((value, index) => Math.abs(Number(value) - identity[index]) > epsilon);\n}\n\nexport function resetStepModuleRecordEffects(records) {\n for (const record of Array.isArray(records) ? records : []) {\n record.effectMatrix = null;\n record.effectStyle = null;\n record.effectVisible = null;\n record.effectHighlighted = false;\n }\n}\n\nfunction allStepModulePartIds(meshData, displayRecords) {\n const partIds = Array.isArray(meshData?.parts)\n ? meshData.parts.map((part) => String(part?.id || part?.occurrenceId || \"\").trim()).filter(Boolean)\n : [];\n if (partIds.length) {\n return uniqueStrings(partIds);\n }\n const displayPartIds = (Array.isArray(displayRecords) ? displayRecords : [])\n .map((record) => String(record?.partId || \"\").trim())\n .filter(Boolean);\n return uniqueStrings(displayPartIds.length ? displayPartIds : [\"__model__\"]);\n}\n\nfunction resolveStepModuleEffectTargetPartIds(target, features, meshData, displayRecords) {\n if (target && typeof target === \"object\" && !Array.isArray(target)) {\n if (Array.isArray(target.partIds)) {\n return uniqueStrings(target.partIds);\n }\n if (target.partId) {\n return uniqueStrings([target.partId]);\n }\n if (target.feature) {\n return resolveStepModuleEffectTargetPartIds(target.feature, features, meshData, displayRecords);\n }\n if (target.ref) {\n return stepModuleTargetPartIds(String(target.ref), features, meshData);\n }\n }\n const normalizedTarget = String(target || \"\").trim();\n if (normalizedTarget === \"*\" || normalizedTarget === \"all\" || normalizedTarget === \"__all__\") {\n return allStepModulePartIds(meshData, displayRecords);\n }\n return stepModuleTargetPartIds(target, features, meshData);\n}\n\nexport function createStepModuleEffectsApi(THREE, {\n meshData,\n features,\n runtime,\n effectsByPartId,\n onTransformEffect\n}) {\n const ensureEffect = (partId) => {\n const id = String(partId || \"\").trim();\n if (!id) {\n return null;\n }\n const current = effectsByPartId.get(id) || {\n matrix: null,\n style: null,\n visible: null,\n highlighted: false\n };\n effectsByPartId.set(id, current);\n return current;\n };\n const forEachTarget = (target, callback) => {\n const partIds = resolveStepModuleEffectTargetPartIds(target, features, meshData, runtime?.displayRecords);\n for (const partId of partIds) {\n const effect = ensureEffect(partId);\n if (effect) {\n callback(effect, partId);\n }\n }\n return partIds;\n };\n\n return {\n transform(target, spec) {\n const matrix = buildStepModuleEffectMatrix(THREE, spec);\n const partIds = forEachTarget(target, (effect) => {\n effect.matrix = effect.matrix\n ? effect.matrix.clone().premultiply(matrix)\n : matrix.clone();\n });\n if (partIds.length && matrixHasTransform(matrix)) {\n onTransformEffect?.({\n target,\n spec,\n partIds,\n matrix: matrix.clone()\n });\n }\n },\n style(target, style = {}) {\n if (!style || typeof style !== \"object\") {\n return;\n }\n forEachTarget(target, (effect) => {\n effect.style = {\n ...(effect.style || {}),\n ...style\n };\n });\n },\n visible(target, visible = true) {\n forEachTarget(target, (effect) => {\n effect.visible = visible !== false;\n });\n },\n highlight(target, highlighted = true) {\n forEachTarget(target, (effect) => {\n effect.highlighted = highlighted !== false;\n });\n },\n clear(target) {\n const partIds = resolveStepModuleEffectTargetPartIds(target, features, meshData, runtime?.displayRecords);\n for (const partId of partIds) {\n effectsByPartId.delete(partId);\n }\n }\n };\n}\n\nexport function buildStepModuleTimeState(animationState = {}) {\n const duration = Math.max(Number(animationState.duration) || 0, 0);\n const elapsedSec = Math.max(Number(animationState.elapsedSec) || 0, 0);\n return {\n elapsed: elapsedSec,\n elapsedSec,\n duration,\n progress: duration > 0 ? clamp(elapsedSec / duration, 0, 1) : 0,\n cycle: duration > 0 ? elapsedSec / duration : 0,\n playing: animationState.playing === true,\n speed: Math.max(Number(animationState.speed) || 1, 0)\n };\n}\n\nexport function buildStepModuleContext({\n runtime,\n stepModuleRuntime,\n features,\n effects,\n cleanup\n}) {\n const definition = stepModuleRuntime?.definition || null;\n return {\n THREE: runtime?.THREE,\n scene: runtime?.scene,\n modelGroup: runtime?.modelGroup,\n edgesGroup: runtime?.edgesGroup,\n runtime,\n manifest: definition?.manifest || {},\n module: definition?.module || null,\n cadPath: stepModuleRuntime?.cadPath || definition?.cadPath || \"\",\n params: stepModuleRuntime?.parameterValues || {},\n features,\n effects,\n time: buildStepModuleTimeState(stepModuleRuntime?.animationState),\n cleanup: typeof cleanup === \"function\" ? cleanup : () => {},\n requestRender: () => runtime?.requestRender?.()\n };\n}\n\nexport function applyStepModuleEffectsToRecords(THREE, records, effectsByPartId) {\n resetStepModuleRecordEffects(records);\n for (const record of Array.isArray(records) ? records : []) {\n const effect = effectsByPartId.get(String(record?.partId || \"\").trim());\n if (!effect) {\n continue;\n }\n record.effectMatrix = effect.matrix instanceof THREE.Matrix4 ? effect.matrix.clone() : null;\n record.effectStyle = effect.style && typeof effect.style === \"object\" ? { ...effect.style } : null;\n record.effectVisible = effect.visible;\n record.effectHighlighted = effect.highlighted === true;\n }\n}\n","import {\n buildPartTransformMatrix\n} from \"./stepModuleEffects.js\";\n\nfunction applyObjectMatrix(THREE, object3d, matrix) {\n if (!object3d || !(matrix instanceof THREE.Matrix4)) {\n return;\n }\n object3d.matrixAutoUpdate = false;\n const targetMatrix = object3d.matrix instanceof THREE.Matrix4 ? object3d.matrix : new THREE.Matrix4();\n targetMatrix.copy(matrix);\n object3d.matrix = targetMatrix;\n object3d.matrixWorldNeedsUpdate = true;\n}\n\nexport function composeDisplayRecordEffectMatrix(THREE, record) {\n if (!record || !THREE?.Matrix4) {\n return null;\n }\n const matrices = [\n record.effectMatrix,\n record.explodedViewMatrix\n ].filter((matrix) => matrix instanceof THREE.Matrix4);\n if (!matrices.length) {\n return null;\n }\n const combined = new THREE.Matrix4();\n for (const matrix of matrices) {\n combined.premultiply(matrix);\n }\n return combined;\n}\n\nexport function composeDisplayRecordObjectMatrix(THREE, record) {\n const baseMatrix = buildPartTransformMatrix(THREE, record?.baseTransform);\n const effectMatrix = composeDisplayRecordEffectMatrix(THREE, record);\n return effectMatrix ? effectMatrix.multiply(baseMatrix) : baseMatrix;\n}\n\nexport function applyDisplayRecordTransform(THREE, record) {\n if (!record) {\n return;\n }\n const combinedMatrix = composeDisplayRecordObjectMatrix(THREE, record);\n applyObjectMatrix(THREE, record.mesh, combinedMatrix);\n applyObjectMatrix(THREE, record.edges, combinedMatrix);\n applyObjectMatrix(THREE, record.silhouette, combinedMatrix);\n}\n","import {\n applyTopologyDisplayEdgeSurfaceOffset,\n disposeTopologyDisplayEdgeObject\n} from \"../../common/topologyDisplayEdgeRuntime.js\";\nimport {\n composeDisplayRecordEffectMatrix\n} from \"../../common/displayRecordTransform.js\";\nimport {\n createTopologyDisplayEdgeObject\n} from \"../../common/renderEdges.js\";\n\nfunction normalizePartIdList(value) {\n return (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean);\n}\n\nfunction partIdMatchesAny(partId, partIds = []) {\n const normalizedPartId = String(partId || \"\").trim();\n if (!normalizedPartId) {\n return false;\n }\n for (const candidate of partIds) {\n if (normalizedPartId === candidate || normalizedPartId.startsWith(`${candidate}.`)) {\n return true;\n }\n }\n return false;\n}\n\nfunction uniqueDisplayRecordsByPartId(displayRecords = []) {\n const records = [];\n const seen = new Set();\n for (const record of Array.isArray(displayRecords) ? displayRecords : []) {\n const partId = String(record?.partId || \"\").trim();\n if (!partId || seen.has(partId)) {\n continue;\n }\n seen.add(partId);\n records.push(record);\n }\n return records;\n}\n\nfunction displayRecordPartIds(displayRecords = []) {\n return uniqueDisplayRecordsByPartId(displayRecords).map((record) => String(record.partId || \"\").trim());\n}\n\nfunction topologyDisplayEdgeLineSettingsKey(\n edgeSettings = {},\n focusedPartIds = [],\n baseTheme = {},\n dimmedOpacity = 0.035,\n {\n transformByRecord = false,\n displayRecords = []\n } = {}\n) {\n const numberOrNull = (value) => Number.isFinite(Number(value)) ? Number(value) : null;\n return JSON.stringify({\n color: String(edgeSettings?.color || \"\"),\n opacity: numberOrNull(edgeSettings?.opacity),\n thickness: numberOrNull(edgeSettings?.thickness),\n includePartIds: normalizePartIdList(edgeSettings?.includePartIds),\n excludePartIds: normalizePartIdList(edgeSettings?.excludePartIds),\n visibilityClasses: normalizePartIdList(edgeSettings?.visibilityClasses),\n classes: edgeSettings?.classes && typeof edgeSettings.classes === \"object\"\n ? Object.fromEntries(Object.entries(edgeSettings.classes).map(([classId, settings]) => [\n classId,\n {\n color: String(settings?.color || \"\"),\n opacity: numberOrNull(settings?.opacity),\n thickness: numberOrNull(settings?.thickness)\n }\n ]))\n : null,\n highlightColor: String(edgeSettings?.highlightColor || \"\"),\n highlightOpacity: numberOrNull(edgeSettings?.highlightOpacity),\n highlightRenderOrder: numberOrNull(edgeSettings?.highlightRenderOrder),\n focusedPartIds: normalizePartIdList(focusedPartIds),\n dimmedOpacity,\n baseEdge: String(baseTheme?.edge || \"\"),\n baseEdgeOpacity: numberOrNull(baseTheme?.edgeOpacity),\n baseEdgeThickness: numberOrNull(baseTheme?.edgeThickness),\n transformByRecord: transformByRecord === true,\n recordPartIds: transformByRecord === true ? displayRecordPartIds(displayRecords) : []\n });\n}\n\nfunction applyRecordEffectMatrix(runtime, object, record) {\n const THREE = runtime?.THREE;\n if (!THREE || !object) {\n return false;\n }\n const nextMatrix = composeDisplayRecordEffectMatrix(THREE, record) || new THREE.Matrix4();\n object.matrixAutoUpdate = false;\n const targetMatrix = object.matrix instanceof THREE.Matrix4 ? object.matrix : new THREE.Matrix4();\n const changed = !targetMatrix.equals(nextMatrix);\n if (changed) {\n targetMatrix.copy(nextMatrix);\n object.matrix = targetMatrix;\n object.matrixWorldNeedsUpdate = true;\n }\n const nextVisible = record?.mesh?.visible !== false && record?.effectVisible !== false;\n if (object.visible !== nextVisible) {\n object.visible = nextVisible;\n return true;\n }\n return changed;\n}\n\nfunction syncRecordEdgeLineTransforms(runtime, group, displayRecords = []) {\n if (!group?.children?.length) {\n return false;\n }\n const recordByPartId = new Map();\n for (const record of uniqueDisplayRecordsByPartId(displayRecords)) {\n recordByPartId.set(String(record.partId || \"\").trim(), record);\n }\n\n let changed = false;\n for (const child of group.children) {\n const partId = String(child?.userData?.cadTopologyDisplayRecordPartId || \"\").trim();\n const record = recordByPartId.get(partId) || null;\n if (!record) {\n if (child.visible !== false) {\n child.visible = false;\n changed = true;\n }\n continue;\n }\n changed = applyRecordEffectMatrix(runtime, child, record) || changed;\n }\n if (changed) {\n runtime.edgesGroup?.updateMatrixWorld?.(true);\n }\n return changed;\n}\n\nexport function syncRecordTopologyDisplayEdgeTransforms(runtime, displayRecords = []) {\n return syncRecordEdgeLineTransforms(runtime, runtime?.topologyDisplayEdgeLine, displayRecords);\n}\n\nexport function createRecordTopologyDisplayEdgeGroup(runtime, sourceRuntime, {\n edgeSettings = {},\n focusedPartIds = [],\n viewerTheme = {},\n dimmedOpacity = 0.035,\n displayRecords = []\n} = {}) {\n if (!runtime?.THREE || !sourceRuntime) {\n return null;\n }\n const records = uniqueDisplayRecordsByPartId(displayRecords);\n if (!records.length) {\n return null;\n }\n const group = new runtime.THREE.Group();\n const focusedIds = normalizePartIdList(focusedPartIds);\n const highlightIds = normalizePartIdList(edgeSettings?.highlightPartIds);\n const baseOpacity = Number.isFinite(Number(edgeSettings?.opacity)) ? Number(edgeSettings.opacity) : null;\n for (const record of records) {\n const partId = String(record?.partId || \"\").trim();\n if (!partId) {\n continue;\n }\n if (highlightIds.length && !partIdMatchesAny(partId, highlightIds)) {\n continue;\n }\n const opacity = focusedIds.length && !partIdMatchesAny(partId, focusedIds)\n ? dimmedOpacity\n : baseOpacity;\n const recordEdgeSettings = highlightIds.length\n ? {\n ...edgeSettings,\n highlightPartIds: [partId]\n }\n : {\n ...edgeSettings,\n includePartIds: [partId],\n ...(opacity !== null ? { opacity } : {})\n };\n const line = createTopologyDisplayEdgeObject(\n runtime,\n sourceRuntime,\n recordEdgeSettings,\n viewerTheme\n );\n if (!line) {\n continue;\n }\n line.userData = {\n ...(line.userData || {}),\n cadTopologyDisplayRecordPartId: partId\n };\n applyRecordEffectMatrix(runtime, line, record);\n group.add(line);\n }\n if (!group.children.length) {\n return null;\n }\n group.name = \"TopologyDisplayEdges\";\n group.userData.partId = \"__topology__\";\n group.userData.disposeGeometry = false;\n group.userData.disposeMaterial = false;\n return group;\n}\n\nexport function syncTopologyDisplayEdgeLine(runtime, topologyRuntime, {\n visible = false,\n edgeSettings = {},\n focusedPartIds = [],\n viewerTheme = {},\n dimmedOpacity = 0.035,\n transformByRecord = false,\n displayRecords = [],\n syncClip = null\n} = {}) {\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return false;\n }\n\n const sourceRuntime = visible ? topologyRuntime : null;\n const settingsKey = sourceRuntime\n ? topologyDisplayEdgeLineSettingsKey(edgeSettings, focusedPartIds, viewerTheme, dimmedOpacity, {\n transformByRecord,\n displayRecords\n })\n : \"\";\n const current = runtime.topologyDisplayEdgeLine || null;\n if (\n current &&\n current.userData?.cadTopologyDisplayEdgeRuntime === sourceRuntime &&\n current.userData?.cadTopologyDisplayEdgeSettingsKey === settingsKey\n ) {\n const changed = transformByRecord\n ? syncRecordEdgeLineTransforms(runtime, current, displayRecords)\n : false;\n if (changed) {\n applyTopologyDisplayEdgeSurfaceOffset(runtime.displayRecords, edgeSettings);\n syncClip?.(runtime);\n runtime.requestRender?.();\n }\n return changed;\n }\n\n if (current) {\n runtime.edgesGroup.remove(current);\n disposeTopologyDisplayEdgeObject(current);\n runtime.topologyDisplayEdgeLine = null;\n }\n\n if (!sourceRuntime) {\n syncClip?.(runtime);\n runtime.requestRender?.();\n return true;\n }\n\n const topologyEdgeLine = transformByRecord\n ? createRecordTopologyDisplayEdgeGroup(runtime, sourceRuntime, {\n edgeSettings,\n focusedPartIds,\n viewerTheme,\n dimmedOpacity,\n displayRecords\n })\n : createTopologyDisplayEdgeObject(\n runtime,\n sourceRuntime,\n {\n ...edgeSettings,\n focusedPartIds,\n dimmedOpacity\n },\n viewerTheme\n );\n if (!topologyEdgeLine) {\n syncClip?.(runtime);\n runtime.requestRender?.();\n return true;\n }\n\n topologyEdgeLine.userData = {\n ...(topologyEdgeLine.userData || {}),\n cadTopologyDisplayEdgeRuntime: sourceRuntime,\n cadTopologyDisplayEdgeSettingsKey: settingsKey\n };\n runtime.topologyDisplayEdgeLine = topologyEdgeLine;\n runtime.edgesGroup.add(topologyEdgeLine);\n runtime.edgesGroup.updateMatrixWorld?.(true);\n applyTopologyDisplayEdgeSurfaceOffset(runtime.displayRecords, edgeSettings);\n syncClip?.(runtime);\n runtime.requestRender?.();\n return true;\n}\n","import { MAX_EXPLODED_VIEW_DEPTH, normalizeExplodedViewSettings } from \"../../common/displaySettings.js\";\n\nconst EPSILON = 1e-6;\nconst GOLDEN_ANGLE = Math.PI * (3 - Math.sqrt(5));\nconst AXIS_INDEX = Object.freeze({ x: 0, y: 1, z: 2 });\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction toNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction boundsCenter(THREE, bounds, fallback = null) {\n const min = Array.isArray(bounds?.min) || ArrayBuffer.isView(bounds?.min) ? bounds.min : null;\n const max = Array.isArray(bounds?.max) || ArrayBuffer.isView(bounds?.max) ? bounds.max : null;\n if (!min || !max) {\n return fallback?.clone?.() || new THREE.Vector3();\n }\n return new THREE.Vector3(\n (toNumber(min[0]) + toNumber(max[0])) / 2,\n (toNumber(min[1]) + toNumber(max[1])) / 2,\n (toNumber(min[2]) + toNumber(max[2])) / 2\n );\n}\n\nfunction boundsRadius(THREE, bounds) {\n const min = Array.isArray(bounds?.min) || ArrayBuffer.isView(bounds?.min) ? bounds.min : null;\n const max = Array.isArray(bounds?.max) || ArrayBuffer.isView(bounds?.max) ? bounds.max : null;\n if (!min || !max) {\n return 0;\n }\n return new THREE.Vector3(\n Math.max(toNumber(max[0]) - toNumber(min[0]), 0),\n Math.max(toNumber(max[1]) - toNumber(min[1]), 0),\n Math.max(toNumber(max[2]) - toNumber(min[2]), 0)\n ).length() / 2;\n}\n\nfunction boundsSize(bounds, axis) {\n const min = Array.isArray(bounds?.min) || ArrayBuffer.isView(bounds?.min) ? bounds.min : null;\n const max = Array.isArray(bounds?.max) || ArrayBuffer.isView(bounds?.max) ? bounds.max : null;\n if (!min || !max) {\n return 0;\n }\n return Math.max(toNumber(max[axis]) - toNumber(min[axis]), 0);\n}\n\nfunction boundsMaxSize(bounds) {\n return Math.max(\n boundsSize(bounds, 0),\n boundsSize(bounds, 1),\n boundsSize(bounds, 2)\n );\n}\n\nfunction shiftedBounds(bounds, translation = [0, 0, 0], amount = 1) {\n if (!bounds || !Array.isArray(bounds.min) || !Array.isArray(bounds.max)) {\n return null;\n }\n return {\n min: bounds.min.map((value, index) => toNumber(value) + toNumber(translation[index]) * amount),\n max: bounds.max.map((value, index) => toNumber(value) + toNumber(translation[index]) * amount)\n };\n}\n\nfunction mergeBounds(boundsList) {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n let count = 0;\n for (const bounds of Array.isArray(boundsList) ? boundsList : []) {\n if (!bounds || !Array.isArray(bounds.min) || !Array.isArray(bounds.max)) {\n continue;\n }\n count += 1;\n for (let axis = 0; axis < 3; axis += 1) {\n min[axis] = Math.min(min[axis], toNumber(bounds.min[axis]));\n max[axis] = Math.max(max[axis], toNumber(bounds.max[axis]));\n }\n }\n return count > 0 && min.every(Number.isFinite) && max.every(Number.isFinite) ? { min, max } : null;\n}\n\nfunction translationVector(THREE, value, fallback = null) {\n if (value?.isVector3) {\n return value;\n }\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return new THREE.Vector3(\n toNumber(value[0]),\n toNumber(value[1]),\n toNumber(value[2])\n );\n }\n return fallback;\n}\n\nfunction occurrenceSegments(partId) {\n const text = String(partId || \"\").trim();\n const match = text.match(/^o\\d+(?:\\.\\d+)*/i);\n return match ? match[0].split(\".\").filter(Boolean) : [];\n}\n\nfunction commonOccurrencePrefix(records = []) {\n const paths = records\n .map((record) => occurrenceSegments(record?.partId))\n .filter((segments) => segments.length > 1);\n if (!paths.length) {\n return [];\n }\n const prefix = [];\n const shortest = Math.min(...paths.map((segments) => segments.length));\n for (let index = 0; index < shortest; index += 1) {\n const value = paths[0][index];\n if (!paths.every((segments) => segments[index] === value)) {\n break;\n }\n prefix.push(value);\n }\n return prefix.length >= shortest ? prefix.slice(0, -1) : prefix;\n}\n\nexport function explodedViewGroupKey(partId, {\n depth = 1,\n commonPrefix = []\n} = {}) {\n const text = String(partId || \"\").trim();\n const segments = occurrenceSegments(text);\n if (!segments.length) {\n return text;\n }\n const safeDepth = Math.max(1, Math.min(Math.round(Number(depth)) || 1, MAX_EXPLODED_VIEW_DEPTH));\n const prefixLength = Math.min(commonPrefix.length, Math.max(segments.length - 1, 0));\n const groupLength = Math.min(segments.length, prefixLength + safeDepth);\n return segments.slice(0, groupLength).join(\".\") || text;\n}\n\nfunction recordCanExplode(record) {\n const partId = String(record?.partId || \"\").trim();\n return Boolean(record?.mesh && partId && partId !== \"__model__\");\n}\n\nfunction groupRecords(THREE, records, settings) {\n const commonPrefix = commonOccurrencePrefix(records);\n const groupsByKey = new Map();\n records.forEach((record, recordIndex) => {\n const groupKey = explodedViewGroupKey(record?.partId, {\n depth: settings.depth,\n commonPrefix\n }) || String(record?.partId || `part:${recordIndex}`);\n const bounds = record?.partBounds && Array.isArray(record.partBounds.min) && Array.isArray(record.partBounds.max)\n ? record.partBounds\n : null;\n const existing = groupsByKey.get(groupKey) || {\n key: groupKey,\n records: [],\n recordIndex,\n boundsList: []\n };\n existing.records.push(record);\n if (bounds) {\n existing.boundsList.push(bounds);\n }\n groupsByKey.set(groupKey, existing);\n });\n return [...groupsByKey.values()].map((group) => {\n const bounds = mergeBounds(group.boundsList) || group.records[0]?.partBounds || null;\n return {\n ...group,\n bounds,\n center: boundsCenter(THREE, bounds),\n radius: boundsRadius(THREE, bounds)\n };\n });\n}\n\nfunction createAxisVector(THREE, axis, direction) {\n const vector = new THREE.Vector3();\n vector.setComponent(AXIS_INDEX[axis] ?? 2, direction === \"negative\" ? -1 : 1);\n return vector;\n}\n\nfunction fallbackDirection(THREE, index, count) {\n const normalizedCount = Math.max(1, count);\n const y = normalizedCount > 1\n ? 1 - ((index + 0.5) / normalizedCount) * 2\n : 0;\n const radius = Math.sqrt(Math.max(0, 1 - y * y));\n const angle = index * GOLDEN_ANGLE;\n const vector = new THREE.Vector3(\n Math.cos(angle) * radius,\n Math.sin(angle) * radius,\n y\n );\n if (vector.lengthSq() <= EPSILON) {\n vector.set(1, 0, 0);\n }\n return vector.normalize();\n}\n\nfunction radialGroupDirection(THREE, group, modelCenter, index, count, direction) {\n const vector = group.center?.isVector3\n ? group.center.clone().sub(modelCenter)\n : new THREE.Vector3();\n if (vector.lengthSq() <= EPSILON) {\n vector.copy(fallbackDirection(THREE, index, count));\n } else {\n vector.normalize();\n }\n return direction === \"negative\" ? vector.multiplyScalar(-1) : vector;\n}\n\nfunction createRadialExplodedViewRecordStates(THREE, groups, bounds, settings) {\n const modelCenter = boundsCenter(THREE, bounds);\n const modelRadius = Math.max(boundsRadius(THREE, bounds), EPSILON);\n const modelMaxSize = Math.max(boundsMaxSize(bounds), EPSILON);\n const spacing = Math.max(toNumber(settings.spacing, 1.45), 0.25);\n const baseDistance = Math.max(modelRadius * 0.32 * spacing, modelRadius * 0.12);\n const states = [];\n const radialGroups = groups\n .filter((group) => group.records.length > 0 && group.bounds)\n .sort((left, right) => left.recordIndex - right.recordIndex);\n\n radialGroups.forEach((group, groupIndex) => {\n const direction = radialGroupDirection(\n THREE,\n group,\n modelCenter,\n groupIndex,\n radialGroups.length,\n settings.direction\n );\n const groupRadius = boundsRadius(THREE, group.bounds);\n const travel = baseDistance + Math.min(groupRadius * 0.18 * spacing, modelRadius * 0.2 * spacing);\n const translation = direction.clone().multiplyScalar(travel);\n for (const record of group.records) {\n states.push({\n record,\n partId: String(record.partId || \"\").trim(),\n groupKey: group.key,\n layerIndex: groupIndex,\n direction: direction.clone(),\n distance: travel,\n translation: translation.clone(),\n matrix: new THREE.Matrix4()\n });\n }\n });\n\n if (settings.keepBaseGrounded !== false) {\n const baseMin = Array.isArray(bounds?.min) || ArrayBuffer.isView(bounds?.min) ? bounds.min : null;\n const baseMinZ = baseMin ? toNumber(baseMin[2]) : null;\n const explodedBounds = mergeBounds(\n states.map((state) => shiftedBounds(state.record?.partBounds, state.translation.toArray(), 1))\n );\n const explodedMinZ = Array.isArray(explodedBounds?.min) ? toNumber(explodedBounds.min[2]) : null;\n if (\n Number.isFinite(baseMinZ) &&\n Number.isFinite(explodedMinZ) &&\n explodedMinZ < baseMinZ - EPSILON\n ) {\n const lift = Math.min(baseMinZ - explodedMinZ, modelMaxSize * spacing);\n for (const state of states) {\n state.translation.z += lift;\n state.distance = state.translation.length();\n state.direction = state.distance > EPSILON\n ? state.translation.clone().normalize()\n : state.direction;\n }\n }\n }\n\n return states;\n}\n\nexport function createExplodedViewRecordStates(THREE, records = [], bounds = null, options = {}) {\n if (!THREE?.Vector3 || !THREE?.Matrix4) {\n return [];\n }\n const settings = normalizeExplodedViewSettings(options);\n const radialAxis = settings.axis === \"radial\";\n const axisIndex = AXIS_INDEX[settings.axis] ?? 2;\n const explodableRecords = (Array.isArray(records) ? records : []).filter(recordCanExplode);\n if (explodableRecords.length < 2) {\n return [];\n }\n\n const modelRadius = Math.max(boundsRadius(THREE, bounds), EPSILON);\n const modelSpan = Math.max(boundsSize(bounds, axisIndex), EPSILON);\n const baseGroups = groupRecords(THREE, explodableRecords, settings)\n .filter((group) => group.records.length > 0 && group.bounds);\n if (baseGroups.length < 2) {\n return [];\n }\n if (radialAxis) {\n return createRadialExplodedViewRecordStates(THREE, baseGroups, bounds, settings);\n }\n\n const groups = baseGroups\n .sort((left, right) => {\n const leftCenter = toNumber(left.center?.getComponent?.(axisIndex));\n const rightCenter = toNumber(right.center?.getComponent?.(axisIndex));\n if (Math.abs(leftCenter - rightCenter) > EPSILON) {\n return leftCenter - rightCenter;\n }\n return left.recordIndex - right.recordIndex;\n });\n const maxGroupThickness = Math.max(\n ...groups.map((group) => boundsSize(group.bounds, axisIndex)),\n modelSpan * 0.08,\n EPSILON\n );\n const sortedThicknesses = groups\n .map((group) => boundsSize(group.bounds, axisIndex))\n .filter((value) => value > EPSILON)\n .sort((left, right) => left - right);\n const medianGroupThickness = sortedThicknesses.length\n ? sortedThicknesses[Math.floor(sortedThicknesses.length / 2)]\n : maxGroupThickness;\n const layerTolerance = Math.max(modelSpan * 0.025, maxGroupThickness * 0.18, EPSILON);\n const spacing = Math.max(toNumber(settings.spacing, 1.45), 0.25);\n const minimumGap = Math.max(modelSpan * 0.075, medianGroupThickness * 0.35, modelRadius * 0.035, EPSILON) * spacing;\n const axisVector = createAxisVector(THREE, settings.axis, settings.direction);\n\n const layers = [];\n for (const group of groups) {\n const groupCenter = toNumber(group.center.getComponent(axisIndex));\n const previousLayer = layers[layers.length - 1];\n if (settings.mergeCoplanar === true && previousLayer && Math.abs(groupCenter - previousLayer.center) <= layerTolerance) {\n previousLayer.groups.push(group);\n previousLayer.bounds = mergeBounds([previousLayer.bounds, group.bounds]) || previousLayer.bounds;\n previousLayer.center = (previousLayer.center * (previousLayer.groups.length - 1) + groupCenter) / previousLayer.groups.length;\n } else {\n layers.push({\n center: groupCenter,\n bounds: group.bounds,\n groups: [group]\n });\n }\n }\n\n const layerGap = (previousLayer, layer) => {\n const previousThickness = previousLayer ? boundsSize(previousLayer.bounds, axisIndex) : medianGroupThickness;\n const currentThickness = layer ? boundsSize(layer.bounds, axisIndex) : medianGroupThickness;\n return Math.max(minimumGap, Math.min(previousThickness, currentThickness) * 0.22 * spacing);\n };\n\n let previousMax = null;\n let previousLayer = null;\n const states = [];\n layers.forEach((layer, layerIndex) => {\n const layerMin = toNumber(layer.bounds.min[axisIndex]);\n const layerMax = toNumber(layer.bounds.max[axisIndex]);\n let axisDistance = 0;\n if (settings.keepBaseGrounded !== false && layerIndex === 0) {\n axisDistance = 0;\n previousMax = layerMax;\n } else {\n const targetMin = previousMax === null ? layerMin : previousMax + layerGap(previousLayer, layer);\n axisDistance = Math.max(0, targetMin - layerMin);\n previousMax = layerMax + axisDistance;\n }\n previousLayer = layer;\n\n for (const group of layer.groups) {\n const translation = axisVector.clone().multiplyScalar(axisDistance);\n for (const record of group.records) {\n states.push({\n record,\n partId: String(record.partId || \"\").trim(),\n groupKey: group.key,\n layerIndex,\n direction: translation.lengthSq() > EPSILON ? translation.clone().normalize() : axisVector.clone(),\n distance: translation.length(),\n translation,\n matrix: new THREE.Matrix4()\n });\n }\n }\n });\n return states;\n}\n\nexport function explodedViewStateTranslationAtProgress(THREE, state, progress = 0) {\n if (!THREE?.Vector3) {\n return null;\n }\n const amount = clamp(toNumber(progress), 0, 1);\n const targetTranslation = translationVector(\n THREE,\n state?.toTranslation,\n translationVector(\n THREE,\n state?.translation,\n new THREE.Vector3(0, 0, toNumber(state?.distance))\n )\n );\n const fromTranslation = translationVector(THREE, state?.fromTranslation, null);\n if (!fromTranslation && amount <= EPSILON) {\n return null;\n }\n const x = fromTranslation\n ? fromTranslation.x + (targetTranslation.x - fromTranslation.x) * amount\n : targetTranslation.x * amount;\n const y = fromTranslation\n ? fromTranslation.y + (targetTranslation.y - fromTranslation.y) * amount\n : targetTranslation.y * amount;\n const z = fromTranslation\n ? fromTranslation.z + (targetTranslation.z - fromTranslation.z) * amount\n : targetTranslation.z * amount;\n if (\n fromTranslation &&\n Math.abs(x) <= EPSILON &&\n Math.abs(y) <= EPSILON &&\n Math.abs(z) <= EPSILON\n ) {\n return null;\n }\n return new THREE.Vector3(x, y, z);\n}\n\nexport function applyExplodedViewProgress(THREE, states = [], progress = 0) {\n for (const state of Array.isArray(states) ? states : []) {\n const record = state?.record;\n if (!record) {\n continue;\n }\n const translation = explodedViewStateTranslationAtProgress(THREE, state, progress);\n if (!translation) {\n record.explodedViewMatrix = null;\n continue;\n }\n const matrix = state.matrix instanceof THREE.Matrix4 ? state.matrix : new THREE.Matrix4();\n matrix.makeTranslation(translation.x, translation.y, translation.z);\n state.matrix = matrix;\n record.explodedViewMatrix = matrix;\n }\n}\n\nexport function clearExplodedViewRecords(records = []) {\n for (const record of Array.isArray(records) ? records : []) {\n if (record) {\n record.explodedViewMatrix = null;\n }\n }\n}\n\nexport function explodedViewBoundsFromStates(THREE, states = [], fallbackBounds = null, progress = 1) {\n if (!THREE?.Vector3) {\n return fallbackBounds;\n }\n const amount = clamp(toNumber(progress), 0, 1);\n const boundsList = (Array.isArray(states) ? states : [])\n .map((state) => shiftedBounds(state?.record?.partBounds, state?.translation?.toArray?.() || [0, 0, 0], amount));\n return mergeBounds(boundsList) || fallbackBounds;\n}\n\nexport function easeExplodedViewProgress(value) {\n const amount = clamp(toNumber(value), 0, 1);\n return 1 - (1 - amount) ** 3;\n}\n","import {\n normalizeThemeSettings,\n resolveThemeFillColor\n} from \"./themeSettings.js\";\nimport {\n CAD_DISPLAY_MODE,\n displayModeAllowsEdges,\n displayModeForcesEdges,\n displayModeIsWireframe,\n displayModeShowsThroughEdges,\n displayModeSurfaceOpacity,\n normalizeDisplayEdgeSettings,\n displayModeUsesUnlitSurfaces,\n normalizeDisplayMode\n} from \"./displaySettings.js\";\nimport {\n createDisplayEdgeObject,\n syncScreenSpaceLineMaterialResolution\n} from \"./renderEdges.js\";\nimport { resolveStepModuleFeatures } from \"./stepModule.js\";\nimport {\n applyStepModuleEffectsToRecords,\n buildPartTransformMatrix,\n buildStepModuleContext,\n createStepModuleEffectsApi,\n displayTransformForPart\n} from \"./stepModuleEffects.js\";\nimport {\n applyDisplayRecordTransform\n} from \"./displayRecordTransform.js\";\nimport { axisIndex, normalizeStepClipSettings } from \"../lib/viewer/clipPlane.js\";\nimport {\n clampSceneModelRadius,\n getSceneScaleSettings,\n normalizeSceneScaleMode,\n VIEWER_SCENE_SCALE\n} from \"../lib/viewer/sceneScale.js\";\n\nexport { CAD_DISPLAY_MODE, normalizeDisplayMode };\nexport { applyDisplayRecordTransform } from \"./displayRecordTransform.js\";\n\nexport const CAD_SCENE_SCALE = VIEWER_SCENE_SCALE;\n\nconst CAD_EDGE_OPACITY = 0.84;\nconst CAD_EDGE_THRESHOLD_DEG = 16;\nconst REFERENCE_HOVER_COLOR = \"#8dc5ff\";\nconst REFERENCE_SELECTED_COLOR = \"#4f9dff\";\nconst PART_HOVER_OPACITY_BOOST = 0.08;\nconst PART_SELECTED_OPACITY_BOOST = 0.12;\nconst PART_HIGHLIGHT_SURFACE_RENDER_ORDER = 23;\nconst PART_HIGHLIGHT_EDGE_RENDER_ORDER = 26;\nconst FOCUSED_DIMMED_SURFACE_OPACITY = 0.035;\nconst HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\nconst MODEL_PART_ID = \"__model__\";\nconst DEFAULT_THEME = Object.freeze({\n surface: \"#f4f4f5\",\n surfaceRoughness: 0.92,\n surfaceMetalness: 0.03,\n surfaceClearcoat: 0,\n surfaceClearcoatRoughness: 0.6,\n edge: \"#18181b\",\n edgeThickness: 1,\n edgeOpacity: CAD_EDGE_OPACITY\n});\nconst SURFACE_EDGE_BARYCENTRIC_ATTRIBUTE = \"_cad_edge_barycentric\";\nconst SURFACE_EDGE_CLASS_ATTRIBUTE = \"_cad_edge_class\";\nconst SURFACE_EDGE_CLASS_IDS = Object.freeze([\"feature\", \"tangent\", \"seam\", \"degenerate\"]);\nconst SURFACE_EDGE_CLASS_DEFAULTS = Object.freeze({\n feature: Object.freeze({ color: \"#132232\", thickness: 1.15, opacity: 1 }),\n tangent: Object.freeze({ color: \"#132232\", thickness: 1.15, opacity: 0.5 }),\n seam: Object.freeze({ color: \"#132232\", thickness: 1.15, opacity: 0.85 }),\n degenerate: Object.freeze({ color: \"#132232\", thickness: 0, opacity: 1 })\n});\n\nconst meshGeometryCache = new WeakMap();\n\nfunction cacheOwnerForMeshData(meshData) {\n const geometrySource = meshData?.geometrySource;\n return geometrySource && typeof geometrySource === \"object\" ? geometrySource : meshData;\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction toNumber(value, fallback = 0) {\n return Number.isFinite(Number(value)) ? Number(value) : fallback;\n}\n\nfunction toArray(value) {\n return Array.isArray(value) ? value : [];\n}\n\nfunction isNumericArray(value, stride = 1) {\n return (\n (Array.isArray(value) || ArrayBuffer.isView(value)) &&\n value.length >= stride &&\n value.length % stride === 0\n );\n}\n\nfunction normalizeBoolean(value, fallback = false) {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nexport function normalizeCadSceneScale(value) {\n return normalizeSceneScaleMode(value);\n}\n\nexport function boundsFromVertices(vertices) {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n for (let index = 0; index + 2 < (vertices?.length || 0); index += 3) {\n const x = Number(vertices[index]);\n const y = Number(vertices[index + 1]);\n const z = Number(vertices[index + 2]);\n if (![x, y, z].every(Number.isFinite)) {\n continue;\n }\n min[0] = Math.min(min[0], x);\n min[1] = Math.min(min[1], y);\n min[2] = Math.min(min[2], z);\n max[0] = Math.max(max[0], x);\n max[1] = Math.max(max[1], y);\n max[2] = Math.max(max[2], z);\n }\n if (!min.every(Number.isFinite) || !max.every(Number.isFinite)) {\n return { min: [0, 0, 0], max: [1, 1, 1] };\n }\n return { min, max };\n}\n\nexport function centerAndRadiusFromBounds(THREE, bounds, scale = CAD_SCENE_SCALE.CAD) {\n const sceneScale = normalizeCadSceneScale(scale);\n const settings = getSceneScaleSettings(sceneScale);\n const min = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const max = Array.isArray(bounds?.max) ? bounds.max : [1, 1, 1];\n const center = new THREE.Vector3(\n (toNumber(min[0]) + toNumber(max[0], 1)) / 2,\n (toNumber(min[1]) + toNumber(max[1], 1)) / 2,\n (toNumber(min[2]) + toNumber(max[2], 1)) / 2\n );\n const size = new THREE.Vector3(\n Math.max(toNumber(max[0], 1) - toNumber(min[0]), settings.minModelRadius),\n Math.max(toNumber(max[1], 1) - toNumber(min[1]), settings.minModelRadius),\n Math.max(toNumber(max[2], 1) - toNumber(min[2]), settings.minModelRadius)\n );\n return {\n center,\n size,\n radius: clampSceneModelRadius(size.length() / 2, sceneScale)\n };\n}\n\nfunction cacheForMeshData(meshData) {\n const cacheOwner = cacheOwnerForMeshData(meshData);\n let cache = meshGeometryCache.get(cacheOwner);\n if (!cache) {\n cache = {\n whole: new Map(),\n part: new Map(),\n edge: new Map()\n };\n meshGeometryCache.set(cacheOwner, cache);\n }\n return cache;\n}\n\nfunction cacheKey(parts) {\n return parts.map((part, index) => String(part?.id || part?.occurrenceId || `part:${index}`)).join(\"|\");\n}\n\nfunction markCachedGeometry(geometry) {\n if (geometry) {\n geometry.userData = {\n ...(geometry.userData || {}),\n cadSceneCachedGeometry: true\n };\n }\n return geometry;\n}\n\nfunction disposeMaterial(material) {\n const materials = Array.isArray(material) ? material : [material];\n for (const item of materials) {\n item?.map?.dispose?.();\n item?.alphaMap?.dispose?.();\n item?.dispose?.();\n }\n}\n\nfunction disposeSceneObject(object, { disposeCachedGeometry = false } = {}) {\n if (!object) {\n return;\n }\n while (object.children?.length) {\n disposeSceneObject(object.children[0], { disposeCachedGeometry });\n }\n object.parent?.remove(object);\n if (typeof object.userData?.beforeDispose === \"function\") {\n object.userData.beforeDispose(object);\n delete object.userData.beforeDispose;\n }\n if (disposeCachedGeometry || object.geometry?.userData?.cadSceneCachedGeometry !== true) {\n object.geometry?.dispose?.();\n }\n disposeMaterial(object.material);\n}\n\nfunction clearGroup(group, options = {}) {\n while (group?.children?.length) {\n disposeSceneObject(group.children[0], options);\n }\n}\n\nfunction applyGeometryNormals(THREE, geometry, normals, recomputeNormals) {\n const hasNormals = isNumericArray(normals, 3);\n if (!recomputeNormals && hasNormals) {\n geometry.setAttribute(\"normal\", new THREE.BufferAttribute(new Float32Array(normals), 3));\n return;\n }\n geometry.computeVertexNormals();\n}\n\nfunction setSurfaceEdgeAttributes(THREE, geometry, meshData, vertexOffset = 0, vertexCount = 0) {\n const barycentric = meshData?.surfaceEdgeBarycentric;\n const edgeClass = meshData?.surfaceEdgeClass;\n const componentOffset = Math.max(0, Math.floor(Number(vertexOffset) || 0)) * 3;\n const componentCount = Math.max(0, Math.floor(Number(vertexCount) || 0)) * 3;\n if (\n !(barycentric instanceof Float32Array) ||\n !(edgeClass instanceof Uint8Array) ||\n componentCount <= 0 ||\n barycentric.length < componentOffset + componentCount ||\n edgeClass.length < componentOffset + componentCount\n ) {\n return;\n }\n geometry.setAttribute(\n SURFACE_EDGE_BARYCENTRIC_ATTRIBUTE,\n new THREE.BufferAttribute(barycentric.slice(componentOffset, componentOffset + componentCount), 3)\n );\n geometry.setAttribute(\n SURFACE_EDGE_CLASS_ATTRIBUTE,\n new THREE.BufferAttribute(edgeClass.slice(componentOffset, componentOffset + componentCount), 3)\n );\n}\n\nfunction geometryHasSurfaceEdgeAttributes(geometry) {\n const barycentric = geometry?.getAttribute?.(SURFACE_EDGE_BARYCENTRIC_ATTRIBUTE);\n const edgeClass = geometry?.getAttribute?.(SURFACE_EDGE_CLASS_ATTRIBUTE);\n return Boolean(\n barycentric?.itemSize === 3 &&\n edgeClass?.itemSize === 3 &&\n barycentric.count > 0 &&\n barycentric.count === edgeClass.count\n );\n}\n\nfunction readSourceColor(THREE, value) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return null;\n }\n const expanded = normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`\n : normalized;\n return new THREE.Color(expanded);\n}\n\nfunction shapeSourceColor(THREE, sourceColor, materialSettings = {}, { applyTint = true } = {}) {\n const shaped = (sourceColor || new THREE.Color(\"#ffffff\")).clone();\n const tintStrength = clamp(Number(materialSettings.tintStrength) || 0, 0, 1);\n if (applyTint && tintStrength > 0) {\n const tintColor = new THREE.Color(materialSettings.defaultColor || materialSettings.tintColor || \"#ffffff\");\n if (materialSettings.tintMode === \"blend\") {\n shaped.lerp(tintColor, tintStrength);\n } else {\n shaped.lerp(shaped.clone().multiply(tintColor), tintStrength);\n }\n }\n\n const saturation = clamp(Number(materialSettings.saturation) || 1, 0, 2.5);\n if (Math.abs(saturation - 1) > 1e-4) {\n const hsl = {};\n shaped.getHSL(hsl);\n shaped.setHSL(hsl.h, clamp(hsl.s * saturation, 0, 1), hsl.l);\n }\n\n const contrast = clamp(Number(materialSettings.contrast) || 1, 0, 2.5);\n const brightness = clamp(Number(materialSettings.brightness) || 1, 0, 2);\n shaped.r = clamp(((shaped.r - 0.5) * contrast + 0.5) * brightness, 0, 1);\n shaped.g = clamp(((shaped.g - 0.5) * contrast + 0.5) * brightness, 0, 1);\n shaped.b = clamp(((shaped.b - 0.5) * contrast + 0.5) * brightness, 0, 1);\n return shaped;\n}\n\nfunction shapeSourceColorBuffer(THREE, colors, materialSettings = {}) {\n if (!isNumericArray(colors, 3)) {\n return null;\n }\n const shapedColors = new Float32Array(colors.length);\n const color = new THREE.Color();\n for (let index = 0; index + 2 < colors.length; index += 3) {\n color.setRGB(\n clamp(Number(colors[index]) || 0, 0, 1),\n clamp(Number(colors[index + 1]) || 0, 0, 1),\n clamp(Number(colors[index + 2]) || 0, 0, 1)\n );\n const shaped = shapeSourceColor(THREE, color, materialSettings);\n shapedColors[index] = shaped.r;\n shapedColors[index + 1] = shaped.g;\n shapedColors[index + 2] = shaped.b;\n }\n return shapedColors;\n}\n\nfunction shouldUseDisplayVertexColors(meshData) {\n return !!meshData?.has_source_colors && isNumericArray(meshData?.colors, 3);\n}\n\nfunction partUsesDisplayVertexColors(meshData, part) {\n if (!shouldUseDisplayVertexColors(meshData)) {\n return false;\n }\n if (part && Object.hasOwn(part, \"hasSourceColors\")) {\n return !!part.hasSourceColors;\n }\n return true;\n}\n\nfunction createMaterialFillColor(THREE, materialSettings = {}, fillIndex = 0) {\n return new THREE.Color(resolveThemeFillColor(materialSettings, fillIndex));\n}\n\nfunction resolveMaterialFillBaseColor(THREE, materialSettings = {}, fillIndex = 0) {\n return shapeSourceColor(\n THREE,\n createMaterialFillColor(THREE, materialSettings, fillIndex),\n materialSettings,\n { applyTint: false }\n );\n}\n\nfunction resolveSourceBaseColor(THREE, {\n hasVertexColors = false,\n sourceColor = null,\n materialSettings,\n fallbackColor = \"#ffffff\",\n fillIndex = 0,\n forceFill = false\n}) {\n if (forceFill) {\n return resolveMaterialFillBaseColor(THREE, materialSettings, fillIndex);\n }\n if (hasVertexColors) {\n return new THREE.Color(\"#ffffff\");\n }\n if (!sourceColor) {\n return resolveMaterialFillBaseColor(THREE, {\n ...materialSettings,\n defaultColor: fallbackColor || materialSettings?.defaultColor\n }, fillIndex);\n }\n return shapeSourceColor(THREE, sourceColor, materialSettings);\n}\n\nfunction surfaceEdgeClassSetting(edgeSettings = {}, classId, fallbackColor = \"#132232\") {\n const fallback = SURFACE_EDGE_CLASS_DEFAULTS[classId] || SURFACE_EDGE_CLASS_DEFAULTS.feature;\n const source = edgeSettings?.classes?.[classId] || {};\n return {\n color: source.color || fallbackColor || fallback.color,\n thickness: clamp(\n Number.isFinite(Number(source.thickness)) ? Number(source.thickness) : fallback.thickness,\n 0,\n 6\n ),\n opacity: clamp(\n Number.isFinite(Number(source.opacity)) ? Number(source.opacity) : fallback.opacity,\n 0,\n 1\n )\n };\n}\n\nfunction addCadSurfaceEdgeShader(THREE, material, edgeSettings = {}, baseTheme = DEFAULT_THEME) {\n const baseEdgeColor = edgeSettings?.color || baseTheme?.edge || DEFAULT_THEME.edge;\n const classSettings = Object.fromEntries(\n SURFACE_EDGE_CLASS_IDS.map((classId) => [classId, surfaceEdgeClassSetting(edgeSettings, classId, baseEdgeColor)])\n );\n const edgeColor = new THREE.Color(baseEdgeColor);\n const classColors = Object.fromEntries(\n Object.entries(classSettings).map(([classId, setting]) => [\n classId,\n readSourceColor(THREE, setting.color) || edgeColor.clone()\n ])\n );\n material.userData.cadSurfaceEdges = true;\n material.userData.cadSurfaceEdgeBaseColor = edgeColor.clone();\n material.userData.cadSurfaceEdgeColor = edgeColor.clone();\n material.userData.cadSurfaceEdgeBaseClassSettings = Object.fromEntries(\n Object.entries(classSettings).map(([classId, setting]) => [classId, { ...setting }])\n );\n material.extensions = {\n ...(material.extensions || {}),\n derivatives: true\n };\n material.onBeforeCompile = (shader) => {\n const activeEdgeColor = material.userData.cadSurfaceEdgeColor?.isColor\n ? material.userData.cadSurfaceEdgeColor\n : edgeColor;\n material.userData.cadSurfaceEdgeShader = shader;\n shader.uniforms.cadSurfaceEdgeColor = { value: activeEdgeColor.clone() };\n shader.uniforms.cadSurfaceFeatureColor = { value: classColors.feature.clone() };\n shader.uniforms.cadSurfaceTangentColor = { value: classColors.tangent.clone() };\n shader.uniforms.cadSurfaceSeamColor = { value: classColors.seam.clone() };\n shader.uniforms.cadSurfaceDegenerateColor = { value: classColors.degenerate.clone() };\n shader.uniforms.cadSurfaceFeatureThickness = { value: classSettings.feature.thickness };\n shader.uniforms.cadSurfaceTangentThickness = { value: classSettings.tangent.thickness };\n shader.uniforms.cadSurfaceSeamThickness = { value: classSettings.seam.thickness };\n shader.uniforms.cadSurfaceDegenerateThickness = { value: classSettings.degenerate.thickness };\n shader.uniforms.cadSurfaceFeatureOpacity = { value: classSettings.feature.opacity };\n shader.uniforms.cadSurfaceTangentOpacity = { value: classSettings.tangent.opacity };\n shader.uniforms.cadSurfaceSeamOpacity = { value: classSettings.seam.opacity };\n shader.uniforms.cadSurfaceDegenerateOpacity = { value: classSettings.degenerate.opacity };\n shader.vertexShader = shader.vertexShader\n .replace(\n \"#include \",\n `#include \nattribute vec3 ${SURFACE_EDGE_BARYCENTRIC_ATTRIBUTE};\nattribute vec3 ${SURFACE_EDGE_CLASS_ATTRIBUTE};\nvarying vec3 vCadSurfaceEdgeBarycentric;\nvarying vec3 vCadSurfaceEdgeClass;`\n )\n .replace(\n \"#include \",\n `#include \nvCadSurfaceEdgeBarycentric = ${SURFACE_EDGE_BARYCENTRIC_ATTRIBUTE};\nvCadSurfaceEdgeClass = ${SURFACE_EDGE_CLASS_ATTRIBUTE};`\n );\n shader.fragmentShader = shader.fragmentShader\n .replace(\n \"#include \",\n `#include \nuniform vec3 cadSurfaceEdgeColor;\nuniform vec3 cadSurfaceFeatureColor;\nuniform vec3 cadSurfaceTangentColor;\nuniform vec3 cadSurfaceSeamColor;\nuniform vec3 cadSurfaceDegenerateColor;\nuniform float cadSurfaceFeatureThickness;\nuniform float cadSurfaceTangentThickness;\nuniform float cadSurfaceSeamThickness;\nuniform float cadSurfaceDegenerateThickness;\nuniform float cadSurfaceFeatureOpacity;\nuniform float cadSurfaceTangentOpacity;\nuniform float cadSurfaceSeamOpacity;\nuniform float cadSurfaceDegenerateOpacity;\nvarying vec3 vCadSurfaceEdgeBarycentric;\nvarying vec3 vCadSurfaceEdgeClass;\n\nfloat cadSurfaceEdgeThicknessFor(float classCode) {\n if (classCode < 0.5) {\n return 0.0;\n }\n if (abs(classCode - 2.0) < 0.5) {\n return cadSurfaceTangentThickness;\n }\n if (abs(classCode - 3.0) < 0.5) {\n return cadSurfaceSeamThickness;\n }\n if (abs(classCode - 4.0) < 0.5) {\n return cadSurfaceDegenerateThickness;\n }\n return cadSurfaceFeatureThickness;\n}\n\nfloat cadSurfaceEdgeOpacityFor(float classCode) {\n if (classCode < 0.5) {\n return 0.0;\n }\n if (abs(classCode - 2.0) < 0.5) {\n return cadSurfaceTangentOpacity;\n }\n if (abs(classCode - 3.0) < 0.5) {\n return cadSurfaceSeamOpacity;\n }\n if (abs(classCode - 4.0) < 0.5) {\n return cadSurfaceDegenerateOpacity;\n }\n return cadSurfaceFeatureOpacity;\n}\n\nvec3 cadSurfaceEdgeColorFor(float classCode) {\n if (classCode < 0.5) {\n return cadSurfaceEdgeColor;\n }\n if (abs(classCode - 2.0) < 0.5) {\n return cadSurfaceTangentColor;\n }\n if (abs(classCode - 3.0) < 0.5) {\n return cadSurfaceSeamColor;\n }\n if (abs(classCode - 4.0) < 0.5) {\n return cadSurfaceDegenerateColor;\n }\n return cadSurfaceFeatureColor;\n}\n\nfloat cadSurfaceEdgeCoverage(float barycentric, float classCode) {\n float thickness = cadSurfaceEdgeThicknessFor(classCode);\n float opacity = cadSurfaceEdgeOpacityFor(classCode);\n if (thickness <= 0.0 || opacity <= 0.0) {\n return 0.0;\n }\n float pixelDistance = barycentric / max(fwidth(barycentric), 1e-6);\n float halfWidth = max(thickness * 0.5, 0.001);\n float coverage = 1.0 - smoothstep(max(halfWidth - 0.75, 0.0), halfWidth + 0.75, pixelDistance);\n return clamp(coverage * opacity, 0.0, 1.0);\n}\n\nvec4 cadSurfaceEdgeLayerFor(float barycentric, float classCode) {\n float edgeAlpha = cadSurfaceEdgeCoverage(barycentric, classCode);\n return vec4(cadSurfaceEdgeColorFor(classCode), edgeAlpha);\n}\n\nvec4 cadSurfaceEdgeLayer() {\n vec4 edge0 = cadSurfaceEdgeLayerFor(vCadSurfaceEdgeBarycentric.x, vCadSurfaceEdgeClass.x);\n vec4 edge1 = cadSurfaceEdgeLayerFor(vCadSurfaceEdgeBarycentric.y, vCadSurfaceEdgeClass.y);\n vec4 edge2 = cadSurfaceEdgeLayerFor(vCadSurfaceEdgeBarycentric.z, vCadSurfaceEdgeClass.z);\n vec4 edge = edge0;\n if (edge1.a > edge.a) {\n edge = edge1;\n }\n if (edge2.a > edge.a) {\n edge = edge2;\n }\n return edge;\n}`\n )\n .replace(\n \"#include \",\n `vec4 cadSurfaceEdgeMix = cadSurfaceEdgeLayer();\nif (cadSurfaceEdgeMix.a > 0.0) {\n outgoingLight = mix(outgoingLight, cadSurfaceEdgeMix.rgb, cadSurfaceEdgeMix.a);\n}\n#include `\n );\n };\n material.customProgramCacheKey = () => \"cad-surface-edges-v2\";\n}\n\nfunction createSurfaceMaterial(THREE, baseTheme, { color, useVertexColors = false, edgeSettings = null } = {}) {\n const opacity = Number.isFinite(Number(baseTheme?.surfaceOpacity))\n ? Number(baseTheme.surfaceOpacity)\n : 1;\n const material = new THREE.MeshPhysicalMaterial({\n color: color || baseTheme?.surface || DEFAULT_THEME.surface,\n roughness: Number.isFinite(Number(baseTheme?.surfaceRoughness)) ? Number(baseTheme.surfaceRoughness) : DEFAULT_THEME.surfaceRoughness,\n metalness: Number.isFinite(Number(baseTheme?.surfaceMetalness)) ? Number(baseTheme.surfaceMetalness) : DEFAULT_THEME.surfaceMetalness,\n clearcoat: Number.isFinite(Number(baseTheme?.surfaceClearcoat)) ? Number(baseTheme.surfaceClearcoat) : DEFAULT_THEME.surfaceClearcoat,\n clearcoatRoughness: Number.isFinite(Number(baseTheme?.surfaceClearcoatRoughness)) ? Number(baseTheme.surfaceClearcoatRoughness) : DEFAULT_THEME.surfaceClearcoatRoughness,\n side: THREE.DoubleSide,\n vertexColors: useVertexColors,\n transparent: opacity < 0.999,\n opacity,\n emissive: 0x000000,\n emissiveIntensity: 0,\n polygonOffset: false,\n polygonOffsetFactor: 0,\n polygonOffsetUnits: 0\n });\n if (edgeSettings?.enabled) {\n addCadSurfaceEdgeShader(THREE, material, edgeSettings, baseTheme);\n }\n return material;\n}\n\nfunction createWireframeSurfaceMaterial(THREE, materialSettings, fillIndex = 0) {\n return new THREE.MeshBasicMaterial({\n color: resolveThemeFillColor(materialSettings || {}, fillIndex),\n transparent: true,\n opacity: 0.035,\n depthWrite: false\n });\n}\n\nfunction createUnshadedSurfaceMaterial(THREE, { color, useVertexColors = false, opacity = 1 } = {}) {\n return new THREE.MeshBasicMaterial({\n color: color || DEFAULT_THEME.surface,\n side: THREE.DoubleSide,\n vertexColors: useVertexColors,\n transparent: opacity < 0.999,\n opacity,\n depthWrite: opacity >= 0.999\n });\n}\n\nfunction sourceColorForPart(THREE, part, meshData) {\n return readSourceColor(THREE, part?.color || meshData?.sourceColor);\n}\n\nfunction sourceOpacityForPart(part, fallback = 1) {\n const opacity = Number(part?.opacity);\n return Number.isFinite(opacity) ? clamp(opacity, 0, 1) : fallback;\n}\n\nfunction meshUsesPartSourceColors(meshData, parts) {\n const renderableParts = Array.isArray(parts) ? parts : [];\n const partColors = renderableParts\n .map((part) => String(part?.color || \"\").trim().toLowerCase())\n .filter(Boolean);\n if (!partColors.length) {\n return false;\n }\n return partColors.length !== renderableParts.length || new Set(partColors).size > 1;\n}\n\nfunction meshUsesPartSourceOpacity(parts) {\n const renderableParts = Array.isArray(parts) ? parts : [];\n return renderableParts.some((part) => {\n const opacity = Number(part?.opacity);\n return Number.isFinite(opacity) && clamp(opacity, 0, 1) < 0.999;\n });\n}\n\nfunction emptyLineGeometry(THREE) {\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(0), 3));\n return geometry;\n}\n\nfunction stablePartFillKey(part, index) {\n return [\n String(part?.occurrenceId || \"\"),\n String(part?.id || \"\"),\n String(part?.partSourcePath || part?.sourcePath || \"\"),\n String(part?.label || part?.name || \"\"),\n String(index).padStart(8, \"0\")\n ].join(\"\\u0000\");\n}\n\nexport function buildPartFillIndexMap(parts = []) {\n return new Map(\n [...parts]\n .map((part, index) => ({ part, key: stablePartFillKey(part, index) }))\n .sort((left, right) => left.key.localeCompare(right.key))\n .map(({ part }, index) => [part, index])\n );\n}\n\nfunction geometryCacheEntry(THREE, meshData, key, createGeometry) {\n const cache = cacheForMeshData(meshData);\n const cached = cache.part.get(key) || cache.whole.get(key);\n if (cached) {\n return cached;\n }\n const entry = createGeometry();\n if (!entry?.geometry) {\n return null;\n }\n markCachedGeometry(entry.geometry);\n if (key === MODEL_PART_ID) {\n cache.whole.set(key, entry);\n } else {\n cache.part.set(key, entry);\n }\n return entry;\n}\n\nfunction buildPartGeometryEntry(THREE, meshData, part, recomputeNormals = false) {\n const partId = String(part?.id || part?.occurrenceId || \"\").trim();\n const sourceMesh = part?.sourceMesh && typeof part.sourceMesh === \"object\" ? part.sourceMesh : null;\n const sourceMeshColorMode = sourceMesh && part?.hasSourceColors ? \"source-colors\" : \"flat\";\n const sourceMeshKey = sourceMesh\n ? `source:${String(part?.sourceMeshKey || part?.meshUrl || part?.partFileRef || partId || \"\").trim()}:${sourceMeshColorMode}`\n : \"\";\n const key = sourceMeshKey || partId || `${toNumber(part?.vertexOffset)}:${toNumber(part?.triangleOffset)}`;\n return geometryCacheEntry(THREE, meshData, key, () => {\n const vertexOffset = sourceMesh ? 0 : toNumber(part?.vertexOffset, 0);\n const vertexCount = sourceMesh\n ? Math.floor((sourceMesh.vertices?.length || 0) / 3)\n : toNumber(part?.vertexCount, 0);\n const triangleOffset = sourceMesh ? 0 : toNumber(part?.triangleOffset, 0);\n const triangleCount = sourceMesh\n ? Math.floor((sourceMesh.indices?.length || 0) / 3)\n : toNumber(part?.triangleCount, 0);\n if (vertexCount <= 0 || triangleCount <= 0) {\n return null;\n }\n\n let localVertices;\n let rawColors;\n let localNormals;\n let localIndices;\n\n if (sourceMesh) {\n localVertices = sourceMesh.vertices || new Float32Array(0);\n rawColors = part?.hasSourceColors &&\n isNumericArray(sourceMesh.colors, 3) &&\n sourceMesh.colors.length === localVertices.length\n ? new Float32Array(sourceMesh.colors)\n : null;\n localNormals = isNumericArray(sourceMesh.normals, 3) ? sourceMesh.normals : null;\n localIndices = sourceMesh.indices || new Uint32Array(0);\n } else {\n const positionStart = vertexOffset * 3;\n const positionEnd = positionStart + vertexCount * 3;\n localVertices = meshData.vertices.slice(positionStart, positionEnd);\n rawColors = partUsesDisplayVertexColors(meshData, part)\n ? new Float32Array(meshData.colors.slice(positionStart, positionEnd))\n : null;\n localNormals = isNumericArray(meshData.normals, 3) ? meshData.normals.slice(positionStart, positionEnd) : null;\n const rawIndices = meshData.indices.slice(triangleOffset * 3, triangleOffset * 3 + triangleCount * 3);\n localIndices = new Uint32Array(rawIndices.length);\n for (let index = 0; index < rawIndices.length; index += 1) {\n localIndices[index] = Math.max(0, Number(rawIndices[index]) - vertexOffset);\n }\n }\n if (!localIndices.length) {\n return null;\n }\n\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\n \"position\",\n new THREE.BufferAttribute(localVertices instanceof Float32Array ? localVertices : new Float32Array(localVertices), 3)\n );\n geometry.setIndex(new THREE.BufferAttribute(localIndices instanceof Uint32Array ? localIndices : new Uint32Array(localIndices), 1));\n if (rawColors && rawColors.length === localVertices.length) {\n geometry.setAttribute(\n \"color\",\n new THREE.BufferAttribute(new Float32Array(rawColors), 3)\n );\n }\n if (!sourceMesh) {\n setSurfaceEdgeAttributes(THREE, geometry, meshData, vertexOffset, vertexCount);\n }\n applyGeometryNormals(THREE, geometry, localNormals, recomputeNormals);\n geometry.computeBoundingSphere();\n return {\n geometry,\n rawColors\n };\n });\n}\n\nfunction buildWholeGeometryEntry(THREE, meshData, recomputeNormals = false) {\n return geometryCacheEntry(THREE, meshData, MODEL_PART_ID, () => {\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(new Float32Array(meshData.vertices || []), 3));\n geometry.setIndex(new THREE.BufferAttribute(new Uint32Array(meshData.indices || []), 1));\n const rawColors = shouldUseDisplayVertexColors(meshData) && meshData.colors?.length === meshData.vertices?.length\n ? new Float32Array(meshData.colors)\n : null;\n if (rawColors) {\n geometry.setAttribute(\"color\", new THREE.BufferAttribute(new Float32Array(rawColors), 3));\n }\n setSurfaceEdgeAttributes(THREE, geometry, meshData, 0, Math.floor((meshData.vertices?.length || 0) / 3));\n applyGeometryNormals(THREE, geometry, meshData.normals, recomputeNormals);\n geometry.computeBoundingSphere();\n return {\n geometry,\n rawColors\n };\n });\n}\n\nfunction syncRecordVertexColors(THREE, record, materialSettings) {\n if (!record?.geometry || !record.rawColors || !record.hasVertexColors) {\n return;\n }\n const shapedColors = shapeSourceColorBuffer(THREE, record.rawColors, materialSettings);\n if (!shapedColors) {\n return;\n }\n const attribute = record.geometry.getAttribute(\"color\");\n if (attribute?.array?.length === shapedColors.length) {\n attribute.array.set(shapedColors);\n attribute.needsUpdate = true;\n return;\n }\n record.geometry.setAttribute(\"color\", new THREE.BufferAttribute(shapedColors, 3));\n}\n\nfunction buildEdgeGeometryFromIndices(THREE, vertices, edgeIndices) {\n if (!isNumericArray(vertices, 3) || !isNumericArray(edgeIndices, 2)) {\n return null;\n }\n const vertexCount = Math.floor(vertices.length / 3);\n const segmentCount = Math.floor(edgeIndices.length / 2);\n if (segmentCount <= 0) {\n return null;\n }\n const linePositions = new Float32Array(segmentCount * 6);\n let writeOffset = 0;\n for (let index = 0; index + 1 < edgeIndices.length; index += 2) {\n const a = Number(edgeIndices[index]);\n const b = Number(edgeIndices[index + 1]);\n if (!Number.isInteger(a) || !Number.isInteger(b) || a < 0 || b < 0 || a >= vertexCount || b >= vertexCount) {\n continue;\n }\n const aOffset = a * 3;\n const bOffset = b * 3;\n linePositions[writeOffset] = Number(vertices[aOffset]);\n linePositions[writeOffset + 1] = Number(vertices[aOffset + 1]);\n linePositions[writeOffset + 2] = Number(vertices[aOffset + 2]);\n linePositions[writeOffset + 3] = Number(vertices[bOffset]);\n linePositions[writeOffset + 4] = Number(vertices[bOffset + 1]);\n linePositions[writeOffset + 5] = Number(vertices[bOffset + 2]);\n writeOffset += 6;\n }\n if (!writeOffset) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n const packedPositions = writeOffset === linePositions.length ? linePositions : linePositions.subarray(0, writeOffset);\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(packedPositions, 3));\n return geometry;\n}\n\nfunction buildEdgeGeometry(THREE, meshData, part, sourceGeometry, displayMode, edgeSettings = {}) {\n void edgeSettings;\n const cache = cacheForMeshData(meshData);\n const partId = part ? String(part?.id || part?.occurrenceId || \"\").trim() : MODEL_PART_ID;\n const sourceMeshKey = part?.sourceMesh\n ? String(part?.sourceMeshKey || part?.meshUrl || part?.partFileRef || \"\").trim()\n : \"\";\n const edgeKey = `${displayMode}:${sourceMeshKey ? `source:${sourceMeshKey}` : (partId || MODEL_PART_ID)}`;\n const cached = cache.edge.get(edgeKey);\n if (cached) {\n return cached;\n }\n\n let geometry = null;\n if (displayModeIsWireframe(displayMode)) {\n geometry = new THREE.WireframeGeometry(sourceGeometry);\n } else if (part) {\n const edgeIndexOffset = toNumber(part?.edgeIndexOffset, 0);\n const edgeIndexCount = toNumber(part?.edgeIndexCount, 0);\n const hasExplicitPartEdges = edgeIndexCount >= 2 && isNumericArray(meshData?.edge_indices, 2);\n if (hasExplicitPartEdges) {\n const partEdgeIndices = typeof meshData.edge_indices.subarray === \"function\"\n ? meshData.edge_indices.subarray(edgeIndexOffset, edgeIndexOffset + edgeIndexCount)\n : meshData.edge_indices.slice(edgeIndexOffset, edgeIndexOffset + edgeIndexCount);\n geometry = buildEdgeGeometryFromIndices(THREE, meshData.vertices, partEdgeIndices);\n }\n geometry ||= new THREE.EdgesGeometry(sourceGeometry, CAD_EDGE_THRESHOLD_DEG);\n } else if (isNumericArray(meshData?.edge_indices, 2)) {\n geometry = buildEdgeGeometryFromIndices(THREE, meshData.vertices, meshData.edge_indices);\n }\n\n geometry ||= new THREE.EdgesGeometry(sourceGeometry, CAD_EDGE_THRESHOLD_DEG);\n if (!geometry.getAttribute(\"position\")?.count) {\n geometry.dispose();\n geometry = emptyLineGeometry(THREE);\n }\n markCachedGeometry(geometry);\n cache.edge.set(edgeKey, geometry);\n return geometry;\n}\n\nfunction getEdgeThickness(edgeSettings = null, baseTheme = null) {\n const fallbackThickness = Number.isFinite(Number(baseTheme?.edgeThickness))\n ? Number(baseTheme.edgeThickness)\n : DEFAULT_THEME.edgeThickness;\n return Number.isFinite(Number(edgeSettings?.thickness))\n ? clamp(Number(edgeSettings.thickness), 0.5, 6)\n : fallbackThickness;\n}\n\nfunction syncLineMaterialOpacity(material, opacity) {\n if (!material) {\n return;\n }\n const nextOpacity = clamp(Number(opacity) || 0, 0, 1);\n const nextTransparent = nextOpacity < 0.999;\n material.opacity = nextOpacity;\n material.depthWrite = false;\n if (material.transparent !== nextTransparent) {\n material.transparent = nextTransparent;\n material.needsUpdate = true;\n }\n}\n\nfunction createDefaultEdgeObject(THREE, geometry, baseTheme, edgeSettings, partId, displayMode) {\n const wireframeMode = displayModeIsWireframe(displayMode);\n const depthTest = edgeSettings?.depthTest === false ? false : !wireframeMode;\n const material = new THREE.LineBasicMaterial({\n color: edgeSettings?.color || baseTheme?.edge || DEFAULT_THEME.edge,\n transparent: true,\n opacity: wireframeMode\n ? Math.max(toNumber(edgeSettings?.opacity, 0.92), 0.9)\n : toNumber(edgeSettings?.opacity, baseTheme?.edgeOpacity ?? CAD_EDGE_OPACITY),\n depthTest,\n depthWrite: false\n });\n const object = new THREE.LineSegments(geometry, material);\n object.userData.partId = partId;\n return { object, material };\n}\n\nfunction normalizeEdgeResult(result) {\n if (!result) {\n return { object: null, material: null };\n }\n const object = result.object || result.edgeMesh || result.mesh || result.line || null;\n return {\n object,\n material: result.material || result.edgeMaterial || object?.material || null\n };\n}\n\nfunction normalizeEdgeRendering(edgeRendering = null) {\n if (!edgeRendering || typeof edgeRendering !== \"object\") {\n return { mode: \"basic\" };\n }\n const mode = String(edgeRendering.mode || edgeRendering.type || \"\").trim().toLowerCase();\n return {\n ...edgeRendering,\n mode: mode === \"screen-space\" || mode === \"screenspace\" ? \"screen-space\" : \"basic\",\n wireframeEdgeColor: String(edgeRendering.wireframeEdgeColor || \"\").trim()\n };\n}\n\nfunction applyEdgeRenderingToRuntime(runtime, edgeRendering = {}) {\n runtime.edgeRendering = edgeRendering;\n for (const key of [\"Line2\", \"LineGeometry\", \"LineSegments2\", \"LineSegmentsGeometry\", \"LineMaterial\"]) {\n runtime[key] = edgeRendering[key] || edgeRendering.constructors?.[key] || null;\n }\n}\n\nfunction createSilhouetteMesh(THREE, geometry, edgeSettings, radius) {\n const offset = radius * clamp(toNumber(edgeSettings?.silhouetteScale, 0.004), 0, 0.04);\n if (!(offset > 0)) {\n return null;\n }\n const material = new THREE.ShaderMaterial({\n uniforms: {\n color: { value: new THREE.Color(edgeSettings?.color || DEFAULT_THEME.edge) },\n opacity: { value: clamp(toNumber(edgeSettings?.opacity, 0.9), 0, 1) },\n offset: { value: offset }\n },\n vertexShader: `\n uniform float offset;\n void main() {\n vec3 displaced = position + normal * offset;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(displaced, 1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 color;\n uniform float opacity;\n void main() {\n gl_FragColor = vec4(color, opacity);\n }\n `,\n side: THREE.BackSide,\n transparent: true,\n depthTest: true,\n depthWrite: false\n });\n const mesh = new THREE.Mesh(geometry, material);\n mesh.renderOrder = -1;\n return mesh;\n}\n\nfunction shouldBuildSilhouette(edgeSettings, displayMode, settings = {}) {\n return (\n settings.silhouette !== false &&\n !displayModeIsWireframe(displayMode) &&\n edgeSettings.silhouette === true &&\n (edgeSettings.enabled === true || settings.silhouette === true)\n );\n}\n\nexport function readBoundsCenter(THREE, bounds) {\n const min = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const max = Array.isArray(bounds?.max) ? bounds.max : min;\n return new THREE.Vector3(\n (toNumber(min[0]) + toNumber(max[0])) / 2,\n (toNumber(min[1]) + toNumber(max[1])) / 2,\n (toNumber(min[2]) + toNumber(max[2])) / 2\n );\n}\n\nfunction safeColor(THREE, value, fallback = null) {\n const text = String(value || \"\").trim();\n if (!text) {\n return fallback;\n }\n try {\n return new THREE.Color(text);\n } catch {\n return fallback;\n }\n}\n\nexport function applyMaterialSettingsToRecord(THREE, record, materialSettings, {\n baseTheme = DEFAULT_THEME,\n displayMode = CAD_DISPLAY_MODE.SOLID\n} = {}) {\n if (!record?.material || !materialSettings) {\n return;\n }\n const wireframeMode = displayModeIsWireframe(displayMode);\n const forceFill = materialSettings.overrideSourceColors === true || wireframeMode;\n const hasVertexColors = !forceFill && !!record.hasVertexColors;\n record.useVertexColors = hasVertexColors;\n record.baseColor = resolveSourceBaseColor(THREE, {\n hasVertexColors,\n sourceColor: forceFill ? null : record.sourceColor || null,\n materialSettings,\n fallbackColor: materialSettings?.defaultColor || baseTheme?.surface || DEFAULT_THEME.surface,\n fillIndex: record.fillIndex || 0,\n forceFill: forceFill || !record.hasSourceColor\n });\n record.material.vertexColors = hasVertexColors;\n if (wireframeMode) {\n if (record.material.color && record.baseColor) {\n record.material.color.copy(record.baseColor);\n }\n record.baseOpacity = displayModeSurfaceOpacity(displayMode, 0.035);\n record.material.opacity = record.baseOpacity;\n record.material.transparent = true;\n record.material.depthWrite = false;\n record.material.needsUpdate = true;\n return;\n }\n syncRecordVertexColors(THREE, record, materialSettings);\n record.material.roughness = clamp(Number(materialSettings.roughness) || 0, 0, 1);\n record.material.metalness = clamp(Number(materialSettings.metalness) || 0, 0, 1);\n record.material.clearcoat = clamp(Number(materialSettings.clearcoat) || 0, 0, 1);\n record.material.clearcoatRoughness = clamp(Number(materialSettings.clearcoatRoughness) || 0, 0, 1);\n const sourceOpacity = Number.isFinite(Number(record.sourceOpacity))\n ? clamp(Number(record.sourceOpacity), 0, 1)\n : 1;\n record.baseOpacity = clamp(displayModeSurfaceOpacity(displayMode, materialSettings.opacity) * sourceOpacity, 0, 1);\n record.material.opacity = record.baseOpacity;\n record.material.transparent = record.baseOpacity < 0.999;\n record.material.depthWrite = displayMode === CAD_DISPLAY_MODE.TRANSPARENT ? false : record.baseOpacity >= 0.999;\n record.material.envMapIntensity = Math.max(Number(materialSettings.envMapIntensity) || 0, 0);\n if (record.material.color && record.baseColor) {\n record.material.color.copy(record.baseColor);\n }\n record.baseEmissiveIntensity = clamp(Number(materialSettings.emissiveIntensity) || 0, 0, 2);\n record.baseEmissiveColor = record.baseColor ? record.baseColor.clone() : null;\n if (\"emissive\" in record.material && record.material.emissive) {\n if (record.baseEmissiveColor && record.baseEmissiveIntensity > 0) {\n record.material.emissive.copy(record.baseEmissiveColor);\n } else {\n record.material.emissive.set(0x000000);\n }\n record.material.emissiveIntensity = record.baseEmissiveIntensity;\n }\n record.material.needsUpdate = true;\n}\n\nfunction normalizePartIdList(value) {\n return (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean);\n}\n\nfunction normalizePartSelector(value) {\n const text = String(value || \"\").trim();\n return text.startsWith(\"#\") ? text.slice(1).trim() : text;\n}\n\nfunction partIdMatchesSet(partId, set) {\n if (!set?.size) {\n return false;\n }\n if (set.has(MODEL_PART_ID)) {\n return true;\n }\n const normalizedPartId = normalizePartSelector(partId);\n if (!normalizedPartId) {\n return false;\n }\n for (const candidate of set) {\n const normalizedCandidate = normalizePartSelector(candidate);\n if (\n normalizedCandidate &&\n (\n normalizedPartId === normalizedCandidate ||\n normalizedPartId.startsWith(`${normalizedCandidate}.`)\n )\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction baseObjectRenderOrder(record, object, fieldName) {\n if (!object) {\n return 0;\n }\n if (!Number.isFinite(Number(record[fieldName]))) {\n record[fieldName] = Number.isFinite(Number(object.renderOrder)) ? Number(object.renderOrder) : 0;\n }\n return record[fieldName];\n}\n\nfunction syncHighlightRenderOrder(record, object, fieldName, highlighted, highlightRenderOrder) {\n if (!object) {\n return;\n }\n const baseRenderOrder = baseObjectRenderOrder(record, object, fieldName);\n object.renderOrder = highlighted ? highlightRenderOrder : baseRenderOrder;\n}\n\nfunction syncSurfaceTransparency(record, forceTransparent, opacity, {\n writeTransparentDepth = true\n} = {}) {\n const material = record?.material;\n if (!material) {\n return;\n }\n if (!Object.hasOwn(record, \"baseDepthWrite\")) {\n record.baseDepthWrite = material.depthWrite !== false;\n }\n const nextTransparent = forceTransparent || opacity < 0.999;\n if (material.transparent !== nextTransparent) {\n material.transparent = nextTransparent;\n material.needsUpdate = true;\n }\n material.depthWrite = nextTransparent && !writeTransparentDepth ? false : record.baseDepthWrite;\n}\n\nconst CAD_SURFACE_EDGE_OPACITY_UNIFORMS = Object.freeze({\n feature: \"cadSurfaceFeatureOpacity\",\n tangent: \"cadSurfaceTangentOpacity\",\n seam: \"cadSurfaceSeamOpacity\",\n degenerate: \"cadSurfaceDegenerateOpacity\"\n});\n\nconst CAD_SURFACE_EDGE_COLOR_UNIFORMS = Object.freeze({\n feature: \"cadSurfaceFeatureColor\",\n tangent: \"cadSurfaceTangentColor\",\n seam: \"cadSurfaceSeamColor\",\n degenerate: \"cadSurfaceDegenerateColor\"\n});\n\nfunction syncCadSurfaceEdgeHighlight(THREE, record, edgeColor, edgeOpacity = null) {\n const material = record?.material;\n const userData = material?.userData;\n if (!material || userData?.cadSurfaceEdges !== true) {\n return;\n }\n const nextColor = edgeColor?.isColor\n ? edgeColor\n : readSourceColor(THREE, edgeColor) || userData.cadSurfaceEdgeBaseColor;\n if (nextColor?.isColor) {\n userData.cadSurfaceEdgeColor = nextColor.clone();\n const colorUniform = userData.cadSurfaceEdgeShader?.uniforms?.cadSurfaceEdgeColor;\n if (colorUniform?.value?.copy) {\n colorUniform.value.copy(nextColor);\n }\n }\n\n const highlightedOpacity = edgeOpacity !== null && edgeOpacity !== undefined && Number.isFinite(Number(edgeOpacity))\n ? clamp(Number(edgeOpacity), 0, 1)\n : null;\n const baseClassSettings = userData.cadSurfaceEdgeBaseClassSettings || {};\n const uniforms = userData.cadSurfaceEdgeShader?.uniforms || null;\n const overrideClassColor = highlightedOpacity !== null ||\n (nextColor?.isColor && userData.cadSurfaceEdgeBaseColor?.isColor && !nextColor.equals(userData.cadSurfaceEdgeBaseColor));\n for (const [classId, uniformName] of Object.entries(CAD_SURFACE_EDGE_COLOR_UNIFORMS)) {\n const baseClassColor = readSourceColor(THREE, baseClassSettings[classId]?.color) ||\n userData.cadSurfaceEdgeBaseColor;\n const nextClassColor = overrideClassColor ? nextColor : baseClassColor;\n if (nextClassColor?.isColor && uniforms?.[uniformName]?.value?.copy) {\n uniforms[uniformName].value.copy(nextClassColor);\n }\n }\n for (const [classId, uniformName] of Object.entries(CAD_SURFACE_EDGE_OPACITY_UNIFORMS)) {\n const baseOpacity = Number(baseClassSettings[classId]?.opacity);\n const nextOpacity = highlightedOpacity === null\n ? (Number.isFinite(baseOpacity) ? baseOpacity : null)\n : highlightedOpacity;\n if (nextOpacity === null) {\n continue;\n }\n userData[`cadSurfaceEdge${classId}Opacity`] = nextOpacity;\n if (uniforms?.[uniformName]) {\n uniforms[uniformName].value = nextOpacity;\n }\n }\n}\n\nexport function applyPartVisualState(THREE, records, {\n baseTheme = DEFAULT_THEME,\n edgeSettings,\n hiddenPartIds,\n hoveredPartId,\n focusedPartId,\n selectedPartIds,\n showEdges = true\n} = {}) {\n const hidden = new Set(Array.isArray(hiddenPartIds) ? hiddenPartIds : []);\n const selected = new Set(Array.isArray(selectedPartIds) ? selectedPartIds : []);\n const hovered = new Set(\n (Array.isArray(hoveredPartId) ? hoveredPartId : [hoveredPartId])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean)\n );\n const baseEdgeColor = edgeSettings?.color || baseTheme?.edge || DEFAULT_THEME.edge;\n const defaultSurfaceOpacity = Number.isFinite(Number(baseTheme?.surfaceOpacity))\n ? Number(baseTheme.surfaceOpacity)\n : 1;\n const focusIds = new Set(normalizePartIdList(focusedPartId));\n const hasFocus = focusIds.size > 0;\n const baseEdgeOpacity = Number.isFinite(Number(edgeSettings?.opacity))\n ? clamp(Number(edgeSettings.opacity), 0, 1)\n : (baseTheme?.edgeOpacity ?? DEFAULT_THEME.edgeOpacity ?? CAD_EDGE_OPACITY);\n const highlightEdgeOpacity = Number.isFinite(Number(edgeSettings?.highlightOpacity))\n ? clamp(Number(edgeSettings.highlightOpacity), 0, 1)\n : 1;\n const edgeHighlightColor = String(edgeSettings?.highlightColor || REFERENCE_SELECTED_COLOR).trim() || REFERENCE_SELECTED_COLOR;\n const hoveredSurfaceColor = new THREE.Color(REFERENCE_HOVER_COLOR);\n const hoveredEdgeColor = new THREE.Color(edgeHighlightColor);\n const selectedSurfaceColor = new THREE.Color(REFERENCE_SELECTED_COLOR);\n const selectedEdgeColor = new THREE.Color(edgeHighlightColor);\n\n for (const record of Array.isArray(records) ? records : []) {\n if (!record?.mesh || !record?.material) {\n continue;\n }\n const effectStyle = record.effectStyle && typeof record.effectStyle === \"object\" ? record.effectStyle : {};\n const effectHidden = record.effectVisible === false;\n const effectColor = readSourceColor(THREE, effectStyle.color);\n const effectEdgeColor = readSourceColor(THREE, effectStyle.edgeColor);\n const effectEmissive = readSourceColor(THREE, effectStyle.emissive);\n const isHidden = partIdMatchesSet(record.partId, hidden);\n const isSelected = !isHidden && (partIdMatchesSet(record.partId, selected) || record.effectHighlighted === true);\n const isHovered = !isHidden && !effectHidden && partIdMatchesSet(record.partId, hovered);\n const isFocused = !isHidden && !effectHidden && hasFocus && partIdMatchesSet(record.partId, focusIds);\n const isDimmed = !isHidden && !effectHidden && hasFocus && !isFocused;\n const isHighlighted = isSelected || isHovered;\n\n record.mesh.visible = !effectHidden;\n if (record.edges) {\n record.edges.visible = showEdges && !effectHidden;\n }\n if (record.silhouette) {\n record.silhouette.visible = !effectHidden;\n }\n syncHighlightRenderOrder(record, record.mesh, \"baseMeshRenderOrder\", isHighlighted, PART_HIGHLIGHT_SURFACE_RENDER_ORDER);\n syncHighlightRenderOrder(record, record.edges, \"baseEdgeRenderOrder\", isHighlighted, PART_HIGHLIGHT_EDGE_RENDER_ORDER);\n\n const baseSurfaceOpacity = Number.isFinite(Number(record.baseOpacity))\n ? Number(record.baseOpacity)\n : defaultSurfaceOpacity;\n const effectOpacity = Number.isFinite(Number(effectStyle.opacity))\n ? clamp(Number(effectStyle.opacity), 0, 1)\n : 1;\n const effectEdgeOpacity = Number.isFinite(Number(effectStyle.edgeOpacity))\n ? clamp(Number(effectStyle.edgeOpacity), 0, 1)\n : effectOpacity;\n const highlightedEdgeOpacity = (isSelected || isHovered) ? highlightEdgeOpacity * effectEdgeOpacity : null;\n const dimmedSurfaceOpacity = Math.min(baseSurfaceOpacity * effectOpacity, FOCUSED_DIMMED_SURFACE_OPACITY);\n const highlightedSurfaceOpacity = isSelected\n ? clamp((baseSurfaceOpacity * effectOpacity) + PART_SELECTED_OPACITY_BOOST, 0, 1)\n : isHovered\n ? clamp((baseSurfaceOpacity * effectOpacity) + PART_HOVER_OPACITY_BOOST, 0, 1)\n : baseSurfaceOpacity * effectOpacity;\n const nextSurfaceOpacity = isHidden || isDimmed ? dimmedSurfaceOpacity : highlightedSurfaceOpacity;\n syncSurfaceTransparency(record, isHidden || isDimmed || isHighlighted, nextSurfaceOpacity, {\n writeTransparentDepth: !isHidden && !isDimmed\n });\n record.material.opacity = nextSurfaceOpacity;\n\n if (record.baseColor && record.material.color) {\n record.material.color.copy(\n isSelected\n ? selectedSurfaceColor\n : isHovered\n ? hoveredSurfaceColor\n : effectColor || record.baseColor\n );\n }\n\n if (\"emissive\" in record.material && record.material.emissive) {\n if (isSelected) {\n record.material.emissive.set(REFERENCE_SELECTED_COLOR);\n } else if (isHovered) {\n record.material.emissive.set(REFERENCE_HOVER_COLOR);\n } else if (record.baseEmissiveColor && record.baseEmissiveIntensity > 0) {\n record.material.emissive.copy(record.baseEmissiveColor);\n } else {\n record.material.emissive.set(0x000000);\n }\n record.material.emissiveIntensity = isSelected\n ? 0.08\n : isHovered\n ? 0.12\n : effectEmissive\n ? clamp(Number(effectStyle.emissiveIntensity) || 0.22, 0, 2)\n : clamp(Number(record.baseEmissiveIntensity) || 0, 0, 2);\n if (!isSelected && !isHovered && effectEmissive) {\n record.material.emissive.copy(effectEmissive);\n }\n }\n\n const nextEdgeColor = isSelected\n ? selectedEdgeColor\n : isHovered\n ? hoveredEdgeColor\n : effectEdgeColor || baseEdgeColor;\n syncCadSurfaceEdgeHighlight(THREE, record, nextEdgeColor, highlightedEdgeOpacity);\n\n if (record.edgeMaterial) {\n record.edgeMaterial.color?.set?.(nextEdgeColor);\n syncLineMaterialOpacity(record.edgeMaterial, isSelected\n ? highlightEdgeOpacity * effectEdgeOpacity\n : isHovered\n ? highlightEdgeOpacity * effectEdgeOpacity\n : isHidden || isDimmed\n ? nextSurfaceOpacity\n : baseEdgeOpacity * effectEdgeOpacity);\n }\n }\n}\n\nfunction resetParameterEffects(records) {\n for (const record of Array.isArray(records) ? records : []) {\n record.effectMatrix = null;\n record.effectStyle = null;\n record.effectVisible = null;\n record.effectHighlighted = false;\n }\n}\n\nfunction boundsCorners(THREE, bounds) {\n const min = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const max = Array.isArray(bounds?.max) ? bounds.max : [1, 1, 1];\n return [\n [min[0], min[1], min[2]],\n [min[0], min[1], max[2]],\n [min[0], max[1], min[2]],\n [min[0], max[1], max[2]],\n [max[0], min[1], min[2]],\n [max[0], min[1], max[2]],\n [max[0], max[1], min[2]],\n [max[0], max[1], max[2]]\n ].map((corner) => new THREE.Vector3(\n toNumber(corner[0]),\n toNumber(corner[1]),\n toNumber(corner[2])\n ));\n}\n\nfunction transformedBounds(THREE, bounds, matrix = null) {\n if (!bounds || !Array.isArray(bounds.min) || !Array.isArray(bounds.max)) {\n return null;\n }\n if (!(matrix instanceof THREE.Matrix4)) {\n return {\n min: [...bounds.min],\n max: [...bounds.max]\n };\n }\n const corners = boundsCorners(THREE, bounds).map((corner) => corner.applyMatrix4(matrix));\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n for (const corner of corners) {\n min[0] = Math.min(min[0], corner.x);\n min[1] = Math.min(min[1], corner.y);\n min[2] = Math.min(min[2], corner.z);\n max[0] = Math.max(max[0], corner.x);\n max[1] = Math.max(max[1], corner.y);\n max[2] = Math.max(max[2], corner.z);\n }\n return min.every(Number.isFinite) && max.every(Number.isFinite) ? { min, max } : null;\n}\n\nfunction mergeBoundsList(boundsList) {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n let count = 0;\n for (const bounds of Array.isArray(boundsList) ? boundsList : []) {\n if (!bounds || !Array.isArray(bounds.min) || !Array.isArray(bounds.max)) {\n continue;\n }\n count += 1;\n for (let axis = 0; axis < 3; axis += 1) {\n min[axis] = Math.min(min[axis], toNumber(bounds.min[axis]));\n max[axis] = Math.max(max[axis], toNumber(bounds.max[axis]));\n }\n }\n return count > 0 && min.every(Number.isFinite) && max.every(Number.isFinite) ? { min, max } : null;\n}\n\nfunction effectiveBoundsFromRecords(THREE, records, fallbackBounds) {\n const boundsList = [];\n for (const record of Array.isArray(records) ? records : []) {\n if (record.effectVisible === false) {\n continue;\n }\n const baseMatrix = buildPartTransformMatrix(THREE, record.baseTransform);\n const effectMatrix = record.effectMatrix instanceof THREE.Matrix4 ? record.effectMatrix.clone() : null;\n const combinedMatrix = effectMatrix ? effectMatrix.multiply(baseMatrix) : baseMatrix;\n boundsList.push(transformedBounds(THREE, record.partBounds, combinedMatrix));\n }\n return mergeBoundsList(boundsList) || fallbackBounds;\n}\n\nfunction runParameterSetup(THREE, runtime, parameters, meshData, callbacks = {}) {\n const definition = parameters?.definition || null;\n const module = definition?.module || null;\n if (!definition || !module?.setup) {\n return;\n }\n const effectsByPartId = new Map();\n const features = resolveStepModuleFeatures(definition, {\n meshData,\n selectorRuntime: parameters?.selectorRuntime || null\n });\n const ctx = buildStepModuleContext({\n runtime,\n stepModuleRuntime: parameters,\n features,\n effects: createStepModuleEffectsApi(THREE, {\n meshData,\n features,\n runtime,\n effectsByPartId\n }),\n cleanup: (cleanup) => {\n if (typeof cleanup === \"function\") {\n runtime.cleanups.push(cleanup);\n }\n }\n });\n try {\n module.setup(ctx);\n } catch (error) {\n callbacks.onWarning?.({\n title: \"STEP parameter setup failed\",\n message: error instanceof Error ? error.message : String(error),\n error\n });\n }\n}\n\nfunction cleanupParameterRuntime(runtime, parameters, callbacks = {}) {\n while (runtime.cleanups.length) {\n try {\n runtime.cleanups.pop()?.();\n } catch (error) {\n callbacks.onWarning?.({\n title: \"STEP parameter cleanup failed\",\n message: error instanceof Error ? error.message : String(error),\n error\n });\n }\n }\n const module = parameters?.definition?.module || null;\n if (!module?.dispose) {\n return;\n }\n const ctx = buildStepModuleContext({\n runtime,\n stepModuleRuntime: parameters,\n features: {},\n effects: {},\n cleanup: () => {}\n });\n try {\n module.dispose(ctx);\n } catch (error) {\n callbacks.onWarning?.({\n title: \"STEP parameter dispose failed\",\n message: error instanceof Error ? error.message : String(error),\n error\n });\n }\n}\n\nfunction applyParameters(THREE, runtime, parameters, meshData, callbacks = {}) {\n const definition = parameters?.definition || null;\n const module = definition?.module || null;\n if (!definition || !module) {\n resetParameterEffects(runtime.displayRecords);\n for (const record of runtime.displayRecords) {\n applyDisplayRecordTransform(THREE, record);\n }\n return runtime.baseBounds;\n }\n\n const effectsByPartId = new Map();\n const features = resolveStepModuleFeatures(definition, {\n meshData,\n selectorRuntime: parameters?.selectorRuntime || null\n });\n const effects = createStepModuleEffectsApi(THREE, {\n meshData,\n features,\n runtime,\n effectsByPartId\n });\n const ctx = buildStepModuleContext({\n runtime,\n stepModuleRuntime: parameters,\n features,\n effects,\n cleanup: (cleanup) => {\n if (typeof cleanup === \"function\") {\n runtime.cleanups.push(cleanup);\n }\n }\n });\n\n try {\n module.update?.(ctx);\n module.render?.(ctx);\n } catch (error) {\n callbacks.onWarning?.({\n title: \"STEP parameter update failed\",\n message: error instanceof Error ? error.message : String(error),\n error\n });\n }\n\n applyStepModuleEffectsToRecords(THREE, runtime.displayRecords, effectsByPartId);\n for (const record of runtime.displayRecords) {\n applyDisplayRecordTransform(THREE, record);\n }\n return effectiveBoundsFromRecords(THREE, runtime.displayRecords, runtime.baseBounds);\n}\n\nexport function buildStepClipPlane(THREE, clip, bounds, modelOffset = null) {\n const normalized = normalizeStepClipSettings(clip);\n if (!normalized.enabled || !bounds) {\n return null;\n }\n const index = axisIndex(normalized.axis);\n const boundsMin = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const boundsMax = Array.isArray(bounds?.max) ? bounds.max : boundsMin;\n const min = toNumber(boundsMin[index]);\n const max = toNumber(boundsMax[index]);\n const low = Math.min(min, max);\n const high = Math.max(min, max);\n const position = low + ((high - low) * normalized.offset);\n const normal = new THREE.Vector3(\n index === 0 ? 1 : 0,\n index === 1 ? 1 : 0,\n index === 2 ? 1 : 0\n );\n if (normalized.invert) {\n normal.multiplyScalar(-1);\n }\n const point = modelOffset?.clone ? modelOffset.clone() : new THREE.Vector3(0, 0, 0);\n point.setComponent(index, point.getComponent(index) + position);\n return new THREE.Plane().setFromNormalAndCoplanarPoint(normal, point);\n}\n\nexport function syncMaterialClipPlanes(material, clipPlanes) {\n if (!material) {\n return;\n }\n const materials = Array.isArray(material) ? material : [material];\n const clippingEnabled = Array.isArray(clipPlanes) && clipPlanes.length > 0;\n for (const item of materials) {\n if (!item) {\n continue;\n }\n const previousEnabled = item.userData?.cadClipPlaneEnabled === true;\n const previousCount = Number(item.userData?.cadClipPlaneCount) || 0;\n const previousShaderClipping = item.clipping === true;\n item.clippingPlanes = clippingEnabled ? clipPlanes : null;\n item.clipIntersection = false;\n item.clipShadows = clippingEnabled;\n if (\"clipping\" in item) {\n item.clipping = clippingEnabled;\n }\n item.userData = {\n ...(item.userData || {}),\n cadClipPlaneEnabled: clippingEnabled,\n cadClipPlaneCount: clippingEnabled ? clipPlanes.length : 0\n };\n if (\n previousEnabled !== clippingEnabled ||\n previousCount !== (clippingEnabled ? clipPlanes.length : 0) ||\n previousShaderClipping !== (item.clipping === true)\n ) {\n item.needsUpdate = true;\n }\n }\n}\n\nfunction syncClip(runtime, clip, bounds, modelOffset = null) {\n const clipPlane = buildStepClipPlane(runtime.THREE, clip, bounds, modelOffset);\n const clipPlanes = clipPlane ? [clipPlane] : [];\n runtime.activeClipPlane = clipPlane;\n runtime.activeClipPlanes = clipPlanes;\n for (const record of runtime.displayRecords) {\n syncMaterialClipPlanes(record.material, clipPlanes);\n syncMaterialClipPlanes(record.edgeMaterial, clipPlanes);\n syncMaterialClipPlanes(record.silhouette?.material, clipPlanes);\n }\n}\n\nfunction normalizeSelection(selection = {}) {\n return selection && typeof selection === \"object\" ? selection : {};\n}\n\nfunction selectorEntries(value) {\n if (Array.isArray(value)) {\n return value;\n }\n const text = String(value || \"\").trim();\n return text.split(\",\");\n}\n\nfunction selectorValuesFromEntry(value) {\n const text = String(value || \"\").trim();\n if (!text) {\n return [];\n }\n const selectorText = text.startsWith(\"#\") ? text.slice(1) : text;\n return selectorText.split(\",\")\n .map((entry) => entry.trim())\n .filter(Boolean);\n}\n\nfunction normalizedSelectorValues(value) {\n return selectorEntries(value).flatMap(selectorValuesFromEntry);\n}\n\nfunction valueMatchesSelector(value, selector, { descendants = false } = {}) {\n const normalizedValue = String(value || \"\").trim();\n const normalizedSelector = String(selector || \"\").trim();\n if (!normalizedValue || !normalizedSelector) {\n return false;\n }\n return normalizedValue === normalizedSelector ||\n (descendants && normalizedValue.startsWith(`${normalizedSelector}.`));\n}\n\nfunction partMatchesSelector(part, selector) {\n const normalized = String(selector || \"\").trim();\n if (!normalized) {\n return false;\n }\n if ([\n part?.id,\n part?.occurrenceId\n ].some((value) => valueMatchesSelector(value, normalized, { descendants: true }))) {\n return true;\n }\n return [\n part?.name,\n part?.label,\n part?.linkName\n ].some((value) => valueMatchesSelector(value, normalized));\n}\n\nfunction mergePartBounds(parts) {\n const min = [Infinity, Infinity, Infinity];\n const max = [-Infinity, -Infinity, -Infinity];\n let count = 0;\n for (const part of Array.isArray(parts) ? parts : []) {\n const bounds = part?.bounds;\n if (!Array.isArray(bounds?.min) || !Array.isArray(bounds?.max)) {\n continue;\n }\n count += 1;\n for (let axis = 0; axis < 3; axis += 1) {\n min[axis] = Math.min(min[axis], Number(bounds.min[axis]));\n max[axis] = Math.max(max[axis], Number(bounds.max[axis]));\n }\n }\n return count > 0 && min.every(Number.isFinite) && max.every(Number.isFinite) ? { min, max } : null;\n}\n\nfunction filterMeshDataForSelection(meshData, selection = {}) {\n const parts = Array.isArray(meshData?.parts) ? meshData.parts : [];\n if (!parts.length) {\n return meshData;\n }\n const focus = [\n ...normalizedSelectorValues(selection.focus),\n ...normalizedSelectorValues(selection.refs)\n ];\n const hide = normalizedSelectorValues(selection.hide);\n if (!focus.length && !hide.length) {\n return meshData;\n }\n const nextParts = parts.filter((part) => {\n if (focus.length && !focus.some((selector) => partMatchesSelector(part, selector))) {\n return false;\n }\n return !hide.some((selector) => partMatchesSelector(part, selector));\n });\n if (!nextParts.length) {\n throw new Error(\"No renderable parts remain after applying focus/hide filters\");\n }\n return {\n ...meshData,\n parts: nextParts,\n bounds: mergePartBounds(nextParts) || meshData.bounds\n };\n}\n\nfunction resolveMaterialSettings(theme, settings = {}) {\n if (settings.materialSettings && typeof settings.materialSettings === \"object\") {\n return settings.materialSettings;\n }\n return theme.materials || {};\n}\n\nfunction resolvePartsToRender(meshData, theme, settings) {\n if (Array.isArray(settings.parts)) {\n return settings.parts.filter((part) => toNumber(part?.vertexCount) > 0 && toNumber(part?.triangleCount) > 0);\n }\n const parts = toArray(meshData?.parts).filter((part) => toNumber(part?.vertexCount) > 0 && toNumber(part?.triangleCount) > 0);\n if (!parts.length) {\n return [];\n }\n if (settings.renderPartsIndividually === true) {\n return parts;\n }\n if (settings.renderPartsIndividually === false) {\n const pickableParts = toArray(settings.pickableParts).filter((part) => toNumber(part?.vertexCount) > 0 && toNumber(part?.triangleCount) > 0);\n if (pickableParts.length) {\n return pickableParts;\n }\n if (meshUsesPartSourceColors(meshData, parts) || meshUsesPartSourceOpacity(parts)) {\n return parts;\n }\n const hasFillRotation = theme?.materials?.cycleColors === true &&\n Array.isArray(theme?.materials?.fillColors) &&\n theme.materials.fillColors.length > 1;\n return hasFillRotation ? parts : [];\n }\n return parts;\n}\n\nfunction addEdgeObject(THREE, runtime, record, edgeGeometry, settings) {\n const edgeSettings = runtime.edgeSettings;\n const baseTheme = runtime.baseTheme;\n const displayMode = runtime.displayMode;\n const useScreenSpaceEdges = runtime.edgeRendering?.mode === \"screen-space\";\n const rawResult = useScreenSpaceEdges\n ? createDisplayEdgeObject(runtime, {\n THREE,\n geometry: edgeGeometry,\n edgeSettings,\n baseTheme,\n partId: record.partId,\n displayMode,\n thickness: getEdgeThickness(edgeSettings, baseTheme),\n wireframeEdgeColor: runtime.edgeRendering?.wireframeEdgeColor || \"\"\n }, runtime.screenSpaceLineMaterials)\n : createDefaultEdgeObject(THREE, edgeGeometry, baseTheme, edgeSettings, record.partId, displayMode);\n const { object, material } = normalizeEdgeResult(rawResult);\n if (!object) {\n return;\n }\n object.userData.partId = record.partId;\n record.edges = object;\n record.edgeMaterial = material;\n record.baseEdgeColor = material?.color?.isColor ? material.color.clone() : new THREE.Color(edgeSettings?.color || baseTheme?.edge || DEFAULT_THEME.edge);\n record.baseEdgeOpacity = Number.isFinite(Number(material?.opacity)) ? Number(material.opacity) : 1;\n runtime.edgesGroup.add(object);\n}\n\nfunction buildDisplayRecords(THREE, runtime, meshData, settings) {\n const theme = runtime.theme;\n const materialSettings = runtime.materialSettings;\n const displayMode = runtime.displayMode;\n const baseTheme = runtime.baseTheme;\n const edgeSettings = runtime.edgeSettings;\n const bounds = meshData.bounds || boundsFromVertices(meshData.vertices || []);\n const { radius } = centerAndRadiusFromBounds(THREE, bounds, runtime.scale);\n const useSilhouette = shouldBuildSilhouette(edgeSettings, displayMode, settings);\n const renderParts = resolvePartsToRender(meshData, theme, settings);\n const partFillIndexMap = buildPartFillIndexMap(renderParts);\n const useWholeMesh = renderParts.length === 0;\n const records = [];\n\n const makeRecord = ({ part = null, geometryEntry, fillIndex = 0, baseTransform = null }) => {\n const partId = part ? String(part?.id || part?.occurrenceId || `part:${records.length}`) : MODEL_PART_ID;\n const wireframeMode = displayModeIsWireframe(displayMode);\n const forceFill = materialSettings.overrideSourceColors === true || wireframeMode;\n const sourceVertexColors = !!geometryEntry.geometry.getAttribute(\"color\");\n const useSurfaceEdges = !wireframeMode &&\n !displayModeShowsThroughEdges(displayMode) &&\n edgeSettings.enabled &&\n geometryHasSurfaceEdgeAttributes(geometryEntry.geometry);\n const sourceColor = sourceColorForPart(THREE, part, meshData);\n const sourceOpacity = sourceOpacityForPart(part);\n const hasSourceColor = sourceVertexColors || !!sourceColor;\n const hasVertexColors = !forceFill && sourceVertexColors;\n const baseColor = resolveSourceBaseColor(THREE, {\n hasVertexColors,\n sourceColor: forceFill ? null : sourceColor,\n materialSettings,\n fallbackColor: materialSettings.defaultColor || baseTheme?.surface || DEFAULT_THEME.surface,\n fillIndex,\n forceFill: forceFill || !hasSourceColor\n });\n const material = wireframeMode\n ? createWireframeSurfaceMaterial(THREE, materialSettings, fillIndex)\n : displayModeUsesUnlitSurfaces(displayMode)\n ? createUnshadedSurfaceMaterial(THREE, {\n color: baseColor,\n useVertexColors: hasVertexColors,\n opacity: displayModeSurfaceOpacity(displayMode, materialSettings.opacity)\n })\n : createSurfaceMaterial(THREE, baseTheme, {\n color: baseColor,\n useVertexColors: hasVertexColors,\n edgeSettings: useSurfaceEdges ? edgeSettings : null\n });\n if (edgeSettings.enabled && !wireframeMode && !useSurfaceEdges) {\n material.polygonOffset = true;\n material.polygonOffsetFactor = 1;\n material.polygonOffsetUnits = 1;\n }\n const mesh = new THREE.Mesh(geometryEntry.geometry, material);\n mesh.castShadow = true;\n mesh.receiveShadow = false;\n mesh.userData.partId = partId;\n const faceIds = part\n ? settings.callbacks?.faceIdsForPart?.(part)\n : settings.callbacks?.faceIdsForMesh?.(meshData);\n if (faceIds) {\n mesh.userData.faceIds = faceIds;\n }\n runtime.modelGroup.add(mesh);\n\n const record = {\n partId,\n sourcePart: part || null,\n mesh,\n edges: null,\n silhouette: null,\n material,\n edgeMaterial: null,\n baseColor,\n sourceColor,\n sourceOpacity,\n baseTransform,\n partCenter: readBoundsCenter(THREE, part?.bounds || bounds),\n partBounds: part?.bounds || part?.sourceBounds || bounds,\n effectMatrix: null,\n effectStyle: null,\n effectVisible: null,\n effectHighlighted: false,\n fillIndex,\n hasSourceColor,\n hasVertexColors,\n useVertexColors: hasVertexColors,\n rawColors: geometryEntry.rawColors,\n geometry: geometryEntry.geometry,\n baseOpacity: Number.isFinite(Number(material.opacity)) ? Number(material.opacity) : 1,\n baseEmissiveColor: baseColor ? baseColor.clone() : null,\n baseEmissiveIntensity: 0,\n baseEdgeColor: null,\n baseEdgeOpacity: 1\n };\n\n if (useSilhouette) {\n const silhouette = createSilhouetteMesh(THREE, geometryEntry.geometry, edgeSettings, radius);\n if (silhouette) {\n record.silhouette = silhouette;\n runtime.modelGroup.add(silhouette);\n }\n }\n\n if (settings.selection?.showEdges !== false && !useSurfaceEdges && (edgeSettings.enabled || wireframeMode)) {\n addEdgeObject(\n THREE,\n runtime,\n record,\n buildEdgeGeometry(THREE, meshData, part, geometryEntry.geometry, displayMode, edgeSettings),\n settings\n );\n }\n\n applyMaterialSettingsToRecord(THREE, record, materialSettings, {\n baseTheme,\n displayMode\n });\n applyDisplayRecordTransform(THREE, record);\n records.push(record);\n };\n\n if (useWholeMesh) {\n const geometryEntry = buildWholeGeometryEntry(THREE, meshData, settings.recomputeNormals === true);\n if (geometryEntry) {\n makeRecord({ geometryEntry, fillIndex: 0 });\n }\n } else {\n for (const part of renderParts) {\n const geometryEntry = buildPartGeometryEntry(THREE, meshData, part, settings.recomputeNormals === true);\n if (!geometryEntry) {\n continue;\n }\n makeRecord({\n part,\n geometryEntry,\n fillIndex: partFillIndexMap.get(part) ?? records.length,\n baseTransform: displayTransformForPart(meshData, part, settings.renderPartsIndividually === true)\n });\n }\n }\n\n return records;\n}\n\nfunction settingsSignature(meshData, theme, settings) {\n const edgeSettings = normalizeDisplayEdgeSettings(theme?.edges);\n return JSON.stringify({\n meshData: meshData ? \"mesh\" : \"\",\n displayMode: normalizeDisplayMode(settings.displayMode),\n parts: cacheKey(resolvePartsToRender(meshData, theme, settings)),\n recomputeNormals: settings.recomputeNormals === true,\n edgeSettings,\n silhouette: settings.silhouette !== false &&\n edgeSettings.silhouette === true &&\n (edgeSettings.enabled !== false || settings.silhouette === true),\n edgeRendering: settings.edgeRendering?.mode || \"basic\",\n wireframeEdgeColor: settings.edgeRendering?.wireframeEdgeColor || \"\"\n });\n}\n\nfunction normalizeSettings(settings = {}) {\n const displayMode = normalizeDisplayMode(settings.displayMode);\n const sourceTheme = settings.theme || settings.themeSettings || settings.settings || undefined;\n const normalizedTheme = normalizeThemeSettings(sourceTheme);\n const themeEdgeSettings = normalizeDisplayEdgeSettings(sourceTheme?.edges);\n const applyDisplayModeEdgePolicy = settings.applyDisplayModeEdgePolicy !== false;\n const theme = {\n ...normalizedTheme,\n edges: applyDisplayModeEdgePolicy\n ? {\n ...themeEdgeSettings,\n enabled: displayModeAllowsEdges(displayMode) &&\n (displayModeForcesEdges(displayMode) || themeEdgeSettings.enabled === true),\n depthTest: displayModeShowsThroughEdges(displayMode) ? false : themeEdgeSettings.depthTest\n }\n : themeEdgeSettings\n };\n const scale = normalizeCadSceneScale(settings.scale ?? settings.sceneScale ?? settings.sceneScaleMode);\n const callbacks = settings.callbacks && typeof settings.callbacks === \"object\" ? settings.callbacks : {};\n const baseTheme = settings.baseTheme && typeof settings.baseTheme === \"object\" ? settings.baseTheme : DEFAULT_THEME;\n return {\n ...settings,\n theme,\n displayMode,\n scale,\n callbacks,\n baseTheme,\n selection: normalizeSelection(settings.selection),\n filterSelection: settings.filterSelection === false\n ? {}\n : normalizeSelection(settings.filterSelection ?? settings.selection),\n clip: normalizeStepClipSettings(settings.clip),\n stepParameters: settings.stepParameters || null,\n parameterSetup: settings.parameterSetup !== false,\n materialSettings: resolveMaterialSettings(theme, settings),\n edgeRendering: normalizeEdgeRendering(settings.edgeRendering)\n };\n}\n\nfunction setRuntimeTheme(runtime, settings) {\n runtime.theme = settings.theme;\n runtime.displayMode = settings.displayMode;\n runtime.scale = settings.scale;\n runtime.baseTheme = settings.baseTheme;\n runtime.edgeSettings = {\n ...normalizeDisplayEdgeSettings(settings.theme?.edges),\n depthTest: displayModeShowsThroughEdges(settings.displayMode) ? false : undefined\n };\n runtime.materialSettings = settings.materialSettings;\n applyEdgeRenderingToRuntime(runtime, settings.edgeRendering);\n}\n\nfunction meshDataFromSource(source) {\n return source?.meshData || source;\n}\n\nexport function buildModel(THREE, source, settings = {}) {\n if (!THREE) {\n throw new Error(\"buildModel requires THREE\");\n }\n const rawMeshData = meshDataFromSource(source);\n const normalized = normalizeSettings(settings);\n const meshData = filterMeshDataForSelection(rawMeshData, normalized.filterSelection);\n const root = new THREE.Group();\n const modelGroup = new THREE.Group();\n const edgesGroup = new THREE.Group();\n root.name = \"CadSceneRoot\";\n modelGroup.name = \"CadSceneModel\";\n edgesGroup.name = \"CadSceneEdges\";\n root.add(modelGroup);\n root.add(edgesGroup);\n\n const baseBounds = meshData?.bounds || boundsFromVertices(meshData?.vertices || []);\n const runtime = {\n THREE,\n root,\n modelGroup,\n edgesGroup,\n displayRecords: [],\n records: [],\n baseBounds,\n bounds: baseBounds,\n modelBounds: baseBounds,\n modelRadius: centerAndRadiusFromBounds(THREE, baseBounds, normalized.scale).radius,\n cleanups: [],\n activeClipPlane: null,\n activeClipPlanes: [],\n screenSpaceLineMaterials: new Set(),\n syncScreenSpaceLineMaterials(width, height) {\n syncScreenSpaceLineMaterialResolution(runtime.screenSpaceLineMaterials, width, height);\n },\n registerScreenSpaceLineMaterial(material) {\n if (!material?.resolution?.set) {\n return;\n }\n runtime.screenSpaceLineMaterials.add(material);\n },\n unregisterScreenSpaceLineMaterial(material) {\n runtime.screenSpaceLineMaterials.delete(material);\n },\n requestRender: () => {}\n };\n setRuntimeTheme(runtime, normalized);\n\n let disposed = false;\n let currentSettings = normalized;\n let currentSignature = \"\";\n let activeParameters = null;\n let activeParameterSetup = false;\n\n const rebuild = (nextSettings = currentSettings) => {\n clearGroup(modelGroup);\n clearGroup(edgesGroup);\n setRuntimeTheme(runtime, nextSettings);\n runtime.baseBounds = meshData?.bounds || boundsFromVertices(meshData?.vertices || []);\n runtime.displayRecords = buildDisplayRecords(THREE, runtime, meshData, nextSettings);\n runtime.records = runtime.displayRecords;\n runtime.bounds = runtime.baseBounds;\n runtime.modelBounds = runtime.baseBounds;\n runtime.modelRadius = centerAndRadiusFromBounds(THREE, runtime.baseBounds, runtime.scale).radius;\n currentSignature = settingsSignature(meshData, runtime.theme, nextSettings);\n };\n\n const applyMutableState = (nextSettings = currentSettings) => {\n setRuntimeTheme(runtime, nextSettings);\n for (const record of runtime.displayRecords) {\n applyMaterialSettingsToRecord(THREE, record, runtime.materialSettings, {\n baseTheme: runtime.baseTheme,\n displayMode: runtime.displayMode\n });\n }\n const nextParameterSetup = nextSettings.parameterSetup !== false;\n const nextParameters = nextSettings.stepParameters || null;\n if (activeParameters !== nextParameters || activeParameterSetup !== nextParameterSetup) {\n if (activeParameterSetup) {\n cleanupParameterRuntime(runtime, activeParameters, nextSettings.callbacks);\n }\n activeParameters = nextParameters;\n activeParameterSetup = nextParameterSetup;\n if (activeParameterSetup) {\n runParameterSetup(THREE, runtime, activeParameters, meshData, nextSettings.callbacks);\n }\n }\n const effectiveBounds = applyParameters(THREE, runtime, activeParameters, meshData, nextSettings.callbacks);\n runtime.bounds = effectiveBounds || runtime.baseBounds;\n runtime.modelBounds = runtime.bounds;\n runtime.modelRadius = centerAndRadiusFromBounds(THREE, runtime.bounds, runtime.scale).radius;\n applyPartVisualState(THREE, runtime.displayRecords, {\n baseTheme: runtime.baseTheme,\n edgeSettings: runtime.edgeSettings,\n ...nextSettings.selection,\n showEdges: nextSettings.selection?.showEdges !== false\n });\n syncClip(runtime, nextSettings.clip, runtime.bounds, nextSettings.modelOffset || modelGroup.position);\n };\n\n rebuild(currentSettings);\n applyMutableState(currentSettings);\n\n const api = {\n source,\n meshData,\n root,\n modelGroup,\n edgesGroup,\n get displayRecords() {\n return runtime.displayRecords;\n },\n get records() {\n return runtime.displayRecords;\n },\n get bounds() {\n return runtime.bounds;\n },\n get radius() {\n return runtime.modelRadius;\n },\n get runtime() {\n return runtime;\n },\n update(nextSettings = {}) {\n if (disposed) {\n return api;\n }\n const mergedSettings = {\n ...currentSettings,\n ...nextSettings,\n selection: {\n ...(currentSettings.selection || {}),\n ...(nextSettings.selection || {})\n },\n callbacks: {\n ...(currentSettings.callbacks || {}),\n ...(nextSettings.callbacks || {})\n }\n };\n if (\n Object.prototype.hasOwnProperty.call(nextSettings, \"theme\") &&\n !Object.prototype.hasOwnProperty.call(nextSettings, \"materialSettings\")\n ) {\n delete mergedSettings.materialSettings;\n }\n currentSettings = normalizeSettings(mergedSettings);\n const nextSignature = settingsSignature(meshData, currentSettings.theme, currentSettings);\n if (nextSignature !== currentSignature) {\n rebuild(currentSettings);\n }\n applyMutableState(currentSettings);\n return api;\n },\n dispose() {\n if (disposed) {\n return;\n }\n disposed = true;\n if (activeParameterSetup) {\n cleanupParameterRuntime(runtime, activeParameters, currentSettings.callbacks);\n }\n clearGroup(root);\n }\n };\n\n return api;\n}\n\nexport function fitCameraToModel(THREE, camera, bounds, {\n direction = [1, -1, 0.8],\n up = [0, 0, 1],\n width = 1400,\n height = 900,\n padding = 0.12,\n scale = CAD_SCENE_SCALE.CAD,\n lockedHalfHeight = null\n} = {}) {\n const sceneScale = normalizeCadSceneScale(scale);\n const settings = getSceneScaleSettings(sceneScale);\n const { center, radius } = centerAndRadiusFromBounds(THREE, bounds, sceneScale);\n const viewDirection = new THREE.Vector3(...direction).normalize();\n const viewUp = new THREE.Vector3(...up).normalize();\n const distance = Math.max(radius * 3.2, settings.minModelRadius * 10);\n camera.position.copy(center).add(viewDirection.multiplyScalar(distance));\n camera.up.copy(viewUp);\n camera.lookAt(center);\n\n const aspect = Math.max(width / Math.max(height, 1), 0.01);\n const right = new THREE.Vector3().crossVectors(viewDirection, viewUp).normalize();\n const screenUp = new THREE.Vector3().crossVectors(right, viewDirection).normalize();\n const corners = boundsCorners(THREE, bounds);\n const xs = corners.map((corner) => corner.dot(right));\n const ys = corners.map((corner) => corner.dot(screenUp));\n const minSpan = settings.minModelRadius;\n const spanX = Math.max(Math.max(...xs) - Math.min(...xs), minSpan);\n const spanY = Math.max(Math.max(...ys) - Math.min(...ys), minSpan);\n const safeContentScale = Math.max(1 - (clamp(Number(padding) || 0, 0.1, 0.4) * 2), 0.1);\n const halfHeight = lockedHalfHeight || Math.max(\n spanY / (2 * safeContentScale),\n spanX / (2 * aspect * safeContentScale),\n minSpan / 2\n );\n camera.top = halfHeight;\n camera.bottom = -halfHeight;\n camera.left = -halfHeight * aspect;\n camera.right = halfHeight * aspect;\n camera.near = 0.01;\n camera.far = Math.max(distance + radius * 6, sceneScale === CAD_SCENE_SCALE.URDF ? 10 : 1000);\n camera.updateProjectionMatrix?.();\n return {\n center,\n radius,\n halfHeight,\n distance\n };\n}\n","import {\n applyDisplayRecordTransform,\n buildStepClipPlane,\n readBoundsCenter,\n syncMaterialClipPlanes\n} from \"../../common/cadScene.js\";\nimport {\n clampSceneModelRadius,\n getShadowCameraSettings,\n normalizeSceneScaleMode,\n VIEWER_SCENE_SCALE\n} from \"./sceneScale.js\";\n\nexport {\n applyDisplayRecordTransform,\n buildStepClipPlane,\n readBoundsCenter,\n syncMaterialClipPlanes\n};\n\nexport function toNumber(value, fallback = 0) {\n return Number.isFinite(Number(value)) ? Number(value) : fallback;\n}\n\nexport function normalizeRuntimeModelKey(value) {\n return String(value ?? \"\").trim();\n}\n\nexport function runtimeModelKeyMatches(runtime, modelKey) {\n if (!runtime?.hasVisibleModel) {\n return false;\n }\n const activeModelKey = normalizeRuntimeModelKey(runtime.activeModelKey);\n const currentModelKey = normalizeRuntimeModelKey(modelKey);\n return activeModelKey || currentModelKey\n ? activeModelKey === currentModelKey\n : true;\n}\n\nexport function resolveRuntimeModelFloorZ(bounds, modelPosition, sceneScaleMode) {\n const positionZ = toNumber(modelPosition?.z);\n if (normalizeSceneScaleMode(sceneScaleMode) === VIEWER_SCENE_SCALE.URDF) {\n return positionZ;\n }\n const boundsMin = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n return toNumber(boundsMin[2]) + positionZ;\n}\n\nexport function applyRuntimeModelBounds(THREE, runtime, bounds, sceneScaleMode, {\n shadowMapSize = 2048\n} = {}) {\n const boundsMin = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const boundsMax = Array.isArray(bounds?.max) ? bounds.max : [0, 0, 0];\n const radius = clampSceneModelRadius(\n new THREE.Vector3(\n toNumber(boundsMax[0]) - toNumber(boundsMin[0]),\n toNumber(boundsMax[1]) - toNumber(boundsMin[1]),\n toNumber(boundsMax[2]) - toNumber(boundsMin[2])\n ).length() / 2,\n sceneScaleMode\n );\n runtime.modelBounds = {\n min: boundsMin,\n max: boundsMax\n };\n runtime.modelRadius = radius;\n if (runtime.keyLight?.shadow?.camera) {\n const keyLightDistance = typeof runtime.keyLight.position?.length === \"function\"\n ? runtime.keyLight.position.length()\n : 0;\n const shadowSettings = getShadowCameraSettings(sceneScaleMode, {\n radius,\n keyLightDistance\n });\n runtime.keyLight.shadow.mapSize.set(shadowMapSize, shadowMapSize);\n runtime.keyLight.shadow.bias = -0.00025;\n runtime.keyLight.shadow.normalBias = shadowSettings.normalBias;\n runtime.keyLight.shadow.radius = shadowSettings.radius;\n runtime.keyLight.shadow.camera.left = -shadowSettings.extent;\n runtime.keyLight.shadow.camera.right = shadowSettings.extent;\n runtime.keyLight.shadow.camera.top = shadowSettings.extent;\n runtime.keyLight.shadow.camera.bottom = -shadowSettings.extent;\n runtime.keyLight.shadow.camera.near = 0.1;\n runtime.keyLight.shadow.camera.far = shadowSettings.far;\n runtime.keyLight.shadow.camera.updateProjectionMatrix?.();\n }\n return {\n boundsMin,\n boundsMax,\n radius\n };\n}\n\nexport function syncObjectClipPlanes(object, clipPlanes) {\n if (!object?.traverse) {\n return;\n }\n object.traverse((child) => {\n syncMaterialClipPlanes(child?.material, clipPlanes);\n });\n}\n\nexport function syncRuntimeStepClipPlane(runtime, clipSettings) {\n if (!runtime?.THREE) {\n return;\n }\n const clipPlane = buildStepClipPlane(\n runtime.THREE,\n clipSettings,\n runtime.modelBounds,\n runtime.modelGroup?.position\n );\n const clipPlanes = clipPlane ? [clipPlane] : [];\n runtime.activeClipPlane = clipPlane;\n runtime.activeClipPlanes = clipPlanes;\n if (runtime.renderer) {\n runtime.renderer.localClippingEnabled = true;\n }\n for (const record of Array.isArray(runtime.displayRecords) ? runtime.displayRecords : []) {\n syncMaterialClipPlanes(record.material, clipPlanes);\n syncMaterialClipPlanes(record.edgeMaterial, clipPlanes);\n }\n syncObjectClipPlanes(runtime.facePickGroup, clipPlanes);\n syncObjectClipPlanes(runtime.edgePickGroup, clipPlanes);\n syncObjectClipPlanes(runtime.vertexPickGroup, clipPlanes);\n syncObjectClipPlanes(runtime.surfaceLineGroup, clipPlanes);\n syncObjectClipPlanes(runtime.topologyDisplayEdgeLine, clipPlanes);\n}\n","export const TOPOLOGY_FACE_ID_NONE = 0xffffffff;\n\nexport function buildFacePickMesh(THREE, selectorRuntime) {\n const proxy = selectorRuntime?.proxy || {};\n if (!(proxy.facePositions instanceof Float32Array) || !(proxy.faceIndices instanceof Uint32Array) || !proxy.faceIndices.length) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(proxy.facePositions, 3));\n geometry.setIndex(new THREE.BufferAttribute(proxy.faceIndices, 1));\n const material = new THREE.MeshBasicMaterial({\n color: 0xffffff,\n side: THREE.DoubleSide,\n transparent: true,\n opacity: 0,\n depthWrite: false,\n toneMapped: false,\n colorWrite: false,\n });\n const mesh = new THREE.Mesh(geometry, material);\n mesh.userData.faceIds = proxy.faceIds || new Uint32Array(0);\n mesh.frustumCulled = false;\n return mesh;\n}\n\nfunction faceRunColumnIndexes(selectorRuntime) {\n const columns = Array.isArray(selectorRuntime?.proxy?.faceRunColumns) && selectorRuntime.proxy.faceRunColumns.length\n ? selectorRuntime.proxy.faceRunColumns\n : [\"occurrenceRow\", \"primitiveIndex\", \"triangleStart\", \"triangleCount\", \"faceRow\"];\n return {\n stride: columns.length,\n occurrenceRow: Math.max(0, columns.indexOf(\"occurrenceRow\")),\n primitiveIndex: Math.max(0, columns.indexOf(\"primitiveIndex\")),\n triangleStart: Math.max(0, columns.indexOf(\"triangleStart\")),\n triangleCount: Math.max(0, columns.indexOf(\"triangleCount\")),\n faceRow: Math.max(0, columns.indexOf(\"faceRow\"))\n };\n}\n\nexport function buildGlbFaceIdsForPart(part, selectorRuntime) {\n const runs = selectorRuntime?.proxy?.faceRuns;\n const triangleCount = Math.max(0, Math.floor(Number(part?.triangleCount || 0)));\n if (!(runs instanceof Uint32Array) || !runs.length || triangleCount <= 0) {\n return null;\n }\n const occurrenceId = String(part?.occurrenceId || part?.id || \"\").trim();\n if (!occurrenceId) {\n return null;\n }\n const primitiveIndex = Math.max(0, Math.floor(Number(part?.primitiveIndex || 0)));\n const columns = faceRunColumnIndexes(selectorRuntime);\n const faceIds = new Uint32Array(triangleCount);\n faceIds.fill(TOPOLOGY_FACE_ID_NONE);\n const sourcePartRanges = Array.isArray(part?.sourcePartRanges)\n ? part.sourcePartRanges\n .map((range) => ({\n occurrenceId: String(range?.occurrenceId || \"\").trim(),\n primitiveIndex: Math.max(0, Math.floor(Number(range?.primitiveIndex || 0))),\n triangleOffset: Math.max(0, Math.floor(Number(range?.triangleOffset || 0))),\n triangleCount: Math.max(0, Math.floor(Number(range?.triangleCount || 0)))\n }))\n .filter((range) => range.occurrenceId && range.triangleCount > 0)\n : [];\n let matched = false;\n for (let offset = 0; offset + columns.stride <= runs.length; offset += columns.stride) {\n const runOccurrenceId = selectorRuntime?.occurrenceIdByRowIndex?.get?.(Number(runs[offset + columns.occurrenceRow]));\n const triangleStart = Number(runs[offset + columns.triangleStart]);\n const runTriangleCount = Number(runs[offset + columns.triangleCount]);\n const faceRow = Number(runs[offset + columns.faceRow]);\n if (\n !Number.isInteger(triangleStart) ||\n !Number.isInteger(runTriangleCount) ||\n !Number.isInteger(faceRow) ||\n triangleStart < 0 ||\n runTriangleCount <= 0 ||\n faceRow < 0\n ) {\n continue;\n }\n if (sourcePartRanges.length) {\n for (const range of sourcePartRanges) {\n if (runOccurrenceId !== range.occurrenceId || Number(runs[offset + columns.primitiveIndex]) !== range.primitiveIndex) {\n continue;\n }\n if (triangleStart >= range.triangleCount) {\n continue;\n }\n const start = range.triangleOffset + triangleStart;\n const end = Math.min(range.triangleOffset + triangleStart + runTriangleCount, range.triangleOffset + range.triangleCount, triangleCount);\n if (end <= start || start >= triangleCount) {\n continue;\n }\n faceIds.fill(faceRow, start, end);\n matched = true;\n }\n continue;\n }\n if (runOccurrenceId !== occurrenceId || Number(runs[offset + columns.primitiveIndex]) !== primitiveIndex || triangleStart >= triangleCount) {\n continue;\n }\n const end = Math.min(triangleStart + runTriangleCount, triangleCount);\n faceIds.fill(faceRow, triangleStart, end);\n matched = true;\n }\n return matched ? faceIds : null;\n}\n\nexport function buildGlbFaceIdsForMesh(meshData, selectorRuntime) {\n const triangleCount = Math.floor((meshData?.indices?.length || 0) / 3);\n const parts = Array.isArray(meshData?.parts) ? meshData.parts : [];\n if (triangleCount <= 0 || !parts.length) {\n return null;\n }\n const faceIds = new Uint32Array(triangleCount);\n faceIds.fill(TOPOLOGY_FACE_ID_NONE);\n let matched = false;\n for (const part of parts) {\n const partFaceIds = buildGlbFaceIdsForPart(part, selectorRuntime);\n if (!partFaceIds) {\n continue;\n }\n const triangleOffset = Math.max(0, Math.floor(Number(part?.triangleOffset || 0)));\n const end = Math.min(triangleOffset + partFaceIds.length, faceIds.length);\n if (end <= triangleOffset) {\n continue;\n }\n faceIds.set(partFaceIds.subarray(0, end - triangleOffset), triangleOffset);\n matched = true;\n }\n return matched ? faceIds : null;\n}\n\nfunction sourcePartForRecord(record, partId) {\n const sourcePart = record?.sourcePart || record?.part || null;\n const sourcePartId = String(sourcePart?.id || sourcePart?.occurrenceId || \"\").trim();\n return sourcePartId && sourcePartId === partId ? sourcePart : null;\n}\n\nexport function syncDisplayMeshFaceIds(runtime, meshData, selectorRuntime) {\n const records = Array.isArray(runtime?.displayRecords) ? runtime.displayRecords : [];\n if (!records.length) {\n return;\n }\n const partsById = new Map(\n (Array.isArray(meshData?.parts) ? meshData.parts : [])\n .map((part) => [String(part?.id || \"\"), part])\n .filter(([partId]) => partId)\n );\n for (const record of records) {\n const mesh = record?.mesh;\n if (!mesh?.userData) {\n continue;\n }\n let faceIds = null;\n const partId = String(record?.partId || \"\").trim();\n if (partId && partId !== \"__model__\") {\n const part = partsById.get(partId) || sourcePartForRecord(record, partId);\n faceIds = part ? buildGlbFaceIdsForPart(part, selectorRuntime) : null;\n } else {\n faceIds = buildGlbFaceIdsForMesh(meshData, selectorRuntime);\n }\n if (faceIds) {\n mesh.userData.faceIds = faceIds;\n } else {\n delete mesh.userData.faceIds;\n }\n }\n}\n\nexport function buildEdgePickLines(THREE, selectorRuntime) {\n const proxy = selectorRuntime?.proxy || {};\n if (!(proxy.edgePositions instanceof Float32Array) || !(proxy.edgeIndices instanceof Uint32Array) || !proxy.edgeIndices.length) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(proxy.edgePositions, 3));\n geometry.setIndex(new THREE.BufferAttribute(proxy.edgeIndices, 1));\n const material = new THREE.LineBasicMaterial({\n color: 0xffffff,\n transparent: true,\n opacity: 0,\n depthWrite: false,\n toneMapped: false,\n });\n const lines = new THREE.LineSegments(geometry, material);\n lines.userData.edgeIds = proxy.edgeIds || new Uint32Array(0);\n lines.frustumCulled = false;\n return lines;\n}\n\nexport function buildVertexPickPoints(THREE, selectorRuntime) {\n const proxy = selectorRuntime?.proxy || {};\n if (!(proxy.vertexPositions instanceof Float32Array) || !proxy.vertexPositions.length) {\n return null;\n }\n const geometry = new THREE.BufferGeometry();\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(proxy.vertexPositions, 3));\n const material = new THREE.PointsMaterial({\n color: 0xffffff,\n transparent: true,\n opacity: 0,\n size: 1.5,\n sizeAttenuation: false,\n depthWrite: false,\n toneMapped: false,\n });\n const points = new THREE.Points(geometry, material);\n points.userData.vertexIds = proxy.vertexIds || new Uint32Array(0);\n points.frustumCulled = false;\n return points;\n}\n\nfunction clearPickGroup(group, clearSceneGroup) {\n if (typeof clearSceneGroup === \"function\") {\n clearSceneGroup(group);\n return;\n }\n while (group?.children?.length) {\n group.remove(group.children[0]);\n }\n}\n\nexport function syncSelectorPickGroups(runtime, selectorRuntime, modelOffset = null, {\n clearSceneGroup = null\n} = {}) {\n if (!runtime?.THREE || !runtime?.facePickGroup || !runtime?.edgePickGroup || !runtime?.vertexPickGroup) {\n return;\n }\n\n clearPickGroup(runtime.facePickGroup, clearSceneGroup);\n clearPickGroup(runtime.edgePickGroup, clearSceneGroup);\n clearPickGroup(runtime.vertexPickGroup, clearSceneGroup);\n runtime.facePickMesh = null;\n runtime.edgePickLines = null;\n runtime.vertexPickPoints = null;\n runtime.edgePickObjects = [];\n\n const facePickMesh = buildFacePickMesh(runtime.THREE, selectorRuntime);\n if (facePickMesh) {\n runtime.facePickMesh = facePickMesh;\n runtime.facePickGroup.add(facePickMesh);\n }\n\n const edgePickLines = buildEdgePickLines(runtime.THREE, selectorRuntime);\n if (edgePickLines) {\n runtime.edgePickLines = edgePickLines;\n runtime.edgePickGroup.add(edgePickLines);\n runtime.edgePickObjects = [edgePickLines];\n }\n\n const vertexPickPoints = buildVertexPickPoints(runtime.THREE, selectorRuntime);\n if (vertexPickPoints) {\n runtime.vertexPickPoints = vertexPickPoints;\n runtime.vertexPickGroup.add(vertexPickPoints);\n }\n\n if (modelOffset) {\n runtime.facePickGroup.position.copy(modelOffset);\n runtime.edgePickGroup.position.copy(modelOffset);\n runtime.vertexPickGroup.position.copy(modelOffset);\n } else {\n runtime.facePickGroup.position.set(0, 0, 0);\n runtime.edgePickGroup.position.set(0, 0, 0);\n runtime.vertexPickGroup.position.set(0, 0, 0);\n }\n runtime.facePickGroup.updateMatrixWorld(true);\n runtime.edgePickGroup.updateMatrixWorld(true);\n runtime.vertexPickGroup.updateMatrixWorld(true);\n}\n","export const SURFACE_LINE_UNSUPPORTED_TYPES = new Set([\"\", \"SPHERICAL_SURFACE\", \"TOROIDAL_SURFACE\", \"BSPLINE_SURFACE\"]);\n\nfunction length(vector) {\n return Math.hypot(vector[0], vector[1], vector[2]);\n}\n\nfunction normalizeVector3(vector) {\n const magnitude = length(vector);\n if (magnitude <= 1e-9) {\n return null;\n }\n return [vector[0] / magnitude, vector[1] / magnitude, vector[2] / magnitude];\n}\n\nfunction subtract(a, b) {\n return [Number(a[0]) - Number(b[0]), Number(a[1]) - Number(b[1]), Number(a[2]) - Number(b[2])];\n}\n\nfunction dot(a, b) {\n return (Number(a[0]) * Number(b[0])) + (Number(a[1]) * Number(b[1])) + (Number(a[2]) * Number(b[2]));\n}\n\nfunction normalizeAngleAround(angle, center) {\n let adjusted = angle;\n while (adjusted - center > Math.PI) {\n adjusted -= Math.PI * 2;\n }\n while (adjusted - center < -Math.PI) {\n adjusted += Math.PI * 2;\n }\n return adjusted;\n}\n\nfunction clonePoint3(point) {\n return Array.isArray(point) && point.length >= 3\n ? [Number(point[0]), Number(point[1]), Number(point[2])]\n : null;\n}\n\nfunction clonePoint2(point) {\n return Array.isArray(point) && point.length >= 2\n ? [Number(point[0]), Number(point[1])]\n : null;\n}\n\nexport function projectPointToPlane(point, surface) {\n if (!Array.isArray(point) || !Array.isArray(surface?.origin) || !Array.isArray(surface?.xDir) || !Array.isArray(surface?.yDir)) {\n return null;\n }\n const relative = subtract(point, surface.origin);\n return [dot(relative, surface.xDir), dot(relative, surface.yDir)];\n}\n\nexport function projectPointToCylinder(point, surface, angleCenter = null) {\n if (\n !Array.isArray(point) ||\n !Array.isArray(surface?.origin) ||\n !Array.isArray(surface?.axis) ||\n !Array.isArray(surface?.xDir) ||\n !Array.isArray(surface?.yDir) ||\n Number(surface?.radius) <= 0\n ) {\n return null;\n }\n const radius = Number(surface.radius);\n const relative = subtract(point, surface.origin);\n const axial = dot(relative, surface.axis);\n const radial = [\n relative[0] - (Number(surface.axis[0]) * axial),\n relative[1] - (Number(surface.axis[1]) * axial),\n relative[2] - (Number(surface.axis[2]) * axial)\n ];\n const rawAngle = Math.atan2(dot(radial, surface.yDir), dot(radial, surface.xDir));\n const center = Number(angleCenter);\n const angle = Number.isFinite(center) ? normalizeAngleAround(rawAngle, center) : rawAngle;\n return [angle * radius, axial];\n}\n\nexport function projectPointToSurfaceUv(surface, point, angleCenter = null) {\n if (!surface || !Array.isArray(point) || point.length < 3) {\n return null;\n }\n if (\n surface.type === \"PLANE\" &&\n Array.isArray(surface.origin) &&\n Array.isArray(surface.xDir) &&\n Array.isArray(surface.yDir)\n ) {\n return projectPointToPlane(point, surface);\n }\n if (\n surface.type === \"CYLINDRICAL_SURFACE\" &&\n Array.isArray(surface.origin) &&\n Array.isArray(surface.axis) &&\n Array.isArray(surface.xDir) &&\n Array.isArray(surface.yDir) &&\n Number(surface.radius) > 0\n ) {\n return projectPointToCylinder(point, surface, angleCenter);\n }\n return null;\n}\n\nexport function pointOnSurfaceFromUv(surface, uv) {\n if (!surface || !Array.isArray(uv) || uv.length < 2) {\n return null;\n }\n if (\n surface.type === \"PLANE\" &&\n Array.isArray(surface.origin) &&\n Array.isArray(surface.xDir) &&\n Array.isArray(surface.yDir)\n ) {\n return [\n surface.origin[0] + surface.xDir[0] * uv[0] + surface.yDir[0] * uv[1],\n surface.origin[1] + surface.xDir[1] * uv[0] + surface.yDir[1] * uv[1],\n surface.origin[2] + surface.xDir[2] * uv[0] + surface.yDir[2] * uv[1]\n ];\n }\n if (\n surface.type === \"CYLINDRICAL_SURFACE\" &&\n Array.isArray(surface.origin) &&\n Array.isArray(surface.axis) &&\n Array.isArray(surface.xDir) &&\n Array.isArray(surface.yDir) &&\n Number(surface.radius) > 0\n ) {\n const radius = Number(surface.radius);\n const theta = uv[0] / radius;\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n return [\n surface.origin[0] + surface.axis[0] * uv[1] + radius * (surface.xDir[0] * cosTheta + surface.yDir[0] * sinTheta),\n surface.origin[1] + surface.axis[1] * uv[1] + radius * (surface.xDir[1] * cosTheta + surface.yDir[1] * sinTheta),\n surface.origin[2] + surface.axis[2] * uv[1] + radius * (surface.xDir[2] * cosTheta + surface.yDir[2] * sinTheta)\n ];\n }\n return null;\n}\n\nexport function surfaceNormalAtUv(surface, uv) {\n if (!surface || !Array.isArray(uv) || uv.length < 2) {\n return null;\n }\n if (surface.type === \"PLANE\") {\n return normalizeVector3(surface.normal || []);\n }\n if (\n surface.type === \"CYLINDRICAL_SURFACE\" &&\n Array.isArray(surface.xDir) &&\n Array.isArray(surface.yDir) &&\n Number(surface.radius) > 0\n ) {\n const theta = uv[0] / Number(surface.radius);\n return normalizeVector3([\n surface.xDir[0] * Math.cos(theta) + surface.yDir[0] * Math.sin(theta),\n surface.xDir[1] * Math.cos(theta) + surface.yDir[1] * Math.sin(theta),\n surface.xDir[2] * Math.cos(theta) + surface.yDir[2] * Math.sin(theta)\n ]);\n }\n return null;\n}\n\nexport function buildSurfaceLinePositions(reference, surfaceLine, { segments = 48, offset = 0.04 } = {}) {\n const surface = reference?.pickData?.surface || {};\n const startPoint = clonePoint3(surfaceLine?.startPoint);\n const endPoint = clonePoint3(surfaceLine?.endPoint);\n const startUv = clonePoint2(surfaceLine?.startUv);\n const endUv = clonePoint2(surfaceLine?.endUv);\n\n if (surface.type === \"PLANE\" && startPoint && endPoint) {\n const normal = normalizeVector3(reference?.pickData?.normal || surface.normal || []);\n const project = (point) => normal ? [\n point[0] + normal[0] * offset,\n point[1] + normal[1] * offset,\n point[2] + normal[2] * offset\n ] : point;\n const start = project(startPoint);\n const end = project(endPoint);\n return [\n start[0], start[1], start[2],\n end[0], end[1], end[2]\n ];\n }\n\n if (surface.type === \"CYLINDRICAL_SURFACE\" && startUv && endUv) {\n const linePositions = [];\n const count = Math.max(4, Math.round(Number(segments) || 48));\n let previousPoint = null;\n for (let index = 0; index <= count; index += 1) {\n const t = index / count;\n const uv = [\n startUv[0] + (endUv[0] - startUv[0]) * t,\n startUv[1] + (endUv[1] - startUv[1]) * t\n ];\n const point = pointOnSurfaceFromUv(surface, uv);\n if (!point) {\n continue;\n }\n const normal = surfaceNormalAtUv(surface, uv);\n const offsetPoint = normal ? [\n point[0] + normal[0] * offset,\n point[1] + normal[1] * offset,\n point[2] + normal[2] * offset\n ] : point;\n if (previousPoint) {\n linePositions.push(\n previousPoint[0], previousPoint[1], previousPoint[2],\n offsetPoint[0], offsetPoint[1], offsetPoint[2]\n );\n }\n previousPoint = offsetPoint;\n }\n return linePositions;\n }\n\n if (startPoint && endPoint) {\n return [\n startPoint[0], startPoint[1], startPoint[2],\n endPoint[0], endPoint[1], endPoint[2]\n ];\n }\n\n return [];\n}\n","export function dataUrlToBlob(dataUrl) {\n const parts = String(dataUrl || \"\").split(\",\");\n if (parts.length !== 2) {\n throw new Error(\"Screenshot capture failed\");\n }\n const mimeMatch = parts[0].match(/data:(.*?);base64/);\n const mimeType = mimeMatch?.[1] || \"image/png\";\n const binary = atob(parts[1]);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return new Blob([bytes], { type: mimeType });\n}\n\nexport async function canvasToBlob(canvas) {\n return new Promise((resolve, reject) => {\n if (!canvas) {\n reject(new Error(\"Screenshot capture failed\"));\n return;\n }\n if (typeof canvas.toBlob === \"function\") {\n canvas.toBlob((value) => {\n if (value) {\n resolve(value);\n return;\n }\n reject(new Error(\"Screenshot capture failed\"));\n }, \"image/png\");\n return;\n }\n\n try {\n resolve(dataUrlToBlob(canvas.toDataURL(\"image/png\")));\n } catch (captureError) {\n reject(captureError);\n }\n });\n}\n\nexport function flipPixelsVertically(pixels, width, height) {\n const rowSize = width * 4;\n const flipped = new Uint8ClampedArray(pixels.length);\n for (let row = 0; row < height; row += 1) {\n const sourceStart = (height - row - 1) * rowSize;\n const targetStart = row * rowSize;\n flipped.set(pixels.subarray(sourceStart, sourceStart + rowSize), targetStart);\n }\n return flipped;\n}\n\nexport function normalizeScreenshotCrop(crop, width, height) {\n const fullWidth = Math.max(1, Math.floor(Number(width) || 1));\n const fullHeight = Math.max(1, Math.floor(Number(height) || 1));\n const x = Math.min(Math.max(0, Math.floor(Number(crop?.x) || 0)), fullWidth - 1);\n const y = Math.min(Math.max(0, Math.floor(Number(crop?.y) || 0)), fullHeight - 1);\n const maxWidth = Math.max(1, fullWidth - x);\n const maxHeight = Math.max(1, fullHeight - y);\n const cropWidth = Math.min(Math.max(1, Math.floor(Number(crop?.width) || maxWidth)), maxWidth);\n const cropHeight = Math.min(Math.max(1, Math.floor(Number(crop?.height) || maxHeight)), maxHeight);\n return {\n x,\n y,\n width: cropWidth,\n height: cropHeight,\n isFullFrame: x === 0 && y === 0 && cropWidth === fullWidth && cropHeight === fullHeight\n };\n}\n\nfunction isTransparentCssColor(value) {\n const normalized = String(value || \"\").trim().toLowerCase();\n if (!normalized || normalized === \"transparent\") {\n return true;\n }\n if (/^[a-z]+\\(\\s*[^,]+,\\s*[^,]+,\\s*[^,]+,\\s*0(?:\\.0+)?%?\\s*\\)$/.test(normalized)) {\n return true;\n }\n return /^[a-z]+\\([^)]*\\/\\s*0(?:\\.0+)?%?\\s*\\)$/.test(normalized);\n}\n\nexport function resolveElementBackgroundColor(element, fallback = \"#ffffff\") {\n const getComputedStyle = globalThis.window?.getComputedStyle || globalThis.getComputedStyle;\n let current = element || null;\n const visited = new Set();\n\n while (current && !visited.has(current)) {\n visited.add(current);\n const backgroundColor = typeof getComputedStyle === \"function\"\n ? getComputedStyle(current)?.backgroundColor\n : \"\";\n if (!isTransparentCssColor(backgroundColor)) {\n return backgroundColor;\n }\n current = current.parentElement || null;\n }\n\n const body = globalThis.document?.body || null;\n if (body && !visited.has(body) && typeof getComputedStyle === \"function\") {\n const backgroundColor = getComputedStyle(body)?.backgroundColor;\n if (!isTransparentCssColor(backgroundColor)) {\n return backgroundColor;\n }\n }\n\n return fallback;\n}\n\nexport function paintScreenshotImageData(context, imageData, width, height, {\n backgroundColor = \"\",\n crop = null,\n overlayCanvas = null,\n createCanvas = () => globalThis.document?.createElement?.(\"canvas\")\n} = {}) {\n if (!context) {\n throw new Error(\"Screenshot capture failed\");\n }\n\n const cropRect = normalizeScreenshotCrop(crop, width, height);\n const resolvedBackground = String(backgroundColor || \"\").trim();\n if (resolvedBackground || !cropRect.isFullFrame) {\n const imageCanvas = createCanvas();\n imageCanvas.width = width;\n imageCanvas.height = height;\n const imageContext = imageCanvas.getContext(\"2d\");\n if (!imageContext) {\n throw new Error(\"Screenshot capture failed\");\n }\n imageContext.putImageData(imageData, 0, 0);\n\n const previousFillStyle = context.fillStyle;\n context.fillStyle = \"#ffffff\";\n context.fillStyle = resolvedBackground;\n if (resolvedBackground) {\n context.fillRect(0, 0, cropRect.width, cropRect.height);\n }\n context.drawImage(\n imageCanvas,\n cropRect.x,\n cropRect.y,\n cropRect.width,\n cropRect.height,\n 0,\n 0,\n cropRect.width,\n cropRect.height\n );\n context.fillStyle = previousFillStyle;\n } else {\n context.putImageData(imageData, 0, 0);\n }\n\n if (overlayCanvas) {\n context.drawImage(\n overlayCanvas,\n cropRect.x,\n cropRect.y,\n cropRect.width,\n cropRect.height,\n 0,\n 0,\n cropRect.width,\n cropRect.height\n );\n }\n}\n\nexport function paintScreenshotSourceCanvas(context, sourceCanvas, width, height, {\n backgroundColor = \"\",\n crop = null,\n overlayCanvas = null\n} = {}) {\n if (!context || !sourceCanvas) {\n throw new Error(\"Screenshot capture failed\");\n }\n\n const cropRect = normalizeScreenshotCrop(crop, width, height);\n const resolvedBackground = String(backgroundColor || \"\").trim();\n const previousFillStyle = context.fillStyle;\n if (resolvedBackground) {\n context.fillStyle = \"#ffffff\";\n context.fillStyle = resolvedBackground;\n context.fillRect(0, 0, cropRect.width, cropRect.height);\n }\n context.drawImage(\n sourceCanvas,\n cropRect.x,\n cropRect.y,\n cropRect.width,\n cropRect.height,\n 0,\n 0,\n cropRect.width,\n cropRect.height\n );\n context.fillStyle = previousFillStyle;\n\n if (overlayCanvas) {\n context.drawImage(\n overlayCanvas,\n cropRect.x,\n cropRect.y,\n cropRect.width,\n cropRect.height,\n 0,\n 0,\n cropRect.width,\n cropRect.height\n );\n }\n}\n\n// Render the live framebuffer once and immediately copy it into a 2D export\n// canvas, keeping normal interaction free to use `preserveDrawingBuffer: false`.\nexport async function buildCompositeScreenshotBlob(runtime, overlayCanvas, {\n backgroundColor = \"\",\n crop = null\n} = {}) {\n const renderer = runtime?.renderer;\n const scene = runtime?.scene;\n const camera = runtime?.camera;\n const width = renderer?.domElement?.width || 0;\n const height = renderer?.domElement?.height || 0;\n if (!renderer || !scene || !camera || width <= 0 || height <= 0) {\n throw new Error(\"Screenshot capture failed\");\n }\n\n const previousRenderTarget = renderer.getRenderTarget();\n const previousXrEnabled = renderer.xr?.enabled === true;\n try {\n if (renderer.xr) {\n renderer.xr.enabled = false;\n }\n renderer.setRenderTarget(null);\n renderer.render(scene, camera);\n } finally {\n renderer.setRenderTarget(previousRenderTarget);\n if (renderer.xr) {\n renderer.xr.enabled = previousXrEnabled;\n }\n }\n\n const cropRect = normalizeScreenshotCrop(crop, width, height);\n const exportCanvas = document.createElement(\"canvas\");\n exportCanvas.width = cropRect.width;\n exportCanvas.height = cropRect.height;\n const context = exportCanvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Screenshot capture failed\");\n }\n\n paintScreenshotSourceCanvas(context, renderer.domElement, width, height, {\n backgroundColor,\n crop: cropRect,\n overlayCanvas\n });\n return canvasToBlob(exportCanvas);\n}\n","const WEBGL_CONTEXT_ERROR_PATTERN = /(?:error creating webgl context|webgl context could not be created|failed to create webgl|webgl is not supported)/i;\n\nexport function runtimeErrorMessage(error) {\n return error instanceof Error ? error.message : String(error || \"\");\n}\n\nexport function isWebGlContextCreationError(error) {\n return WEBGL_CONTEXT_ERROR_PATTERN.test(runtimeErrorMessage(error));\n}\n\nexport function buildRuntimeInitializationAlert(error) {\n const message = runtimeErrorMessage(error).trim();\n\n if (isWebGlContextCreationError(error)) {\n return {\n severity: \"error\",\n blocking: true,\n summary: \"WebGL unavailable\",\n title: \"Browser WebGL is unavailable\",\n message: \"CAD Viewer needs browser WebGL to render 3D models, but this browser could not create a WebGL context.\",\n resolution: \"Enable hardware acceleration or software WebGL in the browser, update the graphics or Mesa drivers, then reload CAD Viewer. In Chrome, check chrome://gpu for the WebGL status.\"\n };\n }\n\n return {\n severity: \"error\",\n blocking: true,\n summary: \"CAD Viewer startup failed\",\n title: \"CAD Viewer could not start\",\n message: message || \"The 3D renderer failed before CAD Viewer finished starting.\",\n resolution: \"Reload CAD Viewer. If the problem persists, check the browser console for the renderer startup error.\"\n };\n}\n","export const RENDER_FORMAT = Object.freeze({\n STEP: \"step\",\n STL: \"stl\",\n THREE_MF: \"3mf\",\n GLB: \"glb\",\n GCODE: \"gcode\",\n DXF: \"dxf\",\n IMPLICIT: \"implicit\",\n URDF: \"urdf\",\n SRDF: \"srdf\",\n SDF: \"sdf\"\n});\n\nexport const MESH_RENDER_FORMATS = Object.freeze([\n RENDER_FORMAT.STL,\n RENDER_FORMAT.THREE_MF,\n RENDER_FORMAT.GLB\n]);\n\nexport const ROBOT_RENDER_FORMATS = Object.freeze([\n RENDER_FORMAT.URDF,\n RENDER_FORMAT.SRDF,\n RENDER_FORMAT.SDF\n]);\n\nexport function normalizeFormat(value) {\n return String(value || \"\").trim().toLowerCase();\n}\n\nexport function normalizeRenderFormat(value, { defaultFormat = RENDER_FORMAT.STEP } = {}) {\n const normalized = normalizeFormat(value || defaultFormat);\n if (normalized === \"stp\") {\n return RENDER_FORMAT.STEP;\n }\n if (normalized === \"gltf\") {\n return RENDER_FORMAT.GLB;\n }\n if (\n normalized === RENDER_FORMAT.STEP ||\n normalized === RENDER_FORMAT.STL ||\n normalized === RENDER_FORMAT.THREE_MF ||\n normalized === RENDER_FORMAT.GLB ||\n normalized === RENDER_FORMAT.GCODE ||\n normalized === RENDER_FORMAT.DXF ||\n normalized === RENDER_FORMAT.IMPLICIT ||\n normalized === RENDER_FORMAT.URDF ||\n normalized === RENDER_FORMAT.SRDF ||\n normalized === RENDER_FORMAT.SDF\n ) {\n return normalized;\n }\n return defaultFormat;\n}\n\nexport function entryKind(entry) {\n return normalizeFormat(entry?.kind);\n}\n\nexport function entrySourceFormat(entry) {\n const kind = entryKind(entry);\n if (kind === RENDER_FORMAT.DXF) {\n return RENDER_FORMAT.DXF;\n }\n if (kind === RENDER_FORMAT.STL) {\n return RENDER_FORMAT.STL;\n }\n if (kind === RENDER_FORMAT.THREE_MF) {\n return RENDER_FORMAT.THREE_MF;\n }\n if (kind === RENDER_FORMAT.GLB || kind === \"gltf\") {\n return RENDER_FORMAT.GLB;\n }\n if (kind === RENDER_FORMAT.GCODE) {\n return RENDER_FORMAT.GCODE;\n }\n if (kind === RENDER_FORMAT.IMPLICIT) {\n return RENDER_FORMAT.IMPLICIT;\n }\n if (kind === RENDER_FORMAT.URDF) {\n return RENDER_FORMAT.URDF;\n }\n if (kind === RENDER_FORMAT.SRDF) {\n return RENDER_FORMAT.SRDF;\n }\n if (kind === RENDER_FORMAT.SDF) {\n return RENDER_FORMAT.SDF;\n }\n return RENDER_FORMAT.STEP;\n}\n\nexport function isMeshRenderFormat(format) {\n return MESH_RENDER_FORMATS.includes(normalizeFormat(format));\n}\n\nexport function isRobotRenderFormat(format) {\n return ROBOT_RENDER_FORMATS.includes(normalizeFormat(format));\n}\n\nexport function meshAssetKeyForFormat(format) {\n const normalized = normalizeFormat(format);\n return isMeshRenderFormat(normalized) ? normalized : RENDER_FORMAT.GLB;\n}\n\nexport function meshAssetKeyForEntry(entry) {\n return meshAssetKeyForFormat(entrySourceFormat(entry));\n}\n\nexport function fileSheetKindForEntry(entry) {\n if (!entry) {\n return \"\";\n }\n const kind = entryKind(entry);\n if (kind === RENDER_FORMAT.DXF) {\n return RENDER_FORMAT.DXF;\n }\n if (kind === RENDER_FORMAT.URDF) {\n return RENDER_FORMAT.URDF;\n }\n if (kind === RENDER_FORMAT.SRDF) {\n return RENDER_FORMAT.SRDF;\n }\n if (kind === RENDER_FORMAT.SDF) {\n return RENDER_FORMAT.SDF;\n }\n if (kind === RENDER_FORMAT.GCODE) {\n return RENDER_FORMAT.GCODE;\n }\n if (kind === RENDER_FORMAT.IMPLICIT) {\n return RENDER_FORMAT.IMPLICIT;\n }\n if (entrySourceFormat(entry) === RENDER_FORMAT.STEP) {\n return RENDER_FORMAT.STEP;\n }\n if (isMeshRenderFormat(entrySourceFormat(entry))) {\n return \"mesh\";\n }\n return \"\";\n}\n\nexport function fileExtensionFromPath(value, { baseUrl = \"\" } = {}) {\n const rawValue = String(value || \"\").trim();\n if (!rawValue) {\n return \"\";\n }\n\n let pathname = rawValue;\n try {\n pathname = new URL(rawValue, baseUrl || \"http://localhost/\").pathname;\n } catch {\n pathname = rawValue.split(\"?\")[0].split(\"#\")[0];\n }\n\n const normalizedPath = pathname.toLowerCase();\n const slashIndex = normalizedPath.lastIndexOf(\"/\");\n const dotIndex = normalizedPath.lastIndexOf(\".\");\n return dotIndex > slashIndex ? normalizedPath.slice(dotIndex) : \"\";\n}\n\nexport function renderFormatFromExtension(extension) {\n const normalized = normalizeFormat(extension).replace(/^\\./, \"\");\n if (normalized === \"step\" || normalized === \"stp\") {\n return RENDER_FORMAT.STEP;\n }\n if (normalized === \"stl\") {\n return RENDER_FORMAT.STL;\n }\n if (normalized === \"3mf\") {\n return RENDER_FORMAT.THREE_MF;\n }\n if (normalized === \"glb\" || normalized === \"gltf\") {\n return RENDER_FORMAT.GLB;\n }\n if (normalized === \"gcode\") {\n return RENDER_FORMAT.GCODE;\n }\n if (normalized === \"implicit\" || normalized === \"implicit.js\" || normalized === \"implicit.mjs\") {\n return RENDER_FORMAT.IMPLICIT;\n }\n if (normalized === \"dxf\") {\n return RENDER_FORMAT.DXF;\n }\n if (normalized === \"urdf\") {\n return RENDER_FORMAT.URDF;\n }\n if (normalized === \"srdf\") {\n return RENDER_FORMAT.SRDF;\n }\n if (normalized === \"sdf\") {\n return RENDER_FORMAT.SDF;\n }\n return \"\";\n}\n\nexport function renderFormatFromPath(value, options = {}) {\n const rawValue = String(value || \"\").trim();\n let pathname = rawValue;\n try {\n pathname = new URL(rawValue, options.baseUrl || \"http://localhost/\").pathname;\n } catch {\n pathname = rawValue.split(\"?\")[0].split(\"#\")[0];\n }\n const normalizedPath = pathname.toLowerCase();\n if (normalizedPath.endsWith(\".implicit.js\") || normalizedPath.endsWith(\".implicit.mjs\")) {\n return RENDER_FORMAT.IMPLICIT;\n }\n return renderFormatFromExtension(fileExtensionFromPath(value, options));\n}\n","export const ASSET_STATUS = {\n PENDING: \"pending\",\n LOADING: \"loading\",\n READY: \"ready\",\n ERROR: \"error\"\n};\n\nexport const REFERENCE_STATUS = {\n IDLE: \"idle\",\n DISABLED: \"disabled\",\n LOADING: \"loading\",\n READY: \"ready\",\n ERROR: \"error\"\n};\n\nexport { RENDER_FORMAT } from \"cadjs/lib/fileFormats.js\";\n\nexport const TAB_TOOL_MODE = {\n REFERENCES: \"references\",\n DRAW: \"draw\"\n};\n\nexport const DRAWING_TOOL = {\n FREEHAND: \"freehand\",\n LINE: \"line\",\n SURFACE_LINE: \"surface-line\",\n ARROW: \"arrow\",\n DOUBLE_ARROW: \"double-arrow\",\n RECTANGLE: \"rectangle\",\n CIRCLE: \"circle\",\n FILL: \"fill\",\n ERASE: \"erase\"\n};\n","import { useState } from \"react\";\n\nconst ORIENTATION_FALLBACK = Object.freeze({\n x: [1, 0, 0],\n y: [0, 1, 0],\n z: [0, 0, 1]\n});\n\nconst DEFAULT_VIEW_PLANE_PALETTE = Object.freeze({\n axis: {\n x: {\n front: [250, 88, 79],\n back: [122, 32, 28]\n },\n y: {\n front: [92, 233, 123],\n back: [30, 99, 46]\n },\n z: {\n front: [84, 131, 255],\n back: [30, 53, 126]\n }\n },\n center: {\n fill: [252, 215, 74],\n stroke: [255, 235, 153]\n }\n});\n\nconst DEFAULT_VIEW_PLANE_SIZE = \"6.71875rem\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeCssLength(value, fallback = \"\") {\n if (typeof value === \"number\" && Number.isFinite(value) && value > 0) {\n return `${value}px`;\n }\n const text = String(value || \"\").trim();\n return text || fallback;\n}\n\nfunction toRgb(value) {\n const [r = 0, g = 0, b = 0] = Array.isArray(value) ? value : [0, 0, 0];\n return [Math.round(clamp(r, 0, 255)), Math.round(clamp(g, 0, 255)), Math.round(clamp(b, 0, 255))];\n}\n\nfunction mixRgb(from, to, amount) {\n const ratio = clamp(amount, 0, 1);\n const left = toRgb(from);\n const right = toRgb(to);\n return [\n left[0] + (right[0] - left[0]) * ratio,\n left[1] + (right[1] - left[1]) * ratio,\n left[2] + (right[2] - left[2]) * ratio\n ];\n}\n\nfunction rgbToCss(value, alpha = 1) {\n const [r, g, b] = toRgb(value);\n return `rgba(${r}, ${g}, ${b}, ${clamp(alpha, 0, 1)})`;\n}\n\nfunction normalizeRgbTriplet(value, fallback) {\n if (!Array.isArray(value) || value.length < 3) {\n return [...fallback];\n }\n const r = Number(value[0]);\n const g = Number(value[1]);\n const b = Number(value[2]);\n if (!Number.isFinite(r) || !Number.isFinite(g) || !Number.isFinite(b)) {\n return [...fallback];\n }\n return [clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)];\n}\n\nfunction resolveViewPlanePalette(viewerTheme) {\n const themePalette = viewerTheme?.viewPlanePalette || {};\n const themeAxisPalette = themePalette?.axis || {};\n const axis = {};\n for (const axisId of [\"x\", \"y\", \"z\"]) {\n const fallback = DEFAULT_VIEW_PLANE_PALETTE.axis[axisId];\n const custom = themeAxisPalette?.[axisId] || {};\n axis[axisId] = {\n front: normalizeRgbTriplet(custom.front, fallback.front),\n back: normalizeRgbTriplet(custom.back, fallback.back)\n };\n }\n return {\n axis,\n center: {\n fill: normalizeRgbTriplet(themePalette?.center?.fill, DEFAULT_VIEW_PLANE_PALETTE.center.fill),\n stroke: normalizeRgbTriplet(themePalette?.center?.stroke, DEFAULT_VIEW_PLANE_PALETTE.center.stroke)\n }\n };\n}\n\nfunction normalizeAxis(axis, fallback) {\n if (!Array.isArray(axis) || axis.length !== 3) {\n return [...fallback];\n }\n const x = Number(axis[0]);\n const y = Number(axis[1]);\n const z = Number(axis[2]);\n if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z)) {\n return [...fallback];\n }\n const magnitude = Math.hypot(x, y, z);\n if (magnitude < 1e-6) {\n return [...fallback];\n }\n return [x / magnitude, y / magnitude, z / magnitude];\n}\n\nfunction normalizeOrientation(orientation) {\n return {\n x: normalizeAxis(orientation?.x, ORIENTATION_FALLBACK.x),\n y: normalizeAxis(orientation?.y, ORIENTATION_FALLBACK.y),\n z: normalizeAxis(orientation?.z, ORIENTATION_FALLBACK.z)\n };\n}\n\nfunction projectDirection(orientation, direction) {\n const [dx = 0, dy = 0, dz = 0] = Array.isArray(direction) ? direction : [0, 0, 0];\n return [\n orientation.x[0] * dx + orientation.y[0] * dy + orientation.z[0] * dz,\n orientation.x[1] * dx + orientation.y[1] * dy + orientation.z[1] * dz,\n orientation.x[2] * dx + orientation.y[2] * dy + orientation.z[2] * dz\n ];\n}\n\nfunction getAxisId(face) {\n const id = String(face?.id || \"\");\n return id.startsWith(\"x\") ? \"x\" : id.startsWith(\"y\") ? \"y\" : \"z\";\n}\n\nexport default function ViewPlaneControl({\n showViewPlane,\n previewMode,\n isLoading,\n meshData,\n viewPlaneOffsetRight,\n viewPlaneOffsetBottom = 16,\n activeViewPlaneFace,\n viewPlaneFaces,\n viewPlaneOrientation,\n viewerTheme,\n compact = false,\n variant = \"3d\",\n viewPlaneSize,\n viewPlaneHeader = null,\n activateViewPlaneFace,\n activateDefaultViewPlane\n}) {\n const [hoveredNodeId, setHoveredNodeId] = useState(\"\");\n\n if (!showViewPlane || previewMode || isLoading || !meshData) {\n return null;\n }\n\n const orientation = normalizeOrientation(viewPlaneOrientation);\n const palette = resolveViewPlanePalette(viewerTheme);\n const faces = Array.isArray(viewPlaneFaces) ? viewPlaneFaces : [];\n const projectedNodes = faces\n .map((face) => {\n const axisId = getAxisId(face);\n const axisPalette = palette.axis[axisId] || palette.axis.z;\n const [x, y, z] = projectDirection(orientation, face.direction);\n const depth = clamp((z + 1) / 2, 0, 1);\n const fillColor = mixRgb(axisPalette.back, axisPalette.front, depth);\n const edgeColor = mixRgb([10, 16, 28], axisPalette.front, depth * 0.82 + 0.08);\n return {\n id: face.id,\n title: face.title,\n x: 50 + x * 28,\n y: 50 - y * 28,\n z,\n depth,\n radius: 4.95 + depth * 1.05,\n fill: rgbToCss(fillColor),\n edge: rgbToCss(edgeColor),\n stem: rgbToCss(fillColor, 0.32 + depth * 0.48)\n };\n })\n .sort((left, right) => left.z - right.z);\n const backNodes = projectedNodes.filter((node) => node.z < 0);\n const frontNodes = projectedNodes.filter((node) => node.z >= 0);\n const is2d = variant === \"2d\";\n const customViewPlaneSize = !compact && !is2d\n ? normalizeCssLength(viewPlaneSize, DEFAULT_VIEW_PLANE_SIZE)\n : \"\";\n const viewPlaneSizeClasses = compact || is2d ? \"h-20 w-20\" : \"\";\n const viewPlaneSizeStyle = customViewPlaneSize\n ? { width: customViewPlaneSize, height: customViewPlaneSize }\n : undefined;\n const viewPlaneSurfaceClasses = is2d\n ? \"cad-glass-surface pointer-events-auto relative rounded-md border border-sidebar-border text-sidebar-foreground shadow-sm transition duration-150\"\n : \"pointer-events-auto relative text-sidebar-foreground transition duration-150\";\n const viewPlaneLabel = is2d ? \"2D view selector\" : \"Perspective selector\";\n const normalizedBottomOffset = typeof viewPlaneOffsetBottom === \"number\"\n ? `${viewPlaneOffsetBottom}px`\n : viewPlaneOffsetBottom;\n const centerHovered = hoveredNodeId === \"__default__\";\n const renderNode = (node) => {\n const active = activeViewPlaneFace === node.id;\n const hovered = hoveredNodeId === node.id;\n return (\n {\n event.stopPropagation();\n }}\n onPointerEnter={() => {\n setHoveredNodeId(node.id);\n }}\n onPointerMove={() => {\n setHoveredNodeId(node.id);\n }}\n onPointerLeave={() => {\n setHoveredNodeId((current) => (current === node.id ? \"\" : current));\n }}\n onMouseEnter={() => {\n setHoveredNodeId(node.id);\n }}\n onMouseMove={() => {\n setHoveredNodeId(node.id);\n }}\n onMouseLeave={() => {\n setHoveredNodeId((current) => (current === node.id ? \"\" : current));\n }}\n onFocus={() => {\n setHoveredNodeId(node.id);\n }}\n onBlur={() => {\n setHoveredNodeId((current) => (current === node.id ? \"\" : current));\n }}\n onClick={(event) => {\n event.stopPropagation();\n activateViewPlaneFace(node.id);\n }}\n onKeyDown={(event) => {\n if (event.key !== \"Enter\" && event.key !== \" \") {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n activateViewPlaneFace(node.id);\n }}\n >\n \n \n \n \n );\n };\n\n return (\n \n {viewPlaneHeader ? (\n
{\n event.stopPropagation();\n }}\n >\n {viewPlaneHeader}\n
\n ) : null}\n
{\n event.stopPropagation();\n }}\n >\n \n
\n
\n );\n}\n","import { useEffect } from \"react\";\nimport { DRAWING_TOOL } from \"../../../workbench/constants\";\n\nexport function useViewerDrawingOverlay({\n drawingCanvasRef,\n drawingDraftRef,\n drawingStrokesRef,\n drawingChangeRef,\n drawingIdRef,\n drawingEnabled,\n drawingTool,\n meshData,\n previewMode,\n viewerReadyTick,\n renderDrawingOverlay,\n redrawDrawingCanvas,\n buildDrawingPoint,\n distanceToStrokeInPixels,\n strokeLengthInPixels,\n drawingToolNeedsTwoPoints,\n buildFillStrokeAtPoint,\n buildSurfaceLineAnchor,\n updateSurfaceLineAnchor,\n drawingEraseThresholdPx,\n drawingMinPointDistancePx,\n drawingMinStrokeLengthPx\n}) {\n useEffect(() => {\n const canvas = drawingCanvasRef.current;\n if (!canvas) {\n return undefined;\n }\n\n if (!drawingEnabled || previewMode || !meshData) {\n drawingDraftRef.current = null;\n renderDrawingOverlay();\n return undefined;\n }\n\n const interaction = {\n pointerId: null,\n erasing: false\n };\n\n const commitStrokes = (nextStrokes) => {\n drawingStrokesRef.current = nextStrokes;\n drawingChangeRef.current?.(nextStrokes);\n redrawDrawingCanvas(canvas, nextStrokes, drawingDraftRef.current);\n };\n\n const commitSingleStroke = (stroke) => {\n if (!stroke) {\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, drawingDraftRef.current);\n return;\n }\n drawingIdRef.current += 1;\n commitStrokes([\n ...drawingStrokesRef.current,\n {\n id: `stroke-${drawingIdRef.current}`,\n ...stroke\n }\n ]);\n };\n\n const eraseStrokeAt = (point) => {\n const width = canvas.width || 1;\n const height = canvas.height || 1;\n let bestIndex = -1;\n let bestDistance = Infinity;\n for (let index = 0; index < drawingStrokesRef.current.length; index += 1) {\n const distance = distanceToStrokeInPixels(point, drawingStrokesRef.current[index], width, height);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestIndex = index;\n }\n }\n if (bestIndex === -1 || bestDistance > drawingEraseThresholdPx) {\n return;\n }\n const nextStrokes = drawingStrokesRef.current.filter((_, index) => index !== bestIndex);\n commitStrokes(nextStrokes);\n };\n\n const beginDraft = (point) => {\n drawingDraftRef.current = {\n id: \"__draft__\",\n tool: drawingTool,\n points: [point]\n };\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, drawingDraftRef.current);\n };\n\n const updateDraft = (point) => {\n const draft = drawingDraftRef.current;\n if (!draft) {\n return;\n }\n if (drawingTool === DRAWING_TOOL.FREEHAND) {\n const lastPoint = draft.points[draft.points.length - 1];\n const dx = (point.x - lastPoint.x) * (canvas.width || 1);\n const dy = (point.y - lastPoint.y) * (canvas.height || 1);\n if (Math.hypot(dx, dy) >= drawingMinPointDistancePx) {\n draft.points = [...draft.points, point];\n }\n } else {\n draft.points = [draft.points[0], point];\n }\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, draft);\n };\n\n const endDraft = () => {\n const draft = drawingDraftRef.current;\n if (!draft) {\n return;\n }\n drawingDraftRef.current = null;\n const strokeLength = strokeLengthInPixels(draft, canvas.width || 1, canvas.height || 1);\n if (drawingToolNeedsTwoPoints(draft.tool) && (draft.points.length < 2 || strokeLength < drawingMinStrokeLengthPx)) {\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, null);\n return;\n }\n if (strokeLength < drawingMinStrokeLengthPx && draft.points.length > 1) {\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, null);\n return;\n }\n commitSingleStroke({\n tool: draft.tool,\n points: draft.points.map((point) => ({ x: point.x, y: point.y })),\n surfaceLine: draft.surfaceLine || null\n });\n };\n\n const handlePointerDown = (event) => {\n if (event.button !== 0) {\n return;\n }\n interaction.erasing = drawingTool === DRAWING_TOOL.ERASE;\n const point = buildDrawingPoint(event, canvas);\n if (interaction.erasing) {\n event.preventDefault();\n event.stopPropagation();\n interaction.pointerId = event.pointerId;\n canvas.setPointerCapture?.(event.pointerId);\n eraseStrokeAt(point);\n return;\n }\n if (drawingTool === DRAWING_TOOL.FILL) {\n event.preventDefault();\n event.stopPropagation();\n commitSingleStroke(buildFillStrokeAtPoint(point, drawingStrokesRef.current, canvas));\n return;\n }\n if (drawingTool === DRAWING_TOOL.SURFACE_LINE) {\n const anchor = buildSurfaceLineAnchor?.(event, canvas);\n if (!anchor) {\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, null);\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n interaction.pointerId = event.pointerId;\n canvas.setPointerCapture?.(event.pointerId);\n drawingDraftRef.current = {\n id: \"__draft__\",\n tool: drawingTool,\n points: [anchor.screenPoint, anchor.screenPoint],\n surfaceLine: anchor.surfaceLine\n };\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, drawingDraftRef.current);\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n interaction.pointerId = event.pointerId;\n canvas.setPointerCapture?.(event.pointerId);\n beginDraft(point);\n };\n\n const handlePointerMove = (event) => {\n if (interaction.pointerId !== event.pointerId) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const point = buildDrawingPoint(event, canvas);\n if (interaction.erasing) {\n eraseStrokeAt(point);\n return;\n }\n if (drawingTool === DRAWING_TOOL.SURFACE_LINE) {\n const draft = drawingDraftRef.current;\n if (!draft?.surfaceLine?.referenceId) {\n return;\n }\n const nextAnchor = updateSurfaceLineAnchor?.(event, canvas, draft.surfaceLine);\n if (!nextAnchor) {\n return;\n }\n draft.points = [draft.points[0], nextAnchor.screenPoint];\n draft.surfaceLine = nextAnchor.surfaceLine;\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, draft);\n return;\n }\n updateDraft(point);\n };\n\n const handlePointerEnd = (event) => {\n if (interaction.pointerId !== event.pointerId) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n canvas.releasePointerCapture?.(event.pointerId);\n interaction.pointerId = null;\n if (interaction.erasing) {\n interaction.erasing = false;\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, null);\n return;\n }\n endDraft();\n };\n\n canvas.addEventListener(\"pointerdown\", handlePointerDown);\n canvas.addEventListener(\"pointermove\", handlePointerMove);\n canvas.addEventListener(\"pointerup\", handlePointerEnd);\n canvas.addEventListener(\"pointercancel\", handlePointerEnd);\n\n return () => {\n interaction.pointerId = null;\n interaction.erasing = false;\n drawingDraftRef.current = null;\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, null);\n canvas.removeEventListener(\"pointerdown\", handlePointerDown);\n canvas.removeEventListener(\"pointermove\", handlePointerMove);\n canvas.removeEventListener(\"pointerup\", handlePointerEnd);\n canvas.removeEventListener(\"pointercancel\", handlePointerEnd);\n };\n }, [\n buildDrawingPoint,\n buildFillStrokeAtPoint,\n buildSurfaceLineAnchor,\n distanceToStrokeInPixels,\n drawingCanvasRef,\n drawingChangeRef,\n drawingDraftRef,\n drawingEnabled,\n drawingEraseThresholdPx,\n drawingIdRef,\n drawingMinPointDistancePx,\n drawingMinStrokeLengthPx,\n drawingStrokesRef,\n drawingTool,\n drawingToolNeedsTwoPoints,\n meshData,\n previewMode,\n redrawDrawingCanvas,\n renderDrawingOverlay,\n strokeLengthInPixels,\n updateSurfaceLineAnchor,\n viewerReadyTick\n ]);\n}\n","export function worldUnitsPerPixelAtDistance(camera, viewportHeightPx, distance) {\n const safeViewportHeightPx = Number(viewportHeightPx);\n const safeDistance = Number(distance);\n if (!camera || !Number.isFinite(safeViewportHeightPx) || safeViewportHeightPx <= 0 || !Number.isFinite(safeDistance) || safeDistance <= 0) {\n return null;\n }\n if (camera.isPerspectiveCamera) {\n const verticalFovRadians = (Number(camera.fov) || 0) * (Math.PI / 180);\n if (!(verticalFovRadians > 0 && verticalFovRadians < Math.PI)) {\n return null;\n }\n return (2 * safeDistance * Math.tan(verticalFovRadians / 2)) / safeViewportHeightPx;\n }\n if (camera.isOrthographicCamera) {\n const zoom = Number(camera.zoom) || 1;\n const top = Number(camera.top);\n const bottom = Number(camera.bottom);\n if (!(zoom > 0) || !Number.isFinite(top) || !Number.isFinite(bottom)) {\n return null;\n }\n return Math.abs(top - bottom) / zoom / safeViewportHeightPx;\n }\n return null;\n}\n\nexport function screenLimitedPickThreshold({\n baseThreshold,\n thresholdScale = 1,\n maxScreenDistancePx,\n camera,\n viewportHeightPx,\n distance\n} = {}) {\n const scaledBaseThreshold = Math.max((Number(baseThreshold) || 0) * (Number(thresholdScale) || 0), 0);\n if (!(scaledBaseThreshold > 0)) {\n return 0;\n }\n const screenDistancePx = Number(maxScreenDistancePx);\n if (!(screenDistancePx > 0)) {\n return scaledBaseThreshold;\n }\n const unitsPerPixel = worldUnitsPerPixelAtDistance(camera, viewportHeightPx, distance);\n if (!(Number.isFinite(unitsPerPixel) && unitsPerPixel > 0)) {\n return scaledBaseThreshold;\n }\n return Math.min(scaledBaseThreshold, unitsPerPixel * screenDistancePx);\n}\n","export const VIEWER_CONTEXT_MENU_SUPPRESSION_MS = 1200;\n\nexport function createViewerContextMenuGestureState({\n now = () => Date.now(),\n suppressionMs = VIEWER_CONTEXT_MENU_SUPPRESSION_MS\n} = {}) {\n let suppressUntil = 0;\n\n return {\n suppressNextContextMenu() {\n suppressUntil = Math.max(suppressUntil, now() + suppressionMs);\n },\n consumeSuppression() {\n if (now() > suppressUntil) {\n suppressUntil = 0;\n return false;\n }\n suppressUntil = 0;\n return true;\n },\n clear() {\n suppressUntil = 0;\n },\n isSuppressed() {\n return now() <= suppressUntil;\n }\n };\n}\n","import { useEffect, useRef } from \"react\";\nimport { VIEWER_PICK_MODE } from \"cadjs/lib/viewer/constants\";\nimport { pointVisibleByClipPlane } from \"cadjs/lib/viewer/clipPlane\";\nimport { screenLimitedPickThreshold } from \"cadjs/lib/viewer/pickingThresholds\";\nimport { createViewerContextMenuGestureState } from \"./viewerContextMenuGesture.js\";\n\nconst FACE_BOUNDS_EPSILON = 0.25;\nconst PLANE_SURFACE_EPSILON = 0.25;\nconst CYLINDER_SURFACE_EPSILON = 0.35;\nconst AUTO_EDGE_PICK_THRESHOLD_FACTOR = 1;\nconst FRONT_LAYER_DISTANCE_FACTOR = 0.0015;\nconst FRONT_LAYER_DISTANCE_MIN = 0.02;\nconst EDGE_OCCLUSION_EPSILON_FACTOR = 0.75;\nconst EDGE_OCCLUSION_EPSILON_MIN = 0.08;\nconst EDGE_PICK_MAX_SCREEN_DISTANCE_PX = 10;\nconst EDGE_PICK_MAX_SCREEN_DISTANCE_WITH_FACE_PX = EDGE_PICK_MAX_SCREEN_DISTANCE_PX;\nconst EDGE_HOVER_MAX_SCREEN_DISTANCE_PX = 6;\nconst EDGE_HOVER_MAX_SCREEN_DISTANCE_WITH_FACE_PX = EDGE_HOVER_MAX_SCREEN_DISTANCE_PX;\nconst EDGE_PICK_PRIORITY_WITH_FACE_PX = EDGE_PICK_MAX_SCREEN_DISTANCE_WITH_FACE_PX;\nconst EDGE_HOVER_PRIORITY_WITH_FACE_PX = EDGE_HOVER_MAX_SCREEN_DISTANCE_WITH_FACE_PX;\nconst CORNER_PICK_MAX_SCREEN_DISTANCE_PX = 5;\nconst CORNER_HOVER_MAX_SCREEN_DISTANCE_PX = 4;\nconst CORNER_PICK_PRIORITY_WITH_OTHER_PX = 4;\nconst CORNER_HOVER_PRIORITY_WITH_OTHER_PX = 3;\nconst HOVER_PICK_MIN_MOVE_PX = 2;\nconst FINE_POINTER_TAP_SLOP_PX = 4;\nconst COARSE_POINTER_TAP_SLOP_PX = 12;\nexport const VIEWER_DOUBLE_CLICK_ACTIVATION_DELAY_MS = 220;\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction subtract(a, b) {\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n}\n\nfunction dot(a, b) {\n return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]);\n}\n\nfunction length(vector) {\n return Math.sqrt(dot(vector, vector));\n}\n\nfunction normalizeAngleAround(angle, center) {\n let adjusted = angle;\n while (adjusted - center > Math.PI) {\n adjusted -= Math.PI * 2;\n }\n while (adjusted - center < -Math.PI) {\n adjusted += Math.PI * 2;\n }\n return adjusted;\n}\n\nfunction pointInBounds(point, bounds, epsilon = 0.8) {\n if (!Array.isArray(point) || point.length !== 3 || !bounds || !Array.isArray(bounds.min) || !Array.isArray(bounds.max)) {\n return false;\n }\n return (\n point[0] >= Number(bounds.min[0] || 0) - epsilon &&\n point[0] <= Number(bounds.max[0] || 0) + epsilon &&\n point[1] >= Number(bounds.min[1] || 0) - epsilon &&\n point[1] <= Number(bounds.max[1] || 0) + epsilon &&\n point[2] >= Number(bounds.min[2] || 0) - epsilon &&\n point[2] <= Number(bounds.max[2] || 0) + epsilon\n );\n}\n\nfunction pointInPolygon2d(point, polygon) {\n let inside = false;\n for (let index = 0, previous = polygon.length - 1; index < polygon.length; previous = index, index += 1) {\n const x1 = polygon[index][0];\n const y1 = polygon[index][1];\n const x2 = polygon[previous][0];\n const y2 = polygon[previous][1];\n const intersects = ((y1 > point[1]) !== (y2 > point[1])) &&\n (point[0] < ((x2 - x1) * (point[1] - y1)) / ((y2 - y1) || 1e-9) + x1);\n if (intersects) {\n inside = !inside;\n }\n }\n return inside;\n}\n\nfunction distancePointToSegment2d(point, start, end) {\n const dx = end[0] - start[0];\n const dy = end[1] - start[1];\n if (Math.abs(dx) < 1e-9 && Math.abs(dy) < 1e-9) {\n return Math.hypot(point[0] - start[0], point[1] - start[1]);\n }\n const t = clamp(\n ((point[0] - start[0]) * dx + (point[1] - start[1]) * dy) / (dx * dx + dy * dy),\n 0,\n 1\n );\n const projected = [start[0] + dx * t, start[1] + dy * t];\n return Math.hypot(point[0] - projected[0], point[1] - projected[1]);\n}\n\nfunction distancePointToLoop2d(point, loop) {\n let best = Infinity;\n for (let index = 0, previous = loop.length - 1; index < loop.length; previous = index, index += 1) {\n best = Math.min(best, distancePointToSegment2d(point, loop[previous], loop[index]));\n }\n return best;\n}\n\nfunction compareReferenceIdentity(a, b) {\n const aKey = String(a?.entityId ?? a?.id ?? \"\");\n const bKey = String(b?.entityId ?? b?.id ?? \"\");\n return aKey.localeCompare(bKey);\n}\n\nfunction projectPointToPlane(point, surface) {\n const origin = surface.origin || [0, 0, 0];\n const relative = subtract(point, origin);\n return [dot(relative, surface.xDir || [1, 0, 0]), dot(relative, surface.yDir || [0, 1, 0])];\n}\n\nfunction projectPointToCylinder(point, surface, thetaCenter) {\n const origin = surface.origin || [0, 0, 0];\n const axis = surface.axis || [0, 1, 0];\n const xDir = surface.xDir || [1, 0, 0];\n const yDir = surface.yDir || [0, 0, 1];\n const relative = subtract(point, origin);\n const axial = dot(relative, axis);\n const radial = [\n relative[0] - axis[0] * axial,\n relative[1] - axis[1] * axial,\n relative[2] - axis[2] * axial\n ];\n const theta = normalizeAngleAround(Math.atan2(dot(radial, yDir), dot(radial, xDir)), thetaCenter);\n return [theta * (surface.radius || 1), axial];\n}\n\nfunction measurePointInsideLoops(projectedPoint, loops2d) {\n const crossings = loops2d.reduce((count, loop) => count + (pointInPolygon2d(projectedPoint, loop) ? 1 : 0), 0);\n if (crossings % 2 !== 1) {\n return null;\n }\n const boundaryDistance = loops2d.reduce(\n (best, loop) => Math.min(best, distancePointToLoop2d(projectedPoint, loop)),\n Infinity\n );\n return {\n boundaryDistance\n };\n}\n\nfunction faceMatchAtPoint(reference, point) {\n const pickData = reference?.pickData;\n if (!pickData?.loops?.length || !pointInBounds(point, pickData.bbox, FACE_BOUNDS_EPSILON)) {\n return null;\n }\n\n const surface = pickData.surface || {};\n\n if (surface.type === \"PLANE\" && surface.origin && surface.normal && surface.xDir && surface.yDir) {\n const planeDistance = Math.abs(dot(subtract(point, surface.origin), surface.normal));\n if (planeDistance > PLANE_SURFACE_EPSILON) {\n return null;\n }\n const projectedPoint = projectPointToPlane(point, surface);\n const loops2d = pickData.loops.map((loop) => loop.map((loopPoint) => projectPointToPlane(loopPoint, surface)));\n const loopMatch = measurePointInsideLoops(projectedPoint, loops2d);\n if (!loopMatch) {\n return null;\n }\n return {\n boundaryDistance: loopMatch.boundaryDistance,\n surfaceDistance: planeDistance\n };\n }\n\n if (surface.type === \"CYLINDRICAL_SURFACE\" && surface.origin && surface.axis && surface.xDir && surface.yDir) {\n const origin = surface.origin;\n const axis = surface.axis;\n const relative = subtract(point, origin);\n const axial = dot(relative, axis);\n const radial = [\n relative[0] - axis[0] * axial,\n relative[1] - axis[1] * axial,\n relative[2] - axis[2] * axial\n ];\n const radialDistance = length(radial);\n const radialError = Math.abs(radialDistance - surface.radius);\n if (!surface.radius || radialError > CYLINDER_SURFACE_EPSILON) {\n return null;\n }\n const pointTheta = Math.atan2(dot(radial, surface.yDir), dot(radial, surface.xDir));\n const projectedPoint = projectPointToCylinder(point, surface, pointTheta);\n const loops2d = pickData.loops.map((loop) =>\n loop.map((loopPoint) => projectPointToCylinder(loopPoint, surface, pointTheta))\n );\n const loopMatch = measurePointInsideLoops(projectedPoint, loops2d);\n if (!loopMatch) {\n return null;\n }\n return {\n boundaryDistance: loopMatch.boundaryDistance,\n surfaceDistance: radialError\n };\n }\n\n return null;\n}\n\nfunction faceLoopCount(reference) {\n return reference?.loopCount ?? reference?.pickData?.loopCount ?? reference?.pickData?.loops?.length ?? 0;\n}\n\nfunction isPreferredFaceReference(reference) {\n return faceLoopCount(reference) <= 1;\n}\n\nfunction chooseRedirectFaceReference(reference, point, references) {\n const pickData = reference?.pickData;\n const surface = pickData?.surface || {};\n if (isPreferredFaceReference(reference) || surface.type !== \"PLANE\" || !surface.origin || !surface.xDir || !surface.yDir) {\n return null;\n }\n\n const projectedPoint = projectPointToPlane(point, surface);\n const loopEntries = Array.isArray(pickData.loopsMeta) ? pickData.loopsMeta : [];\n const faceByEntityId = new Map(\n (Array.isArray(references) ? references : [])\n .filter((candidate) => candidate?.entityType === \"ADVANCED_FACE\")\n .map((candidate) => [candidate.entityId, candidate])\n );\n const redirectCandidates = [];\n\n for (const loopEntry of loopEntries) {\n if (loopEntry?.isOuter || !Array.isArray(loopEntry.points) || loopEntry.points.length < 3) {\n continue;\n }\n const loop2d = loopEntry.points.map((loopPoint) => projectPointToPlane(loopPoint, surface));\n const inside = pointInPolygon2d(projectedPoint, loop2d);\n const distance = distancePointToLoop2d(projectedPoint, loop2d);\n if (!inside && distance > 1.1) {\n continue;\n }\n\n for (const faceEntityId of loopEntry.adjacentFaceEntityIds || []) {\n const candidate = faceByEntityId.get(faceEntityId);\n if (!candidate || !isPreferredFaceReference(candidate)) {\n continue;\n }\n redirectCandidates.push({\n candidate,\n distance,\n inside\n });\n }\n }\n\n redirectCandidates.sort((a, b) => {\n if (a.inside !== b.inside) {\n return a.inside ? -1 : 1;\n }\n if (Math.abs(a.distance - b.distance) > 1e-4) {\n return a.distance - b.distance;\n }\n const aMetric = a.candidate.pickData?.metric ?? Infinity;\n const bMetric = b.candidate.pickData?.metric ?? Infinity;\n if (aMetric !== bMetric) {\n return aMetric - bMetric;\n }\n return compareReferenceIdentity(a.candidate, b.candidate);\n });\n\n return redirectCandidates[0]?.candidate || null;\n}\n\nfunction compareFaceCandidates(a, b) {\n const aSurfaceDistance = a.match?.surfaceDistance ?? Infinity;\n const bSurfaceDistance = b.match?.surfaceDistance ?? Infinity;\n if (Math.abs(aSurfaceDistance - bSurfaceDistance) > 1e-4) {\n return aSurfaceDistance - bSurfaceDistance;\n }\n\n const aBoundaryDistance = a.match?.boundaryDistance ?? -Infinity;\n const bBoundaryDistance = b.match?.boundaryDistance ?? -Infinity;\n if (Math.abs(aBoundaryDistance - bBoundaryDistance) > 1e-4) {\n return bBoundaryDistance - aBoundaryDistance;\n }\n\n const aMetric = a.reference.pickData?.metric ?? Infinity;\n const bMetric = b.reference.pickData?.metric ?? Infinity;\n if (Math.abs(aMetric - bMetric) > 1e-4) {\n return bMetric - aMetric;\n }\n\n const aPreferred = isPreferredFaceReference(a.reference) ? 0 : 1;\n const bPreferred = isPreferredFaceReference(b.reference) ? 0 : 1;\n if (aPreferred !== bPreferred) {\n return aPreferred - bPreferred;\n }\n\n return compareReferenceIdentity(a.reference, b.reference);\n}\n\nfunction findBestFaceReference(references, point) {\n const matches = [];\n for (const reference of Array.isArray(references) ? references : []) {\n const match = faceMatchAtPoint(reference, point);\n if (!match) {\n continue;\n }\n matches.push({\n match,\n reference\n });\n }\n matches.sort(compareFaceCandidates);\n return matches[0]?.reference || null;\n}\n\nfunction chooseBestFaceReferenceFromIntersections(references, intersections) {\n const candidates = new Map();\n for (const intersection of intersections) {\n if (!intersection?.point || !intersection?.object) {\n continue;\n }\n const localPoint = intersection.object.worldToLocal(intersection.point.clone());\n const point = [localPoint.x, localPoint.y, localPoint.z];\n let reference = findBestFaceReference(references, point);\n const redirected = chooseRedirectFaceReference(reference, point, references);\n if (redirected) {\n reference = redirected;\n }\n if (!reference) {\n continue;\n }\n const existing = candidates.get(reference.id);\n if (!existing || intersection.distance < existing.distance) {\n candidates.set(reference.id, {\n distance: intersection.distance,\n reference\n });\n }\n }\n\n const scored = [...candidates.values()];\n scored.sort((a, b) => {\n if (Math.abs(a.distance - b.distance) > 1e-4) {\n return a.distance - b.distance;\n }\n const aMetric = a.reference.pickData?.metric ?? Infinity;\n const bMetric = b.reference.pickData?.metric ?? Infinity;\n if (aMetric !== bMetric) {\n return aMetric - bMetric;\n }\n const aPreferred = isPreferredFaceReference(a.reference) ? 0 : 1;\n const bPreferred = isPreferredFaceReference(b.reference) ? 0 : 1;\n if (aPreferred !== bPreferred) {\n return aPreferred - bPreferred;\n }\n return compareReferenceIdentity(a.reference, b.reference);\n });\n return scored[0]?.reference || null;\n}\n\nfunction chooseBestEdgeIntersection(intersections, measureScreenDistance = null) {\n if (!intersections.length) {\n return null;\n }\n const scored = intersections.map((intersection) => ({\n intersection,\n screenDistance: typeof measureScreenDistance === \"function\"\n ? Number(measureScreenDistance(intersection))\n : Infinity,\n pickError: intersection.distanceToRay ?? intersection.distance ?? Infinity,\n distance: intersection.distance ?? Infinity,\n metric: intersection.object.userData.metric ?? Infinity\n }));\n scored.sort((a, b) => {\n const aScreenDistance = Number.isFinite(a.screenDistance) ? a.screenDistance : Infinity;\n const bScreenDistance = Number.isFinite(b.screenDistance) ? b.screenDistance : Infinity;\n if (Math.abs(aScreenDistance - bScreenDistance) > 0.25) {\n return aScreenDistance - bScreenDistance;\n }\n if (Math.abs(a.pickError - b.pickError) > 1e-4) {\n return a.pickError - b.pickError;\n }\n if (Math.abs(a.distance - b.distance) > 1e-4) {\n return a.distance - b.distance;\n }\n return a.metric - b.metric;\n });\n return scored[0].intersection;\n}\n\nfunction frontMostModelIntersections(intersections) {\n if (!Array.isArray(intersections) || !intersections.length) {\n return [];\n }\n const nearestDistance = Number(intersections[0]?.distance);\n if (!Number.isFinite(nearestDistance)) {\n return [];\n }\n const depthWindow = Math.max(FRONT_LAYER_DISTANCE_MIN, nearestDistance * FRONT_LAYER_DISTANCE_FACTOR);\n return intersections.filter((intersection) => Number(intersection?.distance) <= nearestDistance + depthWindow);\n}\n\nfunction focusedPartIdSet(value) {\n return new Set(\n (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean)\n );\n}\n\nfunction intersectionVisibleByClipPlane(runtime, intersection) {\n return pointVisibleByClipPlane(runtime?.activeClipPlane, intersection?.point);\n}\n\nfunction filterClippedIntersections(runtime, intersections) {\n if (!runtime?.activeClipPlane || !Array.isArray(intersections) || !intersections.length) {\n return intersections;\n }\n return intersections.filter((intersection) => intersectionVisibleByClipPlane(runtime, intersection));\n}\n\nexport function useViewerPicking({\n runtimeRef,\n mountRef,\n sceneMountRef = null,\n drawingCanvasRef = null,\n previewMode,\n pickMode,\n selectorRuntime,\n pickableFaces,\n pickableEdges,\n pickableVertices,\n hiddenPartIds,\n focusedPartId,\n onHoverReferenceChange,\n onActivateReference,\n onDoubleActivateReference,\n onContextReference,\n viewerReadyTick\n}) {\n // Keep pointer listeners stable across parent rerenders; hover itself updates parent state.\n const pickModeRef = useRef(pickMode);\n const selectorRuntimeRef = useRef(selectorRuntime);\n const pickableFacesRef = useRef(pickableFaces);\n const pickableEdgesRef = useRef(pickableEdges);\n const pickableVerticesRef = useRef(pickableVertices);\n const hiddenPartIdsRef = useRef(hiddenPartIds);\n const focusedPartIdRef = useRef(focusedPartId);\n const onHoverReferenceChangeRef = useRef(onHoverReferenceChange);\n const onActivateReferenceRef = useRef(onActivateReference);\n const onDoubleActivateReferenceRef = useRef(onDoubleActivateReference);\n const onContextReferenceRef = useRef(onContextReference);\n const allowedFaceReferenceIdsRef = useRef(new Set());\n const allowedEdgeReferenceIdsRef = useRef(new Set());\n const allowedVertexReferenceIdsRef = useRef(new Set());\n\n pickModeRef.current = pickMode;\n selectorRuntimeRef.current = selectorRuntime;\n pickableFacesRef.current = pickableFaces;\n pickableEdgesRef.current = pickableEdges;\n pickableVerticesRef.current = pickableVertices;\n hiddenPartIdsRef.current = hiddenPartIds;\n focusedPartIdRef.current = focusedPartId;\n onHoverReferenceChangeRef.current = onHoverReferenceChange;\n onActivateReferenceRef.current = onActivateReference;\n onDoubleActivateReferenceRef.current = onDoubleActivateReference;\n onContextReferenceRef.current = onContextReference;\n allowedFaceReferenceIdsRef.current = new Set(\n (Array.isArray(pickableFaces) ? pickableFaces : [])\n .map((reference) => String(reference?.id || \"\").trim())\n .filter(Boolean)\n );\n allowedEdgeReferenceIdsRef.current = new Set(\n (Array.isArray(pickableEdges) ? pickableEdges : [])\n .map((reference) => String(reference?.id || \"\").trim())\n .filter(Boolean)\n );\n allowedVertexReferenceIdsRef.current = new Set(\n (Array.isArray(pickableVertices) ? pickableVertices : [])\n .map((reference) => String(reference?.id || \"\").trim())\n .filter(Boolean)\n );\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime || !mountRef.current || previewMode) {\n onHoverReferenceChangeRef.current?.(\"\");\n return;\n }\n\n const container = mountRef.current;\n const sceneMount = sceneMountRef?.current || null;\n const drawingCanvas = drawingCanvasRef?.current || null;\n const coarsePointerQuery = typeof window.matchMedia === \"function\"\n ? window.matchMedia(\"(pointer: coarse)\")\n : null;\n const defaultToCoarsePointer = coarsePointerQuery?.matches ?? false;\n const pointerDown = {\n active: false,\n x: 0,\n y: 0,\n pointerType: \"\",\n referenceId: \"\"\n };\n const primaryPointer = {\n active: false,\n x: 0,\n y: 0,\n pointerType: \"\"\n };\n const contextPointer = {\n active: false,\n blocked: false,\n moved: false,\n startedInScene: false,\n x: 0,\n y: 0,\n pointerType: \"\"\n };\n const hoverState = {\n rafId: 0,\n x: 0,\n y: 0,\n lastX: NaN,\n lastY: NaN,\n hoveredReferenceId: \"\"\n };\n const doubleClickEnabled = !defaultToCoarsePointer;\n let activationTimerId = 0;\n const contextMenuGesture = createViewerContextMenuGestureState();\n\n function pointerButtons(event) {\n const buttons = Number(event?.buttons);\n return Number.isFinite(buttons) ? buttons : 0;\n }\n\n function primaryButtonHeld(event) {\n return (pointerButtons(event) & 1) === 1;\n }\n\n function contextButtonHeld(event) {\n return (pointerButtons(event) & 2) === 2;\n }\n\n function chordButtonsHeld(event) {\n return (pointerButtons(event) & 3) === 3;\n }\n\n function resetPrimaryPointer() {\n primaryPointer.active = false;\n primaryPointer.pointerType = \"\";\n }\n\n function resetContextPointer() {\n contextPointer.active = false;\n contextPointer.blocked = false;\n contextPointer.moved = false;\n contextPointer.startedInScene = false;\n contextPointer.pointerType = \"\";\n }\n\n function suppressContextMenuFromPanChord() {\n contextMenuGesture.suppressNextContextMenu();\n contextPointer.blocked = true;\n contextPointer.moved = true;\n pointerDown.active = false;\n pointerDown.pointerType = \"\";\n pointerDown.referenceId = \"\";\n }\n\n function setPointerFromPosition(clientX, clientY) {\n const rect = container.getBoundingClientRect();\n runtime.pointer.x = ((clientX - rect.left) / rect.width) * 2 - 1;\n runtime.pointer.y = -((clientY - rect.top) / rect.height) * 2 + 1;\n runtime.raycaster.setFromCamera(runtime.pointer, runtime.camera);\n if (runtime.raycaster?.params?.Line) {\n runtime.raycaster.params.Line.threshold = runtime.edgePickThreshold || 1;\n }\n if (runtime.raycaster?.params?.Points) {\n runtime.raycaster.params.Points.threshold = runtime.vertexPickThreshold || 1;\n }\n }\n\n function projectPointToClient(point) {\n if (!point?.clone || !runtime?.camera) {\n return null;\n }\n const projected = point.clone().project(runtime.camera);\n if (!Number.isFinite(projected.x) || !Number.isFinite(projected.y)) {\n return null;\n }\n const rect = container.getBoundingClientRect();\n return {\n x: rect.left + ((projected.x + 1) * 0.5 * rect.width),\n y: rect.top + ((1 - projected.y) * 0.5 * rect.height)\n };\n }\n\n function edgeScreenDistance(intersection, clientX, clientY) {\n const clientPoint = projectPointToClient(intersection?.point);\n if (!clientPoint) {\n return Infinity;\n }\n return Math.hypot(clientX - clientPoint.x, clientY - clientPoint.y);\n }\n\n function pickViewportHeightPx() {\n return container.clientHeight || container.getBoundingClientRect().height || 1;\n }\n\n function pickSurfaceDistance(modelIntersections) {\n const surfaceDistance = Number(modelIntersections?.[0]?.distance);\n if (Number.isFinite(surfaceDistance) && surfaceDistance > 0) {\n return surfaceDistance;\n }\n const controlsDistance = runtime?.camera?.position?.distanceTo?.(runtime?.controls?.target);\n if (Number.isFinite(controlsDistance) && controlsDistance > 0) {\n return controlsDistance;\n }\n return Number(runtime?.modelRadius || 1);\n }\n\n function currentPickThreshold(baseThreshold, thresholdScale, maxScreenDistancePx, modelIntersections) {\n return screenLimitedPickThreshold({\n baseThreshold,\n thresholdScale,\n maxScreenDistancePx,\n camera: runtime.camera,\n viewportHeightPx: pickViewportHeightPx(),\n distance: pickSurfaceDistance(modelIntersections)\n });\n }\n\n function visibleModelMeshes() {\n const focusIds = focusedPartIdSet(focusedPartIdRef.current);\n const hiddenIds = focusedPartIdSet(hiddenPartIdsRef.current);\n return runtime.displayRecords\n .filter((record) => {\n if (!record?.mesh?.visible) {\n return false;\n }\n if (hiddenIds.has(String(record?.partId || \"\").trim())) {\n return false;\n }\n if (focusIds.size && !focusIds.has(String(record?.partId || \"\").trim())) {\n return false;\n }\n return true;\n })\n .map((record) => record.mesh);\n }\n\n function intersectVisibleModelMeshes() {\n const modelMeshes = visibleModelMeshes();\n if (!modelMeshes.length) {\n return [];\n }\n return filterClippedIntersections(runtime, runtime.raycaster.intersectObjects(modelMeshes, false));\n }\n\n function pickPartReferenceFromIntersections(intersections) {\n const focusIds = focusedPartIdSet(focusedPartIdRef.current);\n const hiddenIds = focusedPartIdSet(hiddenPartIdsRef.current);\n for (const intersection of intersections) {\n const partId = intersection?.object?.userData?.partId;\n if (!partId) {\n continue;\n }\n if (hiddenIds.has(String(partId || \"\").trim())) {\n continue;\n }\n if (focusIds.size && !focusIds.has(String(partId || \"\").trim())) {\n continue;\n }\n return partId;\n }\n return null;\n }\n\n function faceReferenceFromIntersection(intersection) {\n const triangleIndex = Number(intersection?.faceIndex);\n const faceIds = intersection?.object?.userData?.faceIds;\n const rowIndex = Number.isInteger(triangleIndex) ? Number(faceIds?.[triangleIndex]) : NaN;\n if (!Number.isInteger(rowIndex)) {\n return null;\n }\n const reference = selectorRuntimeRef.current?.faceReferenceByRowIndex?.get?.(rowIndex) || null;\n const referenceId = String(reference?.id || \"\").trim();\n const allowedFaceReferenceIds = allowedFaceReferenceIdsRef.current;\n if (!referenceId || (allowedFaceReferenceIds.size && !allowedFaceReferenceIds.has(referenceId))) {\n return null;\n }\n return reference;\n }\n\n function edgeReferenceFromIntersection(intersection) {\n // Three.js reports LineSegments hits as the starting index/vertex offset\n // for the segment (0, 2, 4, ...), while edgeIds is packed per segment.\n const hitIndex = Number(intersection?.index);\n const edgeIds = intersection?.object?.userData?.edgeIds;\n const segmentIndex = Number.isInteger(hitIndex) ? Math.floor(hitIndex / 2) : NaN;\n const rowIndex = Number.isInteger(segmentIndex) ? Number(edgeIds?.[segmentIndex]) : NaN;\n if (!Number.isInteger(rowIndex)) {\n return null;\n }\n const reference = selectorRuntimeRef.current?.edgeReferenceByRowIndex?.get?.(rowIndex) || null;\n const referenceId = String(reference?.id || \"\").trim();\n const allowedEdgeReferenceIds = allowedEdgeReferenceIdsRef.current;\n if (!referenceId || (allowedEdgeReferenceIds.size && !allowedEdgeReferenceIds.has(referenceId))) {\n return null;\n }\n return reference;\n }\n\n function vertexReferenceFromIntersection(intersection) {\n const pointIndex = Number(intersection?.index);\n const vertexIds = intersection?.object?.userData?.vertexIds;\n const rowIndex = Number.isInteger(pointIndex) ? Number(vertexIds?.[pointIndex]) : NaN;\n if (!Number.isInteger(rowIndex)) {\n return null;\n }\n const reference = selectorRuntimeRef.current?.vertexReferenceByRowIndex?.get?.(rowIndex) || null;\n const referenceId = String(reference?.id || \"\").trim();\n const allowedVertexReferenceIds = allowedVertexReferenceIdsRef.current;\n if (!referenceId || (allowedVertexReferenceIds.size && !allowedVertexReferenceIds.has(referenceId))) {\n return null;\n }\n return reference;\n }\n\n function pickFaceReference(modelIntersections) {\n if (!(Array.isArray(pickableFacesRef.current) ? pickableFacesRef.current : []).length) {\n return null;\n }\n for (const intersection of frontMostModelIntersections(modelIntersections)) {\n const reference = faceReferenceFromIntersection(intersection);\n if (reference) {\n return reference;\n }\n }\n if (!runtime.facePickMesh) {\n return null;\n }\n const intersections = filterClippedIntersections(runtime, runtime.raycaster.intersectObject(runtime.facePickMesh, false));\n if (!intersections.length) {\n return null;\n }\n const frontModelIntersections = frontMostModelIntersections(modelIntersections);\n let filteredIntersections = intersections;\n const nearestSurfaceDistance = Number(frontModelIntersections[0]?.distance);\n if (Number.isFinite(nearestSurfaceDistance)) {\n const depthWindow = Math.max(FRONT_LAYER_DISTANCE_MIN, nearestSurfaceDistance * FRONT_LAYER_DISTANCE_FACTOR);\n filteredIntersections = intersections.filter(\n (intersection) => Number(intersection?.distance) <= nearestSurfaceDistance + depthWindow\n );\n }\n for (const intersection of filteredIntersections.length ? filteredIntersections : intersections) {\n const reference = faceReferenceFromIntersection(intersection);\n if (!reference) {\n continue;\n }\n return reference;\n }\n return null;\n }\n\n function pickEdgeCandidate(modelIntersections, clientX, clientY, {\n thresholdScale = 1,\n maxScreenDistancePx = EDGE_PICK_MAX_SCREEN_DISTANCE_PX\n } = {}) {\n const pickableEdges = Array.isArray(pickableEdgesRef.current) ? pickableEdgesRef.current : [];\n if (!pickableEdges.length || !runtime.edgePickLines) {\n return null;\n }\n const edgeThreshold = currentPickThreshold(\n runtime.edgePickThreshold || 1,\n thresholdScale,\n maxScreenDistancePx,\n modelIntersections\n );\n if (runtime.raycaster?.params?.Line) {\n runtime.raycaster.params.Line.threshold = edgeThreshold;\n }\n let filteredIntersections = filterClippedIntersections(runtime, runtime.raycaster.intersectObject(runtime.edgePickLines, false));\n const nearestSurfaceDistance = Number(modelIntersections?.[0]?.distance);\n if (Number.isFinite(nearestSurfaceDistance)) {\n const depthAllowance = Math.max(\n EDGE_OCCLUSION_EPSILON_MIN,\n edgeThreshold * EDGE_OCCLUSION_EPSILON_FACTOR\n );\n filteredIntersections = filteredIntersections.filter(\n (intersection) => Number(intersection?.distance) <= nearestSurfaceDistance + depthAllowance\n );\n }\n const best = chooseBestEdgeIntersection(\n filteredIntersections,\n (intersection) => edgeScreenDistance(intersection, clientX, clientY)\n );\n if (!best) {\n return null;\n }\n const bestScreenDistance = edgeScreenDistance(best, clientX, clientY);\n if (Number.isFinite(bestScreenDistance) && bestScreenDistance > maxScreenDistancePx) {\n return null;\n }\n const reference = edgeReferenceFromIntersection(best);\n if (!reference) {\n return null;\n }\n return {\n reference,\n screenDistance: bestScreenDistance\n };\n }\n\n function pickVertexCandidate(modelIntersections, clientX, clientY, {\n thresholdScale = 1,\n maxScreenDistancePx = CORNER_PICK_MAX_SCREEN_DISTANCE_PX\n } = {}) {\n const pickableVertices = Array.isArray(pickableVerticesRef.current) ? pickableVerticesRef.current : [];\n if (!pickableVertices.length || !runtime.vertexPickPoints) {\n return null;\n }\n const vertexThreshold = currentPickThreshold(\n runtime.vertexPickThreshold || 1,\n thresholdScale,\n maxScreenDistancePx,\n modelIntersections\n );\n if (runtime.raycaster?.params?.Points) {\n runtime.raycaster.params.Points.threshold = vertexThreshold;\n }\n let filteredIntersections = filterClippedIntersections(runtime, runtime.raycaster.intersectObject(runtime.vertexPickPoints, false));\n const nearestSurfaceDistance = Number(modelIntersections?.[0]?.distance);\n if (Number.isFinite(nearestSurfaceDistance)) {\n const depthAllowance = Math.max(\n EDGE_OCCLUSION_EPSILON_MIN,\n vertexThreshold * EDGE_OCCLUSION_EPSILON_FACTOR\n );\n filteredIntersections = filteredIntersections.filter(\n (intersection) => Number(intersection?.distance) <= nearestSurfaceDistance + depthAllowance\n );\n }\n const best = chooseBestEdgeIntersection(\n filteredIntersections,\n (intersection) => edgeScreenDistance(intersection, clientX, clientY)\n );\n if (!best) {\n return null;\n }\n const bestScreenDistance = edgeScreenDistance(best, clientX, clientY);\n if (Number.isFinite(bestScreenDistance) && bestScreenDistance > maxScreenDistancePx) {\n return null;\n }\n const reference = vertexReferenceFromIntersection(best);\n if (!reference) {\n return null;\n }\n return {\n reference,\n screenDistance: bestScreenDistance\n };\n }\n\n function areFaceAndEdgeAdjacent(faceReference, edgeReference) {\n const adjacentSelectors = Array.isArray(faceReference?.pickData?.adjacentSelectors)\n ? faceReference.pickData.adjacentSelectors\n : [];\n if (!adjacentSelectors.length) {\n return false;\n }\n const edgeDisplaySelector = String(edgeReference?.displaySelector || \"\").trim();\n const edgeNormalizedSelector = String(edgeReference?.normalizedSelector || \"\").trim();\n return adjacentSelectors.includes(edgeDisplaySelector) || adjacentSelectors.includes(edgeNormalizedSelector);\n }\n\n function areEdgeAndVertexAdjacent(edgeReference, vertexReference) {\n const adjacentSelectors = Array.isArray(vertexReference?.pickData?.adjacentSelectors)\n ? vertexReference.pickData.adjacentSelectors\n : [];\n if (!adjacentSelectors.length) {\n return false;\n }\n const edgeDisplaySelector = String(edgeReference?.displaySelector || \"\").trim();\n const edgeNormalizedSelector = String(edgeReference?.normalizedSelector || \"\").trim();\n return adjacentSelectors.includes(edgeDisplaySelector) || adjacentSelectors.includes(edgeNormalizedSelector);\n }\n\n function areFaceAndVertexAdjacent(faceReference, vertexReference) {\n const faceAdjacentSelectors = Array.isArray(faceReference?.pickData?.adjacentSelectors)\n ? faceReference.pickData.adjacentSelectors\n : [];\n const vertexAdjacentSelectors = Array.isArray(vertexReference?.pickData?.adjacentSelectors)\n ? vertexReference.pickData.adjacentSelectors\n : [];\n if (!faceAdjacentSelectors.length || !vertexAdjacentSelectors.length) {\n return false;\n }\n const edgeSelectorSet = new Set(faceAdjacentSelectors);\n return vertexAdjacentSelectors.some((selector) => edgeSelectorSet.has(selector));\n }\n\n function pickTopologyReference(modelIntersections, clientX, clientY, { hover = false } = {}) {\n const pickableFaces = Array.isArray(pickableFacesRef.current) ? pickableFacesRef.current : [];\n const pickableEdges = Array.isArray(pickableEdgesRef.current) ? pickableEdgesRef.current : [];\n const pickableVertices = Array.isArray(pickableVerticesRef.current) ? pickableVerticesRef.current : [];\n const hasFaces = pickableFaces.length > 0;\n const hasEdges = pickableEdges.length > 0;\n const hasVertices = pickableVertices.length > 0;\n if (!hasFaces && !hasEdges && !hasVertices) {\n return null;\n }\n const faceReference = pickFaceReference(modelIntersections);\n const maxScreenDistancePx = hover\n ? (\n faceReference\n ? EDGE_HOVER_MAX_SCREEN_DISTANCE_WITH_FACE_PX\n : EDGE_HOVER_MAX_SCREEN_DISTANCE_PX\n )\n : (\n faceReference\n ? EDGE_PICK_MAX_SCREEN_DISTANCE_WITH_FACE_PX\n : EDGE_PICK_MAX_SCREEN_DISTANCE_PX\n );\n const edgeCandidate = pickEdgeCandidate(\n modelIntersections,\n clientX,\n clientY,\n {\n thresholdScale: faceReference ? AUTO_EDGE_PICK_THRESHOLD_FACTOR : 1,\n maxScreenDistancePx\n }\n );\n const vertexCandidate = pickVertexCandidate(\n modelIntersections,\n clientX,\n clientY,\n {\n maxScreenDistancePx: hover ? CORNER_HOVER_MAX_SCREEN_DISTANCE_PX : CORNER_PICK_MAX_SCREEN_DISTANCE_PX\n }\n );\n if (vertexCandidate) {\n const vertexPriorityDistancePx = hover ? CORNER_HOVER_PRIORITY_WITH_OTHER_PX : CORNER_PICK_PRIORITY_WITH_OTHER_PX;\n const adjacentToEdge = edgeCandidate && areEdgeAndVertexAdjacent(edgeCandidate.reference, vertexCandidate.reference);\n const adjacentToFace = faceReference && areFaceAndVertexAdjacent(faceReference, vertexCandidate.reference);\n if (!faceReference && !edgeCandidate) {\n return vertexCandidate.reference.id;\n }\n if ((adjacentToEdge || adjacentToFace) && Number(vertexCandidate.screenDistance) <= vertexPriorityDistancePx) {\n return vertexCandidate.reference.id;\n }\n }\n if (faceReference && edgeCandidate) {\n const priorityDistancePx = hover ? EDGE_HOVER_PRIORITY_WITH_FACE_PX : EDGE_PICK_PRIORITY_WITH_FACE_PX;\n if (areFaceAndEdgeAdjacent(faceReference, edgeCandidate.reference)) {\n if (Number(edgeCandidate.screenDistance) <= priorityDistancePx) {\n return edgeCandidate.reference.id;\n }\n return faceReference.id;\n }\n return faceReference.id;\n }\n return edgeCandidate?.reference?.id || faceReference?.id || vertexCandidate?.reference?.id || null;\n }\n\n function pickReferenceAtPosition(clientX, clientY, { hover = false, preferTopology = false } = {}) {\n setPointerFromPosition(clientX, clientY);\n const modelIntersections = intersectVisibleModelMeshes();\n const pickMode = pickModeRef.current;\n if (preferTopology) {\n const topologyReference = pickTopologyReference(modelIntersections, clientX, clientY, { hover });\n if (topologyReference) {\n return topologyReference;\n }\n }\n if (pickMode === VIEWER_PICK_MODE.PARTS) {\n return pickPartReferenceFromIntersections(modelIntersections);\n }\n if (pickMode === VIEWER_PICK_MODE.ASSEMBLY) {\n return pickPartReferenceFromIntersections(modelIntersections);\n }\n if (pickMode === VIEWER_PICK_MODE.AUTO) {\n return pickTopologyReference(modelIntersections, clientX, clientY, { hover }) ||\n pickPartReferenceFromIntersections(modelIntersections);\n }\n return null;\n }\n\n function pickActivationReference(clientX, clientY, pointerType = \"\") {\n if (canHoverWithPointer(pointerType)) {\n return String(hoverState.hoveredReferenceId || \"\").trim() || pickReferenceAtPosition(clientX, clientY, { hover: true });\n }\n return pickReferenceAtPosition(clientX, clientY);\n }\n\n function isCoarsePointer(pointerType = \"\") {\n return pointerType === \"touch\" || pointerType === \"pen\" || defaultToCoarsePointer;\n }\n\n function tapSlopForPointer(pointerType = \"\") {\n return isCoarsePointer(pointerType) ? COARSE_POINTER_TAP_SLOP_PX : FINE_POINTER_TAP_SLOP_PX;\n }\n\n function canHoverWithPointer(pointerType = \"\") {\n return !isCoarsePointer(pointerType);\n }\n\n function isSceneInteractionTarget(target) {\n if (!(target instanceof Node)) {\n return false;\n }\n if (sceneMount?.contains(target)) {\n return true;\n }\n if (drawingCanvas && (target === drawingCanvas || drawingCanvas.contains?.(target))) {\n return true;\n }\n return false;\n }\n\n function isSceneEvent(event) {\n return isSceneInteractionTarget(event.target);\n }\n\n function isActiveSceneGestureEvent(event) {\n return isSceneEvent(event) || contextPointer.active || primaryPointer.active;\n }\n\n function commitHoverState(referenceId) {\n const normalizedReferenceId = referenceId || \"\";\n container.style.cursor = normalizedReferenceId ? \"pointer\" : \"\";\n if (hoverState.hoveredReferenceId === normalizedReferenceId) {\n return;\n }\n hoverState.hoveredReferenceId = normalizedReferenceId;\n onHoverReferenceChangeRef.current?.(normalizedReferenceId);\n }\n\n function clearHoverState() {\n if (hoverState.rafId) {\n window.cancelAnimationFrame(hoverState.rafId);\n hoverState.rafId = 0;\n }\n hoverState.lastX = NaN;\n hoverState.lastY = NaN;\n container.style.cursor = \"\";\n if (!hoverState.hoveredReferenceId) {\n return;\n }\n hoverState.hoveredReferenceId = \"\";\n onHoverReferenceChangeRef.current?.(\"\");\n }\n\n function clearPendingActivation() {\n if (!activationTimerId) {\n return;\n }\n window.clearTimeout(activationTimerId);\n activationTimerId = 0;\n }\n\n function commitActivation(referenceId, options = {}) {\n onActivateReferenceRef.current?.(referenceId || \"\", options);\n }\n\n function scheduleActivation(referenceId, options = {}) {\n clearPendingActivation();\n if (!doubleClickEnabled) {\n commitActivation(referenceId, options);\n return;\n }\n activationTimerId = window.setTimeout(() => {\n activationTimerId = 0;\n commitActivation(referenceId, options);\n }, VIEWER_DOUBLE_CLICK_ACTIVATION_DELAY_MS);\n }\n\n function flushHoverPick() {\n hoverState.rafId = 0;\n if (runtime.interactionState.active) {\n clearHoverState();\n return;\n }\n hoverState.lastX = hoverState.x;\n hoverState.lastY = hoverState.y;\n commitHoverState(pickReferenceAtPosition(hoverState.x, hoverState.y, { hover: true }));\n }\n\n function scheduleHoverPick(clientX, clientY) {\n hoverState.x = clientX;\n hoverState.y = clientY;\n if (\n Number.isFinite(hoverState.lastX) &&\n Number.isFinite(hoverState.lastY) &&\n Math.hypot(clientX - hoverState.lastX, clientY - hoverState.lastY) < HOVER_PICK_MIN_MOVE_PX\n ) {\n return;\n }\n if (hoverState.rafId) {\n return;\n }\n hoverState.rafId = window.requestAnimationFrame(flushHoverPick);\n }\n\n function recordPrimaryPointerDown(event) {\n primaryPointer.active = true;\n primaryPointer.x = event.clientX;\n primaryPointer.y = event.clientY;\n primaryPointer.pointerType = event.pointerType || \"\";\n }\n\n function recordContextPointerDown(event) {\n const preserveGestureBlock = contextPointer.active || contextPointer.startedInScene;\n const blocked = preserveGestureBlock && contextPointer.blocked;\n const moved = preserveGestureBlock && contextPointer.moved;\n contextPointer.active = true;\n contextPointer.blocked = blocked;\n contextPointer.moved = moved;\n contextPointer.startedInScene = true;\n contextPointer.x = event.clientX;\n contextPointer.y = event.clientY;\n contextPointer.pointerType = event.pointerType || \"\";\n }\n\n function shouldOpenContextMenuFromRelease(event) {\n if (!contextPointer.startedInScene || contextPointer.blocked || contextPointer.moved) {\n return false;\n }\n if (primaryPointer.active || primaryButtonHeld(event) || chordButtonsHeld(event)) {\n return false;\n }\n const tapSlop = tapSlopForPointer(contextPointer.pointerType || event.pointerType);\n const moved = Math.hypot(event.clientX - contextPointer.x, event.clientY - contextPointer.y);\n return moved <= tapSlop;\n }\n\n function openContextMenuFromEvent(event, { suppressNativeContextMenu = true } = {}) {\n clearPendingActivation();\n if (suppressNativeContextMenu) {\n contextMenuGesture.suppressNextContextMenu();\n }\n const referenceId = pickActivationReference(event.clientX, event.clientY, event.pointerType || contextPointer.pointerType || \"\") || \"\";\n onContextReferenceRef.current?.(referenceId || \"\", {\n clientX: event.clientX,\n clientY: event.clientY,\n multiSelect: !!event.shiftKey\n });\n resetContextPointer();\n }\n\n function releaseContextPointer(event) {\n if (!contextPointer.startedInScene && !contextMenuGesture.isSuppressed()) {\n contextPointer.active = false;\n return;\n }\n if (shouldOpenContextMenuFromRelease(event)) {\n openContextMenuFromEvent(event);\n return;\n }\n contextMenuGesture.suppressNextContextMenu();\n resetContextPointer();\n }\n\n function updateContextPointerMove(event) {\n if (!contextPointer.active) {\n return;\n }\n const tapSlop = tapSlopForPointer(contextPointer.pointerType || event.pointerType);\n const moved = Math.hypot(event.clientX - contextPointer.x, event.clientY - contextPointer.y);\n if (moved > tapSlop) {\n contextPointer.blocked = true;\n contextPointer.moved = true;\n suppressContextMenuFromPanChord();\n }\n }\n\n function handlePointerDownCapture(event) {\n if (!isSceneEvent(event)) {\n return;\n }\n if (event.button === 0) {\n if (contextPointer.active || contextButtonHeld(event) || chordButtonsHeld(event)) {\n suppressContextMenuFromPanChord();\n } else {\n recordPrimaryPointerDown(event);\n }\n return;\n }\n if (event.button !== 2) {\n return;\n }\n recordContextPointerDown(event);\n if (pointerDown.active || primaryPointer.active || primaryButtonHeld(event) || chordButtonsHeld(event)) {\n suppressContextMenuFromPanChord();\n }\n }\n\n function handleMouseDownCapture(event) {\n if (!isSceneEvent(event)) {\n return;\n }\n if (event.button === 0) {\n if (contextPointer.active || contextButtonHeld(event) || chordButtonsHeld(event)) {\n suppressContextMenuFromPanChord();\n } else {\n recordPrimaryPointerDown(event);\n }\n return;\n }\n if (event.button !== 2) {\n return;\n }\n recordContextPointerDown(event);\n if (pointerDown.active || primaryPointer.active || primaryButtonHeld(event) || chordButtonsHeld(event)) {\n suppressContextMenuFromPanChord();\n }\n }\n\n function handlePointerMoveCapture(event) {\n if (!isActiveSceneGestureEvent(event)) {\n return;\n }\n updateContextPointerMove(event);\n if (chordButtonsHeld(event) || (primaryPointer.active && contextButtonHeld(event))) {\n suppressContextMenuFromPanChord();\n }\n }\n\n function handleMouseMoveCapture(event) {\n if (!isActiveSceneGestureEvent(event)) {\n return;\n }\n updateContextPointerMove(event);\n if (chordButtonsHeld(event) || (primaryPointer.active && contextButtonHeld(event))) {\n suppressContextMenuFromPanChord();\n }\n }\n\n function handlePointerUpCapture(event) {\n if (event.button === 0) {\n resetPrimaryPointer();\n } else if (event.button === 2) {\n contextPointer.active = false;\n }\n }\n\n function handleMouseUpCapture(event) {\n if (event.button === 0) {\n resetPrimaryPointer();\n } else if (event.button === 2) {\n releaseContextPointer(event);\n }\n }\n\n function handlePointerMove(event) {\n if (!isSceneInteractionTarget(event.target)) {\n clearHoverState();\n return;\n }\n if (primaryPointer.active && !primaryButtonHeld(event)) {\n resetPrimaryPointer();\n }\n if (chordButtonsHeld(event) || (primaryPointer.active && contextButtonHeld(event))) {\n suppressContextMenuFromPanChord();\n }\n updateContextPointerMove(event);\n if (runtime.interactionState.active) {\n clearHoverState();\n return;\n }\n const tapSlop = tapSlopForPointer(pointerDown.pointerType || event.pointerType);\n if (pointerDown.active) {\n const moved = Math.hypot(event.clientX - pointerDown.x, event.clientY - pointerDown.y);\n if (moved > tapSlop) {\n pointerDown.active = false;\n }\n }\n if (!canHoverWithPointer(event.pointerType)) {\n clearHoverState();\n return;\n }\n scheduleHoverPick(event.clientX, event.clientY);\n }\n\n function handlePointerLeave() {\n clearHoverState();\n if (pointerDown.active || primaryPointer.active || contextPointer.active) {\n suppressContextMenuFromPanChord();\n }\n pointerDown.active = false;\n pointerDown.pointerType = \"\";\n pointerDown.referenceId = \"\";\n resetPrimaryPointer();\n }\n\n function handlePointerDown(event) {\n if (event.button !== 0) {\n if (event.button === 2 && isSceneInteractionTarget(event.target)) {\n recordContextPointerDown(event);\n if (pointerDown.active || primaryPointer.active || primaryButtonHeld(event) || chordButtonsHeld(event)) {\n suppressContextMenuFromPanChord();\n }\n }\n return;\n }\n if (!isSceneInteractionTarget(event.target)) {\n return;\n }\n if (chordButtonsHeld(event) || contextButtonHeld(event)) {\n suppressContextMenuFromPanChord();\n return;\n }\n recordPrimaryPointerDown(event);\n pointerDown.active = true;\n pointerDown.x = event.clientX;\n pointerDown.y = event.clientY;\n pointerDown.pointerType = event.pointerType || \"\";\n pointerDown.referenceId = String(\n canHoverWithPointer(pointerDown.pointerType)\n ? (hoverState.hoveredReferenceId || pickReferenceAtPosition(event.clientX, event.clientY, { hover: true }) || \"\")\n : (pickReferenceAtPosition(event.clientX, event.clientY) || \"\")\n ).trim();\n }\n\n function handlePointerUp(event) {\n if (event.button === 0) {\n resetPrimaryPointer();\n } else if (event.button === 2) {\n contextPointer.active = false;\n }\n if (event.button !== 0) {\n return;\n }\n if (!pointerDown.active && !isSceneInteractionTarget(event.target)) {\n return;\n }\n const tapSlop = tapSlopForPointer(pointerDown.pointerType || event.pointerType);\n const moved = Math.hypot(event.clientX - pointerDown.x, event.clientY - pointerDown.y);\n if (!pointerDown.active || moved > tapSlop) {\n pointerDown.active = false;\n pointerDown.pointerType = \"\";\n pointerDown.referenceId = \"\";\n return;\n }\n const pointerDownReferenceId = String(pointerDown.referenceId || \"\").trim();\n pointerDown.active = false;\n pointerDown.pointerType = \"\";\n pointerDown.referenceId = \"\";\n const referenceId = pointerDownReferenceId || pickActivationReference(event.clientX, event.clientY, event.pointerType || \"\");\n scheduleActivation(referenceId || \"\", { multiSelect: !!event.shiftKey });\n }\n\n function handleDoubleClick(event) {\n if (!isSceneInteractionTarget(event.target)) {\n return;\n }\n clearPendingActivation();\n const referenceId = pickActivationReference(event.clientX, event.clientY, event.pointerType || \"\");\n onDoubleActivateReferenceRef.current?.(referenceId || \"\", { multiSelect: !!event.shiftKey });\n }\n\n function handleContextMenu(event) {\n if (!isSceneEvent(event)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n clearPendingActivation();\n contextMenuGesture.consumeSuppression();\n if (!contextPointer.startedInScene) {\n resetContextPointer();\n }\n }\n\n container.addEventListener(\"pointerdown\", handlePointerDownCapture, true);\n container.addEventListener(\"pointermove\", handlePointerMoveCapture, true);\n container.addEventListener(\"pointerup\", handlePointerUpCapture, true);\n document.addEventListener(\"mousedown\", handleMouseDownCapture, true);\n document.addEventListener(\"mousemove\", handleMouseMoveCapture, true);\n document.addEventListener(\"mouseup\", handleMouseUpCapture, true);\n document.addEventListener(\"contextmenu\", handleContextMenu, true);\n container.addEventListener(\"pointermove\", handlePointerMove);\n container.addEventListener(\"pointerleave\", handlePointerLeave);\n container.addEventListener(\"pointerdown\", handlePointerDown);\n container.addEventListener(\"pointerup\", handlePointerUp);\n if (doubleClickEnabled) {\n container.addEventListener(\"dblclick\", handleDoubleClick);\n }\n\n return () => {\n container.removeEventListener(\"pointerdown\", handlePointerDownCapture, true);\n container.removeEventListener(\"pointermove\", handlePointerMoveCapture, true);\n container.removeEventListener(\"pointerup\", handlePointerUpCapture, true);\n document.removeEventListener(\"mousedown\", handleMouseDownCapture, true);\n document.removeEventListener(\"mousemove\", handleMouseMoveCapture, true);\n document.removeEventListener(\"mouseup\", handleMouseUpCapture, true);\n document.removeEventListener(\"contextmenu\", handleContextMenu, true);\n container.removeEventListener(\"pointermove\", handlePointerMove);\n container.removeEventListener(\"pointerleave\", handlePointerLeave);\n container.removeEventListener(\"pointerdown\", handlePointerDown);\n container.removeEventListener(\"pointerup\", handlePointerUp);\n if (doubleClickEnabled) {\n container.removeEventListener(\"dblclick\", handleDoubleClick);\n }\n contextMenuGesture.clear();\n clearPendingActivation();\n clearHoverState();\n container.style.cursor = \"\";\n };\n }, [\n drawingCanvasRef,\n mountRef,\n previewMode,\n runtimeRef,\n sceneMountRef,\n viewerReadyTick\n ]);\n}\n","export function isEditableTarget(target) {\n if (!(target instanceof Element)) {\n return false;\n }\n return !!target.closest(\"input, textarea, select, [contenteditable=''], [contenteditable='true'], [role='textbox']\");\n}\n","export function cadWebGlRendererAttributes({\n alpha = true,\n antialias = true,\n powerPreference = \"high-performance\",\n preserveDrawingBuffer = false,\n logarithmicDepthBuffer = true\n} = {}) {\n return {\n alpha,\n antialias,\n powerPreference,\n preserveDrawingBuffer,\n logarithmicDepthBuffer\n };\n}\n\nexport function fallbackCadWebGlRendererAttributes(options = {}) {\n return {\n ...cadWebGlRendererAttributes(options),\n antialias: false,\n powerPreference: \"default\",\n logarithmicDepthBuffer: false\n };\n}\n\nexport function createCadWebGlRenderer(THREE, {\n allowFallback = false,\n isRecoverableError = () => true,\n ...options\n} = {}) {\n try {\n return new THREE.WebGLRenderer(cadWebGlRendererAttributes(options));\n } catch (error) {\n if (!allowFallback || !isRecoverableError(error)) {\n throw error;\n }\n return new THREE.WebGLRenderer(fallbackCadWebGlRendererAttributes(options));\n }\n}\n","export function resolveInteractionPixelRatioCap({\n idlePixelRatioCap = 2,\n interactionPixelRatioCap = 1,\n preservePixelRatio = false,\n screenSpaceLineMaterialCount = null,\n screenSpaceLineMaterials = null\n} = {}) {\n if (preservePixelRatio) {\n return idlePixelRatioCap;\n }\n const materialCount = screenSpaceLineMaterialCount != null && Number.isFinite(Number(screenSpaceLineMaterialCount))\n ? Number(screenSpaceLineMaterialCount)\n : Number(screenSpaceLineMaterials?.size || 0);\n return materialCount > 0\n ? idlePixelRatioCap\n : interactionPixelRatioCap;\n}\n","const MAX_ORBIT_DELTA_SECONDS = 1;\nexport const PREVIEW_ORBIT_SECONDS_PER_TURN = 60;\nexport const PREVIEW_AUTO_ROTATE_SPEED = 60 / PREVIEW_ORBIT_SECONDS_PER_TURN;\n\nfunction finiteTimestamp(value) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : null;\n}\n\nexport function orbitControlsDeltaSeconds(timestamp, previousTimestamp) {\n const current = finiteTimestamp(timestamp);\n const previous = finiteTimestamp(previousTimestamp);\n if (current === null || previous === null || previous <= 0 || current <= previous) {\n return null;\n }\n return Math.min((current - previous) / 1000, MAX_ORBIT_DELTA_SECONDS);\n}\n\nexport function updateOrbitControls(controls, timestamp, state) {\n if (!controls || typeof controls.update !== \"function\") {\n return false;\n }\n\n if (!controls.autoRotate) {\n if (state) {\n state.orbitControlsLastTimestamp = 0;\n }\n return controls.update();\n }\n\n const current = finiteTimestamp(timestamp);\n const deltaSeconds = orbitControlsDeltaSeconds(current, state?.orbitControlsLastTimestamp);\n if (state) {\n state.orbitControlsLastTimestamp = current ?? 0;\n }\n return deltaSeconds === null ? controls.update() : controls.update(deltaSeconds);\n}\n","import { useEffect } from \"react\";\nimport { isEditableTarget } from \"../../../ui/dom\";\nimport {\n isWebGlContextCreationError,\n runtimeErrorMessage\n} from \"cadjs/lib/viewer/webglSupport\";\nimport {\n createCadWebGlRenderer\n} from \"cadjs/common/webglRenderer\";\nimport {\n resolveInteractionPixelRatioCap\n} from \"cadjs/lib/viewer/renderQuality\";\nimport { updateOrbitControls } from \"../orbitControls.js\";\n\nfunction createWebGlRenderer(THREE) {\n return createCadWebGlRenderer(THREE, {\n allowFallback: true,\n isRecoverableError: isWebGlContextCreationError\n });\n}\n\nexport function useViewerRuntime({\n mountRef,\n runtimeRef,\n previewModeRef,\n setError,\n setViewerReadyTick,\n viewerTheme,\n syncDrawingCanvasSize,\n renderDrawingOverlay,\n emitPerspectiveChange,\n setActiveViewPlaneFace,\n activeViewPlaneFaceRef,\n stepCameraTransition,\n stepKeyboardOrbit,\n getActiveViewPlaneFaceId,\n cancelCameraTransition,\n clearKeyboardOrbitState,\n isTrackpadLikeWheelEvent,\n getKeyboardOrbitCommand,\n getKeyboardOrbitAxes,\n applyOrbitDelta,\n getViewerThemeValue,\n getPixelRatioCap,\n applySceneBackground,\n applyCameraFrameInsets,\n frameInsetsRef,\n applyInitialPerspective,\n updateGridHelper,\n clearSceneGroup,\n disposeSceneObject,\n disposeTexture,\n syncViewPlaneOrientation,\n BASE_VIEWER_THEME,\n DEFAULT_LIGHTING,\n DEFAULT_DAMPING_FACTOR,\n DEFAULT_ZOOM_SPEED,\n COARSE_POINTER_ZOOM_SPEED,\n INTERACTION_PIXEL_RATIO_CAP,\n IDLE_PIXEL_RATIO_CAP,\n INTERACTION_IDLE_DELAY_MS,\n TRACKPAD_PINCH_ZOOM_SPEED,\n COARSE_POINTER_PINCH_ZOOM_SPEED,\n ACCELERATED_WHEEL_ZOOM_SPEED,\n KEYBOARD_ORBIT_NUDGE_RAD,\n defaultGridRadius,\n sceneScaleMode,\n floorMode,\n onManualCameraInteraction,\n onViewportResize,\n onContextLost,\n onContextRestored,\n onInitializationError,\n preserveInteractionPixelRatio = false,\n runtimeResetToken = 0\n}) {\n useEffect(() => {\n if (runtimeRef.current) {\n runtimeRef.current.preserveInteractionPixelRatio = preserveInteractionPixelRatio === true;\n }\n }, [preserveInteractionPixelRatio, runtimeRef, runtimeResetToken]);\n\n // Runtime setup/teardown should run once per WebGL runtime epoch.\n useEffect(() => {\n let cancelled = false;\n let cleanup = () => {};\n\n async function initializeViewer() {\n const [\n THREE,\n { OrbitControls },\n { Line2 },\n { LineGeometry },\n { LineSegments2 },\n { LineSegmentsGeometry },\n { LineMaterial }\n ] = await Promise.all([\n import(\"three\"),\n import(\"three/examples/jsm/controls/OrbitControls.js\"),\n import(\"three/examples/jsm/lines/Line2.js\"),\n import(\"three/examples/jsm/lines/LineGeometry.js\"),\n import(\"three/examples/jsm/lines/LineSegments2.js\"),\n import(\"three/examples/jsm/lines/LineSegmentsGeometry.js\"),\n import(\"three/examples/jsm/lines/LineMaterial.js\")\n ]);\n if (cancelled || !mountRef.current) {\n return;\n }\n\n const container = mountRef.current;\n const coarsePointerQuery = typeof window.matchMedia === \"function\"\n ? window.matchMedia(\"(pointer: coarse)\")\n : null;\n const prefersCoarsePointer = coarsePointerQuery?.matches ?? false;\n const getOrbitControlsPixelRatioBucket = () => Math.max((window.devicePixelRatio || 1) | 0, 1);\n const initialWheelPixelRatioBucket = getOrbitControlsPixelRatioBucket();\n const getDefaultZoomSpeed = () => (prefersCoarsePointer ? COARSE_POINTER_ZOOM_SPEED : DEFAULT_ZOOM_SPEED);\n const getPinchZoomSpeed = () => (prefersCoarsePointer ? COARSE_POINTER_PINCH_ZOOM_SPEED : TRACKPAD_PINCH_ZOOM_SPEED);\n const getWheelZoomSpeed = (baseZoomSpeed) => {\n // OrbitControls divides wheel deltas by a floored devicePixelRatio internally.\n // Browser zoom changes that bucket, so scale our speed back to the initial bucket.\n return baseZoomSpeed * (getOrbitControlsPixelRatioBucket() / initialWheelPixelRatioBucket);\n };\n const width = container.clientWidth || 800;\n const height = container.clientHeight || 640;\n\n const scene = new THREE.Scene();\n\n const syncCameraViewport = (targetCamera, nextWidth = width, nextHeight = height) => {\n if (!targetCamera) {\n return;\n }\n const aspect = Math.max(nextWidth, 1) / Math.max(nextHeight, 1);\n if (targetCamera.isPerspectiveCamera) {\n targetCamera.aspect = aspect;\n } else if (targetCamera.isOrthographicCamera) {\n const halfHeight = Math.max(Number(targetCamera.userData?.cadHalfHeight) || 120, 1e-3);\n targetCamera.left = -halfHeight * aspect;\n targetCamera.right = halfHeight * aspect;\n targetCamera.top = halfHeight;\n targetCamera.bottom = -halfHeight;\n }\n targetCamera.updateProjectionMatrix?.();\n };\n\n const perspectiveCamera = new THREE.PerspectiveCamera(48, width / height, 0.1, 50000);\n const orthographicCamera = new THREE.OrthographicCamera(-120, 120, 120, -120, 0.1, 50000);\n orthographicCamera.userData.cadHalfHeight = 120;\n const camera = perspectiveCamera;\n camera.up.set(0, 0, 1);\n camera.position.set(180, -180, 120);\n orthographicCamera.up.copy(camera.up);\n orthographicCamera.position.copy(camera.position);\n syncCameraViewport(perspectiveCamera, width, height);\n syncCameraViewport(orthographicCamera, width, height);\n\n const renderer = createWebGlRenderer(THREE);\n renderer.outputColorSpace = THREE.SRGBColorSpace;\n renderer.toneMapping = THREE.ACESFilmicToneMapping;\n renderer.toneMappingExposure = getViewerThemeValue(viewerTheme, \"toneMappingExposure\", DEFAULT_LIGHTING.toneMappingExposure);\n renderer.localClippingEnabled = true;\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n renderer.setPixelRatio(getPixelRatioCap(IDLE_PIXEL_RATIO_CAP));\n renderer.setSize(width, height);\n container.innerHTML = \"\";\n container.appendChild(renderer.domElement);\n\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n controls.rotateSpeed = 1;\n controls.panSpeed = 1.35;\n controls.zoomSpeed = getDefaultZoomSpeed();\n if (\"zoomToCursor\" in controls) {\n controls.zoomToCursor = true;\n }\n\n const hemisphereLight = new THREE.HemisphereLight(\n getViewerThemeValue(viewerTheme, \"hemisphereSky\", DEFAULT_LIGHTING.hemisphereSky),\n getViewerThemeValue(viewerTheme, \"hemisphereGround\", DEFAULT_LIGHTING.hemisphereGround),\n getViewerThemeValue(viewerTheme, \"hemisphereIntensity\", DEFAULT_LIGHTING.hemisphereIntensity)\n );\n scene.add(hemisphereLight);\n const ambientLight = new THREE.AmbientLight(\"#ffffff\", 0);\n scene.add(ambientLight);\n const keyLight = new THREE.DirectionalLight(\n getViewerThemeValue(viewerTheme, \"keyLightColor\", DEFAULT_LIGHTING.keyLightColor),\n getViewerThemeValue(viewerTheme, \"keyLightIntensity\", DEFAULT_LIGHTING.keyLightIntensity)\n );\n keyLight.position.set(240, -150, 340);\n keyLight.castShadow = true;\n keyLight.shadow.mapSize.set(2048, 2048);\n keyLight.shadow.bias = -0.00025;\n keyLight.shadow.normalBias = 0.024;\n scene.add(keyLight);\n const fillLight = new THREE.DirectionalLight(\n getViewerThemeValue(viewerTheme, \"fillLightColor\", DEFAULT_LIGHTING.fillLightColor),\n getViewerThemeValue(viewerTheme, \"fillLightIntensity\", DEFAULT_LIGHTING.fillLightIntensity)\n );\n fillLight.position.set(120, 80, 210);\n scene.add(fillLight);\n const rimLight = new THREE.DirectionalLight(\n getViewerThemeValue(viewerTheme, \"rimLightColor\", DEFAULT_LIGHTING.rimLightColor),\n getViewerThemeValue(viewerTheme, \"rimLightIntensity\", DEFAULT_LIGHTING.rimLightIntensity)\n );\n rimLight.position.set(-260, 240, 180);\n scene.add(rimLight);\n const spotLight = new THREE.SpotLight(\"#ffffff\", 0, 0, Math.PI / 6);\n spotLight.position.set(160, -120, 140);\n spotLight.visible = false;\n spotLight.castShadow = false;\n spotLight.shadow.mapSize.set(1024, 1024);\n spotLight.shadow.bias = -0.00025;\n spotLight.shadow.normalBias = 0.01;\n scene.add(spotLight);\n scene.add(spotLight.target);\n const pointLight = new THREE.PointLight(\"#ffffff\", 0, 0);\n pointLight.position.set(-120, 80, 140);\n pointLight.visible = false;\n pointLight.castShadow = false;\n scene.add(pointLight);\n const axesHelper = null;\n\n const stageGroup = new THREE.Group();\n const modelGroup = new THREE.Group();\n const edgesGroup = new THREE.Group();\n const facePickGroup = new THREE.Group();\n const edgePickGroup = new THREE.Group();\n const vertexPickGroup = new THREE.Group();\n scene.add(stageGroup);\n scene.add(modelGroup);\n scene.add(edgesGroup);\n scene.add(facePickGroup);\n scene.add(edgePickGroup);\n scene.add(vertexPickGroup);\n\n const raycaster = new THREE.Raycaster();\n const pointer = new THREE.Vector2();\n const interactionState = {\n active: false,\n pixelRatioCap: IDLE_PIXEL_RATIO_CAP,\n pixelRatio: getPixelRatioCap(IDLE_PIXEL_RATIO_CAP),\n renderQueued: false,\n renderQueuedAt: 0,\n renderFallbackTimerId: 0,\n restoreTimerId: 0\n };\n const keyboardOrbitState = {\n pressedKeys: new Set(),\n directionCounts: {\n left: 0,\n right: 0,\n up: 0,\n down: 0\n },\n lastFrameTime: 0\n };\n const screenSpaceLineMaterials = new Set();\n\n const getScreenSpaceLineMaterialCount = () => (\n screenSpaceLineMaterials.size +\n Number(runtimeRef.current?.cadScene?.runtime?.screenSpaceLineMaterials?.size || 0)\n );\n\n const syncScreenSpaceLineMaterials = () => {\n const nextWidth = container.clientWidth || width || 1;\n const nextHeight = container.clientHeight || height || 1;\n for (const material of screenSpaceLineMaterials) {\n material?.resolution?.set?.(nextWidth, nextHeight);\n }\n runtimeRef.current?.cadScene?.runtime?.syncScreenSpaceLineMaterials?.(nextWidth, nextHeight);\n };\n\n const registerScreenSpaceLineMaterial = (material) => {\n if (!material?.resolution?.set) {\n return;\n }\n screenSpaceLineMaterials.add(material);\n material.resolution.set(container.clientWidth || width || 1, container.clientHeight || height || 1);\n };\n\n const unregisterScreenSpaceLineMaterial = (material) => {\n if (!material) {\n return;\n }\n screenSpaceLineMaterials.delete(material);\n };\n const handleContextLost = (event) => {\n event.preventDefault();\n clearKeyboardOrbitState(keyboardOrbitState);\n setError(\"WebGL context was lost. Restoring CAD Viewer...\");\n onContextLost?.();\n };\n const handleContextRestored = () => {\n setError(\"\");\n onContextRestored?.();\n };\n\n const applyRenderQuality = (pixelRatioCap) => {\n const nextPixelRatio = getPixelRatioCap(pixelRatioCap);\n if (\n Math.abs(interactionState.pixelRatioCap - pixelRatioCap) < 1e-4 &&\n Math.abs((interactionState.pixelRatio || 0) - nextPixelRatio) < 1e-4\n ) {\n return;\n }\n interactionState.pixelRatioCap = pixelRatioCap;\n interactionState.pixelRatio = nextPixelRatio;\n renderer.setPixelRatio(nextPixelRatio);\n renderer.setSize(container.clientWidth || width, container.clientHeight || height, false);\n syncScreenSpaceLineMaterials();\n syncDrawingCanvasSize(runtimeRef.current);\n renderDrawingOverlay();\n };\n\n let rafId = 0;\n const requestRender = () => {\n if (interactionState.renderQueued) {\n const now = typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n if (interactionState.renderQueuedAt && now - interactionState.renderQueuedAt < 120) {\n return;\n }\n window.cancelAnimationFrame(rafId);\n interactionState.renderQueued = false;\n interactionState.renderQueuedAt = 0;\n }\n interactionState.renderQueued = true;\n interactionState.renderQueuedAt = typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n rafId = window.requestAnimationFrame(renderFrame);\n if (interactionState.renderFallbackTimerId) {\n window.clearTimeout(interactionState.renderFallbackTimerId);\n }\n interactionState.renderFallbackTimerId = window.setTimeout(() => {\n if (!interactionState.renderQueued) {\n return;\n }\n window.cancelAnimationFrame(rafId);\n renderFrame(\n typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now()\n );\n }, 120);\n if (runtimeRef.current) {\n runtimeRef.current.rafId = rafId;\n }\n };\n\n function renderFrame(timestamp) {\n interactionState.renderQueued = false;\n interactionState.renderQueuedAt = 0;\n if (interactionState.renderFallbackTimerId) {\n window.clearTimeout(interactionState.renderFallbackTimerId);\n interactionState.renderFallbackTimerId = 0;\n }\n const cameraTransitionActive = stepCameraTransition(runtimeRef.current, timestamp);\n const keyboardOrbitMoved = stepKeyboardOrbit(runtimeRef.current, timestamp);\n const needsMoreFrames = updateOrbitControls(controls, timestamp, runtimeRef.current);\n if (cameraTransitionActive || keyboardOrbitMoved) {\n emitPerspectiveChange(runtimeRef.current);\n }\n renderer.render(scene, runtimeRef.current?.camera || camera);\n const previewOrbitActive = !!runtimeRef.current?.previewOrbitEnabled;\n if (!previewOrbitActive) {\n const nextActiveFace = getActiveViewPlaneFaceId(runtimeRef.current);\n if (nextActiveFace !== activeViewPlaneFaceRef.current) {\n activeViewPlaneFaceRef.current = nextActiveFace;\n setActiveViewPlaneFace(nextActiveFace);\n }\n syncViewPlaneOrientation(runtimeRef.current);\n }\n if (\n cameraTransitionActive ||\n keyboardOrbitMoved ||\n needsMoreFrames ||\n interactionState.active ||\n previewOrbitActive\n ) {\n requestRender();\n }\n }\n\n const beginInteraction = () => {\n if (interactionState.restoreTimerId) {\n window.clearTimeout(interactionState.restoreTimerId);\n interactionState.restoreTimerId = 0;\n }\n interactionState.active = true;\n applyRenderQuality(resolveInteractionPixelRatioCap({\n idlePixelRatioCap: IDLE_PIXEL_RATIO_CAP,\n interactionPixelRatioCap: INTERACTION_PIXEL_RATIO_CAP,\n preservePixelRatio: runtimeRef.current?.preserveInteractionPixelRatio === true,\n screenSpaceLineMaterialCount: getScreenSpaceLineMaterialCount()\n }));\n requestRender();\n };\n\n const scheduleIdleQuality = () => {\n if (interactionState.restoreTimerId) {\n window.clearTimeout(interactionState.restoreTimerId);\n }\n interactionState.restoreTimerId = window.setTimeout(() => {\n interactionState.restoreTimerId = 0;\n interactionState.active = false;\n controls.enableDamping = true;\n controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n controls.zoomSpeed = getDefaultZoomSpeed();\n applyRenderQuality(IDLE_PIXEL_RATIO_CAP);\n requestRender();\n }, INTERACTION_IDLE_DELAY_MS);\n };\n\n const onResize = () => {\n const w = container.clientWidth || 800;\n const h = container.clientHeight || 640;\n applyRenderQuality(interactionState.pixelRatioCap);\n renderer.setSize(w, h);\n syncCameraViewport(perspectiveCamera, w, h);\n syncCameraViewport(orthographicCamera, w, h);\n applyCameraFrameInsets?.(runtimeRef.current, frameInsetsRef?.current, { updateProjection: false });\n syncScreenSpaceLineMaterials();\n syncDrawingCanvasSize(runtimeRef.current);\n renderDrawingOverlay();\n runtimeRef.current?.onViewportResize?.();\n requestRender();\n };\n window.addEventListener(\"resize\", onResize);\n const resizeObserver = typeof ResizeObserver === \"function\"\n ? new ResizeObserver(() => {\n onResize();\n })\n : null;\n resizeObserver?.observe(container);\n\n let controlsStartDistance = null;\n const readControlsDistance = () => {\n const activeRuntime = runtimeRef.current;\n if (!activeRuntime?.camera || !activeRuntime?.controls?.target) {\n return null;\n }\n return activeRuntime.camera.position.distanceTo(activeRuntime.controls.target);\n };\n const handleControlsStart = () => {\n controlsStartDistance = readControlsDistance();\n cancelCameraTransition(runtimeRef.current);\n beginInteraction();\n };\n const handleControlsChange = () => {\n emitPerspectiveChange(runtimeRef.current);\n requestRender();\n };\n const handleControlsEnd = () => {\n const controlsEndDistance = readControlsDistance();\n if (Number.isFinite(controlsStartDistance) && Number.isFinite(controlsEndDistance)) {\n const threshold = Math.max(Math.abs(controlsStartDistance) * 0.002, 1e-4);\n if (Math.abs(controlsEndDistance - controlsStartDistance) > threshold) {\n runtimeRef.current?.onManualCameraInteraction?.(\"zoom\");\n }\n }\n controlsStartDistance = null;\n scheduleIdleQuality();\n };\n const handleWheel = (event) => {\n runtimeRef.current?.onManualCameraInteraction?.(\"wheel\");\n cancelCameraTransition(runtimeRef.current);\n controls.enableDamping = false;\n controls.zoomSpeed = getWheelZoomSpeed(isTrackpadLikeWheelEvent(event)\n ? getPinchZoomSpeed()\n : ACCELERATED_WHEEL_ZOOM_SPEED);\n beginInteraction();\n };\n const wheelListenerOptions = { passive: true, capture: true };\n\n controls.addEventListener(\"start\", handleControlsStart);\n controls.addEventListener(\"change\", handleControlsChange);\n controls.addEventListener(\"end\", handleControlsEnd);\n renderer.domElement.addEventListener(\"wheel\", handleWheel, wheelListenerOptions);\n renderer.domElement.addEventListener(\"webglcontextlost\", handleContextLost, false);\n renderer.domElement.addEventListener(\"webglcontextrestored\", handleContextRestored, false);\n\n const handleKeyDown = (event) => {\n if (\n previewModeRef.current ||\n event.defaultPrevented ||\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n isEditableTarget(event.target)\n ) {\n return;\n }\n\n const command = getKeyboardOrbitCommand(event);\n if (!command) {\n return;\n }\n if (keyboardOrbitState.pressedKeys.has(command.keyId)) {\n event.preventDefault();\n return;\n }\n\n keyboardOrbitState.pressedKeys.add(command.keyId);\n keyboardOrbitState.directionCounts[command.direction] += 1;\n keyboardOrbitState.lastFrameTime = 0;\n cancelCameraTransition(runtimeRef.current);\n beginInteraction();\n applyOrbitDelta(\n runtimeRef.current,\n (command.direction === \"right\" ? 1 : command.direction === \"left\" ? -1 : 0) * KEYBOARD_ORBIT_NUDGE_RAD,\n (command.direction === \"down\" ? 1 : command.direction === \"up\" ? -1 : 0) * KEYBOARD_ORBIT_NUDGE_RAD\n );\n emitPerspectiveChange(runtimeRef.current);\n requestRender();\n event.preventDefault();\n };\n\n const handleKeyUp = (event) => {\n const command = getKeyboardOrbitCommand(event);\n if (!command) {\n return;\n }\n if (!keyboardOrbitState.pressedKeys.delete(command.keyId)) {\n return;\n }\n\n keyboardOrbitState.directionCounts[command.direction] = Math.max(\n 0,\n keyboardOrbitState.directionCounts[command.direction] - 1\n );\n const axes = getKeyboardOrbitAxes(keyboardOrbitState);\n if (!axes.azimuth && !axes.polar) {\n keyboardOrbitState.lastFrameTime = 0;\n scheduleIdleQuality();\n }\n event.preventDefault();\n };\n\n const clearKeyboardOrbit = () => {\n if (!keyboardOrbitState.pressedKeys.size) {\n return;\n }\n clearKeyboardOrbitState(keyboardOrbitState);\n scheduleIdleQuality();\n };\n\n const handleVisibilityChange = () => {\n if (document.visibilityState !== \"visible\") {\n clearKeyboardOrbit();\n }\n };\n\n runtimeRef.current = {\n THREE,\n scene,\n camera,\n perspectiveCamera,\n orthographicCamera,\n projection: \"perspective\",\n syncCameraViewport,\n renderer,\n Line2,\n LineGeometry,\n LineSegments2,\n LineSegmentsGeometry,\n LineMaterial,\n controls,\n stageGroup,\n modelGroup,\n edgesGroup,\n facePickGroup,\n edgePickGroup,\n vertexPickGroup,\n facePickMesh: null,\n edgePickLines: null,\n vertexPickPoints: null,\n edgePickObjects: [],\n displayRecords: [],\n modelBounds: null,\n modelRadius: 1,\n activeModelKey: \"\",\n sceneScaleMode,\n raycaster,\n pointer,\n hemisphereLight,\n ambientLight,\n keyLight,\n fillLight,\n rimLight,\n spotLight,\n pointLight,\n axesHelper,\n sceneBackgroundTexture: null,\n environmentTexture: null,\n environmentTextureUrl: \"\",\n gridConfig: null,\n gridHelper: null,\n floorMode,\n hasVisibleModel: false,\n edgePickThreshold: 1.5,\n vertexPickThreshold: 0.9,\n cameraTransition: null,\n previewOrbitEnabled: false,\n orbitControlsLastTimestamp: 0,\n preserveInteractionPixelRatio: preserveInteractionPixelRatio === true,\n interactionState,\n keyboardOrbitState,\n onResize,\n resizeObserver,\n rafId,\n requestRender,\n beginInteraction,\n scheduleIdleQuality,\n applyCameraFrameInsets,\n frameInsetsRef,\n onManualCameraInteraction,\n onViewportResize,\n registerScreenSpaceLineMaterial,\n unregisterScreenSpaceLineMaterial\n };\n syncDrawingCanvasSize(runtimeRef.current);\n renderDrawingOverlay();\n applySceneBackground(runtimeRef.current, viewerTheme);\n applyCameraFrameInsets?.(runtimeRef.current, frameInsetsRef?.current);\n applyInitialPerspective?.(runtimeRef.current);\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n window.addEventListener(\"blur\", clearKeyboardOrbit);\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n requestRender();\n updateGridHelper(runtimeRef.current, viewerTheme, defaultGridRadius, 0, sceneScaleMode, floorMode);\n setViewerReadyTick((value) => value + 1);\n\n cleanup = () => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n if (runtime.interactionState.restoreTimerId) {\n window.clearTimeout(runtime.interactionState.restoreTimerId);\n }\n if (runtime.interactionState.renderFallbackTimerId) {\n window.clearTimeout(runtime.interactionState.renderFallbackTimerId);\n }\n cancelCameraTransition(runtime, { scheduleIdle: false });\n window.cancelAnimationFrame(runtime.rafId);\n window.removeEventListener(\"resize\", runtime.onResize);\n runtime.resizeObserver?.disconnect();\n runtime.controls.removeEventListener(\"start\", handleControlsStart);\n runtime.controls.removeEventListener(\"change\", handleControlsChange);\n runtime.controls.removeEventListener(\"end\", handleControlsEnd);\n runtime.renderer.domElement.removeEventListener(\"wheel\", handleWheel, wheelListenerOptions);\n runtime.renderer.domElement.removeEventListener(\"webglcontextlost\", handleContextLost, false);\n runtime.renderer.domElement.removeEventListener(\"webglcontextrestored\", handleContextRestored, false);\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n window.removeEventListener(\"blur\", clearKeyboardOrbit);\n document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n runtime.controls.dispose();\n clearSceneGroup(runtime.stageGroup);\n clearSceneGroup(runtime.modelGroup);\n clearSceneGroup(runtime.edgesGroup);\n clearSceneGroup(runtime.facePickGroup);\n clearSceneGroup(runtime.edgePickGroup);\n clearSceneGroup(runtime.vertexPickGroup);\n disposeSceneObject(runtime.gridHelper);\n disposeSceneObject(runtime.axesHelper);\n disposeTexture(runtime.sceneBackgroundTexture);\n disposeTexture(runtime.environmentTexture);\n runtime.renderer.dispose();\n if (container.contains(runtime.renderer.domElement)) {\n container.removeChild(runtime.renderer.domElement);\n }\n runtimeRef.current = null;\n };\n }\n\n initializeViewer().catch((err) => {\n if (!cancelled) {\n setError(runtimeErrorMessage(err));\n onInitializationError?.(err);\n }\n });\n\n return () => {\n cancelled = true;\n cleanup();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [runtimeResetToken]);\n}\n","import {\n normalizeThemeSettings\n} from \"cadjs/lib/themeSettings.js\";\nimport {\n normalizeDisplaySettings\n} from \"cadjs/lib/displaySettings.js\";\n\nexport function normalizeViewerRenderState({\n themeSettings = {},\n displaySettings = null\n} = {}) {\n const normalizedThemeSettings = normalizeThemeSettings(themeSettings);\n const normalizedDisplaySettings = normalizeDisplaySettings(displaySettings);\n return {\n themeSettings: normalizedThemeSettings,\n displaySettings: normalizedDisplaySettings,\n displayMode: normalizedDisplaySettings.mode,\n clipSettings: normalizedDisplaySettings.clip\n };\n}\n","\"use client\";\n\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { Minus, Plus, RotateCcw } from \"lucide-react\";\nimport { parseCadRefToken } from \"cadjs/lib/cadRefs\";\nimport { STEP_TREE_TOPOLOGY_NODE_PREFIX } from \"cadjs/lib/step/stepTree\";\nimport { copyImageBlobToClipboard } from \"@/ui/clipboard\";\nimport { triggerBlobDownload } from \"@/ui/download\";\nimport {\n annotatePerspectiveSnapshot,\n CAMERA_PROJECTION,\n clonePerspectiveSnapshot,\n normalizeCameraProjection,\n perspectiveSnapshotEqual,\n perspectiveSnapshotMatchesScene,\n resolvePerspectiveSnapshot\n} from \"cadjs/lib/perspective\";\nimport { VIEWER_PICK_MODE } from \"cadjs/lib/viewer/constants\";\nimport { normalizeStepClipSettings } from \"cadjs/lib/viewer/clipPlane\";\nimport {\n buildDrawingPoint,\n distanceToStrokeInPixels,\n drawingToolNeedsTwoPoints,\n isSurfaceLineStroke,\n strokeLengthInPixels\n} from \"cadjs/lib/viewer/drawingGeometry\";\nimport {\n buildFillStrokeAtPoint,\n DRAWING_ERASE_THRESHOLD_PX,\n DRAWING_MIN_POINT_DISTANCE_PX,\n DRAWING_MIN_STROKE_LENGTH_PX,\n maxDrawingStrokeOrdinal,\n redrawDrawingCanvas,\n SURFACE_LINE_COLOR\n} from \"cadjs/lib/viewer/drawingCanvas\";\nimport {\n shouldBuildDerivedDisplayEdges,\n shouldShowRecordDisplayEdges\n} from \"cadjs/lib/viewer/displayEdgePolicy\";\nimport {\n displayModeForcesEdges,\n displayModeIsWireframe,\n displayModeShowsEdges,\n displayModeShowsThroughEdges,\n resolveDisplayEdgeSettings\n} from \"cadjs/lib/displaySettings\";\nimport {\n createUrdfPosePickerHoverCellMesh,\n createUrdfPosePickerHoverCellOutline,\n createUrdfPosePickerShell,\n intersectUrdfPosePickerShell,\n resolveUrdfPosePickerShell,\n syncUrdfPosePickerHoverObjects\n} from \"cadjs/lib/viewer/urdfPosePicker\";\nimport {\n defaultSceneGridRadius,\n getLightingScopeRadius,\n getProportionalLightingScopeRadius,\n getSceneScaleSettings,\n normalizeSceneScaleMode,\n VIEWER_SCENE_SCALE\n} from \"cadjs/lib/viewer/sceneScale\";\nimport {\n applySceneBackground,\n BASE_VIEWER_THEME,\n createStageFloorGlowPlane,\n createStageFloorPlane,\n createStageShadowPlane,\n disposeTexture,\n getViewerThemeNumber,\n getViewerThemeValue,\n getStageFloorSize,\n normalizeFloorMode,\n resolveWireframeEdgeColor,\n updateSpotLightTarget\n} from \"cadjs/lib/viewer/stageTheme\";\nimport { updateGridHelper as updateStageGridHelper } from \"cadjs/lib/viewer/stageGrid\";\nimport {\n autoZoomFrameForBounds,\n DEFAULT_AUTO_ZOOM_PADDING,\n displayRecordsBounds,\n mergeBoundsList\n} from \"cadjs/lib/viewer/autoZoom\";\nimport { applyMaterialSettingsToRecord } from \"cadjs/lib/viewer/surfaceMaterials\";\nimport {\n applyPartVisualState,\n FOCUSED_DIMMED_SURFACE_OPACITY,\n normalizePartIdList,\n referenceMatchesFocusedPart\n} from \"cadjs/lib/viewer/partVisualState\";\nimport {\n createRecordTopologyDisplayEdgeGroup,\n syncRecordTopologyDisplayEdgeTransforms,\n syncTopologyDisplayEdgeLine\n} from \"cadjs/lib/viewer/topologyDisplayEdgeLine\";\nimport {\n applyExplodedViewProgress,\n clearExplodedViewRecords,\n createExplodedViewRecordStates,\n easeExplodedViewProgress,\n explodedViewStateTranslationAtProgress\n} from \"cadjs/lib/viewer/explodedView\";\nimport {\n applyDisplayRecordTransform,\n applyRuntimeModelBounds,\n readBoundsCenter,\n resolveRuntimeModelFloorZ,\n runtimeModelKeyMatches,\n syncRuntimeStepClipPlane,\n toNumber\n} from \"cadjs/lib/viewer/modelRuntime\";\nimport {\n buildGlbFaceIdsForMesh,\n buildGlbFaceIdsForPart,\n syncDisplayMeshFaceIds,\n syncSelectorPickGroups\n} from \"cadjs/lib/viewer/selectorPickGroups\";\nimport {\n buildSurfaceLinePositions,\n projectPointToSurfaceUv,\n SURFACE_LINE_UNSUPPORTED_TYPES\n} from \"cadjs/lib/viewer/surfaceLineGeometry\";\nimport {\n buildCompositeScreenshotBlob,\n resolveElementBackgroundColor\n} from \"cadjs/lib/viewer/screenshotCapture\";\nimport {\n buildEdgeLinePositionsFromProxy,\n buildFaceBoundaryLinePositions,\n buildFaceFillGeometryFromDisplayMeshes,\n buildFaceFillGeometryFromProxy,\n buildVertexMarkerMesh,\n REFERENCE_CORNER_COLOR,\n REFERENCE_HIGHLIGHT_WIDTH_MULTIPLIER,\n REFERENCE_SELECTED_COLOR\n} from \"cadjs/lib/viewer/referenceGeometry\";\nimport { buildRuntimeInitializationAlert } from \"cadjs/lib/viewer/webglSupport\";\nimport { DRAWING_TOOL, RENDER_FORMAT } from \"@/workbench/constants\";\nimport {\n getEnvironmentPresetById,\n THEME_FLOOR_MODES\n} from \"cadjs/lib/themeSettings\";\nimport ViewPlaneControl from \"./viewer/ViewPlaneControl\";\nimport { useViewerDrawingOverlay } from \"./viewer/hooks/useViewerDrawingOverlay\";\nimport { useViewerPicking } from \"./viewer/hooks/useViewerPicking\";\nimport { useViewerRuntime } from \"./viewer/hooks/useViewerRuntime\";\nimport { PREVIEW_AUTO_ROTATE_SPEED } from \"./viewer/orbitControls\";\nimport { normalizeViewerRenderState } from \"./viewer/renderState\";\nimport {\n buildModel\n} from \"cadjs/common/cadScene\";\nimport {\n resolveTopologyDisplayEdgeRuntimes,\n shouldRenderTopologyDisplayEdges,\n shouldUseRecordTopologyEdgeTransforms\n} from \"cadjs/common/topologyDisplayEdgeRuntime\";\nimport {\n createScreenSpaceLineSegments,\n createTopologyDisplayEdgeObject as createSharedTopologyDisplayEdgeObject,\n topologyLineDepthBiasForWidth\n} from \"cadjs/common/renderEdges\";\nimport {\n resolveStepModuleFeatures\n} from \"cadjs/common/stepModule\";\nimport {\n applyStepModuleEffectsToRecords,\n buildStepModuleContext,\n createStepModuleEffectsApi,\n displayTransformForPart,\n resetStepModuleRecordEffects\n} from \"cadjs/common/stepModuleEffects\";\n\nconst IDLE_PIXEL_RATIO_CAP = 2;\nconst INTERACTION_PIXEL_RATIO_CAP = 1.25;\nconst INTERACTION_IDLE_DELAY_MS = 140;\nconst DEFAULT_DAMPING_FACTOR = 0.14;\nconst DEFAULT_ZOOM_SPEED = 4.5;\nconst COARSE_POINTER_ZOOM_SPEED = 1.6;\nconst EXPLODED_VIEW_ANIMATION_DURATION_MS = 1000;\nconst ACCELERATED_WHEEL_ZOOM_SPEED = 10;\nconst TRACKPAD_PINCH_ZOOM_SPEED = 14;\nconst COARSE_POINTER_PINCH_ZOOM_SPEED = 2.4;\nconst KEYBOARD_ORBIT_NUDGE_RAD = Math.PI / 32;\nconst KEYBOARD_ORBIT_SPEED_RAD_PER_SEC = Math.PI * 0.42;\nconst KEYBOARD_POLAR_EPSILON = 0.02;\nconst VIEW_PLANE_ACTIVE_DOT_THRESHOLD = 0.994;\nconst VIEW_PLANE_TRANSITION_MS = 280;\nconst VIEW_PLANE_POLE_DIRECTION_DOT_THRESHOLD = 0.9999;\nconst VIEW_PLANE_POLE_DIRECTION_NUDGE = 0.02;\nconst DEFAULT_PERSPECTIVE_DIRECTION_DOT_THRESHOLD = 0.999;\nconst DEFAULT_PERSPECTIVE_UP_DOT_THRESHOLD = 0.999;\nconst CAMERA_TRANSITION_EASING = Object.freeze({\n EASE_IN_OUT_CUBIC: \"ease-in-out-cubic\",\n EASE_IN_OUT_SINE: \"ease-in-out-sine\"\n});\nconst DEFAULT_VIEW_PLANE_ORIENTATION = Object.freeze({\n x: [1, 0, 0],\n y: [0, 1, 0],\n z: [0, 0, 1]\n});\nconst AUTO_ZOOM_PADDING = DEFAULT_AUTO_ZOOM_PADDING;\nconst WORLD_UP = Object.freeze([0, 0, 1]);\nconst CAD_COORDINATE_SYSTEM = \"cad-z-up-v1\";\nconst ROBOT_COORDINATE_SYSTEM = \"cad-z-up-robot-framing-v2\";\nconst DEFAULT_VIEW_DIRECTION = [2.1, -1.65, 1.08];\nconst VIEW_PLANE_DEFAULT_PRESET = {\n id: \"isometric\",\n title: \"Reset to default isometric view\",\n direction: DEFAULT_VIEW_DIRECTION,\n up: WORLD_UP\n};\nconst DISPLAY_TOOLBAR_CLASSES = \"cad-glass-surface pointer-events-auto absolute z-30 inline-flex h-8 w-fit items-center gap-0.5 rounded-md border border-sidebar-border p-1 text-sidebar-foreground shadow-sm\";\nconst DISPLAY_TOOLBAR_BUTTON_CLASSES = \"grid size-6 shrink-0 place-items-center rounded-sm text-sidebar-foreground/70 transition hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/45 disabled:pointer-events-none disabled:opacity-50\";\nconst VIEW_PLANE_CONTROL_SIZE = \"7.5rem\";\nconst VIEW_PLANE_CONTROL_GAP = \"0.5rem\";\nconst ZOOM_CONTROL_CONTENT_WIDTH = \"6.875rem\";\nconst ZOOM_CONTROL_MIN_PERCENT = 10;\nconst ZOOM_CONTROL_MAX_PERCENT = 800;\nconst ZOOM_CONTROL_STEP_PERCENT = 10;\nconst CAD_EDGE_OPACITY = 0.84;\nconst DEFAULT_LIGHTING = {\n toneMappingExposure: 1.08,\n hemisphereSky: \"#d3dde6\",\n hemisphereGround: \"#090c16\",\n hemisphereIntensity: 1.62,\n keyLightColor: \"#d6e0ea\",\n keyLightIntensity: 0.82,\n fillLightColor: \"#6b7f95\",\n fillLightIntensity: 0.46,\n rimLightColor: \"#6db6e8\",\n rimLightIntensity: 0.04\n};\nconst BEND_GUIDE_COLOR = \"#f59e0b\";\nconst BEND_GUIDE_WIDTH_MULTIPLIER = 1.35;\nconst VIEW_PLANE_FACES = [\n {\n id: \"z\",\n label: \"Z\",\n title: \"Jump to top view\",\n direction: [0, 0, 1],\n up: [0, 1, 0]\n },\n {\n id: \"zNeg\",\n label: \"-Z\",\n title: \"Jump to bottom view\",\n direction: [0, 0, -1],\n up: [0, 1, 0]\n },\n {\n id: \"yNeg\",\n label: \"-Y\",\n title: \"Jump to front view\",\n direction: [0, -1, 0],\n up: WORLD_UP\n },\n {\n id: \"y\",\n label: \"Y\",\n title: \"Jump to back view\",\n direction: [0, 1, 0],\n up: WORLD_UP\n },\n {\n id: \"x\",\n label: \"X\",\n title: \"Jump to right view\",\n direction: [1, 0, 0],\n up: WORLD_UP\n },\n {\n id: \"xNeg\",\n label: \"-X\",\n title: \"Jump to left view\",\n direction: [-1, 0, 0],\n up: WORLD_UP\n }\n];\nconst VIEW_PLANE_FACE_BY_ID = Object.fromEntries(VIEW_PLANE_FACES.map((face) => [face.id, face]));\n\nfunction referenceSelectorType(reference) {\n return String(reference?.selectorType || \"\").trim();\n}\n\nfunction referenceOccurrenceSelector(reference) {\n const selectorType = referenceSelectorType(reference);\n if (selectorType === \"occurrence\") {\n return String(reference?.normalizedSelector || reference?.displaySelector || \"\").trim();\n }\n return String(reference?.occurrenceId || \"\").trim();\n}\n\nfunction referenceMatchesOccurrenceSubtree(reference, occurrenceSelector) {\n const candidate = referenceOccurrenceSelector(reference);\n const selector = String(occurrenceSelector || \"\").trim();\n return Boolean(candidate && selector && (candidate === selector || candidate.startsWith(`${selector}.`)));\n}\n\nfunction referenceShapeSelector(reference) {\n const selectorType = referenceSelectorType(reference);\n if (selectorType === \"shape\") {\n return String(reference?.normalizedSelector || reference?.displaySelector || \"\").trim();\n }\n return String(reference?.shapeId || \"\").trim();\n}\n\nfunction referenceMatchesShape(reference, shapeSelector, occurrenceSelector = \"\") {\n const candidate = referenceShapeSelector(reference);\n const selector = String(shapeSelector || \"\").trim();\n if (!candidate || !selector || candidate !== selector) {\n return false;\n }\n const occurrence = String(occurrenceSelector || \"\").trim();\n return !occurrence || referenceMatchesOccurrenceSubtree(reference, occurrence);\n}\n\nfunction syntheticOccurrenceSelectorFromReferenceId(referenceId) {\n const normalizedReferenceId = String(referenceId || \"\").trim();\n if (!normalizedReferenceId.startsWith(STEP_TREE_TOPOLOGY_NODE_PREFIX)) {\n return \"\";\n }\n const body = normalizedReferenceId.slice(STEP_TREE_TOPOLOGY_NODE_PREFIX.length);\n const marker = \":occurrence:\";\n const markerIndex = body.lastIndexOf(marker);\n return markerIndex >= 0 ? body.slice(markerIndex + marker.length).trim() : \"\";\n}\n\nfunction viewPlaneOrientationEqual(a, b, epsilon = 1e-4) {\n if (!a || !b) {\n return false;\n }\n for (const axis of [\"x\", \"y\", \"z\"]) {\n const left = a[axis];\n const right = b[axis];\n if (!Array.isArray(left) || !Array.isArray(right) || left.length !== 3 || right.length !== 3) {\n return false;\n }\n for (let index = 0; index < 3; index += 1) {\n if (Math.abs((left[index] || 0) - (right[index] || 0)) > epsilon) {\n return false;\n }\n }\n }\n return true;\n}\n\nfunction readViewPlaneOrientation(runtime) {\n if (!runtime?.THREE || !runtime?.camera) {\n return null;\n }\n const inverseCameraRotation = runtime.camera.quaternion.clone().invert();\n const projectAxis = (x, y, z) => {\n const projected = new runtime.THREE.Vector3(x, y, z).applyQuaternion(inverseCameraRotation);\n return [projected.x, projected.y, projected.z];\n };\n return {\n x: projectAxis(1, 0, 0),\n y: projectAxis(0, 1, 0),\n z: projectAxis(0, 0, 1)\n };\n}\n\nfunction cameraMatchesViewPreset(runtime, preset, {\n directionDotThreshold = DEFAULT_PERSPECTIVE_DIRECTION_DOT_THRESHOLD,\n upDotThreshold = DEFAULT_PERSPECTIVE_UP_DOT_THRESHOLD\n} = {}) {\n if (\n !runtime?.THREE ||\n !runtime?.camera ||\n !runtime?.controls ||\n !preset ||\n !Array.isArray(preset.direction) ||\n !Array.isArray(preset.up)\n ) {\n return false;\n }\n const currentDirection = runtime.camera.position.clone().sub(runtime.controls.target);\n const nextDirection = new runtime.THREE.Vector3(...preset.direction);\n const currentUp = runtime.camera.up.clone();\n const nextUp = new runtime.THREE.Vector3(...preset.up);\n if (\n currentDirection.lengthSq() <= 1e-8 ||\n nextDirection.lengthSq() <= 1e-8 ||\n currentUp.lengthSq() <= 1e-8 ||\n nextUp.lengthSq() <= 1e-8\n ) {\n return false;\n }\n currentDirection.normalize();\n nextDirection.normalize();\n currentUp.normalize();\n nextUp.normalize();\n return currentDirection.dot(nextDirection) >= directionDotThreshold &&\n currentUp.dot(nextUp) >= upDotThreshold;\n}\n\nfunction isNumericArray(value, stride = 1) {\n return (\n (Array.isArray(value) || ArrayBuffer.isView(value)) &&\n value.length >= stride &&\n value.length % stride === 0\n );\n}\n\nfunction renderableMeshParts(meshData) {\n return Array.isArray(meshData?.parts)\n ? meshData.parts.filter((part) => toNumber(part?.vertexCount) > 0 && toNumber(part?.triangleCount) > 0)\n : [];\n}\n\nfunction meshNeedsPartRenderingForSourceColors(meshData) {\n const parts = renderableMeshParts(meshData);\n const partColors = parts\n .map((part) => String(part?.color || \"\").trim().toLowerCase())\n .filter(Boolean);\n if (!partColors.length) {\n return false;\n }\n return partColors.length !== parts.length || new Set(partColors).size > 1;\n}\n\nfunction displayRecordsAnimationKey(records = []) {\n return (Array.isArray(records) ? records : [])\n .map((record) => [\n String(record?.partId || \"\").trim(),\n String(record?.mesh?.uuid || \"\"),\n String(record?.geometry?.uuid || \"\")\n ].join(\":\"))\n .join(\"|\");\n}\n\nfunction transformedRuntimeStateEqual(current, next) {\n return (\n (current?.base || null) === (next?.base || null) &&\n (current?.runtime || null) === (next?.runtime || null)\n );\n}\n\nfunction updateTransformedRuntimeState(setState, next) {\n setState((current) => (\n transformedRuntimeStateEqual(current, next) ? current : next\n ));\n}\n\nfunction cancelExplodedViewAnimation(animationRef) {\n const animation = animationRef?.current;\n if (!animation?.rafId || typeof window === \"undefined\") {\n return;\n }\n window.cancelAnimationFrame(animation.rafId);\n animation.rafId = 0;\n}\n\nfunction displayRecordExplodedViewTranslation(THREE, record) {\n const elements = record?.explodedViewMatrix?.elements;\n if (!THREE?.Vector3 || !elements || elements.length < 16) {\n return THREE?.Vector3 ? new THREE.Vector3() : null;\n }\n return new THREE.Vector3(\n toNumber(elements[12]),\n toNumber(elements[13]),\n toNumber(elements[14])\n );\n}\n\nfunction explodedViewStateTargetTranslation(THREE, state, targetProgress) {\n const amount = clamp(targetProgress, 0, 1);\n const translation = state?.translation?.isVector3\n ? state.translation.clone()\n : new THREE.Vector3(0, 0, toNumber(state?.distance));\n return translation.multiplyScalar(amount);\n}\n\nfunction explodedViewTransitionStateKey(state) {\n const partId = String(state?.partId || state?.record?.partId || \"\").trim();\n return partId || String(state?.groupKey || \"\").trim();\n}\n\nfunction createExplodedViewRuntimeTransitionStates(runtime, states, targetProgress, {\n previousStates = [],\n previousTransitionProgress = 1,\n useCurrentTranslations = true\n} = {}) {\n if (!runtime?.THREE) {\n return [];\n }\n const THREE = runtime.THREE;\n const previousTranslationsByRecord = new Map();\n const previousTranslationsByKey = new Map();\n if (useCurrentTranslations) {\n for (const previousState of Array.isArray(previousStates) ? previousStates : []) {\n if (!previousState?.record) {\n continue;\n }\n const translation = explodedViewStateTranslationAtProgress(\n THREE,\n previousState,\n previousTransitionProgress\n );\n if (translation) {\n if (!previousTranslationsByRecord.has(previousState.record)) {\n previousTranslationsByRecord.set(previousState.record, translation);\n }\n const key = explodedViewTransitionStateKey(previousState);\n if (key && !previousTranslationsByKey.has(key)) {\n previousTranslationsByKey.set(key, translation);\n }\n }\n }\n }\n return (Array.isArray(states) ? states : []).map((state) => ({\n ...state,\n fromTranslation: useCurrentTranslations\n ? (\n previousTranslationsByRecord.get(state.record) ||\n previousTranslationsByKey.get(explodedViewTransitionStateKey(state)) ||\n displayRecordExplodedViewTranslation(THREE, state.record)\n )\n : new THREE.Vector3(),\n translation: explodedViewStateTargetTranslation(THREE, state, targetProgress),\n matrix: new THREE.Matrix4()\n }));\n}\n\nfunction clearExplodedViewRecordsOutsideStates(records = [], states = []) {\n const stateRecords = new Set((Array.isArray(states) ? states : [])\n .map((state) => state?.record)\n .filter(Boolean));\n for (const record of Array.isArray(records) ? records : []) {\n if (record && !stateRecords.has(record)) {\n record.explodedViewMatrix = null;\n }\n }\n}\n\nfunction explodedViewTransitionNeedsAnimation(states = []) {\n for (const state of Array.isArray(states) ? states : []) {\n const from = state?.fromTranslation;\n const to = state?.translation;\n if (!from?.isVector3 || !to?.isVector3) {\n return true;\n }\n if (from.distanceToSquared(to) > 1e-8) {\n return true;\n }\n }\n return false;\n}\n\nfunction normalizeZoomPercent(value, fallback = 100) {\n const numeric = Number(value);\n if (!Number.isFinite(numeric)) {\n return fallback;\n }\n return clamp(numeric, ZOOM_CONTROL_MIN_PERCENT, ZOOM_CONTROL_MAX_PERCENT);\n}\n\nfunction formatZoomPercent(value) {\n return `${Math.round(normalizeZoomPercent(value))}%`;\n}\n\nfunction readCameraTargetDistance(runtime) {\n if (!runtime?.camera?.position || !runtime?.controls?.target) {\n return null;\n }\n const distance = runtime.camera.position.distanceTo(runtime.controls.target);\n return Number.isFinite(distance) && distance > 1e-6 ? distance : null;\n}\n\nfunction readOrthographicHalfHeight(runtime) {\n const camera = runtime?.camera?.isOrthographicCamera\n ? runtime.camera\n : runtime?.orthographicCamera;\n if (!camera?.isOrthographicCamera) {\n return null;\n }\n const storedHalfHeight = Number(camera.userData?.cadHalfHeight);\n if (Number.isFinite(storedHalfHeight) && storedHalfHeight > 1e-6) {\n return storedHalfHeight;\n }\n const derivedHalfHeight = Math.abs((Number(camera.top) || 0) - (Number(camera.bottom) || 0)) / 2;\n return Number.isFinite(derivedHalfHeight) && derivedHalfHeight > 1e-6 ? derivedHalfHeight : null;\n}\n\nfunction resetRuntimeZoomBaseline(runtime) {\n if (runtime?.camera?.isOrthographicCamera) {\n const halfHeight = readOrthographicHalfHeight(runtime);\n if (halfHeight) {\n runtime.zoomBaseHalfHeight = halfHeight;\n }\n return halfHeight;\n }\n const distance = readCameraTargetDistance(runtime);\n if (distance) {\n runtime.zoomBaseDistance = distance;\n }\n return distance;\n}\n\nfunction readRuntimeZoomPercent(runtime) {\n const camera = runtime?.camera;\n if (!camera) {\n return 100;\n }\n const cameraZoom = Number.isFinite(Number(camera.zoom)) && Number(camera.zoom) > 0\n ? Number(camera.zoom)\n : 1;\n if (camera.isOrthographicCamera) {\n const halfHeight = readOrthographicHalfHeight(runtime);\n if (!halfHeight) {\n return normalizeZoomPercent(cameraZoom * 100);\n }\n const baseHalfHeight = Number(runtime.zoomBaseHalfHeight);\n const normalizedBaseHalfHeight = Number.isFinite(baseHalfHeight) && baseHalfHeight > 1e-6\n ? baseHalfHeight\n : resetRuntimeZoomBaseline(runtime) || halfHeight;\n return normalizeZoomPercent((normalizedBaseHalfHeight / halfHeight) * cameraZoom * 100);\n }\n const distance = readCameraTargetDistance(runtime);\n if (!distance) {\n return normalizeZoomPercent(cameraZoom * 100);\n }\n const baseDistance = Number(runtime.zoomBaseDistance);\n const normalizedBaseDistance = Number.isFinite(baseDistance) && baseDistance > 1e-6\n ? baseDistance\n : resetRuntimeZoomBaseline(runtime) || distance;\n return normalizeZoomPercent((normalizedBaseDistance / distance) * cameraZoom * 100);\n}\n\nfunction setRuntimeZoomPercent(runtime, percent) {\n if (!runtime?.THREE || !runtime?.camera || !runtime?.controls?.target) {\n return false;\n }\n const nextZoom = normalizeZoomPercent(percent) / 100;\n const camera = runtime.camera;\n cancelCameraTransition(runtime, { scheduleIdle: false });\n clearKeyboardOrbitState(runtime.keyboardOrbitState);\n if (camera.isOrthographicCamera) {\n const halfHeight = readOrthographicHalfHeight(runtime) || 1;\n const baseHalfHeight = Number(runtime.zoomBaseHalfHeight);\n const normalizedBaseHalfHeight = Number.isFinite(baseHalfHeight) && baseHalfHeight > 1e-6\n ? baseHalfHeight\n : halfHeight;\n runtime.zoomBaseHalfHeight = normalizedBaseHalfHeight;\n camera.zoom = nextZoom * (halfHeight / normalizedBaseHalfHeight);\n camera.updateProjectionMatrix?.();\n reapplyRuntimeCameraFrameInsets(runtime);\n } else {\n const target = runtime.controls.target;\n const offset = camera.position.clone().sub(target);\n const direction = offset.lengthSq() > 1e-8\n ? offset.normalize()\n : new runtime.THREE.Vector3(...DEFAULT_VIEW_DIRECTION).normalize();\n const distance = readCameraTargetDistance(runtime) || direction.length() || 1;\n const baseDistance = Number(runtime.zoomBaseDistance);\n const normalizedBaseDistance = Number.isFinite(baseDistance) && baseDistance > 1e-6\n ? baseDistance\n : distance;\n runtime.zoomBaseDistance = normalizedBaseDistance;\n const minDistance = Number.isFinite(Number(runtime.controls.minDistance))\n ? Number(runtime.controls.minDistance)\n : 0.01;\n const maxDistance = Number.isFinite(Number(runtime.controls.maxDistance)) && Number(runtime.controls.maxDistance) > 0\n ? Number(runtime.controls.maxDistance)\n : Number.POSITIVE_INFINITY;\n const nextDistance = clamp(normalizedBaseDistance / nextZoom, minDistance, maxDistance);\n camera.position.copy(target.clone().add(direction.multiplyScalar(nextDistance)));\n camera.zoom = 1;\n camera.updateProjectionMatrix?.();\n reapplyRuntimeCameraFrameInsets(runtime);\n }\n camera.lookAt(runtime.controls.target);\n runtime.controls.update?.();\n runtime.scheduleIdleQuality?.();\n runtime.requestRender?.();\n return true;\n}\n\nfunction ZoomControl({\n zoomPercent,\n onZoomPercentChange,\n onZoomReset\n}) {\n const [editing, setEditing] = useState(false);\n const [inputValue, setInputValue] = useState(formatZoomPercent(zoomPercent));\n const selectOnFocusRef = useRef(false);\n useEffect(() => {\n if (!editing) {\n setInputValue(formatZoomPercent(zoomPercent));\n }\n }, [editing, zoomPercent]);\n\n const commitInputValue = () => {\n const numericValue = Number(String(inputValue || \"\").replace(/%/g, \"\").trim());\n setEditing(false);\n if (!Number.isFinite(numericValue) || numericValue <= 0) {\n const resetValue = 100;\n setInputValue(formatZoomPercent(resetValue));\n onZoomPercentChange?.(resetValue);\n return;\n }\n onZoomPercentChange?.(normalizeZoomPercent(numericValue));\n };\n const adjustZoom = (delta) => {\n onZoomPercentChange?.(normalizeZoomPercent(Math.round(zoomPercent) + delta));\n };\n\n return (\n {\n event.stopPropagation();\n }}\n >\n
\n
{\n const input = event.currentTarget;\n selectOnFocusRef.current = true;\n setEditing(true);\n setInputValue(String(Math.round(zoomPercent)));\n window.requestAnimationFrame(() => {\n input.select();\n selectOnFocusRef.current = false;\n });\n }}\n onMouseUp={(event) => {\n if (!selectOnFocusRef.current) {\n return;\n }\n event.preventDefault();\n event.currentTarget.select();\n selectOnFocusRef.current = false;\n }}\n onClick={(event) => {\n if (String(event.currentTarget.value || \"\").includes(\"%\")) {\n event.currentTarget.select();\n }\n }}\n onChange={(event) => {\n setInputValue(event.target.value);\n }}\n onBlur={commitInputValue}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n commitInputValue();\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n setEditing(false);\n setInputValue(formatZoomPercent(zoomPercent));\n event.currentTarget.blur();\n }\n }}\n />\n
\n
\n
\n );\n}\n\nfunction cssLength(value, fallback = \"0px\") {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return `${value}px`;\n }\n const text = String(value || \"\").trim();\n return text || fallback;\n}\n\nfunction ZoomToolbar({\n zoomPercent,\n onZoomPercentChange,\n onZoomReset,\n viewPlaneOffsetRight = 16,\n viewPlaneOffsetBottom = 16\n}) {\n return (\n {\n event.stopPropagation();\n }}\n >\n \n
\n );\n}\n\nfunction applyExplodedViewRuntimeProgress(runtime, states, progress) {\n if (!runtime?.THREE || !Array.isArray(runtime.displayRecords)) {\n return;\n }\n applyExplodedViewProgress(runtime.THREE, states, progress);\n for (const record of runtime.displayRecords) {\n applyDisplayRecordTransform(runtime.THREE, record);\n }\n runtime.modelGroup?.updateMatrixWorld?.(true);\n runtime.edgesGroup?.updateMatrixWorld?.(true);\n if (runtime.topologyDisplayEdgeTransformByRecord === true) {\n syncRecordTopologyDisplayEdgeTransforms(runtime, runtime.displayRecords);\n }\n runtime.requestRender?.();\n}\n\nfunction getPixelRatioCap(cap) {\n if (typeof window === \"undefined\") {\n return 1;\n }\n return Math.min(window.devicePixelRatio || 1, cap);\n}\n\nfunction getStageEffectRadius(radius, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n return getProportionalLightingScopeRadius(radius, sceneScaleMode);\n}\n\nfunction getStageEffectScale(radius, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n const referenceRadius = Math.max(\n getLightingScopeRadius(sceneScaleMode),\n getSceneScaleSettings(sceneScaleMode).minModelRadius\n );\n return getStageEffectRadius(radius, sceneScaleMode) / referenceRadius;\n}\n\nfunction setScaledLightPosition(light, position = {}, scale = 1) {\n light?.position?.set?.(\n (Number(position.x) || 0) * scale,\n (Number(position.y) || 0) * scale,\n (Number(position.z) || 0) * scale\n );\n}\n\nfunction scaledLightDistance(distance, scale = 1) {\n const numericDistance = Number(distance);\n return Number.isFinite(numericDistance) && numericDistance > 0\n ? numericDistance * scale\n : 0;\n}\n\nfunction syncRuntimeScaledLighting(runtime, lightingSettings = {}, radius, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n const scale = getStageEffectScale(radius, sceneScaleMode);\n setScaledLightPosition(runtime?.keyLight, lightingSettings.directional?.position, scale);\n setScaledLightPosition(runtime?.spotLight, lightingSettings.spot?.position, scale);\n setScaledLightPosition(runtime?.pointLight, lightingSettings.point?.position, scale);\n if (runtime?.spotLight) {\n runtime.spotLight.distance = scaledLightDistance(lightingSettings.spot?.distance, scale);\n }\n if (runtime?.pointLight) {\n runtime.pointLight.distance = scaledLightDistance(lightingSettings.point?.distance, scale);\n }\n}\n\nfunction syncRuntimeScaledLightingAndShadow(THREE, runtime, lightingSettings = {}, radius, bounds, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n syncRuntimeScaledLighting(runtime, lightingSettings, radius, sceneScaleMode);\n if (THREE && bounds && runtime?.keyLight?.shadow?.camera) {\n applyRuntimeModelBounds(THREE, runtime, bounds, sceneScaleMode);\n }\n}\n\nfunction updateStageEffects(runtime, viewerTheme, themeSettings, radius, floorZ = 0, floorMode = THEME_FLOOR_MODES.STAGE, sceneScaleMode = VIEWER_SCENE_SCALE.CAD) {\n if (!runtime?.THREE || !runtime?.stageGroup) {\n return;\n }\n\n clearSceneGroup(runtime.stageGroup);\n\n if (floorMode !== THEME_FLOOR_MODES.STAGE) {\n return;\n }\n\n const stageScaleMode = sceneScaleMode;\n const floorSize = getStageFloorSize(radius, stageScaleMode);\n const lightingScopeRadius = getStageEffectRadius(radius, stageScaleMode);\n runtime.stageGroup.add(createStageFloorPlane(runtime.THREE, viewerTheme, themeSettings, floorSize, floorZ, 0));\n const glowPlane = createStageFloorGlowPlane(\n runtime.THREE,\n themeSettings,\n lightingScopeRadius,\n floorSize,\n floorZ,\n stageScaleMode\n );\n if (glowPlane) {\n runtime.stageGroup.add(glowPlane);\n }\n const shadowPlane = createStageShadowPlane(runtime.THREE, themeSettings, floorSize, floorZ);\n if (shadowPlane) {\n runtime.stageGroup.add(shadowPlane);\n }\n}\n\nfunction isTrackpadLikeWheelEvent(event) {\n return event.ctrlKey || (event.deltaMode === 0 && Math.abs(event.deltaY) < 20);\n}\n\nfunction normalizeViewportFrameInsets(value = {}) {\n const normalizeInset = (inset) => {\n const numericInset = Number(inset);\n return Number.isFinite(numericInset) ? Math.max(0, numericInset) : 0;\n };\n return {\n top: normalizeInset(value?.top),\n right: normalizeInset(value?.right),\n bottom: normalizeInset(value?.bottom),\n left: normalizeInset(value?.left)\n };\n}\n\nfunction getViewportFrameMetrics(runtime, frameInsets = {}) {\n const canvas = runtime?.renderer?.domElement;\n const width = Math.max(1, canvas?.clientWidth || canvas?.parentElement?.clientWidth || 1);\n const height = Math.max(1, canvas?.clientHeight || canvas?.parentElement?.clientHeight || 1);\n const normalizedInsets = normalizeViewportFrameInsets(frameInsets);\n const left = clamp(normalizedInsets.left, 0, Math.max(width - 1, 0));\n const right = clamp(normalizedInsets.right, 0, Math.max(width - left - 1, 0));\n const top = clamp(normalizedInsets.top, 0, Math.max(height - 1, 0));\n const bottom = clamp(normalizedInsets.bottom, 0, Math.max(height - top - 1, 0));\n const framedWidth = Math.max(1, width - left - right);\n const framedHeight = Math.max(1, height - top - bottom);\n const centerX = left + framedWidth / 2;\n const centerY = top + framedHeight / 2;\n\n return {\n width,\n height,\n top,\n right,\n bottom,\n left,\n framedWidth,\n framedHeight,\n aspect: framedWidth / framedHeight,\n offsetNdcX: (centerX / width) * 2 - 1,\n offsetNdcY: 1 - (centerY / height) * 2\n };\n}\n\nfunction getViewportFrameCrop(runtime, frameInsets = {}) {\n const canvas = runtime?.renderer?.domElement;\n const metrics = getViewportFrameMetrics(runtime, frameInsets);\n const pixelWidth = Math.max(1, canvas?.width || metrics.width);\n const pixelHeight = Math.max(1, canvas?.height || metrics.height);\n const scaleX = pixelWidth / Math.max(metrics.width, 1);\n const scaleY = pixelHeight / Math.max(metrics.height, 1);\n const x = Math.round(metrics.left * scaleX);\n const y = Math.round(metrics.top * scaleY);\n const right = Math.round(metrics.right * scaleX);\n const bottom = Math.round(metrics.bottom * scaleY);\n\n return {\n x,\n y,\n width: Math.max(1, pixelWidth - x - right),\n height: Math.max(1, pixelHeight - y - bottom)\n };\n}\n\nfunction applyCameraFrameInsets(runtime, frameInsets = {}, { updateProjection = true } = {}) {\n const camera = runtime?.camera;\n if (!camera?.projectionMatrix?.elements) {\n return;\n }\n const metrics = getViewportFrameMetrics(runtime, frameInsets);\n const offsetX = (metrics.right - metrics.left) / 2;\n const offsetY = (metrics.bottom - metrics.top) / 2;\n if ((Math.abs(offsetX) > 1e-6 || Math.abs(offsetY) > 1e-6) && typeof camera.setViewOffset === \"function\") {\n camera.setViewOffset(metrics.width, metrics.height, offsetX, offsetY, metrics.width, metrics.height);\n } else if (typeof camera.clearViewOffset === \"function\") {\n camera.clearViewOffset();\n } else if (updateProjection) {\n camera.updateProjectionMatrix();\n }\n if (camera.projectionMatrixInverse?.copy) {\n camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n }\n}\n\nfunction reapplyRuntimeCameraFrameInsets(runtime, { updateProjection = false } = {}) {\n if (typeof runtime?.applyCameraFrameInsets !== \"function\") {\n return;\n }\n runtime.applyCameraFrameInsets(runtime, runtime.frameInsetsRef?.current, { updateProjection });\n}\n\nfunction getFitDistanceForBoundingSphere(camera, radius, sceneScaleMode, frameAspect = camera.aspect) {\n const safeRadius = Math.max(radius * AUTO_ZOOM_PADDING, getSceneScaleSettings(sceneScaleMode).minModelRadius);\n const verticalHalfFov = (camera.fov * Math.PI) / 360;\n const horizontalHalfFov = Math.atan(Math.tan(verticalHalfFov) * Math.max(frameAspect, 1e-3));\n const limitingHalfFov = Math.max(Math.min(verticalHalfFov, horizontalHalfFov), 1e-3);\n return safeRadius / Math.sin(limitingHalfFov);\n}\n\nfunction runtimeCameraProjection(runtime) {\n return normalizeCameraProjection(\n runtime?.projection || (runtime?.camera?.isOrthographicCamera ? CAMERA_PROJECTION.ORTHOGRAPHIC : CAMERA_PROJECTION.PERSPECTIVE)\n );\n}\n\nfunction syncRuntimeCameraClipPlanes(runtime, near, far) {\n for (const camera of [runtime?.perspectiveCamera, runtime?.orthographicCamera].filter(Boolean)) {\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix?.();\n }\n}\n\nfunction getOrthographicHalfHeightForBoundingSphere(radius, sceneScaleMode, frameMetrics = {}, padding = AUTO_ZOOM_PADDING) {\n const safeRadius = Math.max(radius * padding, getSceneScaleSettings(sceneScaleMode).minModelRadius);\n const frameAspect = Math.max(Number(frameMetrics.aspect) || 1, 1e-3);\n const viewportHeight = Math.max(Number(frameMetrics.height) || 1, 1);\n const framedHeight = Math.max(Number(frameMetrics.framedHeight) || viewportHeight, 1);\n return (safeRadius / Math.min(frameAspect, 1)) * (viewportHeight / framedHeight);\n}\n\nfunction setOrthographicCameraHalfHeight(runtime, halfHeight, frameMetrics = null) {\n const camera = runtime?.orthographicCamera;\n if (!camera?.isOrthographicCamera) {\n return false;\n }\n const metrics = frameMetrics || getViewportFrameMetrics(runtime, runtime?.frameInsetsRef?.current);\n const nextHalfHeight = Math.max(Number(halfHeight) || 0, 1e-3);\n const previousHalfHeight = Number(camera.userData?.cadHalfHeight);\n const previousLeft = Number(camera.left);\n const previousRight = Number(camera.right);\n const previousTop = Number(camera.top);\n const previousBottom = Number(camera.bottom);\n camera.userData.cadHalfHeight = nextHalfHeight;\n runtime.syncCameraViewport?.(camera, metrics.width, metrics.height);\n return (\n Math.abs((Number.isFinite(previousHalfHeight) ? previousHalfHeight : 0) - nextHalfHeight) > 1e-6 ||\n Math.abs((Number.isFinite(previousLeft) ? previousLeft : 0) - Number(camera.left)) > 1e-6 ||\n Math.abs((Number.isFinite(previousRight) ? previousRight : 0) - Number(camera.right)) > 1e-6 ||\n Math.abs((Number.isFinite(previousTop) ? previousTop : 0) - Number(camera.top)) > 1e-6 ||\n Math.abs((Number.isFinite(previousBottom) ? previousBottom : 0) - Number(camera.bottom)) > 1e-6\n );\n}\n\nfunction syncOrthographicCameraFrame(runtime, radius, sceneScaleMode, frameMetrics = null) {\n const metrics = frameMetrics || getViewportFrameMetrics(runtime, runtime?.frameInsetsRef?.current);\n return setOrthographicCameraHalfHeight(\n runtime,\n getOrthographicHalfHeightForBoundingSphere(radius, sceneScaleMode, metrics),\n metrics\n );\n}\n\nfunction frameRuntimeCameraForBoundingSphere(runtime, radius, sceneScaleMode, frameMetrics) {\n const activeCamera = runtime?.camera;\n const fitCamera = activeCamera?.isPerspectiveCamera\n ? activeCamera\n : runtime?.perspectiveCamera || activeCamera;\n const fitDistance = getFitDistanceForBoundingSphere(fitCamera, radius, sceneScaleMode, frameMetrics.aspect);\n if (activeCamera?.isOrthographicCamera) {\n syncOrthographicCameraFrame(runtime, radius, sceneScaleMode, frameMetrics);\n } else {\n activeCamera?.updateProjectionMatrix?.();\n }\n applyCameraFrameInsets(runtime, runtime?.frameInsetsRef?.current, { updateProjection: false });\n return fitDistance;\n}\n\nfunction syncRuntimeCameraProjection(runtime, projection, { scheduleIdle = true, requestRender = true } = {}) {\n if (!runtime?.camera || !runtime?.controls) {\n return false;\n }\n const nextProjection = normalizeCameraProjection(projection);\n const nextCamera = nextProjection === CAMERA_PROJECTION.ORTHOGRAPHIC\n ? runtime.orthographicCamera\n : runtime.perspectiveCamera;\n if (!nextCamera) {\n return false;\n }\n const previousCamera = runtime.camera;\n const previousPerspectiveHalfHeight = previousCamera?.isPerspectiveCamera && runtime.controls?.target\n ? (\n previousCamera.position.distanceTo(runtime.controls.target) *\n Math.tan((Math.max(Number(previousCamera.fov) || 48, 1e-3) * Math.PI) / 360) /\n Math.max(Number(previousCamera.zoom) || 1, 1e-3)\n )\n : null;\n if (previousCamera !== nextCamera) {\n nextCamera.position.copy(previousCamera.position);\n nextCamera.up.copy(previousCamera.up);\n nextCamera.near = previousCamera.near;\n nextCamera.far = previousCamera.far;\n nextCamera.zoom = Number.isFinite(previousCamera.zoom) && previousCamera.zoom > 0 ? previousCamera.zoom : 1;\n runtime.camera = nextCamera;\n runtime.controls.object = nextCamera;\n }\n runtime.projection = nextProjection;\n const frameMetrics = getViewportFrameMetrics(runtime, runtime.frameInsetsRef?.current);\n if (nextCamera.isOrthographicCamera && previousCamera !== nextCamera) {\n const previousOrthographicHalfHeight = Number(previousCamera?.userData?.cadHalfHeight);\n const preservedHalfHeight = Number.isFinite(previousPerspectiveHalfHeight) && previousPerspectiveHalfHeight > 0\n ? previousPerspectiveHalfHeight\n : previousOrthographicHalfHeight;\n if (Number.isFinite(preservedHalfHeight) && preservedHalfHeight > 0) {\n setOrthographicCameraHalfHeight(runtime, preservedHalfHeight, frameMetrics);\n } else {\n runtime.syncCameraViewport?.(nextCamera, frameMetrics.width, frameMetrics.height);\n }\n } else {\n runtime.syncCameraViewport?.(nextCamera, frameMetrics.width, frameMetrics.height);\n }\n applyCameraFrameInsets(runtime, runtime.frameInsetsRef?.current, { updateProjection: false });\n // Recompute camera matrices without advancing auto-rotate. A bare controls.update()\n // ticks OrbitControls' frame-rate-dependent auto-rotation branch, so any projection\n // sync that fires during a preview orbit would nudge the camera forward an extra step.\n const autoRotateBeforeProjectionSync = runtime.controls.autoRotate;\n runtime.controls.autoRotate = false;\n runtime.controls.update?.();\n runtime.controls.autoRotate = autoRotateBeforeProjectionSync;\n if (scheduleIdle) {\n runtime.scheduleIdleQuality?.();\n }\n if (requestRender) {\n runtime.requestRender?.();\n }\n return true;\n}\n\nfunction easeInOutCubic(t) {\n if (t <= 0) {\n return 0;\n }\n if (t >= 1) {\n return 1;\n }\n return t < 0.5 ? 4 * t * t * t : 1 - ((-2 * t + 2) ** 3) / 2;\n}\n\nfunction easeInOutSine(t) {\n if (t <= 0) {\n return 0;\n }\n if (t >= 1) {\n return 1;\n }\n return -(Math.cos(Math.PI * t) - 1) / 2;\n}\n\nfunction easeCameraTransitionProgress(t, easing = CAMERA_TRANSITION_EASING.EASE_IN_OUT_CUBIC) {\n return easing === CAMERA_TRANSITION_EASING.EASE_IN_OUT_SINE\n ? easeInOutSine(t)\n : easeInOutCubic(t);\n}\n\nfunction readPerspectiveSnapshot(runtime) {\n if (!runtime?.camera || !runtime?.controls) {\n return null;\n }\n return {\n position: [runtime.camera.position.x, runtime.camera.position.y, runtime.camera.position.z],\n target: [runtime.controls.target.x, runtime.controls.target.y, runtime.controls.target.z],\n up: [runtime.camera.up.x, runtime.camera.up.y, runtime.camera.up.z],\n zoom: runtime.camera.zoom,\n projection: runtimeCameraProjection(runtime)\n };\n}\n\nfunction readScopedPerspectiveSnapshot(runtime, { modelKey = \"\", sceneScaleMode = \"\" } = {}) {\n return annotatePerspectiveSnapshot(readPerspectiveSnapshot(runtime), {\n modelKey,\n sceneScaleMode,\n coordinateSystem: coordinateSystemForSceneScale(sceneScaleMode)\n });\n}\n\nfunction coordinateSystemForSceneScale(sceneScaleMode) {\n return normalizeSceneScaleMode(sceneScaleMode) === VIEWER_SCENE_SCALE.URDF\n ? ROBOT_COORDINATE_SYSTEM\n : CAD_COORDINATE_SYSTEM;\n}\n\nfunction getKeyboardOrbitCommand(event) {\n if (!event) {\n return null;\n }\n if (event.key === \"ArrowLeft\") {\n return { direction: \"left\", keyId: \"ArrowLeft\" };\n }\n if (event.key === \"ArrowRight\") {\n return { direction: \"right\", keyId: \"ArrowRight\" };\n }\n if (event.key === \"ArrowUp\") {\n return { direction: \"up\", keyId: \"ArrowUp\" };\n }\n if (event.key === \"ArrowDown\") {\n return { direction: \"down\", keyId: \"ArrowDown\" };\n }\n\n const key = String(event.key || \"\").toLowerCase();\n if (key === \"a\" || event.code === \"KeyA\") {\n return { direction: \"left\", keyId: event.code || \"KeyA\" };\n }\n if (key === \"d\" || event.code === \"KeyD\") {\n return { direction: \"right\", keyId: event.code || \"KeyD\" };\n }\n if (key === \"w\" || event.code === \"KeyW\") {\n return { direction: \"up\", keyId: event.code || \"KeyW\" };\n }\n if (key === \"s\" || event.code === \"KeyS\") {\n return { direction: \"down\", keyId: event.code || \"KeyS\" };\n }\n return null;\n}\n\nfunction getKeyboardOrbitAxes(keyboardOrbitState) {\n return {\n azimuth:\n (keyboardOrbitState.directionCounts.right > 0 ? 1 : 0) -\n (keyboardOrbitState.directionCounts.left > 0 ? 1 : 0),\n polar:\n (keyboardOrbitState.directionCounts.down > 0 ? 1 : 0) -\n (keyboardOrbitState.directionCounts.up > 0 ? 1 : 0)\n };\n}\n\nfunction clearKeyboardOrbitState(keyboardOrbitState) {\n if (!keyboardOrbitState) {\n return;\n }\n keyboardOrbitState.pressedKeys.clear();\n keyboardOrbitState.directionCounts.left = 0;\n keyboardOrbitState.directionCounts.right = 0;\n keyboardOrbitState.directionCounts.up = 0;\n keyboardOrbitState.directionCounts.down = 0;\n keyboardOrbitState.lastFrameTime = 0;\n}\n\nfunction applyOrbitDelta(runtime, azimuthDelta, polarDelta) {\n if (!runtime?.THREE || !runtime?.camera || !runtime?.controls) {\n return false;\n }\n if (Math.abs(azimuthDelta) < 1e-6 && Math.abs(polarDelta) < 1e-6) {\n return false;\n }\n\n const offset = new runtime.THREE.Vector3().copy(runtime.camera.position).sub(runtime.controls.target);\n const distance = offset.length();\n if (!Number.isFinite(distance) || distance <= 1e-6) {\n return false;\n }\n const worldUp = new runtime.THREE.Vector3(...WORLD_UP).normalize();\n const direction = offset.clone().divideScalar(distance);\n const minPolar = Math.max(\n Number.isFinite(runtime.controls.minPolarAngle) ? runtime.controls.minPolarAngle : 0,\n KEYBOARD_POLAR_EPSILON\n );\n const maxPolar = Math.min(\n Number.isFinite(runtime.controls.maxPolarAngle) ? runtime.controls.maxPolarAngle : Math.PI,\n Math.PI - KEYBOARD_POLAR_EPSILON\n );\n const currentPolar = Math.acos(clamp(direction.dot(worldUp), -1, 1));\n const requestedPolar = clamp(currentPolar + polarDelta, minPolar, maxPolar);\n const resolvedPolarDelta = requestedPolar - currentPolar;\n\n const minAzimuth = Number.isFinite(runtime.controls.minAzimuthAngle) ? runtime.controls.minAzimuthAngle : -Infinity;\n const maxAzimuth = Number.isFinite(runtime.controls.maxAzimuthAngle) ? runtime.controls.maxAzimuthAngle : Infinity;\n if (Number.isFinite(minAzimuth) || Number.isFinite(maxAzimuth)) {\n const currentAzimuth = Math.atan2(offset.y, offset.x);\n const nextAzimuth = clamp(normalizeAngleAround(currentAzimuth + azimuthDelta, currentAzimuth), minAzimuth, maxAzimuth);\n azimuthDelta = nextAzimuth - currentAzimuth;\n }\n\n if (Math.abs(azimuthDelta) > 1e-6) {\n offset.applyAxisAngle(worldUp, azimuthDelta);\n }\n if (Math.abs(resolvedPolarDelta) > 1e-6) {\n let orbitRight = new runtime.THREE.Vector3().crossVectors(worldUp, offset).normalize();\n if (orbitRight.lengthSq() <= 1e-9) {\n orbitRight = new runtime.THREE.Vector3(1, 0, 0);\n }\n offset.applyAxisAngle(orbitRight, resolvedPolarDelta);\n }\n runtime.camera.position.copy(runtime.controls.target).add(offset);\n runtime.camera.up.set(...WORLD_UP);\n runtime.camera.lookAt(runtime.controls.target);\n return true;\n}\n\nfunction stepKeyboardOrbit(runtime, timestamp) {\n const keyboardOrbitState = runtime?.keyboardOrbitState;\n if (!keyboardOrbitState) {\n return false;\n }\n\n const axes = getKeyboardOrbitAxes(keyboardOrbitState);\n if (!axes.azimuth && !axes.polar) {\n keyboardOrbitState.lastFrameTime = 0;\n return false;\n }\n if (!keyboardOrbitState.lastFrameTime) {\n keyboardOrbitState.lastFrameTime = timestamp;\n return false;\n }\n\n const deltaSeconds = clamp((timestamp - keyboardOrbitState.lastFrameTime) / 1000, 0, 0.05);\n keyboardOrbitState.lastFrameTime = timestamp;\n return applyOrbitDelta(\n runtime,\n axes.azimuth * KEYBOARD_ORBIT_SPEED_RAD_PER_SEC * deltaSeconds,\n axes.polar * KEYBOARD_ORBIT_SPEED_RAD_PER_SEC * deltaSeconds\n );\n}\n\nfunction cancelCameraTransition(runtime, { scheduleIdle = true } = {}) {\n if (!runtime?.cameraTransition) {\n return;\n }\n runtime.cameraTransition = null;\n if (runtime.controls) {\n runtime.controls.enableDamping = true;\n runtime.controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n }\n if (scheduleIdle) {\n runtime.scheduleIdleQuality?.();\n }\n}\n\nfunction applyPerspectiveSnapshot(runtime, perspective, { scheduleIdle = true } = {}) {\n const nextPerspective = clonePerspectiveSnapshot(perspective);\n if (!runtime?.camera || !runtime?.controls || !nextPerspective) {\n return false;\n }\n cancelCameraTransition(runtime, { scheduleIdle: false });\n clearKeyboardOrbitState(runtime.keyboardOrbitState);\n if (Object.prototype.hasOwnProperty.call(nextPerspective, \"projection\")) {\n syncRuntimeCameraProjection(runtime, nextPerspective.projection, { scheduleIdle: false });\n }\n runtime.camera.position.set(...nextPerspective.position);\n runtime.controls.target.set(...nextPerspective.target);\n runtime.camera.up.set(...nextPerspective.up);\n if (Number.isFinite(nextPerspective.zoom) && nextPerspective.zoom > 0) {\n runtime.camera.zoom = nextPerspective.zoom;\n runtime.camera.updateProjectionMatrix?.();\n reapplyRuntimeCameraFrameInsets(runtime);\n }\n runtime.camera.lookAt(runtime.controls.target);\n runtime.controls.update();\n if (scheduleIdle) {\n runtime.scheduleIdleQuality?.();\n }\n runtime.requestRender?.();\n return true;\n}\n\nfunction transitionCameraToPerspectiveSnapshot(runtime, perspective, {\n durationMs = VIEW_PLANE_TRANSITION_MS,\n easing = CAMERA_TRANSITION_EASING.EASE_IN_OUT_CUBIC,\n orthographicHalfHeight = null,\n resetZoomBaselineOnComplete = false\n} = {}) {\n const nextPerspective = clonePerspectiveSnapshot(perspective);\n if (!runtime?.THREE || !runtime?.camera || !runtime?.controls || !nextPerspective) {\n return false;\n }\n cancelCameraTransition(runtime, { scheduleIdle: false });\n clearKeyboardOrbitState(runtime.keyboardOrbitState);\n if (Object.prototype.hasOwnProperty.call(nextPerspective, \"projection\")) {\n syncRuntimeCameraProjection(runtime, nextPerspective.projection, { scheduleIdle: false });\n }\n const endPosition = new runtime.THREE.Vector3(...nextPerspective.position);\n const endTarget = new runtime.THREE.Vector3(...nextPerspective.target);\n const endUp = new runtime.THREE.Vector3(...nextPerspective.up);\n const endZoom = Number.isFinite(nextPerspective.zoom) && nextPerspective.zoom > 0\n ? nextPerspective.zoom\n : runtime.camera.zoom;\n const startOrthographicHalfHeight = runtime.camera?.isOrthographicCamera\n ? Number(runtime.camera.userData?.cadHalfHeight)\n : null;\n const endOrthographicHalfHeight = runtime.camera?.isOrthographicCamera\n ? Number(orthographicHalfHeight)\n : null;\n if (\n ![endPosition.x, endPosition.y, endPosition.z, endTarget.x, endTarget.y, endTarget.z, endUp.x, endUp.y, endUp.z, endZoom]\n .every(Number.isFinite) ||\n endUp.lengthSq() <= 1e-6\n ) {\n return false;\n }\n runtime.cameraTransition = {\n startTime: performance.now(),\n durationMs,\n startPosition: runtime.camera.position.clone(),\n endPosition,\n startTarget: runtime.controls.target.clone(),\n endTarget,\n startUp: runtime.camera.up.clone(),\n endUp: endUp.normalize(),\n startZoom: runtime.camera.zoom,\n endZoom,\n startOrthographicHalfHeight,\n endOrthographicHalfHeight,\n resetZoomBaselineOnComplete,\n easing\n };\n runtime.controls.enableDamping = false;\n runtime.beginInteraction?.();\n runtime.requestRender?.();\n return true;\n}\n\nfunction pointBounds(center) {\n if (!Array.isArray(center) && !ArrayBuffer.isView(center)) {\n return null;\n }\n const x = toNumber(center[0]);\n const y = toNumber(center[1]);\n const z = toNumber(center[2]);\n return {\n min: [x, y, z],\n max: [x, y, z]\n };\n}\n\nfunction selectorReferenceForId(selectorRuntime, referenceId) {\n const id = String(referenceId || \"\").trim();\n if (!id || !selectorRuntime) {\n return null;\n }\n return selectorRuntime.referenceMap?.get?.(id) ||\n selectorRuntime.faceReferenceMap?.get?.(id) ||\n selectorRuntime.edgeReferenceMap?.get?.(id) ||\n selectorRuntime.referenceByDisplaySelector?.get?.(id) ||\n selectorRuntime.referenceByNormalizedSelector?.get?.(id) ||\n null;\n}\n\nfunction selectorReferenceBounds(selectorRuntime, referenceIds = []) {\n const boundsList = [];\n for (const referenceId of normalizePartIdList(referenceIds)) {\n const reference = selectorReferenceForId(selectorRuntime, referenceId);\n const bbox = reference?.pickData?.bbox || reference?.bbox || null;\n const bounds = mergeBoundsList([bbox]) ||\n pointBounds(reference?.pickData?.center || reference?.center);\n if (bounds) {\n boundsList.push(bounds);\n }\n }\n return mergeBoundsList(boundsList);\n}\n\nfunction currentDisplayRecordTranslationByRecord(THREE, records = []) {\n const translations = new Map();\n if (!THREE?.Vector3) {\n return translations;\n }\n for (const record of Array.isArray(records) ? records : []) {\n const translation = displayRecordExplodedViewTranslation(THREE, record);\n if (translation?.isVector3 && translation.lengthSq() > 1e-12) {\n translations.set(record, translation);\n }\n }\n return translations;\n}\n\nfunction displayRecordBoundsForPartIds(runtime, partIds = []) {\n const normalizedPartIds = normalizePartIdList(partIds);\n if (!normalizedPartIds.length || !Array.isArray(runtime?.displayRecords)) {\n return null;\n }\n return displayRecordsBounds(runtime.displayRecords, {\n partIds: new Set(normalizedPartIds),\n translationByRecord: currentDisplayRecordTranslationByRecord(runtime?.THREE, runtime.displayRecords)\n });\n}\n\nfunction zoomRuntimeToBounds(runtime, bounds, sceneScaleMode, {\n animate = true,\n modelOffset = null,\n resetZoomBaseline = false\n} = {}) {\n if (!runtime?.THREE || !runtime?.camera || !runtime?.controls) {\n return false;\n }\n const normalizedBounds = mergeBoundsList([bounds]);\n if (!normalizedBounds) {\n return false;\n }\n const frameMetrics = getViewportFrameMetrics(runtime, runtime.frameInsetsRef?.current);\n const frame = autoZoomFrameForBounds(runtime.THREE, {\n camera: runtime.camera,\n controls: runtime.controls,\n bounds: normalizedBounds,\n modelOffset,\n frameAspect: frameMetrics.aspect,\n minRadius: getSceneScaleSettings(sceneScaleMode).minModelRadius,\n padding: DEFAULT_AUTO_ZOOM_PADDING,\n defaultDirection: DEFAULT_VIEW_DIRECTION,\n viewUp: runtime.camera.up?.toArray?.() || WORLD_UP\n });\n if (!frame) {\n return false;\n }\n const snapshot = {\n position: frame.position.toArray(),\n target: frame.target.toArray(),\n up: frame.up.toArray(),\n zoom: 1,\n projection: runtimeCameraProjection(runtime)\n };\n const orthographicHalfHeight = runtime.camera.isOrthographicCamera\n ? getOrthographicHalfHeightForBoundingSphere(\n frame.radius,\n sceneScaleMode,\n frameMetrics,\n DEFAULT_AUTO_ZOOM_PADDING\n )\n : null;\n\n if (animate) {\n return transitionCameraToPerspectiveSnapshot(runtime, snapshot, {\n durationMs: VIEW_PLANE_TRANSITION_MS,\n easing: CAMERA_TRANSITION_EASING.EASE_IN_OUT_CUBIC,\n orthographicHalfHeight,\n resetZoomBaselineOnComplete: resetZoomBaseline\n });\n }\n\n if (runtime.camera.isOrthographicCamera && orthographicHalfHeight) {\n setOrthographicCameraHalfHeight(runtime, orthographicHalfHeight, frameMetrics);\n }\n const applied = applyPerspectiveSnapshot(runtime, snapshot);\n if (applied) {\n if (resetZoomBaseline) {\n resetRuntimeZoomBaseline(runtime);\n }\n runtime.onZoomChange?.(runtime);\n }\n return applied;\n}\n\nfunction stepCameraTransition(runtime, timestamp) {\n const transition = runtime?.cameraTransition;\n if (!transition || !runtime?.THREE || !runtime?.camera || !runtime?.controls) {\n return false;\n }\n\n const durationMs = Math.max(transition.durationMs, 1);\n const progress = clamp((timestamp - transition.startTime) / durationMs, 0, 1);\n const eased = easeCameraTransitionProgress(progress, transition.easing);\n const position = new runtime.THREE.Vector3().lerpVectors(\n transition.startPosition,\n transition.endPosition,\n eased\n );\n const target = new runtime.THREE.Vector3().lerpVectors(\n transition.startTarget,\n transition.endTarget,\n eased\n );\n const up = new runtime.THREE.Vector3().lerpVectors(\n transition.startUp,\n transition.endUp,\n eased\n );\n runtime.camera.position.copy(position);\n runtime.controls.target.copy(target);\n if (up.lengthSq() > 1e-6) {\n runtime.camera.up.copy(up.normalize());\n }\n const startOrthographicHalfHeight = Number(transition.startOrthographicHalfHeight);\n const endOrthographicHalfHeight = Number(transition.endOrthographicHalfHeight);\n let projectionUpdated = false;\n if (\n runtime.camera?.isOrthographicCamera &&\n Number.isFinite(startOrthographicHalfHeight) &&\n Number.isFinite(endOrthographicHalfHeight) &&\n endOrthographicHalfHeight > 0\n ) {\n const nextHalfHeight = startOrthographicHalfHeight + ((endOrthographicHalfHeight - startOrthographicHalfHeight) * eased);\n setOrthographicCameraHalfHeight(runtime, nextHalfHeight);\n reapplyRuntimeCameraFrameInsets(runtime);\n projectionUpdated = true;\n }\n if (Number.isFinite(transition.startZoom) && Number.isFinite(transition.endZoom)) {\n runtime.camera.zoom = transition.startZoom + ((transition.endZoom - transition.startZoom) * eased);\n runtime.camera.updateProjectionMatrix?.();\n if (!projectionUpdated) {\n reapplyRuntimeCameraFrameInsets(runtime);\n }\n }\n runtime.camera.lookAt(target);\n\n if (progress >= 1) {\n if (transition.resetZoomBaselineOnComplete) {\n resetRuntimeZoomBaseline(runtime);\n }\n runtime.onZoomChange?.(runtime);\n runtime.cameraTransition = null;\n runtime.controls.enableDamping = true;\n runtime.controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n runtime.scheduleIdleQuality?.();\n return false;\n }\n return true;\n}\n\nfunction transitionCameraToViewPreset(runtime, preset) {\n if (\n !runtime?.THREE ||\n !runtime?.camera ||\n !runtime?.controls ||\n !preset ||\n !Array.isArray(preset.direction) ||\n preset.direction.length !== 3 ||\n !Array.isArray(preset.up) ||\n preset.up.length !== 3\n ) {\n return false;\n }\n\n const currentTarget = runtime.controls.target.clone();\n const currentOffset = new runtime.THREE.Vector3().copy(runtime.camera.position).sub(currentTarget);\n const fallbackDistance = Math.max(runtime.controls.minDistance || 1, 1);\n const currentDistance = currentOffset.length();\n const distance = clamp(\n Number.isFinite(currentDistance) && currentDistance > 1e-6 ? currentDistance : fallbackDistance,\n runtime.controls.minDistance || 0.01,\n runtime.controls.maxDistance || Infinity\n );\n const nextDirection = new runtime.THREE.Vector3(...preset.direction);\n if (nextDirection.lengthSq() < 1e-6) {\n return false;\n }\n const nextUp = new runtime.THREE.Vector3(...preset.up);\n if (nextUp.lengthSq() < 1e-6) {\n return false;\n }\n\n nextDirection.normalize();\n nextUp.normalize();\n const worldUp = new runtime.THREE.Vector3(...WORLD_UP).normalize();\n if (Math.abs(nextDirection.dot(worldUp)) >= VIEW_PLANE_POLE_DIRECTION_DOT_THRESHOLD) {\n let screenUp = nextUp.clone().addScaledVector(worldUp, -nextUp.dot(worldUp));\n if (screenUp.lengthSq() < 1e-6) {\n screenUp = new runtime.THREE.Vector3(0, 1, 0).addScaledVector(worldUp, -worldUp.y);\n }\n if (screenUp.lengthSq() < 1e-6) {\n screenUp = new runtime.THREE.Vector3(1, 0, 0);\n }\n screenUp.normalize();\n const poleSign = nextDirection.dot(worldUp) >= 0 ? 1 : -1;\n nextDirection.addScaledVector(screenUp, -poleSign * VIEW_PLANE_POLE_DIRECTION_NUDGE).normalize();\n nextUp.copy(worldUp);\n }\n runtime.cameraTransition = {\n startTime: performance.now(),\n durationMs: VIEW_PLANE_TRANSITION_MS,\n startPosition: runtime.camera.position.clone(),\n endPosition: currentTarget.clone().add(nextDirection.multiplyScalar(distance)),\n startTarget: currentTarget.clone(),\n endTarget: currentTarget.clone(),\n startUp: runtime.camera.up.clone(),\n endUp: nextUp\n };\n runtime.controls.enableDamping = false;\n runtime.beginInteraction?.();\n runtime.requestRender?.();\n return true;\n}\n\nfunction getActiveViewPlaneFaceId(runtime) {\n if (!runtime?.THREE || !runtime?.camera || !runtime?.controls) {\n return \"\";\n }\n\n const offset = new runtime.THREE.Vector3().copy(runtime.camera.position).sub(runtime.controls.target);\n if (offset.lengthSq() < 1e-6) {\n return \"\";\n }\n offset.normalize();\n\n let bestId = \"\";\n let bestScore = -Infinity;\n for (const face of VIEW_PLANE_FACES) {\n const direction = new runtime.THREE.Vector3(...face.direction).normalize();\n const score = offset.dot(direction);\n if (score > bestScore) {\n bestScore = score;\n bestId = face.id;\n }\n }\n return bestScore >= VIEW_PLANE_ACTIVE_DOT_THRESHOLD ? bestId : \"\";\n}\n\nfunction disposeSceneObject(object) {\n if (!object) {\n return;\n }\n while (object.children?.length) {\n disposeSceneObject(object.children[0]);\n }\n if (typeof object.userData?.beforeDispose === \"function\") {\n object.userData.beforeDispose(object);\n delete object.userData.beforeDispose;\n }\n object.parent?.remove(object);\n if (object.geometry?.userData?.cadSceneCachedGeometry !== true) {\n object.geometry?.dispose?.();\n }\n const materials = Array.isArray(object.material) ? object.material : [object.material];\n for (const material of materials) {\n material?.map?.dispose?.();\n material?.alphaMap?.dispose?.();\n material?.dispose?.();\n }\n}\n\nfunction clearSceneGroup(group) {\n while (group.children.length) {\n disposeSceneObject(group.children[0]);\n }\n}\n\nfunction getEdgeThickness(edgeSettings = null, viewerTheme = null) {\n const fallbackThickness = Number.isFinite(Number(viewerTheme?.edgeThickness))\n ? Number(viewerTheme.edgeThickness)\n : BASE_VIEWER_THEME.edgeThickness;\n return Number.isFinite(Number(edgeSettings?.thickness))\n ? clamp(Number(edgeSettings.thickness), 0.5, 6)\n : fallbackThickness;\n}\n\nfunction getHighlightEdgeThickness(edgeSettings = null, viewerTheme = null) {\n return Number.isFinite(Number(edgeSettings?.highlightThickness))\n ? clamp(Number(edgeSettings.highlightThickness), 0.5, 6)\n : Math.max(getEdgeThickness(edgeSettings, viewerTheme) * REFERENCE_HIGHLIGHT_WIDTH_MULTIPLIER, 2);\n}\n\nfunction getHighlightEdgeOpacity(edgeSettings = null) {\n return Number.isFinite(Number(edgeSettings?.highlightOpacity))\n ? clamp(Number(edgeSettings.highlightOpacity), 0, 1)\n : 1;\n}\n\nfunction getHighlightEdgeColor(edgeSettings = null) {\n return String(edgeSettings?.highlightColor || REFERENCE_SELECTED_COLOR).trim() || REFERENCE_SELECTED_COLOR;\n}\n\nfunction isPointerInsideElement(event, element) {\n if (!event || !element || !Number.isFinite(Number(event.clientX)) || !Number.isFinite(Number(event.clientY))) {\n return false;\n }\n const rect = element.getBoundingClientRect();\n return (\n event.clientX >= rect.left &&\n event.clientX <= rect.right &&\n event.clientY >= rect.top &&\n event.clientY <= rect.bottom\n );\n}\n\nfunction disposeOverlayChild(runtime, child) {\n if (!child) {\n return;\n }\n while (child.children?.length) {\n const nested = child.children[0];\n child.remove(nested);\n disposeOverlayChild(runtime, nested);\n }\n if (typeof child.userData?.beforeDispose === \"function\") {\n child.userData.beforeDispose(child);\n delete child.userData.beforeDispose;\n }\n const materials = Array.isArray(child.material) ? child.material : [child.material];\n if (child.userData?.disposeGeometry !== false) {\n child.geometry?.dispose?.();\n }\n if (child.userData?.disposeMaterial !== false) {\n for (const material of materials) {\n material?.dispose?.();\n }\n }\n}\n\nfunction clearOverlayGroup(runtime, group) {\n if (group === runtime?.urdfPosePickerGuideGroup) {\n runtime.urdfPosePickerHoverCellMesh = null;\n runtime.urdfPosePickerHoverCellOutline = null;\n }\n while (group?.children?.length) {\n const child = group.children[group.children.length - 1];\n if (!child) {\n continue;\n }\n group.remove(child);\n disposeOverlayChild(runtime, child);\n }\n if (group) {\n group.visible = false;\n }\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeAngleAround(angle, center) {\n let adjusted = angle;\n while (adjusted - center > Math.PI) {\n adjusted -= Math.PI * 2;\n }\n while (adjusted - center < -Math.PI) {\n adjusted += Math.PI * 2;\n }\n return adjusted;\n}\n\nfunction parseFaceToken(copyText) {\n return String(parseCadRefToken(copyText)?.token || \"\").trim();\n}\n\nfunction mateOverlayVector(value) {\n if (!Array.isArray(value) || value.length < 3) {\n return null;\n }\n const vector = value.slice(0, 3).map((component) => Number(component));\n return vector.every((component) => Number.isFinite(component)) ? vector : null;\n}\n\nfunction normalizedMateOverlayEndpoint(endpoint) {\n if (!endpoint || typeof endpoint !== \"object\") {\n return null;\n }\n const position = mateOverlayVector(endpoint.position);\n if (!position) {\n return null;\n }\n const axes = endpoint.axes && typeof endpoint.axes === \"object\" ? endpoint.axes : {};\n return {\n position,\n axes: {\n x: mateOverlayVector(axes.x),\n y: mateOverlayVector(axes.y),\n z: mateOverlayVector(axes.z)\n }\n };\n}\n\nfunction normalizeMateIdList(value) {\n return [...new Set(\n (Array.isArray(value) ? value : [value])\n .map((id) => String(id || \"\").trim())\n .filter(Boolean)\n )];\n}\n\nfunction resolveActiveMateOverlays(assemblyMates, selectedMateIds, hoveredMateId) {\n const selectedSet = new Set(normalizeMateIdList(selectedMateIds));\n const hoveredId = String(hoveredMateId || \"\").trim();\n if (!selectedSet.size && !hoveredId) {\n return [];\n }\n const active = [];\n const seen = new Set();\n for (const mate of Array.isArray(assemblyMates) ? assemblyMates : []) {\n const mateId = String(mate?.id || \"\").trim();\n if (!mateId || seen.has(mateId)) {\n continue;\n }\n const selected = selectedSet.has(mateId);\n const hovered = hoveredId === mateId;\n if (!selected && !hovered) {\n continue;\n }\n const fixed = normalizedMateOverlayEndpoint(mate.fixedEndpoint);\n const moving = normalizedMateOverlayEndpoint(mate.movingEndpoint);\n if (!fixed && !moving) {\n continue;\n }\n seen.add(mateId);\n active.push({\n id: mateId,\n fixed,\n moving,\n selected,\n hovered\n });\n }\n return active;\n}\n\nfunction createMateMarkerMesh(THREE, position, {\n color,\n opacity,\n radius,\n renderOrder\n}) {\n const markerGeometry = new THREE.SphereGeometry(radius, 18, 10);\n const markerMaterial = new THREE.MeshBasicMaterial({\n color,\n transparent: opacity < 0.999,\n opacity,\n depthTest: false,\n depthWrite: false,\n toneMapped: false\n });\n const marker = new THREE.Mesh(markerGeometry, markerMaterial);\n marker.position.set(position[0], position[1], position[2]);\n marker.renderOrder = renderOrder;\n return marker;\n}\n\nfunction pushMateAxisSegment(segments, origin, direction, length) {\n const axis = mateOverlayVector(direction);\n if (!axis) {\n return;\n }\n const magnitude = Math.hypot(axis[0], axis[1], axis[2]);\n if (magnitude <= 1e-8) {\n return;\n }\n const unit = axis.map((component) => component / magnitude);\n segments.push(\n origin[0] - unit[0] * length,\n origin[1] - unit[1] * length,\n origin[2] - unit[2] * length,\n origin[0] + unit[0] * length,\n origin[1] + unit[1] * length,\n origin[2] + unit[2] * length\n );\n}\n\nfunction addMateOverlayGlyph(runtime, group, mate, {\n color,\n opacity,\n markerRadius,\n axisLength,\n lineWidth,\n renderOrder\n}) {\n const fixedPosition = mate.fixed?.position || null;\n const movingPosition = mate.moving?.position || null;\n const anchorPosition = fixedPosition || movingPosition;\n if (!anchorPosition) {\n return;\n }\n\n const positions = [];\n if (fixedPosition && movingPosition) {\n const span = Math.hypot(\n fixedPosition[0] - movingPosition[0],\n fixedPosition[1] - movingPosition[1],\n fixedPosition[2] - movingPosition[2]\n );\n if (span > Math.max(markerRadius * 0.25, 0.01)) {\n positions.push(...fixedPosition, ...movingPosition);\n }\n }\n const axes = mate.fixed?.axes || mate.moving?.axes || {};\n pushMateAxisSegment(positions, anchorPosition, axes.z || [0, 0, 1], axisLength);\n pushMateAxisSegment(positions, anchorPosition, axes.x || [1, 0, 0], axisLength * 0.62);\n if (positions.length) {\n const line = createScreenSpaceLineSegments(runtime, positions, {\n color,\n opacity,\n lineWidth,\n renderOrder,\n depthTest: false,\n depthWrite: false\n });\n if (line) {\n group.add(line);\n }\n }\n\n group.add(createMateMarkerMesh(runtime.THREE, anchorPosition, {\n color,\n opacity,\n radius: markerRadius,\n renderOrder: renderOrder + 1\n }));\n}\n\nfunction updateGridHelper(\n runtime,\n viewerTheme,\n radius,\n floorZ = 0,\n sceneScaleMode = VIEWER_SCENE_SCALE.CAD,\n floorMode = THEME_FLOOR_MODES.STAGE,\n floorSettings = {}\n) {\n return updateStageGridHelper(runtime, viewerTheme, radius, floorZ, sceneScaleMode, floorMode, {\n disposeSceneObject,\n floorSettings\n });\n}\n\nconst CadViewer = forwardRef(function CadViewer({\n meshData,\n modelKey,\n renderFormat = \"\",\n perspective = null,\n perspectiveRef = null,\n projection = CAMERA_PROJECTION.PERSPECTIVE,\n showEdges,\n recomputeNormals,\n theme = BASE_VIEWER_THEME,\n themeSettings = null,\n floorModeOverride = \"\",\n previewMode = false,\n showViewPlane = true,\n viewPlaneOffsetRight = 16,\n viewPlaneOffsetBottom = 16,\n viewPlaneHeader = null,\n compactViewPlane = false,\n viewportFrameInsets = null,\n isLoading = false,\n pickMode = VIEWER_PICK_MODE.AUTO,\n renderPartsIndividually = false,\n scale = \"\",\n sceneScaleMode = VIEWER_SCENE_SCALE.CAD,\n pickableParts = [],\n hiddenPartIds = [],\n selectedPartIds = [],\n hoveredPartId = \"\",\n assemblyMates = [],\n selectedMateIds = [],\n hoveredMateId = \"\",\n hoveredReferenceId = \"\",\n selectedReferenceIds = [],\n selectorRuntime = null,\n displayEdgeRuntime = null,\n stepParameters = null,\n pickableFaces = [],\n pickableEdges = [],\n pickableVertices = [],\n surfaceLineFaceId = \"\",\n focusedPartId = \"\",\n displaySettings = null,\n drawingEnabled = false,\n drawingTool = DRAWING_TOOL.FREEHAND,\n drawingStrokes = [],\n onDrawingStrokesChange,\n onPerspectiveChange,\n onProjectionChange,\n onDisplayModeChange,\n onHoverReferenceChange,\n onActivateReference,\n onDoubleActivateReference,\n onContextReference,\n onViewerAlertChange,\n onStepModuleTransformDetectedChange,\n urdfPosePicker = null\n}, ref) {\n const stepParameterRuntime = stepParameters;\n const normalizedSceneScaleMode = normalizeSceneScaleMode(scale || sceneScaleMode);\n const normalizedProjection = normalizeCameraProjection(projection);\n const meshGeometrySource = meshData?.geometrySource && typeof meshData.geometrySource === \"object\"\n ? meshData.geometrySource\n : meshData;\n const defaultGridRadius = defaultSceneGridRadius(normalizedSceneScaleMode);\n const normalizedViewportFrameInsets = useMemo(\n () => normalizeViewportFrameInsets(viewportFrameInsets),\n [\n viewportFrameInsets?.top,\n viewportFrameInsets?.right,\n viewportFrameInsets?.bottom,\n viewportFrameInsets?.left\n ]\n );\n const interactionHostRef = useRef(null);\n const mountRef = useRef(null);\n const drawingCanvasRef = useRef(null);\n const drawingDraftRef = useRef(null);\n const drawingStrokesRef = useRef(Array.isArray(drawingStrokes) ? drawingStrokes : []);\n const drawingChangeRef = useRef(onDrawingStrokesChange);\n const perspectiveChangeRef = useRef(onPerspectiveChange);\n const viewerAlertChangeRef = useRef(onViewerAlertChange);\n const stepModuleTransformDetectedChangeRef = useRef(onStepModuleTransformDetectedChange);\n const urdfPosePickerRef = useRef(urdfPosePicker);\n const posePickerPointerRef = useRef(null);\n const lastEmittedPerspectiveRef = useRef(null);\n const lastProjectionRef = useRef(normalizedProjection);\n const suppressPerspectiveEventsRef = useRef(0);\n const drawingIdRef = useRef(0);\n const runtimeRef = useRef(null);\n const explodedViewAnimationRef = useRef({\n rafId: 0,\n progress: 0,\n modelKey: \"\",\n recordKey: \"\",\n states: [],\n transitionProgress: 0\n });\n const viewportFrameInsetsRef = useRef(normalizedViewportFrameInsets);\n const framedModelKeyRef = useRef(\"\");\n const modelTransformRef = useRef({\n modelKey: \"\",\n sceneScaleMode: \"\",\n offset: null,\n floorZ: null\n });\n const clipSettingsRef = useRef(normalizeStepClipSettings(null));\n const selectorRuntimeRef = useRef(selectorRuntime);\n const displayEdgeRuntimeRef = useRef(displayEdgeRuntime);\n const stepModuleCleanupRef = useRef([]);\n const [transformedSelectorRuntime, setTransformedSelectorRuntime] = useState(null);\n const [transformedDisplayEdgeRuntime, setTransformedDisplayEdgeRuntime] = useState(null);\n const [defaultPerspectiveDetached, setDefaultPerspectiveDetached] = useState(false);\n const [error, setError] = useState(\"\");\n const [viewerReadyTick, setViewerReadyTick] = useState(0);\n const [runtimeResetToken, setRuntimeResetToken] = useState(0);\n const [activeViewPlaneFace, setActiveViewPlaneFace] = useState(\"\");\n const [viewPlaneOrientation, setViewPlaneOrientation] = useState(DEFAULT_VIEW_PLANE_ORIENTATION);\n const [cameraZoomPercent, setCameraZoomPercent] = useState(100);\n const [urdfPosePickerGuidePoint, setUrdfPosePickerGuidePoint] = useState(null);\n const [urdfPosePickerHoverActive, setUrdfPosePickerHoverActive] = useState(false);\n const activeViewPlaneFaceRef = useRef(\"\");\n const defaultPerspectiveResettingRef = useRef(false);\n const previewModeRef = useRef(previewMode);\n const perspectivePropRef = useRef(perspective);\n const modelKeyRef = useRef(modelKey);\n const sceneScaleModeRef = useRef(normalizedSceneScaleMode);\n const activeSelectorRuntime = transformedSelectorRuntime?.base === selectorRuntime\n ? transformedSelectorRuntime.runtime\n : selectorRuntime;\n const activeDisplayEdgeRuntime = transformedDisplayEdgeRuntime?.base === displayEdgeRuntime\n ? transformedDisplayEdgeRuntime.runtime\n : displayEdgeRuntime;\n const viewerTheme = theme || BASE_VIEWER_THEME;\n const normalizedViewerRenderState = useMemo(() => normalizeViewerRenderState({\n themeSettings,\n displaySettings\n }), [themeSettings, displaySettings]);\n const normalizedThemeSettings = normalizedViewerRenderState.themeSettings;\n const normalizedDisplaySettings = normalizedViewerRenderState.displaySettings;\n const normalizedDisplayMode = normalizedViewerRenderState.displayMode;\n const normalizedExplodedSettings = normalizedDisplaySettings.exploded;\n const explodablePartCount = useMemo(() => renderableMeshParts(meshData).length, [meshData]);\n const explodedViewActive = normalizedExplodedSettings.enabled && explodablePartCount > 1;\n const effectiveRenderPartsIndividually = renderPartsIndividually ||\n explodedViewActive;\n const shouldUseCadEdgeSource = renderFormat === RENDER_FORMAT.STEP;\n const displayEdgeSettings = useMemo(\n () => resolveDisplayEdgeSettings(normalizedDisplaySettings),\n [normalizedDisplaySettings]\n );\n const wireframeMode = displayModeIsWireframe(normalizedDisplayMode);\n const displayModeForceEdges = displayModeForcesEdges(normalizedDisplayMode);\n const displayModeThroughEdges = displayModeShowsThroughEdges(normalizedDisplayMode);\n const wireframeEdgeColor = useMemo(\n () => resolveWireframeEdgeColor({\n edgeColor: displayEdgeSettings?.color,\n themeSettings: normalizedThemeSettings,\n viewerTheme\n }),\n [displayEdgeSettings, normalizedThemeSettings, viewerTheme]\n );\n const wireframeEdgeOpacity = useMemo(() => {\n const baseOpacity = Number.isFinite(Number(displayEdgeSettings?.opacity))\n ? clamp(Number(displayEdgeSettings.opacity), 0, 1)\n : (viewerTheme?.edgeOpacity ?? BASE_VIEWER_THEME.edgeOpacity ?? CAD_EDGE_OPACITY);\n return Math.max(baseOpacity, 0.9);\n }, [displayEdgeSettings, viewerTheme]);\n const visualEdgeSettings = useMemo(() => {\n const forcedSettings = {\n ...displayEdgeSettings,\n enabled: displayModeForceEdges ? true : displayEdgeSettings.enabled,\n depthTest: displayModeThroughEdges ? false : displayEdgeSettings.depthTest\n };\n return wireframeMode\n ? {\n ...forcedSettings,\n contrastMode: \"manual\",\n color: wireframeEdgeColor,\n opacity: wireframeEdgeOpacity\n }\n : forcedSettings;\n }, [\n displayEdgeSettings,\n displayModeForceEdges,\n displayModeThroughEdges,\n wireframeEdgeColor,\n wireframeEdgeOpacity,\n wireframeMode\n ]);\n const focusedPartIds = useMemo(() => normalizePartIdList(focusedPartId), [focusedPartId]);\n const focusedPartIdSet = useMemo(() => new Set(focusedPartIds), [focusedPartIds]);\n const hiddenPartIdSet = useMemo(() => new Set(normalizePartIdList(hiddenPartIds)), [hiddenPartIds]);\n const hiddenAwareVisualEdgeSettings = useMemo(() => {\n const hiddenIds = normalizePartIdList(hiddenPartIds);\n if (!hiddenIds.length) {\n return visualEdgeSettings;\n }\n const excludePartIds = [\n ...new Set([\n ...normalizePartIdList(visualEdgeSettings?.excludePartIds),\n ...hiddenIds\n ])\n ];\n return {\n ...visualEdgeSettings,\n excludePartIds\n };\n }, [hiddenPartIds, visualEdgeSettings]);\n const normalizedClipSettings = normalizedViewerRenderState.clipSettings;\n const floorSettings = normalizedThemeSettings.floor || {};\n const defaultFloorMode = floorSettings.enabled === true\n ? THEME_FLOOR_MODES.STAGE\n : THEME_FLOOR_MODES.NONE;\n const resolvedFloorMode = floorModeOverride\n ? normalizeFloorMode(floorModeOverride, defaultFloorMode)\n : defaultFloorMode;\n const updateActiveGridHelper = useCallback((\n runtime,\n activeViewerTheme,\n radius,\n floorZ = 0,\n sceneScaleMode = VIEWER_SCENE_SCALE.CAD,\n floorMode = THEME_FLOOR_MODES.STAGE\n ) => updateGridHelper(\n runtime,\n activeViewerTheme,\n radius,\n floorZ,\n sceneScaleMode,\n floorMode,\n normalizedThemeSettings.floor\n ), [normalizedThemeSettings.floor]);\n const edgesVisible = showEdges && shouldUseCadEdgeSource && displayModeShowsEdges(normalizedDisplayMode, visualEdgeSettings);\n const topologyDisplayEdgesVisible = shouldRenderTopologyDisplayEdges({\n edgesVisible,\n wireframeMode,\n cadEdgeSource: shouldUseCadEdgeSource,\n displayEdgeRuntime: activeDisplayEdgeRuntime,\n selectorRuntime: activeSelectorRuntime,\n edgeSettings: visualEdgeSettings\n });\n const displayEdgesVisible =\n edgesVisible &&\n !topologyDisplayEdgesVisible &&\n !shouldUseCadEdgeSource &&\n shouldBuildDerivedDisplayEdges(meshData);\n const surfaceStepEdgesVisible =\n edgesVisible &&\n !topologyDisplayEdgesVisible &&\n shouldUseCadEdgeSource;\n const recordEdgesVisible = shouldShowRecordDisplayEdges({\n edgesVisible,\n topologyDisplayEdgesVisible,\n displayEdgesVisible,\n wireframeMode\n });\n const preserveInteractionPixelRatio = Boolean(\n wireframeMode ||\n edgesVisible ||\n topologyDisplayEdgesVisible ||\n displayEdgesVisible ||\n surfaceStepEdgesVisible ||\n recordEdgesVisible\n );\n const partVisualStateEnabled =\n pickMode === VIEWER_PICK_MODE.PARTS ||\n pickMode === VIEWER_PICK_MODE.ASSEMBLY ||\n (\n pickMode === VIEWER_PICK_MODE.AUTO &&\n Array.isArray(pickableParts) &&\n pickableParts.length > 0\n ) ||\n (Array.isArray(hiddenPartIds) && hiddenPartIds.length > 0) ||\n focusedPartIds.length > 0;\n const partVisualStateRef = useRef({\n viewerTheme,\n edgeSettings: visualEdgeSettings,\n hiddenPartIds: partVisualStateEnabled ? hiddenPartIds : [],\n hoveredPartId: partVisualStateEnabled ? hoveredPartId : \"\",\n focusedPartId: partVisualStateEnabled ? focusedPartIds : [],\n selectedPartIds: partVisualStateEnabled ? selectedPartIds : [],\n showEdges: recordEdgesVisible,\n displayMode: normalizedDisplayMode\n });\n\n useLayoutEffect(() => {\n partVisualStateRef.current = {\n viewerTheme,\n edgeSettings: visualEdgeSettings,\n hiddenPartIds: partVisualStateEnabled ? hiddenPartIds : [],\n hoveredPartId: partVisualStateEnabled ? hoveredPartId : \"\",\n focusedPartId: partVisualStateEnabled ? focusedPartIds : [],\n selectedPartIds: partVisualStateEnabled ? selectedPartIds : [],\n showEdges: recordEdgesVisible,\n displayMode: normalizedDisplayMode\n };\n }, [\n normalizedDisplayMode,\n recordEdgesVisible,\n focusedPartIds,\n hiddenPartIds,\n hiddenAwareVisualEdgeSettings,\n hoveredPartId,\n partVisualStateEnabled,\n selectedPartIds,\n viewerTheme,\n visualEdgeSettings\n ]);\n const activeSurfaceLineFaceId = String(surfaceLineFaceId || \"\").trim();\n const visibleReferenceFilter = useCallback((reference) => {\n const partId = String(reference?.partId || \"\").trim();\n if (partId && hiddenPartIdSet.has(partId)) {\n return false;\n }\n if (!partId && hiddenPartIdSet.has(\"__model__\")) {\n return false;\n }\n return referenceMatchesFocusedPart(reference, focusedPartIdSet);\n }, [focusedPartIdSet, hiddenPartIdSet]);\n const filteredPickableFaces = useMemo(\n () => (Array.isArray(pickableFaces) ? pickableFaces : []).filter(visibleReferenceFilter),\n [pickableFaces, visibleReferenceFilter]\n );\n const filteredPickableEdges = useMemo(\n () => (Array.isArray(pickableEdges) ? pickableEdges : []).filter(visibleReferenceFilter),\n [pickableEdges, visibleReferenceFilter]\n );\n const filteredPickableVertices = useMemo(\n () => (Array.isArray(pickableVertices) ? pickableVertices : []).filter(visibleReferenceFilter),\n [pickableVertices, visibleReferenceFilter]\n );\n const pickableReferenceMap = useMemo(() => {\n if (activeSelectorRuntime?.referenceMap instanceof Map) {\n const map = new Map();\n for (const [referenceId, reference] of activeSelectorRuntime.referenceMap.entries()) {\n if (visibleReferenceFilter(reference)) {\n map.set(referenceId, reference);\n }\n }\n return map;\n }\n const map = new Map();\n for (const reference of [...filteredPickableFaces, ...filteredPickableEdges, ...filteredPickableVertices]) {\n const referenceId = String(reference?.id || \"\").trim();\n if (!referenceId) {\n continue;\n }\n map.set(referenceId, reference);\n }\n return map;\n }, [activeSelectorRuntime, filteredPickableEdges, filteredPickableFaces, filteredPickableVertices, visibleReferenceFilter]);\n const pickableFaceReferenceIds = useMemo(\n () => new Set(filteredPickableFaces.map((reference) => String(reference?.id || \"\").trim()).filter(Boolean)),\n [filteredPickableFaces]\n );\n const syncDrawingCanvasSize = (runtime = runtimeRef.current) => {\n const canvas = drawingCanvasRef.current;\n if (!canvas) {\n return null;\n }\n const rendererCanvas = runtime?.renderer?.domElement;\n const width = rendererCanvas?.width || mountRef.current?.clientWidth || 1;\n const height = rendererCanvas?.height || mountRef.current?.clientHeight || 1;\n if (canvas.width !== width || canvas.height !== height) {\n canvas.width = width;\n canvas.height = height;\n }\n return canvas;\n };\n const renderDrawingOverlay = () => {\n const canvas = syncDrawingCanvasSize();\n if (!canvas) {\n return;\n }\n redrawDrawingCanvas(canvas, drawingStrokesRef.current, drawingDraftRef.current);\n };\n perspectivePropRef.current = perspective;\n modelKeyRef.current = modelKey;\n sceneScaleModeRef.current = normalizedSceneScaleMode;\n useLayoutEffect(() => {\n viewportFrameInsetsRef.current = normalizedViewportFrameInsets;\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n applyCameraFrameInsets(runtime, normalizedViewportFrameInsets);\n runtime.requestRender?.();\n }, [\n normalizedViewportFrameInsets.top,\n normalizedViewportFrameInsets.right,\n normalizedViewportFrameInsets.bottom,\n normalizedViewportFrameInsets.left,\n viewerReadyTick\n ]);\n const runWithoutPerspectiveEvents = (callback) => {\n suppressPerspectiveEventsRef.current += 1;\n try {\n return callback();\n } finally {\n suppressPerspectiveEventsRef.current = Math.max(0, suppressPerspectiveEventsRef.current - 1);\n }\n };\n const syncCameraZoomPercent = useCallback((runtime = runtimeRef.current) => {\n if (!runtime?.camera) {\n setCameraZoomPercent((current) => (current === 100 ? current : 100));\n return;\n }\n const nextZoomPercent = Math.round(readRuntimeZoomPercent(runtime));\n setCameraZoomPercent((current) => (\n Math.abs(current - nextZoomPercent) < 0.5 ? current : nextZoomPercent\n ));\n }, []);\n const emitPerspectiveChange = (runtime = runtimeRef.current) => {\n const currentModelKey = modelKeyRef.current;\n if (!runtimeModelKeyMatches(runtime, currentModelKey)) {\n return;\n }\n const nextPerspective = readScopedPerspectiveSnapshot(runtime, {\n modelKey: currentModelKey,\n sceneScaleMode: sceneScaleModeRef.current\n });\n if (!nextPerspective) {\n return;\n }\n syncCameraZoomPercent(runtime);\n if (suppressPerspectiveEventsRef.current > 0) {\n lastEmittedPerspectiveRef.current = nextPerspective;\n return;\n }\n if (perspectiveSnapshotEqual(lastEmittedPerspectiveRef.current, nextPerspective)) {\n return;\n }\n lastEmittedPerspectiveRef.current = nextPerspective;\n perspectiveChangeRef.current?.(nextPerspective);\n };\n const syncDefaultPerspectiveState = (runtime = runtimeRef.current) => {\n if (defaultPerspectiveResettingRef.current) {\n if (runtime?.cameraTransition) {\n setDefaultPerspectiveDetached(false);\n return;\n }\n defaultPerspectiveResettingRef.current = false;\n }\n const nextDetached = runtime?.THREE\n ? !cameraMatchesViewPreset(runtime, VIEW_PLANE_DEFAULT_PRESET)\n : false;\n setDefaultPerspectiveDetached((current) => (\n current === nextDetached ? current : nextDetached\n ));\n };\n const syncViewPlaneOrientation = (runtime = runtimeRef.current) => {\n const nextOrientation = readViewPlaneOrientation(runtime);\n if (!nextOrientation) {\n return;\n }\n setViewPlaneOrientation((current) => (\n viewPlaneOrientationEqual(current, nextOrientation) ? current : nextOrientation\n ));\n syncDefaultPerspectiveState(runtime);\n };\n const applyInitialPerspective = useCallback((runtime = runtimeRef.current) => {\n const nextPerspective = resolvePerspectiveSnapshot(\n perspectiveRef ? perspectiveRef.current : undefined,\n perspectivePropRef.current\n );\n if (!perspectiveSnapshotMatchesScene(nextPerspective, {\n modelKey: modelKeyRef.current,\n sceneScaleMode: sceneScaleModeRef.current,\n coordinateSystem: coordinateSystemForSceneScale(sceneScaleModeRef.current),\n requireModelKey: true,\n requireSceneScaleMode: true,\n requireCoordinateSystem: true\n })) {\n return false;\n }\n return runWithoutPerspectiveEvents(() => applyPerspectiveSnapshot(runtime, nextPerspective, { scheduleIdle: false }));\n }, [perspectiveRef]);\n const applyZoomPercent = useCallback((nextZoomPercent) => {\n const runtime = runtimeRef.current;\n if (!setRuntimeZoomPercent(runtime, nextZoomPercent)) {\n return;\n }\n syncCameraZoomPercent(runtime);\n emitPerspectiveChange(runtime);\n syncViewPlaneOrientation(runtime);\n }, [\n syncCameraZoomPercent,\n syncViewPlaneOrientation\n ]);\n const resetZoomAndPan = useCallback(({ animate = true } = {}) => {\n const runtime = runtimeRef.current;\n const reset = zoomRuntimeToBounds(\n runtime,\n runtime?.modelBounds || meshData?.bounds,\n sceneScaleModeRef.current,\n {\n animate,\n modelOffset: modelTransformRef.current.offset,\n resetZoomBaseline: true\n }\n );\n if (reset && !animate) {\n syncCameraZoomPercent(runtime);\n emitPerspectiveChange(runtime);\n syncViewPlaneOrientation(runtime);\n }\n if (reset) {\n return true;\n }\n if (!setRuntimeZoomPercent(runtime, 100)) {\n return false;\n }\n syncCameraZoomPercent(runtime);\n emitPerspectiveChange(runtime);\n syncViewPlaneOrientation(runtime);\n return true;\n }, [\n meshData?.bounds,\n syncCameraZoomPercent,\n syncViewPlaneOrientation\n ]);\n const buildSurfaceLineFaceAnchor = (event, canvas, lockedReferenceId = \"\", startUv = null) => {\n const runtime = runtimeRef.current;\n if (!runtime?.raycaster || !runtime?.camera || !activeSelectorRuntime?.faceReferenceByRowIndex) {\n return null;\n }\n const activeLockedReferenceId = String(lockedReferenceId || activeSurfaceLineFaceId).trim();\n\n const rect = canvas.getBoundingClientRect();\n const width = rect.width || 1;\n const height = rect.height || 1;\n runtime.pointer.x = ((event.clientX - rect.left) / width) * 2 - 1;\n runtime.pointer.y = -((event.clientY - rect.top) / height) * 2 + 1;\n runtime.raycaster.setFromCamera(runtime.pointer, runtime.camera);\n\n const modelMeshes = (runtime.displayRecords || [])\n .map((record) => record?.mesh)\n .filter((mesh) => mesh?.visible && mesh.userData?.faceIds instanceof Uint32Array);\n const modelIntersections = modelMeshes.length ? runtime.raycaster.intersectObjects(modelMeshes, false) : [];\n const proxyIntersections = runtime.facePickMesh ? runtime.raycaster.intersectObject(runtime.facePickMesh, false) : [];\n const intersections = modelIntersections.length\n ? modelIntersections.map((intersection) => ({ intersection, source: \"model\" }))\n : proxyIntersections.map((intersection) => ({ intersection, source: \"proxy\" }));\n for (const { intersection, source } of intersections) {\n const triangleIndex = Number(intersection?.faceIndex);\n const rowIndex = Number.isInteger(triangleIndex) ? Number(intersection?.object?.userData?.faceIds?.[triangleIndex]) : NaN;\n if (!Number.isInteger(rowIndex)) {\n continue;\n }\n const reference = activeSelectorRuntime.faceReferenceByRowIndex.get(rowIndex) || null;\n const referenceId = String(reference?.id || \"\").trim();\n if (!referenceId) {\n continue;\n }\n if (activeLockedReferenceId) {\n if (referenceId !== activeLockedReferenceId) {\n continue;\n }\n } else if (pickableFaceReferenceIds.size && !pickableFaceReferenceIds.has(referenceId)) {\n continue;\n }\n\n const surface = reference?.pickData?.surface || {};\n if (SURFACE_LINE_UNSUPPORTED_TYPES.has(String(surface.type || \"\").trim())) {\n return null;\n }\n const localPoint = source === \"model\" && runtime.modelGroup\n ? runtime.modelGroup.worldToLocal(intersection.point.clone())\n : intersection.object.worldToLocal(intersection.point.clone());\n const point = [localPoint.x, localPoint.y, localPoint.z];\n const angleCenter = surface.type === \"CYLINDRICAL_SURFACE\" && Array.isArray(startUv) ? (startUv[0] / Math.max(Number(surface.radius) || 1, 1)) : null;\n const uv = projectPointToSurfaceUv(surface, point, angleCenter);\n if (!uv) {\n return null;\n }\n return {\n screenPoint: buildDrawingPoint(event, canvas),\n surfaceLine: {\n referenceId,\n selector: String(reference?.displaySelector || \"\").trim(),\n normalizedSelector: String(reference?.normalizedSelector || \"\").trim(),\n faceToken: parseFaceToken(reference?.copyText),\n partId: String(reference?.partId || \"\").trim(),\n surfaceType: String(surface.type || \"\").trim(),\n startPoint: point,\n endPoint: point,\n startUv: uv,\n endUv: uv\n }\n };\n }\n return null;\n };\n const updateSurfaceLineFaceAnchor = (event, canvas, draftSurfaceLine) => {\n const lockedReferenceId = String(draftSurfaceLine?.referenceId || \"\").trim();\n if (!lockedReferenceId) {\n return null;\n }\n const nextAnchor = buildSurfaceLineFaceAnchor(event, canvas, lockedReferenceId, draftSurfaceLine?.startUv);\n if (!nextAnchor) {\n return null;\n }\n return {\n screenPoint: nextAnchor.screenPoint,\n surfaceLine: {\n ...draftSurfaceLine,\n endPoint: nextAnchor.surfaceLine.endPoint,\n endUv: nextAnchor.surfaceLine.endUv\n }\n };\n };\n\n const readUrdfPosePickerModelPoint = (runtime, picker) => {\n if (!runtime?.raycaster || !runtime?.modelGroup || !picker?.active) {\n return null;\n }\n return intersectUrdfPosePickerShell(runtime, picker);\n };\n\n const updateUrdfPosePickerHoverFromPointer = (event) => {\n const picker = urdfPosePickerRef.current;\n const runtime = runtimeRef.current;\n const canvas = runtime?.renderer?.domElement || mountRef.current;\n if (\n !picker?.active ||\n previewModeRef.current ||\n !runtime?.raycaster ||\n !runtime?.camera ||\n !canvas ||\n !isPointerInsideElement(event, canvas)\n ) {\n if (runtime) {\n runtime.urdfPosePickerPointerNdc = null;\n syncUrdfPosePickerHoverObjects(runtime, picker);\n if (canvas?.style) {\n canvas.style.cursor = \"auto\";\n }\n runtime.requestRender?.();\n }\n setUrdfPosePickerHoverActive(false);\n setUrdfPosePickerGuidePoint((current) => (current ? null : current));\n return null;\n }\n\n const rect = canvas.getBoundingClientRect();\n const width = rect.width || 1;\n const height = rect.height || 1;\n runtime.pointer.x = ((event.clientX - rect.left) / width) * 2 - 1;\n runtime.pointer.y = -((event.clientY - rect.top) / height) * 2 + 1;\n runtime.urdfPosePickerPointerNdc = { x: runtime.pointer.x, y: runtime.pointer.y };\n runtime.raycaster.setFromCamera(runtime.pointer, runtime.camera);\n\n const pick = readUrdfPosePickerModelPoint(runtime, picker);\n syncUrdfPosePickerHoverObjects(runtime, picker);\n if (canvas.style) {\n canvas.style.cursor = pick?.point ? \"pointer\" : \"crosshair\";\n }\n setUrdfPosePickerHoverActive(Boolean(pick?.point));\n setUrdfPosePickerGuidePoint((current) => {\n if (!pick?.point) {\n return current ? null : current;\n }\n const guidePoint = pick.point;\n if (\n Array.isArray(current) &&\n Math.hypot(current[0] - guidePoint[0], current[1] - guidePoint[1], current[2] - guidePoint[2]) < 0.001\n ) {\n return current;\n }\n return guidePoint;\n });\n runtime.requestRender?.();\n return pick;\n };\n\n const pickUrdfPosePoint = (event) => {\n const picker = urdfPosePickerRef.current;\n const runtime = runtimeRef.current;\n const canvas = runtime?.renderer?.domElement || mountRef.current;\n if (!picker?.active || !runtime?.raycaster || !runtime?.camera || !runtime?.modelGroup || !canvas) {\n return false;\n }\n\n const rect = canvas.getBoundingClientRect();\n const width = rect.width || 1;\n const height = rect.height || 1;\n runtime.pointer.x = ((event.clientX - rect.left) / width) * 2 - 1;\n runtime.pointer.y = -((event.clientY - rect.top) / height) * 2 + 1;\n runtime.urdfPosePickerPointerNdc = { x: runtime.pointer.x, y: runtime.pointer.y };\n runtime.raycaster.setFromCamera(runtime.pointer, runtime.camera);\n\n const pick = readUrdfPosePickerModelPoint(runtime, picker);\n if (!pick) {\n setUrdfPosePickerHoverActive(false);\n return false;\n }\n setUrdfPosePickerHoverActive(true);\n setUrdfPosePickerGuidePoint(pick.point);\n picker.onPickPoint?.({\n point: pick.point,\n source: pick.source\n });\n return true;\n };\n\n const handlePosePickerPointerDown = (event) => {\n const picker = urdfPosePickerRef.current;\n const runtime = runtimeRef.current;\n const canvas = runtime?.renderer?.domElement || mountRef.current;\n if (!picker?.active || previewModeRef.current || event.button !== 0 || !isPointerInsideElement(event, canvas)) {\n return;\n }\n posePickerPointerRef.current = {\n pointerId: event.pointerId,\n x: event.clientX,\n y: event.clientY\n };\n };\n\n const handlePosePickerPointerMove = (event) => {\n updateUrdfPosePickerHoverFromPointer(event);\n };\n\n const handlePosePickerPointerUp = (event) => {\n const pointerDown = posePickerPointerRef.current;\n posePickerPointerRef.current = null;\n const picker = urdfPosePickerRef.current;\n const runtime = runtimeRef.current;\n const canvas = runtime?.renderer?.domElement || mountRef.current;\n if (\n !picker?.active ||\n previewModeRef.current ||\n !pointerDown ||\n pointerDown.pointerId !== event.pointerId ||\n !isPointerInsideElement(event, canvas)\n ) {\n return;\n }\n const travel = Math.hypot(event.clientX - pointerDown.x, event.clientY - pointerDown.y);\n if (travel > 8) {\n return;\n }\n pickUrdfPosePoint(event);\n };\n\n const handlePosePickerPointerCancel = () => {\n const runtime = runtimeRef.current;\n posePickerPointerRef.current = null;\n if (runtime) {\n runtime.urdfPosePickerPointerNdc = null;\n syncUrdfPosePickerHoverObjects(runtime, urdfPosePickerRef.current);\n if (runtime.renderer?.domElement?.style) {\n runtime.renderer.domElement.style.cursor = \"auto\";\n }\n runtime.requestRender?.();\n }\n setUrdfPosePickerHoverActive(false);\n };\n\n const handlePosePickerPointerLeave = () => {\n const runtime = runtimeRef.current;\n posePickerPointerRef.current = null;\n if (runtime) {\n runtime.urdfPosePickerPointerNdc = null;\n syncUrdfPosePickerHoverObjects(runtime, urdfPosePickerRef.current);\n if (runtime.renderer?.domElement?.style) {\n runtime.renderer.domElement.style.cursor = \"auto\";\n }\n runtime.requestRender?.();\n }\n setUrdfPosePickerHoverActive(false);\n setUrdfPosePickerGuidePoint((current) => (current ? null : current));\n };\n\n const activateViewPlaneFace = (faceId) => {\n const runtime = runtimeRef.current;\n const face = VIEW_PLANE_FACE_BY_ID[faceId];\n if (!runtime || !face) {\n return false;\n }\n activeViewPlaneFaceRef.current = face.id;\n setActiveViewPlaneFace(face.id);\n const transitioned = transitionCameraToViewPreset(runtime, face);\n if (transitioned) {\n defaultPerspectiveResettingRef.current = false;\n setDefaultPerspectiveDetached(true);\n }\n return transitioned;\n };\n const activateDefaultViewPlane = () => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return false;\n }\n activeViewPlaneFaceRef.current = \"\";\n setActiveViewPlaneFace(\"\");\n const transitioned = transitionCameraToViewPreset(runtime, VIEW_PLANE_DEFAULT_PRESET);\n if (transitioned) {\n defaultPerspectiveResettingRef.current = true;\n setDefaultPerspectiveDetached(false);\n }\n return transitioned;\n };\n\n useImperativeHandle(ref, () => ({\n async captureScreenshot({ filename = \"cad-screenshot.png\", mode = \"download\" } = {}) {\n const runtime = runtimeRef.current;\n if (!runtime?.renderer || !runtime?.scene || !runtime?.camera) {\n throw new Error(\"CAD Viewer not ready\");\n }\n\n renderDrawingOverlay();\n const blobPromise = buildCompositeScreenshotBlob(runtime, drawingCanvasRef.current, {\n backgroundColor: mode === \"clipboard\"\n ? resolveElementBackgroundColor(runtime.renderer.domElement)\n : \"\",\n crop: getViewportFrameCrop(runtime, viewportFrameInsetsRef.current)\n });\n\n if (mode === \"clipboard\") {\n return await copyImageBlobToClipboard(blobPromise);\n }\n\n const blob = await blobPromise;\n return triggerBlobDownload(blob, { filename });\n },\n getPerspective() {\n return readScopedPerspectiveSnapshot(runtimeRef.current, {\n modelKey,\n sceneScaleMode: normalizedSceneScaleMode\n });\n },\n setPerspective(perspective, options = {}) {\n if (options?.animate) {\n return transitionCameraToPerspectiveSnapshot(runtimeRef.current, perspective, options);\n }\n return applyPerspectiveSnapshot(runtimeRef.current, perspective);\n },\n resetZoom() {\n return resetZoomAndPan({ animate: true });\n },\n zoomToFit({ animate = true } = {}) {\n const runtime = runtimeRef.current;\n const fitted = zoomRuntimeToBounds(\n runtime,\n runtime?.modelBounds || meshData?.bounds,\n sceneScaleModeRef.current,\n {\n animate,\n modelOffset: modelTransformRef.current.offset,\n resetZoomBaseline: true\n }\n );\n if (fitted && !animate) {\n emitPerspectiveChange(runtime);\n syncViewPlaneOrientation(runtime);\n }\n return fitted;\n },\n zoomToFitSelection({ partIds = [], referenceIds = [], animate = true } = {}) {\n const runtime = runtimeRef.current;\n const bounds = mergeBoundsList([\n selectorReferenceBounds(activeSelectorRuntime, referenceIds),\n displayRecordBoundsForPartIds(runtime, partIds)\n ]);\n const fitted = zoomRuntimeToBounds(\n runtime,\n bounds,\n sceneScaleModeRef.current,\n {\n animate,\n modelOffset: modelTransformRef.current.offset,\n resetZoomBaseline: false\n }\n );\n if (fitted && !animate) {\n emitPerspectiveChange(runtime);\n syncViewPlaneOrientation(runtime);\n }\n return fitted;\n },\n focusViewPreset(faceId) {\n return activateViewPlaneFace(faceId);\n }\n }), [\n activeSelectorRuntime,\n meshData?.bounds,\n modelKey,\n normalizedSceneScaleMode,\n resetZoomAndPan,\n syncCameraZoomPercent,\n syncViewPlaneOrientation\n ]);\n\n useEffect(() => {\n previewModeRef.current = previewMode;\n }, [previewMode]);\n\n useEffect(() => {\n drawingChangeRef.current = onDrawingStrokesChange;\n }, [onDrawingStrokesChange]);\n\n useEffect(() => {\n perspectiveChangeRef.current = onPerspectiveChange;\n }, [onPerspectiveChange]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return undefined;\n }\n runtime.onZoomChange = syncCameraZoomPercent;\n syncCameraZoomPercent(runtime);\n return () => {\n if (runtime.onZoomChange === syncCameraZoomPercent) {\n runtime.onZoomChange = null;\n }\n };\n }, [syncCameraZoomPercent, viewerReadyTick]);\n\n useEffect(() => {\n viewerAlertChangeRef.current = onViewerAlertChange;\n }, [onViewerAlertChange]);\n\n useEffect(() => {\n stepModuleTransformDetectedChangeRef.current = onStepModuleTransformDetectedChange;\n }, [onStepModuleTransformDetectedChange]);\n\n useEffect(() => {\n urdfPosePickerRef.current = urdfPosePicker;\n }, [urdfPosePicker]);\n\n useEffect(() => {\n setTransformedSelectorRuntime(null);\n }, [modelKey, selectorRuntime]);\n\n useEffect(() => {\n setTransformedDisplayEdgeRuntime(null);\n }, [modelKey, displayEdgeRuntime]);\n\n useEffect(() => {\n selectorRuntimeRef.current = activeSelectorRuntime;\n }, [activeSelectorRuntime]);\n\n useEffect(() => {\n displayEdgeRuntimeRef.current = activeDisplayEdgeRuntime;\n }, [activeDisplayEdgeRuntime]);\n\n useEffect(() => {\n clipSettingsRef.current = normalizedClipSettings;\n const runtime = runtimeRef.current;\n if (!runtime?.THREE) {\n return;\n }\n syncRuntimeStepClipPlane(runtime, normalizedClipSettings);\n runtime.requestRender?.();\n }, [\n viewerReadyTick,\n meshData?.bounds,\n normalizedClipSettings.axis,\n normalizedClipSettings.enabled,\n normalizedClipSettings.invert,\n normalizedClipSettings.offset\n ]);\n\n useEffect(() => {\n if (urdfPosePicker?.active) {\n return;\n }\n const runtime = runtimeRef.current;\n if (runtime) {\n runtime.urdfPosePickerPointerNdc = null;\n if (runtime.renderer?.domElement?.style) {\n runtime.renderer.domElement.style.cursor = \"auto\";\n }\n }\n setUrdfPosePickerHoverActive(false);\n setUrdfPosePickerGuidePoint(null);\n }, [urdfPosePicker?.active]);\n\n useEffect(() => {\n drawingStrokesRef.current = Array.isArray(drawingStrokes) ? drawingStrokes : [];\n drawingIdRef.current = Math.max(drawingIdRef.current, maxDrawingStrokeOrdinal(drawingStrokesRef.current));\n renderDrawingOverlay();\n }, [drawingStrokes]);\n\n const handleRuntimeContextRestored = useCallback(() => {\n framedModelKeyRef.current = \"\";\n lastEmittedPerspectiveRef.current = null;\n defaultPerspectiveResettingRef.current = false;\n viewerAlertChangeRef.current?.(null);\n setDefaultPerspectiveDetached(false);\n setRuntimeResetToken((value) => value + 1);\n }, []);\n\n const handleRuntimeInitializationError = useCallback((runtimeError) => {\n viewerAlertChangeRef.current?.(buildRuntimeInitializationAlert(runtimeError));\n }, []);\n\n useViewerRuntime({\n mountRef,\n runtimeRef,\n previewModeRef,\n setError,\n setViewerReadyTick,\n viewerTheme,\n syncDrawingCanvasSize,\n renderDrawingOverlay,\n emitPerspectiveChange,\n setActiveViewPlaneFace,\n activeViewPlaneFaceRef,\n stepCameraTransition,\n stepKeyboardOrbit,\n getActiveViewPlaneFaceId,\n cancelCameraTransition,\n clearKeyboardOrbitState,\n isTrackpadLikeWheelEvent,\n getKeyboardOrbitCommand,\n getKeyboardOrbitAxes,\n applyOrbitDelta,\n getViewerThemeValue,\n getPixelRatioCap,\n applySceneBackground,\n applyCameraFrameInsets,\n frameInsetsRef: viewportFrameInsetsRef,\n applyInitialPerspective,\n updateGridHelper: updateActiveGridHelper,\n clearSceneGroup,\n disposeSceneObject,\n disposeTexture,\n syncViewPlaneOrientation,\n BASE_VIEWER_THEME,\n DEFAULT_LIGHTING,\n DEFAULT_DAMPING_FACTOR,\n DEFAULT_ZOOM_SPEED,\n COARSE_POINTER_ZOOM_SPEED,\n INTERACTION_PIXEL_RATIO_CAP,\n IDLE_PIXEL_RATIO_CAP,\n INTERACTION_IDLE_DELAY_MS,\n TRACKPAD_PINCH_ZOOM_SPEED,\n COARSE_POINTER_PINCH_ZOOM_SPEED,\n ACCELERATED_WHEEL_ZOOM_SPEED,\n KEYBOARD_ORBIT_NUDGE_RAD,\n defaultGridRadius,\n sceneScaleMode: normalizedSceneScaleMode,\n floorMode: resolvedFloorMode,\n onInitializationError: handleRuntimeInitializationError,\n onContextRestored: handleRuntimeContextRestored,\n preserveInteractionPixelRatio,\n runtimeResetToken\n });\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n runtime.sceneScaleMode = normalizedSceneScaleMode;\n }, [normalizedSceneScaleMode]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n const previousProjection = lastProjectionRef.current;\n lastProjectionRef.current = normalizedProjection;\n const projectionChanged = previousProjection !== normalizedProjection;\n if (!syncRuntimeCameraProjection(runtime, normalizedProjection, projectionChanged ? {\n scheduleIdle: false,\n requestRender: false\n } : undefined)) {\n return;\n }\n emitPerspectiveChange(runtime);\n syncViewPlaneOrientation(runtime);\n // NOTE: syncViewPlaneOrientation is an unmemoized closure (new identity every\n // render), so listing it here re-ran this effect on every render. During a\n // preview orbit that became a self-sustaining cascade (each run calls\n // syncRuntimeCameraProjection -> emitPerspectiveChange/syncViewPlaneOrientation ->\n // setState -> re-render), tens of times per frame. This effect only needs to run\n // when the projection or viewer readiness changes, like the already-omitted\n // emitPerspectiveChange dependency above.\n }, [normalizedProjection, viewerReadyTick]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n\n applySceneBackground(runtime, viewerTheme, normalizedThemeSettings.background);\n runtime.renderer.toneMappingExposure = Math.max(normalizedThemeSettings.lighting.toneMappingExposure, 0.05);\n\n runtime.hemisphereLight.visible = normalizedThemeSettings.lighting.hemisphere.enabled;\n runtime.hemisphereLight.color.set(normalizedThemeSettings.lighting.hemisphere.skyColor);\n runtime.hemisphereLight.groundColor.set(normalizedThemeSettings.lighting.hemisphere.groundColor);\n runtime.hemisphereLight.intensity = normalizedThemeSettings.lighting.hemisphere.intensity;\n\n runtime.ambientLight.visible = normalizedThemeSettings.lighting.ambient.enabled;\n runtime.ambientLight.color.set(normalizedThemeSettings.lighting.ambient.color);\n runtime.ambientLight.intensity = normalizedThemeSettings.lighting.ambient.intensity;\n\n runtime.keyLight.visible = normalizedThemeSettings.lighting.directional.enabled;\n runtime.keyLight.color.set(normalizedThemeSettings.lighting.directional.color);\n runtime.keyLight.intensity = normalizedThemeSettings.lighting.directional.intensity;\n\n const fillIntensity = getViewerThemeNumber(viewerTheme, \"fillLightIntensity\", DEFAULT_LIGHTING.fillLightIntensity);\n runtime.fillLight.visible = fillIntensity > 0.0001;\n runtime.fillLight.color.set(getViewerThemeValue(viewerTheme, \"fillLightColor\", DEFAULT_LIGHTING.fillLightColor));\n runtime.fillLight.intensity = Math.max(fillIntensity, 0);\n\n const rimIntensity = getViewerThemeNumber(viewerTheme, \"rimLightIntensity\", DEFAULT_LIGHTING.rimLightIntensity);\n runtime.rimLight.visible = rimIntensity > 0.0001;\n runtime.rimLight.color.set(getViewerThemeValue(viewerTheme, \"rimLightColor\", DEFAULT_LIGHTING.rimLightColor));\n runtime.rimLight.intensity = Math.max(rimIntensity, 0);\n\n runtime.spotLight.visible = normalizedThemeSettings.lighting.spot.enabled;\n runtime.spotLight.color.set(normalizedThemeSettings.lighting.spot.color);\n runtime.spotLight.intensity = normalizedThemeSettings.lighting.spot.intensity;\n runtime.spotLight.angle = normalizedThemeSettings.lighting.spot.angle;\n\n runtime.pointLight.visible = normalizedThemeSettings.lighting.point.enabled;\n runtime.pointLight.color.set(normalizedThemeSettings.lighting.point.color);\n runtime.pointLight.intensity = normalizedThemeSettings.lighting.point.intensity;\n syncRuntimeScaledLightingAndShadow(\n runtime.THREE,\n runtime,\n normalizedThemeSettings.lighting,\n runtime.modelRadius ?? runtime.gridRadius ?? defaultGridRadius,\n runtime.modelBounds,\n normalizedSceneScaleMode\n );\n updateSpotLightTarget(runtime);\n\n // Keep a single primary shadow; the spot light drives the floor glow/fill.\n runtime.keyLight.castShadow = runtime.keyLight.visible;\n runtime.spotLight.castShadow = false;\n\n const materialSettings = {\n ...normalizedThemeSettings.materials,\n envMapIntensity: normalizedThemeSettings.materials.envMapIntensity * (\n normalizedThemeSettings.environment.enabled ? normalizedThemeSettings.environment.intensity : 0\n )\n };\n for (const record of runtime.displayRecords || []) {\n applyMaterialSettingsToRecord(runtime.THREE, record, materialSettings, {\n displayMode: normalizedDisplayMode\n });\n }\n\n runtime.gridConfig = null;\n updateActiveGridHelper(\n runtime,\n viewerTheme,\n runtime.gridRadius ?? defaultGridRadius,\n runtime.gridFloorZ ?? 0,\n normalizedSceneScaleMode,\n resolvedFloorMode\n );\n updateSpotLightTarget(runtime);\n if (runtime.hasVisibleModel) {\n updateStageEffects(\n runtime,\n viewerTheme,\n normalizedThemeSettings,\n runtime.gridRadius ?? defaultGridRadius,\n runtime.gridFloorZ ?? 0,\n resolvedFloorMode,\n normalizedSceneScaleMode\n );\n } else {\n clearSceneGroup(runtime.stageGroup);\n }\n runtime.requestRender();\n }, [\n defaultGridRadius,\n normalizedDisplayMode,\n normalizedThemeSettings,\n normalizedSceneScaleMode,\n resolvedFloorMode,\n viewerReadyTick,\n viewerTheme,\n updateActiveGridHelper\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.scene) {\n return;\n }\n\n let cancelled = false;\n const environmentSettings = normalizedThemeSettings.environment;\n const clearEnvironmentTexture = () => {\n runtime.scene.environment = null;\n disposeTexture(runtime.environmentTexture);\n runtime.environmentTexture = null;\n runtime.environmentTextureUrl = \"\";\n };\n const applyBackgroundFallback = () => {\n clearEnvironmentTexture();\n applySceneBackground(runtime, viewerTheme, normalizedThemeSettings.background);\n runtime.requestRender();\n };\n\n const loadAndApplyEnvironment = async () => {\n if (!environmentSettings.enabled) {\n viewerAlertChangeRef.current?.(null);\n applyBackgroundFallback();\n return;\n }\n\n const preset = getEnvironmentPresetById(environmentSettings.presetId);\n const textureUrl = String(preset?.url || \"\").trim();\n if (!textureUrl) {\n viewerAlertChangeRef.current?.(null);\n applyBackgroundFallback();\n return;\n }\n\n if (!runtime.environmentTexture || runtime.environmentTextureUrl !== textureUrl) {\n const textureLoader = new runtime.THREE.TextureLoader();\n if (typeof textureLoader.setCrossOrigin === \"function\") {\n textureLoader.setCrossOrigin(\"anonymous\");\n }\n const nextTexture = await textureLoader.loadAsync(textureUrl);\n if (cancelled) {\n nextTexture.dispose?.();\n return;\n }\n nextTexture.mapping = runtime.THREE.EquirectangularReflectionMapping;\n nextTexture.colorSpace = runtime.THREE.SRGBColorSpace;\n nextTexture.needsUpdate = true;\n disposeTexture(runtime.environmentTexture);\n runtime.environmentTexture = nextTexture;\n runtime.environmentTextureUrl = textureUrl;\n }\n\n runtime.scene.environment = runtime.environmentTexture;\n viewerAlertChangeRef.current?.(null);\n\n if (runtime.scene.environmentRotation?.set) {\n runtime.scene.environmentRotation.set(0, environmentSettings.rotationY, 0);\n }\n if (environmentSettings.useAsBackground) {\n runtime.scene.background = runtime.environmentTexture;\n if (runtime.scene.backgroundRotation?.set) {\n runtime.scene.backgroundRotation.set(0, environmentSettings.rotationY, 0);\n }\n } else {\n applySceneBackground(runtime, viewerTheme, normalizedThemeSettings.background);\n }\n runtime.requestRender();\n };\n\n loadAndApplyEnvironment().catch((error) => {\n if (!cancelled) {\n applyBackgroundFallback();\n viewerAlertChangeRef.current?.({\n severity: \"warning\",\n summary: \"Environment unavailable\",\n title: \"Environment preset could not be loaded\",\n message: `Failed to load ${String(getEnvironmentPresetById(environmentSettings.presetId)?.label || \"the selected environment preset\")}.`,\n resolution: \"The viewer fell back to the current background settings. Check the network connection or choose another preset.\"\n });\n console.error(\"Failed to apply environment texture\", error);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [viewerReadyTick, viewerTheme, normalizedThemeSettings.background, normalizedThemeSettings.environment]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n\n if (runtime.interactionState.restoreTimerId) {\n window.clearTimeout(runtime.interactionState.restoreTimerId);\n runtime.interactionState.restoreTimerId = 0;\n }\n clearKeyboardOrbitState(runtime.keyboardOrbitState);\n runtime.previewOrbitEnabled = !!previewMode;\n runtime.orbitControlsLastTimestamp = 0;\n runtime.controls.autoRotate = !!previewMode;\n runtime.controls.autoRotateSpeed = PREVIEW_AUTO_ROTATE_SPEED;\n runtime.controls.enabled = true;\n runtime.controls.enableDamping = true;\n runtime.controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n if (previewMode) {\n cancelCameraTransition(runtime, { scheduleIdle: false });\n runtime.beginInteraction?.();\n } else {\n runtime.scheduleIdleQuality();\n }\n runtime.requestRender();\n }, [previewMode, viewerReadyTick]);\n\n const urdfPosePickerInteractionActive = Boolean(urdfPosePicker?.active && !previewMode);\n const urdfPosePickerCursor = urdfPosePickerInteractionActive\n ? (urdfPosePickerHoverActive ? \"pointer\" : \"crosshair\")\n : undefined;\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!urdfPosePicker?.active || !runtime?.controls) {\n return;\n }\n runtime.controls.enabled = true;\n runtime.controls.enableDamping = true;\n runtime.controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n runtime.requestRender();\n }, [urdfPosePicker?.active, viewerReadyTick]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n const canvas = runtime?.renderer?.domElement;\n if (!urdfPosePickerInteractionActive || !canvas) {\n return;\n }\n const handleCanvasPointerMove = (event) => {\n updateUrdfPosePickerHoverFromPointer(event);\n };\n const handleCanvasPointerLeave = () => {\n handlePosePickerPointerLeave();\n };\n canvas.addEventListener(\"pointermove\", handleCanvasPointerMove, { passive: true });\n canvas.addEventListener(\"pointerleave\", handleCanvasPointerLeave);\n return () => {\n canvas.removeEventListener(\"pointermove\", handleCanvasPointerMove);\n canvas.removeEventListener(\"pointerleave\", handleCanvasPointerLeave);\n };\n }, [urdfPosePickerInteractionActive, viewerReadyTick]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n\n const {\n THREE,\n modelGroup,\n edgesGroup,\n facePickGroup,\n edgePickGroup,\n vertexPickGroup\n } = runtime;\n\n const clearDisplayedModel = () => {\n cancelCameraTransition(runtime);\n runtime.cadScene?.dispose?.();\n runtime.cadScene = null;\n clearSceneGroup(runtime.stageGroup);\n clearSceneGroup(modelGroup);\n clearSceneGroup(edgesGroup);\n clearSceneGroup(facePickGroup);\n clearSceneGroup(edgePickGroup);\n clearSceneGroup(vertexPickGroup);\n runtime.facePickMesh = null;\n runtime.edgePickLines = null;\n runtime.vertexPickPoints = null;\n runtime.edgePickObjects = [];\n runtime.topologyDisplayEdgeLine = null;\n runtime.topologyDisplayEdgeTransformByRecord = false;\n runtime.displayRecords = [];\n runtime.hasVisibleModel = false;\n runtime.activeModelKey = \"\";\n runtime.requestRender();\n };\n\n if (isLoading) {\n clearDisplayedModel();\n setError(\"\");\n return;\n }\n\n if (!meshData || !isNumericArray(meshData.vertices, 3) || !isNumericArray(meshData.indices, 3)) {\n clearDisplayedModel();\n return;\n }\n\n clearDisplayedModel();\n\n const { controls } = runtime;\n const hasFillRotation = normalizedThemeSettings.materials.cycleColors === true &&\n Array.isArray(normalizedThemeSettings.materials.fillColors) &&\n normalizedThemeSettings.materials.fillColors.length > 1;\n const shouldRenderFillParts = hasFillRotation &&\n Array.isArray(meshData?.parts) &&\n meshData.parts.length > 0;\n const shouldRenderSourceColorParts =\n !wireframeMode &&\n normalizedThemeSettings.materials?.overrideSourceColors !== true &&\n meshNeedsPartRenderingForSourceColors(meshData);\n const shouldRenderParts =\n effectiveRenderPartsIndividually ||\n shouldRenderFillParts ||\n shouldRenderSourceColorParts ||\n Array.isArray(pickableParts) &&\n pickableParts.length > 0 &&\n (\n pickMode === VIEWER_PICK_MODE.PARTS ||\n pickMode === VIEWER_PICK_MODE.ASSEMBLY ||\n pickMode === VIEWER_PICK_MODE.AUTO\n );\n const renderedParts = effectiveRenderPartsIndividually\n ? (Array.isArray(meshData?.parts) ? meshData.parts : [])\n : shouldRenderFillParts || shouldRenderSourceColorParts\n ? meshData.parts\n : pickableParts;\n const materialSettings = {\n ...normalizedThemeSettings.materials,\n envMapIntensity: normalizedThemeSettings.materials.envMapIntensity * (\n normalizedThemeSettings.environment.enabled ? normalizedThemeSettings.environment.intensity : 0\n )\n };\n const modelStepParameters = stepParameterRuntime?.definition\n ? {\n ...stepParameterRuntime,\n selectorRuntime\n }\n : null;\n\n const sceneTheme = wireframeMode\n ? {\n ...normalizedThemeSettings,\n edges: {\n ...visualEdgeSettings,\n enabled: true\n }\n }\n : (displayEdgesVisible || surfaceStepEdgesVisible)\n ? {\n ...normalizedThemeSettings,\n edges: {\n ...visualEdgeSettings\n }\n }\n : {\n ...normalizedThemeSettings,\n edges: {\n enabled: false\n }\n };\n const cadScene = buildModel(THREE, meshData, {\n theme: sceneTheme,\n displayMode: normalizedDisplayMode,\n applyDisplayModeEdgePolicy: !topologyDisplayEdgesVisible,\n scale: normalizedSceneScaleMode,\n baseTheme: viewerTheme,\n materialSettings,\n recomputeNormals,\n silhouette: topologyDisplayEdgesVisible && displayEdgeSettings.silhouette === true,\n parts: shouldRenderParts ? renderedParts : [],\n renderPartsIndividually: effectiveRenderPartsIndividually,\n stepParameters: modelStepParameters,\n parameterSetup: false,\n edgeRendering: {\n mode: \"screen-space\",\n Line2: runtime.Line2,\n LineGeometry: runtime.LineGeometry,\n LineSegments2: runtime.LineSegments2,\n LineSegmentsGeometry: runtime.LineSegmentsGeometry,\n LineMaterial: runtime.LineMaterial,\n wireframeEdgeColor\n },\n selection: shouldRenderParts\n ? partVisualStateRef.current\n : {\n ...partVisualStateRef.current,\n hiddenPartIds: [],\n hoveredPartId: \"\",\n focusedPartId: [],\n selectedPartIds: []\n },\n clip: clipSettingsRef.current,\n callbacks: {\n faceIdsForPart: (part) => buildGlbFaceIdsForPart(part, selectorRuntime),\n faceIdsForMesh: () => buildGlbFaceIdsForMesh(meshData, selectorRuntime),\n onWarning: (warning) => {\n viewerAlertChangeRef.current?.({\n severity: \"warning\",\n compact: true,\n title: warning?.title || \"CAD scene warning\",\n message: warning?.message || \"The CAD scene renderer reported a warning.\"\n });\n }\n }\n });\n modelGroup.add(cadScene.modelGroup);\n edgesGroup.add(cadScene.edgesGroup);\n runtime.cadScene = cadScene;\n runtime.displayRecords = cadScene.displayRecords;\n runtime.hasVisibleModel = true;\n runtime.activeModelKey = modelKey || \"\";\n const initialEdgeRuntimes = resolveTopologyDisplayEdgeRuntimes({\n selectorRuntime,\n displayEdgeRuntime,\n displayRecords: modelStepParameters ? runtime.displayRecords : [],\n transformDisplayEdges: false\n });\n const initialRecordTopologyEdgeTransforms = explodedViewActive || shouldUseRecordTopologyEdgeTransforms({\n transformDetected: initialEdgeRuntimes.transformCount > 0,\n topologyDisplayEdgesVisible,\n displayEdgeRuntime,\n displayRecords: runtime.displayRecords\n });\n const initialDisplayEdgeRuntime = initialRecordTopologyEdgeTransforms\n ? null\n : resolveTopologyDisplayEdgeRuntimes({\n selectorRuntime: null,\n displayEdgeRuntime,\n displayRecords: modelStepParameters ? runtime.displayRecords : []\n }).transformedDisplayEdgeRuntime;\n const initialSelectorRuntime = initialEdgeRuntimes.transformedSelectorRuntime;\n updateTransformedRuntimeState(setTransformedSelectorRuntime, initialSelectorRuntime ? {\n base: selectorRuntime,\n runtime: initialSelectorRuntime\n } : null);\n updateTransformedRuntimeState(setTransformedDisplayEdgeRuntime, initialDisplayEdgeRuntime ? {\n base: displayEdgeRuntime,\n runtime: initialDisplayEdgeRuntime\n } : null);\n stepModuleTransformDetectedChangeRef.current?.(initialEdgeRuntimes.transformCount > 0);\n const displaySelectorRuntime = initialEdgeRuntimes.selectorRuntime;\n const displayEdgesRuntime = initialRecordTopologyEdgeTransforms\n ? displayEdgeRuntime\n : (initialDisplayEdgeRuntime || initialEdgeRuntimes.topologyRuntime);\n runtime.topologyDisplayEdgeTransformByRecord = initialRecordTopologyEdgeTransforms;\n\n syncTopologyDisplayEdgeLine(runtime, displayEdgesRuntime, {\n visible: topologyDisplayEdgesVisible,\n edgeSettings: hiddenAwareVisualEdgeSettings,\n focusedPartIds,\n viewerTheme,\n dimmedOpacity: FOCUSED_DIMMED_SURFACE_OPACITY,\n transformByRecord: initialRecordTopologyEdgeTransforms,\n displayRecords: runtime.displayRecords,\n syncClip: (activeRuntime) => syncRuntimeStepClipPlane(activeRuntime, clipSettingsRef.current)\n });\n\n const displayBounds = cadScene.bounds || meshData.bounds;\n const boundsMin = Array.isArray(displayBounds?.min) ? displayBounds.min : [0, 0, 0];\n const boundsMax = Array.isArray(displayBounds?.max) ? displayBounds.max : [0, 0, 0];\n const center = new THREE.Vector3(\n (toNumber(boundsMin[0]) + toNumber(boundsMax[0])) / 2,\n (toNumber(boundsMin[1]) + toNumber(boundsMax[1])) / 2,\n (toNumber(boundsMin[2]) + toNumber(boundsMax[2])) / 2\n );\n const previousTransform = modelTransformRef.current;\n if (\n previousTransform.modelKey !== modelKey ||\n previousTransform.sceneScaleMode !== normalizedSceneScaleMode ||\n !previousTransform.offset\n ) {\n previousTransform.modelKey = modelKey || \"\";\n previousTransform.sceneScaleMode = normalizedSceneScaleMode;\n previousTransform.offset = new THREE.Vector3(-center.x, -center.y, -center.z);\n previousTransform.floorZ = resolveRuntimeModelFloorZ(\n displayBounds,\n previousTransform.offset,\n normalizedSceneScaleMode\n );\n }\n const modelOffset = previousTransform.offset;\n const floorZ = Number.isFinite(Number(previousTransform.floorZ))\n ? Number(previousTransform.floorZ)\n : resolveRuntimeModelFloorZ(displayBounds, modelOffset, normalizedSceneScaleMode);\n const { radius } = applyRuntimeModelBounds(THREE, runtime, displayBounds, normalizedSceneScaleMode);\n syncRuntimeScaledLightingAndShadow(\n THREE,\n runtime,\n normalizedThemeSettings.lighting,\n radius,\n displayBounds,\n normalizedSceneScaleMode\n );\n updateActiveGridHelper(\n runtime,\n viewerTheme,\n radius,\n floorZ,\n normalizedSceneScaleMode,\n resolvedFloorMode\n );\n updateSpotLightTarget(runtime);\n updateStageEffects(runtime, viewerTheme, normalizedThemeSettings, radius, runtime.gridFloorZ ?? 0, resolvedFloorMode, normalizedSceneScaleMode);\n\n modelGroup.position.copy(modelOffset);\n edgesGroup.position.copy(modelOffset);\n facePickGroup.position.copy(modelOffset);\n edgePickGroup.position.copy(modelOffset);\n vertexPickGroup.position.copy(modelOffset);\n facePickGroup.updateMatrixWorld(true);\n edgePickGroup.updateMatrixWorld(true);\n vertexPickGroup.updateMatrixWorld(true);\n syncSelectorPickGroups(runtime, displaySelectorRuntime, modelOffset, { clearSceneGroup });\n syncRuntimeStepClipPlane(runtime, clipSettingsRef.current);\n\n const currentPartVisualState = partVisualStateRef.current;\n applyPartVisualState(THREE, runtime.displayRecords, shouldRenderParts\n ? currentPartVisualState\n : {\n ...currentPartVisualState,\n hiddenPartIds: [],\n hoveredPartId: \"\",\n focusedPartId: [],\n selectedPartIds: []\n });\n modelGroup.updateMatrixWorld(true);\n edgesGroup.updateMatrixWorld(true);\n\n syncRuntimeCameraClipPlanes(runtime, Math.max(radius / 1200, 0.01), Math.max(radius * 600, 2000));\n applyCameraFrameInsets(runtime, viewportFrameInsetsRef.current, { updateProjection: false });\n controls.minDistance = Math.max(radius / 2200, 0.02);\n controls.maxDistance = Math.max(radius * 140, 50);\n controls.zoomSpeed = DEFAULT_ZOOM_SPEED;\n runtime.edgePickThreshold = Math.max(radius / 320, 0.65);\n\n if (framedModelKeyRef.current !== (modelKey || \"\")) {\n const nextPerspective = resolvePerspectiveSnapshot(\n perspectiveRef ? perspectiveRef.current : undefined,\n perspective\n );\n const nextPerspectiveMatchesScene = perspectiveSnapshotMatchesScene(nextPerspective, {\n modelKey,\n sceneScaleMode: normalizedSceneScaleMode,\n coordinateSystem: coordinateSystemForSceneScale(normalizedSceneScaleMode),\n requireModelKey: true,\n requireSceneScaleMode: true,\n requireCoordinateSystem: true\n });\n runWithoutPerspectiveEvents(() => {\n if (\n !nextPerspectiveMatchesScene ||\n !applyPerspectiveSnapshot(runtime, nextPerspective, { scheduleIdle: false })\n ) {\n cancelCameraTransition(runtime);\n const frameMetrics = getViewportFrameMetrics(runtime, viewportFrameInsetsRef.current);\n const camera = runtime.camera;\n const fitDistance = frameRuntimeCameraForBoundingSphere(runtime, radius, normalizedSceneScaleMode, frameMetrics);\n const viewDirection = new THREE.Vector3(...DEFAULT_VIEW_DIRECTION).normalize();\n camera.zoom = 1;\n camera.up.set(...WORLD_UP);\n frameRuntimeCameraForBoundingSphere(runtime, radius, normalizedSceneScaleMode, frameMetrics);\n applyCameraFrameInsets(runtime, viewportFrameInsetsRef.current, { updateProjection: false });\n camera.position.copy(viewDirection.multiplyScalar(fitDistance));\n controls.target.set(0, 0, 0);\n camera.lookAt(controls.target);\n controls.update();\n runtime.requestRender();\n }\n });\n resetRuntimeZoomBaseline(runtime);\n syncCameraZoomPercent(runtime);\n framedModelKeyRef.current = modelKey || \"\";\n lastEmittedPerspectiveRef.current = readScopedPerspectiveSnapshot(runtime, {\n modelKey,\n sceneScaleMode: normalizedSceneScaleMode\n });\n }\n\n setError(\"\");\n runtime.requestRender();\n }, [\n meshGeometrySource,\n modelKey,\n perspective,\n perspectiveRef,\n displayEdgesVisible,\n surfaceStepEdgesVisible,\n topologyDisplayEdgesVisible,\n recomputeNormals,\n isLoading,\n viewerReadyTick,\n pickMode,\n effectiveRenderPartsIndividually,\n explodedViewActive,\n pickableParts,\n selectorRuntime,\n displayEdgeRuntime,\n normalizedDisplayMode,\n normalizedSceneScaleMode,\n resolvedFloorMode,\n viewerTheme,\n normalizedThemeSettings.lighting,\n normalizedThemeSettings.materials,\n normalizedThemeSettings.environment,\n displayEdgeSettings,\n hiddenAwareVisualEdgeSettings,\n visualEdgeSettings,\n syncCameraZoomPercent,\n wireframeEdgeColor,\n updateActiveGridHelper\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (\n !runtime?.THREE ||\n isLoading ||\n !effectiveRenderPartsIndividually ||\n !Array.isArray(meshData?.parts) ||\n !Array.isArray(runtime.displayRecords) ||\n !runtime.displayRecords.length\n ) {\n return;\n }\n\n const partsById = new Map(\n meshData.parts.map((part) => [String(part?.id || \"\"), part]).filter(([partId]) => partId)\n );\n let updated = false;\n for (const record of runtime.displayRecords) {\n const part = partsById.get(String(record?.partId || \"\"));\n if (!part) {\n continue;\n }\n record.baseTransform = displayTransformForPart(meshData, part, effectiveRenderPartsIndividually);\n record.partBounds = part.bounds;\n record.partCenter = readBoundsCenter(runtime.THREE, part.bounds);\n applyDisplayRecordTransform(runtime.THREE, record, runtime.modelRadius || 1);\n updated = true;\n }\n\n if (!updated) {\n return;\n }\n\n const { radius } = applyRuntimeModelBounds(runtime.THREE, runtime, meshData.bounds, normalizedSceneScaleMode);\n syncRuntimeScaledLightingAndShadow(\n runtime.THREE,\n runtime,\n normalizedThemeSettings.lighting,\n radius,\n meshData.bounds,\n normalizedSceneScaleMode\n );\n const floorZ = Number.isFinite(Number(modelTransformRef.current.floorZ))\n ? Number(modelTransformRef.current.floorZ)\n : resolveRuntimeModelFloorZ(\n meshData.bounds,\n runtime.modelGroup?.position,\n normalizedSceneScaleMode\n );\n updateActiveGridHelper(\n runtime,\n viewerTheme,\n radius,\n floorZ,\n normalizedSceneScaleMode,\n resolvedFloorMode\n );\n updateSpotLightTarget(runtime);\n updateStageEffects(runtime, viewerTheme, normalizedThemeSettings, radius, runtime.gridFloorZ ?? 0, resolvedFloorMode, normalizedSceneScaleMode);\n runtime.requestRender();\n }, [\n meshData?.parts,\n meshData?.bounds,\n isLoading,\n effectiveRenderPartsIndividually,\n normalizedSceneScaleMode,\n normalizedThemeSettings,\n resolvedFloorMode,\n viewerTheme,\n viewerReadyTick,\n updateActiveGridHelper\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n\n applyPartVisualState(runtime.THREE, runtime.displayRecords, partVisualStateRef.current);\n runtime.requestRender();\n }, [viewerReadyTick, partVisualStateEnabled, recordEdgesVisible, focusedPartIds, hiddenPartIds, hoveredPartId, pickMode, pickableParts, selectedPartIds, viewerTheme, visualEdgeSettings, normalizedDisplayMode]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n const definition = stepParameterRuntime?.definition || null;\n const module = definition?.module || null;\n const cleanups = [];\n stepModuleCleanupRef.current = cleanups;\n const runCleanups = () => {\n while (cleanups.length) {\n const cleanup = cleanups.pop();\n try {\n cleanup?.();\n } catch (error) {\n console.error(\"STEP parameter cleanup failed\", error);\n }\n }\n };\n\n if (!runtime?.THREE || !definition || isLoading || !meshData) {\n return runCleanups;\n }\n\n const features = resolveStepModuleFeatures(definition, {\n meshData,\n selectorRuntime: selectorRuntimeRef.current\n });\n const ctx = buildStepModuleContext({\n runtime,\n stepModuleRuntime: stepParameterRuntime,\n features,\n effects: createStepModuleEffectsApi(runtime.THREE, {\n meshData,\n features,\n runtime,\n effectsByPartId: new Map()\n }),\n cleanup: (cleanup) => {\n if (typeof cleanup === \"function\") {\n cleanups.push(cleanup);\n }\n }\n });\n\n try {\n module?.setup?.(ctx);\n } catch (error) {\n viewerAlertChangeRef.current?.({\n severity: \"warning\",\n compact: true,\n title: \"STEP parameter setup failed\",\n message: error instanceof Error ? error.message : String(error)\n });\n console.error(\"STEP parameter setup failed\", error);\n }\n\n return () => {\n runCleanups();\n try {\n module?.dispose?.(ctx);\n } catch (error) {\n console.error(\"STEP parameter dispose failed\", error);\n }\n };\n }, [\n viewerReadyTick,\n isLoading,\n meshData,\n modelKey,\n selectorRuntime,\n stepParameterRuntime?.definition,\n stepParameterRuntime?.sourceUrl\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !Array.isArray(runtime.displayRecords) || !runtime.displayRecords.length) {\n return;\n }\n\n const definition = stepParameterRuntime?.definition || null;\n const module = definition?.module || null;\n if (!definition || isLoading || !meshData) {\n stepModuleTransformDetectedChangeRef.current?.(false);\n updateTransformedRuntimeState(setTransformedSelectorRuntime, null);\n updateTransformedRuntimeState(setTransformedDisplayEdgeRuntime, null);\n runtime.topologyDisplayEdgeTransformByRecord = explodedViewActive;\n resetStepModuleRecordEffects(runtime.displayRecords);\n for (const record of runtime.displayRecords) {\n applyDisplayRecordTransform(runtime.THREE, record, runtime.modelRadius || 1);\n }\n applyPartVisualState(runtime.THREE, runtime.displayRecords, partVisualStateRef.current);\n const baseTopologyDisplayEdgesVisible = shouldRenderTopologyDisplayEdges({\n edgesVisible,\n wireframeMode,\n cadEdgeSource: shouldUseCadEdgeSource,\n displayEdgeRuntime,\n selectorRuntime,\n edgeSettings: visualEdgeSettings\n });\n syncTopologyDisplayEdgeLine(runtime, displayEdgeRuntime || selectorRuntime, {\n visible: baseTopologyDisplayEdgesVisible,\n edgeSettings: hiddenAwareVisualEdgeSettings,\n focusedPartIds,\n viewerTheme,\n dimmedOpacity: FOCUSED_DIMMED_SURFACE_OPACITY,\n transformByRecord: explodedViewActive,\n displayRecords: runtime.displayRecords,\n syncClip: (activeRuntime) => syncRuntimeStepClipPlane(activeRuntime, clipSettingsRef.current)\n });\n runtime.requestRender?.();\n return;\n }\n\n let transformDetected = false;\n const features = resolveStepModuleFeatures(definition, {\n meshData,\n selectorRuntime: selectorRuntimeRef.current\n });\n const effectsByPartId = new Map();\n const effects = createStepModuleEffectsApi(runtime.THREE, {\n meshData,\n features,\n runtime,\n effectsByPartId,\n onTransformEffect: () => {\n transformDetected = true;\n }\n });\n const ctx = buildStepModuleContext({\n runtime,\n stepModuleRuntime: stepParameterRuntime,\n features,\n effects,\n cleanup: (cleanup) => {\n if (typeof cleanup === \"function\") {\n stepModuleCleanupRef.current.push(cleanup);\n }\n }\n });\n\n try {\n module?.update?.(ctx);\n module?.render?.(ctx);\n } catch (error) {\n viewerAlertChangeRef.current?.({\n severity: \"warning\",\n compact: true,\n title: \"STEP parameter update failed\",\n message: error instanceof Error ? error.message : String(error)\n });\n console.error(\"STEP parameter update failed\", error);\n }\n\n applyStepModuleEffectsToRecords(runtime.THREE, runtime.displayRecords, effectsByPartId);\n const useRecordTopologyEdgeTransforms = explodedViewActive || shouldUseRecordTopologyEdgeTransforms({\n transformDetected,\n topologyDisplayEdgesVisible,\n displayEdgeRuntime,\n displayRecords: runtime.displayRecords\n });\n const nextEdgeRuntimes = resolveTopologyDisplayEdgeRuntimes({\n selectorRuntime,\n displayEdgeRuntime,\n displayRecords: transformDetected ? runtime.displayRecords : [],\n transformDisplayEdges: !useRecordTopologyEdgeTransforms\n });\n const nextTopologyDisplayEdgesVisible = shouldRenderTopologyDisplayEdges({\n edgesVisible,\n wireframeMode,\n cadEdgeSource: shouldUseCadEdgeSource,\n displayEdgeRuntime: useRecordTopologyEdgeTransforms ? displayEdgeRuntime : nextEdgeRuntimes.displayEdgeRuntime,\n selectorRuntime: nextEdgeRuntimes.selectorRuntime,\n edgeSettings: visualEdgeSettings\n });\n stepModuleTransformDetectedChangeRef.current?.(nextEdgeRuntimes.transformCount > 0);\n const nextSelectorRuntime = nextEdgeRuntimes.transformedSelectorRuntime;\n const nextDisplayEdgeRuntime = useRecordTopologyEdgeTransforms\n ? null\n : nextEdgeRuntimes.transformedDisplayEdgeRuntime;\n updateTransformedRuntimeState(setTransformedSelectorRuntime, nextSelectorRuntime ? {\n base: selectorRuntime,\n runtime: nextSelectorRuntime\n } : null);\n updateTransformedRuntimeState(setTransformedDisplayEdgeRuntime, nextDisplayEdgeRuntime ? {\n base: displayEdgeRuntime,\n runtime: nextDisplayEdgeRuntime\n } : null);\n for (const record of runtime.displayRecords) {\n applyDisplayRecordTransform(runtime.THREE, record, runtime.modelRadius || 1);\n }\n applyPartVisualState(runtime.THREE, runtime.displayRecords, partVisualStateRef.current);\n runtime.topologyDisplayEdgeTransformByRecord = useRecordTopologyEdgeTransforms;\n syncTopologyDisplayEdgeLine(\n runtime,\n useRecordTopologyEdgeTransforms ? displayEdgeRuntime : nextEdgeRuntimes.topologyRuntime,\n {\n visible: nextTopologyDisplayEdgesVisible,\n edgeSettings: hiddenAwareVisualEdgeSettings,\n focusedPartIds,\n viewerTheme,\n dimmedOpacity: FOCUSED_DIMMED_SURFACE_OPACITY,\n transformByRecord: useRecordTopologyEdgeTransforms,\n displayRecords: runtime.displayRecords,\n syncClip: (activeRuntime) => syncRuntimeStepClipPlane(activeRuntime, clipSettingsRef.current)\n }\n );\n runtime.modelGroup?.updateMatrixWorld?.(true);\n runtime.edgesGroup?.updateMatrixWorld?.(true);\n const effectiveRuntime = nextEdgeRuntimes.selectorRuntime;\n syncDisplayMeshFaceIds(runtime, meshData, effectiveRuntime);\n syncSelectorPickGroups(runtime, effectiveRuntime, modelTransformRef.current.offset, { clearSceneGroup });\n runtime.requestRender?.();\n }, [\n visualEdgeSettings,\n edgesVisible,\n wireframeMode,\n shouldUseCadEdgeSource,\n focusedPartIds,\n recordEdgesVisible,\n viewerReadyTick,\n viewerTheme,\n hiddenPartIds,\n hiddenAwareVisualEdgeSettings,\n hoveredPartId,\n explodedViewActive,\n isLoading,\n meshData,\n modelKey,\n partVisualStateEnabled,\n pickMode,\n pickableParts,\n selectedPartIds,\n selectorRuntime,\n displayEdgeRuntime,\n stepParameterRuntime\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n const animation = explodedViewAnimationRef.current;\n const previousAnimationStates = Array.isArray(animation.states)\n ? animation.states\n : [];\n const previousAnimationProgress = clamp(animation.transitionProgress, 0, 1);\n cancelExplodedViewAnimation(explodedViewAnimationRef);\n\n if (\n !runtime?.THREE ||\n isLoading ||\n !Array.isArray(runtime.displayRecords) ||\n !runtime.displayRecords.length\n ) {\n animation.progress = 0;\n animation.modelKey = \"\";\n animation.recordKey = \"\";\n animation.states = [];\n animation.transitionProgress = 0;\n return undefined;\n }\n\n const animationModelKey = modelKey || \"\";\n const recordKey = `${animationModelKey}:${displayRecordsAnimationKey(runtime.displayRecords)}`;\n const modelChanged = animation.modelKey !== animationModelKey;\n const targetProgress = explodedViewActive ? 1 : 0;\n const baseBounds = runtime.modelBounds || meshData?.bounds;\n const states = createExplodedViewRecordStates(\n runtime.THREE,\n runtime.displayRecords,\n baseBounds,\n normalizedExplodedSettings\n );\n animation.modelKey = animationModelKey;\n animation.recordKey = recordKey;\n\n if (!states.length) {\n clearExplodedViewRecords(runtime.displayRecords);\n for (const record of runtime.displayRecords) {\n applyDisplayRecordTransform(runtime.THREE, record);\n }\n syncRecordTopologyDisplayEdgeTransforms(runtime, runtime.displayRecords);\n runtime.requestRender?.();\n animation.progress = 0;\n animation.states = [];\n animation.transitionProgress = 0;\n return undefined;\n }\n\n const transitionStates = createExplodedViewRuntimeTransitionStates(runtime, states, targetProgress, {\n previousStates: previousAnimationStates,\n previousTransitionProgress: previousAnimationProgress,\n useCurrentTranslations: !modelChanged\n });\n clearExplodedViewRecordsOutsideStates(runtime.displayRecords, transitionStates);\n\n if (!explodedViewTransitionNeedsAnimation(transitionStates)) {\n animation.progress = targetProgress;\n animation.states = transitionStates;\n animation.transitionProgress = 1;\n applyExplodedViewRuntimeProgress(runtime, transitionStates, 1);\n return undefined;\n }\n\n const startedAt = typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n\n animation.states = transitionStates;\n animation.transitionProgress = 0;\n applyExplodedViewRuntimeProgress(runtime, transitionStates, 0);\n\n const step = (timestamp) => {\n const now = Number.isFinite(Number(timestamp)) ? Number(timestamp) : Date.now();\n const linearProgress = clamp(\n (now - startedAt) / EXPLODED_VIEW_ANIMATION_DURATION_MS,\n 0,\n 1\n );\n const easedProgress = easeExplodedViewProgress(linearProgress);\n animation.progress = targetProgress > 0\n ? easedProgress\n : 1 - easedProgress;\n animation.transitionProgress = easedProgress;\n applyExplodedViewRuntimeProgress(runtime, transitionStates, easedProgress);\n if (linearProgress < 1) {\n animation.rafId = window.requestAnimationFrame(step);\n } else {\n animation.rafId = 0;\n animation.progress = targetProgress;\n animation.transitionProgress = 1;\n animation.states = transitionStates;\n }\n };\n\n animation.rafId = window.requestAnimationFrame(step);\n return () => {\n cancelExplodedViewAnimation(explodedViewAnimationRef);\n };\n }, [\n explodedViewActive,\n normalizedExplodedSettings,\n isLoading,\n meshData?.bounds,\n meshGeometrySource,\n modelKey,\n focusedPartIds.length,\n normalizedSceneScaleMode,\n normalizedThemeSettings,\n viewerReadyTick\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgePickGroup || !runtime?.facePickGroup || !runtime?.vertexPickGroup) {\n return;\n }\n\n syncDisplayMeshFaceIds(runtime, meshData, activeSelectorRuntime);\n syncSelectorPickGroups(runtime, activeSelectorRuntime, modelTransformRef.current.offset, { clearSceneGroup });\n syncRuntimeStepClipPlane(runtime, clipSettingsRef.current);\n }, [activeSelectorRuntime, meshData, modelKey, viewerReadyTick]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return;\n }\n\n const transformByRecord = runtime.topologyDisplayEdgeTransformByRecord === true;\n syncTopologyDisplayEdgeLine(\n runtime,\n transformByRecord\n ? (displayEdgeRuntime || selectorRuntime)\n : (activeDisplayEdgeRuntime || activeSelectorRuntime),\n {\n visible: topologyDisplayEdgesVisible,\n edgeSettings: hiddenAwareVisualEdgeSettings,\n focusedPartIds,\n viewerTheme,\n dimmedOpacity: FOCUSED_DIMMED_SURFACE_OPACITY,\n transformByRecord,\n displayRecords: runtime.displayRecords,\n syncClip: (activeRuntime) => syncRuntimeStepClipPlane(activeRuntime, clipSettingsRef.current)\n }\n );\n }, [activeDisplayEdgeRuntime, activeSelectorRuntime, displayEdgeRuntime, viewerReadyTick, viewerTheme, focusedPartIds, hiddenAwareVisualEdgeSettings, selectorRuntime, topologyDisplayEdgesVisible, visualEdgeSettings]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return;\n }\n\n const { THREE, edgesGroup } = runtime;\n if (!runtime.surfaceLineGroup || runtime.surfaceLineGroup.parent !== edgesGroup) {\n runtime.surfaceLineGroup = new THREE.Group();\n runtime.surfaceLineGroup.renderOrder = 21;\n edgesGroup.add(runtime.surfaceLineGroup);\n }\n const lineGroup = runtime.surfaceLineGroup;\n clearOverlayGroup(runtime, lineGroup);\n\n const surfaceLineStrokes = (Array.isArray(drawingStrokes) ? drawingStrokes : []).filter(isSurfaceLineStroke);\n if (!surfaceLineStrokes.length) {\n return () => {\n clearOverlayGroup(runtime, lineGroup);\n };\n }\n\n const lineWidth = Math.max(getEdgeThickness(displayEdgeSettings, viewerTheme) * 1.6, 1.8);\n const lineOffset = Math.max(runtime.modelRadius || 0, 1) * 0.0008 + 0.02;\n for (const stroke of surfaceLineStrokes) {\n const surfaceLine = stroke?.surfaceLine;\n const referenceId = String(surfaceLine?.referenceId || \"\").trim();\n const reference = pickableReferenceMap.get(referenceId) || activeSelectorRuntime?.referenceMap?.get(referenceId) || null;\n if (!reference) {\n continue;\n }\n const linePositions = buildSurfaceLinePositions(reference, surfaceLine, {\n offset: lineOffset\n });\n if (!linePositions.length) {\n continue;\n }\n const line = createScreenSpaceLineSegments(runtime, linePositions, {\n color: SURFACE_LINE_COLOR,\n opacity: 0.98,\n lineWidth,\n renderOrder: 22,\n depthTest: true,\n depthWrite: false\n });\n if (line) {\n lineGroup.add(line);\n }\n }\n lineGroup.visible = lineGroup.children.length > 0;\n runtime.requestRender();\n\n return () => {\n clearOverlayGroup(runtime, lineGroup);\n };\n }, [activeSelectorRuntime, drawingStrokes, displayEdgeSettings, pickableReferenceMap, viewerReadyTick, viewerTheme]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return;\n }\n\n const { THREE, edgesGroup } = runtime;\n if (!runtime.bendGuideGroup || runtime.bendGuideGroup.parent !== edgesGroup) {\n runtime.bendGuideGroup = new THREE.Group();\n runtime.bendGuideGroup.renderOrder = 15;\n edgesGroup.add(runtime.bendGuideGroup);\n }\n const bendGuideGroup = runtime.bendGuideGroup;\n clearOverlayGroup(runtime, bendGuideGroup);\n\n if (isLoading || !meshData || !isNumericArray(meshData.guide_line_segments, 6)) {\n return () => {\n clearOverlayGroup(runtime, bendGuideGroup);\n };\n }\n\n const bendGuideLine = createScreenSpaceLineSegments(runtime, meshData.guide_line_segments, {\n color: BEND_GUIDE_COLOR,\n opacity: 0.98,\n lineWidth: Math.max(getEdgeThickness(displayEdgeSettings, viewerTheme) * BEND_GUIDE_WIDTH_MULTIPLIER, 1.4),\n renderOrder: 16,\n depthTest: false,\n depthWrite: false\n });\n if (bendGuideLine) {\n bendGuideGroup.add(bendGuideLine);\n }\n bendGuideGroup.visible = bendGuideGroup.children.length > 0;\n runtime.requestRender();\n\n return () => {\n clearOverlayGroup(runtime, bendGuideGroup);\n };\n }, [isLoading, meshData, modelKey, displayEdgeSettings, viewerReadyTick, viewerTheme]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return;\n }\n\n const { THREE, edgesGroup } = runtime;\n if (!runtime.urdfPosePickerGuideGroup || runtime.urdfPosePickerGuideGroup.parent !== edgesGroup) {\n runtime.urdfPosePickerGuideGroup = new THREE.Group();\n runtime.urdfPosePickerGuideGroup.renderOrder = 28;\n edgesGroup.add(runtime.urdfPosePickerGuideGroup);\n }\n const guideGroup = runtime.urdfPosePickerGuideGroup;\n clearOverlayGroup(runtime, guideGroup);\n\n if (!urdfPosePicker?.active) {\n return () => {\n clearOverlayGroup(runtime, guideGroup);\n };\n }\n\n const shell = resolveUrdfPosePickerShell(runtime, urdfPosePicker);\n if (!shell) {\n return () => {\n clearOverlayGroup(runtime, guideGroup);\n };\n }\n\n const shellMesh = createUrdfPosePickerShell(runtime, urdfPosePicker);\n if (shellMesh) {\n guideGroup.add(shellMesh);\n }\n const hoverCellMesh = createUrdfPosePickerHoverCellMesh(runtime, urdfPosePicker);\n if (hoverCellMesh) {\n guideGroup.add(hoverCellMesh);\n }\n const hoverCellOutline = createUrdfPosePickerHoverCellOutline(runtime, urdfPosePicker);\n if (hoverCellOutline) {\n guideGroup.add(hoverCellOutline);\n }\n guideGroup.visible = guideGroup.children.length > 0;\n runtime.requestRender();\n\n return () => {\n clearOverlayGroup(runtime, guideGroup);\n };\n }, [\n urdfPosePicker?.active,\n urdfPosePicker?.center,\n urdfPosePickerGuidePoint,\n urdfPosePickerHoverActive,\n viewerReadyTick\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return;\n }\n\n const { THREE, edgesGroup } = runtime;\n if (!runtime.partHighlightGroup || runtime.partHighlightGroup.parent !== edgesGroup) {\n runtime.partHighlightGroup = new THREE.Group();\n runtime.partHighlightGroup.renderOrder = 22;\n edgesGroup.add(runtime.partHighlightGroup);\n }\n const highlightGroup = runtime.partHighlightGroup;\n clearOverlayGroup(runtime, highlightGroup);\n\n const highlightedPartIds = [];\n const seenPartIds = new Set();\n const addHighlightedPartId = (partId) => {\n const normalizedPartId = String(partId || \"\").trim();\n if (!normalizedPartId || hiddenPartIdSet.has(normalizedPartId) || seenPartIds.has(normalizedPartId)) {\n return;\n }\n seenPartIds.add(normalizedPartId);\n highlightedPartIds.push(normalizedPartId);\n };\n for (const partId of normalizePartIdList(selectedPartIds)) {\n addHighlightedPartId(partId);\n }\n for (const partId of normalizePartIdList(hoveredPartId)) {\n addHighlightedPartId(partId);\n }\n\n if (topologyDisplayEdgesVisible && highlightedPartIds.length) {\n const highlightEdgeSettings = {\n ...hiddenAwareVisualEdgeSettings,\n thickness: getHighlightEdgeThickness(displayEdgeSettings, viewerTheme),\n highlightPartIds: highlightedPartIds,\n highlightColor: getHighlightEdgeColor(displayEdgeSettings),\n highlightOpacity: getHighlightEdgeOpacity(displayEdgeSettings),\n highlightRenderOrder: 26\n };\n const highlightLine = runtime.topologyDisplayEdgeTransformByRecord === true && displayEdgeRuntime\n ? createRecordTopologyDisplayEdgeGroup(runtime, displayEdgeRuntime, {\n edgeSettings: highlightEdgeSettings,\n viewerTheme,\n displayRecords: runtime.displayRecords\n })\n : createSharedTopologyDisplayEdgeObject(\n runtime,\n activeDisplayEdgeRuntime || activeSelectorRuntime,\n highlightEdgeSettings,\n viewerTheme\n );\n if (highlightLine) {\n highlightGroup.add(highlightLine);\n }\n }\n\n highlightGroup.visible = highlightGroup.children.length > 0;\n runtime.requestRender();\n\n return () => {\n clearOverlayGroup(runtime, highlightGroup);\n };\n }, [\n activeDisplayEdgeRuntime,\n activeSelectorRuntime,\n displayEdgeRuntime,\n displayEdgeSettings,\n hiddenAwareVisualEdgeSettings,\n hiddenPartIdSet,\n viewerReadyTick,\n viewerTheme,\n hoveredPartId,\n modelKey,\n selectedPartIds,\n topologyDisplayEdgesVisible,\n visualEdgeSettings\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup) {\n return;\n }\n\n const { THREE, edgesGroup } = runtime;\n if (!runtime.mateOverlayGroup || runtime.mateOverlayGroup.parent !== edgesGroup) {\n runtime.mateOverlayGroup = new THREE.Group();\n runtime.mateOverlayGroup.renderOrder = 27;\n edgesGroup.add(runtime.mateOverlayGroup);\n }\n const mateOverlayGroup = runtime.mateOverlayGroup;\n clearOverlayGroup(runtime, mateOverlayGroup);\n\n if (isLoading || !meshData) {\n return () => {\n clearOverlayGroup(runtime, mateOverlayGroup);\n };\n }\n\n const activeMates = resolveActiveMateOverlays(assemblyMates, selectedMateIds, hoveredMateId);\n if (!activeMates.length) {\n return () => {\n clearOverlayGroup(runtime, mateOverlayGroup);\n };\n }\n\n const modelRadius = Number.isFinite(Number(runtime.modelRadius)) && Number(runtime.modelRadius) > 0\n ? Number(runtime.modelRadius)\n : 1;\n const highlightColor = getHighlightEdgeColor(displayEdgeSettings);\n const highlightOpacity = getHighlightEdgeOpacity(displayEdgeSettings);\n const markerRadius = clamp(modelRadius * 0.012, 0.55, 4.5);\n const axisLength = clamp(modelRadius * 0.07, markerRadius * 3.2, 18);\n const baseLineWidth = Math.max(getHighlightEdgeThickness(displayEdgeSettings, viewerTheme), 2.6);\n\n for (const mate of activeMates) {\n addMateOverlayGlyph(runtime, mateOverlayGroup, mate, {\n color: highlightColor,\n opacity: mate.selected ? highlightOpacity : Math.min(highlightOpacity, 0.82),\n markerRadius: mate.hovered && !mate.selected ? markerRadius * 0.9 : markerRadius,\n axisLength,\n lineWidth: mate.selected ? baseLineWidth : Math.max(baseLineWidth * 0.86, 2.2),\n renderOrder: mate.selected ? 28 : 27\n });\n }\n\n mateOverlayGroup.visible = mateOverlayGroup.children.length > 0;\n runtime.requestRender();\n\n return () => {\n clearOverlayGroup(runtime, mateOverlayGroup);\n };\n }, [\n assemblyMates,\n displayEdgeSettings,\n hoveredMateId,\n isLoading,\n meshData,\n modelKey,\n selectedMateIds,\n viewerReadyTick,\n viewerTheme\n ]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.THREE || !runtime?.edgesGroup || !runtime?.modelGroup) {\n return;\n }\n\n const { THREE, edgesGroup, modelGroup } = runtime;\n if (!runtime.referenceHighlightGroup || runtime.referenceHighlightGroup.parent !== edgesGroup) {\n runtime.referenceHighlightGroup = new THREE.Group();\n runtime.referenceHighlightGroup.renderOrder = 25;\n edgesGroup.add(runtime.referenceHighlightGroup);\n }\n const highlightGroup = runtime.referenceHighlightGroup;\n if (!runtime.referenceFaceFillGroup || runtime.referenceFaceFillGroup.parent !== modelGroup) {\n runtime.referenceFaceFillGroup = new THREE.Group();\n runtime.referenceFaceFillGroup.renderOrder = 24;\n modelGroup.add(runtime.referenceFaceFillGroup);\n }\n const faceFillGroup = runtime.referenceFaceFillGroup;\n\n clearOverlayGroup(runtime, highlightGroup);\n clearOverlayGroup(runtime, faceFillGroup);\n const selectedLineWidth = getHighlightEdgeThickness(displayEdgeSettings, viewerTheme);\n const hoveredLineWidth = selectedLineWidth;\n const highlightEdgeColor = getHighlightEdgeColor(displayEdgeSettings);\n const highlightEdgeOpacity = getHighlightEdgeOpacity(displayEdgeSettings);\n\n const highlightReferenceStates = new Map();\n const runtimeReferences = Array.isArray(activeSelectorRuntime?.references)\n ? activeSelectorRuntime.references\n : activeSelectorRuntime?.referenceMap instanceof Map\n ? [...activeSelectorRuntime.referenceMap.values()]\n : [];\n const addHighlightReference = (referenceId, { hovered = false } = {}) => {\n const normalizedReferenceId = String(referenceId || \"\").trim();\n if (!normalizedReferenceId) {\n return;\n }\n const current = highlightReferenceStates.get(normalizedReferenceId);\n if (current) {\n current.hovered = current.hovered || hovered;\n return;\n }\n highlightReferenceStates.set(normalizedReferenceId, { hovered });\n };\n const addReferenceSelection = (referenceId, { hovered = false } = {}) => {\n const normalizedReferenceId = String(referenceId || \"\").trim();\n const topologyReference = pickableReferenceMap.get(normalizedReferenceId) || activeSelectorRuntime?.referenceMap?.get(normalizedReferenceId) || null;\n if (!topologyReference) {\n const syntheticOccurrenceSelector = syntheticOccurrenceSelectorFromReferenceId(normalizedReferenceId);\n if (syntheticOccurrenceSelector) {\n for (const childReference of runtimeReferences) {\n const childSelectorType = referenceSelectorType(childReference);\n if (\n (childSelectorType === \"face\" || childSelectorType === \"edge\" || childSelectorType === \"vertex\") &&\n referenceMatchesOccurrenceSubtree(childReference, syntheticOccurrenceSelector)\n ) {\n addHighlightReference(childReference?.id, { hovered });\n }\n }\n }\n return;\n }\n const selectorType = referenceSelectorType(topologyReference);\n if (selectorType === \"occurrence\") {\n const occurrenceSelector = referenceOccurrenceSelector(topologyReference);\n for (const childReference of runtimeReferences) {\n const childSelectorType = referenceSelectorType(childReference);\n if (\n (childSelectorType === \"face\" || childSelectorType === \"edge\" || childSelectorType === \"vertex\") &&\n referenceMatchesOccurrenceSubtree(childReference, occurrenceSelector)\n ) {\n addHighlightReference(childReference?.id, { hovered });\n }\n }\n return;\n }\n if (selectorType === \"shape\") {\n const shapeSelector = referenceShapeSelector(topologyReference);\n const occurrenceSelector = referenceOccurrenceSelector(topologyReference);\n for (const childReference of runtimeReferences) {\n const childSelectorType = referenceSelectorType(childReference);\n if (\n (childSelectorType === \"face\" || childSelectorType === \"edge\" || childSelectorType === \"vertex\") &&\n referenceMatchesShape(childReference, shapeSelector, occurrenceSelector)\n ) {\n addHighlightReference(childReference?.id, { hovered });\n }\n }\n return;\n }\n addHighlightReference(normalizedReferenceId, { hovered });\n };\n for (const referenceId of Array.isArray(selectedReferenceIds) ? selectedReferenceIds : []) {\n addReferenceSelection(referenceId);\n }\n const normalizedHoveredReferenceId = String(hoveredReferenceId || \"\").trim();\n if (normalizedHoveredReferenceId) {\n addReferenceSelection(normalizedHoveredReferenceId, { hovered: true });\n }\n\n for (const [referenceId, highlightState] of highlightReferenceStates.entries()) {\n const topologyReference = pickableReferenceMap.get(referenceId) || activeSelectorRuntime?.referenceMap?.get(referenceId) || null;\n if (!topologyReference) {\n continue;\n }\n const selectorType = referenceSelectorType(topologyReference);\n if (selectorType !== \"face\" && selectorType !== \"edge\" && selectorType !== \"vertex\") {\n continue;\n }\n\n const isHovered = Boolean(highlightState?.hovered);\n if (selectorType === \"vertex\") {\n const marker = buildVertexMarkerMesh(runtime, THREE, topologyReference, {\n color: REFERENCE_CORNER_COLOR,\n opacity: isHovered ? 0.96 : 0.88,\n });\n if (marker) {\n highlightGroup.add(marker);\n }\n continue;\n }\n\n const highlightColor = highlightEdgeColor;\n\n const linePositions = selectorType === \"edge\"\n ? buildEdgeLinePositionsFromProxy(activeSelectorRuntime, topologyReference)\n : buildFaceBoundaryLinePositions(activeSelectorRuntime, topologyReference);\n if (linePositions?.length) {\n const referenceVisibilityClass = selectorType === \"edge\"\n ? activeSelectorRuntime?.edges?.[topologyReference.rowIndex]?.visibilityClass || \"\"\n : \"\";\n const lineWidth = isHovered ? hoveredLineWidth : selectedLineWidth;\n const line = createScreenSpaceLineSegments(runtime, linePositions, {\n color: highlightColor,\n opacity: highlightEdgeOpacity,\n lineWidth,\n renderOrder: 26,\n depthTest: selectorType !== \"edge\",\n depthWrite: false,\n depthBias: topologyLineDepthBiasForWidth(lineWidth, { visibilityClass: referenceVisibilityClass })\n });\n if (line) {\n highlightGroup.add(line);\n }\n }\n\n if (selectorType === \"face\") {\n const fillGeometry = buildFaceFillGeometryFromDisplayMeshes(runtime, THREE, topologyReference) ||\n buildFaceFillGeometryFromProxy(runtime, THREE, activeSelectorRuntime, topologyReference);\n if (fillGeometry) {\n const fillOpacity = highlightEdgeOpacity;\n const fillMaterial = new THREE.MeshBasicMaterial({\n color: highlightColor,\n transparent: fillOpacity < 0.999,\n opacity: fillOpacity,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: -2,\n polygonOffsetUnits: -2,\n side: THREE.DoubleSide,\n toneMapped: false\n });\n const fillMesh = new THREE.Mesh(fillGeometry, fillMaterial);\n fillMesh.renderOrder = 25;\n faceFillGroup.add(fillMesh);\n }\n }\n }\n\n highlightGroup.visible = highlightGroup.children.length > 0;\n faceFillGroup.visible = faceFillGroup.children.length > 0;\n runtime.requestRender();\n\n return () => {\n clearOverlayGroup(runtime, highlightGroup);\n clearOverlayGroup(runtime, faceFillGroup);\n };\n }, [activeSelectorRuntime, hoveredReferenceId, pickableReferenceMap, selectedReferenceIds, viewerReadyTick, viewerTheme, displayEdgeSettings]);\n\n useViewerDrawingOverlay({\n drawingCanvasRef,\n drawingDraftRef,\n drawingStrokesRef,\n drawingChangeRef,\n drawingIdRef,\n drawingEnabled,\n drawingTool,\n meshData,\n previewMode,\n viewerReadyTick,\n renderDrawingOverlay,\n redrawDrawingCanvas,\n buildDrawingPoint,\n distanceToStrokeInPixels,\n strokeLengthInPixels,\n drawingToolNeedsTwoPoints,\n buildFillStrokeAtPoint,\n buildSurfaceLineAnchor: buildSurfaceLineFaceAnchor,\n updateSurfaceLineAnchor: updateSurfaceLineFaceAnchor,\n drawingEraseThresholdPx: DRAWING_ERASE_THRESHOLD_PX,\n drawingMinPointDistancePx: DRAWING_MIN_POINT_DISTANCE_PX,\n drawingMinStrokeLengthPx: DRAWING_MIN_STROKE_LENGTH_PX\n });\n\n useViewerPicking({\n runtimeRef,\n mountRef: interactionHostRef,\n sceneMountRef: mountRef,\n drawingCanvasRef,\n previewMode,\n pickMode,\n selectorRuntime: activeSelectorRuntime,\n pickableFaces: filteredPickableFaces,\n pickableEdges: filteredPickableEdges,\n pickableVertices: filteredPickableVertices,\n hiddenPartIds,\n focusedPartId: focusedPartIds,\n onHoverReferenceChange,\n onActivateReference,\n onDoubleActivateReference,\n onContextReference,\n viewerReadyTick\n });\n\n return (\n \n
\n
\n {showViewPlane && !previewMode && !isLoading && meshData ? (\n
{\n resetZoomAndPan({ animate: true });\n }}\n viewPlaneOffsetRight={viewPlaneOffsetRight}\n viewPlaneOffsetBottom={viewPlaneOffsetBottom}\n />\n ) : null}\n \n {error ? (\n \n {error}\n
\n ) : null}\n \n );\n});\n\nexport default CadViewer;\n","\"use client\";\n\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport { copyImageBlobToClipboard } from \"@/ui/clipboard\";\nimport { triggerBlobDownload } from \"@/ui/download\";\nimport { resolveThemeFillColor } from \"cadjs/lib/themeSettings\";\nimport ViewPlaneControl from \"./viewer/ViewPlaneControl\";\n\nconst MIN_VIEW_SIZE = 1;\nconst VIEW_PADDING_RATIO = 0.08;\nconst MAX_ZOOM_IN = 20;\nconst MAX_ZOOM_OUT = 12;\nconst WHEEL_ZOOM_FACTOR = 1.12;\nconst VIEWBOX_EPSILON = 1e-6;\nconst POINT_KEY_SCALE = 1000;\nconst GEOMETRY_EPSILON = 1e-3;\nconst ANGLE_EPSILON = 1e-9;\nconst ARC_CHORD_TOLERANCE_MM = 0.35;\nconst MIN_ARC_SEGMENTS = 10;\nconst MAX_ARC_SEGMENTS = 160;\nconst DXF_2D_VIEW_PLANE_ORIENTATION = Object.freeze({\n x: [1, 0, 0],\n y: [0, 1, 0],\n z: [0, 0, 1]\n});\nconst DXF_2D_VIEW_PLANE_FACES = Object.freeze([\n { id: \"x+\", title: \"Fit 2D view\", direction: [1, 0, 0] },\n { id: \"x-\", title: \"Fit 2D view\", direction: [-1, 0, 0] },\n { id: \"y+\", title: \"Fit 2D view\", direction: [0, 1, 0] },\n { id: \"y-\", title: \"Fit 2D view\", direction: [0, -1, 0] }\n]);\nconst DXF_2D_VIEW_PLANE_MESH = Object.freeze({ format: \"dxf-2d\" });\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction toFiniteNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction normalizePoint(point) {\n if (!Array.isArray(point) || point.length < 2) {\n return [0, 0];\n }\n return [toFiniteNumber(point[0]), toFiniteNumber(point[1])];\n}\n\nfunction pointsEqual(a, b, epsilon = GEOMETRY_EPSILON) {\n return Math.abs(a[0] - b[0]) <= epsilon && Math.abs(a[1] - b[1]) <= epsilon;\n}\n\nfunction pointKey(point) {\n return `${Math.round(point[0] * POINT_KEY_SCALE)}:${Math.round(point[1] * POINT_KEY_SCALE)}`;\n}\n\nfunction reversePoints(points) {\n return [...points].reverse();\n}\n\nfunction removeDuplicateClosure(points) {\n if (points.length > 1 && pointsEqual(points[0], points[points.length - 1])) {\n return points.slice(0, -1);\n }\n return points;\n}\n\nfunction removeConsecutiveDuplicates(points) {\n const deduped = [];\n for (const point of points) {\n if (deduped.length && pointsEqual(deduped[deduped.length - 1], point)) {\n continue;\n }\n deduped.push(point);\n }\n return removeDuplicateClosure(deduped);\n}\n\nfunction normalizeAngle(angleDeg) {\n const value = toFiniteNumber(angleDeg) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction angleInSweep(angleDeg, startAngleDeg, sweepAngleDeg) {\n const absSweepAngleDeg = Math.abs(sweepAngleDeg);\n if (absSweepAngleDeg >= 360 - ANGLE_EPSILON) {\n return true;\n }\n if (sweepAngleDeg >= 0) {\n const normalizedDelta = (normalizeAngle(angleDeg) - normalizeAngle(startAngleDeg) + 360) % 360;\n return normalizedDelta <= absSweepAngleDeg + ANGLE_EPSILON;\n }\n const normalizedDelta = (normalizeAngle(startAngleDeg) - normalizeAngle(angleDeg) + 360) % 360;\n return normalizedDelta <= absSweepAngleDeg + ANGLE_EPSILON;\n}\n\nfunction pointOnCircle(center, radius, angleDeg) {\n const radians = (toFiniteNumber(angleDeg) * Math.PI) / 180;\n return [\n center[0] + radius * Math.cos(radians),\n center[1] + radius * Math.sin(radians)\n ];\n}\n\nfunction arcExtremaPoints(arc) {\n const center = normalizePoint(arc?.center);\n const radius = Math.max(toFiniteNumber(arc?.radius), 0);\n const startAngleDeg = toFiniteNumber(arc?.startAngleDeg);\n const sweepAngleDeg = toFiniteNumber(arc?.sweepAngleDeg);\n const endAngleDeg = startAngleDeg + sweepAngleDeg;\n const points = [\n pointOnCircle(center, radius, startAngleDeg),\n pointOnCircle(center, radius, endAngleDeg)\n ];\n for (const candidateAngle of [0, 90, 180, 270]) {\n if (angleInSweep(candidateAngle, startAngleDeg, sweepAngleDeg)) {\n points.push(pointOnCircle(center, radius, candidateAngle));\n }\n }\n return points;\n}\n\nfunction boundsFromPoints(points) {\n if (!points.length) {\n return null;\n }\n const xs = points.map((point) => point[0]);\n const ys = points.map((point) => point[1]);\n return {\n minX: Math.min(...xs),\n minY: Math.min(...ys),\n maxX: Math.max(...xs),\n maxY: Math.max(...ys)\n };\n}\n\nfunction expandBounds(current, nextBounds) {\n if (!nextBounds) {\n return current;\n }\n if (!current) {\n return nextBounds;\n }\n return {\n minX: Math.min(current.minX, nextBounds.minX),\n minY: Math.min(current.minY, nextBounds.minY),\n maxX: Math.max(current.maxX, nextBounds.maxX),\n maxY: Math.max(current.maxY, nextBounds.maxY)\n };\n}\n\nfunction sampleCountForSweep(radius, sweepRadians) {\n const safeRadius = Math.max(Math.abs(radius), 0.01);\n const chordRatio = clamp(1 - (ARC_CHORD_TOLERANCE_MM / safeRadius), -1, 1);\n const maxSegmentAngle = chordRatio <= -1\n ? Math.PI / 8\n : clamp(2 * Math.acos(chordRatio), Math.PI / 64, Math.PI / 10);\n return clamp(\n Math.ceil(Math.max(Math.abs(sweepRadians), Math.PI / 36) / maxSegmentAngle),\n MIN_ARC_SEGMENTS,\n MAX_ARC_SEGMENTS\n );\n}\n\nfunction sampleArcPoints(center, radius, startAngleDeg, sweepAngleDeg) {\n const startAngleRad = (toFiniteNumber(startAngleDeg) * Math.PI) / 180;\n const sweepAngleRad = (toFiniteNumber(sweepAngleDeg) * Math.PI) / 180;\n const segments = sampleCountForSweep(radius, sweepAngleRad);\n const points = [];\n for (let index = 0; index <= segments; index += 1) {\n const t = index / segments;\n const angle = startAngleRad + sweepAngleRad * t;\n points.push([\n center[0] + radius * Math.cos(angle),\n center[1] + radius * Math.sin(angle)\n ]);\n }\n return points;\n}\n\nfunction sampleCirclePoints(center, radius) {\n return removeDuplicateClosure(sampleArcPoints(center, radius, 0, 360));\n}\n\nfunction readGeometryRecords(dxfData) {\n const geometry = dxfData?.geometry || {};\n const lines = Array.isArray(geometry.lines) ? geometry.lines : [];\n const arcs = Array.isArray(geometry.arcs) ? geometry.arcs : [];\n const circles = Array.isArray(geometry.circles) ? geometry.circles : [];\n const cutPrimitives = [];\n const cutCircleLoops = [];\n let rawBounds = null;\n\n for (const line of lines) {\n const start = normalizePoint(line?.start);\n const end = normalizePoint(line?.end);\n rawBounds = expandBounds(rawBounds, boundsFromPoints([start, end]));\n if (String(line?.kind || \"\").trim().toLowerCase() === \"bend\" || pointsEqual(start, end)) {\n continue;\n }\n cutPrimitives.push({ points: [start, end] });\n }\n\n for (const arc of arcs) {\n const center = normalizePoint(arc?.center);\n const radius = Math.max(toFiniteNumber(arc?.radius), 0);\n if (radius <= 0) {\n continue;\n }\n rawBounds = expandBounds(rawBounds, boundsFromPoints(arcExtremaPoints(arc)));\n const points = sampleArcPoints(\n center,\n radius,\n toFiniteNumber(arc?.startAngleDeg),\n toFiniteNumber(arc?.sweepAngleDeg)\n );\n if (String(arc?.kind || \"\").trim().toLowerCase() === \"bend\") {\n continue;\n }\n cutPrimitives.push({ points });\n }\n\n for (const circle of circles) {\n const center = normalizePoint(circle?.center);\n const radius = Math.max(toFiniteNumber(circle?.radius), 0);\n if (radius <= 0) {\n continue;\n }\n rawBounds = expandBounds(rawBounds, {\n minX: center[0] - radius,\n minY: center[1] - radius,\n maxX: center[0] + radius,\n maxY: center[1] + radius\n });\n if (String(circle?.kind || \"\").trim().toLowerCase() === \"bend\") {\n continue;\n }\n cutCircleLoops.push(sampleCirclePoints(center, radius));\n }\n\n return {\n cutPrimitives,\n cutCircleLoops,\n rawBounds\n };\n}\n\nfunction buildCutLoops(dxfData) {\n const { cutPrimitives, cutCircleLoops, rawBounds } = readGeometryRecords(dxfData);\n const loops = [];\n if (cutPrimitives.length) {\n const adjacency = new Map();\n const visited = new Set();\n const addAdjacency = (key, value) => {\n const existing = adjacency.get(key);\n if (existing) {\n existing.push(value);\n return;\n }\n adjacency.set(key, [value]);\n };\n\n cutPrimitives.forEach((primitive, index) => {\n const startKey = pointKey(primitive.points[0]);\n const endKey = pointKey(primitive.points[primitive.points.length - 1]);\n addAdjacency(startKey, { index, reverse: false });\n addAdjacency(endKey, { index, reverse: true });\n });\n\n for (let primitiveIndex = 0; primitiveIndex < cutPrimitives.length; primitiveIndex += 1) {\n if (visited.has(primitiveIndex)) {\n continue;\n }\n visited.add(primitiveIndex);\n let loopPoints = [...cutPrimitives[primitiveIndex].points];\n const startKey = pointKey(loopPoints[0]);\n let currentKey = pointKey(loopPoints[loopPoints.length - 1]);\n let guard = 0;\n\n while (currentKey !== startKey) {\n const nextOptions = (adjacency.get(currentKey) || []).filter(({ index }) => !visited.has(index));\n if (!nextOptions.length) {\n return { loops: [], rawBounds };\n }\n const nextOption = nextOptions[0];\n visited.add(nextOption.index);\n const primitivePoints = cutPrimitives[nextOption.index].points;\n const orientedPoints = nextOption.reverse ? reversePoints(primitivePoints) : primitivePoints;\n loopPoints = loopPoints.concat(orientedPoints.slice(1));\n currentKey = pointKey(orientedPoints[orientedPoints.length - 1]);\n guard += 1;\n if (guard > cutPrimitives.length + 4) {\n return { loops: [], rawBounds };\n }\n }\n\n loopPoints = removeConsecutiveDuplicates(loopPoints);\n if (loopPoints.length >= 3) {\n loops.push(loopPoints);\n }\n }\n }\n\n for (const circleLoop of cutCircleLoops) {\n if (circleLoop.length >= 3) {\n loops.push(circleLoop);\n }\n }\n\n return { loops, rawBounds };\n}\n\nfunction formatSvgNumber(value) {\n const rounded = Math.round(toFiniteNumber(value) * 1_000_000) / 1_000_000;\n return Math.abs(rounded) < ANGLE_EPSILON ? \"0\" : String(rounded);\n}\n\nfunction screenPoint(point, bounds) {\n return [\n point[0] - bounds.minX,\n bounds.maxY - point[1]\n ];\n}\n\nfunction buildDxfMaterialFillPathData(dxfData) {\n const { loops, rawBounds } = buildCutLoops(dxfData);\n if (!rawBounds || !loops.length) {\n return \"\";\n }\n return loops\n .map((loop) => {\n const screenLoop = loop.map((point) => screenPoint(point, rawBounds));\n if (screenLoop.length < 3) {\n return \"\";\n }\n const [first, ...rest] = screenLoop;\n return [\n `M ${formatSvgNumber(first[0])} ${formatSvgNumber(first[1])}`,\n ...rest.map((point) => `L ${formatSvgNumber(point[0])} ${formatSvgNumber(point[1])}`),\n \"Z\"\n ].join(\" \");\n })\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction readCssVar(name, fallback) {\n if (typeof window === \"undefined\") {\n return fallback;\n }\n const value = window.getComputedStyle(document.documentElement).getPropertyValue(name).trim();\n return value || fallback;\n}\n\nfunction readPalette() {\n return {\n background: readCssVar(\"--ui-app-bg\", \"#f3f4f6\"),\n cutStroke: readCssVar(\"--ui-text\", \"#111827\"),\n bendStroke: readCssVar(\"--ui-accent\", \"#b45309\")\n };\n}\n\nfunction buildFittedViewBox(bounds, viewport) {\n const width = Math.max(Number(bounds?.width) || 0, MIN_VIEW_SIZE);\n const height = Math.max(Number(bounds?.height) || 0, MIN_VIEW_SIZE);\n const viewportWidth = Math.max(Number(viewport?.width) || 0, 1);\n const viewportHeight = Math.max(Number(viewport?.height) || 0, 1);\n const paddedWidth = width * (1 + VIEW_PADDING_RATIO * 2);\n const paddedHeight = height * (1 + VIEW_PADDING_RATIO * 2);\n const contentAspect = paddedWidth / Math.max(paddedHeight, MIN_VIEW_SIZE);\n const viewportAspect = viewportWidth / viewportHeight;\n\n let viewWidth = paddedWidth;\n let viewHeight = paddedHeight;\n if (contentAspect > viewportAspect) {\n viewHeight = viewWidth / viewportAspect;\n } else {\n viewWidth = viewHeight * viewportAspect;\n }\n\n return {\n x: (width - viewWidth) / 2,\n y: (height - viewHeight) / 2,\n width: Math.max(viewWidth, MIN_VIEW_SIZE),\n height: Math.max(viewHeight, MIN_VIEW_SIZE)\n };\n}\n\nfunction clampViewBox(nextViewBox, baseViewBox) {\n const minWidth = Math.max(baseViewBox.width / MAX_ZOOM_IN, MIN_VIEW_SIZE);\n const minHeight = Math.max(baseViewBox.height / MAX_ZOOM_IN, MIN_VIEW_SIZE);\n const maxWidth = Math.max(baseViewBox.width * MAX_ZOOM_OUT, MIN_VIEW_SIZE);\n const maxHeight = Math.max(baseViewBox.height * MAX_ZOOM_OUT, MIN_VIEW_SIZE);\n return {\n x: Number(nextViewBox.x) || 0,\n y: Number(nextViewBox.y) || 0,\n width: Math.min(Math.max(Number(nextViewBox.width) || baseViewBox.width, minWidth), maxWidth),\n height: Math.min(Math.max(Number(nextViewBox.height) || baseViewBox.height, minHeight), maxHeight)\n };\n}\n\nfunction areViewBoxesEqual(a, b) {\n return (\n Math.abs((Number(a?.x) || 0) - (Number(b?.x) || 0)) < VIEWBOX_EPSILON &&\n Math.abs((Number(a?.y) || 0) - (Number(b?.y) || 0)) < VIEWBOX_EPSILON &&\n Math.abs((Number(a?.width) || 0) - (Number(b?.width) || 0)) < VIEWBOX_EPSILON &&\n Math.abs((Number(a?.height) || 0) - (Number(b?.height) || 0)) < VIEWBOX_EPSILON\n );\n}\n\nfunction canvasToBlob(canvas) {\n return new Promise((resolve, reject) => {\n if (typeof canvas.toBlob === \"function\") {\n canvas.toBlob((value) => {\n if (value) {\n resolve(value);\n return;\n }\n reject(new Error(\"Failed to encode screenshot\"));\n }, \"image/png\");\n return;\n }\n\n try {\n const dataUrl = canvas.toDataURL(\"image/png\");\n const base64 = dataUrl.split(\",\")[1] || \"\";\n const bytes = Uint8Array.from(atob(base64), (char) => char.charCodeAt(0));\n resolve(new Blob([bytes], { type: \"image/png\" }));\n } catch (error) {\n reject(error instanceof Error ? error : new Error(\"Failed to encode screenshot\"));\n }\n });\n}\n\nasync function buildSvgScreenshotBlob(svgElement, { width, height, backgroundColor }) {\n const serializer = new XMLSerializer();\n const svgMarkup = serializer.serializeToString(svgElement);\n const blob = new Blob([svgMarkup], { type: \"image/svg+xml;charset=utf-8\" });\n const objectUrl = URL.createObjectURL(blob);\n\n try {\n const image = await new Promise((resolve, reject) => {\n const nextImage = new Image();\n nextImage.onload = () => resolve(nextImage);\n nextImage.onerror = () => reject(new Error(\"Failed to render DXF screenshot\"));\n nextImage.src = objectUrl;\n });\n\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Failed to create screenshot canvas\");\n }\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n context.drawImage(image, 0, 0, width, height);\n return await canvasToBlob(canvas);\n } finally {\n URL.revokeObjectURL(objectUrl);\n }\n}\n\nconst DxfViewer = forwardRef(function DxfViewer({\n dxfData,\n modelKey,\n themeSettings = null,\n showViewPlane = true,\n viewPlaneOffsetRight = 16,\n viewPlaneOffsetBottom = \"1rem\",\n viewPlaneHeader = null,\n onViewerAlertChange\n}, ref) {\n const containerRef = useRef(null);\n const svgRef = useRef(null);\n const dragStateRef = useRef(null);\n const previousModelKeyRef = useRef(modelKey);\n const [viewportSize, setViewportSize] = useState({ width: 0, height: 0 });\n const [viewBox, setViewBox] = useState({ x: 0, y: 0, width: 1, height: 1 });\n const palette = readPalette();\n const materialFill = resolveThemeFillColor(themeSettings?.materials || {}, 0);\n\n const boundsWidth = Math.max(Number(dxfData?.bounds?.width) || 0, MIN_VIEW_SIZE);\n const boundsHeight = Math.max(Number(dxfData?.bounds?.height) || 0, MIN_VIEW_SIZE);\n const fillPathData = useMemo(() => {\n try {\n return buildDxfMaterialFillPathData(dxfData);\n } catch {\n return \"\";\n }\n }, [dxfData]);\n const fittedViewBox = useMemo(\n () => buildFittedViewBox(\n { width: boundsWidth, height: boundsHeight },\n viewportSize\n ),\n [boundsHeight, boundsWidth, viewportSize.height, viewportSize.width]\n );\n\n useEffect(() => {\n onViewerAlertChange?.(null);\n }, [modelKey, onViewerAlertChange]);\n\n useEffect(() => {\n const element = containerRef.current;\n if (!element || typeof ResizeObserver !== \"function\") {\n return undefined;\n }\n\n const observer = new ResizeObserver((entries) => {\n const nextEntry = entries[0];\n if (!nextEntry) {\n return;\n }\n setViewportSize((current) => {\n const nextWidth = nextEntry.contentRect.width;\n const nextHeight = nextEntry.contentRect.height;\n if (current.width === nextWidth && current.height === nextHeight) {\n return current;\n }\n return {\n width: nextWidth,\n height: nextHeight\n };\n });\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, []);\n\n useEffect(() => {\n const modelChanged = previousModelKeyRef.current !== modelKey;\n previousModelKeyRef.current = modelKey;\n\n setViewBox((current) => {\n if (!modelChanged && areViewBoxesEqual(current, fittedViewBox)) {\n return current;\n }\n return fittedViewBox;\n });\n }, [\n fittedViewBox.height,\n fittedViewBox.width,\n fittedViewBox.x,\n fittedViewBox.y,\n modelKey\n ]);\n\n useEffect(() => {\n const clearDrag = () => {\n dragStateRef.current = null;\n };\n window.addEventListener(\"pointerup\", clearDrag);\n window.addEventListener(\"pointercancel\", clearDrag);\n return () => {\n window.removeEventListener(\"pointerup\", clearDrag);\n window.removeEventListener(\"pointercancel\", clearDrag);\n };\n }, []);\n\n useImperativeHandle(ref, () => ({\n async captureScreenshot({ filename = \"cad-screenshot.png\", mode = \"download\" } = {}) {\n const container = containerRef.current;\n const svgElement = svgRef.current;\n if (!container || !svgElement) {\n throw new Error(\"CAD Viewer not ready\");\n }\n\n const rect = container.getBoundingClientRect();\n const pixelRatio = Math.max(window.devicePixelRatio || 1, 1);\n const width = Math.max(1, Math.round(rect.width * pixelRatio));\n const height = Math.max(1, Math.round(rect.height * pixelRatio));\n const blobPromise = buildSvgScreenshotBlob(svgElement, {\n width,\n height,\n backgroundColor: palette.background\n });\n\n if (mode === \"clipboard\") {\n return await copyImageBlobToClipboard(blobPromise);\n }\n\n const blob = await blobPromise;\n return triggerBlobDownload(blob, { filename });\n }\n }), [palette.background]);\n\n const handlePointerDown = (event) => {\n if (event.button !== 0) {\n return;\n }\n event.currentTarget.setPointerCapture?.(event.pointerId);\n dragStateRef.current = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n };\n\n const handlePointerMove = (event) => {\n const dragState = dragStateRef.current;\n const rect = containerRef.current?.getBoundingClientRect();\n if (!dragState || !rect || !rect.width || !rect.height) {\n return;\n }\n\n const deltaX = event.clientX - dragState.clientX;\n const deltaY = event.clientY - dragState.clientY;\n dragStateRef.current = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n\n setViewBox((current) => ({\n ...current,\n x: current.x - (deltaX / rect.width) * current.width,\n y: current.y - (deltaY / rect.height) * current.height\n }));\n };\n\n const handleWheel = (event) => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect || !rect.width || !rect.height) {\n return;\n }\n\n event.preventDefault();\n const cursorX = (event.clientX - rect.left) / rect.width;\n const cursorY = (event.clientY - rect.top) / rect.height;\n const scale = event.deltaY > 0 ? WHEEL_ZOOM_FACTOR : 1 / WHEEL_ZOOM_FACTOR;\n\n setViewBox((current) => {\n const nextWidth = current.width * scale;\n const nextHeight = current.height * scale;\n const anchorX = current.x + current.width * cursorX;\n const anchorY = current.y + current.height * cursorY;\n return clampViewBox(\n {\n x: anchorX - nextWidth * cursorX,\n y: anchorY - nextHeight * cursorY,\n width: nextWidth,\n height: nextHeight\n },\n fittedViewBox\n );\n });\n };\n\n return (\n {\n setViewBox(fittedViewBox);\n }}\n onWheel={handleWheel}\n >\n
\n
{\n setViewBox(fittedViewBox);\n }}\n activateDefaultViewPlane={() => {\n setViewBox(fittedViewBox);\n }}\n />\n \n );\n});\n\nexport default DxfViewer;\n","import * as THREE from \"three\";\n\nexport const WORLD_UP = Object.freeze([0, 0, 1]);\nexport const TOP_VIEW_UP = Object.freeze([0, 1, 0]);\n\nexport const RENDER_CAMERA_PRESETS = Object.freeze({\n front: Object.freeze({ name: \"front\", direction: Object.freeze([0, -1, 0]), up: WORLD_UP }),\n back: Object.freeze({ name: \"back\", direction: Object.freeze([0, 1, 0]), up: WORLD_UP }),\n right: Object.freeze({ name: \"right\", direction: Object.freeze([1, 0, 0]), up: WORLD_UP }),\n left: Object.freeze({ name: \"left\", direction: Object.freeze([-1, 0, 0]), up: WORLD_UP }),\n top: Object.freeze({ name: \"top\", direction: Object.freeze([0, 0, 1]), up: TOP_VIEW_UP }),\n bottom: Object.freeze({ name: \"bottom\", direction: Object.freeze([0, 0, -1]), up: TOP_VIEW_UP }),\n iso: Object.freeze({ name: \"iso\", direction: Object.freeze([1, -1, 0.8]), up: WORLD_UP }),\n isometric: Object.freeze({ name: \"iso\", direction: Object.freeze([1, -1, 0.8]), up: WORLD_UP }),\n side: Object.freeze({ name: \"side\", direction: Object.freeze([1, 0, 0]), up: WORLD_UP })\n});\n\nexport const RENDER_VIEW_PRESETS = RENDER_CAMERA_PRESETS;\n\nconst DEFAULT_CAMERA_PRESET = \"iso\";\nconst CAMERA_SPEC_KEYS = Object.freeze([\"preset\", \"position\", \"target\", \"up\", \"zoom\", \"direction\", \"name\"]);\n\nfunction isPlainObject(value) {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction toFiniteNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction normalizeVector(value, {\n fieldName = \"camera vector\",\n required = false,\n nonZero = false,\n strict = true\n} = {}) {\n if (value === undefined || value === null) {\n if (required && strict) {\n throw new Error(`${fieldName} must be a three-number array`);\n }\n return null;\n }\n if (!Array.isArray(value) || value.length < 3) {\n if (strict) {\n throw new Error(`${fieldName} must be a three-number array`);\n }\n return null;\n }\n const vector = [\n Number(value[0]),\n Number(value[1]),\n Number(value[2])\n ];\n if (!vector.every(Number.isFinite)) {\n if (strict) {\n throw new Error(`${fieldName} must contain only finite numbers`);\n }\n return null;\n }\n if (nonZero && vector[0] ** 2 + vector[1] ** 2 + vector[2] ** 2 <= 1e-12) {\n if (strict) {\n throw new Error(`${fieldName} must not be the zero vector`);\n }\n return null;\n }\n return vector;\n}\n\nexport function cloneCameraVector(vector) {\n return normalizeVector(vector, { strict: false });\n}\n\nexport function normalizeCameraZoom(value, fallback = 1, {\n fieldName = \"camera.zoom\",\n strict = false\n} = {}) {\n if (value === undefined || value === null || value === \"\") {\n return fallback;\n }\n const numericValue = Number(value);\n if (Number.isFinite(numericValue) && numericValue > 0) {\n return numericValue;\n }\n if (strict) {\n throw new Error(`${fieldName} must be a positive finite number`);\n }\n return fallback;\n}\n\nfunction clonePreset(preset) {\n return {\n name: preset.name,\n direction: [...preset.direction],\n up: [...preset.up]\n };\n}\n\nfunction cameraPresetByName(name, {\n presets = RENDER_CAMERA_PRESETS,\n strict = true\n} = {}) {\n const raw = String(name || DEFAULT_CAMERA_PRESET).trim().toLowerCase();\n if (presets[raw]) {\n return clonePreset(presets[raw]);\n }\n const parts = raw.split(\":\").map((entry) => Number(entry));\n if (parts.length >= 2 && parts.every(Number.isFinite)) {\n const azimuth = (parts[0] * Math.PI) / 180;\n const elevation = (parts[1] * Math.PI) / 180;\n const cosElevation = Math.cos(elevation);\n return {\n name: `${parts[0]}:${parts[1]}`,\n direction: [\n Math.sin(azimuth) * cosElevation,\n -Math.cos(azimuth) * cosElevation,\n Math.sin(elevation)\n ],\n up: [...WORLD_UP]\n };\n }\n if (strict) {\n throw new Error(`Unknown camera preset: ${name}`);\n }\n return clonePreset(presets[DEFAULT_CAMERA_PRESET]);\n}\n\nfunction parseCameraJsonString(raw, { strict = true } = {}) {\n const text = String(raw || \"\").trim();\n if (!text.startsWith(\"{\")) {\n return null;\n }\n try {\n const parsed = JSON.parse(text);\n if (!isPlainObject(parsed)) {\n throw new Error(\"camera JSON must be an object\");\n }\n return parsed;\n } catch (error) {\n if (strict) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid camera JSON: ${message}`);\n }\n return null;\n }\n}\n\nfunction validateCameraSpecKeys(spec) {\n const unknownKeys = Object.keys(spec).filter((key) => !CAMERA_SPEC_KEYS.includes(key));\n if (unknownKeys.length) {\n throw new Error(`Unsupported camera fields: ${unknownKeys.join(\", \")}`);\n }\n}\n\nexport function normalizeCameraSpec(rawCamera = DEFAULT_CAMERA_PRESET, {\n presets = RENDER_CAMERA_PRESETS,\n strict = true\n} = {}) {\n const parsedJson = typeof rawCamera === \"string\"\n ? parseCameraJsonString(rawCamera, { strict })\n : null;\n const source = parsedJson || rawCamera;\n if (!isPlainObject(source)) {\n const preset = cameraPresetByName(source || DEFAULT_CAMERA_PRESET, { presets, strict });\n return {\n sourceKind: \"string\",\n name: preset.name,\n preset: preset.name,\n direction: preset.direction,\n position: null,\n target: null,\n up: preset.up,\n zoom: 1,\n hasExplicitPosition: false,\n hasExplicitTarget: false,\n hasExplicitUp: false,\n hasExplicitZoom: false\n };\n }\n\n validateCameraSpecKeys(source);\n const rawPreset = source.preset ?? DEFAULT_CAMERA_PRESET;\n const preset = cameraPresetByName(rawPreset, { presets, strict });\n const direction = normalizeVector(source.direction, {\n fieldName: \"camera.direction\",\n nonZero: true,\n strict\n }) || preset.direction;\n const position = normalizeVector(source.position, {\n fieldName: \"camera.position\",\n strict\n });\n const target = normalizeVector(source.target, {\n fieldName: \"camera.target\",\n strict\n });\n const up = normalizeVector(source.up, {\n fieldName: \"camera.up\",\n nonZero: true,\n strict\n }) || preset.up || [...WORLD_UP];\n const hasExplicitZoom = Object.prototype.hasOwnProperty.call(source, \"zoom\");\n return {\n sourceKind: \"object\",\n name: String(source.name || preset.name || \"custom\"),\n preset: preset.name,\n direction,\n position,\n target,\n up,\n zoom: normalizeCameraZoom(source.zoom, 1, { strict, fieldName: \"camera.zoom\" }),\n hasExplicitPosition: Object.prototype.hasOwnProperty.call(source, \"position\"),\n hasExplicitTarget: Object.prototype.hasOwnProperty.call(source, \"target\"),\n hasExplicitUp: Object.prototype.hasOwnProperty.call(source, \"up\"),\n hasExplicitZoom\n };\n}\n\nfunction settingsForCamera(sceneScale, settingsByScale) {\n if (settingsByScale?.[sceneScale]) {\n return settingsByScale[sceneScale];\n }\n if (settingsByScale?.cad) {\n return settingsByScale.cad;\n }\n return {\n minBoundsSpan: 1,\n minModelRadius: 1,\n minCameraDistance: 10,\n minCameraFar: 1000\n };\n}\n\nfunction centerAndRadiusFromBounds(bounds, sceneScale, settingsByScale) {\n const settings = settingsForCamera(sceneScale, settingsByScale);\n const min = Array.isArray(bounds?.min) ? bounds.min : [0, 0, 0];\n const max = Array.isArray(bounds?.max) ? bounds.max : [1, 1, 1];\n const center = new THREE.Vector3(\n (toFiniteNumber(min[0]) + toFiniteNumber(max[0], 1)) / 2,\n (toFiniteNumber(min[1]) + toFiniteNumber(max[1], 1)) / 2,\n (toFiniteNumber(min[2]) + toFiniteNumber(max[2], 1)) / 2\n );\n const size = new THREE.Vector3(\n Math.max(toFiniteNumber(max[0], 1) - toFiniteNumber(min[0]), settings.minBoundsSpan),\n Math.max(toFiniteNumber(max[1], 1) - toFiniteNumber(min[1]), settings.minBoundsSpan),\n Math.max(toFiniteNumber(max[2], 1) - toFiniteNumber(min[2]), settings.minBoundsSpan)\n );\n return {\n center,\n radius: Math.max(size.length() / 2, settings.minModelRadius),\n size\n };\n}\n\nfunction vectorFromArray(vector) {\n return new THREE.Vector3(vector[0], vector[1], vector[2]);\n}\n\nexport function resolveCameraView(rawCamera = DEFAULT_CAMERA_PRESET, options = {}) {\n const spec = normalizeCameraSpec(rawCamera, options);\n const target = spec.target ? vectorFromArray(spec.target) : null;\n const position = spec.position ? vectorFromArray(spec.position) : null;\n const direction = position && target\n ? position.clone().sub(target).normalize().toArray()\n : normalizeVector(spec.direction, {\n fieldName: \"camera.direction\",\n nonZero: true,\n strict: false\n }) || [...RENDER_CAMERA_PRESETS[DEFAULT_CAMERA_PRESET].direction];\n return {\n name: spec.name,\n direction,\n up: [...(spec.up || WORLD_UP)],\n zoom: spec.zoom\n };\n}\n\nexport function resolveCameraSnapshot(rawCamera = DEFAULT_CAMERA_PRESET, bounds = null, {\n sceneScale = \"cad\",\n settingsByScale = null,\n presets = RENDER_CAMERA_PRESETS,\n strict = true\n} = {}) {\n const spec = normalizeCameraSpec(rawCamera, { presets, strict });\n const settings = settingsForCamera(sceneScale, settingsByScale);\n const { center, radius, size } = centerAndRadiusFromBounds(bounds, sceneScale, settingsByScale);\n const target = spec.target ? vectorFromArray(spec.target) : center.clone();\n const direction = normalizeVector(spec.direction, {\n fieldName: \"camera.direction\",\n nonZero: true,\n strict\n }) || [...RENDER_CAMERA_PRESETS[DEFAULT_CAMERA_PRESET].direction];\n const position = spec.position\n ? vectorFromArray(spec.position)\n : target.clone().add(vectorFromArray(direction).normalize().multiplyScalar(\n Math.max(radius * 3.2, settings.minCameraDistance || settings.minModelRadius * 10 || 10)\n ));\n const resolvedDirection = position.clone().sub(target);\n if (resolvedDirection.lengthSq() <= 1e-12) {\n throw new Error(\"camera.position must differ from camera.target\");\n }\n const up = vectorFromArray(spec.up || WORLD_UP);\n if (up.lengthSq() <= 1e-12) {\n throw new Error(\"camera.up must not be the zero vector\");\n }\n return {\n name: spec.name,\n preset: spec.preset,\n position: position.toArray(),\n target: target.toArray(),\n up: up.normalize().toArray(),\n zoom: spec.zoom,\n direction: resolvedDirection.normalize().toArray(),\n view: {\n name: spec.name,\n direction: resolvedDirection.normalize().toArray(),\n up: up.normalize().toArray(),\n zoom: spec.zoom\n },\n sourceKind: spec.sourceKind,\n hasExplicitPosition: spec.hasExplicitPosition,\n hasExplicitTarget: spec.hasExplicitTarget,\n hasExplicitUp: spec.hasExplicitUp,\n hasExplicitZoom: spec.hasExplicitZoom,\n radius,\n size: size.toArray()\n };\n}\n\nexport function cameraSpecUsesPerspectiveProjection(rawCamera = DEFAULT_CAMERA_PRESET, options = {}) {\n const spec = normalizeCameraSpec(rawCamera, options);\n return spec.sourceKind === \"object\" && (\n spec.hasExplicitPosition ||\n spec.hasExplicitTarget ||\n spec.hasExplicitUp\n );\n}\n","const HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\nexport const MAX_THEME_FILL_COLORS = 50;\nexport const CAD_EDGE_COLOR = \"#132232\";\nexport const CAD_EDGE_HIGHLIGHT_COLOR = \"#8dc5ff\";\nexport const CAD_EDGE_CLASS_IDS = Object.freeze([\"feature\", \"tangent\", \"seam\", \"degenerate\"]);\n\nconst CAD_EDGE_CLASS_SETTINGS = Object.freeze({\n feature: Object.freeze({\n opacity: 1,\n thickness: 1.15\n }),\n tangent: Object.freeze({\n opacity: 0.5,\n thickness: 1.15\n }),\n seam: Object.freeze({\n opacity: 0.85,\n thickness: 1.15\n }),\n degenerate: Object.freeze({\n opacity: 1,\n thickness: 0\n })\n});\n\nconst CAD_THEME_EDGE_SETTINGS = Object.freeze({\n enabled: true,\n contrastMode: \"manual\",\n color: CAD_EDGE_COLOR,\n thickness: 1,\n classes: CAD_EDGE_CLASS_SETTINGS,\n highlightColor: CAD_EDGE_HIGHLIGHT_COLOR,\n highlightOpacity: 1,\n highlightThickness: 3,\n silhouette: false,\n silhouetteScale: 0\n});\n\nconst DISABLED_THEME_EDGE_SETTINGS = Object.freeze({\n ...CAD_THEME_EDGE_SETTINGS,\n enabled: false\n});\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizeNumber(value, fallback, min = -Infinity, max = Infinity) {\n const numericValue = Number(value);\n if (!Number.isFinite(numericValue)) {\n return fallback;\n }\n return clamp(numericValue, min, max);\n}\n\nfunction normalizeColor(value, fallback) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return fallback;\n }\n return normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`.toLowerCase()\n : normalized.toLowerCase();\n}\n\nexport function normalizeThemeFillColors(value, fallback = DEFAULT_THEME_SETTINGS?.materials?.defaultColor || \"#ffffff\") {\n const values = Array.isArray(value) ? value : [value];\n const fillColors = values\n .map((entry) => normalizeColor(entry, \"\"))\n .filter(Boolean)\n .slice(0, MAX_THEME_FILL_COLORS);\n if (fillColors.length) {\n return fillColors;\n }\n return [normalizeColor(fallback, \"#ffffff\")];\n}\n\nexport function resolveThemeFillColor(materials = {}, index = 0) {\n const fillColors = normalizeThemeFillColors(\n materials.fillColors,\n materials.defaultColor || DEFAULT_THEME_SETTINGS?.materials?.defaultColor || \"#ffffff\"\n );\n const cycleColors = normalizeBoolean(\n materials.cycleColors,\n DEFAULT_THEME_SETTINGS?.materials?.cycleColors || false\n );\n const colorIndex = cycleColors ? Math.max(Math.floor(Number(index) || 0), 0) % fillColors.length : 0;\n return fillColors[colorIndex];\n}\n\nfunction hexColorToLinearRgb(value, fallback = \"#000000\") {\n const hex = normalizeColor(value, fallback);\n const expanded = hex.length === 4\n ? `#${hex[1]}${hex[1]}${hex[2]}${hex[2]}${hex[3]}${hex[3]}`\n : hex;\n const channel = (offset) => {\n const srgb = parseInt(expanded.slice(offset, offset + 2), 16) / 255;\n return srgb <= 0.03928\n ? srgb / 12.92\n : ((srgb + 0.055) / 1.055) ** 2.4;\n };\n return {\n r: channel(1),\n g: channel(3),\n b: channel(5)\n };\n}\n\nfunction relativeLuminance(value, fallback = \"#000000\") {\n const rgb = hexColorToLinearRgb(value, fallback);\n return (0.2126 * rgb.r) + (0.7152 * rgb.g) + (0.0722 * rgb.b);\n}\n\nfunction normalizeBoolean(value, fallback = false) {\n if (typeof value === \"boolean\") {\n return value;\n }\n return fallback;\n}\n\nfunction normalizeBackgroundType(value, fallback = \"solid\") {\n const normalized = String(value || \"\").trim().toLowerCase();\n return [\"solid\", \"linear\", \"radial\", \"transparent\"].includes(normalized)\n ? normalized\n : fallback;\n}\n\nfunction normalizeMaterialTintMode(value, fallback = \"multiply\") {\n const normalized = String(value || \"\").trim().toLowerCase();\n return [\"multiply\", \"blend\"].includes(normalized)\n ? normalized\n : fallback;\n}\n\nfunction normalizeEdgeContrastMode(value, fallback = \"manual\") {\n const normalized = String(value || \"\").trim().toLowerCase();\n return [\"auto\", \"manual\"].includes(normalized)\n ? normalized\n : fallback;\n}\n\nfunction normalizeEdgeClassSettings(value = {}, fallback = CAD_EDGE_CLASS_SETTINGS) {\n const source = value && typeof value === \"object\" ? value : {};\n return Object.fromEntries(CAD_EDGE_CLASS_IDS.map((classId) => {\n const classSource = source[classId] && typeof source[classId] === \"object\" ? source[classId] : {};\n const classFallback = fallback?.[classId] || CAD_EDGE_CLASS_SETTINGS[classId];\n const legacyDisabled = classSource.enabled === false;\n return [classId, {\n opacity: normalizeNumber(classSource.opacity, classFallback.opacity, 0, 1),\n thickness: legacyDisabled\n ? 0\n : normalizeNumber(classSource.thickness, classFallback.thickness, 0, 6)\n }];\n }));\n}\n\nexport const THEME_FLOOR_MODES = Object.freeze({\n STAGE: \"stage\",\n GRID: \"grid\",\n NONE: \"none\"\n});\n\nexport const THEME_COLOR_MODES = Object.freeze({\n SYSTEM: \"system\",\n LIGHT: \"light\",\n DARK: \"dark\"\n});\n\nconst THEME_COLOR_MODE_VALUES = Object.freeze(Object.values(THEME_COLOR_MODES));\n\nfunction normalizeThemeColorMode(value, fallback = THEME_COLOR_MODES.SYSTEM) {\n const normalized = String(value || \"\").trim().toLowerCase();\n return THEME_COLOR_MODE_VALUES.includes(normalized) ? normalized : fallback;\n}\n\nconst THEME_MODE_COLOR_PATHS = Object.freeze([\n Object.freeze([\"edges\", \"color\"]),\n Object.freeze([\"background\", \"solidColor\"]),\n Object.freeze([\"background\", \"linearStart\"]),\n Object.freeze([\"background\", \"linearEnd\"]),\n Object.freeze([\"background\", \"radialInner\"]),\n Object.freeze([\"background\", \"radialOuter\"]),\n Object.freeze([\"floor\", \"color\"]),\n Object.freeze([\"floor\", \"gridCenterColor\"]),\n Object.freeze([\"floor\", \"gridCellColor\"]),\n Object.freeze([\"lighting\", \"directional\", \"color\"]),\n Object.freeze([\"lighting\", \"spot\", \"color\"]),\n Object.freeze([\"lighting\", \"point\", \"color\"]),\n Object.freeze([\"lighting\", \"ambient\", \"color\"]),\n Object.freeze([\"lighting\", \"hemisphere\", \"skyColor\"]),\n Object.freeze([\"lighting\", \"hemisphere\", \"groundColor\"])\n]);\n\nfunction getPathValue(source, path) {\n return path.reduce((value, key) => (\n value && typeof value === \"object\" ? value[key] : undefined\n ), source);\n}\n\nfunction setPathValue(target, path, value) {\n let cursor = target;\n for (let index = 0; index < path.length - 1; index += 1) {\n const key = path[index];\n if (!cursor[key] || typeof cursor[key] !== \"object\" || Array.isArray(cursor[key])) {\n cursor[key] = {};\n }\n cursor = cursor[key];\n }\n cursor[path[path.length - 1]] = value;\n}\n\nfunction deepClone(value) {\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction createThemeModeColorOverridesFromSettings(settings = {}, fallbackSettings = settings) {\n const result = {};\n for (const path of THEME_MODE_COLOR_PATHS) {\n const fallback = getPathValue(fallbackSettings, path) || \"#ffffff\";\n setPathValue(result, path, normalizeColor(getPathValue(settings, path), fallback));\n }\n return result;\n}\n\nfunction createThemeModeColors(lightSettings = {}, darkSettings = lightSettings) {\n return Object.freeze({\n light: createThemeModeColorOverridesFromSettings(lightSettings, lightSettings),\n dark: createThemeModeColorOverridesFromSettings(darkSettings, lightSettings)\n });\n}\n\nfunction withThemeColorMode(settings, colorMode, modeColors = createThemeModeColors(settings, settings)) {\n return Object.freeze({\n ...settings,\n colorMode: normalizeThemeColorMode(colorMode),\n modeColors\n });\n}\n\nfunction normalizeThemeModeColors(value = {}, fallbackSettings = DEFAULT_THEME_SETTINGS) {\n const source = value && typeof value === \"object\" ? value : {};\n const fallback = fallbackSettings && typeof fallbackSettings === \"object\"\n ? fallbackSettings\n : DEFAULT_THEME_SETTINGS;\n const fallbackModeColors = fallback?.modeColors && typeof fallback.modeColors === \"object\"\n ? fallback.modeColors\n : createThemeModeColors(fallback, fallback);\n return {\n light: createThemeModeColorOverridesFromSettings(source.light, fallbackModeColors.light || fallback),\n dark: createThemeModeColorOverridesFromSettings(source.dark, fallbackModeColors.dark || fallback)\n };\n}\n\nfunction applyThemeModeColorOverrides(target, overrides = {}) {\n for (const path of THEME_MODE_COLOR_PATHS) {\n const value = getPathValue(overrides, path);\n if (value) {\n setPathValue(target, path, value);\n }\n }\n}\n\nexport const MIN_FLOOR_GRID_DENSITY = 0.25;\nexport const MAX_FLOOR_GRID_DENSITY = 4;\nexport const DEFAULT_FLOOR_GRID_SETTINGS = Object.freeze({\n gridCenterColor: \"#6b7280\",\n gridCellColor: \"#cbd5e1\",\n gridOpacity: 0.18,\n gridDensity: 1\n});\n\nfunction normalizeFloorMode(value, fallback = THEME_FLOOR_MODES.STAGE) {\n const normalized = String(value || \"\").trim().toLowerCase();\n if (normalized === \"glass\") {\n return THEME_FLOOR_MODES.STAGE;\n }\n return Object.values(THEME_FLOOR_MODES).includes(normalized)\n ? normalized\n : fallback;\n}\n\nexport const ENVIRONMENT_PRESETS = Object.freeze([\n {\n id: \"studio-hdri-43\",\n label: \"Studio HDRI 43\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_43.jpg\"\n },\n {\n id: \"studio-hdri-41\",\n label: \"Studio HDRI 41\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_41.jpg\"\n },\n {\n id: \"studio-hdri-12\",\n label: \"Studio HDRI 12\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_12.jpg\"\n },\n {\n id: \"studio-hdri-17\",\n label: \"Studio HDRI 17\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_17.jpg\"\n },\n {\n id: \"studio-hdri-22\",\n label: \"Studio HDRI 22\",\n url: \"https://static.morflax.com/textures/env/Studio_HDRI_22.jpg\"\n },\n {\n id: \"colorful-1\",\n label: \"Colorful 1\",\n url: \"https://static.morflax.com/textures/env/colorful-1.jpg\"\n },\n {\n id: \"colorful-dark-1\",\n label: \"Colorful Dark 1\",\n url: \"https://static.morflax.com/textures/env/colorful-dark-1.jpg\"\n }\n]);\n\nconst WORKBENCH_FILL_COLORS = Object.freeze([\n \"#b6c4ce\",\n \"#f4a7a7\",\n \"#f8c77e\",\n \"#f7e38d\",\n \"#b9e88f\",\n \"#8fe3c0\",\n \"#92d7f5\",\n \"#a9b8ff\",\n \"#c7a8ff\",\n \"#f2a7d9\"\n]);\n\nconst BLUE_FILL_COLORS = Object.freeze([\"#4cc9f0\"]);\n\nconst MAGENTA_FILL_COLORS = Object.freeze([\"#ff4faf\"]);\n\nconst CLAY_FILL_COLORS = Object.freeze([\"#b9856e\"]);\n\nconst BEACH_FILL_COLORS = Object.freeze([\"#178f9f\", \"#ef7459\"]);\n\nconst TERMINAL_FILL_COLORS = Object.freeze([\"#0b7a3f\"]);\n\nconst TERMINAL_EDGE_COLOR = \"#66ff99\";\nconst TERMINAL_EDGE_HIGHLIGHT_COLOR = \"#b7ffc9\";\nconst TERMINAL_EDGE_CLASS_SETTINGS = Object.freeze({\n feature: Object.freeze({\n opacity: 1,\n thickness: 1.15\n }),\n tangent: Object.freeze({\n opacity: 0.84,\n thickness: 0.95\n }),\n seam: Object.freeze({\n opacity: 0.92,\n thickness: 1\n }),\n degenerate: Object.freeze({\n opacity: 0.72,\n thickness: 0.8\n })\n});\n\nconst TERMINAL_THEME_EDGE_SETTINGS = Object.freeze({\n ...CAD_THEME_EDGE_SETTINGS,\n enabled: true,\n color: TERMINAL_EDGE_COLOR,\n classes: TERMINAL_EDGE_CLASS_SETTINGS,\n highlightColor: TERMINAL_EDGE_HIGHLIGHT_COLOR,\n highlightOpacity: 1,\n highlightThickness: 3\n});\n\nconst CHARCOAL_FILL_COLORS = Object.freeze([\n \"#b6c4ce\",\n \"#8f9aa3\",\n \"#d3dae0\",\n \"#68737d\"\n]);\n\nfunction mixHexColors(colorA, colorB, amount = 0.5) {\n const from = normalizeColor(colorA, \"#000000\");\n const to = normalizeColor(colorB, from);\n const clampedAmount = clamp(Number(amount), 0, 1);\n const channel = (offset) => {\n const fromChannel = parseInt(from.slice(offset, offset + 2), 16);\n const toChannel = parseInt(to.slice(offset, offset + 2), 16);\n return Math.round(fromChannel + ((toChannel - fromChannel) * clampedAmount))\n .toString(16)\n .padStart(2, \"0\");\n };\n return `#${channel(1)}${channel(3)}${channel(5)}`;\n}\n\nfunction midpointPalette(primaryColors, secondaryColors) {\n const primary = Array.isArray(primaryColors) ? primaryColors : [];\n const secondary = Array.isArray(secondaryColors) ? secondaryColors : [];\n const colorCount = Math.max(primary.length, secondary.length);\n if (!colorCount) {\n return Object.freeze([\"#ffffff\"]);\n }\n\n return Object.freeze(Array.from({ length: colorCount }, (_, index) => {\n const primaryColor = primary[index] || primary.at(-1) || \"#ffffff\";\n const secondaryColor = secondary[index] || secondary.at(-1) || primaryColor;\n return mixHexColors(primaryColor, secondaryColor);\n }));\n}\n\nfunction createFloorGridSettings(floorColor, options = {}) {\n const normalizedFloorColor = normalizeColor(floorColor, \"#f1f5f9\");\n const lightFloor = relativeLuminance(normalizedFloorColor) >= 0.36;\n return {\n gridCenterColor: lightFloor\n ? mixHexColors(normalizedFloorColor, \"#0f172a\", 0.48)\n : mixHexColors(normalizedFloorColor, \"#f8fafc\", 0.46),\n gridCellColor: lightFloor\n ? mixHexColors(normalizedFloorColor, \"#475569\", 0.26)\n : mixHexColors(normalizedFloorColor, \"#cbd5e1\", 0.22),\n gridOpacity: normalizeNumber(options.opacity, DEFAULT_FLOOR_GRID_SETTINGS.gridOpacity, 0, 1),\n gridDensity: normalizeNumber(\n options.density,\n DEFAULT_FLOOR_GRID_SETTINGS.gridDensity,\n MIN_FLOOR_GRID_DENSITY,\n MAX_FLOOR_GRID_DENSITY\n )\n };\n}\n\nconst CINEMATIC_THEME_SETTINGS = Object.freeze({\n materials: {\n defaultColor: WORKBENCH_FILL_COLORS[0],\n fillColors: WORKBENCH_FILL_COLORS,\n cycleColors: false,\n overrideSourceColors: false,\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.12,\n brightness: 1.02,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n },\n edges: {\n ...CAD_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#edf5fb\",\n linearStart: \"#fbfdff\",\n linearEnd: \"#b8cadb\",\n linearAngle: 135,\n radialInner: \"#ffffff\",\n radialOuter: \"#b3c4d4\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#edf3f8\",\n roughness: 0.7,\n reflectivity: 0.14,\n shadowOpacity: 0.16,\n horizonBlend: 0.18,\n ...createFloorGridSettings(\"#edf3f8\", { opacity: 0.2 })\n },\n environment: {\n enabled: true,\n presetId: \"studio-hdri-43\",\n intensity: 0.32,\n rotationY: -0.25,\n useAsBackground: false\n },\n lighting: {\n toneMappingExposure: 1.16,\n directional: {\n enabled: true,\n color: \"#ffffff\",\n intensity: 1.16,\n position: {\n x: -210,\n y: 260,\n z: 270\n }\n },\n spot: {\n enabled: true,\n color: \"#f4fbff\",\n intensity: 0.52,\n angle: 0.74,\n distance: 0,\n position: {\n x: 190,\n y: 210,\n z: 170\n }\n },\n point: {\n enabled: true,\n color: \"#ffe2ba\",\n intensity: 0.28,\n distance: 0,\n position: {\n x: -240,\n y: 110,\n z: -210\n }\n },\n ambient: {\n enabled: true,\n color: \"#ffffff\",\n intensity: 0.4\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#ffffff\",\n groundColor: \"#d6e2ee\",\n intensity: 1.12\n }\n }\n});\n\nconst DARK_STUDIO_THEME_SETTINGS = Object.freeze({\n materials: {\n defaultColor: WORKBENCH_FILL_COLORS[0],\n fillColors: WORKBENCH_FILL_COLORS,\n cycleColors: false,\n overrideSourceColors: false,\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.2,\n contrast: 1.14,\n brightness: 1.06,\n roughness: 0.54,\n metalness: 0.02,\n clearcoat: 0.14,\n clearcoatRoughness: 0.4,\n opacity: 1,\n envMapIntensity: 0.5,\n emissiveIntensity: 0.03\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#081b2d\",\n linearStart: \"#18304a\",\n linearEnd: \"#030914\",\n linearAngle: 135,\n radialInner: \"#174267\",\n radialOuter: \"#030914\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#0a2238\",\n roughness: 0.38,\n reflectivity: 0.1,\n shadowOpacity: 0.42,\n horizonBlend: 0.1,\n ...createFloorGridSettings(\"#0a2238\", { opacity: 0.22 })\n },\n environment: {\n enabled: true,\n presetId: \"studio-hdri-43\",\n intensity: 0.18,\n rotationY: -0.25,\n useAsBackground: false\n },\n lighting: {\n toneMappingExposure: 1.22,\n directional: {\n enabled: true,\n color: \"#ffffff\",\n intensity: 1.42,\n position: {\n x: -210,\n y: 260,\n z: 270\n }\n },\n spot: {\n enabled: true,\n color: \"#70c4ff\",\n intensity: 0.24,\n angle: 0.74,\n distance: 0,\n position: {\n x: 190,\n y: 210,\n z: 170\n }\n },\n point: {\n enabled: true,\n color: \"#9bd0ff\",\n intensity: 0.36,\n distance: 0,\n position: {\n x: -240,\n y: 110,\n z: -210\n }\n },\n ambient: {\n enabled: true,\n color: \"#c6d8ea\",\n intensity: 0.24\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#ffffff\",\n groundColor: \"#020713\",\n intensity: 0.98\n }\n }\n});\n\nconst CODEX_DARK_STUDIO_THEME_SETTINGS = Object.freeze({\n ...DARK_STUDIO_THEME_SETTINGS,\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: CHARCOAL_FILL_COLORS[0],\n fillColors: CHARCOAL_FILL_COLORS\n },\n background: {\n ...DARK_STUDIO_THEME_SETTINGS.background,\n solidColor: \"#151617\",\n linearStart: \"#2a2b2d\",\n linearEnd: \"#070809\",\n radialInner: \"#303133\",\n radialOuter: \"#070809\"\n },\n floor: {\n ...DARK_STUDIO_THEME_SETTINGS.floor,\n color: \"#171819\",\n ...createFloorGridSettings(\"#171819\", { opacity: 0.22 })\n }\n});\n\nconst DARKOAL_FILL_COLORS = midpointPalette(\n DARK_STUDIO_THEME_SETTINGS.materials.fillColors,\n CODEX_DARK_STUDIO_THEME_SETTINGS.materials.fillColors\n);\n\nconst DARKOAL_THEME_SETTINGS = Object.freeze({\n ...DARK_STUDIO_THEME_SETTINGS,\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: DARKOAL_FILL_COLORS[0],\n fillColors: DARKOAL_FILL_COLORS\n },\n edges: {\n ...CAD_THEME_EDGE_SETTINGS\n },\n background: {\n ...DARK_STUDIO_THEME_SETTINGS.background,\n solidColor: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.solidColor, CODEX_DARK_STUDIO_THEME_SETTINGS.background.solidColor),\n linearStart: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.linearStart, CODEX_DARK_STUDIO_THEME_SETTINGS.background.linearStart),\n linearEnd: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.linearEnd, CODEX_DARK_STUDIO_THEME_SETTINGS.background.linearEnd),\n radialInner: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.radialInner, CODEX_DARK_STUDIO_THEME_SETTINGS.background.radialInner),\n radialOuter: mixHexColors(DARK_STUDIO_THEME_SETTINGS.background.radialOuter, CODEX_DARK_STUDIO_THEME_SETTINGS.background.radialOuter)\n },\n floor: {\n ...DARK_STUDIO_THEME_SETTINGS.floor,\n color: mixHexColors(DARK_STUDIO_THEME_SETTINGS.floor.color, CODEX_DARK_STUDIO_THEME_SETTINGS.floor.color),\n ...createFloorGridSettings(\n mixHexColors(DARK_STUDIO_THEME_SETTINGS.floor.color, CODEX_DARK_STUDIO_THEME_SETTINGS.floor.color),\n { opacity: 0.22 }\n )\n }\n});\n\nconst BLUE_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: BLUE_FILL_COLORS[0],\n fillColors: BLUE_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"radial\",\n solidColor: \"#04131f\",\n linearStart: \"#07253a\",\n linearEnd: \"#0b8edc\",\n linearAngle: 128,\n radialInner: \"#0b8edc\",\n radialOuter: \"#02070c\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#06324f\",\n roughness: 0.58,\n reflectivity: 0.2,\n shadowOpacity: 0.3,\n horizonBlend: 0.18,\n ...createFloorGridSettings(\"#06324f\", { opacity: 0.24 })\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\nconst PINK_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: MAGENTA_FILL_COLORS[0],\n fillColors: MAGENTA_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"radial\",\n solidColor: \"#281323\",\n linearStart: \"#7a1a52\",\n linearEnd: \"#301426\",\n linearAngle: 140,\n radialInner: \"#7f1a55\",\n radialOuter: \"#25101f\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#4a1833\",\n roughness: 0.56,\n reflectivity: 0.2,\n shadowOpacity: 0.26,\n horizonBlend: 0.22,\n ...createFloorGridSettings(\"#4a1833\", { opacity: 0.24 })\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\nconst CLAY_SUNRISE_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: CLAY_FILL_COLORS[0],\n fillColors: CLAY_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#f3eadc\",\n linearStart: \"#f7ead8\",\n linearEnd: \"#c88d5d\",\n linearAngle: 162,\n radialInner: \"#f7ead8\",\n radialOuter: \"#b06c43\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#d4a070\",\n roughness: 0.72,\n reflectivity: 0.14,\n shadowOpacity: 0.34,\n horizonBlend: 0.12,\n ...createFloorGridSettings(\"#d4a070\", { opacity: 0.18 })\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\nconst BEACH_THEME_SETTINGS = Object.freeze({\n materials: {\n ...CINEMATIC_THEME_SETTINGS.materials,\n defaultColor: BEACH_FILL_COLORS[0],\n fillColors: BEACH_FILL_COLORS,\n cycleColors: true\n },\n edges: {\n ...DISABLED_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"linear\",\n solidColor: \"#dff7f7\",\n linearStart: \"#fff4d6\",\n linearEnd: \"#47c5d6\",\n linearAngle: 152,\n radialInner: \"#fff8e8\",\n radialOuter: \"#1a8fb5\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#f2d59b\",\n roughness: 0.74,\n reflectivity: 0.18,\n shadowOpacity: 0.2,\n horizonBlend: 0.2,\n ...createFloorGridSettings(\"#f2d59b\", { opacity: 0.18 })\n },\n environment: {\n enabled: true,\n presetId: \"studio-hdri-12\",\n intensity: 0.36,\n rotationY: -0.18,\n useAsBackground: false\n },\n lighting: {\n toneMappingExposure: 1.18,\n directional: {\n enabled: true,\n color: \"#fff7df\",\n intensity: 1.3,\n position: {\n x: -220,\n y: 280,\n z: 250\n }\n },\n spot: {\n enabled: true,\n color: \"#e4fbff\",\n intensity: 0.36,\n angle: 0.72,\n distance: 0,\n position: {\n x: 190,\n y: 210,\n z: 170\n }\n },\n point: {\n enabled: true,\n color: \"#ffd08a\",\n intensity: 0.24,\n distance: 0,\n position: {\n x: -240,\n y: 110,\n z: -210\n }\n },\n ambient: {\n enabled: true,\n color: \"#fff8e6\",\n intensity: 0.34\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#bff8ff\",\n groundColor: \"#f2d59b\",\n intensity: 1.04\n }\n }\n});\n\nconst TERMINAL_THEME_SETTINGS = Object.freeze({\n materials: {\n ...DARK_STUDIO_THEME_SETTINGS.materials,\n defaultColor: TERMINAL_FILL_COLORS[0],\n fillColors: TERMINAL_FILL_COLORS,\n cycleColors: false\n },\n edges: {\n ...TERMINAL_THEME_EDGE_SETTINGS\n },\n background: {\n type: \"radial\",\n solidColor: \"#020403\",\n linearStart: \"#031109\",\n linearEnd: \"#000000\",\n linearAngle: 180,\n radialInner: \"#062414\",\n radialOuter: \"#000201\"\n },\n floor: {\n mode: THEME_FLOOR_MODES.GRID,\n color: \"#020403\",\n roughness: 0.58,\n reflectivity: 0.12,\n shadowOpacity: 0.35,\n horizonBlend: 0,\n gridCenterColor: TERMINAL_EDGE_COLOR,\n gridCellColor: \"#0c3d22\",\n gridOpacity: 0.34,\n gridDensity: 1.15\n },\n environment: DARK_STUDIO_THEME_SETTINGS.environment,\n lighting: DARK_STUDIO_THEME_SETTINGS.lighting\n});\n\n// Workbench light mode counterpart to the dark treatment below: the canvas\n// sits a few steps below pure white and the floor a step below that, so\n// white parts (which light toward pure white under the shared exposure)\n// keep a silhouette and the horizon reads as an intentional stage break.\n// The deeper hemisphere ground keeps shading gradation on white undersides.\nconst WORKBENCH_LIGHT_CANVAS_COLOR = \"#f0f4f9\";\nconst WORKBENCH_LIGHT_FLOOR_COLOR = \"#e2e9f0\";\n\nconst WORKBENCH_BASE_THEME_SETTINGS = Object.freeze({\n ...CINEMATIC_THEME_SETTINGS,\n background: {\n ...CINEMATIC_THEME_SETTINGS.background,\n type: \"solid\",\n solidColor: WORKBENCH_LIGHT_CANVAS_COLOR,\n linearStart: WORKBENCH_LIGHT_CANVAS_COLOR,\n linearEnd: WORKBENCH_LIGHT_CANVAS_COLOR,\n radialInner: WORKBENCH_LIGHT_CANVAS_COLOR,\n radialOuter: WORKBENCH_LIGHT_CANVAS_COLOR\n },\n edges: {\n ...CAD_THEME_EDGE_SETTINGS\n },\n floor: {\n ...CINEMATIC_THEME_SETTINGS.floor,\n color: WORKBENCH_LIGHT_FLOOR_COLOR,\n ...createFloorGridSettings(WORKBENCH_LIGHT_FLOOR_COLOR, { opacity: 0.2 })\n },\n environment: {\n ...CINEMATIC_THEME_SETTINGS.environment,\n enabled: false\n },\n lighting: {\n ...CINEMATIC_THEME_SETTINGS.lighting,\n hemisphere: {\n ...CINEMATIC_THEME_SETTINGS.lighting.hemisphere,\n groundColor: \"#c7d5e3\"\n }\n }\n});\n\n// Workbench dark mode treatment: a deep, slightly muted blue-slate. Mode\n// overrides can only swap colors, not light intensities, so dark-part\n// visibility is tuned entirely through these colors: lifted ambient and\n// hemisphere-ground fill so shaded faces of dark parts keep their form and\n// a canvas/floor luminance step for silhouette separation. Edges stay deep\n// navy so they read as subtle technical linework on light fills; wireframe\n// display relies on the automatic light-edge contrast fallback.\nconst WORKBENCH_DARK_FLOOR_COLOR = \"#202832\";\n\nconst WORKBENCH_DARK_THEME_SETTINGS = Object.freeze({\n ...DARKOAL_THEME_SETTINGS,\n edges: {\n ...CAD_THEME_EDGE_SETTINGS,\n color: \"#1c2836\"\n },\n background: {\n ...DARKOAL_THEME_SETTINGS.background,\n solidColor: \"#181f28\",\n linearStart: \"#242e3a\",\n linearEnd: \"#0c1016\",\n radialInner: \"#293443\",\n radialOuter: \"#0c1016\"\n },\n floor: {\n ...DARKOAL_THEME_SETTINGS.floor,\n color: WORKBENCH_DARK_FLOOR_COLOR,\n ...createFloorGridSettings(WORKBENCH_DARK_FLOOR_COLOR, { opacity: 0.22 })\n },\n lighting: {\n ...DARKOAL_THEME_SETTINGS.lighting,\n spot: {\n ...DARKOAL_THEME_SETTINGS.lighting.spot,\n color: \"#b3d4f2\"\n },\n point: {\n ...DARKOAL_THEME_SETTINGS.lighting.point,\n color: \"#bfd8f0\"\n },\n ambient: {\n ...DARKOAL_THEME_SETTINGS.lighting.ambient,\n color: \"#dfe7f0\"\n },\n hemisphere: {\n ...DARKOAL_THEME_SETTINGS.lighting.hemisphere,\n groundColor: \"#333d4b\"\n }\n }\n});\n\nconst WORKBENCH_THEME_SETTINGS = withThemeColorMode(\n WORKBENCH_BASE_THEME_SETTINGS,\n THEME_COLOR_MODES.SYSTEM,\n createThemeModeColors(WORKBENCH_BASE_THEME_SETTINGS, WORKBENCH_DARK_THEME_SETTINGS)\n);\n\nconst BLUE_THEME_PRESET_SETTINGS = withThemeColorMode(BLUE_THEME_SETTINGS, THEME_COLOR_MODES.DARK);\nconst PINK_THEME_PRESET_SETTINGS = withThemeColorMode(PINK_THEME_SETTINGS, THEME_COLOR_MODES.DARK);\nconst CLAY_SUNRISE_THEME_PRESET_SETTINGS = withThemeColorMode(CLAY_SUNRISE_THEME_SETTINGS, THEME_COLOR_MODES.LIGHT);\nconst BEACH_THEME_PRESET_SETTINGS = withThemeColorMode(BEACH_THEME_SETTINGS, THEME_COLOR_MODES.LIGHT);\nconst TERMINAL_THEME_PRESET_SETTINGS = withThemeColorMode(TERMINAL_THEME_SETTINGS, THEME_COLOR_MODES.DARK);\n\nexport const THEME_PRESETS = Object.freeze([\n {\n id: \"workbench\",\n label: \"Workbench\",\n description: \"Balanced CAD workbench lighting with system-aware light and dark canvas colors.\",\n preview: {\n background: \"#f0f4f9\",\n modelColor: \"#b6c4ce\",\n accentColor: \"#4ea7d8\"\n },\n settings: WORKBENCH_THEME_SETTINGS\n },\n {\n id: \"blue\",\n label: \"Blue\",\n description: \"Single cyan fill against deep-navy CAD lighting.\",\n preview: {\n background: BLUE_FILL_COLORS[0],\n modelColor: BLUE_FILL_COLORS[0],\n accentColor: BLUE_FILL_COLORS[0]\n },\n settings: BLUE_THEME_PRESET_SETTINGS\n },\n {\n id: \"pink\",\n label: \"Magenta\",\n description: \"Single saturated magenta fill against a near-black studio backdrop.\",\n preview: {\n background: MAGENTA_FILL_COLORS[0],\n modelColor: MAGENTA_FILL_COLORS[0],\n accentColor: MAGENTA_FILL_COLORS[0]\n },\n settings: PINK_THEME_PRESET_SETTINGS\n },\n {\n id: \"clay-sunrise\",\n label: \"Clay\",\n description: \"Single warm clay fill with a soft presentation stage.\",\n preview: {\n background: CLAY_FILL_COLORS[0],\n modelColor: CLAY_FILL_COLORS[0],\n accentColor: CLAY_FILL_COLORS[0]\n },\n settings: CLAY_SUNRISE_THEME_PRESET_SETTINGS\n },\n {\n id: \"beach\",\n label: \"Beach\",\n description: \"Two-color aqua-and-coral fill with warm beach presentation lighting.\",\n preview: {\n background: `linear-gradient(135deg, ${BEACH_FILL_COLORS[0]} 0%, ${BEACH_FILL_COLORS[0]} 50%, ${BEACH_FILL_COLORS[1]} 50%, ${BEACH_FILL_COLORS[1]} 100%)`,\n modelColor: BEACH_FILL_COLORS[0],\n accentColor: BEACH_FILL_COLORS[1]\n },\n settings: BEACH_THEME_PRESET_SETTINGS\n },\n {\n id: \"terminal\",\n label: \"Terminal\",\n description: \"Single terminal-green fill with green CAD edge linework and a dark grid floor.\",\n preview: {\n background: TERMINAL_FILL_COLORS[0],\n modelColor: TERMINAL_FILL_COLORS[0],\n accentColor: TERMINAL_FILL_COLORS[0]\n },\n settings: TERMINAL_THEME_PRESET_SETTINGS\n }\n]);\n\nconst THEME_PRESET_ID_ALIASES = Object.freeze({\n cinematic: \"workbench\",\n light: \"workbench\",\n dark: \"workbench\",\n charcoal: \"workbench\",\n darkoal: \"workbench\",\n \"dark-2\": \"workbench\"\n});\n\nexport const DEFAULT_THEME_PRESET_ID = \"workbench\";\n\nexport const DEFAULT_THEME_PRESET = Object.freeze(\n THEME_PRESETS.find((preset) => preset.id === DEFAULT_THEME_PRESET_ID) || THEME_PRESETS[0]\n);\n\nexport const DEFAULT_THEME_SETTINGS = Object.freeze(DEFAULT_THEME_PRESET.settings);\nexport const THEMES = THEME_PRESETS;\nexport const DEFAULT_THEME_ID = DEFAULT_THEME_PRESET_ID;\nexport const DEFAULT_THEME = DEFAULT_THEME_PRESET;\n\nexport function resolveSystemThemePresetId({ prefersDark = false } = {}) {\n return DEFAULT_THEME_PRESET_ID;\n}\n\nconst PRESET_ID_SET = new Set(ENVIRONMENT_PRESETS.map((preset) => preset.id));\nconst LEGACY_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#aeb9c3\",\n tintStrength: 0.28,\n saturation: 0.42,\n contrast: 1.02,\n brightness: 0.94,\n roughness: 0.46,\n metalness: 0.02,\n clearcoat: 0.18,\n clearcoatRoughness: 0.34,\n opacity: 1,\n envMapIntensity: 0.58\n});\nconst PREVIOUS_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#aeb9c3\",\n tintMode: \"blend\",\n tintStrength: 0.08,\n saturation: 1,\n contrast: 1.04,\n brightness: 1.02,\n roughness: 0.46,\n metalness: 0.02,\n clearcoat: 0.18,\n clearcoatRoughness: 0.34,\n opacity: 1,\n envMapIntensity: 0.58,\n emissiveIntensity: 0.06\n});\nconst DIM_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#aeb9c3\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.34,\n contrast: 1.02,\n brightness: 0.82,\n roughness: 0.76,\n metalness: 0,\n clearcoat: 0,\n clearcoatRoughness: 0.72,\n opacity: 1,\n envMapIntensity: 0.08,\n emissiveIntensity: 0.01\n});\nconst LOW_CONTRAST_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#bcc8d4\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.07,\n brightness: 1.04,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n});\nconst SOFT_CONTRAST_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#748899\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.07,\n brightness: 1.04,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n});\nconst FEATURE_CONTRAST_CINEMATIC_MATERIALS = Object.freeze({\n defaultColor: \"#556c7f\",\n tintMode: \"blend\",\n tintStrength: 0,\n saturation: 1.18,\n contrast: 1.12,\n brightness: 1.02,\n roughness: 0.58,\n metalness: 0.02,\n clearcoat: 0.12,\n clearcoatRoughness: 0.42,\n opacity: 1,\n envMapIntensity: 0.42,\n emissiveIntensity: 0.02\n});\nconst LEGACY_CINEMATIC_EDGES = Object.freeze({\n enabled: false,\n color: \"#8fa1b5\",\n thickness: 1\n});\nconst PREVIOUS_CINEMATIC_EDGES = Object.freeze({\n enabled: true,\n color: \"#8fa1b5\",\n thickness: 1.65\n});\nconst DIM_CINEMATIC_EDGES = Object.freeze({\n enabled: false,\n color: \"#8fa1b5\",\n thickness: 1\n});\nconst LOW_CONTRAST_CINEMATIC_EDGES = Object.freeze({\n enabled: false,\n color: \"#8fa1b5\",\n thickness: 1\n});\nconst LEGACY_CINEMATIC_BACKGROUND = Object.freeze({\n solidColor: \"#050711\",\n linearStart: \"#02040b\",\n linearEnd: \"#252f47\",\n linearAngle: 90,\n radialInner: \"#171d30\",\n radialOuter: \"#02040b\"\n});\nconst PREVIOUS_CINEMATIC_BACKGROUND = LEGACY_CINEMATIC_BACKGROUND;\nconst DIM_CINEMATIC_BACKGROUND = Object.freeze({\n solidColor: \"#0a0f18\",\n linearStart: \"#08111c\",\n linearEnd: \"#1f2c3d\",\n linearAngle: 90,\n radialInner: \"#182337\",\n radialOuter: \"#08111c\"\n});\nconst LEGACY_CINEMATIC_FLOOR = Object.freeze({\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#141a29\",\n roughness: 0.62,\n reflectivity: 0.22,\n shadowOpacity: 0.24,\n horizonBlend: 0.28\n});\nconst PREVIOUS_CINEMATIC_FLOOR = Object.freeze({\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#141a29\",\n roughness: 0.62,\n reflectivity: 0.06,\n shadowOpacity: 0.24,\n horizonBlend: 0.12\n});\nconst DIM_CINEMATIC_FLOOR = Object.freeze({\n mode: THEME_FLOOR_MODES.STAGE,\n color: \"#121a24\",\n roughness: 0.86,\n reflectivity: 0.06,\n shadowOpacity: 0.24,\n horizonBlend: 0.28\n});\nconst LEGACY_CINEMATIC_ENVIRONMENT = Object.freeze({\n enabled: true,\n presetId: \"studio-hdri-43\",\n intensity: 0.46,\n rotationY: -0.35,\n useAsBackground: false\n});\nconst DIM_CINEMATIC_ENVIRONMENT = Object.freeze({\n enabled: false,\n presetId: \"studio-hdri-43\",\n intensity: 0,\n rotationY: -0.35,\n useAsBackground: false\n});\nconst PREVIOUS_CINEMATIC_LIGHTING = Object.freeze({\n toneMappingExposure: 1.2,\n directional: {\n enabled: true,\n color: \"#f1f6fb\",\n intensity: 2.45,\n position: {\n x: -190,\n y: 300,\n z: 210\n }\n },\n spot: {\n enabled: true,\n color: \"#dbeafe\",\n intensity: 1.34,\n angle: 0.72,\n distance: 0,\n position: {\n x: 160,\n y: 245,\n z: 126\n }\n },\n point: {\n enabled: true,\n color: \"#8fb6d8\",\n intensity: 0.34,\n distance: 0,\n position: {\n x: -260,\n y: 95,\n z: -220\n }\n },\n ambient: {\n enabled: true,\n color: \"#1e293b\",\n intensity: 0.2\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#dbe7f3\",\n groundColor: \"#070a14\",\n intensity: 0.68\n }\n});\nconst DIM_CINEMATIC_LIGHTING = Object.freeze({\n toneMappingExposure: 1.03,\n directional: {\n enabled: true,\n color: \"#f1f6fb\",\n intensity: 1.28,\n position: {\n x: -190,\n y: 300,\n z: 210\n }\n },\n spot: {\n enabled: true,\n color: \"#dbeafe\",\n intensity: 0.18,\n angle: 0.72,\n distance: 0,\n position: {\n x: 160,\n y: 245,\n z: 126\n }\n },\n point: {\n enabled: true,\n color: \"#8fb6d8\",\n intensity: 0.08,\n distance: 0,\n position: {\n x: -260,\n y: 95,\n z: -220\n }\n },\n ambient: {\n enabled: true,\n color: \"#1e293b\",\n intensity: 0.42\n },\n hemisphere: {\n enabled: true,\n skyColor: \"#dbe7f3\",\n groundColor: \"#070a14\",\n intensity: 0.92\n }\n});\n\nfunction normalizeEnvironmentPresetId(value) {\n const normalized = String(value || \"\").trim();\n if (PRESET_ID_SET.has(normalized)) {\n return normalized;\n }\n return DEFAULT_THEME_SETTINGS.environment.presetId;\n}\n\nfunction normalizePosition(value, fallback) {\n return {\n x: normalizeNumber(value?.x, fallback.x, -5000, 5000),\n y: normalizeNumber(value?.y, fallback.y, -5000, 5000),\n z: normalizeNumber(value?.z, fallback.z, -5000, 5000)\n };\n}\n\nfunction createThemeSettingsSignature(value = {}) {\n return JSON.stringify({\n colorMode: value?.colorMode || THEME_COLOR_MODES.SYSTEM,\n modeColors: value?.modeColors || {},\n materials: value?.materials || {},\n edges: value?.edges || {},\n background: value?.background || {},\n floor: value?.floor || {},\n environment: value?.environment || {},\n lighting: value?.lighting || {}\n });\n}\n\nfunction valuesMatch(value, expected) {\n if (typeof expected === \"number\") {\n return Math.abs((Number(value) || 0) - expected) < 1e-6;\n }\n if (expected && typeof expected === \"object\") {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n return Object.entries(expected).every(([key, nestedExpected]) => (\n valuesMatch(value[key], nestedExpected)\n ));\n }\n return value === expected;\n}\n\nfunction valuesMatchAny(value, expectedValues) {\n return expectedValues.some((expected) => valuesMatch(value, expected));\n}\n\nfunction isMigratableCinematicThemeSettings(settings) {\n const materialMatches = valuesMatchAny(settings?.materials, [\n LEGACY_CINEMATIC_MATERIALS,\n PREVIOUS_CINEMATIC_MATERIALS,\n DIM_CINEMATIC_MATERIALS,\n LOW_CONTRAST_CINEMATIC_MATERIALS,\n SOFT_CONTRAST_CINEMATIC_MATERIALS,\n FEATURE_CONTRAST_CINEMATIC_MATERIALS,\n CINEMATIC_THEME_SETTINGS.materials\n ]);\n const edgeMatches = valuesMatchAny(settings?.edges, [\n LEGACY_CINEMATIC_EDGES,\n PREVIOUS_CINEMATIC_EDGES,\n DIM_CINEMATIC_EDGES,\n LOW_CONTRAST_CINEMATIC_EDGES,\n CINEMATIC_THEME_SETTINGS.edges\n ]);\n const floorMatches = valuesMatchAny(settings?.floor, [\n LEGACY_CINEMATIC_FLOOR,\n PREVIOUS_CINEMATIC_FLOOR,\n DIM_CINEMATIC_FLOOR,\n CINEMATIC_THEME_SETTINGS.floor\n ]);\n const environmentMatches = valuesMatchAny(settings?.environment, [\n LEGACY_CINEMATIC_ENVIRONMENT,\n DIM_CINEMATIC_ENVIRONMENT,\n CINEMATIC_THEME_SETTINGS.environment,\n WORKBENCH_THEME_SETTINGS.environment\n ]);\n const backgroundMatches = valuesMatchAny(settings?.background, [\n LEGACY_CINEMATIC_BACKGROUND,\n PREVIOUS_CINEMATIC_BACKGROUND,\n DIM_CINEMATIC_BACKGROUND,\n CINEMATIC_THEME_SETTINGS.background\n ]);\n const lightingMatches = valuesMatchAny(settings?.lighting, [\n PREVIOUS_CINEMATIC_LIGHTING,\n DIM_CINEMATIC_LIGHTING,\n CINEMATIC_THEME_SETTINGS.lighting\n ]);\n return (\n materialMatches &&\n edgeMatches &&\n backgroundMatches &&\n floorMatches &&\n environmentMatches &&\n lightingMatches\n );\n}\n\nexport function normalizeThemeSettings(value = {}) {\n const source = value && typeof value === \"object\" ? value : {};\n const materials = source.materials && typeof source.materials === \"object\"\n ? source.materials\n : {};\n const background = source.background && typeof source.background === \"object\"\n ? source.background\n : {};\n const environment = source.environment && typeof source.environment === \"object\"\n ? source.environment\n : {};\n const floor = source.floor && typeof source.floor === \"object\"\n ? source.floor\n : {};\n const edges = source.edges && typeof source.edges === \"object\"\n ? source.edges\n : {};\n const lighting = source.lighting && typeof source.lighting === \"object\"\n ? source.lighting\n : {};\n const hasMaterialSettings = !!(source.materials && typeof source.materials === \"object\");\n const missingLegacyTintMode = hasMaterialSettings && !Object.hasOwn(materials, \"tintMode\");\n const missingLegacyEmissiveIntensity = hasMaterialSettings && !Object.hasOwn(materials, \"emissiveIntensity\");\n const normalizedDefaultColor = normalizeColor(\n materials.defaultColor || materials.tintColor,\n DEFAULT_THEME_SETTINGS.materials.defaultColor\n );\n const fillColors = normalizeThemeFillColors(materials.fillColors, normalizedDefaultColor);\n const normalizedFloorColor = normalizeColor(floor.color, DEFAULT_THEME_SETTINGS.floor?.color || \"#141416\");\n const fallbackGridSettings = createFloorGridSettings(normalizedFloorColor);\n const colorMode = normalizeThemeColorMode(\n source.colorMode,\n DEFAULT_THEME_SETTINGS?.colorMode || THEME_COLOR_MODES.SYSTEM\n );\n\n const normalized = {\n colorMode,\n materials: {\n defaultColor: fillColors[0] || normalizedDefaultColor,\n fillColors,\n cycleColors: normalizeBoolean(\n materials.cycleColors,\n DEFAULT_THEME_SETTINGS.materials.cycleColors || false\n ),\n overrideSourceColors: normalizeBoolean(\n materials.overrideSourceColors,\n DEFAULT_THEME_SETTINGS.materials.overrideSourceColors || false\n ),\n tintMode: normalizeMaterialTintMode(\n materials.tintMode,\n missingLegacyTintMode ? \"multiply\" : DEFAULT_THEME_SETTINGS.materials.tintMode\n ),\n tintStrength: normalizeNumber(materials.tintStrength, DEFAULT_THEME_SETTINGS.materials.tintStrength, 0, 1),\n saturation: normalizeNumber(materials.saturation, DEFAULT_THEME_SETTINGS.materials.saturation, 0, 2.5),\n contrast: normalizeNumber(materials.contrast, DEFAULT_THEME_SETTINGS.materials.contrast, 0, 2.5),\n brightness: normalizeNumber(materials.brightness, DEFAULT_THEME_SETTINGS.materials.brightness, 0, 2),\n roughness: normalizeNumber(materials.roughness, DEFAULT_THEME_SETTINGS.materials.roughness, 0, 1),\n metalness: normalizeNumber(materials.metalness, DEFAULT_THEME_SETTINGS.materials.metalness, 0, 1),\n clearcoat: normalizeNumber(materials.clearcoat, DEFAULT_THEME_SETTINGS.materials.clearcoat, 0, 1),\n clearcoatRoughness: normalizeNumber(\n materials.clearcoatRoughness,\n DEFAULT_THEME_SETTINGS.materials.clearcoatRoughness,\n 0,\n 1\n ),\n opacity: normalizeNumber(materials.opacity, DEFAULT_THEME_SETTINGS.materials.opacity, 0, 1),\n envMapIntensity: normalizeNumber(materials.envMapIntensity, DEFAULT_THEME_SETTINGS.materials.envMapIntensity, 0, 4),\n emissiveIntensity: normalizeNumber(\n materials.emissiveIntensity,\n missingLegacyEmissiveIntensity ? 0 : DEFAULT_THEME_SETTINGS.materials.emissiveIntensity,\n 0,\n 2\n )\n },\n edges: {\n enabled: normalizeBoolean(edges.enabled, DEFAULT_THEME_SETTINGS.edges.enabled),\n contrastMode: normalizeEdgeContrastMode(edges.contrastMode, DEFAULT_THEME_SETTINGS.edges.contrastMode),\n color: normalizeColor(edges.color, DEFAULT_THEME_SETTINGS.edges.color),\n thickness: normalizeNumber(edges.thickness, DEFAULT_THEME_SETTINGS.edges.thickness, 0.5, 6),\n classes: normalizeEdgeClassSettings(edges.classes, DEFAULT_THEME_SETTINGS.edges.classes),\n highlightColor: normalizeColor(\n edges.highlightColor,\n DEFAULT_THEME_SETTINGS.edges.highlightColor || CAD_EDGE_HIGHLIGHT_COLOR\n ),\n highlightOpacity: normalizeNumber(edges.highlightOpacity, DEFAULT_THEME_SETTINGS.edges.highlightOpacity || 1, 0, 1),\n highlightThickness: normalizeNumber(edges.highlightThickness, DEFAULT_THEME_SETTINGS.edges.highlightThickness || 3, 0.5, 6),\n silhouette: normalizeBoolean(edges.silhouette, DEFAULT_THEME_SETTINGS.edges.silhouette || false),\n silhouetteScale: normalizeNumber(edges.silhouetteScale, DEFAULT_THEME_SETTINGS.edges.silhouetteScale || 0.004, 0, 0.04)\n },\n background: {\n type: normalizeBackgroundType(background.type, DEFAULT_THEME_SETTINGS.background.type),\n solidColor: normalizeColor(background.solidColor, DEFAULT_THEME_SETTINGS.background.solidColor),\n linearStart: normalizeColor(background.linearStart, DEFAULT_THEME_SETTINGS.background.linearStart),\n linearEnd: normalizeColor(background.linearEnd, DEFAULT_THEME_SETTINGS.background.linearEnd),\n linearAngle: normalizeNumber(background.linearAngle, DEFAULT_THEME_SETTINGS.background.linearAngle, -360, 360),\n radialInner: normalizeColor(background.radialInner, DEFAULT_THEME_SETTINGS.background.radialInner),\n radialOuter: normalizeColor(background.radialOuter, DEFAULT_THEME_SETTINGS.background.radialOuter)\n },\n floor: {\n mode: normalizeFloorMode(floor.mode, DEFAULT_THEME_SETTINGS.floor?.mode || THEME_FLOOR_MODES.STAGE),\n color: normalizedFloorColor,\n roughness: normalizeNumber(floor.roughness, DEFAULT_THEME_SETTINGS.floor?.roughness ?? 0.72, 0, 1),\n reflectivity: normalizeNumber(floor.reflectivity, DEFAULT_THEME_SETTINGS.floor?.reflectivity ?? 0.12, 0, 1),\n shadowOpacity: normalizeNumber(floor.shadowOpacity, DEFAULT_THEME_SETTINGS.floor?.shadowOpacity ?? 0.45, 0, 1),\n horizonBlend: normalizeNumber(floor.horizonBlend, DEFAULT_THEME_SETTINGS.floor?.horizonBlend ?? 0, 0, 1),\n gridCenterColor: normalizeColor(\n floor.gridCenterColor ?? floor.gridCenter,\n fallbackGridSettings.gridCenterColor\n ),\n gridCellColor: normalizeColor(\n floor.gridCellColor ?? floor.gridCell,\n fallbackGridSettings.gridCellColor\n ),\n gridOpacity: normalizeNumber(floor.gridOpacity, fallbackGridSettings.gridOpacity, 0, 1),\n gridDensity: normalizeNumber(\n floor.gridDensity,\n fallbackGridSettings.gridDensity,\n MIN_FLOOR_GRID_DENSITY,\n MAX_FLOOR_GRID_DENSITY\n )\n },\n environment: {\n enabled: normalizeBoolean(environment.enabled, DEFAULT_THEME_SETTINGS.environment.enabled),\n presetId: normalizeEnvironmentPresetId(environment.presetId),\n intensity: normalizeNumber(environment.intensity, DEFAULT_THEME_SETTINGS.environment.intensity, 0, 4),\n rotationY: normalizeNumber(environment.rotationY, DEFAULT_THEME_SETTINGS.environment.rotationY, -Math.PI * 2, Math.PI * 2),\n useAsBackground: normalizeBoolean(environment.useAsBackground, DEFAULT_THEME_SETTINGS.environment.useAsBackground)\n },\n lighting: {\n toneMappingExposure: normalizeNumber(\n lighting.toneMappingExposure,\n DEFAULT_THEME_SETTINGS.lighting.toneMappingExposure,\n 0.05,\n 6\n ),\n directional: {\n enabled: normalizeBoolean(lighting.directional?.enabled, DEFAULT_THEME_SETTINGS.lighting.directional.enabled),\n color: normalizeColor(lighting.directional?.color, DEFAULT_THEME_SETTINGS.lighting.directional.color),\n intensity: normalizeNumber(lighting.directional?.intensity, DEFAULT_THEME_SETTINGS.lighting.directional.intensity, 0, 20),\n position: normalizePosition(lighting.directional?.position, DEFAULT_THEME_SETTINGS.lighting.directional.position)\n },\n spot: {\n enabled: normalizeBoolean(lighting.spot?.enabled, DEFAULT_THEME_SETTINGS.lighting.spot.enabled),\n color: normalizeColor(lighting.spot?.color, DEFAULT_THEME_SETTINGS.lighting.spot.color),\n intensity: normalizeNumber(lighting.spot?.intensity, DEFAULT_THEME_SETTINGS.lighting.spot.intensity, 0, 20),\n angle: normalizeNumber(lighting.spot?.angle, DEFAULT_THEME_SETTINGS.lighting.spot.angle, 0.01, Math.PI / 2),\n distance: normalizeNumber(lighting.spot?.distance, DEFAULT_THEME_SETTINGS.lighting.spot.distance, 0, 5000),\n position: normalizePosition(lighting.spot?.position, DEFAULT_THEME_SETTINGS.lighting.spot.position)\n },\n point: {\n enabled: normalizeBoolean(lighting.point?.enabled, DEFAULT_THEME_SETTINGS.lighting.point.enabled),\n color: normalizeColor(lighting.point?.color, DEFAULT_THEME_SETTINGS.lighting.point.color),\n intensity: normalizeNumber(lighting.point?.intensity, DEFAULT_THEME_SETTINGS.lighting.point.intensity, 0, 20),\n distance: normalizeNumber(lighting.point?.distance, DEFAULT_THEME_SETTINGS.lighting.point.distance, 0, 5000),\n position: normalizePosition(lighting.point?.position, DEFAULT_THEME_SETTINGS.lighting.point.position)\n },\n ambient: {\n enabled: normalizeBoolean(lighting.ambient?.enabled, DEFAULT_THEME_SETTINGS.lighting.ambient.enabled),\n color: normalizeColor(lighting.ambient?.color, DEFAULT_THEME_SETTINGS.lighting.ambient.color),\n intensity: normalizeNumber(lighting.ambient?.intensity, DEFAULT_THEME_SETTINGS.lighting.ambient.intensity, 0, 20)\n },\n hemisphere: {\n enabled: normalizeBoolean(lighting.hemisphere?.enabled, DEFAULT_THEME_SETTINGS.lighting.hemisphere.enabled),\n skyColor: normalizeColor(lighting.hemisphere?.skyColor, DEFAULT_THEME_SETTINGS.lighting.hemisphere.skyColor),\n groundColor: normalizeColor(lighting.hemisphere?.groundColor, DEFAULT_THEME_SETTINGS.lighting.hemisphere.groundColor),\n intensity: normalizeNumber(lighting.hemisphere?.intensity, DEFAULT_THEME_SETTINGS.lighting.hemisphere.intensity, 0, 20)\n }\n }\n };\n normalized.modeColors = normalizeThemeModeColors(source.modeColors, normalized);\n\n if (\n !Object.hasOwn(source, \"colorMode\") &&\n !Object.hasOwn(source, \"modeColors\") &&\n isMigratableCinematicThemeSettings(normalized)\n ) {\n return normalizeThemeSettings(deepClone(WORKBENCH_THEME_SETTINGS));\n }\n\n return normalized;\n}\n\nfunction cloneNormalizedThemeSettings(value = DEFAULT_THEME_SETTINGS) {\n return normalizeThemeSettings(JSON.parse(JSON.stringify(value)));\n}\n\nexport function normalizeThemePresetId(presetId) {\n const normalized = String(presetId || \"\").trim();\n const canonical = THEME_PRESET_ID_ALIASES[normalized] || normalized;\n return THEME_PRESETS.some((preset) => preset.id === canonical) ? canonical : \"\";\n}\n\nexport function getThemePresetById(presetId) {\n const normalizedPresetId = normalizeThemePresetId(presetId);\n return THEME_PRESETS.find((preset) => preset.id === normalizedPresetId) || DEFAULT_THEME_PRESET;\n}\n\nexport function cloneThemePresetSettings(presetId) {\n return cloneNormalizedThemeSettings(getThemePresetById(presetId).settings);\n}\n\nexport function cloneThemeSettings(themeId) {\n return cloneThemePresetSettings(themeId);\n}\n\nexport function getThemePresetIdForSettings(themeSettings) {\n const currentSignature = createThemeSettingsSignature(normalizeThemeSettings(themeSettings));\n for (const preset of THEME_PRESETS) {\n const presetSignature = createThemeSettingsSignature(normalizeThemeSettings(preset.settings));\n if (presetSignature === currentSignature) {\n return preset.id;\n }\n }\n return null;\n}\n\nexport function getThemeIdForSettings(themeSettings) {\n return getThemePresetIdForSettings(themeSettings);\n}\n\nexport function resolveThemeSettingsColorMode(themeSettings = {}, { prefersDark = false, systemFallback = THEME_COLOR_MODES.LIGHT } = {}) {\n const normalizedColorMode = normalizeThemeColorMode(\n themeSettings?.colorMode,\n DEFAULT_THEME_SETTINGS?.colorMode || THEME_COLOR_MODES.SYSTEM\n );\n if (normalizedColorMode === THEME_COLOR_MODES.SYSTEM) {\n return prefersDark === true\n ? THEME_COLOR_MODES.DARK\n : normalizeThemeColorMode(systemFallback, THEME_COLOR_MODES.LIGHT) === THEME_COLOR_MODES.DARK\n ? THEME_COLOR_MODES.DARK\n : THEME_COLOR_MODES.LIGHT;\n }\n return normalizedColorMode;\n}\n\nexport function resolveThemeSettingsForColorMode(themeSettings = {}, options = {}) {\n const normalized = normalizeThemeSettings(themeSettings);\n const resolvedColorMode = resolveThemeSettingsColorMode(normalized, options);\n const resolved = deepClone(normalized);\n resolved.colorMode = resolvedColorMode;\n applyThemeModeColorOverrides(resolved, normalized.modeColors?.[resolvedColorMode]);\n return normalizeThemeSettings(resolved);\n}\n\nexport function themeSettingsSupportsSystemColorMode(themeSettings = {}) {\n const normalized = normalizeThemeSettings(themeSettings);\n return normalized.colorMode === THEME_COLOR_MODES.SYSTEM;\n}\n\nexport function inferThemeSettingsSceneTone(themeSettings, options = {}) {\n const normalized = resolveThemeSettingsForColorMode(themeSettings, options);\n const luminance = relativeLuminance(\n normalized.floor?.color,\n DEFAULT_THEME_SETTINGS.floor?.color || DEFAULT_THEME_SETTINGS.background.solidColor\n );\n return luminance >= 0.36 ? \"light\" : \"dark\";\n}\n\nexport function inferThemeSceneTone(themeSettings) {\n return inferThemeSettingsSceneTone(themeSettings);\n}\n\nexport function resolveThemeSettingsDisplayEdgeSettings(themeSettings) {\n const normalized = resolveThemeSettingsForColorMode(themeSettings);\n const edges = normalized.edges || DEFAULT_THEME_SETTINGS.edges;\n return { ...edges };\n}\n\nexport function resolveThemeDisplayEdgeSettings(themeSettings) {\n return resolveThemeSettingsDisplayEdgeSettings(themeSettings);\n}\n\nexport function getEnvironmentPresetById(presetId) {\n return ENVIRONMENT_PRESETS.find((preset) => preset.id === presetId) || ENVIRONMENT_PRESETS[0];\n}\n","import {\n cloneThemeSettings,\n normalizeThemeSettings,\n resolveThemeSettingsForColorMode\n} from \"./themeSettings.js\";\n\nexport function resolveAppearanceJobConfig(job = {}, { defaultThemeId = \"workbench\" } = {}) {\n if (typeof job.appearance === \"string\") {\n return {\n themeId: job.appearance,\n settings: null\n };\n }\n if (job.appearance && typeof job.appearance === \"object\" && !Array.isArray(job.appearance)) {\n return {\n themeId: defaultThemeId,\n settings: job.appearance\n };\n }\n return {\n themeId: defaultThemeId,\n settings: null\n };\n}\n\nexport function resolveAppearanceSettings(job = {}, { defaultThemeId = \"workbench\" } = {}) {\n const appearance = resolveAppearanceJobConfig(job, { defaultThemeId });\n const themeSettings = cloneThemeSettings(appearance.themeId || defaultThemeId);\n const normalized = normalizeThemeSettings(appearance.settings || themeSettings);\n return typeof job.appearance === \"string\"\n ? resolveThemeSettingsForColorMode(normalized, { prefersDark: false })\n : normalized;\n}\n","export const DEFAULT_IMPLICIT_GRAPHICS_SETTINGS = Object.freeze({\n resolutionScale: 2,\n interactionResolutionScale: 1.25,\n detail: 1.25,\n normalSmoothing: 1,\n modelColors: true,\n shadows: true,\n ambientOcclusion: true,\n rimLight: true\n});\n\nexport const IMPLICIT_GRAPHICS_LIMITS = Object.freeze({\n resolutionScale: Object.freeze({ min: 0.5, max: 5, step: 0.05 }),\n interactionResolutionScale: Object.freeze({ min: 0.25, max: 4, step: 0.05 }),\n detail: Object.freeze({ min: 0.25, max: 8, step: 0.05 }),\n normalSmoothing: Object.freeze({ min: 0.25, max: 5, step: 0.05 })\n});\n\nexport const IMPLICIT_INTERACTION_STEP_BUDGET = 96;\nexport const IMPLICIT_INTERACTION_DETAIL = 0.75;\n\nfunction clampNumber(value, fallback, { min = -Infinity, max = Infinity } = {}) {\n const numericValue = Number(value);\n const resolvedValue = Number.isFinite(numericValue) ? numericValue : fallback;\n return Math.min(Math.max(resolvedValue, min), max);\n}\n\nfunction normalizeBoolean(value, fallback) {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nexport function normalizeImplicitGraphicsSettings(value = {}) {\n const settings = value && typeof value === \"object\" ? value : {};\n return {\n resolutionScale: clampNumber(\n settings.resolutionScale,\n DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.resolutionScale,\n IMPLICIT_GRAPHICS_LIMITS.resolutionScale\n ),\n interactionResolutionScale: clampNumber(\n settings.interactionResolutionScale,\n DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.interactionResolutionScale,\n IMPLICIT_GRAPHICS_LIMITS.interactionResolutionScale\n ),\n detail: clampNumber(\n settings.detail,\n DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.detail,\n IMPLICIT_GRAPHICS_LIMITS.detail\n ),\n normalSmoothing: clampNumber(\n settings.normalSmoothing,\n DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.normalSmoothing,\n IMPLICIT_GRAPHICS_LIMITS.normalSmoothing\n ),\n modelColors: normalizeBoolean(settings.modelColors, DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.modelColors),\n shadows: normalizeBoolean(settings.shadows, DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.shadows),\n ambientOcclusion: normalizeBoolean(\n settings.ambientOcclusion,\n DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.ambientOcclusion\n ),\n rimLight: normalizeBoolean(settings.rimLight, DEFAULT_IMPLICIT_GRAPHICS_SETTINGS.rimLight)\n };\n}\n\nexport function implicitGraphicsRenderResolutionScale(value = {}, { interaction = false } = {}) {\n const settings = normalizeImplicitGraphicsSettings(value);\n return interaction ? settings.interactionResolutionScale : settings.resolutionScale;\n}\n\nexport function implicitGraphicsRenderSettings(value = {}, { interaction = false } = {}) {\n const settings = normalizeImplicitGraphicsSettings(value);\n if (!interaction) {\n return settings;\n }\n const source = value && typeof value === \"object\" ? value : {};\n const requestedStepBudget = Number.isFinite(Number(source.stepBudget))\n ? Math.max(1, Math.floor(Number(source.stepBudget)))\n : IMPLICIT_INTERACTION_STEP_BUDGET;\n return {\n ...settings,\n detail: Math.min(settings.detail, IMPLICIT_INTERACTION_DETAIL),\n stepBudget: Math.min(requestedStepBudget, IMPLICIT_INTERACTION_STEP_BUDGET),\n shadows: false,\n ambientOcclusion: false\n };\n}\n\nexport function implicitGraphicsSettingsEqual(a, b) {\n const normalizedA = normalizeImplicitGraphicsSettings(a);\n const normalizedB = normalizeImplicitGraphicsSettings(b);\n return Object.keys(DEFAULT_IMPLICIT_GRAPHICS_SETTINGS)\n .every((key) => normalizedA[key] === normalizedB[key]);\n}\n","export const PARAMETER_SCHEMA_VERSION = 1;\n\nconst HEX_COLOR_RE = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\nfunction isObject(value) {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeString(value, fallback = \"\") {\n const text = String(value ?? fallback).trim();\n return text || fallback;\n}\n\nfunction toFiniteNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function normalizeParameterType(value) {\n const type = normalizeString(value, \"number\").toLowerCase();\n if ([\"number\", \"boolean\", \"enum\", \"select\", \"color\", \"string\", \"button\"].includes(type)) {\n return type === \"select\" ? \"enum\" : type;\n }\n return \"number\";\n}\n\nexport function normalizeParameterOptions(value) {\n return (Array.isArray(value) ? value : [])\n .map((option) => {\n if (isObject(option)) {\n const valueText = normalizeString(option.value);\n return valueText ? {\n value: valueText,\n label: normalizeString(option.label, valueText)\n } : null;\n }\n const valueText = normalizeString(option);\n return valueText ? { value: valueText, label: valueText } : null;\n })\n .filter(Boolean);\n}\n\nexport function normalizeParameterValue(definition, value) {\n const type = normalizeParameterType(definition?.type);\n if (type === \"boolean\") {\n return value === true;\n }\n if (type === \"color\") {\n const color = normalizeString(value, normalizeString(definition?.defaultValue, \"#ffffff\"));\n return HEX_COLOR_RE.test(color) ? color : \"#ffffff\";\n }\n if (type === \"enum\") {\n const options = Array.isArray(definition?.options) ? definition.options : [];\n const valueText = normalizeString(value, options[0]?.value || \"\");\n return options.some((option) => option.value === valueText) ? valueText : (options[0]?.value || \"\");\n }\n if (type === \"string\") {\n return String(value ?? \"\");\n }\n if (type === \"button\") {\n return Math.max(0, Math.floor(toFiniteNumber(value, 0)));\n }\n const min = toFiniteNumber(definition?.min, 0);\n const max = Math.max(toFiniteNumber(definition?.max, min), min);\n return clamp(toFiniteNumber(value, toFiniteNumber(definition?.defaultValue, min)), min, max);\n}\n\nexport function normalizeParameterDefinition(id, rawDefinition) {\n const raw = isObject(rawDefinition) ? rawDefinition : {};\n const type = normalizeParameterType(raw.type);\n const min = toFiniteNumber(raw.min, 0);\n const max = Math.max(toFiniteNumber(raw.max, type === \"number\" ? 1 : min), min);\n const options = normalizeParameterOptions(raw.options || raw.values);\n const fallbackDefault = type === \"boolean\"\n ? false\n : type === \"color\"\n ? \"#ffffff\"\n : type === \"enum\"\n ? options[0]?.value || \"\"\n : type === \"string\"\n ? \"\"\n : 0;\n return {\n id,\n type,\n label: normalizeString(raw.label, id),\n description: normalizeString(raw.description),\n unit: normalizeString(raw.unit),\n min,\n max,\n step: Math.max(toFiniteNumber(raw.step, type === \"number\" ? 0.01 : 1), 0),\n defaultValue: normalizeParameterValue({ type, min, max, options }, raw.default ?? raw.defaultValue ?? fallbackDefault),\n options\n };\n}\n\nexport function normalizeParameterDefinitions(value) {\n const entries = Array.isArray(value)\n ? value.map((definition) => [definition?.id, definition])\n : Object.entries(isObject(value) ? value : {});\n return entries\n .map(([id, rawDefinition]) => normalizeParameterDefinition(normalizeString(id), rawDefinition))\n .filter((definition) => definition.id);\n}\n\nexport function parameterMapForDefinitions(parameters) {\n return Object.fromEntries(\n (Array.isArray(parameters) ? parameters : [])\n .filter((parameter) => parameter?.id)\n .map((parameter) => [parameter.id, parameter])\n );\n}\n\nexport function normalizeParameterValues(definition, values = {}) {\n const parameterMap = definition?.parameterMap || {};\n return Object.fromEntries(\n Object.values(parameterMap).map((parameter) => [\n parameter.id,\n normalizeParameterValue(parameter, isObject(values) && Object.hasOwn(values, parameter.id)\n ? values[parameter.id]\n : parameter.defaultValue)\n ])\n );\n}\n\nexport function normalizeParameterAnimations(value) {\n const entries = Array.isArray(value)\n ? value.map((animation) => [animation?.id, animation])\n : Object.entries(isObject(value) ? value : {});\n return entries\n .map(([id, rawAnimation]) => {\n const raw = isObject(rawAnimation) ? rawAnimation : {};\n const animationId = normalizeString(id);\n return animationId ? {\n id: animationId,\n label: normalizeString(raw.label, animationId),\n description: normalizeString(raw.description),\n duration: Math.max(toFiniteNumber(raw.duration ?? raw.durationSeconds, 1), 0.001),\n loop: raw.loop !== false,\n update: typeof raw.update === \"function\" ? raw.update : null,\n raw\n } : null;\n })\n .filter(Boolean);\n}\n","function isObject(value) {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isVector(value) {\n return Array.isArray(value);\n}\n\nfunction finiteNumber(value, fallback = 0) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\n\nfunction truthy(value) {\n if (isVector(value)) {\n return value.some((component) => truthy(component));\n }\n return Boolean(value);\n}\n\nfunction vec(args, size) {\n const flat = [];\n for (const arg of args) {\n if (isVector(arg)) {\n flat.push(...arg);\n } else {\n flat.push(arg);\n }\n }\n if (flat.length === 0) {\n flat.push(0);\n }\n if (flat.length === 1) {\n return Array.from({ length: size }, () => finiteNumber(flat[0]));\n }\n return Array.from({ length: size }, (_, index) => finiteNumber(flat[index], 0));\n}\n\nfunction vec2(x = 0, y = undefined) {\n return vec(y === undefined ? [x] : [x, y], 2);\n}\n\nfunction vec3(x = 0, y = undefined, z = undefined) {\n return vec(y === undefined && z === undefined ? [x] : [x, y, z], 3);\n}\n\nfunction vec4(x = 0, y = undefined, z = undefined, w = undefined) {\n return vec(y === undefined && z === undefined && w === undefined ? [x] : [x, y, z, w], 4);\n}\n\nfunction mapUnary(value, fn) {\n return isVector(value) ? value.map((component) => fn(component)) : fn(value);\n}\n\nfunction mapBinary(a, b, fn) {\n if (isVector(a) && isVector(b)) {\n const size = Math.max(a.length, b.length);\n return Array.from({ length: size }, (_, index) => fn(a[index] ?? 0, b[index] ?? 0));\n }\n if (isVector(a)) {\n return a.map((component) => fn(component, b));\n }\n if (isVector(b)) {\n return b.map((component) => fn(a, component));\n }\n return fn(a, b);\n}\n\nfunction add(a, b) {\n return mapBinary(a, b, (x, y) => x + y);\n}\n\nfunction sub(a, b) {\n return mapBinary(a, b, (x, y) => x - y);\n}\n\nfunction mul(a, b) {\n return mapBinary(a, b, (x, y) => x * y);\n}\n\nfunction div(a, b) {\n return mapBinary(a, b, (x, y) => x / y);\n}\n\nfunction neg(value) {\n return mapUnary(value, (component) => -component);\n}\n\nfunction abs(value) {\n return mapUnary(value, Math.abs);\n}\n\nfunction minValue(a, b) {\n return mapBinary(a, b, Math.min);\n}\n\nfunction maxValue(a, b) {\n return mapBinary(a, b, Math.max);\n}\n\nfunction clamp(value, low, high) {\n return minValue(maxValue(value, low), high);\n}\n\nfunction mix(a, b, t) {\n return add(mul(a, sub(1, t)), mul(b, t));\n}\n\nfunction smoothstep(edge0, edge1, value) {\n const t = clamp(div(sub(value, edge0), sub(edge1, edge0)), 0, 1);\n return mul(mul(t, t), sub(3, mul(2, t)));\n}\n\nfunction mod(a, b) {\n return mapBinary(a, b, (x, y) => x - y * Math.floor(x / y));\n}\n\nfunction length(value) {\n if (!isVector(value)) {\n return Math.abs(value);\n }\n return Math.hypot(...value);\n}\n\nfunction dot(a, b) {\n const va = isVector(a) ? a : [a];\n const vb = isVector(b) ? b : [b];\n const size = Math.max(va.length, vb.length);\n let sum = 0;\n for (let index = 0; index < size; index += 1) {\n sum += (va[index] ?? 0) * (vb[index] ?? 0);\n }\n return sum;\n}\n\nfunction cross(a, b) {\n const va = vec3(a);\n const vb = vec3(b);\n return [\n va[1] * vb[2] - va[2] * vb[1],\n va[2] * vb[0] - va[0] * vb[2],\n va[0] * vb[1] - va[1] * vb[0],\n ];\n}\n\nfunction normalize(value) {\n const len = length(value);\n return len > 1e-12 ? div(value, len) : mul(value, 0);\n}\n\nfunction swizzleIndices(swizzle) {\n const lookup = {\n x: 0, y: 1, z: 2, w: 3,\n r: 0, g: 1, b: 2, a: 3,\n s: 0, t: 1, p: 2, q: 3,\n };\n return String(swizzle || \"\").split(\"\").map((component) => lookup[component]);\n}\n\nfunction getSwizzle(value, swizzle) {\n const indices = swizzleIndices(swizzle);\n if (!indices.length || indices.some((index) => index === undefined)) {\n throw new Error(`Unsupported GLSL member access: .${swizzle}`);\n }\n const source = isVector(value) ? value : [value];\n const result = indices.map((index) => source[index] ?? 0);\n return result.length === 1 ? result[0] : result;\n}\n\nfunction setSwizzle(target, swizzle, value) {\n if (!isVector(target)) {\n throw new Error(`Cannot assign .${swizzle} on a scalar value`);\n }\n const indices = swizzleIndices(swizzle);\n const values = isVector(value) ? value : [value];\n indices.forEach((targetIndex, index) => {\n if (targetIndex === undefined) {\n throw new Error(`Unsupported GLSL member assignment: .${swizzle}`);\n }\n target[targetIndex] = finiteNumber(values[index], values[0] ?? 0);\n });\n return target;\n}\n\nfunction implicit_linear_map(value, inMin, inMax, outMin, outMax) {\n const slope = (outMax - outMin) / (inMax - inMin);\n return (value - inMin) * slope + outMin;\n}\n\nfunction implicit_ramp(value, inMin, inMax, outMin, outMax) {\n return Math.min(Math.max(implicit_linear_map(value, inMin, inMax, outMin, outMax), outMin), outMax);\n}\n\nfunction implicit_two_body_field(a, b) {\n return (a - b) / (a + b);\n}\n\nfunction implicit_two_body_polar(a, b, angle) {\n return a * Math.cos(angle) + b * Math.sin(angle);\n}\n\nfunction implicit_triangle_wave_even(value, period) {\n if (isVector(value) || isVector(period)) {\n return mapBinary(value, period, implicit_triangle_wave_even);\n }\n const halfPeriod = period * 0.5;\n const quarterPeriod = period * 0.25;\n const wrapped = mod(value + halfPeriod, period);\n return quarterPeriod - Math.abs(wrapped - halfPeriod);\n}\n\nfunction implicit_triangle_wave_even_positive(value, period) {\n return add(implicit_triangle_wave_even(value, period), mul(period, 0.25));\n}\n\nfunction implicit_triangle_wave_odd(value, period) {\n return implicit_triangle_wave_even(sub(value, mul(period, 0.5)), period);\n}\n\nfunction implicit_triangle_wave_odd_positive(value, period) {\n return add(implicit_triangle_wave_odd(value, period), mul(period, 0.25));\n}\n\nfunction implicit_repeat_centered(p, period) {\n return sub(mod(add(p, mul(period, 0.5)), period), mul(period, 0.5));\n}\n\nfunction implicit_intersect_round(a, b, radius) {\n const k = Math.max(radius, 0);\n const q = maxValue(add(vec2(a, b), k), 0);\n return Math.min(-k, Math.max(a, b)) + length(q);\n}\n\nfunction implicit_intersect_chamfer(a, b, radius) {\n return Math.max(Math.max(a, b), (a + b + radius) * 0.7071067811865476);\n}\n\nfunction implicit_intersect_exp(a, b, radius) {\n const k = Math.max(radius, 1e-6) * 0.5;\n return k * Math.log(Math.exp(a / k) + Math.exp(b / k));\n}\n\nfunction implicit_intersect_lp_norm(a, b, radius, normPower) {\n const k = Math.max(radius, 0);\n const p = Math.max(normPower, 1e-6);\n const q = maxValue(add(vec2(a, b), k), 0);\n return Math.min(-k, Math.max(a, b)) + Math.pow(Math.pow(q[0], p) + Math.pow(q[1], p), 1 / p);\n}\n\nfunction implicit_intersect_rvachev(a, b, radius) {\n const sharp = Math.max(a, b);\n const k = Math.max(radius, 0);\n if (k <= 0) {\n return sharp;\n }\n const r0 = a + b - Math.sqrt(a * a + b * b);\n const t = Math.min(Math.max((sharp + k) / k, 0), 1);\n const s = t * t * (3 - 2 * t);\n return sharp < -k ? sharp : mix(sharp, r0, s);\n}\n\nconst BUILTINS = {\n float: (value = 0) => finiteNumber(value),\n int: (value = 0) => Math.trunc(finiteNumber(value)),\n bool: (value = false) => truthy(value),\n vec2,\n vec3,\n vec4,\n abs,\n min: minValue,\n max: maxValue,\n clamp,\n mix,\n smoothstep,\n mod,\n length,\n dot,\n cross,\n normalize,\n sin: (value) => mapUnary(value, Math.sin),\n cos: (value) => mapUnary(value, Math.cos),\n tan: (value) => mapUnary(value, Math.tan),\n atan: (...args) => args.length >= 2 ? Math.atan2(args[0], args[1]) : mapUnary(args[0], Math.atan),\n pow: (a, b) => mapBinary(a, b, Math.pow),\n sqrt: (value) => mapUnary(value, Math.sqrt),\n exp: (value) => mapUnary(value, Math.exp),\n log: (value) => mapUnary(value, Math.log),\n floor: (value) => mapUnary(value, Math.floor),\n ceil: (value) => mapUnary(value, Math.ceil),\n fract: (value) => mapUnary(value, (component) => component - Math.floor(component)),\n sign: (value) => mapUnary(value, Math.sign),\n\n implicit_clamp01: (value) => clamp(value, 0, 1),\n implicit_linear_map,\n implicit_ramp,\n implicit_two_body_field,\n implicit_two_body_polar,\n implicit_triangle_wave_even,\n implicit_triangle_wave_even_positive,\n implicit_triangle_wave_odd,\n implicit_triangle_wave_odd_positive,\n implicit_repeat_centered,\n implicit_intersect_sharp: (a, b) => Math.max(a, b),\n implicit_union_sharp: (a, b) => Math.min(a, b),\n implicit_intersect_round,\n implicit_union_round: (a, b, radius) => -implicit_intersect_round(-a, -b, radius),\n implicit_intersect_chamfer,\n implicit_union_chamfer: (a, b, radius) => -implicit_intersect_chamfer(-a, -b, radius),\n implicit_intersect_exp,\n implicit_union_exp: (a, b, radius) => -implicit_intersect_exp(-a, -b, radius),\n implicit_intersect_lp_norm,\n implicit_union_lp_norm: (a, b, radius, normPower) => -implicit_intersect_lp_norm(-a, -b, radius, normPower),\n implicit_intersect_rvachev,\n implicit_union_rvachev: (a, b, radius) => -implicit_intersect_rvachev(-a, -b, radius),\n implicit_plane2: (p, origin, normal) => dot(sub(p, origin), normalize(normal)),\n implicit_line_segment2: (p, a, b) => {\n const segment = sub(b, a);\n const segmentLengthSq = dot(segment, segment);\n if (segmentLengthSq < 1e-12) {\n return length(sub(p, a));\n }\n const t = clamp(dot(sub(p, a), segment) / segmentLengthSq, 0, 1);\n return length(sub(p, add(a, mul(t, segment))));\n },\n implicit_sphere: (p, center, radius) => length(sub(p, center)) - radius,\n implicit_box_centered: (p, size, center) => {\n const q = sub(abs(sub(p, center)), mul(size, 0.5));\n return length(maxValue(q, 0)) + Math.min(Math.max(q[0], Math.max(q[1], q[2])), 0);\n },\n implicit_plane: (p, origin, normal) => dot(sub(p, origin), normalize(normal)),\n implicit_line_segment: (p, a, b) => {\n const segment = sub(b, a);\n const segmentLengthSq = dot(segment, segment);\n if (segmentLengthSq < 1e-12) {\n return length(sub(p, a));\n }\n const t = clamp(dot(sub(p, a), segment) / segmentLengthSq, 0, 1);\n return length(sub(p, add(a, mul(t, segment))));\n },\n implicit_torus: (p, majorRadius, minorRadius) => {\n const q = vec2(length(getSwizzle(p, \"xy\")) - majorRadius, getSwizzle(p, \"z\"));\n return length(q) - minorRadius;\n },\n implicit_axis: (p, origin, direction) => {\n const directionLength = length(direction);\n if (directionLength < 1e-12) {\n return length(sub(p, origin));\n }\n const axis = div(direction, directionLength);\n const toPoint = sub(p, origin);\n return length(sub(toPoint, mul(dot(toPoint, axis), axis)));\n },\n implicit_cylinder: (p, origin, direction, radius) => BUILTINS.implicit_axis(p, origin, direction) - radius,\n implicit_cylinder_capped: (p, a, b, radius) => {\n const axis = sub(b, a);\n const side = BUILTINS.implicit_cylinder(p, a, axis, radius);\n const capA = -BUILTINS.implicit_plane(p, a, axis);\n const capB = BUILTINS.implicit_plane(p, b, axis);\n return Math.max(side, Math.max(capA, capB));\n },\n implicit_capsule: (p, a, b, radius) => BUILTINS.implicit_line_segment(p, a, b) - radius,\n implicit_cone_capsule: (p, a, b, radiusA, radiusB) => {\n const axis = sub(b, a);\n const axisLengthSq = dot(axis, axis);\n if (axisLengthSq < 1e-12) {\n return BUILTINS.implicit_sphere(p, a, radiusA);\n }\n const t = clamp(dot(sub(p, a), axis) / axisLengthSq, 0, 1);\n const radius = mix(radiusA, radiusB, t);\n return length(sub(p, add(a, mul(t, axis)))) - radius;\n },\n implicit_cone: (p, apex, direction, halfAngle) => {\n const directionLength = length(direction);\n if (directionLength < 1e-12) {\n return length(sub(p, apex));\n }\n const axis = div(direction, directionLength);\n const toPoint = sub(p, apex);\n const axial = dot(toPoint, axis);\n const perpendicular = length(sub(toPoint, mul(axial, axis)));\n return perpendicular - axial * Math.tan(halfAngle);\n },\n implicit_cone_capped: (p, a, b, radiusA, radiusB) => {\n const axis = sub(b, a);\n const axisLength = length(axis);\n if (axisLength < 1e-12) {\n return BUILTINS.implicit_sphere(p, a, radiusA);\n }\n const halfAngle = Math.atan2(Math.abs(radiusB - radiusA), axisLength);\n const coneDistance = radiusA < radiusB\n ? BUILTINS.implicit_cone(p, a, axis, halfAngle) - radiusA\n : BUILTINS.implicit_cone(p, b, neg(axis), halfAngle) - radiusB;\n const capA = -BUILTINS.implicit_plane(p, a, axis);\n const capB = BUILTINS.implicit_plane(p, b, axis);\n return Math.max(coneDistance, Math.max(capA, capB));\n },\n implicit_shell: (distanceValue, thickness, bias = 0) => Math.abs(distanceValue + bias * thickness * 0.5) - thickness * 0.5,\n implicit_rotate_axis: (p, origin, direction, angle) => {\n const k = normalize(direction);\n const local = sub(p, origin);\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n return add(add(add(origin, mul(local, c)), mul(cross(k, local), s)), mul(k, dot(k, local) * (1 - c)));\n },\n implicit_remap_cylindrical: (p, circumference) => {\n const radial = length(getSwizzle(p, \"xy\"));\n const theta = Math.atan2(p[1], p[0]);\n return vec3(radial, theta * (circumference / (Math.PI * 2)), p[2]);\n },\n implicit_tpms_gyroid: (p, period, drop) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const yzx = getSwizzle(xyz, \"yzx\");\n const field = dot(drop, mul(BUILTINS.sin(xyz), BUILTINS.cos(yzx)));\n return field * (period[0] + period[1] + period[2]) / 18;\n },\n implicit_tpms_schwarz: (p, period, drop, gyroidBlend) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const yzx = getSwizzle(xyz, \"yzx\");\n const mixTerm = add(vec3(-(1 - gyroidBlend)), mul(BUILTINS.sin(xyz), gyroidBlend));\n const field = dot(drop, mul(BUILTINS.cos(yzx), mixTerm));\n return field * (period[0] + period[1] + period[2]) / 36;\n },\n implicit_diamond: () => 0,\n};\n\nBUILTINS.implicit_tpms_diamond = (p, period, drop, gyroidBlend) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const yzx = getSwizzle(xyz, \"yzx\");\n const zxy = getSwizzle(xyz, \"zxy\");\n const sinXyz = BUILTINS.sin(xyz);\n const cosYzx = BUILTINS.cos(yzx);\n const cosZxy = BUILTINS.cos(zxy);\n const blendFactor = 1 - gyroidBlend;\n const term1 = blendFactor * sinXyz[0] * sinXyz[1] * sinXyz[2];\n const term2 = dot(drop, mul(mul(sinXyz, cosYzx), add(mul(cosZxy, blendFactor), vec3(gyroidBlend))));\n return (term1 + term2) * (period[0] + period[1] + period[2]) / (6 * 2.8284271247461903 * 2);\n};\n\nBUILTINS.implicit_tpms_lidinoid = (p, period, drop, gyroidBlend) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const yzx = getSwizzle(xyz, \"yzx\");\n const zxy = getSwizzle(xyz, \"zxy\");\n const cos2Xyz = BUILTINS.cos(mul(2, xyz));\n const cos2Yzx = getSwizzle(cos2Xyz, \"yzx\");\n const blendFactor = 1 - gyroidBlend;\n const term1 = dot(drop, mul(mul(BUILTINS.sin(zxy), BUILTINS.cos(yzx)), add(mul(BUILTINS.sin(mul(2, xyz)), blendFactor), vec3(gyroidBlend))));\n const term2 = blendFactor * dot(cos2Xyz, cos2Yzx);\n return (term1 - term2) * (period[0] + period[1] + period[2]) / 72;\n};\n\nBUILTINS.implicit_tpms_neovius = (p, period, drop, schwarzBlend) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const cosDrop = mul(BUILTINS.cos(xyz), drop);\n const term1 = -dot(cosDrop, vec3(1));\n const term2 = (1 - schwarzBlend) * (4 / 3) * cosDrop[0] * cosDrop[1] * cosDrop[2];\n return (term1 - term2) * (period[0] + period[1] + period[2]) / (6 * (26 / 3));\n};\n\nBUILTINS.implicit_tpms_split_p = (p, period, lidinoidBlend, gyroidOctave, schwarzOctave) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const yzx = getSwizzle(xyz, \"yzx\");\n const zxy = getSwizzle(xyz, \"zxy\");\n const sin2Xyz = BUILTINS.sin(mul(2, xyz));\n const cos2Xyz = BUILTINS.cos(mul(2, xyz));\n const term1 = -lidinoidBlend * dot(mul(mul(sin2Xyz, BUILTINS.cos(yzx)), BUILTINS.sin(zxy)), vec3(1));\n const term2 = gyroidOctave * dot(mul(sin2Xyz, cos2Xyz), vec3(1));\n const term3 = schwarzOctave * dot(cos2Xyz, vec3(1));\n return (term1 + term2 + term3) * (period[0] + period[1] + period[2]) / 36;\n};\n\nBUILTINS.implicit_tpms_iwp = (p, period, drop) => {\n const xyz = mul(p, div(Math.PI * 2, period));\n const yzx = getSwizzle(xyz, \"yzx\");\n const term1 = 2 * dot(mul(mul(drop, BUILTINS.cos(xyz)), BUILTINS.cos(yzx)), vec3(1));\n const term2 = dot(BUILTINS.cos(mul(2, xyz)), vec3(1));\n return (term1 - term2) * (period[0] + period[1] + period[2]) / 48;\n};\n\nBUILTINS.implicit_cubic_grid = (p, size) => {\n const d = implicit_triangle_wave_even_positive(p, size);\n return Math.min(d[0], Math.min(d[1], d[2]));\n};\n\nBUILTINS.implicit_square_honeycomb = (p, size) => {\n const d = implicit_triangle_wave_even_positive(getSwizzle(p, \"xy\"), size);\n return Math.min(d[0], d[1]);\n};\n\nBUILTINS.implicit_square_honeycomb_reinforced = (p, size, rotation, rotation2, hasRotation2) => {\n const pxy = getSwizzle(p, \"xy\");\n const grid = implicit_triangle_wave_even_positive(pxy, size);\n const squareGrid = Math.min(grid[0], grid[1]);\n const repeated = implicit_repeat_centered(pxy, size);\n const angle = Math.PI * rotation;\n let diagonal = Math.abs(BUILTINS.implicit_plane2(repeated, vec2(0), vec2(Math.cos(angle), Math.sin(angle))));\n if (hasRotation2 > 0.5) {\n const angle2 = Math.PI * rotation2;\n const diagonal2 = Math.abs(BUILTINS.implicit_plane2(repeated, vec2(0), vec2(Math.cos(angle2), Math.sin(angle2))));\n diagonal = Math.min(diagonal, diagonal2);\n }\n return Math.min(squareGrid, diagonal);\n};\n\nBUILTINS.implicit_square_diagonal_honeycomb = (p, size) => {\n const period = vec2(size[0] + size[1]);\n const repeated = implicit_repeat_centered(getSwizzle(p, \"xy\"), period);\n const positive = Math.abs(BUILTINS.implicit_plane2(repeated, vec2(0), vec2(size[1], size[0])));\n const negative = Math.abs(BUILTINS.implicit_plane2(repeated, vec2(0), vec2(size[1], -size[0])));\n return Math.min(positive, negative);\n};\n\nBUILTINS.implicit_octet_honeycomb = (p, size) => {\n const pxy = getSwizzle(p, \"xy\");\n const square = BUILTINS.implicit_square_honeycomb(p, size);\n const oddGrid = implicit_triangle_wave_odd_positive(pxy, size);\n const planeGrid = Math.min(oddGrid[0], oddGrid[1]);\n const diagonalPeriod = length(size) * 0.5;\n const rotated = vec2((pxy[0] + pxy[1]) / 1.4142135623730951, (pxy[0] - pxy[1]) / 1.4142135623730951);\n const diagonal = implicit_triangle_wave_odd_positive(rotated, vec2(diagonalPeriod));\n return Math.min(Math.min(square, planeGrid), Math.min(diagonal[0], diagonal[1]));\n};\n\nBUILTINS.implicit_hexagonal_honeycomb = (p, size, setback) => {\n const pxy = getSwizzle(p, \"xy\");\n const halfSize = mul(size, 0.5);\n const quarterSize = mul(size, 0.25);\n const starCenter = vec2(0, (1 - setback) * halfSize[1]);\n const transition = vec2(halfSize[0], setback * halfSize[1]);\n const folded = abs(implicit_repeat_centered(pxy, size));\n const reflected = vec2(folded[0] - halfSize[0], halfSize[1] - folded[1]);\n const foldedStar = Math.min(\n BUILTINS.implicit_line_segment2(folded, starCenter, vec2(0, size[1])),\n Math.min(\n BUILTINS.implicit_line_segment2(folded, starCenter, transition),\n BUILTINS.implicit_line_segment2(folded, starCenter, vec2(-transition[0], transition[1]))\n )\n );\n const reflectedStar = Math.min(\n BUILTINS.implicit_line_segment2(reflected, starCenter, vec2(0, size[1])),\n Math.min(\n BUILTINS.implicit_line_segment2(reflected, starCenter, transition),\n BUILTINS.implicit_line_segment2(reflected, starCenter, vec2(-transition[0], transition[1]))\n )\n );\n return folded[0] < quarterSize[0] ? foldedStar : reflectedStar;\n};\n\nBUILTINS.implicit_triangular_honeycomb = (p, size) => {\n const folded = abs(implicit_repeat_centered(getSwizzle(p, \"xy\"), size));\n const halfSize = mul(size, 0.5);\n const quarterSize = mul(size, 0.25);\n const normalH = vec2(0, 1);\n const normalP60 = normalize(vec2(size[1], size[0]));\n const normalN60 = normalize(vec2(size[1], -size[0]));\n const foldedStar = Math.min(\n Math.abs(dot(folded, normalH)),\n Math.min(Math.abs(dot(folded, normalP60)), Math.abs(dot(folded, normalN60)))\n );\n const shifted = sub(folded, halfSize);\n const shiftedStar = Math.min(\n Math.abs(dot(shifted, normalH)),\n Math.min(Math.abs(dot(shifted, normalP60)), Math.abs(dot(shifted, normalN60)))\n );\n return folded[1] < quarterSize[1] ? foldedStar : shiftedStar;\n};\n\nconst TYPE_KEYWORDS = new Set([\"float\", \"int\", \"bool\", \"vec2\", \"vec3\", \"vec4\"]);\nconst QUALIFIERS = new Set([\"const\", \"highp\", \"mediump\", \"lowp\", \"in\", \"out\", \"uniform\", \"varying\"]);\nconst OPERATORS = [\"<=\", \">=\", \"==\", \"!=\", \"&&\", \"||\", \"+=\", \"-=\", \"*=\", \"/=\", \"++\", \"--\"];\n\nfunction stripComments(source) {\n return String(source || \"\")\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n .replace(/\\/\\/.*$/gm, \"\");\n}\n\nfunction tokenize(source) {\n const tokens = [];\n const text = stripComments(source);\n let index = 0;\n while (index < text.length) {\n const char = text[index];\n if (/\\s/.test(char)) {\n index += 1;\n continue;\n }\n const numberMatch = text.slice(index).match(/^(?:\\d+\\.\\d*|\\.\\d+|\\d+)(?:[eE][+-]?\\d+)?/);\n if (numberMatch) {\n tokens.push({ type: \"number\", value: Number(numberMatch[0]) });\n index += numberMatch[0].length;\n continue;\n }\n const identifierMatch = text.slice(index).match(/^[A-Za-z_][A-Za-z0-9_]*/);\n if (identifierMatch) {\n tokens.push({ type: \"identifier\", value: identifierMatch[0] });\n index += identifierMatch[0].length;\n continue;\n }\n const op = OPERATORS.find((candidate) => text.startsWith(candidate, index));\n if (op) {\n tokens.push({ type: \"operator\", value: op });\n index += op.length;\n continue;\n }\n tokens.push({ type: \"punct\", value: char });\n index += 1;\n }\n return tokens;\n}\n\nclass Parser {\n constructor(tokens) {\n this.tokens = tokens;\n this.index = 0;\n }\n\n peek(offset = 0) {\n return this.tokens[this.index + offset] || null;\n }\n\n consume(value = null) {\n const token = this.peek();\n if (!token) {\n throw new Error(`Expected ${value || \"token\"}, reached end of GLSL source`);\n }\n if (value !== null && token.value !== value) {\n throw new Error(`Expected ${value}, got ${token.value}`);\n }\n this.index += 1;\n return token;\n }\n\n match(value) {\n if (this.peek()?.value === value) {\n this.index += 1;\n return true;\n }\n return false;\n }\n\n skipQualifiers() {\n while (QUALIFIERS.has(this.peek()?.value)) {\n this.consume();\n }\n }\n\n parseProgram() {\n const globals = [];\n const functions = new Map();\n while (this.peek()) {\n this.skipQualifiers();\n const type = this.peek()?.value;\n if (!TYPE_KEYWORDS.has(type) && type !== \"void\") {\n this.consume();\n continue;\n }\n this.consume();\n const name = this.consume().value;\n if (this.match(\"(\")) {\n const params = [];\n if (!this.match(\")\")) {\n do {\n this.skipQualifiers();\n const paramType = this.consume().value;\n const paramName = this.consume().value;\n params.push({ type: paramType, name: paramName });\n } while (this.match(\",\"));\n this.consume(\")\");\n }\n functions.set(name, {\n name,\n params,\n returnType: type,\n body: this.parseBlock()\n });\n } else {\n let init = { type: \"literal\", value: 0 };\n if (this.match(\"=\")) {\n init = this.parseExpression();\n }\n this.consume(\";\");\n globals.push({ type: \"var\", varType: type, name, init });\n }\n }\n return { globals, functions };\n }\n\n parseBlock() {\n this.consume(\"{\");\n const body = [];\n while (this.peek() && this.peek().value !== \"}\") {\n body.push(this.parseStatement());\n }\n this.consume(\"}\");\n return { type: \"block\", body };\n }\n\n parseStatement() {\n if (this.peek()?.value === \"{\") {\n return this.parseBlock();\n }\n if (this.match(\";\")) {\n return { type: \"empty\" };\n }\n if (this.match(\"return\")) {\n const expression = this.parseExpression();\n this.consume(\";\");\n return { type: \"return\", expression };\n }\n if (this.match(\"if\")) {\n this.consume(\"(\");\n const condition = this.parseExpression();\n this.consume(\")\");\n const consequent = this.parseStatement();\n const alternate = this.match(\"else\") ? this.parseStatement() : null;\n return { type: \"if\", condition, consequent, alternate };\n }\n if (this.match(\"for\")) {\n this.consume(\"(\");\n const init = this.parseForPart(\";\");\n this.consume(\";\");\n const condition = this.peek()?.value === \";\" ? null : this.parseExpression();\n this.consume(\";\");\n const update = this.peek()?.value === \")\" ? null : this.parseExpression();\n this.consume(\")\");\n return { type: \"for\", init, condition, update, body: this.parseStatement() };\n }\n if (TYPE_KEYWORDS.has(this.peek()?.value) || (QUALIFIERS.has(this.peek()?.value) && TYPE_KEYWORDS.has(this.peek(1)?.value))) {\n const statement = this.parseVariableDeclaration();\n this.consume(\";\");\n return statement;\n }\n const expression = this.parseExpression();\n this.consume(\";\");\n return { type: \"expr\", expression };\n }\n\n parseForPart() {\n if (TYPE_KEYWORDS.has(this.peek()?.value) || (QUALIFIERS.has(this.peek()?.value) && TYPE_KEYWORDS.has(this.peek(1)?.value))) {\n return this.parseVariableDeclaration();\n }\n if (this.peek()?.value === \";\") {\n return { type: \"empty\" };\n }\n return { type: \"expr\", expression: this.parseExpression() };\n }\n\n parseVariableDeclaration() {\n this.skipQualifiers();\n const varType = this.consume().value;\n const name = this.consume().value;\n let init = { type: \"literal\", value: defaultValueForType(varType) };\n if (this.match(\"=\")) {\n init = this.parseExpression();\n }\n return { type: \"var\", varType, name, init };\n }\n\n parseExpression() {\n return this.parseAssignment();\n }\n\n parseAssignment() {\n const left = this.parseTernary();\n const op = this.peek()?.value;\n if ([\"=\", \"+=\", \"-=\", \"*=\", \"/=\"].includes(op)) {\n this.consume();\n return { type: \"assign\", op, left, right: this.parseAssignment() };\n }\n return left;\n }\n\n parseTernary() {\n const condition = this.parseLogicalOr();\n if (!this.match(\"?\")) {\n return condition;\n }\n const consequent = this.parseExpression();\n this.consume(\":\");\n return { type: \"ternary\", condition, consequent, alternate: this.parseExpression() };\n }\n\n parseLogicalOr() {\n let node = this.parseLogicalAnd();\n while (this.match(\"||\")) {\n node = { type: \"binary\", op: \"||\", left: node, right: this.parseLogicalAnd() };\n }\n return node;\n }\n\n parseLogicalAnd() {\n let node = this.parseEquality();\n while (this.match(\"&&\")) {\n node = { type: \"binary\", op: \"&&\", left: node, right: this.parseEquality() };\n }\n return node;\n }\n\n parseEquality() {\n let node = this.parseComparison();\n while ([\"==\", \"!=\"].includes(this.peek()?.value)) {\n const op = this.consume().value;\n node = { type: \"binary\", op, left: node, right: this.parseComparison() };\n }\n return node;\n }\n\n parseComparison() {\n let node = this.parseAdditive();\n while ([\"<\", \">\", \"<=\", \">=\"].includes(this.peek()?.value)) {\n const op = this.consume().value;\n node = { type: \"binary\", op, left: node, right: this.parseAdditive() };\n }\n return node;\n }\n\n parseAdditive() {\n let node = this.parseMultiplicative();\n while ([\"+\", \"-\"].includes(this.peek()?.value)) {\n const op = this.consume().value;\n node = { type: \"binary\", op, left: node, right: this.parseMultiplicative() };\n }\n return node;\n }\n\n parseMultiplicative() {\n let node = this.parseUnary();\n while ([\"*\", \"/\"].includes(this.peek()?.value)) {\n const op = this.consume().value;\n node = { type: \"binary\", op, left: node, right: this.parseUnary() };\n }\n return node;\n }\n\n parseUnary() {\n if (this.match(\"+\")) {\n return this.parseUnary();\n }\n if (this.match(\"-\")) {\n return { type: \"unary\", op: \"-\", argument: this.parseUnary() };\n }\n if (this.match(\"!\")) {\n return { type: \"unary\", op: \"!\", argument: this.parseUnary() };\n }\n if (this.match(\"++\")) {\n return { type: \"update\", op: \"++\", argument: this.parseUnary(), prefix: true };\n }\n if (this.match(\"--\")) {\n return { type: \"update\", op: \"--\", argument: this.parseUnary(), prefix: true };\n }\n return this.parsePostfix();\n }\n\n parsePostfix() {\n let node = this.parsePrimary();\n for (;;) {\n if (this.match(\".\")) {\n node = { type: \"member\", object: node, property: this.consume().value };\n continue;\n }\n if (this.match(\"(\")) {\n const args = [];\n if (!this.match(\")\")) {\n do {\n args.push(this.parseExpression());\n } while (this.match(\",\"));\n this.consume(\")\");\n }\n node = { type: \"call\", callee: node, args };\n continue;\n }\n if (this.match(\"++\")) {\n node = { type: \"update\", op: \"++\", argument: node, prefix: false };\n continue;\n }\n if (this.match(\"--\")) {\n node = { type: \"update\", op: \"--\", argument: node, prefix: false };\n continue;\n }\n break;\n }\n return node;\n }\n\n parsePrimary() {\n const token = this.consume();\n if (token.type === \"number\") {\n return { type: \"literal\", value: token.value };\n }\n if (token.value === \"true\" || token.value === \"false\") {\n return { type: \"literal\", value: token.value === \"true\" };\n }\n if (token.value === \"(\") {\n const expression = this.parseExpression();\n this.consume(\")\");\n return expression;\n }\n if (token.type === \"identifier\") {\n return { type: \"identifier\", name: token.value };\n }\n throw new Error(`Unexpected GLSL token: ${token.value}`);\n }\n}\n\nfunction defaultValueForType(type) {\n if (type === \"bool\") {\n return false;\n }\n if (type === \"vec2\") {\n return vec2(0);\n }\n if (type === \"vec3\") {\n return vec3(0);\n }\n if (type === \"vec4\") {\n return vec4(0);\n }\n return 0;\n}\n\nclass ReturnValue extends Error {\n constructor(value) {\n super(\"return\");\n this.value = value;\n }\n}\n\nclass Scope {\n constructor(parent = null) {\n this.parent = parent;\n this.values = new Map();\n }\n\n has(name) {\n return this.values.has(name) || Boolean(this.parent?.has(name));\n }\n\n get(name) {\n if (this.values.has(name)) {\n return this.values.get(name);\n }\n if (this.parent) {\n return this.parent.get(name);\n }\n throw new Error(`Unknown GLSL identifier: ${name}`);\n }\n\n set(name, value) {\n if (this.values.has(name)) {\n this.values.set(name, cloneValue(value));\n return;\n }\n if (this.parent?.has(name)) {\n this.parent.set(name, value);\n return;\n }\n this.values.set(name, cloneValue(value));\n }\n\n define(name, value) {\n this.values.set(name, cloneValue(value));\n }\n}\n\nfunction cloneValue(value) {\n return isVector(value) ? [...value] : value;\n}\n\nfunction castValue(value, type) {\n if (type === \"int\") {\n return Math.trunc(finiteNumber(value));\n }\n if (type === \"float\") {\n return finiteNumber(value);\n }\n if (type === \"bool\") {\n return truthy(value);\n }\n if (type === \"vec2\") {\n return vec2(value);\n }\n if (type === \"vec3\") {\n return vec3(value);\n }\n if (type === \"vec4\") {\n return vec4(value);\n }\n return value;\n}\n\nfunction binaryValue(op, left, right) {\n switch (op) {\n case \"+\": return add(left, right);\n case \"-\": return sub(left, right);\n case \"*\": return mul(left, right);\n case \"/\": return div(left, right);\n case \"<\": return left < right;\n case \">\": return left > right;\n case \"<=\": return left <= right;\n case \">=\": return left >= right;\n case \"==\": return left === right;\n case \"!=\": return left !== right;\n case \"&&\": return truthy(left) && truthy(right);\n case \"||\": return truthy(left) || truthy(right);\n default:\n throw new Error(`Unsupported GLSL operator: ${op}`);\n }\n}\n\nfunction evalLValue(node, scope, runtime) {\n if (node.type === \"identifier\") {\n return {\n get: () => scope.get(node.name),\n set: (value) => {\n scope.set(node.name, value);\n return value;\n }\n };\n }\n if (node.type === \"member\") {\n const objectLValue = evalLValue(node.object, scope, runtime);\n return {\n get: () => getSwizzle(objectLValue.get(), node.property),\n set: (value) => {\n const target = objectLValue.get();\n setSwizzle(target, node.property, value);\n objectLValue.set(target);\n return value;\n }\n };\n }\n throw new Error(\"Unsupported GLSL assignment target\");\n}\n\nfunction evalExpression(node, scope, runtime) {\n switch (node.type) {\n case \"literal\":\n return cloneValue(node.value);\n case \"identifier\":\n return scope.get(node.name);\n case \"member\":\n return getSwizzle(evalExpression(node.object, scope, runtime), node.property);\n case \"unary\": {\n const value = evalExpression(node.argument, scope, runtime);\n if (node.op === \"-\") {\n return neg(value);\n }\n if (node.op === \"!\") {\n return !truthy(value);\n }\n return value;\n }\n case \"update\": {\n const lvalue = evalLValue(node.argument, scope, runtime);\n const current = lvalue.get();\n const next = node.op === \"++\" ? add(current, 1) : sub(current, 1);\n lvalue.set(next);\n return node.prefix ? next : current;\n }\n case \"binary\":\n if (node.op === \"&&\") {\n return truthy(evalExpression(node.left, scope, runtime)) && truthy(evalExpression(node.right, scope, runtime));\n }\n if (node.op === \"||\") {\n return truthy(evalExpression(node.left, scope, runtime)) || truthy(evalExpression(node.right, scope, runtime));\n }\n return binaryValue(node.op, evalExpression(node.left, scope, runtime), evalExpression(node.right, scope, runtime));\n case \"ternary\":\n return truthy(evalExpression(node.condition, scope, runtime))\n ? evalExpression(node.consequent, scope, runtime)\n : evalExpression(node.alternate, scope, runtime);\n case \"assign\": {\n const lvalue = evalLValue(node.left, scope, runtime);\n const right = evalExpression(node.right, scope, runtime);\n const current = lvalue.get();\n const value = node.op === \"=\"\n ? right\n : node.op === \"+=\"\n ? add(current, right)\n : node.op === \"-=\"\n ? sub(current, right)\n : node.op === \"*=\"\n ? mul(current, right)\n : div(current, right);\n return lvalue.set(value);\n }\n case \"call\": {\n const callee = node.callee.type === \"identifier\" ? node.callee.name : \"\";\n const args = node.args.map((arg) => evalExpression(arg, scope, runtime));\n if (BUILTINS[callee]) {\n return BUILTINS[callee](...args);\n }\n return runtime.call(callee, args);\n }\n default:\n throw new Error(`Unsupported GLSL expression node: ${node.type}`);\n }\n}\n\nfunction executeStatement(statement, scope, runtime) {\n switch (statement.type) {\n case \"empty\":\n return;\n case \"block\":\n for (const child of statement.body) {\n executeStatement(child, scope, runtime);\n }\n return;\n case \"var\":\n scope.define(statement.name, castValue(evalExpression(statement.init, scope, runtime), statement.varType));\n return;\n case \"expr\":\n evalExpression(statement.expression, scope, runtime);\n return;\n case \"return\":\n throw new ReturnValue(evalExpression(statement.expression, scope, runtime));\n case \"if\":\n if (truthy(evalExpression(statement.condition, scope, runtime))) {\n executeStatement(statement.consequent, scope, runtime);\n } else if (statement.alternate) {\n executeStatement(statement.alternate, scope, runtime);\n }\n return;\n case \"for\": {\n executeStatement(statement.init, scope, runtime);\n for (let guard = 0; guard < 10000; guard += 1) {\n if (statement.condition && !truthy(evalExpression(statement.condition, scope, runtime))) {\n return;\n }\n executeStatement(statement.body, scope, runtime);\n if (statement.update) {\n evalExpression(statement.update, scope, runtime);\n }\n }\n throw new Error(\"GLSL for-loop exceeded exporter safety limit\");\n }\n default:\n throw new Error(`Unsupported GLSL statement node: ${statement.type}`);\n }\n}\n\nfunction normalizedDistanceSource(source) {\n const text = String(source || \"\").trim();\n if (!text) {\n throw new Error(\"Implicit CAD model has no GLSL source\");\n }\n return `${text}\n\nfloat implicit_distance(vec3 p) {\n return sdf(p);\n}\n`;\n}\n\nfunction normalizedColorSource(source) {\n const text = String(source || \"\").trim();\n if (!text) {\n throw new Error(\"Implicit CAD model has no GLSL source\");\n }\n const hasColorFunction = /\\bvec3\\s+color\\s*\\(/.test(text);\n return `${text}\n\nvec3 implicit_color(vec3 p, vec3 normal) {\n ${hasColorFunction ? \"return color(p, normal);\" : \"return vec3(0.831372549, 0.831372549, 0.847058824);\"}\n}\n`;\n}\n\nfunction createImplicitCadProgramRuntime(model, source, functionName) {\n const program = new Parser(tokenize(source)).parseProgram();\n if (!program.functions.has(functionName)) {\n throw new Error(`Implicit CAD GLSL source did not define ${functionName}`);\n }\n const globals = new Scope();\n for (const [name, value] of Object.entries({\n PI: Math.PI,\n TWO_PI: Math.PI * 2,\n })) {\n globals.define(name, value);\n }\n for (const [name, uniform] of Object.entries(model?.uniforms || {})) {\n globals.define(name, castValue(uniform?.value, uniform?.type));\n }\n const runtime = {\n call(name, args) {\n const fn = program.functions.get(name);\n if (!fn) {\n throw new Error(`Unknown GLSL function: ${name}`);\n }\n const scope = new Scope(globals);\n fn.params.forEach((param, index) => {\n scope.define(param.name, castValue(args[index], param.type));\n });\n try {\n executeStatement(fn.body, scope, runtime);\n } catch (error) {\n if (error instanceof ReturnValue) {\n return castValue(error.value, fn.returnType);\n }\n throw error;\n }\n return defaultValueForType(fn.returnType);\n }\n };\n for (const global of program.globals) {\n executeStatement(global, globals, runtime);\n }\n return runtime;\n}\n\nexport function createImplicitCadSdfEvaluator(model) {\n const source = normalizedDistanceSource(model?.glslSource || model?.distanceSource);\n const runtime = createImplicitCadProgramRuntime(model, source, \"implicit_distance\");\n return (x, y, z) => finiteNumber(runtime.call(\"implicit_distance\", [vec3(x, y, z)]), 1e6);\n}\n\nexport function createImplicitCadColorEvaluator(model) {\n const source = normalizedColorSource(model?.colorSource || model?.glslSource || model?.distanceSource);\n const runtime = createImplicitCadProgramRuntime(model, source, \"implicit_color\");\n return (point, normal = [0, 0, 1]) => {\n const value = runtime.call(\"implicit_color\", [vec3(point), vec3(normal)]);\n return vec3(value).map((component) => Math.min(Math.max(finiteNumber(component, 0), 0), 1));\n };\n}\n\nexport const implicitSdfEvaluatorInternals = {\n BUILTINS,\n tokenize,\n Parser,\n};\n","export const IMPLICIT_CAD_SCHEMA = \"implicit.js/0.1.0\";\nexport const IMPLICIT_CAD_KIND = \"implicit\";\nexport const IMPLICIT_CAD_EXTENSIONS = Object.freeze([\".implicit.js\", \".implicit.mjs\"]);\n\nexport const IMPLICIT_SCHEMA = IMPLICIT_CAD_SCHEMA;\nexport const IMPLICIT_KIND = IMPLICIT_CAD_KIND;\nexport const IMPLICIT_EXTENSIONS = IMPLICIT_CAD_EXTENSIONS;\n","import {\n normalizeParameterAnimations,\n normalizeParameterDefinitions,\n normalizeParameterValues,\n parameterMapForDefinitions\n} from \"../../common/parameters.js\";\nimport { createImplicitCadSdfEvaluator } from \"./sdfEvaluator.js\";\nexport {\n IMPLICIT_CAD_EXTENSIONS,\n IMPLICIT_CAD_KIND,\n IMPLICIT_CAD_SCHEMA,\n IMPLICIT_EXTENSIONS,\n IMPLICIT_KIND,\n IMPLICIT_SCHEMA\n} from \"./schema.js\";\nimport {\n IMPLICIT_CAD_EXTENSIONS,\n IMPLICIT_CAD_KIND,\n IMPLICIT_CAD_SCHEMA\n} from \"./schema.js\";\n\nconst DEFAULT_BOUNDS = Object.freeze({\n min: [-50, -50, -50],\n max: [50, 50, 50]\n});\nconst AUTO_BOUNDS_RADII = Object.freeze([4, 8, 16, 32, 64, 128, 256, 512]);\nconst AUTO_BOUNDS_SCAN_SAMPLES = 5;\nconst AUTO_BOUNDS_REFINE_SAMPLES = 9;\nconst AUTO_BOUNDS_CACHE_LIMIT = 32;\nconst DEFAULT_COLOR = \"#f4f4f5\";\nconst HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\nconst GLSL_IDENTIFIER_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\nconst UNIFORM_TYPES = Object.freeze(new Set([\"float\", \"int\", \"bool\", \"vec2\", \"vec3\", \"vec4\"]));\nconst PARAM_UNIFORM_TYPES = Object.freeze({\n number: \"float\",\n boolean: \"bool\",\n color: \"vec3\",\n button: \"int\"\n});\n\nfunction isObject(value) {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction finiteNumber(value, fallback = 0) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\n\nfunction finitePositiveNumber(value, fallback) {\n const numeric = Number(value);\n return Number.isFinite(numeric) && numeric > 0 ? numeric : fallback;\n}\n\nfunction finiteVec3(value, fallback) {\n const source = Array.isArray(value) || ArrayBuffer.isView(value) ? value : [];\n return [0, 1, 2].map((index) => finiteNumber(source[index], fallback[index] || 0));\n}\n\nfunction finiteVector(value, length, fallback = []) {\n const source = Array.isArray(value) || ArrayBuffer.isView(value) ? value : [];\n return Array.from({ length }, (_, index) => finiteNumber(source[index], fallback[index] || 0));\n}\n\nfunction normalizeBounds(value, fallback = DEFAULT_BOUNDS) {\n const radius = finitePositiveNumber(value, null);\n const raw = radius\n ? { min: [-radius, -radius, -radius], max: [radius, radius, radius] }\n : Array.isArray(value) && value.length >= 2\n ? { min: value[0], max: value[1] }\n : isObject(value)\n ? value\n : fallback;\n const min = finiteVec3(raw.min, DEFAULT_BOUNDS.min);\n const max = finiteVec3(raw.max, DEFAULT_BOUNDS.max);\n for (let axis = 0; axis < 3; axis += 1) {\n if (max[axis] <= min[axis]) {\n const center = (min[axis] + max[axis]) / 2;\n min[axis] = center - 0.5;\n max[axis] = center + 0.5;\n }\n }\n return { min, max };\n}\n\nfunction cloneBounds(bounds) {\n return {\n min: [...bounds.min],\n max: [...bounds.max]\n };\n}\n\nfunction hasExplicitBounds(value) {\n if (value === undefined || value === null) {\n return false;\n }\n if (String(value).trim().toLowerCase() === \"auto\") {\n return false;\n }\n return !(isObject(value) && value.auto === true);\n}\n\nfunction boundsSize(bounds) {\n return [\n bounds.max[0] - bounds.min[0],\n bounds.max[1] - bounds.min[1],\n bounds.max[2] - bounds.min[2],\n ];\n}\n\nfunction expandBounds(min, max, margin) {\n const safeMargin = Math.max(finiteNumber(margin, 0), 0.25);\n return normalizeBounds({\n min: [min[0] - safeMargin, min[1] - safeMargin, min[2] - safeMargin],\n max: [max[0] + safeMargin, max[1] + safeMargin, max[2] + safeMargin]\n });\n}\n\nfunction sampleAutoBounds(sdf, bounds, samples) {\n const size = boundsSize(bounds);\n const steps = size.map((axisSize) => axisSize / Math.max(samples - 1, 1));\n const threshold = Math.max(Math.min(...steps) * 0.35, 0.002);\n const hitMin = [Infinity, Infinity, Infinity];\n const hitMax = [-Infinity, -Infinity, -Infinity];\n let hitCount = 0;\n let boundaryTouch = false;\n\n for (let iz = 0; iz < samples; iz += 1) {\n const z = bounds.min[2] + steps[2] * iz;\n for (let iy = 0; iy < samples; iy += 1) {\n const y = bounds.min[1] + steps[1] * iy;\n for (let ix = 0; ix < samples; ix += 1) {\n const x = bounds.min[0] + steps[0] * ix;\n const value = finiteNumber(sdf(x, y, z), 1e6);\n if (value > threshold) {\n continue;\n }\n hitCount += 1;\n hitMin[0] = Math.min(hitMin[0], x);\n hitMin[1] = Math.min(hitMin[1], y);\n hitMin[2] = Math.min(hitMin[2], z);\n hitMax[0] = Math.max(hitMax[0], x);\n hitMax[1] = Math.max(hitMax[1], y);\n hitMax[2] = Math.max(hitMax[2], z);\n if (value <= 0 && (\n ix === 0 || iy === 0 || iz === 0 ||\n ix === samples - 1 || iy === samples - 1 || iz === samples - 1\n )) {\n boundaryTouch = true;\n }\n }\n }\n }\n\n return {\n hitCount,\n hitMin,\n hitMax,\n boundaryTouch,\n step: steps,\n threshold\n };\n}\n\nfunction estimateAutoBoundsStartRadius(definition, params) {\n const largest = definition.parameters\n .filter((parameter) => parameter.type === \"number\")\n .filter((parameter) => !likelyPoseParameter(parameter))\n .reduce((maxValue, parameter) => {\n const value = Math.abs(finiteNumber(params[parameter.id], 0));\n return Math.max(maxValue, value);\n }, 1);\n const target = Math.max(largest * 3, 4);\n return AUTO_BOUNDS_RADII.find((radius) => radius >= target) || AUTO_BOUNDS_RADII[AUTO_BOUNDS_RADII.length - 1];\n}\n\nfunction estimateImplicitCadAutoBounds(partialModel, definition, context) {\n let sdf = null;\n try {\n sdf = createImplicitCadSdfEvaluator(partialModel);\n } catch {\n return cloneBounds(DEFAULT_BOUNDS);\n }\n\n let candidate = null;\n const startRadius = estimateAutoBoundsStartRadius(definition, context.params);\n for (const radius of AUTO_BOUNDS_RADII.filter((candidateRadius) => candidateRadius >= startRadius)) {\n const bounds = normalizeBounds(radius);\n const scan = sampleAutoBounds(sdf, bounds, AUTO_BOUNDS_SCAN_SAMPLES);\n if (!scan.hitCount) {\n continue;\n }\n const margin = Math.max(Math.max(...scan.step) * 1.5, radius * 0.06, 0.5);\n candidate = expandBounds(scan.hitMin, scan.hitMax, margin);\n if (!scan.boundaryTouch) {\n break;\n }\n }\n\n if (!candidate) {\n return cloneBounds(DEFAULT_BOUNDS);\n }\n\n for (let pass = 0; pass < 1; pass += 1) {\n const scan = sampleAutoBounds(sdf, candidate, AUTO_BOUNDS_REFINE_SAMPLES);\n if (!scan.hitCount) {\n break;\n }\n const margin = Math.max(Math.max(...scan.step) * 1.1, Math.max(...boundsSize(candidate)) * 0.025, 0.25);\n candidate = expandBounds(scan.hitMin, scan.hitMax, margin);\n }\n\n return candidate;\n}\n\nfunction likelyPoseParameter(parameter) {\n const unit = String(parameter?.unit || \"\").trim().toLowerCase();\n if (unit === \"deg\" || unit === \"rad\") {\n return true;\n }\n const text = `${parameter?.id || \"\"} ${parameter?.label || \"\"}`.toLowerCase();\n return [\n \"angle\",\n \"phase\",\n \"rotation\",\n \"rotate\",\n \"orbit\",\n \"spin\",\n \"yaw\",\n \"pitch\",\n \"roll\"\n ].some((token) => text.includes(token));\n}\n\nfunction autoBoundsCacheKey(definition, params, glslSource) {\n const values = definition.parameters\n .filter((parameter) => !likelyPoseParameter(parameter))\n .filter((parameter) => PARAM_UNIFORM_TYPES[parameter.type])\n .filter((parameter) => parameter.type !== \"color\")\n .map((parameter) => {\n const value = params[parameter.id];\n if (typeof value === \"number\") {\n return `${parameter.id}:${Number.isFinite(value) ? value.toPrecision(8) : \"0\"}`;\n }\n if (typeof value === \"boolean\") {\n return `${parameter.id}:${value ? \"1\" : \"0\"}`;\n }\n return `${parameter.id}:${String(value ?? \"\")}`;\n })\n .join(\";\");\n return `${glslSource.length}:${values}`;\n}\n\nfunction readCachedAutoBounds(cache, key, animationPlaying) {\n if (!cache) {\n return null;\n }\n if (cache.map.has(key)) {\n return cloneBounds(cache.map.get(key));\n }\n if (animationPlaying && cache.last) {\n return cloneBounds(cache.last);\n }\n return null;\n}\n\nfunction rememberAutoBounds(cache, key, bounds) {\n if (!cache) {\n return;\n }\n const cloned = cloneBounds(bounds);\n cache.map.set(key, cloned);\n cache.last = cloned;\n while (cache.map.size > AUTO_BOUNDS_CACHE_LIMIT) {\n const oldestKey = cache.map.keys().next().value;\n cache.map.delete(oldestKey);\n }\n}\n\nfunction resolveImplicitCadBounds(value, partialModel, definition, context, cache) {\n if (hasExplicitBounds(value)) {\n return {\n bounds: normalizeBounds(value),\n source: \"explicit\"\n };\n }\n const key = autoBoundsCacheKey(definition, context.params, partialModel.glslSource);\n const cached = readCachedAutoBounds(cache, key, context.animationState.playing);\n if (cached) {\n return {\n bounds: cached,\n source: \"auto\"\n };\n }\n const estimated = estimateImplicitCadAutoBounds(partialModel, definition, context);\n rememberAutoBounds(cache, key, estimated);\n return {\n bounds: estimated,\n source: \"auto\"\n };\n}\n\nfunction normalizeHexColor(value, fallback = DEFAULT_COLOR) {\n const color = String(value || \"\").trim();\n return HEX_COLOR_PATTERN.test(color) ? color : fallback;\n}\n\nfunction hexToRgb01(hex, fallback = DEFAULT_COLOR) {\n const value = normalizeHexColor(hex, fallback);\n const expanded = value.length === 4\n ? `${value[1]}${value[1]}${value[2]}${value[2]}${value[3]}${value[3]}`\n : value.slice(1);\n return [\n parseInt(expanded.slice(0, 2), 16) / 255,\n parseInt(expanded.slice(2, 4), 16) / 255,\n parseInt(expanded.slice(4, 6), 16) / 255,\n ];\n}\n\nfunction evaluateValue(value, context) {\n return typeof value === \"function\" ? value(context) : value;\n}\n\nfunction normalizeMaterial() {\n const material = {};\n return {\n color: normalizeHexColor(material.color, DEFAULT_COLOR),\n roughness: Math.min(Math.max(finiteNumber(material.roughness, 0.75), 0), 1),\n metalness: Math.min(Math.max(finiteNumber(material.metalness, 0.02), 0), 1),\n };\n}\n\nfunction unwrapModuleExports(moduleValue) {\n if (typeof moduleValue === \"function\") {\n return moduleValue();\n }\n if (!isObject(moduleValue)) {\n return moduleValue;\n }\n if (moduleValue.default !== undefined) {\n return typeof moduleValue.default === \"function\" ? moduleValue.default() : moduleValue.default;\n }\n if (moduleValue.model !== undefined) {\n return typeof moduleValue.model === \"function\" ? moduleValue.model() : moduleValue.model;\n }\n return moduleValue;\n}\n\nfunction normalizeUniformValue(rawValue, context = {}) {\n const raw = evaluateValue(rawValue, context);\n const value = isObject(raw) && Object.hasOwn(raw, \"value\")\n ? evaluateValue(raw.value, context)\n : raw;\n const explicitType = isObject(raw) ? String(raw.type || raw.kind || \"\").trim().toLowerCase() : \"\";\n const type = UNIFORM_TYPES.has(explicitType)\n ? explicitType\n : typeof value === \"boolean\"\n ? \"bool\"\n : typeof value === \"number\"\n ? \"float\"\n : typeof value === \"string\" && HEX_COLOR_PATTERN.test(value)\n ? \"vec3\"\n : Array.isArray(value) || ArrayBuffer.isView(value)\n ? `vec${Math.min(Math.max(value.length, 2), 4)}`\n : \"\";\n if (!UNIFORM_TYPES.has(type)) {\n return null;\n }\n if (type === \"bool\") {\n return { type, value: value === true };\n }\n if (type === \"int\") {\n return { type, value: Math.trunc(finiteNumber(value, 0)) };\n }\n if (type === \"float\") {\n return { type, value: finiteNumber(value, 0) };\n }\n if (typeof value === \"string\" && HEX_COLOR_PATTERN.test(value)) {\n return { type, value: hexToRgb01(value) };\n }\n const length = Number(type.slice(3));\n const fallback = Array.from({ length }, () => 0);\n return {\n type,\n value: finiteVector(value, length, fallback)\n };\n}\n\nfunction uniformsFromParams(parameters = [], params = {}) {\n return Object.fromEntries(\n parameters\n .map((parameter) => {\n const uniformName = String(parameter?.id || \"\").trim();\n if (!GLSL_IDENTIFIER_PATTERN.test(uniformName) || uniformName.startsWith(\"gl_\")) {\n throw new Error(`Implicit CAD param \"${uniformName}\" is not a valid GLSL uniform identifier.`);\n }\n const type = PARAM_UNIFORM_TYPES[parameter.type];\n if (!type) {\n return null;\n }\n const uniform = normalizeUniformValue({ type, value: params[parameter.id] });\n return uniform ? [uniformName, uniform] : null;\n })\n .filter(Boolean)\n );\n}\n\nfunction glslSourceFromModel(model, context = {}) {\n return String(evaluateValue(model.glsl ?? model.glslSource, context) || \"\").trim();\n}\n\nexport function pathIsImplicitCadSource(value = \"\") {\n const pathname = String(value || \"\").split(/[?#]/, 1)[0].toLowerCase();\n return IMPLICIT_CAD_EXTENSIONS.some((extension) => pathname.endsWith(extension));\n}\n\nfunction normalizeAnimationState(value = {}) {\n const activeId = String(value?.activeId || \"\").trim();\n return {\n activeId,\n playing: value?.playing === true,\n elapsedSec: Math.max(finiteNumber(value?.elapsedSec ?? value?.elapsed, 0), 0),\n speed: Math.min(Math.max(finiteNumber(value?.speed, 1), 0.1), 5)\n };\n}\n\nfunction findAnimation(definition, animationId) {\n const animations = Array.isArray(definition?.animations) ? definition.animations : [];\n if (!animations.length) {\n return null;\n }\n const normalizedId = String(animationId || \"\").trim();\n return animations.find((animation) => animation.id === normalizedId) || animations[0] || null;\n}\n\nfunction buildImplicitCadContext(definition, parameterValues = {}, animationState = {}) {\n const params = normalizeParameterValues(definition, parameterValues);\n const normalizedAnimationState = normalizeAnimationState(animationState);\n const animation = findAnimation(definition, normalizedAnimationState.activeId);\n const duration = Math.max(Number(animation?.duration) || 0, 0.001);\n const elapsedSec = Math.min(normalizedAnimationState.elapsedSec, duration);\n const progress = animation ? Math.min(Math.max(elapsedSec / duration, 0), 1) : 0;\n return {\n ...params,\n params,\n parameterValues: params,\n animation,\n animationState: {\n ...normalizedAnimationState,\n activeId: animation?.id || normalizedAnimationState.activeId,\n duration: animation?.duration || 0,\n loop: animation?.loop !== false\n },\n elapsed: elapsedSec,\n elapsedSec,\n duration: animation?.duration || 0,\n progress,\n cycle: duration > 0 ? elapsedSec / duration : 0,\n t: elapsedSec,\n time: elapsedSec\n };\n}\n\nfunction normalizeImplicitCadRuntimeModel(rawModel, definition, parameterValues = {}, animationState = {}, { sourceUrl = \"\", autoBoundsCache = null } = {}) {\n const context = buildImplicitCadContext(definition, parameterValues, animationState);\n const model = rawModel;\n if (!isObject(model)) {\n throw new Error(\"Implicit CAD module must export an object, or a function returning an object.\");\n }\n const uniforms = uniformsFromParams(definition.parameters, context.params);\n const glslSource = glslSourceFromModel(model, context);\n if (!glslSource) {\n throw new Error(\"Implicit CAD module must export GLSL code in glsl.\");\n }\n const resolvedBounds = resolveImplicitCadBounds(\n evaluateValue(model.bounds, context),\n { glslSource, uniforms },\n definition,\n context,\n autoBoundsCache\n );\n const bounds = resolvedBounds.bounds;\n const size = [\n bounds.max[0] - bounds.min[0],\n bounds.max[1] - bounds.min[1],\n bounds.max[2] - bounds.min[2],\n ];\n const center = [\n (bounds.min[0] + bounds.max[0]) / 2,\n (bounds.min[1] + bounds.max[1]) / 2,\n (bounds.min[2] + bounds.max[2]) / 2,\n ];\n const radius = Math.max(Math.hypot(size[0], size[1], size[2]) / 2, 1e-3);\n const evaluatedRender = evaluateValue(model.render, context);\n const render = isObject(evaluatedRender) ? evaluatedRender : {};\n const epsilon = finitePositiveNumber(evaluateValue(render.epsilon, context), Math.max(radius * 0.0007, 0.002));\n const normalEpsilon = finitePositiveNumber(\n evaluateValue(render.normalEpsilon, context),\n Math.max(epsilon * 2.5, radius * 0.001)\n );\n const stepScale = Math.min(\n Math.max(finiteNumber(evaluateValue(render.stepScale, context), 0.45), 0.05),\n 1\n );\n const maxStep = finitePositiveNumber(\n evaluateValue(render.maxStep, context),\n Math.max(radius * 0.035, epsilon * 10)\n );\n return {\n schema: String(model.schema || IMPLICIT_CAD_SCHEMA),\n kind: IMPLICIT_CAD_KIND,\n name: String(model.name || model.title || \"Implicit CAD\").trim() || \"Implicit CAD\",\n description: String(model.description || \"\").trim(),\n units: String(model.units || \"mm\").trim() || \"mm\",\n sourceUrl: String(sourceUrl || model.sourceUrl || \"\").trim(),\n parameters: definition.parameters,\n parameterMap: definition.parameterMap,\n defaultParameterValues: definition.defaultParameterValues,\n parameterValues: context.params,\n animations: definition.animations,\n animationState: context.animationState,\n glslSource,\n distanceSource: glslSource,\n colorSource: /\\bvec3\\s+color\\s*\\(/.test(glslSource) ? glslSource : \"\",\n uniforms,\n uniformSignature: Object.entries(uniforms)\n .map(([name, uniform]) => `${name}:${uniform.type}`)\n .sort()\n .join(\";\"),\n bounds,\n boundsSource: resolvedBounds.source,\n center,\n size,\n radius,\n material: normalizeMaterial(),\n background: {},\n maxSteps: Math.max(16, Math.min(Math.floor(finiteNumber(evaluateValue(render.steps, context), 192)), 768)),\n maxDistance: finitePositiveNumber(evaluateValue(render.maxDistance, context), radius * 8),\n stepScale,\n maxStep,\n epsilon,\n normalEpsilon,\n };\n}\n\nexport function normalizeImplicitCadDefinition(moduleValue, { sourceUrl = \"\" } = {}) {\n const model = unwrapModuleExports(moduleValue);\n if (!isObject(model)) {\n throw new Error(\"Implicit CAD module must export an object, or a function returning an object.\");\n }\n if (model.kind === IMPLICIT_CAD_KIND && model.glslSource && Array.isArray(model.parameters)) {\n return model.definition ? model : { ...model, definition: null };\n }\n const parameters = normalizeParameterDefinitions(model.params);\n const parameterMap = parameterMapForDefinitions(parameters);\n const autoBoundsCache = {\n map: new Map(),\n last: null\n };\n const definition = {\n schema: String(model.schema || IMPLICIT_CAD_SCHEMA),\n kind: IMPLICIT_CAD_KIND,\n name: String(model.name || model.title || \"Implicit CAD\").trim() || \"Implicit CAD\",\n description: String(model.description || \"\").trim(),\n units: String(model.units || \"mm\").trim() || \"mm\",\n sourceUrl: String(sourceUrl || model.sourceUrl || \"\").trim(),\n parameters,\n parameterMap,\n defaultParameterValues: {},\n animations: normalizeParameterAnimations(model.animations),\n buildModel(parameterValues = {}, animationState = {}) {\n return normalizeImplicitCadRuntimeModel(model, definition, parameterValues, animationState, { sourceUrl, autoBoundsCache });\n }\n };\n definition.defaultParameterValues = normalizeParameterValues(\n definition,\n model.values || {}\n );\n const defaultModel = definition.buildModel(definition.defaultParameterValues);\n return {\n ...defaultModel,\n definition\n };\n}\n\nexport function normalizeImplicitCadModel(moduleValue, { sourceUrl = \"\" } = {}) {\n return normalizeImplicitCadDefinition(moduleValue, { sourceUrl });\n}\n\nexport function implicitCadBoundsCenterAndRadius(model) {\n let normalized = null;\n try {\n normalized = isObject(model) || typeof model === \"function\" ? normalizeImplicitCadModel(model) : null;\n } catch {\n normalized = null;\n }\n if (normalized) {\n return {\n center: normalized.center,\n radius: normalized.radius,\n bounds: normalized.bounds,\n };\n }\n return {\n center: [0, 0, 0],\n radius: 1,\n bounds: { ...DEFAULT_BOUNDS },\n };\n}\n\nexport const pathIsImplicitSource = pathIsImplicitCadSource;\nexport const normalizeImplicitDefinition = normalizeImplicitCadDefinition;\nexport const normalizeImplicitModel = normalizeImplicitCadModel;\nexport const implicitBoundsCenterAndRadius = implicitCadBoundsCenterAndRadius;\n","export const BASE_VIEWER_THEME = {\n sceneBackground: \"#09090b\",\n surface: \"#f4f4f5\",\n surfaceRoughness: 0.92,\n surfaceMetalness: 0.03\n};\n\nexport const HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}){1,2}$/;\n\nexport function getViewerThemeValue(viewerTheme, key, fallback) {\n const value = viewerTheme?.[key];\n return value ?? BASE_VIEWER_THEME[key] ?? fallback;\n}\n","import {\n BASE_VIEWER_THEME,\n HEX_COLOR_PATTERN\n} from \"./stageTheme.js\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction firstThemeFillColor(materialSettings = {}, fallback = BASE_VIEWER_THEME.surface) {\n const fillColors = Array.isArray(materialSettings.fillColors) ? materialSettings.fillColors : [];\n return String(fillColors[0] || materialSettings.defaultColor || fallback || BASE_VIEWER_THEME.surface);\n}\n\nexport function readSourceColor(THREE, value) {\n const normalized = String(value || \"\").trim();\n if (!HEX_COLOR_PATTERN.test(normalized)) {\n return null;\n }\n const expanded = normalized.length === 4\n ? `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`\n : normalized;\n return new THREE.Color(expanded);\n}\n\nexport function shapeSourceColor(THREE, sourceColor, materialSettings = {}, { applyTint = true } = {}) {\n const shaped = (sourceColor || new THREE.Color(\"#ffffff\")).clone();\n const tintStrength = clamp(Number(materialSettings.tintStrength) || 0, 0, 1);\n if (applyTint && tintStrength > 0) {\n const tintColor = readSourceColor(THREE, materialSettings.defaultColor || materialSettings.tintColor) || new THREE.Color(\"#ffffff\");\n if (materialSettings.tintMode === \"blend\") {\n shaped.lerp(tintColor, tintStrength);\n } else {\n shaped.lerp(shaped.clone().multiply(tintColor), tintStrength);\n }\n }\n\n const saturation = clamp(Number(materialSettings.saturation) || 1, 0, 2.5);\n if (Math.abs(saturation - 1) > 1e-4) {\n const hsl = {};\n shaped.getHSL(hsl);\n shaped.setHSL(hsl.h, clamp(hsl.s * saturation, 0, 1), hsl.l);\n }\n\n const contrast = clamp(Number(materialSettings.contrast) || 1, 0, 2.5);\n const brightness = clamp(Number(materialSettings.brightness) || 1, 0, 2);\n shaped.r = clamp(((shaped.r - 0.5) * contrast + 0.5) * brightness, 0, 1);\n shaped.g = clamp(((shaped.g - 0.5) * contrast + 0.5) * brightness, 0, 1);\n shaped.b = clamp(((shaped.b - 0.5) * contrast + 0.5) * brightness, 0, 1);\n return shaped;\n}\n\nexport function resolveSourceBaseColor(THREE, {\n hasVertexColors = false,\n sourceColor = null,\n materialSettings = {},\n fallbackColor = BASE_VIEWER_THEME.surface,\n forceFill = false\n} = {}) {\n if (forceFill || !sourceColor) {\n const fillColor = readSourceColor(\n THREE,\n firstThemeFillColor(materialSettings, fallbackColor)\n ) || new THREE.Color(fallbackColor || BASE_VIEWER_THEME.surface);\n return shapeSourceColor(THREE, fillColor, materialSettings, { applyTint: false });\n }\n if (hasVertexColors) {\n return new THREE.Color(\"#ffffff\");\n }\n return shapeSourceColor(THREE, sourceColor, materialSettings);\n}\n","import {\n normalizeCameraSpec\n} from \"../../common/camera.js\";\nimport {\n resolveAppearanceSettings\n} from \"../../common/renderOptions.js\";\nimport {\n normalizeThemeSettings\n} from \"../../common/themeSettings.js\";\nimport {\n normalizeImplicitGraphicsSettings\n} from \"./graphicsSettings.js\";\nimport { normalizeImplicitCadModel } from \"./model.js\";\nimport { createImplicitCadSdfEvaluator } from \"./sdfEvaluator.js\";\nimport {\n BASE_VIEWER_THEME,\n getViewerThemeValue\n} from \"../viewer/stageTheme.js\";\nimport {\n readSourceColor,\n resolveSourceBaseColor\n} from \"../viewer/surfaceMaterials.js\";\n\nconst DEFAULT_BACKGROUND = \"#0b1020\";\nconst DEFAULT_FOV_DEG = 48;\nconst DEFAULT_SNAPSHOT_CAMERA_ZOOM = 1.25;\nconst DEFAULT_SNAPSHOT_FRAME_MARGIN = 1.42;\nconst FRAME_BOUNDS_SAMPLE_COUNT = 25;\nconst FRAME_BOUNDS_THRESHOLD_STEP_FACTOR = 0.45;\nconst FRAME_BOUNDS_MARGIN_STEP_FACTOR = 0.75;\nconst FRAME_BOUNDS_MARGIN_SIZE_FACTOR = 0.015;\nconst DEFAULT_APPEARANCE_ID = \"workbench\";\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction finiteNumber(value, fallback = 0) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\n\nfunction colorToRgb01(color) {\n return [\n clamp(Number(color?.r) || 0, 0, 1),\n clamp(Number(color?.g) || 0, 0, 1),\n clamp(Number(color?.b) || 0, 0, 1)\n ];\n}\n\nfunction normalizeBackgroundMode(value) {\n const normalized = String(value || \"\").trim().toLowerCase();\n if (normalized === \"linear\") {\n return 1;\n }\n if (normalized === \"radial\") {\n return 2;\n }\n return 0;\n}\n\nfunction degreesToRadians(value, fallback = 180) {\n const numeric = Number(value);\n return (Number.isFinite(numeric) ? numeric : fallback) * Math.PI / 180;\n}\n\nfunction implicitCadUniformDeclarations(uniforms = {}) {\n return Object.entries(uniforms)\n .map(([name, uniform]) => `uniform ${uniform.type} ${name};`)\n .sort()\n .join(\"\\n\");\n}\n\n// Mirrors the mesh viewer's default workbench light rig so implicit models\n// shade like STEP/GLB models when no theme settings are provided.\nconst DEFAULT_LIGHTING_RIG = Object.freeze({\n toneMappingExposure: 1.16,\n directional: { color: \"#ffffff\", intensity: 1.16, position: { x: -210, y: 260, z: 270 } },\n spot: { color: \"#f4fbff\", intensity: 0.52, position: { x: 190, y: 210, z: 170 } },\n point: { color: \"#ffe2ba\", intensity: 0.28, position: { x: -240, y: 110, z: -210 } },\n ambient: { color: \"#ffffff\", intensity: 0.4 },\n hemisphere: { skyColor: \"#ffffff\", groundColor: \"#d6e2ee\", intensity: 1.12 },\n environmentAmbientScale: 1.0,\n rimColor: \"#6db6e8\",\n rimIntensity: 0.08,\n floorShadowOpacity: 0.16,\n});\n\nfunction srgbChannelToLinear(value) {\n const channel = Math.min(Math.max(finiteNumber(value, 0), 0), 1);\n return channel <= 0.04045 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n}\n\nfunction linearLightRgb(color, intensity, fallbackColor) {\n const rgb = hexToRgb01(color, fallbackColor);\n const scale = Math.max(finiteNumber(intensity, 0), 0);\n return rgb.map((channel) => srgbChannelToLinear(channel) * scale);\n}\n\nfunction lightDirectionFromPosition(position, fallbackPosition) {\n const source = position && typeof position === \"object\" ? position : fallbackPosition;\n const x = finiteNumber(source?.x, fallbackPosition.x);\n const y = finiteNumber(source?.y, fallbackPosition.y);\n const z = finiteNumber(source?.z, fallbackPosition.z);\n const length = Math.hypot(x, y, z);\n return length > 1e-9\n ? [x / length, y / length, z / length]\n : lightDirectionFromPosition(fallbackPosition, { x: 0, y: 0, z: 1 });\n}\n\nfunction implicitFloorFadeRadius(bounds) {\n const size = [\n bounds.max[0] - bounds.min[0],\n bounds.max[1] - bounds.min[1],\n bounds.max[2] - bounds.min[2],\n ];\n return Math.max(Math.hypot(size[0], size[1], size[2]) * 1.2, 1e-3);\n}\n\n// Declared model bounds are often padded well past the surface, which would\n// hang the stage-floor shadow in mid-air. Sample the SDF for tight bounds and\n// cache per material; re-estimate only when declared bounds move materially.\nfunction implicitFloorBoundsForModel(normalized, userData = null, { estimate = true } = {}) {\n const boundsKey = `${normalized.bounds.min.join(\",\")}|${normalized.bounds.max.join(\",\")}`;\n if (userData?.implicitFloorBounds) {\n if (userData.implicitFloorBoundsKey === boundsKey) {\n return userData.implicitFloorBounds;\n }\n const previous = userData.implicitFloorDeclaredBounds;\n if (previous) {\n const current = [...normalized.bounds.min, ...normalized.bounds.max];\n const radius = Math.max(finiteNumber(normalized.radius, 1), 1e-6);\n let maxDelta = 0;\n for (let index = 0; index < 6; index += 1) {\n maxDelta = Math.max(maxDelta, Math.abs(finiteNumber(previous[index], 0) - finiteNumber(current[index], 0)));\n }\n if (maxDelta < radius * 0.05) {\n return userData.implicitFloorBounds;\n }\n }\n }\n let floorBounds = null;\n try {\n floorBounds = estimate\n ? estimateImplicitCadFrameBounds(normalized)\n : peekImplicitCadFrameBounds(normalized);\n } catch {\n floorBounds = null;\n }\n if (!floorBounds) {\n // No estimate available yet: place the floor on declared bounds without\n // caching, so a later (possibly async) estimate can still refine it.\n return normalized.bounds;\n }\n if (userData) {\n userData.implicitFloorBounds = floorBounds;\n userData.implicitFloorBoundsKey = boundsKey;\n userData.implicitFloorDeclaredBounds = [...normalized.bounds.min, ...normalized.bounds.max];\n }\n return floorBounds;\n}\n\nfunction applyImplicitFloorUniforms(material, floorBounds) {\n if (!material?.uniforms?.uFloorZ || !material.uniforms.uFloorCenter || !material.uniforms.uFloorFadeRadius) {\n return;\n }\n material.uniforms.uFloorZ.value = floorBounds.min[2];\n material.uniforms.uFloorCenter.value.set(\n (floorBounds.min[0] + floorBounds.max[0]) / 2,\n (floorBounds.min[1] + floorBounds.max[1]) / 2\n );\n material.uniforms.uFloorFadeRadius.value = implicitFloorFadeRadius(floorBounds);\n}\n\n// Resolve tight floor bounds off the main thread and apply them to the\n// material; loading stays responsive and the floor snaps in when ready.\nexport async function refreshImplicitCadFloorBounds(material, model) {\n const normalized = normalizeImplicitCadModel(model);\n await estimateImplicitCadFrameBoundsAsync(normalized);\n const floorBounds = implicitFloorBoundsForModel(normalized, material?.userData || null, { estimate: false });\n applyImplicitFloorUniforms(material, floorBounds);\n return floorBounds;\n}\n\nfunction vecUniformValue(THREE, type, value = []) {\n const source = Array.isArray(value) || ArrayBuffer.isView(value) ? value : [];\n if (type === \"vec2\") {\n return new THREE.Vector2(finiteNumber(source[0], 0), finiteNumber(source[1], 0));\n }\n if (type === \"vec3\") {\n return new THREE.Vector3(finiteNumber(source[0], 0), finiteNumber(source[1], 0), finiteNumber(source[2], 0));\n }\n return new THREE.Vector4(\n finiteNumber(source[0], 0),\n finiteNumber(source[1], 0),\n finiteNumber(source[2], 0),\n finiteNumber(source[3], 0)\n );\n}\n\nfunction threeUniformValue(THREE, uniform) {\n if (uniform?.type === \"bool\") {\n return uniform.value === true;\n }\n if (uniform?.type === \"int\") {\n return Math.trunc(finiteNumber(uniform.value, 0));\n }\n if (uniform?.type === \"vec2\" || uniform?.type === \"vec3\" || uniform?.type === \"vec4\") {\n return vecUniformValue(THREE, uniform.type, uniform.value);\n }\n return finiteNumber(uniform?.value, 0);\n}\n\nfunction updateThreeUniformValue(THREE, targetUniform, uniform) {\n if (!targetUniform) {\n return;\n }\n if (uniform?.type === \"bool\") {\n targetUniform.value = uniform.value === true;\n return;\n }\n if (uniform?.type === \"int\") {\n targetUniform.value = Math.trunc(finiteNumber(uniform.value, 0));\n return;\n }\n if (uniform?.type === \"vec2\" || uniform?.type === \"vec3\" || uniform?.type === \"vec4\") {\n const nextValue = vecUniformValue(THREE, uniform.type, uniform.value);\n if (targetUniform.value?.copy) {\n targetUniform.value.copy(nextValue);\n } else {\n targetUniform.value = nextValue;\n }\n return;\n }\n targetUniform.value = finiteNumber(uniform?.value, 0);\n}\n\nfunction isIdentifierCharacter(value) {\n return /[A-Za-z0-9_]/.test(value || \"\");\n}\n\nfunction previousSignificantCharacter(source, index) {\n for (let cursor = index - 1; cursor >= 0; cursor -= 1) {\n const character = source[cursor];\n if (!/\\s/.test(character)) {\n return character;\n }\n }\n return \"\";\n}\n\nfunction nextSignificantCharacter(source, index) {\n for (let cursor = index; cursor < source.length; cursor += 1) {\n const character = source[cursor];\n if (!/\\s/.test(character)) {\n return character;\n }\n }\n return \"\";\n}\n\nfunction statementPrefix(source, index) {\n const boundary = Math.max(\n source.lastIndexOf(\";\", index - 1),\n source.lastIndexOf(\"{\", index - 1),\n source.lastIndexOf(\"}\", index - 1),\n source.lastIndexOf(\"\\n\", index - 1)\n );\n return source.slice(boundary + 1, index);\n}\n\nfunction isInsideForHeader(source, index) {\n const forIndex = source.lastIndexOf(\"for\", index);\n if (forIndex < 0) {\n return false;\n }\n const boundary = Math.max(\n source.lastIndexOf(\";\", forIndex - 1),\n source.lastIndexOf(\"{\", forIndex - 1),\n source.lastIndexOf(\"}\", forIndex - 1),\n source.lastIndexOf(\"\\n\", forIndex - 1)\n );\n if (forIndex < boundary) {\n return false;\n }\n const openParen = source.indexOf(\"(\", forIndex);\n const closeParen = openParen >= 0 ? source.indexOf(\")\", openParen) : -1;\n return openParen >= 0 && openParen < index && closeParen >= index;\n}\n\nfunction isExponentSuffixDigits(source, start) {\n // Adjacent characters only: a signed exponent never contains whitespace, so\n // \"1.0e-6\" matches here while \"value - 6\" and \"foo_e-6\" do not.\n const sign = source[start - 1];\n if (sign !== \"+\" && sign !== \"-\") {\n return false;\n }\n const marker = source[start - 2];\n if (marker !== \"e\" && marker !== \"E\") {\n return false;\n }\n return /[0-9.]/.test(source[start - 3] || \"\");\n}\n\nconst INT_SCALAR_DECLARATION_PATTERN = /\\b(?:int|uint)\\s+([A-Za-z_]\\w*)/g;\n\nfunction collectIntScalarIdentifiers(source) {\n const identifiers = new Set();\n let match;\n INT_SCALAR_DECLARATION_PATTERN.lastIndex = 0;\n while ((match = INT_SCALAR_DECLARATION_PATTERN.exec(source)) !== null) {\n identifiers.add(match[1]);\n }\n return identifiers;\n}\n\nfunction comparisonOperandBefore(source, start) {\n // Only operators ending in \"=\" can reach a literal here: a bare \"<\" or \">\"\n // before the literal is already rejected by the previous-character guard.\n let cursor = start - 1;\n while (cursor >= 0 && /\\s/.test(source[cursor])) {\n cursor -= 1;\n }\n if (source[cursor] !== \"=\") {\n return \"\";\n }\n const lead = source[cursor - 1];\n if (lead !== \"=\" && lead !== \"!\" && lead !== \"<\" && lead !== \">\") {\n return \"\";\n }\n let operandEnd = cursor - 2;\n while (operandEnd >= 0 && /\\s/.test(source[operandEnd])) {\n operandEnd -= 1;\n }\n let operandStart = operandEnd;\n while (operandStart >= 0 && isIdentifierCharacter(source[operandStart])) {\n operandStart -= 1;\n }\n return source.slice(operandStart + 1, operandEnd + 1);\n}\n\nfunction shouldPromoteIntegerLiteral(source, start, end, intIdentifiers) {\n const previous = previousSignificantCharacter(source, start);\n const next = nextSignificantCharacter(source, end);\n if (previous === \".\" || next === \".\" || isIdentifierCharacter(previous) || isIdentifierCharacter(next)) {\n return false;\n }\n if (next === \"[\" || previous === \"[\") {\n return false;\n }\n if (previous && !/[+\\-*/=(,{?:]/.test(previous)) {\n return false;\n }\n if (next && !/[,);}\\]+\\-*/?:]/.test(next)) {\n return false;\n }\n if (isExponentSuffixDigits(source, start)) {\n return false;\n }\n const comparedOperand = comparisonOperandBefore(source, start);\n if (comparedOperand && intIdentifiers?.has(comparedOperand)) {\n return false;\n }\n if (isInsideForHeader(source, start)) {\n return false;\n }\n const prefix = statementPrefix(source, start);\n return !/\\b(?:int|ivec[234]|uint|uvec[234])\\b/.test(prefix);\n}\n\nexport function normalizeImplicitCadGlslFloatLiterals(source) {\n const text = String(source || \"\");\n const intIdentifiers = collectIntScalarIdentifiers(text);\n let result = \"\";\n let index = 0;\n while (index < text.length) {\n const character = text[index];\n const nextCharacter = text[index + 1];\n if (character === \"/\" && (nextCharacter === \"/\" || nextCharacter === \"*\")) {\n const commentEnd = nextCharacter === \"/\"\n ? text.indexOf(\"\\n\", index + 2)\n : text.indexOf(\"*/\", index + 2);\n const end = commentEnd < 0\n ? text.length\n : nextCharacter === \"/\" ? commentEnd : commentEnd + 2;\n result += text.slice(index, end);\n index = end;\n continue;\n }\n const match = text.slice(index).match(/^\\d+/);\n if (match) {\n const token = match[0];\n const end = index + token.length;\n result += shouldPromoteIntegerLiteral(text, index, end, intIdentifiers) ? `${token}.0` : token;\n index = end;\n continue;\n }\n result += character;\n index += 1;\n }\n return result;\n}\n\nfunction hexToRgb01(hex, fallback = DEFAULT_BACKGROUND) {\n const raw = String(hex || fallback).trim();\n const value = /^#(?:[0-9a-fA-F]{3}){1,2}$/.test(raw) ? raw : fallback;\n const expanded = value.length === 4\n ? `${value[1]}${value[1]}${value[2]}${value[2]}${value[3]}${value[3]}`\n : value.slice(1);\n return [\n parseInt(expanded.slice(0, 2), 16) / 255,\n parseInt(expanded.slice(2, 4), 16) / 255,\n parseInt(expanded.slice(4, 6), 16) / 255,\n ];\n}\n\nfunction cameraBoundsForImplicitModel(model) {\n if (model?.bounds?.min && model?.bounds?.max) {\n return model.bounds;\n }\n const radius = Math.max(finiteNumber(model?.radius, 1), 1e-3);\n const center = Array.isArray(model?.center) ? model.center : [0, 0, 0];\n return {\n min: [center[0] - radius, center[1] - radius, center[2] - radius],\n max: [center[0] + radius, center[1] + radius, center[2] + radius]\n };\n}\n\nfunction boundsCenter(bounds) {\n return [\n (finiteNumber(bounds?.min?.[0], -1) + finiteNumber(bounds?.max?.[0], 1)) / 2,\n (finiteNumber(bounds?.min?.[1], -1) + finiteNumber(bounds?.max?.[1], 1)) / 2,\n (finiteNumber(bounds?.min?.[2], -1) + finiteNumber(bounds?.max?.[2], 1)) / 2\n ];\n}\n\nfunction boundsSize(bounds) {\n return [\n Math.max(finiteNumber(bounds?.max?.[0], 1) - finiteNumber(bounds?.min?.[0], -1), 1e-3),\n Math.max(finiteNumber(bounds?.max?.[1], 1) - finiteNumber(bounds?.min?.[1], -1), 1e-3),\n Math.max(finiteNumber(bounds?.max?.[2], 1) - finiteNumber(bounds?.min?.[2], -1), 1e-3)\n ];\n}\n\nfunction expandBounds(min, max, margin) {\n const safeMargin = Math.max(finiteNumber(margin, 0), 0);\n return {\n min: [min[0] - safeMargin, min[1] - safeMargin, min[2] - safeMargin],\n max: [max[0] + safeMargin, max[1] + safeMargin, max[2] + safeMargin]\n };\n}\n\nconst FRAME_BOUNDS_CACHE_LIMIT = 32;\nconst frameBoundsEstimateCache = new Map();\n\nfunction frameBoundsCacheKey(model, fallbackBounds) {\n const source = String(model?.glslSource || model?.distanceSource || \"\");\n let uniformsKey = \"\";\n try {\n uniformsKey = JSON.stringify(model?.uniforms ?? null);\n } catch {\n uniformsKey = \"?\";\n }\n return `${JSON.stringify(fallbackBounds)}|${uniformsKey}|${source}`;\n}\n\n// The CPU evaluator interprets the model's GLSL per sample, so the grid\n// density must shrink as source size grows or heavy models stall the browser\n// main thread for tens of seconds on load.\nfunction frameBoundsSampleCount(model) {\n const sourceLength = String(model?.glslSource || model?.distanceSource || \"\").length;\n if (sourceLength > 16000) {\n return 9;\n }\n if (sourceLength > 8000) {\n return 11;\n }\n if (sourceLength > 4000) {\n return 17;\n }\n return FRAME_BOUNDS_SAMPLE_COUNT;\n}\n\nfunction rememberFrameBoundsEstimate(cacheKey, estimated) {\n frameBoundsEstimateCache.set(cacheKey, estimated);\n while (frameBoundsEstimateCache.size > FRAME_BOUNDS_CACHE_LIMIT) {\n frameBoundsEstimateCache.delete(frameBoundsEstimateCache.keys().next().value);\n }\n}\n\nfunction peekImplicitCadFrameBounds(model) {\n if (model?.frameBounds?.min && model?.frameBounds?.max) {\n return model.frameBounds;\n }\n const fallbackBounds = cameraBoundsForImplicitModel(model);\n return frameBoundsEstimateCache.get(frameBoundsCacheKey(model, fallbackBounds)) || null;\n}\n\n// Shared core of the sync and async estimators: a generator that yields after\n// each sample row so the async driver can hand control back to the event loop\n// between slices while the sync driver simply drains it in one pass.\nfunction* scanImplicitCadFrameBoundsSteps(model, fallbackBounds, cacheKey) {\n let sdf = null;\n try {\n sdf = createImplicitCadSdfEvaluator(model);\n } catch {\n return fallbackBounds;\n }\n\n const sampleCount = frameBoundsSampleCount(model);\n const size = boundsSize(fallbackBounds);\n const step = size.map((axisSize) => axisSize / Math.max(sampleCount - 1, 1));\n const threshold = Math.max(\n Math.min(...step) * FRAME_BOUNDS_THRESHOLD_STEP_FACTOR,\n finiteNumber(model?.epsilon, 0.002) * 12,\n 0.01\n );\n const hitMin = [Infinity, Infinity, Infinity];\n const hitMax = [-Infinity, -Infinity, -Infinity];\n let hitCount = 0;\n try {\n for (let ix = 0; ix < sampleCount; ix += 1) {\n const x = fallbackBounds.min[0] + step[0] * ix;\n for (let iy = 0; iy < sampleCount; iy += 1) {\n const y = fallbackBounds.min[1] + step[1] * iy;\n for (let iz = 0; iz < sampleCount; iz += 1) {\n const z = fallbackBounds.min[2] + step[2] * iz;\n if (finiteNumber(sdf(x, y, z), 1e6) > threshold) {\n continue;\n }\n hitCount += 1;\n hitMin[0] = Math.min(hitMin[0], x);\n hitMin[1] = Math.min(hitMin[1], y);\n hitMin[2] = Math.min(hitMin[2], z);\n hitMax[0] = Math.max(hitMax[0], x);\n hitMax[1] = Math.max(hitMax[1], y);\n hitMax[2] = Math.max(hitMax[2], z);\n }\n yield;\n }\n }\n } catch {\n return fallbackBounds;\n }\n if (!hitCount) {\n return fallbackBounds;\n }\n const margin = Math.max(\n Math.max(...step) * FRAME_BOUNDS_MARGIN_STEP_FACTOR,\n Math.max(...size) * FRAME_BOUNDS_MARGIN_SIZE_FACTOR,\n finiteNumber(model?.epsilon, 0.002) * 20,\n 0.25\n );\n const expanded = expandBounds(hitMin, hitMax, margin);\n // The sampling margin can push past the model's declared bounds, especially\n // at coarse grids; declared bounds are an authoritative outer limit, so the\n // estimate only ever refines inward.\n const estimated = {\n min: expanded.min.map((value, axis) => Math.max(value, fallbackBounds.min[axis])),\n max: expanded.max.map((value, axis) => Math.min(value, fallbackBounds.max[axis])),\n };\n rememberFrameBoundsEstimate(cacheKey, estimated);\n return estimated;\n}\n\nfunction estimateImplicitCadFrameBounds(model) {\n const fallbackBounds = cameraBoundsForImplicitModel(model);\n if (model?.frameBounds?.min && model?.frameBounds?.max) {\n return model.frameBounds;\n }\n const cacheKey = frameBoundsCacheKey(model, fallbackBounds);\n if (frameBoundsEstimateCache.has(cacheKey)) {\n const cached = frameBoundsEstimateCache.get(cacheKey);\n frameBoundsEstimateCache.delete(cacheKey);\n frameBoundsEstimateCache.set(cacheKey, cached);\n return cached;\n }\n const steps = scanImplicitCadFrameBoundsSteps(model, fallbackBounds, cacheKey);\n let current = steps.next();\n while (!current.done) {\n current = steps.next();\n }\n return current.value || fallbackBounds;\n}\n\nconst frameBoundsEstimatePending = new Map();\n\nexport async function estimateImplicitCadFrameBoundsAsync(model) {\n const fallbackBounds = cameraBoundsForImplicitModel(model);\n if (model?.frameBounds?.min && model?.frameBounds?.max) {\n return model.frameBounds;\n }\n const cacheKey = frameBoundsCacheKey(model, fallbackBounds);\n if (frameBoundsEstimateCache.has(cacheKey)) {\n return frameBoundsEstimateCache.get(cacheKey);\n }\n if (frameBoundsEstimatePending.has(cacheKey)) {\n return frameBoundsEstimatePending.get(cacheKey);\n }\n const pending = (async () => {\n const now = () => (typeof performance !== \"undefined\" ? performance.now() : Date.now());\n const steps = scanImplicitCadFrameBoundsSteps(model, fallbackBounds, cacheKey);\n let sliceStart = now();\n let current = steps.next();\n while (!current.done) {\n if (now() - sliceStart >= 10) {\n await new Promise((resolve) => setTimeout(resolve, 0));\n sliceStart = now();\n }\n current = steps.next();\n }\n return current.value || fallbackBounds;\n })().finally(() => {\n frameBoundsEstimatePending.delete(cacheKey);\n });\n frameBoundsEstimatePending.set(cacheKey, pending);\n return pending;\n}\n\nfunction vectorFromArray(value, fallback) {\n const source = Array.isArray(value) || ArrayBuffer.isView(value) ? value : fallback;\n return [0, 1, 2].map((index) => finiteNumber(source?.[index], fallback[index] || 0));\n}\n\nfunction vectorLength(value) {\n return Math.hypot(value[0], value[1], value[2]);\n}\n\nfunction normalizeVector(value, fallback = [1, 0, 0]) {\n const source = vectorFromArray(value, fallback);\n const length = vectorLength(source);\n return length > 1e-9\n ? source.map((component) => component / length)\n : normalizeVector(fallback, [1, 0, 0]);\n}\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cross(a, b) {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0]\n ];\n}\n\nfunction subtract(a, b) {\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n}\n\nfunction addScaled(a, direction, scale) {\n return [\n a[0] + direction[0] * scale,\n a[1] + direction[1] * scale,\n a[2] + direction[2] * scale\n ];\n}\n\nfunction boundsCorners(bounds) {\n const corners = [];\n for (const x of [bounds.min[0], bounds.max[0]]) {\n for (const y of [bounds.min[1], bounds.max[1]]) {\n for (const z of [bounds.min[2], bounds.max[2]]) {\n corners.push([x, y, z]);\n }\n }\n }\n return corners;\n}\n\nfunction cameraFrameAxes(direction, up) {\n const zAxis = normalizeVector(direction, [1, -1, 0.8]);\n let requestedUp = normalizeVector(up, [0, 0, 1]);\n if (Math.abs(dot(zAxis, requestedUp)) > 0.96) {\n requestedUp = Math.abs(zAxis[2]) > 0.8 ? [0, 1, 0] : [0, 0, 1];\n }\n const right = normalizeVector(cross(requestedUp, zAxis), [1, 0, 0]);\n const screenUp = normalizeVector(cross(zAxis, right), [0, 0, 1]);\n return { zAxis, right, screenUp };\n}\n\nfunction fitDistanceForFrameBounds(bounds, target, axes, aspect, margin = DEFAULT_SNAPSHOT_FRAME_MARGIN, zoom = 1) {\n const tanHalfFov = Math.tan((DEFAULT_FOV_DEG * Math.PI) / 360);\n const safeAspect = Math.max(finiteNumber(aspect, 4 / 3), 0.05);\n const safeMargin = Math.max(finiteNumber(margin, DEFAULT_SNAPSHOT_FRAME_MARGIN), 1.05);\n const safeZoom = Math.max(finiteNumber(zoom, 1), 0.05);\n let distance = 0;\n for (const corner of boundsCorners(bounds)) {\n const relative = subtract(corner, target);\n const x = Math.abs(dot(relative, axes.right));\n const y = Math.abs(dot(relative, axes.screenUp));\n const z = dot(relative, axes.zAxis);\n distance = Math.max(\n distance,\n z + Math.max(x / (tanHalfFov * safeAspect), y / tanHalfFov) * safeMargin * safeZoom\n );\n }\n return Math.max(distance, 1e-3);\n}\n\nfunction projectedBoundsCenter(bounds, target, axes, distance, aspect, zoom) {\n const tanHalfFov = Math.tan((DEFAULT_FOV_DEG * Math.PI) / 360);\n const safeAspect = Math.max(finiteNumber(aspect, 4 / 3), 0.05);\n const safeZoom = Math.max(finiteNumber(zoom, 1), 0.05);\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n for (const corner of boundsCorners(bounds)) {\n const relative = subtract(corner, target);\n const depth = Math.max(distance - dot(relative, axes.zAxis), 1e-3);\n const x = dot(relative, axes.right) * safeZoom / (depth * tanHalfFov * safeAspect);\n const y = dot(relative, axes.screenUp) * safeZoom / (depth * tanHalfFov);\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2\n };\n}\n\nfunction recenterTargetForProjectedBounds(bounds, target, axes, distance, aspect, zoom) {\n const center = projectedBoundsCenter(bounds, target, axes, distance, aspect, zoom);\n const tanHalfFov = Math.tan((DEFAULT_FOV_DEG * Math.PI) / 360);\n const safeAspect = Math.max(finiteNumber(aspect, 4 / 3), 0.05);\n const safeZoom = Math.max(finiteNumber(zoom, 1), 0.05);\n const xShift = center.x * distance * tanHalfFov * safeAspect / safeZoom;\n const yShift = center.y * distance * tanHalfFov / safeZoom;\n return addScaled(addScaled(target, axes.right, xShift), axes.screenUp, yShift);\n}\n\nexport function implicitCadCameraState(model, camera = \"iso\", {\n zoom = DEFAULT_SNAPSHOT_CAMERA_ZOOM,\n width = 4,\n height = 3,\n frameMargin = DEFAULT_SNAPSHOT_FRAME_MARGIN,\n estimateFrameBounds = true\n} = {}) {\n const spec = normalizeCameraSpec(camera, { strict: true });\n // estimateFrameBounds=false keeps this call off the CPU SDF evaluator: it\n // uses a cached estimate when one exists and declared bounds otherwise, so\n // interactive callers can frame instantly and refine after\n // estimateImplicitCadFrameBoundsAsync completes.\n const frameBounds = estimateFrameBounds\n ? estimateImplicitCadFrameBounds(model)\n : (peekImplicitCadFrameBounds(model) || cameraBoundsForImplicitModel(model));\n const fallbackBounds = cameraBoundsForImplicitModel(model);\n const center = boundsCenter(frameBounds || fallbackBounds);\n let target = vectorFromArray(spec.target, center);\n const effectiveZoom = spec.hasExplicitZoom\n ? spec.zoom\n : Math.max(finiteNumber(zoom, DEFAULT_SNAPSHOT_CAMERA_ZOOM), 0.05);\n const direction = spec.position\n ? [\n spec.position[0] - target[0],\n spec.position[1] - target[1],\n spec.position[2] - target[2]\n ]\n : vectorFromArray(spec.direction, [1, -1, 0.8]);\n const unitDirection = normalizeVector(direction, [1, -1, 0.8]);\n const axes = cameraFrameAxes(unitDirection, spec.up);\n const aspect = Math.max(finiteNumber(width, 4) / Math.max(finiteNumber(height, 3), 1), 0.05);\n const fitDistance = fitDistanceForFrameBounds(frameBounds, target, axes, aspect, frameMargin, effectiveZoom);\n const distance = Math.max(fitDistance, Math.max(finiteNumber(model?.radius, 1), 1e-3) * 0.45);\n if (!spec.position && !spec.hasExplicitTarget) {\n target = recenterTargetForProjectedBounds(frameBounds, target, axes, distance, aspect, effectiveZoom);\n }\n const position = spec.position\n ? vectorFromArray(spec.position, [target[0] + unitDirection[0] * distance, target[1] + unitDirection[1] * distance, target[2] + unitDirection[2] * distance])\n : [\n target[0] + unitDirection[0] * distance,\n target[1] + unitDirection[1] * distance,\n target[2] + unitDirection[2] * distance\n ];\n return {\n label: spec.name,\n preset: spec.preset,\n target,\n position,\n direction: unitDirection,\n up: vectorFromArray(spec.up, [0, 0, 1]),\n zoom: effectiveZoom,\n fov: DEFAULT_FOV_DEG,\n bounds: fallbackBounds,\n frameBounds,\n };\n}\n\nexport function implicitCadFragmentShader(model) {\n const maxSteps = Math.max(16, Math.min(Math.floor(finiteNumber(model.maxSteps, 192)), 768));\n const uniforms = model.uniforms && typeof model.uniforms === \"object\" ? model.uniforms : {};\n const customUniformDeclarations = implicitCadUniformDeclarations(uniforms);\n const glslSource = normalizeImplicitCadGlslFloatLiterals(model.glslSource || model.distanceSource);\n const hasColorFunction = /\\bvec3\\s+color\\s*\\(\\s*vec3\\s+\\w+\\s*,\\s*vec3\\s+\\w+\\s*\\)/.test(glslSource);\n return `\nprecision highp float;\n\nuniform vec2 uResolution;\nuniform vec3 uCameraPosition;\nuniform mat4 uCameraWorld;\nuniform mat4 uProjectionInverse;\nuniform vec3 uBoundsMin;\nuniform vec3 uBoundsMax;\nuniform vec3 uSurfaceColor;\nuniform vec3 uBackgroundColor;\nuniform vec3 uBackgroundColorA;\nuniform vec3 uBackgroundColorB;\nuniform float uBackgroundMode;\nuniform float uBackgroundAngle;\nuniform float uBackgroundAlpha;\nuniform float uUseProceduralColor;\nuniform float uHitEpsilon;\nuniform float uNormalEpsilon;\nuniform float uMaxDistance;\nuniform float uStepScale;\nuniform float uMaxStep;\nuniform float uStepBudget;\nuniform float uShadowStrength;\nuniform float uAmbientOcclusionStrength;\nuniform float uRimStrength;\nuniform float uExposure;\nuniform vec3 uHemiSky;\nuniform vec3 uHemiGround;\nuniform vec3 uAmbientLight;\nuniform vec3 uKeyColor;\nuniform vec3 uKeyDir;\nuniform vec3 uFillColor;\nuniform vec3 uFillDir;\nuniform vec3 uBounceColor;\nuniform vec3 uBounceDir;\nuniform vec3 uRimColor;\nuniform float uFloorEnabled;\nuniform float uFloorShadowOpacity;\nuniform float uFloorZ;\nuniform vec2 uFloorCenter;\nuniform float uFloorFadeRadius;\n${customUniformDeclarations}\nvarying vec2 vUv;\n\nconst int IMPLICIT_MAX_STEPS = ${maxSteps};\n\nfloat implicit_clamp01(float value) {\n return clamp(value, 0.0, 1.0);\n}\n\nfloat implicit_linear_map(float value, float inMin, float inMax, float outMin, float outMax) {\n float slope = (outMax - outMin) / (inMax - inMin);\n return (value - inMin) * slope + outMin;\n}\n\nfloat implicit_ramp(float value, float inMin, float inMax, float outMin, float outMax) {\n return clamp(implicit_linear_map(value, inMin, inMax, outMin, outMax), outMin, outMax);\n}\n\nfloat implicit_two_body_field(float a, float b) {\n return (a - b) / (a + b);\n}\n\nfloat implicit_two_body_polar(float a, float b, float angle) {\n return a * cos(angle) + b * sin(angle);\n}\n\nfloat implicit_triangle_wave_even(float value, float period) {\n float halfPeriod = period * 0.5;\n float quarterPeriod = period * 0.25;\n float wrapped = mod(value + halfPeriod, period);\n return quarterPeriod - abs(wrapped - halfPeriod);\n}\n\nvec2 implicit_triangle_wave_even(vec2 value, vec2 period) {\n return vec2(\n implicit_triangle_wave_even(value.x, period.x),\n implicit_triangle_wave_even(value.y, period.y)\n );\n}\n\nvec3 implicit_triangle_wave_even(vec3 value, vec3 period) {\n return vec3(\n implicit_triangle_wave_even(value.x, period.x),\n implicit_triangle_wave_even(value.y, period.y),\n implicit_triangle_wave_even(value.z, period.z)\n );\n}\n\nfloat implicit_triangle_wave_even_positive(float value, float period) {\n return implicit_triangle_wave_even(value, period) + period * 0.25;\n}\n\nvec2 implicit_triangle_wave_even_positive(vec2 value, vec2 period) {\n return vec2(\n implicit_triangle_wave_even_positive(value.x, period.x),\n implicit_triangle_wave_even_positive(value.y, period.y)\n );\n}\n\nvec3 implicit_triangle_wave_even_positive(vec3 value, vec3 period) {\n return vec3(\n implicit_triangle_wave_even_positive(value.x, period.x),\n implicit_triangle_wave_even_positive(value.y, period.y),\n implicit_triangle_wave_even_positive(value.z, period.z)\n );\n}\n\nfloat implicit_triangle_wave_odd(float value, float period) {\n return implicit_triangle_wave_even(value - period * 0.5, period);\n}\n\nvec2 implicit_triangle_wave_odd(vec2 value, vec2 period) {\n return vec2(\n implicit_triangle_wave_odd(value.x, period.x),\n implicit_triangle_wave_odd(value.y, period.y)\n );\n}\n\nvec3 implicit_triangle_wave_odd(vec3 value, vec3 period) {\n return vec3(\n implicit_triangle_wave_odd(value.x, period.x),\n implicit_triangle_wave_odd(value.y, period.y),\n implicit_triangle_wave_odd(value.z, period.z)\n );\n}\n\nfloat implicit_triangle_wave_odd_positive(float value, float period) {\n return implicit_triangle_wave_odd(value, period) + period * 0.25;\n}\n\nvec2 implicit_triangle_wave_odd_positive(vec2 value, vec2 period) {\n return vec2(\n implicit_triangle_wave_odd_positive(value.x, period.x),\n implicit_triangle_wave_odd_positive(value.y, period.y)\n );\n}\n\nvec3 implicit_triangle_wave_odd_positive(vec3 value, vec3 period) {\n return vec3(\n implicit_triangle_wave_odd_positive(value.x, period.x),\n implicit_triangle_wave_odd_positive(value.y, period.y),\n implicit_triangle_wave_odd_positive(value.z, period.z)\n );\n}\n\nvec2 implicit_repeat_centered(vec2 p, vec2 period) {\n return mod(p + period * 0.5, period) - period * 0.5;\n}\n\nvec3 implicit_repeat_centered(vec3 p, vec3 period) {\n return mod(p + period * 0.5, period) - period * 0.5;\n}\n\nfloat implicit_intersect_sharp(float a, float b) {\n return max(a, b);\n}\n\nfloat implicit_union_sharp(float a, float b) {\n return min(a, b);\n}\n\nfloat implicit_intersect_round(float a, float b, float radius) {\n float k = max(radius, 0.0);\n vec2 q = max(vec2(a, b) + k, 0.0);\n return min(-k, max(a, b)) + length(q);\n}\n\nfloat implicit_union_round(float a, float b, float radius) {\n return -implicit_intersect_round(-a, -b, radius);\n}\n\nfloat implicit_intersect_chamfer(float a, float b, float radius) {\n return max(max(a, b), (a + b + radius) * 0.7071067811865476);\n}\n\nfloat implicit_union_chamfer(float a, float b, float radius) {\n return -implicit_intersect_chamfer(-a, -b, radius);\n}\n\nfloat implicit_intersect_exp(float a, float b, float radius) {\n float k = max(radius, 1.0e-6) * 0.5;\n return k * log(exp(a / k) + exp(b / k));\n}\n\nfloat implicit_union_exp(float a, float b, float radius) {\n return -implicit_intersect_exp(-a, -b, radius);\n}\n\nfloat implicit_intersect_lp_norm(float a, float b, float radius, float normPower) {\n float k = max(radius, 0.0);\n float p = max(normPower, 1.0e-6);\n vec2 q = max(vec2(a, b) + k, 0.0);\n return min(-k, max(a, b)) + pow(pow(q.x, p) + pow(q.y, p), 1.0 / p);\n}\n\nfloat implicit_union_lp_norm(float a, float b, float radius, float normPower) {\n return -implicit_intersect_lp_norm(-a, -b, radius, normPower);\n}\n\nfloat implicit_intersect_rvachev(float a, float b, float radius) {\n float sharp = max(a, b);\n float k = max(radius, 0.0);\n if (k <= 0.0) {\n return sharp;\n }\n float r0 = a + b - sqrt(a * a + b * b);\n float t = clamp((sharp + k) / k, 0.0, 1.0);\n float s = t * t * (3.0 - 2.0 * t);\n return sharp < -k ? sharp : mix(sharp, r0, s);\n}\n\nfloat implicit_union_rvachev(float a, float b, float radius) {\n return -implicit_intersect_rvachev(-a, -b, radius);\n}\n\nfloat implicit_plane2(vec2 p, vec2 origin, vec2 normal) {\n vec2 n = normalize(normal);\n return dot(p - origin, n);\n}\n\nfloat implicit_line_segment2(vec2 p, vec2 a, vec2 b) {\n vec2 segment = b - a;\n float segmentLengthSq = dot(segment, segment);\n if (segmentLengthSq < 1.0e-12) {\n return length(p - a);\n }\n float t = clamp(dot(p - a, segment) / segmentLengthSq, 0.0, 1.0);\n return length(p - (a + t * segment));\n}\n\nfloat implicit_sphere(vec3 p, vec3 center, float radius) {\n return length(p - center) - radius;\n}\n\nfloat implicit_box_centered(vec3 p, vec3 size, vec3 center) {\n vec3 q = abs(p - center) - size * 0.5;\n return length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0);\n}\n\nfloat implicit_plane(vec3 p, vec3 origin, vec3 normal) {\n vec3 n = normalize(normal);\n return dot(p - origin, n);\n}\n\nfloat implicit_line_segment(vec3 p, vec3 a, vec3 b) {\n vec3 segment = b - a;\n float segmentLengthSq = dot(segment, segment);\n if (segmentLengthSq < 1.0e-12) {\n return length(p - a);\n }\n float t = clamp(dot(p - a, segment) / segmentLengthSq, 0.0, 1.0);\n return length(p - (a + t * segment));\n}\n\nfloat implicit_torus(vec3 p, float majorRadius, float minorRadius) {\n vec2 q = vec2(length(p.xy) - majorRadius, p.z);\n return length(q) - minorRadius;\n}\n\nfloat implicit_axis(vec3 p, vec3 origin, vec3 direction) {\n float directionLength = length(direction);\n if (directionLength < 1.0e-12) {\n return length(p - origin);\n }\n vec3 axis = direction / directionLength;\n vec3 toPoint = p - origin;\n return length(toPoint - dot(toPoint, axis) * axis);\n}\n\nfloat implicit_cylinder(vec3 p, vec3 origin, vec3 direction, float radius) {\n return implicit_axis(p, origin, direction) - radius;\n}\n\nfloat implicit_cylinder_capped(vec3 p, vec3 a, vec3 b, float radius) {\n vec3 axis = b - a;\n float side = implicit_cylinder(p, a, axis, radius);\n float capA = -implicit_plane(p, a, axis);\n float capB = implicit_plane(p, b, axis);\n return max(side, max(capA, capB));\n}\n\nfloat implicit_capsule(vec3 p, vec3 a, vec3 b, float radius) {\n return implicit_line_segment(p, a, b) - radius;\n}\n\nfloat implicit_cone_capsule(vec3 p, vec3 a, vec3 b, float radiusA, float radiusB) {\n vec3 axis = b - a;\n float axisLengthSq = dot(axis, axis);\n if (axisLengthSq < 1.0e-12) {\n return implicit_sphere(p, a, radiusA);\n }\n float t = clamp(dot(p - a, axis) / axisLengthSq, 0.0, 1.0);\n float radius = mix(radiusA, radiusB, t);\n return length(p - (a + t * axis)) - radius;\n}\n\nfloat implicit_cone(vec3 p, vec3 apex, vec3 direction, float halfAngle) {\n float directionLength = length(direction);\n if (directionLength < 1.0e-12) {\n return length(p - apex);\n }\n vec3 axis = direction / directionLength;\n vec3 toPoint = p - apex;\n float axial = dot(toPoint, axis);\n float perpendicular = length(toPoint - axial * axis);\n return perpendicular - axial * tan(halfAngle);\n}\n\nfloat implicit_cone_capped(vec3 p, vec3 a, vec3 b, float radiusA, float radiusB) {\n vec3 axis = b - a;\n float axisLength = length(axis);\n if (axisLength < 1.0e-12) {\n return implicit_sphere(p, a, radiusA);\n }\n float halfAngle = atan(abs(radiusB - radiusA), axisLength);\n float coneDistance = radiusA < radiusB\n ? implicit_cone(p, a, axis, halfAngle) - radiusA\n : implicit_cone(p, b, -axis, halfAngle) - radiusB;\n float capA = -implicit_plane(p, a, axis);\n float capB = implicit_plane(p, b, axis);\n return max(coneDistance, max(capA, capB));\n}\n\nfloat implicit_shell(float distanceValue, float thickness, float bias) {\n float halfThickness = thickness * 0.5;\n return abs(distanceValue + bias * halfThickness) - halfThickness;\n}\n\nvec3 implicit_rotate_axis(vec3 p, vec3 origin, vec3 direction, float angle) {\n vec3 k = normalize(direction);\n vec3 local = p - origin;\n float c = cos(angle);\n float s = sin(angle);\n return origin + local * c + cross(k, local) * s + k * dot(k, local) * (1.0 - c);\n}\n\nvec3 implicit_remap_cylindrical(vec3 p, float circumference) {\n float radial = length(p.xy);\n float theta = atan(p.y, p.x);\n return vec3(radial, theta * (circumference / 6.283185307179586), p.z);\n}\n\nfloat implicit_tpms_gyroid(vec3 p, vec3 period, vec3 drop) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 yzx = xyz.yzx;\n float field = dot(drop, sin(xyz) * cos(yzx));\n return field * (period.x + period.y + period.z) / 18.0;\n}\n\nfloat implicit_tpms_schwarz(vec3 p, vec3 period, vec3 drop, float gyroidBlend) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 yzx = xyz.yzx;\n vec3 mixTerm = vec3(-(1.0 - gyroidBlend)) + sin(xyz) * gyroidBlend;\n float field = dot(drop, cos(yzx) * mixTerm);\n return field * (period.x + period.y + period.z) / 36.0;\n}\n\nfloat implicit_tpms_diamond(vec3 p, vec3 period, vec3 drop, float gyroidBlend) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 yzx = xyz.yzx;\n vec3 zxy = xyz.zxy;\n vec3 sinXyz = sin(xyz);\n vec3 cosYzx = cos(yzx);\n vec3 cosZxy = cos(zxy);\n float blendFactor = 1.0 - gyroidBlend;\n float term1 = blendFactor * sinXyz.x * sinXyz.y * sinXyz.z;\n float term2 = dot(drop, sinXyz * cosYzx * (cosZxy * blendFactor + vec3(gyroidBlend)));\n return (term1 + term2) * (period.x + period.y + period.z) / (6.0 * 2.8284271247461903 * 2.0);\n}\n\nfloat implicit_tpms_lidinoid(vec3 p, vec3 period, vec3 drop, float gyroidBlend) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 yzx = xyz.yzx;\n vec3 zxy = xyz.zxy;\n vec3 cos2Xyz = cos(2.0 * xyz);\n vec3 cos2Yzx = cos2Xyz.yzx;\n float blendFactor = 1.0 - gyroidBlend;\n float term1 = dot(drop, sin(zxy) * cos(yzx) * (sin(2.0 * xyz) * blendFactor + vec3(gyroidBlend)));\n float term2 = blendFactor * dot(cos2Xyz, cos2Yzx);\n return (term1 - term2) * (period.x + period.y + period.z) / 72.0;\n}\n\nfloat implicit_tpms_neovius(vec3 p, vec3 period, vec3 drop, float schwarzBlend) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 cosDrop = cos(xyz) * drop;\n float term1 = -dot(cosDrop, vec3(1.0));\n float term2 = (1.0 - schwarzBlend) * (4.0 / 3.0) * cosDrop.x * cosDrop.y * cosDrop.z;\n return (term1 - term2) * (period.x + period.y + period.z) / (6.0 * (26.0 / 3.0));\n}\n\nfloat implicit_tpms_split_p(vec3 p, vec3 period, float lidinoidBlend, float gyroidOctave, float schwarzOctave) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 yzx = xyz.yzx;\n vec3 zxy = xyz.zxy;\n vec3 sin2Xyz = sin(2.0 * xyz);\n vec3 cos2Xyz = cos(2.0 * xyz);\n float term1 = -lidinoidBlend * dot(sin2Xyz * cos(yzx) * sin(zxy), vec3(1.0));\n float term2 = gyroidOctave * dot(sin2Xyz * cos2Xyz, vec3(1.0));\n float term3 = schwarzOctave * dot(cos2Xyz, vec3(1.0));\n return (term1 + term2 + term3) * (period.x + period.y + period.z) / 36.0;\n}\n\nfloat implicit_tpms_iwp(vec3 p, vec3 period, vec3 drop) {\n vec3 xyz = p * (6.283185307179586 / period);\n vec3 yzx = xyz.yzx;\n float term1 = 2.0 * dot(drop * cos(xyz) * cos(yzx), vec3(1.0));\n float term2 = dot(cos(2.0 * xyz), vec3(1.0));\n return (term1 - term2) * (period.x + period.y + period.z) / 48.0;\n}\n\nfloat implicit_cubic_grid(vec3 p, vec3 size) {\n vec3 d = implicit_triangle_wave_even_positive(p, size);\n return min(d.x, min(d.y, d.z));\n}\n\nfloat implicit_square_honeycomb(vec3 p, vec2 size) {\n vec2 d = implicit_triangle_wave_even_positive(p.xy, size);\n return min(d.x, d.y);\n}\n\nfloat implicit_square_honeycomb_reinforced(vec3 p, vec2 size, float rotation, float rotation2, float hasRotation2) {\n vec2 pxy = p.xy;\n vec2 grid = implicit_triangle_wave_even_positive(pxy, size);\n float squareGrid = min(grid.x, grid.y);\n vec2 repeated = implicit_repeat_centered(pxy, size);\n float angle = 3.141592653589793 * rotation;\n float diagonal = abs(implicit_plane2(repeated, vec2(0.0), vec2(cos(angle), sin(angle))));\n if (hasRotation2 > 0.5) {\n float angle2 = 3.141592653589793 * rotation2;\n float diagonal2 = abs(implicit_plane2(repeated, vec2(0.0), vec2(cos(angle2), sin(angle2))));\n diagonal = min(diagonal, diagonal2);\n }\n return min(squareGrid, diagonal);\n}\n\nfloat implicit_square_diagonal_honeycomb(vec3 p, vec2 size) {\n vec2 period = vec2(size.x + size.y);\n vec2 repeated = implicit_repeat_centered(p.xy, period);\n float positive = abs(implicit_plane2(repeated, vec2(0.0), vec2(size.y, size.x)));\n float negative = abs(implicit_plane2(repeated, vec2(0.0), vec2(size.y, -size.x)));\n return min(positive, negative);\n}\n\nfloat implicit_octet_honeycomb(vec3 p, vec2 size) {\n vec2 pxy = p.xy;\n float square = implicit_square_honeycomb(p, size);\n vec2 oddGrid = implicit_triangle_wave_odd_positive(pxy, size);\n float planeGrid = min(oddGrid.x, oddGrid.y);\n float diagonalPeriod = length(size) * 0.5;\n vec2 rotated = vec2((pxy.x + pxy.y) / 1.4142135623730951, (pxy.x - pxy.y) / 1.4142135623730951);\n vec2 diagonal = implicit_triangle_wave_odd_positive(rotated, vec2(diagonalPeriod));\n return min(min(square, planeGrid), min(diagonal.x, diagonal.y));\n}\n\nfloat implicit_hexagonal_honeycomb(vec3 p, vec2 size, float setback) {\n vec2 pxy = p.xy;\n vec2 halfSize = size * 0.5;\n vec2 quarterSize = size * 0.25;\n vec2 starCenter = vec2(0.0, (1.0 - setback) * halfSize.y);\n vec2 transition = vec2(halfSize.x, setback * halfSize.y);\n vec2 folded = abs(implicit_repeat_centered(pxy, size));\n vec2 reflected = vec2(folded.x - halfSize.x, halfSize.y - folded.y);\n\n float foldedStar = min(\n implicit_line_segment2(folded, starCenter, vec2(0.0, size.y)),\n min(\n implicit_line_segment2(folded, starCenter, transition),\n implicit_line_segment2(folded, starCenter, vec2(-transition.x, transition.y))\n )\n );\n float reflectedStar = min(\n implicit_line_segment2(reflected, starCenter, vec2(0.0, size.y)),\n min(\n implicit_line_segment2(reflected, starCenter, transition),\n implicit_line_segment2(reflected, starCenter, vec2(-transition.x, transition.y))\n )\n );\n return folded.x < quarterSize.x ? foldedStar : reflectedStar;\n}\n\nfloat implicit_triangular_honeycomb(vec3 p, vec2 size) {\n vec2 folded = abs(implicit_repeat_centered(p.xy, size));\n vec2 halfSize = size * 0.5;\n vec2 quarterSize = size * 0.25;\n vec2 normalH = vec2(0.0, 1.0);\n vec2 normalP60 = normalize(vec2(size.y, size.x));\n vec2 normalN60 = normalize(vec2(size.y, -size.x));\n float foldedStar = min(\n abs(dot(folded, normalH)),\n min(abs(dot(folded, normalP60)), abs(dot(folded, normalN60)))\n );\n vec2 shifted = folded - halfSize;\n float shiftedStar = min(\n abs(dot(shifted, normalH)),\n min(abs(dot(shifted, normalP60)), abs(dot(shifted, normalN60)))\n );\n return folded.y < quarterSize.y ? foldedStar : shiftedStar;\n}\n\n${glslSource}\n\nfloat implicit_distance(vec3 p) {\n return sdf(p);\n}\n\nvec3 implicit_color(vec3 p, vec3 normal) {\n ${hasColorFunction ? \"return clamp(color(p, normal), vec3(0.0), vec3(1.0));\" : \"return vec3(1.0);\"}\n}\n\nfloat implicit_scene_sdf(vec3 p) {\n return implicit_distance(p);\n}\n\nvec2 implicit_ray_slab(float origin, float direction, float boundsMin, float boundsMax) {\n if (abs(direction) < 1.0e-8) {\n return origin < boundsMin || origin > boundsMax\n ? vec2(1.0, -1.0)\n : vec2(-1.0e20, 1.0e20);\n }\n float invDirection = 1.0 / direction;\n float nearPlane = (boundsMin - origin) * invDirection;\n float farPlane = (boundsMax - origin) * invDirection;\n return vec2(min(nearPlane, farPlane), max(nearPlane, farPlane));\n}\n\nvec2 implicit_ray_bounds(vec3 origin, vec3 direction, vec3 boundsMin, vec3 boundsMax) {\n vec2 x = implicit_ray_slab(origin.x, direction.x, boundsMin.x, boundsMax.x);\n vec2 y = implicit_ray_slab(origin.y, direction.y, boundsMin.y, boundsMax.y);\n vec2 z = implicit_ray_slab(origin.z, direction.z, boundsMin.z, boundsMax.z);\n float tMin = max(max(x.x, y.x), z.x);\n float tMax = min(min(x.y, y.y), z.y);\n return vec2(tMin, tMax);\n}\n\nvec3 implicit_estimate_normal(vec3 p) {\n float e = uNormalEpsilon;\n vec2 k = vec2(1.0, -1.0);\n return normalize(\n k.xyy * implicit_scene_sdf(p + k.xyy * e) +\n k.yyx * implicit_scene_sdf(p + k.yyx * e) +\n k.yxy * implicit_scene_sdf(p + k.yxy * e) +\n k.xxx * implicit_scene_sdf(p + k.xxx * e)\n );\n}\n\nfloat implicit_ambient_occlusion(vec3 p, vec3 normal) {\n float occlusion = 0.0;\n float scale = 1.0;\n for (int sampleIndex = 1; sampleIndex <= 5; sampleIndex += 1) {\n float distanceAlongNormal = 0.018 * float(sampleIndex) * uMaxDistance;\n float sampled = implicit_scene_sdf(p + normal * distanceAlongNormal);\n occlusion += (distanceAlongNormal - sampled) * scale;\n scale *= 0.58;\n }\n // Gentler floor than a typical raymarcher: the mesh viewer has no SSAO, so\n // heavy AO reads as \"implicit models render darker\".\n return clamp(1.0 - 0.045 * occlusion, 0.62, 1.0);\n}\n\nfloat implicit_soft_shadow(vec3 origin, vec3 direction, float maxDistance) {\n // Tight penumbra and a higher floor keep self-shadowing close to the mesh\n // viewer's crisp PCF shadows instead of dimming broad surface areas.\n float shadow = 1.0;\n float t = uHitEpsilon * 8.0;\n for (int shadowStep = 0; shadowStep < 28; shadowStep += 1) {\n if (t >= maxDistance) {\n break;\n }\n float h = implicit_scene_sdf(origin + direction * t);\n if (h < uHitEpsilon) {\n return 0.32;\n }\n shadow = min(shadow, 22.0 * h / t);\n t += clamp(h, uHitEpsilon * 3.0, maxDistance * 0.08);\n }\n return clamp(shadow, 0.32, 1.0);\n}\n\nvec3 implicit_srgb_to_linear(vec3 c) {\n c = clamp(c, vec3(0.0), vec3(1.0));\n vec3 low = c / 12.92;\n vec3 high = pow((c + 0.055) / 1.055, vec3(2.4));\n return mix(low, high, step(vec3(0.04045), c));\n}\n\nvec3 implicit_linear_to_srgb(vec3 c) {\n c = clamp(c, vec3(0.0), vec3(1.0));\n vec3 low = c * 12.92;\n vec3 high = 1.055 * pow(c, vec3(1.0 / 2.4)) - 0.055;\n return mix(low, high, step(vec3(0.0031308), c));\n}\n\n// THREE.js ACESFilmicToneMapping port so implicit shading matches the mesh\n// viewer's renderer output transform.\nvec3 implicit_rrt_odt_fit(vec3 v) {\n vec3 a = v * (v + 0.0245786) - 0.000090537;\n vec3 b = v * (0.983729 * v + 0.4329510) + 0.238081;\n return a / b;\n}\n\nvec3 implicit_aces_tone_map(vec3 color) {\n const mat3 acesInput = mat3(\n vec3(0.59719, 0.07600, 0.02840),\n vec3(0.35458, 0.90834, 0.13383),\n vec3(0.04823, 0.01566, 0.83777)\n );\n const mat3 acesOutput = mat3(\n vec3(1.60475, -0.10208, -0.00327),\n vec3(-0.53108, 1.10813, -0.07276),\n vec3(-0.07367, -0.00605, 1.07602)\n );\n color *= 1.0 / 0.6;\n color = acesInput * color;\n color = implicit_rrt_odt_fit(color);\n color = acesOutput * color;\n return clamp(color, vec3(0.0), vec3(1.0));\n}\n\n// Sharper than implicit_soft_shadow so the stage shadow stays a tight contact\n// shadow like the mesh viewer's PCF shadow map instead of a broad blob.\nfloat implicit_floor_shadow(vec3 origin, vec3 direction, float maxDistance) {\n float shadow = 1.0;\n float t = uHitEpsilon * 8.0;\n for (int shadowStep = 0; shadowStep < 32; shadowStep += 1) {\n if (t >= maxDistance) {\n break;\n }\n float h = implicit_scene_sdf(origin + direction * t);\n if (h < uHitEpsilon) {\n return 0.0;\n }\n shadow = min(shadow, 30.0 * h / t);\n t += clamp(h, uHitEpsilon * 3.0, maxDistance * 0.05);\n }\n return clamp(shadow, 0.0, 1.0);\n}\n\n// Stage-floor shadow matte for rays that miss the model, matching the mesh\n// viewer's shadow-catcher plane under the part.\nvec3 implicit_floor_shadowed_background(vec3 backgroundColor, vec3 rayOrigin, vec3 rayDirection) {\n float shadowStrength = clamp(uShadowStrength, 0.0, 1.0);\n if (uFloorEnabled < 0.5 || shadowStrength < 0.001 || rayDirection.z > -1.0e-5) {\n return backgroundColor;\n }\n float tFloor = (uFloorZ - rayOrigin.z) / rayDirection.z;\n if (tFloor <= 0.0) {\n return backgroundColor;\n }\n vec3 floorPoint = rayOrigin + rayDirection * tFloor;\n float fade = 1.0 - smoothstep(uFloorFadeRadius * 0.5, uFloorFadeRadius, length(floorPoint.xy - uFloorCenter));\n if (fade < 0.002) {\n return backgroundColor;\n }\n vec3 shadowOrigin = vec3(floorPoint.xy, uFloorZ + max(uHitEpsilon * 6.0, uFloorFadeRadius * 0.0001));\n float lit = implicit_floor_shadow(shadowOrigin, uKeyDir, uFloorFadeRadius * 1.5);\n float occlusion = clamp(1.0 - lit, 0.0, 1.0);\n float strength = occlusion * fade * clamp(uFloorShadowOpacity, 0.0, 1.0) * shadowStrength;\n return backgroundColor * (1.0 - strength);\n}\n\nvec3 implicit_background_color(vec2 uv) {\n if (uBackgroundMode < 0.5) {\n return uBackgroundColor;\n }\n if (uBackgroundMode < 1.5) {\n vec2 direction = normalize(vec2(cos(uBackgroundAngle), sin(uBackgroundAngle)));\n float t = dot(uv - vec2(0.5), direction) * 0.7071067811865476 + 0.5;\n return mix(uBackgroundColorA, uBackgroundColorB, clamp(t, 0.0, 1.0));\n }\n float radial = smoothstep(0.0, 0.72, length(uv - vec2(0.5)));\n return mix(uBackgroundColorA, uBackgroundColorB, radial);\n}\n\nvec3 implicit_ray_direction(vec2 uv) {\n vec2 ndc = uv * 2.0 - 1.0;\n vec4 clip = vec4(ndc, -1.0, 1.0);\n vec4 view = uProjectionInverse * clip;\n view = vec4(view.xy, -1.0, 0.0);\n return normalize((uCameraWorld * view).xyz);\n}\n\nvoid main() {\n vec3 rayOrigin = uCameraPosition;\n vec2 screenUv = gl_FragCoord.xy / uResolution;\n vec3 backgroundColor = implicit_background_color(screenUv);\n vec3 rayDirection = implicit_ray_direction(screenUv);\n vec2 boundsHit = implicit_ray_bounds(rayOrigin, rayDirection, uBoundsMin, uBoundsMax);\n float t = max(boundsHit.x, 0.0);\n float tEnd = min(boundsHit.y, uMaxDistance);\n if (boundsHit.x > boundsHit.y || tEnd < 0.0) {\n gl_FragColor = vec4(implicit_floor_shadowed_background(backgroundColor, rayOrigin, rayDirection), uBackgroundAlpha);\n return;\n }\n\n bool hit = false;\n float previousT = t;\n vec3 p = rayOrigin;\n for (int stepIndex = 0; stepIndex < IMPLICIT_MAX_STEPS; stepIndex += 1) {\n if (float(stepIndex) >= uStepBudget) {\n break;\n }\n previousT = t;\n p = rayOrigin + rayDirection * t;\n float distanceValue = implicit_scene_sdf(p);\n float hitEpsilon = max(uHitEpsilon, t * 0.00028);\n if (distanceValue < hitEpsilon) {\n hit = true;\n break;\n }\n float stepDistance = max(distanceValue * uStepScale, uHitEpsilon * 0.25);\n t += min(stepDistance, uMaxStep);\n if (t > tEnd) {\n break;\n }\n }\n\n if (!hit) {\n gl_FragColor = vec4(implicit_floor_shadowed_background(backgroundColor, rayOrigin, rayDirection), uBackgroundAlpha);\n return;\n }\n\n float refineNear = previousT;\n float refineFar = t;\n for (int refineIndex = 0; refineIndex < 5; refineIndex += 1) {\n float mid = (refineNear + refineFar) * 0.5;\n float midDistance = implicit_scene_sdf(rayOrigin + rayDirection * mid);\n if (midDistance > 0.0) {\n refineNear = mid;\n } else {\n refineFar = mid;\n }\n }\n p = rayOrigin + rayDirection * refineFar;\n vec3 normal = implicit_estimate_normal(p);\n vec3 viewDirection = normalize(rayOrigin - p);\n float shadowStrength = clamp(uShadowStrength, 0.0, 1.0);\n float shadow = 1.0;\n if (shadowStrength > 0.001) {\n shadow = mix(\n 1.0,\n implicit_soft_shadow(p + normal * uHitEpsilon * 4.0, uKeyDir, uMaxDistance * 0.55),\n shadowStrength\n );\n }\n float ambientOcclusionStrength = clamp(uAmbientOcclusionStrength, 0.0, 1.0);\n float ao = 1.0;\n if (ambientOcclusionStrength > 0.001) {\n ao = mix(1.0, implicit_ambient_occlusion(p, normal), ambientOcclusionStrength);\n }\n vec3 sourceColor = clamp(implicit_color(p, normal), vec3(0.0), vec3(1.0));\n vec3 surfaceColor = implicit_srgb_to_linear(mix(uSurfaceColor, sourceColor, clamp(uUseProceduralColor, 0.0, 1.0)));\n // Match the mesh viewer's light rig: hemisphere + ambient indirect terms,\n // key/fill/bounce directional terms with a Lambert 1/pi factor, then the\n // same ACES filmic tone mapping and sRGB encode THREE.js applies.\n vec3 irradiance = (mix(uHemiGround, uHemiSky, normal.z * 0.5 + 0.5) + uAmbientLight) * ao;\n irradiance += uKeyColor * clamp(dot(normal, uKeyDir), 0.0, 1.0) * shadow;\n irradiance += uFillColor * clamp(dot(normal, uFillDir), 0.0, 1.0);\n irradiance += uBounceColor * clamp(dot(normal, uBounceDir), 0.0, 1.0);\n vec3 color = surfaceColor * irradiance * 0.3183098861837907;\n float rim = pow(1.0 - clamp(dot(normal, viewDirection), 0.0, 1.0), 2.4);\n color += uRimColor * rim * clamp(uRimStrength, 0.0, 1.0);\n color = implicit_aces_tone_map(color * uExposure);\n color = implicit_linear_to_srgb(color);\n gl_FragColor = vec4(color, 1.0);\n}\n`;\n}\n\nexport function implicitCadModelShaderKey(model) {\n const normalized = normalizeImplicitCadModel(model);\n return [\n normalized.maxSteps,\n normalized.uniformSignature || \"\",\n normalized.glslSource\n ].join(\"\\n---implicit-cad-shader-key---\\n\");\n}\n\nexport function implicitCadVertexShader() {\n return `\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position.xy, 0.0, 1.0);\n}\n`;\n}\n\nexport function createImplicitCadMaterial(THREE, model) {\n const normalized = normalizeImplicitCadModel(model);\n const customUniforms = Object.fromEntries(\n Object.entries(normalized.uniforms || {}).map(([name, uniform]) => [\n name,\n { value: threeUniformValue(THREE, uniform) }\n ])\n );\n const floorUserData = {};\n const floorBounds = implicitFloorBoundsForModel(normalized, floorUserData, { estimate: false });\n const material = new THREE.ShaderMaterial({\n name: \"ImplicitCadRaymarchMaterial\",\n depthTest: false,\n depthWrite: false,\n transparent: true,\n uniforms: {\n uResolution: { value: new THREE.Vector2(1, 1) },\n uCameraPosition: { value: new THREE.Vector3() },\n uCameraWorld: { value: new THREE.Matrix4() },\n uProjectionInverse: { value: new THREE.Matrix4() },\n uBoundsMin: { value: new THREE.Vector3(...normalized.bounds.min) },\n uBoundsMax: { value: new THREE.Vector3(...normalized.bounds.max) },\n uSurfaceColor: { value: new THREE.Vector3(...hexToRgb01(normalized.material.color, \"#f4f4f5\")) },\n uBackgroundColor: { value: new THREE.Vector3(...hexToRgb01(normalized.background.color, DEFAULT_BACKGROUND)) },\n uBackgroundColorA: { value: new THREE.Vector3(...hexToRgb01(normalized.background.color, DEFAULT_BACKGROUND)) },\n uBackgroundColorB: { value: new THREE.Vector3(...hexToRgb01(normalized.background.color, DEFAULT_BACKGROUND)) },\n uBackgroundMode: { value: 0 },\n uBackgroundAngle: { value: Math.PI },\n uBackgroundAlpha: { value: normalized.background.transparent ? 0 : 1 },\n uUseProceduralColor: { value: normalized.colorSource ? 1 : 0 },\n uHitEpsilon: { value: normalized.epsilon },\n uNormalEpsilon: { value: normalized.normalEpsilon },\n uMaxDistance: { value: normalized.maxDistance },\n uStepScale: { value: normalized.stepScale },\n uMaxStep: { value: normalized.maxStep },\n uStepBudget: { value: normalized.maxSteps },\n uShadowStrength: { value: 1 },\n uAmbientOcclusionStrength: { value: 1 },\n uRimStrength: { value: 1 },\n uExposure: { value: DEFAULT_LIGHTING_RIG.toneMappingExposure },\n uHemiSky: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.hemisphere.skyColor, DEFAULT_LIGHTING_RIG.hemisphere.intensity, \"#ffffff\")) },\n uHemiGround: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.hemisphere.groundColor, DEFAULT_LIGHTING_RIG.hemisphere.intensity, \"#d6e2ee\")) },\n uAmbientLight: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.ambient.color, DEFAULT_LIGHTING_RIG.ambient.intensity, \"#ffffff\")) },\n uKeyColor: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.directional.color, DEFAULT_LIGHTING_RIG.directional.intensity, \"#ffffff\")) },\n uKeyDir: { value: new THREE.Vector3(...lightDirectionFromPosition(DEFAULT_LIGHTING_RIG.directional.position, DEFAULT_LIGHTING_RIG.directional.position)) },\n uFillColor: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.spot.color, DEFAULT_LIGHTING_RIG.spot.intensity, \"#f4fbff\")) },\n uFillDir: { value: new THREE.Vector3(...lightDirectionFromPosition(DEFAULT_LIGHTING_RIG.spot.position, DEFAULT_LIGHTING_RIG.spot.position)) },\n uBounceColor: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.point.color, DEFAULT_LIGHTING_RIG.point.intensity, \"#ffe2ba\")) },\n uBounceDir: { value: new THREE.Vector3(...lightDirectionFromPosition(DEFAULT_LIGHTING_RIG.point.position, DEFAULT_LIGHTING_RIG.point.position)) },\n uRimColor: { value: new THREE.Vector3(...linearLightRgb(DEFAULT_LIGHTING_RIG.rimColor, DEFAULT_LIGHTING_RIG.rimIntensity, \"#6db6e8\")) },\n uFloorEnabled: { value: 1 },\n uFloorShadowOpacity: { value: DEFAULT_LIGHTING_RIG.floorShadowOpacity },\n uFloorZ: { value: floorBounds.min[2] },\n uFloorCenter: { value: new THREE.Vector2(\n (floorBounds.min[0] + floorBounds.max[0]) / 2,\n (floorBounds.min[1] + floorBounds.max[1]) / 2\n ) },\n uFloorFadeRadius: { value: implicitFloorFadeRadius(floorBounds) },\n ...customUniforms,\n },\n vertexShader: implicitCadVertexShader(),\n fragmentShader: implicitCadFragmentShader(normalized),\n });\n Object.assign(material.userData, floorUserData);\n return material;\n}\n\nexport function updateImplicitCadModelUniforms(THREE, material, model) {\n if (!material?.uniforms) {\n return;\n }\n const normalized = normalizeImplicitCadModel(model);\n if (material.uniforms.uBoundsMin) {\n material.uniforms.uBoundsMin.value.set(...normalized.bounds.min);\n }\n if (material.uniforms.uBoundsMax) {\n material.uniforms.uBoundsMax.value.set(...normalized.bounds.max);\n }\n if (material.uniforms.uMaxDistance) {\n material.uniforms.uMaxDistance.value = normalized.maxDistance;\n }\n applyImplicitFloorUniforms(\n material,\n implicitFloorBoundsForModel(normalized, material.userData, { estimate: false })\n );\n for (const [name, uniform] of Object.entries(normalized.uniforms || {})) {\n updateThreeUniformValue(THREE, material.uniforms[name], uniform);\n }\n}\n\nexport function resolveImplicitCadAppearanceSettings({\n appearance = DEFAULT_APPEARANCE_ID,\n themeSettings = null\n} = {}) {\n if (themeSettings && typeof themeSettings === \"object\" && !Array.isArray(themeSettings)) {\n return normalizeThemeSettings(themeSettings);\n }\n return resolveAppearanceSettings({ appearance: appearance || DEFAULT_APPEARANCE_ID }, {\n defaultThemeId: DEFAULT_APPEARANCE_ID\n });\n}\n\nfunction applyImplicitLightingUniforms(uniforms, normalizedTheme) {\n const lighting = normalizedTheme?.lighting || {};\n const rig = DEFAULT_LIGHTING_RIG;\n if (uniforms.uExposure) {\n uniforms.uExposure.value = Math.max(finiteNumber(lighting.toneMappingExposure, rig.toneMappingExposure), 0.05);\n }\n const hemisphere = lighting.hemisphere || rig.hemisphere;\n const hemiIntensity = hemisphere.enabled === false ? 0 : finiteNumber(hemisphere.intensity, rig.hemisphere.intensity);\n if (uniforms.uHemiSky) {\n uniforms.uHemiSky.value.set(...linearLightRgb(hemisphere.skyColor, hemiIntensity, rig.hemisphere.skyColor));\n }\n if (uniforms.uHemiGround) {\n uniforms.uHemiGround.value.set(...linearLightRgb(hemisphere.groundColor, hemiIntensity, rig.hemisphere.groundColor));\n }\n if (uniforms.uAmbientLight) {\n const ambient = lighting.ambient || rig.ambient;\n const ambientIntensity = ambient.enabled === false ? 0 : finiteNumber(ambient.intensity, rig.ambient.intensity);\n const ambientRgb = linearLightRgb(ambient.color, ambientIntensity, rig.ambient.color);\n // The mesh stage adds an environment map; fold its contribution into a\n // white ambient term so overall brightness tracks the mesh viewer.\n const environment = normalizedTheme?.environment || {};\n const environmentAmbient = environment.enabled === false\n ? 0\n : Math.max(finiteNumber(environment.intensity, 0), 0) * rig.environmentAmbientScale;\n uniforms.uAmbientLight.value.set(\n ambientRgb[0] + environmentAmbient,\n ambientRgb[1] + environmentAmbient,\n ambientRgb[2] + environmentAmbient\n );\n }\n const directional = lighting.directional || rig.directional;\n if (uniforms.uKeyColor) {\n const keyIntensity = directional.enabled === false ? 0 : finiteNumber(directional.intensity, rig.directional.intensity);\n uniforms.uKeyColor.value.set(...linearLightRgb(directional.color, keyIntensity, rig.directional.color));\n }\n if (uniforms.uKeyDir) {\n uniforms.uKeyDir.value.set(...lightDirectionFromPosition(directional.position, rig.directional.position));\n }\n const spot = lighting.spot || rig.spot;\n if (uniforms.uFillColor) {\n const spotIntensity = spot.enabled === false ? 0 : finiteNumber(spot.intensity, rig.spot.intensity);\n uniforms.uFillColor.value.set(...linearLightRgb(spot.color, spotIntensity, rig.spot.color));\n }\n if (uniforms.uFillDir) {\n uniforms.uFillDir.value.set(...lightDirectionFromPosition(spot.position, rig.spot.position));\n }\n const point = lighting.point || rig.point;\n if (uniforms.uBounceColor) {\n const pointIntensity = point.enabled === false ? 0 : finiteNumber(point.intensity, rig.point.intensity);\n uniforms.uBounceColor.value.set(...linearLightRgb(point.color, pointIntensity, rig.point.color));\n }\n if (uniforms.uBounceDir) {\n uniforms.uBounceDir.value.set(...lightDirectionFromPosition(point.position, rig.point.position));\n }\n if (uniforms.uRimColor) {\n uniforms.uRimColor.value.set(...linearLightRgb(rig.rimColor, rig.rimIntensity, rig.rimColor));\n }\n const floor = normalizedTheme?.floor || {};\n if (uniforms.uFloorEnabled) {\n uniforms.uFloorEnabled.value = floor.mode === \"none\" ? 0 : 1;\n }\n if (uniforms.uFloorShadowOpacity) {\n uniforms.uFloorShadowOpacity.value = Math.min(\n Math.max(finiteNumber(floor.shadowOpacity, rig.floorShadowOpacity), 0),\n 1\n );\n }\n}\n\nexport function updateImplicitCadAppearanceUniforms(THREE, material, model, {\n appearance = DEFAULT_APPEARANCE_ID,\n themeSettings = null,\n graphicsSettings = null,\n forceTransparent = false\n} = {}) {\n const uniforms = material?.uniforms;\n if (!uniforms) {\n return resolveImplicitCadAppearanceSettings({ appearance, themeSettings });\n }\n const normalizedTheme = resolveImplicitCadAppearanceSettings({ appearance, themeSettings });\n const normalizedGraphics = normalizeImplicitGraphicsSettings(graphicsSettings);\n const materialSettings = normalizedTheme.materials || {};\n const sourceColor = readSourceColor(THREE, model?.material?.color);\n uniforms.uUseProceduralColor.value = model?.colorSource &&\n normalizedGraphics.modelColors &&\n materialSettings.overrideSourceColors !== true\n ? 1\n : 0;\n const surfaceColor = resolveSourceBaseColor(THREE, {\n sourceColor: materialSettings.overrideSourceColors === true ? null : sourceColor,\n materialSettings,\n fallbackColor: materialSettings.defaultColor || BASE_VIEWER_THEME.surface,\n forceFill: materialSettings.overrideSourceColors === true\n });\n uniforms.uSurfaceColor.value.set(...colorToRgb01(surfaceColor));\n applyImplicitLightingUniforms(uniforms, normalizedTheme);\n\n if (model?.background?.color) {\n const backgroundRgb = hexToRgb01(model.background.color, BASE_VIEWER_THEME.sceneBackground);\n uniforms.uBackgroundColor.value.set(...backgroundRgb);\n uniforms.uBackgroundColorA.value.set(...backgroundRgb);\n uniforms.uBackgroundColorB.value.set(...backgroundRgb);\n uniforms.uBackgroundMode.value = 0;\n uniforms.uBackgroundAngle.value = Math.PI;\n uniforms.uBackgroundAlpha.value = forceTransparent || model.background.transparent ? 0 : 1;\n return normalizedTheme;\n }\n\n const backgroundSettings = normalizedTheme.background || {};\n const backgroundMode = normalizeBackgroundMode(backgroundSettings.type);\n const solidColor = backgroundSettings.solidColor || getViewerThemeValue(normalizedTheme, \"sceneBackground\", BASE_VIEWER_THEME.sceneBackground);\n const colorA = backgroundMode === 1\n ? backgroundSettings.linearStart\n : backgroundMode === 2\n ? backgroundSettings.radialInner\n : solidColor;\n const colorB = backgroundMode === 1\n ? backgroundSettings.linearEnd\n : backgroundMode === 2\n ? backgroundSettings.radialOuter\n : solidColor;\n uniforms.uBackgroundColor.value.set(...hexToRgb01(solidColor, BASE_VIEWER_THEME.sceneBackground));\n uniforms.uBackgroundColorA.value.set(...hexToRgb01(colorA, solidColor));\n uniforms.uBackgroundColorB.value.set(...hexToRgb01(colorB, solidColor));\n uniforms.uBackgroundMode.value = backgroundMode;\n uniforms.uBackgroundAngle.value = degreesToRadians(backgroundSettings.linearAngle, 180);\n uniforms.uBackgroundAlpha.value = forceTransparent || backgroundSettings.type === \"transparent\" ? 0 : 1;\n return normalizedTheme;\n}\n\nexport function updateImplicitCadGraphicsUniforms(material, model, graphicsSettings = null) {\n const uniforms = material?.uniforms;\n if (!uniforms) {\n return normalizeImplicitGraphicsSettings(graphicsSettings);\n }\n const settings = normalizeImplicitGraphicsSettings(graphicsSettings);\n const detail = Math.max(settings.detail, 0.001);\n const detailRoot = Math.sqrt(detail);\n if (uniforms.uHitEpsilon) {\n uniforms.uHitEpsilon.value = Math.max(finiteNumber(model?.epsilon, 0.001) / detailRoot, 1e-6);\n }\n if (uniforms.uNormalEpsilon) {\n uniforms.uNormalEpsilon.value = Math.max(\n finiteNumber(model?.normalEpsilon, 0.001) * settings.normalSmoothing / detailRoot,\n 1e-6\n );\n }\n if (uniforms.uStepScale) {\n uniforms.uStepScale.value = Math.max(finiteNumber(model?.stepScale, 1) / detail, 0.01);\n }\n if (uniforms.uMaxStep) {\n uniforms.uMaxStep.value = Math.max(finiteNumber(model?.maxStep, 1) / detail, 1e-6);\n }\n if (uniforms.uStepBudget) {\n const maxSteps = Math.max(Math.floor(finiteNumber(model?.maxSteps, 192)), 1);\n const requestedStepBudget = Math.floor(finiteNumber(graphicsSettings?.stepBudget, maxSteps));\n uniforms.uStepBudget.value = Math.max(Math.min(requestedStepBudget, maxSteps), 1);\n }\n if (uniforms.uShadowStrength) {\n uniforms.uShadowStrength.value = settings.shadows ? 1 : 0;\n }\n if (uniforms.uAmbientOcclusionStrength) {\n uniforms.uAmbientOcclusionStrength.value = settings.ambientOcclusion ? 1 : 0;\n }\n if (uniforms.uRimStrength) {\n uniforms.uRimStrength.value = settings.rimLight ? 1 : 0;\n }\n return settings;\n}\n\nexport function updateImplicitCadMaterialUniforms(material, camera, width, height) {\n camera.updateMatrixWorld(true);\n material.uniforms.uResolution.value.set(Math.max(width, 1), Math.max(height, 1));\n material.uniforms.uCameraPosition.value.copy(camera.position);\n material.uniforms.uCameraWorld.value.copy(camera.matrixWorld);\n material.uniforms.uProjectionInverse.value.copy(camera.projectionMatrixInverse);\n}\n\nexport function createImplicitCadFullscreenScene(THREE, model) {\n const scene = new THREE.Scene();\n const normalized = normalizeImplicitCadModel(model);\n const material = createImplicitCadMaterial(THREE, model);\n const quad = new THREE.Mesh(new THREE.PlaneGeometry(2, 2), material);\n quad.frustumCulled = false;\n scene.add(quad);\n return {\n scene,\n material,\n quad,\n shaderKey: implicitCadModelShaderKey(normalized),\n dispose() {\n quad.geometry?.dispose?.();\n material.dispose?.();\n },\n };\n}\n\nexport function configureImplicitCadCamera(THREE, model, width, height, cameraSpec = \"iso\", options = {}) {\n const cameraState = implicitCadCameraState(model, cameraSpec, {\n ...options,\n width,\n height\n });\n const camera = new THREE.PerspectiveCamera(\n cameraState.fov,\n Math.max(width, 1) / Math.max(height, 1),\n Math.max(model.radius * 0.002, 0.001),\n Math.max(model.radius * 12, 1000)\n );\n camera.position.set(...cameraState.position);\n camera.up.set(...cameraState.up);\n camera.zoom = Math.max(finiteNumber(cameraState.zoom, 1), 0.05);\n camera.lookAt(new THREE.Vector3(...cameraState.target));\n camera.updateProjectionMatrix();\n camera.updateMatrixWorld(true);\n return camera;\n}\n\nexport async function renderImplicitCadToDataUrl(THREE, modelValue, {\n width = 1200,\n height = 900,\n camera = \"iso\",\n appearance = DEFAULT_APPEARANCE_ID,\n graphics = null,\n render = {},\n} = {}) {\n const model = normalizeImplicitCadModel(modelValue);\n const themeSettings = resolveImplicitCadAppearanceSettings({ appearance });\n const renderer = new THREE.WebGLRenderer({\n antialias: true,\n alpha: true,\n preserveDrawingBuffer: true,\n });\n renderer.setPixelRatio(1);\n renderer.setSize(width, height, false);\n const background = model.background?.color\n ? model.background\n : themeSettings.background || {};\n const transparent = Boolean(render.transparent || background.transparent || background.type === \"transparent\");\n const backgroundColor = hexToRgb01(background.color || background.solidColor, DEFAULT_BACKGROUND);\n renderer.setClearColor(new THREE.Color(...backgroundColor), transparent ? 0 : 1);\n // Configure the camera before creating the scene: the camera fit warms the\n // frame-bounds estimate cache that floor placement reads at material\n // creation time.\n const captureCamera = configureImplicitCadCamera(THREE, model, width, height, camera, {\n zoom: render.zoom,\n frameMargin: render.frameMargin,\n });\n const { scene, material, dispose } = createImplicitCadFullscreenScene(THREE, model);\n updateImplicitCadAppearanceUniforms(THREE, material, model, {\n themeSettings,\n graphicsSettings: graphics,\n forceTransparent: transparent\n });\n updateImplicitCadGraphicsUniforms(material, model, graphics);\n updateImplicitCadMaterialUniforms(material, captureCamera, width, height);\n const screenCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);\n renderer.render(scene, screenCamera);\n const dataUrl = renderer.domElement.toDataURL(\"image/png\");\n dispose();\n renderer.dispose();\n return dataUrl;\n}\n\nexport const implicitModelShaderKey = implicitCadModelShaderKey;\nexport const implicitVertexShader = implicitCadVertexShader;\nexport const implicitFragmentShader = implicitCadFragmentShader;\nexport const createImplicitMaterial = createImplicitCadMaterial;\nexport const updateImplicitModelUniforms = updateImplicitCadModelUniforms;\nexport const resolveImplicitAppearanceSettings = resolveImplicitCadAppearanceSettings;\nexport const updateImplicitAppearanceUniforms = updateImplicitCadAppearanceUniforms;\nexport const updateImplicitGraphicsUniforms = updateImplicitCadGraphicsUniforms;\nexport const updateImplicitMaterialUniforms = updateImplicitCadMaterialUniforms;\nexport const createImplicitFullscreenScene = createImplicitCadFullscreenScene;\nexport const configureImplicitCamera = configureImplicitCadCamera;\nexport const renderImplicitToDataUrl = renderImplicitCadToDataUrl;\n","\"use client\";\n\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport * as THREE from \"three\";\nimport { Navigation2 } from \"lucide-react\";\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls.js\";\nimport { copyImageBlobToClipboard } from \"@/ui/clipboard\";\nimport { triggerBlobDownload } from \"@/ui/download\";\nimport { isEditableTarget } from \"@/ui/dom\";\nimport {\n createImplicitCadFullscreenScene,\n implicitCadCameraState,\n implicitCadModelShaderKey,\n refreshImplicitCadFloorBounds,\n updateImplicitCadAppearanceUniforms,\n updateImplicitCadGraphicsUniforms,\n updateImplicitCadModelUniforms,\n updateImplicitCadMaterialUniforms\n} from \"implicitjs/render\";\nimport {\n implicitGraphicsRenderResolutionScale,\n implicitGraphicsRenderSettings,\n normalizeImplicitGraphicsSettings\n} from \"@/workbench/implicitGraphicsSettings\";\nimport ViewPlaneControl from \"./viewer/ViewPlaneControl\";\nimport {\n PREVIEW_AUTO_ROTATE_SPEED,\n updateOrbitControls\n} from \"./viewer/orbitControls.js\";\n\nconst INTERACTION_IDLE_DELAY_MS = 140;\nconst DEFAULT_DAMPING_FACTOR = 0.14;\nconst DEFAULT_ZOOM_SPEED = 4.5;\nconst ACCELERATED_WHEEL_ZOOM_SPEED = 10;\nconst TRACKPAD_PINCH_ZOOM_SPEED = 14;\nconst KEYBOARD_ORBIT_NUDGE_RAD = Math.PI / 32;\nconst KEYBOARD_ORBIT_SPEED_RAD_PER_SEC = Math.PI * 0.42;\nconst KEYBOARD_POLAR_EPSILON = 0.02;\nconst DEFAULT_VIEW_DIRECTION = Object.freeze([2.1, -1.65, 1.08]);\nconst WORLD_UP = Object.freeze([0, 0, 1]);\nconst CAMERA_UP_PARALLEL_DOT_THRESHOLD = 0.9;\nconst VIEW_PLANE_ACTIVE_DOT_THRESHOLD = 0.994;\nconst VIEW_PLANE_TRANSITION_MS = 280;\nconst DEFAULT_FOV_DEG = 48;\nconst IMPLICIT_CAMERA_VERSION = 8;\nconst AUTO_ZOOM_FRAME_MARGIN = 1.08;\nconst AUTO_ZOOM_SPEED_MS = 400;\nconst RESET_VIEW_CONTROL_BUTTON_CLASSES = \"cad-glass-surface pointer-events-auto grid h-8 w-8 shrink-0 place-items-center rounded-full border border-sidebar-border text-sidebar-foreground/60 shadow-sm transition duration-150 hover:text-sidebar-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/45\";\nconst VIEW_PLANE_FACES = [\n { id: \"z\", title: \"Jump to top view\", direction: [0, 0, 1], up: [0, 1, 0] },\n { id: \"zNeg\", title: \"Jump to bottom view\", direction: [0, 0, -1], up: [0, 1, 0] },\n { id: \"yNeg\", title: \"Jump to front view\", direction: [0, -1, 0], up: WORLD_UP },\n { id: \"y\", title: \"Jump to back view\", direction: [0, 1, 0], up: WORLD_UP },\n { id: \"x\", title: \"Jump to right view\", direction: [1, 0, 0], up: WORLD_UP },\n { id: \"xNeg\", title: \"Jump to left view\", direction: [-1, 0, 0], up: WORLD_UP }\n];\nconst VIEW_PLANE_FACE_BY_ID = Object.fromEntries(VIEW_PLANE_FACES.map((face) => [face.id, face]));\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction finiteNumber(value, fallback = 0) {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\n\nfunction easeInOutCubic(value) {\n const t = clamp(value, 0, 1);\n return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;\n}\n\nfunction cameraUpForDirection(direction, preferredUp = WORLD_UP) {\n const viewDirection = new THREE.Vector3(...(direction || []));\n const up = new THREE.Vector3(...(preferredUp || WORLD_UP));\n if (viewDirection.lengthSq() < 1e-6) {\n return up.lengthSq() < 1e-6 ? new THREE.Vector3(...WORLD_UP) : up.normalize();\n }\n viewDirection.normalize();\n if (up.lengthSq() < 1e-6) {\n up.set(...WORLD_UP);\n }\n up.normalize();\n if (Math.abs(viewDirection.dot(up)) < CAMERA_UP_PARALLEL_DOT_THRESHOLD) {\n return up;\n }\n const fallbackUp = new THREE.Vector3(0, 1, 0);\n if (Math.abs(viewDirection.dot(fallbackUp)) < CAMERA_UP_PARALLEL_DOT_THRESHOLD) {\n return fallbackUp;\n }\n return new THREE.Vector3(1, 0, 0);\n}\n\nfunction isTrackpadLikeWheelEvent(event) {\n return event.ctrlKey || (event.deltaMode === 0 && Math.abs(event.deltaY) < 20);\n}\n\nfunction getKeyboardOrbitCommand(event) {\n if (!event) {\n return null;\n }\n if (event.key === \"ArrowLeft\") {\n return { direction: \"left\", keyId: \"ArrowLeft\" };\n }\n if (event.key === \"ArrowRight\") {\n return { direction: \"right\", keyId: \"ArrowRight\" };\n }\n if (event.key === \"ArrowUp\") {\n return { direction: \"up\", keyId: \"ArrowUp\" };\n }\n if (event.key === \"ArrowDown\") {\n return { direction: \"down\", keyId: \"ArrowDown\" };\n }\n\n const key = String(event.key || \"\").toLowerCase();\n if (key === \"a\" || event.code === \"KeyA\") {\n return { direction: \"left\", keyId: event.code || \"KeyA\" };\n }\n if (key === \"d\" || event.code === \"KeyD\") {\n return { direction: \"right\", keyId: event.code || \"KeyD\" };\n }\n if (key === \"w\" || event.code === \"KeyW\") {\n return { direction: \"up\", keyId: event.code || \"KeyW\" };\n }\n if (key === \"s\" || event.code === \"KeyS\") {\n return { direction: \"down\", keyId: event.code || \"KeyS\" };\n }\n return null;\n}\n\nfunction getKeyboardOrbitAxes(keyboardOrbitState) {\n return {\n azimuth:\n (keyboardOrbitState.directionCounts.right > 0 ? 1 : 0) -\n (keyboardOrbitState.directionCounts.left > 0 ? 1 : 0),\n polar:\n (keyboardOrbitState.directionCounts.down > 0 ? 1 : 0) -\n (keyboardOrbitState.directionCounts.up > 0 ? 1 : 0)\n };\n}\n\nfunction clearKeyboardOrbitState(keyboardOrbitState) {\n if (!keyboardOrbitState) {\n return;\n }\n keyboardOrbitState.pressedKeys.clear();\n keyboardOrbitState.directionCounts.left = 0;\n keyboardOrbitState.directionCounts.right = 0;\n keyboardOrbitState.directionCounts.up = 0;\n keyboardOrbitState.directionCounts.down = 0;\n keyboardOrbitState.lastFrameTime = 0;\n}\n\nfunction applyOrbitDelta(runtime, azimuthDelta, polarDelta) {\n if (!runtime?.camera || !runtime?.controls) {\n return false;\n }\n if (Math.abs(azimuthDelta) < 1e-6 && Math.abs(polarDelta) < 1e-6) {\n return false;\n }\n\n const offset = runtime.camera.position.clone().sub(runtime.controls.target);\n const distance = offset.length();\n if (!Number.isFinite(distance) || distance <= 1e-6) {\n return false;\n }\n\n const worldUp = new THREE.Vector3(...WORLD_UP).normalize();\n const direction = offset.clone().divideScalar(distance);\n const minPolar = Math.max(\n Number.isFinite(runtime.controls.minPolarAngle) ? runtime.controls.minPolarAngle : 0,\n KEYBOARD_POLAR_EPSILON\n );\n const maxPolar = Math.min(\n Number.isFinite(runtime.controls.maxPolarAngle) ? runtime.controls.maxPolarAngle : Math.PI,\n Math.PI - KEYBOARD_POLAR_EPSILON\n );\n const currentPolar = Math.acos(clamp(direction.dot(worldUp), -1, 1));\n const requestedPolar = clamp(currentPolar + polarDelta, minPolar, maxPolar);\n const resolvedPolarDelta = requestedPolar - currentPolar;\n\n if (Math.abs(azimuthDelta) > 1e-6) {\n offset.applyAxisAngle(worldUp, azimuthDelta);\n }\n if (Math.abs(resolvedPolarDelta) > 1e-6) {\n let orbitRight = new THREE.Vector3().crossVectors(worldUp, offset).normalize();\n if (orbitRight.lengthSq() <= 1e-9) {\n orbitRight = new THREE.Vector3(1, 0, 0);\n }\n offset.applyAxisAngle(orbitRight, resolvedPolarDelta);\n }\n runtime.camera.position.copy(runtime.controls.target).add(offset);\n runtime.camera.up.set(...WORLD_UP);\n runtime.camera.lookAt(runtime.controls.target);\n return true;\n}\n\nfunction stepKeyboardOrbit(runtime, timestamp) {\n const keyboardOrbitState = runtime?.keyboardOrbitState;\n if (!keyboardOrbitState) {\n return false;\n }\n\n const axes = getKeyboardOrbitAxes(keyboardOrbitState);\n if (!axes.azimuth && !axes.polar) {\n keyboardOrbitState.lastFrameTime = 0;\n return false;\n }\n if (!keyboardOrbitState.lastFrameTime) {\n keyboardOrbitState.lastFrameTime = timestamp;\n return false;\n }\n\n const deltaSeconds = clamp((timestamp - keyboardOrbitState.lastFrameTime) / 1000, 0, 0.05);\n keyboardOrbitState.lastFrameTime = timestamp;\n return applyOrbitDelta(\n runtime,\n axes.azimuth * KEYBOARD_ORBIT_SPEED_RAD_PER_SEC * deltaSeconds,\n axes.polar * KEYBOARD_ORBIT_SPEED_RAD_PER_SEC * deltaSeconds\n );\n}\n\nfunction normalizeViewportFrameInsets(value = {}) {\n const normalizeInset = (inset) => {\n const numericInset = Number(inset);\n return Number.isFinite(numericInset) ? Math.max(0, numericInset) : 0;\n };\n return {\n top: normalizeInset(value?.top),\n right: normalizeInset(value?.right),\n bottom: normalizeInset(value?.bottom),\n left: normalizeInset(value?.left)\n };\n}\n\nfunction getViewportFrameMetrics(runtime, frameInsets = {}) {\n const canvas = runtime?.renderer?.domElement;\n const width = Math.max(1, canvas?.clientWidth || canvas?.parentElement?.clientWidth || 1);\n const height = Math.max(1, canvas?.clientHeight || canvas?.parentElement?.clientHeight || 1);\n const normalizedInsets = normalizeViewportFrameInsets(frameInsets);\n const left = clamp(normalizedInsets.left, 0, Math.max(width - 1, 0));\n const right = clamp(normalizedInsets.right, 0, Math.max(width - left - 1, 0));\n const top = clamp(normalizedInsets.top, 0, Math.max(height - 1, 0));\n const bottom = clamp(normalizedInsets.bottom, 0, Math.max(height - top - 1, 0));\n const framedWidth = Math.max(1, width - left - right);\n const framedHeight = Math.max(1, height - top - bottom);\n const centerX = left + framedWidth / 2;\n const centerY = top + framedHeight / 2;\n return {\n width,\n height,\n top,\n right,\n bottom,\n left,\n framedWidth,\n framedHeight,\n aspect: framedWidth / framedHeight,\n offsetNdcX: (centerX / width) * 2 - 1,\n offsetNdcY: 1 - (centerY / height) * 2\n };\n}\n\nfunction viewportCropForCanvas(runtime, frameInsets = {}) {\n const canvas = runtime?.renderer?.domElement;\n const metrics = getViewportFrameMetrics(runtime, frameInsets);\n const pixelWidth = Math.max(1, canvas?.width || metrics.width);\n const pixelHeight = Math.max(1, canvas?.height || metrics.height);\n const scaleX = pixelWidth / Math.max(metrics.width, 1);\n const scaleY = pixelHeight / Math.max(metrics.height, 1);\n const x = Math.round(metrics.left * scaleX);\n const y = Math.round(metrics.top * scaleY);\n const right = Math.round(metrics.right * scaleX);\n const bottom = Math.round(metrics.bottom * scaleY);\n return {\n x,\n y,\n width: Math.max(1, pixelWidth - x - right),\n height: Math.max(1, pixelHeight - y - bottom)\n };\n}\n\nfunction applyCameraFrameInsets(runtime, frameInsets = {}, { updateProjection = true } = {}) {\n const camera = runtime?.camera;\n if (!camera?.projectionMatrix?.elements) {\n return;\n }\n if (updateProjection) {\n camera.updateProjectionMatrix();\n }\n const { offsetNdcX, offsetNdcY } = getViewportFrameMetrics(runtime, frameInsets);\n camera.projectionMatrix.elements[8] -= offsetNdcX;\n camera.projectionMatrix.elements[9] -= offsetNdcY;\n camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n}\n\nfunction readViewPlaneOrientation(runtime) {\n if (!runtime?.camera) {\n return null;\n }\n const inverseCameraRotation = runtime.camera.quaternion.clone().invert();\n const projectAxis = (x, y, z) => {\n const projected = new THREE.Vector3(x, y, z).applyQuaternion(inverseCameraRotation);\n return [projected.x, projected.y, projected.z];\n };\n return {\n x: projectAxis(1, 0, 0),\n y: projectAxis(0, 1, 0),\n z: projectAxis(0, 0, 1)\n };\n}\n\nfunction viewPlaneOrientationsEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n for (const axis of [\"x\", \"y\", \"z\"]) {\n const av = a[axis];\n const bv = b[axis];\n if (!av || !bv) {\n return false;\n }\n for (let index = 0; index < 3; index += 1) {\n if (Math.abs((av[index] || 0) - (bv[index] || 0)) > 1e-4) {\n return false;\n }\n }\n }\n return true;\n}\n\nfunction getActiveViewPlaneFaceId(runtime) {\n if (!runtime?.camera || !runtime?.controls) {\n return \"\";\n }\n const offset = runtime.camera.position.clone().sub(runtime.controls.target);\n if (offset.lengthSq() < 1e-6) {\n return \"\";\n }\n offset.normalize();\n let bestId = \"\";\n let bestDot = -Infinity;\n for (const face of VIEW_PLANE_FACES) {\n const direction = new THREE.Vector3(...face.direction).normalize();\n const dot = direction.dot(offset);\n if (dot > bestDot) {\n bestDot = dot;\n bestId = face.id;\n }\n }\n return bestDot >= VIEW_PLANE_ACTIVE_DOT_THRESHOLD ? bestId : \"\";\n}\n\nfunction perspectiveSnapshot(runtime, modelKey = \"\") {\n if (!runtime?.camera || !runtime?.controls) {\n return null;\n }\n const camera = runtime.camera;\n const target = runtime.controls.target;\n return {\n implicit: true,\n cameraVersion: IMPLICIT_CAMERA_VERSION,\n modelKey: String(modelKey || \"\"),\n position: [camera.position.x, camera.position.y, camera.position.z],\n target: [target.x, target.y, target.z],\n up: [camera.up.x, camera.up.y, camera.up.z],\n fov: camera.fov\n };\n}\n\nfunction applyPerspectiveSnapshot(runtime, perspective, modelKey = \"\") {\n if (!runtime?.camera || !runtime?.controls || !perspective?.implicit) {\n return false;\n }\n if (perspective.cameraVersion !== IMPLICIT_CAMERA_VERSION) {\n return false;\n }\n const snapshotModelKey = String(perspective.modelKey || \"\").trim();\n const activeModelKey = String(modelKey || \"\").trim();\n if (snapshotModelKey && activeModelKey && snapshotModelKey !== activeModelKey) {\n return false;\n }\n const position = Array.isArray(perspective.position) ? perspective.position : null;\n const target = Array.isArray(perspective.target) ? perspective.target : null;\n const up = Array.isArray(perspective.up) ? perspective.up : WORLD_UP;\n if (!position || !target) {\n return false;\n }\n runtime.camera.position.set(\n finiteNumber(position[0], runtime.camera.position.x),\n finiteNumber(position[1], runtime.camera.position.y),\n finiteNumber(position[2], runtime.camera.position.z)\n );\n runtime.controls.target.set(\n finiteNumber(target[0], runtime.controls.target.x),\n finiteNumber(target[1], runtime.controls.target.y),\n finiteNumber(target[2], runtime.controls.target.z)\n );\n runtime.camera.up.set(\n finiteNumber(up[0], WORLD_UP[0]),\n finiteNumber(up[1], WORLD_UP[1]),\n finiteNumber(up[2], WORLD_UP[2])\n );\n runtime.camera.fov = finiteNumber(perspective.fov, runtime.camera.fov);\n runtime.updateCameraFraming?.();\n runtime.camera.lookAt(runtime.controls.target);\n runtime.controls.update();\n runtime.requestRender?.();\n return true;\n}\n\nfunction transitionCameraToViewPreset(runtime, preset) {\n if (!runtime?.camera || !runtime?.controls || !preset) {\n return false;\n }\n const direction = new THREE.Vector3(...(preset.direction || []));\n const up = new THREE.Vector3(...(preset.up || []));\n if (direction.lengthSq() < 1e-6 || up.lengthSq() < 1e-6) {\n return false;\n }\n const target = runtime.controls.target.clone();\n const distance = clamp(\n runtime.camera.position.distanceTo(target),\n runtime.controls.minDistance || 0.01,\n runtime.controls.maxDistance || Infinity\n );\n runtime.cameraTransition = {\n startTime: performance.now(),\n durationMs: VIEW_PLANE_TRANSITION_MS,\n startPosition: runtime.camera.position.clone(),\n endPosition: target.clone().add(direction.normalize().multiplyScalar(distance)),\n startUp: runtime.camera.up.clone(),\n endUp: up.normalize()\n };\n runtime.controls.enableDamping = false;\n runtime.beginInteraction?.();\n runtime.requestRender?.();\n return true;\n}\n\nfunction stepCameraTransition(runtime, timestamp) {\n const transition = runtime?.cameraTransition;\n if (!transition) {\n return false;\n }\n const progress = clamp((timestamp - transition.startTime) / transition.durationMs, 0, 1);\n const eased = easeInOutCubic(progress);\n runtime.camera.position.lerpVectors(transition.startPosition, transition.endPosition, eased);\n runtime.camera.up.lerpVectors(transition.startUp, transition.endUp, eased).normalize();\n if (transition.endTarget) {\n runtime.controls.target.lerpVectors(transition.startTarget, transition.endTarget, eased);\n }\n runtime.camera.lookAt(runtime.controls.target);\n if (progress >= 1) {\n runtime.cameraTransition = null;\n runtime.controls.enableDamping = true;\n runtime.controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n runtime.scheduleIdleQuality?.();\n runtime.emitPerspectiveChange?.();\n return false;\n }\n return true;\n}\n\nfunction applyCameraState(runtime, cameraState) {\n runtime.controls.target.set(...cameraState.target);\n runtime.camera.position.set(...cameraState.position);\n runtime.camera.up.set(...cameraState.up);\n runtime.camera.fov = cameraState.fov;\n runtime.camera.zoom = cameraState.zoom;\n runtime.updateCameraFraming?.();\n runtime.camera.lookAt(runtime.controls.target);\n runtime.controls.update();\n runtime.emitPerspectiveChange?.();\n runtime.requestRender?.();\n}\n\nfunction transitionCameraToState(runtime, cameraState, {\n animate = true,\n durationMs = AUTO_ZOOM_SPEED_MS\n} = {}) {\n if (!runtime?.camera || !runtime?.controls || !cameraState) {\n return false;\n }\n if (!animate || durationMs <= 0) {\n applyCameraState(runtime, cameraState);\n return true;\n }\n runtime.camera.fov = cameraState.fov;\n runtime.camera.zoom = cameraState.zoom;\n runtime.updateCameraFraming?.();\n runtime.cameraTransition = {\n startTime: performance.now(),\n durationMs,\n startPosition: runtime.camera.position.clone(),\n endPosition: new THREE.Vector3(...cameraState.position),\n startUp: runtime.camera.up.clone(),\n endUp: new THREE.Vector3(...cameraState.up).normalize(),\n startTarget: runtime.controls.target.clone(),\n endTarget: new THREE.Vector3(...cameraState.target)\n };\n runtime.controls.enableDamping = false;\n runtime.beginInteraction?.();\n runtime.requestRender?.();\n return true;\n}\n\n// Compile the raymarch program off the main thread (KHR_parallel_shader_compile\n// via THREE.compileAsync) and only start rendering once it links; large models\n// otherwise freeze the tab for seconds on their first frame.\nfunction armImplicitShaderCompile(runtime) {\n const shaderScene = runtime?.shaderScene;\n const renderer = runtime?.renderer;\n if (!shaderScene || !renderer) {\n return;\n }\n if (typeof renderer.compileAsync !== \"function\" || !runtime.screenCamera) {\n runtime.shaderSceneReady = true;\n return;\n }\n runtime.shaderSceneReady = false;\n renderer.compileAsync(shaderScene.scene, runtime.screenCamera)\n .catch(() => {})\n .finally(() => {\n if (runtime.shaderScene === shaderScene) {\n runtime.shaderSceneReady = true;\n runtime.requestRender?.();\n }\n });\n}\n\nfunction autoZoomBoundsKey(model) {\n const bounds = model?.bounds;\n if (!Array.isArray(bounds?.min) || !Array.isArray(bounds?.max)) {\n return \"\";\n }\n const radius = Math.max(finiteNumber(model?.radius, 1), 1e-6);\n const quantum = Math.max(radius * 0.02, 1e-6);\n return [...bounds.min, ...bounds.max]\n .map((value) => Math.round(finiteNumber(value, 0) / quantum))\n .join(\",\");\n}\n\nfunction canvasBlob(canvas, crop = null) {\n return new Promise((resolve, reject) => {\n const source = canvas;\n const target = crop\n ? document.createElement(\"canvas\")\n : source;\n if (crop) {\n target.width = crop.width;\n target.height = crop.height;\n target\n .getContext(\"2d\")\n ?.drawImage(source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height);\n }\n target.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error(\"Failed to capture implicit CAD screenshot\"));\n }\n }, \"image/png\");\n });\n}\n\nfunction updateImplicitThemeUniforms(runtime, model, themeSettings) {\n updateImplicitCadAppearanceUniforms(THREE, runtime?.shaderScene?.material, model, {\n themeSettings,\n graphicsSettings: implicitGraphicsRenderSettings(runtime?.graphicsSettings, {\n interaction: runtime?.previewOrbitEnabled === true\n })\n });\n}\n\nfunction updateImplicitGraphicsUniforms(runtime, model) {\n updateImplicitCadGraphicsUniforms(runtime?.shaderScene?.material, model, implicitGraphicsRenderSettings(\n runtime?.graphicsSettings,\n { interaction: runtime?.previewOrbitEnabled === true }\n ));\n}\n\nconst ImplicitCadViewer = forwardRef(function ImplicitCadViewer({\n model,\n modelKey = \"\",\n isLoading = false,\n previewMode = false,\n viewportFrameInsets = {},\n viewPlaneOffsetRight = 16,\n themeSettings = null,\n graphicsSettings = null,\n dynamicRenderActive = false,\n perspective = null,\n perspectiveRef = null,\n onPerspectiveChange,\n onViewerAlertChange\n}, ref) {\n const mountRef = useRef(null);\n const runtimeRef = useRef(null);\n const frameInsetsRef = useRef(viewportFrameInsets);\n const latestModelKeyRef = useRef(modelKey);\n const perspectiveChangeRef = useRef(onPerspectiveChange);\n const previewModeRef = useRef(previewMode);\n const normalizedGraphicsSettings = useMemo(\n () => normalizeImplicitGraphicsSettings(graphicsSettings),\n [graphicsSettings]\n );\n const graphicsSettingsRef = useRef(normalizedGraphicsSettings);\n const dynamicRenderActiveRef = useRef(dynamicRenderActive === true);\n const [renderError, setRenderError] = useState(\"\");\n const [activeViewPlaneFace, setActiveViewPlaneFace] = useState(\"\");\n const [viewPlaneOrientation, setViewPlaneOrientation] = useState(null);\n\n useEffect(() => {\n frameInsetsRef.current = viewportFrameInsets;\n const runtime = runtimeRef.current;\n runtime?.updateCameraFraming?.();\n runtime?.requestRender?.();\n }, [viewportFrameInsets]);\n\n useEffect(() => {\n perspectiveChangeRef.current = onPerspectiveChange;\n }, [onPerspectiveChange]);\n\n useEffect(() => {\n latestModelKeyRef.current = modelKey;\n }, [modelKey]);\n\n useEffect(() => {\n previewModeRef.current = previewMode;\n }, [model, previewMode, themeSettings]);\n\n useEffect(() => {\n const active = dynamicRenderActive === true;\n dynamicRenderActiveRef.current = active;\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n runtime.dynamicRenderActive = active;\n updateImplicitGraphicsUniforms(runtime, model);\n runtime.requestRender?.();\n }, [dynamicRenderActive, model]);\n\n const emitPerspectiveChange = useCallback(() => {\n const snapshot = perspectiveSnapshot(runtimeRef.current, latestModelKeyRef.current);\n if (snapshot) {\n perspectiveChangeRef.current?.(snapshot);\n }\n }, []);\n\n const autoZoomStateRef = useRef({ attached: true, lastFitKey: \"\" });\n const [autoZoomDetached, setAutoZoomDetached] = useState(false);\n const setAutoZoomAttached = useCallback((attached) => {\n autoZoomStateRef.current.attached = attached;\n setAutoZoomDetached(!attached);\n }, []);\n const setAutoZoomAttachedRef = useRef(setAutoZoomAttached);\n setAutoZoomAttachedRef.current = setAutoZoomAttached;\n\n const runAutoZoom = useCallback((reason = \"state\", {\n animate = true,\n force = false,\n viewDirection = null,\n viewUp = null,\n durationMs = AUTO_ZOOM_SPEED_MS\n } = {}) => {\n const runtime = runtimeRef.current;\n if (!runtime?.camera || !runtime?.controls) {\n return false;\n }\n const state = autoZoomStateRef.current;\n if (!force && state.attached === false) {\n return false;\n }\n const activeModel = runtime.model || model;\n if (!activeModel) {\n return false;\n }\n const metrics = getViewportFrameMetrics(runtime, frameInsetsRef.current);\n const offset = runtime.camera.position.clone().sub(runtime.controls.target);\n const direction = viewDirection || (offset.lengthSq() > 1e-9 ? offset.toArray() : DEFAULT_VIEW_DIRECTION);\n const cameraState = implicitCadCameraState(\n activeModel,\n { direction, up: viewUp || runtime.camera.up.toArray() },\n {\n width: metrics.framedWidth,\n height: metrics.framedHeight,\n zoom: 1,\n frameMargin: AUTO_ZOOM_FRAME_MARGIN,\n // Never run the CPU SDF estimator on the interaction path; fits use\n // cached/declared bounds and refineImplicitFit tightens them later.\n estimateFrameBounds: false\n }\n );\n setAutoZoomAttached(true);\n state.lastFitKey = autoZoomBoundsKey(activeModel);\n return transitionCameraToState(runtime, cameraState, { animate, durationMs });\n }, [model, setAutoZoomAttached]);\n const runAutoZoomRef = useRef(null);\n runAutoZoomRef.current = runAutoZoom;\n\n const maybeAutoZoomForModel = useCallback((nextModel) => {\n if (!nextModel || dynamicRenderActiveRef.current) {\n return;\n }\n const state = autoZoomStateRef.current;\n if (state.attached === false) {\n return;\n }\n const key = autoZoomBoundsKey(nextModel);\n if (!key || state.lastFitKey === key) {\n return;\n }\n runAutoZoomRef.current?.(\"model\");\n }, []);\n\n // Resolve tight floor/frame bounds in the background, then re-fit once. This\n // only ever runs when the model's *declared* bounds change and never during\n // dynamic render (animation playback, slider drags): animation advances\n // uniforms every frame without changing the envelope, so refining per frame\n // would spawn an unbounded flood of concurrent CPU SDF scans.\n const refineImplicitFit = useCallback((nextModel, { force = false } = {}) => {\n const runtime = runtimeRef.current;\n const material = runtime?.shaderScene?.material;\n if (!runtime || !material || !nextModel) {\n return;\n }\n if (!force && dynamicRenderActiveRef.current) {\n return;\n }\n const boundsKey = autoZoomBoundsKey(nextModel);\n if (!force && boundsKey && runtime.refineBoundsKey === boundsKey) {\n return;\n }\n runtime.refineBoundsKey = boundsKey;\n const token = (runtime.refineToken = (runtime.refineToken || 0) + 1);\n refreshImplicitCadFloorBounds(material, nextModel)\n .then(() => {\n if (runtimeRef.current !== runtime || runtime.refineToken !== token) {\n return;\n }\n if (runtime.shaderScene?.material !== material) {\n return;\n }\n runtime.requestRender?.();\n if (autoZoomStateRef.current.attached !== false && !dynamicRenderActiveRef.current) {\n runAutoZoomRef.current?.(\"refine\");\n }\n })\n .catch(() => {\n if (runtimeRef.current === runtime && runtime.refineBoundsKey === boundsKey) {\n runtime.refineBoundsKey = null;\n }\n });\n }, []);\n const refineImplicitFitRef = useRef(null);\n refineImplicitFitRef.current = refineImplicitFit;\n\n const activateViewPlaneFace = useCallback((faceId) => {\n const face = VIEW_PLANE_FACE_BY_ID[faceId];\n if (!face || !runtimeRef.current) {\n return false;\n }\n setActiveViewPlaneFace(face.id);\n if (autoZoomStateRef.current.attached !== false) {\n return runAutoZoom(\"viewport\", {\n viewDirection: face.direction,\n viewUp: face.up,\n durationMs: VIEW_PLANE_TRANSITION_MS\n });\n }\n return transitionCameraToViewPreset(runtimeRef.current, face);\n }, [runAutoZoom]);\n\n const activateDefaultViewPlane = useCallback(() => {\n const runtime = runtimeRef.current;\n if (!runtime) {\n return false;\n }\n setActiveViewPlaneFace(\"\");\n return runAutoZoom(\"reset\", {\n force: true,\n viewDirection: DEFAULT_VIEW_DIRECTION,\n viewUp: WORLD_UP\n });\n }, [runAutoZoom]);\n\n useImperativeHandle(ref, () => ({\n async captureScreenshot({ filename = \"implicit-cad-screenshot.png\", mode = \"download\" } = {}) {\n const runtime = runtimeRef.current;\n const canvas = runtime?.renderer?.domElement;\n if (!canvas) {\n throw new Error(\"Implicit CAD Viewer not ready\");\n }\n runtime.requestRender?.({ immediate: true });\n const blobPromise = canvasBlob(canvas, viewportCropForCanvas(runtime, frameInsetsRef.current));\n if (mode === \"clipboard\") {\n return await copyImageBlobToClipboard(blobPromise);\n }\n const blob = await blobPromise;\n return triggerBlobDownload(blob, { filename });\n },\n getPerspective() {\n return perspectiveSnapshot(runtimeRef.current, latestModelKeyRef.current);\n },\n setPerspective(nextPerspective) {\n return applyPerspectiveSnapshot(runtimeRef.current, nextPerspective, latestModelKeyRef.current);\n },\n focusViewPreset(faceId) {\n return activateViewPlaneFace(faceId);\n }\n }), [activateViewPlaneFace]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime?.controls) {\n return;\n }\n runtime.orbitControlsLastTimestamp = 0;\n runtime.previewOrbitEnabled = !!previewMode;\n runtime.controls.autoRotate = !!previewMode;\n runtime.controls.autoRotateSpeed = PREVIEW_AUTO_ROTATE_SPEED;\n updateImplicitThemeUniforms(runtime, model, themeSettings);\n updateImplicitGraphicsUniforms(runtime, model);\n if (previewMode) {\n runtime.beginInteraction?.();\n } else {\n runtime.scheduleIdleQuality?.();\n }\n runtime.requestRender?.();\n }, [previewMode]);\n\n useEffect(() => {\n const runtime = runtimeRef.current;\n if (!runtime || !model) {\n return;\n }\n runtime.dynamicRenderActive = dynamicRenderActiveRef.current;\n let nextShaderKey = \"\";\n try {\n nextShaderKey = implicitCadModelShaderKey(model);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n setRenderError(message);\n onViewerAlertChange?.({\n severity: \"error\",\n compact: true,\n title: \"Implicit CAD shader failed\",\n message\n });\n return;\n }\n if (runtime.shaderScene && runtime.shaderScene.shaderKey === nextShaderKey) {\n runtime.model = model;\n updateImplicitCadModelUniforms(THREE, runtime.shaderScene.material, model);\n runtime.updateCameraFraming?.();\n updateImplicitThemeUniforms(runtime, model, themeSettings);\n updateImplicitGraphicsUniforms(runtime, model);\n maybeAutoZoomForModel(model);\n refineImplicitFit(model);\n runtime.requestRender?.();\n return;\n }\n\n let nextShaderScene = null;\n try {\n nextShaderScene = createImplicitCadFullscreenScene(THREE, model);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n setRenderError(message);\n onViewerAlertChange?.({\n severity: \"error\",\n compact: true,\n title: \"Implicit CAD shader failed\",\n message\n });\n return;\n }\n\n const previousShaderScene = runtime.shaderScene;\n runtime.shaderScene = nextShaderScene;\n runtime.model = model;\n armImplicitShaderCompile(runtime);\n setRenderError(\"\");\n onViewerAlertChange?.(null);\n updateImplicitThemeUniforms(runtime, model, themeSettings);\n updateImplicitGraphicsUniforms(runtime, model);\n runtime.updateCameraFraming?.();\n maybeAutoZoomForModel(model);\n refineImplicitFit(model);\n runtime.requestRender?.();\n previousShaderScene?.dispose?.();\n }, [maybeAutoZoomForModel, model, normalizedGraphicsSettings, onViewerAlertChange, refineImplicitFit, themeSettings]);\n\n useEffect(() => {\n updateImplicitThemeUniforms(runtimeRef.current, model, themeSettings);\n runtimeRef.current?.requestRender?.();\n }, [model, themeSettings]);\n\n useEffect(() => {\n graphicsSettingsRef.current = normalizedGraphicsSettings;\n const runtime = runtimeRef.current;\n if (!runtime) {\n return;\n }\n runtime.graphicsSettings = normalizedGraphicsSettings;\n runtime.dynamicRenderActive = dynamicRenderActiveRef.current;\n updateImplicitThemeUniforms(runtime, model, themeSettings);\n updateImplicitGraphicsUniforms(runtime, model);\n runtime.setPixelRatioCap?.(implicitGraphicsRenderResolutionScale(\n normalizedGraphicsSettings,\n { interaction: previewModeRef.current }\n ));\n runtime.requestRender?.();\n }, [model, normalizedGraphicsSettings, themeSettings]);\n\n useEffect(() => {\n if (!mountRef.current || !model) {\n return undefined;\n }\n\n let disposed = false;\n let frameId = 0;\n let idleTimerId = 0;\n const mount = mountRef.current;\n const renderer = new THREE.WebGLRenderer({\n antialias: true,\n alpha: true,\n preserveDrawingBuffer: true\n });\n renderer.setPixelRatio(Math.min(\n window.devicePixelRatio || 1,\n graphicsSettingsRef.current.resolutionScale\n ));\n renderer.setSize(mount.clientWidth || 800, mount.clientHeight || 640, false);\n renderer.domElement.className = \"h-full w-full touch-none\";\n mount.innerHTML = \"\";\n mount.appendChild(renderer.domElement);\n\n let shaderScene = null;\n let screenCamera = null;\n let camera = null;\n let controls = null;\n const getOrbitControlsPixelRatioBucket = () => Math.max((window.devicePixelRatio || 1) | 0, 1);\n const initialWheelPixelRatioBucket = getOrbitControlsPixelRatioBucket();\n const getWheelZoomSpeed = (baseZoomSpeed) => (\n baseZoomSpeed * (getOrbitControlsPixelRatioBucket() / initialWheelPixelRatioBucket)\n );\n const keyboardOrbitState = {\n pressedKeys: new Set(),\n directionCounts: {\n left: 0,\n right: 0,\n up: 0,\n down: 0\n },\n lastFrameTime: 0\n };\n try {\n shaderScene = createImplicitCadFullscreenScene(THREE, model);\n screenCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);\n camera = new THREE.PerspectiveCamera(DEFAULT_FOV_DEG, 1, 0.01, 2000);\n camera.up.set(...WORLD_UP);\n controls = new OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n controls.rotateSpeed = 1;\n controls.panSpeed = 1.35;\n controls.zoomSpeed = DEFAULT_ZOOM_SPEED;\n if (\"zoomToCursor\" in controls) {\n controls.zoomToCursor = true;\n }\n setRenderError(\"\");\n onViewerAlertChange?.(null);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n setRenderError(message);\n onViewerAlertChange?.({\n severity: \"error\",\n compact: true,\n title: \"Implicit CAD shader failed\",\n message\n });\n }\n\n const runtime = {\n renderer,\n shaderScene,\n screenCamera,\n camera,\n controls,\n cameraTransition: null,\n renderQueued: false,\n orbitControlsLastTimestamp: 0,\n keyboardOrbitState,\n graphicsSettings: graphicsSettingsRef.current,\n dynamicRenderActive: dynamicRenderActiveRef.current,\n previewOrbitEnabled: !!previewMode,\n model,\n shaderSceneReady: false,\n requestRender,\n beginInteraction,\n scheduleIdleQuality,\n setPixelRatioCap,\n updateCameraFraming,\n emitPerspectiveChange\n };\n runtimeRef.current = runtime;\n\n function setPixelRatioCap(cap) {\n renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, cap));\n renderer.setSize(mount.clientWidth || 800, mount.clientHeight || 640, false);\n }\n\n function updateCameraFraming() {\n if (!runtime.camera || !runtime.controls) {\n return;\n }\n const activeModel = runtime.model || model;\n const metrics = getViewportFrameMetrics(runtime, frameInsetsRef.current);\n runtime.camera.aspect = metrics.width / metrics.height;\n runtime.camera.near = Math.max(activeModel.radius / 1200, 0.01);\n runtime.camera.far = Math.max(activeModel.radius * 600, 2000);\n runtime.camera.updateProjectionMatrix();\n applyCameraFrameInsets(runtime, frameInsetsRef.current, { updateProjection: false });\n runtime.controls.minDistance = Math.max(activeModel.radius / 2200, 0.02);\n runtime.controls.maxDistance = Math.max(activeModel.radius * 140, 50);\n }\n\n function requestRender(options = {}) {\n if (disposed) {\n return;\n }\n if (options.immediate) {\n renderFrame(performance.now());\n return;\n }\n if (runtime.renderQueued) {\n return;\n }\n runtime.renderQueued = true;\n frameId = window.requestAnimationFrame(renderFrame);\n }\n\n function beginInteraction() {\n if (idleTimerId) {\n window.clearTimeout(idleTimerId);\n idleTimerId = 0;\n }\n setPixelRatioCap(implicitGraphicsRenderResolutionScale(\n graphicsSettingsRef.current,\n { interaction: true }\n ));\n requestRender();\n }\n\n function scheduleIdleQuality() {\n if (idleTimerId) {\n window.clearTimeout(idleTimerId);\n }\n idleTimerId = window.setTimeout(() => {\n idleTimerId = 0;\n controls.enableDamping = true;\n controls.dampingFactor = DEFAULT_DAMPING_FACTOR;\n controls.zoomSpeed = DEFAULT_ZOOM_SPEED;\n setPixelRatioCap(implicitGraphicsRenderResolutionScale(\n graphicsSettingsRef.current,\n { interaction: previewModeRef.current }\n ));\n requestRender();\n }, INTERACTION_IDLE_DELAY_MS);\n }\n\n function renderFrame(timestamp) {\n if (disposed) {\n return;\n }\n runtime.renderQueued = false;\n const transitionActive = stepCameraTransition(runtime, timestamp);\n const keyboardOrbitMoved = stepKeyboardOrbit(runtime, timestamp);\n const controlsActive = updateOrbitControls(controls, timestamp, runtime);\n if (keyboardOrbitMoved) {\n emitPerspectiveChange();\n }\n if (runtime.shaderScene && runtime.shaderSceneReady !== false && runtime.camera && runtime.screenCamera) {\n const canvas = renderer.domElement;\n updateImplicitCadMaterialUniforms(\n runtime.shaderScene.material,\n runtime.camera,\n canvas.width || canvas.clientWidth || 1,\n canvas.height || canvas.clientHeight || 1\n );\n renderer.render(runtime.shaderScene.scene, runtime.screenCamera);\n }\n if (!runtime.previewOrbitEnabled) {\n const nextActiveFace = getActiveViewPlaneFaceId(runtime);\n setActiveViewPlaneFace((current) => current === nextActiveFace ? current : nextActiveFace);\n // The camera is static while animation only advances geometry uniforms;\n // bail out of the state update unless the orientation actually changed so\n // playback does not trigger a React re-render every frame.\n const nextOrientation = readViewPlaneOrientation(runtime);\n setViewPlaneOrientation((current) => (\n viewPlaneOrientationsEqual(current, nextOrientation) ? current : nextOrientation\n ));\n }\n if (transitionActive || keyboardOrbitMoved || controlsActive || controls?.autoRotate) {\n requestRender();\n }\n }\n\n function onResize() {\n if (disposed) {\n return;\n }\n setPixelRatioCap(implicitGraphicsRenderResolutionScale(\n graphicsSettingsRef.current,\n { interaction: previewModeRef.current }\n ));\n updateCameraFraming();\n if (autoZoomStateRef.current.attached !== false) {\n runAutoZoomRef.current?.(\"resize\", { animate: false });\n }\n requestRender();\n }\n\n const handleControlsStart = () => {\n runtime.cameraTransition = null;\n setAutoZoomAttachedRef.current(false);\n beginInteraction();\n };\n const handleControlsChange = () => {\n emitPerspectiveChange();\n requestRender();\n };\n const handleControlsEnd = () => {\n scheduleIdleQuality();\n };\n const handleWheel = (event) => {\n runtime.cameraTransition = null;\n setAutoZoomAttachedRef.current(false);\n controls.enableDamping = false;\n controls.zoomSpeed = getWheelZoomSpeed(\n isTrackpadLikeWheelEvent(event) ? TRACKPAD_PINCH_ZOOM_SPEED : ACCELERATED_WHEEL_ZOOM_SPEED\n );\n beginInteraction();\n };\n const handleKeyDown = (event) => {\n if (\n previewModeRef.current ||\n event.defaultPrevented ||\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n isEditableTarget(event.target)\n ) {\n return;\n }\n\n const command = getKeyboardOrbitCommand(event);\n if (!command) {\n return;\n }\n if (keyboardOrbitState.pressedKeys.has(command.keyId)) {\n event.preventDefault();\n return;\n }\n\n keyboardOrbitState.pressedKeys.add(command.keyId);\n keyboardOrbitState.directionCounts[command.direction] += 1;\n keyboardOrbitState.lastFrameTime = 0;\n runtime.cameraTransition = null;\n setAutoZoomAttachedRef.current(false);\n beginInteraction();\n applyOrbitDelta(\n runtime,\n (command.direction === \"right\" ? 1 : command.direction === \"left\" ? -1 : 0) * KEYBOARD_ORBIT_NUDGE_RAD,\n (command.direction === \"down\" ? 1 : command.direction === \"up\" ? -1 : 0) * KEYBOARD_ORBIT_NUDGE_RAD\n );\n emitPerspectiveChange();\n requestRender();\n event.preventDefault();\n };\n const handleKeyUp = (event) => {\n const command = getKeyboardOrbitCommand(event);\n if (!command) {\n return;\n }\n if (!keyboardOrbitState.pressedKeys.delete(command.keyId)) {\n return;\n }\n\n keyboardOrbitState.directionCounts[command.direction] = Math.max(\n 0,\n keyboardOrbitState.directionCounts[command.direction] - 1\n );\n const axes = getKeyboardOrbitAxes(keyboardOrbitState);\n if (!axes.azimuth && !axes.polar) {\n keyboardOrbitState.lastFrameTime = 0;\n scheduleIdleQuality();\n }\n event.preventDefault();\n };\n const clearKeyboardOrbit = () => {\n if (!keyboardOrbitState.pressedKeys.size) {\n return;\n }\n clearKeyboardOrbitState(keyboardOrbitState);\n scheduleIdleQuality();\n };\n const handleVisibilityChange = () => {\n if (document.visibilityState !== \"visible\") {\n clearKeyboardOrbit();\n }\n };\n\n const resizeObserver = typeof ResizeObserver === \"function\"\n ? new ResizeObserver(onResize)\n : null;\n resizeObserver?.observe(mount);\n window.addEventListener(\"resize\", onResize);\n controls?.addEventListener(\"start\", handleControlsStart);\n controls?.addEventListener(\"change\", handleControlsChange);\n controls?.addEventListener(\"end\", handleControlsEnd);\n renderer.domElement.addEventListener(\"wheel\", handleWheel, { passive: true, capture: true });\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n window.addEventListener(\"blur\", clearKeyboardOrbit);\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n\n updateImplicitThemeUniforms(runtime, model, themeSettings);\n updateImplicitGraphicsUniforms(runtime, model);\n updateCameraFraming();\n armImplicitShaderCompile(runtime);\n const initialPerspective = perspectiveRef?.current || perspective;\n if (applyPerspectiveSnapshot(runtime, initialPerspective, modelKey)) {\n setAutoZoomAttachedRef.current(false);\n autoZoomStateRef.current.lastFitKey = autoZoomBoundsKey(model);\n } else {\n runAutoZoomRef.current?.(\"mount\", { animate: false, force: true });\n }\n refineImplicitFitRef.current?.(model);\n if (controls) {\n runtime.orbitControlsLastTimestamp = 0;\n controls.autoRotate = !!previewMode;\n controls.autoRotateSpeed = PREVIEW_AUTO_ROTATE_SPEED;\n }\n requestRender();\n\n return () => {\n disposed = true;\n window.cancelAnimationFrame(frameId);\n if (idleTimerId) {\n window.clearTimeout(idleTimerId);\n }\n resizeObserver?.disconnect();\n window.removeEventListener(\"resize\", onResize);\n controls?.removeEventListener(\"start\", handleControlsStart);\n controls?.removeEventListener(\"change\", handleControlsChange);\n controls?.removeEventListener(\"end\", handleControlsEnd);\n renderer.domElement.removeEventListener(\"wheel\", handleWheel, { passive: true, capture: true });\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n window.removeEventListener(\"blur\", clearKeyboardOrbit);\n document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n controls?.dispose?.();\n runtime.shaderScene?.dispose?.();\n renderer.dispose();\n renderer.domElement.remove();\n if (runtimeRef.current === runtime) {\n runtimeRef.current = null;\n }\n };\n }, [\n emitPerspectiveChange,\n modelKey,\n onViewerAlertChange,\n perspective,\n perspectiveRef,\n Boolean(model)\n ]);\n\n return (\n \n
\n {!previewMode && !isLoading && model && autoZoomDetached ? (\n
\n ) : null}\n
\n {isLoading ? (\n
\n
\n Loading implicit CAD\n
\n
\n ) : null}\n {renderError ? (\n
\n ) : null}\n
\n );\n});\n\nexport default ImplicitCadViewer;\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"@/ui/utils\"\n\nconst alertVariants = cva(\n \"relative grid w-full gap-1 rounded-md border px-4 py-3 text-sm shadow-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n warning:\n \"border-chart-5/45 bg-chart-5/10 text-foreground [&>svg]:text-chart-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction AlertTitle({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/ui/utils\";\n\nfunction DropdownMenu({\n ...props\n}) {\n return ;\n}\n\nconst DropdownMenuTrigger = React.forwardRef(function DropdownMenuTrigger({\n ...props\n}, ref) {\n return ;\n});\n\nconst DropdownMenuContent = React.forwardRef(function DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}, ref) {\n return (\n \n \n \n );\n});\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}) {\n return ;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n showChevron = true,\n ...props\n}) {\n return (\n \n {children}\n {showChevron ? : null}\n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}) {\n return (\n \n \n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:hover:bg-input/50\",\n },\n size: {\n default: \"h-9 min-w-9 px-2\",\n sm: \"h-8 min-w-8 px-1.5\",\n lg: \"h-10 min-w-10 px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}) {\n return (\n \n );\n}\n\nexport { Toggle, toggleVariants }\n","import * as React from \"react\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext({\n size: \"default\",\n variant: \"default\",\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}) {\n return (\n \n \n {children}\n \n \n );\n}\n\nfunction ToggleGroupItem({\n className,\n variant,\n size,\n ...props\n}) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n \n );\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","function AssemblyContextMenuItemLabel({ children }) {\n return {children};\n}\n\nexport default function AssemblyContextMenuItems({\n Item,\n Separator,\n itemClassName = \"text-xs\",\n selected = false,\n isolated = false,\n hidden = false,\n actionCount = 1,\n copyReferenceDisabled = false,\n selectDisabled = false,\n showIsolate = true,\n isolateDisabled = false,\n showExitAllIsolate = false,\n exitAllIsolateDisabled = false,\n showHideOther = true,\n hideOtherDisabled = false,\n hideAllDisabled = true,\n hideAllLabel = \"Show all\",\n showVisibility = true,\n visibilityDisabled = false,\n showCameraActions = false,\n resetZoomDisabled = false,\n zoomToFitDisabled = false,\n showHideAll = false,\n showExpandCollapse = false,\n expandSelectedDisabled = true,\n collapseSelectedDisabled = true,\n expandAllDisabled = true,\n collapseAllDisabled = true,\n onCopyReference,\n onSelect,\n onIsolate,\n onExitAllIsolate,\n onHideOther,\n onHideAll,\n onToggleVisibility,\n onResetZoom,\n onZoomToFit,\n onExpandSelected,\n onCollapseSelected,\n onExpandAll,\n onCollapseAll\n}) {\n const selectLabel = selected ? \"Deselect\" : \"Select\";\n const isolateLabel = isolated\n ? \"Exit isolate\"\n : \"Isolate\";\n const visibilityLabel = hidden\n ? \"Reveal\"\n : \"Hide\";\n\n return (\n <>\n - \n Copy Reference\n
\n \n - \n {selectLabel}\n
\n {showIsolate ? (\n - \n {isolateLabel}\n
\n ) : null}\n {showExitAllIsolate ? (\n - \n Exit all isolates\n
\n ) : null}\n {showHideOther || showHideAll || showVisibility ? : null}\n {showHideOther ? (\n - \n Hide others\n
\n ) : null}\n {showHideAll ? (\n - \n {hideAllLabel}\n
\n ) : null}\n {showVisibility ? (\n - \n {visibilityLabel}\n
\n ) : null}\n {showCameraActions ? (\n <>\n \n - \n Reset Zoom\n
\n - \n Zoom To Fit\n
\n >\n ) : null}\n {showExpandCollapse ? (\n <>\n \n - \n Expand\n
\n - \n Collapse\n
\n - \n Expand all\n
\n - \n Collapse all\n
\n >\n ) : null}\n >\n );\n}\n","import { useSyncExternalStore } from \"react\";\n\nconst EMPTY_PARAMETER_VALUES = Object.freeze({});\nconst listeners = new Set();\n\nlet snapshot = {\n elapsedSec: 0,\n parameterValues: EMPTY_PARAMETER_VALUES\n};\n\nfunction notify() {\n for (const listener of listeners) {\n listener();\n }\n}\n\nfunction subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nfunction normalizedElapsedSec(value) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) && numericValue > 0 ? numericValue : 0;\n}\n\nfunction normalizedParameterValues(values) {\n return values && typeof values === \"object\" ? values : EMPTY_PARAMETER_VALUES;\n}\n\nfunction publishSnapshot(nextSnapshot) {\n const next = {\n elapsedSec: normalizedElapsedSec(nextSnapshot.elapsedSec),\n parameterValues: normalizedParameterValues(nextSnapshot.parameterValues)\n };\n if (\n next.elapsedSec === snapshot.elapsedSec &&\n next.parameterValues === snapshot.parameterValues\n ) {\n return;\n }\n snapshot = next;\n notify();\n}\n\nfunction getSnapshot() {\n return snapshot;\n}\n\nfunction getElapsedSnapshot() {\n return snapshot.elapsedSec;\n}\n\nexport function setStepAnimationFrame({ elapsedSec, parameterValues }) {\n publishSnapshot({\n elapsedSec,\n parameterValues: parameterValues === undefined ? snapshot.parameterValues : parameterValues\n });\n}\n\nexport function setStepAnimationElapsed(elapsedSec) {\n publishSnapshot({\n elapsedSec,\n parameterValues: snapshot.parameterValues\n });\n}\n\nexport function resetStepAnimationStore({ elapsedSec = 0, parameterValues = EMPTY_PARAMETER_VALUES } = {}) {\n publishSnapshot({\n elapsedSec,\n parameterValues\n });\n}\n\nexport function getStepAnimationElapsed() {\n return snapshot.elapsedSec;\n}\n\nexport function getStepAnimationParameterValues() {\n return snapshot.parameterValues;\n}\n\nexport function useStepAnimationSnapshot() {\n return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\n\nexport function useStepAnimationElapsed() {\n return useSyncExternalStore(subscribe, getElapsedSnapshot, getElapsedSnapshot);\n}\n","import { VIEWER_PICK_MODE } from \"cadjs/lib/viewer/constants.js\";\n\nexport function viewerPickModeForRenderPane({\n dxfMode = false,\n pathPreviewMode = false,\n topologySelectionPending = false,\n topologySelectionUnavailable = false,\n topologySelectionDeferred = false,\n topologyPickingActive = false,\n viewerMode = \"\",\n assemblyPickingActive = false,\n focusedPartIds = \"\"\n} = {}) {\n if (topologySelectionPending || topologySelectionUnavailable || topologySelectionDeferred) {\n return VIEWER_PICK_MODE.NONE;\n }\n if (dxfMode || pathPreviewMode) {\n return VIEWER_PICK_MODE.NONE;\n }\n if (\n viewerMode === \"assembly\" &&\n !topologyPickingActive &&\n (\n assemblyPickingActive ||\n !String(focusedPartIds || \"\").trim()\n )\n ) {\n return VIEWER_PICK_MODE.ASSEMBLY;\n }\n return VIEWER_PICK_MODE.AUTO;\n}\n","import { useEffect, useMemo } from \"react\";\nimport CadViewer from \"../CadViewer\";\nimport DxfViewer from \"../DxfViewer\";\nimport ImplicitCadViewer from \"../ImplicitCadViewer\";\nimport { CircleAlert, X } from \"lucide-react\";\nimport { Alert, AlertDescription, AlertTitle } from \"../ui/alert\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger\n} from \"../ui/dropdown-menu\";\nimport { ToggleGroup, ToggleGroupItem } from \"../ui/toggle-group\";\nimport AssemblyContextMenuItems from \"./AssemblyContextMenuItems\";\nimport { cn } from \"@/ui/utils\";\nimport { RENDER_FORMAT } from \"@/workbench/constants\";\nimport {\n isMeshRenderFormat,\n isRobotRenderFormat\n} from \"cadjs/lib/fileFormats\";\nimport {\n CAMERA_PROJECTION,\n normalizeCameraProjection\n} from \"cadjs/lib/displaySettings\";\nimport { VIEWER_SCENE_SCALE } from \"cadjs/lib/viewer/sceneScale\";\nimport { VIEWER_PICK_MODE } from \"cadjs/lib/viewer/constants\";\nimport { useStepAnimationSnapshot } from \"@/workbench/stepAnimationStore\";\nimport { viewerPickModeForRenderPane } from \"@/workbench/viewerPickMode\";\n\nconst EMPTY_LIST = Object.freeze([]);\nconst VIEWPORT_ISSUE_META = Object.freeze({\n error: {\n label: \"Error\",\n borderClassName: \"border-destructive/45\",\n iconClassName: \"border-destructive/45 bg-destructive/10 text-destructive dark:text-red-300\",\n labelClassName: \"text-destructive dark:text-red-300\"\n },\n warning: {\n label: \"Warning\",\n borderClassName: \"border-amber-500/45\",\n iconClassName: \"border-amber-500/55 bg-amber-500/10 text-amber-500 dark:text-amber-300\",\n labelClassName: \"text-amber-500 dark:text-amber-300\"\n }\n});\n\nfunction viewportInsetPx(value) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) && numericValue > 0 ? numericValue : 0;\n}\n\nfunction viewportIssueMetaForAlert(alert) {\n return alert?.severity === \"warning\"\n ? VIEWPORT_ISSUE_META.warning\n : VIEWPORT_ISSUE_META.error;\n}\n\nfunction viewerContextMenuAnchorStyle(menu, viewportFrameInsets) {\n if (!menu) {\n return null;\n }\n const margin = 8;\n const viewportWidth = typeof window !== \"undefined\" ? window.innerWidth : 0;\n const viewportHeight = typeof window !== \"undefined\" ? window.innerHeight : 0;\n const minX = viewportInsetPx(viewportFrameInsets?.left) + margin;\n const minY = viewportInsetPx(viewportFrameInsets?.top) + margin;\n const maxX = viewportWidth > 0\n ? Math.max(minX, viewportWidth - viewportInsetPx(viewportFrameInsets?.right) - margin)\n : Number(menu.x) || minX;\n const maxY = viewportHeight > 0\n ? Math.max(minY, viewportHeight - viewportInsetPx(viewportFrameInsets?.bottom) - margin)\n : Number(menu.y) || minY;\n const x = Math.min(Math.max(Number(menu.x) || minX, minX), maxX);\n const y = Math.min(Math.max(Number(menu.y) || minY, minY), maxY);\n return {\n position: \"fixed\",\n left: `${x}px`,\n top: `${y}px`,\n width: \"1px\",\n height: \"1px\"\n };\n}\n\nfunction DxfViewModeControl({\n value,\n threeDimensionalAvailable = false,\n onChange\n}) {\n const normalizedValue = value === \"3d\" && threeDimensionalAvailable ? \"3d\" : \"2d\";\n\n return (\n \n {\n if (!nextValue) {\n return;\n }\n if (nextValue === \"3d\" && !threeDimensionalAvailable) {\n return;\n }\n onChange?.(nextValue);\n }}\n className=\"grid h-7 w-[5.5rem] grid-cols-2\"\n aria-label=\"DXF view mode\"\n >\n \n 2D\n \n \n 3D\n \n \n
\n );\n}\n\nfunction ViewerContextMenu({\n menu,\n positionStyle,\n onClose,\n onCopyReference,\n onSelect,\n onFocus,\n onExitAllIsolate,\n onHideOther,\n onHideAll,\n onHide,\n onReveal,\n onResetZoom,\n onZoomToFit,\n onExpandSelected,\n onCollapseSelected,\n onExpandAll,\n onCollapseAll\n}) {\n if (!menu || !positionStyle) {\n return null;\n }\n\n const itemClassName = \"text-xs\";\n const handleAction = (action) => {\n action?.(menu);\n onClose?.();\n };\n const selected = menu.selected === true;\n const hidden = menu.hidden === true;\n const focused = menu.focused === true;\n\n return (\n {\n if (!nextOpen) {\n onClose?.();\n }\n }}\n >\n \n \n \n {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n {menu.global === true ? (\n <>\n {menu.showShowAll === true ? (\n handleAction(onHideAll)}\n >\n Show all\n \n ) : null}\n {menu.showShowAll === true && menu.showCameraActions !== false ? (\n \n ) : null}\n {menu.showCameraActions !== false ? (\n <>\n handleAction(onResetZoom)}\n >\n Reset Zoom\n \n >\n ) : null}\n {menu.showCameraActions !== false && menu.showExpandCollapse === true ? (\n \n ) : null}\n {menu.showShowAll === true && menu.showCameraActions === false && menu.showExpandCollapse === true ? (\n \n ) : null}\n {menu.showExpandCollapse === true ? (\n <>\n handleAction(onExpandAll)}\n >\n Expand all\n \n handleAction(onCollapseAll)}\n >\n Collapse all\n \n >\n ) : null}\n >\n ) : (\n handleAction(onCopyReference)}\n onSelect={() => handleAction(onSelect)}\n onIsolate={() => handleAction(onFocus)}\n onExitAllIsolate={() => handleAction(onExitAllIsolate)}\n onHideOther={() => handleAction(onHideOther)}\n onHideAll={() => handleAction(onHideAll)}\n onToggleVisibility={() => handleAction(hidden ? onReveal : onHide)}\n onResetZoom={() => handleAction(onResetZoom)}\n onZoomToFit={() => handleAction(onZoomToFit)}\n onExpandSelected={() => handleAction(onExpandSelected)}\n onCollapseSelected={() => handleAction(onCollapseSelected)}\n onExpandAll={() => handleAction(onExpandAll)}\n onCollapseAll={() => handleAction(onCollapseAll)}\n />\n )}\n \n \n );\n}\n\nexport default function CadRenderPane({\n viewerRef,\n renderFormat,\n renderPartsIndividually = false,\n selectedMeshData,\n selectedDxfData,\n selectedDxfMeshData,\n dxfViewMode = \"2d\",\n onDxfViewModeChange,\n selectedImplicitModel,\n implicitDynamicRenderActive = false,\n implicitGraphicsSettings = null,\n selectedKey,\n selectedDxfKey,\n missingFileRef = \"\",\n viewerPerspective,\n viewerPerspectiveRef,\n themeSettings,\n previewMode,\n viewportFrameInsets,\n viewerLoading,\n viewerAlert,\n stepUpdateInProgress,\n referenceSelectionPending = false,\n referenceSelectionUnavailable = false,\n referenceSelectionDeferred = false,\n viewPlaneOffsetRight = 16,\n viewerMode,\n assemblyPickingActive = false,\n assemblyParts,\n hiddenPartIds,\n selectedPartIds,\n hoveredPartId,\n assemblyMates = EMPTY_LIST,\n selectedMateIds = EMPTY_LIST,\n hoveredMateId = \"\",\n hoveredReferenceId,\n selectedReferenceIds,\n selectorRuntime,\n displayEdgeRuntime,\n stepParameters = null,\n pickableFaces,\n pickableEdges,\n pickableVertices,\n focusedPartIds = \"\",\n displaySettings = null,\n onProjectionChange,\n onDisplayModeChange,\n boundsAnimationActive = false,\n drawToolActive,\n drawingTool,\n drawingStrokes,\n handleDrawingStrokesChange,\n handlePerspectiveChange,\n handleModelHoverChange,\n handleModelReferenceActivate,\n handleModelReferenceDoubleActivate,\n handleModelReferenceContext,\n viewerContextMenu = null,\n onViewerContextMenuClose,\n onViewerContextMenuCopyReference,\n onViewerContextMenuSelect,\n onViewerContextMenuFocus,\n onViewerContextMenuExitAllIsolate,\n onViewerContextMenuHideOther,\n onViewerContextMenuHideAll,\n onViewerContextMenuHide,\n onViewerContextMenuReveal,\n onViewerContextMenuResetZoom,\n onViewerContextMenuZoomToFit,\n onViewerContextMenuExpandSelected,\n onViewerContextMenuCollapseSelected,\n onViewerContextMenuExpandAll,\n onViewerContextMenuCollapseAll,\n handleViewerAlertChange,\n handleStepModuleTransformDetectedChange,\n selectionCount,\n copyButtonLabel,\n handleCopySelection,\n handleScreenshotCopy,\n urdfPosePicker = null\n}) {\n const liveStepAnimation = useStepAnimationSnapshot();\n const resolvedStepParameters = useMemo(() => {\n if (!stepParameters?.animationState?.playing) {\n return stepParameters;\n }\n const liveParameterValues = liveStepAnimation?.parameterValues;\n if (!liveParameterValues || typeof liveParameterValues !== \"object\") {\n return stepParameters;\n }\n return {\n ...stepParameters,\n parameterValues: liveParameterValues,\n animationState: {\n ...stepParameters.animationState,\n elapsedSec: liveStepAnimation.elapsedSec\n }\n };\n }, [stepParameters, liveStepAnimation]);\n const viewerAlertIconLabel = \"Viewer error. See the Issues section for details.\";\n const dxfMode = renderFormat === RENDER_FORMAT.DXF;\n const gcodeMode = renderFormat === RENDER_FORMAT.GCODE;\n const urdfMode = isRobotRenderFormat(renderFormat);\n const implicitMode = renderFormat === RENDER_FORMAT.IMPLICIT;\n const meshOnlyMode = isMeshRenderFormat(renderFormat);\n const pathPreviewMode = meshOnlyMode || gcodeMode;\n const dxf3dAvailable = !!selectedDxfMeshData;\n const activeDxfViewMode = dxfViewMode === \"3d\" && dxf3dAvailable ? \"3d\" : \"2d\";\n const dxfMeshPreviewReady = dxfMode && activeDxfViewMode === \"3d\" && dxf3dAvailable;\n const activeMeshData = dxfMeshPreviewReady ? selectedDxfMeshData : selectedMeshData;\n const stepDisplaySettingsActive = renderFormat === RENDER_FORMAT.STEP && !!displaySettings && !dxfMode && !pathPreviewMode;\n const cadProjection = stepDisplaySettingsActive\n ? normalizeCameraProjection(displaySettings.projection)\n : CAMERA_PROJECTION.PERSPECTIVE;\n const activeModelKey = dxfMeshPreviewReady ? (selectedDxfKey || selectedKey) : selectedKey;\n const stepBoundsAnimationActive = Boolean(resolvedStepParameters?.animationState?.playing);\n const cadViewerBoundsAnimationActive = Boolean(boundsAnimationActive || stepBoundsAnimationActive);\n const missingFileLabel = String(missingFileRef || \"\").trim();\n const topologySelectionPending = Boolean(referenceSelectionPending && !dxfMode && !urdfMode && !pathPreviewMode);\n const topologySelectionUnavailable = Boolean(referenceSelectionUnavailable && !dxfMode && !urdfMode && !pathPreviewMode);\n const topologySelectionDeferred = Boolean(referenceSelectionDeferred && activeMeshData && !dxfMode && !urdfMode && !pathPreviewMode);\n const urdfPosePickerActive = Boolean(urdfPosePicker?.active);\n const urdfPosePickerPrompt = \"Select target\";\n const posePickerExitStyle = {\n left: `calc(${Math.max(Number(viewportFrameInsets?.left) || 0, 0)}px + 0.75rem)`,\n top: `calc(${Math.max(Number(viewportFrameInsets?.top) || 0, 0)}px + 0.75rem)`\n };\n const ctaMode = !dxfMode && !pathPreviewMode && drawToolActive\n ? \"screenshot\"\n : !dxfMode && !pathPreviewMode && selectionCount > 0\n ? \"selection\"\n : \"\";\n const dxfViewPlaneHeader = dxfMode ? (\n \n ) : null;\n const bottomOverlayStyle = {\n bottom: \"1rem\"\n };\n const modelViewportOverlayStyle = {\n left: `${viewportInsetPx(viewportFrameInsets?.left)}px`,\n right: `${viewportInsetPx(viewportFrameInsets?.right)}px`,\n top: `${viewportInsetPx(viewportFrameInsets?.top)}px`,\n bottom: `${viewportInsetPx(viewportFrameInsets?.bottom)}px`\n };\n const modelViewportBottomOverlayStyle = {\n left: `${viewportInsetPx(viewportFrameInsets?.left)}px`,\n right: `${viewportInsetPx(viewportFrameInsets?.right)}px`,\n bottom: `calc(${viewportInsetPx(viewportFrameInsets?.bottom)}px + 1rem)`\n };\n const ctaOverlayStyle = {\n ...bottomOverlayStyle,\n left: `calc(${viewportInsetPx(viewportFrameInsets?.left)}px + 1rem)`,\n right: `calc(${viewportInsetPx(viewportFrameInsets?.right)}px + 1rem)`\n };\n const ctaLabel = ctaMode === \"screenshot\" ? \"Copy Screenshot\" : copyButtonLabel;\n const ctaTitle = ctaMode === \"screenshot\" ? \"Copy screenshot to clipboard\" : copyButtonLabel;\n const ctaDisabled = ctaMode === \"screenshot\" ? viewerLoading || !activeMeshData : false;\n const viewportHasRenderableContent = implicitMode\n ? !!selectedImplicitModel\n : dxfMode && !dxfMeshPreviewReady\n ? !!selectedDxfData\n : !!activeMeshData;\n const blockingViewerAlert = viewerAlert && viewerAlert.blocking !== false && (\n viewerAlert.blocking ||\n viewerAlert.severity !== \"warning\" ||\n !viewportHasRenderableContent\n )\n ? viewerAlert\n : null;\n const viewportIssueMeta = viewportIssueMetaForAlert(blockingViewerAlert);\n const viewerContextMenuStyle = useMemo(\n () => viewerContextMenuAnchorStyle(viewerContextMenu, viewportFrameInsets),\n [viewerContextMenu, viewportFrameInsets]\n );\n\n useEffect(() => {\n if (!urdfPosePickerActive || typeof window === \"undefined\" || typeof document === \"undefined\") {\n return undefined;\n }\n const handleEscape = (event) => {\n if (event.defaultPrevented) {\n return;\n }\n if (event.key !== \"Escape\" && event.key !== \"Esc\" && event.code !== \"Escape\") {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n urdfPosePicker?.onCancel?.();\n };\n window.addEventListener(\"keydown\", handleEscape, true);\n document.addEventListener(\"keydown\", handleEscape, true);\n return () => {\n window.removeEventListener(\"keydown\", handleEscape, true);\n document.removeEventListener(\"keydown\", handleEscape, true);\n };\n }, [urdfPosePicker, urdfPosePickerActive]);\n\n return (\n \n {implicitMode ? (\n
\n ) : dxfMode && !dxfMeshPreviewReady ? (\n
\n ) : (\n
\n )}\n {!previewMode ? (\n
\n ) : null}\n {!previewMode && missingFileLabel ? (\n
\n
\n \n File does not exist\n
\n File does not exist\n \n {missingFileLabel}\n \n \n
\n ) : null}\n {!previewMode && blockingViewerAlert ? (\n
\n
\n
\n \n \n
\n
\n {viewportIssueMeta.label}\n \n
\n {viewerAlert.title || viewerAlert.summary || \"Viewer issue\"}\n
\n {viewerAlert.message ? (\n
\n {viewerAlert.message}\n
\n ) : null}\n {viewerAlert.resolution ? (\n
\n {viewerAlert.resolution}\n
\n ) : null}\n
\n
\n
\n ) : null}\n {!previewMode && stepUpdateInProgress ? (\n
\n
\n STEP changed. Updating/regenerating references...\n \n
\n ) : null}\n {!previewMode && !stepUpdateInProgress && topologySelectionPending ? (\n
\n
\n Preparing selectable topology...\n \n
\n ) : null}\n {!previewMode && urdfPosePickerActive ? (\n
\n ) : null}\n {!previewMode && urdfPosePickerActive ? (\n
\n
\n {urdfPosePickerPrompt}\n \n
\n ) : null}\n {!previewMode && ctaMode && !stepUpdateInProgress && !topologySelectionPending && !topologySelectionUnavailable && !topologySelectionDeferred ? (\n
\n \n
\n ) : null}\n
\n );\n}\n","import { Matrix4, ShapeUtils, Vector2, Vector3 } from \"three\";\n\nexport const DEFAULT_DXF_PREVIEW_THICKNESS_MM = 2;\nexport const MIN_DXF_PREVIEW_THICKNESS_MM = 0.2;\nexport const MAX_DXF_PREVIEW_THICKNESS_MM = 25;\nexport const DEFAULT_DXF_BEND_ANGLE_DEG = 0;\nexport const MIN_DXF_BEND_ANGLE_DEG = 0;\nexport const MAX_DXF_BEND_ANGLE_DEG = 180;\nexport const DXF_BEND_DIRECTION = {\n UP: \"up\",\n DOWN: \"down\"\n};\n\nconst POINT_KEY_SCALE = 1000;\nconst ARC_CHORD_TOLERANCE_MM = 0.35;\nconst MIN_ARC_SEGMENTS = 10;\nconst MAX_ARC_SEGMENTS = 160;\nconst BEND_LINE_ELEVATION_MM = 0.04;\nconst GEOMETRY_EPSILON_MM = 1e-3;\nconst BEND_LINE_AXIS_EPSILON_MM = 1e-2;\nconst MIN_BEND_BRIDGE_SEGMENTS = 6;\nconst MAX_BEND_BRIDGE_SEGMENTS = 48;\nconst VISUAL_BEND_INSIDE_RADIUS_RATIO = 0.6;\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction toFiniteNumber(value, fallback = 0) {\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : fallback;\n}\n\nfunction approxEqual(a, b, epsilon = GEOMETRY_EPSILON_MM) {\n return Math.abs(a - b) <= epsilon;\n}\n\nfunction normalizePoint(point) {\n if (!Array.isArray(point) || point.length < 2) {\n return [0, 0];\n }\n return [toFiniteNumber(point[0]), toFiniteNumber(point[1])];\n}\n\nfunction pointsEqual(a, b, epsilon = GEOMETRY_EPSILON_MM) {\n return Math.abs(a[0] - b[0]) <= epsilon && Math.abs(a[1] - b[1]) <= epsilon;\n}\n\nfunction pointKey(point) {\n return `${Math.round(point[0] * POINT_KEY_SCALE)}:${Math.round(point[1] * POINT_KEY_SCALE)}`;\n}\n\nfunction reversePoints(points) {\n return [...points].reverse();\n}\n\nfunction removeDuplicateClosure(points) {\n if (points.length > 1 && pointsEqual(points[0], points[points.length - 1])) {\n return points.slice(0, -1);\n }\n return points;\n}\n\nfunction removeConsecutiveDuplicates(points) {\n const deduped = [];\n for (const point of points) {\n if (deduped.length && pointsEqual(deduped[deduped.length - 1], point)) {\n continue;\n }\n deduped.push(point);\n }\n return removeDuplicateClosure(deduped);\n}\n\nfunction sampleCountForSweep(radius, sweepRadians) {\n const safeRadius = Math.max(Math.abs(radius), 0.01);\n const chordRatio = clamp(1 - (ARC_CHORD_TOLERANCE_MM / safeRadius), -1, 1);\n const maxSegmentAngle = chordRatio <= -1\n ? Math.PI / 8\n : clamp(2 * Math.acos(chordRatio), Math.PI / 64, Math.PI / 10);\n return clamp(\n Math.ceil(Math.max(Math.abs(sweepRadians), Math.PI / 36) / maxSegmentAngle),\n MIN_ARC_SEGMENTS,\n MAX_ARC_SEGMENTS\n );\n}\n\nfunction sampleArcPoints(center, radius, startAngleDeg, sweepAngleDeg) {\n const startAngleRad = (toFiniteNumber(startAngleDeg) * Math.PI) / 180;\n const sweepAngleRad = (toFiniteNumber(sweepAngleDeg) * Math.PI) / 180;\n const segments = sampleCountForSweep(radius, sweepAngleRad);\n const points = [];\n for (let index = 0; index <= segments; index += 1) {\n const t = index / segments;\n const angle = startAngleRad + sweepAngleRad * t;\n points.push([\n center[0] + radius * Math.cos(angle),\n center[1] + radius * Math.sin(angle)\n ]);\n }\n return points;\n}\n\nfunction sampleCirclePoints(center, radius) {\n const points = sampleArcPoints(center, radius, 0, 360);\n return removeDuplicateClosure(points);\n}\n\nfunction polygonSignedArea(points) {\n if (!Array.isArray(points) || points.length < 3) {\n return 0;\n }\n let area = 0;\n for (let index = 0; index < points.length; index += 1) {\n const current = points[index];\n const next = points[(index + 1) % points.length];\n area += current[0] * next[1] - next[0] * current[1];\n }\n return area / 2;\n}\n\nfunction normalizeLoopWinding(points, { clockwise }) {\n const deduped = removeConsecutiveDuplicates(points);\n if (deduped.length < 3) {\n return deduped;\n }\n const vectors = deduped.map(([x, y]) => new Vector2(x, y));\n const isClockwise = ShapeUtils.isClockWise(vectors);\n if ((clockwise && !isClockwise) || (!clockwise && isClockwise)) {\n return reversePoints(deduped);\n }\n return deduped;\n}\n\nfunction readGeometryRecords(dxfData) {\n const geometry = dxfData?.geometry || {};\n const lineRecords = Array.isArray(geometry.lines) ? geometry.lines : [];\n const arcRecords = Array.isArray(geometry.arcs) ? geometry.arcs : [];\n const circleRecords = Array.isArray(geometry.circles) ? geometry.circles : [];\n\n const cutPrimitives = [];\n const cutCircleLoops = [];\n const bendLines = [];\n\n for (const record of lineRecords) {\n const start = normalizePoint(record?.start);\n const end = normalizePoint(record?.end);\n const kind = String(record?.kind || \"\").trim().toLowerCase();\n if (kind === \"bend\") {\n bendLines.push([start, end]);\n continue;\n }\n if (pointsEqual(start, end)) {\n continue;\n }\n cutPrimitives.push({ points: [start, end] });\n }\n\n for (const record of arcRecords) {\n const center = normalizePoint(record?.center);\n const radius = Math.max(toFiniteNumber(record?.radius), 0);\n if (radius <= 0) {\n continue;\n }\n const kind = String(record?.kind || \"\").trim().toLowerCase();\n const points = sampleArcPoints(\n center,\n radius,\n toFiniteNumber(record?.startAngleDeg),\n toFiniteNumber(record?.sweepAngleDeg)\n );\n if (kind === \"bend\") {\n bendLines.push([points[0], points[points.length - 1]]);\n continue;\n }\n cutPrimitives.push({ points });\n }\n\n for (const record of circleRecords) {\n const center = normalizePoint(record?.center);\n const radius = Math.max(toFiniteNumber(record?.radius), 0);\n if (radius <= 0) {\n continue;\n }\n const kind = String(record?.kind || \"\").trim().toLowerCase();\n if (kind === \"bend\") {\n continue;\n }\n cutCircleLoops.push(sampleCirclePoints(center, radius));\n }\n\n return {\n cutPrimitives,\n cutCircleLoops,\n bendLines\n };\n}\n\nfunction buildCutLoops(dxfData) {\n const { cutPrimitives, cutCircleLoops, bendLines } = readGeometryRecords(dxfData);\n if (!cutPrimitives.length && !cutCircleLoops.length) {\n throw new Error(\"DXF preview requires cut-layer contour geometry\");\n }\n\n const adjacency = new Map();\n const visited = new Set();\n const loops = [];\n\n const addAdjacency = (key, value) => {\n const existing = adjacency.get(key);\n if (existing) {\n existing.push(value);\n return;\n }\n adjacency.set(key, [value]);\n };\n\n cutPrimitives.forEach((primitive, index) => {\n const startKey = pointKey(primitive.points[0]);\n const endKey = pointKey(primitive.points[primitive.points.length - 1]);\n addAdjacency(startKey, { index, reverse: false });\n addAdjacency(endKey, { index, reverse: true });\n });\n\n for (let primitiveIndex = 0; primitiveIndex < cutPrimitives.length; primitiveIndex += 1) {\n if (visited.has(primitiveIndex)) {\n continue;\n }\n visited.add(primitiveIndex);\n let loopPoints = [...cutPrimitives[primitiveIndex].points];\n const startKey = pointKey(loopPoints[0]);\n let currentKey = pointKey(loopPoints[loopPoints.length - 1]);\n let guard = 0;\n\n while (currentKey !== startKey) {\n const nextOptions = (adjacency.get(currentKey) || []).filter(({ index }) => !visited.has(index));\n if (!nextOptions.length) {\n throw new Error(\"DXF preview requires closed cut contours\");\n }\n\n const nextOption = nextOptions[0];\n visited.add(nextOption.index);\n const primitivePoints = cutPrimitives[nextOption.index].points;\n const orientedPoints = nextOption.reverse ? reversePoints(primitivePoints) : primitivePoints;\n loopPoints = loopPoints.concat(orientedPoints.slice(1));\n currentKey = pointKey(orientedPoints[orientedPoints.length - 1]);\n guard += 1;\n if (guard > cutPrimitives.length + 4) {\n throw new Error(\"DXF preview contour walk did not terminate\");\n }\n }\n\n loopPoints = removeConsecutiveDuplicates(loopPoints);\n if (loopPoints.length >= 3) {\n loops.push(loopPoints);\n }\n }\n\n for (const circleLoop of cutCircleLoops) {\n if (circleLoop.length >= 3) {\n loops.push(circleLoop);\n }\n }\n\n if (!loops.length) {\n throw new Error(\"DXF preview could not resolve any closed cut contours\");\n }\n\n return {\n loops,\n bendLines\n };\n}\n\nfunction normalizeBendLine(line, index) {\n const start = normalizePoint(line?.[0]);\n const end = normalizePoint(line?.[1]);\n const ordered = end[1] < start[1] ? [end, start] : [start, end];\n return {\n id: `bend-${index + 1}`,\n index,\n start: ordered[0],\n end: ordered[1],\n x: (ordered[0][0] + ordered[1][0]) / 2,\n yMin: Math.min(ordered[0][1], ordered[1][1]),\n yMax: Math.max(ordered[0][1], ordered[1][1])\n };\n}\n\nfunction sortBendLines(rawBendLines) {\n return rawBendLines\n .map((line, index) => normalizeBendLine(line, index))\n .sort((a, b) => {\n const xDiff = a.x - b.x;\n if (Math.abs(xDiff) > GEOMETRY_EPSILON_MM) {\n return xDiff;\n }\n return a.yMin - b.yMin;\n })\n .map((line, index) => ({\n ...line,\n id: `bend-${index + 1}`,\n index\n }));\n}\n\nexport function extractOrderedDxfBendLines(dxfData) {\n const { bendLines } = readGeometryRecords(dxfData);\n return sortBendLines(bendLines);\n}\n\nfunction validateBendLines(bendLines) {\n for (const bendLine of bendLines) {\n if (Math.abs(bendLine.start[0] - bendLine.end[0]) > BEND_LINE_AXIS_EPSILON_MM) {\n throw new Error(\"DXF 3D bend preview currently requires vertical bend lines\");\n }\n if (Math.abs(bendLine.end[1] - bendLine.start[1]) <= GEOMETRY_EPSILON_MM) {\n throw new Error(\"DXF bend line length is too small for preview bending\");\n }\n }\n}\n\nexport function normalizeDxfBendDirection(value) {\n const normalized = String(value || \"\").trim().toLowerCase();\n return normalized === DXF_BEND_DIRECTION.DOWN ? DXF_BEND_DIRECTION.DOWN : DXF_BEND_DIRECTION.UP;\n}\n\nexport function normalizeDxfBendAngleDeg(value, fallback = DEFAULT_DXF_BEND_ANGLE_DEG) {\n const safeFallback = clamp(\n toFiniteNumber(fallback, DEFAULT_DXF_BEND_ANGLE_DEG),\n MIN_DXF_BEND_ANGLE_DEG,\n MAX_DXF_BEND_ANGLE_DEG\n );\n const numericValue = toFiniteNumber(value, safeFallback);\n return clamp(numericValue, MIN_DXF_BEND_ANGLE_DEG, MAX_DXF_BEND_ANGLE_DEG);\n}\n\nexport function normalizeDxfPreviewThicknessMm(value, fallback = DEFAULT_DXF_PREVIEW_THICKNESS_MM) {\n const safeFallback = clamp(\n toFiniteNumber(fallback, DEFAULT_DXF_PREVIEW_THICKNESS_MM),\n MIN_DXF_PREVIEW_THICKNESS_MM,\n MAX_DXF_PREVIEW_THICKNESS_MM\n );\n const numericValue = toFiniteNumber(value, safeFallback);\n if (numericValue <= 0) {\n return safeFallback;\n }\n return clamp(numericValue, MIN_DXF_PREVIEW_THICKNESS_MM, MAX_DXF_PREVIEW_THICKNESS_MM);\n}\n\nexport function normalizeDxfBendSettings(dxfData, value) {\n const bendLines = extractOrderedDxfBendLines(dxfData);\n const source = Array.isArray(value) ? value : [];\n return bendLines.map((bendLine, index) => {\n const current = source[index] && typeof source[index] === \"object\" ? source[index] : {};\n return {\n id: bendLine.id,\n direction: normalizeDxfBendDirection(current.direction),\n angleDeg: normalizeDxfBendAngleDeg(current.angleDeg, DEFAULT_DXF_BEND_ANGLE_DEG)\n };\n });\n}\n\nfunction clipEdgeAgainstMinX(start, end, minX) {\n const deltaX = end[0] - start[0];\n if (Math.abs(deltaX) <= GEOMETRY_EPSILON_MM) {\n return [minX, start[1]];\n }\n const t = (minX - start[0]) / deltaX;\n return [minX, start[1] + (end[1] - start[1]) * t];\n}\n\nfunction clipEdgeAgainstMaxX(start, end, maxX) {\n const deltaX = end[0] - start[0];\n if (Math.abs(deltaX) <= GEOMETRY_EPSILON_MM) {\n return [maxX, start[1]];\n }\n const t = (maxX - start[0]) / deltaX;\n return [maxX, start[1] + (end[1] - start[1]) * t];\n}\n\nfunction clipLoopAgainstMinX(loop, minX) {\n if (!loop.length) {\n return [];\n }\n const output = [];\n for (let index = 0; index < loop.length; index += 1) {\n const current = loop[index];\n const previous = loop[(index + loop.length - 1) % loop.length];\n const currentInside = current[0] >= minX - GEOMETRY_EPSILON_MM;\n const previousInside = previous[0] >= minX - GEOMETRY_EPSILON_MM;\n if (currentInside) {\n if (!previousInside) {\n output.push(clipEdgeAgainstMinX(previous, current, minX));\n }\n output.push(current);\n } else if (previousInside) {\n output.push(clipEdgeAgainstMinX(previous, current, minX));\n }\n }\n return removeConsecutiveDuplicates(output);\n}\n\nfunction clipLoopAgainstMaxX(loop, maxX) {\n if (!loop.length) {\n return [];\n }\n const output = [];\n for (let index = 0; index < loop.length; index += 1) {\n const current = loop[index];\n const previous = loop[(index + loop.length - 1) % loop.length];\n const currentInside = current[0] <= maxX + GEOMETRY_EPSILON_MM;\n const previousInside = previous[0] <= maxX + GEOMETRY_EPSILON_MM;\n if (currentInside) {\n if (!previousInside) {\n output.push(clipEdgeAgainstMaxX(previous, current, maxX));\n }\n output.push(current);\n } else if (previousInside) {\n output.push(clipEdgeAgainstMaxX(previous, current, maxX));\n }\n }\n return removeConsecutiveDuplicates(output);\n}\n\nfunction clipLoopToSlab(loop, leftX, rightX) {\n return clipLoopAgainstMaxX(clipLoopAgainstMinX(loop, leftX), rightX);\n}\n\nfunction loopBounds(loop) {\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n let maxX = Number.NEGATIVE_INFINITY;\n let maxY = Number.NEGATIVE_INFINITY;\n for (const point of loop) {\n minX = Math.min(minX, point[0]);\n minY = Math.min(minY, point[1]);\n maxX = Math.max(maxX, point[0]);\n maxY = Math.max(maxY, point[1]);\n }\n return {\n minX,\n minY,\n maxX,\n maxY\n };\n}\n\nfunction pointOnSegment(point, start, end) {\n const cross = ((point[1] - start[1]) * (end[0] - start[0])) - ((point[0] - start[0]) * (end[1] - start[1]));\n if (Math.abs(cross) > GEOMETRY_EPSILON_MM) {\n return false;\n }\n const dot = ((point[0] - start[0]) * (end[0] - start[0])) + ((point[1] - start[1]) * (end[1] - start[1]));\n if (dot < -GEOMETRY_EPSILON_MM) {\n return false;\n }\n const squaredLength = ((end[0] - start[0]) ** 2) + ((end[1] - start[1]) ** 2);\n return dot <= squaredLength + GEOMETRY_EPSILON_MM;\n}\n\nfunction pointInLoop(point, loop) {\n let inside = false;\n for (let index = 0, previousIndex = loop.length - 1; index < loop.length; previousIndex = index, index += 1) {\n const current = loop[index];\n const previous = loop[previousIndex];\n if (pointOnSegment(point, previous, current)) {\n return true;\n }\n const crossesRay = (current[1] > point[1]) !== (previous[1] > point[1]);\n if (!crossesRay) {\n continue;\n }\n const xIntersection = previous[0] + ((point[1] - previous[1]) * (current[0] - previous[0])) / (current[1] - previous[1]);\n if (point[0] < xIntersection) {\n inside = !inside;\n }\n }\n return inside;\n}\n\nfunction loopContainmentNodes(sortedLoops) {\n const nodes = sortedLoops.map((loop, index) => ({\n loop,\n index,\n parentIndex: -1,\n depth: -1,\n area: Math.abs(polygonSignedArea(loop))\n }));\n\n for (let index = 0; index < nodes.length; index += 1) {\n const node = nodes[index];\n const representativePoint = node.loop[0];\n let parentIndex = -1;\n let parentArea = Number.POSITIVE_INFINITY;\n for (let candidateIndex = 0; candidateIndex < nodes.length; candidateIndex += 1) {\n if (candidateIndex === index) {\n continue;\n }\n const candidate = nodes[candidateIndex];\n if (candidate.area <= node.area + GEOMETRY_EPSILON_MM || candidate.area >= parentArea) {\n continue;\n }\n if (pointInLoop(representativePoint, candidate.loop)) {\n parentIndex = candidateIndex;\n parentArea = candidate.area;\n }\n }\n node.parentIndex = parentIndex;\n }\n\n const resolveDepth = (index) => {\n const node = nodes[index];\n if (node.depth >= 0) {\n return node.depth;\n }\n node.depth = node.parentIndex < 0 ? 0 : resolveDepth(node.parentIndex) + 1;\n return node.depth;\n };\n for (let index = 0; index < nodes.length; index += 1) {\n resolveDepth(index);\n }\n return nodes;\n}\n\nfunction buildFlatStripDefinitions(sortedLoops) {\n const nodes = loopContainmentNodes(sortedLoops);\n const strips = [];\n for (const node of nodes) {\n if (node.depth % 2 !== 0) {\n continue;\n }\n const outerLoop = normalizeLoopWinding(node.loop, { clockwise: true });\n const bounds = loopBounds(outerLoop);\n const holeLoops = nodes\n .filter((candidate) => candidate.parentIndex === node.index && candidate.depth % 2 === 1)\n .map((candidate) => normalizeLoopWinding(candidate.loop, { clockwise: false }));\n strips.push({\n index: strips.length,\n transformIndex: 0,\n leftX: bounds.minX,\n rightX: bounds.maxX,\n outerLoop,\n holeLoops,\n isLeftExterior: true,\n isRightExterior: true\n });\n }\n if (!strips.length) {\n throw new Error(\"DXF preview could not build flat extrusion geometry\");\n }\n return strips;\n}\n\nfunction holeClassificationForStrip(loop, leftX, rightX) {\n const bounds = loopBounds(loop);\n if (bounds.maxX <= leftX + GEOMETRY_EPSILON_MM || bounds.minX >= rightX - GEOMETRY_EPSILON_MM) {\n return \"outside\";\n }\n if (bounds.minX >= leftX - GEOMETRY_EPSILON_MM && bounds.maxX <= rightX + GEOMETRY_EPSILON_MM) {\n return \"inside\";\n }\n return \"intersects\";\n}\n\nfunction buildBendProfiles(outerBounds, bendLines, bendSettings, halfThickness) {\n const profiles = bendLines.map((bendLine, index) => {\n const bendSetting = bendSettings[index] || {\n direction: DXF_BEND_DIRECTION.UP,\n angleDeg: DEFAULT_DXF_BEND_ANGLE_DEG\n };\n const angleRadians = bendAngleRadiansForSetting(bendSetting);\n const angleMagnitude = Math.abs(angleRadians);\n const insideRadius = Math.max(halfThickness * 2 * VISUAL_BEND_INSIDE_RADIUS_RATIO, GEOMETRY_EPSILON_MM);\n const neutralRadius = insideRadius + halfThickness;\n const desiredHalfWidth = angleMagnitude > 1e-6 ? (neutralRadius * angleMagnitude) / 2 : 0;\n return {\n bendLine,\n angleRadians,\n insideRadius,\n neutralRadius,\n leftX: bendLine.x - desiredHalfWidth,\n rightX: bendLine.x + desiredHalfWidth\n };\n });\n\n for (let index = 0; index < profiles.length; index += 1) {\n const profile = profiles[index];\n profile.leftX = clamp(profile.leftX, outerBounds.minX, profile.bendLine.x);\n profile.rightX = clamp(profile.rightX, profile.bendLine.x, outerBounds.maxX);\n }\n\n for (let index = 0; index < profiles.length - 1; index += 1) {\n const current = profiles[index];\n const next = profiles[index + 1];\n const midpoint = (current.bendLine.x + next.bendLine.x) / 2;\n current.rightX = Math.min(current.rightX, midpoint);\n next.leftX = Math.max(next.leftX, midpoint);\n }\n\n return profiles.map((profile) => {\n const flatWidth = Math.max(profile.rightX - profile.leftX, 0);\n const angleMagnitude = Math.abs(profile.angleRadians);\n const neutralRadius = angleMagnitude > 1e-6 && flatWidth > GEOMETRY_EPSILON_MM\n ? flatWidth / angleMagnitude\n : profile.neutralRadius;\n return {\n ...profile,\n flatWidth,\n neutralRadius,\n insideRadius: Math.max(neutralRadius - halfThickness, GEOMETRY_EPSILON_MM)\n };\n });\n}\n\nfunction ensureHolesDoNotCrossBendBands(holeLoops, bendProfiles) {\n for (const holeLoop of holeLoops) {\n for (const bendProfile of bendProfiles) {\n if (bendProfile.rightX - bendProfile.leftX <= GEOMETRY_EPSILON_MM) {\n continue;\n }\n if (holeClassificationForStrip(holeLoop, bendProfile.leftX, bendProfile.rightX) !== \"outside\") {\n throw new Error(\"DXF 3D bend preview does not support holes crossing bend radius bands\");\n }\n }\n }\n}\n\nfunction buildStripDefinitions(outerLoop, holeLoops, bendProfiles) {\n const outerBounds = loopBounds(outerLoop);\n ensureHolesDoNotCrossBendBands(holeLoops, bendProfiles);\n\n const strips = [];\n let leftX = outerBounds.minX;\n for (let index = 0; index <= bendProfiles.length; index += 1) {\n const bendProfile = bendProfiles[index] || null;\n const rightX = bendProfile ? bendProfile.leftX : outerBounds.maxX;\n if (rightX - leftX <= GEOMETRY_EPSILON_MM) {\n if (bendProfile) {\n leftX = Math.max(leftX, bendProfile.rightX);\n }\n continue;\n }\n const clippedOuter = normalizeLoopWinding(clipLoopToSlab(outerLoop, leftX, rightX), { clockwise: true });\n if (clippedOuter.length < 3) {\n if (bendProfile) {\n leftX = Math.max(leftX, bendProfile.rightX);\n }\n continue;\n }\n\n const stripHoles = [];\n for (const holeLoop of holeLoops) {\n const classification = holeClassificationForStrip(holeLoop, leftX, rightX);\n if (classification === \"inside\") {\n stripHoles.push(normalizeLoopWinding(holeLoop, { clockwise: false }));\n continue;\n }\n if (classification === \"intersects\") {\n throw new Error(\"DXF 3D bend preview does not support holes crossing bend lines\");\n }\n }\n\n strips.push({\n index: strips.length,\n transformIndex: index,\n leftX,\n rightX,\n outerLoop: clippedOuter,\n holeLoops: stripHoles,\n isLeftExterior: approxEqual(leftX, outerBounds.minX),\n isRightExterior: approxEqual(rightX, outerBounds.maxX)\n });\n\n if (bendProfile) {\n leftX = Math.max(leftX, bendProfile.rightX);\n }\n }\n\n if (!strips.length) {\n throw new Error(\"DXF preview could not build bendable strip geometry\");\n }\n return {\n strips,\n bounds: outerBounds\n };\n}\n\nfunction appendTriangle(vertices, indices, a, b, c) {\n const indexOffset = vertices.length / 3;\n vertices.push(...a, ...b, ...c);\n indices.push(indexOffset, indexOffset + 1, indexOffset + 2);\n}\n\nfunction orientTriangleY(a, b, c, positiveY = true) {\n const abx = b[0] - a[0];\n const abz = b[2] - a[2];\n const acx = c[0] - a[0];\n const acz = c[2] - a[2];\n const crossY = abz * acx - abx * acz;\n if ((positiveY && crossY < 0) || (!positiveY && crossY > 0)) {\n return [a, c, b];\n }\n return [a, b, c];\n}\n\nfunction applyMatrixToPoint(matrix, point) {\n const [x, y, z] = point;\n const elements = matrix.elements;\n return [\n elements[0] * x + elements[4] * y + elements[8] * z + elements[12],\n elements[1] * x + elements[5] * y + elements[9] * z + elements[13],\n elements[2] * x + elements[6] * y + elements[10] * z + elements[14]\n ];\n}\n\nfunction appendTransformedTriangle(vertices, indices, matrix, a, b, c, positiveY) {\n const triangle = orientTriangleY(\n applyMatrixToPoint(matrix, a),\n applyMatrixToPoint(matrix, b),\n applyMatrixToPoint(matrix, c),\n positiveY\n );\n appendTriangle(vertices, indices, triangle[0], triangle[1], triangle[2]);\n}\n\nfunction appendTransformedQuad(vertices, indices, matrix, a, b, c, d, reverse = false) {\n const transformedA = applyMatrixToPoint(matrix, a);\n const transformedB = applyMatrixToPoint(matrix, b);\n const transformedC = applyMatrixToPoint(matrix, c);\n const transformedD = applyMatrixToPoint(matrix, d);\n if (reverse) {\n appendTriangle(vertices, indices, transformedA, transformedC, transformedB);\n appendTriangle(vertices, indices, transformedA, transformedD, transformedC);\n return;\n }\n appendTriangle(vertices, indices, transformedA, transformedB, transformedC);\n appendTriangle(vertices, indices, transformedA, transformedC, transformedD);\n}\n\nfunction appendVertex(vertices, x, y, z) {\n vertices.push(x, y, z);\n return (vertices.length / 3) - 1;\n}\n\nfunction appendTransformedEdgeSegment(vertices, edgeIndices, matrix, start, end) {\n const transformedStart = applyMatrixToPoint(matrix, start);\n const transformedEnd = applyMatrixToPoint(matrix, end);\n const startIndex = appendVertex(vertices, transformedStart[0], transformedStart[1], transformedStart[2]);\n const endIndex = appendVertex(vertices, transformedEnd[0], transformedEnd[1], transformedEnd[2]);\n edgeIndices.push(startIndex, endIndex);\n}\n\nfunction isInternalStripBoundaryEdge(start, end, strip) {\n if (!approxEqual(start[0], end[0], BEND_LINE_AXIS_EPSILON_MM)) {\n return false;\n }\n if (approxEqual(start[0], strip.leftX, BEND_LINE_AXIS_EPSILON_MM) && !strip.isLeftExterior) {\n return true;\n }\n if (approxEqual(start[0], strip.rightX, BEND_LINE_AXIS_EPSILON_MM) && !strip.isRightExterior) {\n return true;\n }\n return false;\n}\n\nfunction appendLoopSideFaces(vertices, indices, matrix, loop, topY, bottomY, shouldSkipEdge = () => false) {\n for (let index = 0; index < loop.length; index += 1) {\n const start = loop[index];\n const end = loop[(index + 1) % loop.length];\n if (shouldSkipEdge(start, end)) {\n continue;\n }\n appendTransformedTriangle(\n vertices,\n indices,\n matrix,\n [start[0], topY, start[1]],\n [end[0], topY, end[1]],\n [end[0], bottomY, end[1]],\n true\n );\n appendTransformedTriangle(\n vertices,\n indices,\n matrix,\n [start[0], topY, start[1]],\n [end[0], bottomY, end[1]],\n [start[0], bottomY, start[1]],\n true\n );\n }\n}\n\nfunction appendLoopEdgeSegments(vertices, edgeIndices, matrix, loop, topY, bottomY, shouldSkipEdge = () => false) {\n for (let index = 0; index < loop.length; index += 1) {\n const start = loop[index];\n const end = loop[(index + 1) % loop.length];\n if (shouldSkipEdge(start, end)) {\n continue;\n }\n appendTransformedEdgeSegment(\n vertices,\n edgeIndices,\n matrix,\n [start[0], topY, start[1]],\n [end[0], topY, end[1]]\n );\n appendTransformedEdgeSegment(\n vertices,\n edgeIndices,\n matrix,\n [start[0], bottomY, start[1]],\n [end[0], bottomY, end[1]]\n );\n appendTransformedEdgeSegment(\n vertices,\n edgeIndices,\n matrix,\n [start[0], topY, start[1]],\n [start[0], bottomY, start[1]]\n );\n }\n}\n\nfunction bendAngleRadiansForSetting(setting) {\n return (normalizeDxfBendDirection(setting?.direction) === DXF_BEND_DIRECTION.DOWN ? -1 : 1)\n * ((normalizeDxfBendAngleDeg(setting?.angleDeg) * Math.PI) / 180);\n}\n\nfunction buildRotationAroundAxisMatrix(axisStart, axisEnd, angleRadians) {\n if (Math.abs(angleRadians) <= 1e-9) {\n return new Matrix4().identity();\n }\n const start = new Vector3(...axisStart);\n const end = new Vector3(...axisEnd);\n const axisVector = end.clone().sub(start);\n if (axisVector.lengthSq() <= 1e-12) {\n return new Matrix4().identity();\n }\n axisVector.normalize();\n const translateToOrigin = new Matrix4().makeTranslation(-start.x, -start.y, -start.z);\n const rotate = new Matrix4().makeRotationAxis(axisVector, angleRadians);\n const translateBack = new Matrix4().makeTranslation(start.x, start.y, start.z);\n return translateBack.multiply(rotate).multiply(translateToOrigin);\n}\n\nfunction buildBendContinuationMatrix(bendProfile) {\n const angleRadians = bendProfile.angleRadians;\n const angleMagnitude = Math.abs(angleRadians);\n if (angleMagnitude <= 1e-9 || bendProfile.flatWidth <= GEOMETRY_EPSILON_MM) {\n return new Matrix4().identity();\n }\n const bendSign = angleRadians < 0 ? -1 : 1;\n const endX = bendProfile.leftX + bendProfile.neutralRadius * Math.sin(angleMagnitude);\n const endY = bendSign * bendProfile.neutralRadius * (1 - Math.cos(angleMagnitude));\n const translateToTangent = new Matrix4().makeTranslation(-bendProfile.rightX, 0, 0);\n const rotate = new Matrix4().makeRotationZ(angleRadians);\n const translateToEnd = new Matrix4().makeTranslation(endX, endY, 0);\n return translateToEnd.multiply(rotate).multiply(translateToTangent);\n}\n\nfunction buildSegmentTransforms(bendProfiles, halfThickness) {\n const transforms = [new Matrix4().identity()];\n const bendTransforms = [];\n const guideLineSegments = [];\n let currentMatrix = new Matrix4().identity();\n\n for (const bendProfile of bendProfiles) {\n const bendLine = bendProfile.bendLine;\n const baseMatrix = currentMatrix.clone();\n guideLineSegments.push(\n ...applyMatrixToPoint(baseMatrix, [bendLine.start[0], halfThickness + BEND_LINE_ELEVATION_MM, bendLine.start[1]]),\n ...applyMatrixToPoint(baseMatrix, [bendLine.end[0], halfThickness + BEND_LINE_ELEVATION_MM, bendLine.end[1]])\n );\n\n bendTransforms.push({\n bendProfile,\n matrix: baseMatrix\n });\n if (bendProfile.flatWidth > GEOMETRY_EPSILON_MM) {\n currentMatrix = baseMatrix.clone().multiply(buildBendContinuationMatrix(bendProfile));\n } else {\n const axisStart = applyMatrixToPoint(baseMatrix, [bendLine.start[0], 0, bendLine.start[1]]);\n const axisEnd = applyMatrixToPoint(baseMatrix, [bendLine.end[0], 0, bendLine.end[1]]);\n const bendMatrix = buildRotationAroundAxisMatrix(axisStart, axisEnd, bendProfile.angleRadians);\n currentMatrix = bendMatrix.clone().multiply(baseMatrix);\n }\n transforms.push(currentMatrix.clone());\n }\n\n return {\n transforms,\n bendTransforms,\n guideLineSegments\n };\n}\n\nfunction mergeIntervals(intervals) {\n const sortedIntervals = intervals\n .map(([min, max]) => [Math.min(min, max), Math.max(min, max)])\n .filter(([min, max]) => max - min > GEOMETRY_EPSILON_MM)\n .sort((a, b) => a[0] - b[0]);\n const merged = [];\n for (const interval of sortedIntervals) {\n const previous = merged[merged.length - 1];\n if (previous && interval[0] <= previous[1] + GEOMETRY_EPSILON_MM) {\n previous[1] = Math.max(previous[1], interval[1]);\n continue;\n }\n merged.push([...interval]);\n }\n return merged;\n}\n\nfunction collectBoundaryIntervals(loop, boundaryX) {\n const intervals = [];\n for (let index = 0; index < loop.length; index += 1) {\n const start = loop[index];\n const end = loop[(index + 1) % loop.length];\n if (\n approxEqual(start[0], boundaryX, BEND_LINE_AXIS_EPSILON_MM) &&\n approxEqual(end[0], boundaryX, BEND_LINE_AXIS_EPSILON_MM) &&\n Math.abs(end[1] - start[1]) > GEOMETRY_EPSILON_MM\n ) {\n intervals.push([start[1], end[1]]);\n }\n }\n return intervals;\n}\n\nfunction intersectIntervalSets(leftIntervals, rightIntervals) {\n const intersections = [];\n for (const left of leftIntervals) {\n for (const right of rightIntervals) {\n const min = Math.max(left[0], right[0]);\n const max = Math.min(left[1], right[1]);\n if (max - min > GEOMETRY_EPSILON_MM) {\n intersections.push([min, max]);\n }\n }\n }\n return mergeIntervals(intersections);\n}\n\nfunction collectBendIntervals(strips, bendProfile) {\n const leftIntervals = [];\n const rightIntervals = [];\n for (const strip of strips) {\n if (approxEqual(strip.rightX, bendProfile.leftX, BEND_LINE_AXIS_EPSILON_MM) && !strip.isRightExterior) {\n leftIntervals.push(...collectBoundaryIntervals(strip.outerLoop, bendProfile.leftX));\n }\n if (approxEqual(strip.leftX, bendProfile.rightX, BEND_LINE_AXIS_EPSILON_MM) && !strip.isLeftExterior) {\n rightIntervals.push(...collectBoundaryIntervals(strip.outerLoop, bendProfile.rightX));\n }\n }\n const mergedLeft = mergeIntervals(leftIntervals);\n const mergedRight = mergeIntervals(rightIntervals);\n if (mergedLeft.length && mergedRight.length) {\n return intersectIntervalSets(mergedLeft, mergedRight);\n }\n if (mergedLeft.length) {\n return mergedLeft;\n }\n if (mergedRight.length) {\n return mergedRight;\n }\n return [[bendProfile.bendLine.yMin, bendProfile.bendLine.yMax]].filter(([min, max]) => max - min > GEOMETRY_EPSILON_MM);\n}\n\nfunction bendBridgeSegmentCount(radius, angleRadians) {\n return clamp(\n sampleCountForSweep(Math.max(radius, GEOMETRY_EPSILON_MM), angleRadians),\n MIN_BEND_BRIDGE_SEGMENTS,\n MAX_BEND_BRIDGE_SEGMENTS\n );\n}\n\nfunction bendArcPoint(bendProfile, surfaceY, z, angleRadians) {\n const centerY = (bendProfile.angleRadians < 0 ? -1 : 1) * bendProfile.neutralRadius;\n const startVectorY = surfaceY - centerY;\n return [\n bendProfile.leftX - startVectorY * Math.sin(angleRadians),\n centerY + startVectorY * Math.cos(angleRadians),\n z\n ];\n}\n\nfunction appendBendArcSurface(vertices, indices, matrix, bendProfile, surfaceY, zMin, zMax, startAngle, endAngle, reverse) {\n appendTransformedQuad(\n vertices,\n indices,\n matrix,\n bendArcPoint(bendProfile, surfaceY, zMin, startAngle),\n bendArcPoint(bendProfile, surfaceY, zMin, endAngle),\n bendArcPoint(bendProfile, surfaceY, zMax, endAngle),\n bendArcPoint(bendProfile, surfaceY, zMax, startAngle),\n reverse\n );\n}\n\nfunction appendBendCapSurface(vertices, indices, matrix, bendProfile, halfThickness, z, startAngle, endAngle, reverse) {\n appendTransformedQuad(\n vertices,\n indices,\n matrix,\n bendArcPoint(bendProfile, halfThickness, z, startAngle),\n bendArcPoint(bendProfile, halfThickness, z, endAngle),\n bendArcPoint(bendProfile, -halfThickness, z, endAngle),\n bendArcPoint(bendProfile, -halfThickness, z, startAngle),\n reverse\n );\n}\n\nfunction appendBendArcEdgeSegments(vertices, edgeIndices, matrix, bendProfile, surfaceY, z, startAngle, endAngle) {\n appendTransformedEdgeSegment(\n vertices,\n edgeIndices,\n matrix,\n bendArcPoint(bendProfile, surfaceY, z, startAngle),\n bendArcPoint(bendProfile, surfaceY, z, endAngle)\n );\n}\n\nfunction appendBendRadialEdgeSegment(vertices, edgeIndices, matrix, bendProfile, halfThickness, z, angleRadians) {\n appendTransformedEdgeSegment(\n vertices,\n edgeIndices,\n matrix,\n bendArcPoint(bendProfile, halfThickness, z, angleRadians),\n bendArcPoint(bendProfile, -halfThickness, z, angleRadians)\n );\n}\n\nfunction appendBendBridgeInterval(vertices, indices, edgeVertices, edgeIndices, bendTransform, interval, halfThickness) {\n const { bendProfile } = bendTransform;\n const angleRadians = bendProfile.angleRadians;\n if (Math.abs(angleRadians) <= 1e-6) {\n return;\n }\n\n const [zMin, zMax] = interval;\n if (zMax - zMin <= GEOMETRY_EPSILON_MM) {\n return;\n }\n\n const matrix = bendTransform.matrix;\n const segmentCount = bendBridgeSegmentCount(bendProfile.neutralRadius + halfThickness, angleRadians);\n const reverseArcSurface = angleRadians < 0;\n const reverseMinCap = angleRadians > 0;\n const reverseMaxCap = angleRadians < 0;\n\n for (let segmentIndex = 0; segmentIndex < segmentCount; segmentIndex += 1) {\n const startAngle = angleRadians * (segmentIndex / segmentCount);\n const endAngle = angleRadians * ((segmentIndex + 1) / segmentCount);\n\n appendBendArcSurface(\n vertices,\n indices,\n matrix,\n bendProfile,\n halfThickness,\n zMin,\n zMax,\n startAngle,\n endAngle,\n reverseArcSurface\n );\n appendBendArcSurface(\n vertices,\n indices,\n matrix,\n bendProfile,\n -halfThickness,\n zMin,\n zMax,\n startAngle,\n endAngle,\n reverseArcSurface\n );\n appendBendCapSurface(\n vertices,\n indices,\n matrix,\n bendProfile,\n halfThickness,\n zMin,\n startAngle,\n endAngle,\n reverseMinCap\n );\n appendBendCapSurface(\n vertices,\n indices,\n matrix,\n bendProfile,\n halfThickness,\n zMax,\n startAngle,\n endAngle,\n reverseMaxCap\n );\n\n for (const surfaceY of [halfThickness, -halfThickness]) {\n appendBendArcEdgeSegments(edgeVertices, edgeIndices, matrix, bendProfile, surfaceY, zMin, startAngle, endAngle);\n appendBendArcEdgeSegments(edgeVertices, edgeIndices, matrix, bendProfile, surfaceY, zMax, startAngle, endAngle);\n }\n }\n\n for (const angle of [0, angleRadians]) {\n appendBendRadialEdgeSegment(edgeVertices, edgeIndices, matrix, bendProfile, halfThickness, zMin, angle);\n appendBendRadialEdgeSegment(edgeVertices, edgeIndices, matrix, bendProfile, halfThickness, zMax, angle);\n }\n}\n\nfunction appendBendBridgeGeometry(vertices, indices, edgeVertices, edgeIndices, strips, bendTransforms, halfThickness) {\n for (const bendTransform of bendTransforms) {\n const intervals = collectBendIntervals(strips, bendTransform.bendProfile);\n for (const interval of intervals) {\n appendBendBridgeInterval(vertices, indices, edgeVertices, edgeIndices, bendTransform, interval, halfThickness);\n }\n }\n}\n\nfunction buildBounds(vertices) {\n if (!vertices.length) {\n return {\n min: [0, 0, 0],\n max: [0, 0, 0]\n };\n }\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n let minZ = Number.POSITIVE_INFINITY;\n let maxX = Number.NEGATIVE_INFINITY;\n let maxY = Number.NEGATIVE_INFINITY;\n let maxZ = Number.NEGATIVE_INFINITY;\n for (let index = 0; index < vertices.length; index += 3) {\n const x = vertices[index];\n const y = vertices[index + 1];\n const z = vertices[index + 2];\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n minZ = Math.min(minZ, z);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n maxZ = Math.max(maxZ, z);\n }\n return {\n min: [minX, minY, minZ],\n max: [maxX, maxY, maxZ]\n };\n}\n\nfunction buildTriangulatedFlatPattern(dxfData) {\n const { loops, bendLines: rawBendLines } = buildCutLoops(dxfData);\n const sortedLoops = [...loops].sort((a, b) => Math.abs(polygonSignedArea(b)) - Math.abs(polygonSignedArea(a)));\n const outerLoop = normalizeLoopWinding(sortedLoops[0] || [], { clockwise: true });\n if (!outerLoop.length) {\n throw new Error(\"DXF preview requires one outer contour\");\n }\n const holeLoops = sortedLoops.slice(1).map((loop) => normalizeLoopWinding(loop, { clockwise: false }));\n const bendLines = sortBendLines(rawBendLines);\n validateBendLines(bendLines);\n return {\n loops: sortedLoops,\n outerLoop,\n holeLoops,\n bendLines\n };\n}\n\nexport function buildDxfPreviewMeshData(dxfData, thicknessMm, bendSettings = null) {\n const { loops, outerLoop, holeLoops, bendLines } = buildTriangulatedFlatPattern(dxfData);\n const normalizedThicknessMm = normalizeDxfPreviewThicknessMm(\n thicknessMm,\n toFiniteNumber(dxfData?.defaultThicknessMm, DEFAULT_DXF_PREVIEW_THICKNESS_MM)\n );\n const normalizedBendSettings = normalizeDxfBendSettings(dxfData, bendSettings);\n const halfThickness = normalizedThicknessMm / 2;\n let strips;\n let bendTransforms;\n let guideLineSegments;\n let transforms;\n if (bendLines.length) {\n const outerBounds = loopBounds(outerLoop);\n const bendProfiles = buildBendProfiles(outerBounds, bendLines, normalizedBendSettings, halfThickness);\n ({ strips } = buildStripDefinitions(outerLoop, holeLoops, bendProfiles));\n ({ transforms, bendTransforms, guideLineSegments } = buildSegmentTransforms(bendProfiles, halfThickness));\n } else {\n strips = buildFlatStripDefinitions(loops);\n transforms = [new Matrix4().identity()];\n bendTransforms = [];\n guideLineSegments = [];\n }\n\n const triangleVertices = [];\n const indices = [];\n const edgeVertices = [];\n const edgeIndices = [];\n\n for (const strip of strips) {\n const matrix = transforms[strip.transformIndex] || transforms[transforms.length - 1] || new Matrix4().identity();\n const outerVectors = strip.outerLoop.map(([x, y]) => new Vector2(x, y));\n const holeVectors = strip.holeLoops.map((loop) => loop.map(([x, y]) => new Vector2(x, y)));\n const faces = ShapeUtils.triangulateShape(outerVectors, holeVectors);\n const combinedLoops = outerVectors.concat(...holeVectors);\n\n for (const face of faces) {\n const a2 = combinedLoops[face[0]];\n const b2 = combinedLoops[face[1]];\n const c2 = combinedLoops[face[2]];\n appendTransformedTriangle(\n triangleVertices,\n indices,\n matrix,\n [a2.x, halfThickness, a2.y],\n [b2.x, halfThickness, b2.y],\n [c2.x, halfThickness, c2.y],\n true\n );\n appendTransformedTriangle(\n triangleVertices,\n indices,\n matrix,\n [a2.x, -halfThickness, a2.y],\n [b2.x, -halfThickness, b2.y],\n [c2.x, -halfThickness, c2.y],\n false\n );\n }\n\n const skipOuterEdge = (start, end) => isInternalStripBoundaryEdge(start, end, strip);\n appendLoopSideFaces(triangleVertices, indices, matrix, strip.outerLoop, halfThickness, -halfThickness, skipOuterEdge);\n appendLoopEdgeSegments(edgeVertices, edgeIndices, matrix, strip.outerLoop, halfThickness, -halfThickness, skipOuterEdge);\n\n for (const holeLoop of strip.holeLoops) {\n appendLoopSideFaces(triangleVertices, indices, matrix, holeLoop, halfThickness, -halfThickness);\n appendLoopEdgeSegments(edgeVertices, edgeIndices, matrix, holeLoop, halfThickness, -halfThickness);\n }\n }\n appendBendBridgeGeometry(\n triangleVertices,\n indices,\n edgeVertices,\n edgeIndices,\n strips,\n bendTransforms,\n halfThickness\n );\n\n const triangleVertexCount = triangleVertices.length / 3;\n const combinedVertices = new Float32Array(triangleVertices.length + edgeVertices.length);\n combinedVertices.set(triangleVertices, 0);\n combinedVertices.set(edgeVertices, triangleVertices.length);\n\n const combinedEdgeIndices = new Uint32Array(edgeIndices.length);\n for (let index = 0; index < edgeIndices.length; index += 1) {\n combinedEdgeIndices[index] = edgeIndices[index] + triangleVertexCount;\n }\n\n const bounds = buildBounds(combinedVertices);\n return {\n format_version: \"dxf-preview-mesh-v2\",\n has_source_colors: false,\n bounds,\n vertex_count: combinedVertices.length / 3,\n triangle_count: indices.length / 3,\n edge_index_count: combinedEdgeIndices.length,\n vertices: combinedVertices,\n colors: new Float32Array(0),\n normals: new Float32Array(0),\n indices: new Uint32Array(indices),\n edge_indices: combinedEdgeIndices,\n guide_line_segments: new Float32Array(guideLineSegments),\n parts: []\n };\n}\n","import * as React from \"react\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\n\nfunction Accordion({\n ...props\n}) {\n return ;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}) {\n return (\n \n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}) {\n return (\n \n svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n \n \n \n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}) {\n return (\n \n {children}
\n \n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","\"use client\"\n\nimport { cn } from \"@/ui/utils\"\n\nfunction ScrollArea({\n className,\n viewportClassName,\n scrollbars = \"vertical\",\n type: _type,\n scrollHideDelay: _scrollHideDelay,\n children,\n ...props\n}) {\n const scrollbarOrientations = Array.isArray(scrollbars)\n ? scrollbars\n : [scrollbars].filter(Boolean);\n const hasHorizontalScrollbar = scrollbarOrientations.includes(\"horizontal\");\n const hasVerticalScrollbar = scrollbarOrientations.includes(\"vertical\");\n const overflowX = hasHorizontalScrollbar ? \"overflow-x-auto\" : \"overflow-x-hidden\";\n const overflowY = hasVerticalScrollbar ? \"overflow-y-auto\" : \"overflow-y-hidden\";\n\n return (\n \n );\n}\n\nfunction ScrollBar({\n className: _className,\n orientation: _orientation = \"vertical\",\n ..._props\n}) {\n return null;\n}\n\nexport { ScrollArea, ScrollBar }\n","import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/ui/utils\"\n\nfunction Switch({\n className,\n thumbClassName,\n ...props\n}) {\n return (\n \n \n \n )\n}\n\nexport { Switch }\n","import { useEffect, useRef, useState } from \"react\";\nimport { cn } from \"@/ui/utils\";\nimport {\n AccordionContent,\n AccordionItem,\n AccordionTrigger\n} from \"../ui/accordion\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle\n} from \"../ui/sheet\";\nimport { Switch } from \"../ui/switch\";\n\nconst DEFAULT_FILE_SHEET_WIDTH = 365;\nconst DESKTOP_FILE_SHEET_MIN_WIDTH = 240;\nconst DESKTOP_FILE_SHEET_MAX_WIDTH = \"min(28rem, calc(100vw - 0.75rem))\";\nconst MOBILE_FILE_SHEET_WIDTH = \"min(24rem, calc(100vw - 0.75rem))\";\nconst FILE_SHEET_CONTROL_TEXT_CLASSES = [\n \"[&_[data-slot=input]]:!text-[11px]\",\n \"[&_[data-slot=select-trigger]]:!text-[11px]\",\n \"[&_[data-slot=color-picker-trigger]]:!text-[11px]\"\n].join(\" \");\n\nexport const FILE_SHEET_SECTION_TRIGGER_CLASSES = \"px-3 py-2 text-sm font-normal text-sidebar-foreground/90\";\nexport const FILE_SHEET_SECTION_CONTENT_CLASSES = \"py-1\";\nexport const FILE_SHEET_CONTROL_ROW_CLASSES = \"space-y-1 px-3 py-0.5\";\nexport const FILE_SHEET_ROW_STACK_CLASSES = \"space-y-2\";\nexport const FILE_SHEET_SECTION_BODY_CLASSES = `${FILE_SHEET_ROW_STACK_CLASSES} py-3`;\nexport const FILE_SHEET_SLIDER_FIELD_CLASSES = \"space-y-1 px-3 py-0.5\";\nexport const FILE_SHEET_INLINE_CONTROL_ROW_CLASSES = \"px-3 py-0.5\";\nexport const FILE_SHEET_FIELD_LABEL_CLASSES = \"block min-w-0 truncate text-[11px] font-medium leading-4 text-muted-foreground\";\nexport const FILE_SHEET_SUBSUBSECTION_HEADER_CLASSES = \"px-3 py-1 text-[11px] font-normal leading-4 text-sidebar-foreground\";\nexport const FILE_SHEET_VALUE_BADGE_CLASSES = \"shrink-0 rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] font-medium leading-none tabular-nums text-muted-foreground\";\nexport const FILE_SHEET_VALUE_BADGE_INPUT_CLASSES = [\n \"h-7 w-20 shrink-0 rounded-md border border-input bg-transparent px-1.5 py-1 text-right text-[11px] font-medium leading-none tabular-nums text-foreground shadow-xs outline-none\",\n \"m-0 box-border min-w-0 appearance-none transition-[color,box-shadow,border-color] placeholder:text-muted-foreground\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:opacity-50 dark:bg-input/30\"\n].join(\" \");\nexport const FILE_SHEET_COMPACT_BUTTON_CLASSES = \"h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground\";\nexport const FILE_SHEET_COMPACT_ICON_BUTTON_CLASSES = \"size-7 text-muted-foreground hover:text-foreground\";\nexport const FILE_SHEET_COMPACT_INPUT_CLASSES = \"!h-7 px-2 text-[11px] !text-foreground\";\nexport const FILE_SHEET_COMPACT_NUMERIC_INPUT_CLASSES = \"h-7 px-2 !text-[11px] font-medium leading-none tabular-nums text-foreground\";\nexport const FILE_SHEET_COMPACT_JOINT_INPUT_CLASSES = \"h-7 px-2 !text-[11px] font-medium leading-none tabular-nums text-foreground\";\nexport const FILE_SHEET_BOOLEAN_SWITCH_CLASSES = [\n \"h-4 w-7 border shadow-none\",\n \"data-[state=checked]:border-primary/75 data-[state=checked]:bg-primary\",\n \"data-[state=unchecked]:!border-[rgb(115_125_140_/_0.52)] data-[state=unchecked]:!bg-[rgb(115_125_140_/_0.22)]\",\n \"dark:data-[state=unchecked]:!border-[rgb(148_163_184_/_0.44)] dark:data-[state=unchecked]:!bg-[rgb(148_163_184_/_0.18)]\"\n].join(\" \");\nexport const FILE_SHEET_BOOLEAN_SWITCH_THUMB_CLASSES = [\n \"!size-3 shadow-sm\",\n \"data-[state=checked]:!translate-x-3 data-[state=checked]:!bg-background\",\n \"data-[state=unchecked]:!translate-x-0 data-[state=unchecked]:!bg-[rgb(115_125_140)]\",\n \"dark:data-[state=unchecked]:!bg-[rgb(148_163_184)]\"\n].join(\" \");\nexport const FILE_SHEET_SEGMENTED_ITEM_CLASSES = [\n \"text-muted-foreground hover:text-foreground\",\n \"data-[state=on]:!bg-accent data-[state=on]:!text-foreground data-[state=on]:font-semibold\",\n \"data-[state=on]:ring-1 data-[state=on]:ring-inset data-[state=on]:ring-border/80\",\n \"data-[state=on]:hover:!bg-accent data-[state=on]:hover:!text-foreground\"\n].join(\" \");\nexport const FILE_SHEET_PRECISION_SLIDER_CLASSES = [\n \"h-4\",\n \"[&_[data-slot=slider-track]]:h-px\",\n \"[&_[data-slot=slider-track]]:rounded-none\",\n \"[&_[data-slot=slider-track]]:bg-border\",\n \"[&_[data-slot=slider-range]]:bg-primary\",\n \"[&_[data-slot=slider-thumb]]:h-2.5\",\n \"[&_[data-slot=slider-thumb]]:w-1.5\",\n \"[&_[data-slot=slider-thumb]]:rounded-[1px]\",\n \"[&_[data-slot=slider-thumb]]:border-primary\",\n \"[&_[data-slot=slider-thumb]]:bg-background\",\n \"[&_[data-slot=slider-thumb]]:shadow-none\",\n \"[&_[data-slot=slider-thumb]]:ring-0\",\n \"[&_[data-slot=slider-thumb]]:hover:border-primary/85\",\n \"[&_[data-slot=slider-thumb]]:hover:ring-1\",\n \"[&_[data-slot=slider-thumb]]:hover:ring-ring/25\",\n \"[&_[data-slot=slider-thumb]]:focus-visible:ring-2\",\n \"[&_[data-slot=slider-thumb]]:focus-visible:ring-ring/30\"\n].join(\" \");\n\nexport function FileSheetSection({\n value,\n title,\n children,\n className,\n contentClassName,\n triggerClassName,\n triggerProps,\n ...props\n}) {\n return (\n \n \n {title}\n \n \n {children}\n \n \n );\n}\n\nexport function FileSheetSubsection({\n title,\n trailing = null,\n children,\n className,\n contentClassName,\n hideFirstSeparator = true\n}) {\n return (\n \n
\n
\n {title}\n {trailing ? {trailing} : null}\n
\n
\n {children}\n
\n
\n );\n}\n\n// Use sparingly for rare third-level groups inside a FileSheet subsection.\nexport function FileSheetSubsubsection({\n title,\n children,\n className,\n contentClassName\n}) {\n return (\n \n
\n {title}\n
\n
\n {children}\n
\n
\n );\n}\n\nexport function FileSheetSectionBody({\n children,\n className\n}) {\n return (\n \n {children}\n
\n );\n}\n\nexport function FileSheetControlRow({\n label,\n value,\n trailing,\n children,\n className,\n contentClassName,\n labelClassName,\n rowKind = \"control\"\n}) {\n return (\n \n {label != null || value != null || trailing != null ? (\n
\n {label != null ? (\n {label}\n ) : }\n {trailing != null ? trailing : value != null ? (\n {value}\n ) : null}\n
\n ) : null}\n
{children}
\n
\n );\n}\n\nexport function parseFileSheetNumberInput(value, {\n fallback = 0,\n min = -Infinity,\n max = Infinity,\n integer = false\n} = {}) {\n const text = String(value ?? \"\").trim();\n const match = text.match(/[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?/i);\n const fallbackValue = Number.isFinite(Number(fallback)) ? Number(fallback) : 0;\n const numericValue = match ? Number(match[0]) : NaN;\n const lowerBound = Number.isFinite(Number(min)) ? Number(min) : -Infinity;\n const upperBound = Number.isFinite(Number(max)) ? Number(max) : Infinity;\n const resolvedValue = Number.isFinite(numericValue) ? numericValue : fallbackValue;\n const clampedValue = Math.min(Math.max(resolvedValue, lowerBound), Math.max(lowerBound, upperBound));\n return integer ? Math.round(clampedValue) : clampedValue;\n}\n\nexport function FileSheetValueInput({\n value,\n onValueCommit,\n disabled = false,\n ariaLabel,\n inputMode = \"decimal\",\n className,\n style\n}) {\n const inputRef = useRef(null);\n const displayValue = String(value ?? \"\");\n const [draftValue, setDraftValue] = useState(displayValue);\n const [editing, setEditing] = useState(false);\n const skipCommitRef = useRef(false);\n const selectOnEditRef = useRef(false);\n const visibleValue = editing ? draftValue : displayValue;\n\n useEffect(() => {\n if (!editing) {\n setDraftValue(displayValue);\n }\n }, [displayValue, editing]);\n\n useEffect(() => {\n if (!editing || !selectOnEditRef.current) {\n return;\n }\n selectOnEditRef.current = false;\n inputRef.current?.select?.();\n }, [editing, visibleValue]);\n\n const selectInputValue = (input) => {\n input?.select?.();\n if (typeof window !== \"undefined\") {\n window.requestAnimationFrame?.(() => input?.select?.());\n }\n };\n\n return (\n {\n setDraftValue(event.target.value);\n }}\n onFocus={(event) => {\n selectOnEditRef.current = true;\n setEditing(true);\n selectInputValue(event.currentTarget);\n }}\n onClick={(event) => {\n selectOnEditRef.current = true;\n setEditing(true);\n selectInputValue(event.currentTarget);\n }}\n onMouseUp={(event) => {\n event.preventDefault();\n }}\n onBlur={() => {\n setEditing(false);\n if (skipCommitRef.current) {\n skipCommitRef.current = false;\n return;\n }\n onValueCommit?.(draftValue);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.currentTarget.blur();\n }\n if (event.key === \"Escape\") {\n skipCommitRef.current = true;\n setDraftValue(displayValue);\n event.currentTarget.blur();\n }\n }}\n className={cn(\n FILE_SHEET_VALUE_BADGE_INPUT_CLASSES,\n className\n )}\n style={{\n borderColor: editing ? \"var(--ring)\" : undefined,\n ...style\n }}\n aria-label={ariaLabel}\n />\n );\n}\n\nexport function FileSheetSliderField({\n label,\n value,\n trailing,\n onValueCommit,\n valueInputProps,\n children,\n className,\n contentClassName,\n labelClassName\n}) {\n const valueTrailing = trailing ?? (onValueCommit ? (\n \n ) : null);\n\n return (\n \n {valueTrailing ? (\n \n
\n {label != null ? (\n
\n {label}\n \n ) : null}\n
\n {children}\n
\n
\n {valueTrailing}\n
\n ) : children}\n \n );\n}\n\nexport function FileSheetInlineControlRow({\n label,\n description,\n children,\n className,\n labelClassName\n}) {\n return (\n \n
\n {label}\n {children}\n
\n {description ? (\n
{description}
\n ) : null}\n
\n );\n}\n\nexport function FileSheetBooleanToggle({\n checked,\n onCheckedChange,\n disabled = false,\n ariaLabel,\n className\n}) {\n return (\n \n );\n}\n\nexport function FileSheetToggleRow({\n label,\n checked,\n onCheckedChange,\n disabled = false,\n description,\n className,\n labelClassName,\n ariaLabel\n}) {\n return (\n \n \n \n );\n}\n\nfunction normalizeFileSheetWidth(width) {\n const numericWidth = Number(width);\n if (!Number.isFinite(numericWidth) || numericWidth <= 0) {\n return DEFAULT_FILE_SHEET_WIDTH;\n }\n return Math.max(DESKTOP_FILE_SHEET_MIN_WIDTH, numericWidth);\n}\n\nexport default function FileSheet({\n open,\n title,\n isDesktop,\n width,\n onOpenChange,\n onStartResize,\n bodyClassName,\n children\n}) {\n const desktopWidth = `min(${normalizeFileSheetWidth(width)}px, ${DESKTOP_FILE_SHEET_MAX_WIDTH})`;\n const sheetStyle = isDesktop\n ? {\n width: desktopWidth,\n flexBasis: desktopWidth,\n minWidth: `min(${DESKTOP_FILE_SHEET_MIN_WIDTH}px, ${DESKTOP_FILE_SHEET_MAX_WIDTH})`,\n maxWidth: DESKTOP_FILE_SHEET_MAX_WIDTH\n }\n : {\n width: MOBILE_FILE_SHEET_WIDTH,\n maxWidth: DESKTOP_FILE_SHEET_MAX_WIDTH\n };\n const sheetBody = (\n \n {children}\n \n );\n\n if (!isDesktop) {\n return (\n \n \n \n {title}\n Inspect and adjust the selected file.\n \n {sheetBody}\n \n \n );\n }\n\n if (!open) {\n return null;\n }\n\n return (\n \n );\n}\n","export const FILE_SHEET_SECTION_IDS = Object.freeze({\n FILE_STATUS: \"status\",\n DXF: \"dxf\",\n GCODE_TOOLPATH: \"toolpath\",\n GCODE_FEATURES: \"features\",\n GCODE_STATS: \"stats\",\n GCODE_BOUNDS: \"bounds\",\n STEP_TREE: \"tree\",\n STEP_PARAMETERS: \"parameters\",\n ROBOT_SDF: \"sdf\",\n ROBOT_MOTION: \"motion\",\n ROBOT_JOINTS: \"joints\",\n IMPLICIT_GRAPHICS: \"graphics\",\n THEME_DISPLAY: \"display\",\n THEME_APPEARANCE: \"appearance\",\n FILE_METADATA: \"metadata\"\n});\n\nconst THEME_SECTION_IDS = Object.freeze([\n FILE_SHEET_SECTION_IDS.THEME_DISPLAY,\n FILE_SHEET_SECTION_IDS.THEME_APPEARANCE\n]);\n\nfunction normalizeString(value) {\n return String(value || \"\").trim();\n}\n\nfunction normalizeSectionIds(value) {\n if (!Array.isArray(value)) {\n return [];\n }\n return [...new Set(value.map(normalizeString).filter(Boolean))];\n}\n\nfunction migrateLegacySectionId(sectionId) {\n if (sectionId === \"plate\" || sectionId === \"bends\") {\n return FILE_SHEET_SECTION_IDS.DXF;\n }\n return sectionId;\n}\n\nexport function renderedFileSheetSectionIds(kind, options = {}) {\n const normalizedKind = normalizeString(kind);\n const isSdf = options.isSdf === true || normalizedKind === \"sdf\";\n const showJoints = options.showJoints !== false;\n switch (normalizedKind) {\n case \"dxf\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n FILE_SHEET_SECTION_IDS.DXF,\n ...THEME_SECTION_IDS,\n FILE_SHEET_SECTION_IDS.FILE_METADATA\n ];\n case \"gcode\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n FILE_SHEET_SECTION_IDS.GCODE_TOOLPATH,\n FILE_SHEET_SECTION_IDS.GCODE_FEATURES,\n FILE_SHEET_SECTION_IDS.GCODE_STATS,\n FILE_SHEET_SECTION_IDS.GCODE_BOUNDS,\n ...THEME_SECTION_IDS,\n FILE_SHEET_SECTION_IDS.FILE_METADATA\n ];\n case \"step\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n FILE_SHEET_SECTION_IDS.STEP_TREE,\n ...(options.hasStepModulePanel ? [FILE_SHEET_SECTION_IDS.STEP_PARAMETERS] : []),\n ...THEME_SECTION_IDS,\n FILE_SHEET_SECTION_IDS.FILE_METADATA\n ];\n case \"urdf\":\n case \"srdf\":\n case \"sdf\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n ...(isSdf ? [FILE_SHEET_SECTION_IDS.ROBOT_SDF] : []),\n ...(options.motionEnabled ? [FILE_SHEET_SECTION_IDS.ROBOT_MOTION] : []),\n ...(showJoints ? [FILE_SHEET_SECTION_IDS.ROBOT_JOINTS] : []),\n ...THEME_SECTION_IDS,\n FILE_SHEET_SECTION_IDS.FILE_METADATA\n ];\n case \"mesh\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n ...THEME_SECTION_IDS,\n FILE_SHEET_SECTION_IDS.FILE_METADATA\n ];\n case \"implicit\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n ...(options.hasImplicitParameterPanel ? [FILE_SHEET_SECTION_IDS.STEP_PARAMETERS] : []),\n FILE_SHEET_SECTION_IDS.IMPLICIT_GRAPHICS,\n ...THEME_SECTION_IDS,\n FILE_SHEET_SECTION_IDS.FILE_METADATA\n ];\n default:\n return [];\n }\n}\n\nexport function defaultOpenFileSheetSectionIds(kind, options = {}) {\n const normalizedKind = normalizeString(kind);\n const isSdf = options.isSdf === true || normalizedKind === \"sdf\";\n const showJoints = options.showJoints !== false;\n switch (normalizedKind) {\n case \"dxf\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n FILE_SHEET_SECTION_IDS.DXF\n ];\n case \"gcode\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n FILE_SHEET_SECTION_IDS.GCODE_TOOLPATH\n ];\n case \"step\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n FILE_SHEET_SECTION_IDS.STEP_TREE,\n ...(options.hasStepModulePanel ? [FILE_SHEET_SECTION_IDS.STEP_PARAMETERS] : [])\n ];\n case \"urdf\":\n case \"srdf\":\n case \"sdf\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n ...(isSdf ? [FILE_SHEET_SECTION_IDS.ROBOT_SDF] : []),\n ...(options.motionEnabled ? [FILE_SHEET_SECTION_IDS.ROBOT_MOTION] : []),\n ...(showJoints ? [FILE_SHEET_SECTION_IDS.ROBOT_JOINTS] : [])\n ];\n case \"mesh\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : [])\n ];\n case \"implicit\":\n return [\n ...(options.hasFileStatus ? [FILE_SHEET_SECTION_IDS.FILE_STATUS] : []),\n ...(options.hasImplicitParameterPanel ? [FILE_SHEET_SECTION_IDS.STEP_PARAMETERS] : [])\n ];\n default:\n return [];\n }\n}\n\nexport function normalizeFileSheetOpenSectionIds(sectionIds, renderedSectionIds) {\n const rendered = new Set(normalizeSectionIds(renderedSectionIds));\n if (!rendered.size) {\n return [];\n }\n return [...new Set(normalizeSectionIds(sectionIds)\n .map(migrateLegacySectionId)\n .filter((sectionId) => rendered.has(sectionId)))];\n}\n\nexport function fileSheetSectionIdsWithOpenSection(sectionIds, renderedSectionIds, sectionId) {\n const normalizedSectionId = normalizeString(sectionId);\n const normalizedSectionIds = normalizeFileSheetOpenSectionIds(sectionIds, renderedSectionIds);\n if (!normalizedSectionId || !normalizeSectionIds(renderedSectionIds).includes(normalizedSectionId)) {\n return normalizedSectionIds;\n }\n if (normalizedSectionIds.includes(normalizedSectionId)) {\n return normalizedSectionIds;\n }\n return [...normalizedSectionIds, normalizedSectionId];\n}\n\nexport function shouldOpenFileSheetForSelectionReveal({ isDesktop = true, source = \"viewer\" } = {}) {\n return isDesktop || normalizeString(source) !== \"viewer\";\n}\n","import {\n entrySourceFormat,\n meshAssetKeyForEntry,\n RENDER_FORMAT\n} from \"./fileFormats.js\";\n\nexport { meshAssetKeyForEntry } from \"./fileFormats.js\";\n\nfunction normalizeString(value) {\n return String(value || \"\").trim();\n}\n\nfunction normalizedKind(entry) {\n return normalizeString(entry?.kind).toLowerCase();\n}\n\nfunction primaryAsset(entry) {\n if (!entry || typeof entry !== \"object\") {\n return null;\n }\n const url = normalizeString(entry.url);\n if (!url) {\n return null;\n }\n return {\n url,\n hash: normalizeString(entry.hash),\n bytes: Number.isFinite(Number(entry.bytes)) && Number(entry.bytes) >= 0 ? Number(entry.bytes) : 0,\n };\n}\n\nfunction relationAsset(entry, key) {\n const relation = entry?.relations?.[key];\n if (!relation || typeof relation !== \"object\") {\n return null;\n }\n const url = normalizeString(relation.url);\n return url\n ? {\n url,\n hash: normalizeString(relation.hash),\n bytes: Number.isFinite(Number(relation.bytes)) && Number(relation.bytes) >= 0 ? Number(relation.bytes) : 0,\n }\n : null;\n}\n\nexport function entryAsset(entry, key) {\n const assetKey = normalizeString(key).toLowerCase();\n const kind = normalizedKind(entry);\n const sourceFormat = entrySourceFormat(entry);\n if (assetKey === \"urdf\" && kind === \"srdf\") {\n return relationAsset(entry, \"urdf\");\n }\n if (\n assetKey === kind ||\n assetKey === sourceFormat ||\n (sourceFormat === RENDER_FORMAT.STEP && [\"glb\", \"topology\", \"selectortopology\", \"displayedgetopology\"].includes(assetKey)) ||\n (kind === \"srdf\" && assetKey === \"srdf\")\n ) {\n return primaryAsset(entry);\n }\n return null;\n}\n\nexport function entryAssetUrl(entry, key) {\n return normalizeString(entryAsset(entry, key)?.url);\n}\n\nexport function entryAssetHash(entry, key) {\n return normalizeString(entryAsset(entry, key)?.hash);\n}\n\nexport function entryAssetBytes(entry, key) {\n const bytes = Number(entryAsset(entry, key)?.bytes);\n return Number.isFinite(bytes) && bytes >= 0 ? bytes : 0;\n}\n\nexport function entryMeshAssetUrl(entry) {\n return entryAssetUrl(entry, meshAssetKeyForEntry(entry));\n}\n\nexport function entryMeshAssetHash(entry) {\n return entryAssetHash(entry, meshAssetKeyForEntry(entry));\n}\n\nexport function entryMeshAssetBytes(entry) {\n return entryAssetBytes(entry, meshAssetKeyForEntry(entry));\n}\n\nexport function entryTopologyAssetUrl(entry) {\n return entryAssetUrl(entry, \"topology\") || entryAssetUrl(entry, \"glb\");\n}\n\nexport function entrySelectorTopologyAssetUrl(entry) {\n return entryAssetUrl(entry, \"selectorTopology\") || entryTopologyAssetUrl(entry);\n}\n\nexport function entryDisplayEdgeTopologyAssetUrl(entry) {\n return entryAssetUrl(entry, \"displayEdgeTopology\") || entryTopologyAssetUrl(entry);\n}\n\nexport function entryUrdfAssetHash(entry) {\n return [\n entryAssetHash(entry, \"urdf\"),\n entryAssetHash(entry, \"srdf\"),\n entryAssetHash(entry, \"sdf\")\n ].filter(Boolean).join(\":\");\n}\n\nexport function entryMeshAssetSignature(entry) {\n return String(\n entry?.kind === \"assembly\"\n ? entryAssetHash(entry, \"glb\")\n : entryMeshAssetHash(entry)\n );\n}\n\nexport function entryReferenceAssetSignature(entry) {\n return entryAssetHash(entry, \"selectorTopology\") || normalizeString(entry?.hash);\n}\n\nexport function entryHasMesh(entry) {\n if (entrySourceFormat(entry) === RENDER_FORMAT.STEP) {\n return Boolean(\n entryAssetUrl(entry, \"glb\") &&\n entryAssetHash(entry, \"glb\")\n );\n }\n const meshKey = meshAssetKeyForEntry(entry);\n return Boolean(entryAssetUrl(entry, meshKey) && entryAssetHash(entry, meshKey));\n}\n\nexport function entryHasUrdf(entry) {\n const kind = normalizeString(entry?.kind).toLowerCase();\n if (kind === RENDER_FORMAT.SDF) {\n return Boolean(entryAssetUrl(entry, \"sdf\") && entryAssetHash(entry, \"sdf\"));\n }\n return Boolean(entryAssetUrl(entry, \"urdf\") && entryAssetHash(entry, \"urdf\"));\n}\n\nexport function entryHasReferences(entry) {\n return Boolean(\n entrySourceFormat(entry) === RENDER_FORMAT.STEP &&\n entryAssetUrl(entry, \"glb\") &&\n entryAssetHash(entry, \"selectorTopology\")\n );\n}\n\nexport function entryHasDisplayEdges(entry) {\n return Boolean(\n entrySourceFormat(entry) === RENDER_FORMAT.STEP &&\n entryAssetUrl(entry, \"glb\") &&\n entryAssetHash(entry, \"displayEdgeTopology\")\n );\n}\n\nexport function entryHasDxf(entry) {\n return Boolean(entryAssetUrl(entry, \"dxf\") && entryAssetHash(entry, \"dxf\"));\n}\n\nexport function entryHasGcode(entry) {\n return Boolean(entryAssetUrl(entry, \"gcode\") && entryAssetHash(entry, \"gcode\"));\n}\n\nexport function entryHasImplicitCad(entry) {\n return Boolean(entryAssetUrl(entry, \"implicit\") && entryAssetHash(entry, \"implicit\"));\n}\n\nexport function entryStepModuleUrl(entry) {\n return entrySourceFormat(entry) === RENDER_FORMAT.STEP\n ? normalizeString(entry?.moduleUrl)\n : \"\";\n}\n","import { entryHasMesh } from \"cadjs/lib/entryAssets.js\";\nimport { RENDER_FORMAT } from \"cadjs/lib/fileFormats.js\";\n\nexport const STEP_ARTIFACT_GENERATION_FAILURE_DISPLAY_THRESHOLD = 3;\n\nexport const BUILDABLE_STEP_ARTIFACT_ERROR_CODES = Object.freeze([\n \"missing_glb\",\n \"missing_step_topology\",\n \"missing_edge_topology\",\n \"missing_surface_edge_attributes\",\n \"missing_selector_topology\",\n \"missing_source_path\",\n \"missing_step_hash\",\n \"stale_step_artifact\",\n \"unsupported_step_topology\"\n]);\n\nconst BUILDABLE_STEP_ARTIFACT_ERROR_CODE_SET = new Set(BUILDABLE_STEP_ARTIFACT_ERROR_CODES);\nconst STEP_FILE_EXTENSION_RE = /\\.(step|stp)$/i;\n\nfunction normalizeStepArtifactFileRef(value) {\n return String(value || \"\").trim().replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\");\n}\n\nfunction valuesArray(value) {\n if (!value) {\n return [];\n }\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value !== \"string\" && typeof value[Symbol.iterator] === \"function\") {\n return Array.from(value);\n }\n return [value];\n}\n\nfunction addFileRef(refs, value) {\n const normalized = normalizeStepArtifactFileRef(value);\n if (normalized) {\n refs.add(normalized);\n }\n return normalized;\n}\n\nfunction addStepFileRef(refs, value) {\n const normalized = addFileRef(refs, value);\n if (!STEP_FILE_EXTENSION_RE.test(normalized)) {\n return;\n }\n const slashIndex = normalized.lastIndexOf(\"/\");\n const dir = slashIndex >= 0 ? `${normalized.slice(0, slashIndex)}/` : \"\";\n const filename = slashIndex >= 0 ? normalized.slice(slashIndex + 1) : normalized;\n refs.add(`${dir}.${filename}.glb`);\n}\n\nfunction fileRefsMatch(left, right) {\n const leftRef = normalizeStepArtifactFileRef(left);\n const rightRef = normalizeStepArtifactFileRef(right);\n return Boolean(leftRef && rightRef && leftRef === rightRef);\n}\n\nfunction fileRefMatchesAny(file, candidates) {\n return candidates.some((candidate) => fileRefsMatch(file, candidate));\n}\n\nexport function stepArtifactGenerationFailureCount(state) {\n const count = Number(state?.failureCount || 0);\n return Number.isFinite(count) && count > 0 ? Math.trunc(count) : 0;\n}\n\nexport function stepArtifactGenerationFileRefs(entry = null, artifact = entry?.artifact) {\n const refs = new Set();\n addStepFileRef(refs, entry?.file);\n addStepFileRef(refs, entry?.rootRelativeFile);\n addStepFileRef(refs, artifact?.stepPath);\n if (STEP_FILE_EXTENSION_RE.test(normalizeStepArtifactFileRef(artifact?.sourcePath))) {\n addStepFileRef(refs, artifact?.sourcePath);\n }\n addFileRef(refs, artifact?.glbPath);\n return [...refs];\n}\n\nexport function stepArtifactGenerationInProgress({\n entry = null,\n artifact = entry?.artifact,\n generationState = null,\n activeGenerationFiles = []\n} = {}) {\n const candidates = stepArtifactGenerationFileRefs(entry, artifact);\n if (String(generationState?.status || \"\").trim().toLowerCase() === \"loading\") {\n const stateFile = normalizeStepArtifactFileRef(generationState?.file);\n if (!stateFile || candidates.length === 0 || fileRefMatchesAny(stateFile, candidates)) {\n return true;\n }\n }\n\n return valuesArray(activeGenerationFiles)\n .map(normalizeStepArtifactFileRef)\n .filter(Boolean)\n .some((file) => fileRefMatchesAny(file, candidates));\n}\n\nexport function stepArtifactIssueShouldSuppress({\n entry = null,\n artifact = entry?.artifact,\n sourceFormat = RENDER_FORMAT.STEP,\n generationAvailable = true,\n generationState = null,\n activeGenerationFiles = []\n} = {}) {\n const candidateEntry = { ...(entry || {}), artifact };\n const generationInProgress = stepArtifactGenerationInProgress({\n entry: candidateEntry,\n artifact,\n generationState,\n activeGenerationFiles\n });\n if (!stepArtifactCanGenerate(\n candidateEntry,\n sourceFormat,\n { generationAvailable: generationAvailable || generationInProgress }\n )) {\n return false;\n }\n if (generationInProgress) {\n return true;\n }\n return stepArtifactGenerationFailureCount(generationState) <\n STEP_ARTIFACT_GENERATION_FAILURE_DISPLAY_THRESHOLD;\n}\n\nexport function validateGeneratedStepArtifactPayload(payload, { file = \"\" } = {}) {\n const generatedEntry = payload?.entry;\n if (!generatedEntry) {\n return;\n }\n const fileLabel = String(file || generatedEntry.file || \"\").trim();\n if (!entryHasMesh(generatedEntry)) {\n throw new Error(`Generated STEP artifact is not renderable: ${fileLabel || \"STEP file\"}`);\n }\n if (stepArtifactCanGenerate(generatedEntry, RENDER_FORMAT.STEP, { generationAvailable: true })) {\n const code = String(generatedEntry?.artifact?.error || \"step_artifact_unavailable\").trim();\n throw new Error(`Generated STEP artifact still reports ${code}: ${fileLabel || \"STEP file\"}`);\n }\n}\n\nexport async function runStepArtifactGenerationWithRetries({\n key = \"\",\n file = \"\",\n initialFailureCount = 0,\n generate,\n isCurrent = () => true,\n onState = () => {},\n onFinalError = () => {},\n threshold = STEP_ARTIFACT_GENERATION_FAILURE_DISPLAY_THRESHOLD,\n validatePayload = null\n} = {}) {\n if (typeof generate !== \"function\") {\n throw new TypeError(\"STEP artifact generation requires a generate function.\");\n }\n\n const maxFailures = Math.max(1, Math.trunc(Number(threshold) || 0));\n let failureCount = Math.min(\n stepArtifactGenerationFailureCount({ failureCount: initialFailureCount }),\n maxFailures\n );\n\n while (failureCount < maxFailures) {\n const attempt = failureCount + 1;\n onState({\n key,\n file,\n status: \"loading\",\n failureCount,\n attempt,\n error: \"\"\n });\n\n try {\n const payload = await generate(file, { attempt, failureCount });\n if (!isCurrent()) {\n return { status: \"cancelled\", failureCount };\n }\n if (typeof validatePayload === \"function\") {\n validatePayload(payload);\n }\n const readyState = {\n key,\n file,\n status: \"ready\",\n failureCount: 0,\n error: \"\"\n };\n onState(readyState);\n return { status: \"ready\", state: readyState, payload };\n } catch (generationError) {\n if (!isCurrent()) {\n return { status: \"cancelled\", failureCount };\n }\n failureCount += 1;\n const message = generationError instanceof Error\n ? generationError.message\n : String(generationError);\n const failedState = {\n key,\n file,\n status: failureCount >= maxFailures ? \"error\" : \"loading\",\n failureCount,\n attempt: Math.min(failureCount + 1, maxFailures),\n error: message\n };\n onState(failedState);\n if (failedState.status === \"error\") {\n onFinalError(message, failedState, generationError);\n return { status: \"error\", state: failedState, error: generationError };\n }\n }\n }\n\n const exhaustedState = {\n key,\n file,\n status: \"error\",\n failureCount,\n attempt: maxFailures,\n error: \"\"\n };\n return { status: \"error\", state: exhaustedState };\n}\n\nexport function stepArtifactIsStale(entry, sourceFormat) {\n return (\n sourceFormat === RENDER_FORMAT.STEP &&\n entry?.artifact?.ok === false &&\n (\n entry.artifact.stale === true ||\n String(entry.artifact.error || \"\") === \"stale_step_artifact\"\n )\n );\n}\n\nexport function stepArtifactCanGenerate(entry, sourceFormat, { generationAvailable = true } = {}) {\n if (!generationAvailable || sourceFormat !== RENDER_FORMAT.STEP) {\n return false;\n }\n if (entry?.artifact?.ok) {\n return false;\n }\n return BUILDABLE_STEP_ARTIFACT_ERROR_CODE_SET.has(String(entry?.artifact?.error || \"\"));\n}\n\nexport function stepArtifactNeedsWarning(entry, sourceFormat, options = {}) {\n return (\n sourceFormat === RENDER_FORMAT.STEP &&\n entry?.artifact?.ok === false &&\n !stepArtifactCanGenerate(entry, sourceFormat, options)\n );\n}\n","import {\n isRobotRenderFormat,\n RENDER_FORMAT\n} from \"cadjs/lib/fileFormats.js\";\nimport {\n stepArtifactCanGenerate,\n stepArtifactGenerationInProgress,\n stepArtifactIsStale,\n stepArtifactNeedsWarning\n} from \"./stepArtifactStatus.js\";\n\nexport function entryIconStatus(entry, {\n sourceFormat = \"\",\n entryKey = \"\",\n hasMesh = true,\n hasDxf = true,\n hasGcode = true,\n hasImplicit = true,\n hasUrdf = true,\n activeGenerationFiles = [],\n activeStepArtifactGenerationFile = \"\",\n activeStepArtifactGenerationFiles = [],\n stepArtifactGenerationAvailable = true\n} = {}) {\n const normalizedSourceFormat = String(sourceFormat || \"\").trim().toLowerCase();\n const activeScriptGenerationFileSet = new Set(\n [\n ...(Array.isArray(activeGenerationFiles)\n ? activeGenerationFiles\n : activeGenerationFiles\n ? [activeGenerationFiles]\n : [])\n ]\n .map((file) => String(file || \"\").trim())\n .filter(Boolean)\n );\n const activeArtifactGenerationFileSet = new Set(\n [\n ...(Array.isArray(activeStepArtifactGenerationFiles)\n ? activeStepArtifactGenerationFiles\n : activeStepArtifactGenerationFiles\n ? [activeStepArtifactGenerationFiles]\n : []),\n ...(Array.isArray(activeStepArtifactGenerationFile)\n ? activeStepArtifactGenerationFile\n : activeStepArtifactGenerationFile\n ? [activeStepArtifactGenerationFile]\n : [])\n ]\n .map((file) => String(file || \"\").trim())\n .filter(Boolean)\n );\n const pending = normalizedSourceFormat === RENDER_FORMAT.DXF\n ? !hasDxf\n : normalizedSourceFormat === RENDER_FORMAT.GCODE\n ? !hasGcode\n : normalizedSourceFormat === RENDER_FORMAT.IMPLICIT\n ? !hasImplicit\n : isRobotRenderFormat(normalizedSourceFormat)\n ? !hasUrdf\n : !hasMesh;\n const artifactGenerationFiles = [\n ...activeArtifactGenerationFileSet,\n ...activeScriptGenerationFileSet\n ];\n const artifactGenerationInProgress = stepArtifactGenerationInProgress({\n entry,\n activeGenerationFiles: artifactGenerationFiles\n });\n const options = {\n generationAvailable: stepArtifactGenerationAvailable || artifactGenerationInProgress\n };\n const artifactCanGenerate = stepArtifactCanGenerate(entry, normalizedSourceFormat, options);\n const artifactBuildable = artifactCanGenerate;\n const artifactStale = stepArtifactIsStale(entry, normalizedSourceFormat);\n const artifactErrorCode = String(entry?.artifact?.error || \"\").trim();\n const generatorRunning = Boolean(entryKey && activeScriptGenerationFileSet.has(entryKey));\n const artifactWarning = !generatorRunning &&\n !artifactGenerationInProgress &&\n stepArtifactNeedsWarning(entry, normalizedSourceFormat, {\n generationAvailable: stepArtifactGenerationAvailable\n });\n const artifactGenerating = Boolean(\n artifactBuildable &&\n !generatorRunning &&\n artifactGenerationInProgress\n );\n const loading = generatorRunning || artifactGenerating || (pending && !artifactWarning && !artifactBuildable);\n const statusLabel = generatorRunning\n ? \"generating\"\n : artifactGenerating\n ? \"generating artifact\"\n : artifactWarning\n ? (artifactStale ? \"artifact stale\" : artifactErrorCode === \"missing_glb\" ? \"artifacts missing\" : \"artifact warning\")\n : artifactBuildable\n ? \"artifact generates on open\"\n : pending\n ? \"pending\"\n : \"ready\";\n\n return {\n artifactBuildable,\n artifactGenerating,\n artifactStale,\n artifactWarning,\n loading,\n pending,\n sourceFormat: normalizedSourceFormat,\n statusLabel\n };\n}\n\nexport function entryStepSourceKind(entry) {\n const artifactSourceKind = String(entry?.artifact?.sourceKind || \"\").trim().toLowerCase();\n if (artifactSourceKind === \"python\") {\n return artifactSourceKind;\n }\n const sourceKind = String(entry?.sourceKind || entry?.stepSourceKind || \"\").trim().toLowerCase();\n if (sourceKind === \"python\") {\n return sourceKind;\n }\n return \"\";\n}\n\nexport function entryIsPythonBackedStep(entry) {\n return entryStepSourceKind(entry) === \"python\";\n}\n","function cleanText(value) {\n return String(value ?? \"\").trim();\n}\n\nexport function normalizeRelativePath(value) {\n return cleanText(value)\n .replace(/\\\\/g, \"/\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n}\n\nfunction normalizePathPrefix(value) {\n return cleanText(value)\n .replace(/\\\\/g, \"/\")\n .replace(/\\/+$/, \"\");\n}\n\nfunction stripQueryAndHash(value) {\n return cleanText(value).replace(/[?#].*$/, \"\");\n}\n\nfunction pathnameFromUrlOrPath(value) {\n const text = cleanText(value);\n if (!text) {\n return \"\";\n }\n try {\n return new URL(text, \"http://cad.local\").pathname;\n } catch {\n return stripQueryAndHash(text);\n }\n}\n\nfunction pathRelativeToPrefix(filePath, prefix) {\n const normalizedPath = normalizePathPrefix(filePath);\n const normalizedPrefix = normalizePathPrefix(prefix);\n if (!normalizedPath || !normalizedPrefix) {\n return \"\";\n }\n if (normalizedPath === normalizedPrefix) {\n return \"\";\n }\n return normalizedPath.startsWith(`${normalizedPrefix}/`)\n ? normalizedPath.slice(normalizedPrefix.length + 1)\n : \"\";\n}\n\nexport function stripViewerRootDirPrefix(filePath, rootDir = \"\") {\n const normalizedPath = normalizeRelativePath(filePath);\n const normalizedRootDir = normalizeRelativePath(rootDir);\n if (!normalizedPath || !normalizedRootDir) {\n return normalizedPath;\n }\n if (normalizedPath === normalizedRootDir) {\n return \"\";\n }\n return normalizedPath.startsWith(`${normalizedRootDir}/`)\n ? normalizedPath.slice(normalizedRootDir.length + 1)\n : normalizedPath;\n}\n\nfunction suffixFromAnchorDirectory(filePath, anchorFile = \"\") {\n const normalizedPath = normalizeRelativePath(filePath);\n const normalizedAnchor = normalizeRelativePath(anchorFile);\n if (!normalizedPath || !normalizedAnchor) {\n return normalizedPath;\n }\n const anchorParts = normalizedAnchor.split(\"/\").filter(Boolean);\n anchorParts.pop();\n if (!anchorParts.length) {\n return normalizedPath;\n }\n const anchorDir = anchorParts.join(\"/\");\n const marker = `/${anchorDir}/`;\n const searchable = `/${normalizedPath}`;\n const markerIndex = searchable.lastIndexOf(marker);\n return markerIndex >= 0\n ? searchable.slice(markerIndex + 1)\n : normalizedPath;\n}\n\nexport function viewerRootRelativePath(value, viewerServerInfo = {}, {\n anchorFile = \"\",\n} = {}) {\n const text = cleanText(value);\n if (!text) {\n return \"\";\n }\n\n const rootPathRelative = pathRelativeToPrefix(stripQueryAndHash(text), viewerServerInfo?.rootPath);\n if (rootPathRelative) {\n return normalizeRelativePath(rootPathRelative);\n }\n\n const directoryRootRelative = pathRelativeToPrefix(stripQueryAndHash(text), viewerServerInfo?.directoryRoot);\n if (directoryRootRelative) {\n return suffixFromAnchorDirectory(\n stripViewerRootDirPrefix(directoryRootRelative, viewerServerInfo?.rootDir),\n anchorFile\n );\n }\n\n const pathText = normalizeRelativePath(pathnameFromUrlOrPath(text));\n return suffixFromAnchorDirectory(\n stripViewerRootDirPrefix(pathText, viewerServerInfo?.rootDir),\n anchorFile\n );\n}\n\nexport function viewerPathOptionsFromServerInfo(viewerServerInfo = {}) {\n return {\n rootDir: viewerServerInfo?.rootDir || \"\",\n rootPath: viewerServerInfo?.rootPath || \"\",\n directoryRoot: viewerServerInfo?.directoryRoot || \"\",\n };\n}\n","const CAD_VIEWER_ACTIVE_DIR_SESSION_STORAGE_KEY = \"cad-viewer:active-dir:v1\";\n\nfunction sessionStorageForWindow() {\n if (typeof window === \"undefined\") {\n return null;\n }\n try {\n return window.sessionStorage || null;\n } catch {\n return null;\n }\n}\n\nexport function readStoredActiveCadDir() {\n const storage = sessionStorageForWindow();\n if (!storage) {\n return \"\";\n }\n try {\n return String(storage.getItem(CAD_VIEWER_ACTIVE_DIR_SESSION_STORAGE_KEY) || \"\").trim();\n } catch {\n return \"\";\n }\n}\n\nexport function writeStoredActiveCadDir(activeDir) {\n const storage = sessionStorageForWindow();\n if (!storage) {\n return;\n }\n const normalizedDir = String(activeDir || \"\").trim();\n try {\n if (normalizedDir) {\n storage.setItem(CAD_VIEWER_ACTIVE_DIR_SESSION_STORAGE_KEY, normalizedDir);\n } else {\n storage.removeItem(CAD_VIEWER_ACTIVE_DIR_SESSION_STORAGE_KEY);\n }\n } catch {\n // Storage failures should not block Viewer navigation.\n }\n}\n\nexport function rememberActiveCadDir(candidateDir) {\n const normalizedCandidate = String(candidateDir || \"\").trim();\n writeStoredActiveCadDir(normalizedCandidate);\n return normalizedCandidate;\n}\n","export const DEFAULT_VIEWER_GITHUB_URL = \"https://github.com/earthtojake/text-to-cad\";\nexport const DEFAULT_VIEWER_DISCORD_URL = \"https://discord.gg/5FGB9DwJYU\";\nexport const DEFAULT_VIEWER_SKILLS_INSTALL_COMMAND = \"npx skills install earthtojake/text-to-cad\";\n\nexport function normalizeViewerDefaultFile(value = \"\") {\n const rawValue = String(value ?? \"\").trim();\n return rawValue.replace(/\\\\/g, \"/\").replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n}\n\nexport function normalizeViewerGithubUrl(value = \"\", fallback = DEFAULT_VIEWER_GITHUB_URL) {\n return normalizeHttpUrlCandidate(value) || normalizeHttpUrlCandidate(fallback);\n}\n\nexport function normalizeViewerDiscordUrl(value = \"\", fallback = DEFAULT_VIEWER_DISCORD_URL) {\n return normalizeHttpUrlCandidate(value) || normalizeHttpUrlCandidate(fallback);\n}\n\nexport function viewerGithubRepositoryUrl(value = \"\", fallback = DEFAULT_VIEWER_GITHUB_URL) {\n const normalized = normalizeViewerGithubUrl(value, fallback);\n if (!normalized) {\n return \"\";\n }\n try {\n const url = new URL(normalized);\n if (url.hostname.toLowerCase() !== \"github.com\") {\n return normalized.replace(/\\/+$/, \"\");\n }\n const [, owner = \"\", repo = \"\"] = url.pathname.split(\"/\");\n if (!owner || !repo) {\n return normalized.replace(/\\/+$/, \"\");\n }\n return new URL(`/${owner}/${repo}`, url.origin).href.replace(/\\/+$/, \"\");\n } catch {\n return \"\";\n }\n}\n\nexport function viewerGithubReleaseUrl(version = \"\", value = \"\", fallback = DEFAULT_VIEWER_GITHUB_URL) {\n const normalizedVersion = String(version || \"\").trim();\n const repositoryUrl = viewerGithubRepositoryUrl(value, fallback);\n if (!normalizedVersion || !repositoryUrl) {\n return \"\";\n }\n return `${repositoryUrl}/releases/tag/${encodeURIComponent(normalizedVersion)}`;\n}\n\nexport function viewerGithubLatestReleaseUrl(value = \"\", fallback = DEFAULT_VIEWER_GITHUB_URL) {\n const repositoryUrl = viewerGithubRepositoryUrl(value, fallback);\n if (!repositoryUrl) {\n return \"\";\n }\n return `${repositoryUrl}/releases/latest`;\n}\n\nexport function viewerGithubLatestReleaseApiUrl(value = \"\", fallback = DEFAULT_VIEWER_GITHUB_URL) {\n const repositoryUrl = viewerGithubRepositoryUrl(value, fallback);\n if (!repositoryUrl) {\n return \"\";\n }\n\n try {\n const url = new URL(repositoryUrl);\n if (url.hostname.toLowerCase() !== \"github.com\") {\n return \"\";\n }\n const [, rawOwner = \"\", rawRepo = \"\"] = url.pathname.split(\"/\");\n const owner = decodeURIComponent(rawOwner);\n const repo = decodeURIComponent(rawRepo);\n if (!owner || !repo) {\n return \"\";\n }\n return `https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/releases/latest`;\n } catch {\n return \"\";\n }\n}\n\nexport function isViewerReleaseNewer(currentVersion = \"\", candidateVersion = \"\") {\n const current = parseViewerReleaseVersion(currentVersion);\n const candidate = parseViewerReleaseVersion(candidateVersion);\n return Boolean(current && candidate && compareParsedViewerReleaseVersions(candidate, current) > 0);\n}\n\nexport function isViewerReleaseMajorMinorNewer(currentVersion = \"\", candidateVersion = \"\") {\n const current = parseViewerReleaseVersion(currentVersion);\n const candidate = parseViewerReleaseVersion(candidateVersion);\n if (!current || !candidate || compareParsedViewerReleaseVersions(candidate, current) <= 0) {\n return false;\n }\n return candidate.parts[0] > current.parts[0] || candidate.parts[1] > current.parts[1];\n}\n\nexport function normalizeViewerSkillsInstallCommand(\n value = \"\",\n fallback = DEFAULT_VIEWER_SKILLS_INSTALL_COMMAND\n) {\n const command = cleanInstallCommandCandidate(value);\n if (/^npx\\s+skills\\s+install(?:\\s+\\S+)+$/iu.test(command)) {\n return command;\n }\n return String(fallback || \"\").trim();\n}\n\nexport function viewerSkillsInstallCommandFromText(\n value = \"\",\n fallback = DEFAULT_VIEWER_SKILLS_INSTALL_COMMAND\n) {\n const source = String(value || \"\");\n const candidates = [\n ...Array.from(source.matchAll(/`([^`\\r\\n]*\\bnpx\\s+skills\\s+install\\b[^`\\r\\n]*)`/giu), (match) => match[1]),\n ...Array.from(source.matchAll(/(?:^|\\n)\\s*([^\\r\\n]*\\bnpx\\s+skills\\s+install\\b[^\\r\\n]*)/giu), (match) => match[1])\n ];\n\n for (const candidate of candidates) {\n const command = normalizeViewerSkillsInstallCommand(candidate, \"\");\n if (command) {\n return command;\n }\n }\n\n return String(fallback || \"\").trim();\n}\n\nfunction normalizeHttpUrlCandidate(value = \"\") {\n const rawValue = String(value ?? \"\").trim();\n if (!rawValue) {\n return \"\";\n }\n const urlValue = /^[a-z][a-z\\d+.-]*:\\/\\//i.test(rawValue)\n ? rawValue\n : `https://${rawValue.replace(/^\\/+/, \"\")}`;\n\n try {\n const url = new URL(urlValue);\n return [\"http:\", \"https:\"].includes(url.protocol) ? url.href : \"\";\n } catch {\n return \"\";\n }\n}\n\nfunction cleanInstallCommandCandidate(value = \"\") {\n return String(value || \"\")\n .trim()\n .replace(/^`+|`+$/g, \"\")\n .replace(/^\\s*(?:\\$|>)\\s*/u, \"\")\n .replace(/\\s+/gu, \" \");\n}\n\nfunction parseViewerReleaseVersion(value = \"\") {\n const rawValue = String(value ?? \"\")\n .trim()\n .replace(/^refs\\/tags\\//i, \"\")\n .replace(/^v/i, \"\");\n if (!rawValue) {\n return null;\n }\n\n const withoutBuild = rawValue.split(\"+\")[0];\n const [core = \"\", ...prereleaseParts] = withoutBuild.split(\"-\");\n const match = core.match(/^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?$/u);\n if (!match) {\n return null;\n }\n\n return {\n parts: [\n Number(match[1]),\n Number(match[2] || 0),\n Number(match[3] || 0)\n ],\n prerelease: prereleaseParts.join(\"-\").split(\".\").filter(Boolean)\n };\n}\n\nfunction compareParsedViewerReleaseVersions(left, right) {\n for (let index = 0; index < 3; index += 1) {\n const difference = left.parts[index] - right.parts[index];\n if (difference !== 0) {\n return difference;\n }\n }\n\n return compareViewerPrereleaseIdentifiers(left.prerelease, right.prerelease);\n}\n\nfunction compareViewerPrereleaseIdentifiers(left, right) {\n if (!left.length && !right.length) {\n return 0;\n }\n if (!left.length) {\n return 1;\n }\n if (!right.length) {\n return -1;\n }\n\n const length = Math.max(left.length, right.length);\n for (let index = 0; index < length; index += 1) {\n const leftValue = left[index];\n const rightValue = right[index];\n if (leftValue === undefined) {\n return -1;\n }\n if (rightValue === undefined) {\n return 1;\n }\n if (leftValue === rightValue) {\n continue;\n }\n\n const leftNumeric = /^\\d+$/u.test(leftValue);\n const rightNumeric = /^\\d+$/u.test(rightValue);\n if (leftNumeric && rightNumeric) {\n return Number(leftValue) - Number(rightValue);\n }\n if (leftNumeric) {\n return -1;\n }\n if (rightNumeric) {\n return 1;\n }\n return leftValue.localeCompare(rightValue);\n }\n\n return 0;\n}\n","import {\n readStoredActiveCadDir,\n rememberActiveCadDir\n} from \"./cadViewerDirectorySession.mjs\";\nimport { normalizeViewerDefaultFile } from \"../../shared/viewerConfig.mjs\";\n\nconst CAD_DIR_QUERY_PARAM = \"dir\";\nconst CAD_QUERY_PARAM = \"file\";\n\nexport function fileKey(entry) {\n return String(entry?.file || \"\").trim();\n}\n\nexport function cadFileParamForEntry(entry) {\n const file = fileKey(entry);\n const rootRelativeFile = String(entry?.rootRelativeFile || \"\").trim();\n return rootRelativeFile || file;\n}\n\nexport function cadPathForEntry(entry) {\n const file = cadFileParamForEntry(entry);\n return file.replace(/\\.(step|stp|stl|3mf|glb|gcode|dxf|urdf|srdf|sdf)$/i, \"\");\n}\n\nfunction writeUrl(url, { history = \"replace\" } = {}) {\n const nextSearch = url.searchParams.toString();\n const nextUrl = `${url.pathname}${nextSearch ? `?${nextSearch}` : \"\"}${url.hash}`;\n const currentUrl = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n if (nextUrl === currentUrl) {\n return false;\n }\n if (history === \"push\" && typeof window.history?.pushState === \"function\") {\n window.history.pushState({}, \"\", nextUrl);\n } else {\n window.history.replaceState({}, \"\", nextUrl);\n }\n return true;\n}\n\nfunction normalizeUrlPath(value) {\n const normalized = String(value || \"\").trim().replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\");\n return normalized.replace(/^\\/+/, \"\");\n}\n\nexport function normalizeCadFileQueryParam(value) {\n return normalizeUrlPath(value);\n}\n\nfunction sourceExtensionForPath(value) {\n const match = /\\.([^.\\/]+)$/.exec(String(value || \"\").trim());\n return match ? `.${match[1]}` : \"\";\n}\n\nfunction appendExtension(value, extension) {\n const normalizedValue = normalizeUrlPath(value);\n const normalizedExtension = String(extension || \"\").trim();\n if (!normalizedValue || !normalizedExtension) {\n return normalizedValue;\n }\n return normalizedValue.toLowerCase().endsWith(normalizedExtension.toLowerCase())\n ? normalizedValue\n : `${normalizedValue}${normalizedExtension}`;\n}\n\nfunction fileAliasesForEntry(entry) {\n const aliases = new Set();\n const addAlias = (value) => {\n const normalizedValue = normalizeUrlPath(value);\n if (normalizedValue) {\n aliases.add(normalizedValue);\n }\n };\n\n const file = cadFileParamForEntry(entry);\n addAlias(file);\n\n const cadPath = cadPathForEntry(entry);\n const extension = sourceExtensionForPath(file);\n addAlias(appendExtension(cadPath, extension));\n\n return aliases;\n}\n\nexport function readDefaultCadParam() {\n return normalizeViewerDefaultFile(import.meta.env?.VIEWER_DEFAULT_FILE) || null;\n}\n\nexport function readCadParam() {\n if (typeof window === \"undefined\") {\n return null;\n }\n const params = new URLSearchParams(window.location.search);\n const value = params.get(CAD_QUERY_PARAM);\n const normalizedValue = typeof value === \"string\"\n ? normalizeCadFileQueryParam(value)\n : \"\";\n return normalizedValue || null;\n}\n\nexport function readCadDirParam() {\n if (typeof window === \"undefined\") {\n return null;\n }\n const params = new URLSearchParams(window.location.search);\n const value = params.get(CAD_DIR_QUERY_PARAM);\n const normalizedValue = typeof value === \"string\"\n ? String(value).trim()\n : \"\";\n return normalizedValue || null;\n}\n\nexport function findEntryByUrlPath(entries, urlPath) {\n const normalizedUrlPath = normalizeCadFileQueryParam(urlPath);\n if (!normalizedUrlPath) {\n return null;\n }\n return entries.find((entry) => fileAliasesForEntry(entry).has(normalizedUrlPath)) || null;\n}\n\nexport function shouldDeferFileParamSelection({\n explicitFileParam = \"\",\n matchingEntry = null,\n selectedEntry = null,\n catalogHydrated = false,\n catalogRefreshing = false\n} = {}) {\n const normalizedFileParam = normalizeCadFileQueryParam(explicitFileParam);\n if (!normalizedFileParam || selectedEntry) {\n return false;\n }\n if (matchingEntry) {\n return true;\n }\n return !catalogHydrated || catalogRefreshing;\n}\n\nexport function missingFileRefForCatalog({\n explicitFileParam = \"\",\n matchingEntry = null,\n selectedEntry = null,\n catalogHydrated = false,\n catalogRefreshing = false\n} = {}) {\n const normalizedFileParam = normalizeCadFileQueryParam(explicitFileParam);\n if (\n !normalizedFileParam ||\n selectedEntry ||\n matchingEntry ||\n !catalogHydrated ||\n catalogRefreshing\n ) {\n return \"\";\n }\n return normalizedFileParam;\n}\n\nexport function selectedEntryKeyFromUrl(entries, { defaultFile = readDefaultCadParam() } = {}) {\n const explicitFilePath = readCadParam();\n if (explicitFilePath) {\n const match = findEntryByUrlPath(entries, explicitFilePath);\n return match ? fileKey(match) : \"\";\n }\n\n const match = findEntryByUrlPath(entries, normalizeCadFileQueryParam(defaultFile));\n return match ? fileKey(match) : \"\";\n}\n\nexport function writeCadParam(urlPath, { history = \"replace\" } = {}) {\n if (typeof window === \"undefined\") {\n return;\n }\n const normalizedUrlPath = normalizeCadFileQueryParam(urlPath);\n const url = new URL(window.location.href);\n url.searchParams.delete(\"refs\");\n if (normalizedUrlPath) {\n url.searchParams.set(CAD_QUERY_PARAM, normalizedUrlPath);\n if (url.searchParams.has(CAD_DIR_QUERY_PARAM)) {\n const activeDir = rememberActiveCadDir(url.searchParams.get(CAD_DIR_QUERY_PARAM));\n if (activeDir && readStoredActiveCadDir() !== activeDir) {\n writeUrl(url, { history });\n return;\n }\n url.searchParams.delete(CAD_DIR_QUERY_PARAM);\n }\n } else {\n url.searchParams.delete(CAD_QUERY_PARAM);\n }\n writeUrl(url, { history });\n}\n\nexport function writeCadDirParam(dirPath, { history = \"replace\", preserveFile = false } = {}) {\n if (typeof window === \"undefined\") {\n return false;\n }\n const normalizedDirPath = String(dirPath || \"\").trim();\n const url = new URL(window.location.href);\n url.searchParams.delete(\"refs\");\n if (!preserveFile) {\n url.searchParams.delete(CAD_QUERY_PARAM);\n }\n if (normalizedDirPath) {\n url.searchParams.set(CAD_DIR_QUERY_PARAM, normalizedDirPath);\n rememberActiveCadDir(normalizedDirPath);\n } else {\n url.searchParams.delete(CAD_DIR_QUERY_PARAM);\n }\n return writeUrl(url, { history });\n}\n\nfunction compareSidebarLabels(a, b) {\n return String(a || \"\").localeCompare(String(b || \"\"), undefined, {\n numeric: true,\n sensitivity: \"base\"\n });\n}\n\nfunction entryLeafName(entry) {\n const file = fileKey(entry);\n if (!file) {\n return \"\";\n }\n const parts = file.split(\"/\");\n return parts[parts.length - 1] || file;\n}\n\nfunction normalizedEntryStem(entry) {\n return entryLeafName(entry)\n .replace(/\\.step\\.json$/i, \"\")\n .replace(/\\.urdf\\.json$/i, \"\")\n .replace(/\\.(step|stp|stl|3mf|glb|gcode|dxf|urdf|srdf|sdf|py)$/i, \"\");\n}\n\nexport function sidebarDirectoryIdForEntry(entry) {\n const file = String(entry?.rootRelativeFile || fileKey(entry) || \"\").trim();\n const parts = file.split(\"/\").filter(Boolean);\n parts.pop();\n return parts.join(\"/\");\n}\n\nfunction sourceExtensionForEntry(entry) {\n const leafName = entryLeafName(entry);\n const match = /\\.([^.]+)$/.exec(leafName);\n return String(match?.[1] || \"\").trim().toLowerCase();\n}\n\nexport function filenameLabelForEntry(entry) {\n const stem = normalizedEntryStem(entry);\n if (!stem) {\n return \"\";\n }\n const kind = String(entry?.kind || \"\").trim().toLowerCase();\n const directSourceFormats = new Set([\"dxf\", \"urdf\", \"srdf\", \"sdf\", \"stl\", \"3mf\", \"glb\", \"gcode\", \"implicit\"]);\n const sourceFormat = directSourceFormats.has(kind)\n ? kind\n : String(sourceExtensionForEntry(entry) || \"step\").trim().toLowerCase();\n\n if (sourceFormat === \"dxf\") {\n return `${stem}.dxf`;\n }\n if (sourceFormat === \"urdf\" || entry?.kind === \"urdf\") {\n return `${stem}.urdf`;\n }\n if (sourceFormat === \"srdf\" || entry?.kind === \"srdf\") {\n return `${stem}.srdf`;\n }\n if (sourceFormat === \"sdf\" || entry?.kind === \"sdf\") {\n return `${stem}.sdf`;\n }\n if (sourceFormat === \"stl\" || entry?.kind === \"stl\") {\n return `${stem}.stl`;\n }\n if (sourceFormat === \"3mf\" || entry?.kind === \"3mf\") {\n return `${stem}.3mf`;\n }\n if (sourceFormat === \"glb\" || entry?.kind === \"glb\") {\n return `${stem}.glb`;\n }\n if (sourceFormat === \"gcode\" || entry?.kind === \"gcode\") {\n return `${stem}.gcode`;\n }\n if (sourceFormat === \"implicit\" || entry?.kind === \"implicit\") {\n return entryLeafName(entry);\n }\n return `${stem}.${sourceFormat === \"stp\" ? \"stp\" : \"step\"}`;\n}\n\nexport function sidebarLabelForEntry(entry) {\n return filenameLabelForEntry(entry);\n}\n\nfunction compareSidebarEntries(a, b) {\n const nameDiff = sidebarLabelForEntry(a).localeCompare(sidebarLabelForEntry(b), undefined, {\n numeric: true,\n sensitivity: \"base\"\n });\n if (nameDiff !== 0) {\n return nameDiff;\n }\n return fileKey(a).localeCompare(fileKey(b), undefined, {\n numeric: true,\n sensitivity: \"base\"\n });\n}\n\nfunction createSidebarDirectoryNode(id, name) {\n return {\n id,\n name,\n entries: [],\n children: new Map()\n };\n}\n\nfunction finalizeSidebarDirectoryNode(node) {\n return {\n id: node.id,\n name: node.name,\n entries: [...node.entries].sort(compareSidebarEntries),\n directories: [...node.children.values()]\n .map(finalizeSidebarDirectoryNode)\n .sort((a, b) => compareSidebarLabels(a.name, b.name))\n };\n}\n\nexport function buildSidebarDirectoryTree(entries, { rootName = \"Directory\" } = {}) {\n const root = createSidebarDirectoryNode(\"\", String(rootName || \"Directory\"));\n\n for (const entry of entries) {\n const directoryId = sidebarDirectoryIdForEntry(entry);\n const directoryParts = directoryId ? directoryId.split(\"/\") : [];\n let currentNode = root;\n let currentId = \"\";\n\n for (const part of directoryParts) {\n currentId = currentId ? `${currentId}/${part}` : part;\n const childNode = currentNode.children.get(part) || createSidebarDirectoryNode(currentId, part);\n currentNode.children.set(part, childNode);\n currentNode = childNode;\n }\n\n currentNode.entries.push(entry);\n }\n\n return finalizeSidebarDirectoryNode(root);\n}\n\nexport function collectSidebarDirectoryIds(directoryNode, result = []) {\n for (const directory of directoryNode.directories || []) {\n result.push(directory.id);\n collectSidebarDirectoryIds(directory, result);\n }\n return result;\n}\n\nexport function findSidebarDirectoryById(directoryNode, directoryId) {\n const targetId = String(directoryId || \"\").trim();\n if (!directoryNode) {\n return null;\n }\n if (String(directoryNode.id || \"\") === targetId) {\n return directoryNode;\n }\n\n for (const childDirectory of directoryNode.directories || []) {\n const match = findSidebarDirectoryById(childDirectory, targetId);\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport function sidebarDirectoryPath(directoryNode, directoryId) {\n const targetId = String(directoryId || \"\").trim();\n if (!directoryNode) {\n return [];\n }\n if (!targetId) {\n return [directoryNode];\n }\n\n const result = [];\n const visit = (node) => {\n result.push(node);\n if (String(node.id || \"\") === targetId) {\n return true;\n }\n\n for (const childDirectory of node.directories || []) {\n if (visit(childDirectory)) {\n return true;\n }\n }\n\n result.pop();\n return false;\n };\n\n return visit(directoryNode) ? result : [];\n}\n\nexport function listSidebarItems(directory) {\n return [\n ...(directory.directories || []).map((childDirectory) => ({\n type: \"directory\",\n key: `directory:${childDirectory.id}`,\n label: childDirectory.name,\n value: childDirectory\n })),\n ...(directory.entries || []).map((entry) => ({\n type: \"entry\",\n key: `entry:${fileKey(entry)}`,\n label: sidebarLabelForEntry(entry),\n value: entry\n }))\n ].sort((a, b) => {\n const labelDiff = compareSidebarLabels(a.label, b.label);\n if (labelDiff !== 0) {\n return labelDiff;\n }\n return a.key.localeCompare(b.key, undefined, {\n numeric: true,\n sensitivity: \"base\"\n });\n });\n}\n\nexport function collectAncestorDirectoryIds(directoryId) {\n if (!directoryId) {\n return [];\n }\n\n const parts = String(directoryId).split(\"/\").filter(Boolean);\n const ancestorIds = [];\n let currentId = \"\";\n\n for (const part of parts) {\n currentId = currentId ? `${currentId}/${part}` : part;\n ancestorIds.push(currentId);\n }\n\n return ancestorIds;\n}\n","import { entryStepSourceKind } from \"./entryIconStatus.js\";\nimport {\n normalizeRelativePath as normalizedRelativePath,\n stripViewerRootDirPrefix,\n viewerRootRelativePath\n} from \"./pathPresentation.js\";\nimport { fileKey } from \"./sidebar.js\";\n\nfunction basenameFromFileRef(value) {\n const normalized = normalizedRelativePath(value);\n return normalized.split(\"/\").filter(Boolean).pop() || \"\";\n}\n\nfunction normalizedFilePath(value) {\n const normalized = String(value || \"\").trim().replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\");\n return normalized.startsWith(\"/\")\n ? normalized\n : normalized.replace(/^\\/+/, \"\");\n}\n\nfunction dirnameFromFileRef(value) {\n const parts = normalizedRelativePath(value).split(\"/\").filter(Boolean);\n parts.pop();\n return parts.join(\"/\");\n}\n\nfunction joinRelativePath(...parts) {\n return parts\n .map((part) => normalizedRelativePath(part))\n .filter(Boolean)\n .join(\"/\");\n}\n\nfunction sameStemPythonFilename(value) {\n const filename = basenameFromFileRef(value);\n return filename.replace(/\\.(step|stp)$/i, \".py\");\n}\n\nfunction sameStemPythonFileRef(value) {\n const dirname = dirnameFromFileRef(value);\n const filename = sameStemPythonFilename(value);\n return joinRelativePath(dirname, filename);\n}\n\nfunction isStepFileRef(value) {\n return /\\.(step|stp)$/i.test(normalizedRelativePath(value));\n}\n\nfunction filenameFromUrl(value) {\n try {\n return basenameFromFileRef(new URL(String(value || \"\")).pathname);\n } catch {\n return \"\";\n }\n}\n\nfunction cleanUrl(value) {\n const text = String(value || \"\").trim();\n if (!text) {\n return \"\";\n }\n try {\n const url = new URL(text);\n return url.protocol === \"http:\" || url.protocol === \"https:\" ? url.toString() : \"\";\n } catch {\n return \"\";\n }\n}\n\nfunction hostedBlobDownloadsAvailable(viewerServerInfo = {}) {\n return String(viewerServerInfo?.backend || \"\").trim().toLowerCase() === \"vercel-blob\";\n}\n\nfunction explicitSourceFileRef(entry) {\n return (\n normalizedFilePath(entry?.sourceFile) ||\n normalizedFilePath(entry?.source?.file) ||\n normalizedFilePath(entry?.source?.path) ||\n filenameFromUrl(entry?.sourceUrl || entry?.source?.url)\n );\n}\n\nfunction explicitSourceDirectoryFileRef(entry) {\n return (\n normalizedFilePath(entry?.sourceDirectoryFile) ||\n normalizedFilePath(entry?.source?.directoryFile) ||\n normalizedFilePath(entry?.source?.sourcePath)\n );\n}\n\nfunction artifactFileRef(entry, viewerServerInfo = {}) {\n return (\n viewerRootRelativePath(entry?.assetFile || entry?.artifactFile || entry?.artifact?.file, viewerServerInfo, { anchorFile: entry?.file }) ||\n viewerRootRelativePath(entry?.url, viewerServerInfo, { anchorFile: entry?.file })\n );\n}\n\nfunction sourceUrlFromEntry(entry) {\n return cleanUrl(entry?.sourceUrl || entry?.source?.url);\n}\n\nfunction stepUrlFromEntry(entry) {\n const explicitStepUrl = cleanUrl(entry?.stepUrl || entry?.step?.url);\n if (explicitStepUrl) {\n return explicitStepUrl;\n }\n return String(entry?.sourceKind || entry?.stepSourceKind || \"\").trim().toLowerCase() === \"python\"\n ? \"\"\n : sourceUrlFromEntry(entry);\n}\n\nfunction outputUrlFromEntry(entry, outputFileRef) {\n if (isStepFileRef(outputFileRef)) {\n return stepUrlFromEntry(entry);\n }\n return cleanUrl(entry?.outputUrl || entry?.output?.url || entry?.url);\n}\n\nfunction localPathSeparator(basePath) {\n return String(basePath || \"\").includes(\"\\\\\") ? \"\\\\\" : \"/\";\n}\n\nfunction joinLocalPath(basePath, relativePath) {\n const base = String(basePath || \"\").trim();\n const relative = normalizedRelativePath(relativePath);\n if (!base || !relative) {\n return base || relative;\n }\n const separator = localPathSeparator(base);\n const normalizedBase = base.replace(/[\\\\/]+$/, \"\");\n const normalizedRelative = relative.replace(/\\//g, separator);\n return `${normalizedBase}${separator}${normalizedRelative}`;\n}\n\nfunction directoryPathIsInsideViewerRoot(directoryRelativePath, rootDir) {\n const directoryPath = normalizedRelativePath(directoryRelativePath);\n const normalizedRootDir = normalizedRelativePath(rootDir);\n if (!directoryPath) {\n return false;\n }\n if (!normalizedRootDir) {\n return true;\n }\n return directoryPath === normalizedRootDir || directoryPath.startsWith(`${normalizedRootDir}/`);\n}\n\nfunction rootRelativePathFromDirectoryRelativePath(directoryRelativePath, rootDir) {\n return directoryPathIsInsideViewerRoot(directoryRelativePath, rootDir)\n ? stripViewerRootDirPrefix(directoryRelativePath, rootDir)\n : \"\";\n}\n\nexport function fileAccessAssetsForEntry(entry, {\n stepSourceStatus = null,\n viewerServerInfo = {},\n} = {}) {\n const fileRef = fileKey(entry);\n if (!fileRef) {\n return {\n artifact: null,\n output: null,\n source: null,\n };\n }\n\n const outputFileRef = viewerRootRelativePath(entry?.file || fileRef, viewerServerInfo) ||\n normalizedRelativePath(entry?.file || fileRef);\n const outputFilename = basenameFromFileRef(outputFileRef);\n const artifactRef = artifactFileRef(entry, viewerServerInfo);\n const artifactFilename = basenameFromFileRef(artifactRef);\n const directDownloads = hostedBlobDownloadsAvailable(viewerServerInfo);\n const outputDownloadUrl = directDownloads ? outputUrlFromEntry(entry, outputFileRef) : \"\";\n const artifactDownloadUrl = directDownloads ? cleanUrl(entry?.url) : \"\";\n const sourceKind = String(stepSourceStatus?.sourceKind || entryStepSourceKind(entry)).trim().toLowerCase();\n const stepSourcePath = normalizedFilePath(stepSourceStatus?.sourcePath);\n const explicitSourceRef = explicitSourceFileRef(entry);\n const explicitSourceDirectoryRef = explicitSourceDirectoryFileRef(entry);\n const inferredSourceRootRef = sourceKind === \"python\" && isStepFileRef(outputFileRef)\n ? sameStemPythonFileRef(outputFileRef)\n : \"\";\n const sourceRef = explicitSourceRef || stepSourcePath || inferredSourceRootRef;\n const sourceDirectoryRef = stepSourcePath || explicitSourceDirectoryRef;\n const hasViewerPathContext = Boolean(\n viewerServerInfo?.rootDir ||\n viewerServerInfo?.rootPath ||\n viewerServerInfo?.directoryRoot\n );\n const sourceRootRef = sourceRef\n ? hasViewerPathContext\n ? (viewerRootRelativePath(sourceRef, viewerServerInfo, { anchorFile: outputFileRef }) || sourceRef)\n : sourceDirectoryRef ? \"\" : (explicitSourceRef || inferredSourceRootRef)\n : \"\";\n const sourceFilename = sourceRootRef || sourceRef\n ? (basenameFromFileRef(sourceRootRef || sourceRef) || sameStemPythonFilename(outputFileRef))\n : \"\";\n\n return {\n artifact: artifactFilename ? {\n asset: \"artifact\",\n fileRef,\n filename: artifactFilename,\n label: artifactFilename,\n rootRelativePath: artifactRef,\n ...(artifactDownloadUrl ? { downloadUrl: artifactDownloadUrl } : {}),\n } : null,\n output: {\n asset: \"output\",\n fileRef,\n filename: outputFilename || \"download\",\n label: outputFilename || \"download\",\n rootRelativePath: outputFileRef,\n ...(outputDownloadUrl ? { downloadUrl: outputDownloadUrl } : {}),\n },\n source: sourceFilename ? {\n asset: \"source\",\n fileRef,\n filename: sourceFilename,\n label: sourceFilename,\n rootRelativePath: sourceRootRef,\n directoryRelativePath: sourceDirectoryRef,\n } : null,\n };\n}\n\nexport function downloadUrlForFileAsset(fileRef, asset = \"output\", baseUrl = \"\") {\n const path = `/__cad/download?file=${encodeURIComponent(fileRef)}&asset=${encodeURIComponent(asset || \"output\")}`;\n if (!baseUrl) {\n return path;\n }\n try {\n return new URL(path, baseUrl).toString();\n } catch {\n return path;\n }\n}\n\nexport function openUrlForFileAsset(fileRef, asset = \"output\", baseUrl = \"\") {\n const path = `/__cad/reveal?file=${encodeURIComponent(fileRef)}&asset=${encodeURIComponent(asset || \"output\")}`;\n if (!baseUrl) {\n return path;\n }\n try {\n return new URL(path, baseUrl).toString();\n } catch {\n return path;\n }\n}\n\nexport function copyTargetsForFileAccessAsset(asset, viewerServerInfo = {}) {\n const rootDir = normalizedRelativePath(viewerServerInfo?.rootDir);\n const directoryRelativePath = normalizedRelativePath(asset?.directoryRelativePath);\n const directoryRootRelativePath = rootRelativePathFromDirectoryRelativePath(directoryRelativePath, rootDir);\n const rawRootRelativePath = directoryRootRelativePath || normalizedRelativePath(asset?.rootRelativePath);\n const rootRelativePath = rawRootRelativePath\n ? viewerRootRelativePath(rawRootRelativePath, viewerServerInfo, { anchorFile: asset?.fileRef })\n : \"\";\n const relativePath = rootRelativePath || directoryRelativePath;\n const absolutePath = rootRelativePath && viewerServerInfo?.rootPath\n ? joinLocalPath(viewerServerInfo.rootPath, rootRelativePath)\n : directoryRelativePath && viewerServerInfo?.directoryRoot\n ? joinLocalPath(viewerServerInfo.directoryRoot, directoryRelativePath)\n : \"\";\n\n return {\n path: absolutePath,\n relativePath,\n };\n}\n","import { entrySourceFormat } from \"cadjs/lib/fileFormats.js\";\nimport {\n downloadUrlForFileAsset,\n fileAccessAssetsForEntry,\n openUrlForFileAsset\n} from \"./fileAccessAssets.js\";\nimport { viewerRootRelativePath } from \"./pathPresentation.js\";\n\nfunction cleanText(value) {\n return String(value ?? \"\").trim();\n}\n\nfunction normalizeKind(value) {\n return cleanText(value).toLowerCase();\n}\n\nfunction titleCase(value) {\n const normalized = cleanText(value);\n return normalized ? `${normalized[0].toUpperCase()}${normalized.slice(1)}` : \"\";\n}\n\nfunction shortHash(value) {\n const text = cleanText(value);\n return text.length > 24 ? `${text.slice(0, 12)}...${text.slice(-8)}` : text;\n}\n\nfunction metadataRow(label, value, options = {}) {\n const text = cleanText(value);\n if (!text) {\n return null;\n }\n return {\n label,\n value: text,\n displayValue: options.short ? shortHash(text) : text,\n href: cleanText(options.href),\n openUrl: cleanText(options.openUrl),\n action: cleanText(options.action),\n asset: options.asset || null,\n copyValue: options.copy === true ? text : cleanText(options.copyValue),\n mono: options.mono === true,\n title: cleanText(options.title) || text\n };\n}\n\nfunction compactRows(rows) {\n return rows.filter(Boolean);\n}\n\nfunction metadataGroup(title, rows) {\n const compactedRows = compactRows(rows);\n return compactedRows.length ? { title, rows: compactedRows } : null;\n}\n\nexport function formatFileMetadataBytes(value) {\n const bytes = Number(value);\n if (!Number.isFinite(bytes) || bytes < 0) {\n return \"\";\n }\n const roundedBytes = Math.round(bytes);\n if (roundedBytes < 1024) {\n return `${roundedBytes} B`;\n }\n const units = [\"KB\", \"MB\", \"GB\", \"TB\"];\n let scaled = roundedBytes / 1024;\n let unitIndex = 0;\n while (scaled >= 1024 && unitIndex < units.length - 1) {\n scaled /= 1024;\n unitIndex += 1;\n }\n const precision = scaled >= 10 ? 1 : 2;\n const sizeText = scaled\n .toFixed(precision)\n .replace(/(\\.\\d*?[1-9])0+$/, \"$1\")\n .replace(/\\.0+$/, \"\");\n return `${sizeText} ${units[unitIndex]} (${roundedBytes.toLocaleString(\"en-US\")} B)`;\n}\n\nfunction fileKindLabel(entry) {\n const kind = normalizeKind(entry?.kind);\n const format = normalizeKind(entrySourceFormat(entry));\n const parts = [\n kind ? titleCase(kind) : \"\",\n format && format !== kind ? format.toUpperCase() : \"\"\n ].filter(Boolean);\n return parts.join(\" / \");\n}\n\nfunction sourceKindForEntry(entry) {\n const sourceKind = normalizeKind(entry?.sourceKind || entry?.sourceStatus?.sourceKind || entry?.artifact?.sourceKind);\n if (sourceKind === \"python\" || sourceKind === \"step\") {\n return sourceKind;\n }\n return sourceKind;\n}\n\nfunction sourceKindLabel(value) {\n const sourceKind = normalizeKind(value);\n if (sourceKind === \"python\") {\n return \"Python-generated\";\n }\n if (sourceKind === \"step\") {\n return \"STEP-backed\";\n }\n return titleCase(sourceKind);\n}\n\nfunction sourcePathForEntry(entry, sourceAsset, viewerServerInfo = {}) {\n const rawPath = cleanText(\n entry?.source?.sourcePath ||\n entry?.source?.file ||\n entry?.sourceDirectoryFile ||\n sourceAsset?.directoryRelativePath ||\n entry?.sourceFile ||\n sourceAsset?.rootRelativePath\n );\n return viewerRootRelativePath(rawPath, viewerServerInfo, { anchorFile: entry?.file }) || rawPath;\n}\n\nfunction openActionOptionsForAsset(asset) {\n if (!asset) {\n return {};\n }\n return {\n openUrl: openUrlForFileAsset(asset.fileRef, asset.asset),\n action: \"open\",\n asset\n };\n}\n\nfunction downloadActionOptionsForAsset(asset) {\n if (!asset) {\n return {};\n }\n return {\n href: cleanText(asset.downloadUrl) || downloadUrlForFileAsset(asset.fileRef, asset.asset),\n action: \"download\",\n asset\n };\n}\n\nfunction fileActionOptionsForAsset(asset, {\n includeFileOpenActions = false,\n includeFileDownloadActions = false\n} = {}) {\n if (includeFileOpenActions) {\n return openActionOptionsForAsset(asset);\n }\n if (includeFileDownloadActions) {\n return downloadActionOptionsForAsset(asset);\n }\n return {};\n}\n\nfunction sourceRowsForEntry(entry, {\n includePythonSource = false,\n suppressDynamicStatus = false,\n viewerServerInfo = {},\n} = {}) {\n const sourceKind = sourceKindForEntry(entry);\n if (sourceKind === \"python\" && !includePythonSource) {\n return [];\n }\n\n const source = entry?.source && typeof entry.source === \"object\" ? entry.source : {};\n const sourceStatus = entry?.sourceStatus && typeof entry.sourceStatus === \"object\" ? entry.sourceStatus : {};\n const sourceAssets = fileAccessAssetsForEntry(entry, { viewerServerInfo });\n const sourceAsset = sourceKind === \"python\" ? sourceAssets.source : null;\n const sourcePath = sourcePathForEntry(entry, sourceAsset, viewerServerInfo);\n\n return compactRows([\n metadataRow(\"Kind\", sourceKindLabel(sourceKind)),\n sourceKind === \"python\"\n ? metadataRow(\"Python source\", sourcePath || sourceAsset?.label, {\n ...openActionOptionsForAsset(sourceAsset),\n mono: true,\n title: sourcePath || sourceAsset?.label || \"Python source\"\n })\n : null,\n suppressDynamicStatus ? null : metadataRow(\"Status\", sourceStatus.status),\n metadataRow(\"Source hash\", source.sourceHash || sourceStatus.sourceHash, { mono: true, short: true, copy: true }),\n suppressDynamicStatus ? null : metadataRow(\"Current\", sourceStatus.currentHash, { mono: true, short: true, copy: true })\n ]);\n}\n\nfunction generatedRowsForEntry(entry, {\n suppressDynamicStatus = false,\n viewerServerInfo = {},\n} = {}) {\n const artifact = entry?.artifact && typeof entry.artifact === \"object\" ? entry.artifact : {};\n const moduleUrl = cleanText(entry?.moduleUrl);\n const modulePath = viewerRootRelativePath(entry?.moduleFile || moduleUrl, viewerServerInfo, { anchorFile: entry?.file }) || moduleUrl;\n if (suppressDynamicStatus) {\n return compactRows([\n metadataRow(\"Module\", modulePath, { href: moduleUrl, mono: true, title: modulePath })\n ]);\n }\n return compactRows([\n metadataRow(\"Module\", modulePath, { href: moduleUrl, mono: true, title: modulePath }),\n metadataRow(\"Artifact\", artifact.error ? titleCase(String(artifact.error).replace(/_/g, \" \")) : \"\"),\n metadataRow(\"Artifact hash\", artifact.artifactHash, { mono: true, short: true, copy: true }),\n metadataRow(\"Current hash\", artifact.currentHash, { mono: true, short: true, copy: true }),\n metadataRow(\"Message\", artifact.message)\n ]);\n}\n\nfunction headerRowsForEntry(entry) {\n const headers = entry?.headers && typeof entry.headers === \"object\" ? entry.headers : {};\n return Object.entries(headers).flatMap(([name, value]) => {\n const label = cleanText(name);\n if (!label) {\n return [];\n }\n const text = Array.isArray(value)\n ? value.map(cleanText).filter(Boolean).join(\", \")\n : value && typeof value === \"object\"\n ? JSON.stringify(value)\n : cleanText(value);\n return metadataRow(label, text);\n });\n}\n\nfunction relationRowsForEntry(entry, viewerServerInfo = {}) {\n const relations = entry?.relations && typeof entry.relations === \"object\" ? entry.relations : {};\n return Object.entries(relations).flatMap(([name, relation]) => {\n const label = cleanText(name).toUpperCase();\n if (!label || !relation || typeof relation !== \"object\") {\n return [];\n }\n return compactRows([\n metadataRow(`${label} file`, viewerRootRelativePath(relation.file, viewerServerInfo, { anchorFile: entry?.file }) || relation.file, { mono: true }),\n metadataRow(`${label} size`, formatFileMetadataBytes(relation.bytes)),\n metadataRow(`${label} hash`, relation.hash, { mono: true, short: true, copy: true })\n ]);\n });\n}\n\nexport function fileMetadataGroupsForEntry(entry, options = {}) {\n if (!entry || typeof entry !== \"object\") {\n return [];\n }\n const includeFileOpenActions = options.includeFileOpenActions === true;\n const includeFileDownloadActions = options.includeFileDownloadActions === true;\n const suppressDynamicStatus = options.suppressDynamicStatus === true;\n const viewerServerInfo = options.viewerServerInfo || {};\n const assets = fileAccessAssetsForEntry(entry, { viewerServerInfo });\n const entryFile = viewerRootRelativePath(entry.file, viewerServerInfo) || entry.file;\n const assetPath = assets.artifact?.rootRelativePath ||\n viewerRootRelativePath(entry.assetFile || entry.url, viewerServerInfo, { anchorFile: entry.file }) ||\n entry.url;\n\n const fileRows = compactRows([\n metadataRow(\"Path\", entryFile, {\n ...fileActionOptionsForAsset(assets.output, { includeFileOpenActions, includeFileDownloadActions }),\n mono: true\n }),\n metadataRow(\"Kind\", fileKindLabel(entry)),\n metadataRow(\"Size\", formatFileMetadataBytes(entry.bytes)),\n metadataRow(\"Hash\", entry.hash, { mono: true, short: true, copy: true }),\n metadataRow(\"Asset\", assetPath, {\n ...fileActionOptionsForAsset(assets.artifact, { includeFileOpenActions, includeFileDownloadActions }),\n mono: true,\n title: assetPath\n })\n ]);\n\n return [\n metadataGroup(\"File\", fileRows),\n metadataGroup(\"Headers\", headerRowsForEntry(entry)),\n metadataGroup(\"Source\", sourceRowsForEntry(entry, { ...options, viewerServerInfo, suppressDynamicStatus })),\n metadataGroup(\"Generated\", generatedRowsForEntry(entry, { viewerServerInfo, suppressDynamicStatus })),\n metadataGroup(\"Relations\", relationRowsForEntry(entry, viewerServerInfo))\n ].filter(Boolean);\n}\n","import { useState } from \"react\";\nimport { Check, Copy } from \"lucide-react\";\nimport { cn } from \"@/ui/utils\";\nimport { copyTextToClipboard } from \"@/ui/clipboard\";\nimport { FILE_SHEET_SECTION_IDS } from \"@/workbench/fileSheetSections\";\nimport { fileMetadataGroupsForEntry } from \"@/workbench/fileMetadata\";\nimport {\n FILE_SHEET_FIELD_LABEL_CLASSES,\n FileSheetSection,\n FileSheetSubsection\n} from \"./FileSheet\";\n\nfunction MetadataCopyButton({ value, label }) {\n const [copied, setCopied] = useState(false);\n const Icon = copied ? Check : Copy;\n const text = String(value || \"\").trim();\n if (!text) {\n return null;\n }\n\n return (\n \n );\n}\n\nfunction MetadataValue({\n entry,\n row,\n fileAccessBusyKey = \"\",\n onOpenFileAsset\n}) {\n const text = row.displayValue || row.value;\n const copyValue = String(row.copyValue || \"\").trim();\n const valueClassName = cn(\n \"block min-w-0 break-words text-[11px] leading-4\",\n row.mono && \"break-all font-mono text-[10px]\"\n );\n\n const withCopyButton = (valueNode) => {\n if (!copyValue) {\n return valueNode;\n }\n return (\n \n );\n };\n\n if (row.action === \"open\" && row.asset) {\n const busyKey = `${row.asset.fileRef}:${row.asset.asset}`;\n const busy = fileAccessBusyKey === busyKey;\n const canOpen = typeof onOpenFileAsset === \"function\";\n\n return withCopyButton(\n {\n event.preventDefault();\n if (!canOpen || busy) {\n return;\n }\n onOpenFileAsset(entry, row.asset.asset, row.asset);\n }}\n >\n {busy ? \"Opening...\" : text}\n \n );\n }\n\n const content = (\n \n {text}\n \n );\n\n if (!row.href) {\n return withCopyButton(content);\n }\n\n return withCopyButton(\n \n {text}\n \n );\n}\n\nexport default function FileMetadataSection({\n entry,\n fileDownloadAvailable = false,\n viewerServerInfo = null,\n localFileOpenAvailable = false,\n fileAccessBusyKey = \"\",\n onOpenFileAsset,\n suppressDynamicStatus = false\n}) {\n const groups = fileMetadataGroupsForEntry(entry, {\n includeFileDownloadActions: fileDownloadAvailable && !localFileOpenAvailable,\n includeFileOpenActions: localFileOpenAvailable,\n includePythonSource: localFileOpenAvailable,\n viewerServerInfo,\n suppressDynamicStatus\n });\n if (!groups.length) {\n return null;\n }\n\n return (\n \n \n {groups.map((group) => (\n
\n \n {group.rows.map((row) => (\n \n
- \n {row.label}\n
\n - \n \n
\n \n ))}\n
\n \n ))}\n
\n \n );\n}\n","import * as React from \"react\"\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"@/ui/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors [&>svg]:size-3\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground\",\n destructive:\n \"border-transparent bg-destructive text-white dark:bg-destructive/60\",\n \"destructive-outline\":\n \"border-destructive/45 bg-destructive/10 text-destructive dark:border-red-400/40 dark:text-red-300\",\n outline: \"text-foreground\",\n warning: \"border-amber-500/45 bg-amber-500/10 text-amber-800 dark:text-amber-300\",\n \"warning-outline\":\n \"border-amber-500/45 bg-amber-500/10 text-amber-800 dark:text-amber-300\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n ...props\n}) {\n return (\n \n );\n}\n\nexport { Badge, badgeVariants }\n","import { entryHasMesh } from \"cadjs/lib/entryAssets.js\";\nimport { viewerRootRelativePath } from \"./pathPresentation.js\";\nimport {\n stepArtifactIssueShouldSuppress\n} from \"./stepArtifactStatus.js\";\n\nexport const FILE_STATUS_LEVELS = Object.freeze({\n ERROR: \"error\",\n WARNING: \"warning\",\n INFO: \"info\"\n});\n\nconst FILE_STATUS_LEVEL_RANK = Object.freeze({\n [FILE_STATUS_LEVELS.ERROR]: 3,\n [FILE_STATUS_LEVELS.WARNING]: 2,\n [FILE_STATUS_LEVELS.INFO]: 1\n});\n\nconst REGENERATE_STEP_ARTIFACTS_RE = /(?:^|\\n)\\s*Regenerate STEP artifacts[^\\n]*(?=\\n|$)/gi;\n\nfunction cleanText(value) {\n return String(value || \"\")\n .replace(REGENERATE_STEP_ARTIFACTS_RE, \"\")\n .trim();\n}\n\nfunction detail(label, value, { mono = false } = {}) {\n const text = cleanText(value);\n if (!text) {\n return null;\n }\n return { label, value: text, mono };\n}\n\nfunction displayPath(value, viewerServerInfo = {}, anchorFile = \"\") {\n const text = cleanText(value);\n return viewerRootRelativePath(text, viewerServerInfo, { anchorFile }) || text;\n}\n\nfunction pathDetail(label, value, viewerServerInfo = {}, anchorFile = \"\", options = {}) {\n return detail(label, displayPath(value, viewerServerInfo, anchorFile), options);\n}\n\nfunction sourceKindLabel(value) {\n return cleanText(value).toLowerCase() === \"python\" ? \"python\" : \"step\";\n}\n\nfunction ownProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object || {}, key);\n}\n\nexport function normalizeFileStatusLevel(value, fallback = FILE_STATUS_LEVELS.INFO) {\n const normalized = cleanText(value).toLowerCase();\n if (normalized === FILE_STATUS_LEVELS.ERROR) {\n return FILE_STATUS_LEVELS.ERROR;\n }\n if (normalized === FILE_STATUS_LEVELS.WARNING || normalized === \"warn\") {\n return FILE_STATUS_LEVELS.WARNING;\n }\n if (normalized === FILE_STATUS_LEVELS.INFO || normalized === \"information\") {\n return FILE_STATUS_LEVELS.INFO;\n }\n return fallback;\n}\n\nexport function fileStatusLevelRank(level) {\n return FILE_STATUS_LEVEL_RANK[normalizeFileStatusLevel(level, \"\")] || 0;\n}\n\nexport function fileStatusLevelLabel(level) {\n const normalized = normalizeFileStatusLevel(level, \"\");\n if (normalized === FILE_STATUS_LEVELS.ERROR) {\n return \"Error\";\n }\n if (normalized === FILE_STATUS_LEVELS.WARNING) {\n return \"Warning\";\n }\n if (normalized === FILE_STATUS_LEVELS.INFO) {\n return \"Info\";\n }\n return \"\";\n}\n\nexport function normalizeFileStatusItem(item, index = 0) {\n if (!item || typeof item !== \"object\") {\n return null;\n }\n const level = normalizeFileStatusLevel(item.level, FILE_STATUS_LEVELS.INFO);\n const title = cleanText(item.title) || fileStatusLevelLabel(level) || \"Status\";\n const message = cleanText(item.message);\n const code = cleanText(item.code);\n const source = cleanText(item.source);\n const details = Array.isArray(item.details)\n ? item.details.map((candidate) => {\n if (!candidate || typeof candidate !== \"object\") {\n return null;\n }\n return detail(candidate.label, candidate.value, { mono: candidate.mono === true });\n }).filter(Boolean)\n : [];\n\n return {\n id: cleanText(item.id) || `${source || \"status\"}:${code || title}:${index}`,\n level,\n source,\n code,\n title,\n message,\n details\n };\n}\n\nexport function normalizeFileStatusItems(items) {\n if (!Array.isArray(items)) {\n return [];\n }\n const seen = new Set();\n return items.map(normalizeFileStatusItem).filter((item) => {\n if (!item) {\n return false;\n }\n const key = [\n item.level,\n item.title,\n item.message,\n item.details.map((detailItem) => `${detailItem.label}:${detailItem.value}`).join(\"|\")\n ].join(\"\\n\");\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n}\n\nexport function fileStatusWarningOrErrorItems(items) {\n return normalizeFileStatusItems(items)\n .filter((item) => (\n item.level === FILE_STATUS_LEVELS.ERROR ||\n item.level === FILE_STATUS_LEVELS.WARNING\n ))\n .sort((left, right) => fileStatusLevelRank(right.level) - fileStatusLevelRank(left.level));\n}\n\nexport function fileStatusHasWarningsOrErrors(items) {\n return fileStatusWarningOrErrorItems(items).length > 0;\n}\n\nexport function mostIntenseFileStatusLevel(items) {\n return normalizeFileStatusItems(items).reduce((currentLevel, item) => (\n fileStatusLevelRank(item.level) > fileStatusLevelRank(currentLevel)\n ? item.level\n : currentLevel\n ), \"\");\n}\n\nexport function mostIntenseFileStatusItem(items) {\n return normalizeFileStatusItems(items).reduce((currentItem, item) => (\n !currentItem || fileStatusLevelRank(item.level) > fileStatusLevelRank(currentItem.level)\n ? item\n : currentItem\n ), null);\n}\n\nexport function stepArtifactHasRenderableGlb(entry) {\n return entryHasMesh(entry);\n}\n\nfunction artifactStatusTitle(artifact, entry) {\n const code = cleanText(artifact?.error);\n if (artifact?.stale === true || code === \"stale_step_artifact\") {\n return \"STEP artifact stale\";\n }\n if (code === \"missing_glb\") {\n return \"STEP artifact missing\";\n }\n if (stepArtifactHasRenderableGlb(entry)) {\n return \"STEP artifact metadata warning\";\n }\n return \"STEP artifact unavailable\";\n}\n\nfunction artifactStatusLevel(artifact, entry) {\n return stepArtifactHasRenderableGlb(entry)\n ? FILE_STATUS_LEVELS.WARNING\n : FILE_STATUS_LEVELS.ERROR;\n}\n\nexport function stepArtifactStatusMessage(artifact) {\n const code = cleanText(artifact?.error);\n if (artifact?.stale === true || code === \"stale_step_artifact\") {\n return \"Generated GLB doesn't match the hash of the STEP file.\";\n }\n if (code === \"missing_glb\") {\n return \"Generated GLB is missing.\";\n }\n if (code === \"missing_step_topology\") {\n return \"Generated GLB is missing STEP topology metadata.\";\n }\n if (code === \"missing_selector_topology\") {\n return \"Generated GLB is missing selector topology metadata.\";\n }\n if (code === \"missing_edge_topology\") {\n return \"Generated GLB is missing surface edge topology metadata.\";\n }\n if (code === \"missing_surface_edge_attributes\") {\n return \"Generated GLB is missing surface edge render attributes.\";\n }\n if (code === \"unsupported_step_topology\") {\n return \"Generated GLB topology metadata is unsupported.\";\n }\n if (code === \"missing_source_path\") {\n return \"Generated GLB metadata is missing its source path.\";\n }\n if (code === \"missing_step_hash\") {\n return \"Generated GLB is missing the hash of the STEP file.\";\n }\n return \"Generated STEP artifact is unavailable.\";\n}\n\nfunction stepSourceStatusTitle(stepStatus) {\n return \"STEP file missing\";\n}\n\nfunction stepSourceStatusLevel(stepStatus) {\n return FILE_STATUS_LEVELS.WARNING;\n}\n\nfunction stepSourceStatusMessage(stepStatus, stepSourceStatus) {\n if (stepStatus?.missing) {\n return sourceKindLabel(stepSourceStatus?.sourceKind) === \"python\"\n ? \"STEP file was not generated for this Python script; only a GLB artifact is available.\"\n : \"STEP file is missing from the directory.\";\n }\n return cleanText(stepStatus?.message) || \"STEP file is missing from the directory.\";\n}\n\nfunction generatedSourceStatusTitle(sourceStatus) {\n if (sourceStatus?.status === \"missing\") {\n return \"Generator source missing\";\n }\n return \"Generated source warning\";\n}\n\nfunction generatedSourceStatusMessage(sourceStatus) {\n if (sourceStatus?.status === \"missing\") {\n return \"This file records a Python generator path, but that source file is not available.\";\n }\n return cleanText(sourceStatus?.message) || \"Generated source metadata is incomplete.\";\n}\n\nexport function generatedSourceStatusItems(entry = null, {\n viewerServerInfo = {},\n} = {}) {\n const sourceStatus = entry?.sourceStatus;\n if (!sourceStatus || sourceStatus.ok !== false) {\n return [];\n }\n return normalizeFileStatusItems([{\n id: \"generated-source\",\n level: FILE_STATUS_LEVELS.WARNING,\n source: \"source-metadata\",\n code: cleanText(sourceStatus.status) || \"source_identity\",\n title: generatedSourceStatusTitle(sourceStatus),\n message: generatedSourceStatusMessage(sourceStatus),\n details: [\n pathDetail(\"File\", entry?.file, viewerServerInfo, entry?.file),\n detail(\"Source kind\", sourceStatus.sourceKind || entry?.sourceKind),\n pathDetail(\"Python source\", sourceStatus.sourcePath || entry?.source?.file, viewerServerInfo, entry?.file),\n detail(\"Raw message\", sourceStatus.message)\n ].filter(Boolean)\n }]);\n}\n\nexport function stepFileStatusItems({\n entry = null,\n stepSourceStatus = null,\n stepArtifactGenerationAvailable = true,\n stepArtifactGenerationState = null,\n activeGenerationFiles = [],\n viewerServerInfo = {},\n} = {}) {\n const items = [];\n const artifact = ownProperty(stepSourceStatus, \"artifact\")\n ? stepSourceStatus?.artifact\n : entry?.artifact;\n if (\n artifact?.ok === false &&\n !stepArtifactIssueShouldSuppress({\n entry,\n artifact,\n generationAvailable: stepArtifactGenerationAvailable,\n generationState: stepArtifactGenerationState,\n activeGenerationFiles\n })\n ) {\n items.push({\n id: \"step-artifact\",\n level: artifactStatusLevel(artifact, entry),\n source: \"catalog\",\n code: cleanText(artifact.error) || \"step_artifact_unavailable\",\n title: artifactStatusTitle(artifact, entry),\n message: stepArtifactStatusMessage(artifact),\n details: [\n detail(\"Code\", artifact.error),\n pathDetail(\"STEP file\", artifact.stepPath || artifact.sourcePath || entry?.file, viewerServerInfo, entry?.file),\n pathDetail(\"GLB artifact\", artifact.glbPath, viewerServerInfo, entry?.file),\n pathDetail(\"CAD path\", artifact.cadPath, viewerServerInfo, entry?.file),\n detail(\"Source kind\", artifact.sourceKind),\n detail(\"Artifact hash\", artifact.artifactHash, { mono: true }),\n detail(\"Current hash\", artifact.currentHash, { mono: true }),\n detail(\"Raw message\", artifact.message)\n ].filter(Boolean)\n });\n }\n\n const stepStatus = stepSourceStatus?.step;\n if (stepStatus?.missing) {\n items.push({\n id: \"step-source\",\n level: stepSourceStatusLevel(stepStatus),\n source: \"step-source-status\",\n code: cleanText(stepStatus.status) || \"missing\",\n title: stepSourceStatusTitle(stepStatus),\n message: stepSourceStatusMessage(stepStatus, stepSourceStatus),\n details: [\n pathDetail(\"STEP file\", stepSourceStatus?.stepPath || stepSourceStatus?.file, viewerServerInfo, entry?.file),\n detail(\"Source kind\", stepSourceStatus?.sourceKind),\n pathDetail(\"Python source\", stepSourceStatus?.sourcePath, viewerServerInfo, entry?.file)\n ].filter(Boolean)\n });\n }\n\n return normalizeFileStatusItems(items);\n}\n\nexport function formatFileStatusItemForAgent(item) {\n const normalized = normalizeFileStatusItem(item);\n if (!normalized) {\n return \"\";\n }\n\n const lines = [\n \"CAD Viewer issue\",\n `Level: ${fileStatusLevelLabel(normalized.level) || normalized.level}`,\n `Title: ${normalized.title}`\n ];\n if (normalized.message) {\n lines.push(`Description: ${normalized.message}`);\n }\n if (normalized.source) {\n lines.push(`Source: ${normalized.source}`);\n }\n if (normalized.code) {\n lines.push(`Code: ${normalized.code}`);\n }\n if (normalized.details.length) {\n lines.push(\"\", \"Details:\");\n for (const detailItem of normalized.details) {\n lines.push(`- ${detailItem.label}: ${detailItem.value}`);\n }\n }\n return lines.join(\"\\n\");\n}\n\nexport function gcodeFileStatusItems(gcodeData = null) {\n const warnings = Array.isArray(gcodeData?.warnings) ? gcodeData.warnings : [];\n return normalizeFileStatusItems(warnings.map((warning, index) => ({\n id: `gcode-warning:${index}`,\n level: FILE_STATUS_LEVELS.WARNING,\n source: \"gcode-parser\",\n code: \"gcode_warning\",\n title: \"G-code warning\",\n message: warning\n })));\n}\n\nexport function sdfFileStatusItems(sdfInfo = null) {\n const staticMetadata = sdfInfo?.staticMetadata && typeof sdfInfo.staticMetadata === \"object\"\n ? sdfInfo.staticMetadata\n : {};\n const warnings = Array.isArray(staticMetadata.warnings) ? staticMetadata.warnings : [];\n return normalizeFileStatusItems(warnings.map((warning, index) => ({\n id: `sdf-warning:${index}`,\n level: FILE_STATUS_LEVELS.WARNING,\n source: \"sdf-parser\",\n code: \"sdf_warning\",\n title: \"SDF warning\",\n message: warning\n })));\n}\n\nexport function viewerAlertFileStatusItem(viewerAlert = null) {\n if (!viewerAlert || typeof viewerAlert !== \"object\") {\n return null;\n }\n const level = normalizeFileStatusLevel(viewerAlert.severity, FILE_STATUS_LEVELS.ERROR);\n return normalizeFileStatusItem({\n id: `viewer-alert:${cleanText(viewerAlert.summary) || cleanText(viewerAlert.title) || level}`,\n level,\n source: \"viewer\",\n code: \"viewer_alert\",\n title: cleanText(viewerAlert.title) || cleanText(viewerAlert.summary) || \"Viewer issue\",\n message: cleanText(viewerAlert.message) || cleanText(viewerAlert.summary),\n details: [\n detail(\"Summary\", viewerAlert.summary),\n detail(\"Resolution\", viewerAlert.resolution),\n detail(\"Command\", viewerAlert.command, { mono: true })\n ].filter(Boolean)\n });\n}\n\nexport function buildFileStatusItems({\n entry = null,\n fileSheetKind = \"\",\n stepSourceStatus = null,\n stepArtifactGenerationAvailable = true,\n stepArtifactGenerationState = null,\n activeGenerationFiles = [],\n gcodeData = null,\n urdfData = null,\n viewerAlert = null,\n viewerServerInfo = null,\n} = {}) {\n if (!entry) {\n return [];\n }\n\n const kind = cleanText(fileSheetKind).toLowerCase();\n const items = [];\n items.push(...generatedSourceStatusItems(entry, { viewerServerInfo }));\n if (kind === \"step\") {\n items.push(...stepFileStatusItems({\n entry,\n stepSourceStatus,\n stepArtifactGenerationAvailable,\n stepArtifactGenerationState,\n activeGenerationFiles,\n viewerServerInfo\n }));\n }\n if (kind === \"gcode\") {\n items.push(...gcodeFileStatusItems(gcodeData));\n }\n if (kind === \"sdf\") {\n items.push(...sdfFileStatusItems(urdfData?.sdf || urdfData));\n }\n\n const viewerAlertItem = viewerAlertFileStatusItem(viewerAlert);\n const duplicatesExistingItem = viewerAlertItem && normalizeFileStatusItems(items).some((item) => (\n item.level === viewerAlertItem.level &&\n item.title === viewerAlertItem.title &&\n item.message === viewerAlertItem.message\n ));\n if (viewerAlertItem && !duplicatesExistingItem) {\n items.push(viewerAlertItem);\n }\n\n return normalizeFileStatusItems(items);\n}\n","import { useEffect, useState } from \"react\";\nimport { Check, Copy } from \"lucide-react\";\nimport { Badge } from \"../ui/badge\";\nimport { Button } from \"../ui/button\";\nimport { copyTextToClipboard } from \"@/ui/clipboard\";\nimport { cn } from \"@/ui/utils\";\nimport {\n FILE_STATUS_LEVELS,\n formatFileStatusItemForAgent,\n fileStatusLevelLabel,\n fileStatusWarningOrErrorItems,\n mostIntenseFileStatusLevel\n} from \"@/workbench/fileStatusItems\";\nimport {\n FileSheetSection\n} from \"./FileSheet\";\n\nconst LEVEL_RENDER_META = Object.freeze({\n [FILE_STATUS_LEVELS.ERROR]: {\n badgeVariant: \"destructive-outline\",\n borderClassName: \"border-destructive/70\"\n },\n [FILE_STATUS_LEVELS.WARNING]: {\n badgeVariant: \"warning-outline\",\n borderClassName: \"border-amber-500/70\"\n },\n [FILE_STATUS_LEVELS.INFO]: {\n badgeVariant: \"outline\",\n borderClassName: \"border-border\"\n }\n});\n\nconst STATUS_COUNT_BADGE_CLASSES = \"h-4 min-w-4 self-center rounded-sm px-1 text-[10px] font-medium leading-none\";\nconst STATUS_LEVEL_BADGE_CLASSES = \"h-4 self-center rounded-sm px-1.5 py-0 text-[10px] font-medium leading-none\";\n\nfunction renderMetaForLevel(level) {\n return LEVEL_RENDER_META[level] || LEVEL_RENDER_META[FILE_STATUS_LEVELS.INFO];\n}\n\nexport default function FileStatusSection({\n items = [],\n value = \"status\"\n}) {\n const [expandedItemIds, setExpandedItemIds] = useState(() => new Set());\n const [copiedItemId, setCopiedItemId] = useState(\"\");\n const statusItems = fileStatusWarningOrErrorItems(items);\n\n useEffect(() => {\n if (!copiedItemId) {\n return undefined;\n }\n const timeout = globalThis.setTimeout(() => setCopiedItemId(\"\"), 1400);\n return () => globalThis.clearTimeout(timeout);\n }, [copiedItemId]);\n\n if (!statusItems.length) {\n return null;\n }\n\n const toggleExpanded = (itemId) => {\n setExpandedItemIds((current) => {\n const next = new Set(current);\n if (next.has(itemId)) {\n next.delete(itemId);\n } else {\n next.add(itemId);\n }\n return next;\n });\n };\n\n const collapseExpandedItem = (itemId) => {\n setExpandedItemIds((current) => {\n if (!current.has(itemId)) {\n return current;\n }\n const next = new Set(current);\n next.delete(itemId);\n return next;\n });\n };\n\n const handleRowKeyDown = (event, itemId, hasDetails) => {\n if (!hasDetails || (event.key !== \"Enter\" && event.key !== \" \")) {\n return;\n }\n event.preventDefault();\n toggleExpanded(itemId);\n };\n\n const handleCopyIssue = async (event, item) => {\n event.preventDefault();\n event.stopPropagation();\n try {\n await copyTextToClipboard(formatFileStatusItemForAgent(item));\n setCopiedItemId(item.id);\n } catch {\n setCopiedItemId(\"\");\n }\n };\n\n const highestLevel = mostIntenseFileStatusLevel(statusItems);\n const headerMeta = renderMetaForLevel(highestLevel);\n\n return (\n \n Issues\n {statusItems.length}\n \n )}\n >\n \n {statusItems.map((item) => {\n const itemMeta = renderMetaForLevel(item.level);\n const details = Array.isArray(item.details) ? item.details : [];\n const hasDetails = details.length > 0;\n const expanded = expandedItemIds.has(item.id);\n return (\n - \n
{\n if (hasDetails) {\n toggleExpanded(item.id);\n }\n }}\n onKeyDown={(event) => handleRowKeyDown(event, item.id, hasDetails)}\n aria-expanded={hasDetails ? expanded : undefined}\n >\n
\n
\n {fileStatusLevelLabel(item.level)}\n \n
{item.title}
\n
\n \n \n
\n {item.message ? (\n
\n {item.message}\n
\n ) : null}\n
\n {hasDetails && expanded ? (\n \n
\n {details.map((detailItem, index) => (\n \n
- {detailItem.label}
\n - \n {detailItem.value}\n
\n \n ))}\n
\n
\n
\n ) : null}\n \n );\n })}\n
\n \n );\n}\n","import { useEffect, useState } from \"react\";\nimport { Minus, Plus } from \"lucide-react\";\nimport {\n DXF_BEND_DIRECTION,\n normalizeDxfBendAngleDeg,\n normalizeDxfBendDirection,\n normalizeDxfPreviewThicknessMm\n} from \"cadjs/lib/dxf/buildPreviewMesh\";\nimport {\n Accordion\n} from \"../ui/accordion\";\nimport { Button } from \"../ui/button\";\nimport { Input } from \"../ui/input\";\nimport { ToggleGroup, ToggleGroupItem } from \"../ui/toggle-group\";\nimport FileSheet, {\n FILE_SHEET_COMPACT_ICON_BUTTON_CLASSES,\n FILE_SHEET_COMPACT_NUMERIC_INPUT_CLASSES,\n FILE_SHEET_SEGMENTED_ITEM_CLASSES,\n FileSheetControlRow,\n FileSheetSection,\n FileSheetSectionBody,\n FileSheetSubsection\n} from \"./FileSheet\";\nimport FileMetadataSection from \"./FileMetadataSection\";\nimport FileStatusSection from \"./FileStatusSection\";\n\nconst compactInputClasses = FILE_SHEET_COMPACT_NUMERIC_INPUT_CLASSES;\nconst compactIconButtonClasses = FILE_SHEET_COMPACT_ICON_BUTTON_CLASSES;\n\nfunction formatThicknessInput(valueMm) {\n const numericValue = Number(valueMm);\n if (!Number.isFinite(numericValue)) {\n return \"\";\n }\n return numericValue.toFixed(4).replace(/\\.?0+$/, \"\");\n}\n\nfunction formatAngleInput(valueDeg) {\n const rounded = Math.round(Number(valueDeg) * 10) / 10;\n return Number.isFinite(rounded) ? String(rounded) : \"\";\n}\n\nfunction DxfBendRow({\n index,\n setting,\n onChange\n}) {\n const [draftAngle, setDraftAngle] = useState(() => formatAngleInput(setting?.angleDeg));\n\n useEffect(() => {\n setDraftAngle(formatAngleInput(setting?.angleDeg));\n }, [setting?.angleDeg]);\n\n const commitAngle = (nextValue) => {\n const normalizedAngle = normalizeDxfBendAngleDeg(nextValue, setting?.angleDeg);\n onChange(index, { angleDeg: normalizedAngle });\n setDraftAngle(formatAngleInput(normalizedAngle));\n };\n\n const direction = normalizeDxfBendDirection(setting?.direction);\n\n return (\n \n \n
\n Direction\n {\n if (!nextDirection) {\n return;\n }\n onChange(index, { direction: nextDirection });\n }}\n className=\"grid h-7 w-full min-w-0 grid-cols-2\"\n aria-label={`Bend ${index + 1} direction`}\n >\n \n Up\n \n \n Down\n \n \n
\n
\n
\n \n );\n}\n\nexport default function DxfFileSheet({\n open,\n isDesktop,\n width,\n selectedEntry = null,\n onOpenChange,\n valueMm,\n bendSettings,\n hasDxfData,\n viewerLoading,\n onStartResize,\n onThicknessChange,\n onBendChange,\n fileDownloadAvailable = false,\n viewerServerInfo = null,\n localFileOpenAvailable = false,\n fileAccessBusyKey = \"\",\n onOpenFileAsset,\n suppressDynamicMetadataStatus = false,\n statusItems = [],\n themeSections = null,\n openSectionIds = [],\n onOpenSectionIdsChange\n}) {\n const [draftValue, setDraftValue] = useState(() => formatThicknessInput(valueMm));\n const normalizedBendSettings = Array.isArray(bendSettings) ? bendSettings : [];\n\n useEffect(() => {\n setDraftValue(formatThicknessInput(valueMm));\n }, [valueMm]);\n\n const commitValue = (nextValue) => {\n const normalizedValue = normalizeDxfPreviewThicknessMm(nextValue, valueMm);\n onThicknessChange(normalizedValue);\n setDraftValue(formatThicknessInput(normalizedValue));\n };\n\n return (\n \n \n \n\n \n \n \n \n \n