@splinetool/loader 0.9.405 → 0.9.408

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,16 +1,16 @@
1
- "use strict";var G0=Object.create;var Ia=Object.defineProperty;var V0=Object.getOwnPropertyDescriptor;var z0=Object.getOwnPropertyNames;var j0=Object.getPrototypeOf,F0=Object.prototype.hasOwnProperty;var Ma=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Uu=(n,r)=>{for(var e in r)Ia(n,e,{get:r[e],enumerable:!0})},Hu=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of z0(r))!F0.call(n,o)&&o!==e&&Ia(n,o,{get:()=>r[o],enumerable:!(t=V0(r,o))||t.enumerable});return n};var On=(n,r,e)=>(e=n!=null?G0(j0(n)):{},Hu(r||!n||!n.__esModule?Ia(e,"default",{value:n,enumerable:!0}):e,n)),k0=n=>Hu(Ia({},"__esModule",{value:!0}),n);var wh=Ma((wd,Sh)=>{(function(n,r){typeof wd=="object"?Sh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(wd,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,s=1;e.length==0&&(e=[+new Date]);var a=r();t=a(" "),o=a(" "),i=a(" ");for(var c=0;c<e.length;c++)t-=a(e[c]),t<0&&(t+=1),o-=a(e[c]),o<0&&(o+=1),i-=a(e[c]),i<0&&(i+=1);a=null;var u=function(){var l=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=l-(s=l|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[t,o,i,s]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,s=+l[3]||0},u}(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 s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Ch=Ma((jl,Ah)=>{(function(n,r){typeof jl=="object"&&typeof Ah<"u"?r(jl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(jl,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 s,a,c,u,l,d,p,f,m,h,y,g,x=r[0].length,b=r.length;if(b<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],P=[],_=e==="f"?b:x,v=h=p=0;v<b;v++)S[v]=new Array(_).fill(0);for(v=0;v<x;v++)P[v]=new Array(x).fill(0);var N,T=new Array(x).fill(0);for(v=0;v<b;v++)for(s=0;s<x;s++)S[v][s]=r[v][s];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,s=v;s<b;s++)m+=Math.pow(S[s][v],2);if(m<i)p=0;else for(f=(d=S[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v]=d-p,s=c;s<x;s++){for(m=0,a=v;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(T[v]=p,m=0,s=c;s<x;s++)m+=Math.pow(S[v][s],2);if(m<i)p=0;else{for(f=(d=S[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[v][v+1]=d-p,s=c;s<x;s++)w[s]=S[v][s]/f;for(s=c;s<b;s++){for(m=0,a=c;a<x;a++)m+=S[s][a]*S[v][a];for(a=c;a<x;a++)S[s][a]=S[s][a]+m*w[a]}}h<(y=Math.abs(T[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=S[v][v+1]*p,s=c;s<x;s++)P[s][v]=S[v][s]/f;for(s=c;s<x;s++){for(m=0,a=c;a<x;a++)m+=S[v][a]*P[a][s];for(a=c;a<x;a++)P[a][s]=P[a][s]+m*P[a][v]}}for(s=c;s<x;s++)P[v][s]=0,P[s][v]=0;P[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<b;v++){for(s=x;s<b;s++)S[v][s]=0;S[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=T[v],s=c;s<_;s++)S[v][s]=0;if(p!==0){for(f=S[v][v]*p,s=c;s<_;s++){for(m=0,a=c;a<b;a++)m+=S[a][v]*S[a][s];for(d=m/f,a=v;a<b;a++)S[a][s]=S[a][s]+d*S[a][v]}for(s=v;s<b;s++)S[s][v]=S[s][v]/p}else for(s=v;s<b;s++)S[s][v]=0;S[v][v]=S[v][v]+1}}for(o*=h,a=x-1;0<=a;a--)for(var C=0;C<50;C++){for(N=!1,c=a;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(T[c-1])<=o)break}if(!N){for(l=0,u=c-(m=1),v=c;v<a+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=T[v],T[v]=Math.sqrt(d*d+p*p),l=p/(f=T[v]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][v],S[s][u]=y*l+g*m,S[s][v]=-y*m+g*l}if(g=T[a],c===a){if(g<0&&(T[a]=-g,t))for(s=0;s<x;s++)P[s][a]=-P[s][a];break}for(h=T[c],d=(((y=T[a-1])-g)*(y+g)+((p=w[a-1])-(f=w[a]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,v=c+(m=l=1);v<a+1;v++){if(p=w[v],y=T[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(s=0;s<x;s++)h=P[s][v-1],g=P[s][v],P[s][v-1]=h*l+g*m,P[s][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(T[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(s=0;s<b;s++)y=S[s][v-1],g=S[s][v],S[s][v-1]=y*l+g*m,S[s][v]=-y*m+g*l}w[c]=0,w[a]=d,T[a]=h}for(v=0;v<x;v++)T[v]<o&&(T[v]=0);return{u:S,q:T,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var yg=Ma(xc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<l._howls.length;b++)l._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){d=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),b=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=b*1e3/Math.abs(y._rate),S=p._sprite[l][0]/1e3,P=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=S,y._stop=P,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=P){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,b):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var T=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var C=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||C)T();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",T(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,b=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,b=Math.abs(x/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var P=(Date.now()-S)/f;S=Date.now(),g+=x*P,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),b=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=b*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var b=function(){l._playLock?setTimeout(b,0):x()};setTimeout(b,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);a(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},u=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof xc<"u"&&(xc.Howler=r,xc.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(r,e,t,o,i,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")a._orientation=[r,e,t,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return a},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var a=t._soundById(i[s]);if(a)if(typeof r=="number")a._stereo=r,a._pos=[r,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(r,0,0):a._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",a._id);else return a._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),a=0;a<s.length;a++)if(i=r._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var O0=Ma((oX,T0)=>{T0.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),a=Number(o[i]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0}});var iO={};Uu(iO,{default:()=>zc});module.exports=k0(iO);var jc=require("three");function Wu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function gr(n,r){return Object.setPrototypeOf(n,r),n}function Ea(n){return Array.isArray(n)?n:[n]}function qu(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 U0=typeof global=="object"&&global&&global.Object===Object&&global,La=U0;var H0=typeof self=="object"&&self&&self.Object===Object&&self,W0=La||H0||Function("return this")(),st=W0;var q0=st.Symbol,mt=q0;var $u=Object.prototype,$0=$u.hasOwnProperty,Y0=$u.toString,Ss=mt?mt.toStringTag:void 0;function X0(n){var r=$0.call(n,Ss),e=n[Ss];try{n[Ss]=void 0;var t=!0}catch{}var o=Y0.call(n);return t&&(r?n[Ss]=e:delete n[Ss]),o}var Yu=X0;var K0=Object.prototype,Z0=K0.toString;function Q0(n){return Z0.call(n)}var Xu=Q0;var J0="[object Null]",ex="[object Undefined]",Ku=mt?mt.toStringTag:void 0;function tx(n){return n==null?n===void 0?ex:J0:Ku&&Ku in Object(n)?Yu(n):Xu(n)}var Jt=tx;function rx(n){return n!=null&&typeof n=="object"}var wt=rx;var ox="[object Symbol]";function nx(n){return typeof n=="symbol"||wt(n)&&Jt(n)==ox}var An=nx;function ix(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 Da=ix;var sx=Array.isArray,Ze=sx;var ax=1/0,Zu=mt?mt.prototype:void 0,Qu=Zu?Zu.toString:void 0;function Ju(n){if(typeof n=="string")return n;if(Ze(n))return Da(n,Ju)+"";if(An(n))return Qu?Qu.call(n):"";var r=n+"";return r=="0"&&1/n==-ax?"-0":r}var ep=Ju;function lx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var er=lx;function cx(n){return n}var tp=cx;var dx="[object AsyncFunction]",ux="[object Function]",px="[object GeneratorFunction]",fx="[object Proxy]";function mx(n){if(!er(n))return!1;var r=Jt(n);return r==ux||r==px||r==dx||r==fx}var Ba=mx;var hx=st["__core-js_shared__"],Ra=hx;var rp=function(){var n=/[^.]+$/.exec(Ra&&Ra.keys&&Ra.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function yx(n){return!!rp&&rp in n}var op=yx;var gx=Function.prototype,xx=gx.toString;function vx(n){if(n!=null){try{return xx.call(n)}catch{}try{return n+""}catch{}}return""}var to=vx;var bx=/[\\^$.*+?()[\]{}|]/g,Sx=/^\[object .+?Constructor\]$/,wx=Function.prototype,_x=Object.prototype,Px=wx.toString,Tx=_x.hasOwnProperty,Ox=RegExp("^"+Px.call(Tx).replace(bx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ax(n){if(!er(n)||op(n))return!1;var r=Ba(n)?Ox:Sx;return r.test(to(n))}var np=Ax;function Cx(n,r){return n?.[r]}var ip=Cx;function Nx(n,r){var e=ip(n,r);return np(e)?e:void 0}var Ft=Nx;var Ix=Ft(st,"WeakMap"),Ga=Ix;var sp=Object.create,Mx=function(){function n(){}return function(r){if(!er(r))return{};if(sp)return sp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),ap=Mx;function Ex(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 lp=Ex;function Lx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var cp=Lx;var Dx=800,Bx=16,Rx=Date.now;function Gx(n){var r=0,e=0;return function(){var t=Rx(),o=Bx-(t-e);if(e=t,o>0){if(++r>=Dx)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var dp=Gx;function Vx(n){return function(){return n}}var up=Vx;var zx=function(){try{var n=Ft(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Cn=zx;var jx=Cn?function(n,r){return Cn(n,"toString",{configurable:!0,enumerable:!1,value:up(r),writable:!0})}:tp,pp=jx;var Fx=dp(pp),fp=Fx;function kx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var mp=kx;var Ux=9007199254740991,Hx=/^(?:0|[1-9]\d*)$/;function Wx(n,r){var e=typeof n;return r=r??Ux,!!r&&(e=="number"||e!="symbol"&&Hx.test(n))&&n>-1&&n%1==0&&n<r}var Nn=Wx;function qx(n,r,e){r=="__proto__"&&Cn?Cn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Va=qx;function $x(n,r){return n===r||n!==n&&r!==r}var In=$x;var Yx=Object.prototype,Xx=Yx.hasOwnProperty;function Kx(n,r,e){var t=n[r];(!(Xx.call(n,r)&&In(t,e))||e===void 0&&!(r in n))&&Va(n,r,e)}var Mn=Kx;function Zx(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var a=r[i],c=t?t(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?Va(e,a,c):Mn(e,a,c)}return e}var Mr=Zx;var hp=Math.max;function Qx(n,r,e){return r=hp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=hp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),lp(n,this,a)}}var yp=Qx;var Jx=9007199254740991;function ev(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Jx}var En=ev;function tv(n){return n!=null&&En(n.length)&&!Ba(n)}var za=tv;var rv=Object.prototype;function ov(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||rv;return n===e}var Ln=ov;function nv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var gp=nv;var iv="[object Arguments]";function sv(n){return wt(n)&&Jt(n)==iv}var kc=sv;var xp=Object.prototype,av=xp.hasOwnProperty,lv=xp.propertyIsEnumerable,cv=kc(function(){return arguments}())?kc:function(n){return wt(n)&&av.call(n,"callee")&&!lv.call(n,"callee")},Dn=cv;function dv(){return!1}var vp=dv;var wp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,bp=wp&&typeof module=="object"&&module&&!module.nodeType&&module,uv=bp&&bp.exports===wp,Sp=uv?st.Buffer:void 0,pv=Sp?Sp.isBuffer:void 0,fv=pv||vp,Ko=fv;var mv="[object Arguments]",hv="[object Array]",yv="[object Boolean]",gv="[object Date]",xv="[object Error]",vv="[object Function]",bv="[object Map]",Sv="[object Number]",wv="[object Object]",_v="[object RegExp]",Pv="[object Set]",Tv="[object String]",Ov="[object WeakMap]",Av="[object ArrayBuffer]",Cv="[object DataView]",Nv="[object Float32Array]",Iv="[object Float64Array]",Mv="[object Int8Array]",Ev="[object Int16Array]",Lv="[object Int32Array]",Dv="[object Uint8Array]",Bv="[object Uint8ClampedArray]",Rv="[object Uint16Array]",Gv="[object Uint32Array]",ke={};ke[Nv]=ke[Iv]=ke[Mv]=ke[Ev]=ke[Lv]=ke[Dv]=ke[Bv]=ke[Rv]=ke[Gv]=!0;ke[mv]=ke[hv]=ke[Av]=ke[yv]=ke[Cv]=ke[gv]=ke[xv]=ke[vv]=ke[bv]=ke[Sv]=ke[wv]=ke[_v]=ke[Pv]=ke[Tv]=ke[Ov]=!1;function Vv(n){return wt(n)&&En(n.length)&&!!ke[Jt(n)]}var _p=Vv;function zv(n){return function(r){return n(r)}}var Bn=zv;var Pp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ws=Pp&&typeof module=="object"&&module&&!module.nodeType&&module,jv=ws&&ws.exports===Pp,Uc=jv&&La.process,Fv=function(){try{var n=ws&&ws.require&&ws.require("util").types;return n||Uc&&Uc.binding&&Uc.binding("util")}catch{}}(),ro=Fv;var Tp=ro&&ro.isTypedArray,kv=Tp?Bn(Tp):_p,ja=kv;var Uv=Object.prototype,Hv=Uv.hasOwnProperty;function Wv(n,r){var e=Ze(n),t=!e&&Dn(n),o=!e&&!t&&Ko(n),i=!e&&!t&&!o&&ja(n),s=e||t||o||i,a=s?gp(n.length,String):[],c=a.length;for(var u in n)(r||Hv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Nn(u,c)))&&a.push(u);return a}var Fa=Wv;function qv(n,r){return function(e){return n(r(e))}}var ka=qv;var $v=ka(Object.keys,Object),Op=$v;var Yv=Object.prototype,Xv=Yv.hasOwnProperty;function Kv(n){if(!Ln(n))return Op(n);var r=[];for(var e in Object(n))Xv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Ap=Kv;function Zv(n){return za(n)?Fa(n):Ap(n)}var Rn=Zv;function Qv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Cp=Qv;var Jv=Object.prototype,eb=Jv.hasOwnProperty;function tb(n){if(!er(n))return Cp(n);var r=Ln(n),e=[];for(var t in n)t=="constructor"&&(r||!eb.call(n,t))||e.push(t);return e}var Np=tb;function rb(n){return za(n)?Fa(n,!0):Np(n)}var Gn=rb;var ob=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nb=/^\w*$/;function ib(n,r){if(Ze(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||An(n)?!0:nb.test(n)||!ob.test(n)||r!=null&&n in Object(r)}var Ip=ib;var sb=Ft(Object,"create"),oo=sb;function ab(){this.__data__=oo?oo(null):{},this.size=0}var Mp=ab;function lb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Ep=lb;var cb="__lodash_hash_undefined__",db=Object.prototype,ub=db.hasOwnProperty;function pb(n){var r=this.__data__;if(oo){var e=r[n];return e===cb?void 0:e}return ub.call(r,n)?r[n]:void 0}var Lp=pb;var fb=Object.prototype,mb=fb.hasOwnProperty;function hb(n){var r=this.__data__;return oo?r[n]!==void 0:mb.call(r,n)}var Dp=hb;var yb="__lodash_hash_undefined__";function gb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=oo&&r===void 0?yb:r,this}var Bp=gb;function Vn(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])}}Vn.prototype.clear=Mp;Vn.prototype.delete=Ep;Vn.prototype.get=Lp;Vn.prototype.has=Dp;Vn.prototype.set=Bp;var Hc=Vn;function xb(){this.__data__=[],this.size=0}var Rp=xb;function vb(n,r){for(var e=n.length;e--;)if(In(n[e][0],r))return e;return-1}var bo=vb;var bb=Array.prototype,Sb=bb.splice;function wb(n){var r=this.__data__,e=bo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Sb.call(r,e,1),--this.size,!0}var Gp=wb;function _b(n){var r=this.__data__,e=bo(r,n);return e<0?void 0:r[e][1]}var Vp=_b;function Pb(n){return bo(this.__data__,n)>-1}var zp=Pb;function Tb(n,r){var e=this.__data__,t=bo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var jp=Tb;function zn(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])}}zn.prototype.clear=Rp;zn.prototype.delete=Gp;zn.prototype.get=Vp;zn.prototype.has=zp;zn.prototype.set=jp;var So=zn;var Ob=Ft(st,"Map"),wo=Ob;function Ab(){this.size=0,this.__data__={hash:new Hc,map:new(wo||So),string:new Hc}}var Fp=Ab;function Cb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var kp=Cb;function Nb(n,r){var e=n.__data__;return kp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var _o=Nb;function Ib(n){var r=_o(this,n).delete(n);return this.size-=r?1:0,r}var Up=Ib;function Mb(n){return _o(this,n).get(n)}var Hp=Mb;function Eb(n){return _o(this,n).has(n)}var Wp=Eb;function Lb(n,r){var e=_o(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var qp=Lb;function jn(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])}}jn.prototype.clear=Fp;jn.prototype.delete=Up;jn.prototype.get=Hp;jn.prototype.has=Wp;jn.prototype.set=qp;var Zo=jn;var Db="Expected a function";function Wc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Db);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 s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(Wc.Cache||Zo),e}Wc.Cache=Zo;var $p=Wc;var Bb=500;function Rb(n){var r=$p(n,function(t){return e.size===Bb&&e.clear(),t}),e=r.cache;return r}var Yp=Rb;var Gb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vb=/\\(\\)?/g,zb=Yp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Gb,function(e,t,o,i){r.push(o?i.replace(Vb,"$1"):t||e)}),r}),Xp=zb;function jb(n){return n==null?"":ep(n)}var Kp=jb;function Fb(n,r){return Ze(n)?n:Ip(n,r)?[n]:Xp(Kp(n))}var ar=Fb;var kb=1/0;function Ub(n){if(typeof n=="string"||An(n))return n;var r=n+"";return r=="0"&&1/n==-kb?"-0":r}var Po=Ub;function Hb(n,r){r=ar(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Po(r[e++])];return e&&e==t?n:void 0}var Ua=Hb;function Wb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var Fn=Wb;var Zp=mt?mt.isConcatSpreadable:void 0;function qb(n){return Ze(n)||Dn(n)||!!(Zp&&n&&n[Zp])}var Qp=qb;function Jp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Qp),o||(o=[]);++i<s;){var a=n[i];r>0&&e(a)?r>1?Jp(a,r-1,e,t,o):Fn(o,a):t||(o[o.length]=a)}return o}var ef=Jp;function $b(n){var r=n==null?0:n.length;return r?ef(n,1):[]}var tf=$b;function Yb(n){return fp(yp(n,void 0,tf),n+"")}var Ha=Yb;var Xb=ka(Object.getPrototypeOf,Object),kn=Xb;var Kb="[object Object]",Zb=Function.prototype,Qb=Object.prototype,rf=Zb.toString,Jb=Qb.hasOwnProperty,eS=rf.call(Object);function tS(n){if(!wt(n)||Jt(n)!=Kb)return!1;var r=kn(n);if(r===null)return!0;var e=Jb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&rf.call(e)==eS}var of=tS;function rS(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 nf=rS;function oS(){this.__data__=new So,this.size=0}var sf=oS;function nS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var af=nS;function iS(n){return this.__data__.get(n)}var lf=iS;function sS(n){return this.__data__.has(n)}var cf=sS;var aS=200;function lS(n,r){var e=this.__data__;if(e instanceof So){var t=e.__data__;if(!wo||t.length<aS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Zo(t)}return e.set(n,r),this.size=e.size,this}var df=lS;function Un(n){var r=this.__data__=new So(n);this.size=r.size}Un.prototype.clear=sf;Un.prototype.delete=af;Un.prototype.get=lf;Un.prototype.has=cf;Un.prototype.set=df;var Hn=Un;function cS(n,r){return n&&Mr(r,Rn(r),n)}var uf=cS;function dS(n,r){return n&&Mr(r,Gn(r),n)}var pf=dS;var yf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ff=yf&&typeof module=="object"&&module&&!module.nodeType&&module,uS=ff&&ff.exports===yf,mf=uS?st.Buffer:void 0,hf=mf?mf.allocUnsafe:void 0;function pS(n,r){if(r)return n.slice();var e=n.length,t=hf?hf(e):new n.constructor(e);return n.copy(t),t}var gf=pS;function fS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var xf=fS;function mS(){return[]}var Wa=mS;var hS=Object.prototype,yS=hS.propertyIsEnumerable,vf=Object.getOwnPropertySymbols,gS=vf?function(n){return n==null?[]:(n=Object(n),xf(vf(n),function(r){return yS.call(n,r)}))}:Wa,Wn=gS;function xS(n,r){return Mr(n,Wn(n),r)}var bf=xS;var vS=Object.getOwnPropertySymbols,bS=vS?function(n){for(var r=[];n;)Fn(r,Wn(n)),n=kn(n);return r}:Wa,qa=bS;function SS(n,r){return Mr(n,qa(n),r)}var Sf=SS;function wS(n,r,e){var t=r(n);return Ze(n)?t:Fn(t,e(n))}var $a=wS;function _S(n){return $a(n,Rn,Wn)}var _s=_S;function PS(n){return $a(n,Gn,qa)}var Ya=PS;var TS=Ft(st,"DataView"),Xa=TS;var OS=Ft(st,"Promise"),Ka=OS;var AS=Ft(st,"Set"),Za=AS;var wf="[object Map]",CS="[object Object]",_f="[object Promise]",Pf="[object Set]",Tf="[object WeakMap]",Of="[object DataView]",NS=to(Xa),IS=to(wo),MS=to(Ka),ES=to(Za),LS=to(Ga),Qo=Jt;(Xa&&Qo(new Xa(new ArrayBuffer(1)))!=Of||wo&&Qo(new wo)!=wf||Ka&&Qo(Ka.resolve())!=_f||Za&&Qo(new Za)!=Pf||Ga&&Qo(new Ga)!=Tf)&&(Qo=function(n){var r=Jt(n),e=r==CS?n.constructor:void 0,t=e?to(e):"";if(t)switch(t){case NS:return Of;case IS:return wf;case MS:return _f;case ES:return Pf;case LS:return Tf}return r});var no=Qo;var DS=Object.prototype,BS=DS.hasOwnProperty;function RS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&BS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Af=RS;var GS=st.Uint8Array,qn=GS;function VS(n){var r=new n.constructor(n.byteLength);return new qn(r).set(new qn(n)),r}var $n=VS;function zS(n,r){var e=r?$n(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Cf=zS;var jS=/\w*$/;function FS(n){var r=new n.constructor(n.source,jS.exec(n));return r.lastIndex=n.lastIndex,r}var Nf=FS;var If=mt?mt.prototype:void 0,Mf=If?If.valueOf:void 0;function kS(n){return Mf?Object(Mf.call(n)):{}}var Ef=kS;function US(n,r){var e=r?$n(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Lf=US;var HS="[object Boolean]",WS="[object Date]",qS="[object Map]",$S="[object Number]",YS="[object RegExp]",XS="[object Set]",KS="[object String]",ZS="[object Symbol]",QS="[object ArrayBuffer]",JS="[object DataView]",ew="[object Float32Array]",tw="[object Float64Array]",rw="[object Int8Array]",ow="[object Int16Array]",nw="[object Int32Array]",iw="[object Uint8Array]",sw="[object Uint8ClampedArray]",aw="[object Uint16Array]",lw="[object Uint32Array]";function cw(n,r,e){var t=n.constructor;switch(r){case QS:return $n(n);case HS:case WS:return new t(+n);case JS:return Cf(n,e);case ew:case tw:case rw:case ow:case nw:case iw:case sw:case aw:case lw:return Lf(n,e);case qS:return new t;case $S:case KS:return new t(n);case YS:return Nf(n);case XS:return new t;case ZS:return Ef(n)}}var Df=cw;function dw(n){return typeof n.constructor=="function"&&!Ln(n)?ap(kn(n)):{}}var Bf=dw;var uw="[object Map]";function pw(n){return wt(n)&&no(n)==uw}var Rf=pw;var Gf=ro&&ro.isMap,fw=Gf?Bn(Gf):Rf,Vf=fw;var mw="[object Set]";function hw(n){return wt(n)&&no(n)==mw}var zf=hw;var jf=ro&&ro.isSet,yw=jf?Bn(jf):zf,Ff=yw;var gw=1,xw=2,vw=4,kf="[object Arguments]",bw="[object Array]",Sw="[object Boolean]",ww="[object Date]",_w="[object Error]",Uf="[object Function]",Pw="[object GeneratorFunction]",Tw="[object Map]",Ow="[object Number]",Hf="[object Object]",Aw="[object RegExp]",Cw="[object Set]",Nw="[object String]",Iw="[object Symbol]",Mw="[object WeakMap]",Ew="[object ArrayBuffer]",Lw="[object DataView]",Dw="[object Float32Array]",Bw="[object Float64Array]",Rw="[object Int8Array]",Gw="[object Int16Array]",Vw="[object Int32Array]",zw="[object Uint8Array]",jw="[object Uint8ClampedArray]",Fw="[object Uint16Array]",kw="[object Uint32Array]",je={};je[kf]=je[bw]=je[Ew]=je[Lw]=je[Sw]=je[ww]=je[Dw]=je[Bw]=je[Rw]=je[Gw]=je[Vw]=je[Tw]=je[Ow]=je[Hf]=je[Aw]=je[Cw]=je[Nw]=je[Iw]=je[zw]=je[jw]=je[Fw]=je[kw]=!0;je[_w]=je[Uf]=je[Mw]=!1;function Qa(n,r,e,t,o,i){var s,a=r&gw,c=r&xw,u=r&vw;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!er(n))return n;var l=Ze(n);if(l){if(s=Af(n),!a)return cp(n,s)}else{var d=no(n),p=d==Uf||d==Pw;if(Ko(n))return gf(n,a);if(d==Hf||d==kf||p&&!o){if(s=c||p?{}:Bf(n),!a)return c?Sf(n,pf(s,n)):bf(n,uf(s,n))}else{if(!je[d])return o?n:{};s=Df(n,d,a)}}i||(i=new Hn);var f=i.get(n);if(f)return f;i.set(n,s),Ff(n)?n.forEach(function(y){s.add(Qa(y,r,e,y,n,i))}):Vf(n)&&n.forEach(function(y,g){s.set(g,Qa(y,r,e,g,n,i))});var m=u?c?Ya:_s:c?Gn:Rn,h=l?void 0:m(n);return mp(h||n,function(y,g){h&&(g=y,y=n[g]),Mn(s,g,Qa(y,r,e,g,n,i))}),s}var Ja=Qa;var Uw=1,Hw=4;function Ww(n){return Ja(n,Uw|Hw)}var io=Ww;var qw="__lodash_hash_undefined__";function $w(n){return this.__data__.set(n,qw),this}var Wf=$w;function Yw(n){return this.__data__.has(n)}var qf=Yw;function el(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Zo;++r<e;)this.add(n[r])}el.prototype.add=el.prototype.push=Wf;el.prototype.has=qf;var $f=el;function Xw(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 Yf=Xw;function Kw(n,r){return n.has(r)}var Xf=Kw;var Zw=1,Qw=2;function Jw(n,r,e,t,o,i){var s=e&Zw,a=n.length,c=r.length;if(a!=c&&!(s&&c>a))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&Qw?new $f:void 0;for(i.set(n,r),i.set(r,n);++d<a;){var m=n[d],h=r[d];if(t)var y=s?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!Yf(r,function(g,x){if(!Xf(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var tl=Jw;function e1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Kf=e1;function t1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Zf=t1;var r1=1,o1=2,n1="[object Boolean]",i1="[object Date]",s1="[object Error]",a1="[object Map]",l1="[object Number]",c1="[object RegExp]",d1="[object Set]",u1="[object String]",p1="[object Symbol]",f1="[object ArrayBuffer]",m1="[object DataView]",Qf=mt?mt.prototype:void 0,qc=Qf?Qf.valueOf:void 0;function h1(n,r,e,t,o,i,s){switch(e){case m1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case f1:return!(n.byteLength!=r.byteLength||!i(new qn(n),new qn(r)));case n1:case i1:case l1:return In(+n,+r);case s1:return n.name==r.name&&n.message==r.message;case c1:case u1:return n==r+"";case a1:var a=Kf;case d1:var c=t&r1;if(a||(a=Zf),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=o1,s.set(n,r);var l=tl(a(n),a(r),t,o,i,s);return s.delete(n),l;case p1:if(qc)return qc.call(n)==qc.call(r)}return!1}var Jf=h1;var y1=1,g1=Object.prototype,x1=g1.hasOwnProperty;function v1(n,r,e,t,o,i){var s=e&y1,a=_s(n),c=a.length,u=_s(r),l=u.length;if(c!=l&&!s)return!1;for(var d=c;d--;){var p=a[d];if(!(s?p in r:x1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=a[d];var g=n[p],x=r[p];if(t)var b=s?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(b===void 0?g===x||o(g,x,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var em=v1;var b1=1,tm="[object Arguments]",rm="[object Array]",rl="[object Object]",S1=Object.prototype,om=S1.hasOwnProperty;function w1(n,r,e,t,o,i){var s=Ze(n),a=Ze(r),c=s?rm:no(n),u=a?rm:no(r);c=c==tm?rl:c,u=u==tm?rl:u;var l=c==rl,d=u==rl,p=c==u;if(p&&Ko(n)){if(!Ko(r))return!1;s=!0,l=!1}if(p&&!l)return i||(i=new Hn),s||ja(n)?tl(n,r,e,t,o,i):Jf(n,r,c,e,t,o,i);if(!(e&b1)){var f=l&&om.call(n,"__wrapped__"),m=d&&om.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Hn),o(h,y,e,t,i)}}return p?(i||(i=new Hn),em(n,r,e,t,o,i)):!1}var nm=w1;function im(n,r,e,t,o){return n===r?!0:n==null||r==null||!wt(n)&&!wt(r)?n!==n&&r!==r:nm(n,r,e,t,im,o)}var sm=im;function _1(n,r){return n!=null&&r in Object(n)}var am=_1;function P1(n,r,e){r=ar(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=Po(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&En(o)&&Nn(s,o)&&(Ze(n)||Dn(n)))}var lm=P1;function T1(n,r){return n!=null&&lm(n,r,am)}var cm=T1;function O1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var dm=O1;function A1(n,r){return r.length<2?n:Ua(n,nf(r,0,-1))}var um=A1;function C1(n,r){return sm(n,r)}var Ps=C1;function N1(n,r){return r=ar(r,n),n=um(n,r),n==null||delete n[Po(dm(r))]}var pm=N1;function I1(n){return of(n)?void 0:n}var fm=I1;var M1=1,E1=2,L1=4,D1=Ha(function(n,r){var e={};if(n==null)return e;var t=!1;r=Da(r,function(i){return i=ar(i,n),t||(t=i.length>1),i}),Mr(n,Ya(n),e),t&&(e=Ja(e,M1|E1|L1,fm));for(var o=r.length;o--;)pm(e,r[o]);return e}),Yn=D1;function B1(n,r,e,t){if(!er(n))return n;r=ar(r,n);for(var o=-1,i=r.length,s=i-1,a=n;a!=null&&++o<i;){var c=Po(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];u=t?t(l,c,a):void 0,u===void 0&&(u=er(l)?l:Nn(r[o+1])?[]:{})}Mn(a,c,u),a=a[c]}return n}var mm=B1;function R1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],a=Ua(n,s);e(a,s)&&mm(i,ar(s,n),a)}return i}var hm=R1;function G1(n,r){return hm(n,r,function(e,t){return cm(n,t)})}var ym=G1;var V1=Ha(function(n,r){return n==null?{}:ym(n,r)}),so=V1;var ze=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,ze.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:s}=r,a={...e,[i]:s};return Object.setPrototypeOf(a,ze.prototype),{data:a,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,ze.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ts(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"&&Ts(t)}return Object.freeze(n)}function gm(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 Xn=class extends Error{};function ol(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Er(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 s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function Kn(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 xm(){return typeof process<"u"}function vm(n,r){for(let e of n)r(e.id,e.data)!==!0&&vm(e.children,r)}function bm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)bm(e,r)}var qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ts(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&&bm(o,t)}}traverse(e){vm(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),s=this.childrenArray(i),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:a}}Object.setPrototypeOf(i,qe.prototype);let s=i;return s.fillCaches(),s}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:s,children:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{data:this.modifyArrayBy(c,u),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),s=i.findIndex(u=>u.id===t);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,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 f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Xn("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:a,fi:p,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(s=>s.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(s=>s.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)=>gm(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),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,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 Er(0,o,o);{let s=i[0].fi;return Er(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return Er(c,c+o,o)}else return Er(s.fi,a.fi,o)}}};var Zn;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=o[c],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let u=o[c];u===void 0?delete s[c]:s[c]=u,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Zn||(Zn={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ts(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,s=i.findIndex(u=>u.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return xm()||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,s=this,a={fi:t,id:o,data:i};return s=[...s,a],s.sort((u,l)=>u.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,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 Er(0,t,t);{let i=o[0].fi;return Er(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return Er(a,a+t,t)}else return Er(i.fi,s.fi,t)}}};function Qn(n){return n&&typeof n=="object"&&n instanceof $e}var $e=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&&!Qn(t))return null;o+=1}t=t?ol(t):new $e;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=ol(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=ol(c);u[r.path[o-1]]=t,t=u}else{let u=new $e;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,$e.prototype),a={...r,props:i};return{data:s,actual:r,reverse:a}}},Lr;(t=>{function n(o,i){return Os(o,i)??o}t.apply=n;function r(o,i){return Yc(o,i)}t.merge=r;function e(o,i){let s=0,a=i.path,c=o;for(;s<a.length&&c!==void 0;){if(c=Et.zoomOnce(c,a[s]),c===void 0)return i;if(!Qn(c))return;s+=1}if(c===void 0)return i;if(!!Qn(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=$c([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Lr||(Lr={}));function $c(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Os(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let a=$c(o.children,r);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}}else return{...o,id:i,data:s}});if(e)return t}function z1(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Os(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Os(n,r){if(!Qn(r))return r;if(n instanceof qe){let e=$c(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return z1(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=Os(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof $e)return Yc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=Os(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Yc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Qn(r))return r;if(!Qn(n))return Lr.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 $e;for(let o of e){let i=Yc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Sm(n,r){let e={cur:[],result:[],len:0};return n=As(n,r,e)??n,[n,e.result]}function nl(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function il(n){n&&(n.len-=1)}function j1(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function wm(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=As(i.data,r,nl(e,s));il(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=wm(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function F1(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=As(i.data,r,nl(e,s));return il(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function As(n,r,e){if(n instanceof qe){let t=wm(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return F1(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let a=As(i,r,nl(e,s));return il(e),t=t||a!==void 0,a===void 0&&(a=i),a});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Kn(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let a=r[i];if(typeof a=="string"){if(e!==null)throw new Error("not supported");o=!0,i=a}let c=As(s,r,nl(e,i));il(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");j1(e)}return t}else return}}var sl;(r=>{function n(e,t){let o=Et.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(sl||(sl={}));var _t;(a=>{function n(c,u){return{...c,path:c.path.slice(u)}}a.drop=n;function r(c,u){return e(c,u)?.data??c}a.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof $e&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof qe||c instanceof he||c instanceof ze?p=c.runOp(u):p=Zn.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof qe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof ze){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof $e){let b={...x,[g]:h};h=Object.setPrototypeOf(b,$e.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...x],h[g]=b}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof qe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)d.push(c),c=m;else return null}}a.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}a.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}a.pathEq=o;function i(c,u){return t(c.path,u.path)}a.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}a.subsumed=s})(_t||(_t={}));var Xc;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>_t.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>_t.commutative(d,p)))}c.commutative=i;function s(u,l){for(let d of l){let p=a(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function a(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3){let h=Et.zoom(d,[...m.path,m.id]),y=_t.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,x]=Sm(d,{[m.id]:h});d=g;for(let b of x){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=_t.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Xn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=a})(Xc||(Xc={}));var _m=Symbol(),k1=Symbol(),ll=Symbol(),Jo=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof al);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[ll];t&&t(),delete this._children[r]}}}},Zc=class extends Jo{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,Zn.runOp(this._current,r),r.path)}},Qc=class extends Jo{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,ze.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Pm={get(n,r){if(r===ll)return()=>{n._parent=null};if(r===_m)return n._current;if(r===k1)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],s=cl(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):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]}}},U1={...Pm,set(n,r,e){let t={type:0,props:{[r]:at(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}},H1={...Pm,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}},Jn=class extends Jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ll]=()=>{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,s=cl(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}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)}},ei=class extends Jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ll]=()=>{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,s=cl(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 Kc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Et.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var al=class extends Jo{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){Kc(this.ts,e,r),Kc(this.actual,t,r),Kc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function cl(n,r,e){return e instanceof qe?new Jn(n,r,e):e instanceof he?new ei(n,r,e):e instanceof ze?new Proxy(new Qc(n,r,e),H1):e!==null&&typeof e=="object"?Kn(e)?e:new Proxy(new Zc(n,r,e),U1):e}function Jc(n){let r=new al(n);return[cl(r,"",n),r]}function ti(n,r){let[e,t]=Jc(n);return r(e),t.result()}function at(n){return n instanceof Jn||n instanceof ei?n._current:n!==null&&typeof n=="object"?n[_m]:n}var Et;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function r(i,s,a){let c=t(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof qe||i instanceof Jn)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof ei)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=t})(Et||(Et={}));function Tm(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 Nt(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 dl=class{},Cs=class extends dl{constructor(e){super();this.id=e}},Ns=class extends dl{constructor(e){super();this.data=e}};var td;try{td=new TextDecoder}catch{}var ne,Oo,I=0;var Lm=[],rd=Lm,od=0,kt={},Ie,To,lr=0,Dr=0,tr,ao,Lt=[],De,Om={useRecords:!1,mapsAsObjects:!0},Is=class{},id=new Is;id.name="MessagePack 0xC1";var ri=!1,Br=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(ne)return Vm(()=>(pl(),this?this.unpack(r,e):Br.prototype.unpack.call(Om,r,e)));Oo=e>-1?e:r.length,I=0,od=0,Dr=0,To=null,rd=Lm,tr=null,ne=r;try{De=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=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 Br){if(kt=this,this.structures)return Ie=this.structures,ul();(!Ie||Ie.length>0)&&(Ie=[])}else kt=Om,(!Ie||Ie.length>0)&&(Ie=[]);return ul()}unpackMultiple(r,e){let t,o=0;try{ri=!0;let i=r.length,s=this?this.unpack(r,i):hl.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(ul())===!1)return}else{for(t=[s];I<i;)o=I,t.push(ul());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{ri=!1,pl()}}_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 ul(){try{if(!kt.trusted&&!ri){let r=Ie.sharedLength||0;r<Ie.length&&(Ie.length=r)}let n=Qe();if(I==Oo)Ie.restoreStructures&&Am(),Ie=null,ne=null,ao&&(ao=null);else if(I>Oo){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!ri)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Ie.restoreStructures&&Am(),pl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Am(){for(let n in Ie.restoreStructures)Ie[n]=Ie.restoreStructures[n];Ie.restoreStructures=null}function Qe(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Ie[n&63]||kt.getStructures&&Dm()[n&63];return r?(r.read||(r.read=sd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Rm()]=Qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Qe(),Qe());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Qe();return r}else if(n<192){let r=n-160;if(Dr>=I)return To.slice(I-lr,(I+=r)-lr);if(Dr==0&&Oo<140){let e=r<16?ad(r):Bm(r);if(e!=null)return e}return nd(r)}else{let r;switch(n){case 192:return null;case 193:return tr?(r=Qe(),r>0?tr[1].slice(tr.position1,tr.position1+=r):tr[0].slice(tr.position0,tr.position0-=r)):id;case 194:return!1;case 195:return!0;case 196:return ed(ne[I++]);case 197:return r=De.getUint16(I),I+=2,ed(r);case 198:return r=De.getUint32(I),I+=4,ed(r);case 199:return en(ne[I++]);case 200:return r=De.getUint16(I),I+=2,en(r);case 201:return r=De.getUint32(I),I+=4,en(r);case 202:if(r=De.getFloat32(I),kt.useFloat32>2){let e=ml[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=De.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=De.getUint16(I),I+=2,r;case 206:return r=De.getUint32(I),I+=4,r;case 207:return kt.int64AsNumber?(r=De.getUint32(I)*4294967296,r+=De.getUint32(I+4)):r=De.getBigUint64(I),I+=8,r;case 208:return De.getInt8(I++);case 209:return r=De.getInt16(I),I+=2,r;case 210:return r=De.getInt32(I),I+=4,r;case 211:return kt.int64AsNumber?(r=De.getInt32(I)*4294967296,r+=De.getUint32(I+4)):r=De.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return Em(ne[I++]&63);{let e=Lt[r];if(e)return e.read?(I++,e.read(Qe())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,Em(ne[I++]&63,ne[I++])):en(2);case 214:return en(4);case 215:return en(8);case 216:return en(16);case 217:return r=ne[I++],Dr>=I?To.slice(I-lr,(I+=r)-lr):q1(r);case 218:return r=De.getUint16(I),I+=2,Dr>=I?To.slice(I-lr,(I+=r)-lr):$1(r);case 219:return r=De.getUint32(I),I+=4,Dr>=I?To.slice(I-lr,(I+=r)-lr):Y1(r);case 220:return r=De.getUint16(I),I+=2,Nm(r);case 221:return r=De.getUint32(I),I+=4,Nm(r);case 222:return r=De.getUint16(I),I+=2,Im(r);case 223:return r=De.getUint32(I),I+=4,Im(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 W1=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function sd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>W1.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Qe);return n.highByte===0&&(n.read=Cm(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Qe()}return t}return e.count=0,n.highByte===0?Cm(r,e):e}var Cm=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Ie[t]||Dm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=sd(o,n)),o.read()};function Dm(){let n=Vm(()=>(ne=null,kt.getStructures()));return Ie=kt._mergeStructures(n,Ie)}var nd=fl,q1=fl,$1=fl,Y1=fl;function fl(n){let r;if(n<16&&(r=ad(n)))return r;if(n>64&&td)return td.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,a=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=ht.apply(String,t),t.length=0)}return t.length>0&&(r+=ht.apply(String,t)),r}function Nm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Qe();return r}function Im(n){if(kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Rm()]=Qe();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Qe(),Qe());return r}}var ht=String.fromCharCode;function Bm(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return ht.apply(String,e)}function ad(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return ht(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return ht(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return ht(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return ht(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return ht(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return ht(r,e,t,o,i,s);let a=ne[I++];if((a&128)>0){I-=7;return}return ht(r,e,t,o,i,s,a)}else{let i=ne[I++],s=ne[I++],a=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return ht(r,e,t,o,i,s,a,c);{let u=ne[I++];if((u&128)>0){I-=9;return}return ht(r,e,t,o,i,s,a,c,u)}}else if(n<12){let u=ne[I++],l=ne[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return ht(r,e,t,o,i,s,a,c,u,l);let d=ne[I++];if((d&128)>0){I-=11;return}return ht(r,e,t,o,i,s,a,c,u,l,d)}else{let u=ne[I++],l=ne[I++],d=ne[I++],p=ne[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return ht(r,e,t,o,i,s,a,c,u,l,d,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return ht(r,e,t,o,i,s,a,c,u,l,d,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return ht(r,e,t,o,i,s,a,c,u,l,d,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return ht(r,e,t,o,i,s,a,c,u,l,d,p,f,m,h)}}}}}function ed(n){return kt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function en(n){let r=ne[I++];if(Lt[r])return Lt[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Mm=new Array(4096);function Rm(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,Dr>=I)return To.slice(I-lr,(I+=n)-lr);if(!(Dr==0&&Oo<180))return nd(n)}else return I--,Qe();let r=(n<<5^(n>1?De.getUint16(I):n>0?ne[I]:0))&4095,e=Mm[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=De.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Mm[r]=e,e.bytes=n;t<o;)i=De.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let a=n<16?ad(n):Bm(n);return a!=null?e.string=a:e.string=nd(n)}var Em=(n,r)=>{var e=Qe();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Ie[n];return o&&o.isShared&&((Ie.restoreStructures||(Ie.restoreStructures=[]))[n]=o),Ie[n]=e,e.read=sd(e,t),e.read()},Gm=typeof self=="object"?self:global;Lt[0]=()=>{};Lt[0].noBuffer=!0;Lt[101]=()=>{let n=Qe();return(Gm[n[0]]||Error)(n[1])};Lt[105]=n=>{let r=De.getUint32(I-4);ao||(ao=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};ao.set(r,o);let i=Qe();return o.used?Object.assign(t,i):(o.target=i,i)};Lt[112]=n=>{let r=De.getUint32(I-4),e=ao.get(r);return e.used=!0,e.target};Lt[115]=()=>new Set(Qe());var ld=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Lt[116]=n=>{let r=n[0],e=ld[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Gm[e](Uint8Array.prototype.slice.call(n,1).buffer)};Lt[120]=()=>{let n=Qe();return new RegExp(n[0],n[1])};Lt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,tr=[Qe(),Qe()],tr.position0=0,tr.position1=0;let t=I;I=e;try{return Qe()}finally{I=t}};Lt[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 Vm(n){let r=Oo,e=I,t=od,o=lr,i=Dr,s=To,a=rd,c=ao,u=tr,l=new Uint8Array(ne.slice(0,Oo)),d=Ie,p=Ie.slice(0,Ie.length),f=kt,m=ri,h=n();return Oo=r,I=e,od=t,lr=o,Dr=i,To=s,rd=a,ao=c,tr=u,ne=l,ri=m,Ie=d,Ie.splice(0,Ie.length,...p),kt=f,De=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function pl(){ne=null,ao=null,Ie=null}function zm(n){n.unpack?Lt[n.type]=n.unpack:Lt[n.type]=n}var ml=new Array(147);for(let n=0;n<256;n++)ml[n]=+("1e"+Math.floor(45.15-n*.30103));var hl=new Br({useRecords:!1}),X1=hl.unpack,K1=hl.unpackMultiple,Z1=hl.unpack,yl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Q1=new Float32Array(1),PL=new Uint8Array(Q1.buffer,0,4);var gl;try{gl=new TextEncoder}catch{}var xl,dd,vl=typeof Buffer<"u",cd=vl?Buffer.allocUnsafeSlow:Uint8Array,Um=vl?Buffer:Uint8Array,jm=vl?4294967296:2144337920,z,ot,E=0,Rr,Gr=null,J1=/[\u0080-\uFFFF]/,Ms=Symbol("record-id"),tn=class extends Br{constructor(r){super(r),this.offset=0;let e,t,o,i,s,a,c=0,u=Um.prototype.utf8Write?function(v,N,T){return z.utf8Write(v,N,T)}:gl&&gl.encodeInto?function(v,N){return gl.encodeInto(v,z.subarray(N)).written}:!1,l=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],b=0,w=0;this.pack=this.encode=function(v,N){if(z||(z=new cd(8192),ot=new DataView(z.buffer,0,8192),E=0),Rr=z.length-10,Rr-E<2048?(z=new cd(z.length),ot=new DataView(z.buffer,0,z.length),Rr=z.length-10,E=0):E=E+7&2147483640,t=E,a=l.structuredClone?new Map:null,l.bundleStrings?(Gr=["",""],z[E++]=214,z[E++]=98,Gr.position=E-t,E+=4):Gr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>f)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 C=0;C<T;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let U=0,$=O.length;U<$;U++){let ee=O[U];A=R[ee],A||(A=R[ee]=Object.create(null)),R=A}R[Ms]=C+64}c=T}d||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(S(v),Gr){ot.setUint32(Gr.position+t,E-Gr.position-t);let T=Gr;Gr=null,S(T[0]),S(T[1])}if(l.offset=E,a&&a.idsToInsert){E+=a.idsToInsert.length*6,E>Rr&&_(E),l.offset=E;let T=t_(z.subarray(t,E),a.idsToInsert);return a=null,T}return N&Wm?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let T=0,C=x.length;T<C;T++)x[T][Ms]=0;x=[]}if(i&&l.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let C=z.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=T,C)}}N&l_&&(E=t)}};let S=v=>{E>Rr&&(z=_(E));var N=typeof v,T;if(N==="string"){let C=v.length;if(Gr&&C>=8&&C<4096){let R=J1.test(v);Gr[R?0:1]+=v,z[E++]=193,S(R?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>Rr&&(z=_(E+A)),C<64||!u){let R,U,$,ee=E+O;for(R=0;R<C;R++)U=v.charCodeAt(R),U<128?z[ee++]=U:U<2048?(z[ee++]=U>>6|192,z[ee++]=U&63|128):(U&64512)===55296&&(($=v.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+($&1023),R++,z[ee++]=U>>18|240,z[ee++]=U>>12&63|128,z[ee++]=U>>6&63|128,z[ee++]=U&63|128):(z[ee++]=U>>12|224,z[ee++]=U>>6&63|128,z[ee++]=U&63|128);T=ee-E-O}else T=u(v,E+O,A);T<32?z[E++]=160|T:T<256?(O<2&&z.copyWithin(E+2,E+1,E+1+T),z[E++]=217,z[E++]=T):T<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+T),z[E++]=218,z[E++]=T>>8,z[E++]=T&255):(O<5&&z.copyWithin(E+5,E+3,E+3+T),z[E++]=219,ot.setUint32(E,T),E+=4),E+=T}else if(N==="number")if(v>>>0===v)v<64?z[E++]=v:v<256?(z[E++]=204,z[E++]=v):v<65536?(z[E++]=205,z[E++]=v>>8,z[E++]=v&255):(z[E++]=206,ot.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?z[E++]=256+v:v>=-128?(z[E++]=208,z[E++]=v+256):v>=-32768?(z[E++]=209,ot.setInt16(E,v),E+=2):(z[E++]=210,ot.setInt32(E,v),E+=4);else{let C;if((C=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){z[E++]=202,ot.setFloat32(E,v);let O;if(C<4||(O=v*ml[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,ot.setFloat64(E,v),E+=8}else if(N==="object")if(!v)z[E++]=192;else{if(a){let O=a.get(v);if(O){if(!O.id){let A=a.idsToInsert||(a.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,ot.setUint32(E,O.id),E+=4;return}else a.set(v,{offset:E-t})}let C=v.constructor;if(C===Object)P(v,!0);else if(C===Array){T=v.length,T<16?z[E++]=144|T:T<65536?(z[E++]=220,z[E++]=T>>8,z[E++]=T&255):(z[E++]=221,ot.setUint32(E,T),E+=4);for(let O=0;O<T;O++)S(v[O])}else if(C===Map){T=v.size,T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,ot.setUint32(E,T),E+=4);for(let[O,A]of v)S(O),S(A)}else{for(let O=0,A=xl.length;O<A;O++){let R=dd[O];if(v instanceof R){let U=xl[O];if(U.write){U.type&&(z[E++]=212,z[E++]=U.type,z[E++]=0),S(U.write.call(this,v));return}let $=z,ee=ot,X=E;z=null;let q;try{q=U.pack.call(this,v,H=>(z=$,$=null,E+=H,E>Rr&&_(E),{target:z,targetView:ot,position:E-H}),S)}finally{$&&(z=$,ot=ee,E=X,Rr=z.length-10)}q&&(q.length+E>Rr&&_(q.length+E),E=e_(q,z,E,U.type));return}}P(v,!v.hasOwnProperty)}}else if(N==="boolean")z[E++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))z[E++]=211,ot.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)z[E++]=207,ot.setBigUint64(E,v);else if(this.largeBigIntToFloat)z[E++]=203,ot.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},P=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),T=N.length;T<16?z[E++]=128|T:T<65536?(z[E++]=222,z[E++]=T>>8,z[E++]=T&255):(z[E++]=223,ot.setUint32(E,T),E+=4);let C;for(let O=0;O<T;O++)S(C=N[O]),S(v[C])}:(v,N)=>{z[E++]=222;let T=E-t;E+=2;let C=0;for(let O in v)(N||v.hasOwnProperty(O))&&(S(O),S(v[O]),C++);z[T+++t]=C>>8,z[T+t]=C&255}:v=>{let N=Object.keys(v),T,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=N.length;R<U;R++){let $=N[R];T=C[$],T||(T=C[$]=Object.create(null),O++),C=T}let A=C[Ms];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=N.highByte=A>=96&&h?A-96>>5:-1;C[Ms]=A,s[A-64]=N,A<y?(N.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(z[E++]=(A&31)+96,z[E++]=R):z[E++]=A):(R>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=R):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),x.length>=m&&(x.shift()[Ms]=0),x.push(C),S(N))}for(let R=0,U=N.length;R<U;R++)S(v[N[R]])},_=v=>{let N;if(v>16777216){if(v-t>jm)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(jm,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,z.length-1)>>12)+1<<12;let T=new cd(N);return ot=new DataView(T.buffer,0,N),z.copy?z.copy(T,0,t,v):T.set(z.slice(t,v)),E-=t,t=0,Rr=T.length-10,z=T}}useBuffer(r){z=r,ot=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};dd=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Is];xl=[{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:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+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?Fm(n,16,r):km(vl?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Um&&this.structuredClone?Fm(n,ld.indexOf(e.name),r):km(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Fm(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function km(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 e_(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 t_(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let a=i+t;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function Ao(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)");dd.unshift(n.Class),xl.unshift(n)}zm(n)}var Hm=new tn({useRecords:!1}),r_=Hm.pack,o_=Hm.pack;var{NEVER:n_,ALWAYS:i_,DECIMAL_ROUND:s_,DECIMAL_FIT:a_}=yl,Wm=512,l_=1024;var qm=new tn({structuredClone:!0});Ao({Class:ze.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,ze.prototype),n}});Ao({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Ao({Class:qe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,qe.prototype),n}});Ao({Class:Cs.prototype.constructor,type:4,write(n){return n.id},read(n){return new Cs(n)}});Ao({Class:Ns.prototype.constructor,type:5,write(n){return n.data},read(n){return new Ns(n)}});Ao({Class:$e.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,$e.prototype),n}});function c_(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 ud(n){if(Kn(n))return n;if(Array.isArray(n))return n.map(ud);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=ud(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var bl;(t=>{function n(o){return qm.pack(o)}t.serialize=n;function r(o){return qm.unpack(o)}t.deserialize=r;function e(o){return c_(n(ud(o))).toString()}t.checksum=e})(bl||(bl={}));var Io="personal camera",Mo="a218fcc3-276b-49b9-b485-49037fd14f5f",Qm=2960946,ct=5526619;var $m;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})($m||($m={}));var Co;(a=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}a.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}a.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}a.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}a.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}a.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}a.dist=i;function s(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}a.lerp=s})(Co||(Co={}));var Ym;(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})(Ym||(Ym={}));var No;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let a=s.slice(0);for(var c=0,u=s.length;c<u;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=t})(No||(No={}));var yt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.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}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function s(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=s;function a(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=a;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(yt||(yt={}));var Dt;(a=>{a.white={...yt.white,a:1},a.transparent={...yt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function t(c,u){return{...yt.fromHex(c),a:u}}a.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}a.toRgb255a1=o;function i(c,u){return yt.equals(c,u)&&c.a===u.a}a.equals=i;function s(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}a.lerp=s})(Dt||(Dt={}));var Sl;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Sl||(Sl={}));var Xm;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Xm||(Xm={}));var Km;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(Km||(Km={}));var Zm;(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]))(Zm||(Zm={}));var xr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(xr||(xr={}));var Eo;(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:i.orthographic.zoom}o.getZoom=t})(Eo||(Eo={}));var Vr;(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(d_.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,a=o.radial;u_.forEach(c=>{Object.assign(i.radial,{[c]:a[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,a=o.linear;p_.forEach(c=>{Object.assign(i.linear,{[c]:a[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,a=o.grid;f_.forEach(c=>{Object.assign(i.grid,{[c]:a[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,a=o.toObject;m_.forEach(c=>{Object.assign(i.toObject,{[c]:a[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,a=o.randomnessObject;h_.forEach(c=>{Object.assign(i.randomnessObject,{[c]:a[c]??s[c]})})}return i}e.merge=r})(Vr||(Vr={}));var wl;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let a of r){let c=o[a];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,a],props:c})}return s}t.toOps=e})(wl||(wl={}));var d_=["count"],u_=["radius","start","end","position","scale","rotation"],p_=["position","scale","rotation"],f_=["count","size"],m_=["count","position","scale","rotation"],h_=["strength","scale","rotation","position","movement","seed","freqScale"];var _l;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(_l||(_l={}));var Pl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Dt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Dt.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:Dt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Pl||(Pl={}));var Lo;(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]})(Lo||(Lo={}));var pd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(pd||(pd={}));var fd;(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})(fd||(fd={}));var Tl;(r=>r.defaultData={...fd.defaultData,...pd.defaultData})(Tl||(Tl={}));var oi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(oi||(oi={}));var Jm;(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==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Jm||(Jm={}));function th(n){return n.type!=="displace"}var eh;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(eh||(eh={}));var rh=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],oh=["wrapping","image","video","name"],Bt;(o=>{function n(i,s){let{texture:a,...c}=s;if(Object.assign(i,c),a){let u=i.texture;u&&Object.assign(u,a)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,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]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:oi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:yt.fromHex(ct)};case"depth":return{...s,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{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...yt.fromHex(6710886),a:1},colorB:{...yt.fromHex(6710886),a:1},colorC:{...yt.fromHex(16777215),a:1},colorD:{...yt.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{...s,type:"fresnel",color:Dt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,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:Dt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Dt.fromHexAndA(0,1),contourColor:Dt.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{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,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{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...yt.fromHex(0),a:1},colorB:{...yt.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}}}})(Bt||(Bt={}));var Ut;(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 l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:Bt.defaultData("light",u),id:l}),p.push({fi:1,data:Bt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,l="phong",d="layer1",p="layer2"){let f=Bt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Bt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function a(u,l="phong",d="layer1",p="layer2"){let f=Bt.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:Bt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=a})(Ut||(Ut={}));var ni;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(ni||(ni={}));var ii;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(ii||(ii={}));var md={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var Ol;(r=>{function n(e,t){let o={...e};return y_.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Ol||(Ol={}));var Al={shape:md,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},y_=["depth","offset","angle","twist","startScale","endScale"];var Es;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}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})(Es||(Es={}));var Cl;(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,Ol.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Cl||(Cl={}));var Do;(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==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:ii.defaultData(),extrusion:Al};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ni.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:"",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:Math.PI};throw new Error("not implemented")}r.defaultData=n})(Do||(Do={}));var Nl;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:yt.white,near:.1,far:2e3})(Nl||(Nl={}));var Il;(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,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Il||(Il={}));var hd;(r=>r.defaultData={softShadowQuality:"low"})(hd||(hd={}));var yd;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(yd||(yd={}));var gd;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(gd||(gd={}));var Ls;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ls||(Ls={}));var xd;(r=>r.defaultData={playCamera:Io,gameControlObject:null})(xd||(xd={}));var Ml;(r=>r.defaultData={backgroundColor:Dt.fromHexAndA(Qm,1),postprocessing:Il.defaultData,fog:Nl.defaultData,globalPhysics:Ls.defaultData,ambient:yd.defaultData,ao:gd.defaultData,shadow:hd.defaultData,publish:xd.defaultData})(Ml||(Ml={}));var nh;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(nh||(nh={}));var si;(o=>{o.identity={...Sl.identity,hiddenMatrix:No.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return Wu({position:Co.isEqual(i.position,s.position)?void 0:s.position,rotation:Co.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:Co.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:No.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(si||(si={}));var It;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:Lo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...si.identity,cloner:null})(It||(It={}));var ih;(r=>r.defaultData={type:"Empty",...It.defaultData})(ih||(ih={}));var sh;(r=>r.defaultData={type:"Component",...It.defaultData})(sh||(sh={}));var rn;(r=>r.defaultData={type:"Mesh",...It.defaultData,...Tl.defaultData})(rn||(rn={}));var on;(r=>r.defaultData={...It.defaultData,...si.identity,position:[0,0,Eo.DefaultTargetOffset],...Eo.defaultData})(on||(on={}));var El;(e=>{function n(t){return{...It.defaultData,...Pl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(El||(El={}));var ai;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let a=Object.keys(s);if(a.length===1&&a[0]==="descendants")return}return s}e.resolve=r})(ai||(ai={}));var lo;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,a){return{...It.defaultData,...a,component:s,overrides:new $e,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let a=si.fromObject(s.data);return t(s.id,a)}i.fromComponentData=o})(lo||(lo={}));var co;(r=>r.defaultData={type:"Page",...It.defaultData,physics:{...Lo.defaultData,fusedBody:!1},...Ml.defaultData,camera:on.defaultData})(co||(co={}));var Ll;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:No.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Lo.defaultData,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Eo.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",...It.defaultData,...rn.defaultData,geometry:Do.defaultData("RectangleGeometry"),material:Ut.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...It.defaultData,...rn.defaultData,geometry:Do.defaultData("BooleanGeometry"),material:Ut.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...It.defaultData,...rn.defaultData,geometry:Do.defaultData("TextGeometry"),material:Ut.defaultTwoLayerData("phong","layer1","layer2")}))(Ll||(Ll={}));var nn;(o=>{function n(i,s){let a={name:s};return i.type==="Mesh"?(a.geometry={},"material"in i&&(a.material={layers:new $e}),"materials"in i&&(a.materials=i.materials.map(c=>({layers:new $e})))):xr.is(i.type)&&(a.perspective={},a.orthographic={}),a}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let a={...i};return"material"in a&&"material"in s&&s.material&&(a.material=ti(a.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&Bt.patch(d,l)}}).data),a.materials&&s.materials&&(a.materials=ti(a.materials,c=>{for(let u=0;u<a.materials.length;u++){let l=s.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&Bt.patch(f,p)}}}).data),a}function e(i,s){let a,c=[],u={orthographic:0,perspective:0,geometry:0};function l(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...wl.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else a===void 0&&(a={path:[],props:{},type:0},c.push(a)),a.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let a={...i};if(Object.assign(a,si.merge(a,s)),Object.assign(a,{pathSnapping:Object.assign({},a.pathSnapping,{slide:s.pathSnapping?.slide??a.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??a.pathSnapping?.offset??0})}),xr.is(i.type)){a.orthographic={...a.orthographic},a.perspective={...a.perspective};let c=s;c.orthographic?.zoom!==void 0&&(a.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(a.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(a.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(a.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(a,{geometry:Cl.merge(a.geometry,s.geometry)}),(s.material||s.materials)&&(a=r(a,s)),a.cloner&&"cloner"in s&&Object.assign(a,{cloner:Vr.merge(a.cloner,s.cloner)});else if(i.type==="Empty")a.cloner&&"cloner"in s&&Object.assign(a,{cloner:Vr.merge(a.cloner,s.cloner)});else if(_l.is(i.type)){let c=s;c.intensity!==void 0&&(a.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?a.color=c.color:a.color=yt.clone(c.color))}return a}o.patch=t})(nn||(nn={}));var li;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(li||(li={}));var zr;(r=>r.defaultData={orbitControls:li.defaultData,playPage:Mo,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})(zr||(zr={}));var vd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(vd||(vd={}));var bd;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(bd||(bd={}));var Bo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...vd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:bd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Bo||(Bo={}));var ah;(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.traverseFrom(o,(s,a)=>{if(a.type==="Instance"){let c=t.data(a.component);c&&i(s,a,c.events)}else i(s,a,a.events)})}e.traverseModuleInstances=r})(ah||(ah={}));var Dl;(a=>{a.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=Ll.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:El.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new qe;return d.push({fi:1,id:Mo,data:{...co.defaultData,name:"Scene 1"},children:u}),d}a.defaultData={objects:r(),publish:zr.defaultData,styles:Bo.defaultData()},a.emptyDataWithoutPage=function(){return{objects:new qe,publish:zr.defaultData,styles:Bo.defaultData()}},a.emptyDataWithPage=function(c){return{objects:r(c),publish:zr.defaultData,styles:Bo.defaultData()}};function i(c){return{...a.defaultData,objects:gr(c,qe.prototype)}}a.withObjs=i;function s(c,u){return i([{id:c,data:u,children:[],fi:0}])}a.withObj=s})(Dl||(Dl={}));var ci;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ci||(ci={}));var Bl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},gr(o,ze.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ci.emptyImage,name:"AI generated image"}),gr(i,ze.prototype)}t.defaultImages=r;function e(){return{materials:new ze,images:new ze,videos:new ze,colors:new ze,audios:new ze,fonts:new ze}}t.emptyData=e})(Bl||(Bl={}));var Bs=require("three");var Rl;(r=>r.list=["idle","move","jump","run"])(Rl||(Rl={}));var Gl;(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 he,move:new he,jump:new he,run:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Dt.fromHexAndA(3728051,1)}}))(Gl||(Gl={}));function lh(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...so(at(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,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...at(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function uo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function po(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&r(o.material)})})}function g_(n){Object.assign(n.scene.publish,{orbitControls:{...li.defaultData,...at(n.scene.publish.orbitControls)}})}function x_(n){Object.assign(n.scene.publish.settings,{video:{...zr.defaultData.settings.video,...at(n.scene.publish.settings.video)}})}function v_(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((rh.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,a]of Object.entries(i))(oh.includes(s)||typeof a=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function b_(n){n.scene.publish.withBackground=!0}function S_(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function w_(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 __(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 P_(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=at(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=at(e).booleanExclude!==!0)}})}function T_(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 O_(n){function r(t){Object.setPrototypeOf(t,$e.prototype),t.texture&&Object.setPrototypeOf(t.texture,$e.prototype)}function e(t){Object.setPrototypeOf(t,$e.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let a=at(s.material).layers;e(a),s.material.layers=a}if(s.materials)for(let a=0;a<s.materials.length;a++){let c=s.materials[a],u=at(c).layers;e(u),c.layers=u}})})}function ch(n){n.layers===void 0&&Object.assign(n,Ut.defaultTwoLayerData("lambert"))}function Sd(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={...at(r),colors:e,steps:t};Object.assign(r,o)}})}function A_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function dh(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Sd(t)}):"material"in e&&typeof e.material!="string"&&Sd(e.material)}),Object.values(n.shared.materials).forEach(r=>Sd(r))}function C_(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 N_(n){n.shared.audios=gr({},ze.prototype)}function I_(n){n.shared.videos=gr({},ze.prototype)}function M_(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 E_(n){Object.entries(at(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(at(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function L_(n){n.scene.publish.settings.web.preload=!1}function uh(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 ph(n){n.layers&&n.layers.forEach(r=>{th(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 D_(n){n.shared.fonts=gr({},ze.prototype)}function B_(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 R_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=Ut.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let a=B_(o.font);n.shared.fonts[a]===void 0&&(n.shared.fonts[a]={name:a});let c={name:o.name,...It.defaultData,...rn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Do.defaultData("TextGeometry"),width:o.width,height:o.height,font:a,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:at(o.states),events:at(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=at(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function G_(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 he,move:new he,jump:new he}});else{let i=new he;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:Bs.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,a,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(l,so(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(l,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...l},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Bs.MathUtils.generateUUID(),data:u},{fi:1,id:Bs.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:a,data:f})}),delete o.targets)}})})}function V_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,a=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;a.push(u),c.interaction==="play"?d={...so(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(d={...so(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:l,id:u,data:d})}}),a.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:Bs.MathUtils.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function fh(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=Bt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function mh(n){uo(n,fh),po(n,fh)}function z_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function j_(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 F_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Ut.defaultTwoLayerData("phong"))})}function k_(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 U_(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 H_(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 W_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function q_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function $_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function Y_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Gl.defaultDataThirdPerson.navmesh)})})}function X_(n){n.scene.styles||(n.scene.styles=Bo.defaultData())}function hh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function K_(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}),po(n,hh),uo(n,hh)}function Z_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new he})})})}function Q_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function yh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function gh(n,r){if(r<1&&(po(n,lh),uo(n,lh),n.schema=1),r<2&&(g_(n),n.schema=2),r<3&&(v_(n),n.schema=3),r<4&&(b_(n),n.schema=4),r<5&&(S_(n),n.schema=5),r<6&&(w_(n),n.schema=6),r<7&&(__(n),n.schema=7),r<8&&(n.schema=8),r<9&&(dh(n),n.schema=9),r<10&&(A_(n),n.schema=10),r<11&&(C_(n),n.schema=11),r<12&&(dh(n),n.schema=12),r<13&&(N_(n),n.schema=13),r<14&&(M_(n),n.schema=14),r<15&&(E_(n),n.schema=15),r<16&&(L_(n),n.schema=16),r<17&&(po(n,uh),uo(n,uh),n.schema=17),r<18&&(po(n,ch),uo(n,ch),n.schema=18),r<19&&(x_(n),n.schema=19),r<20&&(D_(n),R_(n),n.schema=20),r<21&&(G_(n),V_(n),n.schema=21),r<22&&(mh(n),n.schema=22),r<23&&(z_(n),n.schema=23),r<24&&(j_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(I_(n),r<25&&(n.schema=25)),r<26&&(P_(n),n.schema=26),r<27&&(T_(n),n.schema=27),r<28&&(mh(n),n.schema=28),r<29&&(O_(n),n.schema=29),r<30&&(F_(n),n.schema=30),r<31&&(k_(n),n.schema=31),r<33&&(U_(n),n.schema=33),r<34&&(H_(n),n.schema=34),r<35&&(W_(n),n.schema=35),r<36&&(q_(n),n.schema=36),r<37&&($_(n),n.schema=37),r<38&&(po(n,ph),uo(n,ph),n.schema=38),r<39&&(Y_(n),n.schema=39),r<40&&(X_(n),n.schema=40),r<41&&(K_(n),n.schema=41),r<42&&(Z_(n),n.schema=42),r<43&&(Q_(n),n.schema=43),r<99){po(n,yh),uo(n,yh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Io);let e=at(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=Mo,t.insertBefore(null,null,[{id:Mo,data:{...co.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:so(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:so(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ls.defaultData,...so(n.scene.environment,"usePhysics","gravity")},camera:at(n.scene.ownerCamera)??co.defaultData.camera,name:"Scene"},children:[]}]);for(let s of e)s.id!==Dl.TRASH_CAN_ID&&t.move(Mo,s.fi,s.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((s,a)=>{a.type==="DirectionalLight"?(a.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):a.type==="SpotLight"&&(a.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(a.physics===void 0||a.physics===null)&&a.type!=="Instance"&&(a.physics={},Object.assign(a.physics,Lo.defaultData)),a.physics!==void 0&&(a.physics.enabled=a.collision??"visibility",delete a.collision)}),n.schema=99}}function xh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}var vh=101;function bh(n){let r=n.schema??0;r!==vh&&(console.warn("updating from ",r,"to ",vh),gh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=zr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(po(n,xh),uo(n,xh),n.schema=101))}var Le=require("three"),as=On(wh());var J_=.5*(Math.sqrt(3)-1),Rs=(3-Math.sqrt(3))/6,eP=1/3,jr=1/6,BR=(Math.sqrt(5)-1)/4,RR=(5-Math.sqrt(5))/20,Gs=n=>Math.floor(n)|0,_h=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]),_d=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 Vl(n=Math.random){let r=Th(n),e=new Float64Array(r).map(o=>_h[o%12*2]),t=new Float64Array(r).map(o=>_h[o%12*2+1]);return function(i,s){let a=0,c=0,u=0,l=(i+s)*J_,d=Gs(i+l),p=Gs(s+l),f=(d+p)*Rs,m=d-f,h=p-f,y=i-m,g=s-h,x,b;y>g?(x=1,b=0):(x=0,b=1);let w=y-x+Rs,S=g-b+Rs,P=y-1+2*Rs,_=g-1+2*Rs,v=d&255,N=p&255,T=.5-y*y-g*g;if(T>=0){let A=v+r[N],R=e[A],U=t[A];T*=T,a=T*T*(R*y+U*g)}let C=.5-w*w-S*S;if(C>=0){let A=v+x+r[N+b],R=e[A],U=t[A];C*=C,c=C*C*(R*w+U*S)}let O=.5-P*P-_*_;if(O>=0){let A=v+1+r[N+1],R=e[A],U=t[A];O*=O,u=O*O*(R*P+U*_)}return 70*(a+c+u)}}function Ph(n=Math.random){let r=Th(n),e=new Float64Array(r).map(i=>_d[i%12*3]),t=new Float64Array(r).map(i=>_d[i%12*3+1]),o=new Float64Array(r).map(i=>_d[i%12*3+2]);return function(s,a,c){let u,l,d,p,f=(s+a+c)*eP,m=Gs(s+f),h=Gs(a+f),y=Gs(c+f),g=(m+h+y)*jr,x=m-g,b=h-g,w=y-g,S=s-x,P=a-b,_=c-w,v,N,T,C,O,A;S>=P?P>=_?(v=1,N=0,T=0,C=1,O=1,A=0):S>=_?(v=1,N=0,T=0,C=1,O=0,A=1):(v=0,N=0,T=1,C=1,O=0,A=1):P<_?(v=0,N=0,T=1,C=0,O=1,A=1):S<_?(v=0,N=1,T=0,C=0,O=1,A=1):(v=0,N=1,T=0,C=1,O=1,A=0);let R=S-v+jr,U=P-N+jr,$=_-T+jr,ee=S-C+2*jr,X=P-O+2*jr,q=_-A+2*jr,H=S-1+3*jr,V=P-1+3*jr,G=_-1+3*jr,D=m&255,L=h&255,B=y&255,K=.6-S*S-P*P-_*_;if(K<0)u=0;else{let M=D+r[L+r[B]];K*=K,u=K*K*(e[M]*S+t[M]*P+o[M]*_)}let W=.6-R*R-U*U-$*$;if(W<0)l=0;else{let M=D+v+r[L+N+r[B+T]];W*=W,l=W*W*(e[M]*R+t[M]*U+o[M]*$)}let j=.6-ee*ee-X*X-q*q;if(j<0)d=0;else{let M=D+C+r[L+O+r[B+A]];j*=j,d=j*j*(e[M]*ee+t[M]*X+o[M]*q)}let F=.6-H*H-V*V-G*G;if(F<0)p=0;else{let M=D+1+r[L+1+r[B+1]];F*=F,p=F*F*(e[M]*H+t[M]*V+o[M]*G)}return 32*(u+l+d+p)}}function Th(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}var Oh=require("three"),vr=new Oh.Triangle,zl=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;vr.a.fromBufferAttribute(r,o),vr.b.fromBufferAttribute(r,o+1),vr.c.fromBufferAttribute(r,o+2),i*=vr.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 s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),vr.a.fromBufferAttribute(this.positionAttribute,r*3),vr.b.fromBufferAttribute(this.positionAttribute,r*3+1),vr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(vr.a,o).addScaledVector(vr.b,i).addScaledVector(vr.c,1-(o+i)),vr.getNormal(t),this}};var Ih=require("three");var rr=require("three"),Nh=On(Ch()),tP=new rr.Matrix4,rP=new rr.Matrix4,oP=new rr.Matrix4,di;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(di||(di={}));var ui=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new rr.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new rr.Matrix4;this.matrixWorldRigid=new rr.Matrix4;this.shearScale=new rr.Matrix4;this.shearScaleInv=new rr.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof rr.Object3D&&(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 s of this.children)s.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)di.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)di.is(s)&&s.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:s,q:a}=(0,Nh.SVD)(o),c=tP.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),u=rP.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),l=oP.copy(u).transpose();this.shearScale.makeScale(a[0],a[1],a[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),a.every(d=>Math.abs(a[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new rr.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof rr.Matrix4?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,s,a,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Pd=class extends ui(Ih.Object3D){},nP=n=>n.type==="Mesh",fo=class extends Pd{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 fo(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 nP(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}};var Li=require("three");var nc=require("three");var mo=require("three");var Je=require("three"),sn=new Je.Vector3,an=new Je.Vector3,pi=new Je.Matrix4,Eh=[new Je.Vector3(-1,1,1),new Je.Vector3(-1,-1,1),new Je.Vector3(1,-1,1),new Je.Vector3(1,1,1),new Je.Vector3(-1,1,-1),new Je.Vector3(-1,-1,-1),new Je.Vector3(1,-1,-1),new Je.Vector3(1,1,-1)],iP=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],sP=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Mh=(n,r,e)=>{n.updateEntityBoxSize(sn,an),pi.copy(r).multiply(n.matrixWorld),an.x===0&&an.y===0&&an.z===0?e.push(new Je.Vector3(sn.x,sn.y,sn.z).applyMatrix4(pi)):Eh.forEach(t=>{e.push(t.clone().multiply(an).add(sn).applyMatrix4(pi))})},Vs=class extends Je.Box3{constructor(){super(...arguments);this.matrix=new Je.Matrix4;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 Je.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Je.Vector3);return}Mh(s,t,i)}}):Mh(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(pi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(an).multiplyScalar(.5),this.getCenter(sn),pi.copy(this.matrix).setPosition(sn),this.vertices=Eh.map(e=>e.clone().multiply(an).applyMatrix4(pi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=iP.map(([e,t])=>new Je.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Je.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=sP.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var br={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var gt=require("three"),Od=class extends gt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let a=0,c=this.curves;a<c.length;a++){let u=c[a],l=a===0?o[a]:o[a]-o[a-1],d=Math.ceil(r*l/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Ad=.001;function Cd(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Ad}function Td(n,r){let e=new gt.Vector3(...n.position),t=new gt.Vector3(...n.controlNext.position),o=new gt.Vector3(...r.controlPrevious.position),i=new gt.Vector3(...r.position);return Cd(e,t,i)&&Cd(e,o,i)}function Fl(n){let r=n.points.map(l=>new gt.Vector3(...l.data.position)),e=[n.points[0]],t=new gt.Vector3(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Cd(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,a=[];for(let l=0;l<s;l++){let d=e[l].data,p=new gt.Vector3(...d.position),f=new gt.Vector3(...d.controlPrevious.position),m=new gt.Vector3(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===s-1)){a[l]={...h,removedLength:0};continue}let y=o&&l==0?s-1:l-1,g=o&&l==s-1?0:l+1,x=e[y].data,b=e[g].data,w=new gt.Vector3(...x.position),S=new gt.Vector3(...b.position),P=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:P,nextDir:_});let v=Td(x,d),N=Td(d,b);if(!v||!N)a[l]={...h,removedLength:0};else{let T=P.clone().add(_).normalize(),C=T.clone().cross(P).length()/P.dot(T);a[l]={...h,tan:C,removedLength:d.roundness/C}}}for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let d=l,p=o&&l===s-1?0:l+1,f=a[d],m=a[p],h=null;if(!Td(e[d].data,e[p].data))f.position.distanceTo(m.position)>Ad&&(h=new gt.CubicBezierCurve3(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Ad&&(h=new gt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<s;l++){let d=a[l];if(d.removedLength===0){c[2*l]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),P=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=P.clone().lerp(w,2),v=f.clone().lerp(P,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new gt.CubicBezierCurve3(f,v,N,m)}let u=new Od;return c.forEach(l=>{l&&u.add(l)}),u}var Te;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Te||(Te={}));var fi=n=>Te.is(n),aP={type:"completeState",isfromEntity:!0},mi=n=>class extends ui(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Vs;this._recursiveBBox=new Vs;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(Te.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Te.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(Te.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 s of this.data.states)nn.toOps(this.data,s.data).forEach(c=>{let u=sl.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=nn.patch(this.data,s),nn.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),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=>{fi(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(Te.is(o[i]))return o[i];if(Te.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Te.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)fi(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Te.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)fi(s)&&s.isConcreteEntity&&s.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)fi(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)fi(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}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=>fi(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,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Yn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??No.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Te.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Te.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Yn(o,t)}updateByObjUpdateOp(t,o){this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,s){let a=this.data;this.data=o;let c=t,u=Nt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Et.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=Et.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,nn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Nt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(Lr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=Et.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=ai.resolve(o.overrides,l),p.updateByOp(t,_t.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of lo.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of lo.rootOverrideProps)if(Nt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Lr.filterOp(d.overrideData,l);p&&d.updateByOp(p,_t.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Lr.filterOp(d.overrideData,t);if(p){let f;a===d.data&&t===p?f=o:f=_t.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!xr.is(t.props.type)&&br.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){br.changeEntityProptotype(this,o,i);for(let s of this.children)Te.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Nt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Nt(t.path,["cloner"])!==null){let s=_t.drop(t,1);s.path.length===0&&s.type===0&&s.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()}}updatePathSnapping(t){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,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,a=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data;if(u.geometry.path.points.length<=1)return;let l=Fl(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new mo.Matrix4;c.updateMatrixWorld();let m=new mo.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(a==="tangential"){let y=new mo.Matrix4().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new mo.Matrix4().lookAt(p,g,new mo.Vector3(0,1,0)),b=new mo.Euler().setFromRotationMatrix(x);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(aP)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}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(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof br.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 br.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)}};var Bh=require("three");var Ue=require("three"),Dh=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),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:s,thetaStart:a,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new zs(u,l,t,o,i,s,a,c*Math.PI/180,d,d,p,f):m=new Ue.CylinderGeometry(u,l,t,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Ro(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Lh(n){return new Ue.Vector2(n.y,-n.x)}var zs=class extends Ue.BufferGeometry{constructor(r,e,t,o,i,s,a,c,u,l,d,p,f=!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,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,b=t/2,w=new Ue.Vector3,S=new Ue.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=l);let P=new Ue.Vector2(r,b),_=new Ue.Vector2(e,-b),v=null,N=null,T=null,C=null,O=P.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let $=P.clone();$.x-=A;let ee=Math.PI-O.angle(),X=O.angle(),q=Math.tan(X/2),H=Math.tan(ee/2),V=q+H,G=p?V:H,D=p?V:q;if(u=Math.min(u,(r-R)/G,O.length()/V),l=Math.min(l,(e-U)/D,O.length()/V),u>0){let F=u/q;v=P.clone().sub(new Ue.Vector2(F,u)),p&&(T=v.clone(),T.x-=A-V*u),P.sub(O.clone().setLength(F))}if(l>0){let F=l/H;N=_.clone().sub(new Ue.Vector2(F,-l)),_.add(O.clone().setLength(F)),p&&(C=N.clone(),C.x-=A-V*l,$.sub(O.clone().setLength(F)))}O=P.clone().sub(_);let L=O.length()<.5,B=[];for(let F=0;F<=o;F++){let M=[],Q=F/o,re=Q*c+a,oe=new Ue.Vector2(Math.sin(re),Math.cos(re));C&&N?(K(M,Q,oe,ee,l,C,-1,!0),K(M,Q,oe,X,l,N,-1,!1)):N?(W(M,oe,N.x,0,-1),K(M,Q,oe,X,l,N,-1,!1)):s||W(M,oe,e,U,-1);let Z=Lh(O).normalize();if(Ro(Z,oe,w),!L)for(let te=0;te<=i;te++){let J=te/i,se=O.clone().multiplyScalar(J).add(_);Ro(se,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}if(T&&v?(K(M,Q,oe,ee,u,v,1,!1),K(M,Q,oe,X,u,T,1,!0)):v?(K(M,Q,oe,ee,u,v,1,!1),W(M,oe,v.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let te=Lh(O).multiplyScalar(-1).normalize();Ro(te,oe,w);for(let J=0;J<=i;J++){let se=J/i,de=O.clone().multiplyScalar(-se).add($);Ro(de,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(x++)}}p&&!s&&M.push(M[0]),B.push(M)}for(let F=0;F<B.length-1;F++)for(let M=0;M<B[0].length-1;M++){if(s&&p&&M==i)continue;let Q=B[F][M],re=B[F+1][M],oe=B[F+1][M+1],Z=B[F][M+1],te=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,Z),(te!=0||J!=0)&&m.push(re,oe,Z)}c<Math.PI*2&&(j(-1,B[0],a),j(1,B[B.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new Ue.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Ue.Float32BufferAttribute(y,3)),this.setAttribute("uv",new Ue.Float32BufferAttribute(g,2));function K(F,M,Q,re,oe,Z,te,J){for(let se=0;se<d+1;se++){let de=se/d,ae=te<0?de:1-de;J&&(ae-=1),ae*=re;let me=new Ue.Vector2(Math.sin(ae),Math.cos(ae)*te),Ke=me.clone().multiplyScalar(oe).add(Z);Ro(Ke,Q,S),h.push(S.x,S.y,S.z),Ro(me,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),F.push(x++)}}function W(F,M,Q,re,oe){let Z=new Ue.Vector3,te=new Ue.Vector2,J=[Q,re];oe<0&&J.reverse();for(let se of J)te.set(se,b*oe),Ro(te,M,Z),h.push(Z.x,Z.y,Z.z),y.push(0,oe,0),g.push(.5,.5),F.push(x++)}function j(F,M,Q){let re=new Ue.Vector2(Math.sin(Q),Math.cos(Q)),oe=new Ue.Vector2(-Math.cos(Q),Math.sin(Q)),Z=new Ue.Vector3,te=F<0?(de,ae,me)=>m.push(de,ae,me):(de,ae,me)=>m.push(de,me,ae),J=new Ue.Vector2((r+e+R+U)/4,0);Ro(J,re,Z),h.push(Z.x,Z.y,Z.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let se=x++;for(let de of M){let ae=h.slice(de*3,de*3+3);h.push(...ae),y.push(oe.x,0,oe.y);let me=g.slice(de*2,de*2+2);g.push(...me),x++}for(let de=se+1;de<x-1;de++)te(se,de,de+1);te(se,x-1,se+1)}}};var Rh=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{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:s,thetaStart:a,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return u>0||l>0||c<360?p=new zs(0,r/2,t,o,i,s,a,c*Math.PI/180,u,l,d,0,!0):p=new Bh.ConeGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Ht=require("three"),Gh=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,u;return a==0?u=new Ht.BoxGeometry(r,e,t,o,i,s):u=new Id(r,e,t,o,i,s,a,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Nd=Math.PI/2,Id=class extends Ht.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,s=1,a=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,r/2,e/2,t/2);let l=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,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),a>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Ht.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Ht.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Ht.Float32BufferAttribute(f,2));function y(b,w,S,P,_,v,N,T,C,O,A){let R=(v-2*a)/C,U=(N-2*a)/O,$=v/2-a,ee=N/2-a,X=T/2,q=C+1,H=O+1,V=0,G=0,D=new Ht.Vector3;for(let L=0;L<H;L++){let B=L*U-ee;for(let K=0;K<q;K++){let W=K*R-$;D[b]=W*P,D[w]=B*_,D[S]=X,d.push(D.x,D.y,D.z),D[b]=0,D[w]=0,D[S]=T>0?1:-1,p.push(D.x,D.y,D.z),f.push(K/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let B=0;B<C;B++){let K=m+B+q*L,W=m+B+q*(L+1),j=m+(B+1)+q*(L+1),F=m+(B+1)+q*L;l.push(K,W,F),l.push(W,j,F),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,P,_,v,N,T,C,O,A){let R=(N-2*a)/O,U=N/2-a,$=T/2-a,ee=C/2,X=O+1,q=0,H=0,V=new Ht.Vector3,G=new Ht.Vector3;for(let D=0;D<c+1;D++){let L=D/c*Nd,B=Math.sin(L)*a,K=(1-Math.cos(L))*a,W=Math.sin(L),j=Math.cos(L);V[w]=($+B)*_,V[S]=(ee-K)*v,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=j*Math.sign(V[S]);for(let F=0;F<X;F++){let M=F*R-U;V[b]=M*P,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(F/O),f.push(0),q+=1}}for(let D=0;D<c;D++)for(let L=0;L<O;L++){let B=m+L+X*D,K=m+L+X*(D+1),W=m+(L+1)+X*(D+1),j=m+(L+1)+X*D;l.push(B,K,j),l.push(K,W,j),H+=6}u.addGroup(h,H,A),h+=H,m+=q}function x(b,w,S){let P=new Ht.Vector3,_=new Ht.Vector3(r/2,e/2,t/2);_.subScalar(a);let v=[],N=b*w*S>0?(C,O,A)=>l.push(C,O,A):(C,O,A)=>l.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=Nd*(1-C/c),R=Math.cos(A),U=Math.sin(A),$=0;for(let ee=0;ee<=C;ee++){let X=Math.cos($),q=Math.sin($);P.x=R*X,P.y=U,P.z=R*q;let H=_.clone().addScaledVector(P,a);d.push(b*H.x,w*H.y,S*H.z),p.push(b*P.x,w*P.y,S*P.z),f.push(0,0),O.push(m++),$+=Nd/C}v.push(O)}let T=v.length-1;for(let C=0;C<T;C++){let O=v[C],A=v[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let U=1;U<=R;U++)N(O[U-1],O[U],A[U]),N(O[U],A[U+1],A[U])}}}};var et=require("three"),Go=class extends et.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],u=[];l(),d(),this.setAttribute("position",new et.Float32BufferAttribute(a,3)),this.setAttribute("normal",new et.Float32BufferAttribute(u,3)),this.setAttribute("uv",new et.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new et.Vector3,h=m.clone(),y=new et.Triangle,g=i*o,x=o-g,b=s+1,w=new et.Vector3,S=(q,H)=>w.subVectors(q,H).normalize(),P=(q,H)=>Array(q).fill(void 0).map(H),_=P(r.length/3,(q,H)=>new et.Vector3().fromArray(r,H*3).setLength(o)),v=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,D,L,B=1e10,K=-1;for(;(K=e.indexOf(q,K+1))!=-1;){let M=K-K%3;G=e[M+(K+1)%3],D=e[M+(K+2)%3],L=H.distanceToSquared(_[G]),B=Math.min(B,L),V.push([G,D,L])}B+=1e-6;let W=[],j=0,F=V.length;for(let M=0;M<F;M++){[G,D,L]=V[j];let Q=v[G]?.includes(q)==!0;L<=B&&W.push(G+ +Q*N),j=V.findIndex(re=>re[0]==D)}v.push(W)}let T=[];{let q=0,H=0,V,G,D=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let B=0;B<s-L;B++)[q,H]=[V+B+L+2,G+B+L+3],T.push(V,G,...D?[H,V]:[q,G],H,q),[V,G]=[q,H];T.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),$=[],ee=P(_.length,()=>P(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(x);let H=v[q];for(let W=0;W<H.length;W++){let j=H[W],F=H[(W+1)%f];y.setFromPointsAndIndices(_,q,j%N,F%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,ee[q][W])}let V=[],G=[],D=[],L=new et.Vector3;s==0&&[...ee[q]].reduce((W,j)=>W.add(j),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let j=[],F=(W-1+f)%f,M=ee[q][F],Q=ee[q][W];m.copy(M).sub(C),h.copy(Q).sub(C);let re=C.angleTo(m),oe=m.angleTo(h),Z=Math.cos(re)*g;s==0?O.copy(L):O.copy(C).setLength(x+Z),G.push(Z);let te=[O,M,Q];for(let J=0;J<2;J++){let se=te[J],de=te[J+1];R.subVectors(se,C),U.subVectors(de,C),A.crossVectors(R,U).normalize();for(let ae=0;ae<b;ae++){let me=[re,oe][J]*ae/b;m.copy(R).applyAxisAngle(A,me).add(C),V.push(m.clone()),J&&(S(m,C),j.push([ae==0?se:m.clone(),w.clone()]))}J&&(S(de,C),j.push([de,w.clone()]))}D.push(j)}$.push(D);let B=2*b,K=2;for(let W=0;W<f;W++){let j=B*W,F=B*((W+1)%f),M=[V[j]];for(let re=1;re<b;re++){R=V[j+re],U=V[F+re],M.push(R);for(let oe=1,Z=re-K+1;oe<=Z;oe++)m.lerpVectors(R,U,oe/(Z+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(U)}for(let re=0;re<b;re++)M.push(V[re+b+j]);M.push(V[F+b]);let Q=T.map(re=>M[re]);a.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),u.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let X=[];for(let q=0;q<v.length;q++)for(let H=0;H<f;H++){let V=v[q][H];if(V<N){let G=v[V].findIndex(B=>B%N==q),D=$[q][H],L=$[V][G];for(let B=0;B<b;B++){let K=D[B],W=L[b-B],j=D[B+1],F=L[b-(B+1)];[K,W,j,j,W,F].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}X.push(D[0][0],L[b][0],D[b][0],L[0][0])}}for(;X.length;){let q,H,V,G;[q,H]=X.splice(0,2);let D=[q];for(;q!=H;)D.push(H),V=X.indexOf(H),G=V%2,H=X.splice(V-G,2)[1-G];w.subVectors(D[0],D[1]).cross(m.subVectors(D[0],D[2])).normalize();let L=w.dot(D[0])<0;L&&w.negate();for(let B=1;B<=D.length-2;B++)[D[B+ +L],D[B+1-+L],D[0]].forEach(K=>{a.push(K.x,K.y,K.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new et.Vector3;for(let _=0;_<a.length;_+=3){p.x=a[_+0],p.y=a[_+1],p.z=a[_+2];let v=S(p)/2/Math.PI+.5,N=P(p)/Math.PI+.5;c.push(v,1-N)}let f=new et.Vector3,m=new et.Vector3,h=new et.Vector3,y=new et.Vector3,g=new et.Vector2,x=new et.Vector2,b=new et.Vector2,w=(_,v,N,T)=>{T<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=T/2/Math.PI+.5)};for(let _=0,v=0;_<a.length;_+=9,v+=6){f.set(a[_+0],a[_+1],a[_+2]),m.set(a[_+3],a[_+4],a[_+5]),h.set(a[_+6],a[_+7],a[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),b.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=S(y);w(g,v+0,f,N),w(x,v+2,m,N),w(b,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],T=c[_+4],C=Math.max(v,N,T),O=Math.min(v,N,T);C>.9&&O<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),T<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function P(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new Go(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var Vh=require("three"),zh=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:s}=n.parameters,a=o===0&&i!==0?new js(r*.5,i,s):new Vh.DodecahedronGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},js=class extends Go{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-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],a=[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],c="DodecahedronGeometry";super(s,a,c,r,e,t),this.type=c}static fromJSON(r){return new js(r.radius,r.corner,r.cornerSides)}};var Ce=require("three");var ge=require("three"),Fs=1e-12,hi=class{constructor(r){this.position=new ge.Vector2;this.startPosition=new ge.Vector2;this.uuid=ge.MathUtils.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 hi(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},yi=class extends hi{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new yi(this.parent).copy(this)}},Sr=class extends hi{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new yi(this),new yi(this))}static create(e,t){let o=new Sr(e,new ge.Vector2(...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 s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.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 Sr(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 ge.Vector2,t=new ge.Vector2){let[o,i]=this.computeTangents();return o&&i&&(jh(o,e),jh(i,t)),[e,t]}computeTangent(e=new ge.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ge.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function jh(n,r=new ge.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Ed=n=>n,gi=new ge.Vector2,kl=new ge.Vector2,lP=new ge.Vector2,cP=new ge.Vector2,dP=new ge.Vector2,uP=new ge.Vector2,kh=new ge.Vector3,Uh=new ge.Vector3;function Hh(n){let r=new ge.Vector2;r.addVectors(n.v0,gi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ge.Vector2;return e.addVectors(n.v2,kl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new ge.CubicBezierCurve(n.v0,r,e,n.v2)}function ks(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function pP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function fP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Ld(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 Wh(n,r,e){return Fh(n,r)&&Fh(r,e)&&Md(n.position,r.position,e.position)}function Md(n,r,e){return gi.copy(r).sub(n).cross(kl.copy(e).sub(n))===0}function qh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,a=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(a+c,s+u),o.set(a-c,s-u),[t,o]}function $h(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Yh(n,r,e,t,o,i){let s=r.x-n.x,a=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+u)*(a+u)),d;return Ld(r,n,e)>Math.PI&&(l*=-1),ks(u,a)?d=(a+u)*(t/l-.5)*8/3/(s-c):d=(s+c)*(t/l-.5)*8/3/(u-a),o.set(r.x-d*a,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Dd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Fh(n,r){return Md(n.position,n.controls[1].position,r.position)&&Md(n.position,r.controls[0].position,r.position)}function Xh(n,r,e,t,o=.5){let i=gi.subVectors(r,n).multiplyScalar(o).add(n),s=kl.subVectors(e,r).multiplyScalar(o).add(r),a=lP.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=cP.subVectors(s,i).multiplyScalar(o).add(i),l=dP.subVectors(a,s).multiplyScalar(o).add(s),d=a,p=uP.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function Kh(n,r,e=12,t=!0){let o=Uh.set(0,0,0),i,s=0,a=[];for(let c=0;c<r.length;c++){let u=Ed(r[c]),l=gi,d=Vo(u,e);a.push(d);for(let p=0;p<=d;p++)if(u instanceof ge.CubicBezierCurve||u instanceof ge.QuadraticBezierCurve||u instanceof ge.LineCurve){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&fP(i,o))continue;i===void 0&&(i=kh),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Zh(n,r,e,t=12,o=!0){let i=Uh.set(0,0,0),s=0,a=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=Ed(r[c]),d=gi,p=Vo(l,t);a.push(p);for(let f=0;f<=p;f++)if(l instanceof ge.CubicBezierCurve||l instanceof ge.QuadraticBezierCurve||l instanceof ge.LineCurve){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=kh:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function Bd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=Vo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=Vo(s.curveAfter,r)),t.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Vo(n[0].roundedCurveCorner,r)*.5),t}function Vo(n,r=12){return n&&n instanceof ge.EllipseCurve?r*2:n&&(n instanceof ge.LineCurve||n instanceof ge.LineCurve3)?1:n&&n instanceof ge.SplineCurve?r*n.points.length:r}function Qh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let a=Ed(r[s]),c=Vo(a,e),u=gi;for(let l=0;l<=c;l++)if(a instanceof ge.CubicBezierCurve||a instanceof ge.QuadraticBezierCurve||a instanceof ge.LineCurve){if(a.getPoint(l/c,u),o!==void 0&&pP(o,u,Fs))continue;o===void 0&&(o=kl),o.copy(u),n.push(u.x,u.y),i++}}return ks(n[0],n[n.length-2],Fs)&&ks(n[1],n[n.length-1],Fs)&&(n.pop(),n.pop()),t&&i>1&&!(ks(n[i-1],n[1],Fs)&&ks(n[i-2],n[0],Fs))&&(n.push(n[0],n[1]),i++),n}var Rd=new Ce.Vector2,mP=new Ce.Vector2,hP=new Ce.Vector2,yP=new Ce.Vector2,gP=new Ce.Vector2,xP=new Ce.Vector2,Ae=class extends Ce.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ce.Plane(new Ce.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ce.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Ae;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Sr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Ae.createFromState(s)),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 s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+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 s=this.shapeHoles[o],a=e-t;if(a<=s.points.length-1)return s.points[a];t+=s.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 s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return t+a;t+=s.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=Rd.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ce.MathUtils.generateUUID()){let i;e instanceof Ce.Vector2?i=e:i=new Ce.Vector2(e,t);let s=new Sr(o,i);return s.roundness=this.roundness,s}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 s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}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 Kh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Bd(this.points,e,!1),this.roundedCurveDivisions=Bd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return Zh(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Qh(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,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=Vo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(Dd(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(Rd.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=a[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Dd(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 s=this.points[t-1];this._applyCurveForPoint(i,s)}}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 s=this.points[o],a=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,l=a&&c&&Wh(a,s,c);if(!s.controlsMoved()&&u>0&&!l){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),x=Math.min(u,y*.499),b=Math.min(g,x),w=1-b/h,S=b/y,P=d.getPointAt(w,Rd),_=p.getPointAt(S,mP);this._subSplitCurve(d,f,w,P,void 0),this._subSplitCurve(p,m,S,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=Ld(P,s.position,_)/2,T=Math.tan(N)*P.distanceTo(s.position),[C,O]=qh(P,_,T,hP,yP),A=$h(C,O,s.position),[R,U]=Yh(A,P,_,T,gP,xP);v=new Ce.CubicBezierCurve(P.clone(),R.clone(),U.clone(),_.clone())}else v=new Ce.QuadraticBezierCurve(P.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Ce.LineCurve)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let a=e,c=t,u=a.getUtoTmapping(o,0),l=Xh(a.v0,a.v1,a.v2,a.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new Ae(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,s=e.points[i+0],a=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Sr(Ce.MathUtils.generateUUID(),new Ce.Vector2(s,a));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ae;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Ce.CubicBezierCurve&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof Ce.QuadraticBezierCurve&&(i[a]=Hh(i[a]));for(a=0,c=i.length;a<c;a++){let d=i[a],p=a>0?i[a-1]:null,f;d instanceof Ce.CubicBezierCurve?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Ce.LineCurve&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],l=!1;return u instanceof Ce.CubicBezierCurve?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),l=!0):u instanceof Ce.LineCurve&&u.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Ce.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Ae;return s.fromShape(i),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 Vd=Math.PI*2;function Gd({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function vP(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),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Jh(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 bP(n,r,e,t,o,i,s,a,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(a,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*a,y=m*-i/o*s,g=h+(n+e)/2,x=y+(r+t)/2,b=(s-h)/o,w=(a-y)/i,S=(-s-h)/o,P=(-a-y)/i,_=Jh(1,0,b,w),v=Jh(b,w,S,P);return!u&&v>0&&(v-=Vd),u&&v<0&&(v+=Vd),{centerx:g,centery:x,ang1:_,ang2:v}}function ey({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=bP(n,r,e,t,o,i,u,l,s,a),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Vd/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let b=0;b<x;b++)c.push(vP(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Gd(b[0],o,i,h,y),{x:P,y:_}=Gd(b[1],o,i,h,y),{x:v,y:N}=Gd(b[2],o,i,h,y);return{x1:w,y1:S,x2:P,y2:_,x:v,y:N}})}var cn=require("three");var Pe;(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"})(Pe||(Pe={}));var Ye;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ye||(Ye={}));function pe(n,r){if(!n)throw r||"Assertion Failed!"}var ce=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){pe(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){pe(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){pe(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){pe(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 s,a,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),a=n.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,e.s)):(s=n.edgeSign(r,t,e),a=-n.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),a=n.transEval(t,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,e.t)):(s=n.transSign(r,t,e),a=-n.transSign(r,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,o.t)):i.t=(t.t+e.t)/2},n}(),Us=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}(),Ul=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}(),xi=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}(),ty=function(){function n(){var r=new xi,e=new Us,t=new Ul(0),o=new Ul(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 Ul(0),t=new Ul(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;pe(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 s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;pe(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 s=e;do s.Lface=o,s=s.Lnext;while(s!==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,s=r.next;s.prev=i,i.next=s},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,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new xi,e=new xi,t=new Us,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 xi;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Us;this.makeFace_(s,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 Us;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 xi;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 s=new Us;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,a;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);s=r.prev,a=r.next,a.prev=s,s.next=a},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,s,a,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=r&&ce.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ce.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,a,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){pe(o.prev===i),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)pe(c.Sym.next===u.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),ry=function(){function n(){this.handle=null}return n}(),oy=function(){function n(){this.key=null,this.node=0}return n}(),SP=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 ry,this.handles[t]=new oy;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,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,pe(s<=this.max),i=e[s].handle,s>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=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===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=s}},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 ry;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new oy}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;pe(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}(),zd=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}(),ny=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),wP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new ny,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 ny;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}(),_P=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,s=t.eUp;if(i.Dst===o)return s.Dst===o?ce.vertLeq(i.Org,s.Org)?ce.edgeSign(s.Dst,i.Org,s.Org)<=0:ce.edgeSign(i.Dst,s.Org,i.Org)>=0:ce.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ce.edgeSign(i.Dst,o,i.Org)>=0;var a=ce.edgeEval(i.Dst,o,i.Org),c=ce.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){pe(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 zd;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 Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.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,s=e,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),n.finishRegion(r,s),a=i.eUp,s=i}return a},n.addRightEdges=function(r,e,t,o,i,s){var a,c,u,l,d=!0;u=t;do pe(ce.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),u=a.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),a.windingNumber=c.windingNumber-u.winding,a.inside=n.isWindingInside(r,a.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=a,l=u;c.dirty=!0,pe(c.windingNumber-u.winding===a.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ce.vertL1dist(e,r),i=ce.vertL1dist(t,r),s=.5*i/(o+i),a=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ce.vertLeq(o.Org,i.Org)){if(ce.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ce.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(ce.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,s;if(pe(!ce.vertEq(o.Dst,i.Dst)),ce.vertLeq(o.Dst,i.Dst)){if(ce.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ce.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,a=i.Org,c=o.Dst,u=i.Dst,l,d,p=new xi,f,m;if(pe(!ce.vertEq(u,c)),pe(ce.edgeSign(c,r.event,s)<=0),pe(ce.edgeSign(u,r.event,a)>=0),pe(s!==r.event&&a!==r.event),pe(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),d=Math.max(a.t,u.t),l>d))return!1;if(ce.vertLeq(s,a)){if(ce.edgeSign(u,s,a)>0)return!1}else if(ce.edgeSign(c,a,s)<0)return!1;return n.debugEvent(r),ce.intersect(c,s,u,a,p),pe(Math.min(s.t,c.t)<=p.t),pe(p.t<=Math.max(a.t,u.t)),pe(Math.min(u.s,c.s)<=p.s),pe(p.s<=Math.max(a.s,s.s)),ce.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ce.vertLeq(s,a)?s:a,ce.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ce.vertEq(p,s)||ce.vertEq(p,a)?(n.checkForRightSplice(r,e),!1):!ce.vertEq(c,r.event)&&ce.edgeSign(c,r.event,p)>=0||!ce.vertEq(u,r.event)&&ce.edgeSign(u,r.event,p)<=0?u===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):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(ce.edgeSign(c,r.event,p)>=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),ce.edgeSign(u,r.event,p)<=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=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,a,u),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,s=n.regionBelow(e),a=e.eUp,c=s.eUp,u=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(r,e),ce.vertEq(a.Org,r.event)&&(r.mesh.splice(i.Oprev,a),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),ce.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ce.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,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,s,a,c;if(o=e.eUp,ce.vertEq(o.Org,t)){pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ce.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}pe(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=a=s.Onext,c.fixUpperEdge&&(pe(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ce.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,a,c,u=new zd;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,ce.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ce.vertLeq(a.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=r.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),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);pe(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(r,i,null);a.Onext===s?n.connectRightVertex(r,o,a):n.addRightEdges(r,o,a.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new zd,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,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 wP(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,s=r.bmin[1]-t,a=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,a)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++t===1)),pe(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,ce.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 SP(i,ce.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,pe(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||!ce.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}(),PP=function(){function n(){this.mesh=new ty,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=Pe.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,s,a,c=[0,0,0],u=[0,0,0],l=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.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 s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.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(;ce.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ce.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ce.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ce.edgeGoesLeft(o.Lnext)||ce.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&&(ce.edgeGoesRight(t.Lprev)||ce.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,s=0,a=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ye.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===Ye.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.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 c=0,u=0,l=0;i=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new ty),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,s){if(r===void 0&&(r=Pe.ODD),e===void 0&&(e=Ye.POLYGONS),s===void 0&&(s=!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_(),_P.computeInterior(this,s);var a=this.mesh;return e===Ye.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ye.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},n}();function wr(n){var r=n.windingRule,e=r===void 0?Pe.ODD:r,t=n.elementType,o=t===void 0?Ye.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,u=n.normal,l=u===void 0?[0,0,1]:u,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new PP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,s,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var ZG=Pe.ODD,QG=Pe.NONZERO,JG=Pe.POSITIVE,eV=Pe.NEGATIVE,tV=Pe.ABS_GEQ_TWO,rV=Ye.POLYGONS,oV=Ye.CONNECTED_POLYGONS,nV=Ye.BOUNDARY_CONTOURS;var ln=require("three");var Hl=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*Hl.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*Hl.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);a.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=u,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)}},Hs=Hl;Hs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ws={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Fd={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},kd={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},jd=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),vi=class extends ln.BufferGeometry{constructor(e,t,o=0,i=12,s=3,a=Pe.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let v=_.extractShapePointsToFlatArray([],i),N=[];for(let T=v.length-1;T>=1;T-=2){let C=v[T-1],O=v[T-0];N.push(C,O)}return N}),l;try{l=wr({windingRule:a,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{l=Ws}let d;try{d=wr({windingRule:Pe.ODD,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=Fd}if(!l)throw new Error("error generating geometry");let p=l.elementCount;if(d){l.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let v=d.elements[_],N=_%2===0?l.vertexCount:0;l.elements.push(v+N)}for(let _=0;_<d.vertexIndices.length;_++){let v=d.vertexIndices[_],N=l.vertexCount;l.vertexIndices.push(v+N)}for(let _=0;_<d.vertices.length;_++){let v=d.vertices[_];l.vertices.push(v)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,v=l.vertexCount;_<v;_++){let N=_*2,T=l.vertices[N+0],C=l.vertices[N+1];T<f&&(f=T),T>m&&(m=T),C<h&&(h=C),C>y&&(y=C)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Hs(this._computeBufferEstimatedSize(l));let g=[],x=[];for(let _=l.elementCount-1;_>=0;_--){let v=_>=p,N=_*2,T=l.elements[N+0],C=l.elements[N+1],O=T+C,A={start:T,count:C,normals:[],continuous:[],concave:[]},R=T,U=O-1,$=T+1,ee=this._shape.roundedCurves.length;do{let V=R-T,G=l.vertices[U*2+0],D=l.vertices[U*2+1],L=l.vertices[R*2+0],B=l.vertices[R*2+1],K=l.vertices[$*2+0],W=l.vertices[$*2+1],j=L-G,F=B-D,M=Math.sqrt(j*j+F*F);j/=M,F/=M;let Q=L-K,re=B-W,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=j*re-F*Q>0;let Z=l.vertexIndices[R];if(Array.isArray(Z))A.continuous[V]=!1;else{let[te,J]=this._shape.getCurveIndexFromVertexId(Z-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let se=J===1?te+1:te-1;se=(se+ee)%ee;let de=J===1?0:1,ae=this._shape.roundedCurves[te].getTangent(J),me=this._shape.roundedCurves[se].getTangent(de);A.continuous[V]=ae.dot(me)>.95}}v&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[U,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==T+1);let X=[];X.push({bevelI:0,angle:0,size:0,boundary:{vertices:l.vertices.slice(T*2,O*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,G)=>[G,G]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:l.vertices.slice(T*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,D=(1-Math.cos(G))*this._bevelSize,L=[],B=[],K=[],W=[],j=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=l.vertices[A.start*2+Q+0],Z=l.vertices[A.start*2+Q+1],te=-A.normals[re+0]*D,J=-A.normals[re+1]*D,se=-A.normals[Q+0]*D,de=-A.normals[Q+1]*D;if(A.concave[M]||!A.concave[M]&&v){let ae=Math.atan2(J,te),me=Math.atan2(de,se);me>ae&&(me-=Math.PI*2);let Ke=me-ae;if(A.continuous[M]||v){let ve=ae+Ke/2,it=Math.cos(ve)*D,Me=Math.sin(ve)*D;L[2*j+0]=oe+it*(v?-1:1),L[2*j+1]=Z+Me*(v?-1:1),W[j]=M,j++}else{let ve=Math.max(1,Math.floor(i/4*Math.abs(Ke)/Math.PI));for(let it=0;it<=ve;it++){let Me=ae+Ke*(it/ve),zt=Math.cos(Me)*D,sr=Math.sin(Me)*D;L[2*j+0]=oe+zt,L[2*j+1]=Z+sr,W[j]=M,j++}}}else L[2*j+0]=oe+te,L[2*j+1]=Z+J,W[j]=M,B[M]=j,j++,L[2*j+0]=oe,L[2*j+1]=Z,W[j]=M,j++,L[2*j+0]=oe+se,L[2*j+1]=Z+de,W[j]=M,K[M]=j,j++}let F=wr({windingRule:Pe.POSITIVE,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=W[re],Z=W[(re+1)%W.length];M.idx=[oe,Z],M.Sym.idx=[Z,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!F.vertexCount)break;for(let M=0;M<F.vertexIndices.length;M++){let[Q,re]=F.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let Z=Q;Z<oe;Z++){let te=Z%C,J=(Z+1)%C;if(!A.continuous[te]||!A.continuous[J]){F.vertexIndices[M]=[Q,te],F.vertexIndices.splice(M+1,0,[J,re]),F.vertices.splice((M+1)*2,0,F.vertices[M*2],F.vertices[M*2+1]);break}}}X.push({bevelI:V,angle:G,size:D,boundary:F,reverseMap:W,insetPoints:L})}let q=(V,G,D)=>{let L=0,B=V.boundary.vertexIndices.length;for(;L<B&&D(V.boundary.vertexIndices[G]);)G=(G+1)%B,L++;return L},H=g.length;for(let V=1;V<X.length;V++){let G=X[V-1],D=X[V],L=G.boundary.vertexIndices.length,B=D.boundary.vertexIndices.length;if(!L||!B)break;let K=A.concave.length,W=0,j=jd(W,C);for(;!G.boundary.vertexIndices.filter(j).length||!D.boundary.vertexIndices.filter(j).length;)W++,j=jd(W,C);let F=G.boundary.vertexIndices.findIndex(j),M=D.boundary.vertexIndices.findIndex(j);do F=(F+1)%L;while(j(G.boundary.vertexIndices[F]));do M=(M+1)%B;while(j(D.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(F-1+L)%L),oe=this._buildBevelVert(A,D,(M-1+B)%B),Z=re,te=oe,J,se,de=!1;do{j=jd(W,C);let ae=q(G,F,j),me=q(D,M,j),Ke=de;if(de=!1,ae&&!me){for(let ve=0;ve<ae;ve++)J=this._buildBevelVert(A,G,(F+ve)%L,ve/(ae-1)),g.push(Z.topN,J.topP,te.topN),g.push(J.bottomP,Z.bottomN,te.bottomN),Z=J;de=!0}else if(!ae&&me)for(let ve=0;ve<me;ve++)se=this._buildBevelVert(A,D,(M+ve)%B,ve/(me-1)),g.push(te.topN,Z.topP,se.topP),g.push(Z.bottomP,te.bottomN,se.bottomP),te=se;else if(ae&&me)if(J=this._buildBevelVert(A,G,F,0),se=this._buildBevelVert(A,D,M,0),Ke?(g.push(Z.topN,se.topP,te.topN),g.push(Z.topN,J.topP,se.topP),g.push(se.bottomP,Z.bottomN,te.bottomN),g.push(se.bottomP,J.bottomP,Z.bottomN)):(g.push(te.topN,Z.topN,J.topP),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,Z.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,se.bottomP)),Z=J,te=se,ae===me)for(let ve=1;ve<ae;ve++)J=this._buildBevelVert(A,G,(F+ve)%L,ve/(ae-1)),se=this._buildBevelVert(A,D,(M+ve)%B,ve/(me-1)),g.push(Z.topN,J.topP,te.topN),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,Z.bottomN,te.bottomN),g.push(J.bottomP,te.bottomN,se.bottomP),Z=J,te=se;else if(ae>me){let ve=ae/me,it=0;for(let Me=1;Me<ae;Me++)J=this._buildBevelVert(A,G,(F+Me)%L,Me/(ae-1)),g.push(Z.topN,J.topP,te.topN),g.push(J.bottomP,Z.bottomN,te.bottomN),Z=J,Me>(it+1)*ve&&(it++,se=this._buildBevelVert(A,D,(M+it)%B,it/(me-1)),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,te.bottomN,se.bottomP),te=se)}else{let ve=me/ae,it=0;for(let Me=1;Me<me;Me++)se=this._buildBevelVert(A,D,(M+Me)%B,Me/(me-1)),g.push(te.topN,J.topP,se.topP),g.push(J.bottomP,te.bottomN,se.bottomP),te=se,Me>(it+1)*ve&&(it++,J=this._buildBevelVert(A,G,(F+it)%L,it/(ae-1)),g.push(Z.topN,J.topP,te.topN),g.push(J.bottomP,Z.bottomN,te.bottomN),Z=J)}F=(F+ae)%L,M=(M+me)%B,W=(W+1)%K}while(W!==Q)}if(this._depth>this._bevel*2&&this._buildWall(X,A,g),v){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let D=g[G-2],L=g[G-1],B=g[G-0];V.push(B,L,D)}g.splice(H,g.length-H,...V)}if(v){let V=[];for(let G=X[X.length-1].boundary.vertices.length-1;G>=1;G-=2){let D=X[X.length-1].boundary.vertices[G-1],L=X[X.length-1].boundary.vertices[G-0];V.push(D,L)}x.push(V)}if(!v){let V=X[X.length-1],G;try{G=wr({windingRule:X.length>1?Pe.POSITIVE:Pe.ODD,elementType:Ye.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...x]})}catch{G=kd}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let D=0;D<G.elementCount*3;D+=3){let L=this._buildSurfaceVert(G,G.elements[D+0]),B=this._buildSurfaceVert(G,G.elements[D+1]),K=this._buildSurfaceVert(G,G.elements[D+2]);g.push(L.top,B.top,K.top),g.push(K.bottom,B.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new ln.BufferAttribute(Uint32Array.from(g),1),w=new ln.BufferAttribute(this._buffer.positions,3),S=new ln.BufferAttribute(this._buffer.normals,3),P=new ln.BufferAttribute(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,P.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",P),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],a=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),l=u*3,d=u*2,p={top:u+0,bottom:u+1};return this._buffer.positions[l+0]=i,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[d+0]=a,this._buffer.uvs[d+1]=c,this._buffer.positions[l+3]=i,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[d+2]=a,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=t.boundary.vertexIndices[o],u,l,d,p;a!==c?(l=a,u=c,p=!1,d=e.continuous[l]&&e.continuous[u]):(u=a,l=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=l*2,x=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(x-this._minX)/this._width,P=(b-this._minY)/this._height,_=e.normals[y+0],v=e.normals[y+1],N=e.normals[g+0],T=e.normals[g+1];if(p){let U=N-_,$=T-v;_=_+U*(1-i),v=v+$*(1-i);let ee=Math.sqrt(_*_+v*v);_/=ee,v/=ee}let C=this._buffer.get(d?2:4),O=C*3,A=C*2,R={i:o,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=v*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=v*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S,d||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[O+0]=x,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=N*f,this._buffer.normals[O+1]=T*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=P,this._buffer.positions[O+3]=x,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=T*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=P,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new vi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=io(this.userData),e}};var bi=class extends cn.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=Ye.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:Ye.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{a=wr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{a=Ws}let p=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new cn.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new cn.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new cn.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new cn.BufferAttribute(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1],N=(_-m)/x,T=(v-y)/b;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,T)}for(let w=0,S=f;w<S;w++){let P=w*3,_=a.elements[P+0],v=a.elements[P+1],N=a.elements[P+2];this._indexAttribute.setX(P+0,_),this._indexAttribute.setX(P+1,v),this._indexAttribute.setX(P+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new bi(this._shape,this._curveSegments);return e.userData=io(this.userData),e}};var Si=class extends vi{constructor(e,t,o=0,i=12,s=3,a=Pe.ODD){super(e,t,o,i,s,a);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%a);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new Si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=io(this.userData),e}};var Wt=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:Pe.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ae?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Ae(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Ae(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:a}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let a;return r<=0?a=new bi(n.shape,o,{windingRule:s}):a=new Si(n.shape,r,e,o,t,s),Object.assign(a,{userData:{...n,type:"VectorGeometry"}})}};var _i=require("three"),sy=Math.PI*2,Pi=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{shape:n.shape&&n.shape instanceof Ae?n.shape:new Ae,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:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=TP(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Wt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function TP(n,r,e,t,o,i){if(t>=sy)return o>30||o%4===0?(AP(n,r,e,i),Math.round(o/4)):iy(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},a=t+Math.PI*.5,c={x:Math.cos(a)*r,y:Math.sin(a)*e},u=ey({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?OP(n,s.x,s.y,u,o,r,e,i):iy(n,t,o,r,e,i)}function OP(n,r,e,t,o,i,s,a){let c=Math.round(o/t.length);n.addPoint(wi(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=wi(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return a>0?ay(n,i,s,a):n.addPoint(wi(0,0)),c}function iy(n,r,e,t,o,i){let s=-r/e;for(let a=0;a<=e;a++){let c=s*a,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(wi(u,l))}return r<sy?i>0?ay(n,t,o,i):n.addPoint(wi(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&ly(n,t,o,i)),1}function AP(n,r,e,t=0,o=0,i=0){let s=.5522847498,a=r*s,c=e*s;n.addPoint(Wl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(Wl(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Wl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(Wl(o,i-e,o+a,i-e,o-a,i-e)),t>0&&ly(n,r,e,t)}function wi(n,r){return new Sr(_i.MathUtils.generateUUID(),new _i.Vector2(n,r))}function Wl(n,r,e,t,o,i){let s=wi(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function ay(n,r,e,t){cy(n,r,e,t).forEach(i=>n.addPoint(i))}function ly(n,r,e,t){let o=cy(n,r,e,t),i=new Ae;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function cy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new _i.Vector2(o/r,i/e),a=n.points.map(c=>{let u=c.clone();return u.uuid=_i.MathUtils.generateUUID(),u}).reverse();return a.forEach(c=>{c.position.multiply(s);let u=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),a}var _r=require("three"),dy=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),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,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:s,pathRadius:a,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new qs(!1,r,e,t,o,i,s,a,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Ud=new _r.Uint32BufferAttribute([0,0,0],1),qs=class extends _r.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,a=1,c=1,u=1,l=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new _r.Vector3,h=new _r.Vector3,y=m(),g=m(),x=m(),b,w,S,P,_,v,N,T,C=m(),O=m(),A=m(),R=m(),U=m(),$=m(),ee=m(),X=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(a*s),G=V+1,D=q/V,L=-q/2,B=l+1,K=2*Math.PI/l,W=Math.PI/2/p,j=.01,F=Math.min((1-d/100)*c,c-j),M=c-F,Q=0,re=2,oe=p*re+re,Z=B*oe/re,te=Z+B*G,J=B*(G+oe),[se,de,ae]=[3,3,2].map(rt=>Array(J*rt).fill(0)),me=[],Ke=i-c;function ve(rt,Qt){let Ir=Math.PI/2;v=Qt*D,T=2*Math.PI*(v%H)/H+Ir,v+=L,N=Math.sin(T)*Ke,_=Math.cos(T)*Ke,r?rt.set(_,N,v):rt.set(_,v,N)}ve(h,-1e-10),ve(y,0),C.copy(h),ve(h,1);let it=h.distanceTo(y),Me=f?0:M+F,zt=it*V+2*Me,sr=F,Tn=zt-Me;for(let rt=0;rt<=V;rt++){ve(g,rt),X.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),ee.crossVectors(X,$).normalize();let Qt=rt===0,Ir=rt===V,I0=Qt?3*Math.PI/2:W,M0=Qt?sr:Tn,E0=Qt?B:te,L0=Qt?0:J-B,D0=X.clone().multiplyScalar(Qt?-M:M).add(g),B0=X.clone().multiplyScalar(Qt?-1:1).normalize();for(let eo=0;eo<B;eo++){let ku=eo*K;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(ku)),y.copy(ee).multiplyScalar(c*Math.sin(ku))),A.copy(O).normalize(),Qt||Ir){f||(Q=L0+eo,[0,1,2].forEach(jt=>{se[Q*3+jt]=D0.getComponent(jt),de[Q*3+jt]=B0.getComponent(jt)}),ae[Q*2]=+Ir,ae[Q*2+1]=eo/l),y.copy(A).multiplyScalar(F),x.addVectors(g,y);for(let jt=0;jt<p;jt++){let Fc=jt*W+I0;R.addVectors(h.copy(X).multiplyScalar(M*Math.sin(Fc)),y.copy(A).multiplyScalar(M*Math.cos(Fc))),U.copy(R).normalize(),y.addVectors(x,R),R.normalize(),Q=E0+jt*B+eo,[0,1,2].forEach(Na=>{se[Q*3+Na]=y.getComponent(Na),de[Q*3+Na]=U.getComponent(Na)});let R0=+Qt+Math.sin(Fc);ae[Q*2]=(M0+M*R0)/zt,ae[Q*2+1]=eo/l}}y.addVectors(g,O),Q=Z+rt*B+eo,[0,1,2].forEach(jt=>{se[Q*3+jt]=y.getComponent(jt),de[Q*3+jt]=A.getComponent(jt)}),ae[Q*2]=(Me+rt*it)/zt,ae[Q*2+1]=eo/l}}let Zt=G+2*p+re,Oa=1,[Aa,Ca]=[+f,Zt-1];for(let rt=Aa;rt<=Ca-1;rt++){let Qt=f&&rt===Ca-1;for(let Ir=0;Ir<B-1;Ir++)b=rt*B+Ir,w=b+1,S=(Qt?Ir:b)+B,P=(Qt?Ir+1:w)+B,rt===0?me.push(w,P,S):rt===Zt-2?me.push(b,w,S):me.push(b,w,S,w,P,S)}this.setIndex(me),this.setAttribute("position",new _r.Float32BufferAttribute(se,3)),this.setAttribute("normal",new _r.Float32BufferAttribute(de,3)),this.setAttribute("uv",new _r.Float32BufferAttribute(ae,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,a,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,s=i+1,a=(d?p:i)+t,c=(d?p+1:s)+t,o[u++]=i,o[u++]=s,o[u++]=a,o[u++]=s,o[u++]=c,o[u++]=a;return o.length=u,Ud.array=o,Ud.count=o.length,Ud}};var uy=require("three");var py=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:s}=n.parameters,a=o===0&&i!==0?new $s(r*.5,i,s):new uy.IcosahedronGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},$s=class extends Go{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],s=[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],a="IcosahedronGeometry";super(i,s,a,r,e,t),this.type=a}static fromJSON(r){return new $s(r.radius,r.corner,r.cornerSides)}};var ql=require("three"),fy=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 ql.Shape;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 ql.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var kr=require("three");var ho=require("three");var ie=require("three"),Fr=new ie.Matrix4,Hd=new ie.Object3D,$l=new ie.Vector3,zo=class extends ie.EventDispatcher{constructor(){super(),this.uuid=ie.MathUtils.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 ie.Matrix3().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 s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Fr.makeRotationX(r),this.applyMatrix4(Fr),this}rotateY(r){return Fr.makeRotationY(r),this.applyMatrix4(Fr),this}rotateZ(r){return Fr.makeRotationZ(r),this.applyMatrix4(Fr),this}translate(r,e,t){return Fr.makeTranslation(r,e,t),this.applyMatrix4(Fr),this}scale(r,e,t){return Fr.makeScale(r,e,t),this.applyMatrix4(Fr),this}lookAt(r){return Hd.lookAt(r),Hd.updateMatrix(),this.applyMatrix4(Hd.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,s=o.normal,a=o.color,c=o.uv,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new ie.Vector3().fromBufferAttribute(i,p)),a!==void 0&&e.colors.push(new ie.Color().fromBufferAttribute(a,p));function l(p,f,m,h){let y=a===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ie.Vector3().fromBufferAttribute(s,p),new ie.Vector3().fromBufferAttribute(s,f),new ie.Vector3().fromBufferAttribute(s,m)],x=new Ti(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new ie.Vector2().fromBufferAttribute(c,p),new ie.Vector2().fromBufferAttribute(c,f),new ie.Vector2().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new ie.Vector2().fromBufferAttribute(u,p),new ie.Vector2().fromBufferAttribute(u,f),new ie.Vector2().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+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($l).negate(),this.translate($l.x,$l.y,$l.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new ie.Matrix4;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 ie.Vector3,e=new ie.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,a),e.subVectors(s,a),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 ie.Vector3;if(r){let t=new ie.Vector3,o=new ie.Vector3;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],u=this.vertices[a.b],l=this.vertices[a.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.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],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[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,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new zo;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,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let u=new ie.Vector3,l={a:new ie.Vector3,b:new ie.Vector3,c:new ie.Vector3};i.push(u),s.push(l)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(a.normal),u.a.copy(a.vertexNormals[0]),u.b.copy(a.vertexNormals[1]),u.c.copy(a.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 ie.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ie.Sphere),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,s=this.vertices,a=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new ie.Matrix3().getNormalMatrix(e));for(let p=0,f=a.length;p<f;p++){let h=a[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,b=new Ti(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=x.length;w<S;w++)y=x[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++)x.push(g[b].clone());this.faceVertexUvs[p].push(x)}}}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 c=0,u=this.vertices.length;c<u;c++){let l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ie.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let u=r[c]._id;s&&s.push(o[u]),a&&a.push(i[u])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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 m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},s=[],a={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,P=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,b),_=l(_,5,w),_=l(_,6,S),_=l(_,7,P),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(b&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(S&&t.push(p(h.color)),P){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new zo().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 p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];x.push(S.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let a=r.skinWeights;for(let p=0,f=a.length;p<f;p++)this.skinWeights.push(a[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.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 Wd().fromGeometry(this),e=new ie.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Yl.call(new ie.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Yl.call(new ie.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",my.call(new ie.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",hy.call(new ie.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",hy.call(new ie.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let u=s[a],l=new ie.Float32BufferAttribute(u.data.length*3,3);l.name=u.name,i.push(Yl.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ie.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",yy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ie.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",yy.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 ie.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new ie.Float32BufferAttribute(t.vertices.length*3,3),i=new ie.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Yl.call(o,t.vertices)),e.setAttribute("color",my.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ie.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",CP.call(s,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}};zo.prototype.isGeometry=!0;var Wd=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,s=r.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.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,s=o[1]&&o[1].length>0,a=r.morphTargets,c=a.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:a[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.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 x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let b=x.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=x.normal;this.normals.push(S,S,S)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=x.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 ie.Vector2,new ie.Vector2,new ie.Vector2))}if(s===!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 ie.Vector2,new ie.Vector2,new ie.Vector2))}for(let S=0;S<c;S++){let P=a[S].vertices;u[S].data.push(P[x.a],P[x.b],P[x.c])}for(let S=0;S<d;S++){let P=l[S].vertexNormals[g];p[S].data.push(P.a,P.b,P.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.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}},Ti=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new ie.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ie.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}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 CP(n){return this.array.set(n),this}function my(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 ie.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function hy(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 ie.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Yl(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 ie.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function yy(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 ie.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var NP=["a","b","c"];function IP(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function qd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function $d(n,r,e,t,o,i){let s=Math.min(n,r),a=Math.max(n,r),c=s+"_"+a,u;if(t.has(c))u=t.get(c);else{let l=e[s],d=e[a];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function MP(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],$d(s.a,s.b,n,t,s,e),$d(s.b,s.c,n,t,s,e),$d(s.c,s.a,n,t,s,e)}function Xl(n,r,e,t,o){n.push(new Ti(r,e,t,void 0,void 0,o))}function Oi(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Kl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Zl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof ho.BufferGeometry?r=new zo().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 ho.Vector3,t,o,i,s,a,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;MP(c,u,p,f);let m=[],h,y,g,x,b,w,S;for(let j of Array.from(f.keys())){for(y=f.get(j),g=new ho.Vector3,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(x=y.faces[s],a=0;a<3&&(h=c[IP(x,NP[a])],!(h!==y.a&&h!==y.b));a++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let P,_,v,N,T,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],T=p[o].edges,t=T.length,t==3?P=3/16:t>3&&(P=3/(8*t)),_=1-t*Number(P),v=P,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=T[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,$,ee,X,q=[],H=[],V,G,D,L,B=new ho.Vector2,K=new ho.Vector2,W=new ho.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],$=Number(qd(x.a,x.b,f).newEdge)+U,ee=Number(qd(x.b,x.c,f).newEdge)+U,X=Number(qd(x.c,x.a,f).newEdge)+U,Xl(q,$,ee,X,x.materialIndex),Xl(q,x.a,$,X,x.materialIndex),Xl(q,x.b,ee,$,x.materialIndex),Xl(q,x.c,X,ee,x.materialIndex),d&&(V=l[o],G=V[0],D=V[1],L=V[2],B.set(Oi(G.x,D.x),Oi(G.y,D.y)),K.set(Oi(D.x,L.x),Oi(D.y,L.y)),W.set(Oi(G.x,L.x),Oi(G.y,L.y)),Kl(H,B,K,W),Kl(H,G,B,W),Kl(H,D,K,B),Kl(H,L,W,K));r.vertices=R,r.faces=q,d&&(r.faceVertexUvs[0]=H)}};var dt=new kr.Vector3,gy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new kr.BufferGeometry().copy(new kr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(dt),t={width:dt.x,height:dt.y,depth:dt.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 kr.BufferGeometry().copy(new kr.BoxGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(dt)):dt.set(s.width,s.height,s.depth),(r!==dt.x||e!==dt.y||t!==dt.z)&&i.scale(dt.x===0?1:r/dt.x,dt.y===0?1:e/dt.y,dt.z===0?1:t/dt.z);let a=i.originalGeometry;try{o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Zl(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new kr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(dt);let s=100/dt.x;Object.assign(i.parameters,{width:100,height:dt.y*s,depth:dt.z*s}),r(this.build(i))})}};var Ql=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 Ae?n.shape:new Ae,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:s,extrudeBevelSegments:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Wt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var _e=require("three"),xy=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,u=new Xd(r*.5,e,o,i,s,a,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Ys(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Yd(n,r,e,t,o,i){let s=r.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let u=s.add(a).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(a,t/Math.sin(u))}}function EP(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Xd=class extends _e.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let c=[],u=[],l=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,b=new _e.Vector3(0,-f,0),w=new _e.Vector3(0,f,0),S=new _e.Vector2(r,-f),P=new _e.Vector2(h,-f),_=new _e.Vector2(0,w.y).sub(P),v=new _e.Vector2(0,w.y).sub(S),N=new _e.Vector2(_.y,-_.x).normalize(),T=new _e.Vector2(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new _e.Vector3(N.x,N.y,0),V=new _e.Vector3(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),$=new _e.Vector3;if(!i){u.push(b.x,b.y,b.z),l.push(0,-1,0),d.push(0,0);let H=p++,V=[],G=S.clone(),D=R/Math.cos(Math.PI/t);G.x-=D;for(let L=0;L<t;L++){let B=L/t*Math.PI*2+m,K=new _e.Vector2(Math.sin(B),Math.cos(B));Ys(G,K,$),u.push($.x,$.y,$.z),l.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let ee=[];{let H=new _e.Vector3,V=new _e.Vector3,G=new _e.Vector3,D=new _e.Vector3,L=new _e.Vector3,B=new _e.Vector3;for(let K=0;K<t;K++){let W=K/t*Math.PI*2+m,j=(K+.5)/t*Math.PI*2+m,F=(K+1)/t*Math.PI*2+m,M=new _e.Vector2(Math.sin(W),Math.cos(W)),Q=new _e.Vector2(Math.sin(j),Math.cos(j)),re=new _e.Vector2(Math.sin(F),Math.cos(F));Ys(S,M,V),Ys(S,re,G),Ys(N,Q,H),Yd(w,V,G,U,U,D),u.push(D.x,D.y,D.z),Yd(V,w,G,U,R,L),u.push(L.x,L.y,L.z),Yd(G,V,w,R,U,B),u.push(B.x,B.y,B.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),l.push(H.x,H.y,H.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,Z=p++,te=p++;if(c.push(oe,Z,te),s>0){{let de=V.clone().add(G).multiplyScalar(.5),ae=w.clone().sub(de).normalize(),Ke=b.clone().sub(de).normalize().add(ae).normalize().multiplyScalar(-1),ve=B.clone().sub(L);X(de,ve,Ke,_.angle())}let J,se;{let de=new _e.Vector3;Ys(T,re,de);let ae=B.clone().add(D).multiplyScalar(.5);ae=EP(ae,G,w);let me=B.clone().sub(D);[J,se]=X(ae,me,de,A,D.y)}{let de=J,ae=de.clone().setY(0).normalize(),me=new _e.Vector3(0,-1,0),Ke=ae.clone().cross(me);q(de,ae,me,Ke)}ee.concat(se);{let de=_.angle(),ae=Math.PI-de,me=w.clone();me.y-=s/Math.sin(de-Math.PI/2);let Ke=new _e.Vector3,ve=[];for(let Me=0;Me<a;Me++){let zt=[],sr=Math.PI/2-ae*Me/a,Tn=Math.cos(sr),Zt=Math.sin(sr),Oa=j;for(let Aa=0;Aa<=Me;Aa++){let Ca=Math.cos(Oa),rt=Math.sin(Oa);H.x=Tn*rt,H.y=Zt,H.z=Tn*Ca,Ke.copy(me).addScaledVector(H,s),u.push(Ke.x,Ke.y,Ke.z),l.push(H.x,H.y,H.z),d.push(0,0),zt.push(p++),Oa+=Math.PI*2/Me/t}ve.push(zt)}se.reverse(),ve.push(se);let it=ve.length-1;for(let Me=0;Me<it;Me++){let zt=ve[Me],sr=ve[Me+1],Tn=zt.length-1;c.push(sr[1],zt[0],sr[0]);for(let Zt=1;Zt<=Tn;Zt++)c.push(zt[Zt],zt[Zt-1],sr[Zt]),c.push(sr[Zt+1],zt[Zt],sr[Zt])}}}}}this.setIndex(c),this.setAttribute("position",new _e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new _e.Float32BufferAttribute(l,3)),this.setAttribute("uv",new _e.Float32BufferAttribute(d,2));function X(H,V,G,D,L){let B=-D/2,K=(Math.PI-D)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(K));let j=new _e.Vector3,F=new _e.Vector3,M=1,Q=p,re=[];for(let oe=0;oe<=a;oe++){let Z=B+oe/a*D;F.set(0,0,0),F.addScaledVector(W,Math.sin(Z)),F.addScaledVector(G,Math.cos(Z));for(let te=0;te<=M;te++){let J=te/M-.5;if(j.copy(H),j.addScaledVector(V,J),j.addScaledVector(F,s),L!=null){let se=Math.max(0,j.y-L);j.addScaledVector(V,-se/V.y)}u.push(j.x,j.y,j.z),l.push(F.x,F.y,F.z),d.push(0,0),te===0&&re.push(p),p++}}for(let oe=0;oe<a;oe++)for(let Z=0;Z<M;Z++){let te=Q+Z+(M+1)*oe,J=te+(M+1),se=J+1,de=te+1;c.push(te,J,de),c.push(J,se,de)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,D){let L=Math.PI/2,B=v.angle()-L,K=[],W=new _e.Vector3,j=new _e.Vector3;for(let M=0;M<=a;M++){let Q=[],re=M/a;for(let oe=0;oe<=M;oe++){let te=((M?oe/M:0)-.5)*x,J=Math.cos(te),se=Math.sin(te),de=Math.atan(Math.tan(B)*J),ae=(L+de)*re,me=Math.cos(ae),Ke=Math.sin(ae);W.set(0,0,0),W.addScaledVector(V,Ke*J),W.addScaledVector(G,me),W.addScaledVector(D,Ke*se),j.copy(H).addScaledVector(W,s),u.push(j.x,j.y,j.z),l.push(W.x,W.y,W.z),d.push(0,0),Q.push(p++)}K.push(Q)}let F=K.length-1;for(let M=0;M<F;M++){let Q=K[M],re=K[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let Z=1;Z<=oe;Z++)c.push(Q[Z-1],Q[Z],re[Z]),c.push(Q[Z],re[Z+1],re[Z])}}}};var Jl=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 Ae?n.shape:new Ae,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:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,P){return S>e&&P>t?Math.min(w*e/S,w*t/P):S>e?w*e/S:P>t?w*t/P:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=d.x,y=d.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Wt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};var vy=require("three"),by=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:Math.PI},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=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:u}=n.parameters,l=new vy.SphereGeometry(.5*r,o,i,s,a,c,u);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Sy=require("three"),wy=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 Sy.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var jo=require("three"),_y=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:s}=n.parameters,a=new Kd(r,e,t,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Kd=class extends jo.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],u=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(j=0,F=0,M=0)=>new jo.Vector3(j,F,M),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],b=-g,w=+g,[S,P,_]=[f(b,-y,+x),f(b,-y,-x),f(b,+y,-x)],v=(j,F=!1)=>Math.sin(j-Math.PI/(1+ +F)),N=(j,F=!1)=>Math.cos(j-Math.PI/(1+ +F));_.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-x,C=S.z-l;o<=p?(_.z=Math.min(T,C),_.z==C&&(_.y-=(T-C)/Math.tan(p-o))):P.z=Math.min(P.z-T-x,S.z-l),m.subVectors(S,P),h.subVectors(_,P);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),U=m.clone().normalize().add(h.normalize()).setLength(R).add(P);m.set(0,v(o,!0),N(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let j=0;j<=s;j++){let F=p+o+j*$;m.set(0,Math.sin(F)*A,Math.cos(F)*A),m.add(U),h.set(0,v(F),N(F)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let ee=Math.sin($/2)*A*2,X=d.length-1,q=d[0][0].distanceTo(d[1][0]),H=d[X-1][0].distanceTo(d[X][0]),V=q+ee*s+H;d[0].push(1);for(let j=0;j<=s;j++)d[j+1].push(1-(q+j*ee)/V);d[X].push(0);let[G,D,L]=d[0],B,K,W;for(let j=1;j<d.length;j++)[B,K,W]=d[j],a.push(b,G.y,G.z,b,B.y,B.z,w,G.y,G.z,w,G.y,G.z,b,B.y,B.z,w,B.y,B.z),c.push(0,D.y,D.z,0,K.y,K.z,0,D.y,D.z,0,D.y,D.z,0,K.y,K.z,0,K.y,K.z),u.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,D,L]=[B,K,W];this.setAttribute("position",new jo.Float32BufferAttribute(a,3)),this.setAttribute("normal",new jo.Float32BufferAttribute(c,3)),this.setAttribute("uv",new jo.Float32BufferAttribute(u,2))}};var ec=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 Ae?n.shape:new Ae,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:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,P=f+Math.sin(S)*d,_=m+Math.cos(S)*p;l.addPoint(l.createPoint(P,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,P=m+Math.sin(y)*p;l.addPoint(l.createPoint(S,P)),y+=h,S=f+Math.cos(y)*g,P=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(S,P)),y+=h}l.isClosed=!0;for(let w=0,S=l.points.length;w<S;w++)l.points[w].roundness=i;l.roundness=i,l.update();let b=Wt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};var Py=require("three"),Ty=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 Py.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Oy=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:Math.PI*2,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:s,cornerRadius:a,cornerSegments:c}=n.parameters,u=LP(r,e,t,r*.5,s,i,0,0,o,a,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function LP(n,r,e,t,o,i,s,a,c,u,l){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new qs(!0,n,r,e,t,o,i,s,a,c,u,l)}var Ay=require("three"),Cy=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:s}=n.parameters,a=r*.5;a!==e&&(a-=e);let c=new Ay.TorusKnotGeometry(a,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Ny=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 Ae?n.shape:new Ae,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:s,isRect:a}=n.parameters,c=n.shape,u=r*.5,l=e*.5;a?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Wt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var be=require("three");function Iy(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function DP(n,r,e){let t=[new be.Vector3,new be.Vector3,new be.Vector3],o=[new be.Vector3,new be.Vector3,new be.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let a=o[s],c=be.MathUtils.lerp(i.length(),a.length(),e);i.lerp(a,e).setLength(c)}),new be.Matrix4().makeBasis(t[0],t[1],t[2])}var My=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),s=r?.shapeData??Pi.create({parameters:md}).userData.shape;return{path:n.path??ii.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Al,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new Zd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new be.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Zd=class extends be.BufferGeometry{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)||!Iy(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,s=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-a+1),s+2),l=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+a)%e.length:Math.min(O+a,e.length-1);l.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,R)=>{l[O]=l[O].clone().lerp(l[A],R),d[O]=DP(d[O],d[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let O=l.length-1;l[O].copy(l[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:x,vertices:b}=this._computeShapePoints(5),w=0,S=0;x.sort((O,A)=>O.start-A.start),x.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let P=S*u,_,v=0;if(this._isOpenEnded()){try{_=wr({windingRule:Pe.ODD,elementType:Ye.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=kd}v=_.vertexCount}let N=P+2*v,T={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];x.forEach(O=>{this._extrudeRegion(O,b,d,l,T,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,P,C,T,d[0],l[0],!1),this._closeEnd(_,P+v,C,T,d[d.length-1],l[l.length-1],!0)),this.setAttribute("position",new be.BufferAttribute(T.positions,3)),this.setAttribute("normal",new be.BufferAttribute(T.normals,3)),this.setAttribute("uv",new be.BufferAttribute(T.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=Fl(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),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,s=new be.Vector3,a=new be.Vector3,c=new be.Vector3,u=new be.Vector3,l=new be.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(x).normalize(),S=b.clone().sub(g).normalize(),P=w.clone().add(S).normalize();c.copy(P),y===0&&(P.equals(l)||P.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(P).normalize(),v=P.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(s.copy(v),a.copy(P));let N=new be.Matrix4().makeBasis(_,v,P);t.push(N)}let d=i?a:c,p=i?s:new be.Vector3(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new be.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:a,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new be.Matrix4,d=new be.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(be.MathUtils.lerp(s,s+a,m));let h=be.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=Pe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let b=y[x-1],w=y[x-0];g.push(b,w)}return g}),a;try{a=wr({windingRule:t,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{a=Ws}let c;try{c=wr({windingRule:Pe.ODD,elementType:Ye.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=Fd}if(!a)throw new Error("error generating geometry");let u=a.elementCount;if(c){a.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?a.vertexCount:0;a.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=a.vertexCount;a.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];a.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=a.vertexCount;h<y;h++){let g=h*2,x=a.vertices[g+0],b=a.vertices[g+1];x<l&&(l=x),x>d&&(d=x),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=a.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=a.elements[g+0],b=a.elements[g+1],w=x+b,S={start:x,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let P=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let T=P-x,C=a.vertices[_*2+0],O=a.vertices[_*2+1],A=a.vertices[P*2+0],R=a.vertices[P*2+1],U=a.vertices[v*2+0],$=a.vertices[v*2+1],ee=A-C,X=R-O,q=Math.sqrt(ee*ee+X*X);ee/=q,X/=q;let H=A-U,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[T*2+0]=-V,S.normals[T*2+1]=H;let D=a.vertexIndices[P];if(Array.isArray(D))S.continuous[T]=!1;else{let[L,B]=o.getCurveIndexFromVertexId(D-1,!0);if(B>0&&B<1)S.continuous[T]=!0;else{let K=B===1?L+1:L-1;K=(K+N)%N;let W=B===1?0:1,j=o.roundedCurves[L].getTangent(B),F=o.roundedCurves[K].getTangent(W);S.continuous[T]=j.dot(F)>.95}}y&&(S.normals[T*2+0]*=-1,S.normals[T*2+1]*=-1),[_,P,v]=[P,v,v+1],v>=w&&(v-=b)}while(v!==x+1)}return{regions:[i,...s],infos:m,vertices:a.vertices}}_insertVertex(e,t,o,i,s){let a=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[a+0]=s.x,e.uvs[a+1]=s.y}_extrudeRegion(e,t,o,i,s,a,c){let u=new be.Vector3,l=new be.Vector3,d=new be.Vector3,p=new be.Vector3,f=new be.Vector2;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;l.set(t[S+0],t[S+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,x,d,p,f),x++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;l.set(t[S+0],t[S+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,x,d,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&x++;let w=b===e.count-1?0:x+1,S=y+x,P=y+w,_=g+w,v=g+x;e.isHole?a.push(S,_,P,S,v,_):a.push(S,P,_,S,_,v),x++}}}_closeEnd(e,t,o,i,s,a,c){let u=e.vertexCount,l=new be.Vector3(0,0,c?-1:1).applyMatrix4(s),d=new be.Vector3,p=new be.Vector2;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(a),this._insertVertex(i,t+m,d,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}};var dn=require("three"),Ey=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Ly(){let n=new dn.BufferGeometry;return n.setAttribute("position",new dn.BufferAttribute(new Float32Array([]),3)),n.setIndex(new dn.BufferAttribute(new Uint16Array([]),1)),n}var BP=Ly().attributes,RP=12,GP=1,Ai=class extends dn.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,BP),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:s,extrudeBevelSize:a,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=l===2?u.toUpperCase():l===3?u.toLowerCase():u,p=VP(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,x=f.map(S=>new Ae().fromShape(S));this.vectorShapes=x;let b=x.map(S=>Wt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:a,windingRule:s<=0?Pe.NONZERO:Pe.ODD,subdivisions:this.isLowResolution&&s>0?GP:RP}})),w=b.length?(0,Ey.mergeBufferGeometries)(b):Ly();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,P])=>{this.setAttribute(S,P)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=gr(new dn.BufferGeometry,Ai.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 VP(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ "use strict";var q0=Object.create;var Ea=Object.defineProperty;var $0=Object.getOwnPropertyDescriptor;var Y0=Object.getOwnPropertyNames;var X0=Object.getPrototypeOf,K0=Object.prototype.hasOwnProperty;var En=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Yd=(n,r)=>{for(var e in r)Ea(n,e,{get:r[e],enumerable:!0})},Xd=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Y0(r))!K0.call(n,o)&&o!==e&&Ea(n,o,{get:()=>r[o],enumerable:!(t=$0(r,o))||t.enumerable});return n};var en=(n,r,e)=>(e=n!=null?q0(X0(n)):{},Xd(r||!n||!n.__esModule?Ea(e,"default",{value:n,enumerable:!0}):e,n)),Z0=n=>Xd(Ea({},"__esModule",{value:!0}),n);var Ah=En((Pu,Oh)=>{(function(n,r){typeof Pu=="object"?Oh.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Pu,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,s=1;e.length==0&&(e=[+new Date]);var a=r();t=a(" "),o=a(" "),i=a(" ");for(var c=0;c<e.length;c++)t-=a(e[c]),t<0&&(t+=1),o-=a(e[c]),o<0&&(o+=1),i-=a(e[c]),i<0&&(i+=1);a=null;var d=function(){var l=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=l-(s=l|0)};return d.next=d,d.uint32=function(){return d()*4294967296},d.fract53=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.version="Alea 0.9",d.args=e,d.exportState=function(){return[t,o,i,s]},d.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,s=+l[3]||0},d}(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 s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var Lh=En((Fl,Eh)=>{(function(n,r){typeof Fl=="object"&&typeof Eh<"u"?r(Fl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Fl,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 s,a,c,d,l,u,p,f,m,h,y,g,x=r[0].length,S=r.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],P=[],_=e==="f"?S:x,v=h=p=0;v<S;v++)b[v]=new Array(_).fill(0);for(v=0;v<x;v++)P[v]=new Array(x).fill(0);var N,O=new Array(x).fill(0);for(v=0;v<S;v++)for(s=0;s<x;s++)b[v][s]=r[v][s];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,s=v;s<S;s++)m+=Math.pow(b[s][v],2);if(m<i)p=0;else for(f=(u=b[v][v])*(p=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v]=u-p,s=c;s<x;s++){for(m=0,a=v;a<S;a++)m+=b[a][v]*b[a][s];for(u=m/f,a=v;a<S;a++)b[a][s]=b[a][s]+u*b[a][v]}for(O[v]=p,m=0,s=c;s<x;s++)m+=Math.pow(b[v][s],2);if(m<i)p=0;else{for(f=(u=b[v][v+1])*(p=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v+1]=u-p,s=c;s<x;s++)w[s]=b[v][s]/f;for(s=c;s<S;s++){for(m=0,a=c;a<x;a++)m+=b[s][a]*b[v][a];for(a=c;a<x;a++)b[s][a]=b[s][a]+m*w[a]}}h<(y=Math.abs(O[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,s=c;s<x;s++)P[s][v]=b[v][s]/f;for(s=c;s<x;s++){for(m=0,a=c;a<x;a++)m+=b[v][a]*P[a][s];for(a=c;a<x;a++)P[a][s]=P[a][s]+m*P[a][v]}}for(s=c;s<x;s++)P[v][s]=0,P[s][v]=0;P[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<S;v++){for(s=x;s<S;s++)b[v][s]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=O[v],s=c;s<_;s++)b[v][s]=0;if(p!==0){for(f=b[v][v]*p,s=c;s<_;s++){for(m=0,a=c;a<S;a++)m+=b[a][v]*b[a][s];for(u=m/f,a=v;a<S;a++)b[a][s]=b[a][s]+u*b[a][v]}for(s=v;s<S;s++)b[s][v]=b[s][v]/p}else for(s=v;s<S;s++)b[s][v]=0;b[v][v]=b[v][v]+1}}for(o*=h,a=x-1;0<=a;a--)for(var A=0;A<50;A++){for(N=!1,c=a;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(O[c-1])<=o)break}if(!N){for(l=0,d=c-(m=1),v=c;v<a+1&&(u=m*w[v],w[v]=l*w[v],!(Math.abs(u)<=o));v++)if(p=O[v],O[v]=Math.sqrt(u*u+p*p),l=p/(f=O[v]),m=-u/f,e)for(s=0;s<S;s++)y=b[s][d],g=b[s][v],b[s][d]=y*l+g*m,b[s][v]=-y*m+g*l}if(g=O[a],c===a){if(g<0&&(O[a]=-g,t))for(s=0;s<x;s++)P[s][a]=-P[s][a];break}for(h=O[c],u=(((y=O[a-1])-g)*(y+g)+((p=w[a-1])-(f=w[a]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((h-g)*(h+g)+f*(y/(u<0?u-p:u+p)-f))/h,v=c+(m=l=1);v<a+1;v++){if(p=w[v],y=O[v],f=m*p,p*=l,g=Math.sqrt(u*u+f*f),u=h*(l=u/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(s=0;s<x;s++)h=P[s][v-1],g=P[s][v],P[s][v-1]=h*l+g*m,P[s][v]=-h*m+g*l;if(g=Math.sqrt(u*u+f*f),u=(l=u/(O[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(s=0;s<S;s++)y=b[s][v-1],g=b[s][v],b[s][v-1]=y*l+g*m,b[s][v]=-y*m+g*l}w[c]=0,w[a]=u,O[a]=h}for(v=0;v<x;v++)O[v]<o&&(O[v]=0);return{u:b,q:O,v:P}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var uy=En((ku,Uu)=>{(function(n,r){typeof ku=="object"&&typeof Uu<"u"?Uu.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(ku,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,s=o.compare,a=i[t];t>0;){var c=t-1>>1,d=i[c];if(s(a,d)>=0)break;i[t]=d,t=c}i[t]=a},n.prototype._down=function(t){for(var o=this,i=o.data,s=o.compare,a=this.length>>1,c=i[t];t<a;){var d=(t<<1)+1,l=i[d],u=d+1;if(u<this.length&&s(i[u],l)<0&&(d=u,l=i[u]),s(l,c)>=0)break;i[t]=l,t=d}i[t]=c};function r(e,t){return e<t?-1:e>t?1:0}return n})});var py=En((_V,Hu)=>{"use strict";var ql=uy();ql.default&&(ql=ql.default);Hu.exports=dy;Hu.exports.default=dy;function dy(n,r,e){r=r||1;for(var t,o,i,s,a=0;a<n[0].length;a++){var c=n[0][a];(!a||c[0]<t)&&(t=c[0]),(!a||c[1]<o)&&(o=c[1]),(!a||c[0]>i)&&(i=c[0]),(!a||c[1]>s)&&(s=c[1])}var d=i-t,l=s-o,u=Math.min(d,l),p=u/2;if(u===0){var f=[t,o];return f.distance=0,f}for(var m=new ql(void 0,BP),h=t;h<i;h+=u)for(var y=o;y<s;y+=u)m.push(new Fo(h+p,y+p,p,n));var g=GP(n),x=new Fo(t+d/2,o+l/2,0,n);x.d>g.d&&(g=x);for(var S=m.length;m.length;){var w=m.pop();w.d>g.d&&(g=w,e&&console.log("found best %d after %d probes",Math.round(1e4*w.d)/1e4,S)),!(w.max-g.d<=r)&&(p=w.h/2,m.push(new Fo(w.x-p,w.y-p,p,n)),m.push(new Fo(w.x+p,w.y-p,p,n)),m.push(new Fo(w.x-p,w.y+p,p,n)),m.push(new Fo(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function BP(n,r){return r.max-n.max}function Fo(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=RP(n,r,t),this.max=this.d+this.h*Math.SQRT2}function RP(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var s=e[i],a=0,c=s.length,d=c-1;a<c;d=a++){var l=s[a],u=s[d];l[1]>r!=u[1]>r&&n<(u[0]-l[0])*(r-l[1])/(u[1]-l[1])+l[0]&&(t=!t),o=Math.min(o,VP(n,r,l,u))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function GP(n){for(var r=0,e=0,t=0,o=n[0],i=0,s=o.length,a=s-1;i<s;a=i++){var c=o[i],d=o[a],l=c[0]*d[1]-d[0]*c[1];e+=(c[0]+d[0])*l,t+=(c[1]+d[1])*l,r+=l*3}return r===0?new Fo(o[0][0],o[0][1],0,n):new Fo(e/r,t/r,0,n)}function VP(n,r,e,t){var o=e[0],i=e[1],s=t[0]-o,a=t[1]-i;if(s!==0||a!==0){var c=((n-o)*s+(r-i)*a)/(s*s+a*a);c>1?(o=t[0],i=t[1]):c>0&&(o+=s*c,i+=a*c)}return s=n-o,a=r-i,s*s+a*a}});var Tg=En(bc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var u=this||r;if(l=parseFloat(l),u.ctx||d(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,r.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*l)}return u}return u._volume},mute:function(l){var u=this||r;u.ctx||d(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,r.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return u},stop:function(){for(var l=this||r,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||r,u=l._howls.length-1;u>=0;u--)l._howls[u].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,d()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var u=new Audio;u.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var p=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._codecs={mp3:!!(!h&&(p||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var u=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var S=0;S<l._howls.length;S++)l._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var u=this||r;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var p=0;p<l._howls[u]._sounds.length;p++)if(!l._howls[u]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var u=0;u<l._howls.length;u++)l._howls[u]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var u=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(l)};e.prototype={init:function(l){var u=this;return r.ctx||d(),u._autoplay=l.autoplay||!1,u._format=typeof l.format!="string"?l.format:[l.format],u._html5=l.html5||!1,u._muted=l.mute||!1,u._loop=l.loop||!1,u._pool=l.pool||5,u._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,u._rate=l.rate||1,u._sprite=l.sprite||{},u._src=typeof l.src!="string"?l.src:[l.src],u._volume=l.volume!==void 0?l.volume:1,u._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=l.onend?[{fn:l.onend}]:[],u._onfade=l.onfade?[{fn:l.onfade}]:[],u._onload=l.onload?[{fn:l.onload}]:[],u._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],u._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],u._onpause=l.onpause?[{fn:l.onpause}]:[],u._onplay=l.onplay?[{fn:l.onplay}]:[],u._onstop=l.onstop?[{fn:l.onstop}]:[],u._onmute=l.onmute?[{fn:l.onmute}]:[],u._onvolume=l.onvolume?[{fn:l.onvolume}]:[],u._onrate=l.onrate?[{fn:l.onrate}]:[],u._onseek=l.onseek?[{fn:l.onseek}]:[],u._onunlock=l.onunlock?[{fn:l.onunlock}]:[],u._onresume=[],u._webAudio=r.usingWebAudio&&!u._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var l=this,u=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&r.codecs(f)){u=l._src[p];break}}if(!u){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=u,l._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,u){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return u||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),S=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=S*1e3/Math.abs(y._rate),b=p._sprite[l][0]/1e3,P=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=b,y._stop=P,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=P){p._ended(y);return}var v=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var C=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(C,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),u||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var O=function(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var C=v.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(p._playLock=!0,_(),C.then(function(){p._playLock=!1,v._unlocked=!0,u?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):u||(p._playLock=!1,_(),p._emit("play",y._id)),v.playbackRate=y._rate,v.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(E){p._emit("playerror",y._id,E)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var A=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||A)O();else{p._playLock=!0,p._state="loading";var T=function(){p._state="loaded",O(),v.removeEventListener(r._canPlayEvent,T,!1)};v.addEventListener(r._canPlayEvent,T,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(l)}}),u;for(var p=u._getSoundIds(l),f=0;f<p.length;f++){u._clearTimer(p[f]);var m=u._soundById(p[f]);if(m&&!m._paused&&(m._seek=u.seek(p[f]),m._rateSeek=0,m._paused=!0,u._stopFade(p[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._id:null)}return u},stop:function(l,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&p._clearSound(h._node))),u||p._emit("stop",h._id))}return p},mute:function(l,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,u)}}),p;if(typeof u>"u")if(typeof l=="boolean")p._muted=l;else return p._muted;for(var f=p._getSoundIds(u),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,u=arguments,p,f;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length>=2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,u)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,u[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,u,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,u,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),p=parseFloat(p),m.volume(l,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var x=r.ctx.currentTime,S=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(u,S)}m._startFadeInterval(g,l,u,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,u,p,f,m,h){var y=this,g=u,x=p-u,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var P=(Date.now()-b)/f;b=Date.now(),g+=x*P,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<u&&g<=p||p>u&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var u=this,p=u._soundById(l);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,l),p._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,p,f,m;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],l._loop=p;else return m=l._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,u=arguments,p,f;if(u.length===0)f=l._sounds[0]._id;else if(u.length===1){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):p=parseFloat(u[0])}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof p=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,u)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),S=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=S*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,u=arguments,p,f;if(u.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(u.length===1){var m=l._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):l._sounds.length&&(f=l._sounds[0]._id,p=parseFloat(u[0]))}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var S=function(){l._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var p=u._soundById(l);return p?!p._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(l){var u=this,p=u._duration,f=u._soundById(l);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,p=0;p<u.length;p++)u[p]._paused||l.stop(u[p]._id),l._webAudio||(l._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(r._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),r._releaseHtml5Audio(u[p]._node)),delete u[p]._node,l._clearTimer(u[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,p,f){var m=this,h=m["_on"+l];return typeof u=="function"&&h.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),m},off:function(l,u,p){var f=this,m=f["_on"+l],h=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(u===m[h].fn&&y||!u&&y){m.splice(h,1);break}}else if(l)f["_on"+l]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(l,u,p){var f=this;return f.on(l,u,p,1),f},_emit:function(l,u,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||l==="load")&&(setTimeout(function(y){y.call(this,u,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var u=this;if(u._queue.length>0){var p=u._queue[0];p.event===l&&(u._queue.shift(),u._loadQueue()),l||p.action()}return u},_ended:function(l){var u=this,p=l._sprite;if(!u._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(u._ended.bind(u,l),100),u;var f=!!(l._loop||u._sprite[p][2]);if(u._emit("end",l._id),!u._webAudio&&f&&u.stop(l._id,!0).play(l._id),u._webAudio&&f){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),m)}return u._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,u._clearTimer(l._id),u._cleanBuffer(l._node),r._autoSuspend()),!u._webAudio&&!f&&u.stop(l._id,!0),u},_clearTimer:function(l){var u=this;if(u._endTimers[l]){if(typeof u._endTimers[l]!="function")clearTimeout(u._endTimers[l]);else{var p=u._soundById(l);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,p=0;p<u._sounds.length;p++)if(l===u._sounds[p]._id)return u._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var u=0;u<l._sounds.length;u++)if(l._sounds[u]._ended)return l._sounds[u].reset();return new t(l)},_drain:function(){var l=this,u=l._pool,p=0,f=0;if(!(l._sounds.length<u)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=u)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[u._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=u._src,l._node.preload=u._preload===!0?"auto":u._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,u=l._parent;u._duration=Math.ceil(l._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,u=l._parent;u._duration===1/0&&(u._duration=Math.ceil(l._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var u=l._src;if(o[u]){l._duration=o[u].duration,c(l);return}if(/^data:[^;]+;base64,/.test(u)){for(var p=atob(u.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);a(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,u,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[u],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,u){u&&!l._duration&&(l._duration=u.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},d=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),u=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[1],10):null;if(l&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof bc<"u"&&(bc.Howler=r,bc.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(r,e,t,o,i,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")a._orientation=[r,e,t,o,i,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(r,e,t,o,i,s);else return c;return a},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var a=t._soundById(i[s]);if(a)if(typeof r=="number")a._stereo=r,a._pos=[r,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&n(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(r,0,0):a._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",a._id);else return a._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];else return i._pos;for(var s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];else return i._orientation;for(var s=i._getSoundIds(o),a=0;a<s.length;a++){var c=i._soundById(s[a]);if(c)if(typeof r=="number")c._orientation=[r,e,t],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),a=0;a<s.length;a++)if(i=r._soundById(s[a]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var d=i._panner;d?(d.coneInnerAngle=c.coneInnerAngle,d.coneOuterAngle=c.coneOuterAngle,d.coneOuterGain=c.coneOuterGain,d.distanceModel=c.distanceModel,d.maxDistance=c.maxDistance,d.refDistance=c.refDistance,d.rolloffFactor=c.rolloffFactor,d.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var B0=En((vX,D0)=>{D0.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),a=Number(o[i]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0}});var SO={};Yd(SO,{default:()=>Fc});module.exports=Z0(SO);var kc=require("three");function Kd(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function vr(n,r){return Object.setPrototypeOf(n,r),n}function La(n){return Array.isArray(n)?n:[n]}function Zd(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 Q0=typeof global=="object"&&global&&global.Object===Object&&global,Da=Q0;var J0=typeof self=="object"&&self&&self.Object===Object&&self,ex=Da||J0||Function("return this")(),ct=ex;var tx=ct.Symbol,gt=tx;var Qd=Object.prototype,rx=Qd.hasOwnProperty,ox=Qd.toString,Os=gt?gt.toStringTag:void 0;function nx(n){var r=rx.call(n,Os),e=n[Os];try{n[Os]=void 0;var t=!0}catch{}var o=ox.call(n);return t&&(r?n[Os]=e:delete n[Os]),o}var Jd=nx;var ix=Object.prototype,sx=ix.toString;function ax(n){return sx.call(n)}var ep=ax;var lx="[object Null]",cx="[object Undefined]",tp=gt?gt.toStringTag:void 0;function ux(n){return n==null?n===void 0?cx:lx:tp&&tp in Object(n)?Jd(n):ep(n)}var rr=ux;function dx(n){return n!=null&&typeof n=="object"}var Tt=dx;var px="[object Symbol]";function fx(n){return typeof n=="symbol"||Tt(n)&&rr(n)==px}var Ln=fx;function mx(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 Ba=mx;var hx=Array.isArray,et=hx;var yx=1/0,rp=gt?gt.prototype:void 0,op=rp?rp.toString:void 0;function np(n){if(typeof n=="string")return n;if(et(n))return Ba(n,np)+"";if(Ln(n))return op?op.call(n):"";var r=n+"";return r=="0"&&1/n==-yx?"-0":r}var ip=np;function gx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var or=gx;function xx(n){return n}var sp=xx;var vx="[object AsyncFunction]",bx="[object Function]",Sx="[object GeneratorFunction]",wx="[object Proxy]";function _x(n){if(!or(n))return!1;var r=rr(n);return r==bx||r==Sx||r==vx||r==wx}var Ra=_x;var Px=ct["__core-js_shared__"],Ga=Px;var ap=function(){var n=/[^.]+$/.exec(Ga&&Ga.keys&&Ga.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Tx(n){return!!ap&&ap in n}var lp=Tx;var Ox=Function.prototype,Ax=Ox.toString;function Cx(n){if(n!=null){try{return Ax.call(n)}catch{}try{return n+""}catch{}}return""}var oo=Cx;var Nx=/[\\^$.*+?()[\]{}|]/g,Ix=/^\[object .+?Constructor\]$/,Mx=Function.prototype,Ex=Object.prototype,Lx=Mx.toString,Dx=Ex.hasOwnProperty,Bx=RegExp("^"+Lx.call(Dx).replace(Nx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Rx(n){if(!or(n)||lp(n))return!1;var r=Ra(n)?Bx:Ix;return r.test(oo(n))}var cp=Rx;function Gx(n,r){return n?.[r]}var up=Gx;function Vx(n,r){var e=up(n,r);return cp(e)?e:void 0}var Ht=Vx;var zx=Ht(ct,"WeakMap"),Va=zx;var dp=Object.create,jx=function(){function n(){}return function(r){if(!or(r))return{};if(dp)return dp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),pp=jx;function Fx(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 fp=Fx;function kx(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var mp=kx;var Ux=800,Hx=16,Wx=Date.now;function qx(n){var r=0,e=0;return function(){var t=Wx(),o=Hx-(t-e);if(e=t,o>0){if(++r>=Ux)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var hp=qx;function $x(n){return function(){return n}}var yp=$x;var Yx=function(){try{var n=Ht(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Dn=Yx;var Xx=Dn?function(n,r){return Dn(n,"toString",{configurable:!0,enumerable:!1,value:yp(r),writable:!0})}:sp,gp=Xx;var Kx=hp(gp),xp=Kx;function Zx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var vp=Zx;var Qx=9007199254740991,Jx=/^(?:0|[1-9]\d*)$/;function ev(n,r){var e=typeof n;return r=r??Qx,!!r&&(e=="number"||e!="symbol"&&Jx.test(n))&&n>-1&&n%1==0&&n<r}var Bn=ev;function tv(n,r,e){r=="__proto__"&&Dn?Dn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var za=tv;function rv(n,r){return n===r||n!==n&&r!==r}var Rn=rv;var ov=Object.prototype,nv=ov.hasOwnProperty;function iv(n,r,e){var t=n[r];(!(nv.call(n,r)&&Rn(t,e))||e===void 0&&!(r in n))&&za(n,r,e)}var Gn=iv;function sv(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var a=r[i],c=t?t(e[a],n[a],a,e,n):void 0;c===void 0&&(c=n[a]),o?za(e,a,c):Gn(e,a,c)}return e}var Lr=sv;var bp=Math.max;function av(n,r,e){return r=bp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=bp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),fp(n,this,a)}}var Sp=av;var lv=9007199254740991;function cv(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=lv}var Vn=cv;function uv(n){return n!=null&&Vn(n.length)&&!Ra(n)}var ja=uv;var dv=Object.prototype;function pv(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||dv;return n===e}var zn=pv;function fv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var wp=fv;var mv="[object Arguments]";function hv(n){return Tt(n)&&rr(n)==mv}var Hc=hv;var _p=Object.prototype,yv=_p.hasOwnProperty,gv=_p.propertyIsEnumerable,xv=Hc(function(){return arguments}())?Hc:function(n){return Tt(n)&&yv.call(n,"callee")&&!gv.call(n,"callee")},jn=xv;function vv(){return!1}var Pp=vv;var Ap=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Tp=Ap&&typeof module=="object"&&module&&!module.nodeType&&module,bv=Tp&&Tp.exports===Ap,Op=bv?ct.Buffer:void 0,Sv=Op?Op.isBuffer:void 0,wv=Sv||Pp,tn=wv;var _v="[object Arguments]",Pv="[object Array]",Tv="[object Boolean]",Ov="[object Date]",Av="[object Error]",Cv="[object Function]",Nv="[object Map]",Iv="[object Number]",Mv="[object Object]",Ev="[object RegExp]",Lv="[object Set]",Dv="[object String]",Bv="[object WeakMap]",Rv="[object ArrayBuffer]",Gv="[object DataView]",Vv="[object Float32Array]",zv="[object Float64Array]",jv="[object Int8Array]",Fv="[object Int16Array]",kv="[object Int32Array]",Uv="[object Uint8Array]",Hv="[object Uint8ClampedArray]",Wv="[object Uint16Array]",qv="[object Uint32Array]",qe={};qe[Vv]=qe[zv]=qe[jv]=qe[Fv]=qe[kv]=qe[Uv]=qe[Hv]=qe[Wv]=qe[qv]=!0;qe[_v]=qe[Pv]=qe[Rv]=qe[Tv]=qe[Gv]=qe[Ov]=qe[Av]=qe[Cv]=qe[Nv]=qe[Iv]=qe[Mv]=qe[Ev]=qe[Lv]=qe[Dv]=qe[Bv]=!1;function $v(n){return Tt(n)&&Vn(n.length)&&!!qe[rr(n)]}var Cp=$v;function Yv(n){return function(r){return n(r)}}var Fn=Yv;var Np=typeof exports=="object"&&exports&&!exports.nodeType&&exports,As=Np&&typeof module=="object"&&module&&!module.nodeType&&module,Xv=As&&As.exports===Np,Wc=Xv&&Da.process,Kv=function(){try{var n=As&&As.require&&As.require("util").types;return n||Wc&&Wc.binding&&Wc.binding("util")}catch{}}(),no=Kv;var Ip=no&&no.isTypedArray,Zv=Ip?Fn(Ip):Cp,Fa=Zv;var Qv=Object.prototype,Jv=Qv.hasOwnProperty;function eb(n,r){var e=et(n),t=!e&&jn(n),o=!e&&!t&&tn(n),i=!e&&!t&&!o&&Fa(n),s=e||t||o||i,a=s?wp(n.length,String):[],c=a.length;for(var d in n)(r||Jv.call(n,d))&&!(s&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||Bn(d,c)))&&a.push(d);return a}var ka=eb;function tb(n,r){return function(e){return n(r(e))}}var Ua=tb;var rb=Ua(Object.keys,Object),Mp=rb;var ob=Object.prototype,nb=ob.hasOwnProperty;function ib(n){if(!zn(n))return Mp(n);var r=[];for(var e in Object(n))nb.call(n,e)&&e!="constructor"&&r.push(e);return r}var Ep=ib;function sb(n){return ja(n)?ka(n):Ep(n)}var kn=sb;function ab(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Lp=ab;var lb=Object.prototype,cb=lb.hasOwnProperty;function ub(n){if(!or(n))return Lp(n);var r=zn(n),e=[];for(var t in n)t=="constructor"&&(r||!cb.call(n,t))||e.push(t);return e}var Dp=ub;function db(n){return ja(n)?ka(n,!0):Dp(n)}var Un=db;var pb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,fb=/^\w*$/;function mb(n,r){if(et(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Ln(n)?!0:fb.test(n)||!pb.test(n)||r!=null&&n in Object(r)}var Bp=mb;var hb=Ht(Object,"create"),io=hb;function yb(){this.__data__=io?io(null):{},this.size=0}var Rp=yb;function gb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Gp=gb;var xb="__lodash_hash_undefined__",vb=Object.prototype,bb=vb.hasOwnProperty;function Sb(n){var r=this.__data__;if(io){var e=r[n];return e===xb?void 0:e}return bb.call(r,n)?r[n]:void 0}var Vp=Sb;var wb=Object.prototype,_b=wb.hasOwnProperty;function Pb(n){var r=this.__data__;return io?r[n]!==void 0:_b.call(r,n)}var zp=Pb;var Tb="__lodash_hash_undefined__";function Ob(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=io&&r===void 0?Tb:r,this}var jp=Ob;function Hn(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])}}Hn.prototype.clear=Rp;Hn.prototype.delete=Gp;Hn.prototype.get=Vp;Hn.prototype.has=zp;Hn.prototype.set=jp;var qc=Hn;function Ab(){this.__data__=[],this.size=0}var Fp=Ab;function Cb(n,r){for(var e=n.length;e--;)if(Rn(n[e][0],r))return e;return-1}var wo=Cb;var Nb=Array.prototype,Ib=Nb.splice;function Mb(n){var r=this.__data__,e=wo(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Ib.call(r,e,1),--this.size,!0}var kp=Mb;function Eb(n){var r=this.__data__,e=wo(r,n);return e<0?void 0:r[e][1]}var Up=Eb;function Lb(n){return wo(this.__data__,n)>-1}var Hp=Lb;function Db(n,r){var e=this.__data__,t=wo(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Wp=Db;function Wn(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])}}Wn.prototype.clear=Fp;Wn.prototype.delete=kp;Wn.prototype.get=Up;Wn.prototype.has=Hp;Wn.prototype.set=Wp;var _o=Wn;var Bb=Ht(ct,"Map"),Po=Bb;function Rb(){this.size=0,this.__data__={hash:new qc,map:new(Po||_o),string:new qc}}var qp=Rb;function Gb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var $p=Gb;function Vb(n,r){var e=n.__data__;return $p(r)?e[typeof r=="string"?"string":"hash"]:e.map}var To=Vb;function zb(n){var r=To(this,n).delete(n);return this.size-=r?1:0,r}var Yp=zb;function jb(n){return To(this,n).get(n)}var Xp=jb;function Fb(n){return To(this,n).has(n)}var Kp=Fb;function kb(n,r){var e=To(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Zp=kb;function qn(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])}}qn.prototype.clear=qp;qn.prototype.delete=Yp;qn.prototype.get=Xp;qn.prototype.has=Kp;qn.prototype.set=Zp;var rn=qn;var Ub="Expected a function";function $c(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Ub);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 s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new($c.Cache||rn),e}$c.Cache=rn;var Qp=$c;var Hb=500;function Wb(n){var r=Qp(n,function(t){return e.size===Hb&&e.clear(),t}),e=r.cache;return r}var Jp=Wb;var qb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$b=/\\(\\)?/g,Yb=Jp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(qb,function(e,t,o,i){r.push(o?i.replace($b,"$1"):t||e)}),r}),ef=Yb;function Xb(n){return n==null?"":ip(n)}var tf=Xb;function Kb(n,r){return et(n)?n:Bp(n,r)?[n]:ef(tf(n))}var cr=Kb;var Zb=1/0;function Qb(n){if(typeof n=="string"||Ln(n))return n;var r=n+"";return r=="0"&&1/n==-Zb?"-0":r}var Oo=Qb;function Jb(n,r){r=cr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Oo(r[e++])];return e&&e==t?n:void 0}var Ha=Jb;function eS(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var $n=eS;var rf=gt?gt.isConcatSpreadable:void 0;function tS(n){return et(n)||jn(n)||!!(rf&&n&&n[rf])}var of=tS;function nf(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=of),o||(o=[]);++i<s;){var a=n[i];r>0&&e(a)?r>1?nf(a,r-1,e,t,o):$n(o,a):t||(o[o.length]=a)}return o}var sf=nf;function rS(n){var r=n==null?0:n.length;return r?sf(n,1):[]}var af=rS;function oS(n){return xp(Sp(n,void 0,af),n+"")}var Wa=oS;var nS=Ua(Object.getPrototypeOf,Object),Yn=nS;var iS="[object Object]",sS=Function.prototype,aS=Object.prototype,lf=sS.toString,lS=aS.hasOwnProperty,cS=lf.call(Object);function uS(n){if(!Tt(n)||rr(n)!=iS)return!1;var r=Yn(n);if(r===null)return!0;var e=lS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&lf.call(e)==cS}var cf=uS;function dS(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 uf=dS;function pS(){this.__data__=new _o,this.size=0}var df=pS;function fS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var pf=fS;function mS(n){return this.__data__.get(n)}var ff=mS;function hS(n){return this.__data__.has(n)}var mf=hS;var yS=200;function gS(n,r){var e=this.__data__;if(e instanceof _o){var t=e.__data__;if(!Po||t.length<yS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new rn(t)}return e.set(n,r),this.size=e.size,this}var hf=gS;function Xn(n){var r=this.__data__=new _o(n);this.size=r.size}Xn.prototype.clear=df;Xn.prototype.delete=pf;Xn.prototype.get=ff;Xn.prototype.has=mf;Xn.prototype.set=hf;var Kn=Xn;function xS(n,r){return n&&Lr(r,kn(r),n)}var yf=xS;function vS(n,r){return n&&Lr(r,Un(r),n)}var gf=vS;var Sf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xf=Sf&&typeof module=="object"&&module&&!module.nodeType&&module,bS=xf&&xf.exports===Sf,vf=bS?ct.Buffer:void 0,bf=vf?vf.allocUnsafe:void 0;function SS(n,r){if(r)return n.slice();var e=n.length,t=bf?bf(e):new n.constructor(e);return n.copy(t),t}var wf=SS;function wS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var _f=wS;function _S(){return[]}var qa=_S;var PS=Object.prototype,TS=PS.propertyIsEnumerable,Pf=Object.getOwnPropertySymbols,OS=Pf?function(n){return n==null?[]:(n=Object(n),_f(Pf(n),function(r){return TS.call(n,r)}))}:qa,Zn=OS;function AS(n,r){return Lr(n,Zn(n),r)}var Tf=AS;var CS=Object.getOwnPropertySymbols,NS=CS?function(n){for(var r=[];n;)$n(r,Zn(n)),n=Yn(n);return r}:qa,$a=NS;function IS(n,r){return Lr(n,$a(n),r)}var Of=IS;function MS(n,r,e){var t=r(n);return et(n)?t:$n(t,e(n))}var Ya=MS;function ES(n){return Ya(n,kn,Zn)}var Cs=ES;function LS(n){return Ya(n,Un,$a)}var Xa=LS;var DS=Ht(ct,"DataView"),Ka=DS;var BS=Ht(ct,"Promise"),Za=BS;var RS=Ht(ct,"Set"),Qa=RS;var Af="[object Map]",GS="[object Object]",Cf="[object Promise]",Nf="[object Set]",If="[object WeakMap]",Mf="[object DataView]",VS=oo(Ka),zS=oo(Po),jS=oo(Za),FS=oo(Qa),kS=oo(Va),on=rr;(Ka&&on(new Ka(new ArrayBuffer(1)))!=Mf||Po&&on(new Po)!=Af||Za&&on(Za.resolve())!=Cf||Qa&&on(new Qa)!=Nf||Va&&on(new Va)!=If)&&(on=function(n){var r=rr(n),e=r==GS?n.constructor:void 0,t=e?oo(e):"";if(t)switch(t){case VS:return Mf;case zS:return Af;case jS:return Cf;case FS:return Nf;case kS:return If}return r});var so=on;var US=Object.prototype,HS=US.hasOwnProperty;function WS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&HS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Ef=WS;var qS=ct.Uint8Array,Qn=qS;function $S(n){var r=new n.constructor(n.byteLength);return new Qn(r).set(new Qn(n)),r}var Jn=$S;function YS(n,r){var e=r?Jn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Lf=YS;var XS=/\w*$/;function KS(n){var r=new n.constructor(n.source,XS.exec(n));return r.lastIndex=n.lastIndex,r}var Df=KS;var Bf=gt?gt.prototype:void 0,Rf=Bf?Bf.valueOf:void 0;function ZS(n){return Rf?Object(Rf.call(n)):{}}var Gf=ZS;function QS(n,r){var e=r?Jn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Vf=QS;var JS="[object Boolean]",ew="[object Date]",tw="[object Map]",rw="[object Number]",ow="[object RegExp]",nw="[object Set]",iw="[object String]",sw="[object Symbol]",aw="[object ArrayBuffer]",lw="[object DataView]",cw="[object Float32Array]",uw="[object Float64Array]",dw="[object Int8Array]",pw="[object Int16Array]",fw="[object Int32Array]",mw="[object Uint8Array]",hw="[object Uint8ClampedArray]",yw="[object Uint16Array]",gw="[object Uint32Array]";function xw(n,r,e){var t=n.constructor;switch(r){case aw:return Jn(n);case JS:case ew:return new t(+n);case lw:return Lf(n,e);case cw:case uw:case dw:case pw:case fw:case mw:case hw:case yw:case gw:return Vf(n,e);case tw:return new t;case rw:case iw:return new t(n);case ow:return Df(n);case nw:return new t;case sw:return Gf(n)}}var zf=xw;function vw(n){return typeof n.constructor=="function"&&!zn(n)?pp(Yn(n)):{}}var jf=vw;var bw="[object Map]";function Sw(n){return Tt(n)&&so(n)==bw}var Ff=Sw;var kf=no&&no.isMap,ww=kf?Fn(kf):Ff,Uf=ww;var _w="[object Set]";function Pw(n){return Tt(n)&&so(n)==_w}var Hf=Pw;var Wf=no&&no.isSet,Tw=Wf?Fn(Wf):Hf,qf=Tw;var Ow=1,Aw=2,Cw=4,$f="[object Arguments]",Nw="[object Array]",Iw="[object Boolean]",Mw="[object Date]",Ew="[object Error]",Yf="[object Function]",Lw="[object GeneratorFunction]",Dw="[object Map]",Bw="[object Number]",Xf="[object Object]",Rw="[object RegExp]",Gw="[object Set]",Vw="[object String]",zw="[object Symbol]",jw="[object WeakMap]",Fw="[object ArrayBuffer]",kw="[object DataView]",Uw="[object Float32Array]",Hw="[object Float64Array]",Ww="[object Int8Array]",qw="[object Int16Array]",$w="[object Int32Array]",Yw="[object Uint8Array]",Xw="[object Uint8ClampedArray]",Kw="[object Uint16Array]",Zw="[object Uint32Array]",He={};He[$f]=He[Nw]=He[Fw]=He[kw]=He[Iw]=He[Mw]=He[Uw]=He[Hw]=He[Ww]=He[qw]=He[$w]=He[Dw]=He[Bw]=He[Xf]=He[Rw]=He[Gw]=He[Vw]=He[zw]=He[Yw]=He[Xw]=He[Kw]=He[Zw]=!0;He[Ew]=He[Yf]=He[jw]=!1;function Ja(n,r,e,t,o,i){var s,a=r&Ow,c=r&Aw,d=r&Cw;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!or(n))return n;var l=et(n);if(l){if(s=Ef(n),!a)return mp(n,s)}else{var u=so(n),p=u==Yf||u==Lw;if(tn(n))return wf(n,a);if(u==Xf||u==$f||p&&!o){if(s=c||p?{}:jf(n),!a)return c?Of(n,gf(s,n)):Tf(n,yf(s,n))}else{if(!He[u])return o?n:{};s=zf(n,u,a)}}i||(i=new Kn);var f=i.get(n);if(f)return f;i.set(n,s),qf(n)?n.forEach(function(y){s.add(Ja(y,r,e,y,n,i))}):Uf(n)&&n.forEach(function(y,g){s.set(g,Ja(y,r,e,g,n,i))});var m=d?c?Xa:Cs:c?Un:kn,h=l?void 0:m(n);return vp(h||n,function(y,g){h&&(g=y,y=n[g]),Gn(s,g,Ja(y,r,e,g,n,i))}),s}var el=Ja;var Qw=1,Jw=4;function e1(n){return el(n,Qw|Jw)}var ao=e1;var t1="__lodash_hash_undefined__";function r1(n){return this.__data__.set(n,t1),this}var Kf=r1;function o1(n){return this.__data__.has(n)}var Zf=o1;function tl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new rn;++r<e;)this.add(n[r])}tl.prototype.add=tl.prototype.push=Kf;tl.prototype.has=Zf;var Qf=tl;function n1(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 Jf=n1;function i1(n,r){return n.has(r)}var em=i1;var s1=1,a1=2;function l1(n,r,e,t,o,i){var s=e&s1,a=n.length,c=r.length;if(a!=c&&!(s&&c>a))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var u=-1,p=!0,f=e&a1?new Qf:void 0;for(i.set(n,r),i.set(r,n);++u<a;){var m=n[u],h=r[u];if(t)var y=s?t(h,m,u,r,n,i):t(m,h,u,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!Jf(r,function(g,x){if(!em(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var rl=l1;function c1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var tm=c1;function u1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var rm=u1;var d1=1,p1=2,f1="[object Boolean]",m1="[object Date]",h1="[object Error]",y1="[object Map]",g1="[object Number]",x1="[object RegExp]",v1="[object Set]",b1="[object String]",S1="[object Symbol]",w1="[object ArrayBuffer]",_1="[object DataView]",om=gt?gt.prototype:void 0,Yc=om?om.valueOf:void 0;function P1(n,r,e,t,o,i,s){switch(e){case _1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case w1:return!(n.byteLength!=r.byteLength||!i(new Qn(n),new Qn(r)));case f1:case m1:case g1:return Rn(+n,+r);case h1:return n.name==r.name&&n.message==r.message;case x1:case b1:return n==r+"";case y1:var a=tm;case v1:var c=t&d1;if(a||(a=rm),n.size!=r.size&&!c)return!1;var d=s.get(n);if(d)return d==r;t|=p1,s.set(n,r);var l=rl(a(n),a(r),t,o,i,s);return s.delete(n),l;case S1:if(Yc)return Yc.call(n)==Yc.call(r)}return!1}var nm=P1;var T1=1,O1=Object.prototype,A1=O1.hasOwnProperty;function C1(n,r,e,t,o,i){var s=e&T1,a=Cs(n),c=a.length,d=Cs(r),l=d.length;if(c!=l&&!s)return!1;for(var u=c;u--;){var p=a[u];if(!(s?p in r:A1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++u<c;){p=a[u];var g=n[p],x=r[p];if(t)var S=s?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(S===void 0?g===x||o(g,x,e,t,i):S)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,b=r.constructor;w!=b&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var im=C1;var N1=1,sm="[object Arguments]",am="[object Array]",ol="[object Object]",I1=Object.prototype,lm=I1.hasOwnProperty;function M1(n,r,e,t,o,i){var s=et(n),a=et(r),c=s?am:so(n),d=a?am:so(r);c=c==sm?ol:c,d=d==sm?ol:d;var l=c==ol,u=d==ol,p=c==d;if(p&&tn(n)){if(!tn(r))return!1;s=!0,l=!1}if(p&&!l)return i||(i=new Kn),s||Fa(n)?rl(n,r,e,t,o,i):nm(n,r,c,e,t,o,i);if(!(e&N1)){var f=l&&lm.call(n,"__wrapped__"),m=u&&lm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new Kn),o(h,y,e,t,i)}}return p?(i||(i=new Kn),im(n,r,e,t,o,i)):!1}var cm=M1;function um(n,r,e,t,o){return n===r?!0:n==null||r==null||!Tt(n)&&!Tt(r)?n!==n&&r!==r:cm(n,r,e,t,um,o)}var dm=um;function E1(n,r){return n!=null&&r in Object(n)}var pm=E1;function L1(n,r,e){r=cr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=Oo(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Vn(o)&&Bn(s,o)&&(et(n)||jn(n)))}var fm=L1;function D1(n,r){return n!=null&&fm(n,r,pm)}var mm=D1;function B1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var hm=B1;function R1(n,r){return r.length<2?n:Ha(n,uf(r,0,-1))}var ym=R1;function G1(n,r){return dm(n,r)}var Ns=G1;function V1(n,r){return r=cr(r,n),n=ym(n,r),n==null||delete n[Oo(hm(r))]}var gm=V1;function z1(n){return cf(n)?void 0:n}var xm=z1;var j1=1,F1=2,k1=4,U1=Wa(function(n,r){var e={};if(n==null)return e;var t=!1;r=Ba(r,function(i){return i=cr(i,n),t||(t=i.length>1),i}),Lr(n,Xa(n),e),t&&(e=el(e,j1|F1|k1,xm));for(var o=r.length;o--;)gm(e,r[o]);return e}),ei=U1;function H1(n,r,e,t){if(!or(n))return n;r=cr(r,n);for(var o=-1,i=r.length,s=i-1,a=n;a!=null&&++o<i;){var c=Oo(r[o]),d=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var l=a[c];d=t?t(l,c,a):void 0,d===void 0&&(d=or(l)?l:Bn(r[o+1])?[]:{})}Gn(a,c,d),a=a[c]}return n}var vm=H1;function W1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],a=Ha(n,s);e(a,s)&&vm(i,cr(s,n),a)}return i}var bm=W1;function q1(n,r){return bm(n,r,function(e,t){return mm(n,t)})}var Sm=q1;var $1=Wa(function(n,r){return n==null?{}:Sm(n,r)}),lo=$1;var Ue=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,Ue.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:s}=r,a={...e,[i]:s};return Object.setPrototypeOf(a,Ue.prototype),{data:a,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,Ue.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Is(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"&&Is(t)}return Object.freeze(n)}function wm(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 ti=class extends Error{};function nl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Dr(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 s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function ri(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 _m(){return typeof process<"u"}function Pm(n,r){for(let e of n)r(e.id,e.data)!==!0&&Pm(e.children,r)}function Tm(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)Tm(e,r)}var Ke=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ke.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Is(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&&Tm(o,t)}}traverse(e){Pm(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),s=this.childrenArray(i),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let a=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let d=i.findIndex(l=>l.id===c);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:a}}Object.setPrototypeOf(i,Ke.prototype);let s=i;return s.fillCaches(),s}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:s,children:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,d=this.childrenArray(c),l={fi:o,id:i,data:s,children:a};return d=[...d,l],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(l),{data:this.modifyArrayBy(c,d),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),s=i.findIndex(d=>d.id===t);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,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 f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new ti("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let a=s,c=this.childrenArray(s),d=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(d,1)[0],u=this.modifyArrayBy(s,c);s=t,c=u.childrenArray(s);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:a,fi:p,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(s=>s.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(s=>s.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)=>wm(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),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,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 Dr(0,o,o);{let s=i[0].fi;return Dr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=i.find(c=>c.fi>s.fi);if(a===void 0){let c=i[i.length-1].fi;return Dr(c,c+o,o)}else return Dr(s.fi,a.fi,o)}}};var oi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let d=parseInt(c);if(isNaN(d))throw new Error("wrong index");i[c]=s[d],s[d]=o[c],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let d=o[c];d===void 0?delete s[c]:s[c]=d,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(oi||(oi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Is(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,s=i.findIndex(d=>d.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ye.prototype);let t=e;return _m()||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,s=this,a={fi:t,id:o,data:i};return s=[...s,a],s.sort((d,l)=>d.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(l=>l.id===o);if(s===-1)return null;let a=i[s].fi,c={...i[s],fi:t};return i[s]=c,i.sort((l,u)=>l.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,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 Dr(0,t,t);{let i=o[0].fi;return Dr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return Dr(a,a+t,t)}else return Dr(i.fi,s.fi,t)}}};function ni(n){return n&&typeof n=="object"&&n instanceof Ze}var Ze=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&&!ni(t))return null;o+=1}t=t?nl(t):new Ze;for(let[c,d]of Object.entries(r.props)){let l=t[c];i[c]=l,d===void 0?delete t[c]:t[c]=d}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=nl(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let d=nl(c);d[r.path[o-1]]=t,t=d}else{let d=new Ze;d[r.path[o-1]]=t,t=d}}o-=1}let s=Object.setPrototypeOf(t,Ze.prototype),a={...r,props:i};return{data:s,actual:r,reverse:a}}},Br;(t=>{function n(o,i){return Ms(o,i)??o}t.apply=n;function r(o,i){return Kc(o,i)}t.merge=r;function e(o,i){let s=0,a=i.path,c=o;for(;s<a.length&&c!==void 0;){if(c=Rt.zoomOnce(c,a[s]),c===void 0)return i;if(!ni(c))return;s+=1}if(c===void 0)return i;if(!!ni(c))if(i.type===0){let d={...i.props};for(let l of Object.keys(c))delete d[l];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=Xc([i],c);return d?(console.log(d),d):i}else return i}t.filterOp=e})(Br||(Br={}));function Xc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Ms(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let a=Xc(o.children,r);return a!==void 0?e=!0:a=o.children,{...o,id:i,data:s,children:a}}else return{...o,id:i,data:s}});if(e)return t}function Y1(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Ms(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Ms(n,r){if(!ni(r))return r;if(n instanceof Ke){let e=Xc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return Y1(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=Ms(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Ze)return Kc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=Ms(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Kc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!ni(r))return r;if(!ni(n))return Br.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 Ze;for(let o of e){let i=Kc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Om(n,r){let e={cur:[],result:[],len:0};return n=Es(n,r,e)??n,[n,e.result]}function il(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function sl(n){n&&(n.len-=1)}function X1(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Am(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=Es(i.data,r,il(e,s));sl(e),t=t||c!==void 0,c===void 0&&(c=i.data);let d=Am(i.children,r,e);return d!==void 0?t=!0:d=i.children,{...i,id:s,data:c,children:d}});if(t)return o}function K1(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,a=r[s];if(a!==void 0&&typeof a=="string"&&(t=!0,s=a,e!==null))throw new Error("not supported");let c=Es(i.data,r,il(e,s));return sl(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Es(n,r,e){if(n instanceof Ke){let t=Am(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return K1(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let a=Es(i,r,il(e,s));return sl(e),t=t||a!==void 0,a===void 0&&(a=i),a});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!ri(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let a=r[i];if(typeof a=="string"){if(e!==null)throw new Error("not supported");o=!0,i=a}let c=Es(s,r,il(e,i));sl(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");X1(e)}return t}else return}}var al;(r=>{function n(e,t){let o=Rt.zoom(t,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(al||(al={}));var Ot;(a=>{function n(c,d){return{...c,path:c.path.slice(d)}}a.drop=n;function r(c,d){return e(c,d)?.data??c}a.applySimple=r;function e(c,d){let l=d.path;for(var u=[];;){let p;if(c instanceof Ze&&d.type===0&&(p=c.runOp({...d,path:l.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===l.length&&(c instanceof Ke||c instanceof ye||c instanceof Ue?p=c.runOp(d):p=oi.runOp(c,d)),p!==void 0)if(p!==null){let h=p.data;for(let y=u.length-1;y>=0;y--){let g=l[y],x=u[y];if(x instanceof Ke){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Ue){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof Ze){let S={...x,[g]:h};h=Object.setPrototypeOf(S,Ze.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=h;h=[...x],h[g]=S}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[u.length],m;if(c instanceof Ke){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)u.push(c),c=m;else return null}}a.apply=e;function t(c,d){for(let l=0;l<c.length&&l<d.length;l++)if(c[l]!==d[l])return!0;return!1}a.pathDisjoint=t;function o(c,d){if(c.length!==d.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==d[l])return!1;return!0}a.pathEq=o;function i(c,d){return t(c.path,d.path)}a.commutative=i;function s(c,d){return c.type===0&&d.type===0&&o(c.path,d.path)?Object.keys(c.props).every(l=>d.props[l]!==void 0):!1}a.subsumed=s})(Ot||(Ot={}));var Zc;(c=>{function n(){return[]}c.empty=n;function r(d,l){let u=[];for(let p of d){let[f,...m]=p.path;f===l&&u.push({...p,path:m})}return u}c.removePrefix=r;function e(d,l){return d.map(u=>({...u,path:[l,...u.path]}))}c.addPrefix=e;function t(d,l){return[...d,...l]}c.concat=t;function o(d,l){return[...d.filter(p=>!l.some(f=>Ot.subsumed(p,f))),...l]}c.compress=o;function i(d,l){return d.every(u=>l.every(p=>Ot.commutative(u,p)))}c.commutative=i;function s(d,l){for(let u of l){let p=a(d,u);p!==null&&(d=p.data)}return d}c.applyAll=s;function a(d,l){var u=d;let p=[],f=[];for(let m of l)try{if(m.type===3){let h=Rt.zoom(u,[...m.path,m.id]),y=Ot.apply(u,{...m,type:2});if(y!==null){u=y.data;let[g,x]=Om(u,{[m.id]:h});u=g;for(let S of x){let w=S[S.length-1];S.splice(S.length-1,1),p.push({type:0,path:S,props:{[w]:h}}),f.push({type:0,path:S,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=Ot.apply(u,m);h!==null&&(p.push(h.actual),u=h.data,f.push(h.reverse))}}catch(h){if(h instanceof ti)return null;throw h}return{data:u,actual:p,reverse:f.reverse()}}c.apply=a})(Zc||(Zc={}));var Cm=Symbol(),Z1=Symbol(),cl=Symbol(),nn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof ll);){let s=o._path,a=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,a)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[cl];t&&t(),delete this._children[r]}}}},Jc=class extends nn{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,oi.runOp(this._current,r),r.path)}},eu=class extends nn{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,Ue.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Nm={get(n,r){if(r===cl)return()=>{n._parent=null};if(r===Cm)return n._current;if(r===Z1)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],s=ul(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):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]}}},Q1={...Nm,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}},J1={...Nm,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}},ii=class extends nn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[cl]=()=>{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,s=ul(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}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)}},si=class extends nn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[cl]=()=>{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,s=ul(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):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 Qc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Rt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var ll=class extends nn{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){Qc(this.ts,e,r),Qc(this.actual,t,r),Qc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ul(n,r,e){return e instanceof Ke?new ii(n,r,e):e instanceof ye?new si(n,r,e):e instanceof Ue?new Proxy(new eu(n,r,e),J1):e!==null&&typeof e=="object"?ri(e)?e:new Proxy(new Jc(n,r,e),Q1):e}function tu(n){let r=new ll(n);return[ul(r,"",n),r]}function ai(n,r){let[e,t]=tu(n);return r(e),t.result()}function ut(n){return n instanceof ii||n instanceof si?n._current:n!==null&&typeof n=="object"?n[Cm]:n}var Rt;(o=>{function n(i,s){if(s.length===i.length)for(var a=0;a<i.length;){if(i[a]!==s[a])return!1;a+=1}else return!1;return!0}o.equal=n;function r(i,s,a){let c=t(a,i);if(c!==void 0&&typeof c=="object"&&c!==null){let d={...s};return Object.keys(c).forEach(l=>{delete d[l]}),d}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof Ke||i instanceof ii)&&typeof s=="string")return i.data(s);if((i instanceof ye||i instanceof si)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function t(i,s,a=0){for(;a<s.length&&i!==void 0;)i=e(i,s[a]),a+=1;return i}o.zoom=t})(Rt||(Rt={}));function Im(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 Lt(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 dl=class{},Ls=class extends dl{constructor(e){super();this.id=e}},Ds=class extends dl{constructor(e){super();this.data=e}};var ou;try{ou=new TextDecoder}catch{}var oe,Co,I=0;var Vm=[],nu=Vm,iu=0,Wt={},De,Ao,ur=0,Rr=0,nr,co,Gt=[],Ge,Mm={useRecords:!1,mapsAsObjects:!0},Bs=class{},au=new Bs;au.name="MessagePack 0xC1";var li=!1,Gr=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(oe)return Um(()=>(fl(),this?this.unpack(r,e):Gr.prototype.unpack.call(Mm,r,e)));Co=e>-1?e:r.length,I=0,iu=0,Rr=0,Ao=null,nu=Vm,nr=null,oe=r;try{Ge=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw oe=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 Gr){if(Wt=this,this.structures)return De=this.structures,pl();(!De||De.length>0)&&(De=[])}else Wt=Mm,(!De||De.length>0)&&(De=[]);return pl()}unpackMultiple(r,e){let t,o=0;try{li=!0;let i=r.length,s=this?this.unpack(r,i):yl.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(pl())===!1)return}else{for(t=[s];I<i;)o=I,t.push(pl());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{li=!1,fl()}}_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 pl(){try{if(!Wt.trusted&&!li){let r=De.sharedLength||0;r<De.length&&(De.length=r)}let n=tt();if(I==Co)De.restoreStructures&&Em(),De=null,oe=null,co&&(co=null);else if(I>Co){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!li)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw De.restoreStructures&&Em(),fl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Em(){for(let n in De.restoreStructures)De[n]=De.restoreStructures[n];De.restoreStructures=null}function tt(){let n=oe[I++];if(n<160)if(n<128){if(n<64)return n;{let r=De[n&63]||Wt.getStructures&&zm()[n&63];return r?(r.read||(r.read=lu(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Wt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Fm()]=tt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(tt(),tt());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=tt();return r}else if(n<192){let r=n-160;if(Rr>=I)return Ao.slice(I-ur,(I+=r)-ur);if(Rr==0&&Co<140){let e=r<16?cu(r):jm(r);if(e!=null)return e}return su(r)}else{let r;switch(n){case 192:return null;case 193:return nr?(r=tt(),r>0?nr[1].slice(nr.position1,nr.position1+=r):nr[0].slice(nr.position0,nr.position0-=r)):au;case 194:return!1;case 195:return!0;case 196:return ru(oe[I++]);case 197:return r=Ge.getUint16(I),I+=2,ru(r);case 198:return r=Ge.getUint32(I),I+=4,ru(r);case 199:return sn(oe[I++]);case 200:return r=Ge.getUint16(I),I+=2,sn(r);case 201:return r=Ge.getUint32(I),I+=4,sn(r);case 202:if(r=Ge.getFloat32(I),Wt.useFloat32>2){let e=hl[(oe[I]&127)<<1|oe[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Ge.getFloat64(I),I+=8,r;case 204:return oe[I++];case 205:return r=Ge.getUint16(I),I+=2,r;case 206:return r=Ge.getUint32(I),I+=4,r;case 207:return Wt.int64AsNumber?(r=Ge.getUint32(I)*4294967296,r+=Ge.getUint32(I+4)):r=Ge.getBigUint64(I),I+=8,r;case 208:return Ge.getInt8(I++);case 209:return r=Ge.getInt16(I),I+=2,r;case 210:return r=Ge.getInt32(I),I+=4,r;case 211:return Wt.int64AsNumber?(r=Ge.getInt32(I)*4294967296,r+=Ge.getUint32(I+4)):r=Ge.getBigInt64(I),I+=8,r;case 212:if(r=oe[I++],r==114)return Gm(oe[I++]&63);{let e=Gt[r];if(e)return e.read?(I++,e.read(tt())):e.noBuffer?(I++,e()):e(oe.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=oe[I],r==114?(I++,Gm(oe[I++]&63,oe[I++])):sn(2);case 214:return sn(4);case 215:return sn(8);case 216:return sn(16);case 217:return r=oe[I++],Rr>=I?Ao.slice(I-ur,(I+=r)-ur):t_(r);case 218:return r=Ge.getUint16(I),I+=2,Rr>=I?Ao.slice(I-ur,(I+=r)-ur):r_(r);case 219:return r=Ge.getUint32(I),I+=4,Rr>=I?Ao.slice(I-ur,(I+=r)-ur):o_(r);case 220:return r=Ge.getUint16(I),I+=2,Dm(r);case 221:return r=Ge.getUint32(I),I+=4,Dm(r);case 222:return r=Ge.getUint16(I),I+=2,Bm(r);case 223:return r=Ge.getUint32(I),I+=4,Bm(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 e_=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function lu(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>e_.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(tt);return n.highByte===0&&(n.read=Lm(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=tt()}return t}return e.count=0,n.highByte===0?Lm(r,e):e}var Lm=(n,r)=>function(){let e=oe[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=De[t]||zm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=lu(o,n)),o.read()};function zm(){let n=Um(()=>(oe=null,Wt.getStructures()));return De=Wt._mergeStructures(n,De)}var su=ml,t_=ml,r_=ml,o_=ml;function ml(n){let r;if(n<16&&(r=cu(n)))return r;if(n>64&&ou)return ou.decode(oe.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=oe[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=oe[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=oe[I++]&63,s=oe[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=oe[I++]&63,s=oe[I++]&63,a=oe[I++]&63,c=(o&7)<<18|i<<12|s<<6|a;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=xt.apply(String,t),t.length=0)}return t.length>0&&(r+=xt.apply(String,t)),r}function Dm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=tt();return r}function Bm(n){if(Wt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Fm()]=tt();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(tt(),tt());return r}}var xt=String.fromCharCode;function jm(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=oe[I++];if((o&128)>0){I=r;return}e[t]=o}return xt.apply(String,e)}function cu(n){if(n<4)if(n<2){if(n===0)return"";{let r=oe[I++];if((r&128)>1){I-=1;return}return xt(r)}}else{let r=oe[I++],e=oe[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return xt(r,e);let t=oe[I++];if((t&128)>0){I-=3;return}return xt(r,e,t)}else{let r=oe[I++],e=oe[I++],t=oe[I++],o=oe[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return xt(r,e,t,o);{let i=oe[I++];if((i&128)>0){I-=5;return}return xt(r,e,t,o,i)}}else if(n<8){let i=oe[I++],s=oe[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return xt(r,e,t,o,i,s);let a=oe[I++];if((a&128)>0){I-=7;return}return xt(r,e,t,o,i,s,a)}else{let i=oe[I++],s=oe[I++],a=oe[I++],c=oe[I++];if((i&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return xt(r,e,t,o,i,s,a,c);{let d=oe[I++];if((d&128)>0){I-=9;return}return xt(r,e,t,o,i,s,a,c,d)}}else if(n<12){let d=oe[I++],l=oe[I++];if((d&128)>0||(l&128)>0){I-=10;return}if(n<11)return xt(r,e,t,o,i,s,a,c,d,l);let u=oe[I++];if((u&128)>0){I-=11;return}return xt(r,e,t,o,i,s,a,c,d,l,u)}else{let d=oe[I++],l=oe[I++],u=oe[I++],p=oe[I++];if((d&128)>0||(l&128)>0||(u&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return xt(r,e,t,o,i,s,a,c,d,l,u,p);{let f=oe[I++];if((f&128)>0){I-=13;return}return xt(r,e,t,o,i,s,a,c,d,l,u,p,f)}}else{let f=oe[I++],m=oe[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return xt(r,e,t,o,i,s,a,c,d,l,u,p,f,m);let h=oe[I++];if((h&128)>0){I-=15;return}return xt(r,e,t,o,i,s,a,c,d,l,u,p,f,m,h)}}}}}function ru(n){return Wt.copyBuffers?Uint8Array.prototype.slice.call(oe,I,I+=n):oe.subarray(I,I+=n)}function sn(n){let r=oe[I++];if(Gt[r])return Gt[r](oe.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Rm=new Array(4096);function Fm(){let n=oe[I++];if(n>=160&&n<192){if(n=n-160,Rr>=I)return Ao.slice(I-ur,(I+=n)-ur);if(!(Rr==0&&Co<180))return su(n)}else return I--,tt();let r=(n<<5^(n>1?Ge.getUint16(I):n>0?oe[I]:0))&4095,e=Rm[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ge.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=oe[t++],i!=e[s++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Rm[r]=e,e.bytes=n;t<o;)i=Ge.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=oe[t++],e.push(i);let a=n<16?cu(n):jm(n);return a!=null?e.string=a:e.string=su(n)}var Gm=(n,r)=>{var e=tt();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=De[n];return o&&o.isShared&&((De.restoreStructures||(De.restoreStructures=[]))[n]=o),De[n]=e,e.read=lu(e,t),e.read()},km=typeof self=="object"?self:global;Gt[0]=()=>{};Gt[0].noBuffer=!0;Gt[101]=()=>{let n=tt();return(km[n[0]]||Error)(n[1])};Gt[105]=n=>{let r=Ge.getUint32(I-4);co||(co=new Map);let e=oe[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};co.set(r,o);let i=tt();return o.used?Object.assign(t,i):(o.target=i,i)};Gt[112]=n=>{let r=Ge.getUint32(I-4),e=co.get(r);return e.used=!0,e.target};Gt[115]=()=>new Set(tt());var uu=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Gt[116]=n=>{let r=n[0],e=uu[r];if(!e)throw new Error("Could not find typed array for code "+r);return new km[e](Uint8Array.prototype.slice.call(n,1).buffer)};Gt[120]=()=>{let n=tt();return new RegExp(n[0],n[1])};Gt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,nr=[tt(),tt()],nr.position0=0,nr.position1=0;let t=I;I=e;try{return tt()}finally{I=t}};Gt[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 Um(n){let r=Co,e=I,t=iu,o=ur,i=Rr,s=Ao,a=nu,c=co,d=nr,l=new Uint8Array(oe.slice(0,Co)),u=De,p=De.slice(0,De.length),f=Wt,m=li,h=n();return Co=r,I=e,iu=t,ur=o,Rr=i,Ao=s,nu=a,co=c,nr=d,oe=l,li=m,De=u,De.splice(0,De.length,...p),Wt=f,Ge=new DataView(oe.buffer,oe.byteOffset,oe.byteLength),h}function fl(){oe=null,co=null,De=null}function Hm(n){n.unpack?Gt[n.type]=n.unpack:Gt[n.type]=n}var hl=new Array(147);for(let n=0;n<256;n++)hl[n]=+("1e"+Math.floor(45.15-n*.30103));var yl=new Gr({useRecords:!1}),n_=yl.unpack,i_=yl.unpackMultiple,s_=yl.unpack,gl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},a_=new Float32Array(1),jL=new Uint8Array(a_.buffer,0,4);var xl;try{xl=new TextEncoder}catch{}var vl,pu,bl=typeof Buffer<"u",du=bl?Buffer.allocUnsafeSlow:Uint8Array,Ym=bl?Buffer:Uint8Array,Wm=bl?4294967296:2144337920,G,at,M=0,Vr,zr=null,l_=/[\u0080-\uFFFF]/,Rs=Symbol("record-id"),an=class extends Gr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,a,c=0,d=Ym.prototype.utf8Write?function(v,N,O){return G.utf8Write(v,N,O)}:xl&&xl.encodeInto?function(v,N){return xl.encodeInto(v,G.subarray(N)).written}:!1,l=this;r||(r={});let u=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),u&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(v,N){if(G||(G=new du(8192),at=new DataView(G.buffer,0,8192),M=0),Vr=G.length-10,Vr-M<2048?(G=new du(G.length),at=new DataView(G.buffer,0,G.length),Vr=G.length-10,M=0):M=M+7&2147483640,t=M,a=l.structuredClone?new Map:null,l.bundleStrings?(zr=["",""],G[M++]=214,G[M++]=98,zr.position=M-t,M+=4):zr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let O=o.sharedLength||0;if(O>f)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<O;A++){let T=o[A];if(!T)continue;let C,E=o.transitions;for(let L=0,X=T.length;L<X;L++){let B=T[L];C=E[B],C||(C=E[B]=Object.create(null)),E=C}E[Rs]=A+64}c=O}u||(o.nextId=O+64)}i&&(i=!1),s=o||[];try{if(b(v),zr){at.setUint32(zr.position+t,M-zr.position-t);let O=zr;zr=null,b(O[0]),b(O[1])}if(l.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>Vr&&_(M),l.offset=M;let O=u_(G.subarray(t,M),a.idsToInsert);return a=null,O}return N&Km?(G.start=t,G.end=M,G):G.subarray(t,M)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!u){for(let O=0,A=x.length;O<A;O++)x[O][Rs]=0;x=[]}if(i&&l.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let A=G.subarray(t,M);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=O,A)}}N&g_&&(M=t)}};let b=v=>{M>Vr&&(G=_(M));var N=typeof v,O;if(N==="string"){let A=v.length;if(zr&&A>=8&&A<4096){let E=l_.test(v);zr[E?0:1]+=v,G[M++]=193,b(E?-A:A);return}let T;A<32?T=1:A<256?T=2:A<65536?T=3:T=5;let C=A*3;if(M+C>Vr&&(G=_(M+C)),A<64||!d){let E,L,X,B=M+T;for(E=0;E<A;E++)L=v.charCodeAt(E),L<128?G[B++]=L:L<2048?(G[B++]=L>>6|192,G[B++]=L&63|128):(L&64512)===55296&&((X=v.charCodeAt(E+1))&64512)===56320?(L=65536+((L&1023)<<10)+(X&1023),E++,G[B++]=L>>18|240,G[B++]=L>>12&63|128,G[B++]=L>>6&63|128,G[B++]=L&63|128):(G[B++]=L>>12|224,G[B++]=L>>6&63|128,G[B++]=L&63|128);O=B-M-T}else O=d(v,M+T,C);O<32?G[M++]=160|O:O<256?(T<2&&G.copyWithin(M+2,M+1,M+1+O),G[M++]=217,G[M++]=O):O<65536?(T<3&&G.copyWithin(M+3,M+2,M+2+O),G[M++]=218,G[M++]=O>>8,G[M++]=O&255):(T<5&&G.copyWithin(M+5,M+3,M+3+O),G[M++]=219,at.setUint32(M,O),M+=4),M+=O}else if(N==="number")if(v>>>0===v)v<64?G[M++]=v:v<256?(G[M++]=204,G[M++]=v):v<65536?(G[M++]=205,G[M++]=v>>8,G[M++]=v&255):(G[M++]=206,at.setUint32(M,v),M+=4);else if(v>>0===v)v>=-32?G[M++]=256+v:v>=-128?(G[M++]=208,G[M++]=v+256):v>=-32768?(G[M++]=209,at.setInt16(M,v),M+=2):(G[M++]=210,at.setInt32(M,v),M+=4);else{let A;if((A=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){G[M++]=202,at.setFloat32(M,v);let T;if(A<4||(T=v*hl[(G[M]&127)<<1|G[M+1]>>7])>>0===T){M+=4;return}else M--}G[M++]=203,at.setFloat64(M,v),M+=8}else if(N==="object")if(!v)G[M++]=192;else{if(a){let T=a.get(v);if(T){if(!T.id){let C=a.idsToInsert||(a.idsToInsert=[]);T.id=C.push(T)}G[M++]=214,G[M++]=112,at.setUint32(M,T.id),M+=4;return}else a.set(v,{offset:M-t})}let A=v.constructor;if(A===Object)P(v,!0);else if(A===Array){O=v.length,O<16?G[M++]=144|O:O<65536?(G[M++]=220,G[M++]=O>>8,G[M++]=O&255):(G[M++]=221,at.setUint32(M,O),M+=4);for(let T=0;T<O;T++)b(v[T])}else if(A===Map){O=v.size,O<16?G[M++]=128|O:O<65536?(G[M++]=222,G[M++]=O>>8,G[M++]=O&255):(G[M++]=223,at.setUint32(M,O),M+=4);for(let[T,C]of v)b(T),b(C)}else{for(let T=0,C=vl.length;T<C;T++){let E=pu[T];if(v instanceof E){let L=vl[T];if(L.write){L.type&&(G[M++]=212,G[M++]=L.type,G[M++]=0),b(L.write.call(this,v));return}let X=G,B=at,Q=M;G=null;let z;try{z=L.pack.call(this,v,V=>(G=X,X=null,M+=V,M>Vr&&_(M),{target:G,targetView:at,position:M-V}),b)}finally{X&&(G=X,at=B,M=Q,Vr=G.length-10)}z&&(z.length+M>Vr&&_(z.length+M),M=c_(z,G,M,L.type));return}}P(v,!v.hasOwnProperty)}}else if(N==="boolean")G[M++]=v?195:194;else if(N==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))G[M++]=211,at.setBigInt64(M,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)G[M++]=207,at.setBigUint64(M,v);else if(this.largeBigIntToFloat)G[M++]=203,at.setFloat64(M,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(N==="undefined")this.encodeUndefinedAsNil?G[M++]=192:(G[M++]=212,G[M++]=0,G[M++]=0);else if(N==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},P=this.useRecords===!1?this.variableMapSize?v=>{let N=Object.keys(v),O=N.length;O<16?G[M++]=128|O:O<65536?(G[M++]=222,G[M++]=O>>8,G[M++]=O&255):(G[M++]=223,at.setUint32(M,O),M+=4);let A;for(let T=0;T<O;T++)b(A=N[T]),b(v[A])}:(v,N)=>{G[M++]=222;let O=M-t;M+=2;let A=0;for(let T in v)(N||v.hasOwnProperty(T))&&(b(T),b(v[T]),A++);G[O+++t]=A>>8,G[O+t]=A&255}:v=>{let N=Object.keys(v),O,A=s.transitions||(s.transitions=Object.create(null)),T=0;for(let E=0,L=N.length;E<L;E++){let X=N[E];O=A[X],O||(O=A[X]=Object.create(null),T++),A=O}let C=A[Rs];if(C)C>=96&&h?(G[M++]=((C-=96)&31)+96,G[M++]=C>>5):G[M++]=C;else{C=s.nextId,C||(C=64),C<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(C=s.nextOwnId,C<g||(C=y),s.nextOwnId=C+1):(C>=g&&(C=y),s.nextId=C+1);let E=N.highByte=C>=96&&h?C-96>>5:-1;A[Rs]=C,s[C-64]=N,C<y?(N.isShared=!0,s.sharedLength=C-63,i=!0,E>=0?(G[M++]=(C&31)+96,G[M++]=E):G[M++]=C):(E>=0?(G[M++]=213,G[M++]=114,G[M++]=(C&31)+96,G[M++]=E):(G[M++]=212,G[M++]=114,G[M++]=C),T&&(S+=w*T),x.length>=m&&(x.shift()[Rs]=0),x.push(A),b(N))}for(let E=0,L=N.length;E<L;E++)b(v[N[E]])},_=v=>{let N;if(v>16777216){if(v-t>Wm)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(Wm,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(v-t<<2,G.length-1)>>12)+1<<12;let O=new du(N);return at=new DataView(O.buffer,0,N),G.copy?G.copy(O,0,t,v):O.set(G.slice(t,v)),M-=t,t=0,Vr=O.length-10,G=O}}useBuffer(r){G=r,at=new DataView(G.buffer,G.byteOffset,G.byteLength),M=0}};pu=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Bs];vl=[{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:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+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?qm(n,16,r):$m(bl?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Ym&&this.structuredClone?qm(n,uu.indexOf(e.name),r):$m(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function qm(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function $m(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 c_(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 u_(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let a=i+t;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function No(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)");pu.unshift(n.Class),vl.unshift(n)}Hm(n)}var Xm=new an({useRecords:!1}),d_=Xm.pack,p_=Xm.pack;var{NEVER:f_,ALWAYS:m_,DECIMAL_ROUND:h_,DECIMAL_FIT:y_}=gl,Km=512,g_=1024;var Zm=new an({structuredClone:!0});No({Class:Ue.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ue.prototype),n}});No({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});No({Class:Ke.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});No({Class:Ls.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ls(n)}});No({Class:Ds.prototype.constructor,type:5,write(n){return n.data},read(n){return new Ds(n)}});No({Class:Ze.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ze.prototype),n}});function x_(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 fu(n){if(ri(n))return n;if(Array.isArray(n))return n.map(fu);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=fu(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Sl;(t=>{function n(o){return Zm.pack(o)}t.serialize=n;function r(o){return Zm.unpack(o)}t.deserialize=r;function e(o){return x_(n(fu(o))).toString()}t.checksum=e})(Sl||(Sl={}));var Eo="personal camera",Lo="a218fcc3-276b-49b9-b485-49037fd14f5f",oh=2960946,pt=5526619;var Qm;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(Qm||(Qm={}));var Io;(a=>{function n(c,d){return c[0]===d[0]&&c[1]===d[1]&&c[2]===d[2]}a.isEqual=n;function r(c,d){return[c[0]+d[0],c[1]+d[1],c[2]+d[2]]}a.add=r;function e(c,d){return[c[0]-d[0],c[1]-d[1],c[2]-d[2]]}a.sub=e;function t(c,d){return[c[0]/d[0],c[1]/d[1],c[2]/d[2]]}a.div=t;function o(c,d){return[c[0]*d[0],c[1]*d[1],c[2]*d[2]]}a.mul=o;function i(c,d){return Math.hypot(c[0]-d[0],c[1]-d[1],c[2]-d[2])}a.dist=i;function s(c,d,l){return[c[0]+(d[0]-c[0])*l,c[1]+(d[1]-c[1])*l,c[2]+(d[2]-c[2])*l]}a.lerp=s})(Io||(Io={}));var Jm;(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})(Jm||(Jm={}));var Mo;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let a=s.slice(0);for(var c=0,d=s.length;c<d;c+=3){let l=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];a[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/l,a[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/l,a[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/l}return a}o.applyMatrix4=t})(Mo||(Mo={}));var vt;(l=>{function n(u){return typeof u=="object"&&typeof u.r=="number"&&typeof u.g=="number"&&typeof u.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}l.toRgb255a1=o;function i(u){return{r:u.r,g:u.g,b:u.b}}l.clone=i;function s(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}l.fromHex=s;function a(u){return Math.round(u.r*255)*65536+Math.round(u.g*255)*256+Math.round(u.b*255)}l.toHex=a;function c(u,p){return u.r===p.r&&u.g===p.g&&u.b===p.b}l.equals=c;function d(u,p,f){return{r:u.r+(p.r-u.r)*f,g:u.g+(p.g-u.g)*f,b:u.b+(p.b-u.b)*f}}l.lerp=d})(vt||(vt={}));var Vt;(a=>{a.white={...vt.white,a:1},a.transparent={...vt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}a.from0to1=e;function t(c,d){return{...vt.fromHex(c),a:d}}a.fromHexAndA=t;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}a.toRgb255a1=o;function i(c,d){return vt.equals(c,d)&&c.a===d.a}a.equals=i;function s(c,d,l){return{r:c.r+(d.r-c.r)*l,g:c.g+(d.g-c.g)*l,b:c.b+(d.b-c.b)*l,a:c.a+(d.a-c.a)*l}}a.lerp=s})(Vt||(Vt={}));var wl;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(wl||(wl={}));var eh;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(eh||(eh={}));var th;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(th||(th={}));var rh;(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]))(rh||(rh={}));var br;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(br||(br={}));var Do;(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:i.orthographic.zoom}o.getZoom=t})(Do||(Do={}));var jr;(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(v_.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,a=o.radial;b_.forEach(c=>{Object.assign(i.radial,{[c]:a[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,a=o.linear;S_.forEach(c=>{Object.assign(i.linear,{[c]:a[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,a=o.grid;w_.forEach(c=>{Object.assign(i.grid,{[c]:a[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,a=o.toObject;__.forEach(c=>{Object.assign(i.toObject,{[c]:a[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,a=o.randomnessObject;P_.forEach(c=>{Object.assign(i.randomnessObject,{[c]:a[c]??s[c]})})}return i}e.merge=r})(jr||(jr={}));var _l;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let a of r){let c=o[a];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,a],props:c})}return s}t.toOps=e})(_l||(_l={}));var v_=["count"],b_=["radius","start","end","position","scale","rotation"],S_=["position","scale","rotation"],w_=["count","size"],__=["count","position","scale","rotation"],P_=["strength","scale","rotation","position","movement","seed","freqScale"];var Pl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Pl||(Pl={}));var Tl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Vt.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:Vt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Tl||(Tl={}));var Bo;(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]})(Bo||(Bo={}));var mu;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(mu||(mu={}));var hu;(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})(hu||(hu={}));var Ol;(r=>r.defaultData={...hu.defaultData,...mu.defaultData})(Ol||(Ol={}));var ci;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(ci||(ci={}));var nh;(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==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(nh||(nh={}));function sh(n){return n.type!=="displace"}var ih;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(ih||(ih={}));var ah=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],lh=["wrapping","image","video","name"],zt;(o=>{function n(i,s){let{texture:a,...c}=s;if(Object.assign(i,c),a){let d=i.texture;d&&Object.assign(d,a)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,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]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:ci.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:vt.fromHex(pt)};case"depth":return{...s,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{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...vt.fromHex(6710886),a:1},colorB:{...vt.fromHex(6710886),a:1},colorC:{...vt.fromHex(16777215),a:1},colorD:{...vt.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{...s,type:"fresnel",color:Vt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,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:Vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Vt.fromHexAndA(0,1),contourColor:Vt.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{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,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{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...vt.fromHex(0),a:1},colorB:{...vt.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}}}})(zt||(zt={}));var qt;(c=>{function n(d){return!d.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}c.isMergable=n;function r(d){let l="";return d.layers.forEach(u=>{Object.entries(u.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new ye}}c.defaultEmptyData=e;function t(d="layer1",l="layer2"){return i("phong",d,l)}c.defaultData=t;function o(d,l){return{...d,name:l}}c.withName=o;function i(d,l="layer1",u="layer2"){let p=new ye;return p.push({fi:0,data:zt.defaultData("light",d),id:l}),p.push({fi:1,data:zt.defaultData("color"),id:u}),{layers:p}}c.defaultTwoLayerData=i;function s(d,l="phong",u="layer1",p="layer2"){let f=zt.defaultData("texture");Object.assign(f.texture,{image:d});let m=new ye;return m.push({fi:0,data:f,id:u}),m.push({fi:1,data:zt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function a(d,l="phong",u="layer1",p="layer2"){let f=zt.defaultData("video");Object.assign(f.texture,{video:d});let m=new ye;return m.push({fi:0,data:f,id:u}),m.push({fi:1,data:zt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=a})(qt||(qt={}));var ui;(r=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(ui||(ui={}));var di;(r=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(di||(di={}));var yu={type:"Ellipse",width:100,height:100,spikes:16,angle:360,innerRadius:0};var Al;(r=>{function n(e,t){let o={...e};return T_.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Al||(Al={}));var Cl={shape:yu,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},T_=["depth","offset","angle","twist","startScale","endScale"];var Gs;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}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})(Gs||(Gs={}));var Nl;(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,Al.merge(o.extrusion,t.extrusion))),o}r.merge=n})(Nl||(Nl={}));var Ro;(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==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:di.defaultData(),extrusion:Cl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ui.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:"",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:Math.PI};throw new Error("not implemented")}r.defaultData=n})(Ro||(Ro={}));var Il;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:vt.white,near:.1,far:2e3})(Il||(Il={}));var Ml;(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,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(Ml||(Ml={}));var gu;(r=>r.defaultData={softShadowQuality:"low"})(gu||(gu={}));var xu;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(xu||(xu={}));var vu;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(vu||(vu={}));var Vs;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Vs||(Vs={}));var bu;(r=>r.defaultData={playCamera:Eo,gameControlObject:null})(bu||(bu={}));var El;(r=>r.defaultData={backgroundColor:Vt.fromHexAndA(oh,1),postprocessing:Ml.defaultData,fog:Il.defaultData,globalPhysics:Vs.defaultData,ambient:xu.defaultData,ao:vu.defaultData,shadow:gu.defaultData,publish:bu.defaultData})(El||(El={}));var ch;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(ch||(ch={}));var pi;(o=>{o.identity={...wl.identity,hiddenMatrix:Mo.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return Kd({position:Io.isEqual(i.position,s.position)?void 0:s.position,rotation:Io.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:Io.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Mo.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(pi||(pi={}));var Dt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Bo.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...pi.identity,cloner:null})(Dt||(Dt={}));var uh;(r=>r.defaultData={type:"Empty",...Dt.defaultData})(uh||(uh={}));var dh;(r=>r.defaultData={type:"Component",...Dt.defaultData})(dh||(dh={}));var ln;(r=>r.defaultData={type:"Mesh",...Dt.defaultData,...Ol.defaultData})(ln||(ln={}));var cn;(r=>r.defaultData={...Dt.defaultData,...pi.identity,position:[0,0,Do.DefaultTargetOffset],...Do.defaultData})(cn||(cn={}));var Ll;(e=>{function n(t){return{...Dt.defaultData,...Tl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ll||(Ll={}));var fi;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let a=Object.keys(s);if(a.length===1&&a[0]==="descendants")return}return s}e.resolve=r})(fi||(fi={}));var uo;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,a){return{...Dt.defaultData,...a,component:s,overrides:new Ze,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let a=pi.fromObject(s.data);return t(s.id,a)}i.fromComponentData=o})(uo||(uo={}));var po;(r=>r.defaultData={type:"Page",...Dt.defaultData,physics:{...Bo.defaultData,fusedBody:!1},...El.defaultData,camera:cn.defaultData})(po||(po={}));var Dl;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Mo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Bo.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Do.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",...Dt.defaultData,...ln.defaultData,geometry:Ro.defaultData("RectangleGeometry"),material:qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Dt.defaultData,...ln.defaultData,geometry:Ro.defaultData("BooleanGeometry"),material:qt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Dt.defaultData,...ln.defaultData,geometry:Ro.defaultData("TextGeometry"),material:qt.defaultTwoLayerData("phong","layer1","layer2")}))(Dl||(Dl={}));var un;(o=>{function n(i,s){let a={name:s};return i.type==="Mesh"?(a.geometry={},"material"in i&&(a.material={layers:new Ze}),"materials"in i&&(a.materials=i.materials.map(c=>({layers:new Ze})))):br.is(i.type)&&(a.perspective={},a.orthographic={}),a}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let a={...i};return"material"in a&&"material"in s&&s.material&&(a.material=ai(a.material,c=>{if(typeof c!="string")for(let[d,l]of Object.entries(s.material.layers)){let u=c.layers.data(d);u&&zt.patch(u,l)}}).data),a.materials&&s.materials&&(a.materials=ai(a.materials,c=>{for(let d=0;d<a.materials.length;d++){let l=s.materials[d];if(typeof l!="string")for(let[u,p]of Object.entries(l.layers)){let f=c[d]?.layers?.data(u);f&&zt.patch(f,p)}}}).data),a}function e(i,s){let a,c=[],d={orthographic:0,perspective:0,geometry:0};function l(u,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...u,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};c.push(g)}}}for(let[u,p]of Object.entries(s))if(u!=="name")if(u==="cloner")c.push(..._l.toOps(p,["cloner"]));else if(u==="pathSnapping")c.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")l(["material"],p);else if(u==="materials")for(let[f,m]of Object.entries(p))l(["materials",f],m);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};c.push(f)}}else a===void 0&&(a={path:[],props:{},type:0},c.push(a)),a.props[u]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let a={...i};if(Object.assign(a,pi.merge(a,s)),Object.assign(a,{pathSnapping:Object.assign({},a.pathSnapping,{slide:s.pathSnapping?.slide??a.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??a.pathSnapping?.offset??0})}),br.is(i.type)){a.orthographic={...a.orthographic},a.perspective={...a.perspective};let c=s;c.orthographic?.zoom!==void 0&&(a.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(a.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(a.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(a.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(a,{geometry:Nl.merge(a.geometry,s.geometry)}),(s.material||s.materials)&&(a=r(a,s)),a.cloner&&"cloner"in s&&Object.assign(a,{cloner:jr.merge(a.cloner,s.cloner)});else if(i.type==="Empty")a.cloner&&"cloner"in s&&Object.assign(a,{cloner:jr.merge(a.cloner,s.cloner)});else if(Pl.is(i.type)){let c=s;c.intensity!==void 0&&(a.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?a.color=c.color:a.color=vt.clone(c.color))}return a}o.patch=t})(un||(un={}));var mi;(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,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(mi||(mi={}));var Fr;(r=>r.defaultData={orbitControls:mi.defaultData,playPage:Lo,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})(Fr||(Fr={}));var Su;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Su||(Su={}));var wu;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(wu||(wu={}));var Go;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Su.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:wu.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(Go||(Go={}));var ph;(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.traverseFrom(o,(s,a)=>{if(a.type==="Instance"){let c=t.data(a.component);c&&i(s,a,c.events)}else i(s,a,a.events)})}e.traverseModuleInstances=r})(ph||(ph={}));var Bl;(a=>{a.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let d=[],l=Dl.defaultMeshObject;c.withLight===!0&&d.push({fi:-1,data:Ll.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let u=new Ke;return u.push({fi:1,id:Lo,data:{...po.defaultData,name:"Scene 1"},children:d}),u}a.defaultData={objects:r(),publish:Fr.defaultData,styles:Go.defaultData()},a.emptyDataWithoutPage=function(){return{objects:new Ke,publish:Fr.defaultData,styles:Go.defaultData()}},a.emptyDataWithPage=function(c){return{objects:r(c),publish:Fr.defaultData,styles:Go.defaultData()}};function i(c){return{...a.defaultData,objects:vr(c,Ke.prototype)}}a.withObjs=i;function s(c,d){return i([{id:c,data:d,children:[],fi:0}])}a.withObj=s})(Bl||(Bl={}));var hi;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(hi||(hi={}));var Rl;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},vr(o,Ue.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...hi.emptyImage,name:"AI generated image"}),vr(i,Ue.prototype)}t.defaultImages=r;function e(){return{materials:new Ue,images:new Ue,videos:new Ue,colors:new Ue,audios:new Ue,fonts:new Ue}}t.emptyData=e})(Rl||(Rl={}));var js=require("three");var Gl;(r=>r.list=["idle","move","jump","run"])(Gl||(Gl={}));var Vl;(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 ye,move:new ye,jump:new ye,run:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Vt.fromHexAndA(3728051,1)}}))(Vl||(Vl={}));function fh(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 a=2;a<10;a++)o.push(o[1]),i.push(1);let s={...lo(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,s)}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 fo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function mo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&r(o.material)})})}function O_(n){Object.assign(n.scene.publish,{orbitControls:{...mi.defaultData,...ut(n.scene.publish.orbitControls)}})}function A_(n){Object.assign(n.scene.publish.settings,{video:{...Fr.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function C_(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((ah.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,a]of Object.entries(i))(lh.includes(s)||typeof a=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function N_(n){n.scene.publish.withBackground=!0}function I_(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function M_(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 E_(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 L_(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 D_(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 B_(n){function r(t){Object.setPrototypeOf(t,Ze.prototype),t.texture&&Object.setPrototypeOf(t.texture,Ze.prototype)}function e(t){Object.setPrototypeOf(t,Ze.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let a=ut(s.material).layers;e(a),s.material.layers=a}if(s.materials)for(let a=0;a<s.materials.length;a++){let c=s.materials[a],d=ut(c).layers;e(d),c.layers=d}})})}function mh(n){n.layers===void 0&&Object.assign(n,qt.defaultTwoLayerData("lambert"))}function _u(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 R_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function hh(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&_u(t)}):"material"in e&&typeof e.material!="string"&&_u(e.material)}),Object.values(n.shared.materials).forEach(r=>_u(r))}function G_(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 V_(n){n.shared.audios=vr({},Ue.prototype)}function z_(n){n.shared.videos=vr({},Ue.prototype)}function j_(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 F_(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 k_(n){n.scene.publish.settings.web.preload=!1}function yh(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 gh(n){n.layers&&n.layers.forEach(r=>{sh(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 U_(n){n.shared.fonts=vr({},Ue.prototype)}function H_(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 W_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=qt.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let a=H_(o.font);n.shared.fonts[a]===void 0&&(n.shared.fonts[a]={name:a});let c={name:o.name,...Dt.defaultData,...ln.defaultData,flatShading:!1,wireframe:!1,geometry:{...Ro.defaultData("TextGeometry"),width:o.width,height:o.height,font:a,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},d=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function q_(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 ye,move:new ye,jump:new ye}});else{let i=new ye;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:js.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,a,c)=>{let d={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(l,lo(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(l,{control1:{...s.control1},control2:{...s.control2}});let u={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...u,...l},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:js.MathUtils.generateUUID(),data:d},{fi:1,id:js.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:a,data:f})}),delete o.targets)}})})}function $_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new ye,a=[];if(e.events.forEach((c,d,l)=>{if(c.type==="Audio"&&c.trigger===i){let u;a.push(d),c.interaction==="play"?u={...lo(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(u={...lo(c,"interaction","delay","object","playAudio"),type:"Audio"}),u&&s.push({fi:l,id:d,data:u})}}),a.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(d=>d.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:js.MathUtils.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function xh(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=zt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function vh(n){fo(n,xh),mo(n,xh)}function Y_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function X_(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 K_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=qt.defaultTwoLayerData("phong"))})}function Z_(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 Q_(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 J_(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 eP(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function tP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function rP(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function oP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Vl.defaultDataThirdPerson.navmesh)})})}function nP(n){n.scene.styles||(n.scene.styles=Go.defaultData())}function bh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function iP(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}),mo(n,bh),fo(n,bh)}function sP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ye})})})}function aP(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Sh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function wh(n,r){if(r<1&&(mo(n,fh),fo(n,fh),n.schema=1),r<2&&(O_(n),n.schema=2),r<3&&(C_(n),n.schema=3),r<4&&(N_(n),n.schema=4),r<5&&(I_(n),n.schema=5),r<6&&(M_(n),n.schema=6),r<7&&(E_(n),n.schema=7),r<8&&(n.schema=8),r<9&&(hh(n),n.schema=9),r<10&&(R_(n),n.schema=10),r<11&&(G_(n),n.schema=11),r<12&&(hh(n),n.schema=12),r<13&&(V_(n),n.schema=13),r<14&&(j_(n),n.schema=14),r<15&&(F_(n),n.schema=15),r<16&&(k_(n),n.schema=16),r<17&&(mo(n,yh),fo(n,yh),n.schema=17),r<18&&(mo(n,mh),fo(n,mh),n.schema=18),r<19&&(A_(n),n.schema=19),r<20&&(U_(n),W_(n),n.schema=20),r<21&&(q_(n),$_(n),n.schema=21),r<22&&(vh(n),n.schema=22),r<23&&(Y_(n),n.schema=23),r<24&&(X_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(z_(n),r<25&&(n.schema=25)),r<26&&(L_(n),n.schema=26),r<27&&(D_(n),n.schema=27),r<28&&(vh(n),n.schema=28),r<29&&(B_(n),n.schema=29),r<30&&(K_(n),n.schema=30),r<31&&(Z_(n),n.schema=31),r<33&&(Q_(n),n.schema=33),r<34&&(J_(n),n.schema=34),r<35&&(eP(n),n.schema=35),r<36&&(tP(n),n.schema=36),r<37&&(rP(n),n.schema=37),r<38&&(mo(n,gh),fo(n,gh),n.schema=38),r<39&&(oP(n),n.schema=39),r<40&&(nP(n),n.schema=40),r<41&&(iP(n),n.schema=41),r<42&&(sP(n),n.schema=42),r<43&&(aP(n),n.schema=43),r<99){mo(n,Sh),fo(n,Sh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Eo);let e=ut(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=Lo,t.insertBefore(null,null,[{id:Lo,data:{...po.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:lo(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:lo(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Vs.defaultData,...lo(n.scene.environment,"usePhysics","gravity")},camera:ut(n.scene.ownerCamera)??po.defaultData.camera,name:"Scene"},children:[]}]);for(let s of e)s.id!==Bl.TRASH_CAN_ID&&t.move(Lo,s.fi,s.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((s,a)=>{a.type==="DirectionalLight"?(a.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):a.type==="SpotLight"&&(a.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(a.physics===void 0||a.physics===null)&&a.type!=="Instance"&&(a.physics={},Object.assign(a.physics,Bo.defaultData)),a.physics!==void 0&&(a.physics.enabled=a.collision??"visibility",delete a.collision)}),n.schema=99}}function _h(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function lP(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"))})}var Ph=102;function Th(n){let r=n.schema??0;r!==Ph&&(console.warn("updating from ",r,"to ",Ph),wh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Fr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(mo(n,_h),fo(n,_h),n.schema=101),r<102&&(lP(n),n.schema=102))}var Re=require("three"),ps=en(Ah());var cP=.5*(Math.sqrt(3)-1),Fs=(3-Math.sqrt(3))/6,uP=1/3,kr=1/6,ZR=(Math.sqrt(5)-1)/4,QR=(5-Math.sqrt(5))/20,ks=n=>Math.floor(n)|0,Ch=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]),Tu=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 zl(n=Math.random){let r=Ih(n),e=new Float64Array(r).map(o=>Ch[o%12*2]),t=new Float64Array(r).map(o=>Ch[o%12*2+1]);return function(i,s){let a=0,c=0,d=0,l=(i+s)*cP,u=ks(i+l),p=ks(s+l),f=(u+p)*Fs,m=u-f,h=p-f,y=i-m,g=s-h,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+Fs,b=g-S+Fs,P=y-1+2*Fs,_=g-1+2*Fs,v=u&255,N=p&255,O=.5-y*y-g*g;if(O>=0){let C=v+r[N],E=e[C],L=t[C];O*=O,a=O*O*(E*y+L*g)}let A=.5-w*w-b*b;if(A>=0){let C=v+x+r[N+S],E=e[C],L=t[C];A*=A,c=A*A*(E*w+L*b)}let T=.5-P*P-_*_;if(T>=0){let C=v+1+r[N+1],E=e[C],L=t[C];T*=T,d=T*T*(E*P+L*_)}return 70*(a+c+d)}}function Nh(n=Math.random){let r=Ih(n),e=new Float64Array(r).map(i=>Tu[i%12*3]),t=new Float64Array(r).map(i=>Tu[i%12*3+1]),o=new Float64Array(r).map(i=>Tu[i%12*3+2]);return function(s,a,c){let d,l,u,p,f=(s+a+c)*uP,m=ks(s+f),h=ks(a+f),y=ks(c+f),g=(m+h+y)*kr,x=m-g,S=h-g,w=y-g,b=s-x,P=a-S,_=c-w,v,N,O,A,T,C;b>=P?P>=_?(v=1,N=0,O=0,A=1,T=1,C=0):b>=_?(v=1,N=0,O=0,A=1,T=0,C=1):(v=0,N=0,O=1,A=1,T=0,C=1):P<_?(v=0,N=0,O=1,A=0,T=1,C=1):b<_?(v=0,N=1,O=0,A=0,T=1,C=1):(v=0,N=1,O=0,A=1,T=1,C=0);let E=b-v+kr,L=P-N+kr,X=_-O+kr,B=b-A+2*kr,Q=P-T+2*kr,z=_-C+2*kr,V=b-1+3*kr,W=P-1+3*kr,$=_-1+3*kr,Y=m&255,q=h&255,k=y&255,U=.6-b*b-P*P-_*_;if(U<0)d=0;else{let D=Y+r[q+r[k]];U*=U,d=U*U*(e[D]*b+t[D]*P+o[D]*_)}let R=.6-E*E-L*L-X*X;if(R<0)l=0;else{let D=Y+v+r[q+N+r[k+O]];R*=R,l=R*R*(e[D]*E+t[D]*L+o[D]*X)}let F=.6-B*B-Q*Q-z*z;if(F<0)u=0;else{let D=Y+A+r[q+T+r[k+C]];F*=F,u=F*F*(e[D]*B+t[D]*Q+o[D]*z)}let j=.6-V*V-W*W-$*$;if(j<0)p=0;else{let D=Y+1+r[q+1+r[k+1]];j*=j,p=j*j*(e[D]*V+t[D]*W+o[D]*$)}return 32*(d+l+u+p)}}function Ih(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}var Mh=require("three"),Sr=new Mh.Triangle,jl=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;Sr.a.fromBufferAttribute(r,o),Sr.b.fromBufferAttribute(r,o+1),Sr.c.fromBufferAttribute(r,o+2),i*=Sr.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 s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Sr.a.fromBufferAttribute(this.positionAttribute,r*3),Sr.b.fromBufferAttribute(this.positionAttribute,r*3+1),Sr.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Sr.a,o).addScaledVector(Sr.b,i).addScaledVector(Sr.c,1-(o+i)),Sr.getNormal(t),this}};var Bh=require("three");var ir=require("three"),Dh=en(Lh()),dP=new ir.Matrix4,pP=new ir.Matrix4,fP=new ir.Matrix4,yi;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(yi||(yi={}));var gi=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new ir.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new ir.Matrix4;this.matrixWorldRigid=new ir.Matrix4;this.shearScale=new ir.Matrix4;this.shearScaleInv=new ir.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof ir.Object3D&&(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 s of this.children)s.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)yi.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)yi.is(s)&&s.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:s,q:a}=(0,Dh.SVD)(o),c=dP.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),d=pP.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),l=fP.copy(d).transpose();this.shearScale.makeScale(a[0],a[1],a[2]).multiply(l).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),a.every(u=>Math.abs(a[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new ir.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof ir.Matrix4?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,s,a,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Ou=class extends gi(Bh.Object3D){},mP=n=>n.type==="Mesh",ho=class extends Ou{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 ho(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 mP(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}};var Vi=require("three");var sc=require("three");var yo=require("three");var rt=require("three"),dn=new rt.Vector3,pn=new rt.Vector3,xi=new rt.Matrix4,Gh=[new rt.Vector3(-1,1,1),new rt.Vector3(-1,-1,1),new rt.Vector3(1,-1,1),new rt.Vector3(1,1,1),new rt.Vector3(-1,1,-1),new rt.Vector3(-1,-1,-1),new rt.Vector3(1,-1,-1),new rt.Vector3(1,1,-1)],hP=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],yP=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Rh=(n,r,e)=>{n.updateEntityBoxSize(dn,pn),xi.copy(r).multiply(n.matrixWorld),pn.x===0&&pn.y===0&&pn.z===0?e.push(new rt.Vector3(dn.x,dn.y,dn.z).applyMatrix4(xi)):Gh.forEach(t=>{e.push(t.clone().multiply(pn).add(dn).applyMatrix4(xi))})},Us=class extends rt.Box3{constructor(){super(...arguments);this.matrix=new rt.Matrix4;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 rt.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new rt.Vector3);return}Rh(s,t,i)}}):Rh(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(xi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(pn).multiplyScalar(.5),this.getCenter(dn),xi.copy(this.matrix).setPosition(dn),this.vertices=Gh.map(e=>e.clone().multiply(pn).applyMatrix4(xi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=hP.map(([e,t])=>new rt.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new rt.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=yP.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var wr={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var bt=require("three"),Cu=class extends bt.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let a=0,c=this.curves;a<c.length;a++){let d=c[a],l=a===0?o[a]:o[a]-o[a-1],u=Math.ceil(r*l/s),p=d.getPoints(u);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Nu=.001;function Iu(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Nu}function Au(n,r){let e=new bt.Vector3(...n.position),t=new bt.Vector3(...n.controlNext.position),o=new bt.Vector3(...r.controlPrevious.position),i=new bt.Vector3(...r.position);return Iu(e,t,i)&&Iu(e,o,i)}function kl(n){let r=n.points.map(l=>new bt.Vector3(...l.data.position)),e=[n.points[0]],t=new bt.Vector3(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Iu(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,a=[];for(let l=0;l<s;l++){let u=e[l].data,p=new bt.Vector3(...u.position),f=new bt.Vector3(...u.controlPrevious.position),m=new bt.Vector3(...u.controlNext.position),h={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:m};if(u.roundness===0||!n.isClosed&&(l===0||l===s-1)){a[l]={...h,removedLength:0};continue}let y=o&&l==0?s-1:l-1,g=o&&l==s-1?0:l+1,x=e[y].data,S=e[g].data,w=new bt.Vector3(...x.position),b=new bt.Vector3(...S.position),P=w.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:P,nextDir:_});let v=Au(x,u),N=Au(u,S);if(!v||!N)a[l]={...h,removedLength:0};else{let O=P.clone().add(_).normalize(),A=O.clone().cross(P).length()/P.dot(O);a[l]={...h,tan:A,removedLength:u.roundness/A}}}for(let l=0;l<i;l++){let u=l,p=o&&l===s-1?0:l+1,f=a[u],m=a[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let l=0;l<i;l++){let u=l,p=o&&l===s-1?0:l+1,f=a[u],m=a[p],h=null;if(!Au(e[u].data,e[p].data))f.position.distanceTo(m.position)>Nu&&(h=new bt.CubicBezierCurve3(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Nu&&(h=new bt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<s;l++){let u=a[l];if(u.removedLength===0){c[2*l]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),m=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),h=u.tan*u.removedLength,y=u.prevDir.clone().add(u.nextDir).normalize(),g=f.clone().lerp(m,.5),x=f.distanceTo(m)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(S),b=p.distanceTo(w)/p.distanceTo(g),P=u.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=P.clone().lerp(w,2),v=f.clone().lerp(P,4/3),N=m.clone().lerp(_,4/3);c[2*l]=new bt.CubicBezierCurve3(f,v,N,m)}let d=new Cu;return c.forEach(l=>{l&&d.add(l)}),d}var Ae;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ae||(Ae={}));var vi=n=>Ae.is(n),gP={type:"completeState",isfromEntity:!0},bi=n=>class extends gi(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Us;this._recursiveBBox=new Us;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(Ae.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Ae.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(Ae.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 s of this.data.states)un.toOps(this.data,s.data).forEach(c=>{let d=al.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=un.patch(this.data,s),un.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),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=>{vi(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(Ae.is(o[i]))return o[i];if(Ae.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ae.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)vi(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ae.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)vi(s)&&s.isConcreteEntity&&s.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)vi(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)vi(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}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=>vi(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,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ei(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??Mo.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ae.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ae.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return ei(o,t)}updateByObjUpdateOp(t,o){this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,s){let a=this.data;this.data=o;let c=t,d=Lt(t.path,["states","*"]);if(d!==null){if(t.type===0){let[l]=d;if(this?.stateSelection===l){let u={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=Rt.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(u[m]=f[m])}}c={...t,props:u,path:t.path.slice(2)}}}}else if(t.type===0){let l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let u=Rt.removeOverridden(t.path,t.props,l);c={...t,props:u}}}if(this.updateByPatchedOpBase(c,un.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Lt(t.path,["overrides"])){let l=[],u=[...t.path];for(l.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)l.push(u[1]),u.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(Br.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=Rt.zoom(p.component.data,u);if(t={...t,path:u},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=fi.resolve(o.overrides,l),p.updateByOp(t,Ot.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let u;for(let p of uo.rootOverrideProps)p in t.props&&(u===void 0&&(u={}),u[p]=t.props[p]);u&&(l={...t,props:u})}else for(let u of uo.rootOverrideProps)if(Lt(t.path,[u])){l=t;break}l!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=Br.filterOp(u.overrideData,l);p&&u.updateByOp(p,Ot.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=Br.filterOp(u.overrideData,t);if(p){let f;a===u.data&&t===p?f=o:f=Ot.applySimple(u.data,p),u.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!br.is(t.props.type)&&wr.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){wr.changeEntityProptotype(this,o,i);for(let s of this.children)Ae.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Lt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Lt(t.path,["cloner"])!==null){let s=Ot.drop(t,1);s.path.length===0&&s.type===0&&s.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()}}updatePathSnapping(t){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,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,a=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let d=c.data;if(d.geometry.path.points.length<=1)return;let l=kl(d.geometry.path),u=(i+s)%1;i+s===1&&u===0&&(u=1);let p=l.getPointAt(u),f=this.parent?this.parent?.matrixWorld:new yo.Matrix4;c.updateMatrixWorld();let m=new yo.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:d.rotation};if(a==="tangential"){let y=new yo.Matrix4().extractRotation(c.matrixWorld),g=l.getTangentAt(u).applyMatrix4(y).add(p),x=new yo.Matrix4().lookAt(p,g,new yo.Vector3(0,1,0)),S=new yo.Euler().setFromRotationMatrix(x);h={...h,rotation:[S.x,S.y,S.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(gP)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}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(),this.resetBBoxNeedsUpdate()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof wr.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 wr.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)}};var jh=require("three");var $e=require("three"),zh=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),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:s,thetaStart:a,thetaLength:c,radiusTop:d,radiusBottom:l,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,m;return u||f?m=new Hs(d,l,t,o,i,s,a,c*Math.PI/180,u,u,p,f):m=new $e.CylinderGeometry(d,l,t,o,i,s,a,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Vo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Vh(n){return new $e.Vector2(n.y,-n.x)}var Hs=class extends $e.BufferGeometry{constructor(r,e,t,o,i,s,a,c,d,l,u,p,f=!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,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(d=0,l=0);let m=[],h=[],y=[],g=[],x=0,S=t/2,w=new $e.Vector3,b=new $e.Vector3;f&&r==0&&(r=d),f&&e==0&&(e=l);let P=new $e.Vector2(r,S),_=new $e.Vector2(e,-S),v=null,N=null,O=null,A=null,T=P.clone().sub(_),C=0,E=0,L=0;p>0&&(C=Math.min(r,e)*(1-p),E=r-C,L=e-C);let X=P.clone();X.x-=C;let B=Math.PI-T.angle(),Q=T.angle(),z=Math.tan(Q/2),V=Math.tan(B/2),W=z+V,$=p?W:V,Y=p?W:z;if(d=Math.min(d,(r-E)/$,T.length()/W),l=Math.min(l,(e-L)/Y,T.length()/W),d>0){let j=d/z;v=P.clone().sub(new $e.Vector2(j,d)),p&&(O=v.clone(),O.x-=C-W*d),P.sub(T.clone().setLength(j))}if(l>0){let j=l/V;N=_.clone().sub(new $e.Vector2(j,-l)),_.add(T.clone().setLength(j)),p&&(A=N.clone(),A.x-=C-W*l,X.sub(T.clone().setLength(j)))}T=P.clone().sub(_);let q=T.length()<.5,k=[];for(let j=0;j<=o;j++){let D=[],ie=j/o,ee=ie*c+a,K=new $e.Vector2(Math.sin(ee),Math.cos(ee));A&&N?(U(D,ie,K,B,l,A,-1,!0),U(D,ie,K,Q,l,N,-1,!1)):N?(R(D,K,N.x,0,-1),U(D,ie,K,Q,l,N,-1,!1)):s||R(D,K,e,L,-1);let re=Vh(T).normalize();if(Vo(re,K,w),!q)for(let Z=0;Z<=i;Z++){let ce=Z/i,fe=T.clone().multiplyScalar(ce).add(_);Vo(fe,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ie,.5+b.y/t),D.push(x++)}if(O&&v?(U(D,ie,K,B,d,v,1,!1),U(D,ie,K,Q,d,O,1,!0)):v?(U(D,ie,K,B,d,v,1,!1),R(D,K,v.x,0,1)):s||R(D,K,r,E,1),p&&!q){let Z=Vh(T).multiplyScalar(-1).normalize();Vo(Z,K,w);for(let ce=0;ce<=i;ce++){let fe=ce/i,ae=T.clone().multiplyScalar(-fe).add(X);Vo(ae,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ie,.5+b.y/t),D.push(x++)}}p&&!s&&D.push(D[0]),k.push(D)}for(let j=0;j<k.length-1;j++)for(let D=0;D<k[0].length-1;D++){if(s&&p&&D==i)continue;let ie=k[j][D],ee=k[j+1][D],K=k[j+1][D+1],re=k[j][D+1],Z=h[K*3+0],ce=h[K*3+2];m.push(ie,ee,re),(Z!=0||ce!=0)&&m.push(ee,K,re)}c<Math.PI*2&&(F(-1,k[0],a),F(1,k[k.length-1],a+c)),this.setIndex(m),this.setAttribute("position",new $e.Float32BufferAttribute(h,3)),this.setAttribute("normal",new $e.Float32BufferAttribute(y,3)),this.setAttribute("uv",new $e.Float32BufferAttribute(g,2));function U(j,D,ie,ee,K,re,Z,ce){for(let fe=0;fe<u+1;fe++){let ae=fe/u,te=Z<0?ae:1-ae;ce&&(te-=1),te*=ee;let se=new $e.Vector2(Math.sin(te),Math.cos(te)*Z),ue=se.clone().multiplyScalar(K).add(re);Vo(ue,ie,b),h.push(b.x,b.y,b.z),Vo(se,ie,w),y.push(w.x,w.y,w.z),g.push(D,.5+b.y/t),j.push(x++)}}function R(j,D,ie,ee,K){let re=new $e.Vector3,Z=new $e.Vector2,ce=[ie,ee];K<0&&ce.reverse();for(let fe of ce)Z.set(fe,S*K),Vo(Z,D,re),h.push(re.x,re.y,re.z),y.push(0,K,0),g.push(.5,.5),j.push(x++)}function F(j,D,ie){let ee=new $e.Vector2(Math.sin(ie),Math.cos(ie)),K=new $e.Vector2(-Math.cos(ie),Math.sin(ie)),re=new $e.Vector3,Z=j<0?(ae,te,se)=>m.push(ae,te,se):(ae,te,se)=>m.push(ae,se,te),ce=new $e.Vector2((r+e+E+L)/4,0);Vo(ce,ee,re),h.push(re.x,re.y,re.z),y.push(K.x,0,K.y),g.push(.5,.5);let fe=x++;for(let ae of D){let te=h.slice(ae*3,ae*3+3);h.push(...te),y.push(K.x,0,K.y);let se=g.slice(ae*2,ae*2+2);g.push(...se),x++}for(let ae=fe+1;ae<x-1;ae++)Z(fe,ae,ae+1);Z(fe,x-1,fe+1)}}};var Fh=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{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:s,thetaStart:a,thetaLength:c,cornerRadiusTop:d,cornerRadiusBottom:l,cornerSegments:u}=n.parameters,p;return d>0||l>0||c<360?p=new Hs(0,r/2,t,o,i,s,a,c*Math.PI/180,d,l,u,0,!0):p=new jh.ConeGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var $t=require("three"),kh=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,d;return a==0?d=new $t.BoxGeometry(r,e,t,o,i,s):d=new Eu(r,e,t,o,i,s,a,c),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},Mu=Math.PI/2,Eu=class extends $t.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,s=1,a=0,c=4){super(),this.type="BoxGeometry";let d=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,r/2,e/2,t/2);let l=[],u=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,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),a>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new $t.Float32BufferAttribute(u,3)),this.setAttribute("normal",new $t.Float32BufferAttribute(p,3)),this.setAttribute("uv",new $t.Float32BufferAttribute(f,2));function y(S,w,b,P,_,v,N,O,A,T,C){let E=(v-2*a)/A,L=(N-2*a)/T,X=v/2-a,B=N/2-a,Q=O/2,z=A+1,V=T+1,W=0,$=0,Y=new $t.Vector3;for(let q=0;q<V;q++){let k=q*L-B;for(let U=0;U<z;U++){let R=U*E-X;Y[S]=R*P,Y[w]=k*_,Y[b]=Q,u.push(Y.x,Y.y,Y.z),Y[S]=0,Y[w]=0,Y[b]=O>0?1:-1,p.push(Y.x,Y.y,Y.z),f.push(U/A),f.push(1-q/T),W+=1}}for(let q=0;q<T;q++)for(let k=0;k<A;k++){let U=m+k+z*q,R=m+k+z*(q+1),F=m+(k+1)+z*(q+1),j=m+(k+1)+z*q;l.push(U,R,j),l.push(R,F,j),$+=6}d.addGroup(h,$,C),h+=$,m+=W}function g(S,w,b,P,_,v,N,O,A,T,C){let E=(N-2*a)/T,L=N/2-a,X=O/2-a,B=A/2,Q=T+1,z=0,V=0,W=new $t.Vector3,$=new $t.Vector3;for(let Y=0;Y<c+1;Y++){let q=Y/c*Mu,k=Math.sin(q)*a,U=(1-Math.cos(q))*a,R=Math.sin(q),F=Math.cos(q);W[w]=(X+k)*_,W[b]=(B-U)*v,$[S]=0,$[w]=R*Math.sign(W[w]),$[b]=F*Math.sign(W[b]);for(let j=0;j<Q;j++){let D=j*E-L;W[S]=D*P,u.push(W.x,W.y,W.z),p.push($.x,$.y,$.z),f.push(j/T),f.push(0),z+=1}}for(let Y=0;Y<c;Y++)for(let q=0;q<T;q++){let k=m+q+Q*Y,U=m+q+Q*(Y+1),R=m+(q+1)+Q*(Y+1),F=m+(q+1)+Q*Y;l.push(k,U,F),l.push(U,R,F),V+=6}d.addGroup(h,V,C),h+=V,m+=z}function x(S,w,b){let P=new $t.Vector3,_=new $t.Vector3(r/2,e/2,t/2);_.subScalar(a);let v=[],N=S*w*b>0?(A,T,C)=>l.push(A,T,C):(A,T,C)=>l.push(A,C,T);for(let A=0;A<=c;A++){let T=[],C=Mu*(1-A/c),E=Math.cos(C),L=Math.sin(C),X=0;for(let B=0;B<=A;B++){let Q=Math.cos(X),z=Math.sin(X);P.x=E*Q,P.y=L,P.z=E*z;let V=_.clone().addScaledVector(P,a);u.push(S*V.x,w*V.y,b*V.z),p.push(S*P.x,w*P.y,b*P.z),f.push(0,0),T.push(m++),X+=Mu/A}v.push(T)}let O=v.length-1;for(let A=0;A<O;A++){let T=v[A],C=v[A+1],E=T.length-1;N(T[0],C[1],C[0]);for(let L=1;L<=E;L++)N(T[L-1],T[L],C[L]),N(T[L],C[L+1],C[L])}}}};var ot=require("three"),zo=class extends ot.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],d=[];l(),u(),this.setAttribute("position",new ot.Float32BufferAttribute(a,3)),this.setAttribute("normal",new ot.Float32BufferAttribute(d,3)),this.setAttribute("uv",new ot.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new ot.Vector3,h=m.clone(),y=new ot.Triangle,g=i*o,x=o-g,S=s+1,w=new ot.Vector3,b=(z,V)=>w.subVectors(z,V).normalize(),P=(z,V)=>Array(z).fill(void 0).map(V),_=P(r.length/3,(z,V)=>new ot.Vector3().fromArray(r,V*3).setLength(o)),v=[],N=1e6;for(let z=0;z<_.length;z++){let V=_[z],W=[],$,Y,q,k=1e10,U=-1;for(;(U=e.indexOf(z,U+1))!=-1;){let D=U-U%3;$=e[D+(U+1)%3],Y=e[D+(U+2)%3],q=V.distanceToSquared(_[$]),k=Math.min(k,q),W.push([$,Y,q])}k+=1e-6;let R=[],F=0,j=W.length;for(let D=0;D<j;D++){[$,Y,q]=W[F];let ie=v[$]?.includes(z)==!0;q<=k&&R.push($+ +ie*N),F=W.findIndex(ee=>ee[0]==Y)}v.push(R)}let O=[];{let z=0,V=0,W,$,Y=f==3;for(let q=0;q<=s;q++){W=q*(q+1)/2,$=(q+1)*(q+2)/2;for(let k=0;k<s-q;k++)[z,V]=[W+k+q+2,$+k+q+3],O.push(W,$,...Y?[V,W]:[z,$],V,z),[W,$]=[z,V];O.push(W,$,W+s+2)}}let A=m.clone(),T=m.clone(),C=m.clone(),E=m.clone(),L=m.clone(),X=[],B=P(_.length,()=>P(f,()=>m.clone()));for(let z=0;z<_.length;z++){m.copy(_[z]).normalize(),A.copy(m).multiplyScalar(x);let V=v[z];for(let R=0;R<V.length;R++){let F=V[R],j=V[(R+1)%f];y.setFromPointsAndIndices(_,z,F%N,j%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(A,B[z][R])}let W=[],$=[],Y=[],q=new ot.Vector3;s==0&&[...B[z]].reduce((R,F)=>R.add(F),q).multiplyScalar(1/f);for(let R=0;R<f;R++){let F=[],j=(R-1+f)%f,D=B[z][j],ie=B[z][R];m.copy(D).sub(A),h.copy(ie).sub(A);let ee=A.angleTo(m),K=m.angleTo(h),re=Math.cos(ee)*g;s==0?T.copy(q):T.copy(A).setLength(x+re),$.push(re);let Z=[T,D,ie];for(let ce=0;ce<2;ce++){let fe=Z[ce],ae=Z[ce+1];E.subVectors(fe,A),L.subVectors(ae,A),C.crossVectors(E,L).normalize();for(let te=0;te<S;te++){let se=[ee,K][ce]*te/S;m.copy(E).applyAxisAngle(C,se).add(A),W.push(m.clone()),ce&&(b(m,A),F.push([te==0?fe:m.clone(),w.clone()]))}ce&&(b(ae,A),F.push([ae,w.clone()]))}Y.push(F)}X.push(Y);let k=2*S,U=2;for(let R=0;R<f;R++){let F=k*R,j=k*((R+1)%f),D=[W[F]];for(let ee=1;ee<S;ee++){E=W[F+ee],L=W[j+ee],D.push(E);for(let K=1,re=ee-U+1;K<=re;K++)m.lerpVectors(E,L,K/(re+1)),m.sub(A).setLength($[R]).add(A),D.push(m.clone());D.push(L)}for(let ee=0;ee<S;ee++)D.push(W[ee+S+F]);D.push(W[j+S]);let ie=O.map(ee=>D[ee]);a.push(...ie.map(ee=>[ee.x,ee.y,ee.z]).flat()),d.push(...ie.map(ee=>(b(ee,A),[w.x,w.y,w.z])).flat())}}let Q=[];for(let z=0;z<v.length;z++)for(let V=0;V<f;V++){let W=v[z][V];if(W<N){let $=v[W].findIndex(k=>k%N==z),Y=X[z][V],q=X[W][$];for(let k=0;k<S;k++){let U=Y[k],R=q[S-k],F=Y[k+1],j=q[S-(k+1)];[U,R,F,F,R,j].forEach(D=>{a.push(D[0].x,D[0].y,D[0].z),d.push(D[1].x,D[1].y,D[1].z)})}Q.push(Y[0][0],q[S][0],Y[S][0],q[0][0])}}for(;Q.length;){let z,V,W,$;[z,V]=Q.splice(0,2);let Y=[z];for(;z!=V;)Y.push(V),W=Q.indexOf(V),$=W%2,V=Q.splice(W-$,2)[1-$];w.subVectors(Y[0],Y[1]).cross(m.subVectors(Y[0],Y[2])).normalize();let q=w.dot(Y[0])<0;q&&w.negate();for(let k=1;k<=Y.length-2;k++)[Y[k+ +q],Y[k+1-+q],Y[0]].forEach(U=>{a.push(U.x,U.y,U.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new ot.Vector3;for(let _=0;_<a.length;_+=3){p.x=a[_+0],p.y=a[_+1],p.z=a[_+2];let v=b(p)/2/Math.PI+.5,N=P(p)/Math.PI+.5;c.push(v,1-N)}let f=new ot.Vector3,m=new ot.Vector3,h=new ot.Vector3,y=new ot.Vector3,g=new ot.Vector2,x=new ot.Vector2,S=new ot.Vector2,w=(_,v,N,O)=>{O<0&&_.x===1&&(c[v]=_.x-1),N.x===0&&N.z===0&&(c[v]=O/2/Math.PI+.5)};for(let _=0,v=0;_<a.length;_+=9,v+=6){f.set(a[_+0],a[_+1],a[_+2]),m.set(a[_+3],a[_+4],a[_+5]),h.set(a[_+6],a[_+7],a[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),S.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=b(y);w(g,v+0,f,N),w(x,v+2,m,N),w(S,v+4,h,N)}for(let _=0;_<c.length;_+=6){let v=c[_+0],N=c[_+2],O=c[_+4],A=Math.max(v,N,O),T=Math.min(v,N,O);A>.9&&T<.1&&(v<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),O<.2&&(c[_+4]+=1))}function b(_){return Math.atan2(_.z,-_.x)}function P(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new zo(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var Uh=require("three"),Hh=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:s}=n.parameters,a=o===0&&i!==0?new Ws(r*.5,i,s):new Uh.DodecahedronGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},Ws=class extends zo{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-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],a=[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],c="DodecahedronGeometry";super(s,a,c,r,e,t),this.type=c}static fromJSON(r){return new Ws(r.radius,r.corner,r.cornerSides)}};var Ee=require("three");var be=require("three"),qs=1e-12,Si=class{constructor(r){this.position=new be.Vector2;this.startPosition=new be.Vector2;this.uuid=be.MathUtils.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 Si(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},wi=class extends Si{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new wi(this.parent).copy(this)}},_r=class extends Si{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new wi(this),new wi(this))}static create(e,t){let o=new _r(e,new be.Vector2(...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 s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.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 _r(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 be.Vector2,t=new be.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Wh(o,e),Wh(i,t)),[e,t]}computeTangent(e=new be.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new be.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Wh(n,r=new be.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Du=n=>n,_i=new be.Vector2,Ul=new be.Vector2,xP=new be.Vector2,vP=new be.Vector2,bP=new be.Vector2,SP=new be.Vector2,$h=new be.Vector3,Yh=new be.Vector3;function Xh(n){let r=new be.Vector2;r.addVectors(n.v0,_i.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new be.Vector2;return e.addVectors(n.v2,Ul.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new be.CubicBezierCurve(n.v0,r,e,n.v2)}function $s(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function wP(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function _P(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Bu(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 Kh(n,r,e){return qh(n,r)&&qh(r,e)&&Lu(n.position,r.position,e.position)}function Lu(n,r,e){return _i.copy(r).sub(n).cross(Ul.copy(e).sub(n))===0}function Zh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,a=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(a+c,s+d),o.set(a-c,s-d),[t,o]}function Qh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function Jh(n,r,e,t,o,i){let s=r.x-n.x,a=r.y-n.y,c=e.x-n.x,d=e.y-n.y,l=Math.sqrt((s+c)*(s+c)+(a+d)*(a+d)),u;return Bu(r,n,e)>Math.PI&&(l*=-1),$s(d,a)?u=(a+d)*(t/l-.5)*8/3/(s-c):u=(s+c)*(t/l-.5)*8/3/(d-a),o.set(r.x-u*a,r.y+u*s),i.set(e.x+u*d,e.y-u*c),[o,i]}function Ru(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function qh(n,r){return Lu(n.position,n.controls[1].position,r.position)&&Lu(n.position,r.controls[0].position,r.position)}function ey(n,r,e,t,o=.5){let i=_i.subVectors(r,n).multiplyScalar(o).add(n),s=Ul.subVectors(e,r).multiplyScalar(o).add(r),a=xP.subVectors(t,e).multiplyScalar(o).add(e),c=i,d=vP.subVectors(s,i).multiplyScalar(o).add(i),l=bP.subVectors(a,s).multiplyScalar(o).add(s),u=a,p=SP.subVectors(l,d).multiplyScalar(o).add(d);return[n.x,n.y,c.x,c.y,d.x,d.y,p.x,p.y,l.x,l.y,u.x,u.y,t.x,t.y]}function ty(n,r,e=12,t=!0){let o=Yh.set(0,0,0),i,s=0,a=[];for(let c=0;c<r.length;c++){let d=Du(r[c]),l=_i,u=jo(d,e);a.push(u);for(let p=0;p<=u;p++)if(d instanceof be.CubicBezierCurve||d instanceof be.QuadraticBezierCurve||d instanceof be.LineCurve){if(d.getPoint(p/u,l),o.set(l.x,l.y,0),i!==void 0&&_P(i,o))continue;i===void 0&&(i=$h),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function ry(n,r,e,t=12,o=!0){let i=Yh.set(0,0,0),s=0,a=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let d,l=Du(r[c]),u=_i,p=jo(l,t);a.push(p);for(let f=0;f<=p;f++)if(l instanceof be.CubicBezierCurve||l instanceof be.QuadraticBezierCurve||l instanceof be.LineCurve){if(l.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=$h:(n.setXYZ(s,d.x,d.y,d.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),d.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function Gu(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=jo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=jo(s.curveAfter,r)),t.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=jo(n[0].roundedCurveCorner,r)*.5),t}function jo(n,r=12){return n&&n instanceof be.EllipseCurve?r*2:n&&(n instanceof be.LineCurve||n instanceof be.LineCurve3)?1:n&&n instanceof be.SplineCurve?r*n.points.length:r}function oy(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let a=Du(r[s]),c=jo(a,e),d=_i;for(let l=0;l<=c;l++)if(a instanceof be.CubicBezierCurve||a instanceof be.QuadraticBezierCurve||a instanceof be.LineCurve){if(a.getPoint(l/c,d),o!==void 0&&wP(o,d,qs))continue;o===void 0&&(o=Ul),o.copy(d),n.push(d.x,d.y),i++}}return $s(n[0],n[n.length-2],qs)&&$s(n[1],n[n.length-1],qs)&&(n.pop(),n.pop()),t&&i>1&&!($s(n[i-1],n[1],qs)&&$s(n[i-2],n[0],qs))&&(n.push(n[0],n[1]),i++),n}var Vu=new Ee.Vector2,PP=new Ee.Vector2,TP=new Ee.Vector2,OP=new Ee.Vector2,AP=new Ee.Vector2,CP=new Ee.Vector2,Me=class extends Ee.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ee.Plane(new Ee.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ee.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Me;return i.isClosed=e.isClosed,i.points=e.points.map(s=>_r.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Me.createFromState(s)),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 s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],d=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=d;else return l+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 s=this.shapeHoles[o],a=e-t;if(a<=s.points.length-1)return s.points[a];t+=s.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 s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return t+a;t+=s.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=Vu.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Ee.MathUtils.generateUUID()){let i;e instanceof Ee.Vector2?i=e:i=new Ee.Vector2(e,t);let s=new _r(o,i);return s.roundness=this.roundness,s}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 s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}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 ty(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Gu(this.points,e,!1),this.roundedCurveDivisions=Gu(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return ry(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),oy(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,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=jo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((c,d)=>c+d,0));for(let c=0,d=i.length;c<d;c++){let l=i[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(Ru(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(Vu.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=a[u];return(t-d)/c}dispose(){}_applyCurveForPoint(e,t){Ru(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 s=this.points[t-1];this._applyCurveForPoint(i,s)}}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 s=this.points[o],a=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],d=s.roundness,l=a&&c&&Kh(a,s,c);if(!s.controlsMoved()&&d>0&&!l){let u=s.curveBefore,p=s.curveAfter;if(u===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=u.getLength(),y=p.getLength(),g=Math.min(d,h*.499),x=Math.min(d,y*.499),S=Math.min(g,x),w=1-S/h,b=S/y,P=u.getPointAt(w,Vu),_=p.getPointAt(b,PP);this._subSplitCurve(u,f,w,P,void 0),this._subSplitCurve(p,m,b,void 0,_);let v;if(this.useCubicForRoundedCorners){let N=Bu(P,s.position,_)/2,O=Math.tan(N)*P.distanceTo(s.position),[A,T]=Zh(P,_,O,TP,OP),C=Qh(A,T,s.position),[E,L]=Jh(C,P,_,O,AP,CP);v=new Ee.CubicBezierCurve(P.clone(),E.clone(),L.clone(),_.clone())}else v=new Ee.QuadraticBezierCurve(P.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Ee.LineCurve)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let a=e,c=t,d=a.getUtoTmapping(o,0),l=ey(a.v0,a.v1,a.v2,a.v3,d);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new Me(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,s=e.points[i+0],a=e.points[i+1],c=e.points[i+2],d=e.points[i+3],l=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new _r(Ee.MathUtils.generateUUID(),new Ee.Vector2(s,a));f.controls[0].position.set(c,d),f.controls[1].position.set(l,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Me;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Ee.CubicBezierCurve&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,c;for(a=0,c=i.length;a<c;a++)i[a]instanceof Ee.QuadraticBezierCurve&&(i[a]=Xh(i[a]));for(a=0,c=i.length;a<c;a++){let u=i[a],p=a>0?i[a-1]:null,f;u instanceof Ee.CubicBezierCurve?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof Ee.LineCurve&&(f=this.createPoint(u.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let d=i[i.length-1],l=!1;return d instanceof Ee.CubicBezierCurve?d.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(d.v2),l=!0):d instanceof Ee.LineCurve&&d.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof Ee.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Me;return s.fromShape(i),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 ju=Math.PI*2;function zu({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function NP(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),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function ny(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 IP(n,r,e,t,o,i,s,a,c,d){let l=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(a,2),m=l*u-l*f-u*p;m<0&&(m=0),m/=l*f+u*p,m=Math.sqrt(m)*(c===d?-1:1);let h=m*o/i*a,y=m*-i/o*s,g=h+(n+e)/2,x=y+(r+t)/2,S=(s-h)/o,w=(a-y)/i,b=(-s-h)/o,P=(-a-y)/i,_=ny(1,0,S,w),v=ny(S,w,b,P);return!d&&v>0&&(v-=ju),d&&v<0&&(v+=ju),{centerx:g,centery:x,ang1:_,ang2:v}}function iy({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||i===0)return[];let d=(n-e)/2,l=(r-t)/2;if(d===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=IP(n,r,e,t,o,i,d,l,s,a),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(ju/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let S=0;S<x;S++)c.push(NP(f,m)),f+=m;return c.map(S=>{let{x:w,y:b}=zu(S[0],o,i,h,y),{x:P,y:_}=zu(S[1],o,i,h,y),{x:v,y:N}=zu(S[2],o,i,h,y);return{x1:w,y1:b,x2:P,y2:_,x:v,y:N}})}var mn=require("three");var Oe;(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"})(Oe||(Oe={}));var Qe;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Qe||(Qe={}));function me(n,r){if(!n)throw r||"Assertion Failed!"}var de=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){me(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){me(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){me(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){me(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 s,a,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),a=n.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,e.s)):(s=n.edgeSign(r,t,e),a=-n.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),a=n.transEval(t,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,e.t)):(s=n.transSign(r,t,e),a=-n.transSign(r,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,o.t)):i.t=(t.t+e.t)/2},n}(),Ys=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}(),Hl=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}(),Pi=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}(),sy=function(){function n(){var r=new Pi,e=new Ys,t=new Hl(0),o=new Hl(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 Hl(0),t=new Hl(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;me(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 s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;me(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 s=e;do s.Lface=o,s=s.Lnext;while(s!==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,s=r.next;s.prev=i,i.next=s},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,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new Pi,e=new Pi,t=new Ys,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 Pi;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new Ys;this.makeFace_(s,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 Ys;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 Pi;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 s=new Ys;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,a;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);s=r.prev,a=r.next,a.prev=s,s.next=a},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,s,a,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),a+c-2<=r&&de.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&de.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,a,c,d;for(i=r,i=r;(o=i.next)!==r;i=o){me(o.prev===i),c=o.anEdge;do me(c.Sym!==c),me(c.Sym.Sym===c),me(c.Lnext.Onext.Sym===c),me(c.Onext.Sym.Lnext===c),me(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(me(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){me(s.prev===a),c=s.anEdge;do me(c.Sym!==c),me(c.Sym.Sym===c),me(c.Lnext.Onext.Sym===c),me(c.Onext.Sym.Lnext===c),me(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(me(s.prev===a&&s.anEdge===null),d=t,d=t;(c=d.next)!==t;d=c)me(c.Sym.next===d.Sym),me(c.Sym!==c),me(c.Sym.Sym===c),me(c.Org!==null),me(c.Dst!==null),me(c.Lnext.Onext.Sym===c),me(c.Onext.Sym.Lnext===c);me(c.Sym.next===d.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),ay=function(){function n(){this.handle=null}return n}(),ly=function(){function n(){this.key=null,this.node=0}return n}(),MP=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 ay,this.handles[t]=new ly;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,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,me(s<=this.max),i=e[s].handle,s>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=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===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=s}},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 ay;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new ly}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;me(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}(),Fu=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}(),cy=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),EP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new cy,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 cy;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}(),LP=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,s=t.eUp;if(i.Dst===o)return s.Dst===o?de.vertLeq(i.Org,s.Org)?de.edgeSign(s.Dst,i.Org,s.Org)<=0:de.edgeSign(i.Dst,s.Org,i.Org)>=0:de.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return de.edgeSign(i.Dst,o,i.Org)>=0;var a=de.edgeEval(i.Dst,o,i.Org),c=de.edgeEval(s.Dst,o,s.Org);return a>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){me(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 Fu;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 Oe.ODD:return(e&1)!==0;case Oe.NONZERO:return e!==0;case Oe.POSITIVE:return e>0;case Oe.NEGATIVE:return e<0;case Oe.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,s=e,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),n.finishRegion(r,s),a=i.eUp,s=i}return a},n.addRightEdges=function(r,e,t,o,i,s){var a,c,d,l,u=!0;d=t;do me(de.vertLeq(d.Org,d.Dst)),n.addRegionBelow(r,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,l=i;a=n.regionBelow(c),d=a.eUp.Sym,d.Org===l.Org;)d.Onext!==l&&(r.mesh.splice(d.Oprev,d),r.mesh.splice(l.Oprev,d)),a.windingNumber=c.windingNumber-d.winding,a.inside=n.isWindingInside(r,a.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(r,c)&&(n.addWinding(d,l),n.deleteRegion(r,c),r.mesh.delete(l)),u=!1,c=a,l=d;c.dirty=!0,me(c.windingNumber-d.winding===a.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=de.vertL1dist(e,r),i=de.vertL1dist(t,r),s=.5*i/(o+i),a=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(de.vertLeq(o.Org,i.Org)){if(de.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;de.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(de.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,s;if(me(!de.vertEq(o.Dst,i.Dst)),de.vertLeq(o.Dst,i.Dst)){if(de.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(de.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,a=i.Org,c=o.Dst,d=i.Dst,l,u,p=new Pi,f,m;if(me(!de.vertEq(d,c)),me(de.edgeSign(c,r.event,s)<=0),me(de.edgeSign(d,r.event,a)>=0),me(s!==r.event&&a!==r.event),me(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,d.t),l>u))return!1;if(de.vertLeq(s,a)){if(de.edgeSign(d,s,a)>0)return!1}else if(de.edgeSign(c,a,s)<0)return!1;return n.debugEvent(r),de.intersect(c,s,d,a,p),me(Math.min(s.t,c.t)<=p.t),me(p.t<=Math.max(a.t,d.t)),me(Math.min(d.s,c.s)<=p.s),me(p.s<=Math.max(a.s,s.s)),de.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=de.vertLeq(s,a)?s:a,de.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),de.vertEq(p,s)||de.vertEq(p,a)?(n.checkForRightSplice(r,e),!1):!de.vertEq(c,r.event)&&de.edgeSign(c,r.event,p)>=0||!de.vertEq(d,r.event)&&de.edgeSign(d,r.event,p)<=0?d===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):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(de.edgeSign(c,r.event,p)>=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),de.edgeSign(d,r.event,p)<=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=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,a,d),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,s=n.regionBelow(e),a=e.eUp,c=s.eUp,d=!1;if(a.Dst!==c.Dst&&n.checkForIntersect(r,e),de.vertEq(a.Org,r.event)&&(r.mesh.splice(i.Oprev,a),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),d=!0),de.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),d=!0),d){n.addRightEdges(r,e,t.Onext,i,i,!0);return}de.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,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,s,a,c;if(o=e.eUp,de.vertEq(o.Org,t)){me(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!de.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}me(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=a=s.Onext,c.fixUpperEdge&&(me(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),de.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,a,c,d=new Fu;if(d.eUp=e.anEdge.Sym,t=r.dict.search(d).key,o=n.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,de.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=de.vertLeq(a.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=r.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),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);me(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(r,i,null);a.Onext===s?n.connectRightVertex(r,o,a):n.addRightEdges(r,o,a.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Fu,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,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 EP(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,s=r.bmin[1]-t,a=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,a)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(me(e.fixUpperEdge),me(++t===1)),me(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,de.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 MP(i,de.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,me(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||!de.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}(),DP=function(){function n(){this.mesh=new sy,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=Oe.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,s,a,c=[0,0,0],d=[0,0,0],l=[0,0,0],u=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],d[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<d[g]&&(d[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var x=0;if(c[1]-d[1]>c[0]-d[0]&&(x=1),c[2]-d[2]>c[x]-d[x]&&(x=2),d[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],p[0]=l[1]*u[2]-l[2]*u[1],p[1]=l[2]*u[0]-l[0]*u[2],p[2]=l[0]*u[1]-l[1]*u[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.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 s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var c=!0,d=r.next;d!==r;d=d.next)c?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,c=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.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(;de.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;de.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(de.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(de.edgeGoesLeft(o.Lnext)||de.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&&(de.edgeGoesRight(t.Lprev)||de.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,s=0,a=0,c;t>3&&r.mergeConvexFaces(t);for(var d=r.vHead.next;d!==r.vHead;d=d.next)d.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var d=i.Org;d.n===-1&&(d.n=a,a++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Qe.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var d=r.vHead.next;d!==r.vHead;d=d.next)if(d.n!==-1){var u=d.n*o;this.vertices[u+0]=d.coords[0],this.vertices[u+1]=d.coords[1],o>2&&(this.vertices[u+2]=d.coords[2]),this.vertexIndices[d.n]=d.idx}for(var p=0,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var d=i.Org;this.elements[p++]=d.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===Qe.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.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 c=0,d=0,l=0;i=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[d++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[l++]=i,this.elements[l++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new sy),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,s){if(r===void 0&&(r=Oe.ODD),e===void 0&&(e=Qe.POLYGONS),s===void 0&&(s=!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_(),LP.computeInterior(this,s);var a=this.mesh;return e===Qe.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Qe.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},n}();function Pr(n){var r=n.windingRule,e=r===void 0?Oe.ODD:r,t=n.elementType,o=t===void 0?Qe.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,c=a===void 0?2:a,d=n.normal,l=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new DP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,s,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var fV=Oe.ODD,mV=Oe.NONZERO,hV=Oe.POSITIVE,yV=Oe.NEGATIVE,gV=Oe.ABS_GEQ_TWO,xV=Qe.POLYGONS,vV=Qe.CONNECTED_POLYGONS,bV=Qe.BOUNDARY_CONTOURS;var fn=require("three");var Wl=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*Wl.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*Wl.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let d=new Float32Array(o,s*i,2*r);e?(a.set(this.positions.subarray(0,this.size*3)),c.set(this.normals.subarray(0,this.size*3)),d.set(this.uvs.subarray(0,this.size*2))):(a.set(this.positions),c.set(this.normals),d.set(this.uvs)),this.buffer=o,this.positions=a,this.normals=c,this.uvs=d,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)}},Xs=Wl;Xs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var fy=en(py()),Ks={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},qu={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},$u={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},Wu=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),ko=class extends fn.BufferGeometry{constructor(e,t,o=0,i=12,s=3,a=Oe.ODD,c=!1){super();this.onlyTop=c;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=s;let d=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(A=>{let T=A.extractShapePointsToFlatArray([],i),C=[];for(let E=T.length-1;E>=1;E-=2){let L=T[E-1],X=T[E-0];C.push(L,X)}return C}),u=[],p=[];for(let A=0;A<d.length;A+=2)p.push([d[A],d[A+1]]);u.push(p);for(let A=0;A<l.length;A++){let T=l[A],C=[];for(let E=0;E<T.length;E+=2)C.push([T[E],T[E+1]]);u.push(C)}let{distance:f}=(0,fy.default)(u);o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,t/2),this._bevelSegments=Math.floor(s));let m;try{m=Pr({windingRule:a,elementType:Qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[d]})}catch{m=Ks}let h;try{h=Pr({windingRule:Oe.ODD,elementType:Qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]})}catch{h=qu}if(!m)throw new Error("error generating geometry");let y=m.elementCount;if(h){m.elementCount+=h.elementCount;for(let A=0;A<h.elements.length;A++){let T=h.elements[A],C=A%2===0?m.vertexCount:0;m.elements.push(T+C)}for(let A=0;A<h.vertexIndices.length;A++){let T=h.vertexIndices[A],C=m.vertexCount;m.vertexIndices.push(T+C)}for(let A=0;A<h.vertices.length;A++){let T=h.vertices[A];m.vertices.push(T)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let A=0,T=m.vertexCount;A<T;A++){let C=A*2,E=m.vertices[C+0],L=m.vertices[C+1];E<g&&(g=E),E>x&&(x=E),L<S&&(S=L),L>w&&(w=L)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new Xs(this._computeBufferEstimatedSize(m));let b=[],P=[];for(let A=m.elementCount-1;A>=0;A--){let T=A>=y,C=A*2,E=m.elements[C+0],L=m.elements[C+1],X=E+L,B={start:E,count:L,normals:[],continuous:[],concave:[]},Q=E,z=X-1,V=E+1,W=this._shape.roundedCurves.length;do{let U=Q-E,R=m.vertices[z*2+0],F=m.vertices[z*2+1],j=m.vertices[Q*2+0],D=m.vertices[Q*2+1],ie=m.vertices[V*2+0],ee=m.vertices[V*2+1],K=j-R,re=D-F,Z=Math.sqrt(K*K+re*re);K/=Z,re/=Z;let ce=j-ie,fe=D-ee,ae=Math.sqrt(ce*ce+fe*fe);ce/=ae,fe/=ae,B.normals[U*2+0]=-fe,B.normals[U*2+1]=ce,B.concave[U]=K*fe-re*ce>0;let te=m.vertexIndices[Q];if(Array.isArray(te))B.continuous[U]=!1;else{let[se,ue]=this._shape.getCurveIndexFromVertexId(te-1,!0);if(ue>0&&ue<1)B.continuous[U]=!0;else{let ve=ue===1?se+1:se-1;ve=(ve+W)%W;let er=ue===1?0:1,Pe=this._shape.roundedCurves[se].getTangent(ue),Ne=this._shape.roundedCurves[ve].getTangent(er);B.continuous[U]=Pe.dot(Ne)>.95}}T&&(B.normals[U*2+0]*=-1,B.normals[U*2+1]*=-1),[z,Q,V]=[Q,V,V+1],V>=X&&(V-=L)}while(V!==E+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:m.vertices.slice(E*2,X*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((U,R)=>[R,R]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:m.vertices.slice(E*2,X*2)});let Y=0;for(let U=1;U<=this._bevelSegments;U++){let R=U/this._bevelSegments*Math.PI/2,F=(1-Math.cos(R))*this._bevel,j=[],D=[],ie=[],ee=[],K=0;for(let Z=0;Z<L;Z++){let ce=Z*2,fe=(Z-1+L)%L*2,ae=m.vertices[B.start*2+ce+0],te=m.vertices[B.start*2+ce+1],se=-B.normals[fe+0]*F,ue=-B.normals[fe+1]*F,ve=-B.normals[ce+0]*F,er=-B.normals[ce+1]*F;if(B.concave[Z]||!B.concave[Z]&&T){let Pe=Math.atan2(ue,se),Ne=Math.atan2(er,ve);Ne>Pe&&(Ne-=Math.PI*2);let Et=Ne-Pe;if(B.continuous[Z]||T){let Ie=Pe+Et/2,Fe=Math.cos(Ie)*F,it=Math.sin(Ie)*F;j[2*K+0]=ae+Fe*(T?-1:1),j[2*K+1]=te+it*(T?-1:1),ee[K]=Z,K++}else{let Ie=Math.max(1,Math.floor(i/4*Math.abs(Et)/Math.PI));for(let Fe=0;Fe<=Ie;Fe++){let it=Pe+Et*(Fe/Ie),In=Math.cos(it)*F,Mn=Math.sin(it)*F;j[2*K+0]=ae+In,j[2*K+1]=te+Mn,ee[K]=Z,K++}}}else j[2*K+0]=ae+se,j[2*K+1]=te+ue,ee[K]=Z,D[Z]=K,K++,j[2*K+0]=ae,j[2*K+1]=te,ee[K]=Z,K++,j[2*K+0]=ae+ve,j[2*K+1]=te+er,ee[K]=Z,ie[Z]=K,K++}let re=Pr({windingRule:Oe.POSITIVE,elementType:Qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:Z=>{let fe=Z.Org.idx,ae=ee[fe],te=ee[(fe+1)%ee.length];Z.idx=[ae,te],Z.Sym.idx=[te,ae]},vertexIdCallback:Z=>{let ce=Z.Lprev.idx;return[ce?ce[1]:0,Z.idx?Z.idx[0]:0]}});if(!re)throw console.log("Error"),new Error(`error generating bevel geometry for ${U}'th loop`);if(!re.vertexCount){let Z=(U-1)/this._bevelSegments*Math.PI/2;Y=(1-Math.sin(Z))*this._bevel;break}for(let Z=0;Z<re.vertexIndices.length;Z++){let[ce,fe]=re.vertexIndices[Z];if(ce===fe)continue;let ae=fe;fe<ce&&(ae+=L);for(let te=ce;te<ae;te++){let se=te%L,ue=(te+1)%L;if(!B.continuous[se]||!B.continuous[ue]){re.vertexIndices[Z]=[ce,se],re.vertexIndices.splice(Z+1,0,[ue,fe]),re.vertices.splice((Z+1)*2,0,re.vertices[Z*2],re.vertices[Z*2+1]);break}}}$.push({bevelI:U,angle:R,size:F,boundary:re,reverseMap:ee,insetPoints:j})}let q=(U,R,F)=>{let j=0,D=U.boundary.vertexIndices.length;for(;j<D&&F(U.boundary.vertexIndices[R]);)R=(R+1)%D,j++;return j},k=b.length;for(let U=1;U<$.length;U++){let R=$[U-1],F=$[U],j=R.boundary.vertexIndices.length,D=F.boundary.vertexIndices.length;if(!j||!D)break;let ie=B.concave.length,ee=0,K=Wu(ee,L);for(;!R.boundary.vertexIndices.filter(K).length||!F.boundary.vertexIndices.filter(K).length;)ee++,K=Wu(ee,L);let re=R.boundary.vertexIndices.findIndex(K),Z=F.boundary.vertexIndices.findIndex(K);do re=(re+1)%j;while(K(R.boundary.vertexIndices[re]));do Z=(Z+1)%D;while(K(F.boundary.vertexIndices[Z]));ee=(ee+1)%L;let ce=ee,fe=this._buildBevelVert(B,R,(re-1+j)%j),ae=this._buildBevelVert(B,F,(Z-1+D)%D),te=fe,se=ae,ue,ve,er=!1;do{K=Wu(ee,L);let Pe=q(R,re,K),Ne=q(F,Z,K),Et=er;if(er=!1,Pe&&!Ne){for(let Ie=0;Ie<Pe;Ie++)ue=this._buildBevelVert(B,R,(re+Ie)%j,Ie/(Pe-1)),b.push(te.topN,ue.topP,se.topN),c===!1&&b.push(ue.bottomP,te.bottomN,se.bottomN),te=ue;er=!0}else if(!Pe&&Ne)for(let Ie=0;Ie<Ne;Ie++)ve=this._buildBevelVert(B,F,(Z+Ie)%D,Ie/(Ne-1)),b.push(se.topN,te.topP,ve.topP),c===!1&&b.push(te.bottomP,se.bottomN,ve.bottomP),se=ve;else if(Pe&&Ne)if(ue=this._buildBevelVert(B,R,re,0),ve=this._buildBevelVert(B,F,Z,0),Et?(b.push(te.topN,ve.topP,se.topN),b.push(te.topN,ue.topP,ve.topP),c===!1&&(b.push(ve.bottomP,te.bottomN,se.bottomN),b.push(ve.bottomP,ue.bottomP,te.bottomN))):(b.push(se.topN,te.topN,ue.topP),b.push(se.topN,ue.topP,ve.topP),c===!1&&(b.push(ue.bottomP,te.bottomN,se.bottomN),b.push(ue.bottomP,se.bottomN,ve.bottomP))),te=ue,se=ve,Pe===Ne)for(let Ie=1;Ie<Pe;Ie++)ue=this._buildBevelVert(B,R,(re+Ie)%j,Ie/(Pe-1)),ve=this._buildBevelVert(B,F,(Z+Ie)%D,Ie/(Ne-1)),b.push(te.topN,ue.topP,se.topN),b.push(se.topN,ue.topP,ve.topP),c===!1&&(b.push(ue.bottomP,te.bottomN,se.bottomN),b.push(ue.bottomP,se.bottomN,ve.bottomP)),te=ue,se=ve;else if(Pe>Ne){let Ie=Pe/Ne,Fe=0;for(let it=1;it<Pe;it++)ue=this._buildBevelVert(B,R,(re+it)%j,it/(Pe-1)),b.push(te.topN,ue.topP,se.topN),c===!1&&b.push(ue.bottomP,te.bottomN,se.bottomN),te=ue,it>(Fe+1)*Ie&&(Fe++,ve=this._buildBevelVert(B,F,(Z+Fe)%D,Fe/(Ne-1)),b.push(se.topN,ue.topP,ve.topP),c===!1&&b.push(ue.bottomP,se.bottomN,ve.bottomP),se=ve)}else{let Ie=Ne/Pe,Fe=0;for(let it=1;it<Ne;it++)ve=this._buildBevelVert(B,F,(Z+it)%D,it/(Ne-1)),b.push(se.topN,ue.topP,ve.topP),c===!1&&b.push(ue.bottomP,se.bottomN,ve.bottomP),se=ve,it>(Fe+1)*Ie&&(Fe++,ue=this._buildBevelVert(B,R,(re+Fe)%j,Fe/(Pe-1)),b.push(te.topN,ue.topP,se.topN),c===!1&&b.push(ue.bottomP,te.bottomN,se.bottomN),te=ue)}re=(re+Pe)%j,Z=(Z+Ne)%D,ee=(ee+1)%ie}while(ee!==ce)}if(c===!1&&this._depth>this._bevel*2&&this._buildWall($,B,b),T){let U=[];for(let R=b.length-1;R>=k+2;R-=3){let F=b[R-2],j=b[R-1],D=b[R-0];U.push(D,j,F)}b.splice(k,b.length-k,...U)}if(T){let U=[];for(let R=$[$.length-1].boundary.vertices.length-1;R>=1;R-=2){let F=$[$.length-1].boundary.vertices[R-1],j=$[$.length-1].boundary.vertices[R-0];U.push(F,j)}P.push(U)}if(!T){let U=$[$.length-1],R;try{R=Pr({windingRule:$.length>1?Oe.POSITIVE:Oe.ODD,elementType:Qe.POLYGONS,vertexSize:2,strict:!0,contours:[U.insetPoints,...P]})}catch{R=$u}if(!R)throw new Error("Error generating geometry for surface");l.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let F=0;F<R.elementCount*3;F+=3){let j=this._buildSurfaceVert(R,R.elements[F+0],Y),D=this._buildSurfaceVert(R,R.elements[F+1],Y),ie=this._buildSurfaceVert(R,R.elements[F+2],Y);b.push(j.top,D.top,ie.top),c===!1&&b.push(ie.bottom,D.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let _=new fn.BufferAttribute(Uint32Array.from(b),1),v=new fn.BufferAttribute(this._buffer.positions,3),N=new fn.BufferAttribute(this._buffer.normals,3),O=new fn.BufferAttribute(this._buffer.uvs,2);v.needsUpdate=!0,N.needsUpdate=!0,O.needsUpdate=!0,_.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",N),this.setAttribute("uv",O),this.setIndex(_)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),d=this._buildBevelVert(t,i,(s+1)%a);o.push(d.topP,c.topN,c.bottomN),o.push(d.topP,c.bottomN,d.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let s=e.vertices[t*2+0],a=e.vertices[t*2+1],c=(s-this._minX)/this._width,d=(a-this._minY)/this._height,l=this._buffer.get(this.onlyTop?1:2),u=l*3,p=l*2,f={top:l+0,bottom:l+1};return this._buffer.positions[u+0]=s,this._buffer.positions[u+1]=a,this._buffer.positions[u+2]=this.onlyTop?this._bevel:this._depth-o,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[p+0]=c,this._buffer.uvs[p+1]=d,this.onlyTop===!1&&(this._buffer.positions[u+3]=s,this._buffer.positions[u+4]=a,this._buffer.positions[u+5]=o,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[p+2]=c,this._buffer.uvs[p+3]=d),this.vertexCache[i]=f,f}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=t.boundary.vertexIndices[o],d,l,u,p;a!==c?(l=a,d=c,p=!1,u=e.continuous[l]&&e.continuous[d]):(d=a,l=(d-1+e.count)%e.count,p=e.concave[d]&&t.bevelI>0,u=e.continuous[d]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=d*2,g=l*2,x=t.boundary.vertices[h+0],S=t.boundary.vertices[h+1],w=(1-m)*this._bevel,b=(x-this._minX)/this._width,P=(S-this._minY)/this._height,_=e.normals[y+0],v=e.normals[y+1],N=e.normals[g+0],O=e.normals[g+1];if(p){let L=N-_,X=O-v;_=_+L*(1-i),v=v+X*(1-i);let B=Math.sqrt(_*_+v*v);_/=B,v/=B}let A=this.onlyTop?this._buffer.get(u?1:2):this._buffer.get(u?2:4),T=A*3,C=A*2,E={i:o,fi:d,topP:A+0,topN:A+0,bottomP:A+1,bottomN:A+1};return this._buffer.positions[T+0]=x,this._buffer.positions[T+1]=S,this._buffer.positions[T+2]=(this.onlyTop?this._bevel:this._depth)-w,this._buffer.normals[T+0]=_*f,this._buffer.normals[T+1]=v*f,this._buffer.normals[T+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=P,this.onlyTop===!1&&(this._buffer.positions[T+3]=x,this._buffer.positions[T+4]=S,this._buffer.positions[T+5]=w,this._buffer.normals[T+3]=_*f,this._buffer.normals[T+4]=v*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[C+2]=P,this._buffer.uvs[C+3]=b),u||(this.onlyTop?(A+=1,T+=3,C+=2):(A+=2,T+=6,C+=4),E.topP=A+0,E.bottomP=A+1,this._buffer.positions[T+0]=x,this._buffer.positions[T+1]=S,this._buffer.positions[T+2]=(this.onlyTop?this._bevel:this._depth)-w,this._buffer.normals[T+0]=N*f,this._buffer.normals[T+1]=O*f,this._buffer.normals[T+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=P,this.onlyTop===!1&&(this._buffer.positions[T+3]=x,this._buffer.positions[T+4]=S,this._buffer.positions[T+5]=w,this._buffer.normals[T+3]=N*f,this._buffer.normals[T+4]=O*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[C+2]=P,this._buffer.uvs[C+3]=b)),this.vertexCache[s]=E,E}clone(){let e=new ko(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ao(this.userData),e}};var Ti=class extends mn.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Oe.ODD;this.elementType=Qe.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Oe.ODD,elementType:Qe.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,d=!0,l,u;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),u!==void 0&&x!==u&&(d=!1),l=g,u=x,!c&&!d)break}if(!c&&!d)try{a=Pr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{a=Ks}let p=a?.vertexCount??1,f=a?.elementCount??1;if(this._positionAttribute=new mn.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new mn.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new mn.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new mn.BufferAttribute(new Uint32Array(f*3),1),a){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,S=g-y;for(let w=0,b=p;w<b;w++){let P=w*2,_=a.vertices[P+0],v=a.vertices[P+1],N=(_-m)/x,O=(v-y)/S;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,O)}for(let w=0,b=f;w<b;w++){let P=w*3,_=a.elements[P+0],v=a.elements[P+1],N=a.elements[P+2];this._indexAttribute.setX(P+0,_),this._indexAttribute.setX(P+1,v),this._indexAttribute.setX(P+2,N)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new Ti(this._shape,this._curveSegments);return e.userData=ao(this.userData),e}};var Oi=class extends ko{constructor(e,t,o=0,i=12,s=3,a=Oe.ODD){super(e,t,o,i,s,a);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,a=i.boundary.vertexCount;s<a;s++){let c=this._buildBevelVert(t,i,s),d=this._buildBevelVert(t,i,(s+1)%a);o.push(d.topP,c.topN,c.bottomN),o.push(d.topP,c.bottomN,d.bottomP)}}clone(){let e=new Oi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ao(this.userData),e}};var Yt=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:Oe.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Me?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Me(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Me(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:a}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let a;return r<=0?a=new Ti(n.shape,o,{windingRule:s}):a=new Oi(n.shape,r,e,o,t,s),Object.assign(a,{userData:{...n,type:"VectorGeometry"}})}};var Ci=require("three"),hy=Math.PI*2,Ni=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{shape:n.shape&&n.shape instanceof Me?n.shape:new Me,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:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,d=n.shape,l=r*.5,u=e*.5,p=zP(d,l,u,o*Math.PI/180,t,i);d.isClosed=!0,d.update();let f=Yt.create({shape:d,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function zP(n,r,e,t,o,i){if(t>=hy)return o>30||o%4===0?(FP(n,r,e,i),Math.round(o/4)):my(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},a=t+Math.PI*.5,c={x:Math.cos(a)*r,y:Math.sin(a)*e},d=iy({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%d.length===0?jP(n,s.x,s.y,d,o,r,e,i):my(n,t,o,r,e,i)}function jP(n,r,e,t,o,i,s,a){let c=Math.round(o/t.length);n.addPoint(Ai(r,e));for(let d=0,l=t.length;d<l;d++){let u=t[d],p=n.points[d],f=Ai(u.x,u.y);p.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return a>0?yy(n,i,s,a):n.addPoint(Ai(0,0)),c}function my(n,r,e,t,o,i){let s=-r/e;for(let a=0;a<=e;a++){let c=s*a,d=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(Ai(d,l))}return r<hy?i>0?yy(n,t,o,i):n.addPoint(Ai(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&gy(n,t,o,i)),1}function FP(n,r,e,t=0,o=0,i=0){let s=.5522847498,a=r*s,c=e*s;n.addPoint($l(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint($l(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint($l(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint($l(o,i-e,o+a,i-e,o-a,i-e)),t>0&&gy(n,r,e,t)}function Ai(n,r){return new _r(Ci.MathUtils.generateUUID(),new Ci.Vector2(n,r))}function $l(n,r,e,t,o,i){let s=Ai(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function yy(n,r,e,t){xy(n,r,e,t).forEach(i=>n.addPoint(i))}function gy(n,r,e,t){let o=xy(n,r,e,t),i=new Me;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function xy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Ci.Vector2(o/r,i/e),a=n.points.map(c=>{let d=c.clone();return d.uuid=Ci.MathUtils.generateUUID(),d}).reverse();return a.forEach(c=>{c.position.multiply(s);let d=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(d)}),a}var Tr=require("three"),vy=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),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,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:s,pathRadius:a,pathType:c,pathSegments:d,cornerRadius:l,cornerSegments:u}=n.parameters,p=new Zs(!1,r,e,t,o,i,s,a,c,d,l,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Yu=new Tr.Uint32BufferAttribute([0,0,0],1),Zs=class extends Tr.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,a=1,c=1,d=1,l=1,u=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let m=()=>new Tr.Vector3,h=new Tr.Vector3,y=m(),g=m(),x=m(),S,w,b,P,_,v,N,O,A=m(),T=m(),C=m(),E=m(),L=m(),X=m(),B=m(),Q=m(),z=t-2*c+.001,V=z/s,W=Math.ceil(a*s),$=W+1,Y=z/W,q=-z/2,k=l+1,U=2*Math.PI/l,R=Math.PI/2/p,F=.01,j=Math.min((1-u/100)*c,c-F),D=c-j,ie=0,ee=2,K=p*ee+ee,re=k*K/ee,Z=re+k*$,ce=k*($+K),[fe,ae,te]=[3,3,2].map(st=>Array(ce*st).fill(0)),se=[],ue=i-c;function ve(st,tr){let Er=Math.PI/2;v=tr*Y,O=2*Math.PI*(v%V)/V+Er,v+=q,N=Math.sin(O)*ue,_=Math.cos(O)*ue,r?st.set(_,N,v):st.set(_,v,N)}ve(h,-1e-10),ve(y,0),A.copy(h),ve(h,1);let er=h.distanceTo(y),Pe=f?0:D+j,Ne=er*W+2*Pe,Et=j,Ie=Ne-Pe;for(let st=0;st<=W;st++){ve(g,st),Q.subVectors(g,A).normalize(),A.copy(g),X.copy(g).setComponent(+r+1,0).normalize(),B.crossVectors(Q,X).normalize();let tr=st===0,Er=st===W,z0=tr?3*Math.PI/2:R,j0=tr?Et:Ie,F0=tr?k:Z,k0=tr?0:ce-k,U0=Q.clone().multiplyScalar(tr?-D:D).add(g),H0=Q.clone().multiplyScalar(tr?-1:1).normalize();for(let ro=0;ro<k;ro++){let $d=ro*U;if(T.addVectors(h.copy(X).multiplyScalar(c*Math.cos($d)),y.copy(B).multiplyScalar(c*Math.sin($d))),C.copy(T).normalize(),tr||Er){f||(ie=k0+ro,[0,1,2].forEach(Ut=>{fe[ie*3+Ut]=U0.getComponent(Ut),ae[ie*3+Ut]=H0.getComponent(Ut)}),te[ie*2]=+Er,te[ie*2+1]=ro/l),y.copy(C).multiplyScalar(j),x.addVectors(g,y);for(let Ut=0;Ut<p;Ut++){let Uc=Ut*R+z0;E.addVectors(h.copy(Q).multiplyScalar(D*Math.sin(Uc)),y.copy(C).multiplyScalar(D*Math.cos(Uc))),L.copy(E).normalize(),y.addVectors(x,E),E.normalize(),ie=F0+Ut*k+ro,[0,1,2].forEach(Ma=>{fe[ie*3+Ma]=y.getComponent(Ma),ae[ie*3+Ma]=L.getComponent(Ma)});let W0=+tr+Math.sin(Uc);te[ie*2]=(j0+D*W0)/Ne,te[ie*2+1]=ro/l}}y.addVectors(g,T),ie=re+st*k+ro,[0,1,2].forEach(Ut=>{fe[ie*3+Ut]=y.getComponent(Ut),ae[ie*3+Ut]=C.getComponent(Ut)}),te[ie*2]=(Pe+st*er)/Ne,te[ie*2+1]=ro/l}}let Fe=$+2*p+ee,it=1,[In,Mn]=[+f,Fe-1];for(let st=In;st<=Mn-1;st++){let tr=f&&st===Mn-1;for(let Er=0;Er<k-1;Er++)S=st*k+Er,w=S+1,b=(tr?Er:S)+k,P=(tr?Er+1:w)+k,st===0?se.push(w,P,b):st===Fe-2?se.push(S,w,b):se.push(S,w,b,w,P,b)}this.setIndex(se),this.setAttribute("position",new Tr.Float32BufferAttribute(fe,3)),this.setAttribute("normal",new Tr.Float32BufferAttribute(ae,3)),this.setAttribute("uv",new Tr.Float32BufferAttribute(te,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,a,c,d=6*(e-1)*r.radialSegments,l=e,u=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,s=i+1,a=(u?p:i)+t,c=(u?p+1:s)+t,o[d++]=i,o[d++]=s,o[d++]=a,o[d++]=s,o[d++]=c,o[d++]=a;return o.length=d,Yu.array=o,Yu.count=o.length,Yu}};var by=require("three");var Sy=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:s}=n.parameters,a=o===0&&i!==0?new Qs(r*.5,i,s):new by.IcosahedronGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},Qs=class extends zo{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],s=[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],a="IcosahedronGeometry";super(i,s,a,r,e,t),this.type=a}static fromJSON(r){return new Qs(r.radius,r.corner,r.cornerSides)}};var Yl=require("three"),wy=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 Yl.Shape;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 Yl.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Hr=require("three");var go=require("three");var ne=require("three"),Ur=new ne.Matrix4,Xu=new ne.Object3D,Xl=new ne.Vector3,Uo=class extends ne.EventDispatcher{constructor(){super(),this.uuid=ne.MathUtils.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 ne.Matrix3().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 s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Ur.makeRotationX(r),this.applyMatrix4(Ur),this}rotateY(r){return Ur.makeRotationY(r),this.applyMatrix4(Ur),this}rotateZ(r){return Ur.makeRotationZ(r),this.applyMatrix4(Ur),this}translate(r,e,t){return Ur.makeTranslation(r,e,t),this.applyMatrix4(Ur),this}scale(r,e,t){return Ur.makeScale(r,e,t),this.applyMatrix4(Ur),this}lookAt(r){return Xu.lookAt(r),Xu.updateMatrix(),this.applyMatrix4(Xu.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,s=o.normal,a=o.color,c=o.uv,d=o.uv2;d!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new ne.Vector3().fromBufferAttribute(i,p)),a!==void 0&&e.colors.push(new ne.Color().fromBufferAttribute(a,p));function l(p,f,m,h){let y=a===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new ne.Vector3().fromBufferAttribute(s,p),new ne.Vector3().fromBufferAttribute(s,f),new ne.Vector3().fromBufferAttribute(s,m)],x=new Ii(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new ne.Vector2().fromBufferAttribute(c,p),new ne.Vector2().fromBufferAttribute(c,f),new ne.Vector2().fromBufferAttribute(c,m)]),d!==void 0&&e.faceVertexUvs[1].push([new ne.Vector2().fromBufferAttribute(d,p),new ne.Vector2().fromBufferAttribute(d,f),new ne.Vector2().fromBufferAttribute(d,m)])}let u=r.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(p,p+1,p+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(Xl).negate(),this.translate(Xl.x,Xl.y,Xl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new ne.Matrix4;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 ne.Vector3,e=new ne.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],a=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,a),e.subVectors(s,a),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 ne.Vector3;if(r){let t=new ne.Vector3,o=new ne.Vector3;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=this.vertices[a.a],d=this.vertices[a.b],l=this.vertices[a.c];t.subVectors(l,d),o.subVectors(c,d),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.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],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[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,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new Uo;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,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let d=new ne.Vector3,l={a:new ne.Vector3,b:new ne.Vector3,c:new ne.Vector3};i.push(d),s.push(l)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],c=o.faceNormals[i],d=o.vertexNormals[i];c.copy(a.normal),d.a.copy(a.vertexNormals[0]),d.b.copy(a.vertexNormals[1]),d.c.copy(a.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 ne.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new ne.Sphere),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,s=this.vertices,a=r.vertices,c=this.faces,d=r.faces,l=this.colors,u=r.colors;e!==void 0&&(o=new ne.Matrix3().getNormalMatrix(e));for(let p=0,f=a.length;p<f;p++){let h=a[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=u.length;p<f;p++)l.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let m=d[p],h,y,g=m.vertexNormals,x=m.vertexColors,S=new Ii(m.a+i,m.b+i,m.c+i);S.normal.copy(m.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=g.length;w<b;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),S.vertexNormals.push(h);S.color.copy(m.color);for(let w=0,b=x.length;w<b;w++)y=x[w],S.vertexColors.push(y.clone());S.materialIndex=m.materialIndex+t,c.push(S)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}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 c=0,d=this.vertices.length;c<d;c++){let l=this.vertices[c],u=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.z*i);e[u]===void 0?(e[u]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,d=this.faces.length;c<d;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let u=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(u[p]===u[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let d=s[c];this.faces.splice(d,1);for(let l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(d,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new ne.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,d){return c.materialIndex-d.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let c=0;c<e;c++){let d=r[c]._id;s&&s.push(o[d]),a&&a.push(i[d])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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 m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let t=[],o=[],i={},s=[],a={},c=[],d={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,S=h.normal.length()>0,w=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,P=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,S),_=l(_,5,w),_=l(_,6,b),_=l(_,7,P),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&t.push(u(h.normal)),w){let v=h.vertexNormals;t.push(u(v[0]),u(v[1]),u(v[2]))}if(b&&t.push(p(h.color)),P){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(m,h,y){return y?m|1<<h:m&~(1<<h)}function u(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(m.getHex())),a[h]}function f(m){let h=m.x.toString()+m.y.toString();return d[h]!==void 0||(d[h]=c.length/2,c.push(m.x,m.y)),d[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new Uo().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 p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let a=r.skinWeights;for(let p=0,f=a.length;p<f;p++)this.skinWeights.push(a[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let d=r.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let l=r.boundingBox;l!==null&&(this.boundingBox=l.clone());let u=r.boundingSphere;return u!==null&&(this.boundingSphere=u.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 Ku().fromGeometry(this),e=new ne.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",Kl.call(new ne.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",Kl.call(new ne.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",_y.call(new ne.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Py.call(new ne.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Py.call(new ne.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let d=s[a],l=new ne.Float32BufferAttribute(d.data.length*3,3);l.name=d.name,i.push(Kl.call(l,d.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new ne.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Ty.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new ne.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Ty.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 ne.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new ne.Float32BufferAttribute(t.vertices.length*3,3),i=new ne.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",Kl.call(o,t.vertices)),e.setAttribute("color",_y.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new ne.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",kP.call(s,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}};Uo.prototype.isGeometry=!0;var Ku=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,s=r.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.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,s=o[1]&&o[1].length>0,a=r.morphTargets,c=a.length,d;if(c>0){d=[];for(let g=0;g<c;g++)d[g]={name:a[g].name,data:[]};this.morphTargets.position=d}let l=r.morphNormals,u=l.length,p;if(u>0){p=[];for(let g=0;g<u;g++)p[g]={name:l[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.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 x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new ne.Vector2,new ne.Vector2,new ne.Vector2))}if(s===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new ne.Vector2,new ne.Vector2,new ne.Vector2))}for(let b=0;b<c;b++){let P=a[b].vertices;d[b].data.push(P[x.a],P[x.b],P[x.c])}for(let b=0;b<u;b++){let P=l[b].vertexNormals[g];p[b].data.push(P.a,P.b,P.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.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}},Ii=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new ne.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ne.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}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 kP(n){return this.array.set(n),this}function _y(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 ne.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Py(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 ne.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function Kl(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 ne.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Ty(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 ne.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var UP=["a","b","c"];function HP(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Zu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Qu(n,r,e,t,o,i){let s=Math.min(n,r),a=Math.max(n,r),c=s+"_"+a,d;if(t.has(c))d=t.get(c);else{let l=e[s],u=e[a];d={a:l,b:u,newEdge:null,faces:[]},t.set(c,d)}d.faces.push(o),i[n].edges.push(d),i[r].edges.push(d)}function WP(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],Qu(s.a,s.b,n,t,s,e),Qu(s.b,s.c,n,t,s,e),Qu(s.c,s.a,n,t,s,e)}function Zl(n,r,e,t,o){n.push(new Ii(r,e,t,void 0,void 0,o))}function Mi(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function Ql(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var Jl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof go.BufferGeometry?r=new Uo().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 go.Vector3,t,o,i,s,a,c=r.vertices,d=r.faces,l=r.faceVertexUvs[0],u=l!==void 0&&l.length>0,p=[],f=new Map;WP(c,d,p,f);let m=[],h,y,g,x,S,w,b;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new go.Vector3,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),s=0;s<b;s++){for(x=y.faces[s],a=0;a<3&&(h=c[HP(x,UP[a])],!(h!==y.a&&h!==y.b));a++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let P,_,v,N,O,A,T,C=[];for(o=0,i=c.length;o<i;o++){for(A=c[o],O=p[o].edges,t=O.length,t==3?P=3/16:t>3&&(P=3/(8*t)),_=1-t*Number(P),v=P,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),T=A.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=O[s],h=N.a!==A?N.a:N.b,e.add(h);e.multiplyScalar(Number(v)),T.add(e),C.push(T)}let E=C.concat(m),L=C.length,X,B,Q,z=[],V=[],W,$,Y,q,k=new go.Vector2,U=new go.Vector2,R=new go.Vector2;for(o=0,i=d.length;o<i;o++)x=d[o],X=Number(Zu(x.a,x.b,f).newEdge)+L,B=Number(Zu(x.b,x.c,f).newEdge)+L,Q=Number(Zu(x.c,x.a,f).newEdge)+L,Zl(z,X,B,Q,x.materialIndex),Zl(z,x.a,X,Q,x.materialIndex),Zl(z,x.b,B,X,x.materialIndex),Zl(z,x.c,Q,B,x.materialIndex),u&&(W=l[o],$=W[0],Y=W[1],q=W[2],k.set(Mi($.x,Y.x),Mi($.y,Y.y)),U.set(Mi(Y.x,q.x),Mi(Y.y,q.y)),R.set(Mi($.x,q.x),Mi($.y,q.y)),Ql(V,k,U,R),Ql(V,$,k,R),Ql(V,Y,U,k),Ql(V,q,R,U));r.vertices=E,r.faces=z,u&&(r.faceVertexUvs[0]=V)}};var ft=new Hr.Vector3,Oy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Hr.BufferGeometry().copy(new Hr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ft),t={width:ft.x,height:ft.y,depth:ft.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 Hr.BufferGeometry().copy(new Hr.BoxGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ft)):ft.set(s.width,s.height,s.depth),(r!==ft.x||e!==ft.y||t!==ft.z)&&i.scale(ft.x===0?1:r/ft.x,ft.y===0?1:e/ft.y,ft.z===0?1:t/ft.z);let a=i.originalGeometry;try{o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Jl(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Hr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ft);let s=100/ft.x;Object.assign(i.parameters,{width:100,height:ft.y*s,depth:ft.z*s}),r(this.build(i))})}};var ec=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 Me?n.shape:new Me,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:s,extrudeBevelSegments:a}=n.parameters,c=n.shape,d=r*.5,l=e*.5,u=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=u+Math.sin(y)*d,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Yt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var Te=require("three"),Ay=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:s,cornerRadius:a,cornerSegments:c}=n.parameters,d=new ed(r*.5,e,o,i,s,a,c);return d.scale(1,1,t/r),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function Js(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Ju(n,r,e,t,o,i){let s=r.clone().sub(n),a=e.clone().sub(n),c=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let d=s.add(a).normalize();i.copy(n).addScaledVector(d,t/Math.sin(c/2))}else{let d=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(d)),i.addScaledVector(a,t/Math.sin(d))}}function qP(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var ed=class extends Te.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let c=[],d=[],l=[],u=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,x=Math.PI-g,S=new Te.Vector3(0,-f,0),w=new Te.Vector3(0,f,0),b=new Te.Vector2(r,-f),P=new Te.Vector2(h,-f),_=new Te.Vector2(0,w.y).sub(P),v=new Te.Vector2(0,w.y).sub(b),N=new Te.Vector2(_.y,-_.x).normalize(),O=new Te.Vector2(v.y,-v.x).normalize(),T=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,T);let C;{let V=new Te.Vector3(N.x,N.y,0),W=new Te.Vector3(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);C=V.angleTo(W)}let E=s/Math.tan((Math.PI-_.angle())/2),L=s/Math.tan((Math.PI-C)/2),X=new Te.Vector3;if(!i){d.push(S.x,S.y,S.z),l.push(0,-1,0),u.push(0,0);let V=p++,W=[],$=b.clone(),Y=E/Math.cos(Math.PI/t);$.x-=Y;for(let q=0;q<t;q++){let k=q/t*Math.PI*2+m,U=new Te.Vector2(Math.sin(k),Math.cos(k));Js($,U,X),d.push(X.x,X.y,X.z),l.push(0,-1,0),u.push(0,0),W.push(p++)}for(let q=0;q<W.length;q++)c.push(W[q],V,W[(q+1)%W.length])}let B=[];{let V=new Te.Vector3,W=new Te.Vector3,$=new Te.Vector3,Y=new Te.Vector3,q=new Te.Vector3,k=new Te.Vector3;for(let U=0;U<t;U++){let R=U/t*Math.PI*2+m,F=(U+.5)/t*Math.PI*2+m,j=(U+1)/t*Math.PI*2+m,D=new Te.Vector2(Math.sin(R),Math.cos(R)),ie=new Te.Vector2(Math.sin(F),Math.cos(F)),ee=new Te.Vector2(Math.sin(j),Math.cos(j));Js(b,D,W),Js(b,ee,$),Js(N,ie,V),Ju(w,W,$,L,L,Y),d.push(Y.x,Y.y,Y.z),Ju(W,w,$,L,E,q),d.push(q.x,q.y,q.z),Ju($,W,w,E,L,k),d.push(k.x,k.y,k.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),u.push(0,0),u.push(0,0),u.push(0,0);let K=p++,re=p++,Z=p++;if(c.push(K,re,Z),s>0){{let ae=W.clone().add($).multiplyScalar(.5),te=w.clone().sub(ae).normalize(),ue=S.clone().sub(ae).normalize().add(te).normalize().multiplyScalar(-1),ve=k.clone().sub(q);Q(ae,ve,ue,_.angle())}let ce,fe;{let ae=new Te.Vector3;Js(O,ee,ae);let te=k.clone().add(Y).multiplyScalar(.5);te=qP(te,$,w);let se=k.clone().sub(Y);[ce,fe]=Q(te,se,ae,C,Y.y)}{let ae=ce,te=ae.clone().setY(0).normalize(),se=new Te.Vector3(0,-1,0),ue=te.clone().cross(se);z(ae,te,se,ue)}B.concat(fe);{let ae=_.angle(),te=Math.PI-ae,se=w.clone();se.y-=s/Math.sin(ae-Math.PI/2);let ue=new Te.Vector3,ve=[];for(let Pe=0;Pe<a;Pe++){let Ne=[],Et=Math.PI/2-te*Pe/a,Ie=Math.cos(Et),Fe=Math.sin(Et),it=F;for(let In=0;In<=Pe;In++){let Mn=Math.cos(it),st=Math.sin(it);V.x=Ie*st,V.y=Fe,V.z=Ie*Mn,ue.copy(se).addScaledVector(V,s),d.push(ue.x,ue.y,ue.z),l.push(V.x,V.y,V.z),u.push(0,0),Ne.push(p++),it+=Math.PI*2/Pe/t}ve.push(Ne)}fe.reverse(),ve.push(fe);let er=ve.length-1;for(let Pe=0;Pe<er;Pe++){let Ne=ve[Pe],Et=ve[Pe+1],Ie=Ne.length-1;c.push(Et[1],Ne[0],Et[0]);for(let Fe=1;Fe<=Ie;Fe++)c.push(Ne[Fe],Ne[Fe-1],Et[Fe]),c.push(Et[Fe+1],Ne[Fe],Et[Fe])}}}}}this.setIndex(c),this.setAttribute("position",new Te.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Te.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Te.Float32BufferAttribute(u,2));function Q(V,W,$,Y,q){let k=-Y/2,U=(Math.PI-Y)/2,R=W.clone().normalize().cross($);V.addScaledVector($,-s/Math.sin(U));let F=new Te.Vector3,j=new Te.Vector3,D=1,ie=p,ee=[];for(let K=0;K<=a;K++){let re=k+K/a*Y;j.set(0,0,0),j.addScaledVector(R,Math.sin(re)),j.addScaledVector($,Math.cos(re));for(let Z=0;Z<=D;Z++){let ce=Z/D-.5;if(F.copy(V),F.addScaledVector(W,ce),F.addScaledVector(j,s),q!=null){let fe=Math.max(0,F.y-q);F.addScaledVector(W,-fe/W.y)}d.push(F.x,F.y,F.z),l.push(j.x,j.y,j.z),u.push(0,0),Z===0&&ee.push(p),p++}}for(let K=0;K<a;K++)for(let re=0;re<D;re++){let Z=ie+re+(D+1)*K,ce=Z+(D+1),fe=ce+1,ae=Z+1;c.push(Z,ce,ae),c.push(ce,fe,ae)}return[V.clone().addScaledVector(W,.5),ee]}function z(V,W,$,Y){let q=Math.PI/2,k=v.angle()-q,U=[],R=new Te.Vector3,F=new Te.Vector3;for(let D=0;D<=a;D++){let ie=[],ee=D/a;for(let K=0;K<=D;K++){let Z=((D?K/D:0)-.5)*x,ce=Math.cos(Z),fe=Math.sin(Z),ae=Math.atan(Math.tan(k)*ce),te=(q+ae)*ee,se=Math.cos(te),ue=Math.sin(te);R.set(0,0,0),R.addScaledVector(W,ue*ce),R.addScaledVector($,se),R.addScaledVector(Y,ue*fe),F.copy(V).addScaledVector(R,s),d.push(F.x,F.y,F.z),l.push(R.x,R.y,R.z),u.push(0,0),ie.push(p++)}U.push(ie)}let j=U.length-1;for(let D=0;D<j;D++){let ie=U[D],ee=U[D+1],K=ie.length-1;c.push(ie[0],ee[1],ee[0]);for(let re=1;re<=K;re++)c.push(ie[re-1],ie[re],ee[re]),c.push(ie[re],ee[re+1],ee[re])}}}};var tc=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 Me?n.shape:new Me,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:s,extrudeBevelSize:a,extrudeBevelSegments:c}=n.parameters,d={x:e*.5,y:t*.5},l={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,b,P){return b>e&&P>t?Math.min(w*e/b,w*t/P):b>e?w*e/b:P>t?w*t/P:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=l.x,h=u.x,y=u.y,g=l.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let x=!0;for(let w=0,b=r.points.length;w<b;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let S=Yt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};var Cy=require("three"),Ny=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:Math.PI},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=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:d}=n.parameters,l=new Cy.SphereGeometry(.5*r,o,i,s,a,c,d);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Iy=require("three"),My=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 Iy.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var Ho=require("three"),Ey=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:s}=n.parameters,a=new td(r,e,t,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},td=class extends Ho.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],d=[],l=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let u=[],p=Math.PI/2,f=(F=0,j=0,D=0)=>new Ho.Vector3(F,j,D),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],S=-g,w=+g,[b,P,_]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),N=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-x,A=b.z-l;o<=p?(_.z=Math.min(O,A),_.z==A&&(_.y-=(O-A)/Math.tan(p-o))):P.z=Math.min(P.z-O-x,b.z-l),m.subVectors(b,P),h.subVectors(_,P);let T=Math.min(m.length(),h.length())*i/100,C=T*Math.tan(o/2),E=T/Math.cos(o/2),L=m.clone().normalize().add(h.normalize()).setLength(E).add(P);m.set(0,v(o,!0),N(o,!0)),u.push([_,m.clone()]);let X=(Math.PI-o)/s;for(let F=0;F<=s;F++){let j=p+o+F*X;m.set(0,Math.sin(j)*C,Math.cos(j)*C),m.add(L),h.set(0,v(j),N(j)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let B=Math.sin(X/2)*C*2,Q=u.length-1,z=u[0][0].distanceTo(u[1][0]),V=u[Q-1][0].distanceTo(u[Q][0]),W=z+B*s+V;u[0].push(1);for(let F=0;F<=s;F++)u[F+1].push(1-(z+F*B)/W);u[Q].push(0);let[$,Y,q]=u[0],k,U,R;for(let F=1;F<u.length;F++)[k,U,R]=u[F],a.push(S,$.y,$.z,S,k.y,k.z,w,$.y,$.z,w,$.y,$.z,S,k.y,k.z,w,k.y,k.z),c.push(0,Y.y,Y.z,0,U.y,U.z,0,Y.y,Y.z,0,Y.y,Y.z,0,U.y,U.z,0,U.y,U.z),d.push(0,q,0,R,1,q,1,q,0,R,1,R),[$,Y,q]=[k,U,R];this.setAttribute("position",new Ho.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Ho.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Ho.Float32BufferAttribute(d,2))}};var rc=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 Me?n.shape:new Me,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:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:d}=n.parameters,l=n.shape,u=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*t/100,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let b=h*w,P=f+Math.sin(b)*u,_=m+Math.cos(b)*p;l.addPoint(l.createPoint(P,_))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*u,P=m+Math.sin(y)*p;l.addPoint(l.createPoint(b,P)),y+=h,b=f+Math.cos(y)*g,P=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(b,P)),y+=h}l.isClosed=!0;for(let w=0,b=l.points.length;w<b;w++)l.points[w].roundness=i;l.roundness=i,l.update();let S=Yt.create({shape:l,parameters:{roundness:i,depth:a,extrudeBevelSize:c,extrudeBevelSegments:d}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};var Ly=require("three"),Dy=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 Ly.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var By=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:Math.PI*2,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:s,cornerRadius:a,cornerSegments:c}=n.parameters,d=$P(r,e,t,r*.5,s,i,0,0,o,a,c);return d.scale(1,e/r,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function $P(n,r,e,t,o,i,s,a,c,d,l){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(d=0),new Zs(!0,n,r,e,t,o,i,s,a,c,d,l)}var Ry=require("three"),Gy=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:s}=n.parameters,a=r*.5;a!==e&&(a-=e);let c=new Ry.TorusKnotGeometry(a,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Vy=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 Me?n.shape:new Me,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:s,isRect:a}=n.parameters,c=n.shape,d=r*.5,l=e*.5;a?(c.addPoint(c.createPoint(-d,l)),c.addPoint(c.createPoint(d,-l)),c.addPoint(c.createPoint(-d,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(d,-l)),c.addPoint(c.createPoint(-d,-l))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let u=Yt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};var ge=require("three");function zy(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var YP=new ge.Matrix4,XP=new ge.Matrix4;function KP(n,r,e){let t=[new ge.Vector3,new ge.Vector3,new ge.Vector3],o=[new ge.Vector3,new ge.Vector3,new ge.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let a=o[s],c=ge.MathUtils.lerp(i.length(),a.length(),e);i.lerp(a,e).setLength(c)}),new ge.Matrix4().makeBasis(t[0],t[1],t[2])}var jy=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),s=r?.shapeData??Ni.create({parameters:yu}).userData.shape;return{path:n.path??di.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...Cl,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new rd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ge.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},rd=class extends ge.BufferGeometry{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)||!zy(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,s=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),d=Math.min(Math.max(2,c-a+1),s+2),l=[],u=[];for(let z=0;z<d;z++){let V=this.inputs.path.isClosed?(z+a)%e.length:Math.min(z+a,e.length-1);l.push(e[V].clone()),u.push(t[V].clone())}let p=(z,V,W)=>{l[z]=l[z].clone().lerp(l[V],W),u[z]=KP(u[z],u[V],W)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let z=l.length-1;l[z].copy(l[0]),u[z].copy(u[0])}this._applyPathModifiers(u,f,h);let{bevel:g,bevelSides:x}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:b,infos:P,vertices:_}=this._computeShapePoints(w),v=0,N;S==="round"&&(N=new ko(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=N.getAttribute("position").count);let O=0,A=0;P.sort((z,V)=>z.start-V.start),P.forEach(z=>{z.verticesStart=O,z.verticesCount=z.continuous.reduce((V,W,$)=>V+($===0||!W?2:1),0),A+=z.verticesCount,O=A});let T=A*d,C,E=0;if(this._isOpenEnded()&&S==="flat"){try{C=Pr({windingRule:Oe.ODD,elementType:Qe.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{C=$u}E=C.vertexCount}let L=T+2*E+v*2,X=T+2*E,B={positions:new Float32Array(L*3),normals:new Float32Array(L*3),uvs:new Float32Array(L*2)},Q=[];if(P.forEach(z=>{this._extrudeRegion(z,_,u,l,B,Q,this._isGeometryClosed()&&!this._isOpenEnded())}),C&&(this._closeEnd(C,T,Q,B,u[0],l[0],!1),this._closeEnd(C,T+E,Q,B,u[u.length-1],l[l.length-1],!0)),N){B.positions.set(N.getAttribute("position").array,X*3),B.normals.set(N.getAttribute("normal").array,X*3),B.uvs.set(N.getAttribute("uv").array,X*2);let z=Q.length;Q.push(...N.getIndex().array.map($=>$+X)),X+=v,B.positions.set(N.getAttribute("position").array,X*3),B.normals.set(N.getAttribute("normal").array,X*3),B.uvs.set(N.getAttribute("uv").array,X*2);let V=Q.length;Q.push(...N.getIndex().array.map($=>$+X)),this.setAttribute("position",new ge.BufferAttribute(B.positions,3)),this.setAttribute("normal",new ge.BufferAttribute(B.normals,3)),this.setAttribute("uv",new ge.BufferAttribute(B.uvs,2)),this.setIndex(Q);let W=YP;W.copy(u[u.length-1]).setPosition(l[l.length-1]),this.applyMatrix4OnRange(W,X,L),W.copy(u[0]).setPosition(l[0]).multiply(XP.makeScale(1,1,-1)),this.applyMatrix4OnRange(W,X-v,X),this.reverseIndicesOnRange(z,V)}else this.setAttribute("position",new ge.BufferAttribute(B.positions,3)),this.setAttribute("normal",new ge.BufferAttribute(B.normals,3)),this.setAttribute("uv",new ge.BufferAttribute(B.uvs,2)),this.setIndex(Q)}_extractPathPoints(){let t=kl(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),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,s=new ge.Vector3,a=new ge.Vector3,c=new ge.Vector3,d=new ge.Vector3,l=new ge.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(x).normalize(),b=S.clone().sub(g).normalize(),P=w.clone().add(b).normalize();c.copy(P),y===0&&(P.equals(l)||P.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(P).normalize(),v=P.clone().cross(_).normalize();l.copy(v),d.copy(_),y===0&&(s.copy(v),a.copy(P));let N=new ge.Matrix4().makeBasis(_,v,P);t.push(N)}let u=i?a:c,p=i?s:new ge.Vector3(0,1,0),f=u.clone().cross(d).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);u.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ge.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:a,startScale:c,endScale:d}=this.inputs.parameters.extrusion,l=new ge.Matrix4,u=new ge.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(ge.MathUtils.lerp(s,s+a,m));let h=ge.MathUtils.lerp(c,d,m);u.makeScale(h,h,h),p.multiply(l).multiply(u)}),e}_computeShapePoints(e=12,t=Oe.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),a;try{a=Pr({windingRule:t,elementType:Qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{a=Ks}let c;try{c=Pr({windingRule:Oe.ODD,elementType:Qe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=qu}if(!a)throw new Error("error generating geometry");let d=a.elementCount;if(c){a.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?a.vertexCount:0;a.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=a.vertexCount;a.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];a.vertices.push(y)}}let l=1/0,u=-1/0,p=1/0,f=-1/0;for(let h=0,y=a.vertexCount;h<y;h++){let g=h*2,x=a.vertices[g+0],S=a.vertices[g+1];x<l&&(l=x),x>u&&(u=x),S<p&&(p=S),S>f&&(f=S)}let m=[];for(let h=a.elementCount-1;h>=0;h--){let y=h>=d,g=h*2,x=a.elements[g+0],S=a.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let P=x,_=w-1,v=x+1,N=o.roundedCurves.length;do{let O=P-x,A=a.vertices[_*2+0],T=a.vertices[_*2+1],C=a.vertices[P*2+0],E=a.vertices[P*2+1],L=a.vertices[v*2+0],X=a.vertices[v*2+1],B=C-A,Q=E-T,z=Math.sqrt(B*B+Q*Q);B/=z,Q/=z;let V=C-L,W=E-X,$=Math.sqrt(V*V+W*W);V/=$,W/=$,b.normals[O*2+0]=-W,b.normals[O*2+1]=V;let Y=a.vertexIndices[P];if(Array.isArray(Y))b.continuous[O]=!1;else{let[q,k]=o.getCurveIndexFromVertexId(Y-1,!0);if(k>0&&k<1)b.continuous[O]=!0;else{let U=k===1?q+1:q-1;U=(U+N)%N;let R=k===1?0:1,F=o.roundedCurves[q].getTangent(k),j=o.roundedCurves[U].getTangent(R);b.continuous[O]=F.dot(j)>.95}}y&&(b.normals[O*2+0]*=-1,b.normals[O*2+1]*=-1),[_,P,v]=[P,v,v+1],v>=w&&(v-=S)}while(v!==x+1)}return{regions:[i,...s],infos:m,vertices:a.vertices}}_insertVertex(e,t,o,i,s){let a=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[a+0]=s.x,e.uvs[a+1]=s.y}_extrudeRegion(e,t,o,i,s,a,c){let d=new ge.Vector3,l=new ge.Vector3,u=new ge.Vector3,p=new ge.Vector3,f=new ge.Vector2;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(d.set(t[w+0],t[w+1],0),u.copy(d).applyMatrix4(h).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;l.set(t[b+0],t[b+1],0),p.copy(d).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(s,x,u,p,f),x++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let b=S===e.count-1?e.start*2:w+2;l.set(t[b+0],t[b+1],0),p.copy(l).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,x,u,p,f),x++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,P=y+w,_=g+w,v=g+x;e.isHole?a.push(b,_,P,b,v,_):a.push(b,P,_,b,_,v),x++}}}_closeEnd(e,t,o,i,s,a,c){let d=e.vertexCount,l=new ge.Vector3(0,0,c?-1:1).applyMatrix4(s),u=new ge.Vector3,p=new ge.Vector2;for(let m=0;m<d;m++){let h=2*m;u.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(a),this._insertVertex(i,t+m,u,l,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}applyMatrix4OnRange(e,t,o){let i=e.elements,s=new ge.Matrix3().getNormalMatrix(e).elements,a,c,d,l,u=this.attributes.position,p=this.attributes.normal;if(!u||!p)return;let f=u.array,m=p.array,h=u.itemSize;for(let y=t*h,g=o*h;y<g;y+=h){if(y===t)debugger;a=f[y+0],c=f[y+1],d=f[y+2],l=1/(i[3]*a+i[7]*c+i[11]*d+i[15]),f[y+0]=(i[0]*a+i[4]*c+i[8]*d+i[12])*l,f[y+1]=(i[1]*a+i[5]*c+i[9]*d+i[13])*l,f[y+2]=(i[2]*a+i[6]*c+i[10]*d+i[14])*l,a=m[y+0],c=m[y+1],d=m[y+2],m[y+0]=s[0]*a+s[3]*c+s[6]*d,m[y+1]=s[1]*a+s[4]*c+s[7]*d,m[y+2]=s[2]*a+s[5]*c+s[8]*d}u.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let s=o.getX(i),a=o.getX(i+1),c=o.getX(i+2);o.setXYZ(i,c,a,s)}o.needsUpdate=!0}}};var hn=require("three"),Fy=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ky(){let n=new hn.BufferGeometry;return n.setAttribute("position",new hn.BufferAttribute(new Float32Array([]),3)),n.setIndex(new hn.BufferAttribute(new Uint16Array([]),1)),n}var ZP=ky().attributes,QP=12,JP=1,Ei=class extends hn.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,ZP),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:s,extrudeBevelSize:a,extrudeBevelSegments:c,text:d,textTransform:l}=e,u=l===2?d.toUpperCase():l===3?d.toLowerCase():d,p=eT(e,t,u),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,x=f.map(b=>new Me().fromShape(b));this.vectorShapes=x;let S=x.map(b=>Yt.create({shape:b,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:a,windingRule:s<=0?Oe.NONZERO:Oe.ODD,subdivisions:this.isLowResolution&&s>0?JP:QP}})),w=S.length?(0,Fy.mergeBufferGeometries)(S):ky();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([b,P])=>{this.setAttribute(b,P)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=vr(new hn.BufferGeometry,Ei.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 eT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
2
  `?(t[t.length-1]+=o,o="",i===`
3
- `&&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}var Ve=require("three");var By,Ni=new Promise(n=>{By=n}),Dy=!1;var tc;function Ry(){if(Dy)return;if(tc)return tc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.405/build",[t,o]=await Promise.all([import("./process.js"),fetch(`${e}/process.wasm`).then(a=>a.arrayBuffer())]),i=t.default,s=await i({wasmBinary:o});By(s),Dy=!0}return tc=n(),tc}var Gy=require("three");function un(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Ae.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new Gy.BufferGeometryLoader().parse(n);else{if(n.type==="SubdivGeometry")return new nt(n,e);if(n.type==="TextGeometry")return new Ai(n,r)}let o;try{o=Qd(t)}catch(i){console.error(i)}if(!o){let i=Ae.createFromState(ni.defaultData(),100,100);t.shape=i,o=Qd(t)}return o}var Vy=require("three"),zP=new Vy.Matrix4;function Xs(n,r,e,t){let o=n.position.array,i=n.normal.array,s=zP.makeScale(r,e,t).invert().elements,a,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,a=i[l],c=i[l+1],u=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*u,i[l+1]=s[1]*a+s[5]*c+s[9]*u,i[l+2]=s[2]*a+s[6]*c+s[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var rc=new Ve.Box3,Ii=new Ve.Vector3,ue;Ni.then(n=>{ue=n});var zy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),jy=new Uint32Array([0,1,2,3]),Fy=new Uint8Array([4]),nt=class extends Ve.BufferGeometry{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=Co.div(t,o);this.subdividedGeometry&&Xs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Xs(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Ii.fromArray(i));let a=Ii.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=a/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=nt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new Ve.BoxGeometry(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&&(nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ve.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;rc.setFromBufferAttribute(t),rc.getCenter(o),e.boundingSphere.radius=o.distanceTo(rc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rc.getSize(Ii);let i={width:Ii.x,height:Ii.y,depth:Ii.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,a,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(ue.free_bvh(t),ue.free_subdivision_surface(t));try{s=nt.allocate(e,i)}catch(l){console.error(l,e),s=nt.allocate({positionWASM:zy,indexWASM:jy,verticesPerFaceWASM:Fy},i)}if(ue.set_destination_refinement_level(s,0),a=nt.buildLevel(s,!0,u),e.subdivisions>0)try{ue.set_destination_refinement_level(s,e.subdivisions),c=nt.buildLevel(s,!1,u)}catch{try{ue.set_destination_refinement_level(s,e.subdivisions-1),c=nt.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:a,subdividedGeometry:c}}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:un(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let a,c,u,l;({positions:a,triIndices:l}=ru(i.getAttribute("position"),s));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=ou(a,l,i,d),{positions:a,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,s,a=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=zy,i=jy,s=Fy);let u=o.length,l=i.length,d=s.length,p=o.length+a.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(m),x=new Float32Array(ue.HEAPF32.buffer,g,p),b=new Uint32Array(ue.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(a,o.length),x.set(c,o.length+a.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(P=>P!==1)&&(w=new Ve.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?ue.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):ue.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return ue._free(g),S}static buildLevel(e,t,o,i,s){let a=s?ue.get_mesh_data2(e,t?ue.Level.CONTROL:ue.Level.REFINED,o,s.elements):ue.get_mesh_data(e,t?ue.Level.CONTROL:ue.Level.REFINED,o),c=8,u=ue.HEAPU32.subarray(a>>2,(a>>2)+c),l=u.subarray(4,4+4),d=0,p=ue.HEAPU32[u[d]>>2],f=ue.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=ue.HEAPU32[u[d]>>2],h=ue.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=ue.HEAPU32[u[d]>>2],g=ue.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=ue.HEAPU32[u[d]>>2],b=ue.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new Ve.BufferGeometry;if(w.setIndex(new Ve.Uint32BufferAttribute(b,1)),w.setAttribute("position",new Ve.Float32BufferAttribute(f,3)),w.setAttribute("normal",new Ve.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new Ve.Uint32BufferAttribute(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new Ve.BufferAttribute(S,4))}return ue.free_mesh_data(a),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,ue.free_mesh_data(a)}static freeSubdivPointer(e){ue.free_bvh(e),ue.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=ue.get_wireframe_data_for_base_level(e),s=4,a=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+2),u=0,l=ue.HEAPU32[a[u]>>2],d=ue.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=ue.HEAPU32[a[u]>>2],f=ue.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new Ve.BufferGeometry;m.setAttribute("position",new Ve.Float32BufferAttribute(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new Ve.BufferAttribute(h,3)),m.setIndex(new Ve.Uint32BufferAttribute(f,1)),ue.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||ue.set_destination_refinement_level(e,t);let s=o?ue.get_topological_data2(e,i?ue.Level.CONTROL:ue.Level.REFINED,o.elements):ue.get_topological_data(e,i?ue.Level.CONTROL:ue.Level.REFINED),a=6,c=ue.HEAPU32.subarray(s>>2,(s>>2)+a),u=c.subarray(3,3+3),l=0,d=ue.HEAPU32[c[l]>>2],p=new Float32Array(ue.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=ue.HEAPU32[c[l]>>2],m=new Uint32Array(ue.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=ue.HEAPU32[c[l]>>2],y=new Uint8Array(ue.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return ue.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var ky=["getX","getY","getZ"];function ru(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],a=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[ky[p]](l)*a)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[ky[p]](l));e[d]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var oc=new Ve.Vector3,Jd=new Ve.Vector3,eu=new Ve.Vector3,tu=new Ve.Vector3;function ou(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 s=e.userData.shape.extractShapePointsToFlatArray([]),a=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&a<=24&&a%4===0&&e.userData.parameters.angle>=360){let l=s.length/2/a;s=s.filter((d,p)=>Math.floor(p/2)%l===0)}let c=0;for(let l=0;l<s.length;l+=2)c+=(s[l]-s[(l===0?s.length:l)-2])*(s[l+1]+s[(l===0?s.length:l)-1]);n.length=0;let u=0;if(c<0)for(let l=0;l<s.length;l+=2)n.push(s[l],s[l+1],0),o.push(u++);else for(let l=s.length-2;l>=0;l-=2)n.push(s[l],s[l+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}for(let s=0,a=e.capStartIndex??r.length;s<a;)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]){oc.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Jd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),eu.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),tu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Jd.sub(oc).normalize(),eu.sub(oc).normalize(),tu.sub(oc).normalize();let c=Jd.cross(eu).dot(tu);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+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.capStartIndex!==void 0){let s=[],a=[],c=0,u=new Float32Array([e.userData.parameters.depth])[0];for(let l=0,d=0;l<n.length;l+=3,d++)n[l+2]===0&&(s.push(d),c++),n[l+2]===u&&a.push(d);if(e.userData.parameters.extrudeBevelSize===0){let l=a[0];a[0]=a[1],a[1]=l}s.reverse(),o.push(...s,...a),i.push(c,c)}return{indices:o,verticesPerFace:i}}var cr={};Uu(cr,{calcBoolean:()=>UP,calcBooleanTopological:()=>kP,freeMeshSet:()=>$P,getMeshSet:()=>HP,hasOpenEdges:()=>WP,transformMeshSet:()=>qP});var jP,Uy=new Promise(n=>{jP=n});var Ks=require("three");var Se,Mi;Uy.then(n=>Se=n);function FP(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:s}=ru(n.getAttribute("position"),o),a;if(r&&e){let{indices:c,verticesPerFace:u}=ou(i,s,n);a=u.length,t=[];for(let l=0,d=0;l<a;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=s.length;t=Array(c+c/3),a=0;for(let u=0,l=0;l<t.length;)t[l++]=3,a++,t[l++]=s[u++],t[l++]=s[u++],t[l++]=s[u++]}return{positions:i,faceIndices:t,nFaces:a}}function Hy(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=Se._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Se.HEAPU32.buffer,i,r):new Float32Array(Se.HEAPF32.buffer,i,r)).set(n,0),i}function Wy(n){switch(n){case 0:return Se.OP.UNION;case 1:return Se.OP.INTERSECTION;case 2:return Se.OP.A_MINUS_B;case 3:return Se.OP.B_MINUS_A;case 4:return Se.OP.SYMMETRIC_DIFFERENCE;case 5:return Se.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function kP(n,r){Mi===void 0&&(Mi=Se.init_csg());let e=Hy(n),t=Se.csg_calc_topological(Mi,e,n.length,Wy(r));Se._free(e);let o=6,i=Se.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,c=Se.HEAPU32[i[a]>>2],u=new Float32Array(Se.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=Se.HEAPU32[i[a]>>2],d=new Uint32Array(Se.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let p=Se.HEAPU32[i[a]>>2],f=new Uint8Array(Se.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return Se.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function UP(n,r,e,t){Mi===void 0&&(Mi=Se.init_csg());let o=Hy(n),i=Se.csg_calc(Mi,o,n.length,t,Wy(r));Se._free(o);let s=5,a=Se.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),u=0,l=Se.HEAPU32[a[u]>>2],d=Se.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=Se.HEAPU32[a[u]>>2],f=Se.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new Ks.Float32BufferAttribute(d,3)),e.setAttribute("normal",new Ks.Float32BufferAttribute(f,3));let h=Se.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ks.Sphere),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},Se.free_mesh_data(i),m}function HP(n,r,e){if(Se===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=FP(n,r,e));let s=t.length,a=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=Se._malloc(l),m=new Float32Array(Se.HEAPF32.buffer,f,c),h=new Uint32Array(Se.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),Se.get_csg_mesh(f,s,f+d,a,i)}function WP(n){return Se.has_open_edges(n)}function qP(n,r){Se.transform_csg_mesh(n,r.elements)}function $P(n){Se.free_csg_mesh(n)}var YP={ConeGeometry:Rh,CubeGeometry:Gh,CylinderGeometry:Dh,DodecahedronGeometry:zh,EllipseGeometry:Pi,HelixGeometry:dy,IcosahedronGeometry:py,LatheGeometry:fy,NonParametricGeometry:gy,PolygonGeometry:Ql,PyramidGeometry:xy,RectangleGeometry:Jl,SphereGeometry:by,PlaneGeometry:wy,BackdropGeometry:_y,StarGeometry:ec,TextFrameGeometry:Ty,TorusGeometry:Oy,TorusKnotGeometry:Cy,TriangleGeometry:Ny,PathGeometry:My,VectorGeometry:Wt},Qd=n=>YP[n.type].create(n);function Zs(n){return n!==null&&"booleanOp"in n}var Ei=class extends mi(nc.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new nc.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Zs(this.parent)&&this.visible,Zs(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(cr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Zs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ei&&(e.freeBooleanPointer(),Zs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Zs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var ic=new Li.Box3;function Qs(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,a=1/0,c=-1/0,u=-1/0,l=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<a&&(a=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}ic.min.set(i,s,a),ic.max.set(c,u,l),ic.getCenter(t),ic.getSize(o).multiplyScalar(.5)}var XP=new Li.BufferGeometry,KP=new Li.MeshBasicMaterial,Pt=class extends Ei{constructor(r,e){super(XP,KP),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?Qs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var go=require("three");var ir=require("three");var hg=require("three");var Tr=require("three");var Js=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 qy=require("three"),xt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=qy.MathUtils.generateUUID(),this.type=r,this.name=""}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,s){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}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof xt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var nu=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}},ut=new nu;var iu=require("three");var $y=require("three"),le=class extends xt{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 s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=$y.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),e.format(u,c,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,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Be=class extends le{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,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}};var Xe=class extends Be{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof iu.Vector2?e:new iu.Vector2(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,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var su=require("three");var Tt=class extends Be{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof su.Vector3?e:new su.Vector3(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,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var Yy=require("three"),pt=class extends Yy.Color{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)}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,s=o[1],a=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="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(a))return this.a=s==="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 qt=class extends Be{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof pt?e:new pt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var ZP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Xy=/[a-z_0-9]+/gi,k=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===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,s){let a,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let l=[];for(;a=Xy.exec(this.src);)l.push(a);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&ut.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=ut.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||ut.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&ut.contains(h)&&e.include(ut.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",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 s=ZP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(Xy);if(a){let c=0;for(;c<a.length;){let u=a[c++],l;u==="in"||u==="out"||u==="inout"?l=a[c++]:(l=u,u="");let d=a[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var QP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,au=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||au.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let a,c,u="",l=QP.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],u=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=u}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,s){return e.format(this.name,this.getType(e),t)}},Oe=au;Oe.PI="PI",Oe.PI2="PI2",Oe.RECIPROCAL_PI="RECIPROCAL_PI",Oe.RECIPROCAL_PI2="RECIPROCAL_PI2",Oe.LOG2="LOG2",Oe.EPSILON="EPSILON";var JP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),eT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Di=class extends le{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,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=JP.exec(e);if(t){let o=t[2],i;for(;i=eT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Bi=class extends le{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)}};ut.addKeyword("uv",function(){return new Bi});ut.addKeyword("uv2",function(){return new Bi(1)});var sc=require("three");var pn=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??pn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case sc.LinearEncoding:return["Linear"];case sc.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=pn.Nodes[this.method],a=e.include(s);if(a===pn.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,t)}else return e.format(a+"( "+o+" )",i,t)}fromEncoding(e){let t=pn.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=pn.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},Rt=pn;Rt.Nodes={LinearToLinear:new k(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
- `)),sRGBToLinear:new k(["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(`
6
- `)),LinearTosRGB:new k(["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(`
7
- `))},Rt.LINEAR_TO_LINEAR="LinearToLinear",Rt.SRGB_TO_LINEAR="sRGBToLinear",Rt.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends k{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};var Ky=require("three"),Gt=class extends Be{constructor(e=new Ky.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Bi,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+i+", "+s+" )":c=a+"( "+o+", "+i+" )";let u={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new Rt(new Ne("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,t)}};var Y=class extends Be{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var ea=class extends le{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,s){i=this.getType(e);let a=this.value,c=a.build(e,t)+"( ",u=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let d=a.inputs[l],p=this.inputs[l]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var lu=class extends le{constructor(e,t,o=lu.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),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},vt=lu;vt.ADD="+",vt.SUB="-",vt.MUL="*",vt.DIV="/";var Re=class extends le{constructor(e,t=Re.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 Re.MIX:case Re.CLAMP:case Re.REFRACT:case Re.SMOOTHSTEP:case Re.FACEFORWARD:return 3;case Re.MIN:case Re.MAX:case Re.MOD:case Re.STEP:case Re.REFLECT:case Re.DISTANCE:case Re.DOT:case Re.CROSS:case Re.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 Re.LENGTH:case Re.DISTANCE:case Re.DOT:return"f";case Re.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,u=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),d=this.getType(e);switch(this.type=d,this.method){case Re.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case Re.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case Re.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Re.STEP:o=this.a.build(e,a===1?"f":l),i=this.b.build(e,l);break;case Re.MIN:case Re.MAX:case Re.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case Re.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case Re.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,u===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},fe=Re;fe.RAD="radians",fe.DEG="degrees",fe.EXP="exp",fe.EXP2="exp2",fe.LOG="log",fe.LOG2="log2",fe.SQRT="sqrt",fe.INV_SQRT="inversesqrt",fe.FLOOR="floor",fe.CEIL="ceil",fe.NORMALIZE="normalize",fe.FRACT="fract",fe.SATURATE="saturate",fe.SIN="sin",fe.COS="cos",fe.TAN="tan",fe.ASIN="asin",fe.ACOS="acos",fe.ARCTAN="atan",fe.ABS="abs",fe.SIGN="sign",fe.LENGTH="length",fe.NEGATE="negate",fe.INVERT="invert",fe.MIN="min",fe.MAX="max",fe.MOD="mod",fe.STEP="step",fe.REFLECT="reflect",fe.DISTANCE="distance",fe.DOT="dot",fe.CROSS="cross",fe.POW="pow",fe.MIX="mix",fe.CLAMP="clamp",fe.REFRACT="refract",fe.SMOOTHSTEP="smoothstep",fe.FACEFORWARD="faceforward";var Ri=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new ea(Ri.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new Rt(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Rt(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Rt(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Rt(new Ne("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Ne("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ea(Ri.Nodes.roughnessToMip,[i]),a=new fe(s,Ri.Nodes.m0,Ri.Nodes.cubeUV_maxMipLevel,fe.CLAMP),c=new fe(a,fe.FLOOR),u=new fe(a,fe.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new vt(c,new Y(1).setReadonly(!0),vt.ADD)),p=new fe(l,d,u,fe.MIX);return e.format(p.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)}},Gi=Ri;Gi.Nodes=function(){let e=new Di(`struct TextureCubeUVData {
3
+ `&&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}var ke=require("three");var Hy,Di=new Promise(n=>{Hy=n}),Uy=!1;var oc;function Wy(){if(Uy)return;if(oc)return oc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.408/build",[t,o]=await Promise.all([import("./process.js"),fetch(`${e}/process.wasm`).then(a=>a.arrayBuffer())]),i=t.default,s=await i({wasmBinary:o});Hy(s),Uy=!0}return oc=n(),oc}var qy=require("three");function yn(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Me.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new qy.BufferGeometryLoader().parse(n);else{if(n.type==="SubdivGeometry")return new lt(n,e);if(n.type==="TextGeometry")return new Ei(n,r)}let o;try{o=od(t)}catch(i){console.error(i)}if(!o){let i=Me.createFromState(ui.defaultData(),100,100);t.shape=i,o=od(t)}return o}var $y=require("three"),tT=new $y.Matrix4;function ea(n,r,e,t){let o=n.position.array,i=n.normal.array,s=tT.makeScale(r,e,t).invert().elements,a,c,d;for(var l=0,u=o.length;l<u;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,a=i[l],c=i[l+1],d=i[l+2],i[l]=s[0]*a+s[4]*c+s[8]*d,i[l+1]=s[1]*a+s[5]*c+s[9]*d,i[l+2]=s[2]*a+s[6]*c+s[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var nc=new ke.Box3,Bi=new ke.Vector3,pe;Di.then(n=>{pe=n});var Yy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Xy=new Uint32Array([0,1,2,3]),Ky=new Uint8Array([4]),lt=class extends ke.BufferGeometry{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=Io.div(t,o);this.subdividedGeometry&&ea(this.subdividedGeometry.attributes,...i),this.originalGeometry&&ea(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Bi.fromArray(i));let a=Bi.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=a/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=lt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new ke.BoxGeometry(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&&(lt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new ke.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;nc.setFromBufferAttribute(t),nc.getCenter(o),e.boundingSphere.radius=o.distanceTo(nc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),nc.getSize(Bi);let i={width:Bi.x,height:Bi.y,depth:Bi.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,a,c,d=e?.phongAngle??35;o===!1&&(d=-1),t&&(pe.free_bvh(t),pe.free_subdivision_surface(t));try{s=lt.allocate(e,i)}catch(l){console.error(l,e),s=lt.allocate({positionWASM:Yy,indexWASM:Xy,verticesPerFaceWASM:Ky},i)}if(pe.set_destination_refinement_level(s,0),a=lt.buildLevel(s,!0,d),e.subdivisions>0)try{pe.set_destination_refinement_level(s,e.subdivisions),c=lt.buildLevel(s,!1,d)}catch{try{pe.set_destination_refinement_level(s,e.subdivisions-1),c=lt.buildLevel(s,!1,d)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:a,subdividedGeometry:c}}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:yn(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let a,c,d,l;({positions:a,triIndices:l}=ad(i.getAttribute("position"),s));let u;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;u=[p,f]}return{indices:c,verticesPerFace:d}=ld(a,l,i,u),{positions:a,indices:c,verticesPerFace:d}}static allocate(e,t){let o,i,s,a=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=Yy,i=Xy,s=Ky);let d=o.length,l=i.length,u=s.length,p=o.length+a.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=pe._malloc(m),x=new Float32Array(pe.HEAPF32.buffer,g,p),S=new Uint32Array(pe.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(a,o.length),x.set(c,o.length+a.length),S.set(i,0),S.set(s,i.length);let w;e?.scaleBaked?.some(P=>P!==1)&&(w=new ke.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let b=w?pe.alloc_subdivision_surface2(g,d,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):pe.alloc_subdivision_surface(g,d,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return pe._free(g),b}static buildLevel(e,t,o,i,s){let a=s?pe.get_mesh_data2(e,t?pe.Level.CONTROL:pe.Level.REFINED,o,s.elements):pe.get_mesh_data(e,t?pe.Level.CONTROL:pe.Level.REFINED,o),c=8,d=pe.HEAPU32.subarray(a>>2,(a>>2)+c),l=d.subarray(4,4+4),u=0,p=pe.HEAPU32[d[u]>>2],f=pe.HEAPF32.subarray(p>>2,(p>>2)+l[u]);u++;let m=pe.HEAPU32[d[u]>>2],h=pe.HEAPF32.subarray(m>>2,(m>>2)+l[u]);u++;let y=pe.HEAPU32[d[u]>>2],g=pe.HEAPU32.subarray(y>>2,(y>>2)+l[u]);u++;let x=pe.HEAPU32[d[u]>>2],S=pe.HEAPU32.subarray(x>>2,(x>>2)+l[u]);if(u++,i===void 0){let w=new ke.BufferGeometry;if(w.setIndex(new ke.Uint32BufferAttribute(S,1)),w.setAttribute("position",new ke.Float32BufferAttribute(f,3)),w.setAttribute("normal",new ke.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new ke.Uint32BufferAttribute(g,1));let b=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new ke.BufferAttribute(b,4))}return pe.free_mesh_data(a),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,pe.free_mesh_data(a)}static freeSubdivPointer(e){pe.free_bvh(e),pe.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=pe.get_wireframe_data_for_base_level(e),s=4,a=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+2),d=0,l=pe.HEAPU32[a[d]>>2],u=pe.HEAPF32.subarray(l>>2,(l>>2)+c[d]);d++;let p=pe.HEAPU32[a[d]>>2],f=pe.HEAPU32.subarray(p>>2,(p>>2)+c[d]);if(t===void 0){let m=new ke.BufferGeometry;m.setAttribute("position",new ke.Float32BufferAttribute(u,3));let h=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new ke.BufferAttribute(h,3)),m.setIndex(new ke.Uint32BufferAttribute(f,1)),pe.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||pe.set_destination_refinement_level(e,t);let s=o?pe.get_topological_data2(e,i?pe.Level.CONTROL:pe.Level.REFINED,o.elements):pe.get_topological_data(e,i?pe.Level.CONTROL:pe.Level.REFINED),a=6,c=pe.HEAPU32.subarray(s>>2,(s>>2)+a),d=c.subarray(3,3+3),l=0,u=pe.HEAPU32[c[l]>>2],p=new Float32Array(pe.HEAPF32.subarray(u>>2,(u>>2)+d[l]));l++;let f=pe.HEAPU32[c[l]>>2],m=new Uint32Array(pe.HEAPU32.subarray(f>>2,(f>>2)+d[l]));l++;let h=pe.HEAPU32[c[l]>>2],y=new Uint8Array(pe.HEAPU32.subarray(h>>2,(h>>2)+d[l]));return pe.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var Zy=["getX","getY","getZ"];function ad(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],a=1e4;for(let d=0;d<t;d++){let l=r?r.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[Zy[p]](l)*a)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)s.push(n[Zy[p]](l));e[u]=o,i.push(o),o++}}let c=[];for(let d=0;d<i.length;d+=3)i[d]===i[d+1]||i[d]===i[d+2]||i[d+1]===i[d+2]||c.push(i[d],i[d+1],i[d+2]);return{positions:s,triIndices:c}}var ic=new ke.Vector3,nd=new ke.Vector3,id=new ke.Vector3,sd=new ke.Vector3;function ld(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 c=e.userData.shape.extractShapePointsToFlatArray([]),d=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&d<=24&&d%4===0&&e.userData.parameters.angle>=360){let p=c.length/2/d;c=c.filter((f,m)=>Math.floor(m/2)%p===0)}let l=0;for(let p=0;p<c.length;p+=2)l+=(c[p]-c[(p===0?c.length:p)-2])*(c[p+1]+c[(p===0?c.length:p)-1]);n.length=0;let u=0;if(l<0)for(let p=0;p<c.length;p+=2)n.push(c[p],c[p+1],0),o.push(u++);else for(let p=c.length-2;p>=0;p-=2)n.push(c[p],c[p+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}let s=new Float32Array([e.userData.parameters.depth])[0],a=0;for(;a<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let c=0;if((n[r[a]*3+2]===s||n[r[a]*3+2]===0)&&c++,(n[r[a+1]*3+2]===s||n[r[a+1]*3+2]===0)&&c++,(n[r[a+2]*3+2]===s||n[r[a+2]*3+2]===0)&&c++,c===3)break}if(r[a+1]===r[a+3]&&r[a+2]===r[a+5]||r[a+0]===r[a+3]&&r[a+2]===r[a+4]){ic.set(n[r[a]*3],n[r[a]*3+1],n[r[a]*3+2]),nd.set(n[r[a+1]*3],n[r[a+1]*3+1],n[r[a+1]*3+2]),id.set(n[r[a+4]*3],n[r[a+4]*3+1],n[r[a+4]*3+2]),sd.set(n[r[a+5]*3],n[r[a+5]*3+1],n[r[a+5]*3+2]),nd.sub(ic).normalize(),id.sub(ic).normalize(),sd.sub(ic).normalize();let c=nd.cross(id).dot(sd);Math.abs(c)>.005||t&&t.some((d,l)=>l%2===1?!1:a>=t[l]&&a<t[l+1])?(o.push(r[a],r[a+1],r[a+2]),i.push(3),a+=3):(o.push(r[a],r[a+1],r[a+4],r[a+5]),i.push(4),a+=6)}else o.push(r[a],r[a+1],r[a+2]),i.push(3),a+=3}if(e.useNgonForTopBottomFaceDuringBake){let c=[],d=[],l=0;for(let u=0,p=0;u<n.length;u+=3,p++)n[u+2]===0&&(c.push(p),l++),n[u+2]===s&&d.push(p);if(e.userData.parameters.extrudeBevelSize===0){let u=d[0];d[0]=d[1],d[1]=u}c.reverse(),o.push(...c,...d),i.push(l,l)}return{indices:o,verticesPerFace:i}}var dr={};Yd(dr,{calcBoolean:()=>iT,calcBooleanTopological:()=>nT,freeMeshSet:()=>cT,getMeshSet:()=>sT,hasOpenEdges:()=>aT,transformMeshSet:()=>lT});var rT,Qy=new Promise(n=>{rT=n});var ta=require("three");var we,Ri;Qy.then(n=>we=n);function oT(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:s}=ad(n.getAttribute("position"),o),a;if(r&&e){let{indices:c,verticesPerFace:d}=ld(i,s,n);a=d.length,t=[];for(let l=0,u=0;l<a;l++){t.push(d[l]);for(let p=0;p<d[l];p++)t.push(c[u++])}}else{let c=s.length;t=Array(c+c/3),a=0;for(let d=0,l=0;l<t.length;)t[l++]=3,a++,t[l++]=s[d++],t[l++]=s[d++],t[l++]=s[d++]}return{positions:i,faceIndices:t,nFaces:a}}function Jy(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=we._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(we.HEAPU32.buffer,i,r):new Float32Array(we.HEAPF32.buffer,i,r)).set(n,0),i}function eg(n){switch(n){case 0:return we.OP.UNION;case 1:return we.OP.INTERSECTION;case 2:return we.OP.A_MINUS_B;case 3:return we.OP.B_MINUS_A;case 4:return we.OP.SYMMETRIC_DIFFERENCE;case 5:return we.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function nT(n,r){Ri===void 0&&(Ri=we.init_csg());let e=Jy(n),t=we.csg_calc_topological(Ri,e,n.length,eg(r));we._free(e);let o=6,i=we.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,c=we.HEAPU32[i[a]>>2],d=new Float32Array(we.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=we.HEAPU32[i[a]>>2],u=new Uint32Array(we.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let p=we.HEAPU32[i[a]>>2],f=new Uint8Array(we.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return we.free_mesh_data(t),{positions:d,indices:u,verticesPerFace:f}}function iT(n,r,e,t){Ri===void 0&&(Ri=we.init_csg());let o=Jy(n),i=we.csg_calc(Ri,o,n.length,t,eg(r));we._free(o);let s=5,a=we.HEAPU32.subarray(i>>2,(i>>2)+s),c=a.subarray(2,2+3),d=0,l=we.HEAPU32[a[d]>>2],u=we.HEAPF32.subarray(l>>2,(l>>2)+c[d]);d++;let p=we.HEAPU32[a[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let m=c[d];e.setAttribute("position",new ta.Float32BufferAttribute(u,3)),e.setAttribute("normal",new ta.Float32BufferAttribute(f,3));let h=we.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ta.Sphere),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},we.free_mesh_data(i),m}function sT(n,r,e){if(we===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,S=0;g<y.verticesPerFace.length;g++){o[S++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[S++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=oT(n,r,e));let s=t.length,a=o.length,c=t.length,d=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=we._malloc(l),m=new Float32Array(we.HEAPF32.buffer,f,c),h=new Uint32Array(we.HEAPU32.buffer,f+u,d);return m.set(t,0),h.set(o,0),we.get_csg_mesh(f,s,f+u,a,i)}function aT(n){return we.has_open_edges(n)}function lT(n,r){we.transform_csg_mesh(n,r.elements)}function cT(n){we.free_csg_mesh(n)}var uT={ConeGeometry:Fh,CubeGeometry:kh,CylinderGeometry:zh,DodecahedronGeometry:Hh,EllipseGeometry:Ni,HelixGeometry:vy,IcosahedronGeometry:Sy,LatheGeometry:wy,NonParametricGeometry:Oy,PolygonGeometry:ec,PyramidGeometry:Ay,RectangleGeometry:tc,SphereGeometry:Ny,PlaneGeometry:My,BackdropGeometry:Ey,StarGeometry:rc,TextFrameGeometry:Dy,TorusGeometry:By,TorusKnotGeometry:Gy,TriangleGeometry:Vy,PathGeometry:jy,VectorGeometry:Yt},od=n=>uT[n.type].create(n);function ra(n){return n!==null&&"booleanOp"in n}var Gi=class extends bi(sc.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new sc.Matrix4}updateVisible(){super.updateVisible(),this.visible=!ra(this.parent)&&this.visible,ra(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(dr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ra(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Gi&&(e.freeBooleanPointer(),ra(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&ra(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var ac=new Vi.Box3;function oa(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,a=1/0,c=-1/0,d=-1/0,l=-1/0;for(let u=r;u<e;u++){let p=n.getX(u),f=n.getY(u),m=n.getZ(u);p<i&&(i=p),f<s&&(s=f),m<a&&(a=m),p>c&&(c=p),f>d&&(d=f),m>l&&(l=m)}ac.min.set(i,s,a),ac.max.set(c,d,l),ac.getCenter(t),ac.getSize(o).multiplyScalar(.5)}var dT=new Vi.BufferGeometry,pT=new Vi.MeshBasicMaterial,At=class extends Gi{constructor(r,e){super(dT,pT),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?oa(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var vo=require("three");var lr=require("three");var Pg=require("three");var Ar=require("three");var na=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 tg=require("three"),St=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=tg.MathUtils.generateUUID(),this.type=r,this.name=""}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,s){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}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof St&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var cd=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}},mt=new cd;var ud=require("three");var rg=require("three"),le=class extends St{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 s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=rg.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let d=this.getTemp(e,o);if(d)return e.format(d,c,t);{d=super.generate(e,t,o,a.output,i);let l=this.generate(e,c,o);return e.addNodeCode(d+" = "+l+";"),e.format(d,c,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,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ve=class extends le{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,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}};var Je=class extends Ve{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof ud.Vector2?e:new ud.Vector2(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,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var dd=require("three");var Ct=class extends Ve{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof dd.Vector3?e:new dd.Vector3(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,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var og=require("three"),ht=class extends og.Color{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)}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,s=o[1],a=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return this.a=s==="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(a))return this.a=s==="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 Xt=class extends Ve{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ht?e:new ht(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var fT=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,ng=/[a-z_0-9]+/gi,H=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===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,s){let a,c=0,d=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let l=[];for(;a=ng.exec(this.src);)l.push(a);for(let u=0;u<l.length;u++){let p=l[u],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&mt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=mt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||mt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&d[p.index+c-1]!=="."&&(d=d.substring(0,p.index+c)+h+d.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&mt.contains(h)&&e.include(mt.get(h))}return t==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",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 s=fT.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(ng);if(a){let c=0;for(;c<a.length;){let d=a[c++],l;d==="in"||d==="out"||d==="inout"?l=a[c++]:(l=d,d="");let u=a[c++];this.inputs.push({name:u,type:l,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var mT=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,pd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||pd.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let a,c,d="",l=mT.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],d=l[3]):(a=this.src,c="f"),this.name=a,this.type=c,this.value=d}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,s){return e.format(this.name,this.getType(e),t)}},Ce=pd;Ce.PI="PI",Ce.PI2="PI2",Ce.RECIPROCAL_PI="RECIPROCAL_PI",Ce.RECIPROCAL_PI2="RECIPROCAL_PI2",Ce.LOG2="LOG2",Ce.EPSILON="EPSILON";var hT=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),yT=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),zi=class extends le{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,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=hT.exec(e);if(t){let o=t[2],i;for(;i=yT.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var ji=class extends le{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)}};mt.addKeyword("uv",function(){return new ji});mt.addKeyword("uv2",function(){return new ji(1)});var lc=require("three");var gn=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??gn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case lc.LinearEncoding:return["Linear"];case lc.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=gn.Nodes[this.method],a=e.include(s);if(a===gn.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,t)}else return e.format(a+"( "+o+" )",i,t)}fromEncoding(e){let t=gn.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=gn.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},jt=gn;jt.Nodes={LinearToLinear:new H(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
+ `)),sRGBToLinear:new H(["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(`
6
+ `)),LinearTosRGB:new H(["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(`
7
+ `))},jt.LINEAR_TO_LINEAR="LinearToLinear",jt.SRGB_TO_LINEAR="sRGBToLinear",jt.LINEAR_TO_SRGB="LinearTosRGB";var Le=class extends H{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};var ig=require("three"),Ft=class extends Ve{constructor(e=new ig.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new ji,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"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+i+", "+s+" )":c=a+"( "+o+", "+i+" )";let d={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(d),this.colorSpace=this.colorSpace??new jt(new Le("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,t)}};var J=class extends Ve{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var ia=class extends le{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,s){i=this.getType(e);let a=this.value,c=a.build(e,t)+"( ",d=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let u=a.inputs[l],p=this.inputs[l]||this.inputs[u.name];d.push(p.build(e,e.getTypeByFormat(u.type)))}c+=d.join(", ")+" )"}return e.format(c,i,t)}};var fd=class extends le{constructor(e,t,o=fd.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),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},wt=fd;wt.ADD="+",wt.SUB="-",wt.MUL="*",wt.DIV="/";var ze=class extends le{constructor(e,t=ze.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 ze.MIX:case ze.CLAMP:case ze.REFRACT:case ze.SMOOTHSTEP:case ze.FACEFORWARD:return 3;case ze.MIN:case ze.MAX:case ze.MOD:case ze.STEP:case ze.REFLECT:case ze.DISTANCE:case ze.DOT:case ze.CROSS:case ze.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 ze.LENGTH:case ze.DISTANCE:case ze.DOT:return"f";case ze.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,d=this.c?e.getTypeLength(this.c.getType(e)):0,l=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case ze.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,t);case ze.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,t);case ze.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case ze.STEP:o=this.a.build(e,a===1?"f":l),i=this.b.build(e,l);break;case ze.MIN:case ze.MAX:case ze.MOD:o=this.a.build(e,l),i=this.b.build(e,c===1?"f":l);break;case ze.REFRACT:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,"f");break;case ze.MIX:o=this.a.build(e,l),i=this.b.build(e,l),s=this.c.build(e,d===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(i=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",u,t)}},he=ze;he.RAD="radians",he.DEG="degrees",he.EXP="exp",he.EXP2="exp2",he.LOG="log",he.LOG2="log2",he.SQRT="sqrt",he.INV_SQRT="inversesqrt",he.FLOOR="floor",he.CEIL="ceil",he.NORMALIZE="normalize",he.FRACT="fract",he.SATURATE="saturate",he.SIN="sin",he.COS="cos",he.TAN="tan",he.ASIN="asin",he.ACOS="acos",he.ARCTAN="atan",he.ABS="abs",he.SIGN="sign",he.LENGTH="length",he.NEGATE="negate",he.INVERT="invert",he.MIN="min",he.MAX="max",he.MOD="mod",he.STEP="step",he.REFLECT="reflect",he.DISTANCE="distance",he.DOT="dot",he.CROSS="cross",he.POW="pow",he.MIX="mix",he.CLAMP="clamp",he.REFRACT="refract",he.SMOOTHSTEP="smoothstep",he.FACEFORWARD="faceforward";var Fi=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new ia(Fi.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new jt(new Le("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new jt(new Le("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new jt(new Le("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new jt(new Le("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Le(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Le(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Le(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Le(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Le("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ia(Fi.Nodes.roughnessToMip,[i]),a=new he(s,Fi.Nodes.m0,Fi.Nodes.cubeUV_maxMipLevel,he.CLAMP),c=new he(a,he.FLOOR),d=new he(a,he.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new wt(c,new J(1).setReadonly(!0),wt.ADD)),p=new he(l,u,d,he.MIX);return e.format(p.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)}},ki=Fi;ki.Nodes=function(){let e=new zi(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
11
11
  vec4 bl;
12
12
  vec2 f;
13
- }`),t=new Oe("float cubeUV_maxMipLevel 8.0",!0),o=new Oe("float cubeUV_minMipLevel 4.0",!0),i=new Oe("float cubeUV_maxTileSize 256.0",!0),s=new Oe("float cubeUV_minTileSize 16.0",!0),a=new k(`float getFace(vec3 direction) {
13
+ }`),t=new Ce("float cubeUV_maxMipLevel 8.0",!0),o=new Ce("float cubeUV_minMipLevel 4.0",!0),i=new Ce("float cubeUV_maxTileSize 256.0",!0),s=new Ce("float cubeUV_minTileSize 16.0",!0),a=new H(`float getFace(vec3 direction) {
14
14
  vec3 absDirection = abs(direction);
15
15
  float face = -1.0;
16
16
  if (absDirection.x > absDirection.z) {
@@ -25,7 +25,7 @@
25
25
  face = direction.y > 0.0 ? 1.0 : 4.0;
26
26
  }
27
27
  return face;
28
- }`);a.useKeywords=!1;let c=new k(`vec2 getUV(vec3 direction, float face) {
28
+ }`);a.useKeywords=!1;let c=new H(`vec2 getUV(vec3 direction, float face) {
29
29
  vec2 uv;
30
30
  if (face == 0.0) {
31
31
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -41,7 +41,7 @@
41
41
  uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
42
42
  }
43
43
  return 0.5 * (uv + 1.0);
44
- }`);c.useKeywords=!1;let u=new k(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
44
+ }`);c.useKeywords=!1;let d=new H(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
45
45
  float face = getFace(direction);
46
46
  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
47
47
  mipInt = max(mipInt, cubeUV_minMipLevel);
@@ -69,7 +69,7 @@
69
69
  uv.x -= texelSize;
70
70
  vec4 bl = texture2D(envMap, uv);
71
71
  return TextureCubeUVData( tl, tr, br, bl, f );
72
- }`,[e,a,c,t,o,i,s]);u.useKeywords=!1;let l=new Oe("float r0 1.0",!0),d=new Oe("float v0 0.339",!0),p=new Oe("float m0 -2.0",!0),f=new Oe("float r1 0.8",!0),m=new Oe("float v1 0.276",!0),h=new Oe("float m1 -1.0",!0),y=new Oe("float r4 0.4",!0),g=new Oe("float v4 0.046",!0),x=new Oe("float m4 2.0",!0),b=new Oe("float r5 0.305",!0),w=new Oe("float v5 0.016",!0),S=new Oe("float m5 3.0",!0),P=new Oe("float r6 0.21",!0),_=new Oe("float v6 0.0038",!0),v=new Oe("float m6 4.0",!0),N=[l,d,p,f,m,h,y,g,x,b,w,S,P,_,v],T=new k(`float roughnessToMip(float roughness) {
72
+ }`,[e,a,c,t,o,i,s]);d.useKeywords=!1;let l=new Ce("float r0 1.0",!0),u=new Ce("float v0 0.339",!0),p=new Ce("float m0 -2.0",!0),f=new Ce("float r1 0.8",!0),m=new Ce("float v1 0.276",!0),h=new Ce("float m1 -1.0",!0),y=new Ce("float r4 0.4",!0),g=new Ce("float v4 0.046",!0),x=new Ce("float m4 2.0",!0),S=new Ce("float r5 0.305",!0),w=new Ce("float v5 0.016",!0),b=new Ce("float m5 3.0",!0),P=new Ce("float r6 0.21",!0),_=new Ce("float v6 0.0038",!0),v=new Ce("float m6 4.0",!0),N=[l,u,p,f,m,h,y,g,x,S,w,b,P,_,v],O=new H(`float roughnessToMip(float roughness) {
73
73
  float mip = 0.0;
74
74
  if (roughness >= r1) {
75
75
  mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
@@ -83,7 +83,7 @@
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,N);return{bilinearCubeUV:u,roughnessToMip:T,m0:p,cubeUV_maxMipLevel:t}}();var fn=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??fn.VIEW}getShared(){return this.scope===fn.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let a;switch(this.scope){case fn.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case fn.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case fn.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),t)}},bt=fn;bt.LOCAL="local",bt.WORLD="world",bt.VIEW="view",bt.NORMAL="normal";ut.addKeyword("viewNormal",function(){return new bt(bt.VIEW)});ut.addKeyword("localNormal",function(){return new bt(bt.NORMAL)});ut.addKeyword("worldNormal",function(){return new bt(bt.WORLD)});var Ur=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Ur.LOCAL}getType(){switch(this.scope){case Ur.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Ur.LOCAL:case Ur.WORLD:return!1}return!0}generate(e,t,o,i,s){let a;switch(this.scope){case Ur.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case Ur.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case Ur.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Ur.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},$t=Ur;$t.LOCAL="local",$t.WORLD="world",$t.VIEW="view",$t.PROJECTION="projection";ut.addKeyword("position",function(){return new $t});ut.addKeyword("worldPosition",function(){return new $t($t.WORLD)});ut.addKeyword("viewPosition",function(){return new $t($t.VIEW)});var Pr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Pr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Pr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Pr.VECTOR:{let s=new bt(bt.VIEW),a=e.context.roughness,c=s.build(e,"v3"),u=new $t($t.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;l&&(d=`normalize( mix( ${d}, ${c}, ${l} * ${l} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Pr.CUBE:{let s=new Pr(Pr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Pr.SPHERE:{let a="normalize( ( viewMatrix * vec4( "+new Pr(Pr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Hr=Pr;Hr.CUBE="cube",Hr.SPHERE="sphere",Hr.VECTOR="vector";var ac=class extends le{constructor(e=new Gt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Gi(this.value,t??new Hr(Hr.VECTOR),o),this.irradianceNode=new Gi(this.value,new bt(bt.WORLD),new Y(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var Zy=require("three");var lc=class extends Be{constructor(e=new Zy.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Hr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Rt(new Ne("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,u),e.removeContext(),e.format(a,u,t)}};var Qy=`
86
+ }`,N);return{bilinearCubeUV:d,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:t}}();var xn=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??xn.VIEW}getShared(){return this.scope===xn.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let a;switch(this.scope){case xn.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case xn.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case xn.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),t)}},_t=xn;_t.LOCAL="local",_t.WORLD="world",_t.VIEW="view",_t.NORMAL="normal";mt.addKeyword("viewNormal",function(){return new _t(_t.VIEW)});mt.addKeyword("localNormal",function(){return new _t(_t.NORMAL)});mt.addKeyword("worldNormal",function(){return new _t(_t.WORLD)});var Wr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Wr.LOCAL}getType(){switch(this.scope){case Wr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Wr.LOCAL:case Wr.WORLD:return!1}return!0}generate(e,t,o,i,s){let a;switch(this.scope){case Wr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case Wr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case Wr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Wr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},Kt=Wr;Kt.LOCAL="local",Kt.WORLD="world",Kt.VIEW="view",Kt.PROJECTION="projection";mt.addKeyword("position",function(){return new Kt});mt.addKeyword("worldPosition",function(){return new Kt(Kt.WORLD)});mt.addKeyword("viewPosition",function(){return new Kt(Kt.VIEW)});var Or=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Or.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Or.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Or.VECTOR:{let s=new _t(_t.VIEW),a=e.context.roughness,c=s.build(e,"v3"),d=new Kt(Kt.VIEW).build(e,"v3"),l=a?a.build(e,"f"):void 0,u=`reflect( -normalize( ${d} ), ${c} )`;l&&(u=`normalize( mix( ${u}, ${c}, ${l} * ${l} ) )`);let p=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Or.CUBE:{let s=new Or(Or.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Or.SPHERE:{let a="normalize( ( viewMatrix * vec4( "+new Or(Or.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},qr=Or;qr.CUBE="cube",qr.SPHERE="sphere",qr.VECTOR="vector";var cc=class extends le{constructor(e=new Ft,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ki(this.value,t??new qr(qr.VECTOR),o),this.irradianceNode=new ki(this.value,new _t(_t.WORLD),new J(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var sg=require("three");var uc=class extends Ve{constructor(e=new sg.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new qr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},d=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new jt(new Le("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,d),e.removeContext(),e.format(a,d,t)}};var ag=`
87
87
  uniform int frameIndex;
88
88
  uniform vec2 resolution;
89
89
  uniform mat4 previousModelViewMatrix;
@@ -91,7 +91,7 @@ uniform mat4 previousProjectionMatrix;
91
91
 
92
92
  varying vec4 vCurrentPosition;
93
93
  varying vec4 vPreviousPosition;
94
- `,Jy=`
94
+ `,lg=`
95
95
  layout(location = 1) out vec4 gVelocity;
96
96
 
97
97
  uniform int frameIndex;
@@ -133,7 +133,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
133
133
  return fract(magic.z * fract(dot(screenPos, magic.xy)));
134
134
  }
135
135
 
136
- `,eg=`
136
+ `,cg=`
137
137
  // TODO: This could be generated CPU side and passed to the shader every frame
138
138
  const vec2 haltonSequence[16] = vec2[16](
139
139
  vec2( 0.000000,-0.333334),
@@ -170,7 +170,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
170
170
  #endif
171
171
  gl_Position = currentPositionJittered;
172
172
 
173
- `,tg=`
173
+ `,ug=`
174
174
  vec2 oldPos = vPreviousPosition.xy;
175
175
  oldPos /= vPreviousPosition.w;
176
176
  oldPos.xy = (oldPos.xy+1.)/2.0;
@@ -184,7 +184,7 @@ vec2 velocity = (newPos - oldPos);
184
184
  // NOTE: We use the blue channel to avoid temporal reprojection
185
185
  // with incorrect velocity if the fragment is transparent.
186
186
  gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
187
- `;var rg=["x","y","z","w"],tT=["float","vec2","vec3","vec4"],rT={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},oT={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},cc=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
187
+ `;var dg=["x","y","z","w"],gT=["float","vec2","vec3","vec4"],xT={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},vT={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},dc=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
188
188
  `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
189
189
  // NOTE: Include Spline's blending modes. This could be part of BlendNode
190
190
  #define SPE_BLENDING_NORMAL 0
@@ -222,20 +222,20 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
222
222
  `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
223
223
  accumAlpha += (1.0 - accumAlpha) * alpha;
224
224
  }`,""].join(`
225
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(Qy),this.addFragmentParsCode(Jy),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(eg),this.addFragmentFinalCode(tg)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
225
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.addVertexParsCode(ag),this.addFragmentParsCode(lg),this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(cg),this.addFragmentFinalCode(ug)),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
226
226
  `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
227
227
  `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
228
228
  `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
229
- `}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",s=""){let a=this.getVars(o),c=a[r];if(!c){let u=a.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},a.push(c),a[r]=c}return c}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(`
230
- `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],a=s.type,c=s.name,u=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?t+=e+" "+l.substring(0,l.length-2)+" "+c+`[${u}];
229
+ `}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",s=""){let a=this.getVars(o),c=a[r];if(!c){let d=a.length;c={name:t||"node"+i+d+(s?"_"+s:""),type:e},a.push(c),a[r]=c}return c}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(`
230
+ `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],a=s.type,c=s.name,d=s.size,l=this.getFormatByType(a);if(l===void 0)throw new Error("Node pars "+l+" not found.");l.includes("[]")?t+=e+" "+l.substring(0,l.length-2)+" "+c+`[${d}];
231
231
  `:t+=e+" "+l+" "+c+`;
232
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof xt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,c=a.list.length,u=new Js({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[r][u.name]=u,this.uniforms[u.name]=u,u}else{let a=this.inputs.uniforms,c=a.list.length,u=new Js({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(u),a[r].push(u),a[r][u.name]=u,this.uniforms[u.name]=u,u}}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"?ut.get(r):r,this.context.include===!1)return r.name;r instanceof k?o=this.includes.functions:r instanceof Oe?o=this.includes.consts:r instanceof Di&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof k&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<r.includes.length)}return t&&(s.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 tT[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 Tr.CubeReflectionMapping:case Tr.CubeRefractionMapping:return new lc(t);case Tr.CubeUVReflectionMapping:return new ac(new Gt(t));default:return new Gt(t)}else{if(t.isVector2)return new Xe(t);if(t.isVector3)return new Tt(t);if(t.isVector4)return new qt(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 rT[r]||r}getFormatByType(r){return oT[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return rg[r]}getIndexByElement(r){return rg.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=Tr.LinearEncoding,e===Tr.LinearEncoding&&this.context.gamma&&(e=Tr.sRGBEncoding),e}};var Ge=require("three");var Ee=class extends Be{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof pt?e:new pt(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return u?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var we=class extends Be{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,a){return e.format(this.value.toString(),i,t)}};var pc=require("three");var tt=class extends Be{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 Or=class extends Be{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)}};var og=require("three");var Fo=class extends Be{};var dc=class extends Fo{constructor(e){super("v3");this.image=e;this._value=new og.Vector3}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 mn=class extends Fo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var ng=require("three");var Vi=class extends Be{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new ng.Matrix3}generateReadonly(e,t,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var ig=require("three");var Ot=class extends Be{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new ig.Matrix4}generateReadonly(e,t,o,i,s,a){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var ag=require("three");function sg(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var uc=class extends Vi{constructor(e,t){super(new ag.Matrix3);this.repeat=e;this.offset=t;sg(this.value,e,t)}updateMatrix(){sg(this.value,this.repeat,this.offset)}};var cu=require("three");var Ar=class extends Be{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof cu.Vector4?new Array(e).fill(t):new Array(e).fill(new cu.Vector4(0))}};var zi=class extends le{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 du=class extends le{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(du.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)}},hn=du;hn.Nodes=function(){return{customColor:new k(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
232
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof St?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,c=a.list.length,d=new na({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(d),a[r].push(d),a[r][d.name]=d,this.uniforms[d.name]=d,d}else{let a=this.inputs.uniforms,c=a.list.length,d=new na({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(d),a[r].push(d),a[r][d.name]=d,this.uniforms[d.name]=d,d}}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"?mt.get(r):r,this.context.include===!1)return r.name;r instanceof H?o=this.includes.functions:r instanceof Ce?o=this.includes.consts:r instanceof zi&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof H&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<r.includes.length)}return t&&(s.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 gT[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 Ar.CubeReflectionMapping:case Ar.CubeRefractionMapping:return new uc(t);case Ar.CubeUVReflectionMapping:return new cc(new Ft(t));default:return new Ft(t)}else{if(t.isVector2)return new Je(t);if(t.isVector3)return new Ct(t);if(t.isVector4)return new Xt(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 xT[r]||r}getFormatByType(r){return vT[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return dg[r]}getIndexByElement(r){return dg.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=Ar.LinearEncoding,e===Ar.LinearEncoding&&this.context.gamma&&(e=Ar.sRGBEncoding),e}};var je=require("three");var Be=class extends Ve{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof ht?e:new ht(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),d=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return d?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var _e=class extends Ve{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,a){return e.format(this.value.toString(),i,t)}};var mc=require("three");var nt=class extends Ve{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 Cr=class extends Ve{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)}};var pg=require("three");var Wo=class extends Ve{};var pc=class extends Wo{constructor(e){super("v3");this.image=e;this._value=new pg.Vector3}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 vn=class extends Wo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var fg=require("three");var Ui=class extends Ve{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new fg.Matrix3}generateReadonly(e,t,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var mg=require("three");var Nt=class extends Ve{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new mg.Matrix4}generateReadonly(e,t,o,i,s,a){return e.format("mat4("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var yg=require("three");function hg(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var fc=class extends Ui{constructor(e,t){super(new yg.Matrix3);this.repeat=e;this.offset=t;hg(this.value,e,t)}updateMatrix(){hg(this.value,this.repeat,this.offset)}};var md=require("three");var Nr=class extends Ve{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof md.Vector4?new Array(e).fill(t):new Array(e).fill(new md.Vector4(0))}};var Hi=class extends le{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 hd=class extends le{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(hd.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)}},bn=hd;bn.Nodes=function(){return{customColor:new H(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
233
233
  float lalpha = alpha * mask;
234
234
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
235
235
  accumAlpha += (1.0 - accumAlpha) * lalpha;
236
236
 
237
237
  return color;
238
- }`)}}();var uu=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(uu.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ji=uu;ji.Nodes=function(){return{customNormal:new k(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
238
+ }`)}}();var yd=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(yd.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Wi=yd;Wi.Nodes=function(){return{customNormal:new H(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
239
239
  vec3 normal = packNormalToRGB( norm ).rgb;
240
240
  normal *= step( vec3(0.5), cnormal );
241
241
 
@@ -244,7 +244,7 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
244
244
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
245
245
 
246
246
  return normal;
247
- }`)}}();var Fi=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.blending=u,this.mat=l,this.isMask=f,this.alpha=d,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Fi.Nodes.cylindrical);break;case 2:i=e.include(Fi.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=["zy","xz","xy"][this.axis.value],u=new k(`
247
+ }`)}}();var qi=class extends le{constructor(e,t,o,i,s,a,c,d,l,u,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=c,this.blending=d,this.mat=l,this.isMask=f,this.alpha=u,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(qi.Nodes.cylindrical);break;case 2:i=e.include(qi.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=["zy","xz","xy"][this.axis.value],d=new H(`
248
248
  vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
249
249
  vec2 projected = (1. + (position.${c})) / 2.;
250
250
  vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -268,7 +268,7 @@ gVelocity = vec4(velocity, gl_FragColor.a < 1.0 ? 0.0 : 1.0, 1.);
268
268
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
269
269
 
270
270
  return col;
271
- }`);i=e.include(u);break;case 4:i=e.include(Fi.Nodes.triplanar);break;default:i=e.include(Fi.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let s=[];if(s.push("normal"),s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.blending.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.projection.value===4){let a=`${o}_writeUvs`,c=a+"0",u=a+"1",l=a+"2",d=`${o}_triplanarWeights`;e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec2"),e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec3"),s.push(c),s.push(u),s.push(l),s.push(d)}else{let a=`${o}_writeUvs`;e.addFragmentVariable(a,"vec2"),s.push(a)}return e.format(i+"("+s.join(",")+")",this.getType(e),t)}},ko=Fi;ko.Nodes=function(){let e=new k(`
271
+ }`);i=e.include(d);break;case 4:i=e.include(qi.Nodes.triplanar);break;default:i=e.include(qi.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let s=[];if(s.push("normal"),s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.blending.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.projection.value===4){let a=`${o}_writeUvs`,c=a+"0",d=a+"1",l=a+"2",u=`${o}_triplanarWeights`;e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(d,"vec2"),e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(u,"vec3"),s.push(c),s.push(d),s.push(l),s.push(u)}else{let a=`${o}_writeUvs`;e.addFragmentVariable(a,"vec2"),s.push(a)}return e.format(i+"("+s.join(",")+")",this.getType(e),t)}},qo=qi;qo.Nodes=function(){let e=new H(`
272
272
  vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
273
273
  vec3 posN = normalize(position);
274
274
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -303,7 +303,7 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
303
303
 
304
304
  return col;
305
305
  }
306
- `),t=new k(`
306
+ `),t=new H(`
307
307
  vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
308
308
  vec3 posN = normalize(vPosition);
309
309
  float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
@@ -336,7 +336,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
336
336
 
337
337
  return col;
338
338
  }
339
- `),o=new k(`vec3 uvTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
339
+ `),o=new H(`vec3 uvTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
340
340
  vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
341
341
  writeUv = uvs;
342
342
 
@@ -357,7 +357,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
357
357
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
358
358
 
359
359
  return col;
360
- }`),i=new k(`vec3 triplanarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
360
+ }`),i=new H(`vec3 triplanarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
361
361
  vec3 p = position;
362
362
  vec2 uv0 = (1.0 + p.xy) / 2.0;
363
363
  vec2 uv1 = (1.0 + p.zy) / 2.0;
@@ -423,7 +423,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
423
423
 
424
424
  return col;//n * 0.5 + 0.5;
425
425
  }
426
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var ki=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=u,this.colors=l,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new k(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
426
+ `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var $i=class extends le{constructor(e,t,o,i,s,a,c,d,l,u,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=c,this.direction=d,this.colors=l,this.steps=u,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new H(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
427
427
  vec4 color = colors[0];
428
428
  #ifdef ${o}_IS_VECTOR
429
429
  #ifdef ${o}_LINEAR
@@ -463,21 +463,21 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
463
463
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
464
464
 
465
465
  return color.rgb;
466
- }`,[ki.Nodes.vectorLinearWorldSpaceDepth,ki.Nodes.vectorLinearObjectSpaceDepth,ki.Nodes.vectorSphericalObjectSpaceDepth,ki.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ui=ki;Ui.Nodes=function(){let e=new k(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
466
+ }`,[$i.Nodes.vectorLinearWorldSpaceDepth,$i.Nodes.vectorLinearObjectSpaceDepth,$i.Nodes.vectorSphericalObjectSpaceDepth,$i.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Yi=$i;Yi.Nodes=function(){let e=new H(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
467
467
  vec3 n = normalize(direction);
468
468
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
469
469
  return ( dist - near ) / ( far - near );
470
- }`),t=new k(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
470
+ }`),t=new H(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
471
471
  vec3 n = normalize(direction);
472
472
  float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
473
473
  return ( dist - near ) / ( far - near );
474
- }`),o=new k(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
474
+ }`),o=new H(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
475
475
  float dist = length(vWPosition - origin);
476
476
  return ( dist - near ) / ( far - near );
477
- }`),i=new k(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
477
+ }`),i=new H(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
478
478
  float dist = length(position - origin);
479
479
  return ( dist - near ) / ( far - near );
480
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var ta=class extends le{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=u,this.alpha=a,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new k(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
480
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var sa=class extends le{constructor(e,t,o,i,s,a,c,d){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=d,this.alpha=a,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new H(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
481
481
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
482
482
 
483
483
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -485,7 +485,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
485
485
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
486
486
 
487
487
  return color;
488
- }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var pu=class extends le{constructor(e,t,o,i,s,a,c,u,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=c,this.isMask=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(pu.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Hi=pu;Hi.Nodes=function(){return{gradient:new k(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
488
+ }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var gd=class extends le{constructor(e,t,o,i,s,a,c,d,l){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=c,this.isMask=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(gd.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Xi=gd;Xi.Nodes=function(){return{gradient:new H(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
489
489
  vec4 color = colors[0];
490
490
  vec2 m = morph / vUv.xy;
491
491
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -527,7 +527,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
527
527
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
528
528
 
529
529
  return color.xyz;
530
- }`)}}();var fu=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(fu.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Wi=fu;Wi.Nodes=function(){return{matcap:new k(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
530
+ }`)}}();var xd=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(xd.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ki=xd;Ki.Nodes=function(){return{matcap:new H(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
531
531
  vec3 viewDir = normalize( vViewPosition );
532
532
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
533
533
  vec3 y = cross( viewDir, x );
@@ -539,7 +539,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
539
539
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
540
540
 
541
541
  return matcapColor.rgb;
542
- }`)}}();var ra=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(ra||{}),St=function(){let r=new k(`vec3 random3(vec3 c) {
542
+ }`)}}();var aa=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(aa||{}),Pt=function(){let r=new H(`vec3 random3(vec3 c) {
543
543
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
544
544
  vec3 r;
545
545
  r.z = fract(512.0*j);
@@ -548,7 +548,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
548
548
  j *= .125;
549
549
  r.y = fract(512.0*j);
550
550
  return r-0.5;
551
- }`),e=new k(`float simplex3d(vec3 p) {
551
+ }`),e=new H(`float simplex3d(vec3 p) {
552
552
  vec3 s = floor(p + dot(p, vec3(F3)));
553
553
  vec3 x = p - s + dot(s, vec3(G3));
554
554
 
@@ -579,7 +579,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
579
579
  d *= w;
580
580
 
581
581
  return dot(d, vec4(52.0));
582
- }`,[r]);e.keywords.F3=new Oe("float F3 0.3333333"),e.keywords.G3=new Oe("float G3 0.1666667");let t=new k(`float simplex3dFractal(vec3 m) {
582
+ }`,[r]);e.keywords.F3=new Ce("float F3 0.3333333"),e.keywords.G3=new Ce("float G3 0.1666667");let t=new H(`float simplex3dFractal(vec3 m) {
583
583
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
584
584
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
585
585
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -587,7 +587,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
587
587
  + 0.2666667 * simplex3d(2.0 * m * rot2)
588
588
  + 0.1333333 * simplex3d(4.0 * m * rot3)
589
589
  + 0.0666667 * simplex3d(8.0 * m);
590
- }`,[e]),o=new k("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new k("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new k(`float simplexAshima(vec3 v) {
590
+ }`,[e]),o=new H("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new H("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new H(`float simplexAshima(vec3 v) {
591
591
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
592
592
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
593
593
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -632,7 +632,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
632
632
  m = m * m;
633
633
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
634
634
  dot(p2,x2), dot(p3,x3) ) );
635
- }`,[o,i]),a=new k("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new k("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),u=new k(`float noise(vec3 p){
635
+ }`,[o,i]),a=new H("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new H("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),d=new H(`float noise(vec3 p){
636
636
  vec3 a = floor(p);
637
637
  vec3 d = p - a;
638
638
  d = d * d * (3.0 - 2.0 * d);
@@ -647,7 +647,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
647
647
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
648
648
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
649
649
  return o4.y * d.y + o4.x * (1.0 - d.y);
650
- }`,[c]),l=new k(`float fbm(vec3 x) {
650
+ }`,[c]),l=new H(`float fbm(vec3 x) {
651
651
  float v = 0.0;
652
652
  float a = 0.5;
653
653
  vec3 shift = vec3(100);
@@ -657,7 +657,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
657
657
  a *= 0.5;
658
658
  }
659
659
  return v;
660
- }`,[u]);l.keywords.NUM_OCTAVES=new Oe(`int NUM_OCTAVES ${5}`);let d=new k("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new k(`float perlin(vec3 P){
660
+ }`,[d]);l.keywords.NUM_OCTAVES=new Ce(`int NUM_OCTAVES ${5}`);let u=new H("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new H(`float perlin(vec3 P){
661
661
  vec3 Pi0 = floor(P);
662
662
  vec3 Pi1 = Pi0 + vec3(1.0);
663
663
  Pi0 = mod(Pi0, 289.0);
@@ -716,17 +716,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
716
716
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
717
717
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
718
718
  return 2.2 * n_xyz;
719
- }`,[o,i,d]),f=new k(`float hashwithoutsine13(vec3 p3)
719
+ }`,[o,i,u]),f=new H(`float hashwithoutsine13(vec3 p3)
720
720
  {
721
721
  p3 = fract(p3 * .1031);
722
722
  p3 += dot(p3, p3.yzx + 33.33);
723
723
  return fract((p3.x + p3.y) * p3.z);
724
- }`),m=new k(`vec3 hashwithoutsine33(vec3 p3)
724
+ }`),m=new H(`vec3 hashwithoutsine33(vec3 p3)
725
725
  {
726
726
  p3 = fract(p3 * vec3(.1031, .1030, .0973));
727
727
  p3 += dot(p3, p3.yxz+33.33);
728
728
  return fract((p3.xxy + p3.yxx)*p3.zyx);
729
- }`),h=new k(`float metric(in vec3 p)
729
+ }`),h=new H(`float metric(in vec3 p)
730
730
  {
731
731
  // L2
732
732
  return length(p);
@@ -734,17 +734,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
734
734
  // Chebyshev
735
735
  // vec3 a = abs(p);
736
736
  // return max(a.x, max(a.y, a.z));
737
- }`),y=new k(`float smin( float a, float b, float k )
737
+ }`),y=new H(`float smin( float a, float b, float k )
738
738
  {
739
739
  float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
740
740
  float correction = k * h * (1.0 - h);
741
741
  return mix(b, a, h) - correction;
742
- }`),g=new k(`float smax( float a, float b, float k )
742
+ }`),g=new H(`float smax( float a, float b, float k )
743
743
  {
744
744
  float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
745
745
  float correction = k * h * (1.0 - h);
746
746
  return mix(a, b, h) + correction;
747
- }`),x=new k(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
747
+ }`),x=new H(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
748
748
  // Compute width of each interval
749
749
  float input_width = input_max - input_min;
750
750
  float output_width = output_max - output_min;
@@ -754,7 +754,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
754
754
 
755
755
  // Convert the 0-1 range into a value in output range
756
756
  return output_min + (scaled * output_width);
757
- }`),b=new k(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
757
+ }`),S=new H(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
758
758
  {
759
759
  // Integer and fractional parts of this point's coordinates
760
760
  ivec3 p = ivec3(floor(x));
@@ -892,7 +892,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
892
892
  return hashwithoutsine13(vec3(p + mb) + seed);
893
893
  }
894
894
  }
895
- `,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:l,perlin:p,voronoi:b}}();var qi=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=c,this.colorB=u,this.colorC=l,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(ra)[this.noiseType.value],c=a=="voronoi"?`
895
+ `,[f,m,h,y,g,x]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:l,perlin:p,voronoi:S}}();var Zi=class extends le{constructor(e,t,o,i,s,a,c,d,l,u,p,f,m,h,y,g,x,S,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=c,this.colorB=d,this.colorC=l,this.colorD=u,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=S,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(aa)[this.noiseType.value],c=a=="voronoi"?`
896
896
  float v = ${a}(st + move, voronoiStyle, smoothness, seed, quality);
897
897
 
898
898
  // Apply clipping to colors
@@ -914,7 +914,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
914
914
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
915
915
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
916
916
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
917
- `,u=new k(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
917
+ `,d=new H(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
918
918
  {
919
919
  // Prevent scale of zero
920
920
  scale = max(abs(scale), 0.001);
@@ -929,7 +929,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
929
929
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
930
930
 
931
931
  return clamp(color, 0.0, 1.0).rgb;
932
- }`,[St.simplex,St.simplexFractal,St.simplexAshima,St.fbm,St.perlin,St.voronoi]),l=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}};qi.numOctaves=5;var mu=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=l,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),s=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(s,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
932
+ }`,[Pt.simplex,Pt.simplexFractal,Pt.simplexAshima,Pt.fbm,Pt.perlin,Pt.voronoi]),l=e.include(d),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.voronoiStyle.build(e,"i")),u.push(this.highCut.build(e,"f")),u.push(this.lowCut.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.seed.build(e,"f")),u.push(this.quality.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(l+"("+u.join(",")+")",this.getType(e),t)}};Zi.numOctaves=5;var vd=class extends le{constructor(e,t,o,i,s,a,c,d,l,u,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=c,this.outlineSmoothing=d,this.contourDirection=l,this.positionalLines=u,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),s=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),c=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(i,"uniform float"),e.addVertexParsVariable(s,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(c,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
933
933
  vID = randomColor.r;
934
934
  vec2 ${o}_offset = vec2(0.0);
935
935
  if (${a}) {
@@ -944,7 +944,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
944
944
  // if this offset is the biggest of all the potential offsets
945
945
  gl_Position = ${o}_clipPosition;
946
946
  }
947
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(mu.Nodes.outline),s=[];return s.push(this.outlineColor.build(e,"c")),s.push(this.contourColor.build(e,"c")),s.push(this.outlineWidth.build(e,"f")),s.push(this.contourWidth.build(e,"f")),s.push(this.contourThreshold.build(e,"f")),s.push(this.outlineThreshold.build(e,"f")),s.push(this.contourFrequency.build(e,"f")),s.push(this.outlineSmoothing.build(e,"f")),s.push(this.contourDirection.build(e,"v3")),s.push(this.positionalLines.build(e,"b")),s.push(this.resolution.build(e,"v2")),s.push(this.normalMap.getTexture(e,"t")),s.push(this.depthMap.getTexture(e,"t")),s.push(this.pixelRatio.build(e,"f")),s.push(this.compensation.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},$i=mu;$i.Nodes=function(){let e=new k(`
947
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(vd.Nodes.outline),s=[];return s.push(this.outlineColor.build(e,"c")),s.push(this.contourColor.build(e,"c")),s.push(this.outlineWidth.build(e,"f")),s.push(this.contourWidth.build(e,"f")),s.push(this.contourThreshold.build(e,"f")),s.push(this.outlineThreshold.build(e,"f")),s.push(this.contourFrequency.build(e,"f")),s.push(this.outlineSmoothing.build(e,"f")),s.push(this.contourDirection.build(e,"v3")),s.push(this.positionalLines.build(e,"b")),s.push(this.resolution.build(e,"v2")),s.push(this.normalMap.getTexture(e,"t")),s.push(this.depthMap.getTexture(e,"t")),s.push(this.pixelRatio.build(e,"f")),s.push(this.compensation.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Qi=vd;Qi.Nodes=function(){let e=new H(`
948
948
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
949
949
  {
950
950
  vec2 halton = haltonSequence[frameIndex];
@@ -1050,7 +1050,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1050
1050
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
1051
1051
  return edgeNormal;
1052
1052
  }
1053
- `);return{outline:new k(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1053
+ `);return{outline:new H(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
1054
1054
  vec3 result = outlineColor;
1055
1055
  float resultAlpha = 0.0;
1056
1056
 
@@ -1093,12 +1093,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1093
1093
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1094
1094
 
1095
1095
  return result;
1096
- }`,[e])}}();var Wr=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=s,this.colorA=a,this.colorB=c,this.frequency=u,this.size=l,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=b,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,s=new k(`float hashwithoutsine12(vec2 p)
1096
+ }`,[e])}}();var $r=class extends le{constructor(e,t,o,i,s,a,c,d,l,u,p,f,m,h,y,g,x,S){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=s,this.colorA=a,this.colorB=c,this.frequency=d,this.size=l,this.variation=u,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=S,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,s=new H(`float hashwithoutsine12(vec2 p)
1097
1097
  {
1098
1098
  vec3 p3 = fract(vec3(p.xyx) * .1031);
1099
1099
  p3 += dot(p3, p3.yzx + 33.33);
1100
1100
  return fract((p3.x + p3.y) * p3.z);
1101
- }`),a=new k(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1101
+ }`),a=new H(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1102
1102
  {
1103
1103
  const float mid = 0.5;
1104
1104
  float radians = a * (PI / 180.0);
@@ -1155,7 +1155,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1155
1155
  custom_uv = rotate_uv(custom_uv, rotation, true);
1156
1156
 
1157
1157
  float draw = ${p};
1158
- `}let u=new k(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1158
+ `}let d=new H(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1159
1159
  const float TWO_PI = PI * 2.0;
1160
1160
  float smoothness_remapped = pow(smoothness, 5.0);
1161
1161
 
@@ -1179,11 +1179,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1179
1179
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1180
1180
 
1181
1181
  return clamp(color, 0.0, 1.0).rgb;
1182
- }`,[a,s,Wr.DrawFunctions.circle,Wr.DrawFunctions.ring,Wr.DrawFunctions.polygon,Wr.DrawFunctions.cross,Wr.DrawFunctions.diamond,Wr.DrawFunctions.checkerboard,Wr.DrawFunctions.line,Wr.DrawFunctions.wave]),l=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(l+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},Yi=Wr;Yi.DrawFunctions=function(){let e=new k(`float hashwithoutsine12(vec2 p) {
1182
+ }`,[a,s,$r.DrawFunctions.circle,$r.DrawFunctions.ring,$r.DrawFunctions.polygon,$r.DrawFunctions.cross,$r.DrawFunctions.diamond,$r.DrawFunctions.checkerboard,$r.DrawFunctions.line,$r.DrawFunctions.wave]),l=e.include(d),u=[];return u.push("normal"),u.push(this.blending.build(e,"f")),u.push(this.style.build(e,"i")),u.push(this.offset.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.frequency.build(e,"v2")),u.push(this.size.build(e,"f")),u.push(this.variation.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.zigzag.build(e,"f")),u.push(this.rotation.build(e,"f")),u.push(this.vertical.build(e,"v2")),u.push(this.horizontal.build(e,"v2")),u.push(this.sides.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(l+"("+u.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},Ji=$r;Ji.DrawFunctions=function(){let e=new H(`float hashwithoutsine12(vec2 p) {
1183
1183
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1184
1184
  p3 += dot(p3, p3.yzx + 33.33);
1185
1185
  return fract((p3.x + p3.y) * p3.z);
1186
- }`),t=new k(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1186
+ }`),t=new H(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1187
1187
  // Create tiles in UV-space
1188
1188
  uv *= frequency;
1189
1189
 
@@ -1212,14 +1212,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1212
1212
  f *= jitter;
1213
1213
 
1214
1214
  return f;
1215
- }`,[e]),o=new k(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1215
+ }`,[e]),o=new H(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1216
1216
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1217
1217
  return smoothstep(
1218
1218
  -smoothness,
1219
1219
  smoothness,
1220
1220
  length(f) - size
1221
1221
  );
1222
- }`,[t]),i=new k(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1222
+ }`,[t]),i=new H(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1223
1223
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1224
1224
 
1225
1225
  float d = length(f);
@@ -1228,7 +1228,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1228
1228
  float outer = smoothstep(-smoothness, smoothness, d - size);
1229
1229
  float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
1230
1230
  return outer + (1.0 - inner);
1231
- }`,[t]),s=new k(`float sdf_ngon(in vec2 p, in float r, in int n) {
1231
+ }`,[t]),s=new H(`float sdf_ngon(in vec2 p, in float r, in int n) {
1232
1232
  float an = (PI * 2.0) / float(n);
1233
1233
  float he = r * tan(0.5 * an);
1234
1234
 
@@ -1245,7 +1245,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1245
1245
  float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
1246
1246
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1247
1247
  return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
1248
- }`,[t]),a=new k(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1248
+ }`,[t]),a=new H(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1249
1249
  p = abs(p);
1250
1250
  p = (p.y > p.x) ? p.yx : p.xy;
1251
1251
  vec2 q = p - b;
@@ -1258,7 +1258,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1258
1258
  float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1259
1259
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1260
1260
  return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
1261
- }`,[t]),c=new k(`float ndot(vec2 a, vec2 b) {
1261
+ }`,[t]),c=new H(`float ndot(vec2 a, vec2 b) {
1262
1262
  return a.x*b.x - a.y*b.y;
1263
1263
  }
1264
1264
 
@@ -1272,7 +1272,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1272
1272
  float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1273
1273
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1274
1274
  return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
1275
- }`,[t]),u=new k(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1275
+ }`,[t]),d=new H(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1276
1276
  uv *= frequency;
1277
1277
  vec2 i = floor(uv);
1278
1278
 
@@ -1282,7 +1282,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1282
1282
  float x = floor(uv.x);
1283
1283
 
1284
1284
  return mod(x, 2.0);
1285
- }`),l=new k(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1285
+ }`),l=new H(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1286
1286
  vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
1287
1287
 
1288
1288
  // Different approach for variation param here
@@ -1295,7 +1295,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1295
1295
  s + smoothness,
1296
1296
  abs(f.y)
1297
1297
  );
1298
- }`,[t]),d=new k(`// Uses bisection
1298
+ }`,[t]),u=new H(`// Uses bisection
1299
1299
  float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
1300
1300
  // Convert all data to a primitive cosine wave
1301
1301
  p = c * (p - vec2(d, a));
@@ -1344,7 +1344,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1344
1344
  float s = mix(size, size * rand, variation);
1345
1345
 
1346
1346
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1347
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:a,diamond:c,checkerboard:u,line:l,wave:d}}();var hu=class extends le{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(hu.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Xi=hu;Xi.Nodes=function(){let e=new k(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1347
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:a,diamond:c,checkerboard:d,line:l,wave:u}}();var bd=class extends le{constructor(e,t,o,i,s,a,c,d){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.isMask=d,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(bd.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},es=bd;es.Nodes=function(){let e=new H(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1348
1348
  vec3 st = position / noiseScale;
1349
1349
  vec3 q = vec3(simplex3d(st),
1350
1350
  simplex3d(st + vec3(1.0)),
@@ -1357,7 +1357,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1357
1357
  float noise = simplex3d(st + r);
1358
1358
 
1359
1359
  return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
1360
- }`,[St.simplex]);return{rainbow:new k(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1360
+ }`,[Pt.simplex]);return{rainbow:new H(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1361
1361
  vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1362
1362
 
1363
1363
  float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
@@ -1367,14 +1367,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1367
1367
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1368
1368
 
1369
1369
  return res;
1370
- }`,[e])}}();var yu=class extends le{constructor(e,t,o,i,s,a,c,u,l,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=u,this.offset=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(yu.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ki=yu;Ki.Nodes=function(){let e=new k(`float rand(float n) {
1370
+ }`,[e])}}();var Sd=class extends le{constructor(e,t,o,i,s,a,c,d,l,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=c,this.shadowColor=d,this.offset=l,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Sd.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ts=Sd;ts.Nodes=function(){let e=new H(`float rand(float n) {
1371
1371
  return fract(sin(n) * 43758.5453123);
1372
- }`),t=new k(`float hash1(float p) {
1372
+ }`),t=new H(`float hash1(float p) {
1373
1373
  p = fract(p * 0.011);
1374
1374
  p *= p + 7.5;
1375
1375
  p *= p + p;
1376
1376
  return fract(p);
1377
- }`),o=new k(`float valueNoise(vec3 x) {
1377
+ }`),o=new H(`float valueNoise(vec3 x) {
1378
1378
  const vec3 step = vec3(110, 241, 171);
1379
1379
 
1380
1380
  vec3 i = floor(x);
@@ -1389,13 +1389,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1389
1389
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1390
1390
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1391
1391
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1392
- }`,[t]),i=new k(`vec3 hash3(vec3 x) {
1392
+ }`,[t]),i=new H(`vec3 hash3(vec3 x) {
1393
1393
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1394
1394
  dot(x,vec3(269.5, 183.3, 246.1)),
1395
1395
  dot(x,vec3(113.5, 271.9, 124.6)));
1396
1396
 
1397
1397
  return fract(sin(x)*43758.5453123);
1398
- }`),s=new k(`vec3 voronoiNoise(in vec3 x)
1398
+ }`),s=new H(`vec3 voronoiNoise(in vec3 x)
1399
1399
  {
1400
1400
  vec3 p = floor(x);
1401
1401
  vec3 f = fract(x);
@@ -1426,7 +1426,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1426
1426
 
1427
1427
  return vec3(sqrt(res), abs(id));
1428
1428
  }
1429
- `,[i]);return{toon:new k(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1429
+ `,[i]);return{toon:new H(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1430
1430
  float t = 0.0;
1431
1431
  float shadow = 1.0;
1432
1432
 
@@ -1603,7 +1603,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1603
1603
 
1604
1604
  return color.xyz;
1605
1605
 
1606
- }`,[St.simplex,e,o,s])}}();var gu=require("three");var lg=function(){return{textureBicubic:new k(`float w0( float a ) {
1606
+ }`,[Pt.simplex,e,o,s])}}();var wd=require("three");var gg=function(){return{textureBicubic:new H(`float w0( float a ) {
1607
1607
  return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
1608
1608
  }
1609
1609
 
@@ -1667,7 +1667,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1667
1667
  vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
1668
1668
  vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
1669
1669
  return mix( fSample, cSample, fract( lod ) );
1670
- }`)}}();function cg(n,r){return n>=r?new gu.Vector2(r/n,1):new gu.Vector2(1,n/r)}var xu=class extends le{constructor(e,t,o,i,s,a,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,xe.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(xu.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Zi=xu;Zi.Nodes=function(){let e=new k(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1670
+ }`)}}();function xg(n,r){return n>=r?new wd.Vector2(r/n,1):new wd.Vector2(1,n/r)}var _d=class extends le{constructor(e,t,o,i,s,a,c,d){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Se.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(_d.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"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("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},rs=_d;rs.Nodes=function(){let e=new H(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1671
1671
  // Slightly modified version of this:
1672
1672
  // https://www.shadertoy.com/view/ltScRG
1673
1673
 
@@ -1700,7 +1700,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1700
1700
  res += textureLod(sp, uv, lod).rgb;
1701
1701
  }
1702
1702
  return res / float(NUM_SAMPLES);
1703
- }`),t=new k(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1703
+ }`),t=new H(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1704
1704
  // Direction of refracted light.
1705
1705
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
1706
1706
 
@@ -1712,11 +1712,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1712
1712
 
1713
1713
  // The thickness is specified in local space
1714
1714
  return normalize( refractionVector ) * thickness * modelScale;
1715
- }`),o=new k(`float applyIorToRoughness( float roughness, float ior ) {
1715
+ }`),o=new H(`float applyIorToRoughness( float roughness, float ior ) {
1716
1716
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
1717
1717
  // an IOR of 1.5 results in the default amount of microfacet refraction.
1718
1718
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
1719
- }`),i=new k(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1719
+ }`),i=new H(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1720
1720
  // Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
1721
1721
  // also the code in convertTransmission.ts, which runs during export
1722
1722
  #ifdef IS_THREEJS_EXPORT
@@ -1727,7 +1727,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1727
1727
  float lod = applyIorToRoughness(roughness, ior);
1728
1728
  return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1729
1729
  #endif
1730
- }`,[lg.textureBicubic,o,e]),s=new k(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1730
+ }`,[gg.textureBicubic,o,e]),s=new H(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1731
1731
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1732
1732
  vec3 refractedRayExit = position + transmissionRay;
1733
1733
 
@@ -1744,7 +1744,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1744
1744
 
1745
1745
  // Sample framebuffer to get pixel the refracted ray hits.
1746
1746
  return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
1747
- }`,[i,t]);return{transmission:new k(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1747
+ }`,[i,t]);return{transmission:new H(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1748
1748
  vec3 v = vec3(0.);
1749
1749
  if (isOrthographic) {
1750
1750
  v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
@@ -1758,9 +1758,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1758
1758
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1759
1759
 
1760
1760
  return transmission;
1761
- }`,[s])}}();var vu=(e=>(e.NOISE="noise",e.MAP="map",e))(vu||{}),bu=class extends le{constructor(e,t,o,i,s,a,c,u,l,d,p){super("v3");this.displacementTypeIndex=new we(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(vu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Vi(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=a,this.highCut=c,this.lowCut=u,this.quality=l}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(vu)[this.displacementTypeIndex.value]){case"map":{o=e.include(bu.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(ra)[this.noiseFunctionIndex.value],c=new k(`vec3 orthogonal(vec3 v) {
1761
+ }`,[s])}}();var Pd=(e=>(e.NOISE="noise",e.MAP="map",e))(Pd||{}),Td=class extends le{constructor(e,t,o,i,s,a,c,d,l,u,p){super("v3");this.displacementTypeIndex=new _e(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Pd)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Ui(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=a,this.highCut=c,this.lowCut=d,this.quality=l}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Pd)[this.displacementTypeIndex.value]){case"map":{o=e.include(Td.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(aa)[this.noiseFunctionIndex.value],c=new H(`vec3 orthogonal(vec3 v) {
1762
1762
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1763
- }`),u=a=="voronoi"?`
1763
+ }`),d=a=="voronoi"?`
1764
1764
  float v = ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1765
1765
  v = remap(v, lowCut, highCut, 0.0, 1.0);
1766
1766
  v = smax(v, 0.0, smoothness * 0.25);
@@ -1769,9 +1769,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1769
1769
  return p + n * v * intensity;
1770
1770
  `:`
1771
1771
  return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1772
- `,l=new k(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1773
- ${u}
1774
- }`,[St.simplex,St.simplexFractal,St.simplexAshima,St.fbm,St.perlin,St.voronoi]),d=new k(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1772
+ `,l=new H(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1773
+ ${d}
1774
+ }`,[Pt.simplex,Pt.simplexFractal,Pt.simplexAshima,Pt.fbm,Pt.perlin,Pt.voronoi]),u=new H(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1775
1775
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1776
1776
  vec3 tangent1 = orthogonal(normal);
1777
1777
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1787,9 +1787,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1787
1787
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1788
1788
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1789
1789
  return displaced_position;
1790
- }`,[l,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Qi=bu;Qi.Nodes=function(){let e=new k(`vec3 orthogonal(vec3 v) {
1790
+ }`,[l,c]);o=e.include(u),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},os=Td;os.Nodes=function(){let e=new H(`vec3 orthogonal(vec3 v) {
1791
1791
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1792
- }`),t=new k(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1792
+ }`),t=new H(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1793
1793
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
1794
1794
  vec4 tmp = texture2D(tex, uvs);
1795
1795
  vec3 col = tmp.rgb;
@@ -1799,7 +1799,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1799
1799
  }
1800
1800
  }
1801
1801
  return col.r;
1802
- }`);return{map:new k(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1802
+ }`);return{map:new H(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1803
1803
  vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
1804
1804
  vec3 tangent1 = normalize(orthogonal(normal));
1805
1805
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1809,7 +1809,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1809
1809
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1810
1810
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1811
1811
  return displaced_position;
1812
- }`,[e,t])}}();var xe={normalRenderTarget:new Gt,normalRenderTargetDepth:new Gt,transmissionRenderTarget:new Gt,aspectRatio:new Xe,transmissionSize:new Xe(2048,2048),transmissionRenderTargetDepth:new Gt,aoRenderTarget:new Gt,aoEnabled:new tt,pixelRatioNode:new Y(1),resolution:new Xe,penumbraSize:new Or(5,.5),frameIndex:new we(0),transmissionLod:new we(2)};for(let n of Object.values(xe))n.isRenderGlobal=!0;var gn=class extends xt{constructor(){super("basic");this.nodeType="Basic";this.color=new Ee(ct),this.shadingAlpha=new Y(1),this.shadingBlend=new we(0),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot}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:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(pc.UniformsUtils.merge([pc.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1812
+ }`,[e,t])}}();var Se={normalRenderTarget:new Ft,normalRenderTargetDepth:new Ft,transmissionRenderTarget:new Ft,aspectRatio:new Je,transmissionSize:new Je(2048,2048),transmissionRenderTargetDepth:new Ft,aoRenderTarget:new Ft,aoEnabled:new nt,pixelRatioNode:new J(1),resolution:new Je,penumbraSize:new Cr(5,.5),frameIndex:new _e(0),transmissionLod:new _e(2)};for(let n of Object.values(Se))n.isRenderGlobal=!0;var wn=class extends St{constructor(){super("basic");this.nodeType="Basic";this.color=new Be(pt),this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.previousModelViewMatrix=new Nt,this.previouseProjectionMatrix=new Nt}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:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(mc.UniformsUtils.merge([mc.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1813
1813
  `));let i=["#include <beginnormal_vertex>",`
1814
1814
  #if !defined( USE_LAYER_DISPLACE )
1815
1815
  #include <defaultnormal_vertex>
@@ -1827,9 +1827,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1827
1827
  #include <begin_vertex>
1828
1828
  #endif /* !USE_LAYER_DISPLACE */
1829
1829
  `];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(`
1830
- `)}else{this.color===void 0&&(this.color=new Ee(ct)),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,s=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,a=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(`
1831
- `));let c=["#include <normal_fragment_begin>",o.code];i&&c.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),a?c.push(a.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`):c.push(`vec3 finalColor = ${o.result};`);let u="1.0";this.mask&&(this.mask.analyze(e),u=`luminance(${this.mask.flow(e,"v3").result})`),i?c.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${u} );`):c.push("gl_FragColor = vec4("+o.result+", 1.0 );"),s&&c.push(`gl_FragColor.a *= ${s.result};`),c.push("#include <fog_fragment>","#include <dithering_fragment>"),t=c.join(`
1832
- `)}return t}};var oa=require("three");var na=class extends xt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ee(ct),this.emissive=new Ee(0),this.emissiveIntensity=new Y(1),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Y(1),this.shadingBlend=new we(0),this.occlusion=new tt(!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:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(oa.UniformsUtils.merge([oa.UniformsLib.fog,oa.UniformsLib.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(`
1830
+ `)}else{this.color===void 0&&(this.color=new Be(pt)),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,s=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,a=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(`
1831
+ `));let c=["#include <normal_fragment_begin>",o.code];i&&c.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),a?c.push(a.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`):c.push(`vec3 finalColor = ${o.result};`);let d="1.0";this.mask&&(this.mask.analyze(e),d=`luminance(${this.mask.flow(e,"v3").result})`),i?c.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${d} );`):c.push("gl_FragColor = vec4("+o.result+", 1.0 );"),s&&c.push(`gl_FragColor.a *= ${s.result};`),c.push("#include <fog_fragment>","#include <dithering_fragment>"),t=c.join(`
1832
+ `)}return t}};var la=require("three");var ca=class extends St{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Be(pt),this.emissive=new Be(0),this.emissiveIntensity=new J(1),this.previousModelViewMatrix=new Nt,this.previouseProjectionMatrix=new Nt,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new nt(!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:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(la.UniformsUtils.merge([la.UniformsLib.fog,la.UniformsLib.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(`
1833
1833
  `));let i=["#include <beginnormal_vertex>",`
1834
1834
  #ifndef USE_LAYER_DISPLACE
1835
1835
  #include <defaultnormal_vertex>
@@ -1922,23 +1922,23 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1922
1922
  #pragma unroll_loop_end
1923
1923
  #endif
1924
1924
  `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1925
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color"}),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.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.occlusion.flow(e,"b",{slot:"occlusion"}),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1925
+ `)}else{e.mergeUniform({penumbraSize:Se.penumbraSize}),e.mergeUniform({frameIndex:Se.frameIndex}),e.mergeUniform({aoMap:Se.aoRenderTarget}),e.mergeUniform({aoEnabled:Se.aoEnabled}),this.color===void 0&&(this.color=new Be(pt)),this.color.analyze(e,{slot:"color"}),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.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.occlusion.flow(e,"b",{slot:"occlusion"}),c=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),l=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 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1926
1926
  `));let f=["#include <normal_fragment_begin>",`
1927
1927
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1928
1928
  vec3 viewdx = dFdx(vViewPosition);
1929
1929
  vec3 viewdy = dFdy(vViewPosition);
1930
1930
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
1931
1931
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
1932
- `,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),d&&f.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&f.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),f.push("vec3 ao = aoEnabled && "+a.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1932
+ `,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&f.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),f.push("vec3 ao = aoEnabled && "+a.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1933
1933
  if (outgoingLight != diffuseColor) {
1934
1934
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1935
1935
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
1936
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${u.result} );
1936
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${d.result} );
1937
1937
 
1938
1938
  outgoingLight *= ao;
1939
1939
  }
1940
- `),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
1941
- `)}return t}};var ia=require("three");var yo=function(){let n=new k(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1940
+ `),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
1941
+ `)}return t}};var ua=require("three");var xo=function(){let n=new H(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
1942
1942
 
1943
1943
  // Gradient of UVs w.r.t. X coordinate (in screen-space)
1944
1944
  vec2 dSTdx = dFdx(bumpMapUv);
@@ -1952,7 +1952,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1952
1952
  float dBy = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdy).rgb) - Hll;
1953
1953
 
1954
1954
  return vec2( dBx, dBy );
1955
- }`),r=new k(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1955
+ }`),r=new H(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
1956
1956
  vec3 vSigmaX = dFdx( surf_pos.xyz );
1957
1957
  vec3 vSigmaY = dFdy( surf_pos.xyz );
1958
1958
  vec3 vN = surf_norm; // normalized
@@ -1969,7 +1969,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1969
1969
 
1970
1970
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
1971
1971
  return normalize( abs( fDet ) * vN - vGrad );
1972
- }`);return{dHdxy:n,perturbNormalArb:r}}();var sa=class extends xt{constructor(){super("phong");this.nodeType="Phong";this.color=new Ee(ct),this.specular=new Ee(1118481),this.shininess=new Y(30),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Y(1),this.shadingBlend=new we(0),this.occlusion=new tt(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),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:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ia.UniformsUtils.merge([ia.UniformsLib.fog,ia.UniformsLib.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(`
1972
+ }`);return{dHdxy:n,perturbNormalArb:r}}();var da=class extends St{constructor(){super("phong");this.nodeType="Phong";this.color=new Be(pt),this.specular=new Be(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Nt,this.previouseProjectionMatrix=new Nt,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new nt(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),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:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ua.UniformsUtils.merge([ua.UniformsLib.fog,ua.UniformsLib.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(`
1973
1973
  `));let i=["#include <beginnormal_vertex>",`
1974
1974
  #include <skinbase_vertex>
1975
1975
  #include <skinnormal_vertex>
@@ -1990,7 +1990,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1990
1990
  #include <begin_vertex>
1991
1991
  #endif
1992
1992
  `];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>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1993
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Ee(ct)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=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);let i=this.color.flow(e,"c",{slot:"color"}),s=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),u=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=d!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1993
+ `)}else{e.mergeUniform({penumbraSize:Se.penumbraSize}),e.mergeUniform({frameIndex:Se.frameIndex}),e.mergeUniform({aoMap:Se.aoRenderTarget}),e.mergeUniform({aoEnabled:Se.aoEnabled}),this.color===void 0&&(this.color=new Be(pt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=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);let i=this.color.flow(e,"c",{slot:"color"}),s=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),l=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(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1994
1994
  `));let f=["#include <normal_fragment_begin>",`
1995
1995
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1996
1996
  vec3 viewdx = dFdx(vViewPosition);
@@ -1999,7 +1999,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1999
1999
  if (dot(normal, faceNormal) < 0.0) {
2000
2000
  normal *= -1.0;
2001
2001
  }
2002
- `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(yo.dHdxy),e.include(yo.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",x="";this.bumpMap.projection.value===4?x=`
2002
+ `," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(xo.dHdxy),e.include(xo.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",x="";this.bumpMap.projection.value===4?x=`
2003
2003
  vec3 bumpNormal = vec3(0.0);
2004
2004
  {
2005
2005
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2028,16 +2028,16 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2028
2028
  `,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2029
2029
  ${y.result};
2030
2030
  ${x}
2031
- `)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",s.code," vec3 specular = "+s.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),d&&f.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
2031
+ `)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",s.code," vec3 specular = "+s.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
2032
2032
  if (outgoingLight != diffuseColor) {
2033
2033
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2034
2034
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
2035
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${u.result} );
2035
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${d.result} );
2036
2036
 
2037
2037
  outgoingLight *= ao;
2038
2038
  }
2039
- `),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
2040
- `)}return t}};var Ji=require("three");var aa=class extends xt{constructor(){super("standard");this.nodeType="Standard";this.color=new Ee(ct),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Y(1),this.shadingBlend=new we(0),this.occlusion=new tt(!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:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ji.UniformsUtils.merge([Ji.UniformsLib.fog,Ji.UniformsLib.lights])),Ji.UniformsLib.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(`
2039
+ `),l&&f.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
2040
+ `)}return t}};var ns=require("three");var pa=class extends St{constructor(){super("standard");this.nodeType="Standard";this.color=new Be(pt),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.previousModelViewMatrix=new Nt,this.previouseProjectionMatrix=new Nt,this.shadingAlpha=new J(1),this.shadingBlend=new _e(0),this.occlusion=new nt(!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:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(ns.UniformsUtils.merge([ns.UniformsLib.fog,ns.UniformsLib.lights])),ns.UniformsLib.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(`
2041
2041
  `));let i=["#include <beginnormal_vertex>",`
2042
2042
  #if !defined( USE_LAYER_DISPLACE )
2043
2043
  #include <defaultnormal_vertex>
@@ -2055,7 +2055,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2055
2055
  #include <begin_vertex>
2056
2056
  #endif /* !USE_LAYER_DISPLACE */
2057
2057
  `];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(`
2058
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Ee(ct)),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 s=this.color.flow(e,"c",{slot:"color",context:o}),a=this.roughness.flow(e,"f"),c=this.metalness.flow(e,"f"),u=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,m=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==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(`
2058
+ `)}else{e.mergeUniform({penumbraSize:Se.penumbraSize}),e.mergeUniform({frameIndex:Se.frameIndex}),e.mergeUniform({aoMap:Se.aoRenderTarget}),e.mergeUniform({aoEnabled:Se.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new Be(pt)),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 s=this.color.flow(e,"c",{slot:"color",context:o}),a=this.roughness.flow(e,"f"),c=this.metalness.flow(e,"f"),d=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,m=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==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(`
2059
2059
  `));let h=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
2060
2060
  // NOTE: gl_FrontFacing alternative using face normal estimation.
2061
2061
  vec3 viewdx = dFdx(vViewPosition);
@@ -2064,7 +2064,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2064
2064
  if (dot(normal, faceNormal) < 0.0) {
2065
2065
  normal *= -1.0;
2066
2066
  }
2067
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(yo.dHdxy),e.include(yo.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),x=this.bumpMap.flow(e,"v3"),b=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",w="";this.bumpMap.projection.value===4?w=`
2067
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(xo.dHdxy),e.include(xo.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),x=this.bumpMap.flow(e,"v3"),S=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",w="";this.bumpMap.projection.value===4?w=`
2068
2068
  vec3 bumpNormal = vec3(0.0);
2069
2069
  {
2070
2070
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2072,13 +2072,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2072
2072
  vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
2073
2073
  vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
2074
2074
 
2075
- vec2 grad0 = dHdxy(${g.result}, uv0, ${b});
2075
+ vec2 grad0 = dHdxy(${g.result}, uv0, ${S});
2076
2076
  vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
2077
2077
 
2078
- vec2 grad1 = dHdxy(${g.result}, uv1, ${b});
2078
+ vec2 grad1 = dHdxy(${g.result}, uv1, ${S});
2079
2079
  vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
2080
2080
 
2081
- vec2 grad2 = dHdxy(${g.result}, uv2, ${b});
2081
+ vec2 grad2 = dHdxy(${g.result}, uv2, ${S});
2082
2082
  vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
2083
2083
 
2084
2084
  bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
@@ -2088,12 +2088,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2088
2088
  normal = bumpNormal;
2089
2089
  `:w=`
2090
2090
  vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2091
- vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${b});
2091
+ vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${S});
2092
2092
  normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
2093
2093
  `,h.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
2094
2094
  ${x.result};
2095
2095
  ${w}
2096
- `)}if(h.push(s.code," vec3 diffuseColor = "+s.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",c.code," float metalnessFactor = "+c.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),x=this.roughnessMap.flow(e,"v3"),b="";this.roughnessMap.projection.value===4?b=`
2096
+ `)}if(h.push(s.code," vec3 diffuseColor = "+s.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",c.code," float metalnessFactor = "+c.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),x=this.roughnessMap.flow(e,"v3"),S="";this.roughnessMap.projection.value===4?S=`
2097
2097
  float roughnessChange = 1.0;
2098
2098
  {
2099
2099
  vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2108,7 +2108,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2108
2108
  roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
2109
2109
  }
2110
2110
  float roughnessFactor = roughnessChange * ${a.result};
2111
- `:b=`
2111
+ `:S=`
2112
2112
  vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
2113
2113
 
2114
2114
  vec4 vals = texture(${g.result}, roughnessMapCachedUv);
@@ -2118,17 +2118,17 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2118
2118
 
2119
2119
  const float roughnessScale = 1.0;
2120
2120
 
2121
- ${b}
2121
+ ${S}
2122
2122
  `)}else h.push(a.code," float roughnessFactor = "+a.result+";");p&&h.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),h.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),h.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 );"),m?h.push(m.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+m.result+" ) ), diffuseColor, metalnessFactor );"):h.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),h.push("#include <lights_fragment_begin>"),h.push("#include <lights_fragment_end>"),h.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})`),h.push(`
2123
2123
  if (outgoingLight != diffuseColor) {
2124
2124
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
2125
- accumAlpha += ( 1.0 - accumAlpha ) * ${u.result} * ${y} * lightAccu;
2126
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${u.result} * ${y}, ${l.result} );
2125
+ accumAlpha += ( 1.0 - accumAlpha ) * ${d.result} * ${y} * lightAccu;
2126
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${d.result} * ${y}, ${l.result} );
2127
2127
 
2128
2128
  outgoingLight *= ao;
2129
2129
  }
2130
- `),d&&h.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),p?h.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):h.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&h.push(`gl_FragColor.a *= ${f.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
2131
- `)}return t}};var la=require("three");var ca=class extends xt{constructor(){super("toon");this.nodeType="Toon";this.color=new Ee(ct),this.specular=new Ee(1118481),this.shininess=new Y(30),this.previousModelViewMatrix=new Ot,this.previouseProjectionMatrix=new Ot,this.shadingAlpha=new Y(1),this.shadingBlend=new we(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:xe.frameIndex}),e.mergeUniform({resolution:xe.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(la.UniformsUtils.merge([la.UniformsLib.fog,la.UniformsLib.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(`
2130
+ `),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 );"),f&&h.push(`gl_FragColor.a *= ${f.result};`),h.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
2131
+ `)}return t}};var fa=require("three");var ma=class extends St{constructor(){super("toon");this.nodeType="Toon";this.color=new Be(pt),this.specular=new Be(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new Nt,this.previouseProjectionMatrix=new Nt,this.shadingAlpha=new J(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:Se.frameIndex}),e.mergeUniform({resolution:Se.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(fa.UniformsUtils.merge([fa.UniformsLib.fog,fa.UniformsLib.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(`
2132
2132
  `));let i=["#include <beginnormal_vertex>",`
2133
2133
  #ifndef USE_LAYER_DISPLACE
2134
2134
  #include <defaultnormal_vertex>
@@ -2146,7 +2146,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2146
2146
  #include <begin_vertex>
2147
2147
  #endif
2148
2148
  `];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(`
2149
- `)}else{e.mergeUniform({penumbraSize:xe.penumbraSize}),e.mergeUniform({frameIndex:xe.frameIndex}),e.mergeUniform({aoMap:xe.aoRenderTarget}),e.mergeUniform({aoEnabled:xe.aoEnabled}),this.color===void 0&&(this.color=new Ee(ct)),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"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=l!==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>",`
2149
+ `)}else{e.mergeUniform({penumbraSize:Se.penumbraSize}),e.mergeUniform({frameIndex:Se.frameIndex}),e.mergeUniform({aoMap:Se.aoRenderTarget}),e.mergeUniform({aoEnabled:Se.aoEnabled}),this.color===void 0&&(this.color=new Be(pt)),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"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0,u=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=l!==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>",`
2150
2150
  varying vec3 vViewPosition;
2151
2151
  struct ToonMaterial {
2152
2152
  vec3 diffuseColor;
@@ -2175,7 +2175,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2175
2175
  if (dot(normal, faceNormal) < 0.0) {
2176
2176
  normal *= -1.0;
2177
2177
  }
2178
- `," ToonMaterial material;"];if(this.bumpMap){e.include(yo.dHdxy),e.include(yo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),h=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
2178
+ `," ToonMaterial material;"];if(this.bumpMap){e.include(xo.dHdxy),e.include(xo.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),h=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
2179
2179
  vec3 bumpNormal = vec3(0.0);
2180
2180
  {
2181
2181
  vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
@@ -2210,12 +2210,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2210
2210
  accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * ${f} * lightAccu;
2211
2211
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result} * ${f}, ${c.result} );
2212
2212
  }
2213
- `),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),l?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&p.push(`gl_FragColor.a *= ${d.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
2214
- `)}return t}};var yc=require("three");var fc=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 wu=class extends fc{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Su;function dg(n){return typeof n=="string"?n:(Su||(Su=new wu),Su.load(n))}var mc=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")}},hc=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 es=class extends mc{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let a=this[s];a&&(a.image=this.img,a.needsUpdate=!0)}this.shared.requestRender()};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(s=>{o.onloadend=a=>{i=a.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=dg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new yc.VideoTexture(this.img,void 0,e,e):o=new yc.Texture(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var dr=class extends es{};var Fe=require("three");function At(n,r){return r.color(n)}function ug(n,r){switch(n.type){case"fresnel":return sT(n,r);case"gradient":return aT(n);case"depth":return lT(n);case"normal":return cT(n);case"noise":return dT(n,r);case"rainbow":return uT(n);case"toon":return pT(n,r);case"outline":return fT(n,r);case"transmission":return mT(n,r);case"color":return iT(n,r);case"pattern":return hT(n,r)}}function nT(n){return{type:n.type}}function Cr(n){let{alpha:r,mode:e,isMask:t}=n;return{...nT(n),alpha:r,mode:e,isMask:t}}function iT(n,r){return{...Cr(n),color:At(n.color,r)}}function sT(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:a}=n;return{...Cr(n),color:At(s,r),bias:e,scale:t,intensity:o,factor:i}}function aT(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:a}=n;return{...Cr(n),gradientType:r,smooth:e,colors:t.map(c=>new Fe.Vector4(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new Fe.Vector2(...s),morph:new Fe.Vector2(...a),angle:i}}function lT(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:u,smooth:l}=n;return{...Cr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Fe.Vector3(...s),direction:a?new Fe.Vector3(...a):new Fe.Vector3(1,0,0),colors:c.map(d=>d!==void 0?new Fe.Vector4(d[0],d[1],d[2],d[3]):new Fe.Vector4(0,0,0,0)),steps:u.slice(0,c.length),smooth:l}}function cT(n){let{cnormal:r}=n;return{...Cr(n),cnormal:new Fe.Vector3(r[0],r[1],r[2])}}function dT(n,r){return{...Cr(n),scale:n.scale,move:n.move,fA:new Fe.Vector2(...n.fA),fB:new Fe.Vector2(...n.fB),size:new Fe.Vector3(...n.size),distortion:new Fe.Vector2(...n.distortion),colorA:At(n.colorA,r),colorB:At(n.colorB,r),colorC:At(n.colorC,r),colorD:At(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 uT(n){return{...Cr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Fe.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Fe.Vector3(...n.offset)}}function pT(n,r){return{...Cr(n),positioning:n.positioning,colors:n.colors.map(e=>new Fe.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Fe.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:At(n.shadowColor,r),offset:new Fe.Vector3(...n.offset)}}function fT(n,r){return{...Cr(n),outlineColor:At(n.outlineColor,r),contourColor:At(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Fe.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function mT(n,r){return{...Cr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function hT(n,r){return{...Cr(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Fe.Vector2(...n.offset),colorA:At(n.colorA,r),colorB:At(n.colorB,r),frequency:new Fe.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Fe.Vector2(...n.vertical),horizontal:new Fe.Vector2(...n.horizontal),sides:n.sides}}var Uo=class extends pt{};var pg=require("three");var _u={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Pu={depth:["colors"]};function yT(n,r,e){if(r==="isMask")return!0;let t=_u[n.type],o=Pu[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Tu(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 s=i.image,a=r.image(s),c=t;c.image instanceof dr||c.image.deref(),c.image=a}if("video"in i){let s=i.video,a=r.video(s),c=t;c.image instanceof dr||c.image.deref(),c.image=a}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function fg(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||s===void 0)continue;if(Ou(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Fo))switch(o=o||yT(e,i,s),a.constructor){case Ee:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Uo?a.value=new pt(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case qt:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof Uo?a.value=new pt(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case Xe:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case Tt:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Gt:{Tu(s,r,e);break}case Ar:{a.value=s.map(c=>new pg.Vector4(...c));break}default:{a.value=s;break}}}return o}var qr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Ou(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return or.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new mn(i,t.texture.wrapping),a=new dc(i),c=new uc(t.texture.repeat,t.texture.offset),u=new Y(t.crop?1:0),l=new we(t.projection??0),d=new we(["x","y","z"].indexOf(t.axis)??0),p=new we(t.side??0),f=new Xe(t.size?new Ge.Vector2(t.size[0],t.size[1]):new Ge.Vector2(100,100)),m=new Y(t.blending??0),h=new Y(t.alpha??1),y=new we(t.mode??0),g=new tt(t.isMask??!1),x=new ko(s,a,u,l,d,p,f,m,c,h,y,g),b=new Ne(x.calpha,"f");return new He(r,e,t,{texture:s,textureSize:a,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new mn(i,t.texture.wrapping),a=new Y(t.alpha??1),c=new we(t.mode??0),u=new tt(t.isMask??!1),l=new Wi(s,a,c,u),d=new Ne(l.calpha,"f");return new He(r,e,t,{texture:s,alpha:a,mode:c,isMask:u},l,c,d,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Tt(new Ge.Vector3(...t.offset)),s=new Y(t.scale??10),a=new Y(t.intensity??8),c=new Y(t.movement??1),u=new we(t.noiseType??0),l=new we(t.voronoiStyle??0),d=new Y(t.smoothness??.5),p=new Y(t.seed??0),f=new Y(t.highCut??1),m=new Y(t.lowCut??0),h=new we(t.quality??1),y=new Qi(a,c,i,l,d,p,f,m,h,s,u);return new da(r,e,t,{offset:i,scale:s,intensity:a,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return vT(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):fg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Tu(o.props,t.shared,this):!0;return!1}dispose(){if(gT(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}},He=class extends qr{constructor(e,t,o,i,s,a,c,u){super(e,t,o,i);this.params=i;this.color=s;this.mode=a;this.alpha=c;this.isMask=u}},da=class extends qr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},or=class extends qr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,a=new Y(o.alpha),c=new we(o.mode),u=new Y(o.bumpMapIntensity),l=new Y(o.alphaOverride),d;if(!o.visible)s=new gn,d={};else if(o.category==="lambert"){s=new na;let p=new Ee(i.color(o.emissive)??0),f=new tt(o.occlusion??!0);d={emissive:p,occlusion:f},s.emissive=p,s.occlusion=f}else if(o.category==="toon"){s=new ca;let p=new Y(o.shininess??30),f=new Ee(i.color(o.specular)??1118481);d={shininess:p,specular:f},s.shininess=p,s.specular=f}else if(o.category==="physical"){s=new aa;let p=new Y(o.roughness??.3),f=new Y(o.metalness??0),m=new Y(o.reflectivity??.5),h=new tt(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:m,occlusion:h},s.roughness=p,s.metalness=f,s.reflectivity=m,s.occlusion=h}else{s=new sa;let p=new Y(o.shininess??30),f=new Ee(o.specular!==void 0?i.color(o.specular)??1118481:1118481),m=new tt(o.occlusion??!0);d={shininess:p,specular:f,occlusion:m},s.shininess=p,s.specular=f,s.occlusion=m}return s.alpha=new Y(1),s.shadingAlpha=a,s.shadingBlend=c,s.bumpMapIntensity=u,s.alphaOverride=l,d.alpha=s.shadingAlpha,d.mode=s.shadingBlend,d.bumpMapIntensity=s.bumpMapIntensity,d.alphaOverride=s.alphaOverride,new or(e,t,o,s,d)}get category(){return this.node.category}};function gT(n){let r=n instanceof qr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function ur(n){return{alpha:new Y(n.alpha??1),mode:new we(n.mode??0),isMask:new tt(n.isMask??!1)}}function xT(n,r,e,t){switch(n.type){case"color":{let o=new Ee(t.color??ct),i=ur(t),s=new hn(o,i.alpha),a=new Ne(s.calpha,"f");return new He(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}case"fresnel":{let o=new Ee(t.color??16777215),i=new Y(t.bias??.1),s=new Y(t.scale??1),a=new Y(t.intensity??2),c=new Y(t.factor??1),u=ur(t),l=new ta(o,i,s,a,c,u.alpha,u.mode,u.isMask),d=new Ne(l.calpha,"f");return new He(r,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,...u},l,u.mode,d,u.isMask)}case"rainbow":{let o=new Y(t.filmThickness??30),i=new Y(t.movement??0),s=new Tt(t.wavelengths??new Ge.Vector3(0,0,0)),a=new Y(t.noiseStrength??0),c=new Y(t.noiseScale??1),u=new Tt(t.offset??new Ge.Vector3(0,0,0)),l=ur(t),d=new Xi(o,i,s,a,c,u,l.alpha,l.isMask),p=new Ne(d.calpha,"f");return new He(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:u,...l},d,l.mode,p,l.isMask)}case"transmission":{let o=new Y(t.thickness??10),i=new Y(t.ior??1.5),s=new Y(t.roughness??.5),a=xe.transmissionSize,c=xe.transmissionRenderTarget,u=xe.transmissionRenderTargetDepth,l=window.innerWidth,d=window.innerHeight,p=l>=d?new Xe(d/l,1):new Xe(1,l/d),f=ur(t),m=new Zi(o,i,s,a,c,u,p,f.alpha),h=new Ne(m.calpha,"f");return new He(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new we(t.positioning??0),i;t.colors?i=new Ar(t.colors.length,t.colors):(i=new Ar(10,new Ge.Vector4(0,0,0,1)),i.value[1]=new Ge.Vector4(1,1,1,1));let s;t.steps?s=new Or(t.steps.length,t.steps):(s=new Or(10,1),s.value[0]=0);let a=new Tt(t.source??new Ge.Vector3(0,0,0)),c=new tt(t.isWorldSpace??!0),u=new Y(t.noiseStrength??0),l=new Y(t.noiseScale??1),d=new qt(t.shadowColor),p=new Tt(t.offset??new Ge.Vector3(0,0,0)),f=ur(t),m=new Ki(o,i,s,a,c,u,l,d,p,f.alpha),h=new Ne(m.calpha,"f");return new He(r,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:u,noiseScale:l,shadowColor:d,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Ee(t.outlineColor??16777215),i=new Ee(t.contourColor??16777215),s=new Y(t.outlineWidth??.1),a=new Y(t.contourWidth??.1),c=new Y(t.outlineThreshold??.1),u=new Y(t.contourThreshold??.1),l=new Y(t.outlineSmoothing??.1),d=new Y(t.contourFrequency??.1),p=new Tt(t.contourDirection??new Ge.Vector3(0,1,0)),f=new tt(t.positionalLines??!1),m=new tt(t.compensation??!0),h=xe.normalRenderTarget,y=xe.normalRenderTargetDepth,g=xe.pixelRatioNode,x=xe.resolution,b=ur(t),w=new $i(o,i,s,a,c,u,l,d,p,f,m,x,h,y,g,b.alpha),S=new Ne(w.calpha,"f");return new He(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:u,outlineSmoothing:l,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new we(t.gradientType??0),i=new tt(t.smooth??!1),s=new Y(t.near??50),a=new Y(t.far??200),c=new Y(t.isVector??1),u=new Y(t.isWorldSpace??0),l=new Tt(t.origin??new Ge.Vector3),d=new Tt(t.direction??new Ge.Vector3),p;t.colors?p=new Ar(t.colors.length,t.colors):(p=new Ar(2,new Ge.Vector4(0,0,0,1)),p.value[1]=new Ge.Vector4(1,1,1,1));let f;t.steps?f=new Or(t.steps.length,t.steps):(f=new Or(2,1),f.value[0]=0);let m=ur(t),h=new Ui(o,i,s,a,c,u,l,d,p,f,m.alpha,m.isMask),y=new Ne(h.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:u,origin:l,direction:d,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Y(t.scale??1),i=new Tt(t.size??new Ge.Vector3(100,100,100)),s=new Y(t.move??1),a=new Xe(t.fA??new Ge.Vector2(1.7,9.2)),c=new Xe(t.fB??new Ge.Vector2(8.3,2.8)),u=new Xe(t.distortion??new Ge.Vector2(1,1)),l=new qt(t.colorA),d=new qt(t.colorB),p=new qt(t.colorC),f=new qt(t.colorD),m=new we(t.noiseType??0),h=new we(t.voronoiStyle??0),y=new Y(t.highCut??1),g=new Y(t.lowCut??0),x=new Y(t.smoothness??.5),b=new Y(t.seed??.5),w=new we(t.quality??1),S=ur(t),P=new qi(o,i,s,a,c,u,l,d,p,f,S.alpha,m,S.isMask,h,y,g,x,b,w),_=new Ne(P.calpha,"f");return new He(r,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:u,colorA:l,colorB:d,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:x,seed:b,quality:w},P,S.mode,_,S.isMask)}case"normal":{let o=new Tt(t.cnormal??new Ge.Vector3(1,1,1)),i=ur(t),s=new ji(o,i.alpha),a=new Ne(s.calpha,"f");return new He(r,e,n,{cnormal:o,...i},s,i.mode,a,i.isMask)}case"gradient":{let o=new we(t.gradientType??0),i=new tt(t.smooth??!1),s;t.colors?s=new Ar(t.colors.length,t.colors):(s=new Ar(10,new Ge.Vector4(0,0,0,1)),s.value[1]=new Ge.Vector4(1,1,1,1));let a;t.steps?a=new Or(t.steps.length,t.steps):(a=new Or(10,1),a.value[0]=0);let c=new Xe(t.offset??new Ge.Vector2(0,0)),u=new Xe(t.morph??new Ge.Vector2(0,0)),l=new Y(t.angle??0),d=ur(t),p=new Hi(o,i,s,a,c,u,l,d.alpha,d.isMask),f=new Ne(p.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:u,angle:l,...d},p,d.mode,f,d.isMask)}case"pattern":{let o=new we(t.style??0),i=new we(t.projection??0),s=new we(["x","y","z"].indexOf(t.axis)??0),a=new Y(t.blending??0),c=new Xe(t.offset??new Ge.Vector2(0,0)),u=new qt(t.colorA),l=new qt(t.colorB),d=new Xe(t.frequency??new Ge.Vector2(10,10)),p=new Y(t.size??.5),f=new Y(t.variation??0),m=new Y(t.smoothness??.5),h=new Y(t.zigzag??0),y=new Y(t.rotation??0),g=new Xe(t.vertical??new Ge.Vector2(0,1)),x=new Xe(t.horizontal??new Ge.Vector2(0,1)),b=new we(t.sides??6),w=ur(t),S=new Yi(o,i,s,a,c,u,l,d,p,f,m,h,y,g,x,b,w.alpha,w.isMask),P=new Ne(S.calpha,"f");return new He(r,e,n,{style:o,projection:i,axis:s,blending:a,offset:c,colorA:u,colorB:l,frequency:d,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:x,sides:b,...w},S,w.mode,P,w.isMask)}default:{let o=new Ee(1,0,0,1),i=ur(t),s=new hn(o,i.alpha),a=new Ne(s.calpha,"f");return new He(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}}}function vT(n,r,e,t){let o=ug(e,t);return xT(e,n,r,o)}function Ou(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function mg(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t&&t.data.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(i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let s of o.data.colors)if(s[3]<1){i=s[3];break}}else if(i===1&&o.data.type==="noise"){let s=r.color(o.data.colorA).a,a=r.color(o.data.colorB).a,c=r.color(o.data.colorC).a,u=r.color(o.data.colorD).a,l=Math.min(s,Math.min(a,Math.min(c,u)));l<1&&(i=l)}e+=(1-e)*i}}return e<1}var Yt=class extends hg.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},gc=class extends Yt{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()}},xn=class extends Yt{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}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 s=this.flavors[i];return s===void 0&&(s=new gc(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??Ut.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>qr.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=mg(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof or),this.lightLayer===void 0&&(this.lightLayer=new or(0,"",{...Bt.defaultData("light","phong"),visible:!1},new gn,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(s=>s instanceof or);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 s=0;s<this.layers.length;++s){let a=this.layers[s];a instanceof He&&a.color instanceof ko&&(a.uuid===o&&(e.node.bumpMap=a.color),a.uuid===i&&(e.node.roughnessMap=a.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=mg(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let a=qr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,a),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let a=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let a=this.layers.find(c=>c.uuid===s);if(a){let c=t.layers.data(s);if(a.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=qr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,l),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof He?t.color.mask=void 0:t instanceof or&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof He&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof or?i.node.mask=new vt(t.color,t.alpha,vt.MUL):i instanceof He&&(i.isMask.value||(i.color.mask=new vt(t.color,t.alpha,vt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof He),t=this.layers.findIndex(o=>o instanceof or);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof He){if(s.isMask.value)continue;o=new zi(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof or);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof He){if(i.isMask.value)continue;e=new zi(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 da);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new vt(t,e[o].position,vt.ADD),t=new vt(t,new Y(.5).setReadonly(!0),vt.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){this.build(),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,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(_u[t.type]??[]).map(u=>t[u]),i=(Pu[t.type]??[]).map(u=>t[u]?.length??0),s=[...o,...i],a="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${a}"`;s.length?e+=`[${c}, "${s.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new cc;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 He){let t=e.params.texture;if(t instanceof mn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Yt.prototype,{properties:{get:function(){return this.fragment.properties}}});var vn=class extends xn{};var vg=On(yg());var gg=new Map;function xg(n){if(typeof n=="string")return n;let r=gg.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},gg.set(n,r)),r.url}var bn=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:xg(r),format:"wav"},this.sound=new vg.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()}};var ft=require("three"),vc=class{constructor(){this.type="ShapePath";this.color=new ft.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new ft.Path,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,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),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(h,y,g,x){let b=h.x,w=y.x,S=g.x,P=x.x,_=h.y,v=y.y,N=g.y,T=x.y,C=(P-S)*(_-N)-(T-N)*(b-S),O=(w-b)*(_-N)-(v-_)*(b-S),A=(T-N)*(w-b)-(P-S)*(v-_),R=C/A,U=O/A;if(A===0&&C!==0||R<=0||R>=1||U<0||U>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:x,h,y),t.loc===e.ORIGIN){let ee=$===0?g:x;return{x:ee.x,y:ee.y,t:t.t}}else if(t.loc===e.BETWEEN){let ee=+(b+t.t*(w-b)).toPrecision(10),X=+(_+t.t*(v-_)).toPrecision(10);return{x:ee,y:X,t:t.t}}return null}else{for(let X=0;X<2;X++)if(i(X===0?g:x,h,y),t.loc===e.ORIGIN){let q=X===0?g:x;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),ee=+(_+R*(v-_)).toPrecision(10);return{x:$,y:ee,t:R}}}function i(h,y,g){let x=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,P=x*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(P<-Number.EPSILON){t.loc=e.LEFT;return}if(P>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],x=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let P=1;P<y.length;P++){let _=y[P-1],v=y[P],N=o(w,S,_,v);N!==null&&g.find(T=>T.t<=N.t+Number.EPSILON&&T.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new ft.Vector2(N.x,N.y)))}}return x}function a(h,y,g){let x=new ft.Vector2;y.getCenter(x);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&s(h,w.points).forEach(P=>{b.push({identifier:w.identifier,isCW:w.isCW,point:P})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,x,b){(b==null||b==="")&&(b="nonzero");let w=new ft.Vector2;h.boundingBox.getCenter(w);let S=[new ft.Vector2(g,w.y),new ft.Vector2(x,w.y)],P=a(S,h.boundingBox,y);P.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];P.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let N=_[0].point.x,T=[],C=0;for(;C<v.length&&v[C].point.x<N;)T.length>0&&T[T.length-1]===v[C].identifier?T.pop():T.push(v[C].identifier),C++;if(T.push(h.identifier),b==="evenodd"){let O=T.length%2===0,A=T[T.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let U=0;U<T.length;U++){let $=T[U];y[$]&&(O?(R=y[$].isCW,O=!1,A=$):R!==y[$].isCW&&(R=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let P=y[S];P.y>g&&(g=P.y),P.y<x&&(x=P.y),P.x>b&&(b=P.x),P.x<w&&(w=P.x)}d<=b&&(d=b+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:ft.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new ft.Box2(new ft.Vector2(w,x),new ft.Vector2(b,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new ft.Shape;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new ft.Path;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Sg,Au=new Promise(n=>{Sg=n}),bg=!1;var bc;function wg(){if(bg)return;if(bc)return bc;async function n(){let r=await import("./opentype.js");Sg(r),bg=!0}return bc=n(),bc}var ua=class{async load(r,e,t=()=>{}){let{load:o}=await Au;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Au;try{let o=e(r),i=new t,s=a=>o.charToGlyphIndex(a.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function bT(n){return await(await fetch(n)).arrayBuffer()}var ST=new ua;async function Cu(n){let r,e,t=!1;if(n.url?(r=await bT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await ST.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var ts=require("three");function wT(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Sc=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Cu(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=Cu(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,s=[],a=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[a];if(wT(l,p)||c)s.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),a++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)a++,m=e.charAt(a),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),a>e.length&&(g=!0);s.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),a++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(x=>this.getTextWidth(x,e)),a=e.width,c=this.getCharWidth(`
2215
- `,e),u=e.horizontalAlign===1?c:0,l=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],a,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(x=>[]),h=r.map(x=>[]),y;for(let x=0;x<r.length;x++){let b=r[x],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[x],a,e.horizontalAlign,b,c);let P=[];try{P=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}l=this.computeSpaceWidthForLine(r,x,e);for(let _=0;_<S.length;_++){let v=S[_],N=v.index===0?`
2216
- `:v.unicode?String.fromCharCode(v.unicode):void 0,T=P[_],C=0,O=0;_===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(O=-v.leftSideBearing*o),y&&(C=t.getKerningValue(v,y)*o),d+=O+C;let A=0;if(N===`
2217
- `)A=u;else if(N===" ")A=l;else{let R=this.createPath(v,o,d,p,e);R&&(A=R.offsetX-(C+O),f.push(R.path))}if(T.replacements.length===1)h[x].push([d,p]),m[x].push(A);else{let R=T.replacements.map(X=>(t.glyphs.get(X).advanceWidth??0)*o),U=R.reduce((X,q)=>X+=q,0),$=R.map(X=>X/U),ee=d;for(let X=0;X<$.length;X++){let q=A*$[X];h[x].push([ee,p]),m[x].push(q),ee+=q}}d+=A,y=v}p-=i}let g=[];for(let x=0,b=f.length;x<b;x++)g.push(...f[x].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2218
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,a=Math.abs(this.ascender-this.descender)*o,c=r-a,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let a=new vc,c=(r.advanceWidth??1)*e;if(r)for(let u of s.commands){let l=a.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":a.moveTo(u.x,-u.y);break;case"L":a.lineTo(u.x,-u.y);break;case"Q":a.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":a.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return a.subPaths.forEach(u=>{let l=_T(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:a}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let a=t.width,c=this.getTextWidth(i,t);return(a-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function _T(n){if(n.length){let r=n[0];if(r instanceof ts.LineCurve)return r.v1;if(r instanceof ts.CubicBezierCurve||r instanceof ts.QuadraticBezierCurve)return r.v0}}var Nu=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},pa=class extends Nu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=un(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var _g={markNeedsUpdateRendererDirty:()=>{}};var Iu=class extends hc{constructor(e){super();this.shared=e}create(e){return new es(e,this.shared)}},Sn=class{constructor(r,e={}){this.geometryCache=new pa(!0);this.geometryCache2=new pa(!1);this.imageHolderCache=new Iu(this);this.thisContext={scene:_g,shared:this};this.deletedMaterial=new vn(Ut.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new dr(ci.emptyImage,this);this.deletedVideo=new dr(oi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new vn(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t)}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new xn(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new dr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new dr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new Uo(e.r,e.g,e.b,e.a):this.colors[r]=new Uo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new pt(0,0,0,0))}else return"a"in r?new pt(r.r,r.g,r.b,r.a):new pt(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof bn)return e;{let t=new bn({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof bn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Sc(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof bn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Pg=new Sn(Bl.emptyData());var Xt=class extends Pt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Tm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let a=o.shared.material(s);this.material[Number(i)]=a}else if(Nt(e.path,["material"])&&this.material instanceof Yt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(_t.drop(e,1),t.material,o);else if(Nt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(_t.drop(e,2),s,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&Ea(this.material).forEach(e=>{e instanceof Yt&&(e instanceof vn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var nr=require("three");var Tg=new nr.Vector3,Og=new nr.Vector4,Ag=new nr.Vector4,PT=new nr.Vector3,Cg=new nr.Matrix4,lt=class extends Xt{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new nr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new nr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof nr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Sn){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Es.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Es.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Nt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(_t.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=un(l,t,this.data.flatShading)}let s,a,c;i.scaleBaked?[s,a,c]=i.scaleBaked:{width:s,height:a,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&Xs(this.localGeometry.attributes,s/u.sxPrev,a/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=a,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=un(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Ps(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof nt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new nr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,s=o.count;i<s;i++){t.fromBufferAttribute(o,i);let a=1/t.manhattanLength();a!==1/0?t.multiplyScalar(a):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Og.fromBufferAttribute(i.attributes.skinIndex,e),Ag.fromBufferAttribute(i.attributes.skinWeight,e),Tg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){let a=Ag.getComponent(s);if(a!==0){let c=Og.getComponent(s);Cg.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(PT.copy(Tg).applyMatrix4(Cg),a)}}return t.applyMatrix4(this.bindMatrixInverse)}};function TT(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new ir.Vector3(o[s],o[s+1],o[s+2]);r.has(a)?r.get(a)?.normals.push(c):r.set(a,{normals:[c],result:new ir.Vector3})}r.forEach((s,a)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(a)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new ir.Float32BufferAttribute(i,3))}function OT(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new ir.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new ir.Float32BufferAttribute(t,3))}function rs(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Yt)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?OT(n):TT(n)}function os(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[ir.MathUtils.seededRandom(o),ir.MathUtils.seededRandom(o+1e4),ir.MathUtils.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new ir.BufferAttribute(t,3))}var AT;Ni.then(n=>{AT=n});var $r=new go.Box3,fa=new go.Vector3;function Ng(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var wn=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new go.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=nt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,rs(this),os(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=nt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=nt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Pt.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new go.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;$r.setFromBufferAttribute(t),$r.getCenter(o),e.boundingSphere.radius=o.distanceTo($r.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),$r.getSize(fa),this.hasNonUniformScale&&fa.divide(this.scale);let i={width:fa.x,height:fa.y,depth:fa.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;$r.min.set(e[0],e[2],e[4]),$r.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&($r.min.applyMatrix4(this.shearScaleInv),$r.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new go.Sphere);let o=t.boundingSphere.center;$r.getCenter(o),t.boundingSphere.radius=o.distanceTo($r.max)}freeSubdivPointer(){this.subdivPointer&&(nt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var Yr=require("three"),Ig=-1,CT=1,Mg={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Eg={polygon_center:0,edge:1,vertex:2},ma=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,ye=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Ig)*(e-t)/(CT-Ig)+t};function Lg(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var NT=new Yr.Vector3,wc=new Yr.Vector3,IT=new Yr.Vector3,MT=new Yr.Vector3;function ns(n,r){let e=IT.fromArray(n),t=MT.fromArray(r);wc.copy(t).sub(e);let o=wc.length();return wc.normalize().multiplyScalar(o*.5),NT.copy(e).add(wc).toArray()}var pr=new Yr.Triangle,_c=new Yr.Vector3,Pc=new Yr.Vector3,_n=new Yr.Vector3;function Dg(n){let r=[];for(let e=0;e<=n.index.count;e++)if(_c.fromArray(n.index.array,e*3),pr.setFromAttributeAndIndices(n.attributes.position,_c.x,_c.y,_c.z),pr.getNormal(Pc),pr.getMidpoint(_n),!(isNaN(_n.x)||isNaN(_n.y)||isNaN(_n.z))){let{a:t,b:o,c:i}=pr,s=t.toArray(),a=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=ns(s,a),f=ns(a,c),m=ns(c,s),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],b=pr.getMidpoint(_n).toArray();y===u&&!g&&(x=[f,m,m],b=p),y===l&&!g&&(x=[p,m,m],b=f),y===d&&!g&&(x=[p,f,f],b=m),g&&(x=[p,f,m]),r.push({vertices:[s,a,c],faceCenters:x,midpoint:b,norm:pr.getNormal(Pc).toArray()})}return r}function Bg(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){pr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),pr.getNormal(Pc),pr.getMidpoint(_n);let o=pr.a.toArray(),i=pr.b.toArray(),s=pr.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ns(o,i),ns(i,s),ns(s,o)],midpoint:_n.toArray(),norm:Pc.toArray()})}return r}var ET=4,LT=.5,Mu=n=>.5*(1-Math.cos(n*Math.PI)),Eu=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),a=r-o,c=e-i,u=t-s,l,d,p=0,f=.5,m,h,y;for(let g=0;g<ET;g++){let x=o+(i<<4)+(s<<8);l=Mu(a),d=Mu(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Mu(u)*(h-m),p+=m*f,f*=LT,o<<=1,a*=2,i<<=1,c*=2,s<<=1,u*=2,a>=1&&(o++,a--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return p}noiseSeed(r){let e=(()=>{let s,a;return{setSeed(c){a=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return a=(1664525*a+1013904223)%4294967296,a/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Rg=Eu;var ss=require("three");var Gg=new ss.Vector3,Vg=new ss.Matrix4,zg=new ss.Ray;function jg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var is=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Vg.copy(o).invert(),zg.copy(e.ray).applyMatrix4(Vg),zg.intersectBox(this.singleBBox,Gg))){let i=Gg.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var Vt=1e-4,Xr,Ug,Hg,Wg,Fg=new Le.Vector3,kg=new Le.Vector3;Ni.then(n=>{Xr=n,Ug=[Xr.get_face_center,Xr.get_edge_midpoint,Xr.get_vertex_position],Hg=[Xr.get_face_normal,Xr.get_edge_normal,Xr.get_vertex_normal],Wg=[Xr.face_count,Xr.edge_count,Xr.vertex_count]});var DT=new Le.Matrix4,BT=new Le.Matrix4,Ho=new Le.Vector3,Pn=new Le.Vector3,ha=new Le.Vector3,Lu=new Le.Vector3,RT=new Le.Vector3,GT=new Le.Vector3;var xo=new Rg,ls=class extends ui(Le.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof fo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof fo&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let a=new fo(this.object);a.expand(),this.add(a)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new fo(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Le.MathUtils.DEG2RAD,i=t.end*Le.MathUtils.DEG2RAD,s=o-i,a=new Le.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Le.Vector3(0,0,1);break;case"y":c=new Le.Vector3(0,1,0);break;default:case"x":c=new Le.Vector3(1,0,0);break}let u=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";xo.noiseSeed(u.seed);let d=Vl((0,as.default)(u.seed)),p=ma(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?xo.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,ye(y,u.scale[0]))||Vt,m.scale.y=t.scale[1]+p(g,ye(y,u.scale[1]))||Vt,m.scale.z=t.scale[2]+p(g,ye(y,u.scale[2]))||Vt,m.position.setScalar(0);let x=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,ye(y,u.position[0])),m.position.y+=t.position[1]+p(g,ye(y,u.position[1])),m.position.z+=t.position[2]+p(g,ye(y,u.position[2]));let b=p(g,ye(y,u.rotation[0])),w=p(g,ye(y,u.rotation[1])),S=p(g,ye(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=a.x+b,m.rotation.y+=a.y+w,m.rotation.z+=a.z+S):m.rotation.set(a.x+b,a.y+w,a.z+S)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Le.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";xo.noiseSeed(i.seed);let a=Vl((0,as.default)(i.seed)),c=ma(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?xo.noise(d):a(d,d),f=u+1,m=c(f,ye(p,i.rotation[0])),h=c(f,ye(p,i.rotation[1])),y=c(f,ye(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,ye(p,i.scale[0]))||Vt,l.scale.y=1+(t.scale[1]-1)*u+c(f,ye(p,i.scale[1]))||Vt,l.scale.z=1+(t.scale[2]-1)*u+c(f,ye(p,i.scale[2]))||Vt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,ye(p,i.position[0])),l.position.y=t.position[1]*u+c(f,ye(p,i.position[1])),l.position.z=t.position[2]*u+c(f,ye(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,s=ma(i.strength,this.parameters.randomness),a=i.noiseType==="perlin";xo.noiseSeed(i.seed);let c=Ph((0,as.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},l=new Le.Vector3(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=a?xo.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,ye(h,i.scale[0]))||Vt,y.scale.y=1+s(t,ye(h,i.scale[1]))||Vt,y.scale.z=1+s(t,ye(h,i.scale[2]))||Vt;let g=s(t,ye(h,i.rotation[0])),x=s(t,ye(h,i.rotation[1])),b=s(t,ye(h,i.rotation[2]));y.rotation.set(g,x,b),y.position.x=o.size[0]*d-l.x+s(t,ye(h,i.position[0])),y.position.y=o.size[1]*p-l.y+s(t,ye(h,i.position[1])),y.position.z=o.size[2]*f-l.z+s(t,ye(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=a?xo.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,ye(f,i.scale[0]))||Vt,m.scale.y=1+s(t,ye(f,i.scale[1]))||Vt,m.scale.z=1+s(t,ye(f,i.scale[2]))||Vt;let h=s(t,ye(f,i.rotation[0])),y=s(t,ye(f,i.rotation[1])),g=s(t,ye(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,ye(f,i.position[0])),m.position.y=-o.size[1]*l+s(t,ye(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,ye(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Le.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??Vr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";xo.noiseSeed(i.seed);let a=Vl((0,as.default)(i.seed)),c=ma(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof is)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),l=[],d=g=>{let x=g.length,b=g.map(P=>P[0]).reduce((P,_)=>P+_,0),w=g.map(P=>P[1]).reduce((P,_)=>P+_,0),S=g.map(P=>P[2]).reduce((P,_)=>P+_,0);return[b/x,w/x,S/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(b=>b.norm))}):l.push(g)});let f=Lg(l);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new zl(this.objectForSample).build(),h=Mg[t.axis],y=this.children;m.setRandomGenerator((0,as.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?xo.noise(b):a(b,b),S=g+1,P=c(S,ye(w,i.rotation[0])),_=c(S,ye(w,i.rotation[1])),v=c(S,ye(w,i.rotation[2]));t.spreadType==="random"?m.sample(ha,Lu):(f.length&&(ha.fromArray(f[g].pos),Lu.fromArray(f[g].norm)),this.objectForSample instanceof wn&&ha.applyMatrix4(DT.copy(this.objectForSample.matrixWorld).invert())),ha.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(ha),Ho.fromArray(h);let N=t.align==="normal"?Lu:this.object.getWorldDirection(GT),T=Pn.fromArray(t.position);Pn.x+=Pn.x+c(S,ye(w,i.position[0])),Pn.y+=Pn.y+c(S,ye(w,i.position[1])),Pn.z+=Pn.z+c(S,ye(w,i.position[2]));let C=Math.acos(N.dot(Ho)),O=RT.crossVectors(Ho,N).normalize(),A=BT.makeRotationAxis(O,C),R=N.clone().cross(this.object.up).normalize(),U=R.clone().cross(N).normalize(),$=new Le.Matrix4().makeBasis(R,N,U),ee=new Le.Vector3(Ho.y,Ho.z,Ho.x).normalize(),X=ee.clone().cross(Ho).normalize(),q=new Le.Matrix4().makeBasis(ee,Ho,X).invert(),H=new Le.Matrix4().multiplyMatrices($,q);x.rotation.setFromRotationMatrix(H),T.applyMatrix4(A),x.position.add(T),x.rotation.x=x.rotation.x+o.x+P,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(S,ye(w,i.scale[0]))||Vt,x.scale.y=x.scale.y+t.scale[1]+c(S,ye(w,i.scale[1]))||Vt,x.scale.z=x.scale.z+t.scale[2]+c(S,ye(w,i.scale[2]))||Vt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof wn){let t=this.objectForSample,o=Eg[e],i=Wg[o],s=Ug[o],a=Hg[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=s(t.subdivPointerNew,l),p=a(t.subdivPointerNew,l);Fg.fromArray(d).applyMatrix4(t.matrixWorld),kg.fromArray(p),c.push({pos:Fg.toArray(),norm:kg.toArray()})}return c}else return(this.objectForSample.geometry.index?Dg(this.objectForSample.geometry):Bg(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=io(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof Pt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Le.Matrix4,this.hiddenMatrix=new Le.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var yr=require("three");var We=require("three");var Ct=require("three");var qg=require("three"),Kr=n=>{var r;return r=class extends n{},r.geometryHelper=new qg.BoxGeometry(30,30,30),r};var Mt=require("three"),Tc=new Mt.Ray,Du=new Mt.Sphere,$g=new Mt.Matrix4,Zr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Du.copy(i.boundingSphere),Du.applyMatrix4(s),e.ray.intersectsSphere(Du)===!1||($g.copy(s).invert(),Tc.copy(e.ray).applyMatrix4($g),i.boundingBox!==null&&Tc.intersectsBox(i.boundingBox)===!1))return;let a,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),a=y(n,e,Tc,p,c,u,l),a){a.faceIndex=Math.floor(m/3),t.push(a);return}}else{let x=i.attributes.position,b=new Mt.Vector3,w=new Mt.Vector3,S=new Mt.Vector3,P=new Mt.Vector3,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=N*N,C=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),Tc.distanceSqToSegment(b,w,P,S)>T)continue;P.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(P);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,b,w,S,P,_){let v=new Mt.Vector3,N=new Mt.Vector3,T=new Mt.Vector3,C=new Mt.Vector3,O=new Mt.Vector3;if(v.fromBufferAttribute(w,S),N.fromBufferAttribute(w,P),T.fromBufferAttribute(w,_),b.intersectTriangle(v,N,T,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=x.ray.origin.distanceTo(O);return R<x.near||R>x.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Oc=new Ct.Vector3,fr=new Ct.Camera,Bu=class extends Ct.LineSegments{constructor(e){let t=new Ct.BufferGeometry,o=new Ct.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new Ct.Color(15711266),u=new Ct.Color(15711266),l=new Ct.Color(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}t.setAttribute("position",new Ct.Float32BufferAttribute(i,3)),t.setAttribute("color",new Ct.Float32BufferAttribute(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;fr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;Nr("n1",t,e,fr,-i,-s,a),Nr("n2",t,e,fr,i,-s,a),Nr("n3",t,e,fr,-i,s,a),Nr("n4",t,e,fr,i,s,a);let c=a;Nr("f1",t,e,fr,-i,-s,c),Nr("f2",t,e,fr,i,-s,c),Nr("f3",t,e,fr,-i,s,c),Nr("f4",t,e,fr,i,s,c);let u=c,l=.5;Nr("u1",t,e,fr,i*.7*l,s*1.1,u),Nr("u2",t,e,fr,-i*.7*l,s*1.1,u),Nr("u3",t,e,fr,0,s*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Nr(n,r,e,t,o,i,s){Oc.set(o,i,s).unproject(t);let a=r[n];if(a!==void 0){let c=e.getAttribute("position");for(let u=0,l=a.length;u<l;u++)c.setXYZ(a[u],Oc.x,Oc.y,Oc.z)}}var Ac=class extends Kr(Bu){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){Zr(this.object,this.geometry,e,t,!0)}};var ya=require("three");var Cc;(r=>r.is=e=>"objectHelper"in e)(Cc||(Cc={}));var Qr=(n,r)=>class extends mi(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ya.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof ya.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ya.Box3Helper&&(i.visible=!1)}}};var Nc=790,cs=new We.Vector3,Ru=new We.Vector3,Gu=new We.Quaternion,Vu=new We.Vector3,ga=new We.Vector3,zu=new We.Vector3,Wo=class extends Qr(We.Camera,Ac){constructor(e="",t={...on.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Eo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new We.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new We.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new We.PerspectiveCamera(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new We.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(cs),this.targetOffset=cs.distanceTo(e)}getTarget(e=new We.Vector3){return this.getWorldDirection(Ru),this.getWorldPosition(cs),Ru.multiplyScalar(this.targetOffset),e.copy(cs).add(Ru),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(cs),cs.distanceTo(e)}updateUp(){this.getWorldQuaternion(Gu),Vu.set(0,0,1).applyQuaternion(Gu),ga.copy(We.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&ga.negate(),ga.applyQuaternion(Gu),zu.copy(We.Object3D.DEFAULT_UP).projectOnPlane(Vu),this.angleOffsetFromUp=zu.angleTo(ga),this.angleOffsetFromUp*=zu.cross(ga).dot(Vu)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new We.Vector3),i=e.getWorldDirection(new We.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new We.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new We.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-Nc*.5*i,this.right=Nc*.5*i,this.top=Nc*.5*(1/s),this.bottom=-Nc*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,a):this.orthoCamera.setViewOffset(e,t,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Yn(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var qo=require("three");var ds=new qo.Matrix4,zT=new qo.Matrix4;var mr=class extends Xt{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new qo.BufferGeometry;this.onAfterRender=(e,t,o,i,s,a)=>{super.onAfterRender(e,t,o,i,s,a),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof mr&&s.dataPatched.visible===!0&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof Pt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(ds.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=cr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;cr.transformMeshSet(s.booleanMeshSetAddress,ds),s.booleanMatrixInvOld.copy(ds).invert(),s.booleanWasTransformed=!1}else s instanceof mr&&s.needsTransformForDownstream===!0?(cr.transformMeshSet(s.booleanMeshSetAddress,ds),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(cr.transformMeshSet(s.booleanMeshSetAddress,zT.multiplyMatrices(ds,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(ds).invert(),s.booleanWasTransformed=!1);cr.hasOpenEdges(s.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(s.booleanMeshSetAddress),s.geometry.userData.wasFilteredFromBoolean=!1):s.geometry.userData.wasFilteredFromBoolean=!0}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new qo.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return cr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new qo.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=cr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,rs(this),os(this)}dispose(){super.dispose(),this.geometry.dispose()}};var Xg=require("three");var Yg;(r=>{function n(e){return Te.is(e)&&e instanceof Xg.Light}r.is=n})(Yg||(Yg={}));var us=(n,r)=>class extends Qr(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var $o=n=>n instanceof Pt,xa=n=>n!==null&&n instanceof mr;var va=n=>Cc.is(n);var Zg=require("three");var Kg=require("three");var Jr=class extends Kr(Kg.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){Zr(this.object,Jr.geometryHelper,e,t)}update(){}};var ba=class extends Qr(Zg.Group,Jr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var gs=require("three");var ps=require("three"),jT=n=>`
2213
+ `),d&&p.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),l?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u&&p.push(`gl_FragColor.a *= ${u.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
2214
+ `)}return t}};var xc=require("three");var hc=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 Ad=class extends hc{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Od;function vg(n){return typeof n=="string"?n:(Od||(Od=new Ad),Od.load(n))}var yc=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")}},gc=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 is=class extends yc{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let a=this[s];a&&(a.image=this.img,a.needsUpdate=!0)}this.shared.requestRender()};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(s=>{o.onloadend=a=>{i=a.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=vg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new xc.VideoTexture(this.img,void 0,e,e):o=new xc.Texture(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var pr=class extends is{};var We=require("three");function It(n,r){return r.color(n)}function bg(n,r){switch(n.type){case"fresnel":return wT(n,r);case"gradient":return _T(n);case"depth":return PT(n);case"normal":return TT(n);case"noise":return OT(n,r);case"rainbow":return AT(n);case"toon":return CT(n,r);case"outline":return NT(n,r);case"transmission":return IT(n,r);case"color":return ST(n,r);case"pattern":return MT(n,r)}}function bT(n){return{type:n.type}}function Ir(n){let{alpha:r,mode:e,isMask:t}=n;return{...bT(n),alpha:r,mode:e,isMask:t}}function ST(n,r){return{...Ir(n),color:It(n.color,r)}}function wT(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:a}=n;return{...Ir(n),color:It(s,r),bias:e,scale:t,intensity:o,factor:i}}function _T(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:a}=n;return{...Ir(n),gradientType:r,smooth:e,colors:t.map(c=>new We.Vector4(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new We.Vector2(...s),morph:new We.Vector2(...a),angle:i}}function PT(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:c,steps:d,smooth:l}=n;return{...Ir(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new We.Vector3(...s),direction:a?new We.Vector3(...a):new We.Vector3(1,0,0),colors:c.map(u=>u!==void 0?new We.Vector4(u[0],u[1],u[2],u[3]):new We.Vector4(0,0,0,0)),steps:d.slice(0,c.length),smooth:l}}function TT(n){let{cnormal:r}=n;return{...Ir(n),cnormal:new We.Vector3(r[0],r[1],r[2])}}function OT(n,r){return{...Ir(n),scale:n.scale,move:n.move,fA:new We.Vector2(...n.fA),fB:new We.Vector2(...n.fB),size:new We.Vector3(...n.size),distortion:new We.Vector2(...n.distortion),colorA:It(n.colorA,r),colorB:It(n.colorB,r),colorC:It(n.colorC,r),colorD:It(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 AT(n){return{...Ir(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new We.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new We.Vector3(...n.offset)}}function CT(n,r){return{...Ir(n),positioning:n.positioning,colors:n.colors.map(e=>new We.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new We.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:It(n.shadowColor,r),offset:new We.Vector3(...n.offset)}}function NT(n,r){return{...Ir(n),outlineColor:It(n.outlineColor,r),contourColor:It(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new We.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function IT(n,r){return{...Ir(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function MT(n,r){return{...Ir(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new We.Vector2(...n.offset),colorA:It(n.colorA,r),colorB:It(n.colorB,r),frequency:new We.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new We.Vector2(...n.vertical),horizontal:new We.Vector2(...n.horizontal),sides:n.sides}}var $o=class extends ht{};var Sg=require("three");var Cd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Nd={depth:["colors"]};function ET(n,r,e){if(r==="isMask")return!0;let t=Cd[n.type],o=Nd[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Id(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 s=i.image,a=r.image(s),c=t;c.image instanceof pr||c.image.deref(),c.image=a}if("video"in i){let s=i.video,a=r.video(s),c=t;c.image instanceof pr||c.image.deref(),c.image=a}if("wrapping"in i){let s=t;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",a=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(a.repeat=i.repeat),"offset"in i&&(a.offset=i.offset),a.updateMatrix()}return o}function wg(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||s===void 0)continue;if(Md(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a&&!(a instanceof Wo))switch(o=o||ET(e,i,s),a.constructor){case Be:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof $o?a.value=new ht(c.r,c.g,c.b,c.a):a.setRGBA(c);break}case Xt:if(typeof s=="string"){let c=r.getColor(s);c&&(a.value=c);break}else{let c=s;a.value instanceof $o?a.value=new ht(c.r,c.g,c.b,c.a):a.value.setRGBA(c.r,c.g,c.b,c.a);break}case Je:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]);break}case Ct:{let c=s;a.value.setX(c[0]),a.value.setY(c[1]),a.value.setZ(c[2]);break}case Ft:{Id(s,r,e);break}case Nr:{a.value=s.map(c=>new Sg.Vector4(...c));break}default:{a.value=s;break}}}return o}var Yr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Md(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return sr.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new vn(i,t.texture.wrapping),a=new pc(i),c=new fc(t.texture.repeat,t.texture.offset),d=new J(t.crop?1:0),l=new _e(t.projection??0),u=new _e(["x","y","z"].indexOf(t.axis)??0),p=new _e(t.side??0),f=new Je(t.size?new je.Vector2(t.size[0],t.size[1]):new je.Vector2(100,100)),m=new J(t.blending??0),h=new J(t.alpha??1),y=new _e(t.mode??0),g=new nt(t.isMask??!1),x=new qo(s,a,d,l,u,p,f,m,c,h,y,g),S=new Le(x.calpha,"f");return new Ye(r,e,t,{texture:s,textureSize:a,crop:d,projection:l,axis:u,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,S,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new vn(i,t.texture.wrapping),a=new J(t.alpha??1),c=new _e(t.mode??0),d=new nt(t.isMask??!1),l=new Ki(s,a,c,d),u=new Le(l.calpha,"f");return new Ye(r,e,t,{texture:s,alpha:a,mode:c,isMask:d},l,c,u,d)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Ct(new je.Vector3(...t.offset)),s=new J(t.scale??10),a=new J(t.intensity??8),c=new J(t.movement??1),d=new _e(t.noiseType??0),l=new _e(t.voronoiStyle??0),u=new J(t.smoothness??.5),p=new J(t.seed??0),f=new J(t.highCut??1),m=new J(t.lowCut??0),h=new _e(t.quality??1),y=new os(a,c,i,l,u,p,f,m,h,s,d);return new ha(r,e,t,{offset:i,scale:s,intensity:a,movement:c,noiseType:d,voronoiStyle:l,smoothness:u,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return BT(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):wg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Id(o.props,t.shared,this):!0;return!1}dispose(){if(LT(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof pr||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}},Ye=class extends Yr{constructor(e,t,o,i,s,a,c,d){super(e,t,o,i);this.params=i;this.color=s;this.mode=a;this.alpha=c;this.isMask=d}},ha=class extends Yr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},sr=class extends Yr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,a=new J(o.alpha),c=new _e(o.mode),d=new J(o.bumpMapIntensity),l=new J(o.alphaOverride),u;if(!o.visible)s=new wn,u={};else if(o.category==="lambert"){s=new ca;let p=new Be(i.color(o.emissive)??0),f=new nt(o.occlusion??!0);u={emissive:p,occlusion:f},s.emissive=p,s.occlusion=f}else if(o.category==="toon"){s=new ma;let p=new J(o.shininess??30),f=new Be(i.color(o.specular)??1118481);u={shininess:p,specular:f},s.shininess=p,s.specular=f}else if(o.category==="physical"){s=new pa;let p=new J(o.roughness??.3),f=new J(o.metalness??0),m=new J(o.reflectivity??.5),h=new nt(o.occlusion??!0);u={roughness:p,metalness:f,reflectivity:m,occlusion:h},s.roughness=p,s.metalness=f,s.reflectivity=m,s.occlusion=h}else{s=new da;let p=new J(o.shininess??30),f=new Be(o.specular!==void 0?i.color(o.specular)??1118481:1118481),m=new nt(o.occlusion??!0);u={shininess:p,specular:f,occlusion:m},s.shininess=p,s.specular=f,s.occlusion=m}return s.alpha=new J(1),s.shadingAlpha=a,s.shadingBlend=c,s.bumpMapIntensity=d,s.alphaOverride=l,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,u.bumpMapIntensity=s.bumpMapIntensity,u.alphaOverride=s.alphaOverride,new sr(e,t,o,s,u)}get category(){return this.node.category}};function LT(n){let r=n instanceof Yr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function fr(n){return{alpha:new J(n.alpha??1),mode:new _e(n.mode??0),isMask:new nt(n.isMask??!1)}}function DT(n,r,e,t){switch(n.type){case"color":{let o=new Be(t.color??pt),i=fr(t),s=new bn(o,i.alpha),a=new Le(s.calpha,"f");return new Ye(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}case"fresnel":{let o=new Be(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),a=new J(t.intensity??2),c=new J(t.factor??1),d=fr(t),l=new sa(o,i,s,a,c,d.alpha,d.mode,d.isMask),u=new Le(l.calpha,"f");return new Ye(r,e,n,{color:o,bias:i,scale:s,intensity:a,factor:c,...d},l,d.mode,u,d.isMask)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new Ct(t.wavelengths??new je.Vector3(0,0,0)),a=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),d=new Ct(t.offset??new je.Vector3(0,0,0)),l=fr(t),u=new es(o,i,s,a,c,d,l.alpha,l.isMask),p=new Le(u.calpha,"f");return new Ye(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:c,offset:d,...l},u,l.mode,p,l.isMask)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),a=Se.transmissionSize,c=Se.transmissionRenderTarget,d=Se.transmissionRenderTargetDepth,l=window.innerWidth,u=window.innerHeight,p=l>=u?new Je(u/l,1):new Je(1,l/u),f=fr(t),m=new rs(o,i,s,a,c,d,p,f.alpha),h=new Le(m.calpha,"f");return new Ye(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new _e(t.positioning??0),i;t.colors?i=new Nr(t.colors.length,t.colors):(i=new Nr(10,new je.Vector4(0,0,0,1)),i.value[1]=new je.Vector4(1,1,1,1));let s;t.steps?s=new Cr(t.steps.length,t.steps):(s=new Cr(10,1),s.value[0]=0);let a=new Ct(t.source??new je.Vector3(0,0,0)),c=new nt(t.isWorldSpace??!0),d=new J(t.noiseStrength??0),l=new J(t.noiseScale??1),u=new Xt(t.shadowColor),p=new Ct(t.offset??new je.Vector3(0,0,0)),f=fr(t),m=new ts(o,i,s,a,c,d,l,u,p,f.alpha),h=new Le(m.calpha,"f");return new Ye(r,e,n,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:c,noiseStrength:d,noiseScale:l,shadowColor:u,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Be(t.outlineColor??16777215),i=new Be(t.contourColor??16777215),s=new J(t.outlineWidth??.1),a=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),d=new J(t.contourThreshold??.1),l=new J(t.outlineSmoothing??.1),u=new J(t.contourFrequency??.1),p=new Ct(t.contourDirection??new je.Vector3(0,1,0)),f=new nt(t.positionalLines??!1),m=new nt(t.compensation??!0),h=Se.normalRenderTarget,y=Se.normalRenderTargetDepth,g=Se.pixelRatioNode,x=Se.resolution,S=fr(t),w=new Qi(o,i,s,a,c,d,l,u,p,f,m,x,h,y,g,S.alpha),b=new Le(w.calpha,"f");return new Ye(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:d,outlineSmoothing:l,contourFrequency:u,contourDirection:p,positionalLines:f,compensation:m,...S},w,S.mode,b,S.isMask)}case"depth":{let o=new _e(t.gradientType??0),i=new nt(t.smooth??!1),s=new J(t.near??50),a=new J(t.far??200),c=new J(t.isVector??1),d=new J(t.isWorldSpace??0),l=new Ct(t.origin??new je.Vector3),u=new Ct(t.direction??new je.Vector3),p;t.colors?p=new Nr(t.colors.length,t.colors):(p=new Nr(2,new je.Vector4(0,0,0,1)),p.value[1]=new je.Vector4(1,1,1,1));let f;t.steps?f=new Cr(t.steps.length,t.steps):(f=new Cr(2,1),f.value[0]=0);let m=fr(t),h=new Yi(o,i,s,a,c,d,l,u,p,f,m.alpha,m.isMask),y=new Le(h.calpha,"f");return new Ye(r,e,n,{gradientType:o,smooth:i,near:s,far:a,isVector:c,isWorldSpace:d,origin:l,direction:u,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new J(t.scale??1),i=new Ct(t.size??new je.Vector3(100,100,100)),s=new J(t.move??1),a=new Je(t.fA??new je.Vector2(1.7,9.2)),c=new Je(t.fB??new je.Vector2(8.3,2.8)),d=new Je(t.distortion??new je.Vector2(1,1)),l=new Xt(t.colorA),u=new Xt(t.colorB),p=new Xt(t.colorC),f=new Xt(t.colorD),m=new _e(t.noiseType??0),h=new _e(t.voronoiStyle??0),y=new J(t.highCut??1),g=new J(t.lowCut??0),x=new J(t.smoothness??.5),S=new J(t.seed??.5),w=new _e(t.quality??1),b=fr(t),P=new Zi(o,i,s,a,c,d,l,u,p,f,b.alpha,m,b.isMask,h,y,g,x,S,w),_=new Le(P.calpha,"f");return new Ye(r,e,n,{scale:o,size:i,move:s,fA:a,fB:c,distortion:d,colorA:l,colorB:u,colorC:p,colorD:f,noiseType:m,...b,voronoiStyle:h,highCut:y,lowCut:g,smoothness:x,seed:S,quality:w},P,b.mode,_,b.isMask)}case"normal":{let o=new Ct(t.cnormal??new je.Vector3(1,1,1)),i=fr(t),s=new Wi(o,i.alpha),a=new Le(s.calpha,"f");return new Ye(r,e,n,{cnormal:o,...i},s,i.mode,a,i.isMask)}case"gradient":{let o=new _e(t.gradientType??0),i=new nt(t.smooth??!1),s;t.colors?s=new Nr(t.colors.length,t.colors):(s=new Nr(10,new je.Vector4(0,0,0,1)),s.value[1]=new je.Vector4(1,1,1,1));let a;t.steps?a=new Cr(t.steps.length,t.steps):(a=new Cr(10,1),a.value[0]=0);let c=new Je(t.offset??new je.Vector2(0,0)),d=new Je(t.morph??new je.Vector2(0,0)),l=new J(t.angle??0),u=fr(t),p=new Xi(o,i,s,a,c,d,l,u.alpha,u.isMask),f=new Le(p.calpha,"f");return new Ye(r,e,n,{gradientType:o,smooth:i,colors:s,steps:a,offset:c,morph:d,angle:l,...u},p,u.mode,f,u.isMask)}case"pattern":{let o=new _e(t.style??0),i=new _e(t.projection??0),s=new _e(["x","y","z"].indexOf(t.axis)??0),a=new J(t.blending??0),c=new Je(t.offset??new je.Vector2(0,0)),d=new Xt(t.colorA),l=new Xt(t.colorB),u=new Je(t.frequency??new je.Vector2(10,10)),p=new J(t.size??.5),f=new J(t.variation??0),m=new J(t.smoothness??.5),h=new J(t.zigzag??0),y=new J(t.rotation??0),g=new Je(t.vertical??new je.Vector2(0,1)),x=new Je(t.horizontal??new je.Vector2(0,1)),S=new _e(t.sides??6),w=fr(t),b=new Ji(o,i,s,a,c,d,l,u,p,f,m,h,y,g,x,S,w.alpha,w.isMask),P=new Le(b.calpha,"f");return new Ye(r,e,n,{style:o,projection:i,axis:s,blending:a,offset:c,colorA:d,colorB:l,frequency:u,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:x,sides:S,...w},b,w.mode,P,w.isMask)}default:{let o=new Be(1,0,0,1),i=fr(t),s=new bn(o,i.alpha),a=new Le(s.calpha,"f");return new Ye(r,e,n,{color:o,...i},s,i.mode,a,i.isMask)}}}function BT(n,r,e,t){let o=bg(e,t);return DT(e,n,r,o)}function Md(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function _g(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t&&t.data.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(i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let s of o.data.colors)if(s[3]<1){i=s[3];break}}else if(i===1&&o.data.type==="noise"){let s=r.color(o.data.colorA).a,a=r.color(o.data.colorB).a,c=r.color(o.data.colorC).a,d=r.color(o.data.colorD).a,l=Math.min(s,Math.min(a,Math.min(c,d)));l<1&&(i=l)}e+=(1-e)*i}}return e<1}var Zt=class extends Pg.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},vc=class extends Zt{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()}},_n=class extends Zt{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}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 s=this.flavors[i];return s===void 0&&(s=new vc(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??qt.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>Yr.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=_g(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof sr),this.lightLayer===void 0&&(this.lightLayer=new sr(0,"",{...zt.defaultData("light","phong"),visible:!1},new wn,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(s=>s instanceof sr);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 s=0;s<this.layers.length;++s){let a=this.layers[s];a instanceof Ye&&a.color instanceof qo&&(a.uuid===o&&(e.node.bumpMap=a.color),a.uuid===i&&(e.node.roughnessMap=a.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=_g(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let a=Yr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,a),o.scene.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene.markNeedsUpdateRendererDirty();else if(e.type===6){let a=this.layers.findIndex(d=>d.uuid===e.id),c=this.layers[a];this.layers.splice(a,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let a=this.layers.find(c=>c.uuid===s);if(a){let c=t.layers.data(s);if(a.updateByOp({...e,path:e.path.slice(2)},c,o)){let l=Yr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(u=>u.uuid===s),1,l),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof Ye?t.color.mask=void 0:t instanceof sr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof Ye&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof sr?i.node.mask=new wt(t.color,t.alpha,wt.MUL):i instanceof Ye&&(i.isMask.value||(i.color.mask=new wt(t.color,t.alpha,wt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ye),t=this.layers.findIndex(o=>o instanceof sr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof Ye){if(s.isMask.value)continue;o=new Hi(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Le("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof sr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ye){if(i.isMask.value)continue;e=new Hi(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 ha);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new wt(t,e[o].position,wt.ADD),t=new wt(t,new J(.5).setReadonly(!0),wt.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){this.build(),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,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type==="displace"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(Cd[t.type]??[]).map(d=>t[d]),i=(Nd[t.type]??[]).map(d=>t[d]?.length??0),s=[...o,...i],a="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${a}"`;s.length?e+=`[${c}, "${s.join('","')}"],`:e+=c}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new dc;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 Ye){let t=e.params.texture;if(t instanceof vn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}}});var Pn=class extends _n{};var Cg=en(Tg());var Og=new Map;function Ag(n){if(typeof n=="string")return n;let r=Og.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Og.set(n,r)),r.url}var Tn=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:Ag(r),format:"wav"},this.sound=new Cg.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()}};var yt=require("three"),Sc=class{constructor(){this.type="ShapePath";this.color=new yt.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new yt.Path,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,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),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(h,y,g,x){let S=h.x,w=y.x,b=g.x,P=x.x,_=h.y,v=y.y,N=g.y,O=x.y,A=(P-b)*(_-N)-(O-N)*(S-b),T=(w-S)*(_-N)-(v-_)*(S-b),C=(O-N)*(w-S)-(P-b)*(v-_),E=A/C,L=T/C;if(C===0&&A!==0||E<=0||E>=1||L<0||L>1)return null;if(A===0&&C===0){for(let X=0;X<2;X++)if(i(X===0?g:x,h,y),t.loc===e.ORIGIN){let B=X===0?g:x;return{x:B.x,y:B.y,t:t.t}}else if(t.loc===e.BETWEEN){let B=+(S+t.t*(w-S)).toPrecision(10),Q=+(_+t.t*(v-_)).toPrecision(10);return{x:B,y:Q,t:t.t}}return null}else{for(let Q=0;Q<2;Q++)if(i(Q===0?g:x,h,y),t.loc===e.ORIGIN){let z=Q===0?g:x;return{x:z.x,y:z.y,t:t.t}}let X=+(S+E*(w-S)).toPrecision(10),B=+(_+E*(v-_)).toPrecision(10);return{x:X,y:B,t:E}}}function i(h,y,g){let x=g.x-y.x,S=g.y-y.y,w=h.x-y.x,b=h.y-y.y,P=x*b-w*S;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(P<-Number.EPSILON){t.loc=e.LEFT;return}if(P>Number.EPSILON){t.loc=e.RIGHT;return}if(x*w<0||S*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=b/S,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],x=[];for(let S=1;S<h.length;S++){let w=h[S-1],b=h[S];for(let P=1;P<y.length;P++){let _=y[P-1],v=y[P],N=o(w,b,_,v);N!==null&&g.find(O=>O.t<=N.t+Number.EPSILON&&O.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),x.push(new yt.Vector2(N.x,N.y)))}}return x}function a(h,y,g){let x=new yt.Vector2;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&s(h,w.points).forEach(P=>{S.push({identifier:w.identifier,isCW:w.isCW,point:P})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function c(h,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new yt.Vector2;h.boundingBox.getCenter(w);let b=[new yt.Vector2(g,w.y),new yt.Vector2(x,w.y)],P=a(b,h.boundingBox,y);P.sort((T,C)=>T.point.x-C.point.x);let _=[],v=[];P.forEach(T=>{T.identifier===h.identifier?_.push(T):v.push(T)});let N=_[0].point.x,O=[],A=0;for(;A<v.length&&v[A].point.x<N;)O.length>0&&O[O.length-1]===v[A].identifier?O.pop():O.push(v[A].identifier),A++;if(O.push(h.identifier),S==="evenodd"){let T=O.length%2===0,C=O[O.length-2];return{identifier:h.identifier,isHole:T,for:C}}else if(S==="nonzero"){let T=!0,C=null,E=null;for(let L=0;L<O.length;L++){let X=O[L];y[X]&&(T?(E=y[X].isCW,T=!1,C=X):E!==y[X].isCW&&(E=y[X].isCW,T=!0))}return{identifier:h.identifier,isHole:T,for:C}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let d=0,l=999999999,u=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let P=y[b];P.y>g&&(g=P.y),P.y<x&&(x=P.y),P.x>S&&(S=P.x),P.x<w&&(w=P.x)}u<=S&&(u=S+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:yt.ShapeUtils.isClockWise(y),identifier:d++,boundingBox:new yt.Box2(new yt.Vector2(w,x),new yt.Vector2(S,g))})});let f=p.map(h=>c(h,p,l,u,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new yt.Shape;g.curves=h.curves,f.filter(S=>S?.isHole&&S.for===h.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new yt.Path;b.curves=w.curves,g.holes.push(b)}}),m.push(g)}}),m}};var Ig,Ed=new Promise(n=>{Ig=n}),Ng=!1;var wc;function Mg(){if(Ng)return;if(wc)return wc;async function n(){let r=await import("./opentype.js");Ig(r),Ng=!0}return wc=n(),wc}var ya=class{async load(r,e,t=()=>{}){let{load:o}=await Ed;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Ed;try{let o=e(r),i=new t,s=a=>o.charToGlyphIndex(a.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function RT(n){return await(await fetch(n)).arrayBuffer()}var GT=new ya;async function Ld(n){let r,e,t=!1;if(n.url?(r=await RT(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await GT.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var ss=require("three");function VT(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var _c=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Ld(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=Ld(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,s=[],a=0,c=t.length===i.length;for(let d=0;d<t.length;d++){let l=t[d].index,u=String.fromCharCode(t[d].unicode),p=i[a];if(VT(l,p)||c)s.push({char:u,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),a++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)a++,m=e.charAt(a),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),a>e.length&&(g=!0);s.push({char:u,index:l,replacements:h,replacementChars:Array.from(f)}),a++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(x=>this.getTextWidth(x,e)),a=e.width,c=this.getCharWidth(`
2215
+ `,e),d=e.horizontalAlign===1?c:0,l=this.computeSpaceWidthForLine(r,0,e),u=this.getLineInitialOffsetX(s[0],a,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(x=>[]),h=r.map(x=>[]),y;for(let x=0;x<r.length;x++){let S=r[x],w={features:{liga:!0}},b=[];try{b=t.stringToGlyphs(S,w)}catch(_){console.warn(_)}u=this.getLineInitialOffsetX(s[x],a,e.horizontalAlign,S,c);let P=[];try{P=this.reverseLigaturesTable(t,S,b)}catch(_){console.warn(_)}l=this.computeSpaceWidthForLine(r,x,e);for(let _=0;_<b.length;_++){let v=b[_],N=v.index===0?`
2216
+ `:v.unicode?String.fromCharCode(v.unicode):void 0,O=P[_],A=0,T=0;_===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(T=-v.leftSideBearing*o),y&&(A=t.getKerningValue(v,y)*o),u+=T+A;let C=0;if(N===`
2217
+ `)C=d;else if(N===" ")C=l;else{let E=this.createPath(v,o,u,p,e);E&&(C=E.offsetX-(A+T),f.push(E.path))}if(O.replacements.length===1)h[x].push([u,p]),m[x].push(C);else{let E=O.replacements.map(Q=>(t.glyphs.get(Q).advanceWidth??0)*o),L=E.reduce((Q,z)=>Q+=z,0),X=E.map(Q=>Q/L),B=u;for(let Q=0;Q<X.length;Q++){let z=C*X[Q];h[x].push([B,p]),m[x].push(z),B+=z}}u+=C,y=v}p-=i}let g=[];for(let x=0,S=f.length;x<S;x++)g.push(...f[x].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
2218
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,a=Math.abs(this.ascender-this.descender)*o,c=r-a,d=-this.ascender*o-c/2;return i===3?-(t-s-d):i===2?-(t*.5-s*.5-d):d}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let a=new Sc,c=(r.advanceWidth??1)*e;if(r)for(let d of s.commands){let l=a.currentPath?.currentPoint;if(!(l&&d.type!=="Z"&&l.x===d.x&&-l.y===d.y))switch(d.type){case"M":a.moveTo(d.x,-d.y);break;case"L":a.lineTo(d.x,-d.y);break;case"Q":a.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":a.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return a.subPaths.forEach(d=>{let l=zT(d.curves);l!==void 0&&d.currentPoint.distanceTo(l)>0&&d.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:a}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let a=t.width,c=this.getTextWidth(i,t);return(a-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function zT(n){if(n.length){let r=n[0];if(r instanceof ss.LineCurve)return r.v1;if(r instanceof ss.CubicBezierCurve||r instanceof ss.QuadraticBezierCurve)return r.v0}}var Dd=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},ga=class extends Dd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=yn(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Eg={markNeedsUpdateRendererDirty:()=>{}};var Bd=class extends gc{constructor(e){super();this.shared=e}create(e){return new is(e,this.shared)}},On=class{constructor(r,e={}){this.geometryCache=new ga(!0);this.geometryCache2=new ga(!1);this.imageHolderCache=new Bd(this);this.thisContext={scene:Eg,shared:this};this.deletedMaterial=new Pn(qt.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new pr(hi.emptyImage,this);this.deletedVideo=new pr(ci.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Pn(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t)}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new _n(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new pr(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new pr(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new $o(e.r,e.g,e.b,e.a):this.colors[r]=new $o(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ht(0,0,0,0))}else return"a"in r?new ht(r.r,r.g,r.b,r.a):new ht(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof Tn)return e;{let t=new Tn({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Tn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new _c(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Tn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Lg=new On(Rl.emptyData());var Qt=class extends At{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Im(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let a=o.shared.material(s);this.material[Number(i)]=a}else if(Lt(e.path,["material"])&&this.material instanceof Zt)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(Ot.drop(e,1),t.material,o);else if(Lt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(Ot.drop(e,2),s,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&La(this.material).forEach(e=>{e instanceof Zt&&(e instanceof Pn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var ar=require("three");var Dg=new ar.Vector3,Bg=new ar.Vector4,Rg=new ar.Vector4,jT=new ar.Vector3,Gg=new ar.Matrix4,dt=class extends Qt{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new ar.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new ar.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof ar.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof On){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Gs.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Gs.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Lt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(Ot.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let l={...this.data.geometry,...i};this.localGeometry=yn(l,t,this.data.flatShading)}let s,a,c;i.scaleBaked?[s,a,c]=i.scaleBaked:{width:s,height:a,depth:c}=i;let d=this.localGeometry.userData;d.sxPrev!==void 0&&ea(this.localGeometry.attributes,s/d.sxPrev,a/d.syPrev,c/d.szPrev),d.sxPrev=s,d.syPrev=a,d.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=yn(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Ns(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof lt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new ar.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,s=o.count;i<s;i++){t.fromBufferAttribute(o,i);let a=1/t.manhattanLength();a!==1/0?t.multiplyScalar(a):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Bg.fromBufferAttribute(i.attributes.skinIndex,e),Rg.fromBufferAttribute(i.attributes.skinWeight,e),Dg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){let a=Rg.getComponent(s);if(a!==0){let c=Bg.getComponent(s);Gg.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(jT.copy(Dg).applyMatrix4(Gg),a)}}return t.applyMatrix4(this.bindMatrixInverse)}};function FT(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new lr.Vector3(o[s],o[s+1],o[s+2]);r.has(a)?r.get(a)?.normals.push(c):r.set(a,{normals:[c],result:new lr.Vector3})}r.forEach((s,a)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let a=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(a)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new lr.Float32BufferAttribute(i,3))}function kT(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new lr.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new lr.Float32BufferAttribute(t,3))}function as(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Zt)||n.material.getLayersOfType("outline").length===0)return;n instanceof dt&&n.is2DAndNoDepth?kT(n):FT(n)}function ls(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[lr.MathUtils.seededRandom(o),lr.MathUtils.seededRandom(o+1e4),lr.MathUtils.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new lr.BufferAttribute(t,3))}var UT;Di.then(n=>{UT=n});var Xr=new vo.Box3,xa=new vo.Vector3;function Vg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var An=class extends dt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new vo.Matrix4;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=lt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,as(this),ls(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){lt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&lt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=lt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=lt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,At.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new vo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Xr.setFromBufferAttribute(t),Xr.getCenter(o),e.boundingSphere.radius=o.distanceTo(Xr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Xr.getSize(xa),this.hasNonUniformScale&&xa.divide(this.scale);let i={width:xa.x,height:xa.y,depth:xa.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Xr.min.set(e[0],e[2],e[4]),Xr.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Xr.min.applyMatrix4(this.shearScaleInv),Xr.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new vo.Sphere);let o=t.boundingSphere.center;Xr.getCenter(o),t.boundingSphere.radius=o.distanceTo(Xr.max)}freeSubdivPointer(){this.subdivPointer&&(lt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};var Kr=require("three"),zg=-1,HT=1,jg={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Fg={polygon_center:0,edge:1,vertex:2},va=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,xe=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-zg)*(e-t)/(HT-zg)+t};function kg(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var WT=new Kr.Vector3,Pc=new Kr.Vector3,qT=new Kr.Vector3,$T=new Kr.Vector3;function cs(n,r){let e=qT.fromArray(n),t=$T.fromArray(r);Pc.copy(t).sub(e);let o=Pc.length();return Pc.normalize().multiplyScalar(o*.5),WT.copy(e).add(Pc).toArray()}var mr=new Kr.Triangle,Tc=new Kr.Vector3,Oc=new Kr.Vector3,Cn=new Kr.Vector3;function Ug(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Tc.fromArray(n.index.array,e*3),mr.setFromAttributeAndIndices(n.attributes.position,Tc.x,Tc.y,Tc.z),mr.getNormal(Oc),mr.getMidpoint(Cn),!(isNaN(Cn.x)||isNaN(Cn.y)||isNaN(Cn.z))){let{a:t,b:o,c:i}=mr,s=t.toArray(),a=o.toArray(),c=i.toArray(),d=t.distanceTo(o),l=o.distanceTo(i),u=i.distanceTo(t),p=cs(s,a),f=cs(a,c),m=cs(c,s),h=[d,l,u],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=mr.getMidpoint(Cn).toArray();y===d&&!g&&(x=[f,m,m],S=p),y===l&&!g&&(x=[p,m,m],S=f),y===u&&!g&&(x=[p,f,f],S=m),g&&(x=[p,f,m]),r.push({vertices:[s,a,c],faceCenters:x,midpoint:S,norm:mr.getNormal(Oc).toArray()})}return r}function Hg(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){mr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),mr.getNormal(Oc),mr.getMidpoint(Cn);let o=mr.a.toArray(),i=mr.b.toArray(),s=mr.c.toArray();r.push({vertices:[o,i,s],faceCenters:[cs(o,i),cs(i,s),cs(s,o)],midpoint:Cn.toArray(),norm:Oc.toArray()})}return r}var YT=4,XT=.5,Rd=n=>.5*(1-Math.cos(n*Math.PI)),Gd=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),a=r-o,c=e-i,d=t-s,l,u,p=0,f=.5,m,h,y;for(let g=0;g<YT;g++){let x=o+(i<<4)+(s<<8);l=Rd(a),u=Rd(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=u*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=u*(y-h),m+=Rd(d)*(h-m),p+=m*f,f*=XT,o<<=1,a*=2,i<<=1,c*=2,s<<=1,d*=2,a>=1&&(o++,a--),c>=1&&(i++,c--),d>=1&&(s++,d--)}return p}noiseSeed(r){let e=(()=>{let s,a;return{setSeed(c){a=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return a=(1664525*a+1013904223)%4294967296,a/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Wg=Gd;var ds=require("three");var qg=new ds.Vector3,$g=new ds.Matrix4,Yg=new ds.Ray;function Xg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var us=class extends dt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&($g.copy(o).invert(),Yg.copy(e.ray).applyMatrix4($g),Yg.intersectBox(this.singleBBox,qg))){let i=qg.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var kt=1e-4,Zr,Qg,Jg,e0,Kg=new Re.Vector3,Zg=new Re.Vector3;Di.then(n=>{Zr=n,Qg=[Zr.get_face_center,Zr.get_edge_midpoint,Zr.get_vertex_position],Jg=[Zr.get_face_normal,Zr.get_edge_normal,Zr.get_vertex_normal],e0=[Zr.face_count,Zr.edge_count,Zr.vertex_count]});var KT=new Re.Matrix4,ZT=new Re.Matrix4,Yo=new Re.Vector3,Nn=new Re.Vector3,ba=new Re.Vector3,Vd=new Re.Vector3,QT=new Re.Vector3,JT=new Re.Vector3;var bo=new Wg,fs=class extends gi(Re.Object3D){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof ho&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof ho&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters);break;case"toObject":this._updateToObject(this.parameters)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let a=new ho(this.object);a.expand(),this.add(a)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new ho(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*Re.MathUtils.DEG2RAD,i=t.end*Re.MathUtils.DEG2RAD,s=o-i,a=new Re.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Re.Vector3(0,0,1);break;case"y":c=new Re.Vector3(0,1,0);break;default:case"x":c=new Re.Vector3(1,0,0);break}let d=e.randomnessObject??jr.defaultData([1,1,1]).randomnessObject,l=d.noiseType==="perlin";bo.noiseSeed(d.seed);let u=zl((0,ps.default)(d.seed)),p=va(d.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(d.freqScale/10)+d.movement,y=l?bo.noise(h):u(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,xe(y,d.scale[0]))||kt,m.scale.y=t.scale[1]+p(g,xe(y,d.scale[1]))||kt,m.scale.z=t.scale[2]+p(g,xe(y,d.scale[2]))||kt,m.position.setScalar(0);let x=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,xe(y,d.position[0])),m.position.y+=t.position[1]+p(g,xe(y,d.position[1])),m.position.z+=t.position[2]+p(g,xe(y,d.position[2]));let S=p(g,xe(y,d.rotation[0])),w=p(g,xe(y,d.rotation[1])),b=p(g,xe(y,d.rotation[2]));t.alignment===!0?(m.rotation.x+=a.x+S,m.rotation.y+=a.y+w,m.rotation.z+=a.z+b):m.rotation.set(a.x+S,a.y+w,a.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Re.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??jr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";bo.noiseSeed(i.seed);let a=zl((0,ps.default)(i.seed)),c=va(i.strength,this.parameters.randomness);for(let[d,l]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=s?bo.noise(u):a(u,u),f=d+1,m=c(f,xe(p,i.rotation[0])),h=c(f,xe(p,i.rotation[1])),y=c(f,xe(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*d+c(f,xe(p,i.scale[0]))||kt,l.scale.y=1+(t.scale[1]-1)*d+c(f,xe(p,i.scale[1]))||kt,l.scale.z=1+(t.scale[2]-1)*d+c(f,xe(p,i.scale[2]))||kt,l.rotation.x=o.x*d+m,l.rotation.y=o.y*d+h,l.rotation.z=o.z*d+y,l.position.x=t.position[0]*d+c(f,xe(p,i.position[0])),l.position.y=t.position[1]*d+c(f,xe(p,i.position[1])),l.position.z=t.position[2]*d+c(f,xe(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??jr.defaultData([1,1,1]).randomnessObject,s=va(i.strength,this.parameters.randomness),a=i.noiseType==="perlin";bo.noiseSeed(i.seed);let c=Nh((0,ps.default)(i.seed));if(o.useCenter===!0){let d={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},l=new Re.Vector3(o.size[0]*(o.count[0]-d.x)*.5,o.size[1]*(o.count[1]-d.y)*.5,o.size[2]*(o.count[2]-d.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=a?bo.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,xe(h,i.scale[0]))||kt,y.scale.y=1+s(t,xe(h,i.scale[1]))||kt,y.scale.z=1+s(t,xe(h,i.scale[2]))||kt;let g=s(t,xe(h,i.rotation[0])),x=s(t,xe(h,i.rotation[1])),S=s(t,xe(h,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*u-l.x+s(t,xe(h,i.position[0])),y.position.y=o.size[1]*p-l.y+s(t,xe(h,i.position[1])),y.position.z=o.size[2]*f-l.z+s(t,xe(h,i.position[2]))}}else for(let d=0;d<o.count[0];d++)for(let l=0;l<o.count[1];l++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=a?bo.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,xe(f,i.scale[0]))||kt,m.scale.y=1+s(t,xe(f,i.scale[1]))||kt,m.scale.z=1+s(t,xe(f,i.scale[2]))||kt;let h=s(t,xe(f,i.rotation[0])),y=s(t,xe(f,i.rotation[1])),g=s(t,xe(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*d+s(t,xe(f,i.position[0])),m.position.y=-o.size[1]*l+s(t,xe(f,i.position[1])),m.position.z=-o.size[2]*u+s(t,xe(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Re.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??jr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";bo.noiseSeed(i.seed);let a=zl((0,ps.default)(i.seed)),c=va(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof us)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let d=this.getSubdivData(),l=[],u=g=>{let x=g.length,S=g.map(P=>P[0]).reduce((P,_)=>P+_,0),w=g.map(P=>P[1]).reduce((P,_)=>P+_,0),b=g.map(P=>P[2]).reduce((P,_)=>P+_,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let x=d.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));x.length>1?l.push({pos:g.pos,norm:u(x.map(S=>S.norm))}):l.push(g)});let f=kg(l);if(d.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new jl(this.objectForSample).build(),h=jg[t.axis],y=this.children;m.setRandomGenerator((0,ps.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=s?bo.noise(S):a(S,S),b=g+1,P=c(b,xe(w,i.rotation[0])),_=c(b,xe(w,i.rotation[1])),v=c(b,xe(w,i.rotation[2]));t.spreadType==="random"?m.sample(ba,Vd):(f.length&&(ba.fromArray(f[g].pos),Vd.fromArray(f[g].norm)),this.objectForSample instanceof An&&ba.applyMatrix4(KT.copy(this.objectForSample.matrixWorld).invert())),ba.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(ba),Yo.fromArray(h);let N=t.align==="normal"?Vd:this.object.getWorldDirection(JT),O=Nn.fromArray(t.position);Nn.x+=Nn.x+c(b,xe(w,i.position[0])),Nn.y+=Nn.y+c(b,xe(w,i.position[1])),Nn.z+=Nn.z+c(b,xe(w,i.position[2]));let A=Math.acos(N.dot(Yo)),T=QT.crossVectors(Yo,N).normalize(),C=ZT.makeRotationAxis(T,A),E=N.clone().cross(this.object.up).normalize(),L=E.clone().cross(N).normalize(),X=new Re.Matrix4().makeBasis(E,N,L),B=new Re.Vector3(Yo.y,Yo.z,Yo.x).normalize(),Q=B.clone().cross(Yo).normalize(),z=new Re.Matrix4().makeBasis(B,Yo,Q).invert(),V=new Re.Matrix4().multiplyMatrices(X,z);x.rotation.setFromRotationMatrix(V),O.applyMatrix4(C),x.position.add(O),x.rotation.x=x.rotation.x+o.x+P,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(b,xe(w,i.scale[0]))||kt,x.scale.y=x.scale.y+t.scale[1]+c(b,xe(w,i.scale[1]))||kt,x.scale.z=x.scale.z+t.scale[2]+c(b,xe(w,i.scale[2]))||kt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof An){let t=this.objectForSample,o=Fg[e],i=e0[o],s=Qg[o],a=Jg[o],c=[],d=i(t.subdivPointerNew);for(let l=0;l<=d-1;l++){let u=s(t.subdivPointerNew,l),p=a(t.subdivPointerNew,l);Kg.fromArray(u).applyMatrix4(t.matrixWorld),Zg.fromArray(p),c.push({pos:Kg.toArray(),norm:Zg.toArray()})}return c}else return(this.objectForSample.geometry.index?Ug(this.objectForSample.geometry):Hg(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}updateState(e,t){if(this.parameters=ao(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof At?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Re.Matrix4,this.hiddenMatrix=new Re.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var xr=require("three");var Xe=require("three");var Mt=require("three");var t0=require("three"),Qr=n=>{var r;return r=class extends n{},r.geometryHelper=new t0.BoxGeometry(30,30,30),r};var Bt=require("three"),Ac=new Bt.Ray,zd=new Bt.Sphere,r0=new Bt.Matrix4,Jr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),zd.copy(i.boundingSphere),zd.applyMatrix4(s),e.ray.intersectsSphere(zd)===!1||(r0.copy(s).invert(),Ac.copy(e.ray).applyMatrix4(r0),i.boundingBox!==null&&Ac.intersectsBox(i.boundingBox)===!1))return;let a,c,d,l,u=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(u.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=u.getX(m),d=u.getX(m+1),l=u.getX(m+2),a=y(n,e,Ac,p,c,d,l),a){a.faceIndex=Math.floor(m/3),t.push(a);return}}else{let x=i.attributes.position,S=new Bt.Vector3,w=new Bt.Vector3,b=new Bt.Vector3,P=new Bt.Vector3,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=N*N,A=Math.max(0,f.start),T=Math.min(x.count,f.start+f.count);for(let C=A,E=T-1;C<E;C+=_){if(S.fromBufferAttribute(x,C),w.fromBufferAttribute(x,C+1),Ac.distanceSqToSegment(S,w,P,b)>O)continue;P.applyMatrix4(n.matrixWorld);let X=e.ray.origin.distanceTo(P);X<e.near||X>e.far||t.push({distance:X,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,P,_){let v=new Bt.Vector3,N=new Bt.Vector3,O=new Bt.Vector3,A=new Bt.Vector3,T=new Bt.Vector3;if(v.fromBufferAttribute(w,b),N.fromBufferAttribute(w,P),O.fromBufferAttribute(w,_),S.intersectTriangle(v,N,O,!1,A)===null)return null;T.copy(A),T.applyMatrix4(g.matrixWorld);let E=x.ray.origin.distanceTo(T);return E<x.near||E>x.far?null:{faceIndex:1,distance:E,point:T.clone(),object:g}}};var Cc=new Mt.Vector3,hr=new Mt.Camera,jd=class extends Mt.LineSegments{constructor(e){let t=new Mt.BufferGeometry,o=new Mt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},c=new Mt.Color(15711266),d=new Mt.Color(15711266),l=new Mt.Color(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",l),u("u2","u3",l),u("u3","u1",l);function u(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[f]===void 0&&(a[f]=[]),a[f].push(i.length/3-1)}t.setAttribute("position",new Mt.Float32BufferAttribute(i,3)),t.setAttribute("color",new Mt.Float32BufferAttribute(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;hr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;Mr("n1",t,e,hr,-i,-s,a),Mr("n2",t,e,hr,i,-s,a),Mr("n3",t,e,hr,-i,s,a),Mr("n4",t,e,hr,i,s,a);let c=a;Mr("f1",t,e,hr,-i,-s,c),Mr("f2",t,e,hr,i,-s,c),Mr("f3",t,e,hr,-i,s,c),Mr("f4",t,e,hr,i,s,c);let d=c,l=.5;Mr("u1",t,e,hr,i*.7*l,s*1.1,d),Mr("u2",t,e,hr,-i*.7*l,s*1.1,d),Mr("u3",t,e,hr,0,s*(1.1+.9*l),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Mr(n,r,e,t,o,i,s){Cc.set(o,i,s).unproject(t);let a=r[n];if(a!==void 0){let c=e.getAttribute("position");for(let d=0,l=a.length;d<l;d++)c.setXYZ(a[d],Cc.x,Cc.y,Cc.z)}}var Nc=class extends Qr(jd){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){Jr(this.object,this.geometry,e,t,!0)}};var Sa=require("three");var Ic;(r=>r.is=e=>"objectHelper"in e)(Ic||(Ic={}));var eo=(n,r)=>class extends bi(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Sa.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Sa.BoxGeometry?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof Sa.Box3Helper&&(i.visible=!1)}}};var Mc=790,ms=new Xe.Vector3,Fd=new Xe.Vector3,kd=new Xe.Quaternion,Ud=new Xe.Vector3,wa=new Xe.Vector3,Hd=new Xe.Vector3,Xo=class extends eo(Xe.Camera,Nc){constructor(e="",t={...cn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Do.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new Xe.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new Xe.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new Xe.PerspectiveCamera(45,o/i,50,1e4),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,o){typeof e=="number"&&(e=new Xe.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(ms),this.targetOffset=ms.distanceTo(e)}getTarget(e=new Xe.Vector3){return this.getWorldDirection(Fd),this.getWorldPosition(ms),Fd.multiplyScalar(this.targetOffset),e.copy(ms).add(Fd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ms),ms.distanceTo(e)}updateUp(){this.getWorldQuaternion(kd),Ud.set(0,0,1).applyQuaternion(kd),wa.copy(Xe.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&wa.negate(),wa.applyQuaternion(kd),Hd.copy(Xe.Object3D.DEFAULT_UP).projectOnPlane(Ud),this.angleOffsetFromUp=Hd.angleTo(wa),this.angleOffsetFromUp*=Hd.cross(wa).dot(Ud)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new Xe.Vector3),i=e.getWorldDirection(new Xe.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new Xe.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new Xe.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-Mc*.5*i,this.right=Mc*.5*i,this.top=Mc*.5*(1/s),this.bottom=-Mc*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,a):this.orthoCamera.setViewOffset(e,t,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ei(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};var Ko=require("three");var hs=new Ko.Matrix4,tO=new Ko.Matrix4;var yr=class extends Qt{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Ko.BufferGeometry;this.onAfterRender=(e,t,o,i,s,a)=>{super.onAfterRender(e,t,o,i,s,a),this.recomputeBoolean()};this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof yr&&s.dataPatched.visible===!0&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof At&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(hs.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=dr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;dr.transformMeshSet(s.booleanMeshSetAddress,hs),s.booleanMatrixInvOld.copy(hs).invert(),s.booleanWasTransformed=!1}else s instanceof yr&&s.needsTransformForDownstream===!0?(dr.transformMeshSet(s.booleanMeshSetAddress,hs),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(dr.transformMeshSet(s.booleanMeshSetAddress,tO.multiplyMatrices(hs,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(hs).invert(),s.booleanWasTransformed=!1);dr.hasOpenEdges(s.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(s.booleanMeshSetAddress),s.geometry.userData.wasFilteredFromBoolean=!1):s.geometry.userData.wasFilteredFromBoolean=!0}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new Ko.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return dr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Ko.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=dr.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,as(this),ls(this)}dispose(){super.dispose(),this.geometry.dispose()}};var n0=require("three");var o0;(r=>{function n(e){return Ae.is(e)&&e instanceof n0.Light}r.is=n})(o0||(o0={}));var ys=(n,r)=>class extends eo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Zo=n=>n instanceof At,_a=n=>n!==null&&n instanceof yr;var Pa=n=>Ic.is(n);var s0=require("three");var i0=require("three");var to=class extends Qr(i0.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){Jr(this.object,to.geometryHelper,e,t)}update(){}};var Ta=class extends eo(s0.Group,to){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var ws=require("three");var gs=require("three"),rO=n=>`
2219
2219
 
2220
2220
  // PCSS implementation based on:
2221
2221
  // https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
@@ -2589,4 +2589,4 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
2589
2589
  }
2590
2590
 
2591
2591
  #endif
2592
- `,FT=ps.ShaderChunk.lights_fragment_begin,kT=ps.ShaderChunk.shadowmask_pars_fragment,Qg=null,UT=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},Jg=(n="medium")=>{if(Qg===n)return!1;Qg=n;let r=UT(n);ps.ShaderChunk.shadowmap_pars_fragment=jT(r);let e=FT.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 ]"),ps.ShaderChunk.lights_fragment_begin=e;let t=kT.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ps.ShaderChunk.shadowmask_pars_fragment=t,!0};var wa=require("three");var e0=require("three");var fs=class extends Kr(e0.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Zr(this.object,fs.geometryHelper,e,t)}};var t0=require("three");var ms=class extends Kr(t0.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Zr(this.object,ms.geometryHelper,e,t)}};var Mc=require("three");var Ic=class extends Kr(Mc.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Zr(this.object,Ic.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ic._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 s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Sa=Ic;Sa._vector=new Mc.Vector3;function HT(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 hs=class extends us(wa.DirectionalLight,fs){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 s=new wa.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof wa.CameraHelper&&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&&HT(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()}};var i0=require("three");var hr=require("three");var r0=new hr.Vector3,o0=new hr.Vector3,n0=new hr.Quaternion,ys=class extends us(hr.SpotLight,Sa){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=hr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new hr.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof hr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),o0.setFromMatrixPosition(this.matrixWorld),n0.setFromRotationMatrix(this.matrixWorld),r0.copy(this.up).applyQuaternion(n0).negate().multiplyScalar(this.distance),this.target.position.copy(o0).add(r0),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))}};var Yo=class extends mi(i0.Scene){constructor(e,t){super();this.data=t;this.bgColor=new pt(1,1,1,1);this.fog=null;this.backupFog=new gs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new gs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Wo(Io,{...on.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new gs.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=At(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.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Xt)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&&Jg(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=At(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=At(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let s=t;Nt(e.path,["fog"])?this.updateFog(s.fog,o.shared):Nt(e.path,["ao"])?this.updateAo(s.ao,o.shared):Nt(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Nt(e.path,["shadow"])&&this.updateShadow(s.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(At(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)}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 hs&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ys&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Te.is(s)&&(s.visible||a?.object.data.visible)&&(($o(s)||va(s)&&this.scene.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Pa(s,e,t,!0)),o(s))}};return o(this),t}};var Kt=require("three");var Ec=class extends us(Kt.PointLight,ms){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 s=new Kt.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),a=new Kt.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new Kt.Box3(s,a),u=new Kt.Box3Helper(c,new Kt.Color(16755200));u.visible=!1,this.gizmos.shadowmap=u,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 Kt.Box3Helper){let t=this.shadow.camera,o=new Kt.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Kt.Vector3(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 Lc=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?Qs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var xs=class extends lt{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,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=Jl;break;case"Ellipse":i=Pi;break;case"Polygon":i=Ql;break;case"Star":i=ec;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){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?Qs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var vs=require("three");var vo=class extends Qr(vs.Group,Jr){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=t.scene.data.objects.get(e.component);if(o){let i,s;for(let a of lo.rootOverrideProps)e[a]===void 0?(i===void 0&&(i={...e}),i[a]=o.data[a]):(s===void 0&&(s={}),s[a]=e[a],i===void 0&&(i={...e}),i[a]=Lr.apply(o.data[a],e[a]));return this.overrideData=s,i}else return{...It.defaultData,...e}}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let a of lo.rootOverrideProps)a in e.props&&e.props[a]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[a]=this.component.data[a]);else if(e.type===0&&e.path.length>0&&lo.rootOverrideProps.includes(e.path[0])){let a=e.path[0];s===void 0&&(s={...e,path:[],props:{[a]:t[a]}})}}super.updateByOp(s??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 s=0;for(let a of this.children)if(Te.is(a))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Dc(a),s+=1;else break;this.children.splice(0,s)}i=!0}if(o){let s={};a0(e,[this.uuid],t.overrides,this,o,o,0,i,s);for(let a of this.children)if(Te.is(a)){let c=a.data;c.type==="Empty"&&c.animations&&a.traverseEntity(u=>{if(u instanceof lt&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(s[m])),p=l.boneInverses.map(m=>new vs.Matrix4().fromArray(m)),f=new vs.Skeleton(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Dc(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)Te.is(e)&&Dc(e)}}function s0(n,r,e,t){return n.component===r&&Ps(n.identity,t)?n.overrideData===e?2:1:0}function a0(n,r,e,t,o,i,s,a,c){if(s>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof vo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Te.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=ai.resolve(e,d,1),f=null,m;if(!a){let h=t.children[u];if(f=Te.is(h)?h:null,f!==null){let y=s0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=s0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?Lr.apply(l.data,p):l.data;xr.is(h.type)&&(h={...h,type:"Empty"}),f=br.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,a0(n,r,e,f,l,i,s+1,a,c)}if(!a){let l=u;for(;;){let d=t.children[u];if(Te.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}var l0=require("three");var Bc=class extends Qr(l0.Bone,Jr){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function WT(n,r,e){let t;return r.geometry.type==="TextGeometry"?new is(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new wn(n,r,e):r.geometry.type==="PathGeometry"?t=new xs(n,r,e):r.geometry.type==="VectorGeometry"?t=new Lc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new mr(n,r,e):t=new lt(n,r,e),t)}function Rc(n,r,e){return r.type==="Mesh"?WT(n,r,e):r.type==="Empty"?new ba(n,r):r.type==="Bone"?new Bc(n,r):r.type==="Page"?new Yo(n,r):r.type==="PointLight"?new Ec(n,r,e):r.type==="SpotLight"?new ys(n,r,e):r.type==="DirectionalLight"?new hs(n,r,e):r.type==="Component"||r.type==="Instance"?new vo(n,r,e):xr.is(r.type)?new Wo(n,r):(console.error(r),new ba(n,r))}br.createEntity=Rc;function qT(n,r,e){let t=Rc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,a=n.component,c=n.instances,u=n.overrideData,l=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=a,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}br.changeEntityProptotype=qT;br.Cloner=ls;function c0(n,r,e,t){n.updateByOp(r,e,t,!1)}var bs=require("three");function d0(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,os(n),rs(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Xt&&n.needsAO&&n.layers.enable(5),e}function u0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function p0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Xt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)d0(e,e.material[t])&&(r=!0);else d0(e,e.material)&&(r=!0)}),r}function f0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Xt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)u0(e,e.material[t])&&(r=!0);else u0(e,e.material)&&(r=!0)}),r}var XT=new bs.Raycaster,KT=new bs.Matrix4,ZT=new bs.Ray;function Pa(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=KT.copy(i.matrixWorld).invert(),a=ZT.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;a.applyMatrix4(c);let u=XT;u.set(a.origin,a.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var Gc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let a=i.length-2;a>=0;a--)if(!e.has(i[a])){let c=r.find(i[a]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[a]}`),e.add(i[a])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var QT=new yr.MeshBasicMaterial;QT.wireframe=!0;var m0=new yr.Vector3,Vc=class extends yr.Scene{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Gc;this.errorPage=new Yo("fdasfa",{...co.defaultData,name:""});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=f0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=p0(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 Yo&&(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 s=i;i=i.parent;let a=i.children.indexOf(s);o.splice(0,0,a)}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)=>qu(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===Io)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}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}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(),i.resetBBoxNeedsUpdate(),$o(i)&&xa(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}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),xa(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),$o(o)&&(o.freeBooleanPointer(),i instanceof mr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof xs&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}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 s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let a=e.localIndex;s.children.splice(a,0,s.children.pop()),$o(o)&&(o.invalidateUpstreamBooleanData(),xa(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof mr&&i.invalidateDownstreamBooleanData().recomputeBoolean())}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 Yo&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}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:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{c0(s,t,o,{scene:this,shared:i}),s instanceof lt&&s.updateGeometryGroupsIfNeeded()}catch(a){console.error(a)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}init(e,t){this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(o=>{xa(o)&&o.recomputeBoolean(),o instanceof Wo&&o.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){Te.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Te.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,a,c){if(e){let u=i.find(e);u&&u!==i&&s.forInstancesRec(l=>{l.data=ti(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(a);if(f){let m=[...Ea(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=Et.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,s,a){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof vo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let s=!1;if(t.forInstancesRec(a=>{a.data=ti(a.data,c=>{a.isInstanceRoot||(c.events.delete(i.id),s=!0)}).data}),s===!1)for(let a of Rl.list)this.rewriteActions(i.data.gameActions[a],["gameActions",a],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(s=>{if(s instanceof vo&&s.isInstanceRoot)return s.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||s.resetBBoxNeedsUpdate(),o&&s.traverseEntity(a=>{o.addClip(a)}),!0});for(let s of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Dc(s)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof vo&&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)Te.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=s=>{for(let a of s.children){let c=a.cloner;if(Te.is(a)&&!a.raycastLock&&(a.visible||c?.object.data.visible))if(t===!0&&a.isInstanceRoot){let u=[];if(e.intersectObject(a,!0,u),u.length){let l=u[0];l.object=a,l.point.applyMatrix4(l.object.matrixWorld);let d=a.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else($o(a)||va(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,o),Pa(a,e,o)),i(a)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Te.is(s)&&(s.visible||a?.object.data.visible)&&(($o(s)||va(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Pa(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Te.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Te.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Te.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)di.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Te.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.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,s,a){let c={scene:this,shared:a},u=Rc(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,a)),u.updateState(t,c),u instanceof lt&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof lt&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new yr.Matrix4().fromArray(h)),m=new yr.Skeleton(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],u=this.find(a),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new yr.Box3;return o.setFromPoints(t),o.getCenter(m0),m0}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 Pt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Yt&&e(t.material[o]);else t.material instanceof Yt&&e(t.material)})}updateCanvasSize(e,t,o=!1){this.activeCamera.setViewplaneSize(e,t,o)}};var h0=require("three/examples/jsm/loaders/DRACOLoader.js");var Xo;function JT(){return Xo||(Xo=new h0.DRACOLoader,Xo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Xo.decoderPending}async function eO(n){if(Xo){let r={attributeIDs:Xo.defaultAttributeIDs,attributeTypes:Xo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Xo.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 y0(n,r){let[e,t]=Jc(bl.deserialize(new Uint8Array(n)));bh(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await JT();for(let i of o){let s=await eO(at(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:u,itemSize:l})=>{a[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var tO=require("three"),rO=require("three/examples/jsm/utils/BufferGeometryUtils.js");function g0(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}var Ta=require("three");function x0(n){let r=new Set;return n.traverse(e=>{if(e instanceof Xt)if(Ze(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(oO(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Ta.Color,specularColor:new Ta.Color});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},Ta.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=cg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else nO(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function oO(n){return n.getLayersOfType("transmission").length>0}function nO(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 v0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function b0(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 s=t;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}var S0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function w0(n){let r=[];return n.traverse(e=>{e instanceof ls&&r.push(e)}),r.forEach(e=>{let t=e.object,s=[...e.children.map(a=>{a.updateMatrix();let c;if(a.geometry!==void 0)try{c=a.geometry.clone().applyMatrix4(a.matrix)}catch(u){console.error(u)}return c!==void 0&&a.matrix.determinant()<0&&g0(c),c}).filter(a=>a!==void 0)];if(!e.parameters.hideBase&&t instanceof Pt&&s.unshift(t.geometry),s.length){let a=(0,S0.mergeBufferGeometries)(s);t instanceof Pt&&(t.geometry=a)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Pg})}),n}function _0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function P0(n){Object.values(n.shared.materials).forEach(r=>{Fu(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?Fu(e.material):"materials"in e&&e.materials.forEach(t=>{Fu(t)})})}function Fu(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 N0=On(O0(),1);function A0(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var C0="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",zc=class extends jc.Loader{load(r,e,t,o=console.error){let i=new jc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(C0+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(C0),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},t,o)}async parse(r){let e=await y0(r,P0);e.version&&(0,N0.default)(e.version,"0.9.405")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Ng(e)&&Ry(),jg(e)&&wg()].filter(Boolean));let t=new Sn(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Vc(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=w0(o),o=x0(o),o=v0(o),o=b0(o),o=_0(o),o=A0(o),o}};
2592
+ `,oO=gs.ShaderChunk.lights_fragment_begin,nO=gs.ShaderChunk.shadowmask_pars_fragment,a0=null,iO=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},l0=(n="medium")=>{if(a0===n)return!1;a0=n;let r=iO(n);gs.ShaderChunk.shadowmap_pars_fragment=rO(r);let e=oO.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 ]"),gs.ShaderChunk.lights_fragment_begin=e;let t=nO.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),gs.ShaderChunk.shadowmask_pars_fragment=t,!0};var Aa=require("three");var c0=require("three");var xs=class extends Qr(c0.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Jr(this.object,xs.geometryHelper,e,t)}};var u0=require("three");var vs=class extends Qr(u0.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Jr(this.object,vs.geometryHelper,e,t)}};var Lc=require("three");var Ec=class extends Qr(Lc.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Jr(this.object,Ec.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ec._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 s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Oa=Ec;Oa._vector=new Lc.Vector3;function sO(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 bs=class extends ys(Aa.DirectionalLight,xs){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 s=new Aa.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Aa.CameraHelper&&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&&sO(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()}};var m0=require("three");var gr=require("three");var d0=new gr.Vector3,p0=new gr.Vector3,f0=new gr.Quaternion,Ss=class extends ys(gr.SpotLight,Oa){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=gr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new gr.CameraHelper(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof gr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),p0.setFromMatrixPosition(this.matrixWorld),f0.setFromRotationMatrix(this.matrixWorld),d0.copy(this.up).applyQuaternion(f0).negate().multiplyScalar(this.distance),this.target.position.copy(p0).add(d0),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))}};var Qo=class extends bi(m0.Scene){constructor(e,t){super();this.data=t;this.bgColor=new ht(1,1,1,1);this.fog=null;this.backupFog=new ws.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new ws.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Xo(Eo,{...cn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new ws.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=It(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.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof Qt)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&&l0(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=It(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=It(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let s=t;Lt(e.path,["fog"])?this.updateFog(s.fog,o.shared):Lt(e.path,["ao"])?this.updateAo(s.ao,o.shared):Lt(e.path,["ambient"])?this.updateAmbientLight(s.ambient,o.shared):Lt(e.path,["shadow"])&&this.updateShadow(s.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(It(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)}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 bs&&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 s of i.children){let a=s.cloner;Ae.is(s)&&(s.visible||a?.object.data.visible)&&((Zo(s)||Pa(s)&&this.scene.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Na(s,e,t,!0)),o(s))}};return o(this),t}};var Jt=require("three");var Dc=class extends ys(Jt.PointLight,vs){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 s=new Jt.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),a=new Jt.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new Jt.Box3(s,a),d=new Jt.Box3Helper(c,new Jt.Color(16755200));d.visible=!1,this.gizmos.shadowmap=d,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 Jt.Box3Helper){let t=this.shadow.camera,o=new Jt.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Jt.Vector3(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 Bc=class extends dt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?oa(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var _s=class extends dt{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,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=tc;break;case"Ellipse":i=Ni;break;case"Polygon":i=ec;break;case"Star":i=rc;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){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?oa(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Ps=require("three");var So=class extends eo(Ps.Group,to){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=t.scene.data.objects.get(e.component);if(o){let i,s;for(let a of uo.rootOverrideProps)e[a]===void 0?(i===void 0&&(i={...e}),i[a]=o.data[a]):(s===void 0&&(s={}),s[a]=e[a],i===void 0&&(i={...e}),i[a]=Br.apply(o.data[a],e[a]));return this.overrideData=s,i}else return{...Dt.defaultData,...e}}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let a of uo.rootOverrideProps)a in e.props&&e.props[a]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[a]=this.component.data[a]);else if(e.type===0&&e.path.length>0&&uo.rootOverrideProps.includes(e.path[0])){let a=e.path[0];s===void 0&&(s={...e,path:[],props:{[a]:t[a]}})}}super.updateByOp(s??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 s=0;for(let a of this.children)if(Ae.is(a))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Rc(a),s+=1;else break;this.children.splice(0,s)}i=!0}if(o){let s={};y0(e,[this.uuid],t.overrides,this,o,o,0,i,s);for(let a of this.children)if(Ae.is(a)){let c=a.data;c.type==="Empty"&&c.animations&&a.traverseEntity(d=>{if(d instanceof dt&&d.isSkinnedMesh){let l=d.dataPatched;if(l.bones&&l.boneInverses){let u=l.bones.map(m=>e.scene.find(s[m])),p=l.boneInverses.map(m=>new Ps.Matrix4().fromArray(m)),f=new Ps.Skeleton(u,p);d.bind(f,d.bindMatrix)}}else d.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Rc(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)Ae.is(e)&&Rc(e)}}function h0(n,r,e,t){return n.component===r&&Ns(n.identity,t)?n.overrideData===e?2:1:0}function y0(n,r,e,t,o,i,s,a,c){if(s>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof So&&o.isInstanceRoot&&o.expandInstanceChildren(n);let d=0;for(let l of o.children)if(Ae.is(l)){let u=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=fi.resolve(e,u,1),f=null,m;if(!a){let h=t.children[d];if(f=Ae.is(h)?h:null,f!==null){let y=h0(f,l,p,u);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(u)??null,f!==null)){let y=h0(f,l,p,u);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(d,0,f),f.parent===t?(g<=d&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?Br.apply(l.data,p):l.data;br.is(h.type)&&(h={...h,type:"Empty"}),f=wr.createEntity(u,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(d,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}d+=1,y0(n,r,e,f,l,i,s+1,a,c)}if(!a){let l=d;for(;;){let u=t.children[d];if(Ae.is(u))n.pendingDeletes.add(u);else break;d+=1}t.children.splice(l,d-l)}return!0}var g0=require("three");var Gc=class extends eo(g0.Bone,to){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function aO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new us(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new An(n,r,e):r.geometry.type==="PathGeometry"?t=new _s(n,r,e):r.geometry.type==="VectorGeometry"?t=new Bc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new yr(n,r,e):t=new dt(n,r,e),t)}function Vc(n,r,e){return r.type==="Mesh"?aO(n,r,e):r.type==="Empty"?new Ta(n,r):r.type==="Bone"?new Gc(n,r):r.type==="Page"?new Qo(n,r):r.type==="PointLight"?new Dc(n,r,e):r.type==="SpotLight"?new Ss(n,r,e):r.type==="DirectionalLight"?new bs(n,r,e):r.type==="Component"||r.type==="Instance"?new So(n,r,e):br.is(r.type)?new Xo(n,r):(console.error(r),new Ta(n,r))}wr.createEntity=Vc;function lO(n,r,e){let t=Vc(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,a=n.component,c=n.instances,d=n.overrideData,l=n.uuid,u=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=a,n.instances=c,n.uuid=l,n.overrideData=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}wr.changeEntityProptotype=lO;wr.Cloner=fs;function x0(n,r,e,t){n.updateByOp(r,e,t,!1)}var Ts=require("three");function v0(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,ls(n),as(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof Qt&&n.needsAO&&n.layers.enable(5),e}function b0(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function S0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Qt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)v0(e,e.material[t])&&(r=!0);else v0(e,e.material)&&(r=!0)}),r}function w0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof Qt)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)b0(e,e.material[t])&&(r=!0);else b0(e,e.material)&&(r=!0)}),r}var dO=new Ts.Raycaster,pO=new Ts.Matrix4,fO=new Ts.Ray;function Na(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=pO.copy(i.matrixWorld).invert(),a=fO.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;a.applyMatrix4(c);let d=dO;d.set(a.origin,a.direction),d.near=r.near,d.far=r.far;let l=d.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var zc=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let a=i.length-2;a>=0;a--)if(!e.has(i[a])){let c=r.find(i[a]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[a]}`),e.add(i[a])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var mO=new xr.MeshBasicMaterial;mO.wireframe=!0;var _0=new xr.Vector3,jc=class extends xr.Scene{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new zc;this.errorPage=new Qo("fdasfa",{...po.defaultData,name:""});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=w0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=S0(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 Qo&&(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 s=i;i=i.parent;let a=i.children.indexOf(s);o.splice(0,0,a)}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)=>Zd(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===Eo)return this.activePage.personalCamera}if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}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}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(),i.resetBBoxNeedsUpdate(),Zo(i)&&_a(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty()}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),_a(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Zo(o)&&(o.freeBooleanPointer(),i instanceof yr&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof _s&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}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 s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let a=e.localIndex;s.children.splice(a,0,s.children.pop()),Zo(o)&&(o.invalidateUpstreamBooleanData(),_a(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof yr&&i.invalidateDownstreamBooleanData().recomputeBoolean())}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 Qo&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}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:a}=t.props;t={...t,props:a},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{x0(s,t,o,{scene:this,shared:i}),s instanceof dt&&s.updateGeometryGroupsIfNeeded()}catch(a){console.error(a)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}init(e,t){this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(o=>{_a(o)&&o.recomputeBoolean(),o instanceof Xo&&o.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){Ae.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ae.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,a,c){if(e){let d=i.find(e);d&&d!==i&&s.forInstancesRec(l=>{l.data=ai(l.data,u=>{let p=u.events.data(c.id),f=l.goUp(a);if(f){let m=[...La(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=Rt.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,s,a){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,s,a)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof So&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let s=!1;if(t.forInstancesRec(a=>{a.data=ai(a.data,c=>{a.isInstanceRoot||(c.events.delete(i.id),s=!0)}).data}),s===!1)for(let a of Gl.list)this.rewriteActions(i.data.gameActions[a],["gameActions",a],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(s=>{if(s instanceof So&&s.isInstanceRoot)return s.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||s.resetBBoxNeedsUpdate(),o&&s.traverseEntity(a=>{o.addClip(a)}),!0});for(let s of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Rc(s)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof So&&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)Ae.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=s=>{for(let a of s.children){let c=a.cloner;if(Ae.is(a)&&!a.raycastLock&&(a.visible||c?.object.data.visible))if(t===!0&&a.isInstanceRoot){let d=[];if(e.intersectObject(a,!0,d),d.length){let l=d[0];l.object=a,l.point.applyMatrix4(l.object.matrixWorld);let u=a.matrixWorld.clone().invert();l.point.applyMatrix4(u),o.push(l)}}else(Zo(a)||Pa(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,o),Na(a,e,o)),i(a)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let a=s.cloner;Ae.is(s)&&(s.visible||a?.object.data.visible)&&((Zo(s)||Pa(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),Na(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ae.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Ae.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Ae.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)yi.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ae.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.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,s,a){let c={scene:this,shared:a},d=Vc(e,t,c);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(s,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,a)),d.updateState(t,c),d instanceof dt&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&d.traverseEntity(l=>{if(l instanceof dt&&l.isSkinnedMesh){let u=l.dataPatched;if(u.bones&&u.boneInverses){let p=u.bones.map(h=>this.find(h)),f=u.boneInverses.map(h=>new xr.Matrix4().fromArray(h)),m=new xr.Skeleton(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),d}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:c}=e[i],d=this.find(a),l=c?d.recursiveBBox:d.singleBBox;t.push(...l.vertices)}let o=new xr.Box3;return o.setFromPoints(t),o.getCenter(_0),_0}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 At)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Zt&&e(t.material[o]);else t.material instanceof Zt&&e(t.material)})}updateCanvasSize(e,t,o=!1){this.activeCamera.setViewplaneSize(e,t,o)}};var P0=require("three/examples/jsm/loaders/DRACOLoader.js");var Jo;function hO(){return Jo||(Jo=new P0.DRACOLoader,Jo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Jo.decoderPending}async function yO(n){if(Jo){let r={attributeIDs:Jo.defaultAttributeIDs,attributeTypes:Jo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Jo.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 T0(n,r){let[e,t]=tu(Sl.deserialize(new Uint8Array(n)));Th(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await hO();for(let i of o){let s=await yO(ut(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:d,itemSize:l})=>{a[c]={array:d,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var gO=require("three"),xO=require("three/examples/jsm/utils/BufferGeometryUtils.js");function O0(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}var Ia=require("three");function A0(n){let r=new Set;return n.traverse(e=>{if(e instanceof Qt)if(et(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(vO(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Ia.Color,specularColor:new Ia.Color});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},Ia.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(a=>{if(i.uniforms.transmissionSamplerMap.value){let c=a.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=xg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else bO(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function vO(n){return n.getLayersOfType("transmission").length>0}function bO(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 C0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function N0(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 s=t;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}var I0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function M0(n){let r=[];return n.traverse(e=>{e instanceof fs&&r.push(e)}),r.forEach(e=>{let t=e.object,s=[...e.children.map(a=>{a.updateMatrix();let c;if(a.geometry!==void 0)try{c=a.geometry.clone().applyMatrix4(a.matrix)}catch(d){console.error(d)}return c!==void 0&&a.matrix.determinant()<0&&O0(c),c}).filter(a=>a!==void 0)];if(!e.parameters.hideBase&&t instanceof At&&s.unshift(t.geometry),s.length){let a=(0,I0.mergeBufferGeometries)(s);t instanceof At&&(t.geometry=a)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Lg})}),n}function E0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function L0(n){Object.values(n.shared.materials).forEach(r=>{qd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?qd(e.material):"materials"in e&&e.materials.forEach(t=>{qd(t)})})}function qd(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 V0=en(B0(),1);function R0(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var G0="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Fc=class extends kc.Loader{load(r,e,t,o=console.error){let i=new kc.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(G0+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(G0),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},t,o)}async parse(r){let e=await T0(r,L0);e.version&&(0,V0.default)(e.version,"0.9.408")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Vg(e)&&Wy(),Xg(e)&&Mg()].filter(Boolean));let t=new On(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new jc(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=M0(o),o=A0(o),o=C0(o),o=N0(o),o=E0(o),o=R0(o),o}};