@splinetool/loader 1.0.84 → 1.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  var KS=Object.create;var Cl=Object.defineProperty;var QS=Object.getOwnPropertyDescriptor;var ZS=Object.getOwnPropertyNames;var JS=Object.getPrototypeOf,e1=Object.prototype.hasOwnProperty;var t1=(n,r,e)=>r in n?Cl(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e;var Dn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),r1=(n,r)=>{for(var e in r)Cl(n,e,{get:r[e],enumerable:!0})},o1=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of ZS(r))!e1.call(n,o)&&o!==e&&Cl(n,o,{get:()=>r[o],enumerable:!(t=QS(r,o))||t.enumerable});return n};var hi=(n,r,e)=>(e=n!=null?KS(JS(n)):{},o1(r||!n||!n.__esModule?Cl(e,"default",{value:n,enumerable:!0}):e,n));var En=(n,r,e)=>(t1(n,typeof r!="symbol"?r+"":r,e),e);var ax=Dn((lp,ix)=>{(function(n,r){typeof lp=="object"?ix.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(lp,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)t-=s(e[l]),t<0&&(t+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var c=function(){var u=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=u-(a=u|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[t,o,i,a]},c.importState=function(u){t=+u[0]||0,o=+u[1]||0,i=+u[2]||0,a=+u[3]||0},c}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var dx=Dn((kc,ux)=>{(function(n,r){typeof kc=="object"&&typeof ux<"u"?r(kc):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(kc,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var a,s,l,c,u,p,d,h,f,m,y,g,v=r[0].length,O=r.length;if(O<v)throw new TypeError("Invalid matrix: m < n");for(var P=[],S=[],T=[],I=e==="f"?O:v,x=m=d=0;x<O;x++)S[x]=new Array(I).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var _,D=new Array(v).fill(0);for(x=0;x<O;x++)for(a=0;a<v;a++)S[x][a]=r[x][a];for(x=0;x<v;x++){for(P[x]=d,f=0,l=x+1,a=x;a<O;a++)f+=Math.pow(S[a][x],2);if(f<i)d=0;else for(h=(p=S[x][x])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x]=p-d,a=l;a<v;a++){for(f=0,s=x;s<O;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<O;s++)S[s][a]=S[s][a]+p*S[s][x]}for(D[x]=d,f=0,a=l;a<v;a++)f+=Math.pow(S[x][a],2);if(f<i)d=0;else{for(h=(p=S[x][x+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[x][x+1]=p-d,a=l;a<v;a++)P[a]=S[x][a]/h;for(a=l;a<O;a++){for(f=0,s=l;s<v;s++)f+=S[a][s]*S[x][s];for(s=l;s<v;s++)S[a][s]=S[a][s]+f*P[s]}}m<(y=Math.abs(D[x])+Math.abs(P[x]))&&(m=y)}if(t)for(x=v-1;0<=x;x--){if(d!==0){for(h=S[x][x+1]*d,a=l;a<v;a++)T[a][x]=S[x][a]/h;for(a=l;a<v;a++){for(f=0,s=l;s<v;s++)f+=S[x][s]*T[s][a];for(s=l;s<v;s++)T[s][a]=T[s][a]+f*T[s][x]}}for(a=l;a<v;a++)T[x][a]=0,T[a][x]=0;T[x][x]=1,d=P[x],l=x}if(e){if(e==="f")for(x=v;x<O;x++){for(a=v;a<O;a++)S[x][a]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(l=x+1,d=D[x],a=l;a<I;a++)S[x][a]=0;if(d!==0){for(h=S[x][x]*d,a=l;a<I;a++){for(f=0,s=l;s<O;s++)f+=S[s][x]*S[s][a];for(p=f/h,s=x;s<O;s++)S[s][a]=S[s][a]+p*S[s][x]}for(a=x;a<O;a++)S[a][x]=S[a][x]/d}else for(a=x;a<O;a++)S[a][x]=0;S[x][x]=S[x][x]+1}}for(o*=m,s=v-1;0<=s;s--)for(var A=0;A<50;A++){for(_=!1,l=s;0<=l;l--){if(Math.abs(P[l])<=o){_=!0;break}if(Math.abs(D[l-1])<=o)break}if(!_){for(u=0,c=l-(f=1),x=l;x<s+1&&(p=f*P[x],P[x]=u*P[x],!(Math.abs(p)<=o));x++)if(d=D[x],D[x]=Math.sqrt(p*p+d*d),u=d/(h=D[x]),f=-p/h,e)for(a=0;a<O;a++)y=S[a][c],g=S[a][x],S[a][c]=y*u+g*f,S[a][x]=-y*f+g*u}if(g=D[s],l===s){if(g<0&&(D[s]=-g,t))for(a=0;a<v;a++)T[a][s]=-T[a][s];break}for(m=D[l],p=(((y=D[s-1])-g)*(y+g)+((d=P[s-1])-(h=P[s]))*(d+h))/(2*h*y),d=Math.sqrt(p*p+1),p=((m-g)*(m+g)+h*(y/(p<0?p-d:p+d)-h))/m,x=l+(f=u=1);x<s+1;x++){if(d=P[x],y=D[x],h=f*d,d*=u,g=Math.sqrt(p*p+h*h),p=m*(u=p/(P[x-1]=g))+d*(f=h/g),d=-m*f+d*u,h=y*f,y*=u,t)for(a=0;a<v;a++)m=T[a][x-1],g=T[a][x],T[a][x-1]=m*u+g*f,T[a][x]=-m*f+g*u;if(g=Math.sqrt(p*p+h*h),p=(u=p/(D[x-1]=g))*d+(f=h/g)*y,m=-f*d+u*y,e)for(a=0;a<O;a++)y=S[a][x-1],g=S[a][x],S[a][x-1]=y*u+g*f,S[a][x]=-y*f+g*u}P[l]=0,P[s]=p,D[s]=m}for(x=0;x<v;x++)D[x]<o&&(D[x]=0);return{u:S,q:D,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Hx=Dn((Lp,Rp)=>{(function(n,r){typeof Lp=="object"&&typeof Rp<"u"?Rp.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(Lp,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var l=t-1>>1,c=i[l];if(a(s,c)>=0)break;i[t]=c,t=l}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[t];t<s;){var c=(t<<1)+1,u=i[c],p=c+1;if(p<this.length&&a(i[p],u)<0&&(c=p,u=i[p]),a(u,l)>=0)break;i[t]=u,t=c}i[t]=l};function r(e,t){return e<t?-1:e>t?1:0}return n})});var qx=Dn((EW,Vp)=>{"use strict";var eu=Hx();eu.default&&(eu=eu.default);Vp.exports=Wx;Vp.exports.default=Wx;function Wx(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<t)&&(t=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var c=i-t,u=a-o,p=Math.min(c,u),d=p/2;if(p===0){var h=[t,o];return h.distance=0,h}for(var f=new eu(void 0,vM),m=t;m<i;m+=p)for(var y=o;y<a;y+=p)f.push(new un(m+d,y+d,d,n));var g=wM(n),v=new un(t+c/2,o+u/2,0,n);v.d>g.d&&(g=v);for(var O=f.length;f.length;){var P=f.pop();P.d>g.d&&(g=P,e&&console.log("found best %d after %d probes",Math.round(1e4*P.d)/1e4,O)),!(P.max-g.d<=r)&&(d=P.h/2,f.push(new un(P.x-d,P.y-d,d,n)),f.push(new un(P.x+d,P.y-d,d,n)),f.push(new un(P.x-d,P.y+d,d,n)),f.push(new un(P.x+d,P.y+d,d,n)),O+=4)}e&&(console.log("num probes: "+O),console.log("best distance: "+g.d));var S=[g.x,g.y];return S.distance=g.d,S}function vM(n,r){return r.max-n.max}function un(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=SM(n,r,t),this.max=this.d+this.h*Math.SQRT2}function SM(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,c=l-1;s<l;c=s++){var u=a[s],p=a[c];u[1]>r!=p[1]>r&&n<(p[0]-u[0])*(r-u[1])/(p[1]-u[1])+u[0]&&(t=!t),o=Math.min(o,PM(n,r,u,p))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function wM(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],c=o[s],u=l[0]*c[1]-c[0]*l[1];e+=(l[0]+c[0])*u,t+=(l[1]+c[1])*u,r+=u*3}return r===0?new un(o[0][0],o[0][1],0,n):new un(e/r,t/r,0,n)}function PM(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(r-i)*s)/(a*a+s*s);l>1?(o=t[0],i=t[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=r-i,a*a+s*s}});var Pv=Dn((xie,wv)=>{"use strict";function uD(n,r){function e(){this.constructor=n}e.prototype=r.prototype,n.prototype=new e}function ai(n,r,e,t){this.message=n,this.expected=r,this.found=e,this.location=t,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ai)}uD(ai,Error);ai.buildMessage=function(n,r){var e={literal:function(c){return'"'+o(c.text)+'"'},class:function(c){var u="",p;for(p=0;p<c.parts.length;p++)u+=c.parts[p]instanceof Array?i(c.parts[p][0])+"-"+i(c.parts[p][1]):i(c.parts[p]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function t(c){return c.charCodeAt(0).toString(16).toUpperCase()}function o(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function i(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+t(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+t(u)})}function a(c){return e[c.type](c)}function s(c){var u=new Array(c.length),p,d;for(p=0;p<c.length;p++)u[p]=a(c[p]);if(u.sort(),u.length>0){for(p=1,d=1;p<u.length;p++)u[p-1]!==u[p]&&(u[d]=u[p],d++);u.length=d}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+o(c)+'"':"end of input"}return"Expected "+s(n)+" but "+l(r)+" found."};function dD(n,r){r=r!==void 0?r:{};var e={},t={svg_path:fs},o=fs,i=function(b){if(!b)return[];for(var w=[],L=0;L<b.length;L++)w=w.concat.apply(w,b[L]);var M=w[0];return M&&M.code=="m"&&(delete M.relative,M.code="M"),w},a=function(b,w){return XS(b,w)},s=/^[Mm]/,l=Xe(["M","m"],!1,!1),c=function(b,w,L){var M=pi(b,[w]);return L&&(M=M.concat(pi(b=="M"?"L":"l",L[1]))),M},u=/^[Zz]/,p=Xe(["Z","z"],!1,!1),d=function(){return pi("Z")},h=/^[Ll]/,f=Xe(["L","l"],!1,!1),m=function(b,w){return pi(b,w)},y=/^[Hh]/,g=Xe(["H","h"],!1,!1),v=function(b,w){return pi(b,w.map(function(L){return{x:L}}))},O=/^[Vv]/,P=Xe(["V","v"],!1,!1),S=function(b,w){return pi(b,w.map(function(L){return{y:L}}))},T=/^[Cc]/,I=Xe(["C","c"],!1,!1),x=function(b,w,L){return{x1:b.x,y1:b.y,x2:w.x,y2:w.y,x:L.x,y:L.y}},_=/^[Ss]/,D=Xe(["S","s"],!1,!1),A=function(b,w){return{x2:b.x,y2:b.y,x:w.x,y:w.y}},N=/^[Qq]/,E=Xe(["Q","q"],!1,!1),B=function(b,w){return{x1:b.x,y1:b.y,x:w.x,y:w.y}},V=/^[Tt]/,j=Xe(["T","t"],!1,!1),R=/^[Aa]/,W=Xe(["A","a"],!1,!1),F=function(b,w,L,M,z,oe){return{rx:b,ry:w,xAxisRotation:L,largeArc:M,sweep:z,x:oe.x,y:oe.y}},k=function(b,w){return{x:b,y:w}},H=function(b){return b*1},$=function(b){return b.join("")*1},J=/^[01]/,Z=Xe(["0","1"],!1,!1),X=function(b){return b=="1"},te=function(){return""},Y=",",ee=rt(",",!1),K=function(b){return b.join("")},q=".",ue=rt(".",!1),le=/^[eE]/,ne=Xe(["e","E"],!1,!1),ce=/^[+\-]/,ae=Xe(["+","-"],!1,!1),he=/^[0-9]/,pe=Xe([["0","9"]],!1,!1),fe=function(b){return b.join("")},ge=/^[ \t\n\r]/,me=Xe([" "," ",`
2
- `,"\r"],!1,!1),C=0,ie=0,De=[{line:1,column:1}],Re=0,Ee=[],Pe=0,bt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function Me(){return n.substring(ie,C)}function yt(){return Mn(ie,C)}function vt(b,w){throw w=w!==void 0?w:Mn(ie,C),hr([dd(b)],n.substring(ie,C),w)}function An(b,w){throw w=w!==void 0?w:Mn(ie,C),pd(b,w)}function rt(b,w){return{type:"literal",text:b,ignoreCase:w}}function Xe(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Ar(){return{type:"any"}}function ud(){return{type:"end"}}function dd(b){return{type:"other",description:b}}function vl(b){var w=De[b],L;if(w)return w;for(L=b-1;!De[L];)L--;for(w=De[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return De[b]=w,w}function Mn(b,w){var L=vl(b),M=vl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function lt(b){C<Re||(C>Re&&(Re=C,Ee=[]),Ee.push(b))}function pd(b,w){return new ai(b,null,null,w)}function hr(b,w,L){return new ai(ai.buildMessage(b,w),b,w,L)}function fs(){var b,w,L,M,z;for(b=C,w=[],L=Ve();L!==e;)w.push(L),L=Ve();if(w!==e)if(L=jt(),L===e&&(L=null),L!==e){for(M=[],z=Ve();z!==e;)M.push(z),z=Ve();M!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function jt(){var b,w,L,M,z,oe;if(b=C,w=In(),w!==e){for(L=[],M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();for(z!==e?(oe=In(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();z!==e?(oe=In(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function In(){var b,w,L,M,z,oe;if(b=C,w=ui(),w!==e){for(L=[],M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();for(z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Sl(){var b;return b=BS(),b===e&&(b=LS(),b===e&&(b=RS(),b===e&&(b=VS(),b===e&&(b=zS(),b===e&&(b=jS(),b===e&&(b=US(),b===e&&(b=HS(),b===e&&(b=qS())))))))),b}function ui(){var b,w,L,M,z,oe,fi;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(l)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=kt(),M!==e?(z=C,oe=Je(),oe===e&&(oe=null),oe!==e?(fi=xh(),fi!==e?(oe=[oe,fi],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=b,w=c(w,M,z),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function BS(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(p)),w!==e&&(ie=b,w=d()),b=w,b}function LS(){var b,w,L,M;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(f)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=xh(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function xh(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function RS(){var b,w,L,M;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(g)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=bh(),M!==e?(ie=b,w=v(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function bh(){var b,w,L,M,z,oe;if(b=C,w=di(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function VS(){var b,w,L,M;if(b=C,O.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(P)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=bh(),M!==e?(ie=b,w=S(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function zS(){var b,w,L,M;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(I)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=GS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function GS(){var b,w,L,M,z,oe;if(b=C,w=fd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function fd(){var b,w,L,M,z,oe;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function jS(){var b,w,L,M;if(b=C,_.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(D)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=FS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function FS(){var b,w,L,M,z,oe;if(b=C,w=hd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function hd(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=A(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function US(){var b,w,L,M;if(b=C,N.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(E)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=kS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function kS(){var b,w,L,M,z,oe;if(b=C,w=md(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function md(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=B(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function HS(){var b,w,L,M;if(b=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(j)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=WS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function WS(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function qS(){var b,w,L,M;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(W)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=$S(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function $S(){var b,w,L,M,z,oe;if(b=C,w=yd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function yd(){var b,w,L,M,z,oe,fi,xd,Pl,bd,Ol,vd;return b=C,w=vh(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=vh(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(fi=Je(),fi!==e?(xd=Sh(),xd!==e?(Pl=Je(),Pl===e&&(Pl=null),Pl!==e?(bd=Sh(),bd!==e?(Ol=Je(),Ol===e&&(Ol=null),Ol!==e?(vd=kt(),vd!==e?(ie=b,w=F(w,M,oe,xd,bd,vd),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function kt(){var b,w,L,M;return b=C,w=di(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=di(),M!==e?(ie=b,w=k(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function vh(){var b,w;return b=C,w=Ph(),w===e&&(w=Nn()),w!==e&&(ie=b,w=H(w)),b=w,b}function di(){var b,w,L,M;return b=C,w=C,L=gd(),L===e&&(L=null),L!==e?(M=Ph(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=gd(),L===e&&(L=null),L!==e?(M=Nn(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=$(w)),b=w,b}function Sh(){var b,w;return b=C,J.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(Z)),w!==e&&(ie=b,w=X(w)),b=w,b}function Je(){var b,w,L,M,z;if(b=C,w=[],L=Ve(),L!==e)for(;L!==e;)w.push(L),L=Ve();else w=e;if(w!==e)if(L=wh(),L===e&&(L=null),L!==e){for(M=[],z=Ve();z!==e;)M.push(z),z=Ve();M!==e?(w=[w,L,M],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=wh(),L!==e){for(M=[],z=Ve();z!==e;)M.push(z),z=Ve();M!==e?(L=[L,M],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function wh(){var b;return n.charCodeAt(C)===44?(b=Y,C++):(b=e,Pe===0&&lt(ee)),b}function Ph(){var b,w,L,M;return b=C,w=C,L=YS(),L!==e?(M=Oh(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Nn(),L!==e?(M=Oh(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=K(w)),b=w,b}function YS(){var b,w,L,M,z;return b=C,w=C,L=Nn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=q,C++):(M=e,Pe===0&&lt(ue)),M!==e?(z=Nn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Nn(),L!==e?(n.charCodeAt(C)===46?(M=q,C++):(M=e,Pe===0&&lt(ue)),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=K(w)),b=w,b}function Oh(){var b,w,L,M,z;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&lt(ne)),L!==e?(M=gd(),M===e&&(M=null),M!==e?(z=Nn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=K(w)),b=w,b}function gd(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Pe===0&&lt(ae)),b}function Nn(){var b,w,L;if(b=C,w=[],he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&lt(pe)),L!==e)for(;L!==e;)w.push(L),he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&lt(pe));else w=e;return w!==e&&(ie=b,w=fe(w)),b=w,b}function Ve(){var b,w;return b=C,ge.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(me)),w!==e&&(ie=b,w=te()),b=w,b}function XS(b,w){if(!w)return[b];for(var L=[b],M=0,z=w.length;M<z;M++)L[M+1]=w[M][1];return L}var wl={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var Ch in wl)wl[Ch.toUpperCase()]=wl[Ch];function pi(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:wl[b]};b==b.toLowerCase()&&(M.relative=!0);for(var z in w[L])M[z]=w[L][z];w[L]=M}return w}if(bt=o(),bt!==e&&C===n.length)return bt;throw bt!==e&&C<n.length&&lt(ud()),hr(Ee,Re<n.length?n.charAt(Re):null,Re<n.length?Mn(Re,Re+1):Mn(Re,Re))}wv.exports={SyntaxError:ai,parse:dD}});var rh=Dn((bie,Ov)=>{var $u=Pv().parse;$u.parseSVG=$u;$u.makeAbsolute=pD;Ov.exports=$u;function pD(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=r.x,o.y=r.y),e=o}),n}});var NS=Dn((fpe,IS)=>{IS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as RE,Loader as VE}from"three";function Tl(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Ht(n,r){return Object.setPrototypeOf(n,r),n}function Al(n){return Array.isArray(n)?n:[n]}function Ml(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var n1=typeof global=="object"&&global&&global.Object===Object&&global,Il=n1;var i1=typeof self=="object"&&self&&self.Object===Object&&self,a1=Il||i1||Function("return this")(),gt=a1;var s1=gt.Symbol,At=s1;var Th=Object.prototype,l1=Th.hasOwnProperty,c1=Th.toString,hs=At?At.toStringTag:void 0;function u1(n){var r=l1.call(n,hs),e=n[hs];try{n[hs]=void 0;var t=!0}catch{}var o=c1.call(n);return t&&(r?n[hs]=e:delete n[hs]),o}var Ah=u1;var d1=Object.prototype,p1=d1.toString;function f1(n){return p1.call(n)}var Mh=f1;var h1="[object Null]",m1="[object Undefined]",Ih=At?At.toStringTag:void 0;function y1(n){return n==null?n===void 0?m1:h1:Ih&&Ih in Object(n)?Ah(n):Mh(n)}var ar=y1;function g1(n){return n!=null&&typeof n=="object"}var Bt=g1;var x1="[object Symbol]";function b1(n){return typeof n=="symbol"||Bt(n)&&ar(n)==x1}var mi=b1;function v1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Nl=v1;var S1=Array.isArray,ct=S1;var w1=1/0,Nh=At?At.prototype:void 0,Dh=Nh?Nh.toString:void 0;function Eh(n){if(typeof n=="string")return n;if(ct(n))return Nl(n,Eh)+"";if(mi(n))return Dh?Dh.call(n):"";var r=n+"";return r=="0"&&1/n==-w1?"-0":r}var _h=Eh;function P1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var sr=P1;function O1(n){return n}var Bh=O1;var C1="[object AsyncFunction]",T1="[object Function]",A1="[object GeneratorFunction]",M1="[object Proxy]";function I1(n){if(!sr(n))return!1;var r=ar(n);return r==T1||r==A1||r==C1||r==M1}var Dl=I1;var N1=gt["__core-js_shared__"],El=N1;var Lh=function(){var n=/[^.]+$/.exec(El&&El.keys&&El.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function D1(n){return!!Lh&&Lh in n}var Rh=D1;var E1=Function.prototype,_1=E1.toString;function B1(n){if(n!=null){try{return _1.call(n)}catch{}try{return n+""}catch{}}return""}var yo=B1;var L1=/[\\^$.*+?()[\]{}|]/g,R1=/^\[object .+?Constructor\]$/,V1=Function.prototype,z1=Object.prototype,G1=V1.toString,j1=z1.hasOwnProperty,F1=RegExp("^"+G1.call(j1).replace(L1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U1(n){if(!sr(n)||Rh(n))return!1;var r=Dl(n)?F1:R1;return r.test(yo(n))}var Vh=U1;function k1(n,r){return n?.[r]}var zh=k1;function H1(n,r){var e=zh(n,r);return Vh(e)?e:void 0}var Qt=H1;var W1=Qt(gt,"WeakMap"),_l=W1;var Gh=Object.create,q1=function(){function n(){}return function(r){if(!sr(r))return{};if(Gh)return Gh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),jh=q1;function $1(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Fh=$1;function Y1(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Uh=Y1;var X1=800,K1=16,Q1=Date.now;function Z1(n){var r=0,e=0;return function(){var t=Q1(),o=K1-(t-e);if(e=t,o>0){if(++r>=X1)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var kh=Z1;function J1(n){return function(){return n}}var Hh=J1;var ew=function(){try{var n=Qt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),yi=ew;var tw=yi?function(n,r){return yi(n,"toString",{configurable:!0,enumerable:!1,value:Hh(r),writable:!0})}:Bh,Wh=tw;var rw=kh(Wh),qh=rw;function ow(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var $h=ow;var nw=9007199254740991,iw=/^(?:0|[1-9]\d*)$/;function aw(n,r){var e=typeof n;return r=r??nw,!!r&&(e=="number"||e!="symbol"&&iw.test(n))&&n>-1&&n%1==0&&n<r}var gi=aw;function sw(n,r,e){r=="__proto__"&&yi?yi(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Bl=sw;function lw(n,r){return n===r||n!==n&&r!==r}var xi=lw;var cw=Object.prototype,uw=cw.hasOwnProperty;function dw(n,r,e){var t=n[r];(!(uw.call(n,r)&&xi(t,e))||e===void 0&&!(r in n))&&Bl(n,r,e)}var bi=dw;function pw(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Bl(e,s,l):bi(e,s,l)}return e}var Hr=pw;var Yh=Math.max;function fw(n,r,e){return r=Yh(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Yh(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Fh(n,this,s)}}var Xh=fw;var hw=9007199254740991;function mw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=hw}var vi=mw;function yw(n){return n!=null&&vi(n.length)&&!Dl(n)}var Ll=yw;var gw=Object.prototype;function xw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||gw;return n===e}var Si=xw;function bw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Kh=bw;var vw="[object Arguments]";function Sw(n){return Bt(n)&&ar(n)==vw}var Sd=Sw;var Qh=Object.prototype,ww=Qh.hasOwnProperty,Pw=Qh.propertyIsEnumerable,Ow=Sd(function(){return arguments}())?Sd:function(n){return Bt(n)&&ww.call(n,"callee")&&!Pw.call(n,"callee")},wi=Ow;function Cw(){return!1}var Zh=Cw;var tm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jh=tm&&typeof module=="object"&&module&&!module.nodeType&&module,Tw=Jh&&Jh.exports===tm,em=Tw?gt.Buffer:void 0,Aw=em?em.isBuffer:void 0,Mw=Aw||Zh,_n=Mw;var Iw="[object Arguments]",Nw="[object Array]",Dw="[object Boolean]",Ew="[object Date]",_w="[object Error]",Bw="[object Function]",Lw="[object Map]",Rw="[object Number]",Vw="[object Object]",zw="[object RegExp]",Gw="[object Set]",jw="[object String]",Fw="[object WeakMap]",Uw="[object ArrayBuffer]",kw="[object DataView]",Hw="[object Float32Array]",Ww="[object Float64Array]",qw="[object Int8Array]",$w="[object Int16Array]",Yw="[object Int32Array]",Xw="[object Uint8Array]",Kw="[object Uint8ClampedArray]",Qw="[object Uint16Array]",Zw="[object Uint32Array]",et={};et[Hw]=et[Ww]=et[qw]=et[$w]=et[Yw]=et[Xw]=et[Kw]=et[Qw]=et[Zw]=!0;et[Iw]=et[Nw]=et[Uw]=et[Dw]=et[kw]=et[Ew]=et[_w]=et[Bw]=et[Lw]=et[Rw]=et[Vw]=et[zw]=et[Gw]=et[jw]=et[Fw]=!1;function Jw(n){return Bt(n)&&vi(n.length)&&!!et[ar(n)]}var rm=Jw;function e2(n){return function(r){return n(r)}}var Pi=e2;var om=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ms=om&&typeof module=="object"&&module&&!module.nodeType&&module,t2=ms&&ms.exports===om,wd=t2&&Il.process,r2=function(){try{var n=ms&&ms.require&&ms.require("util").types;return n||wd&&wd.binding&&wd.binding("util")}catch{}}(),go=r2;var nm=go&&go.isTypedArray,o2=nm?Pi(nm):rm,Rl=o2;var n2=Object.prototype,i2=n2.hasOwnProperty;function a2(n,r){var e=ct(n),t=!e&&wi(n),o=!e&&!t&&_n(n),i=!e&&!t&&!o&&Rl(n),a=e||t||o||i,s=a?Kh(n.length,String):[],l=s.length;for(var c in n)(r||i2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||gi(c,l)))&&s.push(c);return s}var Vl=a2;function s2(n,r){return function(e){return n(r(e))}}var zl=s2;var l2=zl(Object.keys,Object),im=l2;var c2=Object.prototype,u2=c2.hasOwnProperty;function d2(n){if(!Si(n))return im(n);var r=[];for(var e in Object(n))u2.call(n,e)&&e!="constructor"&&r.push(e);return r}var am=d2;function p2(n){return Ll(n)?Vl(n):am(n)}var Oi=p2;function f2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var sm=f2;var h2=Object.prototype,m2=h2.hasOwnProperty;function y2(n){if(!sr(n))return sm(n);var r=Si(n),e=[];for(var t in n)t=="constructor"&&(r||!m2.call(n,t))||e.push(t);return e}var lm=y2;function g2(n){return Ll(n)?Vl(n,!0):lm(n)}var Ci=g2;var x2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,b2=/^\w*$/;function v2(n,r){if(ct(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||mi(n)?!0:b2.test(n)||!x2.test(n)||r!=null&&n in Object(r)}var cm=v2;var S2=Qt(Object,"create"),xo=S2;function w2(){this.__data__=xo?xo(null):{},this.size=0}var um=w2;function P2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var dm=P2;var O2="__lodash_hash_undefined__",C2=Object.prototype,T2=C2.hasOwnProperty;function A2(n){var r=this.__data__;if(xo){var e=r[n];return e===O2?void 0:e}return T2.call(r,n)?r[n]:void 0}var pm=A2;var M2=Object.prototype,I2=M2.hasOwnProperty;function N2(n){var r=this.__data__;return xo?r[n]!==void 0:I2.call(r,n)}var fm=N2;var D2="__lodash_hash_undefined__";function E2(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xo&&r===void 0?D2:r,this}var hm=E2;function Ti(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ti.prototype.clear=um;Ti.prototype.delete=dm;Ti.prototype.get=pm;Ti.prototype.has=fm;Ti.prototype.set=hm;var Pd=Ti;function _2(){this.__data__=[],this.size=0}var mm=_2;function B2(n,r){for(var e=n.length;e--;)if(xi(n[e][0],r))return e;return-1}var Ho=B2;var L2=Array.prototype,R2=L2.splice;function V2(n){var r=this.__data__,e=Ho(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():R2.call(r,e,1),--this.size,!0}var ym=V2;function z2(n){var r=this.__data__,e=Ho(r,n);return e<0?void 0:r[e][1]}var gm=z2;function G2(n){return Ho(this.__data__,n)>-1}var xm=G2;function j2(n,r){var e=this.__data__,t=Ho(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var bm=j2;function Ai(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ai.prototype.clear=mm;Ai.prototype.delete=ym;Ai.prototype.get=gm;Ai.prototype.has=xm;Ai.prototype.set=bm;var Wo=Ai;var F2=Qt(gt,"Map"),qo=F2;function U2(){this.size=0,this.__data__={hash:new Pd,map:new(qo||Wo),string:new Pd}}var vm=U2;function k2(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Sm=k2;function H2(n,r){var e=n.__data__;return Sm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var $o=H2;function W2(n){var r=$o(this,n).delete(n);return this.size-=r?1:0,r}var wm=W2;function q2(n){return $o(this,n).get(n)}var Pm=q2;function $2(n){return $o(this,n).has(n)}var Om=$2;function Y2(n,r){var e=$o(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Cm=Y2;function Mi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Mi.prototype.clear=vm;Mi.prototype.delete=wm;Mi.prototype.get=Pm;Mi.prototype.has=Om;Mi.prototype.set=Cm;var Bn=Mi;var X2="Expected a function";function Od(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(X2);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(Od.Cache||Bn),e}Od.Cache=Bn;var Tm=Od;var K2=500;function Q2(n){var r=Tm(n,function(t){return e.size===K2&&e.clear(),t}),e=r.cache;return r}var Am=Q2;var Z2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,J2=/\\(\\)?/g,eP=Am(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Z2,function(e,t,o,i){r.push(o?i.replace(J2,"$1"):t||e)}),r}),Mm=eP;function tP(n){return n==null?"":_h(n)}var Im=tP;function rP(n,r){return ct(n)?n:cm(n,r)?[n]:Mm(Im(n))}var mr=rP;var oP=1/0;function nP(n){if(typeof n=="string"||mi(n))return n;var r=n+"";return r=="0"&&1/n==-oP?"-0":r}var Yo=nP;function iP(n,r){r=mr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Yo(r[e++])];return e&&e==t?n:void 0}var Gl=iP;function aP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Ii=aP;var Nm=At?At.isConcatSpreadable:void 0;function sP(n){return ct(n)||wi(n)||!!(Nm&&n&&n[Nm])}var Dm=sP;function Em(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=Dm),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Em(s,r-1,e,t,o):Ii(o,s):t||(o[o.length]=s)}return o}var _m=Em;function lP(n){var r=n==null?0:n.length;return r?_m(n,1):[]}var Bm=lP;function cP(n){return qh(Xh(n,void 0,Bm),n+"")}var jl=cP;var uP=zl(Object.getPrototypeOf,Object),Ni=uP;var dP="[object Object]",pP=Function.prototype,fP=Object.prototype,Lm=pP.toString,hP=fP.hasOwnProperty,mP=Lm.call(Object);function yP(n){if(!Bt(n)||ar(n)!=dP)return!1;var r=Ni(n);if(r===null)return!0;var e=hP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Lm.call(e)==mP}var Rm=yP;function gP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Vm=gP;function xP(){this.__data__=new Wo,this.size=0}var zm=xP;function bP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Gm=bP;function vP(n){return this.__data__.get(n)}var jm=vP;function SP(n){return this.__data__.has(n)}var Fm=SP;var wP=200;function PP(n,r){var e=this.__data__;if(e instanceof Wo){var t=e.__data__;if(!qo||t.length<wP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Bn(t)}return e.set(n,r),this.size=e.size,this}var Um=PP;function Di(n){var r=this.__data__=new Wo(n);this.size=r.size}Di.prototype.clear=zm;Di.prototype.delete=Gm;Di.prototype.get=jm;Di.prototype.has=Fm;Di.prototype.set=Um;var Ei=Di;function OP(n,r){return n&&Hr(r,Oi(r),n)}var km=OP;function CP(n,r){return n&&Hr(r,Ci(r),n)}var Hm=CP;var Ym=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wm=Ym&&typeof module=="object"&&module&&!module.nodeType&&module,TP=Wm&&Wm.exports===Ym,qm=TP?gt.Buffer:void 0,$m=qm?qm.allocUnsafe:void 0;function AP(n,r){if(r)return n.slice();var e=n.length,t=$m?$m(e):new n.constructor(e);return n.copy(t),t}var Xm=AP;function MP(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Km=MP;function IP(){return[]}var Fl=IP;var NP=Object.prototype,DP=NP.propertyIsEnumerable,Qm=Object.getOwnPropertySymbols,EP=Qm?function(n){return n==null?[]:(n=Object(n),Km(Qm(n),function(r){return DP.call(n,r)}))}:Fl,_i=EP;function _P(n,r){return Hr(n,_i(n),r)}var Zm=_P;var BP=Object.getOwnPropertySymbols,LP=BP?function(n){for(var r=[];n;)Ii(r,_i(n)),n=Ni(n);return r}:Fl,Ul=LP;function RP(n,r){return Hr(n,Ul(n),r)}var Jm=RP;function VP(n,r,e){var t=r(n);return ct(n)?t:Ii(t,e(n))}var kl=VP;function zP(n){return kl(n,Oi,_i)}var ys=zP;function GP(n){return kl(n,Ci,Ul)}var Hl=GP;var jP=Qt(gt,"DataView"),Wl=jP;var FP=Qt(gt,"Promise"),ql=FP;var UP=Qt(gt,"Set"),$l=UP;var ey="[object Map]",kP="[object Object]",ty="[object Promise]",ry="[object Set]",oy="[object WeakMap]",ny="[object DataView]",HP=yo(Wl),WP=yo(qo),qP=yo(ql),$P=yo($l),YP=yo(_l),Ln=ar;(Wl&&Ln(new Wl(new ArrayBuffer(1)))!=ny||qo&&Ln(new qo)!=ey||ql&&Ln(ql.resolve())!=ty||$l&&Ln(new $l)!=ry||_l&&Ln(new _l)!=oy)&&(Ln=function(n){var r=ar(n),e=r==kP?n.constructor:void 0,t=e?yo(e):"";if(t)switch(t){case HP:return ny;case WP:return ey;case qP:return ty;case $P:return ry;case YP:return oy}return r});var bo=Ln;var XP=Object.prototype,KP=XP.hasOwnProperty;function QP(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&KP.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var iy=QP;var ZP=gt.Uint8Array,Bi=ZP;function JP(n){var r=new n.constructor(n.byteLength);return new Bi(r).set(new Bi(n)),r}var Li=JP;function eO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ay=eO;var tO=/\w*$/;function rO(n){var r=new n.constructor(n.source,tO.exec(n));return r.lastIndex=n.lastIndex,r}var sy=rO;var ly=At?At.prototype:void 0,cy=ly?ly.valueOf:void 0;function oO(n){return cy?Object(cy.call(n)):{}}var uy=oO;function nO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var dy=nO;var iO="[object Boolean]",aO="[object Date]",sO="[object Map]",lO="[object Number]",cO="[object RegExp]",uO="[object Set]",dO="[object String]",pO="[object Symbol]",fO="[object ArrayBuffer]",hO="[object DataView]",mO="[object Float32Array]",yO="[object Float64Array]",gO="[object Int8Array]",xO="[object Int16Array]",bO="[object Int32Array]",vO="[object Uint8Array]",SO="[object Uint8ClampedArray]",wO="[object Uint16Array]",PO="[object Uint32Array]";function OO(n,r,e){var t=n.constructor;switch(r){case fO:return Li(n);case iO:case aO:return new t(+n);case hO:return ay(n,e);case mO:case yO:case gO:case xO:case bO:case vO:case SO:case wO:case PO:return dy(n,e);case sO:return new t;case lO:case dO:return new t(n);case cO:return sy(n);case uO:return new t;case pO:return uy(n)}}var py=OO;function CO(n){return typeof n.constructor=="function"&&!Si(n)?jh(Ni(n)):{}}var fy=CO;var TO="[object Map]";function AO(n){return Bt(n)&&bo(n)==TO}var hy=AO;var my=go&&go.isMap,MO=my?Pi(my):hy,yy=MO;var IO="[object Set]";function NO(n){return Bt(n)&&bo(n)==IO}var gy=NO;var xy=go&&go.isSet,DO=xy?Pi(xy):gy,by=DO;var EO=1,_O=2,BO=4,vy="[object Arguments]",LO="[object Array]",RO="[object Boolean]",VO="[object Date]",zO="[object Error]",Sy="[object Function]",GO="[object GeneratorFunction]",jO="[object Map]",FO="[object Number]",wy="[object Object]",UO="[object RegExp]",kO="[object Set]",HO="[object String]",WO="[object Symbol]",qO="[object WeakMap]",$O="[object ArrayBuffer]",YO="[object DataView]",XO="[object Float32Array]",KO="[object Float64Array]",QO="[object Int8Array]",ZO="[object Int16Array]",JO="[object Int32Array]",eC="[object Uint8Array]",tC="[object Uint8ClampedArray]",rC="[object Uint16Array]",oC="[object Uint32Array]",Ze={};Ze[vy]=Ze[LO]=Ze[$O]=Ze[YO]=Ze[RO]=Ze[VO]=Ze[XO]=Ze[KO]=Ze[QO]=Ze[ZO]=Ze[JO]=Ze[jO]=Ze[FO]=Ze[wy]=Ze[UO]=Ze[kO]=Ze[HO]=Ze[WO]=Ze[eC]=Ze[tC]=Ze[rC]=Ze[oC]=!0;Ze[zO]=Ze[Sy]=Ze[qO]=!1;function Yl(n,r,e,t,o,i){var a,s=r&EO,l=r&_O,c=r&BO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!sr(n))return n;var u=ct(n);if(u){if(a=iy(n),!s)return Uh(n,a)}else{var p=bo(n),d=p==Sy||p==GO;if(_n(n))return Xm(n,s);if(p==wy||p==vy||d&&!o){if(a=l||d?{}:fy(n),!s)return l?Jm(n,Hm(a,n)):Zm(n,km(a,n))}else{if(!Ze[p])return o?n:{};a=py(n,p,s)}}i||(i=new Ei);var h=i.get(n);if(h)return h;i.set(n,a),by(n)?n.forEach(function(y){a.add(Yl(y,r,e,y,n,i))}):yy(n)&&n.forEach(function(y,g){a.set(g,Yl(y,r,e,g,n,i))});var f=c?l?Hl:ys:l?Ci:Oi,m=u?void 0:f(n);return $h(m||n,function(y,g){m&&(g=y,y=n[g]),bi(a,g,Yl(y,r,e,g,n,i))}),a}var Xl=Yl;var nC=1,iC=4;function aC(n){return Xl(n,nC|iC)}var vo=aC;var sC="__lodash_hash_undefined__";function lC(n){return this.__data__.set(n,sC),this}var Py=lC;function cC(n){return this.__data__.has(n)}var Oy=cC;function Kl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}Kl.prototype.add=Kl.prototype.push=Py;Kl.prototype.has=Oy;var Cy=Kl;function uC(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Ty=uC;function dC(n,r){return n.has(r)}var Ay=dC;var pC=1,fC=2;function hC(n,r,e,t,o,i){var a=e&pC,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,h=e&fC?new Cy:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var f=n[p],m=r[p];if(t)var y=a?t(m,f,p,r,n,i):t(f,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(h){if(!Ty(r,function(g,v){if(!Ay(h,v)&&(f===g||o(f,g,e,t,i)))return h.push(v)})){d=!1;break}}else if(!(f===m||o(f,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Ql=hC;function mC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var My=mC;function yC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Iy=yC;var gC=1,xC=2,bC="[object Boolean]",vC="[object Date]",SC="[object Error]",wC="[object Map]",PC="[object Number]",OC="[object RegExp]",CC="[object Set]",TC="[object String]",AC="[object Symbol]",MC="[object ArrayBuffer]",IC="[object DataView]",Ny=At?At.prototype:void 0,Cd=Ny?Ny.valueOf:void 0;function NC(n,r,e,t,o,i,a){switch(e){case IC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case MC:return!(n.byteLength!=r.byteLength||!i(new Bi(n),new Bi(r)));case bC:case vC:case PC:return xi(+n,+r);case SC:return n.name==r.name&&n.message==r.message;case OC:case TC:return n==r+"";case wC:var s=My;case CC:var l=t&gC;if(s||(s=Iy),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=xC,a.set(n,r);var u=Ql(s(n),s(r),t,o,i,a);return a.delete(n),u;case AC:if(Cd)return Cd.call(n)==Cd.call(r)}return!1}var Dy=NC;var DC=1,EC=Object.prototype,_C=EC.hasOwnProperty;function BC(n,r,e,t,o,i){var a=e&DC,s=ys(n),l=s.length,c=ys(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:_C.call(r,d)))return!1}var h=i.get(n),f=i.get(r);if(h&&f)return h==r&&f==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var g=n[d],v=r[d];if(t)var O=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(O===void 0?g===v||o(g,v,e,t,i):O)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var P=n.constructor,S=r.constructor;P!=S&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var Ey=BC;var LC=1,_y="[object Arguments]",By="[object Array]",Zl="[object Object]",RC=Object.prototype,Ly=RC.hasOwnProperty;function VC(n,r,e,t,o,i){var a=ct(n),s=ct(r),l=a?By:bo(n),c=s?By:bo(r);l=l==_y?Zl:l,c=c==_y?Zl:c;var u=l==Zl,p=c==Zl,d=l==c;if(d&&_n(n)){if(!_n(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Ei),a||Rl(n)?Ql(n,r,e,t,o,i):Dy(n,r,l,e,t,o,i);if(!(e&LC)){var h=u&&Ly.call(n,"__wrapped__"),f=p&&Ly.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Ei),o(m,y,e,t,i)}}return d?(i||(i=new Ei),Ey(n,r,e,t,o,i)):!1}var Ry=VC;function Vy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Bt(n)&&!Bt(r)?n!==n&&r!==r:Ry(n,r,e,t,Vy,o)}var zy=Vy;function zC(n,r){return n!=null&&r in Object(n)}var Gy=zC;function GC(n,r,e){r=mr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Yo(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&vi(o)&&gi(a,o)&&(ct(n)||wi(n)))}var jy=GC;function jC(n,r){return n!=null&&jy(n,r,Gy)}var Fy=jC;function FC(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Uy=FC;function UC(n,r){return r.length<2?n:Gl(n,Vm(r,0,-1))}var ky=UC;function kC(n,r){return zy(n,r)}var Td=kC;function HC(n,r){return r=mr(r,n),n=ky(n,r),n==null||delete n[Yo(Uy(r))]}var Hy=HC;function WC(n){return Rm(n)?void 0:n}var Wy=WC;var qC=1,$C=2,YC=4,XC=jl(function(n,r){var e={};if(n==null)return e;var t=!1;r=Nl(r,function(i){return i=mr(i,n),t||(t=i.length>1),i}),Hr(n,Hl(n),e),t&&(e=Xl(e,qC|$C|YC,Wy));for(var o=r.length;o--;)Hy(e,r[o]);return e}),Ri=XC;function KC(n,r,e,t){if(!sr(n))return n;r=mr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=Yo(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=sr(u)?u:gi(r[o+1])?[]:{})}bi(s,l,c),s=s[l]}return n}var qy=KC;function QC(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Gl(n,a);e(s,a)&&qy(i,mr(a,n),s)}return i}var $y=QC;function ZC(n,r){return $y(n,r,function(e,t){return Fy(n,t)})}var Yy=ZC;var JC=jl(function(n,r){return n==null?{}:Yy(n,r)}),Mr=JC;var xe=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,xe.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,xe.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,xe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function gs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&gs(t)}return Object.freeze(n)}function Xy(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Vi=class extends Error{};function Jl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Wr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function zi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Ky(){return typeof process<"u"}function Qy(n,r){for(let e of n)r(e.id,e.data)!==!0&&Qy(e.children,r)}function Zy(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Zy(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Zy(o,t)}}traverse(e){Qy(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,Ke.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:a,children:s};return c=[...c,u],c.sort((d,h)=>d.fi-h.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let h=t;for(;h!==null;){if(h===void 0)throw new Error;if(h===i)throw new Vi("cyclic tree");h=this.parent(h)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(h=>h.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((h,f)=>h.fi-f.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Xy(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Wr(0,o,o);{let a=i[0].fi;return Wr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Wr(l,l+o,o)}else return Wr(a.fi,s.fi,o)}}};var Gi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Gi||(Gi={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ve.prototype);let t=e;return Ky()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Wr(0,t,t);{let i=o[0].fi;return Wr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Wr(s,s+t,t)}else return Wr(i.fi,a.fi,t)}}};function ji(n){return n&&typeof n=="object"&&n instanceof Qe}var Qe=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ji(t))return null;o+=1}t=t?Jl(t):new Qe;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=Jl(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Jl(l);c[r.path[o-1]]=t,t=c}else{let c=new Qe;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,Qe.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},qr;(t=>{function n(o,i){return xs(o,i)??o}t.apply=n;function r(o,i){return Md(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!ji(l))return;a+=1}if(l===void 0)return i;if(!!ji(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=Ad([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(qr||(qr={}));function Ad(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Ad(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function eT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function xs(n,r){if(!ji(r))return r;if(n instanceof Ke){let e=Ad(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return eT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=xs(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Qe)return Md(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=xs(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Md(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ji(r))return r;if(!ji(n))return qr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Qe;for(let o of e){let i=Md(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Jy(n,r){let e={cur:[],result:[],len:0};return n=bs(n,r,e)??n,[n,e.result]}function ec(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function tc(n){n&&(n.len-=1)}function tT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function eg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));tc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=eg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function rT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));return tc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function bs(n,r,e){if(n instanceof Ke){let t=eg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return rT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=bs(i,r,ec(e,a));return tc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!zi(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=bs(a,r,ec(e,i));tc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&tT(e),t}else return}}var Fi;(r=>{function n(e,t){let o=ot.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Fi||(Fi={}));var nt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof Qe&&c.type===0&&(d=l.runOp({...c,path:u.slice(p.length)}),d===null&&(d=void 0)),d===void 0&&p.length===u.length&&(l instanceof Ke||l instanceof ve||l instanceof xe?d=l.runOp(c):d=Gi.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let g=u[y],v=p[y];if(v instanceof Ke){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof ve){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof xe){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Qe){let O={...v,[g]:m};m=Object.setPrototypeOf(O,Qe.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let O=m;m=[...v],m[g]=O}else m={...v,[g]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let h=u[p.length],f;if(l instanceof Ke){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof ve){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else l!==null&&(f=l[h]);if(f!==void 0)p.push(l),l=f;else return null}}s.apply=e;function t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function i(l,c){return t(l.path,c.path)}s.commutative=i;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var vs;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[h,...f]=d.path;h===u&&p.push({...d,path:f})}return p}l.removePrefix=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(h=>nt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>nt.commutative(p,d)))}l.commutative=i;function a(c,u){for(let p of u){let d=s(c,p);d!==null&&(c=d.data)}return c}l.applyAll=a;function s(c,u){var p=c;let d=[],h=[];for(let f of u)try{if(f.type===3||f.type===5&&f.path[f.path.length-1]==="variables"){let m,y,g;if(f.type===3?(m=ot.zoom(p,[...f.path,f.id]),g=nt.apply(p,{...f,type:2})):(m=ot.zoom(p,[...f.path,f.id,"value"]),g=nt.apply(p,f)),g!==null){p=g.data;let[v,O]=Jy(p,{[f.id]:m});p=v;for(let P=0;P<O.length;P++){let S=O[P],T=S.pop();if(typeof T=="number"){let I=[T];for(let _=P+1;_<O.length;_++){let D=O[_],A=D[D.length-1];if(typeof A=="number"&&ot.equal(S,D.slice(0,D.length-1)))I.push(A),O.splice(_,1);else break}let x=ot.zoom(p,S);y=x.map((_,D)=>I.includes(D)?f.id:_),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let I=m,x=ot.zoom(p,S.slice(0,S.length-2)),_=x.layers.map(D=>D.id===S[S.length-1]?{...D,data:{...D.data,[T]:I}}:D);Object.setPrototypeOf(_,Object.getPrototypeOf(x.layers)),x.layers=_}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=nt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof Vi)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(vs||(vs={}));var tg=Symbol(),oT=Symbol(),oc=Symbol(),Rn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof rc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[oc];t&&t(),delete this._children[r]}}}},Nd=class extends Rn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Gi.runOp(this._current,r),r.path)}},Dd=class extends Rn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,xe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},rg={get(n,r){if(r===oc)return()=>{n._parent=null};if(r===tg)return n._current;if(r===oT)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=nc(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},nT={...rg,set(n,r,e){let t={type:0,props:{[r]:ut(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},iT={...rg,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Ui=class extends Rn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ki=class extends Rn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Id(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ot.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var rc=class extends Rn{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Id(this.ts,e,r),Id(this.actual,t,r),Id(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function nc(n,r,e){return e instanceof Ke?new Ui(n,r,e):e instanceof ve?new ki(n,r,e):e instanceof xe?new Proxy(new Dd(n,r,e),iT):e!==null&&typeof e=="object"?zi(e)?e:new Proxy(new Nd(n,r,e),nT):e}function Ed(n){let r=new rc(n);return[nc(r,"",n),r]}function Xo(n,r){let[e,t]=Ed(n);return r(e),t.result()}function ut(n){return n instanceof Ui||n instanceof ki?n._current:n!==null&&typeof n=="object"?n[tg]:n}var ot;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=r;function e(i,a){if((i instanceof Ke||i instanceof Ui)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ki)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ot||(ot={}));function og(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Be(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var ic=class{},Ss=class extends ic{constructor(e){super();this.id=e}},ws=class extends ic{constructor(e){super();this.data=e}};var Bd;try{Bd=new TextDecoder}catch{}var de,Qo,G=0;var dg=[],Ld=dg,Rd=0,Zt={},ke,Ko,yr=0,$r=0,lr,So,Wt=[],We,ng={useRecords:!1,mapsAsObjects:!0},Ps=class{},zd=new Ps;zd.name="MessagePack 0xC1";var Hi=!1,Yr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return yg(()=>(sc(),this?this.unpack(r,e):Yr.prototype.unpack.call(ng,r,e)));Qo=e>-1?e:r.length,G=0,Rd=0,$r=0,Ko=null,Ld=dg,lr=null,de=r;try{We=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Yr){if(Zt=this,this.structures)return ke=this.structures,ac();(!ke||ke.length>0)&&(ke=[])}else Zt=ng,(!ke||ke.length>0)&&(ke=[]);return ac()}unpackMultiple(r,e){let t,o=0;try{Hi=!0;let i=r.length,a=this?this.unpack(r,i):uc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(ac())===!1)return}else{for(t=[a];G<i;)o=G,t.push(ac());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Hi=!1,sc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function ac(){try{if(!Zt.trusted&&!Hi){let r=ke.sharedLength||0;r<ke.length&&(ke.length=r)}let n=dt();if(G==Qo)ke.restoreStructures&&ig(),ke=null,de=null,So&&(So=null);else if(G>Qo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Hi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ke.restoreStructures&&ig(),sc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function ig(){for(let n in ke.restoreStructures)ke[n]=ke.restoreStructures[n];ke.restoreStructures=null}function dt(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=ke[n&63]||Zt.getStructures&&pg()[n&63];return r?(r.read||(r.read=Gd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Zt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[hg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}else if(n<192){let r=n-160;if($r>=G)return Ko.slice(G-yr,(G+=r)-yr);if($r==0&&Qo<140){let e=r<16?jd(r):fg(r);if(e!=null)return e}return Vd(r)}else{let r;switch(n){case 192:return null;case 193:return lr?(r=dt(),r>0?lr[1].slice(lr.position1,lr.position1+=r):lr[0].slice(lr.position0,lr.position0-=r)):zd;case 194:return!1;case 195:return!0;case 196:return _d(de[G++]);case 197:return r=We.getUint16(G),G+=2,_d(r);case 198:return r=We.getUint32(G),G+=4,_d(r);case 199:return Vn(de[G++]);case 200:return r=We.getUint16(G),G+=2,Vn(r);case 201:return r=We.getUint32(G),G+=4,Vn(r);case 202:if(r=We.getFloat32(G),Zt.useFloat32>2){let e=cc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=We.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=We.getUint16(G),G+=2,r;case 206:return r=We.getUint32(G),G+=4,r;case 207:return Zt.int64AsNumber?(r=We.getUint32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigUint64(G),G+=8,r;case 208:return We.getInt8(G++);case 209:return r=We.getInt16(G),G+=2,r;case 210:return r=We.getInt32(G),G+=4,r;case 211:return Zt.int64AsNumber?(r=We.getInt32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return ug(de[G++]&63);{let e=Wt[r];if(e)return e.read?(G++,e.read(dt())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,ug(de[G++]&63,de[G++])):Vn(2);case 214:return Vn(4);case 215:return Vn(8);case 216:return Vn(16);case 217:return r=de[G++],$r>=G?Ko.slice(G-yr,(G+=r)-yr):sT(r);case 218:return r=We.getUint16(G),G+=2,$r>=G?Ko.slice(G-yr,(G+=r)-yr):lT(r);case 219:return r=We.getUint32(G),G+=4,$r>=G?Ko.slice(G-yr,(G+=r)-yr):cT(r);case 220:return r=We.getUint16(G),G+=2,sg(r);case 221:return r=We.getUint32(G),G+=4,sg(r);case 222:return r=We.getUint16(G),G+=2,lg(r);case 223:return r=We.getUint32(G),G+=4,lg(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var aT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Gd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>aT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(dt);return n.highByte===0&&(n.read=ag(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=dt()}return t}return e.count=0,n.highByte===0?ag(r,e):e}var ag=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=ke[t]||pg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Gd(o,n)),o.read()};function pg(){let n=yg(()=>(de=null,Zt.getStructures()));return ke=Zt._mergeStructures(n,ke)}var Vd=lc,sT=lc,lT=lc,cT=lc;function lc(n){let r;if(n<16&&(r=jd(n)))return r;if(n>64&&Bd)return Bd.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=Mt.apply(String,t),t.length=0)}return t.length>0&&(r+=Mt.apply(String,t)),r}function sg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}function lg(n){if(Zt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[hg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}}var Mt=String.fromCharCode;function fg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return Mt.apply(String,e)}function jd(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return Mt(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return Mt(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return Mt(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Mt(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Mt(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Mt(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Mt(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Mt(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return Mt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return Mt(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return Mt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return Mt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[G++],f=de[G++];if((h&128)>0||(f&128)>0){G-=14;return}if(n<15)return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[G++];if((m&128)>0){G-=15;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function _d(n){return Zt.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function Vn(n){let r=de[G++];if(Wt[r])return Wt[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var cg=new Array(4096);function hg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,$r>=G)return Ko.slice(G-yr,(G+=n)-yr);if(!($r==0&&Qo<180))return Vd(n)}else return G--,dt();let r=(n<<5^(n>1?We.getUint16(G):n>0?de[G]:0))&4095,e=cg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=We.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],cg[r]=e,e.bytes=n;t<o;)i=We.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?jd(n):fg(n);return s!=null?e.string=s:e.string=Vd(n)}var ug=(n,r)=>{var e=dt();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=ke[n];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[n]=o),ke[n]=e,e.read=Gd(e,t),e.read()},mg=typeof self=="object"?self:global;Wt[0]=()=>{};Wt[0].noBuffer=!0;Wt[101]=()=>{let n=dt();return(mg[n[0]]||Error)(n[1])};Wt[105]=n=>{let r=We.getUint32(G-4);So||(So=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};So.set(r,o);let i=dt();return o.used?Object.assign(t,i):(o.target=i,i)};Wt[112]=n=>{let r=We.getUint32(G-4),e=So.get(r);return e.used=!0,e.target};Wt[115]=()=>new Set(dt());var Fd=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Wt[116]=n=>{let r=n[0],e=Fd[r];if(!e)throw new Error("Could not find typed array for code "+r);return new mg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Wt[120]=()=>{let n=dt();return new RegExp(n[0],n[1])};Wt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,lr=[dt(),dt()],lr.position0=0,lr.position1=0;let t=G;G=e;try{return dt()}finally{G=t}};Wt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function yg(n){let r=Qo,e=G,t=Rd,o=yr,i=$r,a=Ko,s=Ld,l=So,c=lr,u=new Uint8Array(de.slice(0,Qo)),p=ke,d=ke.slice(0,ke.length),h=Zt,f=Hi,m=n();return Qo=r,G=e,Rd=t,yr=o,$r=i,Ko=a,Ld=s,So=l,lr=c,de=u,Hi=f,ke=p,ke.splice(0,ke.length,...d),Zt=h,We=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function sc(){de=null,So=null,ke=null}function gg(n){n.unpack?Wt[n.type]=n.unpack:Wt[n.type]=n}var cc=new Array(147);for(let n=0;n<256;n++)cc[n]=+("1e"+Math.floor(45.15-n*.30103));var uc=new Yr({useRecords:!1}),uT=uc.unpack,dT=uc.unpackMultiple,pT=uc.unpack,dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},fT=new Float32Array(1),rU=new Uint8Array(fT.buffer,0,4);var pc;try{pc=new TextEncoder}catch{}var fc,kd,hc=typeof Buffer<"u",Ud=hc?Buffer.allocUnsafeSlow:Uint8Array,Sg=hc?Buffer:Uint8Array,xg=hc?4294967296:2144337920,Q,ft,U=0,Xr,Kr=null,hT=/[\u0080-\uFFFF]/,Os=Symbol("record-id"),zn=class extends Yr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Sg.prototype.utf8Write?function(x,_,D){return Q.utf8Write(x,_,D)}:pc&&pc.encodeInto?function(x,_){return pc.encodeInto(x,Q.subarray(_)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],O=0,P=0;this.pack=this.encode=function(x,_){if(Q||(Q=new Ud(8192),ft=new DataView(Q.buffer,0,8192),U=0),Xr=Q.length-10,Xr-U<2048?(Q=new Ud(Q.length),ft=new DataView(Q.buffer,0,Q.length),Xr=Q.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(Kr=["",""],Q[U++]=214,Q[U++]=98,Kr.position=U-t,U+=4):Kr=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let D=o.sharedLength||0;if(D>h)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let A=0;A<D;A++){let N=o[A];if(!N)continue;let E,B=o.transitions;for(let V=0,j=N.length;V<j;V++){let R=N[V];E=B[R],E||(E=B[R]=Object.create(null)),B=E}B[Os]=A+64}l=D}p||(o.nextId=D+64)}i&&(i=!1),a=o||[];try{if(S(x),Kr){ft.setUint32(Kr.position+t,U-Kr.position-t);let D=Kr;Kr=null,S(D[0]),S(D[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>Xr&&I(U),u.offset=U;let D=yT(Q.subarray(t,U),s.idsToInsert);return s=null,D}return _&Pg?(Q.start=t,Q.end=U,Q):Q.subarray(t,U)}finally{if(o){if(P<10&&P++,O>1e4)o.transitions=null,P=0,O=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let D=0,A=v.length;D<A;D++)v[D][Os]=0;v=[]}if(i&&u.saveStructures){let D=o.sharedLength||h;o.length>D&&(o=o.slice(0,D));let A=Q.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=D,A)}}_&PT&&(U=t)}};let S=x=>{U>Xr&&(Q=I(U));var _=typeof x,D;if(_==="string"){let A=x.length;if(Kr&&A>=8&&A<4096){let B=hT.test(x);Kr[B?0:1]+=x,Q[U++]=193,S(B?-A:A);return}let N;A<32?N=1:A<256?N=2:A<65536?N=3:N=5;let E=A*3;if(U+E>Xr&&(Q=I(U+E)),A<64||!c){let B,V,j,R=U+N;for(B=0;B<A;B++)V=x.charCodeAt(B),V<128?Q[R++]=V:V<2048?(Q[R++]=V>>6|192,Q[R++]=V&63|128):(V&64512)===55296&&((j=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(j&1023),B++,Q[R++]=V>>18|240,Q[R++]=V>>12&63|128,Q[R++]=V>>6&63|128,Q[R++]=V&63|128):(Q[R++]=V>>12|224,Q[R++]=V>>6&63|128,Q[R++]=V&63|128);D=R-U-N}else D=c(x,U+N,E);D<32?Q[U++]=160|D:D<256?(N<2&&Q.copyWithin(U+2,U+1,U+1+D),Q[U++]=217,Q[U++]=D):D<65536?(N<3&&Q.copyWithin(U+3,U+2,U+2+D),Q[U++]=218,Q[U++]=D>>8,Q[U++]=D&255):(N<5&&Q.copyWithin(U+5,U+3,U+3+D),Q[U++]=219,ft.setUint32(U,D),U+=4),U+=D}else if(_==="number")if(x>>>0===x)x<64?Q[U++]=x:x<256?(Q[U++]=204,Q[U++]=x):x<65536?(Q[U++]=205,Q[U++]=x>>8,Q[U++]=x&255):(Q[U++]=206,ft.setUint32(U,x),U+=4);else if(x>>0===x)x>=-32?Q[U++]=256+x:x>=-128?(Q[U++]=208,Q[U++]=x+256):x>=-32768?(Q[U++]=209,ft.setInt16(U,x),U+=2):(Q[U++]=210,ft.setInt32(U,x),U+=4);else{let A;if((A=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Q[U++]=202,ft.setFloat32(U,x);let N;if(A<4||(N=x*cc[(Q[U]&127)<<1|Q[U+1]>>7])>>0===N){U+=4;return}else U--}Q[U++]=203,ft.setFloat64(U,x),U+=8}else if(_==="object")if(!x)Q[U++]=192;else{if(s){let N=s.get(x);if(N){if(!N.id){let E=s.idsToInsert||(s.idsToInsert=[]);N.id=E.push(N)}Q[U++]=214,Q[U++]=112,ft.setUint32(U,N.id),U+=4;return}else s.set(x,{offset:U-t})}let A=x.constructor;if(A===Object)T(x,!0);else if(A===Array){D=x.length,D<16?Q[U++]=144|D:D<65536?(Q[U++]=220,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=221,ft.setUint32(U,D),U+=4);for(let N=0;N<D;N++)S(x[N])}else if(A===Map){D=x.size,D<16?Q[U++]=128|D:D<65536?(Q[U++]=222,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=223,ft.setUint32(U,D),U+=4);for(let[N,E]of x)S(N),S(E)}else{for(let N=0,E=fc.length;N<E;N++){let B=kd[N];if(x instanceof B){let V=fc[N];if(V.write){V.type&&(Q[U++]=212,Q[U++]=V.type,Q[U++]=0),S(V.write.call(this,x));return}let j=Q,R=ft,W=U;Q=null;let F;try{F=V.pack.call(this,x,k=>(Q=j,j=null,U+=k,U>Xr&&I(U),{target:Q,targetView:ft,position:U-k}),S)}finally{j&&(Q=j,ft=R,U=W,Xr=Q.length-10)}F&&(F.length+U>Xr&&I(F.length+U),U=mT(F,Q,U,V.type));return}}T(x,!x.hasOwnProperty)}}else if(_==="boolean")Q[U++]=x?195:194;else if(_==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Q[U++]=211,ft.setBigInt64(U,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Q[U++]=207,ft.setBigUint64(U,x);else if(this.largeBigIntToFloat)Q[U++]=203,ft.setFloat64(U,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");U+=8}else if(_==="undefined")this.encodeUndefinedAsNil?Q[U++]=192:(Q[U++]=212,Q[U++]=0,Q[U++]=0);else if(_==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+_)},T=this.useRecords===!1?this.variableMapSize?x=>{let _=Object.keys(x),D=_.length;D<16?Q[U++]=128|D:D<65536?(Q[U++]=222,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=223,ft.setUint32(U,D),U+=4);let A;for(let N=0;N<D;N++)S(A=_[N]),S(x[A])}:(x,_)=>{Q[U++]=222;let D=U-t;U+=2;let A=0;for(let N in x)(_||x.hasOwnProperty(N))&&(S(N),S(x[N]),A++);Q[D+++t]=A>>8,Q[D+t]=A&255}:x=>{let _=Object.keys(x),D,A=a.transitions||(a.transitions=Object.create(null)),N=0;for(let B=0,V=_.length;B<V;B++){let j=_[B];D=A[j],D||(D=A[j]=Object.create(null),N++),A=D}let E=A[Os];if(E)E>=96&&m?(Q[U++]=((E-=96)&31)+96,Q[U++]=E>>5):Q[U++]=E;else{E=a.nextId,E||(E=64),E<y&&this.shouldShareStructure&&!this.shouldShareStructure(_)?(E=a.nextOwnId,E<g||(E=y),a.nextOwnId=E+1):(E>=g&&(E=y),a.nextId=E+1);let B=_.highByte=E>=96&&m?E-96>>5:-1;A[Os]=E,a[E-64]=_,E<y?(_.isShared=!0,a.sharedLength=E-63,i=!0,B>=0?(Q[U++]=(E&31)+96,Q[U++]=B):Q[U++]=E):(B>=0?(Q[U++]=213,Q[U++]=114,Q[U++]=(E&31)+96,Q[U++]=B):(Q[U++]=212,Q[U++]=114,Q[U++]=E),N&&(O+=P*N),v.length>=f&&(v.shift()[Os]=0),v.push(A),S(_))}for(let B=0,V=_.length;B<V;B++)S(x[_[B]])},I=x=>{let _;if(x>16777216){if(x-t>xg)throw new Error("Packed buffer would be larger than maximum buffer size");_=Math.min(xg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else _=(Math.max(x-t<<2,Q.length-1)>>12)+1<<12;let D=new Ud(_);return ft=new DataView(D.buffer,0,_),Q.copy?Q.copy(D,0,t,x):D.set(Q.slice(t,x)),U-=t,t=0,Xr=D.length-10,Q=D}}useBuffer(r){Q=r,ft=new DataView(Q.buffer,Q.byteOffset,Q.byteLength),U=0}};kd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ps];fc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?bg(n,16,r):vg(hc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Sg&&this.structuredClone?bg(n,Fd.indexOf(e.name),r):vg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function bg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function vg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function mT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function yT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Zo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");kd.unshift(n.Class),fc.unshift(n)}gg(n)}var wg=new zn({useRecords:!1}),gT=wg.pack,xT=wg.pack;var{NEVER:bT,ALWAYS:vT,DECIMAL_ROUND:ST,DECIMAL_FIT:wT}=dc,Pg=512,PT=1024;var Og=new zn({structuredClone:!0});Zo({Class:xe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,xe.prototype),n}});Zo({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});Zo({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});Zo({Class:Ss.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ss(n)}});Zo({Class:ws.prototype.constructor,type:5,write(n){return n.data},read(n){return new ws(n)}});Zo({Class:Qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});function OT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Hd(n){if(zi(n))return n;if(Array.isArray(n))return n.map(Hd);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Hd(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var mc;(t=>{function n(o){return Og.pack(o)}t.serialize=n;function r(o){return Og.unpack(o)}t.deserialize=r;function e(o){return OT(n(Hd(o))).toString()}t.checksum=e})(mc||(mc={}));var tn="personal camera",rn="a218fcc3-276b-49b9-b485-49037fd14f5f",Ig=2960946,ht=5526619;var Wi;(h=>{function n(f,m){return f[0]===m[0]&&f[1]===m[1]}h.isEqual=n;function r(f,m,y){return[f[0]+(m[0]-f[0])*y,f[1]+(m[1]-f[1])*y]}h.lerp=r;function e(f,m){return[f[0]+m[0],f[1]+m[1]]}h.add=e;function t(f,m){return[f[0]-m[0],f[1]-m[1]]}h.sub=t;function o(f,m){return[f[0]*m[0],f[1]*m[1]]}h.multiply=o;function i(f,m){return[f[0]/m[0],f[1]/m[1]]}h.divide=i;function a(f,m){return Math.pow(m[0]-f[0],2)+Math.pow(m[1]-f[1],2)}h.distanceSquared=a;function s(f,m){return Math.sqrt(a(f,m))}h.distance=s;function l(f,m){return f[0]*m[0]+f[1]*m[1]}h.dot=l;function c(f,m){return[f[0]*m,f[1]*m]}h.scalarMultiply=c;function u(f,m,y){let g=h.sub(m,f),v=h.sub(y,f),O=h.dot(g,v)/h.dot(g,g),P=h.scalarMultiply(g,O);return h.add(f,P)}h.projectionOnto=u;function p(f,m,y){return s(f,u(f,m,y))}h.projectionOntoDistance=p;function d(f,m){return[(f[0]+m[0])*.5,(f[1]+m[1])*.5]}h.center=d})(Wi||(Wi={}));var Jo;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(Jo||(Jo={}));var Cg;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Cg||(Cg={}));var en;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(en||(en={}));var St;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,p.white={r:1,g:1,b:1},p.red={r:1,g:0,b:0},p.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,h){return d.r===h.r&&d.g===h.g&&d.b===h.b}p.equals=l;function c(d,h){return d.r.toFixed(2)===h.r.toFixed(2)&&d.g.toFixed(2)===h.g.toFixed(2)&&d.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(d,h,f){return{r:d.r+(h.r-d.r)*f,g:d.g+(h.g-d.g)*f,b:d.b+(h.b-d.b)*f}}p.lerp=u})(St||(St={}));var Ie;(c=>{c.white={...St.white,a:1},c.transparent={...St.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...St.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return St.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return St.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:h}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${h})`}c.toStyle=l})(Ie||(Ie={}));var yc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(yc||(yc={}));var Tg;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Tg||(Tg={}));var Ag;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Ag||(Ag={}));var Mg;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Mg||(Mg={}));function Wd(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ir||(Ir={}));var on;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(on||(on={}));var Qr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(CT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;TT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;AT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;MT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;IT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;NT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Qr||(Qr={}));var gc;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(gc||(gc={}));var CT=["count"],TT=["radius","start","end","position","scale","rotation"],AT=["position","scale","rotation"],MT=["count","size"],IT=["count","position","scale","rotation"],NT=["strength","scale","rotation","position","movement","seed","freqScale"];var xc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(xc||(xc={}));var bc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(bc||(bc={}));var qi;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...t.defaultCollisionData}))(qi||(qi={}));var nn;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(nn||(nn={}));var qd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(qd||(qd={}));var $d;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})($d||($d={}));var vc;(r=>r.defaultData={...$d.defaultData,...qd.defaultData})(vc||(vc={}));var Ng;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(Ng||(Ng={}));var $i;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))($i||($i={}));var Dg;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Dg||(Dg={}));function _g(n){return n.type!=="displace"}var Eg;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Eg||(Eg={}));var Bg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Lg=["wrapping","image","video","name","minFilter"],xt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:$i.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:St.fromHex(ht)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...St.fromHex(0),a:1},colorB:{...St.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(xt||(xt={}));var Lt;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([h,f])=>{p+=`${h}${f}`,Array.isArray(f)?f.forEach(m=>p+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${f}`})}),p}c.getHash=r;function e(){return{layers:new ve}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let h=new ve;return h.push({fi:0,data:xt.defaultData("light",u),id:p}),h.push({fi:1,data:xt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=xt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...xt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...xt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Lt||(Lt={}));var Yi;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Yi||(Yi={}));var Xi;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Xi||(Xi={}));var Yd={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Sc;(r=>{function n(e,t){let o={...e};return DT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Sc||(Sc={}));var wc={shape:Yd,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},DT=["depth","offset","angle","twist","startScale","endScale"];var Cs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Cs||(Cs={}));var Pc;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Sc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Pc||(Pc={}));var an;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Xi.defaultData(),extrusion:wc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}r.defaultData=n})(an||(an={}));var Oc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:St.white,near:.1,far:2e3})(Oc||(Oc={}));var Cc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(Cc||(Cc={}));var Xd;(r=>r.defaultData={softShadowQuality:"low"})(Xd||(Xd={}));var Kd;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Kd||(Kd={}));var Qd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Qd||(Qd={}));var Ts;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ts||(Ts={}));var Zd;(r=>r.defaultData={playCamera:tn,gameControlObject:null})(Zd||(Zd={}));var Tc;(r=>r.defaultData={backgroundColor:Ie.fromHexAndA(Ig,1),postprocessing:Cc.defaultData,fog:Oc.defaultData,globalPhysics:Ts.defaultData,ambient:Kd.defaultData,ao:Qd.defaultData,shadow:Xd.defaultData,publish:Zd.defaultData})(Tc||(Tc={}));var Ac;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Ac||(Ac={}));var Rg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Rg||(Rg={}));var Ki;(o=>{o.identity={...yc.identity,hiddenMatrix:en.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return Tl({position:Jo.isEqual(i.position,a.position)?void 0:a.position,rotation:Jo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Jo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:en.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Ki||(Ki={}));var wt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:nn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ki.identity,cloner:null})(wt||(wt={}));var Mc;(r=>r.defaultData={type:"Empty",...wt.defaultData})(Mc||(Mc={}));var Vg;(r=>r.defaultData={type:"ParticleCollider",...Ac.defaultData,...wt.defaultData})(Vg||(Vg={}));var zg;(r=>r.defaultData={type:"Component",...wt.defaultData})(zg||(zg={}));var Gg;(r=>r.defaultData={type:"Particle",...wt.defaultData,...qi.defaultData})(Gg||(Gg={}));var Gn;(r=>r.defaultData={type:"Mesh",...wt.defaultData,...vc.defaultData})(Gn||(Gn={}));var jn;(r=>r.defaultData={...wt.defaultData,...Ki.identity,position:[0,0,on.DefaultTargetOffset],...on.defaultData})(jn||(jn={}));var Ic;(e=>{function n(t){return{...wt.defaultData,...bc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ic||(Ic={}));var Qi;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(Qi||(Qi={}));var Zr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...wt.defaultData,...s,component:a,overrides:new Qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Ki.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Zr||(Zr={}));var wo;(e=>{e.defaultData={type:"Page",...wt.defaultData,physics:{...nn.defaultData,fusedBody:!1},...Tc.defaultData,camera:jn.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(wo||(wo={}));var Nc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:en.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:nn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...on.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...wt.defaultData,...Gn.defaultData,geometry:an.defaultData("RectangleGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...wt.defaultData,...Gn.defaultData,geometry:an.defaultData("BooleanGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...wt.defaultData,...Gn.defaultData,geometry:an.defaultData("TextGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")}))(Nc||(Nc={}));var Fn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Qe})))):Ir.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Xo(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&xt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Xo(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let h=l[c]?.layers?.data(p);h&&xt.patch(h,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[h,f]of Object.entries(d.layers)){let{texture:m,...y}=f;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...p,"layers",h,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...p,"layers",h],props:y,type:0};l.push(g)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...gc.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[h,f]of Object.entries(d))u(["materials",h],f);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let h={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(h),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let h={path:[p],props:d,type:0};l.push(h)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ki.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Ir.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Pc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(xc.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=St.clone(l.color))}return s}o.patch=t})(Fn||(Fn={}));var Zi;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Zi||(Zi={}));var Nr;(r=>r.defaultData={orbitControls:Zi.defaultData,playPage:rn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var Jd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Jd||(Jd={}));var ep;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(ep||(ep={}));var Po;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Jd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:ep.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Po||(Po={}));var jg;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ji.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(jg||(jg={}));var Oo;(l=>{l.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c=!0){let u=[],p=Nc.defaultMeshObject;c&&(u.push({fi:-1,data:Ic.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:p,children:[]}));let d=new Ke;return d.push({fi:1,id:rn,data:{...wo.defaultData,name:"Scene 1"},children:u}),d}l.defaultData={objects:r(),publish:Nr.defaultData,styles:Po.defaultData()},l.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Nr.defaultData,styles:Po.defaultData()}},l.emptyDataWithPage=function(c=!0){return{objects:r(c),publish:Nr.defaultData,styles:Po.defaultData()}},l.emptyData=function(){return{objects:new Ke,publish:{...Nr.defaultData},styles:Po.defaultData()}};function a(c){return{...l.defaultData,objects:Ht(c,Ke.prototype)}}l.withObjs=a;function s(c,u){return a([{id:c,data:u,children:[],fi:0}])}l.withObj=s})(Oo||(Oo={}));var ea;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ea||(ea={}));var Dc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Dc||(Dc={}));var tp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(tp||(tp={}));var Fg;(r=>r.all=[...tp.all,"components"])(Fg||(Fg={}));var Ug;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Ug||(Ug={}));var Co;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Co||(Co={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Ht(a,xe.prototype)}i.defaultColors=n;function r(){return Ht({},xe.prototype)}i.defaultImages=r;function e(){return{catelogs:new xe,materials:new xe,images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,variables:new ve,lib:Co.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Bc}from"three";var Ec;(r=>r.list=["idle","move","jump","run"])(Ec||(Ec={}));var _c;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ve,move:new ve,jump:new ve,run:new ve},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(_c||(_c={}));function kg(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(ut(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...ut(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function To(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ao(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Lt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==Qe.prototype&&r(o.material)})})}function ET(n){Object.assign(n.scene.publish,{orbitControls:{...Zi.defaultData,...ut(n.scene.publish.orbitControls)}})}function _T(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function BT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Bg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Lg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function LT(n){n.scene.publish.withBackground=!0}function RT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function VT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function zT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function GT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=ut(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=ut(e).booleanExclude!==!0)}})}function jT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function FT(n){function r(t){Object.setPrototypeOf(t,Qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,Qe.prototype)}function e(t){Object.setPrototypeOf(t,Qe.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=ut(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=ut(l).layers;e(c),l.layers=c}})})}function Hg(n){n.layers===void 0&&Object.assign(n,Lt.defaultTwoLayerData("lambert"))}function rp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...ut(r),colors:e,steps:t};Object.assign(r,o)}})}function UT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Wg(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&rp(t)}):"material"in e&&typeof e.material!="string"&&rp(e.material)}),Object.values(n.shared.materials).forEach(r=>rp(r))}function kT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function HT(n){n.shared.audios=Ht({},xe.prototype)}function WT(n){n.shared.videos=Ht({},xe.prototype)}function qT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function $T(n){Object.entries(ut(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(ut(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function YT(n){n.scene.publish.settings.web.preload=!1}function qg(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function $g(n){n.layers&&n.layers.forEach(r=>{_g(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function XT(n){n.shared.fonts=Ht({},xe.prototype)}function KT(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function QT(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Lt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=KT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...wt.defaultData,...Gn.defaultData,flatShading:!1,wireframe:!1,geometry:{...an.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:ut(o.states),events:ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function ZT(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ve,move:new ve,jump:new ve}});else{let i=new ve;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Bc.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,Mr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},h={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ve({fi:0,id:Bc.generateUUID(),data:c},{fi:1,id:Bc.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function JT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Mr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={...Mr(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:u,id:c,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Bc.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Yg(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=xt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Xg(n){To(n,Yg),Ao(n,Yg)}function eA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function tA(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function rA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Lt.defaultTwoLayerData("phong"))})}function oA(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function nA(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function iA(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function aA(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function sA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function lA(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function cA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=_c.defaultDataThirdPerson.navmesh)})})}function uA(n){n.scene.styles||(n.scene.styles=Po.defaultData())}function Kg(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function dA(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Ao(n,Kg),To(n,Kg)}function pA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function fA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Qg(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Zg(n,r){if(r<1&&(Ao(n,kg),To(n,kg),n.schema=1),r<2&&(ET(n),n.schema=2),r<3&&(BT(n),n.schema=3),r<4&&(LT(n),n.schema=4),r<5&&(RT(n),n.schema=5),r<6&&(VT(n),n.schema=6),r<7&&(zT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Wg(n),n.schema=9),r<10&&(UT(n),n.schema=10),r<11&&(kT(n),n.schema=11),r<12&&(Wg(n),n.schema=12),r<13&&(HT(n),n.schema=13),r<14&&(qT(n),n.schema=14),r<15&&($T(n),n.schema=15),r<16&&(YT(n),n.schema=16),r<17&&(Ao(n,qg),To(n,qg),n.schema=17),r<18&&(Ao(n,Hg),To(n,Hg),n.schema=18),r<19&&(_T(n),n.schema=19),r<20&&(XT(n),QT(n),n.schema=20),r<21&&(ZT(n),JT(n),n.schema=21),r<22&&(Xg(n),n.schema=22),r<23&&(eA(n),n.schema=23),r<24&&(tA(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(WT(n),r<25&&(n.schema=25)),r<26&&(GT(n),n.schema=26),r<27&&(jT(n),n.schema=27),r<28&&(Xg(n),n.schema=28),r<29&&(FT(n),n.schema=29),r<30&&(rA(n),n.schema=30),r<31&&(oA(n),n.schema=31),r<33&&(nA(n),n.schema=33),r<34&&(iA(n),n.schema=34),r<35&&(aA(n),n.schema=35),r<36&&(sA(n),n.schema=36),r<37&&(lA(n),n.schema=37),r<38&&(Ao(n,$g),To(n,$g),n.schema=38),r<39&&(cA(n),n.schema=39),r<40&&(uA(n),n.schema=40),r<41&&(dA(n),n.schema=41),r<42&&(pA(n),n.schema=42),r<43&&(fA(n),n.schema=43),r<99){Ao(n,Qg),To(n,Qg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=tn);let e=ut(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=rn,t.insertBefore(null,null,[{id:rn,data:{...wo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ts.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:ut(n.scene.ownerCamera)??wo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Oo.TRASH_CAN_ID&&t.move(rn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,nn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Jg(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function hA(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function mA(n){Array.isArray(ut(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var ta=180/Math.PI;function ex(n){n.rotation=n.rotation.slice(0,3).map(r=>r*ta)}function tx(n){ex(n),n.type==="Page"&&ex(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*ta))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*ta),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*ta),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=ta,r.extrusion.twist*=ta),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(ut(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function yA(n){n.shared.variables=Ht({},xe.prototype)}function gA(n){let r=ut(n.shared.variables);n.shared.variables=Ht(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var Jr=112;function rx(n,r){r(n.data);for(let e of n.children)rx(e,r)}function xA(n){let r=n.schema??104;r!==Jr&&r<105&&(rx(n.asset,tx),n.schema=105)}function bA(n){n.shared.particles=Ht({},xe.prototype),n.shared.lib&&(n.shared.lib.particles=Co.defaultData().particles)}function vA(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function SA(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function Lc(n){let r=n.schema??0;if(r!==Jr){console.warn("updating from ",r,"to ",Jr),Zg(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Ao(n,Jg),To(n,Jg),n.schema=101),r<102&&(hA(n),n.schema=102),r<104&&(n.shared.catelogs=new xe,n.shared.lib=Co.defaultData(),n.schema=104),r<105&&(yA(n),n.scene.objects.traverse((e,t)=>{tx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))xA(e);r<106&&(gA(n),n.schema=106),r<107&&(n.shared.lib.variables=Co.defaultData().variables,n.schema=107),r<109&&(bA(n),n.schema=109),r<110&&(vA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{mA(t)}),n.schema=111),r<112&&(SA(n),n.schema=112)}}var Ji;(l=>{l.defaultData={schema:Jr,scene:Oo.defaultData,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(){let c=Oo.emptyDataWithPage();return{schema:Jr,scene:c,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages()}}},l.emptyData=function(){return{schema:Jr,scene:Oo.emptyDataWithPage(),frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:Jr,scene:Oo.emptyData(),frames:new xe,shared:xr.emptyData()}},l.collabHelper={...vs,updateSchema(c){return(c.schema??0)<Jr?Xo(c,Lc):(c.schema??0)-Jr}};function i(c){let u=l.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}l.updateSchemaDirectly=i;function a(c){return{...c,shared:{...c.shared,lib:Co.defaultData()}}}l.withoutLib=a;function s(c,u){let p=c.scene.objects.get(u);if(p&&p.data.type==="Component")return p;{let d=c.shared.lib.components[u];if(d)return d.asset}}l.getComponentData=s})(Ji||(Ji={}));var Rc;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Rc||(Rc={}));var ox;(r=>{function n(e){return!0}r.is=n})(ox||(ox={}));var Vc;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return Tl({position:Wi.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Wi.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&Wi.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Vc||(Vc={}));var op;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(op||(op={}));var zc;(r=>r.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(ht,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(zc||(zc={}));var Un;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Vc.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;function o(a,s){let l,c=[];for(let[u,p]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p);return c}i.toOps=o})(Un||(Un={}));var As;(r=>r.defaultData={...Vc.defaultData,...op.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(As||(As={}));var ra;(r=>r.defaultData={...As.defaultData,...zc.defaultData})(ra||(ra={}));var Gc;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Gc||(Gc={}));var np;(r=>r.defaultData={...ra.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(np||(np={}));var oa;(r=>r.defaultData={...ra.defaultData,...Gc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(oa||(oa={}));var ip;(r=>r.defaultData={...ra.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(ip||(ip={}));var ap;(r=>r.defaultData={...ra.defaultData,type:"path2d",path:"",name:"Path"})(ap||(ap={}));var nx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(nx||(nx={}));var Ms;(r=>r.defaultData={...As.defaultData,name:"Group",type:"group2d"})(Ms||(Ms={}));var sp;(r=>r.defaultData=()=>({...As.defaultData,...Gc.defaultData,...zc.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(sp||(sp={}));var Mo;(o=>{function n(i){switch(i){case"rectangle2d":return{...oa.defaultData};case"ellipse2d":return{...np.defaultData};case"text2d":return{...ip.defaultData};case"vector2d":return{...oa.defaultData};case"path2d":return{...ap.defaultData};case"frame2d":return{...sp.defaultData()};case"group2d":return{...Ms.defaultData}}}o.defaultData=n;function r(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=r;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function t(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=t})(Mo||(Mo={}));var jc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ke},e.emptyData=function(){return{type:"scene2d",objects:new Ke}}))(jc||(jc={}));var Ja=hi(ax());import{Object3D as v3,Vector3 as pr,Euler as Uf,MathUtils as Fb,Matrix4 as ii}from"three";var wA=.5*(Math.sqrt(3)-1),Is=(3-Math.sqrt(3))/6,PA=1/3,eo=1/6,$5=(Math.sqrt(5)-1)/4,Y5=(5-Math.sqrt(5))/20,Ns=n=>Math.floor(n)|0,sx=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),cp=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Fc(n=Math.random){let r=cx(n),e=new Float64Array(r).map(o=>sx[o%12*2]),t=new Float64Array(r).map(o=>sx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*wA,p=Ns(i+u),d=Ns(a+u),h=(p+d)*Is,f=p-h,m=d-h,y=i-f,g=a-m,v,O;y>g?(v=1,O=0):(v=0,O=1);let P=y-v+Is,S=g-O+Is,T=y-1+2*Is,I=g-1+2*Is,x=p&255,_=d&255,D=.5-y*y-g*g;if(D>=0){let E=x+r[_],B=e[E],V=t[E];D*=D,s=D*D*(B*y+V*g)}let A=.5-P*P-S*S;if(A>=0){let E=x+v+r[_+O],B=e[E],V=t[E];A*=A,l=A*A*(B*P+V*S)}let N=.5-T*T-I*I;if(N>=0){let E=x+1+r[_+1],B=e[E],V=t[E];N*=N,c=N*N*(B*T+V*I)}return 70*(s+l+c)}}function lx(n=Math.random){let r=cx(n),e=new Float64Array(r).map(i=>cp[i%12*3]),t=new Float64Array(r).map(i=>cp[i%12*3+1]),o=new Float64Array(r).map(i=>cp[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*PA,f=Ns(a+h),m=Ns(s+h),y=Ns(l+h),g=(f+m+y)*eo,v=f-g,O=m-g,P=y-g,S=a-v,T=s-O,I=l-P,x,_,D,A,N,E;S>=T?T>=I?(x=1,_=0,D=0,A=1,N=1,E=0):S>=I?(x=1,_=0,D=0,A=1,N=0,E=1):(x=0,_=0,D=1,A=1,N=0,E=1):T<I?(x=0,_=0,D=1,A=0,N=1,E=1):S<I?(x=0,_=1,D=0,A=0,N=1,E=1):(x=0,_=1,D=0,A=1,N=1,E=0);let B=S-x+eo,V=T-_+eo,j=I-D+eo,R=S-A+2*eo,W=T-N+2*eo,F=I-E+2*eo,k=S-1+3*eo,H=T-1+3*eo,$=I-1+3*eo,J=f&255,Z=m&255,X=y&255,te=.6-S*S-T*T-I*I;if(te<0)c=0;else{let q=J+r[Z+r[X]];te*=te,c=te*te*(e[q]*S+t[q]*T+o[q]*I)}let Y=.6-B*B-V*V-j*j;if(Y<0)u=0;else{let q=J+x+r[Z+_+r[X+D]];Y*=Y,u=Y*Y*(e[q]*B+t[q]*V+o[q]*j)}let ee=.6-R*R-W*W-F*F;if(ee<0)p=0;else{let q=J+A+r[Z+N+r[X+E]];ee*=ee,p=ee*ee*(e[q]*R+t[q]*W+o[q]*F)}let K=.6-k*k-H*H-$*$;if(K<0)d=0;else{let q=J+1+r[Z+1+r[X+1]];K*=K,d=K*K*(e[q]*k+t[q]*H+o[q]*$)}return 32*(c+u+p+d)}}function cx(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as OA}from"three";var Dr=new OA,Uc=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Dr.a.fromBufferAttribute(r,o),Dr.b.fromBufferAttribute(r,o+1),Dr.c.fromBufferAttribute(r,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,r*3),Dr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(t),this}};import{Object3D as IA}from"three";var px=hi(dx());import{Object3D as CA,Matrix4 as to}from"three";var TA=new to,AA=new to,MA=new to,na;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(na||(na={}));var ia=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new to;this.copyPreviousMatrix=!0;this.hiddenMatrix=new to;this.matrixWorldRigid=new to;this.shearScale=new to;this.shearScaleInv=new to}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof CA&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)na.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)na.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,px.SVD)(o),l=TA.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=AA.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=MA.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(p=>Math.abs(s[0]-p)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new to().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof to?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var up=class extends ia(IA){},NA=n=>n.type==="Mesh",Io=class extends up{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Io(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return NA(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};import{Box3 as FI,BufferGeometry as UI,MeshBasicMaterial as kI}from"three";import{Matrix4 as GI,Mesh as jI}from"three";import{Matrix4 as Wc,Vector3 as mx,Euler as RA,MathUtils as Es}from"three";import{Box3 as DA,Line3 as EA,Matrix4 as dp,Vector3 as cr}from"three";var kn=new cr,Hn=new cr,aa=new dp,hx=[new cr(-1,1,1),new cr(-1,-1,1),new cr(1,-1,1),new cr(1,1,1),new cr(-1,1,-1),new cr(-1,-1,-1),new cr(1,-1,-1),new cr(1,1,-1)],_A=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],BA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],fx=(n,r,e)=>{n.updateEntityBoxSize(kn,Hn),aa.copy(r).multiply(n.matrixWorld),Hn.x===0&&Hn.y===0&&Hn.z===0?e.push(new cr(kn.x,kn.y,kn.z).applyMatrix4(aa)):hx.forEach(t=>{e.push(t.clone().multiply(Hn).add(kn).applyMatrix4(aa))})},Ds=class extends DA{constructor(){super(...arguments);this.matrix=new dp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new dp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new cr);return}fx(a,t,i)}}):fx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(aa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Hn).multiplyScalar(.5),this.getCenter(kn),aa.copy(this.matrix).setPosition(kn),this.vertices=hx.map(e=>e.clone().multiply(Hn).applyMatrix4(aa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=_A.map(([e,t])=>new EA(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new cr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=BA.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as LA,CubicBezierCurve3 as pp,Vector3 as _r}from"three";var hp=class extends LA{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],p=Math.ceil(r*u/a),d=c.getPoints(p);for(let h=0;h<d.length;h++){let f=d[h];t&&t.equals(f)||(e.push(f),t=f)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var mp=.001;function yp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=mp}function fp(n,r){let e=new _r(...n.position),t=new _r(...n.controlNext.position),o=new _r(...r.controlPrevious.position),i=new _r(...r.position);return yp(e,t,i)&&yp(e,o,i)}function Hc(n){let r=n.points.map(u=>new _r(...u.data.position)),e=[n.points[0]],t=new _r(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)yp(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new _r(...p.position),h=new _r(...p.controlPrevious.position),f=new _r(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:h,controlNext:f};if(p.roundness===0||!n.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,g=o&&u==a-1?0:u+1,v=e[y].data,O=e[g].data,P=new _r(...v.position),S=new _r(...O.position),T=P.clone().sub(d).normalize(),I=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:I});let x=fp(v,p),_=fp(p,O);if(!x||!_)s[u]={...m,removedLength:0};else{let D=T.clone().add(I).normalize(),A=D.clone().cross(T).length()/T.dot(D);s[u]={...m,tan:A,removedLength:p.roundness/A}}}for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d];if(h.removedLength!==0||f.removedLength!==0){let m=h.position.distanceTo(f.position);h.removedLength=Math.min(h.removedLength,m/2),f.removedLength=Math.min(f.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d],m=null;if(!fp(e[p].data,e[d].data))h.position.distanceTo(f.position)>mp&&(m=new pp(h.position,h.controlNext,f.controlPrevious,f.position));else{let y=h.position.clone(),g=f.position.clone();(h.removedLength!==0||f.removedLength!==0)&&(h.nextDir&&y.add(h.nextDir.clone().setLength(h.removedLength)),f.prevDir&&g.add(f.prevDir.clone().setLength(f.removedLength))),y.distanceTo(g)>mp&&(m=new pp(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,h=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),f=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),g=h.clone().lerp(f,.5),v=h.distanceTo(f)/2,O=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),P=y.clone().multiplyScalar(-m).add(O),S=d.distanceTo(P)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),I=T.clone().lerp(P,2),x=h.clone().lerp(T,4/3),_=f.clone().lerp(I,4/3);l[2*u]=new pp(h,x,_,f)}let c=new hp;return l.forEach(u=>{u&&c.add(u)}),c}var Le;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Le||(Le={}));var sa=n=>Le.is(n),VA={type:"completeState",isfromEntity:!0},zA=["x","y","z"],gp=new mx,GA=new mx().set(0,1,0),la=n=>class extends ia(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Ds;this._recursiveBBox=new Ds;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Le.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Le.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Le.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Fn.toOps(this.data,a.data).forEach(l=>{let c=Fi.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=Fn.patch(this.data,a),Fn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{sa(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Le.is(o[i]))return o[i];if(Le.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Le.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)sa(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Le.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)sa(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>sa(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Es.RAD2DEG,this.rotation.y*Es.RAD2DEG,this.rotation.z*Es.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ri(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,zA[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(gp.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Es.DEG2RAD),this.rotation.setFromVector3(gp),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??en.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Le.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Le.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ri(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Be(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let h=ot.zoom(d,t.path.slice(2));if(h)for(let f in t.props)t.props[f]===void 0&&f in h&&(p[f]=h[f])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...h}=u;u=h}if(t.props.material!==void 0&&"material"in u){let{material:d,...h}=u;u=h}let p=ot.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,Fn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Be(t.path,["overrides"])){let u=[],p=[...t.path];for(u.push(p[1]),p.splice(0,2);p.length>0&&p[0]==="descendants";)u.push(p[1]),p.splice(0,2);if(u[u.length-1]===void 0){if(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let h=i.scene.findInstance([this.uuid,...u]);h&&(h.overrideData=t.props[d],h.updateState(qr.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=ot.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let f=t.props;if(h)for(let[m,y]of Object.entries(t.props))y===void 0&&(f===t.props&&(f={...t.props}),f[m]=h[m]);t={...t,props:f}}d.overrideData=Qi.resolve(o.overrides,u),d.updateByOp(t,nt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of Zr.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Zr.rootOverrideProps)if(Be(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=qr.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=qr.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=nt.applySimple(p.data,d),p.updateByOp(d,h,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Ir.is(t.props.type)&&Er.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Le.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Be(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Be(t.path,["cloner"])!==null){let a=nt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=t.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=Hc(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.getPointAt(p);if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new Wc;l.updateMatrixWorld();let f=new Wc().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new Wc().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new Wc().lookAt(d,g,GA),O=gp.setFromEuler(new RA().setFromRotationMatrix(v)).multiplyScalar(Es.RAD2DEG);m={...m,rotation:O.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(VA)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Er.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as UA,ConeGeometry as kA,Float32BufferAttribute as HA,MathUtils as WA}from"three";import{BufferGeometry as gx,CylinderGeometry as jA,Float32BufferAttribute as $c,MathUtils as FA,Vector2 as Br,Vector3 as qc}from"three";var xx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=FA.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:h}=n.parameters,f;return l===0?(f=new gx,f.setAttribute("position",new $c([],3))):p||h?f=new _s(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new jA(c,u,t,o,i,a,s,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function sn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function yx(n){return new Br(n.y,-n.x)}var _s=class extends gx{constructor(r,e,t,o,i,a,s,l,c,u,p,d,h=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let f=[],m=[],y=[],g=[],v=0,O=t/2,P=new qc,S=new qc;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new Br(r,O),I=new Br(e,-O),x=null,_=null,D=null,A=null,N=T.clone().sub(I),E=0,B=0,V=0;d>0&&(E=Math.min(r,e)*(1-d),B=r-E,V=e-E);let j=T.clone();j.x-=E;let R=Math.PI-N.angle(),W=N.angle(),F=Math.tan(W/2),k=Math.tan(R/2),H=F+k,$=d?H:k,J=d?H:F;if(c=Math.min(c,(r-B)/$,N.length()/H),u=Math.min(u,(e-V)/J,N.length()/H),c>0){let K=c/F;x=T.clone().sub(new Br(K,c)),d&&(D=x.clone(),D.x-=E-H*c),T.sub(N.clone().setLength(K))}if(u>0){let K=u/k;_=I.clone().sub(new Br(K,-u)),I.add(N.clone().setLength(K)),d&&(A=_.clone(),A.x-=E-H*u,j.sub(N.clone().setLength(K)))}N=T.clone().sub(I);let Z=N.length()<.5,X=[];for(let K=0;K<=o;K++){let q=[],ue=K/o,le=ue*l+s,ne=new Br(Math.sin(le),Math.cos(le));A&&_?(te(q,ue,ne,R,u,A,-1,!0),te(q,ue,ne,W,u,_,-1,!1)):_?(Y(q,ne,_.x,0,-1),te(q,ue,ne,W,u,_,-1,!1)):a||Y(q,ne,e,V,-1);let ce=yx(N).normalize();if(sn(ce,ne,P),!Z)for(let ae=0;ae<=i;ae++){let he=ae/i,pe=N.clone().multiplyScalar(he).add(I);sn(pe,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),q.push(v++)}if(D&&x?(te(q,ue,ne,R,c,x,1,!1),te(q,ue,ne,W,c,D,1,!0)):x?(te(q,ue,ne,R,c,x,1,!1),Y(q,ne,x.x,0,1)):a||Y(q,ne,r,B,1),d&&!Z){let ae=yx(N).multiplyScalar(-1).normalize();sn(ae,ne,P);for(let he=0;he<=i;he++){let pe=he/i,fe=N.clone().multiplyScalar(-pe).add(j);sn(fe,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),q.push(v++)}}d&&!a&&q.push(q[0]),X.push(q)}for(let K=0;K<X.length-1;K++)for(let q=0;q<X[0].length-1;q++){if(a&&d&&q==i)continue;let ue=X[K][q],le=X[K+1][q],ne=X[K+1][q+1],ce=X[K][q+1],ae=m[ne*3+0],he=m[ne*3+2];f.push(ue,le,ce),(ae!=0||he!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(ee(-1,X[0],s),ee(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new $c(m,3)),this.setAttribute("normal",new $c(y,3)),this.setAttribute("uv",new $c(g,2));function te(K,q,ue,le,ne,ce,ae,he){for(let pe=0;pe<p+1;pe++){let fe=pe/p,ge=ae<0?fe:1-fe;he&&(ge-=1),ge*=le;let me=new Br(Math.sin(ge),Math.cos(ge)*ae),C=me.clone().multiplyScalar(ne).add(ce);sn(C,ue,S),m.push(S.x,S.y,S.z),sn(me,ue,P),y.push(P.x,P.y,P.z),g.push(q,.5+S.y/t),K.push(v++)}}function Y(K,q,ue,le,ne){let ce=new qc,ae=new Br,he=[ue,le];ne<0&&he.reverse();for(let pe of he)ae.set(pe,O*ne),sn(ae,q,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),K.push(v++)}function ee(K,q,ue){let le=new Br(Math.sin(ue),Math.cos(ue)),ne=new Br(-Math.cos(ue),Math.sin(ue)),ce=new qc,ae=K<0?(fe,ge,me)=>f.push(fe,ge,me):(fe,ge,me)=>f.push(fe,me,ge),he=new Br((r+e+B+V)/4,0);sn(he,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=v++;for(let fe of q){let ge=m.slice(fe*3,fe*3+3);m.push(...ge),y.push(ne.x,0,ne.y);let me=g.slice(fe*2,fe*2+2);g.push(...me),v++}for(let fe=pe+1;fe<v-1;fe++)ae(pe,fe,fe+1);ae(pe,v-1,pe+1)}}};var bx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=WA.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new UA,d.setAttribute("position",new HA([],3))):c>0||u>0||l<360?d=new _s(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new kA(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as qA,BufferGeometry as $A,Float32BufferAttribute as xp,Vector3 as Bs}from"three";var vx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s==0?c=new qA(r,e,t,o,i,a):c=new vp(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},bp=Math.PI/2,vp=class extends $A{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let u=[],p=[],d=[],h=[],f=0,m=0;y("z","y","x",-1,-1,t,e,r,a,i,0),y("z","y","x",1,-1,t,e,-r,a,i,1),y("x","z","y",1,1,r,t,e,o,a,2),y("x","z","y",1,-1,r,t,-e,o,a,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),s>0&&(g("z","y","x",-1,-1,1,t,e,r,a,0),g("z","y","x",1,-1,-1,t,e,r,a,1),g("z","y","x",-1,1,-1,t,e,r,a,1),g("z","y","x",1,1,1,t,e,r,a,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new xp(p,3)),this.setAttribute("normal",new xp(d,3)),this.setAttribute("uv",new xp(h,2));function y(O,P,S,T,I,x,_,D,A,N,E){let B=(x-2*s)/A,V=(_-2*s)/N,j=x/2-s,R=_/2-s,W=D/2,F=A+1,k=N+1,H=0,$=0,J=new Bs;for(let Z=0;Z<k;Z++){let X=Z*V-R;for(let te=0;te<F;te++){let Y=te*B-j;J[O]=Y*T,J[P]=X*I,J[S]=W,p.push(J.x,J.y,J.z),J[O]=0,J[P]=0,J[S]=D>0?1:-1,d.push(J.x,J.y,J.z),h.push(te/A),h.push(1-Z/N),H+=1}}for(let Z=0;Z<N;Z++)for(let X=0;X<A;X++){let te=f+X+F*Z,Y=f+X+F*(Z+1),ee=f+(X+1)+F*(Z+1),K=f+(X+1)+F*Z;u.push(te,Y,K),u.push(Y,ee,K),$+=6}c.addGroup(m,$,E),m+=$,f+=H}function g(O,P,S,T,I,x,_,D,A,N,E){let B=(_-2*s)/N,V=_/2-s,j=D/2-s,R=A/2,W=N+1,F=0,k=0,H=new Bs,$=new Bs;for(let J=0;J<l+1;J++){let Z=J/l*bp,X=Math.sin(Z)*s,te=(1-Math.cos(Z))*s,Y=Math.sin(Z),ee=Math.cos(Z);H[P]=(j+X)*I,H[S]=(R-te)*x,$[O]=0,$[P]=Y*Math.sign(H[P]),$[S]=ee*Math.sign(H[S]);for(let K=0;K<W;K++){let q=K*B-V;H[O]=q*T,p.push(H.x,H.y,H.z),d.push($.x,$.y,$.z),h.push(K/N),h.push(0),F+=1}}for(let J=0;J<l;J++)for(let Z=0;Z<N;Z++){let X=f+Z+W*J,te=f+Z+W*(J+1),Y=f+(Z+1)+W*(J+1),ee=f+(Z+1)+W*J;u.push(X,te,ee),u.push(te,Y,ee),k+=6}c.addGroup(m,k,E),m+=k,f+=F}function v(O,P,S){let T=new Bs,I=new Bs(r/2,e/2,t/2);I.subScalar(s);let x=[],_=O*P*S>0?(A,N,E)=>u.push(A,N,E):(A,N,E)=>u.push(A,E,N);for(let A=0;A<=l;A++){let N=[],E=bp*(1-A/l),B=Math.cos(E),V=Math.sin(E),j=0;for(let R=0;R<=A;R++){let W=Math.cos(j),F=Math.sin(j);T.x=B*W,T.y=V,T.z=B*F;let k=I.clone().addScaledVector(T,s);p.push(O*k.x,P*k.y,S*k.z),d.push(O*T.x,P*T.y,S*T.z),h.push(0,0),N.push(f++),j+=bp/A}x.push(N)}let D=x.length-1;for(let A=0;A<D;A++){let N=x[A],E=x[A+1],B=N.length-1;_(N[0],E[1],E[0]);for(let V=1;V<=B;V++)_(N[V-1],N[V],E[V]),_(N[V],E[V+1],E[V])}}}};import{BufferGeometry as YA,Float32BufferAttribute as Sp,Triangle as XA,Vector3 as No,Vector2 as wp}from"three";var ln=class extends YA{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Sp(s,3)),this.setAttribute("normal",new Sp(c,3)),this.setAttribute("uv",new Sp(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let h={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new No,m=f.clone(),y=new XA,g=i*o,v=o-g,O=a+1,P=new No,S=(F,k)=>P.subVectors(F,k).normalize(),T=(F,k)=>Array(F).fill(void 0).map(k),I=T(r.length/3,(F,k)=>new No().fromArray(r,k*3).setLength(o)),x=[],_=1e6;for(let F=0;F<I.length;F++){let k=I[F],H=[],$,J,Z,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let q=te-te%3;$=e[q+(te+1)%3],J=e[q+(te+2)%3],Z=k.distanceToSquared(I[$]),X=Math.min(X,Z),H.push([$,J,Z])}X+=1e-6;let Y=[],ee=0,K=H.length;for(let q=0;q<K;q++){[$,J,Z]=H[ee];let ue=x[$]?.includes(F)==!0;Z<=X&&Y.push($+ +ue*_),ee=H.findIndex(le=>le[0]==J)}x.push(Y)}let D=[];{let F=0,k=0,H,$,J=h==3;for(let Z=0;Z<=a;Z++){H=Z*(Z+1)/2,$=(Z+1)*(Z+2)/2;for(let X=0;X<a-Z;X++)[F,k]=[H+X+Z+2,$+X+Z+3],D.push(H,$,...J?[k,H]:[F,$],k,F),[H,$]=[F,k];D.push(H,$,H+a+2)}}let A=f.clone(),N=f.clone(),E=f.clone(),B=f.clone(),V=f.clone(),j=[],R=T(I.length,()=>T(h,()=>f.clone()));for(let F=0;F<I.length;F++){f.copy(I[F]).normalize(),A.copy(f).multiplyScalar(v);let k=x[F];for(let Y=0;Y<k.length;Y++){let ee=k[Y],K=k[(Y+1)%h];y.setFromPointsAndIndices(I,F,ee%_,K%_),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(A,R[F][Y])}let H=[],$=[],J=[],Z=new No;a==0&&[...R[F]].reduce((Y,ee)=>Y.add(ee),Z).multiplyScalar(1/h);for(let Y=0;Y<h;Y++){let ee=[],K=(Y-1+h)%h,q=R[F][K],ue=R[F][Y];f.copy(q).sub(A),m.copy(ue).sub(A);let le=A.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?N.copy(Z):N.copy(A).setLength(v+ce),$.push(ce);let ae=[N,q,ue];for(let he=0;he<2;he++){let pe=ae[he],fe=ae[he+1];B.subVectors(pe,A),V.subVectors(fe,A),E.crossVectors(B,V).normalize();for(let ge=0;ge<O;ge++){let me=[le,ne][he]*ge/O;f.copy(B).applyAxisAngle(E,me).add(A),H.push(f.clone()),he&&(S(f,A),ee.push([ge==0?pe:f.clone(),P.clone()]))}he&&(S(fe,A),ee.push([fe,P.clone()]))}J.push(ee)}j.push(J);let X=2*O,te=2;for(let Y=0;Y<h;Y++){let ee=X*Y,K=X*((Y+1)%h),q=[H[ee]];for(let le=1;le<O;le++){B=H[ee+le],V=H[K+le],q.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,V,ne/(ce+1)),f.sub(A).setLength($[Y]).add(A),q.push(f.clone());q.push(V)}for(let le=0;le<O;le++)q.push(H[le+O+ee]);q.push(H[K+O]);let ue=D.map(le=>q[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,A),[P.x,P.y,P.z])).flat())}}let W=[];for(let F=0;F<x.length;F++)for(let k=0;k<h;k++){let H=x[F][k];if(H<_){let $=x[H].findIndex(X=>X%_==F),J=j[F][k],Z=j[H][$];for(let X=0;X<O;X++){let te=J[X],Y=Z[O-X],ee=J[X+1],K=Z[O-(X+1)];[te,Y,ee,ee,Y,K].forEach(q=>{s.push(q[0].x,q[0].y,q[0].z),c.push(q[1].x,q[1].y,q[1].z)})}W.push(J[0][0],Z[O][0],J[O][0],Z[0][0])}}for(;W.length;){let F,k,H,$;[F,k]=W.splice(0,2);let J=[F];for(;F!=k;)J.push(k),H=W.indexOf(k),$=H%2,k=W.splice(H-$,2)[1-$];P.subVectors(J[0],J[1]).cross(f.subVectors(J[0],J[2])).normalize();let Z=P.dot(J[0])<0;Z&&P.negate();for(let X=1;X<=J.length-2;X++)[J[X+ +Z],J[X+1-+Z],J[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(P.x,P.y,P.z)})}}function p(){let d=new No;for(let I=0;I<s.length;I+=3){d.x=s[I+0],d.y=s[I+1],d.z=s[I+2];let x=S(d)/2/Math.PI+.5,_=T(d)/Math.PI+.5;l.push(x,1-_)}let h=new No,f=new No,m=new No,y=new No,g=new wp,v=new wp,O=new wp,P=(I,x,_,D)=>{D<0&&I.x===1&&(l[x]=I.x-1),_.x===0&&_.z===0&&(l[x]=D/2/Math.PI+.5)};for(let I=0,x=0;I<s.length;I+=9,x+=6){h.set(s[I+0],s[I+1],s[I+2]),f.set(s[I+3],s[I+4],s[I+5]),m.set(s[I+6],s[I+7],s[I+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),O.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let _=S(y);P(g,x+0,h,_),P(v,x+2,f,_),P(O,x+4,m,_)}for(let I=0;I<l.length;I+=6){let x=l[I+0],_=l[I+2],D=l[I+4],A=Math.max(x,_,D),N=Math.min(x,_,D);A>.9&&N<.1&&(x<.2&&(l[I+0]+=1),_<.2&&(l[I+2]+=1),D<.2&&(l[I+4]+=1))}function S(I){return Math.atan2(I.z,-I.x)}function T(I){return Math.atan2(-I.y,Math.sqrt(I.x*I.x+I.z*I.z))}}}static fromJSON(r){return new ln(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as KA}from"three";var Sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ls(r*.5,i,a):new KA(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Ls=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,r,e,t),this.type=l}static fromJSON(r){return new Ls(r.radius,r.corner,r.cornerSides)}};import{Plane as sM,Shape as Rx,Vector2 as Do,Vector3 as lM,MathUtils as Ip,LineCurve as Np,QuadraticBezierCurve as Vx,CubicBezierCurve as Qc}from"three";import{CubicBezierCurve as Yc,EllipseCurve as QA,LineCurve as Xc,LineCurve3 as ZA,MathUtils as JA,QuadraticBezierCurve as Op,SplineCurve as eM,Vector2 as Ft,Vector3 as Ox}from"three";var Rs=1e-12,ca=class{constructor(r){this.position=new Ft;this.startPosition=new Ft;this.uuid=JA.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new ca(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ua=class extends ca{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ua(this.parent).copy(this)}},Lr=class extends ca{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ua(this),new ua(this))}static create(e,t){let o=new Lr(e,new Ft(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Lr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ft,t=new Ft){let[o,i]=this.computeTangents();return o&&i&&(wx(o,e),wx(i,t)),[e,t]}computeTangent(e=new Ft){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ft){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function wx(n,r=new Ft){let e=n.length();return r.set(-n.y/e,n.x/e)}var Cp=n=>n,da=new Ft,Kc=new Ft,tM=new Ft,rM=new Ft,oM=new Ft,nM=new Ft,Cx=new Ox,Tx=new Ox;function Ax(n){let r=new Ft;r.addVectors(n.v0,da.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ft;return e.addVectors(n.v2,Kc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Yc(n.v0,r,e,n.v2)}function Vs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function iM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function aM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Tp(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Mx(n,r,e){return Px(n,r)&&Px(r,e)&&Pp(n.position,r.position,e.position)}function Pp(n,r,e){return da.copy(r).sub(n).cross(Kc.copy(e).sub(n))===0}function Ix(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function Nx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Dx(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return Tp(r,n,e)>Math.PI&&(u*=-1),Vs(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function Ap(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Px(n,r){return Pp(n.position,n.controls[1].position,r.position)&&Pp(n.position,r.controls[0].position,r.position)}function Ex(n,r,e,t,o=.5){let i=da.subVectors(r,n).multiplyScalar(o).add(n),a=Kc.subVectors(e,r).multiplyScalar(o).add(r),s=tM.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=rM.subVectors(a,i).multiplyScalar(o).add(i),u=oM.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=nM.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function _x(n,r,e=12,t=!0){let o=Tx.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=Cp(r[l]),u=da,p=cn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Yc||c instanceof Op||c instanceof Xc){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&aM(i,o))continue;i===void 0&&(i=Cx),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function Bx(n,r,e,t=12,o=!0){let i=Tx.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=Cp(r[l]),p=da,d=cn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Yc||u instanceof Op||u instanceof Xc){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=Cx:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Mp(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=cn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=cn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=cn(n[0].roundedCurveCorner,r)*.5),t}function cn(n,r=12){return n&&n instanceof QA?r*2:n&&(n instanceof Xc||n instanceof ZA)?1:n&&n instanceof eM?r*n.points.length:r}function Lx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Cp(r[a]),l=cn(s,e),c=da;for(let u=0;u<=l;u++)if(s instanceof Yc||s instanceof Op||s instanceof Xc){if(s.getPoint(u/l,c),o!==void 0&&iM(o,c,Rs))continue;o===void 0&&(o=Kc),o.copy(c),n.push(c.x,c.y),i++}}return Vs(n[0],n[n.length-2],Rs)&&Vs(n[1],n[n.length-1],Rs)&&(n.pop(),n.pop()),t&&i>1&&!(Vs(n[i-1],n[1],Rs)&&Vs(n[i-2],n[0],Rs))&&(n.push(n[0],n[1]),i++),n}var Dp=new Do,cM=new Do,uM=new Do,dM=new Do,pM=new Do,fM=new Do,Fe=class extends Rx{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new sM(new lM(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ip.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Fe;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Lr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Fe.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)i+=c;else return u+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Dp.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ip.generateUUID()){let i;e instanceof Do?i=e:i=new Do(e,t);let a=new Lr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return _x(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Mp(this.points,e,!1),this.roundedCurveDivisions=Mp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Bx(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Lx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=cn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Ap(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Dp.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){Ap(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&Mx(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let h=a.roundedCurveBefore,f=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),g=Math.min(c,m*.499),v=Math.min(c,y*.499),O=Math.min(g,v),P=1-O/m,S=O/y,T=p.getPointAt(P,Dp),I=d.getPointAt(S,cM);this._subSplitCurve(p,h,P,T,void 0),this._subSplitCurve(d,f,S,void 0,I);let x;if(this.useCubicForRoundedCorners){let _=Tp(T,a.position,I)/2,D=Math.tan(_)*T.distanceTo(a.position),[A,N]=Ix(T,I,D,uM,dM),E=Nx(A,N,a.position),[B,V]=Dx(E,T,I,D,pM,fM);x=new Qc(T.clone(),B.clone(),V.clone(),I.clone())}else x=new Vx(T.clone(),a.position.clone(),I.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Np)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=Ex(s.v0,s.v1,s.v2,s.v3,c);return i!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return t}clone(){let e=new Fe(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],h=new Lr(Ip.generateUUID(),new Do(a,s));h.controls[0].position.set(l,c),h.controls[1].position.set(u,p),h.roundness=d,this.points.push(h)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Fe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Qc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Vx&&(a[l]=Ax(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],h=l>0?a[l-1]:null,f;d instanceof Qc?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Np&&(f=this.createPoint(d.v1)),f!==void 0&&(h!==null&&o(f,h),s.push(f))}let u=a[a.length-1],p=!1;return u instanceof Qc?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Np&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Rx&&(this.shapeHoles=e.holes.map(a=>{let s=new Fe;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var _p=Math.PI*2;function Ep({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function hM(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function zx(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function mM(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(a,2),h=Math.pow(s,2),f=u*p-u*h-p*d;f<0&&(f=0),f/=u*h+p*d,f=Math.sqrt(f)*(l===c?-1:1);let m=f*o/i*s,y=f*-i/o*a,g=m+(n+e)/2,v=y+(r+t)/2,O=(a-m)/o,P=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,I=zx(1,0,O,P),x=zx(O,P,S,T);return!c&&x>0&&(x-=_p),c&&x<0&&(x+=_p),{centerx:g,centery:v,ang1:I,ang2:x}}function Gx({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=mM(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(_p/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let O=0;O<v;O++)l.push(hM(h,f)),h+=f;return l.map(O=>{let{x:P,y:S}=Ep(O[0],o,i,m,y),{x:T,y:I}=Ep(O[1],o,i,m,y),{x,y:_}=Ep(O[2],o,i,m,y);return{x1:P,y1:S,x2:T,y2:I,x,y:_}})}import{BufferAttribute as ru,BufferGeometry as AM}from"three";var Ge;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ge||(Ge={}));var it;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(it||(it={}));function we(n,r){if(!n)throw r||"Assertion Failed!"}var be=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),zs=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Zc=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),pa=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),jx=function(){function n(){var r=new pa,e=new zs,t=new Zc(0),o=new Zc(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Zc(0),t=new Zc(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;we(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;we(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new pa,e=new pa,t=new zs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new pa;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new zs;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new zs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new pa;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new zs;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&be.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&be.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){we(o.prev===i),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Fx=function(){function n(){this.handle=null}return n}(),Ux=function(){function n(){this.key=null,this.node=0}return n}(),yM=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Fx,this.handles[t]=new Ux;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,we(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Fx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ux}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;we(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Bp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),kx=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),gM=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new kx,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new kx;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),xM=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?be.vertLeq(i.Org,a.Org)?be.edgeSign(a.Dst,i.Org,a.Org)<=0:be.edgeSign(i.Dst,a.Org,i.Org)>=0:be.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return be.edgeSign(i.Dst,o,i.Org)>=0;var s=be.edgeEval(i.Dst,o,i.Org),l=be.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){we(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Bp;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ge.ODD:return(e&1)!==0;case Ge.NONZERO:return e!==0;case Ge.POSITIVE:return e>0;case Ge.NEGATIVE:return e<0;case Ge.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do we(be.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=be.vertL1dist(e,r),i=be.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(be.vertLeq(o.Org,i.Org)){if(be.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;be.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(be.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(we(!be.vertEq(o.Dst,i.Dst)),be.vertLeq(o.Dst,i.Dst)){if(be.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(be.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new pa,h,f;if(we(!be.vertEq(c,l)),we(be.edgeSign(l,r.event,a)<=0),we(be.edgeSign(c,r.event,s)>=0),we(a!==r.event&&s!==r.event),we(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(be.vertLeq(a,s)){if(be.edgeSign(c,a,s)>0)return!1}else if(be.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),be.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),be.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=be.vertLeq(a,s)?a:s,be.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),be.vertEq(d,a)||be.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!be.vertEq(l,r.event)&&be.edgeSign(l,r.event,d)>=0||!be.vertEq(c,r.event)&&be.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(be.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),be.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),be.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),be.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}be.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,be.vertEq(o.Org,t)){we(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!be.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}we(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(we(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),be.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Bp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,be.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=be.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);we(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new Bp,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new gM(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++t===1)),we(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,be.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new yM(i,be.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,we(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!be.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),bM=function(){function n(){this.mesh=new jx,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ge.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;be.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;be.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(be.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(be.edgeGoesLeft(o.Lnext)||be.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(be.edgeGoesRight(t.Lprev)||be.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===it.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1;if(e===it.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new jx),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=Ge.ODD),e===void 0&&(e=it.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),xM.computeInterior(this,a);var s=this.mesh;return e===it.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===it.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Rr(n){var r=n.windingRule,e=r===void 0?Ge.ODD:r,t=n.elementType,o=t===void 0?it.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,h=n.strict,f=h===void 0?!0:h,m=n.debug,y=m===void 0?!1:m;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var g=new bM;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)g.addContour(l||2,d[v]);return g.tesselate(e,o,a,l,u,f),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var wW=Ge.ODD,PW=Ge.NONZERO,OW=Ge.POSITIVE,CW=Ge.NEGATIVE,TW=Ge.ABS_GEQ_TWO,AW=it.POLYGONS,MW=it.CONNECTED_POLYGONS,IW=it.BOUNDARY_CONTOURS;import{Box2 as OM,BufferAttribute as tu,BufferGeometry as CM,Vector2 as TM}from"three";var Jc=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Jc.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Jc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=c,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Gs=Jc;Gs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var $x=hi(qx()),js={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Gp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},jp={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},zp=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),dn=class extends CM{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(A=>{let N=A.extractShapePointsToFlatArray([],i),E=[];for(let B=N.length-1;B>=1;B-=2){let V=N[B-1],j=N[B-0];E.push(V,j)}return E}),p=[],d=[];for(let A=0;A<c.length;A+=2)d.push([c[A],c[A+1]]);p.push(d);for(let A=0;A<u.length;A++){let N=u[A],E=[];for(let B=0;B<N.length;B+=2)E.push([N[B],N[B+1]]);p.push(E)}let h;e.isText?h=new OM().setFromPoints(e.points.map(N=>N.position)).getSize(new TM).length()*.1:p[0].length===0?h=o:h=(0,$x.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=Rr({windingRule:s,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=js}let m;try{m=Rr({windingRule:Ge.ODD,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Gp}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let A=0;A<m.elements.length;A++){let N=m.elements[A],E=A%2===0?f.vertexCount:0;f.elements.push(N+E)}for(let A=0;A<m.vertexIndices.length;A++){let N=m.vertexIndices[A],E=f.vertexCount;f.vertexIndices.push(N+E)}for(let A=0;A<m.vertices.length;A++){let N=m.vertices[A];f.vertices.push(N)}}let g=1/0,v=-1/0,O=1/0,P=-1/0;for(let A=0,N=f.vertexCount;A<N;A++){let E=A*2,B=f.vertices[E+0],V=f.vertices[E+1];B<g&&(g=B),B>v&&(v=B),V<O&&(O=V),V>P&&(P=V)}this._minX=g,this._minY=O,this._width=v-g,this._height=P-O,this._buffer=new Gs(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let A=f.elementCount-1;A>=0;A--){let N=A>=y,E=A*2,B=f.elements[E+0],V=f.elements[E+1],j=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=j-1,k=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,Y=f.vertices[F*2+0],ee=f.vertices[F*2+1],K=f.vertices[W*2+0],q=f.vertices[W*2+1],ue=f.vertices[k*2+0],le=f.vertices[k*2+1],ne=K-Y,ce=q-ee,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let he=K-ue,pe=q-le,fe=Math.sqrt(he*he+pe*pe);he/=fe,pe/=fe,R.normals[te*2+0]=-pe,R.normals[te*2+1]=he,R.concave[te]=ne*pe-ce*he>0;let ge=f.vertexIndices[W];if(Array.isArray(ge))R.continuous[te]=!1;else{let[me,C]=this._shape.getCurveIndexFromVertexId(ge-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?me+1:me-1;ie=(ie+H)%H;let De=C===1?0:1,Re=this._shape.roundedCurves[me].getTangent(C),Ee=this._shape.roundedCurves[ie].getTangent(De);R.continuous[te]=Re.dot(Ee)>.95}}N&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[F,W,k]=[W,k,k+1],k>=j&&(k-=V)}while(k!==B+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,j*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,Y)=>[Y,Y]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,j*2)});let J=0;for(let te=1;te<=this._bevelSegments;te++){let Y=te/this._bevelSegments*Math.PI/2,ee=(1-Math.cos(Y))*this._bevel,K=[],q=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let he=ae*2,pe=(ae-1+V)%V*2,fe=f.vertices[R.start*2+he+0],ge=f.vertices[R.start*2+he+1],me=-R.normals[pe+0]*ee,C=-R.normals[pe+1]*ee,ie=-R.normals[he+0]*ee,De=-R.normals[he+1]*ee;if(R.concave[ae]||!R.concave[ae]&&N){let Re=Math.atan2(C,me),Ee=Math.atan2(De,ie);Ee>Re&&(Ee-=Math.PI*2);let Pe=Ee-Re;if(R.continuous[ae]||N){let bt=Re+Pe/2,Me=Math.cos(bt)*ee,yt=Math.sin(bt)*ee;K[2*ne+0]=fe+Me*(N?-1:1),K[2*ne+1]=ge+yt*(N?-1:1),le[ne]=ae,ne++}else{let bt=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=bt;Me++){let yt=Re+Pe*(Me/bt),vt=Math.cos(yt)*ee,An=Math.sin(yt)*ee;K[2*ne+0]=fe+vt,K[2*ne+1]=ge+An,le[ne]=ae,ne++}}}else K[2*ne+0]=fe+me,K[2*ne+1]=ge+C,le[ne]=ae,q[ae]=ne,ne++,K[2*ne+0]=fe,K[2*ne+1]=ge,le[ne]=ae,ne++,K[2*ne+0]=fe+ie,K[2*ne+1]=ge+De,le[ne]=ae,ue[ae]=ne,ne++}let ce=Rr({windingRule:Ge.POSITIVE,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[K],edgeCreateCallback:ae=>{let pe=ae.Org.idx,fe=le[pe],ge=le[(pe+1)%le.length];ae.idx=[fe,ge],ae.Sym.idx=[ge,fe]},vertexIdCallback:ae=>{let he=ae.Lprev.idx;return[he?he[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;J=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[he,pe]=ce.vertexIndices[ae];if(he===pe)continue;let fe=pe;pe<he&&(fe+=V);for(let ge=he;ge<fe;ge++){let me=ge%V,C=(ge+1)%V;if(!R.continuous[me]||!R.continuous[C]){ce.vertexIndices[ae]=[he,me],ce.vertexIndices.splice(ae+1,0,[C,pe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}$.push({bevelI:te,angle:Y,size:ee,boundary:ce,reverseMap:le,insetPoints:K})}let Z=(te,Y,ee)=>{let K=0,q=te.boundary.vertexIndices.length;for(;K<q&&ee(te.boundary.vertexIndices[Y]);)Y=(Y+1)%q,K++;return K},X=S.length;for(let te=1;te<$.length;te++){let Y=$[te-1],ee=$[te],K=Y.boundary.vertexIndices.length,q=ee.boundary.vertexIndices.length;if(!K||!q)break;let ue=R.concave.length,le=0,ne=zp(le,V);for(;!Y.boundary.vertexIndices.filter(ne).length||!ee.boundary.vertexIndices.filter(ne).length;)le++,ne=zp(le,V);let ce=Y.boundary.vertexIndices.findIndex(ne),ae=ee.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%K;while(ne(Y.boundary.vertexIndices[ce]));do ae=(ae+1)%q;while(ne(ee.boundary.vertexIndices[ae]));le=(le+1)%V;let he=le,pe=0,fe=this._buildBevelVert(R,Y,(ce-1+K)%K,void 0,pe),ge=this._buildBevelVert(R,ee,(ae-1+q)%q,void 0,pe),me=fe,C=ge,ie,De,Re=!1;do{pe=(le||ue)/ue,ne=zp(le,V);let Ee=Z(Y,ce,ne),Pe=Z(ee,ae,ne),bt=Re;if(Re=!1,Ee&&!Pe){for(let Me=0;Me<Ee;Me++)ie=this._buildBevelVert(R,Y,(ce+Me)%K,Me/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie;Re=!0}else if(!Ee&&Pe)for(let Me=0;Me<Pe;Me++)De=this._buildBevelVert(R,ee,(ae+Me)%q,Me/(Pe-1),pe),S.push(C.topN,me.topP,De.topP),l===!1&&S.push(me.bottomP,C.bottomN,De.bottomP),C=De;else if(Ee&&Pe)if(ie=this._buildBevelVert(R,Y,ce,0,pe),De=this._buildBevelVert(R,ee,ae,0,pe),bt?(S.push(me.topN,De.topP,C.topN),S.push(me.topN,ie.topP,De.topP),l===!1&&(S.push(De.bottomP,me.bottomN,C.bottomN),S.push(De.bottomP,ie.bottomP,me.bottomN))):(S.push(C.topN,me.topN,ie.topP),S.push(C.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,De.bottomP))),me=ie,C=De,Ee===Pe)for(let Me=1;Me<Ee;Me++)ie=this._buildBevelVert(R,Y,(ce+Me)%K,Me/(Ee-1),pe),De=this._buildBevelVert(R,ee,(ae+Me)%q,Me/(Pe-1),pe),S.push(me.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,De.bottomP)),me=ie,C=De;else if(Ee>Pe){let Me=Ee/Pe,yt=0;for(let vt=1;vt<Ee;vt++)ie=this._buildBevelVert(R,Y,(ce+vt)%K,vt/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie,vt>(yt+1)*Me&&(yt++,De=this._buildBevelVert(R,ee,(ae+yt)%q,yt/(Pe-1),pe),S.push(C.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,C.bottomN,De.bottomP),C=De)}else{let Me=Pe/Ee,yt=0;for(let vt=1;vt<Pe;vt++)De=this._buildBevelVert(R,ee,(ae+vt)%q,vt/(Pe-1),pe),S.push(C.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,C.bottomN,De.bottomP),C=De,vt>(yt+1)*Me&&(yt++,ie=this._buildBevelVert(R,Y,(ce+yt)%K,yt/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie)}ce=(ce+Ee)%K,ae=(ae+Pe)%q,le=(le+1)%ue}while(le!==he)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall($,R,S),N){let te=[];for(let Y=S.length-1;Y>=X+2;Y-=3){let ee=S[Y-2],K=S[Y-1],q=S[Y-0];te.push(q,K,ee)}S.splice(X,S.length-X,...te)}if(N){let te=[];for(let Y=$[$.length-1].boundary.vertices.length-1;Y>=1;Y-=2){let ee=$[$.length-1].boundary.vertices[Y-1],K=$[$.length-1].boundary.vertices[Y-0];te.push(ee,K)}T.push(te)}if(!N){let te=$[$.length-1],Y;try{Y=Rr({windingRule:$.length>1?Ge.POSITIVE:Ge.ODD,elementType:it.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{Y=jp}if(!Y)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<h&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let ee=0;ee<Y.elementCount*3;ee+=3){let K=this._buildSurfaceVert(Y,Y.elements[ee+0],J),q=this._buildSurfaceVert(Y,Y.elements[ee+1],J),ue=this._buildSurfaceVert(Y,Y.elements[ee+2],J);S.push(K.top,q.top,ue.top),l===!1&&S.push(ue.bottom,q.bottom,K.bottom)}}this.vertexCache={}}this._buffer.shrink();let I=new tu(Uint32Array.from(S),1),x=new tu(this._buffer.positions,3),_=new tu(this._buffer.normals,3),D=new tu(this._buffer.uvs,2);x.needsUpdate=!0,_.needsUpdate=!0,D.needsUpdate=!0,I.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",_),this.setAttribute("uv",D),this.setIndex(I)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),p=u*3,d=u*2,h={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[i]=h,h}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,p,d,h;l!==c?(p=l,u=c,h=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,h=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||h);let f=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,g=u*2,v=p*2,O=t.boundary.vertices[y+0],P=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(O-this._minX)/this._width,I=(P-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),I=1);let x=e.normals[g+0],_=e.normals[g+1],D=e.normals[v+0],A=e.normals[v+1];if(h){let j=D-x,R=A-_;x=x+j*(1-i),_=_+R*(1-i);let W=Math.sqrt(x*x+_*_);x/=W,_/=W}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),E=N*3,B=N*2,V={i:o,fi:u,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1,pathBevelUCoord:a};return this._buffer.positions[E+0]=O,this._buffer.positions[E+1]=P,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=x*f,this._buffer.normals[E+1]=_*f,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[E+3]=O,this._buffer.positions[E+4]=P,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=x*f,this._buffer.normals[E+4]=_*f,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T),d||(this.forPathBevel?(N+=1,E+=3,B+=2):(N+=2,E+=6,B+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[E+0]=O,this._buffer.positions[E+1]=P,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=D*f,this._buffer.normals[E+1]=A*f,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[E+3]=O,this._buffer.positions[E+4]=P,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=D*f,this._buffer.normals[E+4]=A*f,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new dn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var fa=class extends AM{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ge.ODD;this.elementType=it.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ge.ODD,elementType:it.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let f=0,m=i.length/2;f<m;f++){let y=f*2,g=i[y+0],v=i[y+1];if(u!==void 0&&g!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=g,p=v,!l&&!c)break}if(!l&&!c)try{s=Rr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=js}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new ru(new Float32Array(d*3),3),this._normalAttribute=new ru(new Float32Array(d*3),3),this._uvAttribute=new ru(new Float32Array(d*2),2),this._indexAttribute=new ru(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1];I<f&&(f=I),I>m&&(m=I),x<y&&(y=x),x>g&&(g=x)}let v=m-f,O=g-y;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1],_=(I-f)/v,D=(x-y)/O;this._positionAttribute.setXYZ(P,I,x,0),this._normalAttribute.setXYZ(P,0,0,1),this._uvAttribute.setXY(P,_,D)}for(let P=0,S=h;P<S;P++){let T=P*3,I=s.elements[T+0],x=s.elements[T+1],_=s.elements[T+2];this._indexAttribute.setX(T+0,I),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,_)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new fa(this._shape,this._curveSegments);return e.userData=vo(this.userData),e}};var ha=class extends dn{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new ha(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var Jt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ge.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Fe?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Fe(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Fe(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new fa(n.shape,o,{windingRule:a}):s=new ha(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as MM,Float32BufferAttribute as IM,MathUtils as Fp,Vector2 as Xx}from"three";var Kx=Math.PI*2,ya=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Fp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=NM(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new MM,h.setAttribute("position",new IM([],3))):h=Jt.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function NM(n,r,e,t,o,i){if(t>=Kx)return o>30||o%4===0?(EM(n,r,e,i),Math.round(o/4)):Yx(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=Gx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?DM(n,a.x,a.y,c,o,r,e,i):Yx(n,t,o,r,e,i)}function DM(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ma(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ma(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?Qx(n,i,a,s):n.addPoint(ma(0,0)),l}function Yx(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(ma(c,u))}return r<Kx?i>0?Qx(n,t,o,i):n.addPoint(ma(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Zx(n,t,o,i)),1}function EM(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(ou(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(ou(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ou(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(ou(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Zx(n,r,e,t)}function ma(n,r){return new Lr(Fp.generateUUID(),new Xx(n,r))}function ou(n,r,e,t,o,i){let a=ma(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function Qx(n,r,e,t){Jx(n,r,e,t).forEach(i=>n.addPoint(i))}function Zx(n,r,e,t){let o=Jx(n,r,e,t),i=new Fe;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Jx(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Xx(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=Fp.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as _M,Float32BufferAttribute as Up,Uint32BufferAttribute as BM,Vector3 as e0}from"three";var t0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new Fs(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},kp=new BM([0,0,0],1),Fs=class extends _M{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let h=r&&a===1;h&&(d=0),p>100&&(p=100),p===0&&(d=0);let f=()=>new e0,m=new e0,y=f(),g=f(),v=f(),O,P,S,T,I,x,_,D,A=f(),N=f(),E=f(),B=f(),V=f(),j=f(),R=f(),W=f(),F=t-2*l+.001,k=F/a,H=Math.ceil(s*a),$=H+1,J=F/H,Z=-F/2,X=u+1,te=2*Math.PI/u,Y=Math.PI/2/d,ee=.01,K=Math.min((1-p/100)*l,l-ee),q=l-K,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*$,he=Math.max(0,X*($+ne)),[pe,fe,ge]=[3,3,2].map(rt=>Array(he*rt).fill(0)),me=[],C=i-l;function ie(rt,Xe){let Ar=Math.PI/2;x=Xe*J,D=2*Math.PI*(x%k)/k+Ar,x+=Z,_=Math.sin(D)*C,I=Math.cos(D)*C,r?rt.set(I,_,x):rt.set(I,x,_)}ie(m,-1e-10),ie(y,0),A.copy(m),ie(m,1);let De=m.distanceTo(y),Re=h?0:q+K,Ee=De*H+2*Re,Pe=K,bt=Ee-Re;for(let rt=0;rt<=H;rt++){ie(g,rt),W.subVectors(g,A).normalize(),A.copy(g),j.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,j).normalize();let Xe=rt===0,Ar=rt===H,ud=Xe?3*Math.PI/2:Y,dd=Xe?Pe:bt,vl=Xe?X:ae,Mn=Xe?0:he-X,lt=W.clone().multiplyScalar(Xe?-q:q).add(g),pd=W.clone().multiplyScalar(Xe?-1:1).normalize();for(let hr=0;hr<X;hr++){let fs=hr*te;if(N.addVectors(m.copy(j).multiplyScalar(l*Math.cos(fs)),y.copy(R).multiplyScalar(l*Math.sin(fs))),E.copy(N).normalize(),Xe||Ar){h||(ue=Mn+hr,[0,1,2].forEach(jt=>{pe[ue*3+jt]=lt.getComponent(jt),fe[ue*3+jt]=pd.getComponent(jt)}),ge[ue*2]=+Ar,ge[ue*2+1]=hr/u),y.copy(E).multiplyScalar(K),v.addVectors(g,y);for(let jt=0;jt<d;jt++){let In=jt*Y+ud;B.addVectors(m.copy(W).multiplyScalar(q*Math.sin(In)),y.copy(E).multiplyScalar(q*Math.cos(In))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=vl+jt*X+hr,[0,1,2].forEach(ui=>{pe[ue*3+ui]=y.getComponent(ui),fe[ue*3+ui]=V.getComponent(ui)});let Sl=+Xe+Math.sin(In);ge[ue*2]=(dd+q*Sl)/Ee,ge[ue*2+1]=hr/u}}y.addVectors(g,N),ue=ce+rt*X+hr,[0,1,2].forEach(jt=>{pe[ue*3+jt]=y.getComponent(jt),fe[ue*3+jt]=E.getComponent(jt)}),ge[ue*2]=(Re+rt*De)/Ee,ge[ue*2+1]=hr/u}}let Me=$+2*d+le,yt=1,[vt,An]=[+h,Me-1];for(let rt=vt;rt<=An-1;rt++){let Xe=h&&rt===An-1;for(let Ar=0;Ar<X-1;Ar++)O=rt*X+Ar,P=O+1,S=(Xe?Ar:O)+X,T=(Xe?Ar+1:P)+X,rt===0?me.push(P,T,S):rt===Me-2?me.push(O,P,S):me.push(O,P,S,P,T,S)}this.setIndex(me),this.setAttribute("position",new Up(pe,3)),this.setAttribute("normal",new Up(fe,3)),this.setAttribute("uv",new Up(ge,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,kp.array=o,kp.count=o.length,kp}};import{IcosahedronGeometry as LM}from"three";var r0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Us(r*.5,i,a):new LM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Us=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new Us(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as RM,Shape as VM}from"three";var o0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new VM;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new RM(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as d0,BufferGeometryLoader as XM,Vector3 as KM,BoxGeometry as p0}from"three";import{BufferGeometry as WM,Vector2 as $p,Vector3 as u0}from"three";import{Box3 as zM,BufferAttribute as ks,BufferGeometry as n0,Color as qp,EventDispatcher as GM,Float32BufferAttribute as ga,Matrix3 as i0,Matrix4 as c0,MathUtils as jM,Object3D as FM,Sphere as UM,Vector2 as ur,Vector3 as Rt,Vector4 as kM}from"three";var ro=new c0,Hp=new FM,nu=new Rt,pn=class extends GM{constructor(){super(),this.uuid=jM.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new i0().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return ro.makeRotationX(r),this.applyMatrix4(ro),this}rotateY(r){return ro.makeRotationY(r),this.applyMatrix4(ro),this}rotateZ(r){return ro.makeRotationZ(r),this.applyMatrix4(ro),this}translate(r,e,t){return ro.makeTranslation(r,e,t),this.applyMatrix4(ro),this}scale(r,e,t){return ro.makeScale(r,e,t),this.applyMatrix4(ro),this}lookAt(r){return Hp.lookAt(r),Hp.updateMatrix(),this.applyMatrix4(Hp.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new Rt().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new qp().fromBufferAttribute(s,d));function u(d,h,f,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[h].clone(),e.colors[f].clone()],g=a===void 0?[]:[new Rt().fromBufferAttribute(a,d),new Rt().fromBufferAttribute(a,h),new Rt().fromBufferAttribute(a,f)],v=new xa(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new ur().fromBufferAttribute(l,d),new ur().fromBufferAttribute(l,h),new ur().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new ur().fromBufferAttribute(c,d),new ur().fromBufferAttribute(c,h),new ur().fromBufferAttribute(c,f)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let h=p[d],f=h.start,m=h.count;for(let y=f,g=f+m;y<g;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),h.materialIndex):u(y,y+1,y+2,h.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(nu).negate(),this.translate(nu.x,nu.y,nu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new c0;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new Rt,e=new Rt;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new Rt;if(r){let t=new Rt,o=new Rt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new pn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Rt,u={a:new Rt,b:new Rt,c:new Rt};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new zM),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new UM),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new i0().getNormalMatrix(e));for(let d=0,h=s.length;d<h;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,h=p.length;d<h;d++)u.push(p[d].clone());for(let d=0,h=c.length;d<h;d++){let f=c[d],m,y,g=f.vertexNormals,v=f.vertexColors,O=new xa(f.a+i,f.b+i,f.c+i);O.normal.copy(f.normal),o!==void 0&&O.normal.applyMatrix3(o).normalize();for(let P=0,S=g.length;P<S;P++)m=g[P].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),O.vertexNormals.push(m);O.color.copy(f.color);for(let P=0,S=v.length;P<S;P++)y=v[P],O.vertexColors.push(y.clone());O.materialIndex=f.materialIndex+t,l.push(O)}for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++)v.push(g[O].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let p=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,p=this.faceVertexUvs.length;u<p;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new Rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let m in f)f[m]!==void 0&&(r[m]=f[m]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let m=this.vertices[f];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let f=0;f<this.faces.length;f++){let m=this.faces[f],y=!0,g=!1,v=this.faceVertexUvs[0][f]!==void 0,O=m.normal.length()>0,P=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,I=0;if(I=u(I,0,0),I=u(I,1,y),I=u(I,2,g),I=u(I,3,v),I=u(I,4,O),I=u(I,5,P),I=u(I,6,S),I=u(I,7,T),t.push(I),t.push(m.a,m.b,m.c),t.push(m.materialIndex),v){let x=this.faceVertexUvs[0][f];t.push(h(x[0]),h(x[1]),h(x[2]))}if(O&&t.push(p(m.normal)),P){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new pn().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let d=0,h=e.length;d<h;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,h=t.length;d<h;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,h=o.length;d<h;d++)this.faces.push(o[d].clone());for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++){let S=g[O];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let i=r.morphTargets;for(let d=0,h=i.length;d<h;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)f.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){f.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)f.normals.push(i[d].normals[m].clone())}this.morphTargets.push(f)}let a=r.morphNormals;for(let d=0,h=a.length;d<h;d++){let f={};if(a[d].vertexNormals!==void 0){f.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let g=a[d].vertexNormals[m],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),f.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){f.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)f.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(f)}let s=r.skinWeights;for(let d=0,h=s.length;d<h;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,h=l.length;d<h;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,h=c.length;d<h;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Wp().fromGeometry(this),e=new n0,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",iu.call(new ks(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",iu.call(new ks(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",a0.call(new ks(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",s0.call(new ks(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",s0.call(new ks(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new ga(c.data.length*3,3);u.name=c.name,i.push(iu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ga(r.skinIndices.length*4,4);e.setAttribute("skinIndex",l0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ga(r.skinWeights.length*4,4);e.setAttribute("skinWeight",l0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new n0,t=r.geometry;if(r.isPoints||r.isLine){let o=new ga(t.vertices.length*3,3),i=new ga(t.colors.length*3,3);if(e.setAttribute("position",iu.call(o,t.vertices)),e.setAttribute("color",a0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new ga(t.lineDistances.length,1);e.setAttribute("lineDistance",HM.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};pn.prototype.isGeometry=!0;var Wp=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,l=s.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:s[g].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let g=0;g<p;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let h=r.skinIndices,f=r.skinWeights,m=h.length===t.length,y=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let O=v.vertexNormals;if(O.length===3)this.normals.push(O[0],O[1],O[2]);else{let S=v.normal;this.normals.push(S,S,S)}let P=v.vertexColors;if(P.length===3)this.colors.push(P[0],P[1],P[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ur,new ur,new ur))}if(a===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ur,new ur,new ur))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},xa=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new Rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new qp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function HM(n){return this.array.set(n),this}function a0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new qp),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function s0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new ur),r[e++]=i.x,r[e++]=i.y}return this}function iu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new Rt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function l0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new kM),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var qM=["a","b","c"];function $M(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Yp(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Xp(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function YM(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],Xp(a.a,a.b,n,t,a,e),Xp(a.b,a.c,n,t,a,e),Xp(a.c,a.a,n,t,a,e)}function au(n,r,e,t,o){n.push(new xa(r,e,t,void 0,void 0,o))}function ba(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function su(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var lu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof WM?r=new pn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new u0,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],h=new Map;YM(l,c,d,h);let f=[],m,y,g,v,O,P,S;for(let ee of Array.from(h.keys())){for(y=h.get(ee),g=new u0,O=3/8,P=1/8,S=y.faces.length,S!=2&&(O=.5,P=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(O),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[$M(v,qM[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(P),g.add(e),y.newEdge=f.length,f.push(g)}let T,I,x,_,D,A,N,E=[];for(o=0,i=l.length;o<i;o++){for(A=l[o],D=d[o].edges,t=D.length,t==3?T=3/16:t>3&&(T=3/(8*t)),I=1-t*Number(T),x=T,t<=2&&(t==2?(I=3/4,x=1/8):t==1||t==0),N=A.clone().multiplyScalar(I),e.set(0,0,0),a=0;a<t;a++)_=D[a],m=_.a!==A?_.a:_.b,e.add(m);e.multiplyScalar(Number(x)),N.add(e),E.push(N)}let B=E.concat(f),V=E.length,j,R,W,F=[],k=[],H,$,J,Z,X=new $p,te=new $p,Y=new $p;for(o=0,i=c.length;o<i;o++)v=c[o],j=Number(Yp(v.a,v.b,h).newEdge)+V,R=Number(Yp(v.b,v.c,h).newEdge)+V,W=Number(Yp(v.c,v.a,h).newEdge)+V,au(F,j,R,W,v.materialIndex),au(F,v.a,j,W,v.materialIndex),au(F,v.b,R,j,v.materialIndex),au(F,v.c,W,R,v.materialIndex),p&&(H=u[o],$=H[0],J=H[1],Z=H[2],X.set(ba($.x,J.x),ba($.y,J.y)),te.set(ba(J.x,Z.x),ba(J.y,Z.y)),Y.set(ba($.x,Z.x),ba($.y,Z.y)),su(k,X,te,Y),su(k,$,X,Y),su(k,J,te,X),su(k,Z,Y,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=k)}};var Pt=new KM,f0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new d0().copy(new p0(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Pt),t={width:Pt.x,height:Pt.y,depth:Pt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new d0().copy(new p0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Pt)):Pt.set(a.width,a.height,a.depth),(r!==Pt.x||e!==Pt.y||t!==Pt.z)&&i.scale(Pt.x===0?1:r/Pt.x,Pt.y===0?1:e/Pt.y,Pt.z===0?1:t/Pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new lu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new XM(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Pt);let a=100/Pt.x;Object.assign(i.parameters,{width:100,height:Pt.y*a,depth:Pt.z*a}),r(this.build(i))})}};var cu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,h=2*Math.PI/t;for(let m=0;m<t;m++){let y=h*m,g=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(g,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let f=Jt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as QM,Float32BufferAttribute as Kp,Vector2 as oo,Vector3 as It}from"three";var h0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new Zp(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function Hs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qp(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function ZM(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Zp=class extends QM{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,h=e/2,f=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,O=new It(0,-h,0),P=new It(0,h,0),S=new oo(r,-h),T=new oo(m,-h),I=new oo(0,P.y).sub(T),x=new oo(0,P.y).sub(S),_=new oo(I.y,-I.x).normalize(),D=new oo(x.y,-x.x).normalize(),N=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-I.angle())/2)-1e-8;a=Math.min(a,N);let E;{let k=new It(_.x,_.y,0),H=new It(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);E=k.angleTo(H)}let B=a/Math.tan((Math.PI-I.angle())/2),V=a/Math.tan((Math.PI-E)/2),j=new It;if(!i){c.push(O.x,O.y,O.z),u.push(0,-1,0),p.push(0,0);let k=d++,H=[],$=S.clone(),J=B/Math.cos(Math.PI/t);$.x-=J;for(let Z=0;Z<t;Z++){let X=Z/t*Math.PI*2+f,te=new oo(Math.sin(X),Math.cos(X));Hs($,te,j),c.push(j.x,j.y,j.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let Z=0;Z<H.length;Z++)l.push(H[Z],k,H[(Z+1)%H.length])}let R=[];{let k=new It,H=new It,$=new It,J=new It,Z=new It,X=new It;for(let te=0;te<t;te++){let Y=te/t*Math.PI*2+f,ee=(te+.5)/t*Math.PI*2+f,K=(te+1)/t*Math.PI*2+f,q=new oo(Math.sin(Y),Math.cos(Y)),ue=new oo(Math.sin(ee),Math.cos(ee)),le=new oo(Math.sin(K),Math.cos(K));Hs(S,q,H),Hs(S,le,$),Hs(_,ue,k),Qp(P,H,$,V,V,J),c.push(J.x,J.y,J.z),Qp(H,P,$,V,B,Z),c.push(Z.x,Z.y,Z.z),Qp($,H,P,B,V,X),c.push(X.x,X.y,X.z),u.push(k.x,k.y,k.z),u.push(k.x,k.y,k.z),u.push(k.x,k.y,k.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let fe=H.clone().add($).multiplyScalar(.5),ge=P.clone().sub(fe).normalize(),C=O.clone().sub(fe).normalize().add(ge).normalize().multiplyScalar(-1),ie=X.clone().sub(Z);W(fe,ie,C,I.angle())}let he,pe;{let fe=new It;Hs(D,le,fe);let ge=X.clone().add(J).multiplyScalar(.5);ge=ZM(ge,$,P);let me=X.clone().sub(J);[he,pe]=W(ge,me,fe,E,J.y)}{let fe=he,ge=fe.clone().setY(0).normalize(),me=new It(0,-1,0),C=ge.clone().cross(me);F(fe,ge,me,C)}R.concat(pe);{let fe=I.angle(),ge=Math.PI-fe,me=P.clone();me.y-=a/Math.sin(fe-Math.PI/2);let C=new It,ie=[];for(let Re=0;Re<s;Re++){let Ee=[],Pe=Math.PI/2-ge*Re/s,bt=Math.cos(Pe),Me=Math.sin(Pe),yt=ee;for(let vt=0;vt<=Re;vt++){let An=Math.cos(yt),rt=Math.sin(yt);k.x=bt*rt,k.y=Me,k.z=bt*An,C.copy(me).addScaledVector(k,a),c.push(C.x,C.y,C.z),u.push(k.x,k.y,k.z),p.push(0,0),Ee.push(d++),yt+=Math.PI*2/Re/t}ie.push(Ee)}pe.reverse(),ie.push(pe);let De=ie.length-1;for(let Re=0;Re<De;Re++){let Ee=ie[Re],Pe=ie[Re+1],bt=Ee.length-1;l.push(Pe[1],Ee[0],Pe[0]);for(let Me=1;Me<=bt;Me++)l.push(Ee[Me],Ee[Me-1],Pe[Me]),l.push(Pe[Me+1],Ee[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Kp(c,3)),this.setAttribute("normal",new Kp(u,3)),this.setAttribute("uv",new Kp(p,2));function W(k,H,$,J,Z){let X=-J/2,te=(Math.PI-J)/2,Y=H.clone().normalize().cross($);k.addScaledVector($,-a/Math.sin(te));let ee=new It,K=new It,q=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*J;K.set(0,0,0),K.addScaledVector(Y,Math.sin(ce)),K.addScaledVector($,Math.cos(ce));for(let ae=0;ae<=q;ae++){let he=ae/q-.5;if(ee.copy(k),ee.addScaledVector(H,he),ee.addScaledVector(K,a),Z!=null){let pe=Math.max(0,ee.y-Z);ee.addScaledVector(H,-pe/H.y)}c.push(ee.x,ee.y,ee.z),u.push(K.x,K.y,K.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ne=0;ne<s;ne++)for(let ce=0;ce<q;ce++){let ae=ue+ce+(q+1)*ne,he=ae+(q+1),pe=he+1,fe=ae+1;l.push(ae,he,fe),l.push(he,pe,fe)}return[k.clone().addScaledVector(H,.5),le]}function F(k,H,$,J){let Z=Math.PI/2,X=x.angle()-Z,te=[],Y=new It,ee=new It;for(let q=0;q<=s;q++){let ue=[],le=q/s;for(let ne=0;ne<=q;ne++){let ae=((q?ne/q:0)-.5)*v,he=Math.cos(ae),pe=Math.sin(ae),fe=Math.atan(Math.tan(X)*he),ge=(Z+fe)*le,me=Math.cos(ge),C=Math.sin(ge);Y.set(0,0,0),Y.addScaledVector(H,C*he),Y.addScaledVector($,me),Y.addScaledVector(J,C*pe),ee.copy(k).addScaledVector(Y,a),c.push(ee.x,ee.y,ee.z),u.push(Y.x,Y.y,Y.z),p.push(0,0),ue.push(d++)}te.push(ue)}let K=te.length-1;for(let q=0;q<K;q++){let ue=te[q],le=te[q+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(P,S,T){return S>e&&T>t?Math.min(P*e/S,P*t/T):S>e?P*e/S:T>t?P*t/T:P}let h=[];h[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),h[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),h[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),h[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,m=p.x,y=p.y,g=u.y;r.addPoint(r.createPoint(f,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,g)),r.addPoint(r.createPoint(f,g)),r.isClosed=!0;let v=!0;for(let P=0,S=r.points.length;P<S;P++)r.points[P].roundness=h[P],P>0&&h[P]!==h[P-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let O=Jt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(O,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as JM,Float32BufferAttribute as eI,MathUtils as m0,SphereGeometry as tI}from"three";var y0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=m0.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new JM,u.setAttribute("position",new eI([],3))):u=new tI(.5*r,o,i,a,s,l,c*m0.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as rI}from"three";var g0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new rI(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as oI,Float32BufferAttribute as Jp,Vector3 as nI}from"three";var x0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new ef(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},ef=class extends oI{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,h=(ee=0,K=0,q=0)=>new nI(ee,K,q),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],O=-g,P=+g,[S,T,I]=[h(O,-y,+v),h(O,-y,-v),h(O,+y,-v)],x=(ee,K=!1)=>Math.sin(ee-Math.PI/(1+ +K)),_=(ee,K=!1)=>Math.cos(ee-Math.PI/(1+ +K));I.y=Math.sin(o)*e-y;let D=Math.cos(o)*e-v,A=S.z-u;o<=d?(I.z=Math.min(D,A),I.z==A&&(I.y-=(D-A)/Math.tan(d-o))):T.z=Math.min(T.z-D-v,S.z-u),f.subVectors(S,T),m.subVectors(I,T);let N=Math.min(f.length(),m.length())*i/100,E=N*Math.tan(o/2),B=N/Math.cos(o/2),V=f.clone().normalize().add(m.normalize()).setLength(B).add(T);f.set(0,x(o,!0),_(o,!0)),p.push([I,f.clone()]);let j=(Math.PI-o)/a;for(let ee=0;ee<=a;ee++){let K=d+o+ee*j;f.set(0,Math.sin(K)*E,Math.cos(K)*E),f.add(V),m.set(0,x(K),_(K)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(j/2)*E*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),k=p[W-1][0].distanceTo(p[W][0]),H=F+R*a+k;p[0].push(1);for(let ee=0;ee<=a;ee++)p[ee+1].push(1-(F+ee*R)/H);p[W].push(0);let[$,J,Z]=p[0],X,te,Y;for(let ee=1;ee<p.length;ee++)[X,te,Y]=p[ee],s.push(O,$.y,$.z,O,X.y,X.z,P,$.y,$.z,P,$.y,$.z,O,X.y,X.z,P,X.y,X.z),l.push(0,J.y,J.z,0,te.y,te.z,0,J.y,J.z,0,J.y,J.z,0,te.y,te.z,0,te.y,te.z),c.push(0,Z,0,Y,1,Z,1,Z,0,Y,1,Y),[$,J,Z]=[X,te,Y];this.setAttribute("position",new Jp(s,3)),this.setAttribute("normal",new Jp(l,3)),this.setAttribute("uv",new Jp(c,2))}};var uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,h=0,f=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=p*t/100,v=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let P=0;P<o;P++){let S=m*P,T=h+Math.sin(S)*p,I=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,I))}}else for(let P=0;P<o;P++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+Math.sin(y)*v,P<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let P=0,S=u.points.length;P<S;P++)u.points[P].roundness=i;u.roundness=i,u.update();let O=Jt.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(O,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as iI}from"three";var b0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new iI(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as aI,Float32BufferAttribute as sI,MathUtils as lI}from"three";var v0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=cI(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function cI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=lI.clamp(o/360,0,1);if(p===0){let d=new aI;return d.setAttribute("position",new sI([],3)),d}return p===1&&(c=0),new Fs(!0,n,r,e,t,p,i,a,s,l,c,u)}import{TorusKnotGeometry as uI}from"three";var S0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new uI(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var w0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let d=0,h=l.points.length;d<h;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=Jt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as O0,Vector3 as Nt,Matrix3 as dI,Matrix4 as Wn,BufferGeometry as C0,BufferAttribute as Sa,MathUtils as du}from"three";function P0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var pI=new Wn,fI=new Wn;function hI(n,r,e){let t=[new Nt,new Nt,new Nt],o=[new Nt,new Nt,new Nt];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=du.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Wn().makeBasis(t[0],t[1],t[2])}var T0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ya.create({parameters:Yd}).userData.shape;return{path:n.path??Xi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...wc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new tf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new C0,{userData:{...n,type:"PathGeometry"}})}},tf=class extends C0{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!P0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let F=0;F<c;F++){let k=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[k].clone()),p.push(t[k].clone())}let d=(F,k,H)=>{u[F]=u[F].clone().lerp(u[k],H),p[F]=hI(p[F],p[k],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let F=u.length-1;u[F].copy(u[0]),p[F].copy(p[0])}this._applyPathModifiers(p,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,O=g>0?this.inputs.parameters.extrusion.capType:"flat",P=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(P=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:I}=this._computeShapePoints(P),x=0,_;O==="round"&&(_=new dn(this.inputs.shapeData,2*g,g,P,v,void 0,!0),x=_.getAttribute("position").count);let D=0,A=0;T.sort((F,k)=>F.start-k.start),T.forEach(F=>{F.verticesStart=D,F.verticesCount=F.continuous.reduce((k,H,$)=>k+($===0||!H?2:1),0),A+=F.verticesCount,D=A});let N=A*c,E,B=0;if(this._isOpenEnded()&&O==="flat"){try{E=Rr({windingRule:Ge.ODD,elementType:it.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{E=jp}B=E.vertexCount}let V=N+2*B+x*2,j=N+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(T.forEach(F=>{this._extrudeRegion(F,I,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),E&&(this._closeEnd(E,N,W,R,p[0],u[0],!1),this._closeEnd(E,N+B,W,R,p[p.length-1],u[u.length-1],!0)),_){R.positions.set(_.getAttribute("position").array,j*3),R.normals.set(_.getAttribute("normal").array,j*3),R.uvs.set(_.getAttribute("uv").array,j*2);for(let $=j;$<j+x;$++)R.uvs[$*2+1]=1e-4;let F=W.length;W.push(..._.getIndex().array.map($=>$+j)),j+=x,R.positions.set(_.getAttribute("position").array,j*3),R.normals.set(_.getAttribute("normal").array,j*3),R.uvs.set(_.getAttribute("uv").array,j*2);let k=W.length;W.push(..._.getIndex().array.map($=>$+j)),this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W);let H=pI;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,j,V),H.copy(p[0]).setPosition(u[0]).multiply(fI.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,j-x,j),this.reverseIndicesOnRange(F,k)}else this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Hc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,a=new Nt,s=new Nt,l=new Nt,c=new Nt,u=new Nt(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let O;y===o-1?O=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):O=e[y+1];let P=g.clone().sub(v).normalize(),S=O.clone().sub(g).normalize(),T=P.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let I=u.clone().cross(T).normalize(),x=T.clone().cross(I).normalize();u.copy(x),c.copy(I),y===0&&(a.copy(x),s.copy(T));let _=new Wn().makeBasis(I,x,T);t.push(_)}let p=i?s:l,d=i?a:new Nt(0,1,0),h=p.clone().cross(c).normalize(),f=Math.acos(d.dot(h));if(isNaN(f))return t;let m=d.clone().cross(h);p.dot(m)>0&&(f*=-1);for(let y=1;y<t.length;y++){let g=new Wn().makeRotationZ(f*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Wn,p=new Wn;return e.forEach((d,h)=>{let f=h===0?0:h===i-1?1:(h-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(du.lerp(a,a+s,f)*du.DEG2RAD);let m=du.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=Ge.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let O=y[v-1],P=y[v-0];g.push(O,P)}return g}),s;try{s=Rr({windingRule:t,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=js}let l;try{l=Rr({windingRule:Ge.ODD,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Gp}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,h=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,v=s.vertices[g+0],O=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),O<d&&(d=O),O>h&&(h=O)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],O=s.elements[g+1],P=v+O,S={start:v,count:O,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,I=P-1,x=v+1,_=o.roundedCurves.length;do{let D=T-v,A=s.vertices[I*2+0],N=s.vertices[I*2+1],E=s.vertices[T*2+0],B=s.vertices[T*2+1],V=s.vertices[x*2+0],j=s.vertices[x*2+1],R=E-A,W=B-N,F=Math.sqrt(R*R+W*W);R/=F,W/=F;let k=E-V,H=B-j,$=Math.sqrt(k*k+H*H);k/=$,H/=$,S.normals[D*2+0]=-H,S.normals[D*2+1]=k;let J=s.vertexIndices[T];if(Array.isArray(J))S.continuous[D]=!1;else{let[Z,X]=o.getCurveIndexFromVertexId(J-1,!0);if(X>0&&X<1)S.continuous[D]=!0;else{let te=X===1?Z+1:Z-1;te=(te+_)%_;let Y=X===1?0:1,ee=o.roundedCurves[Z].getTangent(X),K=o.roundedCurves[te].getTangent(Y);S.continuous[D]=ee.dot(K)>.95}}y&&(S.normals[D*2+0]*=-1,S.normals[D*2+1]*=-1),[I,T,x]=[T,x,x+1],x>=P&&(x-=O)}while(x!==v+1)}return{regions:[i,...a],infos:f,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Nt,u=new Nt,p=new Nt,d=new Nt,h=new O0;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let O=0;O<e.count;O++){let P=(e.start+O)*2;if(c.set(t[P+0],t[P+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[O])d.set(e.normals[O*2+0],e.normals[O*2+1],0);else{let S=O===0?(e.start+e.count-1)*2:P-2;u.set(t[S+0],t[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),h.set(O===0?1:O/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[O]||O===0){if(O===0)d.set(e.normals[O*2+0],e.normals[O*2+1],0),h.set(0,y/(o.length-1));else{let S=O===e.count-1?e.start*2:P+2;u.set(t[S+0],t[S+1],0),d.copy(u).sub(c),d.set(-d.y,d.x,0),e.isHole||d.negate()}d.applyMatrix4(m).normalize(),this._insertVertex(a,v,p,d,h),v++}}});let f=o.length-1;for(let m=0;m<f;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let O=0;O<e.count;O++){(!e.continuous[O]||O===0)&&v++;let P=O===e.count-1?0:v+1,S=y+v,T=y+P,I=g+P,x=g+v;e.isHole?s.push(S,I,T,S,x,I):s.push(S,T,I,S,I,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Nt(0,0,l?-1:1).applyMatrix4(a),p=new Nt,d=new O0;for(let f=0;f<c;f++){let m=2*f;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+f,p,u,d)}let h=e.elements;for(let f=0;f<e.elementCount;f++){let m=3*f,y=h[m+0]+t,g=h[m+(l?1:2)]+t,v=h[m+(l?2:1)]+t;o.push(y,g,v)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new dI().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let h=p.array,f=d.array,m=p.itemSize;for(let y=t*m,g=o*m;y<g;y+=m){if(y===t)debugger;s=h[y+0],l=h[y+1],c=h[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),h[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,h[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,h[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=f[y+0],l=f[y+1],c=f[y+2],f[y+0]=a[0]*s+a[3]*l+a[6]*c,f[y+1]=a[1]*s+a[4]*l+a[7]*c,f[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as A0,BufferGeometry as rf}from"three";import{mergeGeometries as yI}from"three/examples/jsm/utils/BufferGeometryUtils.js";function M0(){let n=new rf;return n.setAttribute("position",new A0(new Float32Array([]),3)),n.setIndex(new A0(new Uint16Array([]),1)),n}var gI=M0().attributes,xI=12,bI=1,wa=class extends rf{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,gI),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=Dc.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=vI(e,t,d),{shapes:f,charWidths:m,charCoords:y}=t.generateShapes(h,e),g=(typeof o=="number"?o:1)*.5,v=(typeof i=="number"?i:1)*.5,O=f.map(T=>new Fe().fromShape(T,!0));this.vectorShapes=O;let P=O.map(T=>Jt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ge.NONZERO:Ge.ODD,subdivisions:this.isLowResolution&&a>0?bI:xI}})),S=P.length?yI(P):M0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,I])=>{this.setAttribute(T,I)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Ht(new rf,wa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function vI(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
+ `,"\r"],!1,!1),C=0,ie=0,De=[{line:1,column:1}],Re=0,Ee=[],Pe=0,bt;if("startRule"in r){if(!(r.startRule in t))throw new Error(`Can't start parsing from rule "`+r.startRule+'".');o=t[r.startRule]}function Me(){return n.substring(ie,C)}function yt(){return Mn(ie,C)}function vt(b,w){throw w=w!==void 0?w:Mn(ie,C),hr([dd(b)],n.substring(ie,C),w)}function An(b,w){throw w=w!==void 0?w:Mn(ie,C),pd(b,w)}function rt(b,w){return{type:"literal",text:b,ignoreCase:w}}function Xe(b,w,L){return{type:"class",parts:b,inverted:w,ignoreCase:L}}function Ar(){return{type:"any"}}function ud(){return{type:"end"}}function dd(b){return{type:"other",description:b}}function vl(b){var w=De[b],L;if(w)return w;for(L=b-1;!De[L];)L--;for(w=De[L],w={line:w.line,column:w.column};L<b;)n.charCodeAt(L)===10?(w.line++,w.column=1):w.column++,L++;return De[b]=w,w}function Mn(b,w){var L=vl(b),M=vl(w);return{start:{offset:b,line:L.line,column:L.column},end:{offset:w,line:M.line,column:M.column}}}function lt(b){C<Re||(C>Re&&(Re=C,Ee=[]),Ee.push(b))}function pd(b,w){return new ai(b,null,null,w)}function hr(b,w,L){return new ai(ai.buildMessage(b,w),b,w,L)}function fs(){var b,w,L,M,z;for(b=C,w=[],L=Ve();L!==e;)w.push(L),L=Ve();if(w!==e)if(L=jt(),L===e&&(L=null),L!==e){for(M=[],z=Ve();z!==e;)M.push(z),z=Ve();M!==e?(ie=b,w=i(L),b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;return b}function jt(){var b,w,L,M,z,oe;if(b=C,w=In(),w!==e){for(L=[],M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();for(z!==e?(oe=In(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();z!==e?(oe=In(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function In(){var b,w,L,M,z,oe;if(b=C,w=ui(),w!==e){for(L=[],M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();for(z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;){for(L.push(M),M=C,z=[],oe=Ve();oe!==e;)z.push(oe),oe=Ve();z!==e?(oe=Sl(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e)}L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function Sl(){var b;return b=BS(),b===e&&(b=LS(),b===e&&(b=RS(),b===e&&(b=VS(),b===e&&(b=zS(),b===e&&(b=jS(),b===e&&(b=US(),b===e&&(b=HS(),b===e&&(b=qS())))))))),b}function ui(){var b,w,L,M,z,oe,fi;if(b=C,s.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(l)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=kt(),M!==e?(z=C,oe=Je(),oe===e&&(oe=null),oe!==e?(fi=xh(),fi!==e?(oe=[oe,fi],z=oe):(C=z,z=e)):(C=z,z=e),z===e&&(z=null),z!==e?(ie=b,w=c(w,M,z),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function BS(){var b,w;return b=C,u.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(p)),w!==e&&(ie=b,w=d()),b=w,b}function LS(){var b,w,L,M;if(b=C,h.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(f)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=xh(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function xh(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function RS(){var b,w,L,M;if(b=C,y.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(g)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=bh(),M!==e?(ie=b,w=v(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function bh(){var b,w,L,M,z,oe;if(b=C,w=di(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function VS(){var b,w,L,M;if(b=C,O.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(P)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=bh(),M!==e?(ie=b,w=S(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function zS(){var b,w,L,M;if(b=C,T.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(I)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=GS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function GS(){var b,w,L,M,z,oe;if(b=C,w=fd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=fd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function fd(){var b,w,L,M,z,oe;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(ie=b,w=x(w,M,oe),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function jS(){var b,w,L,M;if(b=C,_.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(D)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=FS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function FS(){var b,w,L,M,z,oe;if(b=C,w=hd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=hd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function hd(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=A(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function US(){var b,w,L,M;if(b=C,N.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(E)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=kS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function kS(){var b,w,L,M,z,oe;if(b=C,w=md(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=md(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function md(){var b,w,L,M;return b=C,w=kt(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=kt(),M!==e?(ie=b,w=B(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function HS(){var b,w,L,M;if(b=C,V.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(j)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=WS(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function WS(){var b,w,L,M,z,oe;if(b=C,w=kt(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=kt(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function qS(){var b,w,L,M;if(b=C,R.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(W)),w!==e){for(L=[],M=Ve();M!==e;)L.push(M),M=Ve();L!==e?(M=$S(),M!==e?(ie=b,w=m(w,M),b=w):(C=b,b=e)):(C=b,b=e)}else C=b,b=e;return b}function $S(){var b,w,L,M,z,oe;if(b=C,w=yd(),w!==e){for(L=[],M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);M!==e;)L.push(M),M=C,z=Je(),z===e&&(z=null),z!==e?(oe=yd(),oe!==e?(z=[z,oe],M=z):(C=M,M=e)):(C=M,M=e);L!==e?(ie=b,w=a(w,L),b=w):(C=b,b=e)}else C=b,b=e;return b}function yd(){var b,w,L,M,z,oe,fi,xd,Pl,bd,Ol,vd;return b=C,w=vh(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=vh(),M!==e?(z=Je(),z===e&&(z=null),z!==e?(oe=di(),oe!==e?(fi=Je(),fi!==e?(xd=Sh(),xd!==e?(Pl=Je(),Pl===e&&(Pl=null),Pl!==e?(bd=Sh(),bd!==e?(Ol=Je(),Ol===e&&(Ol=null),Ol!==e?(vd=kt(),vd!==e?(ie=b,w=F(w,M,oe,xd,bd,vd),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function kt(){var b,w,L,M;return b=C,w=di(),w!==e?(L=Je(),L===e&&(L=null),L!==e?(M=di(),M!==e?(ie=b,w=k(w,M),b=w):(C=b,b=e)):(C=b,b=e)):(C=b,b=e),b}function vh(){var b,w;return b=C,w=Ph(),w===e&&(w=Nn()),w!==e&&(ie=b,w=H(w)),b=w,b}function di(){var b,w,L,M;return b=C,w=C,L=gd(),L===e&&(L=null),L!==e?(M=Ph(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=gd(),L===e&&(L=null),L!==e?(M=Nn(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=$(w)),b=w,b}function Sh(){var b,w;return b=C,J.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(Z)),w!==e&&(ie=b,w=X(w)),b=w,b}function Je(){var b,w,L,M,z;if(b=C,w=[],L=Ve(),L!==e)for(;L!==e;)w.push(L),L=Ve();else w=e;if(w!==e)if(L=wh(),L===e&&(L=null),L!==e){for(M=[],z=Ve();z!==e;)M.push(z),z=Ve();M!==e?(w=[w,L,M],b=w):(C=b,b=e)}else C=b,b=e;else C=b,b=e;if(b===e){if(b=C,w=C,L=wh(),L!==e){for(M=[],z=Ve();z!==e;)M.push(z),z=Ve();M!==e?(L=[L,M],w=L):(C=w,w=e)}else C=w,w=e;w!==e&&(ie=b,w=te()),b=w}return b}function wh(){var b;return n.charCodeAt(C)===44?(b=Y,C++):(b=e,Pe===0&&lt(ee)),b}function Ph(){var b,w,L,M;return b=C,w=C,L=YS(),L!==e?(M=Oh(),M===e&&(M=null),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Nn(),L!==e?(M=Oh(),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=K(w)),b=w,b}function YS(){var b,w,L,M,z;return b=C,w=C,L=Nn(),L===e&&(L=null),L!==e?(n.charCodeAt(C)===46?(M=q,C++):(M=e,Pe===0&&lt(ue)),M!==e?(z=Nn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w===e&&(w=C,L=Nn(),L!==e?(n.charCodeAt(C)===46?(M=q,C++):(M=e,Pe===0&&lt(ue)),M!==e?(L=[L,M],w=L):(C=w,w=e)):(C=w,w=e)),w!==e&&(ie=b,w=K(w)),b=w,b}function Oh(){var b,w,L,M,z;return b=C,w=C,le.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&lt(ne)),L!==e?(M=gd(),M===e&&(M=null),M!==e?(z=Nn(),z!==e?(L=[L,M,z],w=L):(C=w,w=e)):(C=w,w=e)):(C=w,w=e),w!==e&&(ie=b,w=K(w)),b=w,b}function gd(){var b;return ce.test(n.charAt(C))?(b=n.charAt(C),C++):(b=e,Pe===0&&lt(ae)),b}function Nn(){var b,w,L;if(b=C,w=[],he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&lt(pe)),L!==e)for(;L!==e;)w.push(L),he.test(n.charAt(C))?(L=n.charAt(C),C++):(L=e,Pe===0&&lt(pe));else w=e;return w!==e&&(ie=b,w=fe(w)),b=w,b}function Ve(){var b,w;return b=C,ge.test(n.charAt(C))?(w=n.charAt(C),C++):(w=e,Pe===0&&lt(me)),w!==e&&(ie=b,w=te()),b=w,b}function XS(b,w){if(!w)return[b];for(var L=[b],M=0,z=w.length;M<z;M++)L[M+1]=w[M][1];return L}var wl={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var Ch in wl)wl[Ch.toUpperCase()]=wl[Ch];function pi(b,w){w||(w=[{}]);for(var L=w.length;L--;){var M={code:b,command:wl[b]};b==b.toLowerCase()&&(M.relative=!0);for(var z in w[L])M[z]=w[L][z];w[L]=M}return w}if(bt=o(),bt!==e&&C===n.length)return bt;throw bt!==e&&C<n.length&&lt(ud()),hr(Ee,Re<n.length?n.charAt(Re):null,Re<n.length?Mn(Re,Re+1):Mn(Re,Re))}wv.exports={SyntaxError:ai,parse:dD}});var rh=Dn((bie,Ov)=>{var $u=Pv().parse;$u.parseSVG=$u;$u.makeAbsolute=pD;Ov.exports=$u;function pD(n){var r,e={x:0,y:0},t={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return n.forEach(function(o){o.command==="moveto"&&(r=o),o.x0=e.x,o.y0=e.y;for(var i in t)i in o&&(o[i]+=o.relative?o[t[i]]:0);"x"in o||(o.x=e.x),"y"in o||(o.y=e.y),o.relative=!1,o.code=o.code.toUpperCase(),o.command=="closepath"&&(o.x=r.x,o.y=r.y),e=o}),n}});var NS=Dn((fpe,IS)=>{IS.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});import{FileLoader as RE,Loader as VE}from"three";function Tl(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Ht(n,r){return Object.setPrototypeOf(n,r),n}function Al(n){return Array.isArray(n)?n:[n]}function Ml(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var n1=typeof global=="object"&&global&&global.Object===Object&&global,Il=n1;var i1=typeof self=="object"&&self&&self.Object===Object&&self,a1=Il||i1||Function("return this")(),gt=a1;var s1=gt.Symbol,At=s1;var Th=Object.prototype,l1=Th.hasOwnProperty,c1=Th.toString,hs=At?At.toStringTag:void 0;function u1(n){var r=l1.call(n,hs),e=n[hs];try{n[hs]=void 0;var t=!0}catch{}var o=c1.call(n);return t&&(r?n[hs]=e:delete n[hs]),o}var Ah=u1;var d1=Object.prototype,p1=d1.toString;function f1(n){return p1.call(n)}var Mh=f1;var h1="[object Null]",m1="[object Undefined]",Ih=At?At.toStringTag:void 0;function y1(n){return n==null?n===void 0?m1:h1:Ih&&Ih in Object(n)?Ah(n):Mh(n)}var ar=y1;function g1(n){return n!=null&&typeof n=="object"}var Bt=g1;var x1="[object Symbol]";function b1(n){return typeof n=="symbol"||Bt(n)&&ar(n)==x1}var mi=b1;function v1(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Nl=v1;var S1=Array.isArray,ct=S1;var w1=1/0,Nh=At?At.prototype:void 0,Dh=Nh?Nh.toString:void 0;function Eh(n){if(typeof n=="string")return n;if(ct(n))return Nl(n,Eh)+"";if(mi(n))return Dh?Dh.call(n):"";var r=n+"";return r=="0"&&1/n==-w1?"-0":r}var _h=Eh;function P1(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var sr=P1;function O1(n){return n}var Bh=O1;var C1="[object AsyncFunction]",T1="[object Function]",A1="[object GeneratorFunction]",M1="[object Proxy]";function I1(n){if(!sr(n))return!1;var r=ar(n);return r==T1||r==A1||r==C1||r==M1}var Dl=I1;var N1=gt["__core-js_shared__"],El=N1;var Lh=function(){var n=/[^.]+$/.exec(El&&El.keys&&El.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function D1(n){return!!Lh&&Lh in n}var Rh=D1;var E1=Function.prototype,_1=E1.toString;function B1(n){if(n!=null){try{return _1.call(n)}catch{}try{return n+""}catch{}}return""}var yo=B1;var L1=/[\\^$.*+?()[\]{}|]/g,R1=/^\[object .+?Constructor\]$/,V1=Function.prototype,z1=Object.prototype,G1=V1.toString,j1=z1.hasOwnProperty,F1=RegExp("^"+G1.call(j1).replace(L1,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function U1(n){if(!sr(n)||Rh(n))return!1;var r=Dl(n)?F1:R1;return r.test(yo(n))}var Vh=U1;function k1(n,r){return n?.[r]}var zh=k1;function H1(n,r){var e=zh(n,r);return Vh(e)?e:void 0}var Qt=H1;var W1=Qt(gt,"WeakMap"),_l=W1;var Gh=Object.create,q1=function(){function n(){}return function(r){if(!sr(r))return{};if(Gh)return Gh(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),jh=q1;function $1(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Fh=$1;function Y1(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Uh=Y1;var X1=800,K1=16,Q1=Date.now;function Z1(n){var r=0,e=0;return function(){var t=Q1(),o=K1-(t-e);if(e=t,o>0){if(++r>=X1)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var kh=Z1;function J1(n){return function(){return n}}var Hh=J1;var ew=function(){try{var n=Qt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),yi=ew;var tw=yi?function(n,r){return yi(n,"toString",{configurable:!0,enumerable:!1,value:Hh(r),writable:!0})}:Bh,Wh=tw;var rw=kh(Wh),qh=rw;function ow(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var $h=ow;var nw=9007199254740991,iw=/^(?:0|[1-9]\d*)$/;function aw(n,r){var e=typeof n;return r=r??nw,!!r&&(e=="number"||e!="symbol"&&iw.test(n))&&n>-1&&n%1==0&&n<r}var gi=aw;function sw(n,r,e){r=="__proto__"&&yi?yi(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Bl=sw;function lw(n,r){return n===r||n!==n&&r!==r}var xi=lw;var cw=Object.prototype,uw=cw.hasOwnProperty;function dw(n,r,e){var t=n[r];(!(uw.call(n,r)&&xi(t,e))||e===void 0&&!(r in n))&&Bl(n,r,e)}var bi=dw;function pw(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],l=t?t(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Bl(e,s,l):bi(e,s,l)}return e}var Hr=pw;var Yh=Math.max;function fw(n,r,e){return r=Yh(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Yh(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Fh(n,this,s)}}var Xh=fw;var hw=9007199254740991;function mw(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=hw}var vi=mw;function yw(n){return n!=null&&vi(n.length)&&!Dl(n)}var Ll=yw;var gw=Object.prototype;function xw(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||gw;return n===e}var Si=xw;function bw(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Kh=bw;var vw="[object Arguments]";function Sw(n){return Bt(n)&&ar(n)==vw}var Sd=Sw;var Qh=Object.prototype,ww=Qh.hasOwnProperty,Pw=Qh.propertyIsEnumerable,Ow=Sd(function(){return arguments}())?Sd:function(n){return Bt(n)&&ww.call(n,"callee")&&!Pw.call(n,"callee")},wi=Ow;function Cw(){return!1}var Zh=Cw;var tm=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Jh=tm&&typeof module=="object"&&module&&!module.nodeType&&module,Tw=Jh&&Jh.exports===tm,em=Tw?gt.Buffer:void 0,Aw=em?em.isBuffer:void 0,Mw=Aw||Zh,_n=Mw;var Iw="[object Arguments]",Nw="[object Array]",Dw="[object Boolean]",Ew="[object Date]",_w="[object Error]",Bw="[object Function]",Lw="[object Map]",Rw="[object Number]",Vw="[object Object]",zw="[object RegExp]",Gw="[object Set]",jw="[object String]",Fw="[object WeakMap]",Uw="[object ArrayBuffer]",kw="[object DataView]",Hw="[object Float32Array]",Ww="[object Float64Array]",qw="[object Int8Array]",$w="[object Int16Array]",Yw="[object Int32Array]",Xw="[object Uint8Array]",Kw="[object Uint8ClampedArray]",Qw="[object Uint16Array]",Zw="[object Uint32Array]",et={};et[Hw]=et[Ww]=et[qw]=et[$w]=et[Yw]=et[Xw]=et[Kw]=et[Qw]=et[Zw]=!0;et[Iw]=et[Nw]=et[Uw]=et[Dw]=et[kw]=et[Ew]=et[_w]=et[Bw]=et[Lw]=et[Rw]=et[Vw]=et[zw]=et[Gw]=et[jw]=et[Fw]=!1;function Jw(n){return Bt(n)&&vi(n.length)&&!!et[ar(n)]}var rm=Jw;function e2(n){return function(r){return n(r)}}var Pi=e2;var om=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ms=om&&typeof module=="object"&&module&&!module.nodeType&&module,t2=ms&&ms.exports===om,wd=t2&&Il.process,r2=function(){try{var n=ms&&ms.require&&ms.require("util").types;return n||wd&&wd.binding&&wd.binding("util")}catch{}}(),go=r2;var nm=go&&go.isTypedArray,o2=nm?Pi(nm):rm,Rl=o2;var n2=Object.prototype,i2=n2.hasOwnProperty;function a2(n,r){var e=ct(n),t=!e&&wi(n),o=!e&&!t&&_n(n),i=!e&&!t&&!o&&Rl(n),a=e||t||o||i,s=a?Kh(n.length,String):[],l=s.length;for(var c in n)(r||i2.call(n,c))&&!(a&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||gi(c,l)))&&s.push(c);return s}var Vl=a2;function s2(n,r){return function(e){return n(r(e))}}var zl=s2;var l2=zl(Object.keys,Object),im=l2;var c2=Object.prototype,u2=c2.hasOwnProperty;function d2(n){if(!Si(n))return im(n);var r=[];for(var e in Object(n))u2.call(n,e)&&e!="constructor"&&r.push(e);return r}var am=d2;function p2(n){return Ll(n)?Vl(n):am(n)}var Oi=p2;function f2(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var sm=f2;var h2=Object.prototype,m2=h2.hasOwnProperty;function y2(n){if(!sr(n))return sm(n);var r=Si(n),e=[];for(var t in n)t=="constructor"&&(r||!m2.call(n,t))||e.push(t);return e}var lm=y2;function g2(n){return Ll(n)?Vl(n,!0):lm(n)}var Ci=g2;var x2=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,b2=/^\w*$/;function v2(n,r){if(ct(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||mi(n)?!0:b2.test(n)||!x2.test(n)||r!=null&&n in Object(r)}var cm=v2;var S2=Qt(Object,"create"),xo=S2;function w2(){this.__data__=xo?xo(null):{},this.size=0}var um=w2;function P2(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var dm=P2;var O2="__lodash_hash_undefined__",C2=Object.prototype,T2=C2.hasOwnProperty;function A2(n){var r=this.__data__;if(xo){var e=r[n];return e===O2?void 0:e}return T2.call(r,n)?r[n]:void 0}var pm=A2;var M2=Object.prototype,I2=M2.hasOwnProperty;function N2(n){var r=this.__data__;return xo?r[n]!==void 0:I2.call(r,n)}var fm=N2;var D2="__lodash_hash_undefined__";function E2(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xo&&r===void 0?D2:r,this}var hm=E2;function Ti(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ti.prototype.clear=um;Ti.prototype.delete=dm;Ti.prototype.get=pm;Ti.prototype.has=fm;Ti.prototype.set=hm;var Pd=Ti;function _2(){this.__data__=[],this.size=0}var mm=_2;function B2(n,r){for(var e=n.length;e--;)if(xi(n[e][0],r))return e;return-1}var Ho=B2;var L2=Array.prototype,R2=L2.splice;function V2(n){var r=this.__data__,e=Ho(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():R2.call(r,e,1),--this.size,!0}var ym=V2;function z2(n){var r=this.__data__,e=Ho(r,n);return e<0?void 0:r[e][1]}var gm=z2;function G2(n){return Ho(this.__data__,n)>-1}var xm=G2;function j2(n,r){var e=this.__data__,t=Ho(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var bm=j2;function Ai(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Ai.prototype.clear=mm;Ai.prototype.delete=ym;Ai.prototype.get=gm;Ai.prototype.has=xm;Ai.prototype.set=bm;var Wo=Ai;var F2=Qt(gt,"Map"),qo=F2;function U2(){this.size=0,this.__data__={hash:new Pd,map:new(qo||Wo),string:new Pd}}var vm=U2;function k2(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Sm=k2;function H2(n,r){var e=n.__data__;return Sm(r)?e[typeof r=="string"?"string":"hash"]:e.map}var $o=H2;function W2(n){var r=$o(this,n).delete(n);return this.size-=r?1:0,r}var wm=W2;function q2(n){return $o(this,n).get(n)}var Pm=q2;function $2(n){return $o(this,n).has(n)}var Om=$2;function Y2(n,r){var e=$o(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Cm=Y2;function Mi(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Mi.prototype.clear=vm;Mi.prototype.delete=wm;Mi.prototype.get=Pm;Mi.prototype.has=Om;Mi.prototype.set=Cm;var Bn=Mi;var X2="Expected a function";function Od(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(X2);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(Od.Cache||Bn),e}Od.Cache=Bn;var Tm=Od;var K2=500;function Q2(n){var r=Tm(n,function(t){return e.size===K2&&e.clear(),t}),e=r.cache;return r}var Am=Q2;var Z2=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,J2=/\\(\\)?/g,eP=Am(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Z2,function(e,t,o,i){r.push(o?i.replace(J2,"$1"):t||e)}),r}),Mm=eP;function tP(n){return n==null?"":_h(n)}var Im=tP;function rP(n,r){return ct(n)?n:cm(n,r)?[n]:Mm(Im(n))}var mr=rP;var oP=1/0;function nP(n){if(typeof n=="string"||mi(n))return n;var r=n+"";return r=="0"&&1/n==-oP?"-0":r}var Yo=nP;function iP(n,r){r=mr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Yo(r[e++])];return e&&e==t?n:void 0}var Gl=iP;function aP(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Ii=aP;var Nm=At?At.isConcatSpreadable:void 0;function sP(n){return ct(n)||wi(n)||!!(Nm&&n&&n[Nm])}var Dm=sP;function Em(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=Dm),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?Em(s,r-1,e,t,o):Ii(o,s):t||(o[o.length]=s)}return o}var _m=Em;function lP(n){var r=n==null?0:n.length;return r?_m(n,1):[]}var Bm=lP;function cP(n){return qh(Xh(n,void 0,Bm),n+"")}var jl=cP;var uP=zl(Object.getPrototypeOf,Object),Ni=uP;var dP="[object Object]",pP=Function.prototype,fP=Object.prototype,Lm=pP.toString,hP=fP.hasOwnProperty,mP=Lm.call(Object);function yP(n){if(!Bt(n)||ar(n)!=dP)return!1;var r=Ni(n);if(r===null)return!0;var e=hP.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Lm.call(e)==mP}var Rm=yP;function gP(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Vm=gP;function xP(){this.__data__=new Wo,this.size=0}var zm=xP;function bP(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Gm=bP;function vP(n){return this.__data__.get(n)}var jm=vP;function SP(n){return this.__data__.has(n)}var Fm=SP;var wP=200;function PP(n,r){var e=this.__data__;if(e instanceof Wo){var t=e.__data__;if(!qo||t.length<wP-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Bn(t)}return e.set(n,r),this.size=e.size,this}var Um=PP;function Di(n){var r=this.__data__=new Wo(n);this.size=r.size}Di.prototype.clear=zm;Di.prototype.delete=Gm;Di.prototype.get=jm;Di.prototype.has=Fm;Di.prototype.set=Um;var Ei=Di;function OP(n,r){return n&&Hr(r,Oi(r),n)}var km=OP;function CP(n,r){return n&&Hr(r,Ci(r),n)}var Hm=CP;var Ym=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wm=Ym&&typeof module=="object"&&module&&!module.nodeType&&module,TP=Wm&&Wm.exports===Ym,qm=TP?gt.Buffer:void 0,$m=qm?qm.allocUnsafe:void 0;function AP(n,r){if(r)return n.slice();var e=n.length,t=$m?$m(e):new n.constructor(e);return n.copy(t),t}var Xm=AP;function MP(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var Km=MP;function IP(){return[]}var Fl=IP;var NP=Object.prototype,DP=NP.propertyIsEnumerable,Qm=Object.getOwnPropertySymbols,EP=Qm?function(n){return n==null?[]:(n=Object(n),Km(Qm(n),function(r){return DP.call(n,r)}))}:Fl,_i=EP;function _P(n,r){return Hr(n,_i(n),r)}var Zm=_P;var BP=Object.getOwnPropertySymbols,LP=BP?function(n){for(var r=[];n;)Ii(r,_i(n)),n=Ni(n);return r}:Fl,Ul=LP;function RP(n,r){return Hr(n,Ul(n),r)}var Jm=RP;function VP(n,r,e){var t=r(n);return ct(n)?t:Ii(t,e(n))}var kl=VP;function zP(n){return kl(n,Oi,_i)}var ys=zP;function GP(n){return kl(n,Ci,Ul)}var Hl=GP;var jP=Qt(gt,"DataView"),Wl=jP;var FP=Qt(gt,"Promise"),ql=FP;var UP=Qt(gt,"Set"),$l=UP;var ey="[object Map]",kP="[object Object]",ty="[object Promise]",ry="[object Set]",oy="[object WeakMap]",ny="[object DataView]",HP=yo(Wl),WP=yo(qo),qP=yo(ql),$P=yo($l),YP=yo(_l),Ln=ar;(Wl&&Ln(new Wl(new ArrayBuffer(1)))!=ny||qo&&Ln(new qo)!=ey||ql&&Ln(ql.resolve())!=ty||$l&&Ln(new $l)!=ry||_l&&Ln(new _l)!=oy)&&(Ln=function(n){var r=ar(n),e=r==kP?n.constructor:void 0,t=e?yo(e):"";if(t)switch(t){case HP:return ny;case WP:return ey;case qP:return ty;case $P:return ry;case YP:return oy}return r});var bo=Ln;var XP=Object.prototype,KP=XP.hasOwnProperty;function QP(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&KP.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var iy=QP;var ZP=gt.Uint8Array,Bi=ZP;function JP(n){var r=new n.constructor(n.byteLength);return new Bi(r).set(new Bi(n)),r}var Li=JP;function eO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ay=eO;var tO=/\w*$/;function rO(n){var r=new n.constructor(n.source,tO.exec(n));return r.lastIndex=n.lastIndex,r}var sy=rO;var ly=At?At.prototype:void 0,cy=ly?ly.valueOf:void 0;function oO(n){return cy?Object(cy.call(n)):{}}var uy=oO;function nO(n,r){var e=r?Li(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var dy=nO;var iO="[object Boolean]",aO="[object Date]",sO="[object Map]",lO="[object Number]",cO="[object RegExp]",uO="[object Set]",dO="[object String]",pO="[object Symbol]",fO="[object ArrayBuffer]",hO="[object DataView]",mO="[object Float32Array]",yO="[object Float64Array]",gO="[object Int8Array]",xO="[object Int16Array]",bO="[object Int32Array]",vO="[object Uint8Array]",SO="[object Uint8ClampedArray]",wO="[object Uint16Array]",PO="[object Uint32Array]";function OO(n,r,e){var t=n.constructor;switch(r){case fO:return Li(n);case iO:case aO:return new t(+n);case hO:return ay(n,e);case mO:case yO:case gO:case xO:case bO:case vO:case SO:case wO:case PO:return dy(n,e);case sO:return new t;case lO:case dO:return new t(n);case cO:return sy(n);case uO:return new t;case pO:return uy(n)}}var py=OO;function CO(n){return typeof n.constructor=="function"&&!Si(n)?jh(Ni(n)):{}}var fy=CO;var TO="[object Map]";function AO(n){return Bt(n)&&bo(n)==TO}var hy=AO;var my=go&&go.isMap,MO=my?Pi(my):hy,yy=MO;var IO="[object Set]";function NO(n){return Bt(n)&&bo(n)==IO}var gy=NO;var xy=go&&go.isSet,DO=xy?Pi(xy):gy,by=DO;var EO=1,_O=2,BO=4,vy="[object Arguments]",LO="[object Array]",RO="[object Boolean]",VO="[object Date]",zO="[object Error]",Sy="[object Function]",GO="[object GeneratorFunction]",jO="[object Map]",FO="[object Number]",wy="[object Object]",UO="[object RegExp]",kO="[object Set]",HO="[object String]",WO="[object Symbol]",qO="[object WeakMap]",$O="[object ArrayBuffer]",YO="[object DataView]",XO="[object Float32Array]",KO="[object Float64Array]",QO="[object Int8Array]",ZO="[object Int16Array]",JO="[object Int32Array]",eC="[object Uint8Array]",tC="[object Uint8ClampedArray]",rC="[object Uint16Array]",oC="[object Uint32Array]",Ze={};Ze[vy]=Ze[LO]=Ze[$O]=Ze[YO]=Ze[RO]=Ze[VO]=Ze[XO]=Ze[KO]=Ze[QO]=Ze[ZO]=Ze[JO]=Ze[jO]=Ze[FO]=Ze[wy]=Ze[UO]=Ze[kO]=Ze[HO]=Ze[WO]=Ze[eC]=Ze[tC]=Ze[rC]=Ze[oC]=!0;Ze[zO]=Ze[Sy]=Ze[qO]=!1;function Yl(n,r,e,t,o,i){var a,s=r&EO,l=r&_O,c=r&BO;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!sr(n))return n;var u=ct(n);if(u){if(a=iy(n),!s)return Uh(n,a)}else{var p=bo(n),d=p==Sy||p==GO;if(_n(n))return Xm(n,s);if(p==wy||p==vy||d&&!o){if(a=l||d?{}:fy(n),!s)return l?Jm(n,Hm(a,n)):Zm(n,km(a,n))}else{if(!Ze[p])return o?n:{};a=py(n,p,s)}}i||(i=new Ei);var h=i.get(n);if(h)return h;i.set(n,a),by(n)?n.forEach(function(y){a.add(Yl(y,r,e,y,n,i))}):yy(n)&&n.forEach(function(y,g){a.set(g,Yl(y,r,e,g,n,i))});var f=c?l?Hl:ys:l?Ci:Oi,m=u?void 0:f(n);return $h(m||n,function(y,g){m&&(g=y,y=n[g]),bi(a,g,Yl(y,r,e,g,n,i))}),a}var Xl=Yl;var nC=1,iC=4;function aC(n){return Xl(n,nC|iC)}var vo=aC;var sC="__lodash_hash_undefined__";function lC(n){return this.__data__.set(n,sC),this}var Py=lC;function cC(n){return this.__data__.has(n)}var Oy=cC;function Kl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}Kl.prototype.add=Kl.prototype.push=Py;Kl.prototype.has=Oy;var Cy=Kl;function uC(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var Ty=uC;function dC(n,r){return n.has(r)}var Ay=dC;var pC=1,fC=2;function hC(n,r,e,t,o,i){var a=e&pC,s=n.length,l=r.length;if(s!=l&&!(a&&l>s))return!1;var c=i.get(n),u=i.get(r);if(c&&u)return c==r&&u==n;var p=-1,d=!0,h=e&fC?new Cy:void 0;for(i.set(n,r),i.set(r,n);++p<s;){var f=n[p],m=r[p];if(t)var y=a?t(m,f,p,r,n,i):t(f,m,p,n,r,i);if(y!==void 0){if(y)continue;d=!1;break}if(h){if(!Ty(r,function(g,v){if(!Ay(h,v)&&(f===g||o(f,g,e,t,i)))return h.push(v)})){d=!1;break}}else if(!(f===m||o(f,m,e,t,i))){d=!1;break}}return i.delete(n),i.delete(r),d}var Ql=hC;function mC(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var My=mC;function yC(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Iy=yC;var gC=1,xC=2,bC="[object Boolean]",vC="[object Date]",SC="[object Error]",wC="[object Map]",PC="[object Number]",OC="[object RegExp]",CC="[object Set]",TC="[object String]",AC="[object Symbol]",MC="[object ArrayBuffer]",IC="[object DataView]",Ny=At?At.prototype:void 0,Cd=Ny?Ny.valueOf:void 0;function NC(n,r,e,t,o,i,a){switch(e){case IC:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case MC:return!(n.byteLength!=r.byteLength||!i(new Bi(n),new Bi(r)));case bC:case vC:case PC:return xi(+n,+r);case SC:return n.name==r.name&&n.message==r.message;case OC:case TC:return n==r+"";case wC:var s=My;case CC:var l=t&gC;if(s||(s=Iy),n.size!=r.size&&!l)return!1;var c=a.get(n);if(c)return c==r;t|=xC,a.set(n,r);var u=Ql(s(n),s(r),t,o,i,a);return a.delete(n),u;case AC:if(Cd)return Cd.call(n)==Cd.call(r)}return!1}var Dy=NC;var DC=1,EC=Object.prototype,_C=EC.hasOwnProperty;function BC(n,r,e,t,o,i){var a=e&DC,s=ys(n),l=s.length,c=ys(r),u=c.length;if(l!=u&&!a)return!1;for(var p=l;p--;){var d=s[p];if(!(a?d in r:_C.call(r,d)))return!1}var h=i.get(n),f=i.get(r);if(h&&f)return h==r&&f==n;var m=!0;i.set(n,r),i.set(r,n);for(var y=a;++p<l;){d=s[p];var g=n[d],v=r[d];if(t)var O=a?t(v,g,d,r,n,i):t(g,v,d,n,r,i);if(!(O===void 0?g===v||o(g,v,e,t,i):O)){m=!1;break}y||(y=d=="constructor")}if(m&&!y){var P=n.constructor,S=r.constructor;P!=S&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof S=="function"&&S instanceof S)&&(m=!1)}return i.delete(n),i.delete(r),m}var Ey=BC;var LC=1,_y="[object Arguments]",By="[object Array]",Zl="[object Object]",RC=Object.prototype,Ly=RC.hasOwnProperty;function VC(n,r,e,t,o,i){var a=ct(n),s=ct(r),l=a?By:bo(n),c=s?By:bo(r);l=l==_y?Zl:l,c=c==_y?Zl:c;var u=l==Zl,p=c==Zl,d=l==c;if(d&&_n(n)){if(!_n(r))return!1;a=!0,u=!1}if(d&&!u)return i||(i=new Ei),a||Rl(n)?Ql(n,r,e,t,o,i):Dy(n,r,l,e,t,o,i);if(!(e&LC)){var h=u&&Ly.call(n,"__wrapped__"),f=p&&Ly.call(r,"__wrapped__");if(h||f){var m=h?n.value():n,y=f?r.value():r;return i||(i=new Ei),o(m,y,e,t,i)}}return d?(i||(i=new Ei),Ey(n,r,e,t,o,i)):!1}var Ry=VC;function Vy(n,r,e,t,o){return n===r?!0:n==null||r==null||!Bt(n)&&!Bt(r)?n!==n&&r!==r:Ry(n,r,e,t,Vy,o)}var zy=Vy;function zC(n,r){return n!=null&&r in Object(n)}var Gy=zC;function GC(n,r,e){r=mr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Yo(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&vi(o)&&gi(a,o)&&(ct(n)||wi(n)))}var jy=GC;function jC(n,r){return n!=null&&jy(n,r,Gy)}var Fy=jC;function FC(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Uy=FC;function UC(n,r){return r.length<2?n:Gl(n,Vm(r,0,-1))}var ky=UC;function kC(n,r){return zy(n,r)}var Td=kC;function HC(n,r){return r=mr(r,n),n=ky(n,r),n==null||delete n[Yo(Uy(r))]}var Hy=HC;function WC(n){return Rm(n)?void 0:n}var Wy=WC;var qC=1,$C=2,YC=4,XC=jl(function(n,r){var e={};if(n==null)return e;var t=!1;r=Nl(r,function(i){return i=mr(i,n),t||(t=i.length>1),i}),Hr(n,Hl(n),e),t&&(e=Xl(e,qC|$C|YC,Wy));for(var o=r.length;o--;)Hy(e,r[o]);return e}),Ri=XC;function KC(n,r,e,t){if(!sr(n))return n;r=mr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var l=Yo(r[o]),c=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var u=s[l];c=t?t(u,l,s):void 0,c===void 0&&(c=sr(u)?u:gi(r[o+1])?[]:{})}bi(s,l,c),s=s[l]}return n}var qy=KC;function QC(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=Gl(n,a);e(s,a)&&qy(i,mr(a,n),s)}return i}var $y=QC;function ZC(n,r){return $y(n,r,function(e,t){return Fy(n,t)})}var Yy=ZC;var JC=jl(function(n,r){return n==null?{}:Yy(n,r)}),Mr=JC;var xe=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,xe.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,xe.prototype),{data:s,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,xe.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function gs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&gs(t)}return Object.freeze(n)}function Xy(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Vi=class extends Error{};function Jl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Wr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function zi(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Ky(){return typeof process<"u"}function Qy(n,r){for(let e of n)r(e.id,e.data)!==!0&&Qy(e.children,r)}function Zy(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Zy(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Zy(o,t)}}traverse(e){Qy(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:s}}Object.setPrototypeOf(i,Ke.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:a,children:s};return c=[...c,u],c.sort((d,h)=>d.fi-h.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(c=>c.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let h=t;for(;h!==null;){if(h===void 0)throw new Error;if(h===i)throw new Vi("cyclic tree");h=this.parent(h)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),c=l.findIndex(h=>h.id===i);l=[...l];let u=l.splice(c,1)[0],p=this.modifyArrayBy(a,l);a=t,l=p.childrenArray(a);let d=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((h,f)=>h.fi-f.fi),e.localIndex=l.indexOf(u),p=p.modifyArrayBy(a,l),{data:p,actual:e,reverse:{type:9,parent:s,fi:d,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Xy(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return Wr(0,o,o);{let a=i[0].fi;return Wr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return Wr(l,l+o,o)}else return Wr(a.fi,s.fi,o)}}};var Gi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=a[c],a[c]=o[l],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let c=o[l];c===void 0?delete a[l]:a[l]=c,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Gi||(Gi={}));var ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)gs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(c=>c.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ve.prototype);let t=e;return Ky()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:t,id:o,data:i}=e,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((c,u)=>c.fi-u.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(u=>u.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:t};return i[a]=l,i.sort((u,p)=>u.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return Wr(0,t,t);{let i=o[0].fi;return Wr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Wr(s,s+t,t)}else return Wr(i.fi,a.fi,t)}}};function ji(n){return n&&typeof n=="object"&&n instanceof Qe}var Qe=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!ji(t))return null;o+=1}t=t?Jl(t):new Qe;for(let[l,c]of Object.entries(r.props)){let u=t[l];i[l]=u,c===void 0?delete t[l]:t[l]=c}for(;o>0;){if(Object.keys(t).length===0){let l=e[o-1];l&&(t=Jl(l),delete t[r.path[o-1]])}else{let l=e[o-1];if(l){let c=Jl(l);c[r.path[o-1]]=t,t=c}else{let c=new Qe;c[r.path[o-1]]=t,t=c}}o-=1}let a=Object.setPrototypeOf(t,Qe.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},qr;(t=>{function n(o,i){return xs(o,i)??o}t.apply=n;function r(o,i){return Md(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=ot.zoomOnce(l,s[a]),l===void 0)return i;if(!ji(l))return;a+=1}if(l===void 0)return i;if(!!ji(l))if(i.type===0){let c={...i.props};for(let u of Object.keys(l))delete c[u];return{...i,props:c}}else if(i.type===1||i.type===4||i.type===7){let c=Ad([i],l);return c?(console.log(c),c):i}else return i}t.filterOp=e})(qr||(qr={}));function Ad(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Ad(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function eT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=xs(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function xs(n,r){if(!ji(r))return r;if(n instanceof Ke){let e=Ad(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ve)return eT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=xs(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Qe)return Md(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=xs(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Md(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ji(r))return r;if(!ji(n))return qr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Qe;for(let o of e){let i=Md(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Jy(n,r){let e={cur:[],result:[],len:0};return n=bs(n,r,e)??n,[n,e.result]}function ec(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function tc(n){n&&(n.len-=1)}function tT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function eg(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));tc(e),t=t||l!==void 0,l===void 0&&(l=i.data);let c=eg(i.children,r,e);return c!==void 0?t=!0:c=i.children,{...i,id:a,data:l,children:c}});if(t)return o}function rT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let l=bs(i.data,r,ec(e,a));return tc(e),t=t||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function bs(n,r,e){if(n instanceof Ke){let t=eg(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ve)return rT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=bs(i,r,ec(e,a));return tc(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!zi(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=bs(a,r,ec(e,i));tc(e),o=o||l!==void 0,l===void 0&&(l=a),t[i]=l}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&tT(e),t}else return}}var Fi;(r=>{function n(e,t){let o=ot.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(Fi||(Fi={}));var nt;(s=>{function n(l,c){return{...l,path:l.path.slice(c)}}s.drop=n;function r(l,c){return e(l,c)?.data??l}s.applySimple=r;function e(l,c){let u=c.path;for(var p=[];;){let d;if(l instanceof Qe&&c.type===0&&(d=l.runOp({...c,path:u.slice(p.length)}),d===null&&(d=void 0)),d===void 0&&p.length===u.length&&(l instanceof Ke||l instanceof ve||l instanceof xe?d=l.runOp(c):d=Gi.runOp(l,c)),d!==void 0)if(d!==null){let m=d.data;for(let y=p.length-1;y>=0;y--){let g=u[y],v=p[y];if(v instanceof Ke){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof ve){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof xe){if(typeof g=="number")throw new Error("illegal arg");m=v.modifyById(g,m)}else if(v instanceof Qe){let O={...v,[g]:m};m=Object.setPrototypeOf(O,Qe.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let O=m;m=[...v],m[g]=O}else m={...v,[g]:m};else return null}return{data:m,actual:{...d.actual,path:u},reverse:{...d.reverse,path:u}}}else return null;let h=u[p.length],f;if(l instanceof Ke){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else if(l instanceof ve){if(typeof h=="number")throw new Error("");f=l.get(h)?.data}else l!==null&&(f=l[h]);if(f!==void 0)p.push(l),l=f;else return null}}s.apply=e;function t(l,c){for(let u=0;u<l.length&&u<c.length;u++)if(l[u]!==c[u])return!0;return!1}s.pathDisjoint=t;function o(l,c){if(l.length!==c.length)return!1;for(let u=0;u<l.length;u++)if(l[u]!==c[u])return!1;return!0}s.pathEq=o;function i(l,c){return t(l.path,c.path)}s.commutative=i;function a(l,c){return l.type===0&&c.type===0&&o(l.path,c.path)?Object.keys(l.props).every(u=>c.props[u]!==void 0):!1}s.subsumed=a})(nt||(nt={}));var vs;(l=>{function n(){return[]}l.empty=n;function r(c,u){let p=[];for(let d of c){let[h,...f]=d.path;h===u&&p.push({...d,path:f})}return p}l.removePrefix=r;function e(c,u){return c.map(p=>({...p,path:[u,...p.path]}))}l.addPrefix=e;function t(c,u){return[...c,...u]}l.concat=t;function o(c,u){return[...c.filter(d=>!u.some(h=>nt.subsumed(d,h))),...u]}l.compress=o;function i(c,u){return c.every(p=>u.every(d=>nt.commutative(p,d)))}l.commutative=i;function a(c,u){for(let p of u){let d=s(c,p);d!==null&&(c=d.data)}return c}l.applyAll=a;function s(c,u){var p=c;let d=[],h=[];for(let f of u)try{if(f.type===3||f.type===5&&f.path[f.path.length-1]==="variables"){let m,y,g;if(f.type===3?(m=ot.zoom(p,[...f.path,f.id]),g=nt.apply(p,{...f,type:2})):(m=ot.zoom(p,[...f.path,f.id,"value"]),g=nt.apply(p,f)),g!==null){p=g.data;let[v,O]=Jy(p,{[f.id]:m});p=v;for(let P=0;P<O.length;P++){let S=O[P],T=S.pop();if(typeof T=="number"){let I=[T];for(let _=P+1;_<O.length;_++){let D=O[_],A=D[D.length-1];if(typeof A=="number"&&ot.equal(S,D.slice(0,D.length-1)))I.push(A),O.splice(_,1);else break}let x=ot.zoom(p,S);y=x.map((_,D)=>I.includes(D)?f.id:_),m=x,T=S.pop()}else{if(T==="alphaOverride"||T==="alpha"){m/=100;let I=m,x=ot.zoom(p,S.slice(0,S.length-2)),_=x.layers.map(D=>D.id===S[S.length-1]?{...D,data:{...D.data,[T]:I}}:D);Object.setPrototypeOf(_,Object.getPrototypeOf(x.layers)),x.layers=_}y=f.id}d.push({type:0,path:S,props:{[T]:m}}),h.push({type:0,path:S,props:{[T]:y}})}h.push(g.reverse),d.push(g.actual)}}else{let m=nt.apply(p,f);m!==null&&(d.push(m.actual),p=m.data,h.push(m.reverse))}}catch(m){if(m instanceof Vi)return null;throw m}return{data:p,actual:d,reverse:h.reverse()}}l.apply=s})(vs||(vs={}));var tg=Symbol(),oT=Symbol(),oc=Symbol(),Rn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof rc);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[oc];t&&t(),delete this._children[r]}}}},Nd=class extends Rn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Gi.runOp(this._current,r),r.path)}},Dd=class extends Rn{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,xe.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},rg={get(n,r){if(r===oc)return()=>{n._parent=null};if(r===tg)return n._current;if(r===oT)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],a=nc(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},nT={...rg,set(n,r,e){let t={type:0,props:{[r]:ut(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},iT={...rg,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Ui=class extends Rn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},ki=class extends Rn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[oc]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,a=nc(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Id(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ot.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var rc=class extends Rn{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Id(this.ts,e,r),Id(this.actual,t,r),Id(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function nc(n,r,e){return e instanceof Ke?new Ui(n,r,e):e instanceof ve?new ki(n,r,e):e instanceof xe?new Proxy(new Dd(n,r,e),iT):e!==null&&typeof e=="object"?zi(e)?e:new Proxy(new Nd(n,r,e),nT):e}function Ed(n){let r=new rc(n);return[nc(r,"",n),r]}function Xo(n,r){let[e,t]=Ed(n);return r(e),t.result()}function ut(n){return n instanceof Ui||n instanceof ki?n._current:n!==null&&typeof n=="object"?n[tg]:n}var ot;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let l=t(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...a};return Object.keys(l).forEach(u=>{delete c[u]}),c}else return a}o.removeOverridden=r;function e(i,a){if((i instanceof Ke||i instanceof Ui)&&typeof a=="string")return i.data(a);if((i instanceof ve||i instanceof ki)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(ot||(ot={}));function og(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Be(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var ic=class{},Ss=class extends ic{constructor(e){super();this.id=e}},ws=class extends ic{constructor(e){super();this.data=e}};var Bd;try{Bd=new TextDecoder}catch{}var de,Qo,G=0;var dg=[],Ld=dg,Rd=0,Zt={},ke,Ko,yr=0,$r=0,lr,So,Wt=[],We,ng={useRecords:!1,mapsAsObjects:!0},Ps=class{},zd=new Ps;zd.name="MessagePack 0xC1";var Hi=!1,Yr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(de)return yg(()=>(sc(),this?this.unpack(r,e):Yr.prototype.unpack.call(ng,r,e)));Qo=e>-1?e:r.length,G=0,Rd=0,$r=0,Ko=null,Ld=dg,lr=null,de=r;try{We=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw de=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof Yr){if(Zt=this,this.structures)return ke=this.structures,ac();(!ke||ke.length>0)&&(ke=[])}else Zt=ng,(!ke||ke.length>0)&&(ke=[]);return ac()}unpackMultiple(r,e){let t,o=0;try{Hi=!0;let i=r.length,a=this?this.unpack(r,i):uc.unpack(r,i);if(e){for(e(a);G<i;)if(o=G,e(ac())===!1)return}else{for(t=[a];G<i;)o=G,t.push(ac());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Hi=!1,sc()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function ac(){try{if(!Zt.trusted&&!Hi){let r=ke.sharedLength||0;r<ke.length&&(ke.length=r)}let n=dt();if(G==Qo)ke.restoreStructures&&ig(),ke=null,de=null,So&&(So=null);else if(G>Qo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Hi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ke.restoreStructures&&ig(),sc(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function ig(){for(let n in ke.restoreStructures)ke[n]=ke.restoreStructures[n];ke.restoreStructures=null}function dt(){let n=de[G++];if(n<160)if(n<128){if(n<64)return n;{let r=ke[n&63]||Zt.getStructures&&pg()[n&63];return r?(r.read||(r.read=Gd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Zt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[hg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}else if(n<192){let r=n-160;if($r>=G)return Ko.slice(G-yr,(G+=r)-yr);if($r==0&&Qo<140){let e=r<16?jd(r):fg(r);if(e!=null)return e}return Vd(r)}else{let r;switch(n){case 192:return null;case 193:return lr?(r=dt(),r>0?lr[1].slice(lr.position1,lr.position1+=r):lr[0].slice(lr.position0,lr.position0-=r)):zd;case 194:return!1;case 195:return!0;case 196:return _d(de[G++]);case 197:return r=We.getUint16(G),G+=2,_d(r);case 198:return r=We.getUint32(G),G+=4,_d(r);case 199:return Vn(de[G++]);case 200:return r=We.getUint16(G),G+=2,Vn(r);case 201:return r=We.getUint32(G),G+=4,Vn(r);case 202:if(r=We.getFloat32(G),Zt.useFloat32>2){let e=cc[(de[G]&127)<<1|de[G+1]>>7];return G+=4,(e*r+(r>0?.5:-.5)>>0)/e}return G+=4,r;case 203:return r=We.getFloat64(G),G+=8,r;case 204:return de[G++];case 205:return r=We.getUint16(G),G+=2,r;case 206:return r=We.getUint32(G),G+=4,r;case 207:return Zt.int64AsNumber?(r=We.getUint32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigUint64(G),G+=8,r;case 208:return We.getInt8(G++);case 209:return r=We.getInt16(G),G+=2,r;case 210:return r=We.getInt32(G),G+=4,r;case 211:return Zt.int64AsNumber?(r=We.getInt32(G)*4294967296,r+=We.getUint32(G+4)):r=We.getBigInt64(G),G+=8,r;case 212:if(r=de[G++],r==114)return ug(de[G++]&63);{let e=Wt[r];if(e)return e.read?(G++,e.read(dt())):e.noBuffer?(G++,e()):e(de.subarray(G,++G));throw new Error("Unknown extension "+r)}case 213:return r=de[G],r==114?(G++,ug(de[G++]&63,de[G++])):Vn(2);case 214:return Vn(4);case 215:return Vn(8);case 216:return Vn(16);case 217:return r=de[G++],$r>=G?Ko.slice(G-yr,(G+=r)-yr):sT(r);case 218:return r=We.getUint16(G),G+=2,$r>=G?Ko.slice(G-yr,(G+=r)-yr):lT(r);case 219:return r=We.getUint32(G),G+=4,$r>=G?Ko.slice(G-yr,(G+=r)-yr):cT(r);case 220:return r=We.getUint16(G),G+=2,sg(r);case 221:return r=We.getUint32(G),G+=4,sg(r);case 222:return r=We.getUint16(G),G+=2,lg(r);case 223:return r=We.getUint32(G),G+=4,lg(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var aT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Gd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>aT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(dt);return n.highByte===0&&(n.read=ag(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=dt()}return t}return e.count=0,n.highByte===0?ag(r,e):e}var ag=(n,r)=>function(){let e=de[G++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=ke[t]||pg()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Gd(o,n)),o.read()};function pg(){let n=yg(()=>(de=null,Zt.getStructures()));return ke=Zt._mergeStructures(n,ke)}var Vd=lc,sT=lc,lT=lc,cT=lc;function lc(n){let r;if(n<16&&(r=jd(n)))return r;if(n>64&&Bd)return Bd.decode(de.subarray(G,G+=n));let e=G+n,t=[];for(r="";G<e;){let o=de[G++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=de[G++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=de[G++]&63,a=de[G++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=de[G++]&63,a=de[G++]&63,s=de[G++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=Mt.apply(String,t),t.length=0)}return t.length>0&&(r+=Mt.apply(String,t)),r}function sg(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=dt();return r}function lg(n){if(Zt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[hg()]=dt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(dt(),dt());return r}}var Mt=String.fromCharCode;function fg(n){let r=G,e=new Array(n);for(let t=0;t<n;t++){let o=de[G++];if((o&128)>0){G=r;return}e[t]=o}return Mt.apply(String,e)}function jd(n){if(n<4)if(n<2){if(n===0)return"";{let r=de[G++];if((r&128)>1){G-=1;return}return Mt(r)}}else{let r=de[G++],e=de[G++];if((r&128)>0||(e&128)>0){G-=2;return}if(n<3)return Mt(r,e);let t=de[G++];if((t&128)>0){G-=3;return}return Mt(r,e,t)}else{let r=de[G++],e=de[G++],t=de[G++],o=de[G++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){G-=4;return}if(n<6){if(n===4)return Mt(r,e,t,o);{let i=de[G++];if((i&128)>0){G-=5;return}return Mt(r,e,t,o,i)}}else if(n<8){let i=de[G++],a=de[G++];if((i&128)>0||(a&128)>0){G-=6;return}if(n<7)return Mt(r,e,t,o,i,a);let s=de[G++];if((s&128)>0){G-=7;return}return Mt(r,e,t,o,i,a,s)}else{let i=de[G++],a=de[G++],s=de[G++],l=de[G++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){G-=8;return}if(n<10){if(n===8)return Mt(r,e,t,o,i,a,s,l);{let c=de[G++];if((c&128)>0){G-=9;return}return Mt(r,e,t,o,i,a,s,l,c)}}else if(n<12){let c=de[G++],u=de[G++];if((c&128)>0||(u&128)>0){G-=10;return}if(n<11)return Mt(r,e,t,o,i,a,s,l,c,u);let p=de[G++];if((p&128)>0){G-=11;return}return Mt(r,e,t,o,i,a,s,l,c,u,p)}else{let c=de[G++],u=de[G++],p=de[G++],d=de[G++];if((c&128)>0||(u&128)>0||(p&128)>0||(d&128)>0){G-=12;return}if(n<14){if(n===12)return Mt(r,e,t,o,i,a,s,l,c,u,p,d);{let h=de[G++];if((h&128)>0){G-=13;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h)}}else{let h=de[G++],f=de[G++];if((h&128)>0||(f&128)>0){G-=14;return}if(n<15)return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f);let m=de[G++];if((m&128)>0){G-=15;return}return Mt(r,e,t,o,i,a,s,l,c,u,p,d,h,f,m)}}}}}function _d(n){return Zt.copyBuffers?Uint8Array.prototype.slice.call(de,G,G+=n):de.subarray(G,G+=n)}function Vn(n){let r=de[G++];if(Wt[r])return Wt[r](de.subarray(G,G+=n));throw new Error("Unknown extension type "+r)}var cg=new Array(4096);function hg(){let n=de[G++];if(n>=160&&n<192){if(n=n-160,$r>=G)return Ko.slice(G-yr,(G+=n)-yr);if(!($r==0&&Qo<180))return Vd(n)}else return G--,dt();let r=(n<<5^(n>1?We.getUint16(G):n>0?de[G]:0))&4095,e=cg[r],t=G,o=G+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=We.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=de[t++],i!=e[a++]){t=1879048192;break}if(t===o)return G=t,e.string;o-=3,t=G}for(e=[],cg[r]=e,e.bytes=n;t<o;)i=We.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=de[t++],e.push(i);let s=n<16?jd(n):fg(n);return s!=null?e.string=s:e.string=Vd(n)}var ug=(n,r)=>{var e=dt();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=ke[n];return o&&o.isShared&&((ke.restoreStructures||(ke.restoreStructures=[]))[n]=o),ke[n]=e,e.read=Gd(e,t),e.read()},mg=typeof self=="object"?self:global;Wt[0]=()=>{};Wt[0].noBuffer=!0;Wt[101]=()=>{let n=dt();return(mg[n[0]]||Error)(n[1])};Wt[105]=n=>{let r=We.getUint32(G-4);So||(So=new Map);let e=de[G],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};So.set(r,o);let i=dt();return o.used?Object.assign(t,i):(o.target=i,i)};Wt[112]=n=>{let r=We.getUint32(G-4),e=So.get(r);return e.used=!0,e.target};Wt[115]=()=>new Set(dt());var Fd=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Wt[116]=n=>{let r=n[0],e=Fd[r];if(!e)throw new Error("Could not find typed array for code "+r);return new mg[e](Uint8Array.prototype.slice.call(n,1).buffer)};Wt[120]=()=>{let n=dt();return new RegExp(n[0],n[1])};Wt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=G;G+=r-4,lr=[dt(),dt()],lr.position0=0,lr.position1=0;let t=G;G=e;try{return dt()}finally{G=t}};Wt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function yg(n){let r=Qo,e=G,t=Rd,o=yr,i=$r,a=Ko,s=Ld,l=So,c=lr,u=new Uint8Array(de.slice(0,Qo)),p=ke,d=ke.slice(0,ke.length),h=Zt,f=Hi,m=n();return Qo=r,G=e,Rd=t,yr=o,$r=i,Ko=a,Ld=s,So=l,lr=c,de=u,Hi=f,ke=p,ke.splice(0,ke.length,...d),Zt=h,We=new DataView(de.buffer,de.byteOffset,de.byteLength),m}function sc(){de=null,So=null,ke=null}function gg(n){n.unpack?Wt[n.type]=n.unpack:Wt[n.type]=n}var cc=new Array(147);for(let n=0;n<256;n++)cc[n]=+("1e"+Math.floor(45.15-n*.30103));var uc=new Yr({useRecords:!1}),uT=uc.unpack,dT=uc.unpackMultiple,pT=uc.unpack,dc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},fT=new Float32Array(1),rU=new Uint8Array(fT.buffer,0,4);var pc;try{pc=new TextEncoder}catch{}var fc,kd,hc=typeof Buffer<"u",Ud=hc?Buffer.allocUnsafeSlow:Uint8Array,Sg=hc?Buffer:Uint8Array,xg=hc?4294967296:2144337920,Q,ft,U=0,Xr,Kr=null,hT=/[\u0080-\uFFFF]/,Os=Symbol("record-id"),zn=class extends Yr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,l=0,c=Sg.prototype.utf8Write?function(x,_,D){return Q.utf8Write(x,_,D)}:pc&&pc.encodeInto?function(x,_){return pc.encodeInto(x,Q.subarray(_)).written}:!1,u=this;r||(r={});let p=r&&r.sequential,d=r.structures||r.saveStructures,h=r.maxSharedStructures;if(h==null&&(h=d?32:0),h>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=d?32:64),p&&!r.saveStructures&&(this.structures=[]);let m=h>32||f+h>64,y=h+64,g=h+f+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],O=0,P=0;this.pack=this.encode=function(x,_){if(Q||(Q=new Ud(8192),ft=new DataView(Q.buffer,0,8192),U=0),Xr=Q.length-10,Xr-U<2048?(Q=new Ud(Q.length),ft=new DataView(Q.buffer,0,Q.length),Xr=Q.length-10,U=0):U=U+7&2147483640,t=U,s=u.structuredClone?new Map:null,u.bundleStrings?(Kr=["",""],Q[U++]=214,Q[U++]=98,Kr.position=U-t,U+=4):Kr=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let D=o.sharedLength||0;if(D>h)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let A=0;A<D;A++){let N=o[A];if(!N)continue;let E,B=o.transitions;for(let V=0,j=N.length;V<j;V++){let R=N[V];E=B[R],E||(E=B[R]=Object.create(null)),B=E}B[Os]=A+64}l=D}p||(o.nextId=D+64)}i&&(i=!1),a=o||[];try{if(S(x),Kr){ft.setUint32(Kr.position+t,U-Kr.position-t);let D=Kr;Kr=null,S(D[0]),S(D[1])}if(u.offset=U,s&&s.idsToInsert){U+=s.idsToInsert.length*6,U>Xr&&I(U),u.offset=U;let D=yT(Q.subarray(t,U),s.idsToInsert);return s=null,D}return _&Pg?(Q.start=t,Q.end=U,Q):Q.subarray(t,U)}finally{if(o){if(P<10&&P++,O>1e4)o.transitions=null,P=0,O=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let D=0,A=v.length;D<A;D++)v[D][Os]=0;v=[]}if(i&&u.saveStructures){let D=o.sharedLength||h;o.length>D&&(o=o.slice(0,D));let A=Q.subarray(t,U);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(x)):(l=D,A)}}_&PT&&(U=t)}};let S=x=>{U>Xr&&(Q=I(U));var _=typeof x,D;if(_==="string"){let A=x.length;if(Kr&&A>=8&&A<4096){let B=hT.test(x);Kr[B?0:1]+=x,Q[U++]=193,S(B?-A:A);return}let N;A<32?N=1:A<256?N=2:A<65536?N=3:N=5;let E=A*3;if(U+E>Xr&&(Q=I(U+E)),A<64||!c){let B,V,j,R=U+N;for(B=0;B<A;B++)V=x.charCodeAt(B),V<128?Q[R++]=V:V<2048?(Q[R++]=V>>6|192,Q[R++]=V&63|128):(V&64512)===55296&&((j=x.charCodeAt(B+1))&64512)===56320?(V=65536+((V&1023)<<10)+(j&1023),B++,Q[R++]=V>>18|240,Q[R++]=V>>12&63|128,Q[R++]=V>>6&63|128,Q[R++]=V&63|128):(Q[R++]=V>>12|224,Q[R++]=V>>6&63|128,Q[R++]=V&63|128);D=R-U-N}else D=c(x,U+N,E);D<32?Q[U++]=160|D:D<256?(N<2&&Q.copyWithin(U+2,U+1,U+1+D),Q[U++]=217,Q[U++]=D):D<65536?(N<3&&Q.copyWithin(U+3,U+2,U+2+D),Q[U++]=218,Q[U++]=D>>8,Q[U++]=D&255):(N<5&&Q.copyWithin(U+5,U+3,U+3+D),Q[U++]=219,ft.setUint32(U,D),U+=4),U+=D}else if(_==="number")if(x>>>0===x)x<64?Q[U++]=x:x<256?(Q[U++]=204,Q[U++]=x):x<65536?(Q[U++]=205,Q[U++]=x>>8,Q[U++]=x&255):(Q[U++]=206,ft.setUint32(U,x),U+=4);else if(x>>0===x)x>=-32?Q[U++]=256+x:x>=-128?(Q[U++]=208,Q[U++]=x+256):x>=-32768?(Q[U++]=209,ft.setInt16(U,x),U+=2):(Q[U++]=210,ft.setInt32(U,x),U+=4);else{let A;if((A=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){Q[U++]=202,ft.setFloat32(U,x);let N;if(A<4||(N=x*cc[(Q[U]&127)<<1|Q[U+1]>>7])>>0===N){U+=4;return}else U--}Q[U++]=203,ft.setFloat64(U,x),U+=8}else if(_==="object")if(!x)Q[U++]=192;else{if(s){let N=s.get(x);if(N){if(!N.id){let E=s.idsToInsert||(s.idsToInsert=[]);N.id=E.push(N)}Q[U++]=214,Q[U++]=112,ft.setUint32(U,N.id),U+=4;return}else s.set(x,{offset:U-t})}let A=x.constructor;if(A===Object)T(x,!0);else if(A===Array){D=x.length,D<16?Q[U++]=144|D:D<65536?(Q[U++]=220,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=221,ft.setUint32(U,D),U+=4);for(let N=0;N<D;N++)S(x[N])}else if(A===Map){D=x.size,D<16?Q[U++]=128|D:D<65536?(Q[U++]=222,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=223,ft.setUint32(U,D),U+=4);for(let[N,E]of x)S(N),S(E)}else{for(let N=0,E=fc.length;N<E;N++){let B=kd[N];if(x instanceof B){let V=fc[N];if(V.write){V.type&&(Q[U++]=212,Q[U++]=V.type,Q[U++]=0),S(V.write.call(this,x));return}let j=Q,R=ft,W=U;Q=null;let F;try{F=V.pack.call(this,x,k=>(Q=j,j=null,U+=k,U>Xr&&I(U),{target:Q,targetView:ft,position:U-k}),S)}finally{j&&(Q=j,ft=R,U=W,Xr=Q.length-10)}F&&(F.length+U>Xr&&I(F.length+U),U=mT(F,Q,U,V.type));return}}T(x,!x.hasOwnProperty)}}else if(_==="boolean")Q[U++]=x?195:194;else if(_==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))Q[U++]=211,ft.setBigInt64(U,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)Q[U++]=207,ft.setBigUint64(U,x);else if(this.largeBigIntToFloat)Q[U++]=203,ft.setFloat64(U,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");U+=8}else if(_==="undefined")this.encodeUndefinedAsNil?Q[U++]=192:(Q[U++]=212,Q[U++]=0,Q[U++]=0);else if(_==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+_)},T=this.useRecords===!1?this.variableMapSize?x=>{let _=Object.keys(x),D=_.length;D<16?Q[U++]=128|D:D<65536?(Q[U++]=222,Q[U++]=D>>8,Q[U++]=D&255):(Q[U++]=223,ft.setUint32(U,D),U+=4);let A;for(let N=0;N<D;N++)S(A=_[N]),S(x[A])}:(x,_)=>{Q[U++]=222;let D=U-t;U+=2;let A=0;for(let N in x)(_||x.hasOwnProperty(N))&&(S(N),S(x[N]),A++);Q[D+++t]=A>>8,Q[D+t]=A&255}:x=>{let _=Object.keys(x),D,A=a.transitions||(a.transitions=Object.create(null)),N=0;for(let B=0,V=_.length;B<V;B++){let j=_[B];D=A[j],D||(D=A[j]=Object.create(null),N++),A=D}let E=A[Os];if(E)E>=96&&m?(Q[U++]=((E-=96)&31)+96,Q[U++]=E>>5):Q[U++]=E;else{E=a.nextId,E||(E=64),E<y&&this.shouldShareStructure&&!this.shouldShareStructure(_)?(E=a.nextOwnId,E<g||(E=y),a.nextOwnId=E+1):(E>=g&&(E=y),a.nextId=E+1);let B=_.highByte=E>=96&&m?E-96>>5:-1;A[Os]=E,a[E-64]=_,E<y?(_.isShared=!0,a.sharedLength=E-63,i=!0,B>=0?(Q[U++]=(E&31)+96,Q[U++]=B):Q[U++]=E):(B>=0?(Q[U++]=213,Q[U++]=114,Q[U++]=(E&31)+96,Q[U++]=B):(Q[U++]=212,Q[U++]=114,Q[U++]=E),N&&(O+=P*N),v.length>=f&&(v.shift()[Os]=0),v.push(A),S(_))}for(let B=0,V=_.length;B<V;B++)S(x[_[B]])},I=x=>{let _;if(x>16777216){if(x-t>xg)throw new Error("Packed buffer would be larger than maximum buffer size");_=Math.min(xg,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else _=(Math.max(x-t<<2,Q.length-1)>>12)+1<<12;let D=new Ud(_);return ft=new DataView(D.buffer,0,_),Q.copy?Q.copy(D,0,t,x):D.set(Q.slice(t,x)),U-=t,t=0,Xr=D.length-10,Q=D}}useBuffer(r){Q=r,ft=new DataView(Q.buffer,Q.byteOffset,Q.byteLength),U=0}};kd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ps];fc=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?bg(n,16,r):vg(hc?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Sg&&this.structuredClone?bg(n,Fd.indexOf(e.name),r):vg(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function bg(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function vg(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function mT(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function yT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Zo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");kd.unshift(n.Class),fc.unshift(n)}gg(n)}var wg=new zn({useRecords:!1}),gT=wg.pack,xT=wg.pack;var{NEVER:bT,ALWAYS:vT,DECIMAL_ROUND:ST,DECIMAL_FIT:wT}=dc,Pg=512,PT=1024;var Og=new zn({structuredClone:!0});Zo({Class:xe.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,xe.prototype),n}});Zo({Class:ve.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ve.prototype),n}});Zo({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});Zo({Class:Ss.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ss(n)}});Zo({Class:ws.prototype.constructor,type:5,write(n){return n.data},read(n){return new ws(n)}});Zo({Class:Qe.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});function OT(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function Hd(n){if(zi(n))return n;if(Array.isArray(n))return n.map(Hd);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Hd(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var mc;(t=>{function n(o){return Og.pack(o)}t.serialize=n;function r(o){return Og.unpack(o)}t.deserialize=r;function e(o){return OT(n(Hd(o))).toString()}t.checksum=e})(mc||(mc={}));var tn="personal camera",rn="a218fcc3-276b-49b9-b485-49037fd14f5f",Ig=2960946,ht=5526619;var Wi;(h=>{function n(f,m){return f[0]===m[0]&&f[1]===m[1]}h.isEqual=n;function r(f,m,y){return[f[0]+(m[0]-f[0])*y,f[1]+(m[1]-f[1])*y]}h.lerp=r;function e(f,m){return[f[0]+m[0],f[1]+m[1]]}h.add=e;function t(f,m){return[f[0]-m[0],f[1]-m[1]]}h.sub=t;function o(f,m){return[f[0]*m[0],f[1]*m[1]]}h.multiply=o;function i(f,m){return[f[0]/m[0],f[1]/m[1]]}h.divide=i;function a(f,m){return Math.pow(m[0]-f[0],2)+Math.pow(m[1]-f[1],2)}h.distanceSquared=a;function s(f,m){return Math.sqrt(a(f,m))}h.distance=s;function l(f,m){return f[0]*m[0]+f[1]*m[1]}h.dot=l;function c(f,m){return[f[0]*m,f[1]*m]}h.scalarMultiply=c;function u(f,m,y){let g=h.sub(m,f),v=h.sub(y,f),O=h.dot(g,v)/h.dot(g,g),P=h.scalarMultiply(g,O);return h.add(f,P)}h.projectionOnto=u;function p(f,m,y){return s(f,u(f,m,y))}h.projectionOntoDistance=p;function d(f,m){return[(f[0]+m[0])*.5,(f[1]+m[1])*.5]}h.center=d})(Wi||(Wi={}));var Jo;(s=>{function n(l,c){return l[0]===c[0]&&l[1]===c[1]&&l[2]===c[2]}s.isEqual=n;function r(l,c){return[l[0]+c[0],l[1]+c[1],l[2]+c[2]]}s.add=r;function e(l,c){return[l[0]-c[0],l[1]-c[1],l[2]-c[2]]}s.sub=e;function t(l,c){return[l[0]/c[0],l[1]/c[1],l[2]/c[2]]}s.div=t;function o(l,c){return[l[0]*c[0],l[1]*c[1],l[2]*c[2]]}s.mul=o;function i(l,c){return Math.hypot(l[0]-c[0],l[1]-c[1],l[2]-c[2])}s.dist=i;function a(l,c,u){return[l[0]+(c[0]-l[0])*u,l[1]+(c[1]-l[1])*u,l[2]+(c[2]-l[2])*u]}s.lerp=a})(Jo||(Jo={}));var Cg;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(Cg||(Cg={}));var en;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var l=0,c=a.length;l<c;l+=3){let u=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/u,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/u,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/u}return s}o.applyMatrix4=t})(en||(en={}));var St;(p=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}p.isRGB=n,p.white={r:1,g:1,b:1},p.red={r:1,g:0,b:0},p.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}p.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}p.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}p.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}p.toHex=s;function l(d,h){return d.r===h.r&&d.g===h.g&&d.b===h.b}p.equals=l;function c(d,h){return d.r.toFixed(2)===h.r.toFixed(2)&&d.g.toFixed(2)===h.g.toFixed(2)&&d.b.toFixed(2)===h.b.toFixed(2)}p.equalsFixed=c;function u(d,h,f){return{r:d.r+(h.r-d.r)*f,g:d.g+(h.g-d.g)*f,b:d.b+(h.b-d.b)*f}}p.lerp=u})(St||(St={}));var Ie;(c=>{c.white={...St.white,a:1},c.transparent={...St.white,a:0};function e(u){return{r:u[0],g:u[1],b:u[2],a:u[3]}}c.from0to1=e;function t(u,p){return{...St.fromHex(u),a:p}}c.fromHexAndA=t;function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:u.a}}c.toRgb255a1=o;function i(u,p){return St.equals(u,p)&&u.a===p.a}c.equals=i;function a(u,p){return St.equalsFixed(u,p)&&u.a.toFixed(2)===p.a.toFixed(2)}c.equalsFixed=a;function s(u,p,d){return{r:u.r+(p.r-u.r)*d,g:u.g+(p.g-u.g)*d,b:u.b+(p.b-u.b)*d,a:u.a+(p.a-u.a)*d}}c.lerp=s;function l({r:u,g:p,b:d,a:h}=c.white){return`rgba(${u*255}, ${p*255}, ${d*255}, ${h})`}c.toStyle=l})(Ie||(Ie={}));var yc;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(yc||(yc={}));var Tg;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Tg||(Tg={}));var Ag;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Ag||(Ag={}));var Mg;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(Mg||(Mg={}));function Wd(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var Ir;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ir||(Ir={}));var on;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective?.zoom??1:i.orthographic?.zoom??1}o.getZoom=t})(on||(on={}));var Qr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function r(t,o){let i={...t};if(CT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;TT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;AT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;MT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;IT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;NT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=r})(Qr||(Qr={}));var gc;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}t.toOps=e})(gc||(gc={}));var CT=["count"],TT=["radius","start","end","position","scale","rotation"],AT=["position","scale","rotation"],MT=["count","size"],IT=["count","position","scale","rotation"],NT=["strength","scale","rotation","position","movement","seed","freqScale"];var xc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(xc||(xc={}));var bc;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ie.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ie.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(bc||(bc={}));var qi;(t=>(t.defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},t.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},t.defaultData={renderMaterial:{type:"particleMaterial",color:{r:1,g:.2,b:.545,a:1},color2:{r:.945,g:.714,b:.184,a:1},coloring:"gradient",ease:"linearFadeOut",easeSize:"linearFadeOut",transparent:!0,size:[40,40],texture:"pt_default_particle",spriteRotation:[0,0]},birthRatePerSec:50,gravity:1,noiseStrength:0,noiseScale:0,noiseSeed:1,noiseType:"curl",randomRotation:0,randomScale:.2,randomMass:.5,rootObjectType:"instancedMesh",life:1,direction:[0,0,0],directionMode:"axis",speed:10,shape:t.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeLoopDelayStart:"end",emitTimeDuration:1,...t.defaultCollisionData}))(qi||(qi={}));var nn;(r=>r.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(nn||(nn={}));var qd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(qd||(qd={}));var $d;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})($d||($d={}));var vc;(r=>r.defaultData={...$d.defaultData,...qd.defaultData})(vc||(vc={}));var Ng;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(Ng||(Ng={}));var $i;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))($i||($i={}));var Dg;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="particle"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Dg||(Dg={}));function _g(n){return n.type!=="displace"}var Eg;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Eg||(Eg={}));var Bg=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Lg=["wrapping","image","video","name","minFilter"],xt;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let c=i.texture;c&&Object.assign(c,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"video":return{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:$i.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008},crop:!1};case"color":return{...a,type:"color",color:St.fromHex(ht)};case"depth":return{...a,type:"depth",gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,type:"gradient",gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ie.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Ie.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ie.fromHexAndA(0,1),contourColor:Ie.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008}};case"transmission":return{...a,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...St.fromHex(0),a:1},colorB:{...St.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(xt||(xt={}));var Lt;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let p="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([h,f])=>{p+=`${h}${f}`,Array.isArray(f)?f.forEach(m=>p+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${f}`})}),p}c.getHash=r;function e(){return{layers:new ve}}c.defaultEmptyData=e;function t(u="layer1",p="layer2"){return i("phong",u,p)}c.defaultData=t;function o(u,p){return{...u,name:p}}c.withName=o;function i(u,p="layer1",d="layer2"){let h=new ve;return h.push({fi:0,data:xt.defaultData("light",u),id:p}),h.push({fi:1,data:xt.defaultData("color"),id:d}),{layers:h}}c.defaultTwoLayerData=i;function a(u){let p=xt.defaultData("texture");u&&Object.assign(p.texture,{image:u});let d=new ve;return d.push({fi:0,data:p,id:"layer1"}),d.push({fi:1,data:{...xt.defaultData("transmission"),alpha:1},id:"layer2"}),d.push({fi:2,data:{...xt.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:d}}c.defaultUIObjectMaterial=a;function s(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,p="phong",d="layer1",h="layer2"){let f=xt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ve;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:xt.defaultData("light",p),id:h}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(Lt||(Lt={}));var Yi;(r=>{function n(){return{points:new ve,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Yi||(Yi={}));var Xi;(r=>{function n(){return{points:new ve,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Xi||(Xi={}));var Yd={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Sc;(r=>{function n(e,t){let o={...e};return DT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Sc||(Sc={}));var wc={shape:Yd,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},DT=["depth","offset","angle","twist","startScale","endScale"];var Cs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="UIGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Cs||(Cs={}));var Pc;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Sc.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Pc||(Pc={}));var an;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="UIGeometry")return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Xi.defaultData(),extrusion:wc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Yi.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}r.defaultData=n})(an||(an={}));var Oc;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:St.white,near:.1,far:2e3})(Oc||(Oc={}));var Cc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focusDistance:100,focalLength:20,bokehScale:5},noise:{...n,blendFunction:16}}})(Cc||(Cc={}));var Xd;(r=>r.defaultData={softShadowQuality:"low"})(Xd||(Xd={}));var Kd;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Kd||(Kd={}));var Qd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Qd||(Qd={}));var Ts;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ts||(Ts={}));var Zd;(r=>r.defaultData={playCamera:tn,gameControlObject:null})(Zd||(Zd={}));var Tc;(r=>r.defaultData={backgroundColor:Ie.fromHexAndA(Ig,1),postprocessing:Cc.defaultData,fog:Oc.defaultData,globalPhysics:Ts.defaultData,ambient:Kd.defaultData,ao:Qd.defaultData,shadow:Xd.defaultData,publish:Zd.defaultData})(Tc||(Tc={}));var Ac;(r=>r.defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95})(Ac||(Ac={}));var Rg;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Rg||(Rg={}));var Ki;(o=>{o.identity={...yc.identity,hiddenMatrix:en.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return Tl({position:Jo.isEqual(i.position,a.position)?void 0:a.position,rotation:Jo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:Jo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:en.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Ki||(Ki={}));var wt;(r=>r.defaultData={states:new ve,events:new ve,visible:!0,raycastLock:!1,physics:nn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Ki.identity,cloner:null})(wt||(wt={}));var Mc;(r=>r.defaultData={type:"Empty",...wt.defaultData})(Mc||(Mc={}));var Vg;(r=>r.defaultData={type:"ParticleCollider",...Ac.defaultData,...wt.defaultData})(Vg||(Vg={}));var zg;(r=>r.defaultData={type:"Component",...wt.defaultData})(zg||(zg={}));var Gg;(r=>r.defaultData={type:"Particle",...wt.defaultData,...qi.defaultData})(Gg||(Gg={}));var Gn;(r=>r.defaultData={type:"Mesh",...wt.defaultData,...vc.defaultData})(Gn||(Gn={}));var jn;(r=>r.defaultData={...wt.defaultData,...Ki.identity,position:[0,0,on.DefaultTargetOffset],...on.defaultData})(jn||(jn={}));var Ic;(e=>{function n(t){return{...wt.defaultData,...bc.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ic||(Ic={}));var Qi;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(Qi||(Qi={}));var Zr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...wt.defaultData,...s,component:a,overrides:new Qe,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Ki.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Zr||(Zr={}));var wo;(e=>{e.defaultData={type:"Page",...wt.defaultData,physics:{...nn.defaultData,fusedBody:!1},...Tc.defaultData,camera:jn.defaultData};function r(t){return t.uiScene!==void 0}e.isUIPage=r})(wo||(wo={}));var Nc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:en.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:nn.defaultData,states:new ve,events:new ve,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...on.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...wt.defaultData,...Gn.defaultData,geometry:an.defaultData("RectangleGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...wt.defaultData,...Gn.defaultData,geometry:an.defaultData("BooleanGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...wt.defaultData,...Gn.defaultData,geometry:an.defaultData("TextGeometry"),material:Lt.defaultTwoLayerData("phong","layer1","layer2")}))(Nc||(Nc={}));var Fn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Qe}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Qe})))):Ir.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Xo(s.material,l=>{if(typeof l!="string")for(let[c,u]of Object.entries(a.material.layers)){let p=l.layers.data(c);p&&xt.patch(p,u)}}).data),s.materials&&a.materials&&(s.materials=Xo(s.materials,l=>{for(let c=0;c<s.materials.length;c++){let u=a.materials[c];if(typeof u!="string")for(let[p,d]of Object.entries(u.layers)){let h=l[c]?.layers?.data(p);h&&xt.patch(h,d)}}}).data),s}function e(i,a){let s,l=[],c={orthographic:0,perspective:0,geometry:0};function u(p,d){for(let[h,f]of Object.entries(d.layers)){let{texture:m,...y}=f;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...p,"layers",h,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...p,"layers",h],props:y,type:0};l.push(g)}}}for(let[p,d]of Object.entries(a))if(p!=="name")if(p==="cloner")l.push(...gc.toOps(d,["cloner"]));else if(p==="pathSnapping")l.push({path:[p],props:{slide:d.slide,offset:d.offset},type:0});else if(p==="material")u(["material"],d);else if(p==="materials")for(let[h,f]of Object.entries(d))u(["materials",h],f);else if(c[p]===0){if(p==="geometry"&&d.extrusion!==void 0){let h={path:[p,"extrusion"],props:d.extrusion,type:0};l.push(h),d={...d},delete d.extrusion}if(Object.keys(d).length>0){let h={path:[p],props:d,type:0};l.push(h)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[p]=d;return l}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Ki.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),Ir.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:Pc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:Qr.merge(s.cloner,a.cloner)});else if(xc.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=St.clone(l.color))}return s}o.patch=t})(Fn||(Fn={}));var Zi;(r=>r.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Zi||(Zi={}));var Nr;(r=>r.defaultData={orbitControls:Zi.defaultData,playPage:rn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(Nr||(Nr={}));var Jd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Jd||(Jd={}));var ep;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(ep||(ep={}));var Po;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Jd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:ep.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Po||(Po={}));var jg;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Ji.getComponentData(t,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(jg||(jg={}));var Oo;(l=>{l.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c=!0){let u=[],p=Nc.defaultMeshObject;c&&(u.push({fi:-1,data:Ic.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:p,children:[]}));let d=new Ke;return d.push({fi:1,id:rn,data:{...wo.defaultData,name:"Scene 1"},children:u}),d}l.defaultData={objects:r(),publish:Nr.defaultData,styles:Po.defaultData()},l.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Nr.defaultData,styles:Po.defaultData()}},l.emptyDataWithPage=function(c=!0){return{objects:r(c),publish:Nr.defaultData,styles:Po.defaultData()}},l.emptyData=function(){return{objects:new Ke,publish:{...Nr.defaultData},styles:Po.defaultData()}};function a(c){return{...l.defaultData,objects:Ht(c,Ke.prototype)}}l.withObjs=a;function s(c,u){return a([{id:c,data:u,children:[],fi:0}])}l.withObj=s})(Oo||(Oo={}));var ea;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(ea||(ea={}));var Dc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(Dc||(Dc={}));var tp;(r=>r.all=["images","videos","colors","audios","particles","fonts","materials","variables"])(tp||(tp={}));var Fg;(r=>r.all=[...tp.all,"components"])(Fg||(Fg={}));var Ug;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Ug||(Ug={}));var Co;(r=>{function n(){return{images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,materials:new xe,components:new xe,variables:new xe}}r.defaultData=n})(Co||(Co={}));var xr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Ht(a,xe.prototype)}i.defaultColors=n;function r(){return Ht({},xe.prototype)}i.defaultImages=r;function e(){return{catelogs:new xe,materials:new xe,images:new xe,videos:new xe,colors:new xe,audios:new xe,particles:new xe,fonts:new xe,variables:new ve,lib:Co.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),c=Math.floor((a-l*3600)/60),u=Math.round(a-l*3600-c*60);return{textValue:[l,c,u]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),c=Math.round(a-l*60);return{textValue:[l,c]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(xr||(xr={}));import{MathUtils as Bc}from"three";var Ec;(r=>r.list=["idle","move","jump","run"])(Ec||(Ec={}));var _c;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ve,move:new ve,jump:new ve,run:new ve},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ie.fromHexAndA(3728051,1)}}))(_c||(_c={}));function kg(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Mr(ut(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...ut(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function To(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ao(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=Lt.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=Lt.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&Object.getPrototypeOf(o.material)!==Qe.prototype&&r(o.material)})})}function ET(n){Object.assign(n.scene.publish,{orbitControls:{...Zi.defaultData,...ut(n.scene.publish.orbitControls)}})}function _T(n){Object.assign(n.scene.publish.settings,{video:{...Nr.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function BT(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Bg.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Lg.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function LT(n){n.scene.publish.withBackground=!0}function RT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function VT(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function zT(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function GT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=ut(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=ut(e).booleanExclude!==!0)}})}function jT(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function FT(n){function r(t){Object.setPrototypeOf(t,Qe.prototype),t.texture&&Object.setPrototypeOf(t.texture,Qe.prototype)}function e(t){Object.setPrototypeOf(t,Qe.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=ut(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],c=ut(l).layers;e(c),l.layers=c}})})}function Hg(n){n.layers===void 0&&Object.assign(n,Lt.defaultTwoLayerData("lambert"))}function rp(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...ut(r),colors:e,steps:t};Object.assign(r,o)}})}function UT(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Wg(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&rp(t)}):"material"in e&&typeof e.material!="string"&&rp(e.material)}),Object.values(n.shared.materials).forEach(r=>rp(r))}function kT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function HT(n){n.shared.audios=Ht({},xe.prototype)}function WT(n){n.shared.videos=Ht({},xe.prototype)}function qT(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(r,{[e]:o})}})}function $T(n){Object.entries(ut(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(ut(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function YT(n){n.scene.publish.settings.web.preload=!1}function qg(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function $g(n){n.layers&&n.layers.forEach(r=>{_g(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function XT(n){n.shared.fonts=Ht({},xe.prototype)}function KT(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function QT(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Lt.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=KT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...wt.defaultData,...Gn.defaultData,flatShading:!1,wireframe:!1,geometry:{...an.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:ut(o.states),events:ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},c=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(c??null,e,[{id:e+"new",data:l,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function ZT(n){let r={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ve,move:new ve,jump:new ve}});else{let i=new ve;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:Bc.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let c={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},u={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(u,Mr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(u,{control1:{...a.control1},control2:{...a.control2}});let p={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},d={state:a.state,...p,...u},h={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ve({fi:0,id:Bc.generateUUID(),data:c},{fi:1,id:Bc.generateUUID(),data:d})};i.push({fi:l,id:s,data:h})}),delete o.targets)}})})}function JT(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ve,s=[];if(e.events.forEach((l,c,u)=>{if(l.type==="Audio"&&l.trigger===i){let p;s.push(c),l.interaction==="play"?p={...Mr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(p={...Mr(l,"interaction","delay","object","playAudio"),type:"Audio"}),p&&a.push({fi:u,id:c,data:p})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(c=>c.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Bc.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Yg(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=xt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Xg(n){To(n,Yg),Ao(n,Yg)}function eA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function tA(n){n.scene.objects.traverse((r,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function rA(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Lt.defaultTwoLayerData("phong"))})}function oA(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function nA(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function iA(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function aA(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function sA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function lA(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function cA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=_c.defaultDataThirdPerson.navmesh)})})}function uA(n){n.scene.styles||(n.scene.styles=Po.defaultData())}function Kg(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function dA(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),Ao(n,Kg),To(n,Kg)}function pA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ve})})})}function fA(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Qg(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function Zg(n,r){if(r<1&&(Ao(n,kg),To(n,kg),n.schema=1),r<2&&(ET(n),n.schema=2),r<3&&(BT(n),n.schema=3),r<4&&(LT(n),n.schema=4),r<5&&(RT(n),n.schema=5),r<6&&(VT(n),n.schema=6),r<7&&(zT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Wg(n),n.schema=9),r<10&&(UT(n),n.schema=10),r<11&&(kT(n),n.schema=11),r<12&&(Wg(n),n.schema=12),r<13&&(HT(n),n.schema=13),r<14&&(qT(n),n.schema=14),r<15&&($T(n),n.schema=15),r<16&&(YT(n),n.schema=16),r<17&&(Ao(n,qg),To(n,qg),n.schema=17),r<18&&(Ao(n,Hg),To(n,Hg),n.schema=18),r<19&&(_T(n),n.schema=19),r<20&&(XT(n),QT(n),n.schema=20),r<21&&(ZT(n),JT(n),n.schema=21),r<22&&(Xg(n),n.schema=22),r<23&&(eA(n),n.schema=23),r<24&&(tA(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(WT(n),r<25&&(n.schema=25)),r<26&&(GT(n),n.schema=26),r<27&&(jT(n),n.schema=27),r<28&&(Xg(n),n.schema=28),r<29&&(FT(n),n.schema=29),r<30&&(rA(n),n.schema=30),r<31&&(oA(n),n.schema=31),r<33&&(nA(n),n.schema=33),r<34&&(iA(n),n.schema=34),r<35&&(aA(n),n.schema=35),r<36&&(sA(n),n.schema=36),r<37&&(lA(n),n.schema=37),r<38&&(Ao(n,$g),To(n,$g),n.schema=38),r<39&&(cA(n),n.schema=39),r<40&&(uA(n),n.schema=40),r<41&&(dA(n),n.schema=41),r<42&&(pA(n),n.schema=42),r<43&&(fA(n),n.schema=43),r<99){Ao(n,Qg),To(n,Qg),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=tn);let e=ut(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=rn,t.insertBefore(null,null,[{id:rn,data:{...wo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Mr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Mr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ts.defaultData,...Mr(n.scene.environment,"usePhysics","gravity")},camera:ut(n.scene.ownerCamera)??wo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==Oo.TRASH_CAN_ID&&t.move(rn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,nn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Jg(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function hA(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}function mA(n){Array.isArray(ut(n.events))&&n.events?.forEach(r=>{"disabled"in r||(r.disabled=!1),(r.type==="MouseDown"||r.type==="MouseUp"||r.type==="MousePress")&&(r.mode=r.mode||"Object")})}var ta=180/Math.PI;function ex(n){n.rotation=n.rotation.slice(0,3).map(r=>r*ta)}function tx(n){ex(n),n.type==="Page"&&ex(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*ta))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=(r.thetaLength??180)*ta),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*ta),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=ta,r.extrusion.twist*=ta),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(ut(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function yA(n){n.shared.variables=Ht({},xe.prototype)}function gA(n){let r=ut(n.shared.variables);n.shared.variables=Ht(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ve.prototype)}var Jr=112;function rx(n,r){r(n.data);for(let e of n.children)rx(e,r)}function xA(n){let r=n.schema??104;r!==Jr&&r<105&&(rx(n.asset,tx),n.schema=105)}function bA(n){n.shared.particles=Ht({},xe.prototype),n.shared.lib&&(n.shared.lib.particles=Co.defaultData().particles)}function vA(n){n.scene.objects.traverse((r,e)=>{e.type==="Particle"&&typeof e.renderMaterial.size=="number"&&Object.assign(e.renderMaterial,{size:[e.renderMaterial.size,e.renderMaterial.size]})})}function SA(n){n.scene.objects.traverse((r,e)=>{e.type==="Page"&&(e.postprocessing.depthOfField.focusDistance=100,e.postprocessing.depthOfField.focalLength=20,e.postprocessing.depthOfField.bokehScale=5)})}function Lc(n){let r=n.schema??0;if(r!==Jr){console.warn("updating from ",r,"to ",Jr),Zg(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Nr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(Ao(n,Jg),To(n,Jg),n.schema=101),r<102&&(hA(n),n.schema=102),r<104&&(n.shared.catelogs=new xe,n.shared.lib=Co.defaultData(),n.schema=104),r<105&&(yA(n),n.scene.objects.traverse((e,t)=>{tx(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))xA(e);r<106&&(gA(n),n.schema=106),r<107&&(n.shared.lib.variables=Co.defaultData().variables,n.schema=107),r<109&&(bA(n),n.schema=109),r<110&&(vA(n),n.schema=110),r<111&&(n.scene.objects.traverse((e,t)=>{mA(t)}),n.schema=111),r<112&&(SA(n),n.schema=112)}}var Ji;(l=>{l.defaultData={schema:Jr,scene:Oo.defaultData,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors()}},l.emptyDataForImports=function(){let c=Oo.emptyDataWithPage();return{schema:Jr,scene:c,frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:{...xr.emptyData(),colors:xr.defaultColors(),images:xr.defaultImages()}}},l.emptyData=function(){return{schema:Jr,scene:Oo.emptyDataWithPage(),frames:new xe().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",ea.defaultData),shared:xr.emptyData()}},l.clipboard2dData=function(){return{schema:Jr,scene:Oo.emptyData(),frames:new xe,shared:xr.emptyData()}},l.collabHelper={...vs,updateSchema(c){return(c.schema??0)<Jr?Xo(c,Lc):(c.schema??0)-Jr}};function i(c){let u=l.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}l.updateSchemaDirectly=i;function a(c){return{...c,shared:{...c.shared,lib:Co.defaultData()}}}l.withoutLib=a;function s(c,u){let p=c.scene.objects.get(u);if(p&&p.data.type==="Component")return p;{let d=c.shared.lib.components[u];if(d)return d.asset}}l.getComponentData=s})(Ji||(Ji={}));var Rc;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Rc||(Rc={}));var ox;(r=>{function n(e){return!0}r.is=n})(ox||(ox={}));var Vc;(t=>{t.defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]};function r(o,i){return{position:i?.position??o.position,rotation:i?.rotation??o.rotation,scale:i?.scale??o.scale,shear:i?.shear??o.shear}}t.merge=r;function e(o,i){return Tl({position:Wi.isEqual(o.position,i.position)?void 0:i.position,rotation:o.rotation===i.rotation?void 0:i.rotation,scale:Wi.isEqual(o.scale,i.scale)?void 0:i.scale,shear:o.shear&&i.shear&&Wi.isEqual(o.shear,i.shear)?void 0:i.shear})}t.diff=e})(Vc||(Vc={}));var op;(r=>r.defaultData={horizontalConstraint:0,verticalConstraint:0})(op||(op={}));var zc;(r=>r.defaultData={opacity:1,fill:{color:Ie.fromHexAndA(ht,1),enabled:!0},stroke:{color:Ie.from0to1([0,0,0,1]),thickness:1,enabled:!1,mode:"inside"},layerBlur:{radius:2,enabled:!1},backgroundBlur:{radius:2,enabled:!1},dropShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:Ie.from0to1([0,0,0,1]),enabled:!1,spread:0}})(zc||(zc={}));var Un;(i=>{function n(a,s){return{name:s}}i.newEmpty=n;function r(a,s){if(s===void 0)return a;let l={...a},c=["width","height","cornerRadius"];for(let u of c)u in l&&u in s&&s[u]!==void 0&&Object.assign(l,{[u]:s[u]});return l}function e(a,s){if(s===void 0)return a;let l={...a};return"fill"in l&&"fill"in s&&s.fill!==void 0&&Object.assign(l,{fill:{...l.fill,...s.fill}}),"stroke"in l&&"stroke"in s&&s.stroke!==void 0&&Object.assign(l,{stroke:{...l.stroke,...s.stroke}}),"layerBlur"in l&&"layerBlur"in s&&s.layerBlur!==void 0&&Object.assign(l,{layerBlur:{...l.layerBlur,...s.layerBlur}}),"backgroundBlur"in l&&"backgroundBlur"in s&&s.backgroundBlur!==void 0&&Object.assign(l,{backgroundBlur:{...l.backgroundBlur,...s.backgroundBlur}}),"dropShadow"in l&&"dropShadow"in s&&s.dropShadow!==void 0&&Object.assign(l,{dropShadow:{...l.dropShadow,...s.dropShadow}}),"innerShadow"in l&&"innerShadow"in s&&s.innerShadow!==void 0&&Object.assign(l,{innerShadow:{...l.innerShadow,...s.innerShadow}}),l}function t(a,s){if(s===void 0)return a;let l={...a};return Object.assign(l,Vc.merge(l,s)),l=r(l,s),l=e(l,s),l}i.patch=t;function o(a,s){let l,c=[];for(let[u,p]of Object.entries(s))u!=="name"&&(l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p);return c}i.toOps=o})(Un||(Un={}));var As;(r=>r.defaultData={...Vc.defaultData,...op.defaultData,states:new ve,events:new ve,visible:!0,raycastLock:!1})(As||(As={}));var ra;(r=>r.defaultData={...As.defaultData,...zc.defaultData})(ra||(ra={}));var Gc;(r=>r.defaultData={cornerRadius:[0,0,0,0]})(Gc||(Gc={}));var np;(r=>r.defaultData={...ra.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"})(np||(np={}));var oa;(r=>r.defaultData={...ra.defaultData,...Gc.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"})(oa||(oa={}));var ip;(r=>r.defaultData={...ra.defaultData,type:"text2d",width:100,height:100,fontSize:12,lineHeight:1.2,letterSpacing:0,text:{textValue:"Hello world"},horizontalAlign:1,verticalAlign:1,textTransform:1,font:"Roboto_regular",name:"Text"})(ip||(ip={}));var ap;(r=>r.defaultData={...ra.defaultData,type:"path2d",path:"",name:"Path"})(ap||(ap={}));var nx;(r=>{function n(e){return e.type==="ellipse2d"||e.type==="rectangle2d"||e.type==="text2d"||e.type==="vector2d"||e.type==="path2d"}r.is=n})(nx||(nx={}));var Ms;(r=>r.defaultData={...As.defaultData,name:"Group",type:"group2d"})(Ms||(Ms={}));var sp;(r=>r.defaultData=()=>({...As.defaultData,...Gc.defaultData,...zc.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:Ie.fromHexAndA(4737101,1),enabled:!0},stroke:{color:Ie.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}))(sp||(sp={}));var Mo;(o=>{function n(i){switch(i){case"rectangle2d":return{...oa.defaultData};case"ellipse2d":return{...np.defaultData};case"text2d":return{...ip.defaultData};case"vector2d":return{...oa.defaultData};case"path2d":return{...ap.defaultData};case"frame2d":return{...sp.defaultData()};case"group2d":return{...Ms.defaultData}}}o.defaultData=n;function r(i){return"width"in i&&"height"in i?[typeof i.width=="number"?i.width*.5:0,typeof i.height=="number"?i.height*.5:0]:[0,0]}o.getPivot=r;function e(i){return i.type==="rectangle2d"||i.type==="ellipse2d"||i.type==="text2d"||i.type==="frame2d"}o.isResizeable=e;function t(i){return i.type==="rectangle2d"||i.type==="frame2d"}o.hasCorners=t})(Mo||(Mo={}));var jc;(e=>(e.defaultData={name:"UI",type:"scene2d",objects:new Ke},e.emptyData=function(){return{type:"scene2d",objects:new Ke}}))(jc||(jc={}));var Ja=hi(ax());import{Object3D as v3,Vector3 as pr,Euler as Uf,MathUtils as Fb,Matrix4 as ii}from"three";var wA=.5*(Math.sqrt(3)-1),Is=(3-Math.sqrt(3))/6,PA=1/3,eo=1/6,$5=(Math.sqrt(5)-1)/4,Y5=(5-Math.sqrt(5))/20,Ns=n=>Math.floor(n)|0,sx=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),cp=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Fc(n=Math.random){let r=cx(n),e=new Float64Array(r).map(o=>sx[o%12*2]),t=new Float64Array(r).map(o=>sx[o%12*2+1]);return function(i,a){let s=0,l=0,c=0,u=(i+a)*wA,p=Ns(i+u),d=Ns(a+u),h=(p+d)*Is,f=p-h,m=d-h,y=i-f,g=a-m,v,O;y>g?(v=1,O=0):(v=0,O=1);let P=y-v+Is,S=g-O+Is,T=y-1+2*Is,I=g-1+2*Is,x=p&255,_=d&255,D=.5-y*y-g*g;if(D>=0){let E=x+r[_],B=e[E],V=t[E];D*=D,s=D*D*(B*y+V*g)}let A=.5-P*P-S*S;if(A>=0){let E=x+v+r[_+O],B=e[E],V=t[E];A*=A,l=A*A*(B*P+V*S)}let N=.5-T*T-I*I;if(N>=0){let E=x+1+r[_+1],B=e[E],V=t[E];N*=N,c=N*N*(B*T+V*I)}return 70*(s+l+c)}}function lx(n=Math.random){let r=cx(n),e=new Float64Array(r).map(i=>cp[i%12*3]),t=new Float64Array(r).map(i=>cp[i%12*3+1]),o=new Float64Array(r).map(i=>cp[i%12*3+2]);return function(a,s,l){let c,u,p,d,h=(a+s+l)*PA,f=Ns(a+h),m=Ns(s+h),y=Ns(l+h),g=(f+m+y)*eo,v=f-g,O=m-g,P=y-g,S=a-v,T=s-O,I=l-P,x,_,D,A,N,E;S>=T?T>=I?(x=1,_=0,D=0,A=1,N=1,E=0):S>=I?(x=1,_=0,D=0,A=1,N=0,E=1):(x=0,_=0,D=1,A=1,N=0,E=1):T<I?(x=0,_=0,D=1,A=0,N=1,E=1):S<I?(x=0,_=1,D=0,A=0,N=1,E=1):(x=0,_=1,D=0,A=1,N=1,E=0);let B=S-x+eo,V=T-_+eo,j=I-D+eo,R=S-A+2*eo,W=T-N+2*eo,F=I-E+2*eo,k=S-1+3*eo,H=T-1+3*eo,$=I-1+3*eo,J=f&255,Z=m&255,X=y&255,te=.6-S*S-T*T-I*I;if(te<0)c=0;else{let q=J+r[Z+r[X]];te*=te,c=te*te*(e[q]*S+t[q]*T+o[q]*I)}let Y=.6-B*B-V*V-j*j;if(Y<0)u=0;else{let q=J+x+r[Z+_+r[X+D]];Y*=Y,u=Y*Y*(e[q]*B+t[q]*V+o[q]*j)}let ee=.6-R*R-W*W-F*F;if(ee<0)p=0;else{let q=J+A+r[Z+N+r[X+E]];ee*=ee,p=ee*ee*(e[q]*R+t[q]*W+o[q]*F)}let K=.6-k*k-H*H-$*$;if(K<0)d=0;else{let q=J+1+r[Z+1+r[X+1]];K*=K,d=K*K*(e[q]*k+t[q]*H+o[q]*$)}return 32*(c+u+p+d)}}function cx(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as OA}from"three";var Dr=new OA,Uc=class{constructor(r){this.weightAttribute=null;let e=r.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Dr.a.fromBufferAttribute(r,o),Dr.b.fromBufferAttribute(r,o+1),Dr.c.fromBufferAttribute(r,o+2),i*=Dr.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Dr.a.fromBufferAttribute(this.positionAttribute,r*3),Dr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Dr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Dr.a,o).addScaledVector(Dr.b,i).addScaledVector(Dr.c,1-(o+i)),Dr.getNormal(t),this}};import{Object3D as IA}from"three";var px=hi(dx());import{Object3D as CA,Matrix4 as to}from"three";var TA=new to,AA=new to,MA=new to,na;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(na||(na={}));var ia=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new to;this.copyPreviousMatrix=!0;this.hiddenMatrix=new to;this.matrixWorldRigid=new to;this.shearScale=new to;this.shearScaleInv=new to}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof CA&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)na.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)na.is(a)&&a.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:a,q:s}=(0,px.SVD)(o),l=TA.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=AA.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),u=MA.copy(c).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u).copyPosition(this.matrixWorld),s.every(p=>Math.abs(s[0]-p)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new to().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof to?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}onAfterRender(t,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var up=class extends ia(IA){},NA=n=>n.type==="Mesh",Io=class extends up{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Io(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return NA(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};import{Box3 as FI,BufferGeometry as UI,MeshBasicMaterial as kI}from"three";import{Matrix4 as GI,Mesh as jI}from"three";import{Matrix4 as Wc,Vector3 as mx,Euler as RA,MathUtils as Es}from"three";import{Box3 as DA,Line3 as EA,Matrix4 as dp,Vector3 as cr}from"three";var kn=new cr,Hn=new cr,aa=new dp,hx=[new cr(-1,1,1),new cr(-1,-1,1),new cr(1,-1,1),new cr(1,1,1),new cr(-1,1,-1),new cr(-1,-1,-1),new cr(1,-1,-1),new cr(1,1,-1)],_A=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],BA=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],fx=(n,r,e)=>{n.updateEntityBoxSize(kn,Hn),aa.copy(r).multiply(n.matrixWorld),Hn.x===0&&Hn.y===0&&Hn.z===0?e.push(new cr(kn.x,kn.y,kn.z).applyMatrix4(aa)):hx.forEach(t=>{e.push(t.clone().multiply(Hn).add(kn).applyMatrix4(aa))})},Ds=class extends DA{constructor(){super(...arguments);this.matrix=new dp;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new dp().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new cr);return}fx(a,t,i)}}):fx(e,t,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(aa.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Hn).multiplyScalar(.5),this.getCenter(kn),aa.copy(this.matrix).setPosition(kn),this.vertices=hx.map(e=>e.clone().multiply(Hn).applyMatrix4(aa))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=_A.map(([e,t])=>new EA(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new cr))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=BA.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Er={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as LA,CubicBezierCurve3 as pp,Vector3 as _r}from"three";var hp=class extends LA{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let c=l[s],u=s===0?o[s]:o[s]-o[s-1],p=Math.ceil(r*u/a),d=c.getPoints(p);for(let h=0;h<d.length;h++){let f=d[h];t&&t.equals(f)||(e.push(f),t=f)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var mp=.001;function yp(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=mp}function fp(n,r){let e=new _r(...n.position),t=new _r(...n.controlNext.position),o=new _r(...r.controlPrevious.position),i=new _r(...r.position);return yp(e,t,i)&&yp(e,o,i)}function Hc(n){let r=n.points.map(u=>new _r(...u.data.position)),e=[n.points[0]],t=new _r(...e[0].data.position);for(let u=0;u<n.points.length-1;u++)yp(t,r[u],r[u+1])||(e.push(n.points[u]),t=r[u]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let u=0;u<a;u++){let p=e[u].data,d=new _r(...p.position),h=new _r(...p.controlPrevious.position),f=new _r(...p.controlNext.position),m={position:d,baseRoundness:p.roundness,controlPrevious:h,controlNext:f};if(p.roundness===0||!n.isClosed&&(u===0||u===a-1)){s[u]={...m,removedLength:0};continue}let y=o&&u==0?a-1:u-1,g=o&&u==a-1?0:u+1,v=e[y].data,O=e[g].data,P=new _r(...v.position),S=new _r(...O.position),T=P.clone().sub(d).normalize(),I=S.clone().sub(d).normalize();Object.assign(m,{prevDir:T,nextDir:I});let x=fp(v,p),_=fp(p,O);if(!x||!_)s[u]={...m,removedLength:0};else{let D=T.clone().add(I).normalize(),A=D.clone().cross(T).length()/T.dot(D);s[u]={...m,tan:A,removedLength:p.roundness/A}}}for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d];if(h.removedLength!==0||f.removedLength!==0){let m=h.position.distanceTo(f.position);h.removedLength=Math.min(h.removedLength,m/2),f.removedLength=Math.min(f.removedLength,m/2)}}let l=[];for(let u=0;u<i;u++){let p=u,d=o&&u===a-1?0:u+1,h=s[p],f=s[d],m=null;if(!fp(e[p].data,e[d].data))h.position.distanceTo(f.position)>mp&&(m=new pp(h.position,h.controlNext,f.controlPrevious,f.position));else{let y=h.position.clone(),g=f.position.clone();(h.removedLength!==0||f.removedLength!==0)&&(h.nextDir&&y.add(h.nextDir.clone().setLength(h.removedLength)),f.prevDir&&g.add(f.prevDir.clone().setLength(f.removedLength))),y.distanceTo(g)>mp&&(m=new pp(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*u+1]=m}for(let u=0;u<a;u++){let p=s[u];if(p.removedLength===0){l[2*u]=null;continue}let d=p.position,h=p.prevDir.clone().multiplyScalar(p.removedLength).add(d),f=p.nextDir.clone().multiplyScalar(p.removedLength).add(d),m=p.tan*p.removedLength,y=p.prevDir.clone().add(p.nextDir).normalize(),g=h.clone().lerp(f,.5),v=h.distanceTo(f)/2,O=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(v,2))).add(g),P=y.clone().multiplyScalar(-m).add(O),S=d.distanceTo(P)/d.distanceTo(g),T=p.prevDir.clone().multiplyScalar(S*d.distanceTo(h)).add(d),I=T.clone().lerp(P,2),x=h.clone().lerp(T,4/3),_=f.clone().lerp(I,4/3);l[2*u]=new pp(h,x,_,f)}let c=new hp;return l.forEach(u=>{u&&c.add(u)}),c}var Le;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Le||(Le={}));var sa=n=>Le.is(n),VA={type:"completeState",isfromEntity:!0},zA=["x","y","z"],gp=new mx,GA=new mx().set(0,1,0),la=n=>class extends ia(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Ds;this._recursiveBBox=new Ds;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Le.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Le.is(this.children[t]))return t+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Le.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Fn.toOps(this.data,a.data).forEach(l=>{let c=Fi.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(c,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=Fn.patch(this.data,a),Fn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{sa(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Le.is(o[i]))return o[i];if(Le.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Le.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)sa(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Le.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)sa(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)sa(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>sa(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Es.RAD2DEG,this.rotation.y*Es.RAD2DEG,this.rotation.z*Es.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ri(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,zA[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(gp.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Es.DEG2RAD),this.rotation.setFromVector3(gp),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??en.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Le.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Le.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ri(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let l=t,c=Be(t.path,["states","*"]);if(c!==null){if(t.type===0){let[u]=c;if(this?.stateSelection===u){let p={...t.props};if(delete p.name,Object.values(t.props).some(d=>d===void 0)){let d=this.data;if(d!==void 0){let h=ot.zoom(d,t.path.slice(2));if(h)for(let f in t.props)t.props[f]===void 0&&f in h&&(p[f]=h[f])}}l={...t,props:p,path:t.path.slice(2)}}}}else if(t.type===0){let u=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(u!==void 0){if(t.props.name!==void 0&&u.name){let{name:d,...h}=u;u=h}if(t.props.material!==void 0&&"material"in u){let{material:d,...h}=u;u=h}let p=ot.removeOverridden(t.path,t.props,u);l={...t,props:p}}}if(this.updateByPatchedOpBase(l,Fn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Be(t.path,["overrides"])){let u=[],p=[...t.path];for(u.push(p[1]),p.splice(0,2);p.length>0&&p[0]==="descendants";)u.push(p[1]),p.splice(0,2);if(u[u.length-1]===void 0){if(t.type===0)for(let d of Object.keys(t.props)){u[u.length-1]=d;let h=i.scene.findInstance([this.uuid,...u]);h&&(h.overrideData=t.props[d],h.updateState(qr.apply(h.component.data,h.overrideData),i))}}else{let d=i.scene.findInstance([this.uuid,...u]);if(d){let h=ot.zoom(d.component.data,p);if(t={...t,path:p},t.type===0){let f=t.props;if(h)for(let[m,y]of Object.entries(t.props))y===void 0&&(f===t.props&&(f={...t.props}),f[m]=h[m]);t={...t,props:f}}d.overrideData=Qi.resolve(o.overrides,u),d.updateByOp(t,nt.applySimple(d.data,t),i,!1)}}}else if(this.instances.length>0){let u;if(t.path.length===0&&t.type===0){let p;for(let d of Zr.rootOverrideProps)d in t.props&&(p===void 0&&(p={}),p[d]=t.props[d]);p&&(u={...t,props:p})}else for(let p of Zr.rootOverrideProps)if(Be(t.path,[p])){u=t;break}u!==void 0&&this.instances.forEach(p=>{if(p.isInstanceRoot){let d=qr.filterOp(p.overrideData,u);d&&p.updateByOp(d,nt.applySimple(p.data,d),i,!0)}}),this.instances.forEach(p=>{if(!p.isInstanceRoot){let d=qr.filterOp(p.overrideData,t);if(d){let h;s===p.data&&t===d?h=o:h=nt.applySimple(p.data,d),p.updateByOp(d,h,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Ir.is(t.props.type)&&Er.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Er.changeEntityProptotype(this,o,i);for(let a of this.children)Le.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Be(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Be(t.path,["cloner"])!==null){let a=nt.drop(t,1);a.path.length===0&&a.type===0&&a.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(t=this.dataPatched.pathSnapping){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=t.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let c=l.data;if(c.geometry.path.points.length<=1)return;let u=Hc(c.geometry.path),p=(i+a)%1;i+a===1&&p===0&&(p=1);let d=u.getPointAt(p);if(d===null)return;let h=this.parent?this.parent?.matrixWorld:new Wc;l.updateMatrixWorld();let f=new Wc().multiplyMatrices(h.clone().invert(),l.matrixWorld);d.applyMatrix4(f);let m={position:d.toArray(),rotation:c.rotation};if(s==="tangential"){let y=new Wc().extractRotation(l.matrixWorld),g=u.getTangentAt(p).applyMatrix4(y).add(d),v=new Wc().lookAt(d,g,GA),O=gp.setFromEuler(new RA().setFromRotationMatrix(v)).multiplyScalar(Es.RAD2DEG);m={...m,rotation:O.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(VA)})}updateVisible(t){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!t)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&t.reloadSplats()}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Er.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Er.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}requestRender(){this.dispatchEvent({type:"requestRender"})}};import{BufferGeometry as UA,ConeGeometry as kA,Float32BufferAttribute as HA,MathUtils as WA}from"three";import{BufferGeometry as gx,CylinderGeometry as jA,Float32BufferAttribute as $c,MathUtils as FA,Vector2 as Br,Vector3 as qc}from"three";var xx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=FA.clamp(e.thetaLength,0,360);let t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:p,cornerSegments:d,hollow:h}=n.parameters,f;return l===0?(f=new gx,f.setAttribute("position",new $c([],3))):p||h?f=new _s(c,u,t,o,i,a,s,l*Math.PI/180,p,p,d,h):f=new jA(c,u,t,o,i,a,s,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function sn(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function yx(n){return new Br(n.y,-n.x)}var _s=class extends gx{constructor(r,e,t,o,i,a,s,l,c,u,p,d,h=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(c=0,u=0);let f=[],m=[],y=[],g=[],v=0,O=t/2,P=new qc,S=new qc;h&&r==0&&(r=c),h&&e==0&&(e=u);let T=new Br(r,O),I=new Br(e,-O),x=null,_=null,D=null,A=null,N=T.clone().sub(I),E=0,B=0,V=0;d>0&&(E=Math.min(r,e)*(1-d),B=r-E,V=e-E);let j=T.clone();j.x-=E;let R=Math.PI-N.angle(),W=N.angle(),F=Math.tan(W/2),k=Math.tan(R/2),H=F+k,$=d?H:k,J=d?H:F;if(c=Math.min(c,(r-B)/$,N.length()/H),u=Math.min(u,(e-V)/J,N.length()/H),c>0){let K=c/F;x=T.clone().sub(new Br(K,c)),d&&(D=x.clone(),D.x-=E-H*c),T.sub(N.clone().setLength(K))}if(u>0){let K=u/k;_=I.clone().sub(new Br(K,-u)),I.add(N.clone().setLength(K)),d&&(A=_.clone(),A.x-=E-H*u,j.sub(N.clone().setLength(K)))}N=T.clone().sub(I);let Z=N.length()<.5,X=[];for(let K=0;K<=o;K++){let q=[],ue=K/o,le=ue*l+s,ne=new Br(Math.sin(le),Math.cos(le));A&&_?(te(q,ue,ne,R,u,A,-1,!0),te(q,ue,ne,W,u,_,-1,!1)):_?(Y(q,ne,_.x,0,-1),te(q,ue,ne,W,u,_,-1,!1)):a||Y(q,ne,e,V,-1);let ce=yx(N).normalize();if(sn(ce,ne,P),!Z)for(let ae=0;ae<=i;ae++){let he=ae/i,pe=N.clone().multiplyScalar(he).add(I);sn(pe,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),q.push(v++)}if(D&&x?(te(q,ue,ne,R,c,x,1,!1),te(q,ue,ne,W,c,D,1,!0)):x?(te(q,ue,ne,R,c,x,1,!1),Y(q,ne,x.x,0,1)):a||Y(q,ne,r,B,1),d&&!Z){let ae=yx(N).multiplyScalar(-1).normalize();sn(ae,ne,P);for(let he=0;he<=i;he++){let pe=he/i,fe=N.clone().multiplyScalar(-pe).add(j);sn(fe,ne,S),m.push(S.x,S.y,S.z),y.push(P.x,P.y,P.z),g.push(ue,.5+S.y/t),q.push(v++)}}d&&!a&&q.push(q[0]),X.push(q)}for(let K=0;K<X.length-1;K++)for(let q=0;q<X[0].length-1;q++){if(a&&d&&q==i)continue;let ue=X[K][q],le=X[K+1][q],ne=X[K+1][q+1],ce=X[K][q+1],ae=m[ne*3+0],he=m[ne*3+2];f.push(ue,le,ce),(ae!=0||he!=0)&&f.push(le,ne,ce)}l<Math.PI*2&&(ee(-1,X[0],s),ee(1,X[X.length-1],s+l)),this.setIndex(f),this.setAttribute("position",new $c(m,3)),this.setAttribute("normal",new $c(y,3)),this.setAttribute("uv",new $c(g,2));function te(K,q,ue,le,ne,ce,ae,he){for(let pe=0;pe<p+1;pe++){let fe=pe/p,ge=ae<0?fe:1-fe;he&&(ge-=1),ge*=le;let me=new Br(Math.sin(ge),Math.cos(ge)*ae),C=me.clone().multiplyScalar(ne).add(ce);sn(C,ue,S),m.push(S.x,S.y,S.z),sn(me,ue,P),y.push(P.x,P.y,P.z),g.push(q,.5+S.y/t),K.push(v++)}}function Y(K,q,ue,le,ne){let ce=new qc,ae=new Br,he=[ue,le];ne<0&&he.reverse();for(let pe of he)ae.set(pe,O*ne),sn(ae,q,ce),m.push(ce.x,ce.y,ce.z),y.push(0,ne,0),g.push(.5,.5),K.push(v++)}function ee(K,q,ue){let le=new Br(Math.sin(ue),Math.cos(ue)),ne=new Br(-Math.cos(ue),Math.sin(ue)),ce=new qc,ae=K<0?(fe,ge,me)=>f.push(fe,ge,me):(fe,ge,me)=>f.push(fe,me,ge),he=new Br((r+e+B+V)/4,0);sn(he,le,ce),m.push(ce.x,ce.y,ce.z),y.push(ne.x,0,ne.y),g.push(.5,.5);let pe=v++;for(let fe of q){let ge=m.slice(fe*3,fe*3+3);m.push(...ge),y.push(ne.x,0,ne.y);let me=g.slice(fe*2,fe*2+2);g.push(...me),v++}for(let fe=pe+1;fe<v-1;fe++)ae(pe,fe,fe+1);ae(pe,v-1,pe+1)}}};var bx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=WA.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:p}=n.parameters,d;return l===0?(d=new UA,d.setAttribute("position",new HA([],3))):c>0||u>0||l<360?d=new _s(0,r/2,t,o,i,a,s,l*Math.PI/180,c,u,p,0,!0):d=new kA(r/2,t,o,i,a),d.scale(1,1,e/r),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as qA,BufferGeometry as $A,Float32BufferAttribute as xp,Vector3 as Bs}from"three";var vx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,c;return s==0?c=new qA(r,e,t,o,i,a):c=new vp(r,e,t,o,i,a,s,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},bp=Math.PI/2,vp=class extends $A{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,r/2,e/2,t/2);let u=[],p=[],d=[],h=[],f=0,m=0;y("z","y","x",-1,-1,t,e,r,a,i,0),y("z","y","x",1,-1,t,e,-r,a,i,1),y("x","z","y",1,1,r,t,e,o,a,2),y("x","z","y",1,-1,r,t,-e,o,a,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),s>0&&(g("z","y","x",-1,-1,1,t,e,r,a,0),g("z","y","x",1,-1,-1,t,e,r,a,1),g("z","y","x",-1,1,-1,t,e,r,a,1),g("z","y","x",1,1,1,t,e,r,a,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new xp(p,3)),this.setAttribute("normal",new xp(d,3)),this.setAttribute("uv",new xp(h,2));function y(O,P,S,T,I,x,_,D,A,N,E){let B=(x-2*s)/A,V=(_-2*s)/N,j=x/2-s,R=_/2-s,W=D/2,F=A+1,k=N+1,H=0,$=0,J=new Bs;for(let Z=0;Z<k;Z++){let X=Z*V-R;for(let te=0;te<F;te++){let Y=te*B-j;J[O]=Y*T,J[P]=X*I,J[S]=W,p.push(J.x,J.y,J.z),J[O]=0,J[P]=0,J[S]=D>0?1:-1,d.push(J.x,J.y,J.z),h.push(te/A),h.push(1-Z/N),H+=1}}for(let Z=0;Z<N;Z++)for(let X=0;X<A;X++){let te=f+X+F*Z,Y=f+X+F*(Z+1),ee=f+(X+1)+F*(Z+1),K=f+(X+1)+F*Z;u.push(te,Y,K),u.push(Y,ee,K),$+=6}c.addGroup(m,$,E),m+=$,f+=H}function g(O,P,S,T,I,x,_,D,A,N,E){let B=(_-2*s)/N,V=_/2-s,j=D/2-s,R=A/2,W=N+1,F=0,k=0,H=new Bs,$=new Bs;for(let J=0;J<l+1;J++){let Z=J/l*bp,X=Math.sin(Z)*s,te=(1-Math.cos(Z))*s,Y=Math.sin(Z),ee=Math.cos(Z);H[P]=(j+X)*I,H[S]=(R-te)*x,$[O]=0,$[P]=Y*Math.sign(H[P]),$[S]=ee*Math.sign(H[S]);for(let K=0;K<W;K++){let q=K*B-V;H[O]=q*T,p.push(H.x,H.y,H.z),d.push($.x,$.y,$.z),h.push(K/N),h.push(0),F+=1}}for(let J=0;J<l;J++)for(let Z=0;Z<N;Z++){let X=f+Z+W*J,te=f+Z+W*(J+1),Y=f+(Z+1)+W*(J+1),ee=f+(Z+1)+W*J;u.push(X,te,ee),u.push(te,Y,ee),k+=6}c.addGroup(m,k,E),m+=k,f+=F}function v(O,P,S){let T=new Bs,I=new Bs(r/2,e/2,t/2);I.subScalar(s);let x=[],_=O*P*S>0?(A,N,E)=>u.push(A,N,E):(A,N,E)=>u.push(A,E,N);for(let A=0;A<=l;A++){let N=[],E=bp*(1-A/l),B=Math.cos(E),V=Math.sin(E),j=0;for(let R=0;R<=A;R++){let W=Math.cos(j),F=Math.sin(j);T.x=B*W,T.y=V,T.z=B*F;let k=I.clone().addScaledVector(T,s);p.push(O*k.x,P*k.y,S*k.z),d.push(O*T.x,P*T.y,S*T.z),h.push(0,0),N.push(f++),j+=bp/A}x.push(N)}let D=x.length-1;for(let A=0;A<D;A++){let N=x[A],E=x[A+1],B=N.length-1;_(N[0],E[1],E[0]);for(let V=1;V<=B;V++)_(N[V-1],N[V],E[V]),_(N[V],E[V+1],E[V])}}}};import{BufferGeometry as YA,Float32BufferAttribute as Sp,Triangle as XA,Vector3 as No,Vector2 as wp}from"three";var ln=class extends YA{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],c=[];u(),p(),this.setAttribute("position",new Sp(s,3)),this.setAttribute("normal",new Sp(c,3)),this.setAttribute("uv",new Sp(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(a=0);let h={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new No,m=f.clone(),y=new XA,g=i*o,v=o-g,O=a+1,P=new No,S=(F,k)=>P.subVectors(F,k).normalize(),T=(F,k)=>Array(F).fill(void 0).map(k),I=T(r.length/3,(F,k)=>new No().fromArray(r,k*3).setLength(o)),x=[],_=1e6;for(let F=0;F<I.length;F++){let k=I[F],H=[],$,J,Z,X=1e10,te=-1;for(;(te=e.indexOf(F,te+1))!=-1;){let q=te-te%3;$=e[q+(te+1)%3],J=e[q+(te+2)%3],Z=k.distanceToSquared(I[$]),X=Math.min(X,Z),H.push([$,J,Z])}X+=1e-6;let Y=[],ee=0,K=H.length;for(let q=0;q<K;q++){[$,J,Z]=H[ee];let ue=x[$]?.includes(F)==!0;Z<=X&&Y.push($+ +ue*_),ee=H.findIndex(le=>le[0]==J)}x.push(Y)}let D=[];{let F=0,k=0,H,$,J=h==3;for(let Z=0;Z<=a;Z++){H=Z*(Z+1)/2,$=(Z+1)*(Z+2)/2;for(let X=0;X<a-Z;X++)[F,k]=[H+X+Z+2,$+X+Z+3],D.push(H,$,...J?[k,H]:[F,$],k,F),[H,$]=[F,k];D.push(H,$,H+a+2)}}let A=f.clone(),N=f.clone(),E=f.clone(),B=f.clone(),V=f.clone(),j=[],R=T(I.length,()=>T(h,()=>f.clone()));for(let F=0;F<I.length;F++){f.copy(I[F]).normalize(),A.copy(f).multiplyScalar(v);let k=x[F];for(let Y=0;Y<k.length;Y++){let ee=k[Y],K=k[(Y+1)%h];y.setFromPointsAndIndices(I,F,ee%_,K%_),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(A,R[F][Y])}let H=[],$=[],J=[],Z=new No;a==0&&[...R[F]].reduce((Y,ee)=>Y.add(ee),Z).multiplyScalar(1/h);for(let Y=0;Y<h;Y++){let ee=[],K=(Y-1+h)%h,q=R[F][K],ue=R[F][Y];f.copy(q).sub(A),m.copy(ue).sub(A);let le=A.angleTo(f),ne=f.angleTo(m),ce=Math.cos(le)*g;a==0?N.copy(Z):N.copy(A).setLength(v+ce),$.push(ce);let ae=[N,q,ue];for(let he=0;he<2;he++){let pe=ae[he],fe=ae[he+1];B.subVectors(pe,A),V.subVectors(fe,A),E.crossVectors(B,V).normalize();for(let ge=0;ge<O;ge++){let me=[le,ne][he]*ge/O;f.copy(B).applyAxisAngle(E,me).add(A),H.push(f.clone()),he&&(S(f,A),ee.push([ge==0?pe:f.clone(),P.clone()]))}he&&(S(fe,A),ee.push([fe,P.clone()]))}J.push(ee)}j.push(J);let X=2*O,te=2;for(let Y=0;Y<h;Y++){let ee=X*Y,K=X*((Y+1)%h),q=[H[ee]];for(let le=1;le<O;le++){B=H[ee+le],V=H[K+le],q.push(B);for(let ne=1,ce=le-te+1;ne<=ce;ne++)f.lerpVectors(B,V,ne/(ce+1)),f.sub(A).setLength($[Y]).add(A),q.push(f.clone());q.push(V)}for(let le=0;le<O;le++)q.push(H[le+O+ee]);q.push(H[K+O]);let ue=D.map(le=>q[le]);s.push(...ue.map(le=>[le.x,le.y,le.z]).flat()),c.push(...ue.map(le=>(S(le,A),[P.x,P.y,P.z])).flat())}}let W=[];for(let F=0;F<x.length;F++)for(let k=0;k<h;k++){let H=x[F][k];if(H<_){let $=x[H].findIndex(X=>X%_==F),J=j[F][k],Z=j[H][$];for(let X=0;X<O;X++){let te=J[X],Y=Z[O-X],ee=J[X+1],K=Z[O-(X+1)];[te,Y,ee,ee,Y,K].forEach(q=>{s.push(q[0].x,q[0].y,q[0].z),c.push(q[1].x,q[1].y,q[1].z)})}W.push(J[0][0],Z[O][0],J[O][0],Z[0][0])}}for(;W.length;){let F,k,H,$;[F,k]=W.splice(0,2);let J=[F];for(;F!=k;)J.push(k),H=W.indexOf(k),$=H%2,k=W.splice(H-$,2)[1-$];P.subVectors(J[0],J[1]).cross(f.subVectors(J[0],J[2])).normalize();let Z=P.dot(J[0])<0;Z&&P.negate();for(let X=1;X<=J.length-2;X++)[J[X+ +Z],J[X+1-+Z],J[0]].forEach(te=>{s.push(te.x,te.y,te.z),c.push(P.x,P.y,P.z)})}}function p(){let d=new No;for(let I=0;I<s.length;I+=3){d.x=s[I+0],d.y=s[I+1],d.z=s[I+2];let x=S(d)/2/Math.PI+.5,_=T(d)/Math.PI+.5;l.push(x,1-_)}let h=new No,f=new No,m=new No,y=new No,g=new wp,v=new wp,O=new wp,P=(I,x,_,D)=>{D<0&&I.x===1&&(l[x]=I.x-1),_.x===0&&_.z===0&&(l[x]=D/2/Math.PI+.5)};for(let I=0,x=0;I<s.length;I+=9,x+=6){h.set(s[I+0],s[I+1],s[I+2]),f.set(s[I+3],s[I+4],s[I+5]),m.set(s[I+6],s[I+7],s[I+8]),g.set(l[x+0],l[x+1]),v.set(l[x+2],l[x+3]),O.set(l[x+4],l[x+5]),y.copy(h).add(f).add(m).divideScalar(3);let _=S(y);P(g,x+0,h,_),P(v,x+2,f,_),P(O,x+4,m,_)}for(let I=0;I<l.length;I+=6){let x=l[I+0],_=l[I+2],D=l[I+4],A=Math.max(x,_,D),N=Math.min(x,_,D);A>.9&&N<.1&&(x<.2&&(l[I+0]+=1),_<.2&&(l[I+2]+=1),D<.2&&(l[I+4]+=1))}function S(I){return Math.atan2(I.z,-I.x)}function T(I){return Math.atan2(-I.y,Math.sqrt(I.x*I.x+I.z*I.z))}}}static fromJSON(r){return new ln(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as KA}from"three";var Sx=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ls(r*.5,i,a):new KA(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Ls=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],s=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(a,s,l,r,e,t),this.type=l}static fromJSON(r){return new Ls(r.radius,r.corner,r.cornerSides)}};import{Plane as sM,Shape as Rx,Vector2 as Do,Vector3 as lM,MathUtils as Ip,LineCurve as Np,QuadraticBezierCurve as Vx,CubicBezierCurve as Qc}from"three";import{CubicBezierCurve as Yc,EllipseCurve as QA,LineCurve as Xc,LineCurve3 as ZA,MathUtils as JA,QuadraticBezierCurve as Op,SplineCurve as eM,Vector2 as Ft,Vector3 as Ox}from"three";var Rs=1e-12,ca=class{constructor(r){this.position=new Ft;this.startPosition=new Ft;this.uuid=JA.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new ca(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ua=class extends ca{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ua(this.parent).copy(this)}},Lr=class extends ca{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ua(this),new ua(this))}static create(e,t){let o=new Lr(e,new Ft(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Lr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new Ft,t=new Ft){let[o,i]=this.computeTangents();return o&&i&&(wx(o,e),wx(i,t)),[e,t]}computeTangent(e=new Ft){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Ft){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function wx(n,r=new Ft){let e=n.length();return r.set(-n.y/e,n.x/e)}var Cp=n=>n,da=new Ft,Kc=new Ft,tM=new Ft,rM=new Ft,oM=new Ft,nM=new Ft,Cx=new Ox,Tx=new Ox;function Ax(n){let r=new Ft;r.addVectors(n.v0,da.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Ft;return e.addVectors(n.v2,Kc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Yc(n.v0,r,e,n.v2)}function Vs(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function iM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function aM(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Tp(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function Mx(n,r,e){return Px(n,r)&&Px(r,e)&&Pp(n.position,r.position,e.position)}function Pp(n,r,e){return da.copy(r).sub(n).cross(Kc.copy(e).sub(n))===0}function Ix(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(s+l,a+c),o.set(s-l,a-c),[t,o]}function Nx(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Dx(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((a+l)*(a+l)+(s+c)*(s+c)),p;return Tp(r,n,e)>Math.PI&&(u*=-1),Vs(c,s)?p=(s+c)*(t/u-.5)*8/3/(a-l):p=(a+l)*(t/u-.5)*8/3/(c-s),o.set(r.x-p*s,r.y+p*a),i.set(e.x+p*c,e.y-p*l),[o,i]}function Ap(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Px(n,r){return Pp(n.position,n.controls[1].position,r.position)&&Pp(n.position,r.controls[0].position,r.position)}function Ex(n,r,e,t,o=.5){let i=da.subVectors(r,n).multiplyScalar(o).add(n),a=Kc.subVectors(e,r).multiplyScalar(o).add(r),s=tM.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=rM.subVectors(a,i).multiplyScalar(o).add(i),u=oM.subVectors(s,a).multiplyScalar(o).add(a),p=s,d=nM.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,u.x,u.y,p.x,p.y,t.x,t.y]}function _x(n,r,e=12,t=!0){let o=Tx.set(0,0,0),i,a=0,s=[];for(let l=0;l<r.length;l++){let c=Cp(r[l]),u=da,p=cn(c,e);s.push(p);for(let d=0;d<=p;d++)if(c instanceof Yc||c instanceof Op||c instanceof Xc){if(c.getPoint(d/p,u),o.set(u.x,u.y,0),i!==void 0&&aM(i,o))continue;i===void 0&&(i=Cx),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function Bx(n,r,e,t=12,o=!0){let i=Tx.set(0,0,0),a=0,s=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=Cp(r[l]),p=da,d=cn(u,t);s.push(d);for(let h=0;h<=d;h++)if(u instanceof Yc||u instanceof Op||u instanceof Xc){if(u.getPoint(h/d,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=Cx:(n.setXYZ(a,c.x,c.y,c.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),c.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Mp(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=cn(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=cn(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=cn(n[0].roundedCurveCorner,r)*.5),t}function cn(n,r=12){return n&&n instanceof QA?r*2:n&&(n instanceof Xc||n instanceof ZA)?1:n&&n instanceof eM?r*n.points.length:r}function Lx(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Cp(r[a]),l=cn(s,e),c=da;for(let u=0;u<=l;u++)if(s instanceof Yc||s instanceof Op||s instanceof Xc){if(s.getPoint(u/l,c),o!==void 0&&iM(o,c,Rs))continue;o===void 0&&(o=Kc),o.copy(c),n.push(c.x,c.y),i++}}return Vs(n[0],n[n.length-2],Rs)&&Vs(n[1],n[n.length-1],Rs)&&(n.pop(),n.pop()),t&&i>1&&!(Vs(n[i-1],n[1],Rs)&&Vs(n[i-2],n[0],Rs))&&(n.push(n[0],n[1]),i++),n}var Dp=new Do,cM=new Do,uM=new Do,dM=new Do,pM=new Do,fM=new Do,Fe=class extends Rx{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new sM(new lM(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ip.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Fe;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Lr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Fe.createFromState(a)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],c=l.points.length,u=l.getPointIndexById(e);if(u<0)i+=c;else return u+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=Dp.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ip.generateUUID()){let i;e instanceof Do?i=e:i=new Do(e,t);let a=new Lr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return _x(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Mp(this.points,e,!1),this.roundedCurveDivisions=Mp(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Bx(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Lx(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=cn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(s<o+u)return[l,(s-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Ap(i,a)){let p=i.position.distanceTo(a.position);return i.position.distanceTo(Dp.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=s[p];return(t-c)/l}dispose(){}_applyCurveForPoint(e,t){Ap(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[t-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],c=a.roundness,u=s&&l&&Mx(s,a,l);if(!a.controlsMoved()&&c>0&&!u){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let h=a.roundedCurveBefore,f=a.roundedCurveAfter,m=p.getLength(),y=d.getLength(),g=Math.min(c,m*.499),v=Math.min(c,y*.499),O=Math.min(g,v),P=1-O/m,S=O/y,T=p.getPointAt(P,Dp),I=d.getPointAt(S,cM);this._subSplitCurve(p,h,P,T,void 0),this._subSplitCurve(d,f,S,void 0,I);let x;if(this.useCubicForRoundedCorners){let _=Tp(T,a.position,I)/2,D=Math.tan(_)*T.distanceTo(a.position),[A,N]=Ix(T,I,D,uM,dM),E=Nx(A,N,a.position),[B,V]=Dx(E,T,I,D,pM,fM);x=new Qc(T.clone(),B.clone(),V.clone(),I.clone())}else x=new Vx(T.clone(),a.position.clone(),I.clone());a.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Np)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,l=t,c=s.getUtoTmapping(o,0),u=Ex(s.v0,s.v1,s.v2,s.v3,c);return i!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),a!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return t}clone(){let e=new Fe(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],p=e.points[i+5],d=e.points[i+6],h=new Lr(Ip.generateUUID(),new Do(a,s));h.controls[0].position.set(l,c),h.controls[1].position.set(u,p),h.roundness=d,this.points.push(h)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Fe;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Qc&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,c;for(l=0,c=a.length;l<c;l++)a[l]instanceof Vx&&(a[l]=Ax(a[l]));for(l=0,c=a.length;l<c;l++){let d=a[l],h=l>0?a[l-1]:null,f;d instanceof Qc?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Np&&(f=this.createPoint(d.v1)),f!==void 0&&(h!==null&&o(f,h),s.push(f))}let u=a[a.length-1],p=!1;return u instanceof Qc?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),p=!0):u instanceof Np&&u.v2.equals(s[0].position)&&(p=!0),this.isClosed=p,s};return this.points=i(e.curves),e instanceof Rx&&(this.shapeHoles=e.holes.map(a=>{let s=new Fe;return s.fromShape(a),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var _p=Math.PI*2;function Ep({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function hM(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function zx(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function mM(n,r,e,t,o,i,a,s,l,c){let u=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(a,2),h=Math.pow(s,2),f=u*p-u*h-p*d;f<0&&(f=0),f/=u*h+p*d,f=Math.sqrt(f)*(l===c?-1:1);let m=f*o/i*s,y=f*-i/o*a,g=m+(n+e)/2,v=y+(r+t)/2,O=(a-m)/o,P=(s-y)/i,S=(-a-m)/o,T=(-s-y)/i,I=zx(1,0,O,P),x=zx(O,P,S,T);return!c&&x>0&&(x-=_p),c&&x<0&&(x+=_p),{centerx:g,centery:v,ang1:I,ang2:x}}function Gx({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=mM(n,r,e,t,o,i,c,u,a,s),{ang1:h,ang2:f}=d,{centerx:m,centery:y}=d,g=Math.abs(f)/(_p/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);f/=v;for(let O=0;O<v;O++)l.push(hM(h,f)),h+=f;return l.map(O=>{let{x:P,y:S}=Ep(O[0],o,i,m,y),{x:T,y:I}=Ep(O[1],o,i,m,y),{x,y:_}=Ep(O[2],o,i,m,y);return{x1:P,y1:S,x2:T,y2:I,x,y:_}})}import{BufferAttribute as ru,BufferGeometry as AM}from"three";var Ge;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ge||(Ge={}));var it;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(it||(it={}));function we(n,r){if(!n)throw r||"Assertion Failed!"}var be=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){we(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){we(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var a,s,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,o.t)):i.t=(t.t+e.t)/2},n}(),zs=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Zc=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),pa=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),jx=function(){function n(){var r=new pa,e=new zs,t=new Zc(0),o=new Zc(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Zc(0),t=new Zc(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;we(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;we(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new pa,e=new pa,t=new zs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new pa;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new zs;this.makeFace_(a,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new zs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new pa;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var a=new zs;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);a=r.prev,s=r.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=r&&be.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&be.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){we(o.prev===i),l=o.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(we(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){we(a.prev===s),l=a.anEdge;do we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l),we(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(we(a.prev===s&&a.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)we(l.Sym.next===c.Sym),we(l.Sym!==l),we(l.Sym.Sym===l),we(l.Org!==null),we(l.Dst!==null),we(l.Lnext.Onext.Sym===l),we(l.Onext.Sym.Lnext===l);we(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Fx=function(){function n(){this.handle=null}return n}(),Ux=function(){function n(){this.key=null,this.node=0}return n}(),yM=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Fx,this.handles[t]=new Ux;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,we(a<=this.max),i=e[a].handle,a>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=a}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Fx;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ux}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;we(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Bp=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),kx=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),gM=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new kx,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new kx;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),xM=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,a=t.eUp;if(i.Dst===o)return a.Dst===o?be.vertLeq(i.Org,a.Org)?be.edgeSign(a.Dst,i.Org,a.Org)<=0:be.edgeSign(i.Dst,a.Org,i.Org)>=0:be.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return be.edgeSign(i.Dst,o,i.Org)>=0;var s=be.edgeEval(i.Dst,o,i.Org),l=be.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&we(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){we(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Bp;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Ge.ODD:return(e&1)!==0;case Ge.NONZERO:return e!==0;case Ge.POSITIVE:return e>0;case Ge.NEGATIVE:return e<0;case Ge.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,l,c,u,p=!0;c=t;do we(be.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;s=n.regionBelow(l),c=s.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),s.windingNumber=l.windingNumber-c.winding,s.inside=n.isWindingInside(r,s.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),p=!1,l=s,u=c;l.dirty=!0,we(l.windingNumber-c.winding===s.windingNumber),a&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=be.vertL1dist(e,r),i=be.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(be.vertLeq(o.Org,i.Org)){if(be.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;be.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(be.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a;if(we(!be.vertEq(o.Dst,i.Dst)),be.vertLeq(o.Dst,i.Dst)){if(be.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(be.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,l=o.Dst,c=i.Dst,u,p,d=new pa,h,f;if(we(!be.vertEq(c,l)),we(be.edgeSign(l,r.event,a)<=0),we(be.edgeSign(c,r.event,s)>=0),we(a!==r.event&&s!==r.event),we(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(u=Math.min(a.t,l.t),p=Math.max(s.t,c.t),u>p))return!1;if(be.vertLeq(a,s)){if(be.edgeSign(c,a,s)>0)return!1}else if(be.edgeSign(l,s,a)<0)return!1;return n.debugEvent(r),be.intersect(l,a,c,s,d),we(Math.min(a.t,l.t)<=d.t),we(d.t<=Math.max(s.t,c.t)),we(Math.min(c.s,l.s)<=d.s),we(d.s<=Math.max(s.s,a.s)),be.vertLeq(d,r.event)&&(d.s=r.event.s,d.t=r.event.t),h=be.vertLeq(a,s)?a:s,be.vertLeq(h,d)&&(d.s=h.s,d.t=h.t),be.vertEq(d,a)||be.vertEq(d,s)?(n.checkForRightSplice(r,e),!1):!be.vertEq(l,r.event)&&be.edgeSign(l,r.event,d)>=0||!be.vertEq(c,r.event)&&be.edgeSign(c,r.event,d)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(be.edgeSign(l,r.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),be.edgeSign(c,r.event,d)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,a,l,s,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,c=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(r,e),be.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),c=!0),be.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,a,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}be.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,a,s,l;if(o=e.eUp,be.vertEq(o.Org,t)){we(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!be.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}we(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(we(i!==a),n.deleteRegion(r,l),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),be.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,l,c=new Bp;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,be.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=be.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var u=r.mesh.connect(s.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);we(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new Bp,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new gM(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(we(e.fixUpperEdge),we(++t===1)),we(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,be.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new yM(i,be.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,we(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!be.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),bM=function(){function n(){this.mesh=new jx,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ge.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,a,s,l=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],d=[0,0,0],h=[null,null,null],f=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],c[y]=i,f[y]=e,l[y]=i,h[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<c[g]&&(c[g]=i,f[g]=e),i>l[g]&&(l[g]=i,h[g]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=f[v],o=h[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=m.next;e!==m;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=u[1]*p[2]-u[2]*p[1],d[1]=u[2]*p[0]-u[0]*p[2],d[2]=u[0]*p[1]-u[1]*p[0],a=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],a>s&&(s=a,r[0]=d[0],r[1]=d[1],r[2]=d[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;be.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;be.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(be.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(be.edgeGoesLeft(o.Lnext)||be.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(be.edgeGoesRight(t.Lprev)||be.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,a=0,s=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=s,s++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=a,++a}this.elementCount=a,e===it.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var c=r.vHead.next;c!==r.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,u=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var h=l;h<t;++h)this.elements[d++]=-1;if(e===it.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,a++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new jx),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,a){if(r===void 0&&(r=Ge.ODD),e===void 0&&(e=it.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),xM.computeInterior(this,a);var s=this.mesh;return e===it.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===it.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Rr(n){var r=n.windingRule,e=r===void 0?Ge.ODD:r,t=n.elementType,o=t===void 0?it.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,c=n.normal,u=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,h=n.strict,f=h===void 0?!0:h,m=n.debug,y=m===void 0?!1:m;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var g=new bM;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)g.addContour(l||2,d[v]);return g.tesselate(e,o,a,l,u,f),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var wW=Ge.ODD,PW=Ge.NONZERO,OW=Ge.POSITIVE,CW=Ge.NEGATIVE,TW=Ge.ABS_GEQ_TWO,AW=it.POLYGONS,MW=it.CONNECTED_POLYGONS,IW=it.BOUNDARY_CONTOURS;import{Box2 as OM,BufferAttribute as tu,BufferGeometry as CM,Vector2 as TM}from"three";var Jc=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Jc.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Jc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let l=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,2*r);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),c.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),c.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=c,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Gs=Jc;Gs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var $x=hi(qx()),js={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Gp={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},jp={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},zp=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),dn=class extends CM{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(A=>{let N=A.extractShapePointsToFlatArray([],i),E=[];for(let B=N.length-1;B>=1;B-=2){let V=N[B-1],j=N[B-0];E.push(V,j)}return E}),p=[],d=[];for(let A=0;A<c.length;A+=2)d.push([c[A],c[A+1]]);p.push(d);for(let A=0;A<u.length;A++){let N=u[A],E=[];for(let B=0;B<N.length;B+=2)E.push([N[B],N[B+1]]);p.push(E)}let h;e.isText?h=new OM().setFromPoints(e.points.map(N=>N.position)).getSize(new TM).length()*.1:p[0].length===0?h=o:h=(0,$x.default)(p).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,h,t/2),this._bevelSegments=Math.floor(a));let f;try{f=Rr({windingRule:s,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{f=js}let m;try{m=Rr({windingRule:Ge.ODD,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{m=Gp}if(!f)throw new Error("error generating geometry");let y=f.elementCount;if(m){f.elementCount+=m.elementCount;for(let A=0;A<m.elements.length;A++){let N=m.elements[A],E=A%2===0?f.vertexCount:0;f.elements.push(N+E)}for(let A=0;A<m.vertexIndices.length;A++){let N=m.vertexIndices[A],E=f.vertexCount;f.vertexIndices.push(N+E)}for(let A=0;A<m.vertices.length;A++){let N=m.vertices[A];f.vertices.push(N)}}let g=1/0,v=-1/0,O=1/0,P=-1/0;for(let A=0,N=f.vertexCount;A<N;A++){let E=A*2,B=f.vertices[E+0],V=f.vertices[E+1];B<g&&(g=B),B>v&&(v=B),V<O&&(O=V),V>P&&(P=V)}this._minX=g,this._minY=O,this._width=v-g,this._height=P-O,this._buffer=new Gs(this._computeBufferEstimatedSize(f));let S=[],T=[];for(let A=f.elementCount-1;A>=0;A--){let N=A>=y,E=A*2,B=f.elements[E+0],V=f.elements[E+1],j=B+V,R={start:B,count:V,normals:[],continuous:[],concave:[]},W=B,F=j-1,k=B+1,H=this._shape.roundedCurves.length;do{let te=W-B,Y=f.vertices[F*2+0],ee=f.vertices[F*2+1],K=f.vertices[W*2+0],q=f.vertices[W*2+1],ue=f.vertices[k*2+0],le=f.vertices[k*2+1],ne=K-Y,ce=q-ee,ae=Math.sqrt(ne*ne+ce*ce);ne/=ae,ce/=ae;let he=K-ue,pe=q-le,fe=Math.sqrt(he*he+pe*pe);he/=fe,pe/=fe,R.normals[te*2+0]=-pe,R.normals[te*2+1]=he,R.concave[te]=ne*pe-ce*he>0;let ge=f.vertexIndices[W];if(Array.isArray(ge))R.continuous[te]=!1;else{let[me,C]=this._shape.getCurveIndexFromVertexId(ge-1,!0);if(C>0&&C<1)R.continuous[te]=!0;else{let ie=C===1?me+1:me-1;ie=(ie+H)%H;let De=C===1?0:1,Re=this._shape.roundedCurves[me].getTangent(C),Ee=this._shape.roundedCurves[ie].getTangent(De);R.continuous[te]=Re.dot(Ee)>.95}}N&&(R.normals[te*2+0]*=-1,R.normals[te*2+1]*=-1),[F,W,k]=[W,k,k+1],k>=j&&(k-=V)}while(k!==B+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:f.vertices.slice(B*2,j*2),vertexCount:V,vertexIndices:new Array(V).fill(!0).map((te,Y)=>[Y,Y]),elements:[0,V],elementCount:1,mesh:null},reverseMap:[],insetPoints:f.vertices.slice(B*2,j*2)});let J=0;for(let te=1;te<=this._bevelSegments;te++){let Y=te/this._bevelSegments*Math.PI/2,ee=(1-Math.cos(Y))*this._bevel,K=[],q=[],ue=[],le=[],ne=0;for(let ae=0;ae<V;ae++){let he=ae*2,pe=(ae-1+V)%V*2,fe=f.vertices[R.start*2+he+0],ge=f.vertices[R.start*2+he+1],me=-R.normals[pe+0]*ee,C=-R.normals[pe+1]*ee,ie=-R.normals[he+0]*ee,De=-R.normals[he+1]*ee;if(R.concave[ae]||!R.concave[ae]&&N){let Re=Math.atan2(C,me),Ee=Math.atan2(De,ie);Ee>Re&&(Ee-=Math.PI*2);let Pe=Ee-Re;if(R.continuous[ae]||N){let bt=Re+Pe/2,Me=Math.cos(bt)*ee,yt=Math.sin(bt)*ee;K[2*ne+0]=fe+Me*(N?-1:1),K[2*ne+1]=ge+yt*(N?-1:1),le[ne]=ae,ne++}else{let bt=Math.max(1,Math.floor(i/4*Math.abs(Pe)/Math.PI));for(let Me=0;Me<=bt;Me++){let yt=Re+Pe*(Me/bt),vt=Math.cos(yt)*ee,An=Math.sin(yt)*ee;K[2*ne+0]=fe+vt,K[2*ne+1]=ge+An,le[ne]=ae,ne++}}}else K[2*ne+0]=fe+me,K[2*ne+1]=ge+C,le[ne]=ae,q[ae]=ne,ne++,K[2*ne+0]=fe,K[2*ne+1]=ge,le[ne]=ae,ne++,K[2*ne+0]=fe+ie,K[2*ne+1]=ge+De,le[ne]=ae,ue[ae]=ne,ne++}let ce=Rr({windingRule:Ge.POSITIVE,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[K],edgeCreateCallback:ae=>{let pe=ae.Org.idx,fe=le[pe],ge=le[(pe+1)%le.length];ae.idx=[fe,ge],ae.Sym.idx=[ge,fe]},vertexIdCallback:ae=>{let he=ae.Lprev.idx;return[he?he[1]:0,ae.idx?ae.idx[0]:0]}});if(!ce)throw console.log("Error"),new Error(`error generating bevel geometry for ${te}'th loop`);if(!ce.vertexCount){let ae=(te-1)/this._bevelSegments*Math.PI/2;J=(1-Math.sin(ae))*this._bevel;break}for(let ae=0;ae<ce.vertexIndices.length;ae++){let[he,pe]=ce.vertexIndices[ae];if(he===pe)continue;let fe=pe;pe<he&&(fe+=V);for(let ge=he;ge<fe;ge++){let me=ge%V,C=(ge+1)%V;if(!R.continuous[me]||!R.continuous[C]){ce.vertexIndices[ae]=[he,me],ce.vertexIndices.splice(ae+1,0,[C,pe]),ce.vertices.splice((ae+1)*2,0,ce.vertices[ae*2],ce.vertices[ae*2+1]);break}}}$.push({bevelI:te,angle:Y,size:ee,boundary:ce,reverseMap:le,insetPoints:K})}let Z=(te,Y,ee)=>{let K=0,q=te.boundary.vertexIndices.length;for(;K<q&&ee(te.boundary.vertexIndices[Y]);)Y=(Y+1)%q,K++;return K},X=S.length;for(let te=1;te<$.length;te++){let Y=$[te-1],ee=$[te],K=Y.boundary.vertexIndices.length,q=ee.boundary.vertexIndices.length;if(!K||!q)break;let ue=R.concave.length,le=0,ne=zp(le,V);for(;!Y.boundary.vertexIndices.filter(ne).length||!ee.boundary.vertexIndices.filter(ne).length;)le++,ne=zp(le,V);let ce=Y.boundary.vertexIndices.findIndex(ne),ae=ee.boundary.vertexIndices.findIndex(ne);do ce=(ce+1)%K;while(ne(Y.boundary.vertexIndices[ce]));do ae=(ae+1)%q;while(ne(ee.boundary.vertexIndices[ae]));le=(le+1)%V;let he=le,pe=0,fe=this._buildBevelVert(R,Y,(ce-1+K)%K,void 0,pe),ge=this._buildBevelVert(R,ee,(ae-1+q)%q,void 0,pe),me=fe,C=ge,ie,De,Re=!1;do{pe=(le||ue)/ue,ne=zp(le,V);let Ee=Z(Y,ce,ne),Pe=Z(ee,ae,ne),bt=Re;if(Re=!1,Ee&&!Pe){for(let Me=0;Me<Ee;Me++)ie=this._buildBevelVert(R,Y,(ce+Me)%K,Me/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie;Re=!0}else if(!Ee&&Pe)for(let Me=0;Me<Pe;Me++)De=this._buildBevelVert(R,ee,(ae+Me)%q,Me/(Pe-1),pe),S.push(C.topN,me.topP,De.topP),l===!1&&S.push(me.bottomP,C.bottomN,De.bottomP),C=De;else if(Ee&&Pe)if(ie=this._buildBevelVert(R,Y,ce,0,pe),De=this._buildBevelVert(R,ee,ae,0,pe),bt?(S.push(me.topN,De.topP,C.topN),S.push(me.topN,ie.topP,De.topP),l===!1&&(S.push(De.bottomP,me.bottomN,C.bottomN),S.push(De.bottomP,ie.bottomP,me.bottomN))):(S.push(C.topN,me.topN,ie.topP),S.push(C.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,De.bottomP))),me=ie,C=De,Ee===Pe)for(let Me=1;Me<Ee;Me++)ie=this._buildBevelVert(R,Y,(ce+Me)%K,Me/(Ee-1),pe),De=this._buildBevelVert(R,ee,(ae+Me)%q,Me/(Pe-1),pe),S.push(me.topN,ie.topP,C.topN),S.push(C.topN,ie.topP,De.topP),l===!1&&(S.push(ie.bottomP,me.bottomN,C.bottomN),S.push(ie.bottomP,C.bottomN,De.bottomP)),me=ie,C=De;else if(Ee>Pe){let Me=Ee/Pe,yt=0;for(let vt=1;vt<Ee;vt++)ie=this._buildBevelVert(R,Y,(ce+vt)%K,vt/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie,vt>(yt+1)*Me&&(yt++,De=this._buildBevelVert(R,ee,(ae+yt)%q,yt/(Pe-1),pe),S.push(C.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,C.bottomN,De.bottomP),C=De)}else{let Me=Pe/Ee,yt=0;for(let vt=1;vt<Pe;vt++)De=this._buildBevelVert(R,ee,(ae+vt)%q,vt/(Pe-1),pe),S.push(C.topN,ie.topP,De.topP),l===!1&&S.push(ie.bottomP,C.bottomN,De.bottomP),C=De,vt>(yt+1)*Me&&(yt++,ie=this._buildBevelVert(R,Y,(ce+yt)%K,yt/(Ee-1),pe),S.push(me.topN,ie.topP,C.topN),l===!1&&S.push(ie.bottomP,me.bottomN,C.bottomN),me=ie)}ce=(ce+Ee)%K,ae=(ae+Pe)%q,le=(le+1)%ue}while(le!==he)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall($,R,S),N){let te=[];for(let Y=S.length-1;Y>=X+2;Y-=3){let ee=S[Y-2],K=S[Y-1],q=S[Y-0];te.push(q,K,ee)}S.splice(X,S.length-X,...te)}if(N){let te=[];for(let Y=$[$.length-1].boundary.vertices.length-1;Y>=1;Y-=2){let ee=$[$.length-1].boundary.vertices[Y-1],K=$[$.length-1].boundary.vertices[Y-0];te.push(ee,K)}T.push(te)}if(!N){let te=$[$.length-1],Y;try{Y=Rr({windingRule:$.length>1?Ge.POSITIVE:Ge.ODD,elementType:it.POLYGONS,vertexSize:2,strict:!0,contours:[te.insetPoints,...T]})}catch{Y=jp}if(!Y)throw new Error("Error generating geometry for surface");u.length===0&&this._bevel<h&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let ee=0;ee<Y.elementCount*3;ee+=3){let K=this._buildSurfaceVert(Y,Y.elements[ee+0],J),q=this._buildSurfaceVert(Y,Y.elements[ee+1],J),ue=this._buildSurfaceVert(Y,Y.elements[ee+2],J);S.push(K.top,q.top,ue.top),l===!1&&S.push(ue.bottom,q.bottom,K.bottom)}}this.vertexCache={}}this._buffer.shrink();let I=new tu(Uint32Array.from(S),1),x=new tu(this._buffer.positions,3),_=new tu(this._buffer.normals,3),D=new tu(this._buffer.uvs,2);x.needsUpdate=!0,_.needsUpdate=!0,D.needsUpdate=!0,I.needsUpdate=!0,this.setAttribute("position",x),this.setAttribute("normal",_),this.setAttribute("uv",D),this.setIndex(I)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(a-this._minX)/this._width,c=(s-this._minY)/this._height;this.forPathBevel&&(c=1);let u=this._buffer.get(this.forPathBevel?1:2),p=u*3,d=u*2,h={top:u+0,bottom:u+1};return this._buffer.positions[p+0]=a,this._buffer.positions[p+1]=s,this._buffer.positions[p+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[p+0]=0,this._buffer.normals[p+1]=0,this._buffer.normals[p+2]=1,this._buffer.uvs[d+0]=l,this._buffer.uvs[d+1]=c,this.forPathBevel===!1&&(this._buffer.positions[p+3]=a,this._buffer.positions[p+4]=s,this._buffer.positions[p+5]=o,this._buffer.normals[p+3]=0,this._buffer.normals[p+4]=0,this._buffer.normals[p+5]=-1,this._buffer.uvs[d+2]=l,this._buffer.uvs[d+3]=c),this.vertexCache[i]=h,h}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,p,d,h;l!==c?(p=l,u=c,h=!1,d=e.continuous[p]&&e.continuous[u]):(u=l,p=(u-1+e.count)%e.count,h=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||h);let f=Math.cos(t.angle),m=Math.sin(t.angle),y=o*2,g=u*2,v=p*2,O=t.boundary.vertices[y+0],P=t.boundary.vertices[y+1],S=(1-m)*this._bevel,T=(O-this._minX)/this._width,I=(P-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),I=1);let x=e.normals[g+0],_=e.normals[g+1],D=e.normals[v+0],A=e.normals[v+1];if(h){let j=D-x,R=A-_;x=x+j*(1-i),_=_+R*(1-i);let W=Math.sqrt(x*x+_*_);x/=W,_/=W}let N=this.forPathBevel?this._buffer.get(d?1:2):this._buffer.get(d?2:4),E=N*3,B=N*2,V={i:o,fi:u,topP:N+0,topN:N+0,bottomP:N+1,bottomN:N+1,pathBevelUCoord:a};return this._buffer.positions[E+0]=O,this._buffer.positions[E+1]=P,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=x*f,this._buffer.normals[E+1]=_*f,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[E+3]=O,this._buffer.positions[E+4]=P,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=x*f,this._buffer.normals[E+4]=_*f,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T),d||(this.forPathBevel?(N+=1,E+=3,B+=2):(N+=2,E+=6,B+=4),V.topP=N+0,V.bottomP=N+1,this._buffer.positions[E+0]=O,this._buffer.positions[E+1]=P,this._buffer.positions[E+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[E+0]=D*f,this._buffer.normals[E+1]=A*f,this._buffer.normals[E+2]=m,this._buffer.uvs[B+0]=T,this._buffer.uvs[B+1]=I,this.forPathBevel===!1&&(this._buffer.positions[E+3]=O,this._buffer.positions[E+4]=P,this._buffer.positions[E+5]=S,this._buffer.normals[E+3]=D*f,this._buffer.normals[E+4]=A*f,this._buffer.normals[E+5]=-m,this._buffer.uvs[B+2]=I,this._buffer.uvs[B+3]=T)),this.vertexCache[s]=V,V}clone(){let e=new dn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var fa=class extends AM{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ge.ODD;this.elementType=it.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ge.ODD,elementType:it.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,c=!0,u,p;for(let f=0,m=i.length/2;f<m;f++){let y=f*2,g=i[y+0],v=i[y+1];if(u!==void 0&&g!==u&&(l=!1),p!==void 0&&v!==p&&(c=!1),u=g,p=v,!l&&!c)break}if(!l&&!c)try{s=Rr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=js}let d=s?.vertexCount??1,h=s?.elementCount??1;if(this._positionAttribute=new ru(new Float32Array(d*3),3),this._normalAttribute=new ru(new Float32Array(d*3),3),this._uvAttribute=new ru(new Float32Array(d*2),2),this._indexAttribute=new ru(new Uint32Array(h*3),1),s){let f=1/0,m=-1/0,y=1/0,g=-1/0;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1];I<f&&(f=I),I>m&&(m=I),x<y&&(y=x),x>g&&(g=x)}let v=m-f,O=g-y;for(let P=0,S=d;P<S;P++){let T=P*2,I=s.vertices[T+0],x=s.vertices[T+1],_=(I-f)/v,D=(x-y)/O;this._positionAttribute.setXYZ(P,I,x,0),this._normalAttribute.setXYZ(P,0,0,1),this._uvAttribute.setXY(P,_,D)}for(let P=0,S=h;P<S;P++){let T=P*3,I=s.elements[T+0],x=s.elements[T+1],_=s.elements[T+2];this._indexAttribute.setX(T+0,I),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,_)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new fa(this._shape,this._curveSegments);return e.userData=vo(this.userData),e}};var ha=class extends dn{constructor(e,t,o=0,i=12,a=3,s=Ge.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(t,i,a),c=this._buildBevelVert(t,i,(a+1)%s);o.push(c.topP,l.topN,l.bottomN),o.push(c.topP,l.bottomN,c.bottomP)}}clone(){let e=new ha(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=vo(this.userData),e}};var Jt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ge.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Fe?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Fe(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Fe(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new fa(n.shape,o,{windingRule:a}):s=new ha(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{BufferGeometry as MM,Float32BufferAttribute as IM,MathUtils as Fp,Vector2 as Xx}from"three";var Kx=Math.PI*2,ya=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=Fp.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,p=e*.5,d=NM(c,u,p,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let h;return o===0?(h=new MM,h.setAttribute("position",new IM([],3))):h=Jt.create({shape:c,parameters:{subdivisions:d,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(h,{userData:{...n,type:"EllipseGeometry"}})}};function NM(n,r,e,t,o,i){if(t>=Kx)return o>30||o%4===0?(EM(n,r,e,i),Math.round(o/4)):Yx(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,l={x:Math.cos(s)*r,y:Math.sin(s)*e},c=Gx({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?DM(n,a.x,a.y,c,o,r,e,i):Yx(n,t,o,r,e,i)}function DM(n,r,e,t,o,i,a,s){let l=Math.round(o/t.length);n.addPoint(ma(r,e));for(let c=0,u=t.length;c<u;c++){let p=t[c],d=n.points[c],h=ma(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),h.controls[0].position.set(p.x2,p.y2),n.addPoint(h)}return s>0?Qx(n,i,a,s):n.addPoint(ma(0,0)),l}function Yx(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let l=a*s,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(ma(c,u))}return r<Kx?i>0?Qx(n,t,o,i):n.addPoint(ma(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Zx(n,t,o,i)),1}function EM(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,l=e*a;n.addPoint(ou(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(ou(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ou(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(ou(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Zx(n,r,e,t)}function ma(n,r){return new Lr(Fp.generateUUID(),new Xx(n,r))}function ou(n,r,e,t,o,i){let a=ma(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function Qx(n,r,e,t){Jx(n,r,e,t).forEach(i=>n.addPoint(i))}function Zx(n,r,e,t){let o=Jx(n,r,e,t),i=new Fe;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Jx(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Xx(o/r,i/e),s=n.points.map(l=>{let c=l.clone();return c.uuid=Fp.generateUUID(),c}).reverse();return s.forEach(l=>{l.position.multiply(a);let c=l.controls[0].position.clone().multiply(a),u=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),s}import{BufferGeometry as _M,Float32BufferAttribute as Up,Uint32BufferAttribute as BM,Vector3 as e0}from"three";var t0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:p}=n.parameters,d=new Fs(!1,r,e,t,o,i,a,s,l,c,u,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},kp=new BM([0,0,0],1),Fs=class extends _M{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,l=1,c=1,u=1,p=1,d=1){if(super(),a===0)return;let h=r&&a===1;h&&(d=0),p>100&&(p=100),p===0&&(d=0);let f=()=>new e0,m=new e0,y=f(),g=f(),v=f(),O,P,S,T,I,x,_,D,A=f(),N=f(),E=f(),B=f(),V=f(),j=f(),R=f(),W=f(),F=t-2*l+.001,k=F/a,H=Math.ceil(s*a),$=H+1,J=F/H,Z=-F/2,X=u+1,te=2*Math.PI/u,Y=Math.PI/2/d,ee=.01,K=Math.min((1-p/100)*l,l-ee),q=l-K,ue=0,le=2,ne=d*le+le,ce=X*ne/le,ae=ce+X*$,he=Math.max(0,X*($+ne)),[pe,fe,ge]=[3,3,2].map(rt=>Array(he*rt).fill(0)),me=[],C=i-l;function ie(rt,Xe){let Ar=Math.PI/2;x=Xe*J,D=2*Math.PI*(x%k)/k+Ar,x+=Z,_=Math.sin(D)*C,I=Math.cos(D)*C,r?rt.set(I,_,x):rt.set(I,x,_)}ie(m,-1e-10),ie(y,0),A.copy(m),ie(m,1);let De=m.distanceTo(y),Re=h?0:q+K,Ee=De*H+2*Re,Pe=K,bt=Ee-Re;for(let rt=0;rt<=H;rt++){ie(g,rt),W.subVectors(g,A).normalize(),A.copy(g),j.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(W,j).normalize();let Xe=rt===0,Ar=rt===H,ud=Xe?3*Math.PI/2:Y,dd=Xe?Pe:bt,vl=Xe?X:ae,Mn=Xe?0:he-X,lt=W.clone().multiplyScalar(Xe?-q:q).add(g),pd=W.clone().multiplyScalar(Xe?-1:1).normalize();for(let hr=0;hr<X;hr++){let fs=hr*te;if(N.addVectors(m.copy(j).multiplyScalar(l*Math.cos(fs)),y.copy(R).multiplyScalar(l*Math.sin(fs))),E.copy(N).normalize(),Xe||Ar){h||(ue=Mn+hr,[0,1,2].forEach(jt=>{pe[ue*3+jt]=lt.getComponent(jt),fe[ue*3+jt]=pd.getComponent(jt)}),ge[ue*2]=+Ar,ge[ue*2+1]=hr/u),y.copy(E).multiplyScalar(K),v.addVectors(g,y);for(let jt=0;jt<d;jt++){let In=jt*Y+ud;B.addVectors(m.copy(W).multiplyScalar(q*Math.sin(In)),y.copy(E).multiplyScalar(q*Math.cos(In))),V.copy(B).normalize(),y.addVectors(v,B),B.normalize(),ue=vl+jt*X+hr,[0,1,2].forEach(ui=>{pe[ue*3+ui]=y.getComponent(ui),fe[ue*3+ui]=V.getComponent(ui)});let Sl=+Xe+Math.sin(In);ge[ue*2]=(dd+q*Sl)/Ee,ge[ue*2+1]=hr/u}}y.addVectors(g,N),ue=ce+rt*X+hr,[0,1,2].forEach(jt=>{pe[ue*3+jt]=y.getComponent(jt),fe[ue*3+jt]=E.getComponent(jt)}),ge[ue*2]=(Re+rt*De)/Ee,ge[ue*2+1]=hr/u}}let Me=$+2*d+le,yt=1,[vt,An]=[+h,Me-1];for(let rt=vt;rt<=An-1;rt++){let Xe=h&&rt===An-1;for(let Ar=0;Ar<X-1;Ar++)O=rt*X+Ar,P=O+1,S=(Xe?Ar:O)+X,T=(Xe?Ar+1:P)+X,rt===0?me.push(P,T,S):rt===Me-2?me.push(O,P,S):me.push(O,P,S,P,T,S)}this.setIndex(me),this.setAttribute("position",new Up(pe,3)),this.setAttribute("normal",new Up(fe,3)),this.setAttribute("uv",new Up(ge,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,c=6*(e-1)*r.radialSegments,u=e,p=u===e;for(let d=0;d<r.radialSegments;d++)i=u*t+d,a=i+1,s=(p?d:i)+t,l=(p?d+1:a)+t,o[c++]=i,o[c++]=a,o[c++]=s,o[c++]=a,o[c++]=l,o[c++]=s;return o.length=c,kp.array=o,kp.count=o.length,kp}};import{IcosahedronGeometry as LM}from"three";var r0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Us(r*.5,i,a):new LM(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Us=class extends ln{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new Us(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as RM,Shape as VM}from"three";var o0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new VM;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new RM(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as d0,BufferGeometryLoader as XM,Vector3 as KM,BoxGeometry as p0}from"three";import{BufferGeometry as WM,Vector2 as $p,Vector3 as u0}from"three";import{Box3 as zM,BufferAttribute as ks,BufferGeometry as n0,Color as qp,EventDispatcher as GM,Float32BufferAttribute as ga,Matrix3 as i0,Matrix4 as c0,MathUtils as jM,Object3D as FM,Sphere as UM,Vector2 as ur,Vector3 as Rt,Vector4 as kM}from"three";var ro=new c0,Hp=new FM,nu=new Rt,pn=class extends GM{constructor(){super(),this.uuid=jM.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new i0().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return ro.makeRotationX(r),this.applyMatrix4(ro),this}rotateY(r){return ro.makeRotationY(r),this.applyMatrix4(ro),this}rotateZ(r){return ro.makeRotationZ(r),this.applyMatrix4(ro),this}translate(r,e,t){return ro.makeTranslation(r,e,t),this.applyMatrix4(ro),this}scale(r,e,t){return ro.makeScale(r,e,t),this.applyMatrix4(ro),this}lookAt(r){return Hp.lookAt(r),Hp.updateMatrix(),this.applyMatrix4(Hp.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new Rt().fromBufferAttribute(i,d)),s!==void 0&&e.colors.push(new qp().fromBufferAttribute(s,d));function u(d,h,f,m){let y=s===void 0?[]:[e.colors[d].clone(),e.colors[h].clone(),e.colors[f].clone()],g=a===void 0?[]:[new Rt().fromBufferAttribute(a,d),new Rt().fromBufferAttribute(a,h),new Rt().fromBufferAttribute(a,f)],v=new xa(d,h,f,g,y,m);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new ur().fromBufferAttribute(l,d),new ur().fromBufferAttribute(l,h),new ur().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new ur().fromBufferAttribute(c,d),new ur().fromBufferAttribute(c,h),new ur().fromBufferAttribute(c,f)])}let p=r.groups;if(p.length>0)for(let d=0;d<p.length;d++){let h=p[d],f=h.start,m=h.count;for(let y=f,g=f+m;y<g;y+=3)t!==void 0?u(t.getX(y),t.getX(y+1),t.getX(y+2),h.materialIndex):u(y,y+1,y+2,h.materialIndex)}else if(t!==void 0)for(let d=0;d<t.count;d+=3)u(t.getX(d),t.getX(d+1),t.getX(d+2));else for(let d=0;d<i.count;d+=3)u(d,d+1,d+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(nu).negate(),this.translate(nu.x,nu.y,nu.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new c0;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new Rt,e=new Rt;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,s),e.subVectors(a,s),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new Rt;if(r){let t=new Rt,o=new Rt;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],c=this.vertices[s.b],u=this.vertices[s.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new pn;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let c=new Rt,u={a:new Rt,b:new Rt,c:new Rt};i.push(c),a.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];l.copy(s.normal),c.a.copy(s.vertexNormals[0]),c.b.copy(s.vertexNormals[1]),c.c.copy(s.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new zM),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new UM),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,a=this.vertices,s=r.vertices,l=this.faces,c=r.faces,u=this.colors,p=r.colors;e!==void 0&&(o=new i0().getNormalMatrix(e));for(let d=0,h=s.length;d<h;d++){let m=s[d].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let d=0,h=p.length;d<h;d++)u.push(p[d].clone());for(let d=0,h=c.length;d<h;d++){let f=c[d],m,y,g=f.vertexNormals,v=f.vertexColors,O=new xa(f.a+i,f.b+i,f.c+i);O.normal.copy(f.normal),o!==void 0&&O.normal.applyMatrix3(o).normalize();for(let P=0,S=g.length;P<S;P++)m=g[P].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),O.vertexNormals.push(m);O.color.copy(f.color);for(let P=0,S=v.length;P<S;P++)y=v[P],O.vertexColors.push(y.clone());O.materialIndex=f.materialIndex+t,l.push(O)}for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++)v.push(g[O].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],p=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[p]===void 0?(e[p]=l,t.push(this.vertices[l]),o[l]=t.length-1):o[l]=o[e[p]]}let a=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let p=[u.a,u.b,u.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let c=a[l];this.faces.splice(c,1);for(let u=0,p=this.faceVertexUvs.length;u<p;u++)this.faceVertexUvs[u].splice(c,1)}let s=this.vertices.length-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new Rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let c=r[l]._id;a&&a.push(o[c]),s&&s.push(i[c])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let m in f)f[m]!==void 0&&(r[m]=f[m]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let m=this.vertices[f];e.push(m.x,m.y,m.z)}let t=[],o=[],i={},a=[],s={},l=[],c={};for(let f=0;f<this.faces.length;f++){let m=this.faces[f],y=!0,g=!1,v=this.faceVertexUvs[0][f]!==void 0,O=m.normal.length()>0,P=m.vertexNormals.length>0,S=m.color.r!==1||m.color.g!==1||m.color.b!==1,T=m.vertexColors.length>0,I=0;if(I=u(I,0,0),I=u(I,1,y),I=u(I,2,g),I=u(I,3,v),I=u(I,4,O),I=u(I,5,P),I=u(I,6,S),I=u(I,7,T),t.push(I),t.push(m.a,m.b,m.c),t.push(m.materialIndex),v){let x=this.faceVertexUvs[0][f];t.push(h(x[0]),h(x[1]),h(x[2]))}if(O&&t.push(p(m.normal)),P){let x=m.vertexNormals;t.push(p(x[0]),p(x[1]),p(x[2]))}if(S&&t.push(d(m.color)),T){let x=m.vertexColors;t.push(d(x[0]),d(x[1]),d(x[2]))}}function u(f,m,y){return y?f|1<<m:f&~(1<<m)}function p(f){let m=f.x.toString()+f.y.toString()+f.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(f.x,f.y,f.z)),i[m]}function d(f){let m=f.r.toString()+f.g.toString()+f.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(f.getHex())),s[m]}function h(f){let m=f.x.toString()+f.y.toString();return c[m]!==void 0||(c[m]=l.length/2,l.push(f.x,f.y)),c[m]}return r.data={},r.data.vertices=e,r.data.normals=o,a.length>0&&(r.data.colors=a),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new pn().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let d=0,h=e.length;d<h;d++)this.vertices.push(e[d].clone());let t=r.colors;for(let d=0,h=t.length;d<h;d++)this.colors.push(t[d].clone());let o=r.faces;for(let d=0,h=o.length;d<h;d++)this.faces.push(o[d].clone());for(let d=0,h=r.faceVertexUvs.length;d<h;d++){let f=r.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let m=0,y=f.length;m<y;m++){let g=f[m],v=[];for(let O=0,P=g.length;O<P;O++){let S=g[O];v.push(S.clone())}this.faceVertexUvs[d].push(v)}}let i=r.morphTargets;for(let d=0,h=i.length;d<h;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let m=0,y=i[d].vertices.length;m<y;m++)f.vertices.push(i[d].vertices[m].clone())}if(i[d].normals!==void 0){f.normals=[];for(let m=0,y=i[d].normals.length;m<y;m++)f.normals.push(i[d].normals[m].clone())}this.morphTargets.push(f)}let a=r.morphNormals;for(let d=0,h=a.length;d<h;d++){let f={};if(a[d].vertexNormals!==void 0){f.vertexNormals=[];for(let m=0,y=a[d].vertexNormals.length;m<y;m++){let g=a[d].vertexNormals[m],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),f.vertexNormals.push(v)}}if(a[d].faceNormals!==void 0){f.faceNormals=[];for(let m=0,y=a[d].faceNormals.length;m<y;m++)f.faceNormals.push(a[d].faceNormals[m].clone())}this.morphNormals.push(f)}let s=r.skinWeights;for(let d=0,h=s.length;d<h;d++)this.skinWeights.push(s[d].clone());let l=r.skinIndices;for(let d=0,h=l.length;d<h;d++)this.skinIndices.push(l[d].clone());let c=r.lineDistances;for(let d=0,h=c.length;d<h;d++)this.lineDistances.push(c[d]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let p=r.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new Wp().fromGeometry(this),e=new n0,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",iu.call(new ks(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",iu.call(new ks(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",a0.call(new ks(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",s0.call(new ks(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",s0.call(new ks(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let c=a[s],u=new ga(c.data.length*3,3);u.name=c.name,i.push(iu.call(u,c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ga(r.skinIndices.length*4,4);e.setAttribute("skinIndex",l0.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ga(r.skinWeights.length*4,4);e.setAttribute("skinWeight",l0.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new n0,t=r.geometry;if(r.isPoints||r.isLine){let o=new ga(t.vertices.length*3,3),i=new ga(t.colors.length*3,3);if(e.setAttribute("position",iu.call(o,t.vertices)),e.setAttribute("color",a0.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new ga(t.lineDistances.length,1);e.setAttribute("lineDistance",HM.call(a,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};pn.prototype.isGeometry=!0;var Wp=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=r.morphTargets,l=s.length,c;if(l>0){c=[];for(let g=0;g<l;g++)c[g]={name:s[g].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,p=u.length,d;if(p>0){d=[];for(let g=0;g<p;g++)d[g]={name:u[g].name,data:[]};this.morphTargets.normal=d}let h=r.skinIndices,f=r.skinWeights,m=h.length===t.length,y=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let O=v.vertexNormals;if(O.length===3)this.normals.push(O[0],O[1],O[2]);else{let S=v.normal;this.normals.push(S,S,S)}let P=v.vertexColors;if(P.length===3)this.colors.push(P[0],P[1],P[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ur,new ur,new ur))}if(a===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ur,new ur,new ur))}for(let S=0;S<l;S++){let T=s[S].vertices;c[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<p;S++){let T=u[S].vertexNormals[g];d[S].data.push(T.a,T.b,T.c)}m&&this.skinIndices.push(h[v.a],h[v.b],h[v.c]),y&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},xa=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new Rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new qp,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function HM(n){return this.array.set(n),this}function a0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new qp),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function s0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new ur),r[e++]=i.x,r[e++]=i.y}return this}function iu(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new Rt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function l0(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new kM),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var qM=["a","b","c"];function $M(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Yp(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Xp(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),l=a+"_"+s,c;if(t.has(l))c=t.get(l);else{let u=e[a],p=e[s];c={a:u,b:p,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function YM(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],Xp(a.a,a.b,n,t,a,e),Xp(a.b,a.c,n,t,a,e),Xp(a.c,a.a,n,t,a,e)}function au(n,r,e,t,o){n.push(new xa(r,e,t,void 0,void 0,o))}function ba(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function su(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var lu=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof WM?r=new pn().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new u0,t,o,i,a,s,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],p=u!==void 0&&u.length>0,d=[],h=new Map;YM(l,c,d,h);let f=[],m,y,g,v,O,P,S;for(let ee of Array.from(h.keys())){for(y=h.get(ee),g=new u0,O=3/8,P=1/8,S=y.faces.length,S!=2&&(O=.5,P=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(O),e.set(0,0,0),a=0;a<S;a++){for(v=y.faces[a],s=0;s<3&&(m=l[$M(v,qM[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(P),g.add(e),y.newEdge=f.length,f.push(g)}let T,I,x,_,D,A,N,E=[];for(o=0,i=l.length;o<i;o++){for(A=l[o],D=d[o].edges,t=D.length,t==3?T=3/16:t>3&&(T=3/(8*t)),I=1-t*Number(T),x=T,t<=2&&(t==2?(I=3/4,x=1/8):t==1||t==0),N=A.clone().multiplyScalar(I),e.set(0,0,0),a=0;a<t;a++)_=D[a],m=_.a!==A?_.a:_.b,e.add(m);e.multiplyScalar(Number(x)),N.add(e),E.push(N)}let B=E.concat(f),V=E.length,j,R,W,F=[],k=[],H,$,J,Z,X=new $p,te=new $p,Y=new $p;for(o=0,i=c.length;o<i;o++)v=c[o],j=Number(Yp(v.a,v.b,h).newEdge)+V,R=Number(Yp(v.b,v.c,h).newEdge)+V,W=Number(Yp(v.c,v.a,h).newEdge)+V,au(F,j,R,W,v.materialIndex),au(F,v.a,j,W,v.materialIndex),au(F,v.b,R,j,v.materialIndex),au(F,v.c,W,R,v.materialIndex),p&&(H=u[o],$=H[0],J=H[1],Z=H[2],X.set(ba($.x,J.x),ba($.y,J.y)),te.set(ba(J.x,Z.x),ba(J.y,Z.y)),Y.set(ba($.x,Z.x),ba($.y,Z.y)),su(k,X,te,Y),su(k,$,X,Y),su(k,J,te,X),su(k,Z,Y,te));r.vertices=B,r.faces=F,p&&(r.faceVertexUvs[0]=k)}};var Pt=new KM,f0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new d0().copy(new p0(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Pt),t={width:Pt.x,height:Pt.y,depth:Pt.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new d0().copy(new p0(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Pt)):Pt.set(a.width,a.height,a.depth),(r!==Pt.x||e!==Pt.y||t!==Pt.z)&&i.scale(Pt.x===0?1:r/Pt.x,Pt.y===0?1:e/Pt.y,Pt.z===0?1:t/Pt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new lu(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new XM(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Pt);let a=100/Pt.x;Object.assign(i.parameters,{width:100,height:Pt.y*a,depth:Pt.z*a}),r(this.build(i))})}};var cu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5,p=0,d=0,h=2*Math.PI/t;for(let m=0;m<t;m++){let y=h*m,g=p+Math.sin(y)*c,v=d+Math.cos(y)*u;l.addPoint(l.createPoint(g,v))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let f=Jt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as QM,Float32BufferAttribute as Kp,Vector2 as oo,Vector3 as It}from"three";var h0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=new Zp(r*.5,e,o,i,a,s,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function Hs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qp(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let c=a.add(s).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(c)),i.addScaledVector(s,t/Math.sin(c))}}function ZM(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Zp=class extends QM{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let l=[],c=[],u=[],p=[],d=0,h=e/2,f=Math.PI/t,m=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,O=new It(0,-h,0),P=new It(0,h,0),S=new oo(r,-h),T=new oo(m,-h),I=new oo(0,P.y).sub(T),x=new oo(0,P.y).sub(S),_=new oo(I.y,-I.x).normalize(),D=new oo(x.y,-x.x).normalize(),N=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-I.angle())/2)-1e-8;a=Math.min(a,N);let E;{let k=new It(_.x,_.y,0),H=new It(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);E=k.angleTo(H)}let B=a/Math.tan((Math.PI-I.angle())/2),V=a/Math.tan((Math.PI-E)/2),j=new It;if(!i){c.push(O.x,O.y,O.z),u.push(0,-1,0),p.push(0,0);let k=d++,H=[],$=S.clone(),J=B/Math.cos(Math.PI/t);$.x-=J;for(let Z=0;Z<t;Z++){let X=Z/t*Math.PI*2+f,te=new oo(Math.sin(X),Math.cos(X));Hs($,te,j),c.push(j.x,j.y,j.z),u.push(0,-1,0),p.push(0,0),H.push(d++)}for(let Z=0;Z<H.length;Z++)l.push(H[Z],k,H[(Z+1)%H.length])}let R=[];{let k=new It,H=new It,$=new It,J=new It,Z=new It,X=new It;for(let te=0;te<t;te++){let Y=te/t*Math.PI*2+f,ee=(te+.5)/t*Math.PI*2+f,K=(te+1)/t*Math.PI*2+f,q=new oo(Math.sin(Y),Math.cos(Y)),ue=new oo(Math.sin(ee),Math.cos(ee)),le=new oo(Math.sin(K),Math.cos(K));Hs(S,q,H),Hs(S,le,$),Hs(_,ue,k),Qp(P,H,$,V,V,J),c.push(J.x,J.y,J.z),Qp(H,P,$,V,B,Z),c.push(Z.x,Z.y,Z.z),Qp($,H,P,B,V,X),c.push(X.x,X.y,X.z),u.push(k.x,k.y,k.z),u.push(k.x,k.y,k.z),u.push(k.x,k.y,k.z),p.push(0,0),p.push(0,0),p.push(0,0);let ne=d++,ce=d++,ae=d++;if(l.push(ne,ce,ae),a>0){{let fe=H.clone().add($).multiplyScalar(.5),ge=P.clone().sub(fe).normalize(),C=O.clone().sub(fe).normalize().add(ge).normalize().multiplyScalar(-1),ie=X.clone().sub(Z);W(fe,ie,C,I.angle())}let he,pe;{let fe=new It;Hs(D,le,fe);let ge=X.clone().add(J).multiplyScalar(.5);ge=ZM(ge,$,P);let me=X.clone().sub(J);[he,pe]=W(ge,me,fe,E,J.y)}{let fe=he,ge=fe.clone().setY(0).normalize(),me=new It(0,-1,0),C=ge.clone().cross(me);F(fe,ge,me,C)}R.concat(pe);{let fe=I.angle(),ge=Math.PI-fe,me=P.clone();me.y-=a/Math.sin(fe-Math.PI/2);let C=new It,ie=[];for(let Re=0;Re<s;Re++){let Ee=[],Pe=Math.PI/2-ge*Re/s,bt=Math.cos(Pe),Me=Math.sin(Pe),yt=ee;for(let vt=0;vt<=Re;vt++){let An=Math.cos(yt),rt=Math.sin(yt);k.x=bt*rt,k.y=Me,k.z=bt*An,C.copy(me).addScaledVector(k,a),c.push(C.x,C.y,C.z),u.push(k.x,k.y,k.z),p.push(0,0),Ee.push(d++),yt+=Math.PI*2/Re/t}ie.push(Ee)}pe.reverse(),ie.push(pe);let De=ie.length-1;for(let Re=0;Re<De;Re++){let Ee=ie[Re],Pe=ie[Re+1],bt=Ee.length-1;l.push(Pe[1],Ee[0],Pe[0]);for(let Me=1;Me<=bt;Me++)l.push(Ee[Me],Ee[Me-1],Pe[Me]),l.push(Pe[Me+1],Ee[Me],Pe[Me])}}}}}this.setIndex(l),this.setAttribute("position",new Kp(c,3)),this.setAttribute("normal",new Kp(u,3)),this.setAttribute("uv",new Kp(p,2));function W(k,H,$,J,Z){let X=-J/2,te=(Math.PI-J)/2,Y=H.clone().normalize().cross($);k.addScaledVector($,-a/Math.sin(te));let ee=new It,K=new It,q=1,ue=d,le=[];for(let ne=0;ne<=s;ne++){let ce=X+ne/s*J;K.set(0,0,0),K.addScaledVector(Y,Math.sin(ce)),K.addScaledVector($,Math.cos(ce));for(let ae=0;ae<=q;ae++){let he=ae/q-.5;if(ee.copy(k),ee.addScaledVector(H,he),ee.addScaledVector(K,a),Z!=null){let pe=Math.max(0,ee.y-Z);ee.addScaledVector(H,-pe/H.y)}c.push(ee.x,ee.y,ee.z),u.push(K.x,K.y,K.z),p.push(0,0),ae===0&&le.push(d),d++}}for(let ne=0;ne<s;ne++)for(let ce=0;ce<q;ce++){let ae=ue+ce+(q+1)*ne,he=ae+(q+1),pe=he+1,fe=ae+1;l.push(ae,he,fe),l.push(he,pe,fe)}return[k.clone().addScaledVector(H,.5),le]}function F(k,H,$,J){let Z=Math.PI/2,X=x.angle()-Z,te=[],Y=new It,ee=new It;for(let q=0;q<=s;q++){let ue=[],le=q/s;for(let ne=0;ne<=q;ne++){let ae=((q?ne/q:0)-.5)*v,he=Math.cos(ae),pe=Math.sin(ae),fe=Math.atan(Math.tan(X)*he),ge=(Z+fe)*le,me=Math.cos(ge),C=Math.sin(ge);Y.set(0,0,0),Y.addScaledVector(H,C*he),Y.addScaledVector($,me),Y.addScaledVector(J,C*pe),ee.copy(k).addScaledVector(Y,a),c.push(ee.x,ee.y,ee.z),u.push(Y.x,Y.y,Y.z),p.push(0,0),ue.push(d++)}te.push(ue)}let K=te.length-1;for(let q=0;q<K;q++){let ue=te[q],le=te[q+1],ne=ue.length-1;l.push(ue[0],le[1],le[0]);for(let ce=1;ce<=ne;ce++)l.push(ue[ce-1],ue[ce],le[ce]),l.push(ue[ce],le[ce+1],le[ce])}}}};var va=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(P,S,T){return S>e&&T>t?Math.min(P*e/S,P*t/T):S>e?P*e/S:T>t?P*t/T:P}let h=[];h[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),h[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),h[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),h[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,m=p.x,y=p.y,g=u.y;r.addPoint(r.createPoint(f,y)),r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(m,g)),r.addPoint(r.createPoint(f,g)),r.isClosed=!0;let v=!0;for(let P=0,S=r.points.length;P<S;P++)r.points[P].roundness=h[P],P>0&&h[P]!==h[P-1]&&(v=!1);v&&(r.roundness=h[0]),r.useCubicForRoundedCorners=i!==1,r.update();let O=Jt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(O,{userData:{...n,type:"RectangleGeometry"}})}};import{BufferGeometry as JM,Float32BufferAttribute as eI,MathUtils as m0,SphereGeometry as tI}from"three";var y0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=m0.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:c}=n.parameters,u;return c===0?(u=new JM,u.setAttribute("position",new eI([],3))):u=new tI(.5*r,o,i,a,s,l,c*m0.DEG2RAD),u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as rI}from"three";var g0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new rI(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as oI,Float32BufferAttribute as Jp,Vector3 as nI}from"three";var x0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new ef(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},ef=class extends oI{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],c=[],u=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let p=[],d=Math.PI/2,h=(ee=0,K=0,q=0)=>new nI(ee,K,q),f=h(),m=h(),[y,g,v]=[e/2,r/2,t/2],O=-g,P=+g,[S,T,I]=[h(O,-y,+v),h(O,-y,-v),h(O,+y,-v)],x=(ee,K=!1)=>Math.sin(ee-Math.PI/(1+ +K)),_=(ee,K=!1)=>Math.cos(ee-Math.PI/(1+ +K));I.y=Math.sin(o)*e-y;let D=Math.cos(o)*e-v,A=S.z-u;o<=d?(I.z=Math.min(D,A),I.z==A&&(I.y-=(D-A)/Math.tan(d-o))):T.z=Math.min(T.z-D-v,S.z-u),f.subVectors(S,T),m.subVectors(I,T);let N=Math.min(f.length(),m.length())*i/100,E=N*Math.tan(o/2),B=N/Math.cos(o/2),V=f.clone().normalize().add(m.normalize()).setLength(B).add(T);f.set(0,x(o,!0),_(o,!0)),p.push([I,f.clone()]);let j=(Math.PI-o)/a;for(let ee=0;ee<=a;ee++){let K=d+o+ee*j;f.set(0,Math.sin(K)*E,Math.cos(K)*E),f.add(V),m.set(0,x(K),_(K)),p.push([f.clone(),m.clone()])}p.push([S,h(0,1,0)]);let R=Math.sin(j/2)*E*2,W=p.length-1,F=p[0][0].distanceTo(p[1][0]),k=p[W-1][0].distanceTo(p[W][0]),H=F+R*a+k;p[0].push(1);for(let ee=0;ee<=a;ee++)p[ee+1].push(1-(F+ee*R)/H);p[W].push(0);let[$,J,Z]=p[0],X,te,Y;for(let ee=1;ee<p.length;ee++)[X,te,Y]=p[ee],s.push(O,$.y,$.z,O,X.y,X.z,P,$.y,$.z,P,$.y,$.z,O,X.y,X.z,P,X.y,X.z),l.push(0,J.y,J.z,0,te.y,te.z,0,J.y,J.z,0,J.y,J.z,0,te.y,te.z,0,te.y,te.z),c.push(0,Z,0,Y,1,Z,1,Z,0,Y,1,Y),[$,J,Z]=[X,te,Y];this.setAttribute("position",new Jp(s,3)),this.setAttribute("normal",new Jp(l,3)),this.setAttribute("uv",new Jp(c,2))}};var uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,p=r*.5,d=e*.5,h=0,f=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=p*t/100,v=d*t/100;if(o===3&&t===50){m=2*Math.PI/o;for(let P=0;P<o;P++){let S=m*P,T=h+Math.sin(S)*p,I=f+Math.cos(S)*d;u.addPoint(u.createPoint(T,I))}}else for(let P=0;P<o;P++){let S=h+Math.cos(y)*p,T=f+Math.sin(y)*d;u.addPoint(u.createPoint(S,T)),y+=m,S=h+Math.cos(y)*g,T=f+Math.sin(y)*v,P<=o,u.addPoint(u.createPoint(S,T)),y+=m}u.isClosed=!0;for(let P=0,S=u.points.length;P<S;P++)u.points[P].roundness=i;u.roundness=i,u.update();let O=Jt.create({shape:u,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(O,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as iI}from"three";var b0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new iI(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};import{BufferGeometry as aI,Float32BufferAttribute as sI,MathUtils as lI}from"three";var v0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,c=cI(r,e,t,r*.5,a,i,0,0,o,s,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function cI(n,r,e,t,o,i,a,s,l,c,u){[r,e]=[e,r],a=r/2;let p=lI.clamp(o/360,0,1);if(p===0){let d=new aI;return d.setAttribute("position",new sI([],3)),d}return p===1&&(c=0),new Fs(!0,n,r,e,t,p,i,a,s,l,c,u)}import{TorusKnotGeometry as uI}from"three";var S0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let l=new uI(s,e,t,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var w0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Fe?n.shape:new Fe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,c=r*.5,u=e*.5;s?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let d=0,h=l.points.length;d<h;d++)l.points[d].roundness=t;l.roundness=t,l.update();let p=Jt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as O0,Vector3 as Nt,Matrix3 as dI,Matrix4 as Wn,BufferGeometry as C0,BufferAttribute as Sa,MathUtils as du}from"three";function P0(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var pI=new Wn,fI=new Wn;function hI(n,r,e){let t=[new Nt,new Nt,new Nt],o=[new Nt,new Nt,new Nt];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],l=du.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Wn().makeBasis(t[0],t[1],t[2])}var T0=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=r?.shapeData??ya.create({parameters:Yd}).userData.shape;return{path:n.path??Xi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...wc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new tf(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new C0,{userData:{...n,type:"PathGeometry"}})}},tf=class extends C0{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!P0(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],p=[];for(let F=0;F<c;F++){let k=this.inputs.path.isClosed?(F+s)%e.length:Math.min(F+s,e.length-1);u.push(e[k].clone()),p.push(t[k].clone())}let d=(F,k,H)=>{u[F]=u[F].clone().lerp(u[k],H),p[F]=hI(p[F],p[k],H)},h=0,f=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(f||i===0)&&(h=f,d(0,1,h));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,d(u.length-1,u.length-2,1-m)),o===0){let F=u.length-1;u[F].copy(u[0]),p[F].copy(p[0])}this._applyPathModifiers(p,h,m);let{bevel:g,bevelSides:v}=this.inputs.parameters.extrusion,O=g>0?this.inputs.parameters.extrusion.capType:"flat",P=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(P=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:I}=this._computeShapePoints(P),x=0,_;O==="round"&&(_=new dn(this.inputs.shapeData,2*g,g,P,v,void 0,!0),x=_.getAttribute("position").count);let D=0,A=0;T.sort((F,k)=>F.start-k.start),T.forEach(F=>{F.verticesStart=D,F.verticesCount=F.continuous.reduce((k,H,$)=>k+($===0||!H?2:1),0),A+=F.verticesCount,D=A});let N=A*c,E,B=0;if(this._isOpenEnded()&&O==="flat"){try{E=Rr({windingRule:Ge.ODD,elementType:it.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{E=jp}B=E.vertexCount}let V=N+2*B+x*2,j=N+2*B,R={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},W=[];if(T.forEach(F=>{this._extrudeRegion(F,I,p,u,R,W,this._isGeometryClosed()&&!this._isOpenEnded())}),E&&(this._closeEnd(E,N,W,R,p[0],u[0],!1),this._closeEnd(E,N+B,W,R,p[p.length-1],u[u.length-1],!0)),_){R.positions.set(_.getAttribute("position").array,j*3),R.normals.set(_.getAttribute("normal").array,j*3),R.uvs.set(_.getAttribute("uv").array,j*2);for(let $=j;$<j+x;$++)R.uvs[$*2+1]=1e-4;let F=W.length;W.push(..._.getIndex().array.map($=>$+j)),j+=x,R.positions.set(_.getAttribute("position").array,j*3),R.normals.set(_.getAttribute("normal").array,j*3),R.uvs.set(_.getAttribute("uv").array,j*2);let k=W.length;W.push(..._.getIndex().array.map($=>$+j)),this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W);let H=pI;H.copy(p[p.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,j,V),H.copy(p[0]).setPosition(u[0]).multiply(fI.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,j-x,j),this.reverseIndicesOnRange(F,k)}else this.setAttribute("position",new Sa(R.positions,3)),this.setAttribute("normal",new Sa(R.normals,3)),this.setAttribute("uv",new Sa(R.uvs,2)),this.setIndex(W)}_extractPathPoints(){let t=Hc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,a=new Nt,s=new Nt,l=new Nt,c=new Nt,u=new Nt(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let O;y===o-1?O=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):O=e[y+1];let P=g.clone().sub(v).normalize(),S=O.clone().sub(g).normalize(),T=P.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let I=u.clone().cross(T).normalize(),x=T.clone().cross(I).normalize();u.copy(x),c.copy(I),y===0&&(a.copy(x),s.copy(T));let _=new Wn().makeBasis(I,x,T);t.push(_)}let p=i?s:l,d=i?a:new Nt(0,1,0),h=p.clone().cross(c).normalize(),f=Math.acos(d.dot(h));if(isNaN(f))return t;let m=d.clone().cross(h);p.dot(m)>0&&(f*=-1);for(let y=1;y<t.length;y++){let g=new Wn().makeRotationZ(f*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new Wn,p=new Wn;return e.forEach((d,h)=>{let f=h===0?0:h===i-1?1:(h-t)/(i-(o===0?0:1)-(t+(1-o)));u.makeRotationZ(du.lerp(a,a+s,f)*du.DEG2RAD);let m=du.lerp(l,c,f);p.makeScale(m,m,m),d.multiply(u).multiply(p)}),e}_computeShapePoints(e=12,t=Ge.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let O=y[v-1],P=y[v-0];g.push(O,P)}return g}),s;try{s=Rr({windingRule:t,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=js}let l;try{l=Rr({windingRule:Ge.ODD,elementType:it.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Gp}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,p=-1/0,d=1/0,h=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,v=s.vertices[g+0],O=s.vertices[g+1];v<u&&(u=v),v>p&&(p=v),O<d&&(d=O),O>h&&(h=O)}let f=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,v=s.elements[g+0],O=s.elements[g+1],P=v+O,S={start:v,count:O,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};f.push(S);let T=v,I=P-1,x=v+1,_=o.roundedCurves.length;do{let D=T-v,A=s.vertices[I*2+0],N=s.vertices[I*2+1],E=s.vertices[T*2+0],B=s.vertices[T*2+1],V=s.vertices[x*2+0],j=s.vertices[x*2+1],R=E-A,W=B-N,F=Math.sqrt(R*R+W*W);R/=F,W/=F;let k=E-V,H=B-j,$=Math.sqrt(k*k+H*H);k/=$,H/=$,S.normals[D*2+0]=-H,S.normals[D*2+1]=k;let J=s.vertexIndices[T];if(Array.isArray(J))S.continuous[D]=!1;else{let[Z,X]=o.getCurveIndexFromVertexId(J-1,!0);if(X>0&&X<1)S.continuous[D]=!0;else{let te=X===1?Z+1:Z-1;te=(te+_)%_;let Y=X===1?0:1,ee=o.roundedCurves[Z].getTangent(X),K=o.roundedCurves[te].getTangent(Y);S.continuous[D]=ee.dot(K)>.95}}y&&(S.normals[D*2+0]*=-1,S.normals[D*2+1]*=-1),[I,T,x]=[T,x,x+1],x>=P&&(x-=O)}while(x!==v+1)}return{regions:[i,...a],infos:f,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=t*2,l=t*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,l){let c=new Nt,u=new Nt,p=new Nt,d=new Nt,h=new O0;o.forEach((m,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let O=0;O<e.count;O++){let P=(e.start+O)*2;if(c.set(t[P+0],t[P+1],0),p.copy(c).applyMatrix4(m).add(g),e.continuous[O])d.set(e.normals[O*2+0],e.normals[O*2+1],0);else{let S=O===0?(e.start+e.count-1)*2:P-2;u.set(t[S+0],t[S+1],0),d.copy(c).sub(u),d.set(-d.y,d.x,0),e.isHole||d.negate()}if(d.applyMatrix4(m).normalize(),h.set(O===0?1:O/e.count,y/(o.length-1)),this._insertVertex(a,v,p,d,h),v++,!e.continuous[O]||O===0){if(O===0)d.set(e.normals[O*2+0],e.normals[O*2+1],0),h.set(0,y/(o.length-1));else{let S=O===e.count-1?e.start*2:P+2;u.set(t[S+0],t[S+1],0),d.copy(u).sub(c),d.set(-d.y,d.x,0),e.isHole||d.negate()}d.applyMatrix4(m).normalize(),this._insertVertex(a,v,p,d,h),v++}}});let f=o.length-1;for(let m=0;m<f;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),v=0;for(let O=0;O<e.count;O++){(!e.continuous[O]||O===0)&&v++;let P=O===e.count-1?0:v+1,S=y+v,T=y+P,I=g+P,x=g+v;e.isHole?s.push(S,I,T,S,x,I):s.push(S,T,I,S,I,x),v++}}}_closeEnd(e,t,o,i,a,s,l){let c=e.vertexCount,u=new Nt(0,0,l?-1:1).applyMatrix4(a),p=new Nt,d=new O0;for(let f=0;f<c;f++){let m=2*f;p.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+f,p,u,d)}let h=e.elements;for(let f=0;f<e.elementCount;f++){let m=3*f,y=h[m+0]+t,g=h[m+(l?1:2)]+t,v=h[m+(l?2:1)]+t;o.push(y,g,v)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new dI().getNormalMatrix(e).elements,s,l,c,u,p=this.attributes.position,d=this.attributes.normal;if(!p||!d)return;let h=p.array,f=d.array,m=p.itemSize;for(let y=t*m,g=o*m;y<g;y+=m){if(y===t)debugger;s=h[y+0],l=h[y+1],c=h[y+2],u=1/(i[3]*s+i[7]*l+i[11]*c+i[15]),h[y+0]=(i[0]*s+i[4]*l+i[8]*c+i[12])*u,h[y+1]=(i[1]*s+i[5]*l+i[9]*c+i[13])*u,h[y+2]=(i[2]*s+i[6]*l+i[10]*c+i[14])*u,s=f[y+0],l=f[y+1],c=f[y+2],f[y+0]=a[0]*s+a[3]*l+a[6]*c,f[y+1]=a[1]*s+a[4]*l+a[7]*c,f[y+2]=a[2]*s+a[5]*l+a[8]*c}p.needsUpdate=!0,d.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as A0,BufferGeometry as rf}from"three";import{mergeBufferGeometries as yI}from"three/examples/jsm/utils/BufferGeometryUtils.js";function M0(){let n=new rf;return n.setAttribute("position",new A0(new Float32Array([]),3)),n.setIndex(new A0(new Uint16Array([]),1)),n}var gI=M0().attributes,xI=12,bI=1,wa=class extends rf{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,gI),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:c,textTransform:u}=e,p=Dc.getDisplayedValue(c),d=u===2?p.toUpperCase():u===3?p.toLowerCase():p,h=vI(e,t,d),{shapes:f,charWidths:m,charCoords:y}=t.generateShapes(h,e),g=(typeof o=="number"?o:1)*.5,v=(typeof i=="number"?i:1)*.5,O=f.map(T=>new Fe().fromShape(T,!0));this.vectorShapes=O;let P=O.map(T=>Jt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ge.NONZERO:Ge.ODD,subdivisions:this.isLowResolution&&a>0?bI:xI}})),S=P.length?yI(P):M0();S.translate(-g,v,0),this.dispose(),this.wrappedText=h,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([T,I])=>{this.setAttribute(T,I)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=Ht(new rf,wa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function vI(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
3
3
  `?(t[t.length-1]+=o,o="",i===`
4
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as nf,BufferAttribute as E0,Uint32BufferAttribute as af,Float32BufferAttribute as sf,Matrix4 as CI,Vector3 as qs,Sphere as TI,Box3 as AI,BoxGeometry as MI}from"three";var N0,fu=new Promise(n=>{N0=n}),I0=!1;var pu;function D0(){if(I0)return;if(pu)return pu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.0.84/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});N0(l),I0=!0}return pu=n(),pu}import{BufferGeometryLoader as SI}from"three";var wI=["font"];function _o(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];Wd(p)&&!wI.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Wd(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=Fe.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new SI().parse(i);else if(i.type==="SubdivGeometry"){let c=new mt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new wa(i,r);if(i.type==="UIGeometry")return va.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=of(s)}catch(c){console.error(c)}if(!l){let c=Fe.createFromState(Yi.defaultData(),100,100);s.shape=c,l=of(s)}return l}import{Matrix4 as PI}from"three";var OI=new PI;function Ws(n,r,e,t){let o=n.position.array,i=n.normal.array,a=OI.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var hu=new AI,Pa=new qs,Se;fu.then(n=>{Se=n});var _0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),B0=new Uint32Array([0,1,2,3]),L0=new Uint8Array([4]),mt=class extends nf{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Jo.div(t,o);this.subdividedGeometry&&Ws(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ws(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Pa.fromArray(i));let s=Pa.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=mt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new MI(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(mt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new TI,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;hu.setFromBufferAttribute(t),hu.getCenter(o),e.boundingSphere.radius=o.distanceTo(hu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hu.getSize(Pa);let i={width:Pa.x,height:Pa.y,depth:Pa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(Se.free_bvh(t),Se.free_subdivision_surface(t));try{a=mt.allocate(e,i)}catch(u){console.error(u,e),a=mt.allocate({positionWASM:_0,indexWASM:B0,verticesPerFaceWASM:L0},i)}if(Se.set_destination_refinement_level(a,0),s=mt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=mt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=mt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:_o(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=df(i.getAttribute("position"),a));let p;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,h=d+e.radialSegments*3;p=[d,h]}return{indices:l,verticesPerFace:c}=pf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=_0,i=B0,a=L0);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,h=i.length+a.length,f=d*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=h*Uint32Array.BYTES_PER_ELEMENT,g=Se._malloc(f),v=new Float32Array(Se.HEAPF32.buffer,g,d),O=new Uint32Array(Se.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),O.set(i,0),O.set(a,i.length);let P;e?.scaleBaked?.some(T=>T!==1)&&(P=new CI().makeScale(...e.scaleBaked)),t&&(P?P.premultiply(t):P=t);let S=P?Se.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,P.elements):Se.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(g),S}static buildLevel(e,t,o,i,a){let s=a?Se.get_mesh_data2(e,t?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,t?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],h=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],g=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],O=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let P=new nf;if(P.setIndex(new af(O,1)),P.setAttribute("position",new sf(h,3)),P.setAttribute("normal",new sf(m,3)),t){P.setAttribute("faceMap",new af(g,1));let S=new Float32Array(m.length/3*4).fill(0);P.setAttribute("color",new E0(S,4))}return Se.free_mesh_data(s),P.userData.type="SubdivGeometry",P}i.getAttribute("position").copyArray(h),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],h=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new nf;f.setAttribute("position",new sf(p,3));let m=new Float32Array(p.length);for(let y=0,g=p.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return f.setAttribute("color",new E0(m,3)),f.setIndex(new af(h,1)),Se.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||Se.set_destination_refinement_level(e,t);let a=o?Se.get_topological_data2(e,i?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,i?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=Se.HEAPU32[l[u]>>2],f=new Uint32Array(Se.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var R0=["getX","getY","getZ"];function df(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[R0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[R0[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var mu=new qs,lf=new qs,cf=new qs,uf=new qs;function pf(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let d=l.length/2/c;l=l.filter((h,f)=>Math.floor(f/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){mu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),lf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),cf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),uf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),lf.sub(mu).normalize(),cf.sub(mu).normalize(),uf.sub(mu).normalize();let l=lf.cross(cf).dot(uf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[p+2]===a&&c.push(d);if(e.userData.parameters.extrudeBevelSize===0){let p=c[0];c[0]=c[1],c[1]=p}l.reverse(),o.push(...l,...c),i.push(u,u)}return{indices:o,verticesPerFace:i}}var br={};r1(br,{calcBoolean:()=>_I,calcBooleanTopological:()=>EI,freeMeshSet:()=>VI,getMeshSet:()=>BI,hasOpenEdges:()=>LI,transformMeshSet:()=>RI});var II,V0=new Promise(n=>{II=n});import{Float32BufferAttribute as z0,Sphere as NI}from"three";var Ne,Oa;V0.then(n=>Ne=n);function DI(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=df(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=pf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function G0(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Ne._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ne.HEAPU32.buffer,i,r):new Float32Array(Ne.HEAPF32.buffer,i,r)).set(n,0),i}function j0(n){switch(n){case 0:return Ne.OP.UNION;case 1:return Ne.OP.INTERSECTION;case 2:return Ne.OP.A_MINUS_B;case 3:return Ne.OP.B_MINUS_A;case 4:return Ne.OP.SYMMETRIC_DIFFERENCE;case 5:return Ne.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function EI(n,r){Oa===void 0&&(Oa=Ne.init_csg());let e=G0(n),t=Ne.csg_calc_topological(Oa,e,n.length,j0(r));Ne._free(e);let o=6,i=Ne.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Ne.HEAPU32[i[s]>>2],c=new Float32Array(Ne.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ne.HEAPU32[i[s]>>2],p=new Uint32Array(Ne.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Ne.HEAPU32[i[s]>>2],h=new Uint8Array(Ne.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Ne.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function _I(n,r,e,t){Oa===void 0&&(Oa=Ne.init_csg());let o=G0(n),i=Ne.csg_calc(Oa,o,n.length,t,j0(r));Ne._free(o);let a=5,s=Ne.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Ne.HEAPU32[s[c]>>2],p=Ne.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Ne.HEAPU32[s[c]>>2],h=Ne.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new z0(p,3)),e.setAttribute("normal",new z0(h,3));let m=Ne.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new NI),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ne.free_mesh_data(i),f}function BI(n,r,e){if(Ne===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,t=g.positions,o=Array(g.verticesPerFace.reduce((v,O)=>v+O,0)+i);for(let v=0,O=0,P=0;v<g.verticesPerFace.length;v++){o[P++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[P++]=g.indices[O++]}}else({positions:t,faceIndices:o,nFaces:i}=DI(n,r,e));let a=t.length,s=o.length,l=t.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,d=c*Uint32Array.BYTES_PER_ELEMENT,h=Ne._malloc(u),f=new Float32Array(Ne.HEAPF32.buffer,h,l),m=new Uint32Array(Ne.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=Ne.get_csg_mesh(h,a,h+p,s,i);return Ne._free(h),y}function LI(n){return Ne.has_open_edges(n)}function RI(n,r){Ne.transform_csg_mesh(n,r.elements)}function VI(n){Ne.free_csg_mesh(n)}var zI={ConeGeometry:bx,CubeGeometry:vx,CylinderGeometry:xx,DodecahedronGeometry:Sx,EllipseGeometry:ya,HelixGeometry:t0,IcosahedronGeometry:r0,LatheGeometry:o0,NonParametricGeometry:f0,PolygonGeometry:cu,PyramidGeometry:h0,RectangleGeometry:va,SphereGeometry:y0,PlaneGeometry:g0,BackdropGeometry:x0,StarGeometry:uu,TextFrameGeometry:b0,TorusGeometry:v0,TorusKnotGeometry:S0,TriangleGeometry:w0,PathGeometry:T0,VectorGeometry:Jt},of=n=>zI[n.type].create(n);function Ca(n){return n!==null&&"booleanOp"in n}var Ta=class extends la(jI){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new GI}updateVisible(e){super.updateVisible(e),this.visible=!Ca(this.parent)&&this.visible,Ca(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ca(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ta&&(e.freeBooleanPointer(),Ca(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var yu=new FI;function $s(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}yu.min.set(i,a,s),yu.max.set(l,c,u),yu.getCenter(t),yu.getSize(o).multiplyScalar(.5)}var HI=new UI,WI=new kI,Ot=class extends Ta{constructor(r,e){super(HI,WI),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?$s(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as s3,Matrix4 as l3,Sphere as Mb,Vector3 as c3}from"three";import{BufferAttribute as n3,Float32BufferAttribute as Ab,MathUtils as zf,Vector3 as Gf}from"three";import{ShaderMaterial as UN}from"three";var Bo=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Bo.uuidContext===null)throw new Error("plz startContext");Bo.uuidContext===Bo.globalContext?this.uuid="_gid"+Bo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Bo.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===Bo.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},qe=Bo;qe.globalContext={nodeContextUuid:0},qe.uuidContext=Bo.globalContext;import{CubeReflectionMapping as rN,CubeRefractionMapping as oN,CubeUVReflectionMapping as nN,LinearSRGBColorSpace as K0,SRGBColorSpace as iN}from"three";var Ys=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var ff=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},Ct=new ff;import{Vector2 as F0}from"three";import{MathUtils as qI}from"three";var ye=class extends qe{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=qI.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var $e=class extends ye{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var at=class extends $e{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof F0?e:new F0(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as U0}from"three";var Vt=class extends $e{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof U0?e:new U0(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as $I}from"three";var Tt=class extends $I{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var er=class extends $e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Tt?e:new Tt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var YI=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,k0=/[a-z_0-9]+/gi,re=class extends ye{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=k0.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],h=d[0],f=this.isMethod?!this.getInputByName(h):!0,m=h;if(this.keywords[h]||this.useKeywords&&f&&Ct.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=Ct.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||Ct.getKeyword(h,e),g.cache&&(e.keywords[h]=y)}m=y.build(e)}h!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+h.length+l),l+=m.length-h.length),this.getIncludeByName(m)===void 0&&Ct.contains(m)&&e.include(Ct.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=YI.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(k0);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let p=s[l++];this.inputs.push({name:p,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var XI=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,hf=class extends ye{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||hf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=XI.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},je=hf;je.PI="PI",je.PI2="PI2",je.RECIPROCAL_PI="RECIPROCAL_PI",je.RECIPROCAL_PI2="RECIPROCAL_PI2",je.LOG2="LOG2",je.EPSILON="EPSILON";var KI=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
5
- )*?)}`,"gim"),QI=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Aa=class extends ye{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=KI.exec(e);if(t){let o=t[2],i;for(;i=QI.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ma=class extends ye{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};Ct.addKeyword("uv",function(){return new Ma});Ct.addKeyword("uv2",function(){return new Ma(1)});import{LinearSRGBColorSpace as ZI,SRGBColorSpace as JI}from"three";var qn=class extends ye{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??qn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ZI:return["Linear"];case JI:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=qn.Nodes[this.method],s=e.include(a);if(s===qn.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=qn.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=qn.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},qt=qn;qt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
4
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as nf,BufferAttribute as E0,Uint32BufferAttribute as af,Float32BufferAttribute as sf,Matrix4 as CI,Vector3 as qs,Sphere as TI,Box3 as AI,BoxGeometry as MI}from"three";var N0,fu=new Promise(n=>{N0=n}),I0=!1;var pu;function D0(){if(I0)return;if(pu)return pu;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.0.86/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(c=>c.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});N0(l),I0=!0}return pu=n(),pu}import{BufferGeometryLoader as SI}from"three";var wI=["font"];function _o(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let c of a){let u=i;for(let p of c)u=u[p];for(o in u){let p=u[o];Wd(p)&&!wI.includes(o)&&(u[o]=r.getVariable(p,[t.uuid,"geometry",...c,o]),Wd(u[o])&&(u[o]=1))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let c=Fe.createFromState(i.shape,i.width,i.height);s.shape=c}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new SI().parse(i);else if(i.type==="SubdivGeometry"){let c=new mt(i,e);return c.data=n,c}else{if(i.type==="TextGeometry")return new wa(i,r);if(i.type==="UIGeometry")return va.create({parameters:{width:i.width,height:i.height,cornerRadius:i.cornerRadius,cornerType:i.cornerType}})}let l;try{l=of(s)}catch(c){console.error(c)}if(!l){let c=Fe.createFromState(Yi.defaultData(),100,100);s.shape=c,l=of(s)}return l}import{Matrix4 as PI}from"three";var OI=new PI;function Ws(n,r,e,t){let o=n.position.array,i=n.normal.array,a=OI.makeScale(r,e,t).invert().elements,s,l,c;for(var u=0,p=o.length;u<p;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,s=i[u],l=i[u+1],c=i[u+2],i[u]=a[0]*s+a[4]*l+a[8]*c,i[u+1]=a[1]*s+a[5]*l+a[9]*c,i[u+2]=a[2]*s+a[6]*l+a[10]*c;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var hu=new AI,Pa=new qs,Se;fu.then(n=>{Se=n});var _0=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),B0=new Uint32Array([0,1,2,3]),L0=new Uint8Array([4]),mt=class extends nf{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=Jo.div(t,o);this.subdividedGeometry&&Ws(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Ws(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Pa.fromArray(i));let s=Pa.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=mt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new MI(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(mt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new TI,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;hu.setFromBufferAttribute(t),hu.getCenter(o),e.boundingSphere.radius=o.distanceTo(hu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hu.getSize(Pa);let i={width:Pa.x,height:Pa.y,depth:Pa.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),t&&(Se.free_bvh(t),Se.free_subdivision_surface(t));try{a=mt.allocate(e,i)}catch(u){console.error(u,e),a=mt.allocate({positionWASM:_0,indexWASM:B0,verticesPerFaceWASM:L0},i)}if(Se.set_destination_refinement_level(a,0),s=mt.buildLevel(a,!0,c),e.subdivisions>0)try{Se.set_destination_refinement_level(a,e.subdivisions),l=mt.buildLevel(a,!1,c)}catch{try{Se.set_destination_refinement_level(a,e.subdivisions-1),l=mt.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0||e.path!==void 0?t.geometry:_o(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,c,u;({positions:s,triIndices:u}=df(i.getAttribute("position"),a));let p;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,h=d+e.radialSegments*3;p=[d,h]}return{indices:l,verticesPerFace:c}=pf(s,u,i,p),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,t){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=_0,i=B0,a=L0);let c=o.length,u=i.length,p=a.length,d=o.length+s.length+l.length,h=i.length+a.length,f=d*Float32Array.BYTES_PER_ELEMENT+h*Uint32Array.BYTES_PER_ELEMENT,m=d*Float32Array.BYTES_PER_ELEMENT,y=h*Uint32Array.BYTES_PER_ELEMENT,g=Se._malloc(f),v=new Float32Array(Se.HEAPF32.buffer,g,d),O=new Uint32Array(Se.HEAPU32.buffer,g+m,h);v.set(o,0),v.set(s,o.length),v.set(l,o.length+s.length),O.set(i,0),O.set(a,i.length);let P;e?.scaleBaked?.some(T=>T!==1)&&(P=new CI().makeScale(...e.scaleBaked)),t&&(P?P.premultiply(t):P=t);let S=P?Se.alloc_subdivision_surface2(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p,P.elements):Se.alloc_subdivision_surface(g,c,g+m,u,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,p);return Se._free(g),S}static buildLevel(e,t,o,i,a){let s=a?Se.get_mesh_data2(e,t?Se.Level.CONTROL:Se.Level.REFINED,o,a.elements):Se.get_mesh_data(e,t?Se.Level.CONTROL:Se.Level.REFINED,o),l=8,c=Se.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),p=0,d=Se.HEAPU32[c[p]>>2],h=Se.HEAPF32.subarray(d>>2,(d>>2)+u[p]);p++;let f=Se.HEAPU32[c[p]>>2],m=Se.HEAPF32.subarray(f>>2,(f>>2)+u[p]);p++;let y=Se.HEAPU32[c[p]>>2],g=Se.HEAPU32.subarray(y>>2,(y>>2)+u[p]);p++;let v=Se.HEAPU32[c[p]>>2],O=Se.HEAPU32.subarray(v>>2,(v>>2)+u[p]);if(p++,i===void 0){let P=new nf;if(P.setIndex(new af(O,1)),P.setAttribute("position",new sf(h,3)),P.setAttribute("normal",new sf(m,3)),t){P.setAttribute("faceMap",new af(g,1));let S=new Float32Array(m.length/3*4).fill(0);P.setAttribute("color",new E0(S,4))}return Se.free_mesh_data(s),P.userData.type="SubdivGeometry",P}i.getAttribute("position").copyArray(h),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,Se.free_mesh_data(s)}static freeSubdivPointer(e){Se.free_bvh(e),Se.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=Se.get_wireframe_data_for_base_level(e),a=4,s=Se.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),c=0,u=Se.HEAPU32[s[c]>>2],p=Se.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Se.HEAPU32[s[c]>>2],h=Se.HEAPU32.subarray(d>>2,(d>>2)+l[c]);if(t===void 0){let f=new nf;f.setAttribute("position",new sf(p,3));let m=new Float32Array(p.length);for(let y=0,g=p.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return f.setAttribute("color",new E0(m,3)),f.setIndex(new af(h,1)),Se.free_wireframe_data_for_base_level(i),f}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,Se.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||Se.set_destination_refinement_level(e,t);let a=o?Se.get_topological_data2(e,i?Se.Level.CONTROL:Se.Level.REFINED,o.elements):Se.get_topological_data(e,i?Se.Level.CONTROL:Se.Level.REFINED),s=6,l=Se.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,p=Se.HEAPU32[l[u]>>2],d=new Float32Array(Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]));u++;let h=Se.HEAPU32[l[u]>>2],f=new Uint32Array(Se.HEAPU32.subarray(h>>2,(h>>2)+c[u]));u++;let m=Se.HEAPU32[l[u]>>2],y=new Uint8Array(Se.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return Se.free_topological_data(a),{positions:d,indices:f,verticesPerFace:y}}};var R0=["getX","getY","getZ"];function df(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[R0[d]](u)*s)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)a.push(n[R0[d]](u));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:a,triIndices:l}}var mu=new qs,lf=new qs,cf=new qs,uf=new qs;function pf(n,r,e,t){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let d=l.length/2/c;l=l.filter((h,f)=>Math.floor(f/2)%d===0)}let u=0;for(let d=0;d<l.length;d+=2)u+=(l[d]-l[(d===0?l.length:d)-2])*(l[d+1]+l[(d===0?l.length:d)-1]);n.length=0;let p=0;if(u<0)for(let d=0;d<l.length;d+=2)n.push(l[d],l[d+1],0),o.push(p++);else for(let d=l.length-2;d>=0;d-=2)n.push(l[d],l[d+1],0),o.push(p++);return i.push(p),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&l++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&l++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&l++,l===3)break}if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){mu.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),lf.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),cf.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),uf.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),lf.sub(mu).normalize(),cf.sub(mu).normalize(),uf.sub(mu).normalize();let l=lf.cross(cf).dot(uf);Math.abs(l)>.005||t&&t.some((c,u)=>u%2===1?!1:s>=t[u]&&s<t[u+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let p=0,d=0;p<n.length;p+=3,d++)n[p+2]===0&&(l.push(d),u++),n[p+2]===a&&c.push(d);if(e.userData.parameters.extrudeBevelSize===0){let p=c[0];c[0]=c[1],c[1]=p}l.reverse(),o.push(...l,...c),i.push(u,u)}return{indices:o,verticesPerFace:i}}var br={};r1(br,{calcBoolean:()=>_I,calcBooleanTopological:()=>EI,freeMeshSet:()=>VI,getMeshSet:()=>BI,hasOpenEdges:()=>LI,transformMeshSet:()=>RI});var II,V0=new Promise(n=>{II=n});import{Float32BufferAttribute as z0,Sphere as NI}from"three";var Ne,Oa;V0.then(n=>Ne=n);function DI(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=df(n.getAttribute("position"),o),s;if(r&&e){let{indices:l,verticesPerFace:c}=pf(i,a,n);s=c.length,t=[];for(let u=0,p=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[p++])}}else{let l=a.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=a[c++],t[u++]=a[c++],t[u++]=a[c++]}return{positions:i,faceIndices:t,nFaces:s}}function G0(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=Ne._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ne.HEAPU32.buffer,i,r):new Float32Array(Ne.HEAPF32.buffer,i,r)).set(n,0),i}function j0(n){switch(n){case 0:return Ne.OP.UNION;case 1:return Ne.OP.INTERSECTION;case 2:return Ne.OP.A_MINUS_B;case 3:return Ne.OP.B_MINUS_A;case 4:return Ne.OP.SYMMETRIC_DIFFERENCE;case 5:return Ne.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function EI(n,r){Oa===void 0&&(Oa=Ne.init_csg());let e=G0(n),t=Ne.csg_calc_topological(Oa,e,n.length,j0(r));Ne._free(e);let o=6,i=Ne.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,l=Ne.HEAPU32[i[s]>>2],c=new Float32Array(Ne.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ne.HEAPU32[i[s]>>2],p=new Uint32Array(Ne.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let d=Ne.HEAPU32[i[s]>>2],h=new Uint8Array(Ne.HEAPU32.subarray(d>>2,(d>>2)+a[s]));return Ne.free_mesh_data(t),{positions:c,indices:p,verticesPerFace:h}}function _I(n,r,e,t){Oa===void 0&&(Oa=Ne.init_csg());let o=G0(n),i=Ne.csg_calc(Oa,o,n.length,t,j0(r));Ne._free(o);let a=5,s=Ne.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),c=0,u=Ne.HEAPU32[s[c]>>2],p=Ne.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let d=Ne.HEAPU32[s[c]>>2],h=Ne.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new z0(p,3)),e.setAttribute("normal",new z0(h,3));let m=Ne.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new NI),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ne.free_mesh_data(i),f}function BI(n,r,e){if(Ne===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,t=g.positions,o=Array(g.verticesPerFace.reduce((v,O)=>v+O,0)+i);for(let v=0,O=0,P=0;v<g.verticesPerFace.length;v++){o[P++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[P++]=g.indices[O++]}}else({positions:t,faceIndices:o,nFaces:i}=DI(n,r,e));let a=t.length,s=o.length,l=t.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,p=l*Float32Array.BYTES_PER_ELEMENT,d=c*Uint32Array.BYTES_PER_ELEMENT,h=Ne._malloc(u),f=new Float32Array(Ne.HEAPF32.buffer,h,l),m=new Uint32Array(Ne.HEAPU32.buffer,h+p,c);f.set(t,0),m.set(o,0);let y=Ne.get_csg_mesh(h,a,h+p,s,i);return Ne._free(h),y}function LI(n){return Ne.has_open_edges(n)}function RI(n,r){Ne.transform_csg_mesh(n,r.elements)}function VI(n){Ne.free_csg_mesh(n)}var zI={ConeGeometry:bx,CubeGeometry:vx,CylinderGeometry:xx,DodecahedronGeometry:Sx,EllipseGeometry:ya,HelixGeometry:t0,IcosahedronGeometry:r0,LatheGeometry:o0,NonParametricGeometry:f0,PolygonGeometry:cu,PyramidGeometry:h0,RectangleGeometry:va,SphereGeometry:y0,PlaneGeometry:g0,BackdropGeometry:x0,StarGeometry:uu,TextFrameGeometry:b0,TorusGeometry:v0,TorusKnotGeometry:S0,TriangleGeometry:w0,PathGeometry:T0,VectorGeometry:Jt},of=n=>zI[n.type].create(n);function Ca(n){return n!==null&&"booleanOp"in n}var Ta=class extends la(jI){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new GI}updateVisible(e){super.updateVisible(e),this.visible=!Ca(this.parent)&&this.visible,Ca(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(br.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ca(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ta&&(e.freeBooleanPointer(),Ca(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ca(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var yu=new FI;function $s(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let p=r;p<e;p++){let d=n.getX(p),h=n.getY(p),f=n.getZ(p);d<i&&(i=d),h<a&&(a=h),f<s&&(s=f),d>l&&(l=d),h>c&&(c=h),f>u&&(u=f)}yu.min.set(i,a,s),yu.max.set(l,c,u),yu.getCenter(t),yu.getSize(o).multiplyScalar(.5)}var HI=new UI,WI=new kI,Ot=class extends Ta{constructor(r,e){super(HI,WI),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?$s(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as s3,Matrix4 as l3,Sphere as Mb,Vector3 as c3}from"three";import{BufferAttribute as n3,Float32BufferAttribute as Ab,MathUtils as zf,Vector3 as Gf}from"three";import{ShaderMaterial as UN}from"three";var Bo=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Bo.uuidContext===null)throw new Error("plz startContext");Bo.uuidContext===Bo.globalContext?this.uuid="_gid"+Bo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Bo.uuidContext.nodeContextUuid++,this.type=r,this.name=""}static startContext(r){this.uuidContext===null||this.uuidContext===Bo.globalContext?this.uuidContext=r:console.error("Can't start context twice")}static endContext(r){this.uuidContext!==r&&console.error("Can't end context twice"),this.uuidContext=null}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,a){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},qe=Bo;qe.globalContext={nodeContextUuid:0},qe.uuidContext=Bo.globalContext;import{CubeReflectionMapping as rN,CubeRefractionMapping as oN,CubeUVReflectionMapping as nN,LinearEncoding as K0,sRGBEncoding as iN}from"three";var Ys=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var ff=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},Ct=new ff;import{Vector2 as F0}from"three";import{MathUtils as qI}from"three";var ye=class extends qe{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=qI.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,s.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var $e=class extends ye{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}};var at=class extends $e{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof F0?e:new F0(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as U0}from"three";var Vt=class extends $e{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof U0?e:new U0(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as $I}from"three";var Tt=class extends $I{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var er=class extends $e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Tt?e:new Tt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var YI=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,k0=/[a-z_0-9]+/gi,re=class extends ye{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,a){let s,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let u=[];for(;s=k0.exec(this.src);)u.push(s);for(let p=0;p<u.length;p++){let d=u[p],h=d[0],f=this.isMethod?!this.getInputByName(h):!0,m=h;if(this.keywords[h]||this.useKeywords&&f&&Ct.containsKeyword(h)){let y=this.keywords[h];if(!y){let g=Ct.getKeywordData(h);g.cache&&(y=e.keywords[h]),y=y||Ct.getKeyword(h,e),g.cache&&(e.keywords[h]=y)}m=y.build(e)}h!==m&&c[d.index+l-1]!=="."&&(c=c.substring(0,d.index+l)+m+c.substring(d.index+h.length+l),l+=m.length-h.length),this.getIncludeByName(m)===void 0&&Ct.contains(m)&&e.include(Ct.get(m))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=YI.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(k0);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let p=s[l++];this.inputs.push({name:p,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var XI=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,hf=class extends ye{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||hf.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,l,c="",u=XI.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,a){return e.format(this.name,this.getType(e),t)}},je=hf;je.PI="PI",je.PI2="PI2",je.RECIPROCAL_PI="RECIPROCAL_PI",je.RECIPROCAL_PI2="RECIPROCAL_PI2",je.LOG2="LOG2",je.EPSILON="EPSILON";var KI=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
5
+ )*?)}`,"gim"),QI=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Aa=class extends ye{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,a){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=KI.exec(e);if(t){let o=t[2],i;for(;i=QI.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Ma=class extends ye{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};Ct.addKeyword("uv",function(){return new Ma});Ct.addKeyword("uv2",function(){return new Ma(1)});import{LinearEncoding as ZI,sRGBEncoding as JI}from"three";var qn=class extends ye{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??qn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ZI:return["Linear"];case JI:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),a=qn.Nodes[this.method],s=e.include(a);if(s===qn.LINEAR_TO_LINEAR)return e.format(o,i,t);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,t)}else return e.format(s+"( "+o+" )",i,t)}fromEncoding(e){let t=qn.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=qn.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},qt=qn;qt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
6
6
  `)),sRGBToLinear:new re(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
7
7
  `)),LinearTosRGB:new re(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
8
8
  `))},qt.LINEAR_TO_LINEAR="LinearToLinear",qt.SRGB_TO_LINEAR="sRGBToLinear",qt.LINEAR_TO_SRGB="LinearTosRGB";var Ue=class extends re{constructor(e="",t,o,i,a){super(e,a,i,o,t);this.nodeType="Expression"}};import{Texture as eN}from"three";var $t=class extends $e{constructor(e=new eN,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Ma,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new qt(new Ue("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var se=class extends $e{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var Xs=class extends ye{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,t)+"( ",c=[];if(s.inputs){for(let u=0;u<s.inputs.length;u++){let p=s.inputs[u],d=this.inputs[u]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,t)}};var mf=class extends ye{constructor(e,t,o=mf.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,t)}},Dt=mf;Dt.ADD="+",Dt.SUB="-",Dt.MUL="*",Dt.DIV="/";var Ye=class extends ye{constructor(e,t=Ye.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ye.MIX:case Ye.CLAMP:case Ye.REFRACT:case Ye.SMOOTHSTEP:case Ye.FACEFORWARD:return 3;case Ye.MIN:case Ye.MAX:case Ye.MOD:case Ye.STEP:case Ye.REFLECT:case Ye.DISTANCE:case Ye.DOT:case Ye.CROSS:case Ye.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ye.LENGTH:case Ye.DISTANCE:case Ye.DOT:return"f";case Ye.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,u=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ye.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case Ye.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case Ye.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ye.STEP:o=this.a.build(e,s===1?"f":u),i=this.b.build(e,u);break;case Ye.MIN:case Ye.MAX:case Ye.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case Ye.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,"f");break;case Ye.MIX:o=this.a.build(e,u),i=this.b.build(e,u),a=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(i=this.b.build(e,u)),this.c&&(a=this.c.build(e,u));break}let d=[];d.push(o),i&&d.push(i),a&&d.push(a);let h=this.getNumInputs(e);if(d.length!==h)throw Error(`Arguments not match used in "${this.method}". Require ${h}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,t)}},Oe=Ye;Oe.RAD="radians",Oe.DEG="degrees",Oe.EXP="exp",Oe.EXP2="exp2",Oe.LOG="log",Oe.LOG2="log2",Oe.SQRT="sqrt",Oe.INV_SQRT="inversesqrt",Oe.FLOOR="floor",Oe.CEIL="ceil",Oe.NORMALIZE="normalize",Oe.FRACT="fract",Oe.SATURATE="saturate",Oe.SIN="sin",Oe.COS="cos",Oe.TAN="tan",Oe.ASIN="asin",Oe.ACOS="acos",Oe.ARCTAN="atan",Oe.ABS="abs",Oe.SIGN="sign",Oe.LENGTH="length",Oe.NEGATE="negate",Oe.INVERT="invert",Oe.MIN="min",Oe.MAX="max",Oe.MOD="mod",Oe.STEP="step",Oe.REFLECT="reflect",Oe.DISTANCE="distance",Oe.DOT="dot",Oe.CROSS="cross",Oe.POW="pow",Oe.MIX="mix",Oe.CLAMP="clamp",Oe.REFRACT="refract",Oe.SMOOTHSTEP="smoothstep",Oe.FACEFORWARD="faceforward";var Ia=class extends ye{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let a=new Xs(Ia.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new qt(new Ue("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new qt(new Ue("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new qt(new Ue("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new qt(new Ue("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new Ue(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ue(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ue(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ue(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ue("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new Xs(Ia.Nodes.roughnessToMip,[i]),s=new Oe(a,Ia.Nodes.m0,Ia.Nodes.cubeUV_maxMipLevel,Oe.CLAMP),l=new Oe(s,Oe.FLOOR),c=new Oe(s,Oe.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Dt(l,new se(1).setReadonly(!0),Dt.ADD)),d=new Oe(u,p,c,Oe.MIX);return e.format(d.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},Na=Ia;Na.Nodes=function(){let e=new Aa(`struct TextureCubeUVData {
@@ -238,7 +238,7 @@ layout(location = 1) out vec4 gVelocity;
238
238
  `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",a=""){let s=this.getVars(o),l=s[r];if(!l){let c=s.length;l={name:t||"node"+i+c+(a?"_"+a:""),type:e},s.push(l),s[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
239
239
  `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let a=r[o],s=a.type,l=a.name,c=a.size,u=this.getFormatByType(s);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
240
240
  `:t+=e+" "+u+" "+l+`;
241
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof qe?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new Ys({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new Ys({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?Ct.get(r):r,this.context.include===!1)return r.name;r instanceof re?o=this.includes.functions:r instanceof je?o=this.includes.consts:r instanceof Aa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof re&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return aN[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case rN:case oN:return new xu(t);case nN:return new gu(new $t(t));default:return new $t(t)}else{if(t.isVector2)return new at(t);if(t.isVector3)return new Vt(t);if(t.isVector4)return new er(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return sN[r]||r}getFormatByType(r){return lN[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Q0[r]}getIndexByElement(r){return Q0.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.colorSpace):e=K0,e===K0&&this.context.gamma&&(e=iN),e}};import{Vector2 as Fr,Vector3 as lo,Vector4 as Ya}from"three";var He=class extends $e{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Tt?e:new Tt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var _e=class extends $e{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};import{UniformsLib as fN,UniformsUtils as hN}from"three";var pt=class extends $e{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var zr=class extends $e{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};import{Vector3 as cN}from"three";var fn=class extends $e{};var bu=class extends fn{constructor(e){super("v3");this.image=e;this._value=new cN}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Yn=class extends fn{constructor(e,t,o=1008){super("t");this.image=e;this.wrap=t;this.minFilter=o}get value(){return this.image.getTexture(this.wrap,this.minFilter)}};import{Matrix3 as uN}from"three";var Ea=class extends $e{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new uN}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as dN}from"three";var zt=class extends $e{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new dN}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{MathUtils as pN,Matrix3 as J0}from"three";function Z0(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new J0().makeRotation(t*pN.DEG2RAD))}var vu=class extends Ea{constructor(e,t,o=0){super(new J0);this.repeat=e;this.offset=t;this.rotation=o;Z0(this.value,e,t,o)}updateMatrix(){Z0(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as eb}from"three";var Gr=class extends $e{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof eb?new Array(e).fill(t):new Array(e).fill(new eb(0))}};var _a=class extends ye{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var yf=class extends ye{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(yf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Xn=yf;Xn.Nodes=function(){return{customColor:new re(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
241
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof qe?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,c=new Ys({type:e,size:t.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}else{let s=this.inputs.uniforms,l=s.list.length,c=new Ys({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:t,needsUpdate:i});return s.list.push(c),s[r].push(c),s[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?Ct.get(r):r,this.context.include===!1)return r.name;r instanceof re?o=this.includes.functions:r instanceof je?o=this.includes.consts:r instanceof Aa&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let a=i[r.name];if(a||(a=i[r.name]={node:r,deps:[]},i.push(a),a.src=r.build(this,"source")),r instanceof re&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let s=0;do this.include(r.includes[s++],e);while(s<r.includes.length)}return t&&(a.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return aN[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case rN:case oN:return new xu(t);case nN:return new gu(new $t(t));default:return new $t(t)}else{if(t.isVector2)return new at(t);if(t.isVector3)return new Vt(t);if(t.isVector4)return new er(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return sN[r]||r}getFormatByType(r){return lN[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Q0[r]}getIndexByElement(r){return Q0.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=K0,e===K0&&this.context.gamma&&(e=iN),e}};import{Vector2 as Fr,Vector3 as lo,Vector4 as Ya}from"three";var He=class extends $e{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Tt?e:new Tt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var _e=class extends $e{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,a,s){return e.format(this.value.toString(),i,t)}};import{UniformsLib as fN,UniformsUtils as hN}from"three";var pt=class extends $e{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var zr=class extends $e{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};import{Vector3 as cN}from"three";var fn=class extends $e{};var bu=class extends fn{constructor(e){super("v3");this.image=e;this._value=new cN}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Yn=class extends fn{constructor(e,t,o=1008){super("t");this.image=e;this.wrap=t;this.minFilter=o}get value(){return this.image.getTexture(this.wrap,this.minFilter)}};import{Matrix3 as uN}from"three";var Ea=class extends $e{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new uN}generateReadonly(e,t,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix4 as dN}from"three";var zt=class extends $e{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new dN}generateReadonly(e,t,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{MathUtils as pN,Matrix3 as J0}from"three";function Z0(n,r,e,t=0){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0).premultiply(new J0().makeRotation(t*pN.DEG2RAD))}var vu=class extends Ea{constructor(e,t,o=0){super(new J0);this.repeat=e;this.offset=t;this.rotation=o;Z0(this.value,e,t,o)}updateMatrix(){Z0(this.value,this.repeat,this.offset,this.rotation)}};import{Vector4 as eb}from"three";var Gr=class extends $e{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof eb?new Array(e).fill(t):new Array(e).fill(new eb(0))}};var _a=class extends ye{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var yf=class extends ye{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(yf.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Xn=yf;Xn.Nodes=function(){return{customColor:new re(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
242
242
  float lalpha = alpha * mask;
243
243
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
244
244
  accumAlpha += (1.0 - accumAlpha) * lalpha;
@@ -944,7 +944,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
944
944
  vID = randomColor.r;
945
945
  vec2 ${o}_offset = vec2(0.0);
946
946
  if (${s}) {
947
- vec4 ${o}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
947
+ vec4 ${o}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(transformed, 1.0));
948
948
  // NOTE: For certain shapes, like spheres, we get incorrect extrusion when the
949
949
  // normals face the camera directly. So we hackily fix this by offsetting the normal
950
950
  // by a tiny amount.
@@ -1820,7 +1820,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1820
1820
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1821
1821
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1822
1822
  return displaced_position;
1823
- }`,[e,t])}}();var Ae={normalRenderTarget:new $t,normalRenderTargetDepth:new $t,transmissionRenderTarget:new $t,aspectRatio:new at,transmissionSize:new at(2048,2048),transmissionRenderTargetDepth:new $t,aoRenderTarget:new $t,aoEnabled:new pt,pixelRatioNode:new se(1),resolution:new at,penumbraSize:new zr(5,.5),frameIndex:new _e(0),transmissionLod:new _e(2)};for(let n of Object.values(Ae))n.isRenderGlobal=!0;var nb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.0.84/build/ui.wasm"};var Lo=class extends qe{constructor(){super("basic");this.nodeType="Basic";this.color=new He(ht),this.shadingAlpha=new se(1),this.shadingBlend=new _e(0),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(hN.merge([fN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1823
+ }`,[e,t])}}();var Ae={normalRenderTarget:new $t,normalRenderTargetDepth:new $t,transmissionRenderTarget:new $t,aspectRatio:new at,transmissionSize:new at(2048,2048),transmissionRenderTargetDepth:new $t,aoRenderTarget:new $t,aoEnabled:new pt,pixelRatioNode:new se(1),resolution:new at,penumbraSize:new zr(5,.5),frameIndex:new _e(0),transmissionLod:new _e(2)};for(let n of Object.values(Ae))n.isRenderGlobal=!0;var nb={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.0.86/build/ui.wasm"};var Lo=class extends qe{constructor(){super("basic");this.nodeType="Basic";this.color=new He(ht),this.shadingAlpha=new se(1),this.shadingBlend=new _e(0),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(hN.merge([fN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1824
1824
  `));let i=["#include <beginnormal_vertex>",`
1825
1825
  #if !defined( USE_LAYER_DISPLACE )
1826
1826
  #include <defaultnormal_vertex>
@@ -1840,14 +1840,16 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1840
1840
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1841
1841
  `)}else{this.color===void 0&&(this.color=new He(ht)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1842
1842
  `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
1843
- `)}return t}};import{UniformsLib as ib,UniformsUtils as mN}from"three";var Zs=class extends qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new He(ht),this.emissive=new He(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt,this.shadingAlpha=new se(1),this.shadingBlend=new _e(0),this.occlusion=new pt(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.define("USE_LIGHT_PROBES"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(mN.merge([ib.fog,ib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1843
+ `)}return t}};import{UniformsLib as ib,UniformsUtils as mN}from"three";var Zs=class extends qe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new He(ht),this.emissive=new He(0),this.emissiveIntensity=new se(1),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt,this.shadingAlpha=new se(1),this.shadingBlend=new _e(0),this.occlusion=new pt(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(mN.merge([ib.fog,ib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1844
1844
  `));let i=["#include <beginnormal_vertex>",`
1845
+ #include <skinbase_vertex>
1846
+ #include <skinnormal_vertex>
1845
1847
  #ifndef USE_LAYER_DISPLACE
1846
1848
  #include <defaultnormal_vertex>
1847
1849
  #endif
1848
1850
 
1849
1851
  vec3 displaced_position = position;
1850
- vec3 displaced_normal = normal;
1852
+ vec3 displaced_normal = objectNormal;
1851
1853
 
1852
1854
  #ifdef USE_LAYER_DISPLACE
1853
1855
  vec3 transformed;
@@ -1857,13 +1859,17 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1857
1859
  #ifndef USE_LAYER_DISPLACE
1858
1860
  #include <begin_vertex>
1859
1861
  #endif
1860
- `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
1862
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
1861
1863
  vec3 diffuse = vec3( 1.0 );
1862
- vec3 geometryPosition = mvPosition.xyz;
1863
- vec3 geometryNormal = normalize( transformedNormal );
1864
- vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
1864
+ GeometricContext geometry;
1865
+ geometry.position = mvPosition.xyz;
1866
+ geometry.normal = normalize( transformedNormal );
1867
+ geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
1865
1868
  `),i.push(`
1866
- vec3 backGeometryNormal = - geometryNormal;
1869
+ GeometricContext backGeometry;
1870
+ backGeometry.position = geometry.position;
1871
+ backGeometry.normal = -geometry.normal;
1872
+ backGeometry.viewDir = geometry.viewDir;
1867
1873
  vLightFront = vec3( 0.0 );
1868
1874
  vIndirectFront = vec3( 0.0 );
1869
1875
  #ifdef DOUBLE_SIDED
@@ -1874,16 +1880,16 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1874
1880
  float dotNL;
1875
1881
  vec3 directLightColor_Diffuse;
1876
1882
  vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
1877
- vIndirectFront += getLightProbeIrradiance( lightProbe, geometryNormal );
1883
+ vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
1878
1884
  #ifdef DOUBLE_SIDED
1879
1885
  vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
1880
- vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometryNormal );
1886
+ vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
1881
1887
  #endif
1882
1888
  #if NUM_POINT_LIGHTS > 0
1883
1889
  #pragma unroll_loop_start
1884
1890
  for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
1885
- getPointLightInfo( pointLights[ i ], geometryPosition, directLight );
1886
- dotNL = dot( geometryNormal, directLight.direction );
1891
+ getPointLightInfo( pointLights[ i ], geometry, directLight );
1892
+ dotNL = dot( geometry.normal, directLight.direction );
1887
1893
  directLightColor_Diffuse = directLight.color;
1888
1894
  vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1889
1895
  #ifdef DOUBLE_SIDED
@@ -1895,8 +1901,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1895
1901
  #if NUM_SPOT_LIGHTS > 0
1896
1902
  #pragma unroll_loop_start
1897
1903
  for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
1898
- getSpotLightInfo( spotLights[ i ], geometryPosition, directLight );
1899
- dotNL = dot( geometryNormal, directLight.direction );
1904
+ getSpotLightInfo( spotLights[ i ], geometry, directLight );
1905
+ dotNL = dot( geometry.normal, directLight.direction );
1900
1906
  directLightColor_Diffuse = directLight.color;
1901
1907
  vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1902
1908
  #ifdef DOUBLE_SIDED
@@ -1908,8 +1914,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1908
1914
  #if NUM_DIR_LIGHTS > 0
1909
1915
  #pragma unroll_loop_start
1910
1916
  for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
1911
- getDirectionalLightInfo( directionalLights[ i ], directLight );
1912
- dotNL = dot( geometryNormal, directLight.direction );
1917
+ getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
1918
+ dotNL = dot( geometry.normal, directLight.direction );
1913
1919
  directLightColor_Diffuse = directLight.color;
1914
1920
  vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1915
1921
  #ifdef DOUBLE_SIDED
@@ -1921,9 +1927,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1921
1927
  #if NUM_HEMI_LIGHTS > 0
1922
1928
  #pragma unroll_loop_start
1923
1929
  for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
1924
- vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );
1930
+ vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
1925
1931
  #ifdef DOUBLE_SIDED
1926
- vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometryNormal );
1932
+ vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
1927
1933
  #endif
1928
1934
  }
1929
1935
  #pragma unroll_loop_end
@@ -1944,7 +1950,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1944
1950
 
1945
1951
  outgoingLight *= ao;
1946
1952
  }
1947
- `),u&&h.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&h.push(`gl_FragColor.a *= ${d.result};`),h.push("#include <colorspace_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
1953
+ `),u&&h.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&h.push(`gl_FragColor.a *= ${d.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
1948
1954
  `)}return t}};import{UniformsLib as ab,UniformsUtils as yN}from"three";var Ro=function(){let n=new re(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1949
1955
 
1950
1956
  // Gradient of UVs w.r.t. X coordinate (in screen-space)
@@ -2043,15 +2049,17 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2043
2049
 
2044
2050
  outgoingLight *= ao;
2045
2051
  }
2046
- `),u&&h.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result});`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&h.push(`gl_FragColor.a *= ${d.result};`),h.push("#include <colorspace_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
2047
- `)}return t}};import{UniformsLib as Tf,UniformsUtils as gN}from"three";var el=class extends qe{constructor(){super("standard");this.nodeType="Standard";this.color=new He(ht),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt,this.shadingAlpha=new se(1),this.shadingBlend=new _e(0),this.occlusion=new pt(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(gN.merge([Tf.fog,Tf.lights])),Tf.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2052
+ `),u&&h.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result});`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&h.push(`gl_FragColor.a *= ${d.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
2053
+ `)}return t}};import{UniformsLib as Tf,UniformsUtils as gN}from"three";var el=class extends qe{constructor(){super("standard");this.nodeType="Standard";this.color=new He(ht),this.roughness=new se(.3),this.metalness=new se(0),this.reflectivity=new se(.5),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt,this.shadingAlpha=new se(1),this.shadingBlend=new _e(0),this.occlusion=new pt(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(gN.merge([Tf.fog,Tf.lights])),Tf.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2048
2054
  `));let i=["#include <beginnormal_vertex>",`
2055
+ #include <skinbase_vertex>
2056
+ #include <skinnormal_vertex>
2049
2057
  #if !defined( USE_LAYER_DISPLACE )
2050
2058
  #include <defaultnormal_vertex>
2051
2059
  #endif
2052
2060
 
2053
2061
  vec3 displaced_position = position;
2054
- vec3 displaced_normal = normal;
2062
+ vec3 displaced_normal = objectNormal;
2055
2063
 
2056
2064
  #if defined( USE_LAYER_DISPLACE )
2057
2065
  vec3 transformed;
@@ -2061,7 +2069,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2061
2069
  #if !defined( USE_LAYER_DISPLACE )
2062
2070
  #include <begin_vertex>
2063
2071
  #endif /* !USE_LAYER_DISPLACE */
2064
- `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2072
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2065
2073
  `)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new He(ht)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,h=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,f=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
2066
2074
  `));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
2067
2075
  // NOTE: gl_FrontFacing alternative using face normal estimation.
@@ -2126,7 +2134,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2126
2134
  const float roughnessScale = 1.0;
2127
2135
 
2128
2136
  ${O}
2129
- `)}else m.push(s.code," float roughnessFactor = "+s.result+";");d&&m.push(d.code,"#ifdef ALPHATEST"," if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( normal ) ), abs( dFdy( normal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?m.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
2137
+ `)}else m.push(s.code," float roughnessFactor = "+s.result+";");d&&m.push(d.code,"#ifdef ALPHATEST"," if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),f?m.push(f.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+f.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
2130
2138
  if (outgoingLight != diffuseColor) {
2131
2139
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2132
2140
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${y} * lightAccu;
@@ -2134,15 +2142,17 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2134
2142
 
2135
2143
  outgoingLight *= ao;
2136
2144
  }
2137
- `),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),d?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),h&&m.push(`gl_FragColor.a *= ${h.result};`),m.push("#include <colorspace_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
2138
- `)}return t}};import{UniformsLib as sb,UniformsUtils as xN}from"three";var tl=class extends qe{constructor(){super("toon");this.nodeType="Toon";this.color=new He(ht),this.specular=new He(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt,this.shadingAlpha=new se(1),this.shadingBlend=new _e(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(xN.merge([sb.fog,sb.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2145
+ `),p&&m.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),d?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),h&&m.push(`gl_FragColor.a *= ${h.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
2146
+ `)}return t}};import{UniformsLib as sb,UniformsUtils as xN}from"three";var tl=class extends qe{constructor(){super("toon");this.nodeType="Toon";this.color=new He(ht),this.specular=new He(1118481),this.shininess=new se(30),this.previousModelViewMatrix=new zt,this.previouseProjectionMatrix=new zt,this.shadingAlpha=new se(1),this.shadingBlend=new _e(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(xN.merge([sb.fog,sb.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
2139
2147
  `));let i=["#include <beginnormal_vertex>",`
2148
+ #include <skinbase_vertex>
2149
+ #include <skinnormal_vertex>
2140
2150
  #ifndef USE_LAYER_DISPLACE
2141
2151
  #include <defaultnormal_vertex>
2142
2152
  #endif
2143
2153
 
2144
2154
  vec3 displaced_position = position;
2145
- vec3 displaced_normal = normal;
2155
+ vec3 displaced_normal = objectNormal;
2146
2156
 
2147
2157
  #ifdef USE_LAYER_DISPLACE
2148
2158
  vec3 transformed;
@@ -2152,7 +2162,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2152
2162
  #ifndef USE_LAYER_DISPLACE
2153
2163
  #include <begin_vertex>
2154
2164
  #endif
2155
- `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2165
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
2156
2166
  `)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new He(ht)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
2157
2167
  varying vec3 vViewPosition;
2158
2168
  struct ToonMaterial {
@@ -2161,13 +2171,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2161
2171
  float specularShininess;
2162
2172
  float specularStrength;
2163
2173
  };
2164
- void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
2165
- vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;
2174
+ void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
2175
+ vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
2166
2176
 
2167
2177
  reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
2168
- reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
2178
+ reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
2169
2179
  }
2170
- void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
2180
+ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
2171
2181
  reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
2172
2182
  }
2173
2183
  #define RE_Direct RE_Direct_Toon
@@ -2217,7 +2227,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2217
2227
  accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${h} * lightAccu;
2218
2228
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${h}, ${l.result} );
2219
2229
  }
2220
- `),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&d.push(`gl_FragColor.a *= ${p.result};`),d.push("#include <colorspace_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
2230
+ `),c&&d.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&d.push(`gl_FragColor.a *= ${p.result};`),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
2221
2231
  `)}return t}};import{VideoTexture as bN,Texture as vN,CanvasTexture as SN}from"three";var Su=class{constructor(r=1e3*10){this.timeout=r;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Mf=class extends Su{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Af;function lb(n){return typeof n=="string"?n:(Af||(Af=new Mf),Af.load(n))}var wu=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Pu=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var $a=class extends wu{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isCanvas=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isCanvas=e.nodeName==="CANVAS",this.updateSrc(this.isCanvas?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;for(let i of Object.values(this._cache))for(let a of Object.values(i))a&&(a.image=this.img,a.needsUpdate=!0);this.shared.requestRender()};if(this.isCanvas)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=lb(e),this.img.onload=t}getTexture(e,t=1008){let o=this._cache[e]?.[t];if(o)return o;{let i;return this.isCanvas&&(i=new SN(this.img,void 0,e,e,void 0,t)),this.isVideo?i=new bN(this.img,void 0,e,e):i=new vN(this.img,void 0,e,e,void 0,t),this.loaded&&(i.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][t]=i,i}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let o of Object.values(t))o&&(o.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[o,i]of Object.entries(t))i?.dispose(),this._cache[e][o]=void 0}dispose(){super.dispose(),this.disposeTextures()}};var dr=class extends $a{};import{Vector2 as Vo,Vector3 as so,Vector4 as Ou}from"three";function Gt(n,r){return r.color(n)}function cb(n,r){switch(n.type){case"fresnel":return ON(n,r);case"gradient":return CN(n,r);case"depth":return TN(n,r);case"normal":return AN(n,r);case"noise":return MN(n,r);case"rainbow":return IN(n,r);case"toon":return NN(n,r);case"outline":return DN(n,r);case"transmission":return EN(n,r);case"color":return PN(n,r);case"pattern":return _N(n,r)}}function wN(n){return{type:n.type}}function jr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...wN(n),alpha:i,mode:t,isMask:o}}function PN(n,r){return{...jr(n,r),color:Gt(n.color,r)}}function ON(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...jr(n,r),color:Gt(a,r),bias:e,scale:t,intensity:o,factor:i}}function CN(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...jr(n,r),gradientType:e,smooth:t,colors:o.map(c=>new Ou(c[0],c[1],c[2],c[3])),num:o.length,steps:i,offset:new Vo(...s),morph:new Vo(...l),angle:a}}function TN(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:p}=n;return{...jr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new so(...s),direction:l?new so(...l):new so(1,0,0),colors:c.map(d=>d!==void 0?new Ou(d[0],d[1],d[2],d[3]):new Ou(0,0,0,0)),steps:u.slice(0,c.length),smooth:p}}function AN(n,r){let{cnormal:e}=n;return{...jr(n,r),cnormal:new so(e[0],e[1],e[2])}}function MN(n,r){return{...jr(n,r),scale:n.scale,move:n.move,fA:new Vo(...n.fA),fB:new Vo(...n.fB),size:new so(...n.size),distortion:new Vo(...n.distortion),colorA:Gt(n.colorA,r),colorB:Gt(n.colorB,r),colorC:Gt(n.colorC,r),colorD:Gt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function IN(n,r){return{...jr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new so(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new so(...n.offset)}}function NN(n,r){return{...jr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new Ou(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new so(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Gt(n.shadowColor,r),offset:new so(...n.offset)}}function DN(n,r){return{...jr(n,r),outlineColor:Gt(n.outlineColor,r),contourColor:Gt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new so(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function EN(n,r){return{...jr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function _N(n,r){return{...jr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Vo(...n.offset),colorA:Gt(n.colorA,r),colorB:Gt(n.colorB,r),frequency:new Vo(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Vo(...n.vertical),horizontal:new Vo(...n.horizontal),sides:n.sides}}var mn=class extends Tt{};import{MathUtils as BN,Vector4 as LN}from"three";var RN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},VN={depth:["colors"]};function zN(n,r,e){if(r==="isMask")return!0;let t=RN[n.type],o=VN[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function If(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=r.image(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=r.video(a),l=t;l.image instanceof dr||l.image.deref(),l.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("minFilter"in i){let a=t;a.minFilter=i.minFilter}if("rotation"in i&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(i.rotation??0)*BN.DEG2RAD,o;if("repeat"in i||"offset"in i||"rotation"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),"rotation"in i&&(s.rotation=i.rotation??0),s.updateMatrix()}return o}function ub(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(Nf(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof fn))switch(o=o||zN(e,i,a),s.constructor){case He:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof mn?s.value=new Tt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case er:if(typeof a=="string"){let l=r.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof mn?s.value=new Tt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case at:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Vt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case $t:{If(a,r,e);break}case Gr:{s.value=a.map(l=>new LN(...l));break}default:{s.value=a;break}}}return o}var yn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,gn=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)Nf(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Yt.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.canvas(t.texture.image)??o.image(t.texture.image):o.video(t.texture.video),a=new Yn(i,t.texture.wrapping,t.texture.minFilter??1008),s=new bu(i),l=new vu(t.texture.repeat,t.texture.offset,t.texture.rotation??0),c=new se(t.crop?1:0),u=new _e(t.projection??0),p=new _e(["x","y","z"].indexOf(t.axis)??0),d=new _e(t.side??0),h=new at(t.size?new Fr(t.size[0],t.size[1]):new Fr(100,100)),f=new se(t.blending??0),m=new se(yn(t.alpha,o)),y=new _e(t.mode??0),g=new pt(t.isMask??!1),v=new hn(a,s,c,u,p,d,h,f,l,m,y,g),O=new Ue(v.calpha,"f");return new tt(r,e,t,{texture:a,textureSize:s,crop:c,projection:u,axis:p,side:d,size:h,blending:f,mat:l,alpha:m,mode:y,isMask:g},v,y,O,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Yn(i,t.texture.wrapping,t.texture.minFilter??1008),s=new se(yn(t.alpha,o)),l=new _e(t.mode??0),c=new pt(t.isMask??!1),u=new se(t.texture.rotation??0),p=new Ga(a,s,l,c,u),d=new Ue(p.calpha,"f");return new tt(r,e,t,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},p,l,d,c,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Vt(new lo(...t.offset)),a=new se(t.scale??10),s=new se(t.intensity??8),l=new se(t.movement??1),c=new _e(t.noiseType??0),u=new _e(t.voronoiStyle??0),p=new se(t.smoothness??.5),d=new se(t.seed??0),h=new se(t.highCut??1),f=new se(t.lowCut??0),m=new _e(t.quality??1),y=new qa(s,l,i,u,p,d,h,f,m,a,c);return new rl(r,e,t,{offset:i,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:p,seed:d,highCut:h,lowCut:f,quality:m},y,o)}else throw new Error;else return FN(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene.markNeedsUpdateRendererDirty(),!0):ub(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?If(o.props,t.shared,this):!0;return!1}dispose(){if(GN(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof dr||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},tt=class extends gn{constructor(e,t,o,i,a,s,l,c,u){super(e,t,o,i,u);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},rl=class extends gn{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},Yt=class extends gn{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new se(yn(o.alpha,i)),l=new _e(o.mode),c=new se(o.bumpMapIntensity),u=new se(yn(o.alphaOverride,i)),p;if(!o.visible)a=new Lo,p={};else if(o.category==="lambert"){a=new Zs;let d=new He(i.color(o.emissive)??0),h=new pt(o.occlusion??!0);p={emissive:d,occlusion:h},a.emissive=d,a.occlusion=h}else if(o.category==="toon"){a=new tl;let d=new se(o.shininess??30),h=new He(i.color(o.specular)??1118481);p={shininess:d,specular:h},a.shininess=d,a.specular=h}else if(o.category==="physical"){a=new el;let d=new se(o.roughness??.3),h=new se(o.metalness??0),f=new se(o.reflectivity??.5),m=new pt(o.occlusion??!0);p={roughness:d,metalness:h,reflectivity:f,occlusion:m},a.roughness=d,a.metalness=h,a.reflectivity=f,a.occlusion=m}else{a=new Js;let d=new se(o.shininess??30),h=new He(o.specular!==void 0?i.color(o.specular)??1118481:1118481),f=new pt(o.occlusion??!0);p={shininess:d,specular:h,occlusion:f},a.shininess=d,a.specular=h,a.occlusion=f}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,p.alpha=a.shadingAlpha,p.mode=a.shadingBlend,p.bumpMapIntensity=a.bumpMapIntensity,p.alphaOverride=a.alphaOverride,new Yt(e,t,o,a,p,i)}get category(){return this.node.category}};function GN(n){let r=n instanceof gn?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function vr(n){return{alpha:new se(n.alpha??1),mode:new _e(n.mode??0),isMask:new pt(n.isMask??!1)}}function jN(n,r,e,t,o){switch(n.type){case"color":{let i=new He(t.color??ht),a=vr(t),s=new Xn(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new He(t.color??16777215),a=new se(t.bias??.1),s=new se(t.scale??1),l=new se(t.intensity??2),c=new se(t.factor??1),u=vr(t),p=new Ks(i,a,s,l,c,u.alpha,u.mode,u.isMask),d=new Ue(p.calpha,"f");return new tt(r,e,n,{color:i,bias:a,scale:s,intensity:l,factor:c,...u},p,u.mode,d,u.isMask,o)}case"rainbow":{let i=new se(t.filmThickness??30),a=new se(t.movement??0),s=new Vt(t.wavelengths??new lo(0,0,0)),l=new se(t.noiseStrength??0),c=new se(t.noiseScale??1),u=new Vt(t.offset??new lo(0,0,0)),p=vr(t),d=new ka(i,a,s,l,c,u,p.alpha,p.isMask),h=new Ue(d.calpha,"f");return new tt(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...p},d,p.mode,h,p.isMask,o)}case"transmission":{let i=new se(t.thickness??10),a=new se(t.ior??1.5),s=new se(t.roughness??.5),l=Ae.transmissionSize,c=Ae.transmissionRenderTarget,u=Ae.transmissionRenderTargetDepth,p=window.innerWidth,d=window.innerHeight,h=p>=d?new at(d/p,1):new at(1,p/d),f=vr(t),m=new Wa(i,a,s,l,c,u,h,f.alpha),y=new Ue(m.calpha,"f");return new tt(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:h,...f},m,f.mode,y,f.isMask,o)}case"toon":{let i=new _e(t.positioning??0),a;t.colors?a=new Gr(t.colors.length,t.colors):(a=new Gr(10,new Ya(0,0,0,1)),a.value[1]=new Ya(1,1,1,1));let s;t.steps?s=new zr(t.steps.length,t.steps):(s=new zr(10,1),s.value[0]=0);let l=new Vt(t.source??new lo(0,0,0)),c=new pt(t.isWorldSpace??!0),u=new se(t.noiseStrength??0),p=new se(t.noiseScale??1),d=new er(t.shadowColor),h=new Vt(t.offset??new lo(0,0,0)),f=vr(t),m=new Ha(i,a,s,l,c,u,p,d,h,f.alpha),y=new Ue(m.calpha,"f");return new tt(r,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:p,shadowColor:d,offset:h,...f},m,f.mode,y,f.isMask,o)}case"outline":{let i=new He(t.outlineColor??16777215),a=new He(t.contourColor??16777215),s=new se(t.outlineWidth??.1),l=new se(t.contourWidth??.1),c=new se(t.outlineThreshold??.1),u=new se(t.contourThreshold??.1),p=new se(t.outlineSmoothing??.1),d=new se(t.contourFrequency??.1),h=new Vt(t.contourDirection??new lo(0,1,0)),f=new pt(t.positionalLines??!1),m=new pt(t.compensation??!0),y=Ae.normalRenderTarget,g=Ae.normalRenderTargetDepth,v=Ae.pixelRatioNode,O=Ae.resolution,P=vr(t),S=new Fa(i,a,s,l,c,u,p,d,h,f,m,O,y,g,v,P.alpha),T=new Ue(S.calpha,"f");return new tt(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:p,contourFrequency:d,contourDirection:h,positionalLines:f,compensation:m,...P},S,P.mode,T,P.isMask,o)}case"depth":{let i=new _e(t.gradientType??0),a=new pt(t.smooth??!1),s=new se(t.near??50),l=new se(t.far??200),c=new se(t.isVector??1),u=new se(t.isWorldSpace??0),p=new Vt(t.origin??new lo),d=new Vt(t.direction??new lo),h;t.colors?h=new Gr(t.colors.length,t.colors):(h=new Gr(2,new Ya(0,0,0,1)),h.value[1]=new Ya(1,1,1,1));let f;t.steps?f=new zr(t.steps.length,t.steps):(f=new zr(2,1),f.value[0]=0);let m=vr(t),y=new Va(i,a,s,l,c,u,p,d,h,f,m.alpha,m.isMask),g=new Ue(y.calpha,"f");return new tt(r,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:p,direction:d,colors:h,steps:f,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new se(t.scale??1),a=new Vt(t.size??new lo(100,100,100)),s=new se(t.move??1),l=new at(t.fA??new Fr(1.7,9.2)),c=new at(t.fB??new Fr(8.3,2.8)),u=new at(t.distortion??new Fr(1,1)),p=new er(t.colorA),d=new er(t.colorB),h=new er(t.colorC),f=new er(t.colorD),m=new _e(t.noiseType??0),y=new _e(t.voronoiStyle??0),g=new se(t.highCut??1),v=new se(t.lowCut??0),O=new se(t.smoothness??.5),P=new se(t.seed??.5),S=new _e(t.quality??1),T=vr(t),I=new ja(i,a,s,l,c,u,p,d,h,f,T.alpha,m,T.isMask,y,g,v,O,P,S),x=new Ue(I.calpha,"f");return new tt(r,e,n,{scale:i,size:a,move:s,fA:l,fB:c,distortion:u,colorA:p,colorB:d,colorC:h,colorD:f,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:v,smoothness:O,seed:P,quality:S},I,T.mode,x,T.isMask,o)}case"normal":{let i=new Vt(t.cnormal??new lo(1,1,1)),a=vr(t),s=new Ba(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new _e(t.gradientType??0),a=new pt(t.smooth??!1),s;t.colors?s=new Gr(t.colors.length,t.colors):(s=new Gr(10,new Ya(0,0,0,1)),s.value[1]=new Ya(1,1,1,1));let l;t.steps?l=new zr(t.steps.length,t.steps):(l=new zr(10,1),l.value[0]=0);let c=new at(t.offset??new Fr(0,0)),u=new at(t.morph??new Fr(0,0)),p=new se(t.angle??0),d=vr(t),h=new za(i,a,s,l,c,u,p,d.alpha,d.isMask),f=new Ue(h.calpha,"f");return new tt(r,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:p,...d},h,d.mode,f,d.isMask,o)}case"pattern":{let i=new _e(t.style??0),a=new _e(t.projection??0),s=new _e(["x","y","z"].indexOf(t.axis)??0),l=new se(t.blending??0),c=new at(t.offset??new Fr(0,0)),u=new er(t.colorA),p=new er(t.colorB),d=new at(t.frequency??new Fr(10,10)),h=new se(t.size??.5),f=new se(t.variation??0),m=new se(t.smoothness??.5),y=new se(t.zigzag??0),g=new se(t.rotation??0),v=new at(t.vertical??new Fr(0,1)),O=new at(t.horizontal??new Fr(0,1)),P=new _e(t.sides??6),S=vr(t),T=new Ua(i,a,s,l,c,u,p,d,h,f,m,y,g,v,O,P,S.alpha,S.isMask),I=new Ue(T.calpha,"f");return new tt(r,e,n,{style:i,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:p,frequency:d,size:h,variation:f,smoothness:m,zigzag:y,rotation:g,vertical:v,horizontal:O,sides:P,...S},T,S.mode,I,S.isMask,o)}default:{let i=new He(1,0,0,1),a=vr(t),s=new Xn(i,a.alpha),l=new Ue(s.calpha,"f");return new tt(r,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function FN(n,r,e,t){let o=cb(e,t);return jN(e,n,r,o,t)}function Nf(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=yn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Cu(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,l=r.color(o.data.colorC).a,c=r.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(i=u)}e+=(1-e)*i}}return e<1}var rr=class extends UN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},Tu=class extends rr{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Qn=class extends rr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],qe.startContext(this),this.reset0(e,t),qe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new Tu(e,t,o,this),this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,o=!1){qe.startContext(this),(this.data!==e||o)&&this.reset0(e,t),qe.endContext(this)}reset0(e,t){this.data=e;let o=e.layers??Lt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>gn.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Cu(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Cu(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Cu(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof Yt),this.lightLayer===void 0&&(this.lightLayer=new Yt(0,"",{...xt.defaultData("light","phong"),visible:!1},new Lo,{},e)),this.dispose();for(let t of this.flavors)t&&t.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Yt);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof tt&&s.color instanceof hn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(qe.startContext(this),t!==void 0?this.data=t:t=this.data,this.transparent=Cu(t,o.shared),e.path[0]==="layers"){let i=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(t,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=t.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:yn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:yn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(t,o)}}}else this.reset0(t,o);qe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof tt?t.color.mask=void 0:t instanceof Yt&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof tt&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Yt?i.node.mask=new Dt(t.color,t.alpha,Dt.MUL):i instanceof tt&&(i.isMask.value||(i.color.mask=new Dt(t.color,t.alpha,Dt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof tt),t=this.layers.findIndex(o=>o instanceof Yt);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof tt){if(a.isMask.value)continue;o=new _a(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ue("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Yt);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof tt){if(i.isMask.value)continue;e=new _a(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof rl);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Dt(t,e[o].position,Dt.ADD),t=new Dt(t,new se(.5).setReadonly(!0),Dt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Da;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof tt){let t=e.params.texture;if(t instanceof Yn&&!t.image.loaded)return!1}return!0}};Object.defineProperties(rr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Zn=class extends Qn{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var db=new Map;function pb(n){if(typeof n=="string")return n;let r=db.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},db.set(n,r)),r.url}var kN,fb=new Promise(n=>{kN=n});var hb;fb.then(n=>hb=n);var Jn=class{constructor({src:r,volume:e,delay:t,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof r=="string"?i={src:r}:i={src:pb(r),format:"wav"},this.sound=new hb.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as HN,Vector2 as ei,Path as mb,Shape as WN,ShapeUtils as qN,Color as $N}from"three";var Au=class{constructor(){this.type="ShapePath";this.color=new $N;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new mb,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(m,y,g,v){let O=m.x,P=y.x,S=g.x,T=v.x,I=m.y,x=y.y,_=g.y,D=v.y,A=(T-S)*(I-_)-(D-_)*(O-S),N=(P-O)*(I-_)-(x-I)*(O-S),E=(D-_)*(P-O)-(T-S)*(x-I),B=A/E,V=N/E;if(E===0&&A!==0||B<=0||B>=1||V<0||V>1)return null;if(A===0&&E===0){for(let j=0;j<2;j++)if(i(j===0?g:v,m,y),t.loc===e.ORIGIN){let R=j===0?g:v;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(O+t.t*(P-O)).toPrecision(10),W=+(I+t.t*(x-I)).toPrecision(10);return{x:R,y:W,t:t.t}}return null}else{for(let W=0;W<2;W++)if(i(W===0?g:v,m,y),t.loc===e.ORIGIN){let F=W===0?g:v;return{x:F.x,y:F.y,t:t.t}}let j=+(O+B*(P-O)).toPrecision(10),R=+(I+B*(x-I)).toPrecision(10);return{x:j,y:R,t:B}}}function i(m,y,g){let v=g.x-y.x,O=g.y-y.y,P=m.x-y.x,S=m.y-y.y,T=v*S-P*O;if(m.x===y.x&&m.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(m.x===g.x&&m.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*P<0||O*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+O*O)<Math.sqrt(P*P+S*S)){t.loc=e.BEYOND;return}let I;v!==0?I=P/v:I=S/O,t.loc=e.BETWEEN,t.t=I}function a(m,y){let g=[],v=[];for(let O=1;O<m.length;O++){let P=m[O-1],S=m[O];for(let T=1;T<y.length;T++){let I=y[T-1],x=y[T],_=o(P,S,I,x);_!==null&&g.find(D=>D.t<=_.t+Number.EPSILON&&D.t>=_.t-Number.EPSILON)===void 0&&(g.push(_),v.push(new ei(_.x,_.y)))}}return v}function s(m,y,g){let v=new ei;y.getCenter(v);let O=[];return g.forEach(P=>{P.boundingBox.containsPoint(v)&&a(m,P.points).forEach(T=>{O.push({identifier:P.identifier,isCW:P.isCW,point:T})})}),O.sort((P,S)=>P.point.x-S.point.x),O}function l(m,y,g,v,O){(O==null||O==="")&&(O="nonzero");let P=new ei;m.boundingBox.getCenter(P);let S=[new ei(g,P.y),new ei(v,P.y)],T=s(S,m.boundingBox,y);T.sort((N,E)=>N.point.x-E.point.x);let I=[],x=[];T.forEach(N=>{N.identifier===m.identifier?I.push(N):x.push(N)});let _=I[0].point.x,D=[],A=0;for(;A<x.length&&x[A].point.x<_;)D.length>0&&D[D.length-1]===x[A].identifier?D.pop():D.push(x[A].identifier),A++;if(D.push(m.identifier),O==="evenodd"){let N=D.length%2===0,E=D[D.length-2];return{identifier:m.identifier,isHole:N,for:E}}else if(O==="nonzero"){let N=!0,E=null,B=null;for(let V=0;V<D.length;V++){let j=D[V];y[j]&&(N?(B=y[j].isCW,N=!1,E=j):B!==y[j].isCW&&(B=y[j].isCW,N=!0))}return{identifier:m.identifier,isHole:N,for:E}}else console.warn('fill-rule: "'+O+'" is currently not implemented.')}let c=0,u=999999999,p=-999999999,d=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,v=999999999,O=-999999999,P=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>O&&(O=T.x),T.x<P&&(P=T.x)}p<=O&&(p=O+1),u>=P&&(u=P-1),y.length&&d.push({curves:m.curves,points:y,isCW:qN.isClockWise(y),identifier:c++,boundingBox:new HN(new ei(P,v),new ei(O,g))})});let h=d.map(m=>l(m,d,u,p,this.userData?.style.fillRule)),f=[];return d.forEach(m=>{let y=h[m.identifier];if(y&&!y.isHole){let g=new WN;g.curves=m.curves,h.filter(O=>O?.isHole&&O.for===m.identifier).forEach(O=>{if(O){let P=d[O.identifier],S=new mb;S.curves=P.curves,g.holes.push(S)}}),f.push(g)}}),f}};var Df=!1,gb,Ef=new Promise(n=>{gb=n}),yb=!1;var Mu;function xb(){if(Df=!0,yb)return;if(Mu)return Mu;async function n(){let e=await import("./opentype.js");gb(e),yb=!0}return Mu=n(),Mu}var ol=class{async load(r,e,t=()=>{}){let{load:o}=await Ef;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Ef;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function YN(n){return await(await fetch(n)).arrayBuffer()}var XN=new ol;async function _f(n){let r,e,t=!1;if(n.url?(r=await YN(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r)if(Df){let o=await XN.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:t,arr:r,bidi:null}}import{CubicBezierCurve as KN,LineCurve as QN,QuadraticBezierCurve as ZN}from"three";function JN(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Iu=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=_f(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=_f(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=t.length===i.length;for(let c=0;c<t.length;c++){let u=t[c].index,p=String.fromCharCode(t[c].unicode),d=i[s];if(JN(u,d)||l)a.push({char:p,index:u,replacements:[d.state.glyphIndex],replacementChars:[d.char]}),s++;else{let h=d.char,f="",m=[d.state.glyphIndex],y=[],g=!1;for(;!g;)s++,f=e.charAt(s),h+=f,m.push(r.charToGlyphIndex(f)),y=r.stringToGlyphs(h),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:p,index:u,replacements:m,replacementChars:Array.from(h)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(v=>this.getTextWidth(v,e)),s=e.width,l=this.getCharWidth(`
2222
2232
  `,e),c=e.horizontalAlign===1?l:0,u=this.computeSpaceWidthForLine(r,0,e),p=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,r[0],l),d=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),h=[],f=r.map(v=>[]),m=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let O=r[v],P={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(O,P)}catch(I){console.warn(I)}p=this.getLineInitialOffsetX(a[v],s,e.horizontalAlign,O,l);let T=[];try{T=this.reverseLigaturesTable(t,O,S)}catch(I){console.warn(I)}u=this.computeSpaceWidthForLine(r,v,e);for(let I=0;I<S.length;I++){let x=S[I],_=x.index===0?`
2223
2233
  `:x.unicode?String.fromCharCode(x.unicode):void 0,D=T[I],A=0,N=0;I===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(N=-x.leftSideBearing*o),y&&(A=t.getKerningValue(x,y)*o),p+=N+A;let E=0;if(_===`
@@ -2596,7 +2606,7 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2596
2606
  }
2597
2607
 
2598
2608
  #endif
2599
- `,Y3=dl.lights_fragment_begin,X3=dl.shadowmask_pars_fragment,ev=null,K3=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},tv=(n="medium")=>{if(ev===n)return!1;ev=n;let r=K3(n);dl.shadowmap_pars_fragment=$3(r);let e=Y3.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),dl.lights_fragment_begin=e;let t=X3.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),dl.shadowmask_pars_fragment=t,!0};import{DirectionalLight as tD,CameraHelper as rv}from"three";import{DirectionalLightHelper as Q3}from"three";var ns=class extends po(Q3){constructor(e,t=15,o=7829367){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){fo(this.object,ns.geometryHelper,e,t)}};import{PointLightHelper as Z3}from"three";var is=class extends po(Z3){constructor(e,t=15,o=4473924){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){fo(this.object,is.geometryHelper,e,t)}};import{SpotLightHelper as J3,Vector3 as eD}from"three";var ju=class extends po(J3){constructor(e,t=4473924){super(e,t);this.object=e;this.matrix=e.matrixWorld,this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){fo(this.object,ju.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=ju._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},pl=ju;pl._vector=new eD;function rD(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var as=class extends os(tD,ns){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new rv(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof rv&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&rD(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};import{Scene as wD}from"three";import{SpotLight as oD,CameraHelper as ov,MathUtils as nD,Vector3 as sv,Quaternion as iD}from"three";var nv=new sv,iv=new sv,av=new iD,ss=class extends os(oD,pl){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=nD.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new ov(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof ov&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),iv.setFromMatrixPosition(this.matrixWorld),av.setFromRotationMatrix(this.matrixWorld),nv.copy(this.up).applyQuaternion(av).negate().multiplyScalar(this.distance),this.target.position.copy(iv).add(nv),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function aD(n){let r=(n[0][0]+n[1][1])/2,e=(n[0][0]-n[1][1])/2,t=(n[1][0]+n[0][1])/2,o=(n[1][0]-n[0][1])/2,i=Math.sqrt(r*r+o*o),a=Math.sqrt(e*e+t*t),s=i+a,l=i-a,c=Math.atan2(t,e),u=Math.atan2(o,r),p=(u-c)/2,d=(u+c)/2,h=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],f=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return h[0][0]*=-1,h[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[h,f,m]}function Fu(n,r){return[[n[0][0]*r[0][0]+n[0][1]*r[1][0],n[0][0]*r[0][1]+n[0][1]*r[1][1]],[n[1][0]*r[0][0]+n[1][1]*r[1][0],n[1][0]*r[0][1]+n[1][1]*r[1][1]]]}function lv(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function cv(n){let[r,e,t]=aD(n),o=Fu(r,lv(t)),i=Fu(Fu(t,e),lv(t)),a=Math.atan2(o[1][0],o[0][0]),s=[i[0][0],i[1][1]],l=[i[0][1]/i[1][1],i[1][0]/i[0][0]];return{rotation:a,scale:s,shear:l}}function uv({rotation:n,scale:r,shear:e}){let t=Math.cos(n),o=Math.sin(n),i=[[t,-o],[o,t]],a=[[r[0],e[0]*r[1]],[e[1]*r[0],r[1]]],s=Fu(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var ze;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(T,I=S.identity()){for(let x=0,_=T.length;x<_;x++)I[x]=T[x];return I}S.copy=r;function e(T,I,x,_,D,A){return S.setAbcdef(S.identity(),T,I,x,_,D,A)}S.create=e;function t(T,I,x,_,D,A,N){return T[0]=I,T[1]=_,T[2]=A,T[3]=x,T[4]=D,T[5]=N,T}S.setAbcdef=t;function o(T,I){let[x,_,D,A,N,E]=a(T),[B,V,j,R,W,F]=a(I),k=B*x+V*D,H=B*_+V*A,$=j*x+R*D,J=j*_+R*A,Z=W*x+F*D+N,X=W*_+F*A+E;return S.create(k,H,$,J,Z,X)}S.append=o;function i(T,I){let[x,_,D,A,N,E]=a(T),[B,V,j,R,W,F]=a(I),k=x,H=_,$=D,J=A;(B!==1||V!==0||j!==0||R!==1)&&(k=x*B+_*j,H=x*V+_*R,$=D*B+A*j,J=D*V+A*R);let Z=N*B+E*j+W,X=N*V+E*R+F;return S.create(k,H,$,J,Z,X)}S.prepend=i;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[I,x,_,D,A,N]=S.getAbcdef(T),E=I*D-x*_,B=D/E,V=-x/E,j=-_/E,R=I/E,W=(_*N-D*A)/E,F=-(I*N-x*A)/E;return S.create(B,V,j,R,W,F)}S.invert=s;function l([T,I],x){let[_,D,A,N,E,B]=S.getAbcdef(x);return[_*T+A*I+E,D*T+N*I+B]}S.apply=l;function c(T,I){let[x,_,D,A,N,E]=S.getAbcdef(I),B=1/(x*A+D*-_),[V,j]=T;return[A*B*V+-D*B*j+(E*D-N*A)*B,x*B*j+-_*B*V+(-E*x+N*_)*B]}S.applyInverse=c;function u(T,I,x=I){let[_,D,A,N,E,B]=S.getAbcdef(T);return S.setAbcdef(T,_*I,D*x,A*I,N*x,E*I,B*x),T}S.scale=u;function p(T,I){let x=Math.cos(I),_=Math.sin(I),[D,A,N,E,B,V]=S.getAbcdef(T);return S.setAbcdef(T,D*x-A*_,D*_+A*x,N*x-E*_,N*_+E*x,B*x-V*_,B*_+V*x),T}S.rotate=p;function d(T,I,x){let[_,D]=x,A=S.translate(T,-_,-D);return A=S.rotate(A,I),A=S.translate(A,_,D),A}S.rotateAround=d;function h(T,I,x){let[_,D,A,N,E,B]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,E+I,B+x),T}S.translate=h;function f(T,I,x){let[_,D,A,N]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,I,x),T}S.setTranslate=f;function m(T,I,x){let[_,D,A,N]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,I,x),T}S.setPosition=m;function y(T){let[I,x,_,D]=S.getAbcdef(T),A=Math.sqrt(I*I+x*x),N=Math.sqrt(_*_+D*D);return[A,N]}S.getScale=y;function g(T){let[,,,,I,x]=S.getAbcdef(T);return[I,x]}S.getPosition=g;function v(T,I){return S.decompose(T,I).rotation}S.getRotation=v;function O(T,I){let[x,_,D,A,N,E]=S.getAbcdef(T),{rotation:B,scale:V,shear:j}=cv([[x,D],[_,A]]);return{position:[N+(I[0]*x+I[1]*D)-I[0],E+(I[0]*_+I[1]*A)-I[1]],scale:V,rotation:B,shear:j,pivot:I}}S.decompose=O;function P(T,I,x,_,D=[0,0]){let[A,N]=T,[E,B]=_,[V,j,R,W]=uv({rotation:x,scale:I,shear:D}),F=A-(E*V+B*R)+E,k=N-(E*j+B*W)+B;return S.create(V,j,R,W,F,k)}S.compose=P})(ze||(ze={}));var sD=Math.PI/180,Roe=180/Math.PI;function dv(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function pv(n){return n*sD}function Zf(n){return{all:n=n||new Map,on:function(r,e){var t=n.get(r);t?t.push(e):n.set(r,[e])},off:function(r,e){var t=n.get(r);t&&(e?t.splice(t.indexOf(e)>>>0,1):n.set(r,[]))},emit:function(r,e){var t=n.get(r);t&&t.slice().map(function(o){o(e)}),(t=n.get("*"))&&t.slice().map(function(o){o(r,e)})}}}var Fo=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=ze.identity();this.worldMatrix=ze.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Sn;this._recursiveBBox=new Sn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.shear=[0,0];this.emitter=Zf();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=ze.append(e.worldMatrix,t)),ze.applyInverse(r,t)}intersects(r,e,t,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([r,e],t),o)}intersectsInLocalSpace(r,e,t=!1){let{min:o,max:i}=t?this.recursiveBBox:this.singleBBox;return r>=o[0]&&r<=i[0]&&e>=o[1]&&e<=i[1]}applyTransforms(r){r.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=ze.compose(this.position,this.scale,pv(this.rotation),Mo.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(r,e,t){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(r,!0,!1),r&&this.updateLocalMatrix(),this.parent?this.worldMatrix=ze.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=ze.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Mo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{r.resetBBoxNeedsUpdateSelf()})}updateTransformState(r){let e=!1;r.position!==void 0&&(e=!0,this.position=r.position),r.rotation!==void 0&&(e=!0,this.rotation=r.rotation),r.scale!==void 0&&(e=!0,this.scale=r.scale),r.shear!==void 0&&(e=!0,this.shear=r.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(r,e,t){r.type===0&&r.props.visible!==void 0&&(this.visible=r.props.visible),this.data=e,this.data=e;let o=r,i=Be(r.path,["states","*"]);if(i!==null){if(r.type===0){let[a]=i;if(this?.stateSelection===a){let s={...r.props};if(delete s.name,Object.values(r.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=ot.zoom(l,r.path.slice(2));if(c)for(let u in r.props)r.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...r,props:s,path:r.path.slice(2)}}}}else if(r.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(r.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=ot.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),t)}changeSelectedState(r,e,t=!1){if(!(this.data.states.length===0&&!t)){for(let o of this.data.states)Un.toOps(this.data,o.data).forEach(a=>{let s=Fi.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(r!==null){let o=this.data.states.data(r);o&&(this.dataPatched=Un.patch(this.data,o),Un.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}t&&this.updateTransformState(this.dataPatched),this.stateSelection=r}}updateState(r,e){r.name!==void 0&&(this.name=r.name),r.visible!==void 0&&(this.visible=r.visible),this.updateTransformState(r)}updateByPatchedOpBase(r,e,t){this.dataPatched=e,this.updateByPatchedOp(r,e,t)}updateByPatchedOp(r,e,t){r.path.length===0&&r.type===0&&this.updateState(r.props,t),this.requestRender()}traverseFrameAncestors(r){this.traverseAncestors(e=>{e.data.type==="frame2d"&&r(e)})}traverseAncestors(r){let e=this.parent;for(;e;)r(e),e=e.parent}requestRender(){this.traverseFrameAncestors(r=>{r.requestRender()})}clone(r){let e=new Fo(this.uuid,this.data,r);return e.parent=void 0,e}addEventListener(r,e){this.emitter.on(r,e)}removeEventListener(r,e){this.emitter.off(r,e)}dispatchEvent(r){this.emitter.emit(r.type,{...r,target:r.target??this})}traverseSortNextHelper(){let r=this.parent;if(r){let e=r.children;if(e){let t=e.indexOf(this)+1;return e[t]?e[t]:r.traverseSortNextHelper()}}}sortNext(){let r=this.children;return r&&r.length>0&&r[0]?r[0]:this.traverseSortNextHelper()}isDescendantOf(r){r instanceof Fo&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var Ut=class extends Fo{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof Ut&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(t!==!0)for(let o of this.children)o instanceof Ut?o.traverse(e):t=e(o)}intersectsChildren(e,t,o,i=!1,a=[],s=!1){for(let l of this.children){let c=l instanceof Kt;if(l instanceof Ut&&!c&&s&&l.intersectsChildren(e,t,o,i,a,!1),l.intersects(e,t,o,c)&&(a.push(l),i))break}return a}updateWorldMatrix(e,t,o){if(super.updateWorldMatrix(e,t,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(o=>{o.uuid===e&&(t=o)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new Ut(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},Kt=class extends Ut{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.updateState(t,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let t=new Kt(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function lD(n,r){let[[e,t],[o,i]]=n,[[a,s],[l,c]]=r,u=(e-o)*(s-c)-(t-i)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(t-s)*(a-l))/u,d=-((e-o)*(t-s)-(t-i)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var hv=[[-1,1],[-1,-1],[1,-1],[1,1]],fv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=ze.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(ze.apply(t,i)):hv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(ze.apply(s,i))})},Sn=class{constructor(){this.matrix=ze.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(r,e=!1){r.updateWorldMatrix(),this.makeEmpty(),ze.copy(r.worldMatrix,this.matrix);let t=ze.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof Ut?r.traverse(i=>{i.visible&&fv(i,e,o)}):fv(r,e,o),this.setFromPoints(o)}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return ze.apply([r+t,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(r){this.makeEmpty();for(let e of r)this.expandByPoint(e)}expandByPoint(r){this.min=[Math.min(this.min[0],r[0]),Math.min(this.min[1],r[1])],this.max=[Math.max(this.max[0],r[0]),Math.max(this.max[1],r[1])]}computeVertices(){let[r,e]=this.getHalfSize(),t=this.getCenter(),[o,i,a,s]=ze.getAbcdef(this.matrix),l=ze.create(o,i,a,s,t[0],t[1]);this.vertices=hv.map(([c,u])=>ze.apply([c*r,u*e],l))}computeEdges(){this.edges=[];for(let r=0,e=this.vertices.length;r<e;++r)this.edges.push([this.vertices[r],this.vertices[(r+1)%e]])}project(r,e){let t=this.matrix;return e&&(t=ze.append(e.worldMatrix,t)),ze.applyInverse(r,t)}intersects(r,e,t){return this.intersectsInLocalSpace(...this.project([r,e],t))}intersectsInLocalSpace(r,e){let{min:t,max:o}=this;return r>=t[0]&&r<=o[0]&&e>=t[1]&&e<=o[1]}containsPoint(r){let[e,t]=r,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&t>=i&&t<=s}intersectsBBox2D(r){for(let e=0,t=this.edges.length;e<t;e++){let o=this.edges[e];for(let i=0,a=r.edges.length;i<a;i++){let s=r.edges[i];if(lD(o,s))return!0}}for(let e=0,t=r.vertices.length;e<t;e++){let o=r.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let r=this.min,e=this.max;this.min=[Math.min(r[0],e[0]),Math.min(r[1],e[1])],this.max=[Math.max(r[0],e[0]),Math.max(r[1],e[1])]}copy(r){this.min=[...r.min],this.max=[...r.max],ze.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new Sn;return r.copy(this),r}};var yv,gv=new Promise(n=>{yv=n}),mv=!1;var Uu;function xv(){if(mv)return;if(Uu)return Uu;async function n(){let e=await import("./ui.js");yv(e.default??e),mv=!0}return Uu=n(),Uu}function Sv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{(t.type==="Mesh"&&t.geometry.type==="UIGeometry"||t.type==="Page"&&t.uiFrame!==void 0)&&(r=!0)}),r}var Ce,Jf;async function cD(n){let r=await gv;Ce||(Jf||(Jf=r({locateFile:()=>n})),Ce=await Jf)}var bv=ze.identity(),hl=class{constructor(r,e=1){this.canvas=r;this.dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=bv,this._currentTransform=new Float32Array(bv)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await cD(this.wasmURL),this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ce.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ce.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ce.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(r){this._currentM3Transform=r,this._currentTransform.set(r)}async loadFont(r,e){let t=await(await fetch(r)).arrayBuffer();this.registerFont(t,e)}registerFont(r,e){if(this._fonts.has(e))return;let t=Ce.FontMgr.FromData(r);if(t)this._fonts.set(e,t);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(r){this._paintStroke&&this._paintStroke.setColor(ku(r),Ce.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(ku(r),Ce.ColorSpace.DISPLAY_P3)}set lineWidth(r){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?r:r*2)}set strokeMode(r){this._strokeMode=r}set dropShadowBlur(r){this._dropShadowBlur=r}set dropShadowColor(r){this._dropShadowColor=r}set dropShadowOffsetX(r){this._dropShadowOffsetX=r}set dropShadowOffsetY(r){this._dropShadowOffsetY=r}set innerShadowBlur(r){this._innerShadowBlur=r}set innerShadowColor(r){this._innerShadowColor=r}set innerShadowOffsetX(r){this._innerShadowOffsetX=r}set innerShadowOffsetY(r){this._innerShadowOffsetY=r}set innerShadowSpread(r){this._innerShadowSpread=r}set layerBlur(r){this._layerBlur=r}set backgroundBlur(r){this._backgroundBlur=r}clear(){this.ctx?.clear(Ce.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ce.Path}closePath(){let r=this._currentPath;if(r){if(r.isEmpty())return;let e=r.getBounds();(e[3]-e[1]||e[2]-e[0])&&r.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ce.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ce.ClipOp.Intersect,!0);else{let u=Ce.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Ce.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=ze.invert(this.currentTransform);this.ctx.concat(r);let e=ze.translate(ze.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(r,e,t=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(t&&this._hasDropShadow()){let a=r.copy();a.setColor(ku(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&t){this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Intersect,!0);let a=Ce.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ce.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ce.SaveLayerInitWithPrevious),this.ctx.drawColor(r.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=r.copy();o=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),i=!0}if(i||e(r),t&&this._hasInnerShadow()){let a=new Ce.Paint;a.setAntiAlias(!0),a.setStyle(Ce.PaintStyle.Fill),a.setColor(ku(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,h=p-c,f=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ce.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ce.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ce.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(r,e=!0){if(this.ctx&&this._currentPath&&r){let t=this.ctx,o=this._currentPath;this._applyEffectsToPaint(r,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(t.save(),t.clipPath(o,this._strokeMode==="outside"?Ce.ClipOp.Difference:Ce.ClipOp.Intersect,!0),a=!0),t.drawPath(o,i),a&&t.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(r){this._currentPath?.addPath(Ce.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!vv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Ce.XYWHRect(r-t,e-o,t*2,o*2);this._currentPath?.addOval(c)}rect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ce.XYWHRect(r,e,t,o);if(!!vv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ce.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(r){switch(r){case 2:return Ce.TextAlign.Right;case 3:return Ce.TextAlign.Center;case 4:return Ce.TextAlign.Justify;case 1:default:return Ce.TextAlign.Left}}drawTextInner(r,e,t,[o,i,a,s],l,c,u=!0){let p=0,{ctx:d}=this;if(!d)return p;let h=c.copy(),f=c.copy();return f.setAlphaf(0),this._applyEffectsToPaint(h,m=>{e.pushPaintStyle(t,m,f),e.addText(r);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),d.drawParagraph(y,o,g),p=y.getHeight(),e.reset(),y.delete()},u),h.delete(),f.delete(),p}drawText(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new Ce.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ce.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ce.XYWHRect(e.x,e.y,e.width,e.height),p=Ce.ParagraphBuilder.Make(c,o);a&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,a,!0)),s&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:t}}render(){this._surface?.flush()}moveTo(r,e){this._currentPath?.moveTo(r,e)}lineTo(r,e){this._currentPath?.lineTo(r,e)}bezierCurveTo(r,e,t,o,i,a){this._currentPath?.cubicTo(r,e,t,o,i,a)}quadraticCurveTo(r,e,t,o){this._currentPath?.quadTo(r,e,t,o)}setTransform(r,e=!1){if(!this.ctx)return;let t=this.ctx.getTotalMatrix(),o=ze.invert(t);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=ze.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(r),this.currentTransform=r}transform(r){this.ctx?.concat(r)}setSize(r,e){r===this._width&&e===this._height||(this._width=r,this._height=e,this.canvas.style.width=r+"px",this.canvas.style.height=e+"px",this.canvas.width=r*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function vv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function ku({r:n,g:r,b:e,a:t}){return Ce.Color4f(n,r,e,t)}var ml=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(r){r.color!==void 0&&(this.color=r.color),r.enabled!==void 0&&(this.enabled=r.enabled),r.blurRadius!==void 0&&(this.blurRadius=r.blurRadius),r.offset!==void 0&&(this.offset=r.offset),r.spread!==void 0&&(this.spread=r.spread)}};var yl=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.radius!==void 0&&(this.radius=r.radius)}};var Hu=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var Wu=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color),r.thickness!==void 0&&(this.thickness=r.thickness),r.mode!==void 0&&(this.mode=r.mode)}};var ir=class extends Fo{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Hu(e+"-fill",t.fill,o),this.stroke=new Wu(e+"-stroke",t.stroke,o),this.dropShadow=new ml(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new ml(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new yl(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new yl(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Be(e.path,["fill"])?this.fill.update(e.props):Be(e.path,["stroke"])?this.stroke.update(e.props):Be(e.path,["dropShadow"])?this.dropShadow.update(e.props):Be(e.path,["innerShadow"])?this.innerShadow.update(e.props):Be(e.path,["layerBlur"])?this.layerBlur.update(e.props):Be(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let t=new ir(this.uuid,this.data,e);return t.parent=void 0,t}};var wn=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.updateState(t,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,t){return dv(e,t,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new wn(this.uuid,this.data,e);return t.parent=void 0,t}};var ho=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(t,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new ho(this.uuid,this.data,e);return t.parent=void 0,t}};var Pn=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(t,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let t=this.data.textTransform,o=this.data.text.textValue.toString(),i=t===2?o.toUpperCase():t===3?o.toLowerCase():o,{height:a}=e.drawText(i,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){e.font!==void 0&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new Pn(this.uuid,this.data,e);return t.parent=void 0,t}};var ls=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(t,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>qu.extremas(i)),t=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<t[0]&&(t[0]=s[0][0]),s[0][1]<t[1]&&(t[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[t[0],t[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,t]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,t+i]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[i-1].data,[c,u]=l.controlNext.position,[p,d]=s.controlPrevious.position,[h,f]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};qu.derive(m),e.bezierCurveTo(c,u,p,d,h,f)}}let t=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=t.controlPrevious.position,[c,u]=t.position;e.bezierCurveTo(i,a,s,l,c,u)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new ls(this.uuid,this.data,e);return t.parent=void 0,t}},qu;(i=>{function n(a){let s=a.start,l=a.cp1,c=a.cp2,u=a.end,p=[3*(l[0]-s[0]),3*(l[1]-s[1])],d=[3*(c[0]-l[0]),3*(c[1]-l[1])],h=[3*(u[0]-c[0]),3*(u[1]-c[1])],f={start:p,cp:d,end:h};return a.derivative=f,f.derivative=eh.derive(f),f}i.derive=n;function r(a,s,l,c=!1){let u=a-2*s+l;if(u!==0){let p=-Math.sqrt(Math.abs(s*s-a*l)),d=-a+s,h=-(p+d)/u,f=-(-p+d)/u;return[h,f]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,c=s.cp,u=s.end;return[r(l[0],c[0],u[0]),r(l[1],c[1],u[1])]}i.droot=e;function t(a){let[s,l]=i.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(i.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(i.compute(a,Math.min(1,Math.max(0,p)))[1]);return c.sort((p,d)=>p-d),u.sort((p,d)=>p-d),[[c[0],u[0]],[c[c.length-1],u[u.length-1]]]}i.extremas=t;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,c=l*l,u=s*s,p=c*l,d=c*s*3,h=l*u*3,f=s*u;return[p*a.start[0]+d*a.cp1[0]+h*a.cp2[0]+f*a.end[0],p*a.start[1]+d*a.cp1[1]+h*a.cp2[1]+f*a.end[1]]}i.compute=o})(qu||(qu={}));var eh;(t=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=th.derive(u),o.derivative=u,u}t.derive=n;function r(o){let i=o.derivative??t.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}t.droot=r;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,c=s,u=a*i*2,p=l;return[c*o.start[0]+u*o.cp[0]+p*o.end[0],c*o.start[1]+u*o.cp[1]+p*o.end[1]]}t.compute=e})(eh||(eh={}));var th;(e=>{function n(t){let o=t.start,i=t.end,a=[i[0]-o[0],i[1]-o[1]];return t.derivative=a,t.derivative}e.derive=n;function r(t,o){if(o===0)return[...t.start];if(o===1)return[...t.end];let i=t.start,a=t.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=r})(th||(th={}));var fr=class extends Ut{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new ho(e+"-background",oa.defaultData,o),this.background.parent=this,this.updateState(t,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,t,o){super.updateWorldMatrix(e,t,o),this.background?.updateWorldMatrix(e,t,o)}draw(e){if(!this.visible)return;e.save();let t=this.width,o=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur),e.clipped!==void 0&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Be(e.path,["fill"])?this.fill.update(e.props):Be(e.path,["stroke"])?this.stroke.update(e.props):Be(e.path,["dropShadow"])?this.dropShadow.update(e.props):Be(e.path,["innerShadow"])?this.innerShadow.update(e.props):Be(e.path,["layerBlur"])?this.layerBlur.update(e.props):Be(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new fr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var Cv=hi(rh(),1),Uo=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._pathBBox=new DOMRect;this.path="";this.updateState(t,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),t.setAttribute("d",this.path),e.appendChild(t),this._pathBBox=t.getBBox(),e.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,t){super.updateState(e,t),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new Uo(this.uuid,this.data,e);return t.parent=void 0,t}};function Tv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,Cv.parseSVG)(n).map(i=>{let a={...i};return"x"in a&&(a.x=a.x*r),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*r),"x2"in a&&(a.x2=a.x2*r),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*r),"ry"in a&&(a.ry=a.ry*e),a});return Av(o)}function Av(n){let r=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return n.map(t=>{let o=[];r.forEach(a=>{if(a in t){let s=t[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let i=(e===t.code?o[0]<0?"":",":t.code)+o.join("");return e=t.code,i}).join("")}function Mv(n,r,e){switch(r.type){case"ellipse2d":return new wn(n,r,e);case"rectangle2d":return new ho(n,r,e);case"text2d":return new Pn(n,r,e);case"vector2d":return new ls(n,r,e);case"path2d":return new Uo(n,r,e);case"frame2d":return new fr(n,r,e);case"group2d":default:return new Kt(n,r,e)}}var oh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new Kt(oh.GROUP_ID,{...Ms.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Mv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof Kt||s instanceof fr)&&this.createChildrenObjects(t,s,a))}createChildrenObjects(r,e,t){let o=0;for(let i of r)this.createObject(i.id,i.data,i.children,e,o,t),o+=1}draw(r){this.group.draw(r)}updateEntityByOp(r,e,t,o){let i=this.find(r);if(i)try{i.updateByOp(e,t,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(r,e){if(r.path.length===0&&r.type===7){let t=r.parent===null?this.group:this.find(r.parent);t!==void 0&&t instanceof Ut&&(this.createObject(r.id,r.data,r.children,t,r.localIndex,e),t.requestRender())}else if(r.path.length===0&&r.type===8){let t=this.find(r.id);if(t!==void 0&&t.parent!==void 0&&t.parent instanceof Ut){let o=t.parent;t.resetBBoxNeedsUpdate(),o?.remove(t),o?.requestRender()}}else if(r.path.length===0&&r.type===9){let t=this.find(r.id);if(t!==void 0){let o=t.parent,i=r.parent===null?this:this.find(r.parent);if(i===void 0&&!1&&console.error("unexpected",i,r),i instanceof Ut||i===this){i.add(t);let a=r.localIndex;i.children.splice(a,0,i.children.pop()),t.updateWorldMatrix(!0,!1,!0),o?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(r){this.group.add(r)}remove(r){this.group.remove(r)}traverse(r){this.group.traverse(e=>{e!==this.group&&r(e)})}intersectsChildren(r,e,t,o=!1,i=[]){return this.group.intersectsChildren(r,e,t,o,i,!0)}find(r){return this.group.find(r)}get children(){return this.group.children}project(r,e){return this.group.project(r,e)}getWithSortKey(r){let e=this.find(r);if(e===void 0)return;let t=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);t.splice(0,0,a)}return{entity:e,sortKey:t}}getAllSorted(r){let e=[];for(let t of r){let o=this.getWithSortKey(t.id);o!==void 0&&e.push(o)}return e.sort((t,o)=>Ml(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},si=oh;si.GROUP_ID="scene2d";function nh({constraints:n,newParentWidth:r,newParentHeight:e,initialParentWidth:t,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=n,u=r-t,p=e-o,d=i,h=a,f=s[0],m=s[1];if(l!==0){if(l===1)f+=u;else if(l===3)f+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=r/t;d*=y,f*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)h=Math.max(1,h+p);else if(c===4){let y=e/o;h*=y,m*=y}}return{width:d,height:h,position:[f,m]}}var fD=hi(rh(),1);var pae={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{MathUtils as hD}from"three";var mD=ze.identity(),cs=class{constructor(r,e,t,o){this.uuid=r;this.width=e;this.height=t;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=r=>{if(r.target?.uuid!==void 0){let e=this.frameRoot?.find(r.target.uuid);e&&e.dispatchEvent({...r,target:e})}};this.scene2d=new si(hD.generateUUID(),jc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new hl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof hl&&(this.renderer.wasmURL=nb.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(r,e,t,o){this.scene2d.updateEntityByOp(r,e,t,o),this.applySize()}updateTreeByOp(r,e){this.scene2d.updateTreeByOp(r,e),this.applySize()}applyOverrides(r){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=r?.width??this.width,t=r?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=t,this.frameOverride.localMatrix=mD,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},Iv({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(r){let e=r?.width??this.width,t=r?.height??this.height;this.width=e,this.height=t,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,t)),this.renderer.setSize(e,t),this.textureHolder?.dispose(),this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof fr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(t=>{t.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(t=>{t.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(r){return this.scene2d.find(r)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(r=>{r.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(r=>{r.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function Iv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof fr&&r instanceof fr||n instanceof Kt&&r instanceof Kt)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],c=r.children[a];l&&c&&l.uuid===c.uuid&&gD({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function yD(n){if(ih(n))return[n.width,n.height];if(n instanceof Uo){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof Kt){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function gD({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=yD(r),{width:l,height:c,position:u}=nh({constraints:n.data,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:r.position});if(n.position=u,n.data={...n.data,position:u},n.states)for(let p in n.states)xD({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(ih(n)||n instanceof Kt)ih(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),Iv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof Uo){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=Tv(p.path,d,h),n.data={...n.data,path:n.path}}}function xD({stateId:n,objectOverride:r,objectRoot:e,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=r.states?.[n],l=e.states?.[n];if(s&&l){let{width:c,height:u,position:p}=nh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Mo.isResizeable(l)?l.width:0,objectInitialHeight:Mo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),Mo.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function ih(n){return n instanceof ho||n instanceof fr||n instanceof wn||n instanceof Pn}var Cr=class extends la(wD){constructor(e,t,o){super();this.data=t;this.bgColor=new Tt(1,1,1,1);this.fog=null;this.backupFog=new vD(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new bD;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new jo(tn,{...jn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new SD(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new si((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):t.uiFrame&&this.createUICanvas(t.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,t){this.uiCanvas=new cs(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=Gt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(t=>{t instanceof nr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&tv(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Gt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Gt(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Be(e.path,["fog"])?this.updateFog(s.fog,o.shared):Be(e.path,["ao"])?this.updateAo(s.ao,o.shared):Be(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Be(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(Gt(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof as&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Le.is(a)&&(a.visible||s?.object.data.visible)&&((bn(a)||ul(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),gl(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};import{PointLight as PD,Vector3 as Yu,Box3 as OD,Box3Helper as Nv,Color as CD}from"three";var Xu=class extends os(PD,is){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new Yu(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Yu(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new OD(a,s),c=new Nv(l,new CD(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Nv){let t=this.shadow.camera,o=new Yu(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Yu(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Ku=class extends st{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?$s(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var us=class extends st{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=va;break;case"Ellipse":i=ya;break;case"Polygon":i=cu;break;case"Star":i=uu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?$s(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as TD,Matrix4 as AD,Skeleton as MD}from"three";var ko=class extends Pr(TD,Or){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=Ji.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Zr.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=qr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...wt.defaultData,...e,...Mr(wt.defaultData,Zr.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of Zr.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&Zr.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Le.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Qu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};Ev(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Le.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{if(c instanceof st&&c.isSkinnedMesh){let u=c.dataPatched;if(u.bones&&u.boneInverses){let p=u.bones.map(f=>e.scene.find(a[f])),d=u.boneInverses.map(f=>new AD().fromArray(f)),h=new MD(p,d);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Qu(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Le.is(e)&&Qu(e)}}function Dv(n,r,e,t){return n.component===r&&Td(n.identity,t)?n.overrideData===e?2:1:0}function Ev(n,r,e,t,o,i,a,s,l){if(a>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.find(u=>u===t)||o.instances.push(t),t.component=o}o instanceof ko&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Le.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=Qi.resolve(e,p,1);if(d!=null&&!(d instanceof Qe)){if(!1)debugger;Object.setPrototypeOf(d,Qe.prototype),console.error("wrong prototype")}let h=null,f;if(!s){let m=t.children[c];if(h=Le.is(m)?m:null,h!==null){let y=Dv(h,u,d,p);f=y>=1?h.stateSelection:void 0,y!==2&&(h=null)}if(h===null&&(h=n.scene.findInstance(p)??null,h!==null)){let y=Dv(h,u,d,p);if(f=y>=1?h.stateSelection:void 0,y!==2)h=null;else{let g=h.parent.children.indexOf(h);h.parent.children.splice(g,1),t.children.splice(c,0,h),h.parent===t?(g<=c&&console.error("not possible"),void 0):(h.parent=t,h.matrixWorldNeedsUpdate=!0,h.resetBBoxNeedsUpdate(),h.updateVisible(),n.pendingDeletes.delete(h),void 0)}}}if(h===null){let m=d?qr.apply(u.data,d):u.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),h=Er.createEntity(p,m,n),h.overrideData=d,t.add(h),t.children.splice(t.children.length-1,1),t.children.splice(c,0,h),h.updateState(h.data,n),f&&h.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(h)}if(h.isBone){let m=h.identity[h.identity.length-1];l[m]=h.uuid}c+=1,Ev(n,r,e,h,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(Le.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}import{Bone as ID}from"three";var Zu=class extends Pr(ID,Or){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var li=class extends st{constructor(e,t,o){super(e,t,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new cs(e+"-canvas",t.geometry.width,t.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,t){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=_o(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let o=t.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,t,o,i){this.uiCanvas.updateEntity2DByOp(e,t,o,i),e===this.frameId&&t.type===0&&(t.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Be(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t)}};import{Object3D as jD,Vector3 as Tr,InstancedMesh as FD,InstancedBufferAttribute as UD,PlaneGeometry as kD,Vector4 as xl,Quaternion as Jv,TextureLoader as HD,Texture as eS,Euler as WD,MathUtils as ph}from"three";import{GPUComputationRenderer as qD}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as _v,FloatType as ah,DataTexture as sh,RGBAFormat as lh,Mesh as ND,Euler as ele,Matrix4 as tle}from"three";import{MeshSurfaceSampler as DD}from"three/examples/jsm/math/MeshSurfaceSampler.js";function Bv(n){let r=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let t=0;t<n;t++){let o=e*n+t;r[o*2+0]=e/(n-1),r[o*2+1]=t/(n-1)}return r}function Lv(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function Rv(n,r){let e=new ND(n.geometry,n.material),t=[],o=[],i=new _v,a=new _v;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new DD(e).build();for(let u=0;u<r;u++)s.sample(i,a),t.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(t),c=new Float32Array(o);return{positions:l,normals:c}}function ch(n,r){let e=n,t=new Float32Array(4*r*r);for(let i=0;i<r*r;i++)t[4*i]=e[3*i],t[4*i+1]=e[3*i+1],t[4*i+2]=e[3*i+2],t[4*i+3]=0;let o=new sh(t,r,r,lh,ah);return o.needsUpdate=!0,o}function Vv({size:n}){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=t,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new sh(r,n,n,lh,ah);return e.needsUpdate=!0,e}function zv(n){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=0,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new sh(r,n,n,lh,ah);return e.needsUpdate=!0,e}var Gv=`
2609
+ `,Y3=dl.lights_fragment_begin,X3=dl.shadowmask_pars_fragment,ev=null,K3=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},tv=(n="medium")=>{if(ev===n)return!1;ev=n;let r=K3(n);dl.shadowmap_pars_fragment=$3(r);let e=Y3.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),dl.lights_fragment_begin=e;let t=X3.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),dl.shadowmask_pars_fragment=t,!0};import{DirectionalLight as tD,CameraHelper as rv}from"three";import{DirectionalLightHelper as Q3}from"three";var ns=class extends po(Q3){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){fo(this.object,ns.geometryHelper,e,t)}};import{PointLightHelper as Z3}from"three";var is=class extends po(Z3){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){fo(this.object,is.geometryHelper,e,t)}};import{SpotLightHelper as J3,Vector3 as eD}from"three";var ju=class extends po(J3){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){fo(this.object,ju.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=ju._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},pl=ju;pl._vector=new eD;function rD(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var as=class extends os(tD,ns){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let a=new rv(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof rv&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&rD(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};import{Scene as wD}from"three";import{SpotLight as oD,CameraHelper as ov,MathUtils as nD,Vector3 as sv,Quaternion as iD}from"three";var nv=new sv,iv=new sv,av=new iD,ss=class extends os(oD,pl){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=nD.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new ov(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof ov&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),iv.setFromMatrixPosition(this.matrixWorld),av.setFromRotationMatrix(this.matrixWorld),nv.copy(this.up).applyQuaternion(av).negate().multiplyScalar(this.distance),this.target.position.copy(iv).add(nv),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function aD(n){let r=(n[0][0]+n[1][1])/2,e=(n[0][0]-n[1][1])/2,t=(n[1][0]+n[0][1])/2,o=(n[1][0]-n[0][1])/2,i=Math.sqrt(r*r+o*o),a=Math.sqrt(e*e+t*t),s=i+a,l=i-a,c=Math.atan2(t,e),u=Math.atan2(o,r),p=(u-c)/2,d=(u+c)/2,h=[[Math.cos(d),Math.sin(d)],[-Math.sin(d),Math.cos(d)]],f=[[s,0],[0,l]],m=[[Math.cos(p),Math.sin(p)],[-Math.sin(p),Math.cos(p)]];return h[0][0]*=-1,h[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[h,f,m]}function Fu(n,r){return[[n[0][0]*r[0][0]+n[0][1]*r[1][0],n[0][0]*r[0][1]+n[0][1]*r[1][1]],[n[1][0]*r[0][0]+n[1][1]*r[1][0],n[1][0]*r[0][1]+n[1][1]*r[1][1]]]}function lv(n){return[[n[0][0],n[1][0]],[n[0][1],n[1][1]]]}function cv(n){let[r,e,t]=aD(n),o=Fu(r,lv(t)),i=Fu(Fu(t,e),lv(t)),a=Math.atan2(o[1][0],o[0][0]),s=[i[0][0],i[1][1]],l=[i[0][1]/i[1][1],i[1][0]/i[0][0]];return{rotation:a,scale:s,shear:l}}function uv({rotation:n,scale:r,shear:e}){let t=Math.cos(n),o=Math.sin(n),i=[[t,-o],[o,t]],a=[[r[0],e[0]*r[1]],[e[1]*r[0],r[1]]],s=Fu(i,a);return[s[0][0],s[1][0],s[0][1],s[1][1]]}var ze;(S=>{function n(){return[1,0,0,0,1,0,0,0,1]}S.identity=n;function r(T,I=S.identity()){for(let x=0,_=T.length;x<_;x++)I[x]=T[x];return I}S.copy=r;function e(T,I,x,_,D,A){return S.setAbcdef(S.identity(),T,I,x,_,D,A)}S.create=e;function t(T,I,x,_,D,A,N){return T[0]=I,T[1]=_,T[2]=A,T[3]=x,T[4]=D,T[5]=N,T}S.setAbcdef=t;function o(T,I){let[x,_,D,A,N,E]=a(T),[B,V,j,R,W,F]=a(I),k=B*x+V*D,H=B*_+V*A,$=j*x+R*D,J=j*_+R*A,Z=W*x+F*D+N,X=W*_+F*A+E;return S.create(k,H,$,J,Z,X)}S.append=o;function i(T,I){let[x,_,D,A,N,E]=a(T),[B,V,j,R,W,F]=a(I),k=x,H=_,$=D,J=A;(B!==1||V!==0||j!==0||R!==1)&&(k=x*B+_*j,H=x*V+_*R,$=D*B+A*j,J=D*V+A*R);let Z=N*B+E*j+W,X=N*V+E*R+F;return S.create(k,H,$,J,Z,X)}S.prepend=i;function a(T){return[T[0],T[3],T[1],T[4],T[2],T[5]]}S.getAbcdef=a;function s(T){let[I,x,_,D,A,N]=S.getAbcdef(T),E=I*D-x*_,B=D/E,V=-x/E,j=-_/E,R=I/E,W=(_*N-D*A)/E,F=-(I*N-x*A)/E;return S.create(B,V,j,R,W,F)}S.invert=s;function l([T,I],x){let[_,D,A,N,E,B]=S.getAbcdef(x);return[_*T+A*I+E,D*T+N*I+B]}S.apply=l;function c(T,I){let[x,_,D,A,N,E]=S.getAbcdef(I),B=1/(x*A+D*-_),[V,j]=T;return[A*B*V+-D*B*j+(E*D-N*A)*B,x*B*j+-_*B*V+(-E*x+N*_)*B]}S.applyInverse=c;function u(T,I,x=I){let[_,D,A,N,E,B]=S.getAbcdef(T);return S.setAbcdef(T,_*I,D*x,A*I,N*x,E*I,B*x),T}S.scale=u;function p(T,I){let x=Math.cos(I),_=Math.sin(I),[D,A,N,E,B,V]=S.getAbcdef(T);return S.setAbcdef(T,D*x-A*_,D*_+A*x,N*x-E*_,N*_+E*x,B*x-V*_,B*_+V*x),T}S.rotate=p;function d(T,I,x){let[_,D]=x,A=S.translate(T,-_,-D);return A=S.rotate(A,I),A=S.translate(A,_,D),A}S.rotateAround=d;function h(T,I,x){let[_,D,A,N,E,B]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,E+I,B+x),T}S.translate=h;function f(T,I,x){let[_,D,A,N]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,I,x),T}S.setTranslate=f;function m(T,I,x){let[_,D,A,N]=S.getAbcdef(T);return S.setAbcdef(T,_,D,A,N,I,x),T}S.setPosition=m;function y(T){let[I,x,_,D]=S.getAbcdef(T),A=Math.sqrt(I*I+x*x),N=Math.sqrt(_*_+D*D);return[A,N]}S.getScale=y;function g(T){let[,,,,I,x]=S.getAbcdef(T);return[I,x]}S.getPosition=g;function v(T,I){return S.decompose(T,I).rotation}S.getRotation=v;function O(T,I){let[x,_,D,A,N,E]=S.getAbcdef(T),{rotation:B,scale:V,shear:j}=cv([[x,D],[_,A]]);return{position:[N+(I[0]*x+I[1]*D)-I[0],E+(I[0]*_+I[1]*A)-I[1]],scale:V,rotation:B,shear:j,pivot:I}}S.decompose=O;function P(T,I,x,_,D=[0,0]){let[A,N]=T,[E,B]=_,[V,j,R,W]=uv({rotation:x,scale:I,shear:D}),F=A-(E*V+B*R)+E,k=N-(E*j+B*W)+B;return S.create(V,j,R,W,F,k)}S.compose=P})(ze||(ze={}));var sD=Math.PI/180,Roe=180/Math.PI;function dv(n,r,e,t,o,i){let a=n-e,s=r-t;return a*a/(o*o)+s*s/(i*i)<=1}function pv(n){return n*sD}function Zf(n){return{all:n=n||new Map,on:function(r,e){var t=n.get(r);t?t.push(e):n.set(r,[e])},off:function(r,e){var t=n.get(r);t&&(e?t.splice(t.indexOf(e)>>>0,1):n.set(r,[]))},emit:function(r,e){var t=n.get(r);t&&t.slice().map(function(o){o(e)}),(t=n.get("*"))&&t.slice().map(function(o){o(r,e)})}}}var Fo=class{constructor(r,e,t){this.uuid=r;this.data=e;this.localMatrix=ze.identity();this.worldMatrix=ze.identity();this.ignoreCameraZoom=!1;this.visible=!0;this._singleBBox=new Sn;this._recursiveBBox=new Sn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.stateSelection=null;this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this.name="";this.position=[0,0];this.scale=[1,1];this.rotation=0;this.shear=[0,0];this.emitter=Zf();this.dpr=t.dpr??1,this.dataPatched=e}project(r,e){let t=this.worldMatrix;return e&&(t=ze.append(e.worldMatrix,t)),ze.applyInverse(r,t)}intersects(r,e,t,o=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([r,e],t),o)}intersectsInLocalSpace(r,e,t=!1){let{min:o,max:i}=t?this.recursiveBBox:this.singleBBox;return r>=o[0]&&r<=i[0]&&e>=o[1]&&e<=i[1]}applyTransforms(r){r.setTransform(this.worldMatrix,this.ignoreCameraZoom)}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges()),this._recursiveBBox}updateLocalMatrix(){this.localMatrix=ze.compose(this.position,this.scale,pv(this.rotation),Mo.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(r,e,t){let o=this.parent;e&&o!==null&&o!==void 0&&o.updateWorldMatrix(r,!0,!1),r&&this.updateLocalMatrix(),this.parent?this.worldMatrix=ze.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=ze.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return Mo.getPivot(this.data)}getCenter(){return[0,0]}getHalfSize(){return[0,0]}get id(){return this.uuid}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{r.resetBBoxNeedsUpdateSelf()})}updateTransformState(r){let e=!1;r.position!==void 0&&(e=!0,this.position=r.position),r.rotation!==void 0&&(e=!0,this.rotation=r.rotation),r.scale!==void 0&&(e=!0,this.scale=r.scale),r.shear!==void 0&&(e=!0,this.shear=r.shear),e&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(r,e,t){r.type===0&&r.props.visible!==void 0&&(this.visible=r.props.visible),this.data=e,this.data=e;let o=r,i=Be(r.path,["states","*"]);if(i!==null){if(r.type===0){let[a]=i;if(this?.stateSelection===a){let s={...r.props};if(delete s.name,Object.values(r.props).some(l=>l===void 0)){let l=this.data;if(l!==void 0){let c=ot.zoom(l,r.path.slice(2));if(c)for(let u in r.props)r.props[u]===void 0&&u in c&&(s[u]=c[u])}}o={...r,props:s,path:r.path.slice(2)}}}}else if(r.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(r.props.name!==void 0&&a.name){let{name:l,...c}=a;a=c}let s=ot.removeOverridden(r.path,r.props,a);o={...r,props:s}}}this.updateByPatchedOpBase(o,Un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),t)}changeSelectedState(r,e,t=!1){if(!(this.data.states.length===0&&!t)){for(let o of this.data.states)Un.toOps(this.data,o.data).forEach(a=>{let s=Fi.replaceProps(a,this.data);this.dataPatched=this.data,this.updateByPatchedOp(s,this.data,e)});if(r!==null){let o=this.data.states.data(r);o&&(this.dataPatched=Un.patch(this.data,o),Un.toOps(this.data,o).forEach(a=>{this.updateByPatchedOp(a,this.dataPatched,e)}))}t&&this.updateTransformState(this.dataPatched),this.stateSelection=r}}updateState(r,e){r.name!==void 0&&(this.name=r.name),r.visible!==void 0&&(this.visible=r.visible),this.updateTransformState(r)}updateByPatchedOpBase(r,e,t){this.dataPatched=e,this.updateByPatchedOp(r,e,t)}updateByPatchedOp(r,e,t){r.path.length===0&&r.type===0&&this.updateState(r.props,t),this.requestRender()}traverseFrameAncestors(r){this.traverseAncestors(e=>{e.data.type==="frame2d"&&r(e)})}traverseAncestors(r){let e=this.parent;for(;e;)r(e),e=e.parent}requestRender(){this.traverseFrameAncestors(r=>{r.requestRender()})}clone(r){let e=new Fo(this.uuid,this.data,r);return e.parent=void 0,e}addEventListener(r,e){this.emitter.on(r,e)}removeEventListener(r,e){this.emitter.off(r,e)}dispatchEvent(r){this.emitter.emit(r.type,{...r,target:r.target??this})}traverseSortNextHelper(){let r=this.parent;if(r){let e=r.children;if(e){let t=e.indexOf(this)+1;return e[t]?e[t]:r.traverseSortNextHelper()}}}sortNext(){let r=this.children;return r&&r.length>0&&r[0]?r[0]:this.traverseSortNextHelper()}isDescendantOf(r){r instanceof Fo&&(r=r.uuid);let e=this;for(;e.parent;){if(e.parent.uuid===r)return!0;e=e.parent}return!1}};var Ut=class extends Fo{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.context=o;this.children=[]}add(e){e.parent&&e.parent instanceof Ut&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(t!==!0)for(let o of this.children)o instanceof Ut?o.traverse(e):t=e(o)}intersectsChildren(e,t,o,i=!1,a=[],s=!1){for(let l of this.children){let c=l instanceof Kt;if(l instanceof Ut&&!c&&s&&l.intersectsChildren(e,t,o,i,a,!1),l.intersects(e,t,o,c)&&(a.push(l),i))break}return a}updateWorldMatrix(e,t,o){if(super.updateWorldMatrix(e,t,o),o&&this.children)for(let i of this.children)i.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(o=>{o.uuid===e&&(t=o)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new Ut(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}},Kt=class extends Ut{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.updateState(t,o)}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore())}clone(e){let t=new Kt(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};function lD(n,r){let[[e,t],[o,i]]=n,[[a,s],[l,c]]=r,u=(e-o)*(s-c)-(t-i)*(a-l);if(u===0)return!1;let p=((e-a)*(s-c)-(t-s)*(a-l))/u,d=-((e-o)*(t-s)-(t-i)*(e-a))/u;return p>=0&&p<=1&&d>=0&&d<=1}var hv=[[-1,1],[-1,-1],[1,-1],[1,1]],fv=(n,r,e)=>{let t=n.getCenter(),o=n.getHalfSize(),i=ze.append(r,n.worldMatrix);o[0]===0&&o[1]===0?e.push(ze.apply(t,i)):hv.forEach(a=>{let s=[a[0]*o[0]+t[0],a[1]*o[1]+t[1]];e.push(ze.apply(s,i))})},Sn=class{constructor(){this.matrix=ze.identity();this.min=[1/0,1/0];this.max=[-1/0,-1/0];this.vertices=[];this.edges=[]}setFromObjectSize(r,e=!1){r.updateWorldMatrix(),this.makeEmpty(),ze.copy(r.worldMatrix,this.matrix);let t=ze.invert(r.worldMatrix);this.expandByObjectSize(r,t,e)}expandByObjectSize(r,e,t=!1){let o=[];t===!0&&r instanceof Ut?r.traverse(i=>{i.visible&&fv(i,e,o)}):fv(r,e,o),this.setFromPoints(o)}getCenter(){let[r,e]=this.min,[t,o]=this.getHalfSize();return ze.apply([r+t,e+o],this.matrix)}getSize(){return[this.max[0]-this.min[0],this.max[1]-this.min[1]]}getHalfSize(){return[(this.max[0]-this.min[0])*.5,(this.max[1]-this.min[1])*.5]}makeEmpty(){this.min=[1/0,1/0],this.max=[-1/0,-1/0]}setFromPoints(r){this.makeEmpty();for(let e of r)this.expandByPoint(e)}expandByPoint(r){this.min=[Math.min(this.min[0],r[0]),Math.min(this.min[1],r[1])],this.max=[Math.max(this.max[0],r[0]),Math.max(this.max[1],r[1])]}computeVertices(){let[r,e]=this.getHalfSize(),t=this.getCenter(),[o,i,a,s]=ze.getAbcdef(this.matrix),l=ze.create(o,i,a,s,t[0],t[1]);this.vertices=hv.map(([c,u])=>ze.apply([c*r,u*e],l))}computeEdges(){this.edges=[];for(let r=0,e=this.vertices.length;r<e;++r)this.edges.push([this.vertices[r],this.vertices[(r+1)%e]])}project(r,e){let t=this.matrix;return e&&(t=ze.append(e.worldMatrix,t)),ze.applyInverse(r,t)}intersects(r,e,t){return this.intersectsInLocalSpace(...this.project([r,e],t))}intersectsInLocalSpace(r,e){let{min:t,max:o}=this;return r>=t[0]&&r<=o[0]&&e>=t[1]&&e<=o[1]}containsPoint(r){let[e,t]=r,[o,i]=this.min,[a,s]=this.max;return e>=o&&e<=a&&t>=i&&t<=s}intersectsBBox2D(r){for(let e=0,t=this.edges.length;e<t;e++){let o=this.edges[e];for(let i=0,a=r.edges.length;i<a;i++){let s=r.edges[i];if(lD(o,s))return!0}}for(let e=0,t=r.vertices.length;e<t;e++){let o=r.vertices[e];if(this.containsPoint(o))return!0}return!1}ensureMinMax(){let r=this.min,e=this.max;this.min=[Math.min(r[0],e[0]),Math.min(r[1],e[1])],this.max=[Math.max(r[0],e[0]),Math.max(r[1],e[1])]}copy(r){this.min=[...r.min],this.max=[...r.max],ze.copy(r.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let r=new Sn;return r.copy(this),r}};var yv,gv=new Promise(n=>{yv=n}),mv=!1;var Uu;function xv(){if(mv)return;if(Uu)return Uu;async function n(){let e=await import("./ui.js");yv(e.default??e),mv=!0}return Uu=n(),Uu}function Sv(n){let r=!1;return n.scene.objects.traverse((e,t)=>{(t.type==="Mesh"&&t.geometry.type==="UIGeometry"||t.type==="Page"&&t.uiFrame!==void 0)&&(r=!0)}),r}var Ce,Jf;async function cD(n){let r=await gv;Ce||(Jf||(Jf=r({locateFile:()=>n})),Ce=await Jf)}var bv=ze.identity(),hl=class{constructor(r,e=1){this.canvas=r;this.dpr=e;this._width=0;this._height=0;this._strokeMode="inside";this._layerBlur=0;this._backgroundBlur=0;this._dropShadowBlur=0;this._dropShadowOffsetX=0;this._dropShadowOffsetY=0;this._dropShadowColor=Ie.transparent;this._innerShadowBlur=0;this._innerShadowOffsetX=0;this._innerShadowOffsetY=0;this._innerShadowSpread=0;this._innerShadowColor=Ie.transparent;this._fonts=new Map;try{let t=r.getBoundingClientRect();r.width=t.width*e,r.height=t.height*e}catch{console.log(r.width,e)}this._currentM3Transform=bv,this._currentTransform=new Float32Array(bv)}async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await cD(this.wasmURL),this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new Ce.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(Ce.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(Ce.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(r){this._currentM3Transform=r,this._currentTransform.set(r)}async loadFont(r,e){let t=await(await fetch(r)).arrayBuffer();this.registerFont(t,e)}registerFont(r,e){if(this._fonts.has(e))return;let t=Ce.FontMgr.FromData(r);if(t)this._fonts.set(e,t);else throw new Error("Invalid font data for "+e)}get width(){return this._width}get height(){return this._height}set strokeColor(r){this._paintStroke&&this._paintStroke.setColor(ku(r),Ce.ColorSpace.DISPLAY_P3)}set fillColor(r){this._paintFill&&this._paintFill.setColor(ku(r),Ce.ColorSpace.DISPLAY_P3)}set lineWidth(r){this._paintStroke&&this._paintStroke.setStrokeWidth(this._strokeMode==="center"?r:r*2)}set strokeMode(r){this._strokeMode=r}set dropShadowBlur(r){this._dropShadowBlur=r}set dropShadowColor(r){this._dropShadowColor=r}set dropShadowOffsetX(r){this._dropShadowOffsetX=r}set dropShadowOffsetY(r){this._dropShadowOffsetY=r}set innerShadowBlur(r){this._innerShadowBlur=r}set innerShadowColor(r){this._innerShadowColor=r}set innerShadowOffsetX(r){this._innerShadowOffsetX=r}set innerShadowOffsetY(r){this._innerShadowOffsetY=r}set innerShadowSpread(r){this._innerShadowSpread=r}set layerBlur(r){this._layerBlur=r}set backgroundBlur(r){this._backgroundBlur=r}clear(){this.ctx?.clear(Ce.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new Ce.Path}closePath(){let r=this._currentPath;if(r){if(r.isEmpty())return;let e=r.getBounds();(e[3]-e[1]||e[2]-e[0])&&r.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ce.XYWHRect(r,e,t,o);if(i===0&&a===0&&l===0&&s===0)this.ctx?.clipRect(c,Ce.ClipOp.Intersect,!0);else{let u=Ce.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this.ctx?.clipRRect(u,Ce.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let r=ze.invert(this.currentTransform);this.ctx.concat(r);let e=ze.translate(ze.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(e),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(r,e,t=!0){if(this.ctx&&this._currentPath){let o,i=!1;if(t&&this._hasDropShadow()){let a=r.copy();a.setColor(ku(this._dropShadowColor));let s;this._dropShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s)),this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),e(a),this.ctx.restore(),a.delete(),s?.delete()}if(this._backgroundBlur>0&&t){this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Intersect,!0);let a=Ce.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,Ce.TileMode.Clamp,null),s=r.copy();s.setImageFilter(a),s.setAlphaf(1);let l=this._currentPath.computeTightBounds();this.ctx.saveLayer(s,l,null,Ce.SaveLayerInitWithPrevious),this.ctx.drawColor(r.getColor()),this.ctx.restore(),this.ctx.restore(),s.delete(),a.delete(),i=!0}if(this._layerBlur>0){let a=r.copy();o=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(o),e(a),a.delete(),o.delete(),i=!0}if(i||e(r),t&&this._hasInnerShadow()){let a=new Ce.Paint;a.setAntiAlias(!0),a.setStyle(Ce.PaintStyle.Fill),a.setColor(ku(this._innerShadowColor));let s;this._innerShadowBlur>0&&(s=Ce.MaskFilter.MakeBlur(Ce.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),a.setMaskFilter(s));let l=this._currentPath.computeTightBounds(),[c,u,p,d]=l,h=p-c,f=d-u;this.ctx.save(),this.ctx.clipPath(this._currentPath,Ce.ClipOp.Intersect,!0),this.ctx.saveLayer(a,l,null,Ce.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(Ce.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+h+Math.abs(this._innerShadowOffsetX*2),2e3+f+Math.abs(this._innerShadowOffsetY*2)),a),a.setBlendMode(Ce.BlendMode.Clear),this.ctx.drawPath(this._currentPath,a),this.ctx.restore(),this.ctx.restore(),a.delete(),s?.delete()}}}_paintInner(r,e=!0){if(this.ctx&&this._currentPath&&r){let t=this.ctx,o=this._currentPath;this._applyEffectsToPaint(r,i=>{let a=!1;!e&&this._strokeMode!=="center"&&(t.save(),t.clipPath(o,this._strokeMode==="outside"?Ce.ClipOp.Difference:Ce.ClipOp.Intersect,!0),a=!0),t.drawPath(o,i),a&&t.restore()},e)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(r){this._currentPath?.addPath(Ce.Path.MakeFromSVGString(r))}ellipse(r,e,t,o,i,a,s,l){if(!vv([r,e,t,o])||!this._currentPath)return;if(t<0||o<0)throw Error("radii cannot be negative");let c=Ce.XYWHRect(r-t,e-o,t*2,o*2);this._currentPath?.addOval(c)}rect(r,e,t,o,i=0,a=0,s=0,l=0){let c=Ce.XYWHRect(r,e,t,o);if(!!vv(c))if(i===0&&a===0&&l===0&&s===0)this._currentPath?.addRect(c);else{let u=Ce.RRectXY(c,i,i);u[4]=u[5]=i,u[6]=u[7]=a,u[8]=u[9]=s,u[10]=u[11]=l,this._currentPath?.addRRect(u)}}getHorizontalAlign(r){switch(r){case 2:return Ce.TextAlign.Right;case 3:return Ce.TextAlign.Center;case 4:return Ce.TextAlign.Justify;case 1:default:return Ce.TextAlign.Left}}drawTextInner(r,e,t,[o,i,a,s],l,c,u=!0){let p=0,{ctx:d}=this;if(!d)return p;let h=c.copy(),f=c.copy();return f.setAlphaf(0),this._applyEffectsToPaint(h,m=>{e.pushPaintStyle(t,m,f),e.addText(r);let y=e.build();y.layout(a);let g=i;l===2?g+=(s-y.getHeight())/2:l===3&&(g+=s-y.getHeight()),d.drawParagraph(y,o,g),p=y.getHeight(),e.reset(),y.delete()},u),h.delete(),f.delete(),p}drawText(r,e){let t=0,o=this._fonts.get(e.font),{ctx:i,_paintFill:a,_paintStroke:s}=this;if(o&&i){let l=new Ce.TextStyle({fontFamilies:[e.font],fontSize:e.fontSize,heightMultiplier:e.lineHeight,letterSpacing:e.letterSpacing}),c=new Ce.ParagraphStyle({textStyle:l,textAlign:this.getHorizontalAlign(e.horizontalAlign)}),u=Ce.XYWHRect(e.x,e.y,e.width,e.height),p=Ce.ParagraphBuilder.Make(c,o);a&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,a,!0)),s&&(t=this.drawTextInner(r,p,l,u,e.verticalAlign,s,!1)),p.delete()}return{height:t}}render(){this._surface?.flush()}moveTo(r,e){this._currentPath?.moveTo(r,e)}lineTo(r,e){this._currentPath?.lineTo(r,e)}bezierCurveTo(r,e,t,o,i,a){this._currentPath?.cubicTo(r,e,t,o,i,a)}quadraticCurveTo(r,e,t,o){this._currentPath?.quadTo(r,e,t,o)}setTransform(r,e=!1){if(!this.ctx)return;let t=this.ctx.getTotalMatrix(),o=ze.invert(t);if(o&&this.ctx.concat(o),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),e)){let i=ze.getScale(this.camera.worldMatrix);this.ctx?.scale(1/i[0],1/i[1])}this.ctx?.concat(r),this.currentTransform=r}transform(r){this.ctx?.concat(r)}setSize(r,e){r===this._width&&e===this._height||(this._width=r,this._height=e,this.canvas.style.width=r+"px",this.canvas.style.height=e+"px",this.canvas.width=r*this.dpr,this.canvas.height=e*this.dpr,this._surface&&(this._surface=Ce.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function vv(n){for(let r=0;r<n.length;r++)if(n[r]!==void 0&&!Number.isFinite(n[r]))return!1;return!0}function ku({r:n,g:r,b:e,a:t}){return Ce.Color4f(n,r,e,t)}var ml=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.blurRadius=0;this.offset=[0,0];this.spread=0;this.update(e)}update(r){r.color!==void 0&&(this.color=r.color),r.enabled!==void 0&&(this.enabled=r.enabled),r.blurRadius!==void 0&&(this.blurRadius=r.blurRadius),r.offset!==void 0&&(this.offset=r.offset),r.spread!==void 0&&(this.spread=r.spread)}};var yl=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.radius=0;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.radius!==void 0&&(this.radius=r.radius)}};var Hu=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color)}};var Wu=class{constructor(r,e,t){this.uuid=r;this.data=e;this.enabled=!1;this.color=Ie.transparent;this.thickness=0;this.mode="inside";this.update(e)}update(r){r.enabled!==void 0&&(this.enabled=r.enabled),r.color!==void 0&&(this.color=r.color),r.thickness!==void 0&&(this.thickness=r.thickness),r.mode!==void 0&&(this.mode=r.mode)}};var ir=class extends Fo{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.autoClose=!0;this.fill=new Hu(e+"-fill",t.fill,o),this.stroke=new Wu(e+"-stroke",t.stroke,o),this.dropShadow=new ml(e+"-dropShadow",t.dropShadow,o),this.innerShadow=new ml(e+"-innerShadow",t.innerShadow,o),this.backgroundBlur=new yl(e+"-backgroundBlur",t.backgroundBlur,o),this.layerBlur=new yl(e+"-layerBlur",t.layerBlur,o)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=this.layerBlur.radius*5:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=this.backgroundBlur.radius*5:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=this.dropShadow.blurRadius*5,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=Ie.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=this.innerShadow.blurRadius*5,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=Ie.transparent}innerDraw(e){}draw(e){!this.visible||(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore())}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Be(e.path,["fill"])?this.fill.update(e.props):Be(e.path,["stroke"])?this.stroke.update(e.props):Be(e.path,["dropShadow"])?this.dropShadow.update(e.props):Be(e.path,["innerShadow"])?this.innerShadow.update(e.props):Be(e.path,["layerBlur"])?this.layerBlur.update(e.props):Be(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let t=new ir(this.uuid,this.data,e);return t.parent=void 0,t}};var wn=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.updateState(t,o)}innerDraw(e){e.ellipse(this.width*.5,this.height*.5,this.width*.5,this.height*.5,0,0,Math.PI*2)}intersectsInLocalSpace(e,t){return dv(e,t,this.width*.5,this.height*.5,this.width*.5,this.height*.5)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new wn(this.uuid,this.data,e);return t.parent=void 0,t}};var ho=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.width=0;this.height=0;this.cornerRadius=[0,0,0,0];this.updateState(t,o)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new ho(this.uuid,this.data,e);return t.parent=void 0,t}};var Pn=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._textHeight=0;this._textHeightDirty=!0;this.width=0;this.height=0;this.updateState(t,o)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:Ie.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:Ie.transparent,e.strokeMode="center",e.lineWidth=this.stroke.thickness}innerDraw(e){this._fontHolder?.arrayBuffer&&this._fontHolder.arrayBuffer.byteLength>1&&this.data.font&&e.registerFont(this._fontHolder.arrayBuffer,this.data.font);let t=this.data.textTransform,o=this.data.text.textValue.toString(),i=t===2?o.toUpperCase():t===3?o.toLowerCase():o,{height:a}=e.drawText(i,{x:0,y:0,width:this.width,height:this.height,fontSize:this.data.fontSize,lineHeight:this.data.lineHeight??1,letterSpacing:this.data.letterSpacing??0,horizontalAlign:this.data.horizontalAlign,verticalAlign:this.data.verticalAlign,font:this.data.font});this._textHeight=a}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){e.font!==void 0&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new Pn(this.uuid,this.data,e);return t.parent=void 0,t}};var ls=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this.curves=[];this.extremasBBox={min:[0,0],max:[0,0]};this.updateState(t,o)}computeExtremas(){this.curves.length===0&&this.computeCurves();let e=this.curves.map(i=>qu.extremas(i)),t=[1/0,1/0],o=[-1/0,-1/0];for(let i=0,a=e.length;i<a;i++){let s=e[i];s[0][0]<t[0]&&(t[0]=s[0][0]),s[0][1]<t[1]&&(t[1]=s[0][1]),s[1][0]>o[0]&&(o[0]=s[1][0]),s[1][1]>o[1]&&(o[1]=s[1][1])}return this.extremasBBox.min=[t[0],t[1]],this.extremasBBox.max=[o[0],o[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let o=1,i=this.data.points.length;o<i;o++){let a=this.data.points[o].data,s=this.data.points[o-1].data,l={start:s.position,cp1:s.controlNext.position,cp2:a.controlPrevious.position,end:a.position};this.curves.push(l)}let e=this.data.points[0].data,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let o={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(o)}}getCenter(){let[e,t]=this.extremasBBox.min,[o,i]=this.getHalfSize();return[e+o,t+i]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let i=0,a=this.data.points.length;i<a;i++){let s=this.data.points[i].data;if(i===0){let[l,c]=s.position;e.moveTo(l,c)}else{let l=this.data.points[i-1].data,[c,u]=l.controlNext.position,[p,d]=s.controlPrevious.position,[h,f]=s.position,m={start:l.position,cp1:l.controlNext.position,cp2:s.controlPrevious.position,end:s.position};qu.derive(m),e.bezierCurveTo(c,u,p,d,h,f)}}let t=this.data.points[0].data,o=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[i,a]=o.controlNext.position,[s,l]=t.controlPrevious.position,[c,u]=t.position;e.bezierCurveTo(i,a,s,l,c,u)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new ls(this.uuid,this.data,e);return t.parent=void 0,t}},qu;(i=>{function n(a){let s=a.start,l=a.cp1,c=a.cp2,u=a.end,p=[3*(l[0]-s[0]),3*(l[1]-s[1])],d=[3*(c[0]-l[0]),3*(c[1]-l[1])],h=[3*(u[0]-c[0]),3*(u[1]-c[1])],f={start:p,cp:d,end:h};return a.derivative=f,f.derivative=eh.derive(f),f}i.derive=n;function r(a,s,l,c=!1){let u=a-2*s+l;if(u!==0){let p=-Math.sqrt(Math.abs(s*s-a*l)),d=-a+s,h=-(p+d)/u,f=-(-p+d)/u;return[h,f]}else if(s!==l&&u===0)return[(2*s-l)/(2*(s-l))];return[]}function e(a){let s=a.derivative??i.derive(a),l=s.start,c=s.cp,u=s.end;return[r(l[0],c[0],u[0]),r(l[1],c[1],u[1])]}i.droot=e;function t(a){let[s,l]=i.droot(a),c=[a.start[0],a.end[0]],u=[a.start[1],a.end[1]];for(let p of s)c.push(i.compute(a,Math.min(1,Math.max(0,p)))[0]);for(let p of l)u.push(i.compute(a,Math.min(1,Math.max(0,p)))[1]);return c.sort((p,d)=>p-d),u.sort((p,d)=>p-d),[[c[0],u[0]],[c[c.length-1],u[u.length-1]]]}i.extremas=t;function o(a,s){if(s===0)return[...a.start];if(s===1)return[...a.end];let l=1-s,c=l*l,u=s*s,p=c*l,d=c*s*3,h=l*u*3,f=s*u;return[p*a.start[0]+d*a.cp1[0]+h*a.cp2[0]+f*a.end[0],p*a.start[1]+d*a.cp1[1]+h*a.cp2[1]+f*a.end[1]]}i.compute=o})(qu||(qu={}));var eh;(t=>{function n(o){let i=o.start,a=o.cp,s=o.end,l=[2*(a[0]-i[0]),2*(a[1]-i[1])],c=[2*(s[0]-a[0]),2*(s[1]-a[1])],u={start:l,end:c};return u.derivative=th.derive(u),o.derivative=u,u}t.derive=n;function r(o){let i=o.derivative??t.derive(o),a=i.start,s=i.end;return[a[0]!==s[0]?a[0]/(a[0]-s[0]):0,a[1]!==s[1]?a[1]/(a[1]-s[1]):0]}t.droot=r;function e(o,i){if(i===0)return[...o.start];if(i===1)return[...o.end];let a=1-i,s=a*a,l=i*i,c=s,u=a*i*2,p=l;return[c*o.start[0]+u*o.cp[0]+p*o.end[0],c*o.start[1]+u*o.cp[1]+p*o.end[1]]}t.compute=e})(eh||(eh={}));var th;(e=>{function n(t){let o=t.start,i=t.end,a=[i[0]-o[0],i[1]-o[1]];return t.derivative=a,t.derivative}e.derive=n;function r(t,o){if(o===0)return[...t.start];if(o===1)return[...t.end];let i=t.start,a=t.end;return[i[0]+(a[0]-i[0])*o,i[1]+(a[1]-i[1])*o]}e.compute=r})(th||(th={}));var fr=class extends Ut{constructor(e,t,o){super(e,t,o);this.uuid=e;this.width=0;this.height=0;this.clipped=!0;this.background=new ho(e+"-background",oa.defaultData,o),this.background.parent=this,this.updateState(t,o)}get fill(){return this.background.fill}get stroke(){return this.background.stroke}get backgroundBlur(){return this.background.backgroundBlur}get layerBlur(){return this.background.layerBlur}get dropShadow(){return this.background.dropShadow}get innerShadow(){return this.background.innerShadow}get cornerRadius(){return this.background.cornerRadius}set cornerRadius(e){this.background.cornerRadius=e}updateLocalMatrix(){super.updateLocalMatrix(),this.background?.updateLocalMatrix()}updateWorldMatrix(e,t,o){super.updateWorldMatrix(e,t,o),this.background?.updateWorldMatrix(e,t,o)}draw(e){if(!this.visible)return;e.save();let t=this.width,o=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=o,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,o,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[this.width*.5,this.height*.5]}getHalfSize(){return[this.width*.5,this.height*.5]}updateCornerState(e){e.cornerRadius!==void 0&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let t=!1;e.width!==void 0&&(this.width=typeof e.width=="number"?e.width:this.width,t=!0),e.height!==void 0&&(this.height=typeof e.height=="number"?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e),e.fill!==void 0&&this.fill.update(e.fill),e.stroke!==void 0&&this.stroke.update(e.stroke),e.dropShadow!==void 0&&this.dropShadow.update(e.dropShadow),e.innerShadow!==void 0&&this.innerShadow.update(e.innerShadow),e.layerBlur!==void 0&&this.layerBlur.update(e.layerBlur),e.backgroundBlur!==void 0&&this.backgroundBlur.update(e.backgroundBlur),e.clipped!==void 0&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.type===0&&(Be(e.path,["fill"])?this.fill.update(e.props):Be(e.path,["stroke"])?this.stroke.update(e.props):Be(e.path,["dropShadow"])?this.dropShadow.update(e.props):Be(e.path,["innerShadow"])?this.innerShadow.update(e.props):Be(e.path,["layerBlur"])?this.layerBlur.update(e.props):Be(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new fr(this.uuid,this.data,e);t.parent=void 0;for(let o of this.children)t.add(o.clone(e));return t}};var Cv=hi(rh(),1),Uo=class extends ir{constructor(e,t,o){super(e,t,o);this.uuid=e;this.data=t;this._pathBBox=new DOMRect;this.path="";this.updateState(t,o),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){let e=document.createElementNS("http://www.w3.org/2000/svg","svg"),t=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(e),t.setAttribute("d",this.path),e.appendChild(t),this._pathBBox=t.getBBox(),e.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,t){super.updateState(e,t),e.path!==void 0&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new Uo(this.uuid,this.data,e);return t.parent=void 0,t}};function Tv(n,r=1,e=1){if(r<=0||e<=0)return n;let o=(0,Cv.parseSVG)(n).map(i=>{let a={...i};return"x"in a&&(a.x=a.x*r),"y"in a&&(a.y=a.y*e),"x1"in a&&(a.x1=a.x1*r),"x2"in a&&(a.x2=a.x2*r),"y1"in a&&(a.y1=a.y1*e),"y2"in a&&(a.y2=a.y2*e),"rx"in a&&(a.rx=a.rx*r),"ry"in a&&(a.ry=a.ry*e),a});return Av(o)}function Av(n){let r=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],e;return n.map(t=>{let o=[];r.forEach(a=>{if(a in t){let s=t[a]*1;o.length&&s>=0&&o.push(","),o.push(s)}});let i=(e===t.code?o[0]<0?"":",":t.code)+o.join("");return e=t.code,i}).join("")}function Mv(n,r,e){switch(r.type){case"ellipse2d":return new wn(n,r,e);case"rectangle2d":return new ho(n,r,e);case"text2d":return new Pn(n,r,e);case"vector2d":return new ls(n,r,e);case"path2d":return new Uo(n,r,e);case"frame2d":return new fr(n,r,e);case"group2d":default:return new Kt(n,r,e)}}var oh=class{constructor(r,e,t){this.uuid=r;this.data=e;this.group=new Kt(oh.GROUP_ID,{...Ms.defaultData},t),this.createChildrenObjects(e.objects,this.group,t)}createObject(r,e,t,o,i,a){let s=Mv(r,e,a);s&&(o.add(s),o.children.splice(i,0,o.children.pop()),s.updateWorldMatrix(),t.length>0&&(s instanceof Kt||s instanceof fr)&&this.createChildrenObjects(t,s,a))}createChildrenObjects(r,e,t){let o=0;for(let i of r)this.createObject(i.id,i.data,i.children,e,o,t),o+=1}draw(r){this.group.draw(r)}updateEntityByOp(r,e,t,o){let i=this.find(r);if(i)try{i.updateByOp(e,t,{shared:o})}catch(a){console.error(a)}}updateTreeByOp(r,e){if(r.path.length===0&&r.type===7){let t=r.parent===null?this.group:this.find(r.parent);t!==void 0&&t instanceof Ut&&(this.createObject(r.id,r.data,r.children,t,r.localIndex,e),t.requestRender())}else if(r.path.length===0&&r.type===8){let t=this.find(r.id);if(t!==void 0&&t.parent!==void 0&&t.parent instanceof Ut){let o=t.parent;t.resetBBoxNeedsUpdate(),o?.remove(t),o?.requestRender()}}else if(r.path.length===0&&r.type===9){let t=this.find(r.id);if(t!==void 0){let o=t.parent,i=r.parent===null?this:this.find(r.parent);if(i===void 0&&!1&&console.error("unexpected",i,r),i instanceof Ut||i===this){i.add(t);let a=r.localIndex;i.children.splice(a,0,i.children.pop()),t.updateWorldMatrix(!0,!1,!0),o?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(r){this.group.add(r)}remove(r){this.group.remove(r)}traverse(r){this.group.traverse(e=>{e!==this.group&&r(e)})}intersectsChildren(r,e,t,o=!1,i=[]){return this.group.intersectsChildren(r,e,t,o,i,!0)}find(r){return this.group.find(r)}get children(){return this.group.children}project(r,e){return this.group.project(r,e)}getWithSortKey(r){let e=this.find(r);if(e===void 0)return;let t=[],o=e;for(;o!==this.group;){let i=o;o=o.parent;let a=o.children.indexOf(i);t.splice(0,0,a)}return{entity:e,sortKey:t}}getAllSorted(r){let e=[];for(let t of r){let o=this.getWithSortKey(t.id);o!==void 0&&e.push(o)}return e.sort((t,o)=>Ml(t.sortKey,o.sortKey)),e.map(t=>t.entity)}},si=oh;si.GROUP_ID="scene2d";function nh({constraints:n,newParentWidth:r,newParentHeight:e,initialParentWidth:t,initialParentHeight:o,objectInitialWidth:i,objectInitialHeight:a,objectInitialPosition:s}){let{horizontalConstraint:l,verticalConstraint:c}=n,u=r-t,p=e-o,d=i,h=a,f=s[0],m=s[1];if(l!==0){if(l===1)f+=u;else if(l===3)f+=u/2;else if(l===2)d=Math.max(1,d+u);else if(l===4){let y=r/t;d*=y,f*=y}}if(c!==0){if(c===1)m+=p;else if(c===3)m+=p/2;else if(c===2)h=Math.max(1,h+p);else if(c===4){let y=e/o;h*=y,m*=y}}return{width:d,height:h,position:[f,m]}}var fD=hi(rh(),1);var pae={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{mm:1,px:1,cm:1,in:1,pt:1,pc:1}};import{MathUtils as hD}from"three";var mD=ze.identity(),cs=class{constructor(r,e,t,o){this.uuid=r;this.width=e;this.height=t;this.context=o;this.enabled=!0;this.isScreenSpace=!1;this.isFrameDirty=!1;this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()};this.onFrameOverrideObjectEvent=r=>{if(r.target?.uuid!==void 0){let e=this.frameRoot?.find(r.target.uuid);e&&e.dispatchEvent({...r,target:e})}};this.scene2d=new si(hD.generateUUID(),jc.defaultData,{dpr:window.devicePixelRatio,shared:o.shared}),this.canvas=document.createElement("canvas"),this.renderer=new hl(this.canvas),o.shared.addCanvas(this.uuid,this.canvas),this.textureHolder=o.shared.canvas(this.uuid),this.promise=this.init()}async init(){this.renderer instanceof hl&&(this.renderer.wasmURL=nb.skiaWasmUrl),await this.renderer.init()}render(){this.isFrameDirty&&(this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),this.textureHolder?.setNeedsUpdate(!0),this.isFrameDirty=!1)}updateEntity2DByOp(r,e,t,o){this.scene2d.updateEntityByOp(r,e,t,o),this.applySize()}updateTreeByOp(r,e){this.scene2d.updateTreeByOp(r,e),this.applySize()}applyOverrides(r){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let e=r?.width??this.width,t=r?.height??this.height;this.frameOverride.width=e,this.frameOverride.height=t,this.frameOverride.localMatrix=mD,this.isScreenSpace&&(this.frameOverride.fill.color=Ie.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:e,height:t},Iv({objectOverride:this.frameOverride,objectRoot:this.frameRoot,newParentWidth:this.frameOverride.width,newParentHeight:this.frameOverride.height,initialParentWidth:this.frameRoot.width,initialParentHeight:this.frameRoot.height}),this.frameOverride.updateWorldMatrix(!0,!1,!0)}}applySize(r){let e=r?.width??this.width,t=r?.height??this.height;this.width=e,this.height=t,this.renderer.dpr=this.isScreenSpace?window.devicePixelRatio:Math.floor(2048/Math.max(e,t)),this.renderer.setSize(e,t),this.textureHolder?.dispose(),this.applyOverrides(r),this.frameOverride?.requestRender()}applyFrame(r){let e=this.context.scene.find2D(r);if(!(!e||!(e instanceof fr)))return this.disposeFrameOverride(),this.frameRoot=e,this.frameOverride=e.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.textureHolder?.dispose(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(t=>{t.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(t=>{t.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),e}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(r){return this.scene2d.find(r)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(r=>{r.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(r=>{r.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function Iv({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){if(n instanceof fr&&r instanceof fr||n instanceof Kt&&r instanceof Kt)for(let a=0,s=n.children.length;a<s;a++){let l=n.children[a],c=r.children[a];l&&c&&l.uuid===c.uuid&&gD({objectOverride:l,objectRoot:c,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i})}}function yD(n){if(ih(n))return[n.width,n.height];if(n instanceof Uo){let[r,e]=n.getHalfSize();return[r*2,e*2]}else if(n instanceof Kt){let[r,e]=n.recursiveBBox.getHalfSize();return[r*2,e*2]}return[0,0]}function gD({objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i}){let[a,s]=yD(r),{width:l,height:c,position:u}=nh({constraints:n.data,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i,objectInitialWidth:a,objectInitialHeight:s,objectInitialPosition:r.position});if(n.position=u,n.data={...n.data,position:u},n.states)for(let p in n.states)xD({stateId:p,objectOverride:n,objectRoot:r,newParentWidth:e,newParentHeight:t,initialParentWidth:o,initialParentHeight:i});if(ih(n)||n instanceof Kt)ih(n)&&(n.width=l,n.height=c,n.data={...n.data,width:l,height:c}),Iv({objectOverride:n,objectRoot:r,newParentWidth:l,newParentHeight:c,initialParentWidth:a,initialParentHeight:s});else if(n instanceof Uo){let p=r,d=a!==0?l/a:1,h=s!==0?c/s:1;n.path=Tv(p.path,d,h),n.data={...n.data,path:n.path}}}function xD({stateId:n,objectOverride:r,objectRoot:e,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a}){let s=r.states?.[n],l=e.states?.[n];if(s&&l){let{width:c,height:u,position:p}=nh({constraints:r.data,newParentWidth:t,newParentHeight:o,initialParentWidth:i,initialParentHeight:a,objectInitialWidth:Mo.isResizeable(l)?l.width:0,objectInitialHeight:Mo.isResizeable(l)?l.height:0,objectInitialPosition:l.position});Object.assign(r.states[n],{position:p}),Mo.isResizeable(s)&&Object.assign(r.states[n],{width:c,height:u})}}function ih(n){return n instanceof ho||n instanceof fr||n instanceof wn||n instanceof Pn}var Cr=class extends la(wD){constructor(e,t,o){super();this.data=t;this.bgColor=new Tt(1,1,1,1);this.fog=null;this.backupFog=new vD(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new bD;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new jo(tn,{...jn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new SD(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new si((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:o.shared}):t.uiFrame&&this.createUICanvas(t.uiFrame,o)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}get frameId(){return this.data.uiFrame}get frame(){return this.uiCanvas?.frame}createUICanvas(e,t){this.uiCanvas=new cs(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=Gt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.traverseEntity(t=>{t instanceof nr&&t.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof or)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&tv(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Gt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Gt(e.aoColor,t))}updateByOp(e,t,o,i){let a=this.data.uiFrame;super.updateByOp(e,t,o,i);let s=t;Be(e.path,["fog"])?this.updateFog(s.fog,o.shared):Be(e.path,["ao"])?this.updateAo(s.ao,o.shared):Be(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Be(e.path,["shadow"])?this.updateShadow(s.shadow):e.type===0&&e.path.length===0&&(e.props.uiFrame!==void 0||a!==s.uiFrame)&&this.updateUIFrame(e.props.uiFrame,o)}updateUIFrame(e,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(Gt(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof as&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ss&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Le.is(a)&&(a.visible||s?.object.data.visible)&&((bn(a)||ul(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),gl(a,e,t,!0)),o(a))}};return o(this),t}updateEntity2DByOp(e,t,o,i){this.uiCanvas?.updateEntity2DByOp(e,t,o,i)}};import{PointLight as PD,Vector3 as Yu,Box3 as OD,Box3Helper as Nv,Color as CD}from"three";var Xu=class extends os(PD,is){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let a=new Yu(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new Yu(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new OD(a,s),c=new Nv(l,new CD(16755200));c.visible=!1,this.gizmos.shadowmap=c,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof Nv){let t=this.shadow.camera,o=new Yu(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Yu(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Ku=class extends st{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?$s(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var us=class extends st{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=va;break;case"Ellipse":i=ya;break;case"Polygon":i=cu;break;case"Star":i=uu;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?$s(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as TD,Matrix4 as AD,Skeleton as MD}from"three";var ko=class extends Pr(TD,Or){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=Ji.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Zr.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=qr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...wt.defaultData,...e,...Mr(wt.defaultData,Zr.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of Zr.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&Zr.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Le.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Qu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};Ev(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Le.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(c=>{let u=c.dataPatched;if(c instanceof st&&u.bones&&u.boneInverses){let p=c.dataPatched;if(p.bones&&p.boneInverses){let d=p.bones.map(m=>e.scene.find(a[m])),h=p.boneInverses.map(m=>new AD().fromArray(m)),f=new MD(d,h);c.bind(f,c.bindMatrix)}}else c.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Qu(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Le.is(e)&&Qu(e)}}function Dv(n,r,e,t){return n.component===r&&Td(n.identity,t)?n.overrideData===e?2:1:0}function Ev(n,r,e,t,o,i,a,s,l){if(a>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.find(u=>u===t)||o.instances.push(t),t.component=o}o instanceof ko&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Le.is(u)){let p=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=Qi.resolve(e,p,1);if(d!=null&&!(d instanceof Qe)){if(!1)debugger;Object.setPrototypeOf(d,Qe.prototype),console.error("wrong prototype")}let h=null,f;if(!s){let m=t.children[c];if(h=Le.is(m)?m:null,h!==null){let y=Dv(h,u,d,p);f=y>=1?h.stateSelection:void 0,y!==2&&(h=null)}if(h===null&&(h=n.scene.findInstance(p)??null,h!==null)){let y=Dv(h,u,d,p);if(f=y>=1?h.stateSelection:void 0,y!==2)h=null;else{let g=h.parent.children.indexOf(h);h.parent.children.splice(g,1),t.children.splice(c,0,h),h.parent===t?(g<=c&&console.error("not possible"),void 0):(h.parent=t,h.matrixWorldNeedsUpdate=!0,h.resetBBoxNeedsUpdate(),h.updateVisible(),n.pendingDeletes.delete(h),void 0)}}}if(h===null){let m=d?qr.apply(u.data,d):u.data;Ir.is(m.type)&&(m={...m,type:"Empty"}),h=Er.createEntity(p,m,n),h.overrideData=d,t.add(h),t.children.splice(t.children.length-1,1),t.children.splice(c,0,h),h.updateState(h.data,n),f&&h.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(h)}if(h.isBone){let m=h.identity[h.identity.length-1];l[m]=h.uuid}c+=1,Ev(n,r,e,h,u,i,a+1,s,l)}if(!s){let u=c;for(;;){let p=t.children[c];if(Le.is(p))n.pendingDeletes.add(p);else break;c+=1}t.children.splice(u,c-u)}return!0}import{Bone as ID}from"three";var Zu=class extends Pr(ID,Or){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};var li=class extends st{constructor(e,t,o){super(e,t,o);this.onBeforeRender=()=>{this.uiCanvas.render()};this.uiCanvas=new cs(e+"-canvas",t.geometry.width,t.geometry.height,o),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,o.shared)})}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),e.type===0&&(e.props.frame!==void 0&&this.applyFrame(e.props.frame,o.shared),(e.props.width!==void 0||e.props.height!==void 0)&&this.applySize(e.props,o.shared))}applySize(e,t){let o=e?.width??this.dataPatched.geometry.width,i=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:o,height:i}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=_o(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let o=t.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),Object.assign(this.dataPatched.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.dataPatched.material.layers[1].data,{roughness:o.radius,alpha:o.enabled?1:0}),this.material.reset(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,t,o,i){this.uiCanvas.updateEntity2DByOp(e,t,o,i),e===this.frameId&&t.type===0&&(t.props.cornerRadius!==void 0?this.applyGeometryParametersFromFrame(i):Be(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:i}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t)}};import{Object3D as jD,Vector3 as Tr,InstancedMesh as FD,InstancedBufferAttribute as UD,PlaneGeometry as kD,Vector4 as xl,Quaternion as Jv,TextureLoader as HD,Texture as eS,Euler as WD,MathUtils as ph}from"three";import{GPUComputationRenderer as qD}from"three/examples/jsm/misc/GPUComputationRenderer.js";import{Vector3 as _v,FloatType as ah,DataTexture as sh,RGBAFormat as lh,Mesh as ND,Euler as ele,Matrix4 as tle}from"three";import{MeshSurfaceSampler as DD}from"three/examples/jsm/math/MeshSurfaceSampler.js";function Bv(n){let r=new Float32Array(n*n*2);for(let e=0;e<n;e++)for(let t=0;t<n;t++){let o=e*n+t;r[o*2+0]=e/(n-1),r[o*2+1]=t/(n-1)}return r}function Lv(n){let r=Math.ceil(Math.sqrt(n));return Math.max(r,1)}function Rv(n,r){let e=new ND(n.geometry,n.material),t=[],o=[],i=new _v,a=new _v;e.geometry.index!==null&&(e.geometry=e.geometry.toNonIndexed());let s=new DD(e).build();for(let u=0;u<r;u++)s.sample(i,a),t.push(i.x,i.y,i.z),o.push(a.x,a.y,a.z);let l=new Float32Array(t),c=new Float32Array(o);return{positions:l,normals:c}}function ch(n,r){let e=n,t=new Float32Array(4*r*r);for(let i=0;i<r*r;i++)t[4*i]=e[3*i],t[4*i+1]=e[3*i+1],t[4*i+2]=e[3*i+2],t[4*i+3]=0;let o=new sh(t,r,r,lh,ah);return o.needsUpdate=!0,o}function Vv({size:n}){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=t,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new sh(r,n,n,lh,ah);return e.needsUpdate=!0,e}function zv(n){let r=new Float32Array(4*n*n);for(let t=0;t<n*n;t++)r[4*t]=0,r[4*t+1]=0,r[4*t+2]=0,r[4*t+3]=0;let e=new sh(r,n,n,lh,ah);return e.needsUpdate=!0,e}var Gv=`
2600
2610
  // uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
2601
2611
  // uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
2602
2612
  // uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
@@ -3625,4 +3635,4 @@ void main() {
3625
3635
  A = exp(A) * vColor.a;
3626
3636
  gl_FragColor = vec4(color.rgb, A);
3627
3637
  gVelocity = vec4(0.0); // so it is ignored by TAA
3628
- }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new On},viewport:{type:"v2",value:new On},basisViewport:{type:"v2",value:new On},debugColor:{type:"v3",value:new cE},covariancesTextureSize:{type:"v2",value:new On(1024,1024)},centersColorsTextureSize:{type:"v2",value:new On(1024,1024)},orthoZoom:{type:"f",value:-1}};return new vE({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:gE,depthTest:!0,depthWrite:!1,side:dE})}static buildGeomtery(e){let t=new lE;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new sE(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new mE().copy(t),s=new Uint32Array(e),l=new hE(s,1,!1);return l.setUsage(pE),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new On(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new On(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let f=0;f<this.covariances.length;f++)l[f]=uE.toHalfFloat(this.covariances[f]);s=new id(l,i.x,i.y,uS,fE)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new id(l,i.x,i.y,uS,cS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let c=new Uint32Array(a.x*a.y*4);for(let f=0;f<o;f++){let m=f*4,y=f*3,g=f*4;c[g]=lS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=nd(this.centers[y]),c[g+2]=nd(this.centers[y+1]),c[g+3]=nd(this.centers[y+2])}let u=new id(c,a.x,a.y,bE,SE);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let p=256*4,d=new Float32Array(256*16);for(let f=0;f<this.meshMatrixWorlds.length;f++)d.set(this.meshMatrixWorlds[f].elements,f*16);let h=new id(d,p,1,xE,cS);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(ad.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(ad),this.material.uniforms.basisViewport.value.set(2/ad.x,2/ad.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var pS,hh=new Promise(n=>{pS=n}),dS=!1;var ld;function mh(){if(dS)return;if(ld)return ld;async function n(){let e=await import("./gaussian-splat-compression.js");pS(e),dS=!0}return ld=n(),ld}var mS;hh.then(n=>mS=n);var bl=class{constructor(r={}){En(this,"updateView",function(){let r=new fS,e=[],t=new ps(0,0,-1),o=new ps(0,0,-1),i=new ps,a=new ps;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let d=!1,h=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(h=!0),!d&&!h&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))}}());this.scene=r.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new fS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new wE;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new ps().fromArray(r.position)),r.orientation&&(r.orientation=new hS().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let t=e.map(a=>new mS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new ps,o=new hS,i=!1,a=1,s,l){this.splatMesh=Cn.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,p)=>this.update(c,p)}setupSortWorker(r){this.sortWorker=sS(r),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var IE=new AE;IE.wireframe=!0;var yS=new OE,cd=class extends PE{constructor(e,t){super();this.data=e;this.sharedAssets=t;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new od;this.invisibleObjects=new vn("jflkdsafjasdifjaslk",{...Mc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Cr("fdasfa",{...wo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=iS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=nS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Cr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Ml(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===tn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof li&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Cr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),bn(i)&&cl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),cl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),bn(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof us&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),bn(o)&&(o.invalidateUpstreamBooleanData(),cl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof Cr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{tS(a,t,o,{scene:this,shared:i}),a instanceof st&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof li||l instanceof Cr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof jo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Le.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Le.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=Xo(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...Al(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=ot.zoom(d,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ko&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Xo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ec.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof ko&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Qu(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ko&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Le.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Le.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let p=s.matrixWorld.clone().invert();u.point.applyMatrix4(p),o.push(u)}}else(bn(s)||ul(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),gl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Le.is(a)&&(a.visible||s?.object.data.visible)&&((bn(a)||ul(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),gl(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Le.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Le.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Le.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof st&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();cl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)na.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Le.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=rd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof st&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof st&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new CE().fromArray(m)),f=new ME(d,h);u.bind(f,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new TE;return o.setFromPoints(t),o.getCenter(yS),yS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof rr&&e(t.material[o]);else t.material instanceof rr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof jo&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new bl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as NE}from"three/examples/jsm/loaders/DRACOLoader.js";var Tn;function gS(){return Tn||(Tn=new NE,Tn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Tn.decoderPending}async function DE(n){if(Tn){let r={attributeIDs:Tn.defaultAttributeIDs,attributeTypes:Tn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Tn.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function xS(n,r){let[e,t]=Ed(mc.deserialize(new Uint8Array(n)));return Lc(e),r&&r(e),t.result().data}function bS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function vS(n){for(let r of n){let e=await DE(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}import{Mesh as fde}from"three";import{mergeGeometries as yde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function SS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as wS,ShaderLib as EE}from"three";function PS(n){let r=new Set;return n.traverse(e=>{if(e instanceof or)if(ct(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(_E(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new wS,specularColor:new wS});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},EE.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=ob(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else BE(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function _E(n){return n.getLayersOfType("transmission").length>0}function BE(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function OS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function CS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeGeometries as LE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function TS(n){let r=[];return n.traverse(e=>{e instanceof es&&r.push(e)}),r.forEach(e=>{let t=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&SS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ot&&a.unshift(t.geometry),a.length){let s=LE(a);t instanceof Ot&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Sb})}),n}function AS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function MS(n){Object.values(n.shared.materials).forEach(r=>{yh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?yh(e.material):"materials"in e&&e.materials.forEach(t=>{yh(t)})})}function yh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var _S=hi(NS(),1);function DS(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var ES="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",gh=class extends VE{load(r,e,t,o=console.error){let i=new RE(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(ES+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(ES),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await xS(r,MS),t=bS(e);e.version&&(0,_S.default)(e.version,"1.0.84")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&gS(),Ib(e)&&D0(),jb(e)&&xb(),Sv(e)&&xv(),sd(e)&&mh()].filter(Boolean)),t.length&&await vS(t);let o=new ti(e.shared);Object.values(o.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let i=new cd(e.scene,o);sd(e)&&i.initializeSplatViewer();let a=i.activeCamera;return a&&Object.assign(a,{makeDefault:!0}),i=TS(i),i=PS(i),i=OS(i),i=CS(i),i=AS(i),i=DS(i),i}};export{gh as default};
3638
+ }`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new On},viewport:{type:"v2",value:new On},basisViewport:{type:"v2",value:new On},debugColor:{type:"v3",value:new cE},covariancesTextureSize:{type:"v2",value:new On(1024,1024)},centersColorsTextureSize:{type:"v2",value:new On(1024,1024)},orthoZoom:{type:"f",value:-1}};return new vE({uniforms:i,vertexShader:t,fragmentShader:o,transparent:!0,alphaTest:1,blending:gE,depthTest:!0,depthWrite:!1,side:dE})}static buildGeomtery(e){let t=new lE;t.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new sE(o,3);t.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new mE().copy(t),s=new Uint32Array(e),l=new hE(s,1,!1);return l.setUsage(pE),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,t=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(t,t+a*3).set(i.decoded.xyz.denormDequant().data),t+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new On(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new On(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let f=0;f<this.covariances.length;f++)l[f]=uE.toHalfFloat(this.covariances[f]);s=new id(l,i.x,i.y,uS,fE)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new id(l,i.x,i.y,uS,cS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let c=new Uint32Array(a.x*a.y*4);for(let f=0;f<o;f++){let m=f*4,y=f*3,g=f*4;c[g]=lS(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=nd(this.centers[y]),c[g+2]=nd(this.centers[y+1]),c[g+3]=nd(this.centers[y+2])}let u=new id(c,a.x,a.y,bE,SE);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let p=256*4,d=new Float32Array(256*16);for(let f=0;f<this.meshMatrixWorlds.length;f++)d.set(this.meshMatrixWorlds[f].elements,f*16);let h=new id(d,p,1,xE,cS);h.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=h,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:d,texture:h}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,o,i){this.splatCount>0&&(ad.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(ad),this.material.uniforms.basisViewport.value.set(2/ad.x,2/ad.y),this.material.uniforms.focal.value.set(t,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var pS,hh=new Promise(n=>{pS=n}),dS=!1;var ld;function mh(){if(dS)return;if(ld)return ld;async function n(){let e=await import("./gaussian-splat-compression.js");pS(e),dS=!0}return ld=n(),ld}var mS;hh.then(n=>mS=n);var bl=class{constructor(r={}){En(this,"updateView",function(){let r=new fS,e=[],t=new ps(0,0,-1),o=new ps(0,0,-1),i=new ps,a=new ps;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let d=!1,h=!1;if(o.dot(t)<=.95&&(d=!0),a.copy(l.position).sub(i).length()>=1&&(h=!0),!d&&!h&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,i.copy(l.position),t.copy(o),r.copy(l.matrixWorld).invert(),r.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let p={sort:{view:r.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))}}());this.scene=r.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new fS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(r,e){let t=new wE;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(r.getSize(t),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(r={}){this.activePage=this.scene.activePage,r.position&&(r.position=new ps().fromArray(r.position)),r.orientation&&(r.orientation=new hS().fromArray(r.orientation)),r.halfPrecisionCovariances=!!r.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let t=e.map(a=>new mS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of t)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(t,o,r.position,r.orientation,r.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let r=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)r.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let r=!1;return this.splatEntries.forEach((e,t)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[t][i]===void 0?(r=!0,this.cropsArray[t][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[t][i][a][c])?(r=!0,this.cropsArray[t][i][a]=s):s!==this.cropsArray[t][i]?.[a]&&(r=!0,this.cropsArray[t][i][a]=s)})}),e.data.crops.length!==this.cropsArray[t]?.length&&(this.cropsArray[t].length=e.data.crops.length,r=!0)}),r}setupSplatMesh(r,e,t=new ps,o=new hS,i=!1,a=1,s,l){this.splatMesh=Cn.buildMesh(r,e,i,a,s,l),this.splatMesh.position.copy(t),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,p)=>this.update(c,p)}setupSortWorker(r){this.sortWorker=sS(r),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(r,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(r,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var IE=new AE;IE.wireframe=!0;var yS=new OE,cd=class extends PE{constructor(e,t){super();this.data=e;this.sharedAssets=t;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new od;this.invisibleObjects=new vn("jflkdsafjasdifjaslk",{...Mc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new Cr("fdasfa",{...wo.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=iS(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=nS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Cr&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>Ml(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===tn)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene){let o=t.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof Cr&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(o=>{t===void 0&&o instanceof li&&(t=o.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof Cr&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(this),i.resetBBoxNeedsUpdate(),bn(i)&&cl(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),cl(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),bn(o)&&(o.freeBooleanPointer(),i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof us&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),bn(o)&&(o.invalidateUpstreamBooleanData(),cl(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof nr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof Cr&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{tS(a,t,o,{scene:this,shared:i}),a instanceof st&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,t,o,i,a,s=[]){e.updateEntityByOp(t,o,i,a),this.traverseEntity(l=>{(l instanceof li||l instanceof Cr)&&(s.includes(l.frameId??"")||l.frameId===t)&&l.updateEntity2DByOp(t,o,i,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{i instanceof jo&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Le.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Le.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,l){if(e){let c=i.find(e);c&&c!==i&&a.forInstancesRec(u=>{u.data=Xo(u.data,p=>{let d=p.events.data(l.id),h=u.goUp(s);if(h){let f=[...Al(h.identity),e].join("-"),m=this.entityIdentityToEntity[f];if(m){let y=m.uuid,g=ot.zoom(d,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...t,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ko&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Xo(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Ec.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof ko&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Qu(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ko&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Le.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Le.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(t===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let p=s.matrixWorld.clone().invert();u.point.applyMatrix4(p),o.push(u)}}else(bn(s)||ul(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),gl(s,e,o)),i(s)}};return i(this.activePage),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Le.is(a)&&(a.visible||s?.object.data.visible)&&((bn(a)||ul(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),gl(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Le.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Le.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Le.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof st&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();cl(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)na.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Le.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,a,s){let l={scene:this,shared:s},c=rd(e,t,l);return c&&(this.entityByUuid[e]=c,i.add(c),i.children.splice(a,0,i.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(t,l),c instanceof st&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&c.traverseEntity(u=>{let p=u.dataPatched;if(u instanceof st&&p.bones&&p.boneInverses){let d=p.bones.map(m=>this.find(m)),h=p.boneInverses.map(m=>new CE().fromArray(m)),f=new ME(d,h);u.bind(f,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new TE;return o.setFromPoints(t),o.getCenter(yS),yS}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ot)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof rr&&e(t.material[o]);else t.material instanceof rr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof jo&&i.setViewplaneSize(e,t,o)})}initializeSplatViewer(){this.splatViewer=new bl({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as NE}from"three/examples/jsm/loaders/DRACOLoader.js";var Tn;function gS(){return Tn||(Tn=new NE,Tn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Tn.decoderPending}async function DE(n){if(Tn){let r={attributeIDs:Tn.defaultAttributeIDs,attributeTypes:Tn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Tn.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function xS(n,r){let[e,t]=Ed(mc.deserialize(new Uint8Array(n)));return Lc(e),r&&r(e),t.result().data}function bS(n){let r=[];return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="NonParametricGeometry"&&t.geometry.data.draco!==void 0&&r.push(t)}),r}async function vS(n){for(let r of n){let e=await DE(r.geometry.data.draco);if(e){let t=r.geometry.data;e.index&&(t.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:i,array:a,itemSize:s})=>{o[i]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),t.attributes=o,t.draco=void 0}}}import{Mesh as fde}from"three";import{mergeBufferGeometries as yde}from"three/examples/jsm/utils/BufferGeometryUtils.js";function SS(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as wS,ShaderLib as EE}from"three";function PS(n){let r=new Set;return n.traverse(e=>{if(e instanceof or)if(ct(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(_E(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new wS,specularColor:new wS});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},EE.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=ob(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else BE(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function _E(n){return n.getLayersOfType("transmission").length>0}function BE(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function OS(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function CS(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}import{mergeBufferGeometries as LE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function TS(n){let r=[];return n.traverse(e=>{e instanceof es&&r.push(e)}),r.forEach(e=>{let t=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&SS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Ot&&a.unshift(t.geometry),a.length){let s=LE(a);t instanceof Ot&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Sb})}),n}function AS(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function MS(n){Object.values(n.shared.materials).forEach(r=>{yh(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?yh(e.material):"materials"in e&&e.materials.forEach(t=>{yh(t)})})}function yh(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var _S=hi(NS(),1);function DS(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var ES="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",gh=class extends VE{load(r,e,t,o=console.error){let i=new RE(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(ES+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(ES),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await xS(r,MS),t=bS(e);e.version&&(0,_S.default)(e.version,"1.0.86")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([t.length&&gS(),Ib(e)&&D0(),jb(e)&&xb(),Sv(e)&&xv(),sd(e)&&mh()].filter(Boolean)),t.length&&await vS(t);let o=new ti(e.shared);Object.values(o.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let i=new cd(e.scene,o);sd(e)&&i.initializeSplatViewer();let a=i.activeCamera;return a&&Object.assign(a,{makeDefault:!0}),i=TS(i),i=PS(i),i=OS(i),i=CS(i),i=AS(i),i=DS(i),i}};export{gh as default};